https://github.com/AlexanderChiuluvB/db-learning-material
欢迎star! 我做的数据库学习资料整理
Study Notes on Course1
Course Topics
Focus on internals of single nodes in-memory database system.
Not distributed Systems.
论文阅读笔记
《What’s really new with NewSQL》
NoSQL
-
传统关系模型与强事务保证制约了其性能和可扩展性,高可用性
-
NoSQL的的设计思想是一方面抛弃强事务保证,引入柔情事务,追求的是最终一致性。
另一方面,抛弃传统关系模型,采用如键值对,图或者文档数据模型来组织数据。 -
如Google的BigTable,以及其衍生出来的Hbase,Cassandra,文档型数据库MongoDB,
键值型数据库Redis
NewSQL
-
NoSQL的缺点:开发者需要花大量精力写code来处理数据不一致的情况,在生产中发现
还是保证事务性会比较好 -
NewSQL的定义是:
1.保持关系模式,但是对OLTP提供如NoSQL相同的可扩展性能
2.保证事务的ACID特性
说白了就是既要保持传统关系模式,同时追求与NoSQL一样的性能与可扩展性,开发者再也不需要写额外的code来保证最终一致性。
那具体NewSQL DBMS需要满足什么特性?
1.读写事务是short-lived的
2.每次只处理subset数据,一般是先用索引找出来,即避免全表扫描或者大规模的分布式join
3.可能相同的query要执行多次,并且每次的input都不同
更为narrow的definition包括
提供无锁的并发控制策略
需要是shared nothing architecture
什么是shared nothing architecture?
每个节点都是独立的。典型的SNA系统会集中存储状态的信息,如:数据库中,内存cache中;不在节点上保存状态的信息。
对于server集群,若将session等状态保存在各个节点上,那么各个节点的session复制会极大的影响性能;若采用SNA,保持每个节点的无状态性,不再使用session来保持全局的状态,而是将session直接放在数据库中,在数据库前再加一层分布式Cache(推荐使用memcached)
,这样将可极大的提高性能,当改变session中的对象时,同步到cache和数据库。
shared nothing需要确立一种分片策略,使得依据不