NoSQL数据库的四大类型和三大理论基石
NoSQL数据库较好地满足了大数据时代的各种非结构化或半结构化数据的存储需求。
NoSQL的四大类型
1. 键值数据库
相关产品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
应用:内容缓存
优点:扩展性好、灵活性好、大量写操作时性能高
缺点:无法存储结构化信息、条件查询效率较低
使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)
2. 列族数据库
相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS
应用:分布式数据存储与管理
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Facebook(HBase)
3. 文档数据库
相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
应用:存储、索引并管理面向文档的数据或者类似的半结构化数据
优点:性能好、灵活性高、复杂性低、数据结构灵活
缺点:缺乏统一的查询语言
使用者:百度云数据库(MongoDB)、SAP(MongoDB)
4. 图形数据库
图形数据库-使用图作为数据模型来存储数据。
相关产品:Neo4J、OrientDB、InfoGrid、GraphDB
应用:大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱
缺点:复杂性高、只能支持一定的数据规模
使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)
NoSQL 数据库的三大理论基石
- CAP
- BASE
- 最终一致性
CAP
- C(Consistency,一致性)在分布式环境下,多点的数据是一致的。
- A(Availability,可用性)能快速获取数据,可以在确定的时候内返回响应结果。
- P(Tolerance of Network Partition,分区容忍性)当出现网络分区的情况下(也就是系统中的一部分节点无法和其他节点进行网络通信),分离的系统也能够正常运行。
对于Web 2.0网站而言,可用性与分区容忍性优先级要高于数据一致性(如微博、微信的信息等等),网站或app一般会尽量朝着AP方向设计。
在采用AP设计时,也不是完成放弃一致性,只是采用最终一致性。
BASE
BASE的基本含义:Basically Available(基本可用),Soft-state(软状态),Eventual consistency(最终一致性)
最终一致性
关系型数据库通常实现强一致性,也就是一旦一个更新完成,后续的访问操作都可以立即读取到更新过的数据。而对于弱一致性而言,则无法保证后续访问都能够读到更新后的数据。
最终一致性的要求比较低,只要一段时间后,能够访问到更新后的数据即可。