什么是NoSQL
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系
型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
为什么使用NoSQL
今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人
信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户
数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数
据。
NoSQL的优点/缺点
优点:
高可扩展性
分布式计算
低成本
架构的灵活性,半结构化数据
没有复杂的关系
缺点:
没有标准化
有限的查询功能(到目前为止)
最终一致是不直观的程序
RDBMS 和NoSQL的区别
NoSQL
代表着不仅仅是SQL
没有声明性查询语言
没有预定义的模式
键-值对存储,列存储,文档存储,图形数据库
最终一致性,而非ACID属性
非结构化和不可预知的数据
CAP定理——
“CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。”
高性能,高可用性和可伸缩性
RDBMS
高度组织化结构化数据
结构化查询语言(SQL)
数据和关系都存储在单独的表中。
数据操纵语言,数据定义语言
严格的一致性
基础事务
NoSQL数据库四大家族
键值(Key-Value)存储数据库
特点——
键值数据库就想传统语言中使用的哈希表,通过key添加、查询或者删除数据
优点——
查询速度更快
缺点——
数据无结构化,通常只被当做字符串或者二进制数据存储
应用场景——
内容缓存、用户信息比如会话、配置信息、购物车等等,主要用于处理大量数据的高访问负载
NoSQL代表——
Redis、Memcached...
文档型数据库
特点——
文档数据库将数据以文档的形式储存,类似JSON,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。
优点——
数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
应用场景——
日志、web应用等
NoSQL代表——
MongoDB、CouchDB...
列数据库
特点——
列存储数据库将数据存储在列族中,将多个列集合成一个列族,键仍然存在,但是他们的特点是指向多个列。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中
优点——
列存储查找速度快,可扩展性强,更容容易进行分布式扩展,适用于分布式的文件系统,应对分布式存储的海量数据
缺点——
查询性能不高,缺乏统一的查询语法
应用场景——
日志、分布式文件系统(对象存储)、推荐画像、时空数据、消息/订单等等。
NoSQL代表——
Cassandra、HBase....
图形(Graph)数据库
特点——
图形数据库允许我们将数据以图的方式存储
优点——
图形相关算法,比如最短路径寻址,N度关系查找等
缺点——
很多时候需要对整个图做计算才能提出需求的信息,分布式的群集方案不好做,处理超
级节点乏力,没有分片存储机制,国内社区不活跃
应用场景——
社交网络,推荐系统等,专注于构建关系图谱
NoSQL代表——
Neo4j、Infinite Graph...
Comments | NOTHING