2019.9.4 key-value stores 和 timestamps

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

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

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

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

具体可以看看这里https://www.cnblogs.com/logo-fox/p/8927067.html。

对应的又讲了hbase,也是nosql但是原理和Cassandra完全不同,我基本没咋听其实,复习的话可以看看这里https://www.cnblogs.com/bonelee/p/6279248.html。hbase是保证C和P的。

 

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

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

转载于:https://www.cnblogs.com/dynasty919/p/11462766.html

你可能感兴趣的:(2019.9.4 key-value stores 和 timestamps)