介绍
NoSQL数据库试图提供某些功能,而更传统的关系数据库管理系统没有。 不论是用于保持简单的键-值对的时间较短长度为缓存目的,或使可能不容易处理使用关系数据库和结构化查询语言 (SQL)的数据的非结构化集合(例如集合) -它们是这里帮助。
在这种DigitalOcean文章中,我们将尽力为你介绍各种流行的NoSQL数据库管理系统,并解释它们的用途和功能,让你可以决定使用哪一个,或者如果他们甚至根据自己的应用需求- 在所有 。
词汇表
数据库管理系统
NoSQL数据库管理系统
- 基于键/值
- 基于列
- 基于文档
- 基于图表
3.基于关键/价值的NoSQL数据库管理系统
- 基于密钥/值的数据库
- 何时使用
4.基于列的NoSQL数据库管理系统
- 热门的基于列的数据库
- 何时使用
5.基于文档的NoSQL数据库管理系统
- 基于文档的数据库
- 何时使用
6.基于图形的NoSQL数据库管理系统
- 基于热门图形的数据库
- 何时使用
7.与关系型DBMS比较的NoSQL DBMS
- 何时使用NoSQL数据库
数据库管理系统
数据库是用于所有种类的不同信息(数据)的逻辑建模的存储空间。 除了无模式的数据库之外,每个数据库都具有为正在处理的数据提供结构的模型。 数据库管理系统是管理各种形状,大小和排序的数据库的应用程序(或库)。
注意:要了解更多关于数据库管理系统,看看我们的文章: 了解数据库 。
NoSQL数据库管理系统
在过去十年左右,由于各种原因,关系数据库管理系统已经被许多开发人员和系统管理员选择用于各种应用。 尽管不是非常灵活,许多RDBMS的强大性质允许创建,查询和使用复杂的数据库设置。 这对于许多需求是足够的,因为直到很久以前,不同的需求开始上升。
术语“NoSQL”是十年前创造的,有趣的是作为另一个关系数据库的名称。 然而,这个数据库背后有一个不同的想法:消除使用标准化的SQL。 在未来的岁月里,其他人捡起,继续发展这一思想,参照其他各种非关系型数据库作为NoSQL数据库 。
按照设计,NoSQL数据库和管理系统是无关系的(或无模式的)。 它们不是基于一个单一的模型(例如,RDBMS中的关系模型 ),并且每个数据库,这取决于它们的目标的功能,采用的不同的一个。
NoSQL数据库有几种不同的操作模型和功能系统:
- 键/值:
例如Redis,MemcacheDB等。
- 柱:
例如Cassandra,HBase等
- 文件:
例如MongoDB,Couchbase等
- 图形:
例如OrientDB,Neo4J等。
为了更好地理解每个数据库管理系统的角色和基础技术,让我们快速地讨论这四个操作模型。
基于键/值
我们将开始使用基于键/值的数据库管理的NoSQL建模之旅,因为它们可以被认为是NoSQL的最基本和主干的实现。
这些类型的数据库通过将键与值相匹配来工作,类似于字典。 没有结构或关系。 连接到数据库服务器(例如Redis的)后,应用程序可以声明一个键(例如the_answer_to_life
),并提供一个匹配值(例如42
其可随后通过供给键来检索相同的方式)。
键/值DBMS通常用于在执行例如CPU和存储器密集型计算之后快速存储基本信息,有时不是基本信息。 它们性能卓越,高效,通常易于扩展。
注意:当涉及到计算机, 字典通常是指一种特殊的数据对象。 它们构成具有与值匹配的各个键的集合数组。
基于列
基于列的NoSQL数据库管理系统通过提升基于键/值的简单性质来工作。
尽管它们在互联网上的复杂的理解图像,这些数据库通过创建一个或多个匹配记录的键/值对的集合来工作非常简单。
与关系数据库的传统定义模式不同,基于列的NoSQL解决方案不需要预结构化表来处理数据。 每个记录带有一个或多个包含信息的列,每个记录的每个列可以不同。
基本上,基于列的NoSQL数据库是二维数组,其中每个键(即行/记录)具有附加到它的一个或多个键/值对,并且这些管理系统允许保存和使用非常大和非结构化的数据(例如一个有吨信息的记录)。
当简单的键/值对不够时,通常使用这些数据库,并且必须存储具有大量信息的非常大量的记录。 实现基于列的无模式模型的DBMS可以非常好地扩展。
基于文档
基于文档的NoSQL数据库管理系统可以认为设法风暴采取了很多人的最新热潮。 这些DBMS以与基于列的DB类似的方式工作; 然而,它们允许实现更深的嵌套和复杂结构(例如,文档,文档内,文档内)。
文档克服了一个或两个级别的柱状数据库的键/值嵌套的约束。 基本上,任何复杂和任意的结构可以形成文档,其可以使用这些管理系统存储。
尽管它们具有强大的性质,并且能够通过单独的密钥查询记录,但是基于文档的管理系统与其他系统相比具有自己的问题和崩溃。 例如,检索记录的值意味着获取整批记录,同样用于更新,所有这些都会影响性能。
基于图表
最后,NoSQL数据库管理系统非常有趣的风格是基于图表的。
基于图的DBMS模型以与前面三个模型完全不同的方式表示数据。 它们使用树状结构(即图形),其中节点和边缘通过关系彼此连接。
类似于数学,由于它们链接和分组相关信息(例如,连接的人)的性质,使用这些类型的模型,某些操作更容易执行。
这些数据库通常由应用程序使用,由此需要明确的连接边界来建立。 例如,当您注册到任何类型的社交网络时,您的朋友与您的连接以及他们的朋友的朋友与您的关系更容易使用基于图的数据库管理系统。
基于键值的NoSQL数据库管理系统
键/值数据存储是高性能,易于使用,它们通常缩放很好。
基于密钥/值的数据库
一些流行的基于键/值的数据存储是:
- Redis:
具有可选持久性的内存K / V存储。
- Riak:
高度分布式,复制K / V存储。
- Memcached / MemcacheDB:
基于分布式内存的K / V存储。
何时使用
基于键/值的数据存储的一些流行的用例是:
- 缓存:
快速存储数据 - 有时频繁 - 未来使用。
- 排队:
一些K / V存储(例如Redis)支持列表,集合,队列等。
- 分发信息/任务:
它们可以被用来实现的Pub / Sub。
- 保留实时信息:
这就需要保持状态,甘蔗,可用K / V存储应用程序很容易。
基于列的NoSQL数据库管理系统
基于列的数据存储非常强大,可以可靠地用于保存非常大尺寸的重要数据。 尽管在作为数据的构成方面不是“灵活的”,但它们是高度功能和高性能的。
热门的基于列的数据库
一些流行的基于列的数据存储是:
- Cassandra:
基于BigTable和DynamoDB的基于列的数据存储。
- HBase:
Apache Hadoop的数据存储基于BigTable的想法。
何时使用
基于列的数据存储的一些常用用例是:
- 保留非结构化,非易失性信息:
如果大量的属性和值集合需要保存很长时间,基于列的数据存储极其方便。
- 缩放:
基于列的数据存储在本质上是高度可伸缩的。 他们可以处理大量的信息。
基于文档的NoSQL数据库管理系统
基于文档的数据存储对于保持大量彼此在结构方面高度可变的不相关的复杂信息是极好的。
基于文档的数据库
一些流行的基于文档的数据存储是:
- Couchbase:
基于JSON的Memcached兼容的基于文档的数据存储。
- CouchDB:
一个开创性的基于文档的数据存储。
- MongoDB:
一个非常流行和高功能的数据库。
何时使用
基于文档的数据存储的一些流行的用例是:
- 嵌套信息:
基于文档的数据存储允许您使用深层嵌套的复杂数据结构。
- JavaScript友好:
基于文档的数据存储的最关键的功能之一是它们与应用程序接口的方式:使用JS友好的JSON。
基于图的NoSQL数据库管理系统
基于图形的数据存储提供了与任何其他DBMS无法匹敌的非常独特的功能。
基于热门图形的数据库
一些流行的基于图形的数据存储是:
- OrientDB:
一种非常快速的图形和基于文档的混合NoSQL数据存储,用Java编写,具有不同的操作模式。
- Neo4J:
一个无模式,非常受欢迎和强大的基于Java图形的数据存储。
何时使用
基于图形的数据存储的一些流行的用例是:
- 处理复杂的关系信息:
如引言中所解释的,图形数据库使其非常高效且易于使用以处理复杂但关系的信息,诸如两个实体之间的连接以及与它们间接相关的各种程度的其他实体。
- 建模和处理分类:
图形数据库在涉及关系的任何情况下都很出色。 以关系方式建模数据和分类各种信息可以使用这些类型的数据存储很好地处理。
NoSQL DBMS与关系型DBMS的比较
为了清楚地了解NoSQL解决方案与关系数据库管理系统的区别,让我们创建一个快速比较列表:
何时使用NoSQL数据库
- 大小事项:
如果将使用非常大的数据集,那么来自NoSQL家族的许多DBMS更容易实现持续扩展。
- 速度:
NoSQL数据库通常更快-有时是非常迅速的-当它涉及到用 s 阅读 S也可以很快速的根据被查询的NoSQL数据库和数据类型。
- 无架构设计:
关系DBMS从开始就需要结构。 NoSQL解决方案提供了大量的灵活性。
- 自动(或简单)复制/缩放:
NoSQL数据库正在迅速发展, 今天他们正在积极构建的-厂商正在努力解决共同问题,其中之一显然是复制和缩放。 与RDBMS不同,NoSQL解决方案可以轻松扩展和使用(中)集群。
- 多种选择:
当谈到选择一个NoSQL数据存储时,有很多模型,正如我们已经讨论的,你可以选择从数据库管理系统中获得最大的利益,这取决于你的数据类型。