暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

四种NoSQL数据库,应该选择那个

这篇文章简单介绍下四种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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论