2019.9.4 key-value stores 和 timestamps

这一章先是将key-value stores,其实这个就是对应的关系型数据库的以schema为基础的存储原理,通常的nosql就是用的这种,特色就是没有什么明显的schema,除了key之外就是一大坨的value,不须要有什么整齐的格式。html

讲的数据库,天然不得不提cap理论,就是说Consistency Available and Partition tolerance,即一致性(C)、可用性(A)与分区容错性(P)组成了不可能三角,最多只能知足两个。算法

而后讲了Cassandra的架构,Cassandra写操做比较方便,写进memtable(内存),内存满了以后扔进disk的sstable里面,搜索的话用bloom filters,以前学过这个东西有false positive的,不过没啥大关系。而后副本sstable时不时merge一下以保持一致,固然不一致的时候也是有可能被查询到的。sql

Cassandra是保证了A和P的数据库,就是说很快,扩展能力好,可是一致性没那么强。数据库

具体能够看看这里http://www.javashuo.com/article/p-qxdamkac-dv.html架构

对应的又讲了hbase,也是nosql可是原理和Cassandra彻底不一样,我基本没咋听其实,复习的话能够看看这里http://www.javashuo.com/article/p-hdnfjaui-dk.html。hbase是保证C和P的。nosql

 

而后讲的是时间一致性,就是不一样的系统时间怎么保持一致啊,讲了两种算法,crstian和ntp,我彻底没听。。。。主要听的是后边讲的lamport时间戳,这个原理就是咱们不关心具体的时间,只关心不一样系统中各个事务的发生的先后顺序,方法是给每一个进程的发生的事情打上时间戳(1,2,3之类的),而后能够经过逻辑推演得出不少不一样系统进程事务之间的先后顺序,固然还有不少事推不出来,那就须要人工的规则安排了。具体内容这里讲得不错https://blog.csdn.net/aigoogle/article/details/38823175google

感受这门课内容量好多,信息也太密了。。。.net

相关文章
相关标签/搜索