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/BSON | MongoDB, Firestore, CouchDB | コンテンツ管理, ECサイト |
| キーバリュー型 | キー=値 | Redis, DynamoDB, Memcached | セッション管理, キャッシュ |
| ワイドカラム型 | 列ファミリー | Cassandra, Bigtable, HBase | IoT, 時系列, SNSフィード |
| グラフ型 | ノード+エッジ | Neo4j, Neptune | SNSの友人関係, 不正検知 |
| 時系列型 | タイムスタンプ+値 | 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各種の特性比較
関連する規格・RFC
特定のISO/RFC標準は少ないが以下が参考になります。
| 資料 | 内容 |
|---|---|
| Google Bigtable論文 (2006) | ワイドカラム型の原典 |
| Amazon Dynamo論文 (2007) | キーバリュー型分散DBの原典。結果整合性を体系化 |
| CAP定理(Brewer, 2000) | 分散システム設計の基本定理 |
関連用語
- RDB(リレーショナルデータベース) — NoSQLと使い分ける従来型DB
- DynamoDB・Cosmos DB・Firestore — クラウドマネージドNoSQL
- Redis・ElastiCache・Memorystore — キーバリュー型の代表
- Elasticsearch・OpenSearch — 全文検索型NoSQL
- グラフDB(Neptune) — グラフ型データベース