NoSQLデータストア
NoSQLデータストアは、キーバリュー型、ドキュメント型、ワイドカラム型、グラフ型などの非リレーショナルデータベースであり、柔軟なデータモデルと分散戦略を採用することで、リレーショナルデータベースが提供する保証の一部を犠牲にしつつ、水平スケーリングと可用性を実現します。
Definition
NoSQLデータストアとは、リレーショナルモデルから逸脱したデータベースであり、データをキーバリューペア、ドキュメント、ワイドスパースカラム、またはグラフとして編成し、通常はスケーラビリティと可用性を達成するために、レプリケーションと緩和された一貫性を持つクラスター全体にデータを分散させます。
Scope
このトピックでは、NoSQLシステムの主要なカテゴリとそのデータモデルについて説明します。具体的には、単純なルックアップのためのキーバリュー型ストア、ネストされたレコードのためのドキュメント型ストア、スパースで大規模なテーブルのためのワイドカラム型ストア、高度に接続されたデータのためのグラフデータベースが含まれます。これらのシステムに共通する設計上の選択肢(シャーディング、レプリケーション、チューナブルな一貫性)と、各モデルに適したアクセスパターンについても扱います。広範な一貫性理論(CAP定理と一貫性モデル)および処理フレームワークは、隣接するトピックであるため、ここでは扱いません。
Core questions
- 各NoSQLカテゴリ(キーバリュー型、ドキュメント型、ワイドカラム型、グラフ型)はどのようなデータモデルを提供しますか?
- 各カテゴリにはどのようなアクセスパターンとワークロードが適していますか?
- NoSQLストアは、スケーリングと可用性のためにどのようにデータをシャーディングし、レプリケートしますか?
- NoSQLストアはどのようなリレーショナル機能(結合、トランザクション、スキーマ)を緩和し、その理由はなぜですか?
- チューナブルな一貫性設定は、アプリケーションがレイテンシと鮮度をどのようにバランスさせることを可能にしますか?
Key concepts
- キーバリュー型ストア
- ドキュメント型ストア
- ワイドカラム型ストア
- グラフデータベース
- シャーディングとレプリケーション
- チューナブルな一貫性
- スキーマの柔軟性
- 非正規化されたアクセスパターン
Key theories
- キーバリュー型およびワイドカラム型モデル
- キーバリュー型ストアは、不透明なキーを値にマッピングすることで、単純で高速なルックアップを実現します。一方、ワイドカラム型ストアは、柔軟でスパースなカラムファミリーを持つ行にデータを編成します。DynamoとBigtableに代表されるこれら両者は、シャーディングとレプリケーションにより大規模なクラスターにスケールします。
- ドキュメント型およびグラフ型モデル
- ドキュメント型ストアは、自己記述的なネストされたレコード(多くの場合JSON)を保持し、その構造に対するクエリをサポートします。一方、グラフデータベースは、エンティティと関係をノードとエッジとしてモデル化し、高度に接続されたデータのトラバーサルに最適化されています。
- スケーリングのための保証の緩和
- 水平スケーリングと可用性を維持するために、多くのNoSQLストアはスキーマを緩和し、複数行トランザクションと結合を排除し、チューナブルな一貫性または結果整合性を提供することで、整合性に関する一部の責任をアプリケーションに移行しています。
Clinical relevance
NoSQLストアは、インターネットサービスの構築ブロックとして広く利用されています。キーバリュー型およびワイドカラム型ストアは、セッション状態、カタログ、時系列データを大規模にバックアップし、ドキュメント型ストアは柔軟なアプリケーションデータに適しており、グラフデータベースはレコメンデーションシステムや不正検出システムを支えています。そのため、データエンジニアリングにおいてこれらのモデルの知識は不可欠です。
History
NoSQLムーブメントは、インターネット企業が単一ノードのリレーショナルデータベースの限界を超えてスケーリングする必要性から生まれました。GoogleのBigtable(2006年/2008年)はワイドカラムモデルを導入し、AmazonのDynamo(2007年)は高可用性で結果整合性のあるキーバリューモデルを導入しました。これらの影響力のある設計は、2000年代後半から2010年代にかけて、オープンソースのキーバリュー型、ドキュメント型、ワイドカラム型、グラフデータベースの世代を生み出しました。
Key figures
- Werner Vogels
- Jeffrey Dean
- Sanjay Ghemawat
Related topics
Seminal works
- decandia2007
- chang2008
Frequently asked questions
- キーバリュー型、ドキュメント型、ワイドカラム型、グラフ型ストアの中からどのように選択すればよいですか?
- モデルをアクセスパターンに合わせます。既知のキーによる単純なルックアップにはキーバリュー型。自己完結型でネストされたレコードをフィールドでクエリする場合にはドキュメント型。非常に大規模でスパースなテーブルを予測可能な行キーアクセスで利用する場合にはワイドカラム型。ソーシャルネットワークやレコメンデーションなど、関係性とトラバーサルが支配的なデータにはグラフ型が適しています。
- NoSQLストアはトランザクションをサポートしていますか?
- 歴史的に、多くのNoSQLストアは単一キーのアトミック操作のみを提供し、複数レコードのトランザクションはサポートせず、スケーラビリティのためにこれを犠牲にしていました。しかし、状況は変化しており、多くの現代のNoSQLおよび「NewSQL」システムは、複数ドキュメントまたは分散トランザクションを提供するようになっています。したがって、トランザクションサポートはシステムによって大きく異なるため、個々のシステムで確認する必要があります。