NoSQL数据库都有哪些?在本文中,我们将介绍不同的NoSQL数据库的种类,并比较不同NoSQL数据库之间的异同。在文末,我们也将也将分享一些有用的资源,帮助初学者快速开始使用NoSQL。
NoSQL数据库之间的异同
市场上有多种不同的NoSQL数据库,他们之间有一些关键的区别。
- 数据模型
我们可以根据NoSQL数据库所支持的不同数据模型对其进行分类。有些NoSQL数据库支持可扩展的数据存储,有些则支持面向文件的、键值对的或是可存储图的数据模型。
- 开发接口APIs
不同的NoSQL数据库的开发接口不尽相同。Cassandra支持Cassandra 查询语言 (CQL, aka Cassandra Query Language),一种类似SQL的语言。像是REST和GraphQL这样的接口则正在开发中。
- 架构
像是MongoDB一类的NoSQL数据库使用了和传统数据库一样的主从结构 (primary replica / secondary replica)。
而Cassandra以及一些其他的NoSQL数据库则采用了点对点 (peer-to-peer) 的无主 (masterless) 架构,这意味着在一个数据库集群中,每一个节点都是相同的。
NoSQL数据库的架构很大程度上影响了其在持续运行时间、多地域数据复制以及性能的可预测性等方面的表现。
- 数据分布模型
由于架构的不同,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