本文介绍非关系型数据库的基本概念,及其与关系型数据库直接的关联。
Nosql {#Nosql}
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
简介 {#简介}
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。。
RDBMS vs NoSQL {#RDBMS-vs-NoSQL}
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL) (SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性
NoSQL的优点/缺点 {#NoSQL的优点-缺点}
优点 {#优点}
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
缺点 {#缺点}
- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
ACID vs BASE {#ACID-vs-BASE}
| ACID | BASE | |----------------------|------------------------------------| | 原子性(Atomicity) | 基本可用(B asically Available) | | 一致性(Consistency) | 软状态/柔性事务(Soft state) | | 隔离性(Isolation) | 最终一致性 (Eventual consistency) | | 持久性 (Durable) | |
NoSQL 数据库分类 {#NoSQL-数据库分类}
| 类型 | 部分代表 | 特点 | |-------------|-----------------------------------------------------|---------------------------------------------------------------------| | 列存储 | Hbase Cassandra Hypertable | 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 | | 文档存储 | MongoDB CouchDB | 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 | | key-value存储 | Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis | 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) | | 图存储 | Neo4J FlockDB | 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 | | 对象存储 | db4o Versant | 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 | | xml数据库 | Berkeley DB XML BaseX | 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。 |
参考资料 {#参考资料}
文章链接:
https://www.zywvvd.com/notes/coding/dataset/nosql/nosql/