计算基础技术及导论 4_第1页
计算基础技术及导论 4_第2页
计算基础技术及导论 4_第3页
计算基础技术及导论 4_第4页
计算基础技术及导论 4_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目7数据库从SQL到NoSQL知识目标1)熟悉计算机数据库基础知识及其发展历史。2)熟悉数据检索、数据仓库和数据挖掘技术知识。3)熟悉大数据存储基础知识。4)了解NoSQL数据库和NewSQL数据库。学习目标思政元素在学习结构化和非结构化数据库知识时融入思政教育元素,旨在培养学生的专业技能同时,增强其对数据管理的伦理、法律、社会责任和安全意识。(1)数据治理与责任:强调数据管理的重要性,介绍数据治理框架,让学生理解数据质量、合规性,如GDPRC、数据保护法,培养对个人和企业数据负责的态度。学习目标(2)隐私保护:在处理个人和敏感数据时,强调尊重隐私,培养学生在数据操作中保护个人信息的道德界限,避免滥用。(3)数据安全:通过加密技术、访问控制、备份策略,讲解数据安全,培养学生对数据保护的敏感度,理解数据泄露的后果,遵守安全规定。(4)技术与社会影响:讨论数据库技术如大数据、AI在社会的应用,如医疗、教育、政府决策,培养学生社会意识,理解技术的社会责任,正面应用。学习目标学习难点1)数据库ACID特征和大数据存储BASE设计原理。2)NoSQL数据库知识。学习目标根据工作环境的不同,“数据文件”可能有不同的含义。例如,可以把数据文件当作是包含任何类型数据的文件,例如文本、数字、图形、声音,甚至是软件模块等;同样,也可以把数据文件当作任何不可执行或者不是程序的文件。当然,数据文件也可能指的是某个结构化或非结构化数据文件或者数据库,比如电子邮件地址簿,其中包含了按照固定格式组织的信息。因此,当阅读专业文章或者文档时,也许应该根据其上下文来决定该术语的具体含义是什么。与维护和访问数据文件中数据相关的任务称为数据管理。项目7数据库从SQL到NoSQL01数据库基础02数据库检索03数据仓库与数据挖掘04大数据存储概念目录/CONTENTS05NoSQL数据库06NewSQL数据库PART01数据库基础数据库(DB)是依照某种数据模型组织并存储的数据集合,它具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一管理和控制等,这个软件就叫做数据库管理系统(DBMS),它是计算机科学中发展最快的技术领域之一。7.1数据库基础在数据文件中,字段是有意义数据的最小单元(例如二维表格的列),它可以设置为可变或者固定长度,其字段名描述字段中的内容,例如字段Name可能描述了一组职工姓名数据。7.1.1数据库基本结构输入在字段中的数据依赖于字段的数据类型,数据类型定义了数据在磁盘和内存中表示的方式。从用户角度来说,数据类型决定了操作数据的方式。文件中的每个字段都分配有数据类型,最常用的数据类型是字符和数值。数值型字段可以进行数值运算,字符型字段包含了那些不需要进行数学操作的数据,例如名字、描述、城市、电话号码和学号等。还有一些其他数据类型,如日期、逻辑和备注类型等。7.1.1数据库基本结构数据库实体是人、地方、物品或事件等用来存储数据的对象,而记录(例如二维表格的行)包括了描述实体的字段。记录长度表示记录可以存储的最大字节数,计算文件的记录长度有助于确定存储需求。一般情况下,创建数据文件中文件结构的人定义了它所应该包含的字段,记录中字段的个数和字段名依赖于记录所包含的数据。7.1.1数据库基本结构数据库不同层次之间的联系是通过映射进行转换的。数据库具有的主要特点如下。(1)数据共享。所有用户可同时存取数据库中的数据,用户可以用各种方式通过接口使用数据库,并提供数据共享,从而避免了用户各自建立应用文件,减少大量冗余数据,维护了数据的一致性。(2)数据独立性。数据库中数据的逻辑结构和应用程序相互独立,数据物理结构的变化不影响数据的逻辑结构。7.1.2数据库的特点(3)数据实现集中控制。还可以通过数据模型表示各种数据的组织以及数据间的联系。(4)数据一致性和可维护性,以确保数据的安全性和可靠性。主要包括如下几点。·安全性控制:以防止数据丢失、错误更新和越权使用;·完整性控制:保证数据的正确性、有效性和相容性;7.1.2数据库的特点·并发控制:在同一时间周期内允许对数据实现多路存取,防止用户间的不正常交互作用;·故障的发现和恢复:由DBMS提供一套方法,及时发现和修复故障,防止数据被破坏。7.1.2数据库的特点DBMS是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,以适应信息化社会对数据管理技术的需求。DBMS对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。DBMS提供多种功能,使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。7.1.3数据库管理系统基于关系模型的数据库管理系统已日臻完善,作为商品化软件广泛应用于各行各业。它在客户/服务器结构的分布式多用户环境中的应用,使数据库系统的应用进一步扩展。数据库产品主要如IBMDB2、Oracle、Sybase、MicrosoftSQLServer、MicrosoftAccess和MySQL等,各以自己特有的功能在数据库市场上占有一席之地。7.1.3数据库管理系统数据库可以分成结构化数据库和非结构化数据库两种。结构化数据库是使用统一格式的记录和域来组织信息的文件,存储的数据通常描述的是相似实体的集合。比如,医疗数据库存储的数据一般是病人的信息,库存数据库的数据则是存储在仓库的货物和货架信息。7.1.3数据库管理系统非结构化数据库是信息的松散结构化组合,一般是按照文档而不是记录来存储的。比如,可以把使用文字处理软件生成的文档看成是一个个人作品的非结构化数据库。互联网在世界范围中存储了数以百万计的各式各样的文档,它也是一种非结构化数据库。无论存储在硬盘、光盘,还是因特网上,非结构化数据库能够为人们存储各种各样的信息。7.1.3数据库管理系统事务的概念在许多地方都有应用,比如操作系统、Redis、关系型数据库等,但事务的本质概念是一样的。在数据库中,事务是访问和更新数据库的程序执行单元,其中可能包含一个或多个SQL语句,这些语句要么都执行,要么都不执行。也就是,将多个操作打包在一起执行且支持回滚,就是事务。数据库领域中的ACID是个首字母缩略词,它是指关系数据库管理系统的四项特征,即原子性、一致性、隔离性和持久性。关系数据库管理系统完全支持ACID事务,而NoSQL数据库有时也能提供某种程度的ACID事务。7.1.4

