Open12
データ指向アプリケーションデザイン
要約
1章
2章
3章
4章
5章 レプリケーション
6章 パーティショニング
6.5 リクエストのルーティング
パーティショニングによって、複数のノードに分散したはいいものの、クライアントはどのノードにアクセスして目的のデータを参照すればいいのかわからない。
→ 対象のデータが入っているノードに 振り分けをするコンポーネント が必要
- 任意のノード→目的のノード(対象のデータが入ってればOK→なければ転送)
- ロードバランサ
- クライアント主導
課題:振り分けコンポーネントが、パーティションのノード割り当て変化を認識しなければいけないこと
ノードのクラスタを管理する外部記憶システムが必要(ZooKeeperなど)
7章 トランザクション
「トランザクションは、DBアクセスをするアプリケーションの プログラミングモデルをシンプルにする という目的をもって生み出されたもの」→確かにな〜
ACID特性
Atomicity: 原始性
トランザクション内の全ての操作が成功するか、全てが取り消されることを保証。
Consistency: 一貫性
データについて常に真でなければならない不変性が存在すること。
例えば、会計システムの場合「貸方と借方が常に等しくなる」という不変性。
これを保証するのは アプリケーションの責任 であり、厳密にはConsistencyのCはACIDに属していない。
Isolation: 分離性
複数のトランザクションが同時に実行される際に、お互いの影響をどの程度遮断するかを定める特性。
「例: 1つの投稿に同時にいいね→本来は2いいねつくはずが1いいねしかついていない」
Durability: 永続性
不揮発性のハードディスクに保存されたかどうか→あまり意識することはなさそう