NoSQL数据库也有四大家族,你知道嘛?

2017-05-17 238

NoSQL数据库的发展是由处理Facebook,Google和Amazon等大量数据的公司的需求引发的。NoSQL数据库越来越多地用于大数据和实时Web应用程序。

NoSQL数据库也称为“不仅仅是SQL”,是数据管理和数据库设计的一种方法,对于非常大的分布式数据集是有用的。NoSQL包含广泛的技术和架构,旨在解决关系数据库存在的可扩展性和大数据性能问题。当企业需要访问和分析大量非结构化数据或远程存储在云中的多个虚拟服务器上的数据时,NoSQL特别有用。

NoSQL技术最初是由Facebook,Google,Amazon等互联网领导者创建和使用的,他们需要可以在世界任何地方编写和读取数据的数据库管理系统,同时扩展和提供海量数据集和数百万用户的性能。

NoSQL数据库的优点
NoSQL数据库提供了与传统关系数据库相比的重要优势。NoSQL的一些核心功能主要如下(适用于大多数NoSQL数据库):

无模式(无Schema): NoSQL数据库无模式。在NoSQL数据库中存储数据之前,您不需要过多考虑设计模式。您可以开始编码,并且不知道数据库如何在内部存储和工作,来存储和检索数据。如果您需要高级功能,那么您可以在索引数据之前手动自定义模式。NoSQL与关系型数据库之间最大的区别在无模式。

可扩展性: NoSQL数据库支持水平缩放方法,可以轻松添加或降低容量,而无需修改商品硬件。这消除了在尝试扩展RDBMS时所需的手工分片的巨大成本和复杂性。

性能:某些数据库被设计为使用专门的存储和处理硬件才能发挥最佳性能。使用NoSQL数据库,您可以通过简单地添加便宜的服务器(称为商品服务器)来提高性能。这有助于组织继续提供可靠的快速用户体验,并具有可预测的投资回报率,从而再次添加资源,而无需手动分片。

高可用性: NoSQL数据库通常设计用于确保高可用性,并避免依赖于主节点和辅助节点的典型RDBMS架构带来的复杂性。一些“分布式”NoSQL数据库使用无主架构,可以在多个资源之间平均分配数据,以便即使在一个节点发生故障时,应用程序仍然可用于读取和写入操作。

全球可用性:通过在多个服务器,数据中心或云资源之间自动复制数据,分布式NoSQL数据库可以最小化延迟并确保用户所在位置的一致应用体验。另外一个好处是显着降低了手动RDBMS配置的数据库管理负担,解放了运营团队,使其有更多精力专注于业务逻辑。

NoSQL数据库的类型
已经创建了几种不同的NoSQL数据库,以支持特定需求和用例。这些数据库可以大致分为四种类型。

图1:基于列的家族

Key-Value 键值存储NoSQL数据库
从API的角度来看,KV存储是使用最简单的NoSQL数据存储。客户端可以获取密钥的值,为密钥分配值或从数据存储中删除密钥。该值是数据存储只存储的一个Blob,而不关心或知道内部的内容; 应用程序有责任了解所存储的内容。由于键值存储始终使用主键访问,因此它们通常具有很好的性能并且可以轻松扩展。密钥值数据库使用哈希表来存储唯一的密钥和指针(在某些数据库中也称为反向索引)。数据库中没有列类型关系; 因此,它的实现很容易。

用例:以下是一些常用的键值数据库用例:

然而,KV数据库不是每种用例的理想选择:

这个数据库的例子有Redis,MemcacheDB和Riak。

文档存储NoSQL数据库
与键值数据库类似,因为有一个键和一个值。数据存储为一个值。其关联的密钥是该值的唯一标识符。不同之处在于,在文档数据库中,该值包含结构化或半结构化数据。这种结构化/半结构化的值被称为文档,可以是XML,JSON或BSON格式。

用例:文档存储数据库适用于:

文档库NoSQL数据库不是正确的选择,如果您必须运行复杂的搜索查询,或者您的应用程序需要复杂的多操作事务。

文档存储NoSQL数据库的示例是MongoDB,Apache CouchDB和Elasticsearch。

列存储NoSQL数据库
在面向列的NoSQL数据库中,数据存储在以数据列为单位的单元格中,而不是数据行。列在逻辑上分组成列族。列系列可以包含几乎无限数量的列,可以在运行时或定义模式时创建。读取和写入是使用列而不是行完成的。列系列是通常一起访问的类似数据组。例如,我们经常在同一时间访问客户的名称和个人资料信息,而不是他们的订单信息。

将数据存储在关系型DBMS中的主要优点是快速搜索/访问和数据聚合。关系数据库将单个行存储为连续的磁盘条目。不同的行存储在磁盘的不同位置,而列数据库将对应于列的所有单元格存储为连续的磁盘条目,从而使搜索/访问更快。

每个列系列可以与RDBMS表中的行容器进行比较,其中键标识行,行由多个列组成。不同的是,各行不必具有相同的列,并且列可以随时添加到任何行,而不必将它们添加到其他行。

用例:开发人员主要使用列数据库:

如果您必须使用复杂的查询或查询模式经常更改,应避免使用列存储数据库。如果您没有建立数据库要求,也是我们在新系统中开始看到的趋势,还要避免这种情况。

列存储NoSQL数据库的示例是Cassandra和Apache Hadoop Hbase。

NoSQL图数据库
图形数据库基本上建立在Entity - Attribute - Value模型上。实体也称为具有属性的节点。描述数据如何与其他数据相关是非常灵活的方式。节点存储关于数据库中每个实体的数据,关系描述节点之间的关系,属性只是关系对端的节点。而传统的数据库存储在外键字段或连接表中每个可能的关系的描述,图形数据库允许在实际上定义任何关系。

用例:图形基础NoSQL数据库通常用于:

图形NoSQL数据库的示例是Neo4j,ArangoDB和OrientDB。

相关资讯

热门项目排行榜