NoSQL指的是非关系型数据库,NoSQL有时也称作Not Only SQL的缩写,主要是区别于传统关系型数据库的数据管理系统的统称。
NoSQL用于超大规模的数据存储,这些类型的数据存储没有固定的模式,非常容易横向扩展。
RDBMS vs NoSQL
数据库类型 | RDBMS | NoSQL |
---|---|---|
各自优点 | * 高度组织化结构化数据 * 结构化查询语言(SQL) * 数据操纵语言、数据定义语言 * 数据和关系都存储在单独的表中 * 基础事务、严格的一致性 |
* 没有声明性查询语言 * 没有预定义的模式 * CAP定理满足最终一致性 * 非结构化和不可预知的数据 * 高性能、高可用和可伸缩性 * 键值对存储、列存储、文档存储、图形数据库 |
NoSQL数据库分类
类型 | 部分代表 | 特点 |
---|---|---|
键值对存储 | Redis RocksDB MemcacheDB |
可以通过key快速的查询到value,value的格式比较宽泛 |
列存储 | HBase Cassandra ClickHouse |
按列存储数据,最大的特点就是方便存储结构化和半结构化数据,针对一列或某几列的查询有非常大的IO优势 |
文档存储 | MongoDB CouchDB |
文档存储一般使用类似json的存储格式,存储的内容是文档型。这样就可以针对某些字段建立索引,实现关系型数据库的部分功能 |
图存储 | Neo4j FlockDB |
图形关系用来描述业务对象之间复杂的关系最为合适,如果用关系型数据库一来性能低下,二来设计使用不方便 |
对象存储 | db4o Versant |
通过类似面向对象语言的语法操作数据库,通过对象的方式存储数据 |
XML数据库 | BaseX XMLDB |
高效的存储XML数据,并支持XML的内部查询语法,例如XQuery、XPath |
CAP定理
cap-theoram
图片引用自网络,如有侵权请联系删除