【のーえすきゅーえる】

NoSQL とは?

最終更新:
💡 表の形だけにこだわらないデータの保管庫

NoSQLは、キー・値やドキュメント、グラフなど、関係表以外のモデルを主に使うデータベースの総称です。代表的な分類と、用途に合った選び方を説明します。

📌 このページのポイント
NoSQL:データの形で選ぶキー・値Redis5ひよこキー → 値ドキュメントMongoDB項目をまとめる名前:ひよこ文書ごとに扱うワイドカラムCassandra同じパーティション10/1 | 晴れ10/2 | 雨グラフNeo4jAB友人人と関係をたどる使える機能・制約は製品ごとに確認
代表的なデータモデルの例です。ワイドカラムは、分析向けの列指向の格納方式とは同じ意味ではありません。
ひよこ ひよこ
NoSQLってSQLの新しいバージョン?
ペンギン先生 ペンギン先生
違うよ。表を関連付ける関係データベースとは異なるモデルを主に使うデータベースの総称なんだ。たとえば商品ごとに属性が違うならドキュメント、人物のつながりをたどりたいならグラフのように、データの形と使い方から選べる。
ひよこ ひよこ
どんな種類があるの?
ペンギン先生 ペンギン先生
図の4つが代表例だよ。Redisのようなキー・値型は名前を手掛かりに値を扱い、MongoDBのようなドキュメント型は項目をまとめた文書を扱う。Cassandraはパーティションに行や列をまとめるワイドカラム型、Neo4jはノードと関係を扱うグラフ型だね。
ひよこ ひよこ
ワイドカラムって、分析用の列指向データベースと同じ?
ペンギン先生 ペンギン先生
同じ意味ではないよ。Cassandraでは、どのパーティションの行を読むかを考えて表を設計する。分析で必要な列をまとめて読み取る列指向の格納方式とは区別しよう。「カラム」という名前だけで用途や内部の保存方式を判断しないことが大事なんだ。
ひよこ ひよこ
スキーマがなくて、何でも自由に入れられるの?
ペンギン先生 ペンギン先生
柔軟な構造を扱える製品はあるけれど、NoSQL全部が同じではないよ。MongoDBでも項目の型や必須項目を検証するスキーマ検証を設定できる。Cassandraでは列の型などを定義する。自由度が高くても、データの意味や変更時の扱いは設計するんだ。
ひよこ ひよこ
正確さが必要ならNoSQLは使えない?
ペンギン先生 ペンギン先生
それも一括りにはできないよ。MongoDBはレプリカセットやシャードクラスタで複数文書のトランザクションを使える。必要な整合性、更新のまとまり、検索方法、運用や分散の仕組みを製品ごとに確認しよう。NoSQLなら必ず速い、関係データベースなら拡張できない、とは言えないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「NoSQL」って出てきたら「表の形だけにこだわらないデータの保管庫」と思えばだいたいOK!
📖 おまけ:英語の意味
「NoSQL」 = 関係データベース以外の方式も扱う総称
💬 NoSQLは、SQL中心の関係データベースとは異なる方式をまとめて呼ぶ言葉だよ。「Not Only SQL(SQLだけではない)」と説明されることもあるけれど、SQLを使えるかどうかだけで分類が決まるわけではないんだ。

参考資料

← 用語集にもどる