NoSQL
简单数据模型
元数据和应用数据分离
弱一致性
优势
避免不必要的复杂性
高吞吐量
高水平扩展能力和低端硬件集群
不适用对象-关系映射
劣势
不支持ACID
功能简单
没有统一
NewSQL:
NoSQL <--> SQL(日志、锁、缓冲区管理)
Clustrix,GenieDB,ScaleBase,NimbusDB
NoSQL:
键值存储
列式数据库
文档数据库
图存数据库
SQL:
缓存数据库系统:
C,A:SQL
C,P:悲观加锁
A,P:DNS
(最终一致性)
数据一致性模型,强一致性,弱一致性,最终一致性()
数据一致性的实现技术:
Quorum系统NRW策略
N:总副本数
R:完成读操作所需要读取的最少副本数:
W:完成写操作所需写入的最少副本数:
强一致性: R+W > N
MySQL:一主两从
R+W <= N:最多只能保证最终一致性:
两段式提交:2PC(Two Phase Commit Protocol)
有两类节点:
一类为协调者
一类为事务参与者
两段:
第一阶段:请求阶段
第二阶段:提交阶段
时间戳策略
Paxos:
向量时钟
NoSQL的数据存储模型
键值模型:
数据模型:(key-value存储)
优点:查找速度快
缺点:数据无结构,通常只被当作字符串或二进制数据
应用场景:内容缓存
实例:Redis,Dynamo
列式模型:
数据模型:数据按列存储,将同一列数据存在一起:
优点:查找迅速、可扩展性强、易于实现分布式:
缺点:功能相对有限:
应用场景:分布式文件系统或分布式存储
实例:Bigtable,Cassanda,HBase,Hypertable
文档模型:
数据模型:与键值模型类似,value指向结构化数据:
优点:数据格式要求不严格,无需实现定义结构
缺点:查询性能不高,缺乏统一查询语法
应用场景:web应用
实例:MongoDB,CouchDB
图式模型:
数据模型:图结构模型
优点:利用图结构算法提高性能,并能满足场景应用需求
缺点:难以实现分布式,功能有定向性:
应用场景:社交网络、推荐系统、关系图谱
实例:Neo4J
阅读(1374) | 评论(0) | 转发(0) |