NoSQL数据尝试着提供那些关系数据库所不能提供的功能,无论是为了存储简单的键值对(key-value),更短的时间长度,高速缓存,还是保持数据的非结构化集合(比如collections),这些都是在关系型数据库和SQL(StructuredQueryLanguage)中很难实现的。
换句话说,也就是NoSQL数据库的存在意义在于提供传统关系数据库管理系统所不具备的特定功能。无论是负责承载简单的键-值对存储以实现短期缓存,抑或是处理传统数据库及结构化查询语言(简称SQL)所难以消化的非结构化集合,NoSQL都能为我们提供巨大的帮助。
在今天的文章中,我们将介绍各种流行的NoSQL数据库系统,介绍他们的作用以及功能,因而帮助你,根据你的易用系统的需求来决定选择哪一个NoSQL数据库。
术语表
1.数据库管理系统
2.NoSQL数据库管理系统
①基于键/值
②列
③基于文档
④基于图形
3.基于键/值的NoSQL数据库管理系统
①主流键/值数据库
②适合用途
4.基于列的NoSQL数据库管理系统
①主流列式数据库
②适合用途
5.基于文档的NoSQL数据库管理系统
①主流文档数据库
②适合用途
6.基于图形的NoSQL数据库管理系统
①主流图形数据库
②适合用途
7.NoSQL数据库管理系统与关系数据库管理系统之对比
①NoSQL数据库适合用途
数据库管理系统
数据库属于逻辑性建模存储空间,为各种不同的信息(数据)提供逻辑上模型化的存储空间,负责承载各类不同信息(即数据)。每套数据库(除了无模式数据库以外)皆拥有一套模型,负责提供处理数据所必需的结构。数据库管理系统属于应用程序(或者库),旨在管理不同类型、规模以及形式的数据库方案。
NoSQL数据库管理系统
在过去的十年左右中,关系数据库管理系统因为各种各样的理由已被开发人员和系统管理员选择用于各种各样的应用程序中。尽管并不完全灵活,许多关系数据库管理系统的强大的性质允许复杂的数据库体制被创建,查询和使用。这甚至超过许多需求的要求,直到不久以前,不同的需求开始上升才发生逆转。
术语“NoSQL”一词是在十年前被创造的,有趣的是,它是作为另一个关系数据库的名称。然而,该数据库在背后有一个不同的想法:消除标准化的SQL的使用。在接下来的几年,别人拾起并通过借鉴其他各种非关系型数据库继续发展了这一思想成为NoSQL数据库。
从设计上,NoSQL数据库和管理系统都是非关系型(也称非范式型)的。它们并非基于同一种模型(如关系型数据库的关系模型),而是每种数据库依据其不同的功能目标,选择了不同的模型。
NoSQL数据库包含以下几种不同的可选模式及功能系统:
①键/值:
例如Redis、MemcacheDB等。
②列式:
例如Cassandra、Hbase等。
③文档:
例如MongoDB、Couchbase等。
④图形:
例如OrientDB、Neo4J等。
为了更好地理解每种数据库管理系统的角色定位与底层技术,下面对这四种可选模式进行逐一剖析。
①键/值数据库
我们将要开始我们的NoSQL模型之旅,它是基于键值的数据库管理系统,因为可以把它视为是实现NoSQL的基础和骨架。
该类型的数据库通过关键字与值的映射来工作,有点类似字典。没有结构也没有关系。连接到数据库服务器(例如Redis)以后,应用程序陈述一个关键字如the_answer_to_life并提供也这对应的值如42,这个值随后可以通过提供的关键字以相同的方式搜索。
键值数据库通常用于快速的存储基本信息,有时是一些处理过的非基本的,例如CPU和内存密集的计算。它们的表现非常好,性能高,且通常易于扩展。
备注:在计算机当中,字典指的通常是一种特殊的数据对象。其由大量集合数组构成,各数组中包含独立的键与值。
②列式数据库
基于列的NoSQL数据库管理系统通过提升基于键值的简单本质来工作。
虽然在互联网中它们难于理解,但是这些数据库的工作机制相当的简单,通过创建一个或者多个键值对的集合来与记录相匹配。
不像传统的关系数据库定义了模式,基于列的NoSQL解决方案不需要预定义表结构就可以处理数据。每条记录有一列或者多列,这些列包含了信息,每个记录的每列都可能是不相同的。
基本上,基于列的NoSQL数据库就是个二维数组,每个键(即行/记录)都连接有一个或多个键/值对,这些管理系统允许非常巨大和非结构化的数据被保存和使用(例如有非常多信息的记录)。
这些数据库通常用在当必须存储大量信息记录,简单的键/值对不足以应对时。基于列实现的数据库管理系统,模式自由的模型,扩容性非常好。
③文档数据库
基于文档的NoSQL数据库系统,就像一波瞬间席卷了许多人的最新潮流。这类数据库系统工作原理与基于列的数据库类似;然而,它们支持更深层的嵌套,能得到复杂的结构(例如,文档包含在一个文档里,而这个文档又包含在另一个文档里)。
文档克服了基于列的数据库中键/值嵌套只能有一级或两级的限制。基本上,无论多么复杂、无论什么形态的结构都能形成一个文档,而文档就可以用这类数据库系统来储存。
尽管它们有这样强大的特性,并且支持以独立的键来查询记录,基于文档的数据库系统相比其他系统仍然有自己的问题和不足之处。例如,检索记录中的一个值就需要牵扯出整个记录,update也是如此,而这都会严重地影响性能。
④图形数据库
最后来看看NoSQL数据库系统中的奇葩——基于图形的系统。
基于图形的数据库系统模型表示数据的方式与上文提到的三种模型截然不同。他们使用树形的结构(也就是所说的“图形”),包括结点和通过关系(relation)相互连接的边。
与数学类似,某些特定操作在这类模型上会格外简单。这要感谢树形结构能链接信息、将相关信息(例如相关联的人)分组的本质。
这类数据库通常应用于关系(connection)需要建立明确边界的场景。例如,当你注册随便一个社交网络时,你朋友与你的关系,和他们朋友的朋友与你的关系,使用基于图形的数据库系统来处理会简单很多。
键/值NoSQL数据库管理系统
键/值数据存储拥有出色的性能表现、易用性及可扩展能力。
主流键/值NoSQL数据库管理系统
部分主流键/值数据存储方案包括:
①Redis:
内存内键/值存储且提供持久性选项。
②Riak:
高分布式副本型键/值存储方案。
③Memcached/MemcacheDB:
基于键/值存储机制的分布式内存方案。
合适用途
合适的用途包括:
①缓存:
快速存储数据以备未来使用。
②队列:
部分键/值存储机制(例如Redis)支持列表、集合以及队列等功能。
③分发信息/任务:
可用于实现Pub/Sub。
④保存实时信息。
需要保持状态的应用可以利用键/值存储轻松实现。
列式NoSQL数据库管理系统
列式数据存储方案非常强大且能够用于保存规模庞大的重要数据。尽管在“灵活性”方面有所欠缺,但其主要卖点在于高功能性与高性能水平。
主流列式数据库包括:
①Cassandra:
基于BigTable与DynamoDB的列式数据存储方案。
②HBase:
源自BigTable设计灵感且面向ApacheHadoop的数据存储方案。
合适用途包括:
①保存非结构化非易失性信息:
如果需要对大量任意集合及值进行长期保存,那么列式数据存储方案将是最好的选择。
②扩展能力:
列式数据存储方案天然拥有出色的可扩展能力,且能够处理总量极为庞大的信息。
文档NoSQL数据库管理系统
文档数据存储方案非常适用承载大量不相关且结构差别很大的复杂信息。
主流文档数据库包括:
①Couchbase:
基于JSON且与Memcached相兼容的文档数据存储方案。
②CouchDB:
一款突破性的文档数据存储方案。
③MongoDB:
一款极具人气且功能丰富的数据库选项。
合适用途包括:
①嵌套信息:
文档数据存储方案允许大家处理深层嵌套的复杂数据结构。
②Javascript友好性:
文档数据存储方案的最大特色在于其与应用程序的对接方式:采用具备JavaScript友好性的JSON。
图形NoSQL数据库管理系统
图形数据存储方案能够提供与前几种DBMS完全不同的功能。
主流图形数据库包括:
①OrientDB:
一款速度很快的图形与文档混合NoSQL数据存储方案,由java编写而成且拥有多种操作模式。
②Neo4J:
一款无模式高人气Java图形数据存储方案。
合适用途包括:
①处理复杂的关系型信息:
正如之前提到,图形数据库能够极为高效地轻松地处理复杂的关系型信息,例如两个条目间的对接以及与其相关联的其它更多条目。
②分类的建模与处理:
图形数据库擅长处理任何涉及关系的状况。数据建模以及立足于关系实现信息分类都属于此类情况。
NoSQLDMBS与关系DBMS之比较
为了更加明确地了解NoSQL解决方案与关系数据库管理系统的不同,让我们对二者进行比较:
NoSQL数据库合适用途
①规模是关键:
如果需要处理大量数据集,那么可扩展能力更强的NoSQL家族将更胜一筹。
②速度:
NoSQL数据库通常速度更快,特别是在写入层面。其选取速度通常也非常出色,且具体取决于NoSQL数据库本身以及所查询数据的类型。
③无模式设计:
关系数据库管理系统从一开始就需要结构化。NoSQL解决方案提供了大量的灵活性。
④自动(或者轻松)实现复制/规模伸缩:
NoSQL数据库正在迅速增长,今天他们正在积极建立-厂商试图解决共同的问题,其中一个显然是复制和缩放。不像关系数据库管理系统那样,NoSQL解决方案可以很容易的在簇上扩容和工作。
⑤多种选项:
当来选择一个NoSQL数据存储时,正如我们已经讨论的,有多种模式,你可以从中选择获得最满意的数据库管理系统——这取决于你的数据类型。
小编结语:
更多内容尽在课课家教育!
¥48.00¥180.00
¥48.00¥180.00
¥29.90
¥199.00
¥199.00
¥798.00