介绍
NoSQL(“Not Only SQL”的缩写)是传统数据库的替代品,专注于捕获和处理大量数据。
NoSQL数据库类型有哪些?有多种类型的 NoSQL 数据库,每种类型都有独特的数据建模方法和不同的用例,那么NoSQL数据库哪个更好?
NoSQL数据库有哪些?在本教程中,我们将简要概述多种 NoSQL 数据库类型,并为每种类型列出一些流行的示例,包括完整的流行的NoSQL数据库合集。
NoSQL 数据库类型
四种最流行的 NoSQL 数据库类型是键值数据库、基于文档的数据库、基于图形的数据库和基于宽列的数据库:
注意:有关每种数据库类型的更深入概述,请查看我们的NoSQL 数据库指南。
键值数据库
键值数据库以键和值对的形式组织数据,其中每个键都绑定到一个特定的对象,代表一个数据字段。提供密钥可让你查看存储在与其配对的对象中的数据。
这是最简单、最具扩展性的 NoSQL 数据库类型,可提供灵活性和改进的性能。
基于文档的 NoSQL 数据库
基于文档的数据库也使用它们存储到文档中的键值对。这些文档根据其内容和用途进一步分为集合。
这些数据库通常将数据存储为 JSON、XML、BSON 或 YAML 形式,通常不实现模式。这种方法使它们适用于需要灵活结构和快速添加和检索数据能力的情况。
基于图形的数据库
NoSQL数据库类型有哪些?基于图的数据库将数据表示为由边连接的节点(数据元素)的集合。在这种数据结构中,节点包含数据片段,而边定义它们之间的关系。
这种数据库类型通常用于表示不同数据条目之间的关系,例如社交网络上的朋友关系。用户可以进行复杂的查询,同时直接拉取多条数据。
宽列数据库
基于宽列的数据库将数据存储到单独的列中,类似于关系数据库中数据存储在表中的方式。与关系数据库不同,宽列数据库不使用预定义的键或列名。
这允许列名的变化,即使在同一个表中也是如此。将大量数据添加为新列或将现有数据分组到列族中也很容易。
对象数据库
对象数据库将数据元素存储为要在面向对象编程中使用的对象。它们旨在与 Python、Ruby、Delphi、Java 等编程语言一起使用。
网格和云数据库
网格和云数据库使用数据网格——一个处理可通过云访问的数据的系统网络。
这种类型的数据库适用于 SQL 和 NoSQL 数据模型,通常作为数据库即服务提供。
多模型数据库
NoSQL数据库类型有哪些?最后,多模型数据库结合了两种或多种不同数据库类型的特征。这使他们能够为其他数据库类型不适用的独特用例提供解决方案。
NoSQL 数据库列表
NoSQL数据库有哪些?以下是 2021 年的 NoSQL 数据库列表,按数据库类型分为几个部分:
键值数据库列表
Redis
Redis 用作将数据存储在内存中的数据结构服务器。这意味着 Redis 从主内存读取和修改数据,但它也具有内置的持久性。此功能允许将数据保存到磁盘,以便在系统重新启动时进行重建。
使用Redis的优点:
- 在内存中工作可实现高性能和灵活性。
- 支持许多不同的数据类型和编程语言。
- 易于扩展并支持自动分区。
注意:如果你对使用 Redis 感兴趣,请查看我们关于如何在 Ubuntu和Mac上安装Redis 的指南。
Aerospike
NoSQL数据库哪个更好?与 Redis 一样,Aerospike 是开源的内存中 NoSQL 数据库。Aerospike 因其高性能以及将交易数据与分析相结合的能力而针对在线零售用途进行了优化。
使用 Aerospike 的优点:
- 可靠的性能和极低的延迟。
- 良好的性价比使其适合小型企业。
Riak
Riak 将键值对存储在它称为“存储桶”的数据对象中。它支持广泛的数据格式,并强调数据的稳定性和可预测的性能。
使用 Riak 的优点:
- 键值对保存在三个节点的集群中,可以选择将数据复制到其他节点进行备份。
- 数据可以存储在内存中、磁盘上,或两者兼而有之。
- 多数据中心复制允许将你的数据备份到不同位置的数据中心。
Project Voldemort
LinkedIn 使用 Project Voldemort 作为他们的高可扩展键值存储解决方案。它作为分布式、容错和持久的哈希表工作。
使用伏地魔的优点:
- 数据在多个服务器上自动复制和分区。
- 存储和序列化插件可用。
- 良好的单节点性能。
基于文档的 NoSQL 数据库列表
MongoDB
MongoDB 是一个开源、敏捷的数据库,被不同行业的众多公司使用。它将文档存储为 JSON 对象,可以根据你的需要快速更改架构。
使用MongoDB的优点:
- 易于从单个服务器扩展到复杂系统。
- 始终如一地提供高性能。
- 由于复制和负载平衡,可靠性高。
注意:另外,请查看我们在 Ubuntu和CentOS上安装 MongoDB的指南。
Couchbase Server
流行的NoSQL数据库合集:Couchbase Server(最初称为 Membase)是一个开源的分布式数据库解决方案。主要设计意图是使用交互式应用程序将大量用户数据存储为 JSON 对象。
使用 Couchbase Server 的优点:
- 集群管理允许快速扩展。
- 可定制的复制,甚至在数据中心之间也是如此。
CouchDB
NoSQL数据库有哪些?CouchDB 是一个用 Erlang 编写的开源数据库。它提供了多版本并发控制(使用 ACID 语义)、多主复制和映射/减少等功能。
使用 CouchDB 的优点:
- 能够将数据复制到智能手机等设备以供离线访问。
- 保证最终一致性,提供可用性和分区容错性。
Elasticsearch
Elasticsearch 是一个分布式数据库,可作为搜索引擎使用模糊匹配进行全文搜索。它属于双重许可:某些部分包含在服务器端公共许可证中,而其他部分则属于专有的弹性许可证类别。
使用 Elasticsearch 的优势:
- 你可以通过将 Elasticsearch 与其他解决方案相结合来扩展功能,例如 Logstash(数据收集和日志解析)、Kibana(分析)和 Beats(数据传输)。
- 具有分面和渗透的可扩展实时搜索。
基于图形的数据库列表
Neo4J
Neo4J 是一个用 Java 构建的基于开源图形的数据库,其图形数据平台的一部分提供了额外的功能。它使用Cypher 查询语言提供对比其他数据库类型更广泛的查询的访问,同时保持高性能。
使用 Neo4J 的优势:
- 用于解决需要重复网络探测的问题。
- 便于分析数据对象及其关系。
OrientDB
NoSQL数据库哪个更好?OrientDB 是一个开源的多模型数据库系统,非常强调图数据库模型。它可以部署在任何操作系统上,拥有广泛的功能,可以通过升级到企业版进一步扩展。
使用 OrientDB 的优点:
- 基于用户和角色的强大安全系统。
- 免费的 Udemy 课程易于入门,通过 Stack Overflow 提供广泛的用户支持。
- 易于将其他关系数据库导入 OrientDB。
RedisGraph
RedisGraph 是 Redis 的图数据库模块。它基于 Property Graph 模型并使用Cypher 查询语言将查询转换为线性代数表达式。
使用RedisGraph的优点:
- 易于与现有 Redis 数据库结合。
- 允许添加节点标签和关系类型。
InfiniteGraph
InfiniteGraph 是一个分布式数据库,专注于执行复杂的对象查询。它用于开发解决处理复杂大数据集的图形问题的 Web 或移动应用程序。
使用无限图的优点:
- 能够处理需要高性能的复杂或并行查询。
- 具有灵活一致性的备份(从 ACID 到轻松)。
基于列的宽数据库列表
Cassandra
NoSQL数据库有哪些?Apache Cassandra是一种免费的开源数据库解决方案,旨在处理大量数据负载,同时将对性能的影响降至最低。由于 Cassandra 的高速和可用性,Twitter、Netflix 和 Reddit 都使用它。
使用 Cassandra 的优点:
- 异步、无主复制可确保防止数据丢失而不会造成延迟。
- 跨多个数据中心轻松扩展,无需停机。
注意:有关更多信息,请参阅我们在 Ubuntu和Windows上安装 Cassandra的指南。
Azure Cosmos DB
流行的NoSQL数据库合集:Microsoft 的 Azure Cosmos DB 是一种专有数据库解决方案。该产品旨在全球分布,以帮助管理大规模、水平可扩展的数据库。
使用 Cosmos DB 的优势:
- 与其他 Microsoft Azure 服务相结合以扩展功能。
- 多个数据中心的自动分区。
HBase
HBase 旨在处理具有数十亿行和数百万列的超大型数据库。它运行在Hadoop 分布式文件系统 (HDFS)之上,并允许 Hadoop 像 Google 的 Bigtable 一样工作。
使用 HBase 的优点:
- 允许在 PB 级数据上实现大吞吐量。
- 启用对数据库的随机、实时读/写访问。
Accumulo
Apache Accumulo 是另一种构建在 Hadoop 上并基于 Google 的 Bigtable 的解决方案。它通过添加基于单元的访问控制和服务器端编程等功能改进了 Bigtable 设计。
使用 Accumulo 的优点:
- 你可以添加单元格级别的安全标签,并将不同安全级别的数据存储在同一张表中。
对象数据库列表
ObjectDB
NoSQL数据库哪个更好?ObjectDB 是用于 Java 开发的对象数据库解决方案,内置对 Java API 的支持。它在客户端-服务器或嵌入式模式下工作。
使用 ObjectDB 的优点:
- 支持各种平台和操作系统。
- 使用 JDO 和 JPA 查询语言。
Ninja Database Pro
Ninja Database Pro 具有高自动化水平,易于初学者使用。它提供了一种强大且快速的方法来管理数据库中的数据对象。
使用 Ninja Database Pro 的优势:
- 可以处理复杂的数据对象,如双链表、多维数组和字典。
- 符合 ACID,内置 AES 加密。
NeoDB
NeoDB 将数据构建为类似于大树的对象网络。这个网络称为节点空间,它关注节点(对象)、它们的关系和它们的属性。
使用 NeoBD 的优势:
- 适合处理半结构化数据,几乎没有强制性但有很多可选属性。
Objectivity/DB
Objectivity/DB 是一个分布式数据库,允许你使用 C++、C#、Java 或 Python 中的数据对象,而无需将它们转换为表。
使用客观性/数据库的优点:
- 在你选择的操作系统上使用任何受支持的编程语言。
- 它的架构使其成为网格计算环境的理想选择。
云和网格数据库列表
Oracle Coherence
Oracle Coherence 是基于 Java 的分布式缓存和内存中数据网格。它在集群应用程序中管理数据,这消除了每次需要管理数据时直接查询数据库的需要。
使用 Oracle Coherence 的优势:
- 提供高可用性、可扩展性和低延迟。
Infinispan
NoSQL数据库有哪些?Infinispan 是一个用 Java 编写的开源数据网格解决方案。Infinispan 可以作为库嵌入到 Java 应用程序中,非 Java 应用程序可以通过 TCP/IP 使用它。
使用 Infinispan 的优势:
- 高度可扩展,同时保持可用性。
- 其可插拔架构允许将数据保存到文件系统或其他数据库管理器。
Hazelcast
Hazelcast 是一个开源数据网格。它基于 Java,可以在本地、虚拟、云端或 Docker 容器中运行。
使用 Hazelcast 的优点:
- 允许水平扩展存储和处理能力。
多模型数据库列表
ArangoDB
NoSQL数据库哪个更好?ArangoDB 是一个免费的开源数据库管理器,支持键值、文档和图形数据库模型。
使用 ArangoDB 的优点:
- AQL 查询语言允许你使用单个查询针对不同的数据库类型。
- 使用单击式集群部署选项作为分布式集群工作。
流行的NoSQL数据库合集结论
NoSQL数据库类型有哪些?NoSQL数据库有哪些?阅读本文后,你应该对最流行的 NoSQL 数据库及其主要功能有一个全面的了解。这些列表可帮助你找到最适合你需求的数据库解决方案。
请注意,这不是一个完整的列表,市场上还有更多的解决方案。