ACID特征在一开始的定义中,事务必须要满足这四个特性,但在许多实际应用中这四个特性并没有被完全实现,比如MySQL、Redis的事务就不支持原子性。后来这四个特性渐渐地变成了衡量事务的标准而不是事务的必须条件。(1)原子性(Atomicity)。指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做。数据库中:如果事务中一个SQL语句执行失败,则已执行的SQL语句也必须回滚,数据库退回到事务前的状态。7.1.4

ACID特征例如MySQL的事务并不支持原子性。在MySQL中,如果事务中的一条SQL无法执行,它会将这一条SQL报错,并继续执行接下来的SQL语句,且已执行的SQL语句也不回滚,除非我们主动使用逻辑判断要求报错时执行回滚,否则MySQL的事务本身是不会回滚的。7.1.4

ACID特征(2)一致性(Consistency)。是指事务执行结束后,数据库的完整性约束没有被破坏,事务执行的前后都是合法的数据状态。数据库的完整性约束包括但不限于:实体完整性(如行的主键存在且唯一)、列完整性(如字段的类型、大小、长度要符合要求)、外键约束、用户自定义完整性(如转账前后,两个账户余额的和应该不变)。也就是,事务执行前后,数据的改变都是合法,且各方数据都是一致的。事实上,事务的目的就是为了数据一致性。7.1.4

ACID特征(3)隔离性(Isolation)。原子性、持久性侧重于研究事务本身,而隔离性研究的是不同事务之间的相互影响,是指事务内部的操作与其他事务是隔离的,并发执行的各个事务之间不能互相干扰。(4)持久性(Durability)。是指事务一旦提交,它对数据库的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。7.1.4

