这篇文章简单介绍下四种NoSQL类型的数据库,每种NoSQL类型解决特定场景的问题。

文档数据库:可以认为其是一个更灵活的“近”关系数据库 K/V数据库:提供K/V的快速查询场景 列式数据库:特别适合大数据场景下的聚合查询 图数据库:挖掘图节点之间的关系
1:文档数据库

存储数据非常灵活,半结构化的数据,你可以想象存储的就是JSON数据,同一个表中,每个文档记录的数据结构都可以不一样。
特性:
查询非常快 由于它结构性的原因,能够处理大量数据 索引非常灵活
优点:
模型简单且灵活 可扩展 存储格式开放 无需外键设计
缺点:
不适合存储关系数据 查询的键如果不是索引,则查询性能会下降 如果需要处理复杂的查询,可能需要使用MapReduce技术
2:K/V数据库

理论上是最简单的NoSQL数据库类型,数据以键/值对的形式存储。每个键都有一个值。
一些K/V数据库可能更偏向于使用内存进行数据存储和访问,以提供更快的读写性能,而另一些则可能更倾向于将数据持久化到磁盘存储,以降低成本并支持大规模数据存储。
特性:
一致性 事务 数据结构化 可扩展 查询特性
优点:
模型简单 可扩展 值可以是非常灵活的结构化内容 适合存储关联度不高的数据
缺点:
没有关系和外键的概念 不适合处理复杂的数据 缺乏扫描功能 不适合CRUD操作
典型的K/V数据库是Redis。
3:列式数据库

也叫宽表数据库,是一种以列而不是行存储数据的非关系型数据库。如果想对少量列进行分析时,可以直接读取这些列,而不需要消耗内存中的多余数据。它强调高效读取和检索数据。
优点:
支持存储半结构数据 可扩展 天然具备索引功能,因为它是按列存储数据的
缺点:
不适合存储关系数据
比如Cassandra就是非常优秀的列式数据库。
4:图数据库

图数据库存储面向图形的数据结构,主要包含节点,以及连接节点之间的边,具备很强的图算法能力,挖掘节点之间潜在的关系。
写过《图数据库neo4j简介》这篇文章,介绍典型的图数据库neo4j。
优点:
节点之间就包含了关系,所以原生支持索引 支持ACID 查询实时性很好,结构很灵活
缺点:
很难横向扩展,只能纵向扩展
相关文章:
《什么是NoSQL数据库》,方方面面大概介绍NoSQL,what、why、when、误区、how等等 《一张表解释NoSQL和SQL的区别》,通过表的形式比较NoSQL数据库和SQL数据库 《NoSQL数据库的优缺点》
文章转载自虞大胆的叽叽喳喳,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




