こんばんは、cloudpack@dz_ こと大平かづみです。

Prologue – はじめに

本格的にアプリを作れるように、データを扱えるようになろう。

ということで、今回はNoSQLに慣れる目的で、Bluemix のサービスとして連携できる IBM Cloudant を利用してみます。

なお、お恥ずかしながら、リレーショナルデータベースを使った開発経験はあるものの NoSQL を扱った経験はないに等しいため、基本中の基本を進みますがご了承いただければ幸いです。
(過去に CouchBase を使った開発に携わりましたが、主にMVCのV部分が担当だったため、あまりDBを意識することなく過ごしたのでした。)

Cloudant について

Build More,
Grow More,
Sleep More
Do more with the only fully-managed NoSQL database-as-a-service (DBaaS)

IBMが提供するNoSQLのフルマネージドデータサービス (DBaaS)です。(実際には2014年にIBMが買収)

特徴

技術概要:IBM Cloudant DBaaS 徹底分析 より要約。

  • クラウド上にデータを格納し、スケール可能 (=DBaaS)
  • ローカルにインストールしての利用も可能
  • JSONをはじめ、テキスト、地理的データなど格納可能
    — ファイル添付も可能
  • REST APIでJSONやファイルを読み取り可能
  • ウェブやモバイルアプリケーション、センサーからの断続的・継続的なデータ格納にも対応

いざ、Cloudant

Cloudant 連携アプリの準備

まずは、Bluemix で Cloudant を利用できるようにしましょう。

接続設定など煩わしいことは避けたいので、BoilerplatesNode.js Cloudant DB Web Starter でアプリを作成します。 この Boilerplate で作成したアプリには、 Cloudant NoSQL DBサービスと Monitoring And Analyticsサービスがバインドされます。

1bf546fb-3d8b-e474-1f30-7e2810582a8a

アプリの画面を見てみると、Cloudant NoSQL DBサービスがバインドされていることがわかります。

3557c196-b76a-f8a4-5c10-9909a3a906e0

バインドされた Cloudant NoSQL DBサービスを見てみましょう。右上の LAUNCH ボタンをクリックすると、Cloudant のコンソール画面が開きます。

8a4b8fd0-8ce3-1134-0cba-a4878ca3bb6a

Cloudant のコンソール画面です。 Bluemix Cloudant NoSQL DBサービスでは、クラウド上の Cloudant DBaaS と連携してくれます。

f1d2fd09-2375-90c9-1765-d382de5dd92c

スターターアプリを試してみる

さて、スターターアプリで入力した情報がちゃんと Cloudant に保存されているか確認してみましょう。アプリを起動し、開いてみてください。

Boilerplate で作ったおかげか、Cloudant NoSQL DB 対応のスターターアプリがすでに置かれています。このキャプチャは、いくつか入力してみた状態です。

00df3be4-eed6-ac22-6d4a-032e45d82926

このスターターアプリでは、カテゴリ毎にファイルを保存できるようです。

カテゴリにはファイルをアップロードでき、アップロードすると画面にリストアップされます。また、ADD ボタンを押せば、新しいカテゴリを追加できます。カテゴリにはディスクリプションも入力できます。

それでは、この入力した情報は、Cloudant のどこに格納されているのか見てみましょう。Cloudant のコンソールで、デフォルトで作られているDB my_sample_db を開いてみます。

973b31e8-62cf-a947-9e28-3cedc284dd1e

All Documments ではドキュメント一覧が表示されます。ドキュメントの編集画面を開きます。

65a326fb-7f2e-8f84-f553-fd90106f9b3f

入力したカテゴリの名前やディスクリプションが記録されていますね。また、 _attachments にアップロードしたファイル名が記載されています。 content_type などの情報がJSON形式で保存されていますね。

f146ae07-2b98-815c-1c4e-57bbfdbe2105

はっ!

ファイル添付できるのか…?

ここで気づきました。このJSONの情報だけでは画像やテキストファイルは復元できないぞ…?

…なるほど!

Cloudant のドキュメントには、ファイルを添付できるんですね!(察しが遅い…(笑))

ちょっと調べてみると、Cloudant の開発者向けドキュメント にも、「File Attachments」の項がありました。

そして、保存されたファイルは REST API で取得できる、という便利さです。(実際にスターターアプリでも REST API を使ってサムネイルを表示しています。)

… 便利そう!!

Epilogue – おわりに

ということで、そろそろ日曜が終わりそうなので、本記事はいったんここまでとします。スターターアプリのソースコードの理解や、実際にコード書いてみるのは引き続き進めます。

しかし、ここで無知を発揮させて大変恥ずかしいのですが、ファイル添付できるのはびっくりしました。特に珍しいことでもないのかもしれませんが、今まで画像の扱いはストレージにアップしてそのURLなりをDBに保存するというアプローチだったので、新たな方法を知ることができてよい勉強になりました。

今一番疑問なのは、NoSQLのデータ設計(?)についてです。RDSでは正規化してリレーションはって、というのが当たり前ですが、NoSQLの場合はどうするのかなぁと、悩みながら続きを進めていこうと思います。

元記事はこちら

Check! DBaaS ってなんだろう? IBM Cloudant を Bluemix で触ってみる。