まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:dbaas

「ちょっとした MySQL サーバーが使いたい」時に、ClearDB を使うようになりました:
ClearDB - The Ultra Reliable, Geo Distributed Cloud Database For Your MySQL Applications

ClearDB はクラウド上で提供されている MySQL データベースです。いわゆる DBaaS で、バックアップやメンテナンスといった面倒な管理作業は提供側がやってくれます。いわば「契約して使うだけ」の MySQL ホスティングサービスです。用途に応じてサービスレベルや価格が分けられていますが、"ignite" と呼ばれるデータ容量5MBの最小構成であれば無料で使えます。3306番ポートも開放されているので、mysql コマンドから接続して使うこともできちゃいます。

「5MB じゃ何も使えない!?」と思うかもしれませんが、MySQL の動作確認には充分といえます。足りない場合は有料サービスに移行すればいいだけです。

で、この ClearDB を普通に使おうとすると無料サービスでもクレジットカードの登録が必要なんですが、IBM Bluemix 経由で使うと何故か不要です(苦笑)。 
※IBM Bluemix は契約後最大30日は無料で使えますが、その期間中は IBM からも ClearDB からもクレジットカード情報を求められることがない、という意味です。


というわけで、IBM Bluemix を使って ClearDB の ignite プラン(無料サービス)を1つ作成するまでの手順を紹介します。 ・・・と言っても、IBM Bluemix 的には他のサービスとほぼ変わりなく使うことができます。

まず普通に IBM Bluemix にログインします。そして ClearDB サービスを紐付けるためのランタイムを1つ作成します(既存の作成済みランタイムがあればそれを使ってもかまいせん)。下図では "dotnsf-php-20150527" という名前のランタイムを使っていて、この場合を想定して以下を説明します:
2015052701


そのランタイムのダッシュボード画面から「サービスまたは API の追加」をクリックして、「データ管理」カテゴリの "ClearDB MySQL Database" を選択します:
2015052702


サービスの概要が表示されます。アプリとしては選択したランタイム、プランは "Spark DB"(現時点ではこれしか選択できないと思います)が選択されていることを確認します。この場合は「5MB 無料」です。最後に「作成」ボタンをクリックして、このサービスをランタイムに追加します:
2015052703


こんな画面が出たら「再ステージ」をクリックして、ランタイムを再ステージングしてください。この辺りは IBM Bluemix の他のサービス追加作業と何も変わりません:
2015052704


再ステージング完了後の画面です。選択したランタイムに ClearDB サービスが追加できました:
2015052705


では ClearDB の「資格情報」と書かれた所をクリックして、この ClearDB に接続するための情報を調べます:
2015052706


このような情報が表示されます。この JSON 文字列はランタイムの環境変数 VCAP_SERVICES として動的に取得することもできます:
{
  "cleardb": [
    {
      "name": "ClearDB MySQL Database-in",
      "label": "cleardb",
      "plan": "spark",
      "credentials": {
        "jdbcUrl": "jdbc:mysql://UUUUUUUUUUUUUU:PPPPPPPP@us-cdbr-iron-east-02.cleardb.net:3306/ad_DDDDDDDDDDDDDDD",
        "uri": "mysql://UUUUUUUUUUUUUU:PPPPPPPP@us-cdbr-iron-east-02.cleardb.net:3306/ad_DDDDDDDDDDDDDDD?reconnect=true",
        "name": "ad_DDDDDDDDDDDDDDD",
        "hostname": "us-cdbr-iron-east-02.cleardb.net",
        "port": "3306",
        "username": "UUUUUUUUUUUUUU",
        "password": "PPPPPPPP"
      }
    }
  ]
}

この JSON 文字列の "credentials" 内の情報を使うことで ClearDB のデータベースにアクセスすることができます。ホスト名は "hostname" の値(us-cdbr-iron-east-02.cleardb.net)、データベース名は "name" の値(この例では ad_DDDDDDDDDDDDDDD)、ポート番号は "port" の値(3306)、ユーザー名とパスワードはそれぞれ "username" と "password" の値(UUUUUUUUUUUUUU と PPPPPPPP)になります。