ACID特征PART02数据库检索从广义上讲,数据库是存储在一台或多台计算机上信息的集合。在实际应用中,使用数据库的主要目的都是为了查找信息。当在数据库中检索信息(而不是创建和维护数据库)的时候,通常不需要知道目前访问的数据库是结构化的,还是非结构化的,相关的数据访问软件会隐含这些信息。数据访问软件提供了在数据库中检索信息的界面,只需要告诉它所需要的信息,它就去进行检索。数据访问软件了解数据库的结构,因此用户不需要考虑技术细节。7.2数据库检索不同的数据库通常使用不同的访问软件。因此,要在信息时代有效地获取信息,就必须掌握不同数据访问软件的检索过程。根据所使用的访问软件,可能使用菜单、超文本索引、关键字搜索引擎、实例查询、查询语言或自然语言进行检索。7.2数据库检索在银行自动账户信息系统中,系统会有“查询信息请按1,获得帮助请按2”等提示。这个系统就是用户与银行数据库的界面。由于许多人要使用这个系统,因此访问过程必须简单。银行客户系统的大多数数据访问软件都是基于菜单的。数据库菜单类似于大多数其他软件中的菜单。访问数据库信息的菜单可以是基于屏幕的,或基于语音提示的。菜单通常是层次化排列的,选择了第一级菜单,第二级菜单才会出来。7.2.1菜单和超文本索引当使用语音菜单时,要准备按下自己希望的选项,听到所需要的选项就按下按钮。当语音完成菜单选项的解释后,无须回忆这个希望按下的号码。相比之下,基于屏幕的菜单更容易使用,因为所有的选项都可以一目了然。因此,它们可能更加复杂,使用多级菜单显示更多选项。7.2.1菜单和超文本索引基于屏幕的菜单在因特网上成为访问信息的流行格式。许多流行的提供因特网信息检索的网点使用的是超文本索引方法。将信息按照教育、娱乐和商业等分类,方便信息检索。使用这样的超文本索引,首先要选择所需信息所在的分类,系统会给出关于这部分的主题列表,从中选择后会显示另外一个列表。这样,当浏览完这个列表后,就会找到包含所需信息的文档了。7.2.1菜单和超文本索引传统上,由于习惯,我们会觉得分类存放信息易于查找,但有些事物不好分类,再加上计算机功能和处理速度的提高,现在,我们还可以按照关键字而不是分类主题进行搜索。7.2.2关键字搜索关键字搜索引擎使我们避免了检索数据时在主题分类菜单中浪费时间。关键字搜索引擎在类似于万维网这样的非结构化数据库中得到了广泛应用。使用关键字搜索引擎检索数据,只需要输入像“数据挖掘”这样的词,搜索引擎就会定位相关信息。通常,它会显示出包含该关键字的文档摘要,可以从中选择认为最有用的文档。关键字搜索引擎的用户界面通常非常简单。搜索引擎还允许使用更加详细的搜索条件来生成“高级”搜索。7.2.2关键字搜索PART03数据仓库与数据挖掘数据仓库(DW)是一个环境,它提供了用户用于决策支持的当前和历史数据,这些数据在传统的操作型数据库中很难或不能得到。数据仓库技术是为了把操作型数据有效地集成到统一环境中,以提供决策型数据访问的各种技术和模块的总称,其目的就是为了让用户更快、更方便查询所需要的信息,提供决策支持。7.3数据仓库与数据挖掘作为数据管理手段,传统的数据库技术是单一的数据资源,主要用于事务处理,也称为操作型处理。它以数据库为中心,进行从事务处理、批处理到决策分析的各种类型的数据处理工作。用户关心的是响应时间、数据的安全性和完整性。7.3数据仓库与数据挖掘数据仓库用于决策支持,也称分析型处理,它是建立决策支持系统的基础。数据仓库对关系数据库的联机分析能力提出了更高的要求。因此,数据仓库与数据库的区别不仅仅表现在应用的方法和目的方面,同时也涉及到产品和配置上的不同。作为一种新的数据处理体系结构和信息管理技术,数据仓库是企业内部各部门业务数据进行统一和综合的中央数据仓库,它为企业决策支持系统和行政信息系统提供所需的信息,为预测利润、风险分析、市场分析以及加强客户服务与营销活动等管理决策提供支持。7.3数据仓库与数据挖掘要提高分析与决策的效率和有效性,分析型处理及其数据必须与操作型处理及其数据分离,把分析型数据从事务处理环境中提取出来,按照决策支持的需要进行重新组织,建立单独的分析处理环境。数据仓库正是为了构建这种新的分析处理环境而出现的一种数据存储和组织技术。7.3数据仓库与数据挖掘数据仓库由数据仓库数据库、数据抽取工具、元数据等内容组成。(1)数据仓库数据库。这是整个数据仓库环境的核心,是数据存放的地方,提供对数据检索的支持。相对于操纵型数据库来说,其突出特点是对海量数据的支持和快速的检索技术。7.3.1数据仓库的组成(2)数据抽取工具。把数据从各种各样的存储方式中拿出来,进行必要的转化、整理,再存放到数据仓库内。对各种不同数据存储方式的访问能力是数据抽取工具的关键,以访问不同的数据。数据转换包括删除对决策应用没有意义的数据段;转换到统一的数据名称和定义;计算统计和衍生数据;给缺值数据赋以缺省值;把不同的数据定义方式统一等。(3)元数据。是指描述数据仓库内数据的结构和建立方法的数据。可将其按用途不同分为两类,即技术元数据和商业元数据。7.3.1数据仓库的组成技术元数据是数据仓库的设计和管理人员用于开发和日常管理数据仓库时用的数据,包括数据源信息、数据转换的描述、数据仓库内对象和数据结构的定义、数据清理和数据更新的规则、源数据到目的数据的映射、用户访问权限、数据备份/数据导入和信息发布历史记录等。7.3.1数据仓库的组成商业元数据从商业业务的角度描述了数据仓库中的数据。包括业务主题的描述、包含的数据、查询、报表等。元数据为访问数据仓库提供了一个信息目录,这个目录全面描述了数据仓库中有什么数据、这些数据是怎么得到的和怎么访问这些数据,它是数据仓库运行和维护的中心,数据仓库服务器利用它来存储和更新数据,用户通过它来了解和访问数据。7.3.1数据仓库的组成(4)访问工具。为用户访问数据仓库提供手段。有数据查询和报表工具、应用开发工具、管理信息系统(EIS)工具、在线分析(OLAP)工具、数据挖掘工具等。(5)数据集市。是指为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据。在数据仓库的实施过程中,往往可以从一个部门的数据集市着手,以后再用几个数据集市组成一个完整的数据仓库。需要注意的是,在实施不同的数据集市时,同一含义的字段定义一定要相容,这样以后实施数据仓库时才不会造成大麻烦。7.3.1数据仓库的组成(6)数据仓库管理。包括安全和特权管理、跟踪数据的更新、数据质量检查、管理和更新元数据、审计和报告数据仓库的使用和状态、删除数据、复制/分割和分发数据、备份和恢复、存储管理等。(7)信息发布系统。把数据仓库中的数据或其他相关的数据发送给不同的地点或用户。基于Web的信息发布系统是对付多用户访问的最有效方法。7.3.1数据仓库的组成作为决策支持技术,数据挖掘(DM)是从大型数据库或数据仓库中发现并提取隐藏在其中的有用信息或知识信息的一种技术,它主要利用某些特定的知识发现算法,在一定的运算效率的限制内,从数据对象(例如数据库或数据仓库,也可以是文件系统或其他任何组织在一起的数据集合)中发现有关的知识。它帮助决策者寻找数据间潜在的关联,发现被忽略的因素。而这些信息和因素对预测趋势和决策行为是至关重要的。数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识。知识即意味着数据元素之间的关系和模式。7.3.2数据挖掘技术因此,数据挖掘可以定义为:应用一系列技术从大型数据库或数据仓库的数据中提取人们感兴趣的信息和知识,这些知识或信息是隐含的、事先未知而潜在有用的,提取的知识表示为概念、规则、规律、模式等形式。作为知识发现过程的一个特定步骤,数据挖掘是一系列技术及应用,或者说是对大容量数据及数据间关系进行考察和建模的方法集,它的目标是将大容量数据转化为有用的知识和信息。7.3.2数据挖掘技术知识发现是一个多步骤的对大量数据进行分析的过程,包括数据预处理、模式提取、知识评估及过程优化。知识获取往往需要经过多次的反复,通过对相关数据的再处理及知识发现算法的优化,不断提高学习效率。如在分析影响信用风险的因素时,可能先假设几种可能的因素,然后通过不断反复的实验,不断增加或删除因素,最终得到对信用风险最具影响的因素。7.3.2数据挖掘技术数据仓库完成数据的收集、集成、存储、管理等工作,数据挖掘面对的是经初步加工的数据,使得数据挖掘能更专注于知识的发现。又由于数据仓库所具有的新特点,对数据挖掘技术提出了更高的要求。另一方面,数据挖掘为数据仓库提供了更好的决策支持,同时促进了数据仓库技术的发展。可以说,数据挖掘和数据仓库技术要充分发挥潜力,就必须结合起来。7.3.2数据挖掘技术PART04大数据存储概念关于大数据,最容易想到的便是其数据量之庞大,如何高效地保存和管理这些海量数据是存储面临的首要问题。此外,大数据还有诸如种类结构不一、数据源杂多、增长速度快、存取形式和应用需求多样化等特点。7.4大数据存储概念分布式系统是建立在网络之上的软件系统,具有高度的内聚性和透明性,因此网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。其中,内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户无须知道关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等。7.4.1分布式存储在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体。系统拥有多种通用的物理和逻辑资源,可以动态分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局方式管理资源的分布式操作系统,通常对用户来说,分布式系统只有一个模型或范型,在操作系统之上有一层软件中间件负责实现这个模型。例如互联网就是一个典型的分布式系统,在互联网中,所有的一切看起来就好像是一个文档(Web页面)一样。7.4.1分布式存储分布式操作系统以全局方式管理系统资源,它为用户调度网络资源,并且调度过程是“透明”的。当用户提交一个作业时,分布式操作系统根据需要在系统中选择最合适的处理器,将用户的作业提交到该处理程序,在处理器完成作业后,将结果传给用户。在这个过程中,用户并不会意识到有多个处理器的存在,整个系统就像是一个处理器一样。7.4.1分布式存储一个分布式文件系统作为一个文件系统可以存储分布在集群的节点上的大文件。对于客户端来说,文件似乎在本地上,这是一个逻辑视图,物理形式上文件分布于整个集群。这个本地视图展示了通过分布式文件系统存储,并且使文件可以从多个位置获得访问。例如Google文件系统(GFS)和Hadoop分布式文件系统(HDFS)。7.4.2分布式文件系统大数据导致了数据量的爆发式增长,传统的集中式存储(如NAS或SAN)在容量和性能上都无法较好地满足大数据的需求。因此,具有优秀的可扩展能力的分布式存储成为大数据存储的主流架构方式。一个实现了分布式文件系统的存储设备可以提供简单快速的数据存储功能,并能够存储大型非关系型数据集,如半结构化数据和非结构化数据。分布式文件系统更适用于数量少、空间大、并以连续方式访问的文件。多个较小的文件通常被合并成一个文件以获得最佳的存储和处理性能。7.4.2分布式文件系统当数据必须以流模式获取而且没有随机读写需求时,会使分布式文件系统获得更好的性能。分布式存储多采用普通硬件设备作为基础设施,因此,单位容量的存储成本也得到大大降低。另外,分布式存储在性能、维护性和容灾性等方面也具有不同程度的优势。7.4.2分布式文件系统大体上可以将分布式存储分为C/S(客户机/服务器)架构和P2P(点对点)架构两种。当然,也有一些分布式存储中会同时存在这两种架构方式。分布式存储面临的一个共同问题,就是如何组织和管理成员节点,以及如何建立数据与节点之间的映射关系。成员节点的动态增加或者离开,在分布式系统中是一种常态。7.4.2分布式文件系统存储虚拟化最通俗的理解就是对一个或者多个存储硬件资源进行抽象,提供统一的、更有效率的全面存储服务。从用户的角度来说,存储虚拟化就像一个存储的大池子,用户看不到,也不需要看到后面的磁盘、磁带,不必关心数据是通过哪条路径存储到硬件上的。存储虚拟化有两大分类:块虚拟化和文件虚拟化。块虚拟化就是将不同结构的物理存储抽象成统一的逻辑存储。这种抽象和隔离可以让存储系统的管理员为终端用户提供更灵活的服务。文件虚拟化则是帮助用户,使其在一个多节点的分布式存储环境中,再也不用关心文件的具体物理存储位置了。7.4.3存储虚拟化埃里克·布鲁尔于2000年提出的分布式系统设计的CAP理论(布鲁尔定理)指出,一个分布式系统不可能同时保证一致性、可用性和分区容忍性这三个要素,这也被称为表达与分布式数据库系统相关的三重约束。当然,除了这三个维度,一个分布式存储系统往往会根据具体业务的不同,在特性设计上有不同的取舍,比如,是否需要缓存模块、是否支持通用的文件系统接口等。7.4.4

