Oracle要素多めになる予定と言いつつ、前から気になっていたNoSQL系のデータベースが何者かを調べてみたときのメモをまとめてみた。
NoSQLとは…
- NoSQLはNot Only SQLの略
- SQLを使用しないでデータ操作ができるデータベースの総称
- RDBMS以外のデータベース管理システムの総称
⇒ RDBMSはSQLを使用することから、SQLを使用しない≒RDBMS以外ということ - RDBMSよりもビッグデータの取り扱いに適している
何故ビッグデータに適しているのか?
NoSQLに関して以下の特徴があることから、RDBMSと比較してビッグデータに適しているのだと自分の中で理解。
- スキーマレス
事前にデータ構造を定義しておく必要がない。ビッグデータはテキストや画像などの非構造化データや、JSONなどの半構造化データが多いのため、格納に適している。 - トランザクションレス
最終的に整合性が保たれていればよい、結果整合性を前提とした設計思想になっている。 - リレーションレス
ビッグデータに必要となる処理速度やスケールアウト性を保つために、リレーションを原則持たない。 - スケールアウトしやすい
大量データの分散処理による高速処理や耐障害性の向上がはかれる。
NoSQL系データベースの種類
NoSQL系のデータベースは4つの系統に分類できるようだ。各系統と属するプロダクトは、以下の様な感じ。各系統の詳細は、気が向いたら調べてみようと思うので、気になる点も備忘兼ねて記載。
1.KVS
Key Value Storeの略で、KeyとValueがペアとなって格納されるデータベース。単純だけど、1つのKeyに複数のValueを入れたくなるときはどうするんだろうか。そういうときはKVSをそもそも選択しないのだろうか?複数のValueを1つのValueと見立てて格納するのだろうか。
- Redis
- DynamoDB
- etc...
2.ドキュメントDB
ここでいうドキュメントはJSONやXMLのようなデータのことで、これらを格納できるデータベース。RDBにCLOBとして単に格納するのとは違うメリットなどがあると思うので、後で調べてみよう。
- MongoDB
- CouchDB
- etc...
3.カラムストア(ワイドカラムストア)
カラム方向に処理を行うデータベース。DWH的な使い方をしたいときに選択するのだろうか?TeradataやNetezzaとはどのあたりが違うのだろうか。
- Cassandra
- HBase
- etc...
4.グラフDB
データをグラフ構造で格納するデータベースで、データ間のリレーションの扱いに特化している。リレーションに特化するためにどういうデータ構造になっているのか気になる。
- Neo4J
- etc...
参考文献
NoSQLのことを調べるためにインターネット上の様々なサイトも見つつ、10年以上前のものですが、下記の書籍も読みました。端的に書かれていて、NoSQLについて何となくわかった気分になれました。
NOSQLの基礎知識 (ビッグデータを活かすデータベース技術)
著者:本橋信也, 河野達也, 鶴見利章, 太田 洋(監修)
出版社:リックテレコム
発売日:2012/04/15
次の記事:KVSについて調べてみた