データベース

NoSQL のーえすきゅーえる

NoSQLドキュメントDBキーバリューCAP定理スケールアウトMongoDB
NoSQLについて教えて

簡単に言うとこんな感じ!

テーブルじゃない形でデータを保存するDB」の総称だよ。JSON形式・キーと値のペア・グラフなど様々な形式があって、「とにかく大量のデータを速く扱いたい」場面で活躍するんだ!


NoSQLとは

NoSQL(Not Only SQL)は、リレーショナルデータベースRDB)とは異なるデータモデルを採用したデータベース群の総称です。「SQLを使わない」という意味ではなく、「SQLだけじゃない」という意味で使われます。

NoSQLが登場した背景は、2000年代後半にGoogleやAmazonが直面した超大規模データ処理の限界です。Webサービスの急成長で従来のRDBでは処理しきれなくなり、水平スケールアウト(サーバーを横に増やす)に適した新しいDBが求められました。GoogleのBigtable、AmazonのDynamoDB、FacebookのCassandraなどがその産物です。

NoSQLは柔軟なスキーマ(列の定義を事前に決めなくていい)、高い書き込みスループット、水平分散を強みとします。一方でJOINや複雑なトランザクションは苦手なため、RDBと目的に応じて使い分けるのが現代の設計スタンダードです。


NoSQLの主な種類

種類データ形式代表製品主な用途
ドキュメント型JSON/BSONMongoDB, Firestore, CouchDBコンテンツ管理, ECサイト
キーバリュー型キー=値Redis, DynamoDB, Memcachedセッション管理, キャッシュ
ワイドカラム型列ファミリーCassandra, Bigtable, HBaseIoT, 時系列, SNSフィード
グラフ型ノード+エッジNeo4j, NeptuneSNSの友人関係, 不正検知
時系列型タイムスタンプ+値InfluxDB, Prometheus監視, センサーデータ
全文検索型転置インデックスElasticsearch, OpenSearchログ分析, サイト内検索

CAP定理

分散DBシステムは以下の3つを同時に満たせないという定理。

  • Consistency(一貫性) — 全ノードが常に同じデータを返す
  • Availability(可用性) — 常にレスポンスを返す
  • Partition tolerance(分断耐性) — ネットワーク分断が起きても動作する

NoSQLの多くはAP(可用性+分断耐性)を優先し、強い一貫性を犠牲にする結果整合性を採用しています。


歴史と背景

  • 2004年 — GoogleがBigtable論文を発表(後にGoogle Cloud Bigtableとして製品化)
  • 2007年 — AmazonがDynamoDB論文「Dynamo: Amazon’s Highly Available Key-value Store」を発表
  • 2009年 — MongoDBがリリース。「NoSQL」という言葉が広まる
  • 2008年Apache Cassandraがオープンソース化(Facebook発)
  • 2010年代 — クラウドサービスとしてNoSQLが急速に普及
  • 2013年 — MongoDB IPO。NoSQLの商業的成功が証明される

NoSQL各種の特性比較

NoSQLデータモデル比較 ドキュメント型 { id: 1, name: "Alice", tags: [...] } キーバリュー型 session:abc → { user:1 } counter:page → 12345 ワイドカラム型 行キー: user1 col: name=Alice col: age=30 (列は可変) グラフ型 Alice Bob 友人 ノードとエッジで 関係を表現

関連する規格・RFC

特定のISO/RFC標準は少ないが以下が参考になります。

資料内容
Google Bigtable論文 (2006)ワイドカラム型の原典
Amazon Dynamo論文 (2007)キーバリュー型分散DBの原典。結果整合性を体系化
CAP定理(Brewer, 2000)分散システム設計の基本定理

関連用語