Open12

データ指向アプリケーションデザイン

aa

5章 レプリケーション

aa

6章 パーティショニング

aa

6.5 リクエストのルーティング

パーティショニングによって、複数のノードに分散したはいいものの、クライアントはどのノードにアクセスして目的のデータを参照すればいいのかわからない。

→ 対象のデータが入っているノードに 振り分けをするコンポーネント が必要

  • 任意のノード→目的のノード(対象のデータが入ってればOK→なければ転送)
  • ロードバランサ
  • クライアント主導

課題:振り分けコンポーネントが、パーティションのノード割り当て変化を認識しなければいけないこと

ノードのクラスタを管理する外部記憶システムが必要(ZooKeeperなど)

aa

7章 トランザクション

aa

「トランザクションは、DBアクセスをするアプリケーションの プログラミングモデルをシンプルにする という目的をもって生み出されたもの」→確かにな〜

aa

ACID特性

Atomicity: 原始性

トランザクション内の全ての操作が成功するか、全てが取り消されることを保証。

Consistency: 一貫性

データについて常に真でなければならない不変性が存在すること。
例えば、会計システムの場合「貸方と借方が常に等しくなる」という不変性。
これを保証するのは アプリケーションの責任 であり、厳密にはConsistencyのCはACIDに属していない。

Isolation: 分離性

複数のトランザクションが同時に実行される際に、お互いの影響をどの程度遮断するかを定める特性。
「例: 1つの投稿に同時にいいね→本来は2いいねつくはずが1いいねしかついていない」

Durability: 永続性

不揮発性のハードディスクに保存されたかどうか→あまり意識することはなさそう

aa

トランザクション分離レベル

直列化可能

Read Committed