ビデオ: Cloud Datastore 101: Overview of Google's scalable NoSQL document database (Google Cloud Next '17) 2024
リレーショナルデータベースシステムの1つの特徴は、 ACID準拠と呼ばれるものです。 あなたは推測したように、ACIDは略語です。個々の文字は、個々のデータベーストランザクションの特性を記述するためのもので、このリストで説明するように展開できます。
-
Atomicity: 成功するか完全に失敗する。部分的な成功は許されない。
<! - 1 - > -
整合性: データベーストランザクション中、RDBMSはある有効な状態から別の有効な状態に進みます。州は無効ではありません。
-
分離: クライアントのデータベーストランザクションは、RDBMSとのトランザクションを試みている他のクライアントとは独立して行わなければなりません。
-
耐久性: トランザクションの一部であったデータ操作は、 不揮発性ストレージ (ハードディスクなどの電源が入っていなくても格納された情報を取得できるコンピュータメモリ)に反映され、トランザクションは正常に完了します。トランザクションの失敗は、データを部分的にコミットされた状態のままにすることはできません。
<! - 2 - >
オンライントランザクション処理のようなRDBMSの特定の使用例は、システムが正しく機能するためにクライアントとRDBMS間のACID準拠のトランザクションに依存します。 ACIDに準拠した取引の大きな例は、ある銀行口座から別の口座に資金を移すことです。
これは2つのデータベーストランザクションに分解されます。元のアカウントには引き出しが表示され、宛先のアカウントにはデポジットが表示されます。明らかに、これらの2つの取引は有効であるために一緒に結ばれなければならないので、いずれかが失敗した場合、両方の残高が有効であることを確実にするために操作全体が失敗しなければなりません。
<! Hadoop自体にはトランザクション(またはレコード)という概念はないため、明らかにACID準拠のシステムではありません。 Hadoopエコシステム全体のデータ保存と処理プロジェクトについてより具体的に考えてみましょう。いずれもACIDに完全準拠しているわけではありません。しかし、NoSQLのデータストアでよく見られるプロパティを反映しているため、Hadoopのアプローチの先例があります。NoSQLデータストアの主な概念の1つは、すべてのアプリケーションが本当にACID準拠のトランザクションを必要とするわけではないということです。特定のACIDプロパティでリラックスしたり、リレーショナルモデルから離れると、NoSQLデータストアの一部でニッチアプリケーションの膨大なスケーラビリティとパフォーマンスを実現できる可能性が広がりました。 ACIDは信頼性の高いトランザクション処理に必要な主要特性を定義しますが、NoSQLの世界では柔軟性とスケーラビリティを実現するために異なる特性が必要です。これらの相反する特性は、BASEという略語で賢明にキャプチャされます:
B
asically
-
A vailable: システムは、すべてのユーザによるクエリに使用できることが保証されています。 S9999状態: 次の箇条書きで説明するように、最終的な整合性モデルのためにシステムに格納された値が変更されることがあります。一貫して一貫性:
-
データがシステムに追加されると、システムの状態は徐々にすべてのノードにわたって複製される。たとえば、Hadoopでは、ファイルがHDFSに書き込まれると、元のデータブロックが書き込まれた後に、データブロックのレプリカが異なるデータノードに作成されます。ブロックが複製される前の短期間、ファイルシステムの状態は一貫していません。 ほとんどのNoSQLデータストアはACID特性を完全に放棄しないので、頭文字のBASEは少し工夫されています。つまり、名前が意味する極端な反対の概念ではありません。また、ソフトステートと最終的に一貫性のある特性は同じものですが、一貫性を緩和することで、システムは水平方向(多くのノード)にスケーラビリティを確保し、可用性を確保できるということです。 設計者がシステムで提供することを目指す3種類の保証を表すCAP定理に言及せずに、NoSQLについての議論は完了しません。
-
一貫性: ACIDのCと同様に、システムはいつでもデータの同じビューを持ちます。 可用性:
システムは常に要求に応答します。 パーティションの許容値: システムノード間でネットワークの問題が発生すると、システムはオンラインのままです。
CAP定理によると、分散ネットワークシステムでは、建築家はこれらの3つの保証のうち2つを選択する必要があります。これは、3つの可能性を示しています。
-
従来のリレーショナル・テクノロジーを使用しているシステム は通常パーティション・トレラントではないため、一貫性と可用性を保証できます。要するに、従来のリレーショナル技術システムの一部がオフラインの場合、システム全体がオフラインになります。パーティションの許容範囲と可用性が最も重要なシステムは、パーティションの両側で更新(一貫性を破壊する)が可能であるため、一貫性を保証することはできません。キーバリューストアのDynamoとCouchDBとコラムファミリストアのCassandraは、パーティション耐性/可用性(PA)システムの一般的な例です。
-
パーティション耐性と一貫性が最も重要なシステム は、パーティション化された状態が解決されるまでシステムがエラーを返すため、可用性を保証できません。 HadoopベースのデータストアはCPシステム(一貫性があり、許容範囲内であるとみなされる)とみなされる。多くのスレーブノードに重複してデータが格納されるため、Hadoopクラスタの大部分(パーティション)への停止を許容することができます。 Hadoopには、クラスタに格納されたデータの一貫性のある単一のビューを維持する中央メタデータストア(NameNode)があるため、一貫性があるとみなされます。
-