区分NoSQL数据库

NoSQL数据库都有哪些?在本文中,咱们将介绍不一样的NoSQL数据库的种类,并比较不一样NoSQL数据库之间的异同。在文末,咱们也将也将分享一些有用的资源,帮助初学者快速开始使用NoSQL。sql


 

NoSQL数据库之间的异同

市场上有多种不一样的NoSQL数据库,他们之间有一些关键的区别。数据库

  • 数据模型

咱们能够根据NoSQL数据库所支持的不一样数据模型对其进行分类。有些NoSQL数据库支持可扩展的数据存储,有些则支持面向文件的、键值对的或是可存储图的数据模型。架构

  • 开发接口APIs

不一样的NoSQL数据库的开发接口不尽相同。Cassandra支持Cassandra 查询语言 (CQL, aka Cassandra Query Language),一种相似SQL的语言。像是REST和GraphQL这样的接口则正在开发中。less

  • 架构

像是MongoDB一类的NoSQL数据库使用了和传统数据库同样的主从结构 (primary replica / secondary replica)。nosql

而Cassandra以及一些其余的NoSQL数据库则采用了点对点 (peer-to-peer) 的无主 (masterless) 架构,这意味着在一个数据库集群中,每个节点都是相同的。分布式

NoSQL数据库的架构很大程度上影响了其在持续运行时间、多地域数据复制以及性能的可预测性等方面的表现。ide

  • 数据分布模型

因为架构的不一样,NoSQL数据库对于数据的读、写和分布都不尽相同。函数

像是Cassandra这样的NoSQL平台,在集群中的每个节点均可以支持数据的读写,而且能够在多个数据中心和多个云供应商之间进行数据的复制或同步。性能

值得注意的是,一系列被称为“NewSQL”的数据库已经出现,它们采用了NoSQL数据库的分布式系统架构原理,同时试图提供传统关系型数据库管理系统 (RDBMS) 所使用的关系型语法。学习

这些数据库包括Google Cloud Spanner和Cockroach DB,它们有一系列与Cassandra及其它NoSQL数据库不一样的权衡取舍 (tradeoffs)。


 

NoSQL数据库的种类

NoSQL数据库支持多种不一样模式的数据存储和数据获取,NoSQL数据模型主要包括如下几类:

键值对数据库 (Key/value databases)

键值对数据库是最简单的几种NoSQL数据库之一,由带索引的键 (indexed key) 和其所对应的值 (value) 组成。

当给出一个键时,键值对数据库能够经过哈希机制快速找到与其相关联的值。哈希机制的时间复杂度为常数时间 (constant time),这意味着即便数据规模很大,键值对数据库依然能够维持高性能。

键值对的键能够是任意类别的对象,但一般是一个字符串 (string)。键值对的值通常来讲是模糊的BLOB类型(即:一串数据库不解读的字节)。

键值对数据库包括:Redis, Amazon DynamoDB, Riak以及Oracle NoSQL。一些像是Cassandra同样的表格式的NoSQL数据库也能够知足键值对的需求。

文档型数据库 (Document databases)

文档型数据库由基本的键值对存储模式而来,可是存储数据的“文档”则更为复杂一些。

每个文档都会被分配一个惟一的键 (key),用来调取文档。这些数据库是为了存储、调取和管理面向文档的信息(一般以JSON的格式存储)而设计的。

由于文档型数据库能够检阅文档内容,它们能够实现一些额外的调取处理。与要求静态模式(schema) 的关系型数据库管理系统 (RDBMSs) 相比,文档型数据库则有着由文档内容定义的、更为灵活的模式。

文档型数据库的例子包括MongoDB和CouchDB。注意:一些关系型数据库管理系统和非纯存储文档的NoSQL数据库也能够存储和查询JSON文档,其中包括了Cassandra。

表格型数据库 (Tabular databases)

表格型数据库用行和列来存储数据,可是与传统的数据库管理系统略有不一样。

这种数据库也被称为宽表存储 (wide-column stores) 或是分区行存储 (partitioned row stores),他们提供把数据库中属于同一个分区的相关行分到同一数据副本的能力,从而达到更快查询的目的。

与关系型数据库管理系统不一样的是,表格的格式并非严格固定的。例如Apache Cassandra™并不要求表格中全部的行的每一列都要有值。

与键值对和文档型数据库同样,表格型数据库也使用哈希函数来调取表格中的记录。

表格型数据库包括:Cassandra、HBase以及Google Bigtable。

图数据库 (Graph databases)

图数据库用一种图化的结构来理解数据间的关系,并依此存储数据。图中的一个顶点表明着一个数据项,图中的边则表明数据项之间的关系。

图数据库是为高度复杂且相互关联的数据而设计的,这些数据的复杂度和关联度超出了关系型数据库管理系统能够承载的关系类型和表格链接(JOIN)能力。

图数据库擅长于在大量数据集合中找出异同性 (commonalities and anomalies) 。

图数据库包括:DataStax Graph、Neo4J、JanusGraph以及Amazon Neptune。

多种模型并存的数据库 (Multi-model databases)

多种模型并存的数据库是NoSQL数据库和关系型数据库市场共同的趋势。这种数据库能够支持多种数据模型而不是单一集成的数据模型。

大多数数据库管理系统都围绕着单一数据模型组织、存储和修改数据。

相对地,多种模型并存的数据库可让企业利用不一样的数据模型存储系统中不一样部分的数据,从而简化应用开发的过程。


 

从何处开始

若是你正打算更多地学习了解Apache Cassandra,咱们有不少资源帮助你顺利起航。

  • DataStax for Developers:学习如何玩转Apache Cassandra™
  • DataStax Astra:经过DataStax Astra,一个基于Apache Cassandra的数据库及服务平台,可以帮你快速地创建云原生应用。

 

References:

https://www.datastax.com/nosql

相关文章
相关标签/搜索