Reading Notes (5) Megastore

架构:
Partition本地Nosql DB(big table,a google自研KV store, 近似于Row-based store),每个分片叫做Entity group。
Entity group可以被应用自然的选为比如Email帐户,map的一个部分,等等。在同一个Entity group里面支持ACID,跨Entity group的,采用2PC来支持事务。
采用Paxos同步Log replicator,天然容错。不再需要concensus算法来选主.

Schema:
不采用依赖Join的schema,因为层次性模型在Bigtable更方便。而不是DBMS常用的relational模型。
Join在应用层实现。比如先做一个index lookup,然后并行的再做第二个index lookup,采用第一个的结果。这是咋干的?

Indexes:
本地Index:在一个Entity group里面找数据。
Global index: 跨Entity group的数据查询。不保证数据含有最近的update,因为是weak consistency。
数据和index都是存放在Bigtable里面。Index也是Bigtable里面的row。这样可以利用Bigtable的query?

Transaction (ACID)和Concurrency control
Atomicity, Consistency, Isolation, and Durability
多个statement不可分,DB一致性从一个状态到另一个不崩溃(不是用户数据正确性这个是当然的),Tx之间隔离一个看不到另一个好像sequential执行的一样,持久性就是commit之后就一直在了需要写persistent存储。
Bigtable可以存不同的timestamp,所以megastore支持MVCC多版本,读写可以并行,

你可能感兴趣的:(introduction)