《大数据存储与管理课件.pptx》由会员分享,可在线阅读,更多相关《大数据存储与管理课件.pptx(93页珍藏版)》请在三一办公上搜索。
1、大数据导论,孟宪伟 许桂秋 主编 万世明 檀大耀 梁烽 董国忠 孟剑 副主编,数据中国“百校工程”项目系列教材数据科学与大数据技术专业系列规划教材,BIG DATATechnology,第4章 大数据存储与管理,本章主要内容如下。(1)数据的存储模式。(2)大数据时代的存储管理系统。,4.1 数据存储概述,4.1.1 数据的存储介质 存储介质是数据存储的载体,是数据存储的基础。存储介质并不是越贵越好、越先进越好,我们要根据不同的应用环境,合理选择存储介质。早期的存储介质有纸带、卡片、磁带等,目前常见的数据存储介质有机械硬盘、固态硬盘、可记录光盘、U盘、闪存卡等。1机械硬盘 组成:机械硬盘即传统
2、普通硬盘,主要由盘片、磁头、磁头停泊区、磁头臂等组成,如图4-1所示。,图4-1 机械硬盘,读/写原理:机械硬盘的磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置进行数据的读/写操作。机械硬盘中所有的盘片都装在一个旋转轴上。每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头连在一个磁头控制器上,磁头控制器负责各个磁头的运动。另外,机械硬盘在读取的时候,各个部件在做机械运动,所以会产生一定的热量和噪声。,稳定性:机械硬盘都是磁碟型的,数据存储在磁碟扇区里,所以机械硬盘不能摔,通电不能移动,否则易损坏。
3、优缺点:优点在于便宜,性价比高,可以用较少的花费获得较大容量,使用寿命长;缺点是相对固态硬盘来说,读/写速度较慢;防震性也没有固态硬盘好。,2固态硬盘 组成:固态硬盘(Solid State Drive,SSD)是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(Flash芯片、DRAM芯片)组成,如图4-2所示。,图4-2 固态硬盘,读/写原理:与普通磁盘的数据读/写原理不同,固态硬盘的读取直接由控制单元读取存储单元,不存在机械运动,因此读取速度非常快。相对机械硬盘,固态硬盘的读取速度提高了两倍多。由于固态硬盘属于无机械部件及闪存芯片,所以具有发热量小、散热快等特点,而且没有机械马达和
4、风扇,工作噪声值为0分贝。稳定性:固态硬盘使用闪存颗粒(即内存、MP3、U盘等存储介质)制作而成,所以内部不存在任何机械部件,这样即使在高速移动甚至伴随翻转倾斜的情况下,也不会影响正常使用。而且在发生碰撞和震荡时,能够将数据丢失的可能性降到最小。相较机械硬盘,固态硬盘更可靠。优缺点:固态硬盘的优点是读取和写入速度快,缺点是价格较高,有写入次数的限制,读/写有一定的寿命限制。,3可记录光盘 常使用的可记录光盘分为CD-R、CD-RW、DVDR/RW多种格式,如图4-3所示。,图4-3 可记录光盘,(1)CD-R是一次刻录、可多次读取的光盘,标准容量为650MB,现在常用的刻录容量为720MB。(
5、2)CD-RW是可以多次刻录、反复擦写的光盘,容量为650MB。(3)目前主流的DVD刻录盘有两种DVD-R/RW和DVD+R/RW。,4U盘 U盘是一种Flash存储设备,是用Flash芯片(Flash RAM,电可擦写存储器)作为存储介质制作的移动存储器,如图4-4所示。U盘采用通用串行总线(Universal Serial Bus,USB)接口,可反复擦写的性能大大加强了数据的安全性。U盘使用极为方便,无须外接电源,支持即插即用和热插拔,只要用户计算机的主板上有USB接口,就可以使用。由U盘发展起来的MP3、MP4播放机也可当数据存储设备使用。,图4-4 U盘,5闪存卡 闪存卡一般用于数
6、码类的产品中,如用于手机、数码照相机、数码摄像机、数码录音笔等。常用类型有SD卡、MiniSD卡、MicroSD(TF)卡、CF卡、记忆棒等,如图4-5所示。,图4-5 闪存卡,6数据存储介质的选择原则 数据存储介质的选择主要考虑如下原则。(1)耐久性 耐久性能高的存储介质不容易损坏,降低了数据损失的风险。因而存储数据应选用对环境要求低、不容易损伤、耐久性能高的介质。,(2)容量恰当 介质的高容量不仅有利于存储空间的减少,还便于管理,但会使存储的成本增加。对大容量数据,如果存储介质容量低,将不利于存储数据的完整。介质的存储容量最好与所管理的数据量大小相匹配。(3)低费用 介质的价格低,可以减少
7、存储管理与系统运行的费用。(4)广泛的可接受性 为减少IT业界对存储介质不支持的风险,我们应当选用具有广泛可使用性的存储介质,特别应注意选用能满足工业标准的存储介质。,4.1.2 数据的存储模式 目前,数据有3种常见的存储模式(见图4-6),它们被广泛应用于企业存储设备中:附加直接模式(Direct-Attached Storage,DAS);附加网络模式(Network-Attached Storage,NAS);存储区域网络模式(Storage Area Network,SAN)。,图4-6 数据的存储模式,1DAS DAS将存储设备通过SCSI接口直接连接到一台服务器上使用,如图4-7所
8、示。DAS是通过小型计算机系统接口(Small Computer System Interface,SCSI),在计算机与外部设备之间进行连接。,图4-7 DAS(1),DAS依赖主机的操作系统来实现数据的读/写、管理、备份等工作,如图4-8所示。,图4-8 DAS(2),(1)DAS的优点 配置简单:DAS购置成本低,配置简单,仅仅是一个外接的SCSI接口。使用简单:使用方法与使用本机硬盘并无太大差别。使用广泛:在中小型企业中,应用十分广泛。,(2)DAS的缺点 扩展性差:在新的应用需求出现时,需要为新增的服务器单独配置新的存储设备。资源利用率低:不同的应用服务器存储的数据量随着业务发展出现
9、不同,有部分应用存储空间不够,而另一些却有大量的存储空间。可管理性差:数据分散在应用服务器各自的存储设备上,不便于集中管理、分析和使用。,异构化严重:企业在发展过程中采购不同厂商、不同型号的存储设备,设备之间的异构化严重,使维护成本很高。I/O瓶颈:SCSI接口处理能力会成为数据读/写的瓶颈。,2NAS NAS存储设备是一种带有操作系统的存储设备,也叫作网络文件服务器。NAS设备直接连接到TCP/IP网络上,网络服务器通过TCP/IP网络存取与管理数据。应用:文档、图片、电影的共享等。典型的NAS架构如图4-9所示。,图4-9 典型的NAS架构,(1)NAS的优点 即插即用:容易部署,把NAS
10、设备接入以太网就可以使用。支持多平台:可以使用Linux等主流操作系统。(2)NAS的缺点 NAS设备与客户机通过以太网连接,NAS使用网络进行数据的备份和恢复,因此数据存储或备份时都会占用网络带宽。存储数据通过普通数据网络传输,因此容易产生数据泄漏的安全问题。只能以文件级访问,不适合块级的应用。,3SAN SAN是一个采用网状通道(Fibre Channel,FC)技术,通过FC交换机连接存储阵列和应用服务器,建立专用于数据存储的区域网络,如图4-10所示。SAN支持数以百计的磁盘,提供了海量的存储空间,解决了大容量存储问题;这个海量空间可以从逻辑层面上按需要分成不同大小的逻辑单元,再分配给
11、应用服务器。SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据放在哪里,服务器都可以直接存取所需的数据。,图4-10 SAN,(1)SAN的优点 传输速度快:SAN采用高速的传输媒介,并且SAN网络独立于应用服务器系统之外,因此存取速度很快。扩展性强:SAN的基础是一个专用网络,增加一定的存储空间或增加几台应用服务器,都非常方便。磁盘使用率高:整合了存储设备和采用了虚拟化技术,因而整体空间的使用率大幅提升。,(2)SAN的缺点 价格贵:不论是SAN阵列柜还是SAN必需的光纤通道交换机,其价格都是十分昂贵的,就连服务器上使用的光通道卡的价格也是不易
12、被小型企业所接受的。异地部署困难:需要单独建立光纤网络,异地扩展比较困难。,4不同应用场景对应的存储选择 CPU密集的应用环境:某种应用极其消耗CPU资源,其程序内部逻辑复杂而且对磁盘访问量不高。这种程序在运行时根本不用或只需少量读取磁盘上的数据,只是在程序载入的时候读入一点点程序数据而已。进程运行后便会使CPU的核心处于全速状态,这会造成其他进程在同一时间只能获得少量的执行时间,进而严重影响性能。,I/O密集的应用环境:某种程序的内部逻辑并不复杂、耗费的CPU资源不多,但要随时读取磁盘上的数据,如FTP服务器。对高并发随机小块I/O或共享访问文件的应用环境:我们往往会采用NAS。因为对小块的
13、I/O读/写并不会对网络造成大的影响,并且NAS提供了网络文件共享协议。,4.2 大数据时代的存储管理系统,在普通PC中,目前已经被广泛使用的存储管理系统有普通的文件系统、键-值数据库和关系型数据库。在大数据时代,普通PC的存储容量已经无法满足大数据需求,需要进行存储技术的变革,我们采用分布式平台来存储大数据。,4.2.1 文件系统1文件系统简介 在计算机中,文件系统(File System)是提供了命名文件及放置文件的逻辑存储和恢复等功能的系统。DOS、Windows、OS/2、Macintosh和UNIX-based操作系统都有文件系统。在此系统中,文件被放置在分等级的(树状)结构中的某一
14、处。文件被放进目录(Windows中的文件夹)或子目录。文件系统是软件系统的一部分,它的存在使应用可以方便地使用抽象命名的数据对象和大小可变的空间。,2操作系统和文件系统的关系 文件系统是操作系统用于存储设备(磁盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构被称为文件管理系统,简称文件系统。文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,允许用户进行存入、读出、修改等操作。,4.2.2 分布式文件系统1分布式文件系统简介 普通文件系统的存储容量有限,但是大
15、数据一般都是海量数据,无法在以前的普通文件系统进行存储。分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。和以前使用多个处理器和专用高级硬件的并行化处理装置不同的是,目前的分布式文件系统所采用的计算机集群,都是由普通硬件构成的,这就大大降低了硬件上的成本开销。计算机集群的基本架构如图4-11所示。,图4-11 计算机集群的基本架构,2分布式文件系统的整体结构 如图4-12所示,分布式文件系统在物理结构上是由计算机集群中的多个节点构成的。这些节点分为两类,一类叫“主节点(Master Node)”或者也被称为“名称节点(NameNode)”,另一类叫“从节点(S
16、lave Node)”或者也被称为“数据节点(DataNode)”。,图4-12 分布式文件系统的整体结构,3Apache下的分布式文件系统 Hadoop是Apache软件基金会旗下的一个分布式系统基础架构。Hadoop框架最核心的设计就是HDFS、MapReduce,为海量的数据提供存储和计算。MapReduce主要运用于分布式计算,HDFS主要是Hadoop的存储,用于海量数据的存储。HDFS是一个分布式文件系统,具有高容错的特点。它可以部署在廉价的通用硬件上,提供高吞吐率的数据访问,适合那些需要处理海量数据集的应用程序。HDFS使用的是传统的分级文件体系,因此,用户可以像使用普通文件系统
17、一样,创建、删除目录和文件,在目录间转移文件,重命名文件等。,在HDFS中,一个文件被分成多个块,以块作为存储单位,块的作用如下。(1)支持大规模文件存储(2)简化系统设计(3)适合数据备份,HDFS采用了主从(Master/Slave)结构模型,如图4-13所示。一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点负责处理客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地Linux文件系统中的。,图4-1
18、3 HDFS的体系结构,HDFS主要组件的功能(见图4-14)。,图4-14 HDFS主要组件的功能,(1)NameNode 名称节点(NameNode)存储元数据,元数据被保存在内存中(磁盘上也保存了一份),保存文件Block、DataNode之间的映射关系;NameNode记录了每个文件中各个块所在的DataNode的位置信息。元数据的内容包括文件的复制等级、修改和访问时间、访问权限、块大小及组成文件的块。对目录来说,NameNode存储修改时间、权限和配额元数据。,(2)DataNode 数据节点(DataNode)负责数据的存储和读取,数据被保存在磁盘中,维护BlockId到DataN
19、ode本地文件的映射关系。DataNode定期向NameNode发送Block信息以保持联系,如果NameNode在一定的时间内没有收到DataNode的Block信息,则认为DataNode已经失效了,NameNode会复制其上的Block到其他DataNode。,4.2.3 数据库 数据库(DataBase)就是一个存放数据的仓库。这个仓库是按照一定的数据结构(数据结构是数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方式来管理数据库里的数据。数据库家族如图4-15所示。,图4-15 数据库家族,1关系型数据库 关系型数据库把复杂的数据结构归结为简单的二元关系(
20、即二维表格形式)。在关系型数据库中,程序对数据的操作几乎全部建立在一个或多个关系表格上,即程序通过对这些关联表的表格分类、合并、连接或选取等运算来实现对数据的管理。,2非关系型数据库 非关系型数据库也被称为NoSQL数据库,如图4-16所示。NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底否定关系型数据库,而是成为传统关系型数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。,图4-16 非关系型数据库,NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与A
21、CID理论“大一统”的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语(NoSQL)在2009年初得到了广泛认同。当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求,而NoSQL存储就是满足这个需求而诞生的。NoSQL典型产品包括Memcached、Redis、MongoDB、HBase等。,4.2.4 键-值数据库 键-值(Key-Value)数据库是一种NoSQL数据库,用户可以通过Key来添加、查询或者删除数据。因为使用Key主键访问,所以会获得很高的性能及扩展性。键-值存储非常适合不涉及过多数据关系和业务关
22、系的数据,同时能有效减少读/写磁盘的次数,比SQL数据库存储拥有更好的读/写性能。键-值数据库主要使用一个哈希表,这个表有一个特定的键和一个指针指向特定的数据。Key-Value模型对IT系统的优势在于简单、易部署、高并发。,1键-值对的存储 键-值对存储是数据库最简单的组织形式。键-值对存储通常都有如下接口。(1)Get(Key):获取之前存储于某标示符“Key”之下的一些数据,如果“Key”下没有数据则报错。(2)Set(Key,Value):将“Value”存储到存储空间中某标示符“Key”下,使我们可以通过调用相同的“Key”来访问它。如果“Key”下已经有了一些数据,旧的数据将被替换
23、。(3)Delete(key):删除存储在“Key”下的数据。,2键-值数据库的优缺点 优点:在键已知的情况下查找内容,键-值数据库的访问速度比关系型数据库快好几个数量级。缺点:在键未知的情况下查找内容,键-值数据库的访问速度是非常糟糕的。因为键-值数据库不知道存储的数据是结构的还是内容的,它没有关系型数据库中那样的数据结构,无法像SQL那样用WHERE语句或者通过任何形式的过滤来请求数据库中的一部分数据,它必须遍历所有的键,获取它们对应的值,进行某种用户所需要的过滤,然后保留用户想要的数据。市场上流行的键-值数据库有Memcached、Redis、MemcacheDB、Berkeley DB
24、。,4.2.5 分布式数据库 HBase(分布式数据库)是一种NoSQL(非关系型数据库)模型,经常用于分布式环境里,是一个分布式的结构化数据存储系统,是Apache的一个开源项目,是Google公司的BigTable的开源实现。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群来处理超过10亿行数据和数百万列元素组成的数据表。,HBase是一个疏松的、分布式的、已排序的多维度持久化的列族数据库。列存储数据库将数据存在列族(column family)中,一个列族存储经常被一起查询的相关数据。例如,如果我们有一个Person类,我们通常会一起查询其姓名和年龄,而不是
25、薪资。在这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另外一个列族中。,若要使用HBase,我们需要了解如下6个重要概念。(1)表(table):HBase采用表来组织数据。(2)行(row):每个表都由行组成,每个行由行键(rowkey)来标识。(3)列族(column family):一个table有多个列族。,(4)列限定符:是column family的分类,每个column family可以有不同的分类。(5)时间戳(timestamp):时间戳用来区分数据的不同版本。(6)单元格(cell):在table中,通过行、列族、子列、时间戳来确定一个cell,cell中存储的数据
26、没有数据类型,是字节数组byte。HBase的结构示例如图4-17所示。,图4-17 HBase的结构示例,在HBase数据库表中插入数据应使用put操作。例如,使用如下语句可向数据库表中插入3条数据。,put t1,rowkey001,f1:col1,value01bput t1,rowkey001,f1:col2,value02put t1,rowkey001,f2:col1,valuef2col1,查看刚才插入的数据使用scan命令,结果如图4-18所示。,图4-18 使用scan命令查看表的结果,4.2.6 关系型数据库1关系型数据库的特点(1)关系型数据库,是建立在关系模型基础上的数
27、据库,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。(2)所谓关系模型就是“一对一、一对多、多对多”等二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。,(3)关系型数据库以行和列的形式存储数据,这一系列的行和列被称为表,一组表组成了数据库。(4)关系型数据库里面的数据是按照“数据结构”来组织的,因为有了“数据结构”,所以关系型数据库里面的数据是“条理化”的。,2关系型数据库的基本概念(1)表:表是一系列二维数组的集合,用来代表和存储数据对象之间的关系。它由纵向的列和横向的行组成。(2)行:也称元组或记录,在表中是一条横向的数据集合。(3)列:也称
28、字段,在表中是一条纵向的数据集合,列也定义了表中的数据结构。,3结构化查询语言 结构化查询语言(Structured Query Language,SQL)用于对关系型数据库里的数据和表进行查询、更新和管理。常用操作如下。创建数据库表:CREATE DATABASE 其他参数查询:SELECT*FROM 表 WHERE 条件表达式。增加:INSERT INTO 表名(列名1,列名2,)VALUES(列值1,列值2,)。删除:DELETE FROM 表名WHERE 条件表达式。修改:UPDATE 表名 SET 列名=值WHERE 条件表达式。,4事务的ACID特性 事务的ACID特性包括:原子性
29、(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。(1)原子性:整个事务中的所有操作,要么全部成功,要么全部失败,没有中间状态。(2)一致性:事务是按照预期生效的,一致性的核心一部分靠原子性实现,另一部分靠逻辑实现。,(3)隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的。事务的隔离级别一共有4种状态,可以在数据库中进行设置。(4)持久性:在事务完成以后,保证事务对数据库所做的更改被持久地保存在数据库之中。常见的关系型数据库有Oracle、SQL Server、MySQL、SQLite、PostgreSQL、S
30、qlite。,4.2.7 数据仓库 数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合。Hive是一个构建于Hadoop上的数据仓库工具,支持大规模数据存储、分析,具有良好的可扩展性。它的底层依赖分布式文件系统HDFS存储数据,并使用分布式并行计算模型MapReduce处理数据。Hive定义了简单的类似于SQL的查询语言HiveQL,用户可以通过编写的HiveQL语句运行MapReduce任务。,下面通过实例简单介绍Hive的常见
31、操作。1创建表 以下语句在Hive数据库中创建表usr,含有3个属性,即id、name、age。,hive use hive;hivecreate table if not exists usr(id bigint,name string,age int);,以下语句在Hive数据库中,创建表usr,含有3个属性,即id、name、age,存储路径为“/usr/local/hive/warehouse/hive/usr”。,hivecreate table if not exists hive.usr(id bigint,name string,age int)location/usr/loc
32、al/hive/warehouse/hive/usr;,2查看数据库 以下语句查看Hive中包含的所有数据库。以下语句查看Hive中以h开头的所有数据库。,hive show databases;,hiveshow databases like h.*;,3查看表和视图 以下语句查看数据库Hive中所有的表和视图。以下语句查看数据库Hive中以u开头的所有表和视图。,hive use hive;hive show tables;,hive show tables in hive like u.*;,4向表中加载数据 以下语句把目录“/usr/local/data”下的数据文件中的数据加载进us
33、r表并覆盖原有数据。,ive load data local inpath/usr/local/data overwrite into table usr;,以下语句把目录“/usr/local/data”下的数据文件中的数据加载到usr表,且不覆盖原有数据。以下语句把分布式文件系统目录“hdfs:/master_server/usr/local/data”下的数据文件中的数据加载到usr表,并覆盖原有数据。,hive load data local inpath/usr/local/data into table usr;,hive load data inpath hdfs:/master
34、_server/usr/local/data overwrite into table usr;,图4-19所示是Hive的应用流程。第一个阶段是从各种数据源获取数据,数据源可以是文档、关系型数据库等;第二个阶段是数据被抽取转换和加载存放到数据仓库中;第三个阶段是分析和挖掘数据仓库中存储的数据,然后应用到各种场景中,如数据挖掘系统、报表分析系统、查询应用等。图4-19涉及一些相关定义:OLTP是传统的关系型数据库的主要应用,主要是基本的日常事务处理,如银行交易;OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。,图4-19 Hive的应用流程,4.
35、2.8 文档数据库 文档数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值。此值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。MongoDB是一种用得比较多的文档数据库,是非关系型数据库中功能最丰富、最像关系型数据库的数据库。它支持的数据结构非常松散,类似JSON的BSON格式,因此可以存储比较复杂的数据类型。,1MongoDB的基本概念(1)文档 简单地说,文档可
36、以被理解为一个文本文件,不过这个文本文件有固定的格式,即使用BSON的有序键-值对;文档就相当于表中的一条记录;MongoDB的文档可以使用不同的字段,并且相同的字段可以使用不同的数据类型;文档中的值不仅可以是在双引号中的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档);MongoDB区分类型和大小写。,(2)文档的键 键是字符串类型,MongoDB的文档不能有重复的键。(3)集合 多个文档组成一个集合(见图4-20),相当于关系型数据库的表,通常包括常规集合及定长集合;集合存在于数据库中,无固定模式,即使用动态模式,也就是说,集合不要求每一个文档使用相同的数据类型及列。(4)数据
37、库 一个MongoDB实例可以包含多个数据库;一个数据库可以包含多个集合;一个集合可以包含多个文档。,图4-20 多个不同的文档组成了一个集合,2MongoDB的适用场景(1)更高的写入负载 在默认情况下,MongoDB更侧重大数据和高频率的写入性能,而非事务安全,MongoDB很适合业务系统中有大量“低价值”数据的场景。但是应当避免在高事务安全性的系统中使用MongoDB,除非能从架构设计上保证事务安全。(2)高可用性 MongoDB的主副集(Master-Slave)配置非常简洁、方便,此外,MongoDB可以快速地处理单节点故障,自动、安全地完成故障转移。这些特性使MongoDB能在一个
38、相对不稳定的环境中保持高可用性。,(3)表结构不明确 数据在不断变大在一些传统RDBMS中,增加一个字段会锁住整个数据库/表,或者在执行一个重负载的请求时会明显造成其他请求的性能降级,这些情况通常发生在数据表大于1GB的时候(当大于1TB时更甚)。因为MongoDB是文档数据库,为非结构化的文档增加一个新字段是很快速的操作,并且不会影响到已有数据。另外,当业务数据发生变化时,不需要由DBA修改表结构。,4.2.9 图形数据库 图形数据库是一种NoSQL数据库,它应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系。一个图形数据库最主要的组成有两种,即节点集和连接节点的关
39、系。节点集就是图4-21中一系列节点的集合,比较接近于关系型数据库中最常使用的表,而关系则是图形数据库所特有的。,图4-21 图形数据库,从图4-22可以看到,在关系型数据库中,在需要表示多对多关系时,我们常常需要创建一个关联表来记录不同实体的多对多关系,而且这些关联表常常不用来记录信息。如果两个实体之间有多种关系,我们就需要在它们之间创建多个关联表。而在一个图形数据库中,我们只需要标明两者之间存在着不同的关系。图形数据库典型的产品有Neo4J、InfoGrid。,图4-22 关系型数据库与图形数据库,4.2.10 云存储 云存储是一个新的概念,是一种新兴的网络存储技术,指通过集群应用、网络技
40、术或分布式文件系统等功能,借助应用软件将网络中大量各种不同类型的存储设备集合起来协同工作,共同对外提供数据存储和业务访问功能的一种服务,如图4-23所示。,图4-23 云存储,1云存储的特点(1)存储管理可以实现自动化和智能化,所有的存储资源被整合到一起,客户看到的是单一存储空间。(2)云存储通过虚拟化技术解决了存储空间的浪费,可以重新自动分配数据,提高了存储空间的利用率,同时具备负载均衡、故障冗余功能。(3)云存储能够实现规模效应和弹性扩展,降低运营成本,避免资源浪费。,2云存储的优点(1)节约成本(2)更好地备份数据并可以异地处理日常数据(3)访问更便捷(4)提高竞争力,3云存储的架构 云
41、存储的架构由存储层、基础管理层、应用接口层、访问层构成,如图4-24所示。,图4-24 云存储的架构,(1)存储层 存储层是云存储最基础的部分。存储设备可以是FC光纤通道存储设备,可以是NAS存储设备,也可以是SAN或DAS等存储设备。云存储中的存储设备往往数量庞大且分布于不同地域,彼此之间通过广域网、互联网或者FC光纤通道网络连接在一起。存储设备之上是一个统一存储设备管理系统,可以实现存储设备的逻辑虚拟化管理、多链路冗余管理,以及硬件设备的状态监控、故障维护。,(2)基础管理层 基础管理层是云存储最核心的部分,也是云存储中最难以实现的部分。基础管理层通过集群系统、分布式文件系统和网格计算等技
42、术,实现云存储中多个存储设备之间的协同工作,使多个的存储设备可以对外提供同一种服务,并提供更大、更强、更好的数据访问性能。CDN内容分发系统、数据加密技术保证云存储中的数据不会被未授权的用户所访问。同时,通过各种数据加密、数据备份、数据容灾的技术和措施,确保云存储中的数据不会丢失,保证云存储自身的安全和稳定。,(3)应用接口层 应用接口层是云存储最灵活多变的部分。不同的云存储运营单位可以根据实际业务类型,开发不同的应用服务接口,提供不同的应用服务。云存储运营单位不同,云存储提供的访问类型和访问手段也不同。(4)访问层 任何一个授权用户都可以通过标准的公用应用接口来登录云存储系统,享受云存储服务,如视频监控应用平台、IPTV和视频点播应用平台、网络硬盘应用平台、远程数据备份应用平台等。,