一貫性(データストレージ) – ウィキペディア

before-content-x4

いつ 一貫性 そこに保存されているデータの正しさは、データベースに参照されます。上記のアプリケーションの層が計算されない場合、一貫性のないデータベースが深刻なエラーにつながる可能性があります。データの一貫性に関する2つの基本的な視点を、一方では「古典的な」リレーショナルデータベースの世界から、そして一方では分散システムの世界と区別できます。

after-content-x4

分散ストレージシステムは、クラウドコンピューティングの過程で大きな浮力と意識を高めました。分散ストレージシステムでは、データは通常、異なるサーバーを介して数回複製され、一方でデータの可用性を高め、一方でアクセス時間を短縮します。いくつかのサーバーが同時に故障する確率は、1つだけが失敗するよりも大幅に低いため、前者ははっきりと見えます。後者は、アクセスを地理的に近いレプリカに送信できるか、完全に過負荷のサーバーが別のサーバーによるアクセスの一部を引き継ぐことで解放されるという事実によって説明されています。これに関連して、一貫性とは、日付のすべてのレプリカが同一であることを意味します。特に、これはまた、分散ストレージシステムがデータレコードAで一貫していると同時に、データレコードBと一貫性がないことを意味します。また、すべてのレプリカが常に同一である場合、厳密な一貫性についても語っています。

分散システムでは常にすべてのレプリカを一貫して保持することは常に意味があるとは限らないため、非常に弱い一貫性もあります( 英語 弱い一貫性 )、d。つまり、一貫性の保証は与えられておらず、SO -Called 最終的な一貫性 プロセスやエラーを作成せずに十分に長い時間しか想定できない場合、データレコードはある時点で一貫していると述べています。

間のスペクトル 最終的な そして、まだいくつかの中間レベルがあります [初め] 、So -Calledの間で区別が行われます クライアント中心の一貫性 データ中心の一貫性 。クライアントの観点から、後者は以前の内部一貫性保証について説明しています。

クライアント中心の一貫性 [ 編集 | ソーステキストを編集します ]

単調な読み取りの一貫性 [ 編集 | ソーステキストを編集します ]

分散ストレージシステムがバージョンnを使用して特定のキーの読み取りリクエストに返信した場合、このクライアントの読み取りアクセスはすべて、少なくともNと同じくらい新しいバージョンのみを配信します。

単調な書き込みの一貫性 [ 編集 | ソーステキストを編集します ]

特定のクライアントが最初に値1を書き、次に特定のキーについて値2を書き込み、システムがこの順序で内部的に値を書き込むことも保証されます。これは、特にレプリカ内の(さらにアクセスを書くことなく)1値2が上書きされないことを意味します。

あなたの書き込みの一貫性を読んでください [ 編集 | ソーステキストを編集します ]

ここで、ストレージシステムは、バージョン番号Nを使用して日付を作成したプロセスがNよりも古いバージョンを保証しないことを保証します。ただし、これは一貫性が弱いだけでなく 最終的な一貫性 保証する。実際には、これはそのように呼ばれています セッションの一貫性 この保証がセッションの期間にのみ適用される実装。たとえば、同じレプリカの特定のプロセスのすべての問い合わせ(読み取りまたは書き込みアクセスかどうかにかかわらず)をルーティングすることが可能です。このレプリカが利用できない場合、セッションは終了します。

after-content-x4

書面での読み取りの一貫性 [ 編集 | ソーステキストを編集します ]

プロセスがバージョンnの日付xを読み取り、この日付と同じプロセスを上書きした場合、保証されます 書面での読み取りの一貫性 ライティングプロセスは、少なくともバージョンnで利用可能なXのレプリカでのみ行われること。

データ中心の一貫性 [ 編集 | ソーステキストを編集します ]

因果的な一貫性 [ 編集 | ソーステキストを編集します ]

因果的な一貫性 因果関係にあるすべての操作は、すべてのレプリカで同じ順序でシリアル化されなければならないことを意味します。操作Oは、次の条件の1つ以上が適用される場合、操作pに因果的に依存します。

  1. oとpは両方とも同じプロセスによってトリガーされ、pは時系列に上にありました。
  2. oは読み取りで、Pは書き込みであり、OはPの結果を読みました
  3. oは因果的に操作Xに依存します。これは、因果的にp(トランジテーション)に因果関係があります。

連続的な一貫性 [ 編集 | ソーステキストを編集します ]

連続的な一貫性 より厳しいです 因果的な一貫性 すべての操作がすべてのレプリカで同じ順序でシリアル化され、各クライアントプロセスの操作が正しい最終順序で実行されることをモデルに要求することにより。

線形化可能性 [ 編集 | ソーステキストを編集します ]

線形化可能性 より厳しいです 連続的な一貫性 また、操作の均一な順序が実際の年代順に対応することをモデルに要求することにより、すべての要求が時間間隔ではなく一度に発生するかのように表示されます。

リレーショナルデータベースでは、データの整合性は一貫性によって理解されます。これは、SO -CALLEDの整合性条件をセットアップすることによって定義されます。さまざまなタイプの整合性規定を区別します。

エリアの完全性
各属性の値は、特定の範囲の値でなければなりません。
エンティティの完全性
各オブジェクトの主キーは明確でなければなりません。いかなる状況でも、フィールドコンテンツが空になってはいけません( SQL:違います ヌル [2] )) なれ。
参照整合性
外部キーフィールドのコンテンツは空でなければなりません (ヌル) または、そのようなキーを持つオブジェクトが存在する必要があります。
論理的な一貫性
ユーザーは、追加の整合性規制を定義することもできます(たとえば、家系図データベースを使用してください。子供は親の後に生まれたに違いありません)。そのような条件は通常、データベースシステムによって制御されることはないため、ユーザー自身が満たす必要があります。

データベースは、すべての整合性規定を満たしている場合にのみ一貫しています。少なくとも1つの整合性条件に違反される状態は、非矛盾と呼ばれます。 [3]

古典的なリレーショナルデータベースの一貫性は、分散システムの世界からの一貫性の定義の定義の量、つまりH.すべてのレプリカが同一ではない限り、完全性条件をすべて満たすことはできません。

一貫した変換 [ 編集 | ソーステキストを編集します ]

一貫性は、データベーストランザクションで必要な4つの酸性特性の1つです。各トランザクションは、データベースを一貫性のあるものから別の一貫した状態に転送する必要があります。ただし、リクエストの処理中は、データベースの一貫性に短時間通知して違反する可能性があります。

トランザクションによって与えられたデータの各シリーズの変更(挿入、削除、または変更)の後、データベースの整合性条件がチェックされます。これらを満たすべきではない場合、トランザクション全体を処理する必要があります。前の(一貫した)状態が復元されるように(「ロールバック」)。

特別な注意には並行トランザクションが必要です。

  1. Werner Vogels: 最終的に一貫した再訪。 の: allthingsdistributed.com。 2008年12月22日、 2017年3月22日に取得 (英語)。
  2. 本当に何を意味しませんか? 2018年1月21日にアクセス
  3. K.スコットアレン: Microsoft SQL Serverの制約。 の: odetocode.com。 2004年1月3日、 2017年3月22日に取得
after-content-x4