このデータベースは(クラウド上の)普通の MySQL として使えるため、IBM Bluemix のランタイム以外からも使えます。実際に mysql クライアントコマンドで接続してみました。当たり前ですがちゃんと使えそうです:
2015052707



上でも書きましたが、このプランではデータ容量が 5MB なので大したことはできません。でも最低限の動作確認や MySQL への接続確認として常に MySQL サーバーがクラウド上にあって使える、という環境は魅力的です。

IBM Bluemix のアカウントがあると、こんな環境も無料で入手できる、ということになります。というわけで、IBM Bluemix のアカウントを作りましょう(笑)。


前回、BLUAcceleration for Cloud のインスタンスを起動して、ウェブコンソールにログインする手順までを紹介しました。その続きです:
Bluemixから提供されるDBaaS : BLUAcceleration for Cloud を使ってみる(1)

ではこの環境に実際に解析するデータを投入してみます。
データは何でもいいのですが、ビッグデータの活用に積極的で、統計情報を公開している福岡市のサイトからサンプルデータを使わせていただくことにします:
福岡市サンプルデータサイト

使うデータはどれでもいい・・・というわけではなく、対応フォーマットの中でもサンプルとして加工が楽そうな CSV ファイルにします。マップ系データの中の K01 スポーツ施設 というデータをダウンロードしてみます:
2014062101


ダウンロードファイル名は K01.csv というファイル名になっています。

で、実はこの CSV ファイルは文字コードがシフトJISになっています。BLUAcceleration for Cloud だと文字化けしそうなので UTF-8 に変更する必要があると思っています(この辺りの詳しい仕様は未確認)。開発者の方であれば何らかのツールをお持ちだと思います(僕は EmEditor で変換しました)が、K01.csv ファイルを UTF-8 に変換しておいてください。


そして、このファイルを BLUAcceleration for Cloud 環境にロードします。前回紹介した方法でウェブコンソールにアクセスします:
2014062009

画面上部のメニューから Manage - Load Data を選択します。ここから何段階かに分けてロードするデータを指定していきます:
2014062102


まずは CSV ファイルを指定します。「ファイルを選択」ボタンをクリックして、先程ダウンロード&文字コード変換した K01.csv ファイルを指定します。またその下の "Row one contains the column name(1行目は列名データ)" を ON の状態にします:
2014062103


日付時刻データが含まれる場合は Advanced Options を展開して日付・時刻のフォーマットを指定します。最後に Load File ボタンをクリックします:
2014062104


データのプレビューが表示されます(シフトJISコードだとこの時点で文字化けしているはずです)。このデータを使う場合は Next ボタンをクリックします:
2014062105


次にこのデータを格納するテーブルを指定します。既にテーブルが存在していて、その中に格納する場合は上の "Load into an existing table" を、新規にテーブルを作成してその中に格納する場合は下の "Create a new table and load" を選択します(ここでは後者を選択しています)。そして Next ボタンをクリック:
2014062106


データの内容を元に自動生成されたテーブルとその名称が表示されています。必要があればこの内容を編集して改変します(特に変更の必要がなければこのままでも構いません)。そして Finish ボタン:
2014062107


ロード結果が表示されます。この画面ではとりあえず成功して 40 行のデータがロードされた、ということがわかります(ビッグデータといえるかどうか・・・)。このデータは直前に指定した K01 テーブルに格納されているはずです:
2014062108


ロードしたデータを確認してみます。メニューから Manage - Work with Tables を選択します:
2014062109


画面左ペインのスキーマ一覧から K01 テーブルを選択すると、右ペインの K01 テーブルのスキーマが表示されます。今は K01 テーブルの中身を参照したいので、この右ペイン内の Browse Data タブをクリックします:
2014062110


K01 テーブルにロードされたデータの一覧が表示されます。このような状態にまでなっていればデータがデータベースに取り込まれて、解析のための準備ができたことになります。

この状態から各種のフィルタリングや列の表示/非表示切り替え、表示順変更などが可能になります。試しにフィルタリングを作ってみましょう。画面赤枠のフィルタリング作成ボタンをクリックします:
2014062111



フィルターの作成画面が表示されます。ここでは単純ですが、名称に「博多」を含むデータだけをフィルタリングしてみます。条件を指定して「フィルター」ボタンをクリックします:
2014062112