CAP定理任何一个在集群上运行的分布式存储(数据库)系统只能根据其具体的业务特征和具体需求,最大地优化其中的两个要素。(1)一致性(Consistency)——从任何节点的读操作会导致相同的数据跨越多个节点。

图7-1一致性:虽然有三个不同的节点来存储记录,所有三个用户得到相同的列的值7.4.4

CAP定理(2)可用性(Availability)——任何一个读/写请求总是会以成功或是失败的形式得到响应。

图7-2可用性和分区容忍7.4.4

CAP定理(3)分区容忍(Partitiontolerance)――数据库系统可以容忍通信中断,通过将集群分成多个竖井,仍然可以对读/写请求提供服务。图7-2中,在发生通信故障时,来自两个用户的请求仍然会被提供服务(1和2)。然而,对于用户B来说,因为id=3的记录没有被复制到对等节点C中而造成更新失败。用户被正式通知更新失败了。7.4.4

CAP定理图7-3提供了一个维恩图解显示了一致性、可用性和分区容忍所重叠的区域。图7-3总结CAP定理的维恩图7.4.4

CAP定理如果一致性(C)和可用性(A)是必需的,可用节点之间需要进行沟通以确保一致性(C)。因此,分区容忍(P)是不可能达到的;如果一致性(C)和分区容忍(P)是必需的,节点不能保持可用性(A),因为为了实现一致性(C)节点将变得不可用;如果可用性(A)和分区容忍(P)是必需的,因为考虑到节点之间的数据通信需要,那么一致性(C)是不可能达到的。因此,数据库仍然是可用的(A),但是结果数据库是不一致的。7.4.4

