存储系统综述范文大全 第一篇
Apache ORC 最初是为支持 Hive 上的 OLAP 查询开发的一种文件格式,如今在 Hadoop 生态系统中有广泛的应用。ORC 支持各种格式的字段,包括常见的 int、string 等,也包括 struct、list、map 等组合字段;字段的 meta 信息就放在 ORC 文件的尾部(这被称为自描述的)。
数据结构及索引
为分区构造索引是一种常见的优化方案,ORC 的数据结构分成以下 3 个层级,在每个层级上都有索引信息来加速查询。
ORC 里的 Stripe 就像传统数据库的页,它是 ORC 文件批量读写的基本单位。这是由于分布式储存系统的读写延迟较大,一次 IO 操作只有批量读取一定量的数据才划算。这和按页读写磁盘的思路也有共通之处。
ACID 支持
Apache ORC 提供有限的 ACID 事务支持。受限于分布式文件系统的特点,文件不能随机写,那如何把修改保存下来呢?
类似于 LSM-Tree 中的 MVCC 那样,writer 并不是直接修改数据,而是为每个事务生成一个 delta 文件,文件中的修改被叠加在原始数据之上。当 delta 文件越来越多时,通过 minor compaction 把连续多个 delta 文件合成一个;当 delta 变得很大时,再执行 major compaction 将 delta 和原始数据合并。
这种保持基线数据不变、分层叠加 delta 数据的优化方式在列式存储系统中十分常见,是一种通用的解决思路。
存储系统综述范文大全 第二篇
关键词:备份;存储;分布式;P2P;技术
1存储与备份技术的高效性
高性能多源下载过程
(1)服务器根据相关信息返回存储需要下载文件的Slave的具体信息;(2)根据文件大小和Slave的负载状态,选择合适的Slave建立socket连接对文件进行分块下载;(3)下载完成后把各个文件块合并成为原始文件。
静态下载
在静态下载中,不考虑备份文件的大小,服务器的负荷量,采取统一的模型进行下载。算法如下:(1)得到备份文件所在服务器的个数n,以及每个服务器的IP地址和端口号;(2)得到文件的总大小size,按照文件分割算法,把文件分割为n块;(3)与每个服务器建立连接,从每个服务器上下载一块文件;(4)下载完成后,把所有文件块合并成一个完整的文件,存储在备份介质上;(5)保存备份文件的相关元数据信息;(6)文件下载、备份完成。
动态下载
在动态下载模型中,要综合考虑各方面因素,动态决定文件是否分块进行多源下载,以及文件块的大小,提高系统资源利用率,进而提高备份效率。对于没有冗余的文件,只能从一个节点上下载。对于较小的文件,使用单线程下载;对于较大的文件,可以采用多线程下载。对于有多个冗余的文件,可以动态选取从负荷量较低的节点进行下载。伪算法表示如下:
首先定义如下变量:文件大小阀值Tl,当文件大小大于Tl时采用多源下载;节点标准负荷T2,若节点负荷大于T2,则节点处于重负荷状态;文件大小size文件冗余数n。
算法表示如下:
if(文件没有冗余)
无须分块下载,可以采用多线程从存储文件的节点上下载文件;
else{
if(文件大小size
无须多源下载,从存储文件的节点中选取负荷最小的节点,下载文件;
elsel
得到存储文件的n个节点的信息;
从n个节点上选择负荷小于阀值T2的节点,节点数目为m;
利用文件分割算法把文件分割为m块;
与选中的m个节点建立连接,从每个节点上下载一个文件块;
下载完成后,把m个文件块合并成为完整的文件;
把文件存储在备份介质;
2存储与备份技术的一致性
锁和快照技术
锁就是当进行数据备份时,对需要备份的数据加锁,此时禁止对数据进行修改。由于备份时禁止对数据的修改,锁技术对数据的可用性会造成一定的影响,会影响到系统的效率。快照就是在相当短的时间内生成原存储系统的瞬时映像,该映像生成之后,备份就可以根据该映像来进行,而不用担心数据的不一致性。快照技术的实现有两种方式:更新复制方式和Split-mirror方式。更新复制技术就是当进行快照时,并不立刻复制数据,只有当数据发生变化时才进行复制。Split-mirror是使用和主存储系统一样的快照存储系统,数据同时保存在主存储系统和快照系统,此时快照系统就可作为备份数据。
在线备份
在分布式文件访问平台中,存在着海量的文件,文件的信息较多,若把文件的信息逐个复制则要浪费大量的时间、空间,对系统的可访问性造成影响。WAFL文件系统使用了更新复制技术。当创建系统快照时,并不立刻复制所有文件信息,而是创建新的快照根节点,它与原文件系统根节点有相同的信息,文件系统中根节点的子节点也为快照根节点的子节点。此时以快照根节点为根节点生成了一棵快照树,它和原文件系统树除了根节点以外,其余部分相同。当文件信息需要修改时,创建新的节点,把文件信息赋给此节点,并把节点作为快照节点插入快照树中,同时修改原节点的信息,具体分为以下情况:
(1)修改文件信息:当对文件的基本信息进行修改时,如更改文件名称等,此种情况下比较简单,伪算法如下:if修改文件)
创建新的节点作为快照节点;
把原节点的信息复制到快照节点;
把快照树中指向原节点的指针指向快照节点;
快照节点儿子节点的指针指向原节点的儿子节点;
修改原节点的信息;
修改文件信息具体过程如图3:
(2)移动文件:当把文件或者目录从一个目录移动到另外一个目录下时,具体伪算法如下:
if移动文件)
创建新的快照节点;
把原节点的信息复制到快照节点;
复制原父目录的信息,添加到快照树中;
把快照树中指向原节点的指针指向快照节点;
快照节点儿子节点的指针指向原节点的儿子节点;
复制新父目录的信息,修改子节点,添加到快照树中;
修改原节点的信息,把原节点移动到新的目录下;
移动文件过程如图4所示:
(3)新建文件:当新建文件时,具体伪算法如下:
if(新建文件)
创建新的节点,并给节点赋予相应的文件信息;
在文件系统树中找到节点的父目录;
if(若父目录己经创建了副本),
把创建的节点插在文件系统树中父目录节点下;
else{
父目录创建副本;
副本赋予相应的信息;
父目录副本儿子节点即为父目录的儿子节点;
快照树中指向原来父目录的指针指向副本;
新建节点插在文件系统树中父目录节点下;
新建文件过程如图5所示:
备份的实现
在创建好快照树之后,就可以进行在线备份。快照树保存的信息就是开始备份瞬间所有文件的信息,进行在线备份时,首先从快照树的根节点开始,逐个访问节点,按顺序对快照树进行遍历、备份,保证了数据的一致性,并且可以在备份的同时允许对数据进行修改,不影响用户的访问。
3存储与备份的可靠性
在分布式系统中存储着海量的数据,数据量大,备份的时间较长,在备份的过程中可能会出现错误情况或者发生意外的中断。因此备份过程中需要随时记录备份的进度,这样在备份发生错误或者异常时,下次备份能够在上次备份的出错点继续进行,实行断点备份,而不用重新开始备份。断点备份过程中,使用日志表来记录备份过程,把每次备份的信息写入日志表。日志表如表1:
伪算法
if(日志表为空)
无须查找断点位置,直接开始备份,备份时把每一个文件的备份信息添加
到日志表;
else{
while(日志表尚未查找完毕)
对于表中每一项,查找此项对应文件在树中的具体位置;
if(此文件尚未备份完成)
记录此文件,即为断点位置;
当日志表查找完成后,即可得到未备份完成的文件;
从断点位置开始继续备份,并把文件备份信息添加到日志表;
本次备份完成后把日志表清空
名称定义
ID文件独一无二的ID
TYPE备份类型,可以是完全备份、增量备份、差量备份
STARY_TIME开始备份时间
FINISHED是否完成
ISFOLDER是否为文件夹
PARENTID文件父节点ID
算法复杂度
若日志表中的记录个数为K,文件总数为N。则对于每一个记录项,要查找其在文件树中的位置,当前一个记录项查找到时,由于遍历的顺序性,后一个记录项可以从前一个的位置继续向后查找,这样,可以保证K个记录项查找次数为K,也即为O(n)。当备份发生错误或者中断时,通过此算法,能够在相当少的时间内,找到断点位置,下一次备份时可以直接从断点位置继续进行,实现断点备份,保证了备份的可靠性。
参考文献
[1]牛云,徐庆.数据备份与灾难恢复[M].北京:机械工业出版社,2007.
[2]张联峰,刘乃安,张玉清.P2P技术[J].计算机工程与应用,2007,(12).
[3]刘天时,赵正.一种通用数据库数据整理方法[J].计算机工程,2007,(2).
[4]韩德志,谢长生,李怀阳.存储备份技术探析[J].计算机应用研究,2006,(5).
[5]谢川.数据备份技术的初探[J].中国科技信息,2006,(12).
存储系统综述范文大全 第三篇
无论对于磁盘还是内存数据库,IO 相对于 CPU 通常都是系统的性能瓶颈,合理的压缩手段不仅能节省空间,也能减少 IO 提高读取性能。列式存储在数据编码和压缩上具有天然的优势。
以下介绍的是 C-Store 中的数据编码方式,具有一定的代表性。根据 1) 数据本身是否按顺序排列(self-order) 2) 数据有多少不同的取值(distinct values),分成以下 4 种情况讨论:
编码之后,还可以对数据进行压缩。由于一列的数据本身具有相似性,即使不做特殊编码,也能取得相对较好的压缩效果。通常采用 Snappy 等支持流式处理、吞吐量高的压缩算法。
最后,编码和压缩不仅是节约空间的手段,更多时候也是组织数据的手段。在 PowerDrill、Dremel 等系统中,我们会看到很多编码本身也兼具了索引的功能,例如在扫描中跳过不需要的分区,甚至完全改表查询执行的方式。
存储系统综述范文大全 第四篇
1云计算的特征
2云存储未来发展趋势
云存储已经成为存储将来发展的方向,目前多家供应商把不同类型的搜索、技术和云存储的应用程序相结合,提供一系列的企业数据服务,使得其更好、更安全。云存储的发展趋势,主要是未来发展的安全性、便携性和兼容性等。
2.1云存储的安全性
2.2云存储的便携性
便携式数据存储也是一些用户需要思考的事情。有很多大型ISP承诺提供的本地存储相媲美的优良传统数据便携性的解决方案。构建私有云,或VPN,是部分一些企业用户的云存储,尤其是对设计的要求,合资公司的分支机构的大型项目中,除了云存储作为云计算平台提供存储资源,可以使用数字资产的集中管理,而且还可以保护不同站点之间数据的一致性,促使更好地完成工作。便携的特点可以帮助用户转移为他所选择的任何媒体,甚至是专门的存储设备中的全部数据。
2.3云存储的兼容性
对于企业来说,一个主要的问题是如何能使现有业务系统转移到云平台,尤其是企业,一个小错误的发展,可能会导致无法承受的经济损失,因为他们有限的容忍错误能力。因为不同云服务提供商的接口是不同的,结构是不一样的,因此有兼容性问题。云和云之间的沟通问题,但还需要一个解决方案。将不能够将数据迁移到一个较低的水平,传统的ILM没有部署到市场上的云计算平台。这些都需要现在能够部署云计算平台,采取适当的存储产品。在实际使用中,用户的部署往往发现后续扩展,往往只需要最低的成本最低的扩展存储介质,它提供了传统的云计算平台的整体性能无法相比的优势。
3结语
存储系统综述范文大全 第五篇
我们知道,由于机械磁盘受限于磁头寻址过程,读写通常都以一块(block)为单位,故在操作系统中被抽象为块设备,与流设备相对。这能帮助上层应用是更好地管理储存空间、增加读写效率等。这一特性直接影响了数据库储存格式的设计:数据库的 Page 对应一个或几个物理扇区,让数据库的 Page 和扇区对齐,提升读写效率。
那如何将数据存放到页上呢?
大多数服务于在线查询的 DBMS
采用 NSM (N-ary Storage Model) 即按行存储的方式,将完整的行(即关系 relation)从 Header 开始依次存放。页的最后有一个索引,存放了页内各行的起始偏移量。由于每行长度不一定是固定的,索引可以帮助我们快速找到需要的行,而无需逐个扫描。NSM 的缺点在于,如果每次查询只涉及很小的一部分列,那多余的列依然要占用掉宝贵的内存以及 CPU Cache,从而导致更多的 IO;为了避免这一问题,很多分析型数据库采用 DSM (Decomposition Storage Model) 即按列分页:将 relation 按列拆分成多个 sub-relation。类似的,页的尾部存放了一个索引。
顺便一提,2001 年 Ailamaki 等人提出 PAX (Partition Attributes Cross) 格式,尝试将 DSM 的一些优点引入 NSM,将两者的优点相结合。具体来说,NSM 能更快速的取出一行记录,这是因为一行的数据相邻保存在同一页;DSM 能更好的利用 CPU Cache 以及使用更紧凑的压缩。PAX 的做法是将一个页划分成多个 minipage,minipage 内按列存储,而一页中的各个 minipage 能组合成完整的若干 relation。
如今,随着分布式文件系统的普及和磁盘性能的提高,很多先进的 DBMS 已经抛弃了按页存储的模式,但是其中的某些思想,例如数据分区、分区内索引、行列混合等,仍然处处可见于这些现代的系统中。
存储系统综述范文大全 第六篇
传统 OLTP 数据库通常采用行式存储。以下图为例,所有的列依次排列构成一行,以行为单位存储,再配合以 B+ 树或 SS-Table 作为索引,就能快速通过主键找到相应的行数据。
行式存储对于 OLTP 场景是很自然的:大多数操作都以实体(entity)为单位,即大多为增删改查一整行记录,显然把一行数据存在物理上相邻的位置是个很好的选择。
然而,对于 OLAP 场景,一个典型的查询需要遍历整个表,进行分组、排序、聚合等操作,这样一来按行存储的优势就不复存在了。更糟糕的是,分析型 SQL 常常不会用到所有的列,而仅仅对其中某些感兴趣的列做运算,那一行中那些无关的列也不得不参与扫描。
列式存储就是为这样的需求设计的。如下图所示,同一列的数据被一个接一个紧挨着存放在一起,表的每列构成一个长数组。
显然,列式存储对于 OLTP 不友好,一行数据的写入需要同时修改多个列。但对 OLAP 场景有着很大的优势: