Key/Value型が一番楽なのは、参照(ロケーション発見)の効率がよいためで、他に方法がなさげなところはみんな分かっているんだと思う。
name | routing | balancing | schema | replication | membership | consistency | Tx*1 |
---|---|---|---|---|---|---|---|
BigTable +Megastore | layered schema (meta tablet) | Centralized | 列指向DB | GFS依存 | Chubby | lock | OK |
Dynamo | Chord | DHT | 特になし? | Quorum-based | Gossip | vector clock | × |
Cassandra | Chord | DHT? | 列指向DB? | checksum (Act-Sby) | Gossip | ? | × |
Scalaris | Chord# | naming rule | なし | Quorum-based | Gossip | transaction | OK |
Kai | Chord? | DHT | なし | Quorum-based | Gossip | vector clock | × |
こうやってみるとなんかちょっとずつ理解に穴があいているなぁ。あとはKademliaを押さえとかないといけないかも。
churn耐性の話もあるけど、BigTableの一番の特徴はSplit Brain耐性があるってところだろうか。いや、他のものがないってわけじゃなくて、不明なだけ。
*1:複数行のアトミックな更新/2PC的なもの