漫谈大数据技术:NoSQL数据库

Posted HIT产品技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漫谈大数据技术:NoSQL数据库相关的知识,希望对你有一定的参考价值。

1.关系型数据库与NoSQL数据库

关系型数据库是基于关系模型设计构建,其基础数据结构是二维表。数据库所处理对象的是有组织、结构化数据,数据实体以及数据之间的关系分别存储在数据表中。数据查询语言是SQL,数据处理严格遵循ACID原则。关系型数据库功能强大,提供约束以及连接查询功能。

NoSQL数据库是一种非关系型数据库,不支持声明性查询语言,不支持预定义的数据模式。数据处理方面,支持最终一致性,遵循BASE原则,而不是遵循ACID原则。支持非结构化和非预知数据,遵循CAP定理。关注高性能、高可用性和高可扩展能力。

(1)ACID原则

关系型数据库必须遵循ACID原则,也就是原子性、一致性、独立性和持久性。

Atomic/原子性:事务作为数据库处理的一个逻辑单位,必须具有完整性。也就是说,一个事务所涉及的多个数据操作,要么全部完成,要么全部失败,不允许出现部分成功的情况出现。

Consistent/一致性:一个事务处理结束,其结果数据的状态必须是一致的。也就是说事务处理不能影响数据的一致性约束。

Isolated/独立性:不同事务处理所进行的数据处理必须是独立的,不能互相影响。

Durable/持久性:当一个事务完成后,事务处理结果必须能够在数据库中持久保存。

(2)CAP定理

CAP定理NoSQL数据库的基石,是理解NoSQL数据库或分布式系统的理论基础。CAP定理指出,在NoSQL数据库或者一个分布式系统中,Consistency/一致性、Availability/可用性和Partition Tolerance/分区容错性,三者不可兼得。

一致性:是指在数据库执行一个操作之后,仍然保持数据一致性。例如,在一个数据更新之后,所有客户端看到的相关数据是一致的。

可用性:是指信息系统持续运行,为用户提供服务。系统中偶发的系统故障不能影响用户的正常使用。

分区容错性:是指在服务器之间通信中断时,也能保证系统功能正常执行。例如,这些服务器被隔离成多个组,组与组之间无法通信的情况下,各组系统都能正常运行。

理论上,分布式系统无法同时满足上述三个要求。因此,NoSQL数据库只能满足C、A、P之中的不同组合,相关组合如下:

CA:单点集群,系统中的所有节点必须保持通信联系。当系统分区隔离出现时,系统就无法正常工作。

CP:部分数据无法访问,但是其余系统数据仍能保持一致性或者准确性。

AP:在系统分区隔离的情况下仍能保持其可用性,部分数据无法保持其准确性。

         


图1.CAP定理以及NoSQL数据库

(3)BASE原则

基于CAP定律,一个NoSQL数据库或者分布式系统无法同时满足一致性、可用性和分区容错性。在一致性和可用性相互权衡之下,形成BASE原则。BASE原则是指Basically Available(基本可用)、Soft state(弱状态)、Eventually consistent(最终一致性),其核心思想是指,对于NoSQL数据库来说,即使无法做到强一致性,但必须实现最终一致性。

基本可用:是指在系统出现不可预知故障时,允许损失部分可用性,但不是完全不可用。例如:响应时间上的损失,或者功能上的损失。

弱状态:是指允许系统中的数据存在中间状态,并认为该中间状态不会影响系统的整体可用性。

最终一致性:是指系统要保证最终数据能够达到一致性,而不需要实时保证数据的强一致性。

(4)可扩展能力

在信息系统中,可扩展能力是指扩建系统以满足业务需求的能力。信息系统扩展有两种方式:

垂直扩展 是指在相同的逻辑单元中增加资源以提升系统计算能力。例如,在现有服务器中增加CPU、添加内存以提高系统计算能力,或者增加硬盘以扩展存储空间。

水平扩展 是指在系统架构中增加计算机节点,以增加系统计算能力。诸如,在分布式软件应用网络中添加计算机。

2.NoSQL数据库分类

(1)键-值存储式数据库

键-值存储是NoSQL数据库的基本类型,用于处理超大规模数据。在键-值存储中,数据以哈希表的形式进行存储,每个键都是唯一的,其对应的值可以是字符串、JSON、BLOB等形式。其优点是扩展性好、灵活性好、写操作性能高。其缺点是无法存储结构化信息、条件查询效率较低。

