MakingSenseofStreamProcessing / Making Sure Data Ends Up in the Right Places


MakingSenseofStreamProcessing

データが最終的に適切な場所に置かれることを確実に (Making Sure Data Ends Up in the Right Places)

要約

  • どのようにすべてのデータが適切な場所で終わることを確認するのだろう?どのように異なるストレージシステムに現れる同じデータのコピーを取得し、データの変更の一貫した同期を保つのか?
  • いくつかのデータを書きたいなら、そのレコードのシーケンスの最後に書き込みを追加する。その配列は完全に順番があり追加専用で永続(ディスクに格納)させる。
  • それを「ログ」と呼ぶ

詳細

  • それでは、元の質問に戻ろう:どのようにすべてのデータが適切な場所で終わることを確認するのだろう?(図2-6)どのように異なるストレージシステムに現れる同じデータのコピーを取得し、データの変更の一貫した同期を保つのか?
  • 見てきたように、二重の書き込みは解決策ではない。なぜなら、それが一部の失敗やレースコンディションに起因する不整合を導くからだ。では、どうしたらよいのだろう?
  • Figure 2-13. 完全な順序で永続的に格納されたイベントのシーケンスは、ログとしても知られている。
  • 順番にすべての書き込みを行う場合は、同時実行を行わずに、レースコンディションの可能性を削除する。あなたがあなたの書き込みを行う順序を維持している場合には、後で示すように、部分的な障害から回復することがはるかに容易になる。
  • それで、私が提案するばかげたほど簡単な解決策は次のようになる。いくつかのデータを書きたいなら、そのレコードのシーケンスの最後に書き込みを追加する。その配列は完全に順番があり追加専用で永続(ディスクに格納)させる。
  • 図2-13は、このようなデータ構造の例を示す。右に左に移動、それは最初にX = 5を書き、Y= 8を書き 、X= 6を書いたことを記録する。
  • そのデータ構造は名前を持っている。我々は、それを「ログ」と呼ぶ。