1
NoSQL
スミセイ情報システム
BP システム開発部
和田 夏帆
0.目次
1.データベースの種類
2. NoSQL とは
3. NoSQL の種類
4.まとめ
3
1.データベースの種類
a.階層型データベース
データを木構造で表したデータモデル。
親は複数の子をもてるが、子は一つの親しかもてない。
信頼性・可用性が高い。プログラミングが容易。
複雑なデータを扱おうとすると、データが重複しがち。
(データ構造を組織図に見たてた場合、ある人が複数チームに
兼務
するケースを考えるとデータが重複する。)
⇒ IMS等の実際のDBMSではポインタを実装し回避している
。
データの絞込み( WHERE 句に相当)の機能が
弱い。
親
子 子 子
孫 孫 孫 ・・・
1.データベースの種類
b.ネットワーク型データベース
データの重複を解決するために登場。
子も複数の親を持てるようになる。
データの関連が複雑でデータ構造を容易に変更できない。
親
子 子 子
孫 孫
孫 ・・・ 孫
5
1.データベースの種類
c.リーレーショナルデータベース
2. NoSQL とは
NoSQL とは、 SQL を用いず、また、関係モデルに
基づかずに構築されたデータベースシステムの
総称である。
(引用: IT 用語辞典バイナリ)現代的な関係データベースは、小規模の高頻度なトランザクションか、 巨大だが書き込みをほとんど伴わないトランザクションに最適化されて 設計されているため、近年必要とされてきている大規模データに基づく 応用事例では性能が劣化してしまう。そのような応用の例として、
検索のための文書のインデキシング、トラフィックの高いウェブサイトの サーバ、
ストリーミングデータの配布などがあり・・・ (引用: WikiPedia )
要するに RDBMS は大量のデータの読み書きは得意でな
い。
それを「補完する」技術が NoSQL 。
( RDBMS に取って代わるものではないというのが今のところの見解。)
7
2. NoSQL とは
NoSQL は RDBMS と比較し以下のようなことが 一般的に言われている。
・分散環境を前提としているものがほとんどで、クラウドと相性がよい。( Hadoop とも)
⇒複数サーバにデータ保存し、レプリケーションをとるものが多い。
⇒ RDBMS はサーバ台数を増やしすぎるとレイテンシ(遅延時間)が悪化。
・
3. NoSQL の種類
NoSQL には次のようなものがある。
・揮発性 KVS ( Key-Value-Store )
memcached,(Redis)
・永続性 KVS
Tokyo Tyrant,Flare,ROMA,(Redis)
・ドキュメント思考 DB
MongoDB,CouchDB
・列指向 DB
Apache Cssandra,HBase,HyperTable
9
3. NoSQL の種類
a. memcached :
揮発性 KVS(1)特徴
シンプルな key-value 型のデータストア。 データはすべてメモリ上に保持される。
通信も非常に簡単で、 telnet 接続からデータの読み書きが可能。 扱うことのできるデータ型は文字列のみ。
(2)ユースケース
主に、 RDBMS から取得したデータのキャッシュとして利用される。
(その想定で開発されており、 memcached 自体をデータストアとし て
利用する場合、 memcachedDB というものがある。)
(3)導入事例
・ Wikipedia
・ Youtube
・ Mixi
・ Flicker
3. NoSQL の種類
b. Redis : 揮発性&永続性 KVS
(1)特徴
揮発性 KVS と永続性 KVS のいいとこどりをした NoSQLDB 。 数値型や配列形式のデータを取扱える。
アトミックに処理を行うための命令が多数用意されている。
一定量以上の変更が加えられた場合、非同期でディスクに書き出 し
永続性を実現する。
(2)ユースケース
リスト型等の配列形式のデータを扱う場合。 タイムラインを表示するような Web アプリ。 まだ新しい技術であり、導入事例も少ない。
(3)導入事例
・ニコニコ動画
・ github
・ digg
11
3. NoSQL の種類
c. MongoDB : ドキュメント思考 DB
(1)特徴
スキーマレス(スキーマ定義が不要)
⇒ データの保存時にはデータを構造を含めてまるごと BSON 形 式
⇒ で保存し、それを value として key にひも付ける。
⇒ (ドキュメント指向 DB と言われる由縁) JOIN やトランザクションは行えない。
ディスクへの書き込みは非同期。
(2)ユースケース
カラムを固定できない、または流動的なデータを保存する場合。
(3)導入事例
・アメーバピグ
・ foursquare
・ Preferred Instructure
ご参考: JSON
{
“key” :“value”,
“test” :“hello”,
“test2”:“world”,
“test3”:[“ 配列も” ,
“OK”],
“test4”:{“test5” : “ ネストも” ,
“test6” : “OK”}
}
13
3. NoSQL の種類
d. Apache Cassandra :列指向 DB
(1)特徴
一貫性制御に自由度がある。
⇒ 一貫性と遅延はトレードオフな関係
マスタノードが存在しない。( P2P 型)
⇒ 単一故障点が存在せず可用性が高い。
比較的リッチなデータモデル。
(2)ユースケース
大規模なデータを取り扱う場合。
( データウェアハウス、 BI 等の OLAP 要素を持つもの)
(3)導入事例
・ digg
ご参考: Cassandra のデータモデル
引用 : http://d.hatena.ne.jp/terurou/20100411/1270912571
15