理论教育 NoSQL数据库的类型及特点

NoSQL数据库的类型及特点

时间:2023-06-14 理论教育 版权反馈
【摘要】:目前针对异构数据有效的解决方法就是将其元数据存入NoSOL数据库,并用可塑模式描述,对它的查询使用基于关键字的查询方法。

NoSQL数据库的类型及特点

大数据应用需要实时的预测分析、个性化定制、动态定价、优质客户服务、欺诈检测和异常检测等。这些对数据库的需求可概括为:①简单的数据响应但必须确保高可用性;②内置支持版本控制和数据压缩;③查询执行必须接近于实时响应;④多种查询方法能支持非常复杂的Ad-hoc查询;⑤支持交互式查询;⑥并行处理能力。这些特点对数据库的需求也不尽相同,如表2-3所示,不同NoSQL系统的功能和特性差异也较大,因此对它的选择主要还是要考虑不同的应用需求。总的来说,NoSQL所能提供的特性无外乎可以分为六大方面,即可塑的数据模式、弹性查询、操作简便、社区化、可扩展性和低代价。

表2-3 典型NoSQL系统的特性

1.可塑的数据模式

在众多当代应用中,数据模型往往不是固定的,如广告推荐系统的用户兴趣信息项往往不是固定的。管理这类数据使用关系数据库的“先有模式,后有数据”的方式是不可行的。一个单一模式的改变,如增加一列,在一个复杂的环境里可能就会花费数周时间。相反NoSOL系统在设计之初就已经实现了可塑模式,如基于文档的数据模型或键-值对模型等。在这些系统中,用户可以先加载数据,然后再定义模式。

2.弹性查询

有了可塑模式,上层查询就要发生变化,这种变化就是弹性数据库的查询。“免格式”(free-form)查询依赖于正则表达式和关键字,而该类查询方法非常适合NoSQL系统检索异构数据集的元数据。在理想世界中,人们曾期待适用一切的数据模式,当“碰见”异构数据之后,发现这仅仅是一个愿望。目前针对异构数据有效的解决方法就是将其元数据存入NoSOL数据库,并用可塑模式描述,对它的查询使用基于关键字的查询方法。

3.操作简便

众所周知,传统单一节点的数据处理系统管理起来比较困难。当底层数据库增大且查询变为实际执行任务时,对它的调优将变得非常困难,因为数据规模的增大将导致可用性的降低。此外,大多数现代数据处理系统都部署在商业集群上,而集群组件的管理也比较困难,因为在应用程序中需要处理集群组件故障的情况。因此,高可用性在某种意义上比性能更为重要。然而高可用性在多数据中心环境下变得越来越难以保证,为了保证一个应用的高可用性,最好的办法是将这个应用部署在整个数据中心,而不是某些节点上。这些需求对集群的设置提出了很高的要求,但NoSQL系统需要这样的高可用性,以保证操作简单。

4.社区化

现在很多NoSQL数据库都是开源的,如HBase,而开源促成了其强大的社区,而强大的社区会不断促进系统改进与升级。NoSQL系统也尝试维持一个高活跃度的用户社区,而社区的管理是松散的,大家一般交流会很频繁但是很少制订有规律的计划。

5.可扩展性

NoSQL系统为了满足大数据的存储,必须是高可扩展的,而高可扩展性体现于在分布式集群上存储和管理数据。通过增加商用服务器,集群是很容易横向扩展的。例如,一些使用MapReduce具有大规模并行能力的集群可以通过扩展集群来达到性能要求。

6.低代价

传统数据库软件一般会卖给用户一个序列号,安装程序可以在其官网下载。这种模式已经不适合当前的发展,首先,大数据时代,企业乐见于数据的增长快过当前数据创造价值的增长,如数据规模增长了一倍,但收益几乎没有变化。如果管理数据的软件成本非常高,势必严重阻碍公司的发展。其次,很多NoSQL数据库都是开源的,可以免费使用,如果进一步为了维护方便,可以以“云”的形式直接购买NoSQL服务,这样的成本比使用传统的关系型数据库要低得多。(www.daowen.com)

下面将简单介绍几种典型的NoSQL系统。

1.文档数据库(MongoDB)

MongoDB已经超越部分传统关系型数据库,如PostgreSQL、DB2,是目前在IT行业非常流行的一种非关系型数据库,其灵活的数据存储方式备受当前IT从业人员的青睐。MongoDB很好地实现了面向对象的思想,在MongoDB中每一条记录都是一个文档对象。MongoDB最大的优势在于所有的数据持久操作(CRVD)都无须开发人员手动编写SQL语句,直接调用方法就可以轻松实现CRUD操作。MongoDB 2.8的最新版本已经实现了对Wired Tiger存储引擎的支持,提供了文档级别的锁,从而使得性能、压缩性和可用性都得到了极大的提升。

2.列存储数据库(Base)

HBase是一个分布式的、面向列的开源数据库,该技术来源于Fay Chang所撰写的Google论文——“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同点是HBase是基于列的而不是基于行的模式。

3.列存储数据库(Cassandra)

Cassandra是一套开源分布式非关系数据库系统。它最初由Facebook开发,用于存储收件箱等简单格式数据,集Google Bigtable的数据模型与Amazon Dynamo的完全分布式的架构于一身。2008年,Facebook将Cassandra开源。此后,由于Cassandra具有良好的可扩展性,所以被Digg、Twitter等知名Web 2.0网站所采纳,成为一种流行的分布式结构化数据存储方案。Cassandra是一个混合型非关系的数据库,是介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最“像”关系数据库的。数据存储采用bjson格式,因此可以存储比较复杂的数据类型。

4.键-值对数据库(Redis)

Redis是一个高性能的键-值对数据库。Redis的出现很大程度补偿了之前Memcached(一种分布式缓存系统)这类键-值对存储系统的不足,在部分场合可以对关系数据库起到很好的补充作用。目前它已经取代传统的Memcached缓存系统,成为最为流行的键-值对缓存系统。相比Memcached系统,Redis也是一个键-值对系统,但是它支持存储的Value类型相对更多,包括字符串(string)、链表(list)、集合(set)、有序集合(sorted set)和散列类型(hash)。这些数据类型都支持进栈/出栈(push/pop)、增加/删除(add/remove)、取交集/并集/差集及更丰富的操作,而且这些操作都是原子性的。Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。同步功能对读取操作的可扩展性和数据冗余很有帮助。

表2-4为上述NoSQL数据库功能与特性之间的对比。

表2-4 NoSQL数据库详细对比

续表

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