CAP定理分布式数据库系统中可伸缩性和容错能力可以通过额外的节点来提高,虽然这对一致性(C)造成了挑战。添加的节点也会导致可用性(A)降低,因为节点之间增加的通信将造成延迟。分布式数据库系统不能保证100%分区容忍(P)。虽然沟通中断是非常罕见的和暂时的,分区容忍(P)必须始终被分布式数据库支持;因此,CAP通常是C+P或者A+P之间的一个选择。系统的需求将决定怎样选择。7.4.4

CAP定理BASE是一个根据CAP定理的数据库设计原理,它采用了使用分布式技术的数据库系统。BASE代表:基本可用(BasicallyAvailable)、软状态(SoftState)和最终一致性(EventualConsistency)。当一个数据库支持BASE时,它支持可用性超过一致性。换句话说,从CAP原理的角度来看数据库采用A+P模式。从本质上说,BASE通过放宽被ACID特性规定的强一致性约束来使用乐观并发。如果数据库是“基本可用”的,该数据库将始终响应客户的请求,无论是通过返回请求数据的方式,或是发送一个成功或失败的通知。7.4.5

BASE设计原理在图7-4中,数据库是基本可用的,尽管因为网络故障的原因它被划分开。图7-4用户A和用户B接收到数据,尽管数据库因为一个网络故障被分区7.4.5

