- 当前互联网面临着3V+3高的问题
3V:海量Volume 多样Variety 实时Velocity
3高:高并发 高扩展 高性能 - NoSQL 数据模型简介 (聚合模型)
1> KV 键值: 新浪-- BerkeleyDB +Redis 美团-- redis+tair 阿里百度-- memcache+redis
2> 文档型数据库(BSON格式较多): CouchDB MongoDB基于分布式文件存储的数据结构,由C++编写
3>列存储数据库:Cassandra,HBASE 分布式文件系统
4>图关系数据库:他不是放图形的,放的是关系比如:朋友圈社交网络,广告推荐系统 Neo4j,InfoGrid
四者对比
分类 | Examples举例 | 典型的应用场景 | 数据模型 | 优点 | 缺点 |
---|---|---|---|---|---|
键值对 | Redis Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等 | key指向Value的键值对,通常用HashTable实现 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
文档 | MongoDB CouchDB | web应用(与key-value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | KV键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法 |
列存储 | HBase Cassandra | 分布式文件系统 | 以列簇式存储,将同一列数据存储在一起 | 查找速度快,可扩展强,更容易进行分布式扩展 | 功能相对局限 |
图形 | Neo4j,InfoGrid | 社交网络,推荐系统,专注于构建关系图谱 | 图结构 | 利用图结构相关算法,比如最短路径寻址,N度关系查找 | 很多时候需要对整个图计算才能得到需要的信息 |
- 什么是BSON
BSON() 是一种类json的一种二进制的存储格式,简称Binary JSON,他和JSON一样,支持内嵌的文档对象和数组对象 - 什么是ACID
Atomicity原子性 Consistency一致性 Isolation独立性 Durability持久性 - 什么是CAP
Consistency强一致性 Availability可用性 Partition tolerance 分区容错性
CAP的理论核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多同时可以较好地满足两个。
因此,根据CAP原理将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三类
CA – 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大
CP – 满足一致性,分区容忍性的系统,通常性能不是特别高,Redis MongoDB
AP – 满足可用性,分区容忍性的系统,通常可能对一致性要求低一点 - 什么是BASE
BASE就是为了解决关系数据库强一致性引起的问题可用性降低而提出的解决方案
BASE其实是下面三个术语的缩写:基本可用 Basically Availabe 软状态 Soft state 最终一致 Eventually consistent
他的思想是通过让系统放松对某一时刻数据一致性的要求来来换取系统整体伸缩和性能上改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,想要获得这些指标,我们必须采用另一种方法完成,这里BASE就是 解决这个问题的办法。 - 分布式和集群
分布式系统: 由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在不同的平台上,如:PC 工作站 局域网和广域网上等
简单来讲:
分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过RPC/RMI 之间通信和调用,对外提供服务和组内协作
集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问