A:主要是性能优势。分布式 KV 的抽取使得事务的开销变得很大,另外,存储和计算远程访问的概率也变高了。经典的 SQL+KV+分布式文件系统没有这个问题,大部分场景也能够把热点数据块缓存到本地。SQL+分布式 KV 方案最早出自 Percolator,这个系统是 Google 做增量搜索的,设计的目标并不是高并发处理。OceanBase 一个集群由多个数据库节点构成,每个数据库节点可以认为就是 SQL+KV 层(含事务)。MVCC 主要是事务层的逻辑,KV 是一个一个的 SSTable,SSTable 里面包含一个一个的数据块,数据块当然是有状态的,可以放到本地,也可以放到远程的分布式文件系统。同步的是 Redo Log,相当于是每个事务的操作,这些数据的操作会在 Memtable 中回放,最后再与磁盘中的SSTable 数据块合并(compaction)。Paxos 多副本和存储计算分离在不同场景有不同优势,Paxos 做 shared nothing 可扩展,存储计算分离虽然扩展性不如 shared nothing,但是计算节点迁移成本低,架构弹性能力更好,更加灵活。
分布式 KV 是什么? ob不是分布式kv吗,一个partition leader在一个observers上,难道是所有leader都在分布式存储上?
分布式文件系统应该可以更好的减少文件系统故障导致集群不可用吧。
但是也带来了网络消耗,性能会受影响