BASE设计原理软状态意味着一个数据库当读取数据时可能会处于不一致的状态;因此,当相同的数据再次被请求时结果可能会改变。这是因为数据可能因为一致性而被更新,即使两次读操作之间没有用户写入数据到数据库。这个特性与最终一致性密切相关。在图7-5中:

图7-5在此显示BASE的软状态属性的一个示例7.4.5

BASE设计原理(1)用户A更新一条记录到对等节点A;(2)在其他对等节点更新之前,用户B从对等节点C请求相同的记录;(3)数据库现在处于一个软状态,且返回给用户B的是陈旧的数据。不同的客户读取时的状态是最终一致性的状态,紧跟着一个写操作写入到数据库之后,可能不会返回一致的结果。数据库只有当更新变化传播到所有的节点后才能达到一致性。当数据库在达到最终一致的状态的过程中,它将处于一个软状态。7.4.5

BASE设计原理在图7-6中:图7-6BASE的最终一致性属性的一个示例7.4.5

BASE设计原理(1)用户A更新一条记录;(2)记录只在对等节点A中被更新,但在其他对等节点被更新之前,用户B请求相同的记录;(3)数据库现在处于一个软状态。返回给用户B的是从对等节点C处获得的陈旧的数据;(4)然而,数据库最终达到一致性,用户C得到的是正确的值。7.4.5