典型产品:Redis、DynamoDB、Riak、Memcached。

典型用户:GetHub,使用Riak数据库;Twitter,使用Redis和Memcached数据库。

(2)列存储式数据库

列存储式数据库,其处理对象是数据列,每个列都是单独处理,列对应的值是连续存储。列存储模式提升了查询性能,能够支持特定列数据的查询。其聚合查询的性能也非常高,诸如计数、合计、平均值、最大最小值计算等处理性能高。因此,其突出优点是:查询速度快、可扩展性强、易于进行分布式扩展、复杂性低。

典型产品:BigTable、HBase、Cassandra。

典型用户:Ebay、Instagram、NASA使用Cassandra数据库;FaceBook使用HBase数据库。

(3)图结构数据库

图数据结构是由一组节点以及节点之间关系所构成的数据结构。图结构数据库是利用图数据结构存储数据的数据库。图结构中的节点代表一个一个数据实体,节点之间的边线代表实体之间的关系。每个节点和边线由一个唯一标识符来标识。图结构数据库的优点是灵活性高、支持复杂的图结构算法,可用于构建复杂的关系图谱。其缺点是复杂性高、只能支持一定的数据规模。

典型产品:OrientDB, Neo4J, Titan。

典型用户:Adobe、Cisco、T-Mobile都使用Neo4J数据库。

(4)文档存储式数据库

文档存储式数据库是一个文档的集合,以文档的形式进行存储。文档中包含一系列键-值对,或者键-数组对,或者是一组嵌套的文档。文档存储式数据库的优点是性能好、灵活性高、复杂性低。缺点是缺乏统一的查询语言。

典型产品:MongoDB、CouchDB。

典型用户:SAP,使用MongoDB产品。

3.NoSQL数据库临床应用架构

在临床应用中,NoSQL数据库着重点在于处理半结构化和非结构化数据,结合关系型数据库,为临床决策支持系统提供数据处理和分析功能,其应用系统架构参见图2。

图2.临床数据应用系统架构

(1)数据源

用于临床决策处理的数据,其主要来源是医院信息系统中存储的电子病历信息。但是,这些电子病历信息只包含患者的一部分数字信息。其它医院医疗数据源还包括医疗影像、实验室化验结果、医疗监测设备、远程传感器、药房数据等。另外,医院外数据源还有体检数据、社交网络数据等。

(2)NoSQL数据库

NoSQL数据库中的数据是从HIS以及其它数据源系统中上传而来。针对NoSQL数据库中的数据,要进行特征抽取。抽取的特征形成属性和指标集合,并存储到关系型数据库中。数据关键特征和抽取算法的识别确认由数据科学家团队处理,并构建数据模型。其数据还要根据知识库中的概念进行标引。

(3)关系型数据仓库

关系型数据库为用户提供及时的数据查询服务。该数据库存储临床过程中的结构化数据以及由NoSQL数据库提供的、从非结构化数据抽取上传的特征数据。临床科研人员利用数据分析和挖掘工具,对该数据库数据进行研究分析和预测建模。

(4)知识库/模型库

知识库中存储的是由关系型数据库数据分析形成的算法和计算逻辑,或者直接由NoSQL数据库中形成的模型。其内容包括:

    A.预测模型,表现形式有:回归方程式、神经网络、决策树、贝叶斯网络、复杂分类器。

    B.临床病案、聚类及其参数之间的相似性指标。

    C.关联规则。

    D.模式可视化。

(5)元数据和本体库

元数据支持在关系型数据库和非关系型数据库的数据之间建立语义链接。而本体模块则负责为数据库中的医疗数据提供语义表达。本体模块包括医疗数据的定义和分类。

(6)执行模块

该模块负责查询数据库,为预测模型和特定医疗病案提供所需的属性信息。该模块的实现依赖于运行预测模型的评分引擎。通过使用标准模型可以把评分引擎从建模工具中解耦出来,类似的标准模型有预测建模标记语言(PMML)。

以上是关于漫谈大数据技术:NoSQL数据库的主要内容,如果未能解决你的问题,请参考以下文章

大数据挑战与NoSQL数据库技术pdf

漫谈互联网架构

大数据技术原理与应用:第五讲NoSQL数据库

大数据技术基础笔记5 NoSQL数据库

大数据架构师必读的NoSQL建模技术

NoSQL数据库技术实战-第1章 NoSQL与大数据简介 NoSQL产生的原因