名称に「博多」を含むデータだけが選別されているはずです:
2014062113


本来ならばこうしてクラウドにロードされたデータに対して Cognos BI などを使って解析する、ということになると思うのですが、無料アカウントのせいなのか、どうもそこまでの権限はないようでした(与えられたサンプルデータを使う、ということはできそうでした)。残念、無料アカウントではここまでか。









 

IBMの商用データベースである DB2 をベースとしたビッグデータ解析用 DBaaS 、BLUAcceleration for Cloud を使ってみました。

商用製品をベースとした DBaaS なので当然有料、、、なのですが、価格表によると "Managed Service" プランについてはまだ無料トライアル期間中の PaaS プラットフォーム IBM Bluemix からも提供されている、とのこと。無料ならとりあえずどんなものか使ってみる価値はありそうですね。


「一見は百聞に如かず」です、まずは使ってみましょう!
まずは提供プラットフォームである IBM Bluemix のアカウントが必要です。アカウントの取得方法については公式ページを参照してください:
IBM devloperWorks 日本語版 : IBM Bluemix


アカウントを取得したら IBM Bluemix ページからログインします: http://bluemix.net/

今回使ってみる BLUAcceleration for Cloud の Managed Service プランは IBM Bluemix という PaaS 環境の中の、データベースサービスの1つとして提供されています。したがって IBM Bluemix 環境からデータベースサーバーを作成し、そのデータベースシステムの選択肢の1つとして BLUAcceleration for Cloud がある、ということになります。

では実際に BLUAcceleration for Cloud 環境を作ってみましょう。IBM Bluemix にログイン直後の画面でダッシュボードが表示されている状態から、画面左ペインの "SERVICES" と書かれた箇所をクリックします:
2014062001


現在、自分のアカウントで使っている各種サービスの一覧が表示されます(初めて使う人の場合は何も表示されません)。ここで "Add a Service" をクリックします:
2014062002


今回はデータベースサーバーを追加したいので、少し下にスクロールして移動します。
2014062003


実はここで選択肢があります。厳密な意味での BLUAccleration for Cloud を選択するには "Big Data" 欄の "BLUAccleration" を選択することになります。一方、その上の "Data Management" 欄の "SQLDB" を選択した場合でも、厳密には BLUAcceleration for Cloud での提供ではないのですが、似たようなウェブインターフェースでの管理を行うことができます。どちらを選択してもいいのですが、今回は BLUAcceleration for Cloud を使うことが目的だったこともあるので前者を選択(クリック)します。


以下の様なダイアログが表示されます。"CREATE AND ADD TO APP" をクリックします:
2014062004


この IBM Bluemix 環境はそもそもが PaaS ということもあり、ここで作成するデータベースサービスを同環境内で稼働しているウェブアプリケーションサーバーに紐付けたり、或いはここで新規にウェブアプリケーションサーバーを追加して、そこに紐付けることもできます。実際に PaaS の一部として使う場合はここで関連ウェブアプリケーションサーバーを指定することになりますが、今回は単に DBaaS としてだけ使ってみたいので紐付けは行いません。"Add to" のセレクションボックスをクリックして "Leave unbound"(関連付けなし)を選択します(もちろんここでウェブアプリケーションサービスとの関連付けを行っても構いません)。
2014062005


このような状態になったことを確認して "CREATE" をクリックします。この図ではデータベース名が "BLUAcceleration-sl" になっています。これはすぐ後で使うので覚えておきましょう:
2014062006


おそらく一瞬で BLUAcceleration サービスが追加され、ダッシュボード画面に戻ります。サービス一覧の中に先程作成した "BLUAcceleration-sl" が追加されていることを確認して、クリックします:
2014062007


BLUAcceleration for Cloud サービスのウェブコンソールへのリンクが表示されるのでクリックします:
2014062008


で、無事に BLUAcceleration for Cloud ウェブコンソール画面にログインできます!
2014062009

・・・で、ここから何をすれば(笑)。 目的意識なしで試しに来ただけに道に迷ってしまった。

と、とりあえずは BLUAcceleration for Cloud の中までたどり着くことができました。この続きはまた今度。 (^^;

(追記: 続きはこちら


このページのトップヘ