BASE设计原理BASE更多地强调可用性而非一致性,这点与ACID不同。由于有记录锁,ACID需要牺牲可用性来确保一致性。虽然这种针对一致性的软措施不能保证服务的一致性,但BASE的兼容数据库可以服务多个客户端而不会产生时间上的延迟。然而,BASE的兼容数据库对事务性系统用处不大,因为事务性系统关注一致性的问题。7.4.5

BASE设计原理PART05NoSQL数据库存储技术随着时间的推移持续发展,把存储从服务器内部逐渐移动到网络上。当今对融合式架构的推动把计算、存储、内存和网络放入一个可以统一管理的架构中。在这些变化中,大数据的存储需求彻底地改变了自20世纪80年代末期以来,企业信息通信技术所支持的以关系型数据库为中心的观念。其根本原因在于,关系型技术不支持大数据的容量的可扩展的方式。更何况,企业通过处理半结构化和非结构化数据获取有用的价值,而它与关系型方法不兼容。7.5

NoSQL数据库大数据促进形成了统一的观念,即存储的边界是集群可用的内存和磁盘存储。如果需要更多的存储空间,横向可扩展性允许集群通过添加更多节点来扩展。这个事实对于内存与磁盘设备都成立,尤其重要的是创新的方法能够通过内存存储来提供实时分析。甚至批量为主的处理速度都由于越来越便宜的固态硬盘而变快了。7.5

NoSQL数据库磁盘存储通常利用廉价的硬盘设备作为长期存储的介质,并可由分布式文件系统或数据库实现。

图7-7磁盘存储可通过分布式文件系统或数据库实现7.5

NoSQL数据库一个NoSQL(Not-onlySQL)数据库是一个非关系型数据库,具有高度的可扩展性、容错性,并且专门设计用来存储半结构化和非结构化数据。NoSQL数据库通常会提供一个能被应用程序调用的基于API的查询接口。NoSQL数据库也支持结构化查询语言(SQL)以外的查询语言,因为SQL是为了查询存储在关系型数据库中的结构化数据而设计的。例如,优化一个NoSQL数据库用来存储XML文件通常会使用XQuery作为查询语言。同样,设计一个NoSQL数据库用来存储RDF数据将使用SPARQL来查询它包含的关系。7.5

NoSQL数据库不过,有一些NoSQL数据库提供类似于SQL的查询界面。图7-8NoSQL数据库提供API或SQL-like查询接口7.5

NoSQL数据库NoSQL存储设备的出现主要归因于大数据数据集的容量、速度和多样性等3V特征。由于NoSQL数据库能够像随着数据集的进化改变数据模型一样改变模式,基于这个能力,NoSQL存储设备能够存储无模式数据和不完整数据。换句话说,NoSQL数据库支持模式进化。如图7-9~图7-12所示,根据不同存储数据的方式,NoSQL存储设备可以被分为四种类型。7.5

NoSQL数据库图7-9NoSQL键-值存储的一个例子图7-10NoSQL文档存储的一个例子7.5

NoSQL数据库

图7-11NoSQL列簇存储的一个例子图7-12NoSQL图存储的一个例子7.5

NoSQL数据库键-值存储设备以键-值对的形式存储数据,并且运行机制和散列表类似。该表是一个值列表,其中每个值由一个键来标识。值对数据库不透明并且通常以BLOB(二进制类型的大对象)形式存储。存储的值可以是任何从传感器数据到视频数据的集合。只能通过键查找值,因为数据库对所存储的数据集合的细节是未知的。不能部分更新,更新操作只能是删除或者插入。键-值存储设备通常不含有任何索引,所以写入非常快。基于简单的存储模型,键-值存储设备高度可扩展。为了便于检索,所保存值的类型经常被附在键之后,例如123_sensor1。7.5.1键-值存储为了使存储的数据具有一些结构,大多数的键-值存储设备会提供集合或桶(像表一样)来放置键-值对。如下图所示,一个集合就可以容纳多种数据格式。一些实现方法为了降低存储空间从而支持压缩值。但是这样在读出期间会造成延迟,因为数据在返回之前需要先被解压。

