Smile Engineering blog ( スマイルエンジニアリング・ブログ )

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

ドキュメント指向型のNoSQL データベース MongoDB

2016-03-31 19:32:30 | 最新技術動向展開
今回はドキュメント指向データベースである MongoDB についてです。

※いまごろ 何故、NoSQLなの? という疑問もありますが、
 著者が触れたくなったのです。

MongoDB はC++言語で開発されたオープンソースのドキュメント指向データベースです。
ドキュメント指向データベースは、NoSQLに分類されるデータベースです。
NoSQLと言いますと、RDB(MS)ではないデータベースで、大きく分けて下記の分類のものがあります。

・キー・バリュー型(Key-Value Store型:KVS型)
・テーブル指向型
・ドキュメント指向型

※テーブル指向型は広義でKVS型の一種とされることもあります。

上記のうち、ドキュメント指向型に属す NoSQL データベースが MongoDB です。

RDBでは、レコードをテーブルで管理する構造となっていますが、
ドキュメント指向型ではドキュメントをコレクションで管理する構造となっています。

<RDBのレコード>
 ドキュメント

<RDBのテーブル>
 コレクション

<RDBのデータベース>
 データベース

MongoDB は、JSONのような形式のドキュメントを管理します。

例えばこんなドキュメントです。
-----
{
  username: "bob",
  address: {
    street: "123 Main Street",
    sity: "Springfield"
    state: "NY"
  }
}
-----

このようなドキュメントを管理、操作できるデータベースが MongoDB です。

MongoDB もそうですが、ドキュメント指向型データベースでは、スキーマ定義が不要です。
MongoDB の場合は、上記のようなJSONライクな構造を決める事がスキーマ定義と同等の役割となります。
同等な役割にはなりますが、RDBのスキーマ定義の概念とは大きく異なる点があります。
テーブルのスキーマにあったレコードしか格納できないのがRDBでの当たり前ですが、ドキュメント指向型データベースの場合は、コレクション(RDBでいうテーブル)にスキーマの異なるドキュメントが格納可能です。

先のドキュメントを users というコレクションに格納したとします。
先に格納してあるドキュメントと構造を合わせなければと思いますが、MongoDB の場合は、次のように例えば「age」という先のドキュメントに存在しなかった要素を保持したドキュメントを格納することが可能です。

-----
{
  username: "tom",
  address: {
    street: "123 Main Street",
    sity: "Springfield"
    state: "NY"
  },
  age: 18
}
-----

イメージはできましたね。

上記のドキュメントを、MongoDB のツール(CUI)を使って登録してみたいと思います。
MongoDB のインストールや、操作の詳細は割愛させて頂き、
CUI実行時のスクリーンショットを貼っておきます。



このような感じです。何となく先の説明と上記CUIのイメージがつながってきましたかね。

users というコレクションを作成。このコレクションにドキュメントを追加(insert)しています。
追加後に、users コレクションに対して検索(find)をかけています。
NoSQL データベース なので、SQL実行ではないですね。



SQLのWHERE句のように条件をつける場合は、どうするのでしょうか。
こちらも、CUI実行時のスクリーンショットを貼っておきます。



findの引数がありますね。findの引数が「{"address.state" : "NY"}」になっています。
ドキュメントの階層構造を意識した条件になっていますね。
「address配下のstateが"NY"のもの」という直感的な条件式ですね。


今回は、ドキュメント指向型のNoSQL データベース MongoDB を触ってみました。


monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、農業も手がけるIT企業

最新の画像もっと見る

コメントを投稿