本文的思维导图如下:
1、催生动因
1)可伸缩
2)成本
3)可扩展
4)可用性
传统的关系型数据库在上述表现较差,从而催生了nosql,nosql和关系型数据库互为补充
2、种类
1)键值对数据库,如Redis,Riak,Oracle Berkeley DB
2)文档数据库,如Mongodb,CouchDB,CouchBase
3)列族数据库,如Cassandra,HBase
4)图数据库,如Neo4j,Titan
3、术语
键值数据库的术语
建模相关:键,值,命名空间,无纲要的模型
架构相关:集群,环,复制,分区,分区键
实现相关:哈希函数,冲突,压缩
文档数据库的术语
建模相关:文档,集合,嵌入式文档,无纲要,多形
架构相关:集群,分区键,分区(垂直,水平)
列族数据库的术语
建模相关:键空间,行健,列族,列
架构相关:集群,分区键,分区,复制
实现相关:反熵,gossip协议,提示移交,提交日志,bloom过滤器,副本数量,一致性级别
图数据库的术语
元素相关:顶点,边,路径,自环
属性相关:同构性,阶与尺寸,度数(顶点距离),接近中心性(传播速度),中介性(图的瓶颈)
类型相关:无向,有向,流动网络,二分,多重,加权
4、技术选型参考
键值数据库的用途(适用于频繁读多并写入少量数据)
1)缓存关系型数据库中的数据,以改善程序性能
2)追踪web应用程序中容易发生变化的一些属性,如用来保存购物车中的货品
3)存储移动应用程序中的配置信息和用户数据信息
4)存放图像文件及音频文件等大型对象
文档数据库的用途(适用于读多写多的情况,存储比较大量的数据,数据富于变化)
1)读取量和写入量比较大的网站提供后端支持
2)对属性多变的数据类型进行管理,如管理产品信息
3)记录各种类型的元数据
4)使用JSON数据结构的应用程序
5)需要通过在大结构里面嵌套小结构来进行去规范化处理的应用程序
列族数据库的用途(适用于处理大量数据,多数据中心)
1)应用程序总是需要向数据库中写入数据
2)应用程序分布在地理位置不同的多个数据中心里面
3)应用程序能够允许副本之间出现短暂的数据不一致的现象
4)应用程序所使用的字段经常会变化
5)应用程序有可能要处理巨量的数据,如数百TB的数据
图数据库的用途(适用于处理相互连接的实体所构成的网络)
1)网络与IT的基础设施管理
2)身份及访问 管理
3)商务流程管理
4)推荐产品及服务
5)社交网络