图7-13数据被组织在键-值对中的一个例子7.5.1键-值存储键-值存储设备适用于:·需要存储非结构化数据。·需要具有高效的读写性能。·值可以完全由键确定。·值是不依赖其他值的独立实体。·值有着相当简单的结果或是二进制的。·查询模式简单,只包括插入、查找和删除操作。·存储的值在应用层被操作。键-值存储设备的实例包括Riak、Redis和AmazonDynamoDB。7.5.1键-值存储文档存储设备也存储键-值对。但是,与键-值存储设备不同,存储的值是可以数据库查询的文档。这些文档可以具有复杂的嵌套结构,例如发票。这些文档可以使用基于文本的编码方案,如XML或JSON,或者使用二进制编码方案,如BSON(BinaryJSON)进行编码。7.5.2文档存储像键-值存储设备一样,大多数文档存储设备也会提供集合或桶来放置键-值对。文档存储设备和键-值存储设备之间的区别如下:(1)文档存储设备是值可感知的。(2)存储的值是自描述的,模式可以从值的结构或从模式的引用推断出,因为文档已经被包括在值中。(3)选择操作可以引用集合值内的一个字段。(4)选择操作可以检索集合的部分值。(5)支持部分更新,所以集合的子集可以被更新。(6)通常支持用于加速查找的索引。7.5.2文档存储每个文档都可以有不同的模式,所以,在相同的集合或者桶中可能存储不同种类的文档。在最初插入操作后,可以加入新的属性,提供了灵活的模式支持。文档存储设备并不局限于存储像XML文件等以真实格式存在的文档,它们也可以用于存储包含一系列具有平面或嵌套模式的属性的集合。7.5.2文档存储图7-14展示了JSON文件如何以文档的形式存储在NoSQL数据库中。图7-14JSON文件存储在文档存储设备中的一个例子7.5.2文档存储文档存储设备适用于:·存储包含平面或嵌套模式的面向文档的半结构化数据。·模式的进化由于文档结构的未知性或者易变性而成为必然。·应用需要对存储的文档进行部分更新。·需要在文档的不同属性上进行查找。·以序列化对象的形式存储应用领域中的对象,例如顾客。·查询模式包含插入、选择、更新和删除操作。文档存储设备的例子包括MongoDB、CouchDB和Terrastore。7.5.2文档存储列簇存储设备像传统RDBMS一样存储数据,但是会将相关联的列聚集在一行中,从而形成列簇。如下图所示,每一列都可以是一系列相关联的集合,被称为超列。

图7-15此处每一行可以有不同的列7.5.3列簇存储每个超列可包含任意数量的相关列,这些列通常作为一个单元被检索或更新。每行都包括多个列簇,并且含有不同的列的集合,所以有灵活的模式支持。每行被行键标识。列簇存储设备提供快速数据访问,并带有随机读写能力。它们把列簇存储在不同的物理文件中,这会提高查询响应速度,因为只有被查询的列簇才会被搜索到。7.5.3列簇存储一些列簇存储设备支持选择性地压缩列簇。不对一些能够被搜索到的列簇进行压缩,会让查询速度更快,因为在查找中,那些目标列不需要被解压缩。大多数的实现支持数据版本管理,然而有一些支持对列数据指定到期时间。当到期时间过了,数据会被自动移除。7.5.3列簇存储列簇存储设备适用于:·需要实时的随机读写能力,并且数据以已定义的结构存储。·数据表示的是表的结构,每行包含着大量列,并且存在着相互关联的数据形成的嵌套组。·需要对模式的进化提供支持,因为列簇的增加或者删除不需要在系统停机时间进行。7.5.3列簇存储·某些字段大多数情况下可以一起访问,并且搜索需要利用字段的值。·当数据包含稀疏的行而需要有效地使用存储空间时,因为列簇数据库只为存在列的行分配存储空间。如果没有列,将不会分配任何空间。·查询模式包含插入、选择、更新和删除操作。列簇存储设备包括Cassandra、HBase和AmazonSimpleDB。7.5.3列簇存储图存储设备被用于持久化互联的实体。不像其他的NoSQL存储设备那样注

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论