1.key-value
Redis
键值对存储,特点:查询数据块
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。
2.Colunmn列式存储
HBase
将同一列的数据放在一起,查询非常快
3.document文档存储
MongoDB
经典用于web项目中,与KeyValue类似,比如MongoDB主要应用在爬虫
4.Graph图结构存储
neo4j
用于社交网络,
1.易扩展
当一台机器不够用了,很容易添加一个新的服务器,只要配置好环境之后,自动使用。
2.大数据量、高性能
读写速度快,nosql基本都是内存数据库,比硬盘存储要快很多,查询数据快
3.灵活性
NoSQL无需事先为 要存储的数据 建立字段,随时可以存储自定义的数据格式,在关系型数据库添加字段和删除字段是非常麻烦的。
4.高可用
一台机器宕机出问题了,不会影响其他的机器
相关理论
关系数据库理论:ACID
分布式系统:CAP
Consistency (一致性):
“all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。
Availability (可用性):
可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
Partition Tolerance (分区容错性):
即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。
分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,对于用户而言并没有什么体验上的影响。
https://blog.csdn.net/qq_34802511/article/details/81296510