最近有人聊高可用性的数据库,我就想到能不能做一个分布式的数据库,使得可用性达到最高
0x00 数据库记录增加
在分布式数据库中,数据的增加是个技术活.不是说数据增加很难,而是如何保证各个数据库的数据顺序一致,我的想法是这样的
首先,分布式数据库在插入数据之间将所有数据与当前时间戳和一个随机数进行一次SHA256,得到此数据的SHA256值
然后,数据库向已连接的节点发送这个值与数据的MerkleRoot,已连接的节点再发送给此节点的已连接节点,直到公布到全网。在接受到值后,接收端检查是否被占用,如占用就返回异常迫使发送者更换ID(跳转到上一步),直到没有占用,发送完成之后,发送者得到每个客户端发送的DataSetHandle,
接着,数据库向全网分块发送数据,直到1/2以上的节点接受后,数据就增加入库了
0x01 数据库记录删除
欲删除者向全网发送DELETE请求,将MerkleRoot和数据SHA256公布在全网,已入库的数据被删除,未入库的加入删除队列在接收是拒绝接收,待全网节点全部同步完成后,删除成功
0x02 数据库记录更改
欲更改者向全网发送UPDATE请求,包含更改数据,旧的MerkleRoot和数据SHA256发送给全网,全网1/2以上节点接受后,更改成功
原文:https://www.cnblogs.com/xieyi1393/p/p2p_database.html