NoSQL とは?

NoSQL とは?

NoSQL とは “Not only SQL” と解釈される非リレーショナルデータベース全般を指す。非リレーショナルデータベース全般とは、一般的にはリレーショナルデータベースを除くすべてのデータベースを指す。

non SQL、non relational データベースは、従来のリレーショナルデータベースより制約の少ない一貫性モデルを利用する、データ保存と検索のためのメカニズムを提供する。

保存方式による分類

非リレーショナルデータベースのデータモデルの例は、保存方式によってドキュメント(Document)、キー・バリュー(Key-Value)、グラフ(Graph)などに分類される。

  • ドキュメント(Document) DB

    • JSON、XML のような Collection データモデル構造を採用している。
    • Lotus Notes に由来する。
    • MongoDBBaseX、CouchDB がこれに該当する。
  • キー・バリュー(Key-Value) DB

    • Key と Value がペアで保存される、もっとも単純な形態のソリューションである。
    • Amazon Dynamo Paper に由来する。
    • Redis、Memcached がこれに該当する。
  • グラフ(Graph) DB

    • Euler & Graph Theory に由来する。
    • Nodes、Relationship、Key-Value データモデルを採用している。
    • Neo4J、OrientDB などがこれに該当する。
  • Wide Columnar Store

    • Big Table DB ともいう。
    • Google の BigTable Paper に由来する。
    • Key-Value から発展した Column Family データモデルを使用している。
    • HBase、Cassandra、ScyllaDB などがこれに該当する。

RDB と NoSQL の違い

RDB、つまりリレーショナルデータベースと、NoSQL、つまり非リレーショナルデータベースの特徴を表に整理すると次のようになる。

RDB と NoSQL の違いは、データ構造はもちろん、データ整合性の意味やスケーリングにもある。

区分 RDB NoSQL
データ構造 データ構造をテーブル形式で表現する。データ構造の表現には「テーブル」および「テーブル間の接続」を利用する。
RDB
RDB
テーブル形式以外の方法でデータ構造を表現する。
表現方法にはドキュメント(XML、JSON)、キー・バリュー、グラフなどがある。
ドキュメント(Document)
nosql-document
キー・バリュー
Key-Value
グラフ
Graph
ACID 特性 データ不一致が発生しないよう、厳格な管理が行われる。 結果整合性と呼ばれる、厳格なデータ整合性管理は行われない。
速度を優先し、データについては「結果的に」一貫性を持つよう保証する。
スケーリング 垂直方向のスケーリング、つまりサーバースペックの増強が行いやすい。 水平方向のスケーリング、つまりサーバー台数の増強がしやすいことが特徴である。

CAP 理論

  • 一貫性(Consistency)
    • 同時性または同一性ともいう。
    • 複数クライアントが同じ時間に照会するデータが同一データであることを保証することを意味する。
  • 可用性(Availability)
    • すべてのクライアントの読み書き要求に対して、常に応答可能であることを保証する。
    • 耐障害性ともいう。
    • 耐障害性を持つ NoSQL は、クラスター内のいくつかのノードが壊れても正常なサービスが可能である。
  • ネットワーク分割許容性(Partition tolerance)
    • 地域的に分割されたネットワーク環境で動作するシステムにおいて、2つの地域間のネットワークが切断されたりネットワークデータが失われたりしても、各地域内のシステムが正常に動作しなければならないことを意味する。

参考文書