海量数据存储重点总结

关键词: 海量 时代 信息 数据

海量数据存储重点总结(精选6篇)

篇1:海量数据存储重点总结

国外海量数据离线存储产品应用

在当先信息技术高速发展的情况下,不同类型的信息、数据爆发式的产生。同时,当今社会及经济发展中需要将从前工作、生活、经济活动所产生的非数字化信息及数据进行数字化处理以方便今后对此类数据进行查询、分拣、处理及备份。此数字化过程同样会产生大量的重要数据。这就需要有相应的系统对此大量的重要数据进行备份及保存。

此种数据的特点是信息重要,数据量大。为了保证数据的安全及完备性,需要对数据进行存储,并与相应的处理设备进行分离。这样做既保证了数据的安全又保证备份数据不会受到处理设备的干扰。尤其在911事件后,对数据安全及数据完整性要求较高的企业及机构意识到需要将相应的数据进行周期性的离线备份并将此离线备份数据与原始数据进行分离保管。所以就需要一种专门快速的可以对大量数据进行离线备份的设备来满足此种功能需要。

国内外许多公司及商业、教育机构都采用离线存储设备解决海量重要数据的备份问题。

1、美国华盛顿大学采用此类设备对自身运作产生的大量实验数据和图书数据进行备份和存储。

2、美国国家图书馆采用此类设备对图书馆中的数字化图书进行备份和保存,从而有效的保存了历史文化遗产。

3、招商银行驻纽约办事处使用此类设备对敏感的客户资料和数据进行有效的保管和存储,从而保证了业务准确和快速的运作与发展。

由国家档案局档案科研所、浙江省档案局和北京汉龙思琪数码科技有限公司共同研发的海量数据离线存储柜,基于24V弱电库房安全保存保管情况,采用高科技集成技术,将多个大容量硬盘进行级联管理,采用离线保存管理系统,对电子数据进行安全、节能、便捷、利用性高的大容量数据离线科学管理。

专业的离线存储系统不仅在档案行业有广泛的市场应用前景,同时在图书、医疗、民政、广播电视、文化、军事等行业也有广泛的应用。它可以作为重要数

据在线存储的安全备份和应急服务,为在线存储的灾后数据恢复等提供安全、稳妥的数据保障。

海量数据离线存储系统可以对不同电子介质的海量数据进行统一的管理,以及对存储介质进行登记接收、备份存储、定期检测、长期保管和利用。

篇2:海量数据存储重点总结

下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。1.Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集

基本原理及要点:

对 于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这 个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。还有一个比较重要的问题,如 何根据输入元素个数n,确定位数组m的大小及hash函数个数。当hash函数个数k=(ln2)*(m/n)时错误率最小。在错误率不大于E的情况 下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应 该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2为底的对数)。举个例子我们假设错误率为0.01,则此时m应大概是n的13倍。这样k大概是8个。

注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)。通常单个元素的长度都是有很多bit的。所以使用bloom filter内存上通常都是节省的。

扩展:

Bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。Counting bloom filter(CBF)将位数组中的每一位扩展为一个counter,从而支持了元素的删除操作。Spectral Bloom Filter(SBF)将其与集合元素的出现次数关联。SBF采用counter中的最小值来近似表示元素的出现频率。问题实例:给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。如果是三个乃至n个文件呢? 根 据这个问题我们来计算下内存的占用,4G=2^32大概是40亿*8大概是340亿,n=50亿,如果

按出错率0.01算需要的大概是650亿个bit。现在可用的是340亿,相差并不多,这样可能会使出错率上升些。另外如果这些urlip是一一对应的,就可以转换成ip,则大大简单了。2.Hashing 适用范围:快速查找,删除的基本数据结构,通常需要总数据量可以放入内存

基本原理及要点:

hash函数选择,针对字符串,整数,排列,具体相应的hash方法。

碰撞处理,一种是open hashing,也称为拉链法;另一种就是closed hashing,也称开地址法,opened addressing。

扩展:

d-left hashing中的d是多个的意思,我们先简化这个问题,看一看2-left hashing。2-left hashing指的是将一个哈希表分成长度相等的两半,分别叫做T1和T2,给T1和T2分别配备一个哈希函数,h1和h2。在存储一个新的key时,同 时用两个哈希函数进行计算,得出两个地址h1[key]和h2[key]。这时需要检查T1中的h1[key]位置和T2中的h2[key]位置,哪一个 位置已经存储的(有碰撞的)key比较多,然后将新key存储在负载少的位置。如果两边一样多,比如两个位置都为空或者都存储了一个key,就把新key 存储在左边的T1子表中,2-left也由此而来。在查找一个key时,必须进行两次hash,同时查找两个位置。问题实例: 1).海量日志数据,提取出某日访问百度次数最多的那个IP。

IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。3.bit-map 适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下 基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码

扩展:bloom filter可以看做是对bit-map的扩展 问题实例: 1)已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。

8位最多99 999 999,大概需要99m个bit,大概10几m字节的内存即可。

2)2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。将bit-map扩展一下,用2bit表示一个数即可,0表示未出现,1表示出现一次,2表示出现2次及以上。或者我们不用2bit来进行表示,我们用两个bit-map即可模拟实现这个2bit-map。

4.堆 适用范围:海量数据前n大,并且n比较小,堆可以放入内存 基 本原理及要点:最大堆求前n小,最小堆求前n大。方法,比如求前n小,我们比较当前元素与最大堆里的最大元素,如果它小于最大元素,则应该替换那个最大元 素。这样最后得到的n个元素就是最小的n个。适合大数据量,求前n小,n的大小比较小的情况,这样可以扫描一遍即可得到所有的前n元素,效率很高。

扩展:双堆,一个最大堆与一个最小堆结合,可以用来维护中位数。问题实例: 1)100w个数中找最大的前100个数。

用一个100个元素大小的最小堆即可。

5.双层桶划分 适用范围:第k大,中位数,不重复或重复的数字

基本原理及要点:因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一个可以接受的范围内进行。可以通过多次缩小,双层只是一个例子。扩展: 问题实例: 1).2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。有点像鸽巢原理,整数个数为2^32,也就是,我们可以将这2^32个数,划分为2^8个区域(比如用单个文件代表一个区域),然后将数据分离到不同的区域,然后不同的区域在利用bitmap就可以直接解决了。也就是说只要有足够的磁盘空间,就可以很方便的解决。

2).5亿个int找它们的中位数。这个例子比上面那个更明显。首先我们将int划分为2^16个区域,然后读取数据统计落到各个区域里的数的个数,之后我们根据统计结果就可以判断中位数落到那个区域,同时知道这个区域中的第几大数刚好是中位数。然后第二次扫描我们只统计落在这个区域中的那些数就可以了。

实 际上,如果不是int是int64,我们可以经过3次这样的划分即可降低到可以接受的程度。即可以先将int64分成2^24个区域,然后确定区域的第几 大数,在将该区域分成2^20个子区域,然后确定是子区域的第几大数,然后子区域里的数的个数只有2^20,就可以直接利用direct addr table进行统计了。6.数据库索引 适用范围:大数据量的增删改查 基本原理及要点:利用数据的设计实现方法,对海量数据的增删改查进行处理。扩展: 问题实例: 7.倒排索引(Inverted index)适用范围:搜索引擎,关键字查询 基本原理及要点:为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。

以英文为例,下面是要被索引的文本: T0 = “it is what it is” T1 = “what is it” T2 = “it is a banana” 我们就能得到下面的反向文件索引: “a”: {2} “banana”: {2} “is”: {0, 1, 2} “it”: {0, 1, 2} “what”: {0, 1}

检索的条件“what”, “is” 和 “it” 将对应集合的交集。正 向索引开发出来用来存储每个文档的单词的列表。正向索引的查询往往满足每个文档有序频繁的全文查询和每个单词在校验文档中的验证这样的查询。在正向索引 中,文档占据了中心的位置,每个文档指向了一个它所包含的索引项的序列。也就是说文档指向了它包含的那些单词,而反向索引则是单词指向了包含它的文档,很 容易看到这个反向的关系。扩展: 问题实例:文档检索系统,查询那些文件包含了某单词,比如常见的学术论文的关键字搜索。8.外排序 适用范围:大数据的排序,去重 基本原理及要点:外排序的归并方法,置换选择 败者树原理,最优归并树

扩展:

问题实例: 1).有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16个字节,内存限制大小是1M。返回频数最高的100个词。这个数据具有很明显的特点,词的大小为16个字节,但是内存只有1m做hash有些不够,所以可以用来排序。内存可以当输入缓冲区使用。9.trie树 适用范围:数据量大,重复多,但是数据种类小可以放入内存 基本原理及要点:实现方式,节点孩子的表示方式 扩展:压缩实现。问题实例: 1).有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。要你按照query的频度排序。

2).1000万字符串,其中有些是相同的(重复),需要把重复的全部去掉,保留没有重复的字符串。请问怎么设计和实现?

3).寻找热门查询:查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个,每个不超过255字节。10.分布式处理 mapreduce 适用范围:数据量大,但是数据种类小可以放入内存

基本原理及要点:将数据交给不同的机器去处理,数据划分,结果归约。

扩展:

问题实例: 1).The canonical example application of MapReduce is a process to count the appearances of

each different word in a set of documents:

void map(String name, String document):

// name: document name

// document: document contents

for each word w in document: EmitIntermediate(w, 1);void reduce(String word, Iterator partialCounts): // key: a word // values: a list of aggregated partial counts int result = 0;for each v in partialCounts: result += ParseInt(v);Emit(result);Here, each document is split in words, and each word is counted initially with a “1” value by

the Map function, using the word as the result key.The framework puts together all the pairs

with the same key and feeds them to the same call to Reduce, thus this function just needs to

sum all of its input values to find the total appearances of that word.2).海量数据分布在100台电脑中,想个办法高效统计出这批数据的TOP10。

3).一共有N个机器,每个机器上有N个数。每个机器最多存O(N)个数并对它们操作。如何找到N^2个数的中数(median)? 经典问题分析 上千万or亿数据(有重复),统计其中出现次数最多的前N个数据,分两种情况:可一次读入内存,不可一次读入。

可用思路:trie树+堆,数据库索引,划分子集分别统计,hash,分布式计算,近似统计,外排序

所 谓的是否能一次读入内存,实际上应该指去除重复后的数据量。如果去重后数据可以放入内存,我们可以为数据建立字典,比如通过 map,hashmap,trie,然后直接进行统计即可。当然在更新每条数据的出现次数的时候,我们可以利用一个堆来维护出现次数最多的前N个数据,当 然这样导致维护次数增加,不如完全统计后在求前N大效率高。

如果数据无法放入内存。一方面我们可以考虑上面的字典方法能否被改进以适应这种情形,可以做的改变就是将字典存放到硬盘上,而不是内存,这可以参考数据库的存储方法。

当 然还有更好的方法,就是可以采用分布式计算,基本上就是map-reduce过程,首先可以根据数据值或者把数据hash(md5)后的值,将数据按照范 围划分到不同的机子,最好可以让数据划分后可以一次读入内存,这样不同的机子负责处理各种的数值范围,实际上就是map。得到结果后,各个机子只需拿出各 自的出现次数最多的前N个数据,然后汇总,选出所有的数据中出现次数最多的前N个数据,这实际上就是reduce过程。实际上可能想直 接将数据均分到不同的机子上进行处理,这样是无法得到正确的解的。因为一个数据可能被均分到不同的机子上,而另一个则可能完全聚集到一个机子上,同时还可 能存在具有相同数目的数据。比如我们要找出现次数最多的前100个,我们将1000万的数据分布到10台机器上,找到每台出现次数最多的前 100个,归并之后这样不能保证找到真正的第100个,因为比如出现次数最多的第100个可能有1万个,但是它被分到了10台机子,这样在每台上只有1千 个,假设这些机子排名在

1000个之前的那些都是单独分布在一台机子上的,比如有1001个,这样本来具有1万个的这个就会被淘汰,即使我们让每台机子选 出出现次数最多的1000个再归并,仍然会出错,因为可能存在大量个数为1001个的发生聚集。因此不能将数据随便均分到不同机子上,而是要根据hash 后的值将它们映射到不同的机子上处理,让不同的机器处理一个数值范围。

而外排序的方法会消耗大量的IO,效率不会很高。而上面的分布式方法,也可以用于单机版本,也就是将总的数据根据值的范围,划分成多个不同的子文件,然后逐个处理。处理完毕之后再对这些单词的及其出现频率进行一个归并。实际上就可以利用一个外排序的归并过程。

篇3:海量数据存储重点总结

海量光盘数据存储技术(Optical Disc Archive)基于成熟、稳定、可靠、安全、耐用的专业光盘技术,实现了海量光盘数据存储光盘与驱动器之间良好的代际兼容,而且在普通的环境中保存时间可以超过50年,其非接触式和非线性媒介的属性使文件检索的速度更快,为快速发展的电视台近线和离线海量数据存储提供了新的选择。

在展会期间,索尼中国专业系统集团节目制作市场部彭帅接受了本刊专访,详细为我们介绍了海量数据流光盘库存储系统的相关情况。

彭帅介绍说,目前电视台媒体资产管理系统使用的近线、离线存储介质主要是LTO数据流磁带,在实际使用中这些采用线性读写的LTO数据流磁带存在着一些固有的问题。

一是驱动器与磁带代际兼容性差。为增大数据存储密度LTO,驱动器和磁带每隔几年都会升级,但升级后的驱动器只能兼容上一代磁带的数据读写及前两代磁带的读出。因此,为了确保全部数据的可用性,用户必须不断地把早期磁带上的数据迁移拷贝到新一代磁带上,一般使用来说5~7年就必须要迁移一次,大大增加了近线/离线存储的工作量和成本,大量不断丢弃的磁带也在浪费资源和破环环境。

二是易老化不宜长期保存。LTO数据流磁带通过不断发展,其单盘容量大及产品的成熟度等优势非常明显,但其工艺特性采用"电-磁"的基本记录原理,"接触式"读写方式,长期存储后易产生掉磁,粘连等情况,因此也决定了其老化周期较短,难以做到长期有效的保存。

三是保存环境要求严格。LTO数据流磁带对存储条件非常敏感。磁带厂商引述的存储寿命年限是基于理想的存储条件。如:保存温度为16℃~35°C、湿度20%~50%、无尘和腐蚀性气体的环境。相对于理想条件,较小幅度偏移就会造成磁带寿命的大幅度减少。高温、高湿,强光环境会使磁带状况急速恶化。同时,灰尘是所有种类磁带的大敌,甚至很少量的灰尘进入磁带内都会让使用次数明显减少。

四是线性读写,数据定位时间长。根据数据存储在磁带的位置不同,所需磁头定位的时间也不同,一盘LTO数据流磁带完整倒带需要大约100秒时间。

现在的电视媒体资产管理应该采用能够适应时代发展的技术手段,既能够将以往的资料长期,安全地保存完好,还不会造成资源的损害与浪费。在这种需求背景下,海量光盘数据存储系统(Optical Disc Archive)应运而生。

面对展台上的产品,彭帅介绍到:海量光盘数据存储的存储媒体是便于操作的盘盒,外观与LTO磁带盒相仿,体积略大一些,每个盘盒内装12片裸盘,具有专业光盘的高可靠性和耐用性。目前海量光盘数据存储记录媒体共有4种容量.可重写的最大容量为1.2TB,一次写入多次读出的最大容量为1.5TB。

海量光盘数据存储盘盒进入驱动器后盘盒开放,盘片选择模块依据文件管理系统的指令选择取出相应的盘片,由移动加载模块放入光驱。存储文件较大需要跨盘读写时,盘片选择和移动加载模块根据文件管理系统的指令自动更换盘片。

海量光盘数据存储可以组成近线光盘库(Optical Disc Archive PetaSite海量数据流光盘库),该光盘库是模块化的,用户可以根据实际需求灵活配置。光盘库由基本单元与扩展单元构成。基本单元配有抓取海量光盘数据存储光盘的移动机械手,7U高,含30个槽位和2个驱动器。扩展单元同样7U高,分为两种规格,一种只含有101个槽位,另一种含有61个槽位和4个驱动器。单柜体最大配置42U,必须包含1个基本单元,最多可以加5个扩展单元,根据实际需求配置。单柜体42U最多可放置22个驱动器,335个光盘;或者最多535个光盘,2个驱动器。单柜体42U最大可以配置802TB的容量,通过第三方中间件,可以多机柜之间级联。根据中间件的指令,机械手从海量光盘数据存储槽位上自动抓取需要的海量光盘数据存储光盘并放置在相应的驱动器内进行数据读写操作(例:图1)。

近线存储系统需要使用中间件管理光盘库,中间件实际上是一个文件系统,它的作用是把光盘库内的全部光盘,驱动器和移动机械手虚拟成一个或几个巨大的存储卷。索尼公司可以向用户直接提供中间件软件产品,也可以向专业的中间件供应商提供单机版文件系统,包括驱动程序以及机械手控制协议。

当问及海量光盘数据存储的优势时,彭帅进行了一一盘点。

首先是高可靠性和高耐用性。海量光盘数据存储介质光盘可以适应各种工作环境,光盘外有抗静电的树脂保护外壳,其重复写入次数超过一千次,实际上一万次重写时误码率仍然低于纠错的容差范围,读出次数超过一百万次。盘片即使在高温、高湿、高腐蚀气体,高强光、液体浸泡侵蚀等恶劣环境中也同样安全(例:图2、图3、图4)。

第二是长寿命。存储寿命测试采用的是依据阿雷尼厄斯定律(Arrhenius Law)进行的模拟加速老化试验,即通过提高环境温度和湿度条件来模拟测试长时间保存后光盘读出数据的误码率。ISO标准的加速老化试验证明,海量光盘数据存储光盘的存储寿命超过50年(例:图5)。

第三是良好的代际兼容性。由于光盘采用的是非接触式数据读写技术,所以可以很容易实现良好的存储数据代际之间的兼容性,例如:现在最新的笔记本电脑上装配的光盘驱动器,不仅可以播放目前最新的民用蓝光的节目,也可以播放甚至是1982年诞生的CD音乐唱片。而数据流磁带采用的是机械的接触式线性扫描读写技术,为增大数据存储容量,其驱动器和磁带每隔几年都会升级,但升级后的驱动器只能兼容上一代磁带的数据读写及前两代磁带的读出。例如,在LTO-5的驱动器中,可以读写LTO-5和LTO-4磁带上的数据,或者读出LTO-3磁带上的数据,而不兼容以前LTO-1和LTO-2磁带上的数据。这样就使得用户不得不跟随着LTO驱动器和数据流磁带的升级,每隔5~7年必须进行定期的数据迁移,大大增加了近线/离线存储的工作量和成本。

第四是非接触随机读写。海量光盘数据存储光盘是"非接触性"数据读写,重复读写不会损伤盘体。而且海量光盘数据存储光盘为非线性随机读写,同时数据被分散在盘盒内的12个盘片上具有更快的文件检索和访问速度,而线性磁带需要更长的素材检索和定位时间(例:图6)。

第五,海量光盘数据存储系统在存储容量和存储成本,以及数据读取速度方面,基本上可以达到LTO数据流磁带的水平。由于海量光盘数据存储光盘巧妙地将12张裸盘集成在一个盘盒中,所以大大地超越了目前所有单片光盘存储介质的容量,目前海量光盘数据存储光盘的最大容量为1.5TB,和LTO-5数据流磁带相同。此外,还有4种容量和两种类型可选,可擦写的海量光盘数据存储光盘最大容量为1,2TB,每GB记录容量的成本大约0,1美元。

海量光盘数据存储驱动器(型号:ODS-D77U/F)目前读取速度最高1.1Gbps,与LT05磁带1,12Gbps的读取速度持平;但写入速度目前最高为730Mbps,低于LT05磁带的1.12Gbps,但随着新型号驱动器的推出,相信写入速度会继续提高。

此外彭帅告诉笔者,目前在全球范围开始应用的案例主要有:

TV Globe:巴西和葡萄牙语/西班牙语社区的主要电视台,选择海量光盘数据存储系列的ODS-D77F和ODA PetaSite可扩展光盘库产品(ODS-L30M,ODS-L60E/100E)作为归档和数字化工程的主要存储格式。系统将于2013年冬季开工,届时,TV Globe将在不改变现有工作流程的情况下,将素材存储到海量光盘数据存储系统中。

·IMAGICA株式会社:日本主要的节目制作公司,已经引进海量光盘数据存储系统,在节目制作过程中采用海量光盘数据存储作为备份介质。高可靠性、优良的代际兼容性和高效率,并且能够方便地将现有媒体资产迁移到海量光盘数据存储系统上是IMAGICA选择海量光盘数据存储系统的主要原因。

篇4:DNA不日或用于存储海量数据

研究人员已想出了通过DNA存储数据的一种办法,而DNA可以持续上万年的时间。

研究人员在近日发表于《自然》杂志的一篇论文中称,这种编码方法有望用大概一杯DNA就能存储至少1亿小时的高清视频。

这些研究人员来自位于英国的欧洲分子生物学实验室——欧洲生物信息研究所(EMBL-EBI),他们称已经用DNA存储了经过编码的马丁·路德·金的《我有一个梦想》演讲的MP3文件,以及EMBL-EBI的jpg照片和几个文本文件。

EMBL-EBI这篇研究报告的撰写者之一尼克·戈德曼(Nick Goldman)在声明中说:“我们已经知道,DNA是存储信息的一种有效方法,因为我们能够从数万年前的长毛猛犸象骨头中提取DNA,并且解读DNA密码。DNA还非常小、非常密集,不需要电力就能用于存储数据,所以运输和保存起来很容易。”

读取DNA非常简单,但写入DNA是一大障碍。目前面临两大挑战:首先,如果使用现有方法,只能制造短串的DNA。其次,读取和写入DNA容易出错,相同的DNA字母重复时更是容易出错。

尼克和另一位撰写者——EMBL-EBI副所长伊万·伯尼(Ewan Birney)着手编写克服这两个问题的编码。这种新方法需要合成来自编码信息的DNA。EMBL-EBI与总部位于加利福尼亚州的安捷伦科技公司(Agilent Technologies)合作,传输数据,然后用DNA对数据进行编码。安捷伦公司专门生产电子和生物分析测量仪器,比如示波器和信号发生器。

安捷伦公司从网上下载了文件,然后合成了数十万个代表数据的DNA片段。安捷伦的艾米丽·勒普劳斯特(Emily Leproust)说:“结果看起来像是一粒小小的灰尘。”

随后,安捷伦把样本寄给了EMBL-EBI。那里的研究人员能够测定DNA的序列,并对文件进行了解码,没有出现任何错误。

这不是第一次证明DNA是一种卓有成效的数据存储方法。去年秋天,哈佛大学的研究人员演示了通过DNA二进制代码,以HTML的格式存储700亿本书(书是同一本书)的功能。

研究人员通过DNA标记(DNA marker),创建了二进制代码,以保存这本书的文本,这本书名为《复活:合成生物学将如何通过DNA改造自然和我们人类自己?》。

戈德曼说:“我们发明了一种ECC,这种ECC专门用来处理测序技术——合成(写入)和测序(读取)——往往会出现的那些类型的错误。我们的试验完美无缺,这点很重要;哈佛大学的研究团队遇到了错误,即信息出现了丢失。”

戈德曼特别指出,EMBL-EBI演示了其编码方法可用于存储比那次试验多得多的信息。他说:“从理论上来说,我们可以把世界上的所有数字信息存储起来。”

戈德曼的团队还分析了这项技术的成本效益。预测表明,DNA存储介质实际上适用于不远的将来。比如说,用于存储全球和全国有历史价值的重要信息,以及对你想保存好几代的具有重要个人价值的信息进行长期存档,比如给子孙看的结婚视频。由于存入数据的过程很缓慢,研究人员认为DNA存储介质目前只适用于数据存档。

由于数据大幅增长,研究人员们正在寻求用越来越小的数据包存储数据的方法。

据市场研究公司IDC最新发布的《数字宇宙》研究报告声称,在未来8年,生成的数字数据量将超过40亿兆字节,这相当于地球上每个男人、女人和孩子有5200GB数据。

从现在到2020年,绝大部分数据不是人类生成的,而是机器生成的,许多机器通过数据网络进行联系。比如说,这将包括与其他设备联系的机器传感器以及智能设备。

尼克说:“我们开发了使用分子形式的一种容错编码,我们知道它在合适的条件下可以持续1万年或更长的时间。只要有人知道这编码是什么,要是有能够读取DNA的机器,那么就能把它读取出来。”

研究人员表示,开发过程的下一步是完善编码方法,并且探索实用性,从而为商业上可行的DNA存储模式铺平道路。

-沈建苗编译

篇5:海量数据存储关键技术浅析

当今是一个信息大爆炸的时代,网络的广泛使用更加剧了信息爆炸的速度。信息资源的爆炸性增长,对存储系统在存储容量、数据可用性以及I/O性能等方面提出了越来越高的要求。信息技术正从以计算设备为核心的计算时代步入以存储设备为核心的存储时代。

海量数据是指数据量极大,往往是Terabyte(1012bytes)、Petabyte(1015bytes)甚至Exabyte(1018bytes)级的数据集合。存储这些海量信息不但要求存储设备有很大的储存容量,且还需要大规模数据库来存储和处理这些数据,在满足通用关系数据库技术要求的同时,更需要对海量存储的模式、数据库策略及应用体系架构有更高的设计考虑。

2 海量数据存储模式选择

存储系统的存储模式影响着整个海量数据存储系统的性能,为了提供高性能的海量数据存储系统,应该考虑选择良好的海量存储模式。

对于海量数据而言,实现单一设备上的存储显然是不合适的,甚至是不可能的。结合网络环境,对它们进行分布式存储不失为当前的上策之选。如何在网络环境下,对海量数据进行合理组织、可靠存储,并提供高效、高可用、安全的数据访问性能成为当前一个研究热点。适合海量数据的理想存储模式应该能够提供高性能、可伸缩、跨平台、安全的数据共享能力。

2.1 现有存储模式分析

目前磁盘存储市场上,根据服务器类型存储分类如图1所示。

其中外挂存储占目前磁盘存储市场的70%以上。由于网络技术的崛起,直连式存储(DAS)已显得非常力不从心,存储模式从以服务器为中心转向以数据为中心的网络存储模式,目前典型的代表是:网络附加存储(NAS)和存储区域网络(SAN)[1,2,3]。

2.1.1 网络附加存储(NAS)

NAS(Network Attached Storage,网络附加存储)是一种文件级的网络存储模式,结构如图2所示。它拥有自己的文件系统,通过NFS或CIFS对外提供文件访问服务。NAS将存储设备通过标准的网络拓扑结构连接到现有的网络上来提供数据和文件服务。NAS管理简单、扩容方便,统一的文件系统使数据共享变得非常简单,所以其最大的优点是跨平台性很好,但NAS服务器在网络存储中处于数据通路上,当服务请求激增时存在I/O瓶颈,性能是NAS的最大问题,因此基于NAS的存储方案对于组建海量存储共享系统来说并不是一种理想的方案。

2.1.2 存储区域网络(SAN)

SAN(Storage Area Network,存储区域网络)结构如图3所示。它是存储设备与服务器经由高速网络设备连接而形成的存储专用网络。SAN一般基于光纤通道FC(Fibre Channel)或i SCSI(internet SCSI)构建,它是块级的存储,系统性能非常优越。SAN的优点是高容量、高可靠性、低延迟,缺点是SAN没有一个统一的存储系统接口,对存储设备的共享访问存在数据的完整性与安全性问题,设备的跨平台性较差。

2.2 对象存储技术

对象存储技术提供基于对象的访问接口,将NAS和SAN两种存储结构的优势进行了有效地整合,通过高层次的抽象,使之既具有NAS的跨平台共享数据和安全访问的优点,同时又具有SAN的高性能和可伸缩性的优点。

2.2.1 对象存储模式

对象存储模式[4]一般由Client、MDS(Metadata Server)和OSD(Object Storage Device)三部分组成,如图4所示。

Client为客户端,用来发起数据访问;MDS为服务器,用来管理对象存储系统中的元数据并保证访问的一致性;OSD为存储对象数据的设备,它是一个智能设备,包括处理器、RAM内存、网络接口、存储介质等以及运行在其中的控制软件[5]。

对象存储设备(OSD)中,将对象(object)作为对象存储的基本单元,每个对象具有惟一的ID标识符。对象由对象ID、对象数据的起始位置、数据的长度来进行访问。对象提供类似文件访问的方法,如Create,Open,Close,Read,Write,对象属性等;对象的数据包括自身的元数据和用户数据,其中,元数据用于描述对象特定的属性,如对象的逻辑大小、对象的元数据大小、总的字节大小;用户数据用来保存实际的二进制数据。

对象分为根对象、组对象和用户对象。根对象定义了存储设备以及存储设备本身的不同属性;组对象为存储设备上对象提供了目录;用户对象存储实际应用数据。

2.2.2 对象存储模式用于海量数据存储的优势

对象存储模式的特性使其在处理海量数据存储请求时具有较大优势,主要体现在:

1)高性能数据存储:访问节点有独立的数据通路和元数据访问通路,可以对多个OSD进行并行访问,从而解决了当前存储系统的一个性能瓶颈问题。

2)跨平台数据共享:由于在对象存储系统上部署基于对象的分布式文件系统比较容易,所有能够实现不同平台下的设备和数据的共享。

3)方便安全的数据访问:I/O通道的建立及数据的读写需要经过授权许可才能进行,从而保证了数据访问的安全性;另一方面,任何Client都可以通过对象存储系统提供的标准文件接口访问OSD上的数据,统一的命名空间使Client访问数据的一致性得到了保证。

4)可伸缩性:对象存储模式具有分布式结构的特性。由于OSD是独立的智能设备,可以通过增加OSD数量,使存储系统的聚合I/O带宽、存储容量和处理能力得到提高,这种平衡扩展模式使得存储系统能够具有良好的可伸缩性。

5)智能的存储设备:OSD中集成了部分的存储管理功能,因此OSD具有一定智能的自主存储功能。

3 数据库策略

数据库管理系统(DBMS)是海量数据存储检索系统的核心部件,所有对数据的控制都要通过DBMS来实现。Oracle数据库管理系统应用十分普及,是目前高性能存储检索系统主要选择的关系数据库管理系统,因此本文海量数据的存储基于Oracle数据库管理系统来实现。

本文基于海量数据环境,对通用的数据库管理策略不作研究,只针对海量数据找到有效存储方法,设计并实现高性能面向海量数据存储的数据库关键策略。

实现高性能的海量数据存储可采取的数据库策略有:

1)分区技术:为了更精细地对数据库对象如表、索引及索引编排表进行管理和访问。可以对这些数据库对象进行进一步的划分,这就是所谓的分区技术。

2)并行处理技术:为了提高系统性能,可以让多个处理器协同工作来执行单个SQL语句,这就是所谓的并行处理技术。

3.1 数据库表分区技术

3.1.1 基本概念

本文研究的主要存储对象为海量数据,数据库的大小常常达到数百GB甚至用TB来计算。而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。当表和索引变得非常大时,分区可以将数据分为更小、更容易管理的部分来提高系统的运行效率。对表和索引进行分区的主要目的就是改善大型表的可伸缩性和可管理性。所以对大型表进行分区是处理海量数据的一种十分高效的方法。

由于本文研究的主要存储对象为海量数据,存储时数据库中只存储文件名、摘要及其它文字说明,源文件的内容存储在数据库以外的物理介质上。

3.1.2 分区策略

Oracle分区的表通过使用“分区关键字”分区,分区关键字是确定某个行所在分区的一组列。Oracle提供了三种基本数据分配方法:范围(range)、列表(1ist)与散列(hash)。使用上述的数据分配方法,可以将表分成单一分区表或组合分区表。则Oracle提供的分区技术主要分为以下几种:范围分区,列表分区,散列分区,组合范围-散列分区,组合范围-列表分区[6]。

此外Oracle还提供三种类型的分区索引,包括本地索引、全局分区索引和全局非分区索引。可以根据业务需求选择相应的索引分区策略,从而实现最合适的分区,以支持任何类型的应用程序。

Oracle提供一套强健的技术用于表、索引和索引编排表的分区。海量数据的数据库存储可以选用以上分区技术中的一种或几种,通过一组完整的SQL命令来管理分区表,从而达到高性能检索的目的。

3.1.3 分区技术的应用

本文的研究对象是海量的文档数据集,对文档集进行分类处理,采用范围分区技术的应用将使系统各方面得到改善:

1)增强可用性:如果数据库表的某个分区出现了故障,可以确保数据库表在其它分区中的数据仍然可用。

2)维护方便:如果数据库表的某个分区出现了故障,则仅需修复该故障分区的数据即可,而不需要对整个数据库表进行维护。

3)均衡I/O:可以将数据库表不同的分区映射到磁盘用以平衡I/O,可以使系统的整体性能得到改善。

4)改善查询性能:用户对分区对象进行查询时,只需要搜索用户关心的分区,从而可以提高查询速度,改善查询性能。

3.2 数据库并行处理技术

3.2.1 基本概念

并行处理技术是数据库的一项核心技术,是指利用多个CPU和I/O资源来执行单个数据库操作,从而使得数据库能够高效地管理和访问TB级的数据[7]。尽管目前主流的数据库管理系统都表示可以提供并行处理能力,但在并行处理结构上都存在着关键的差异。

3.2.2 Oracle并行处理结构

所谓并行处理是指:将单个任务分解为多个更小的单元。不是将所有工作通过一个进程完成,而是将任务并行化,从而使得多个进程同时在更小的单元上运行,这样做能极大地提高系统性能并且能最佳地利用系统资源。

Oracle使用动态并行处理框架,数据操作可以依据当前工作特征、查询及负载的重要性,使用1~N个真正应用集群节点并行运行。

3.2.3 并行处理技术的特性

Oracle数据库并行技术能提高数据库性能,并且能提高数据库的最大运行速度和最大负载量。由于并行系统的每个节点都相互独立,使得一个节点如果出现故障不会导致这个数据库崩溃,剩余的节点可以在为用户提供服务的同时对故障节点进行恢复,因此并行技术比单节点的可靠性要高。Oracle数据库并行技术还能根据需要随时分配和释放数据库实例,数据库的机动性高。还有一点就是并行技术可以克服内存限制,为更多的用户提供数据服务。

4 结束语

对象存储模式由于具有良好的可伸缩性、高性能、跨平台、安全数据共享等能力,成为海量数据存储模式的一个理想选择;配合数据库的分区技术和并行处理技术,可以实现高性能的海量数据存储。

摘要:海量数据的大量出现,使存储技术正发生革命性的变化。针对海量数据存储环境,对网络附加存储(NAS)及存储区域网络(SAN)进行了分析,研究了面向对象存储技术。并且对海量数据存储的数据库策略进行了阐述,包括Oracle数据库的表分区技术的策略、特性及应用;Oracle数据库并行处理结构及特性。

关键词:海量数据,对象存储技术,分区技术,并行处理技术

参考文献

[1]Garth A Gibson,Rodney Van Meter.Network attached storage architecture[J].Communications of the ACM,2000,43(11):37-45.

[2]Liao H.Storage area network architectures[J].PMC-Sierra,Inc,Technology White Paper,2003.

[3]Morris R J T,Truskowski B J.The evolution of storage systems[J].IBM Systems Journal,2003,42(2):205-217.

[4]苏勇,周敬利.基于iSCSI OSD存储系统的设计与分析[J].计算机工程与应用,2007,43(23).

[5]Sakar K.An analysis of object storage architecture[J].JEEE Computer,2003,2(3):12-34.

[6]申红雪,刘育熙.Oraclel0g表分区技术管理[J].科技信息,2008(20).

篇6:海量数据存储重点总结

关键词:海量数据存储;分布式数据库;MPP架构;并行处理

目前海量数据处理还是一个比较新的研究方向,大多数都是各公司或者是组织各自研究自己的处理方法,国际上没有通用的标准,研究的方式和结果也都是各有千秋。针对项目中带有复杂业务逻辑的海量数据存储,主要从容量扩展和并行处理两个方面考虑。前文己论述过NoSQL分布式数据库由于其数据结构简单、不善于做JOIN连接等复杂操作,存在数据迁移问题,并不适用于本项目,所以本解决方案依旧从关系型数据库入手。其次为了支持多样的切分策略,本论文将实现range、list、consis

tent-hash模式。最后系统借鉴MPP并行处理架构,使得整个项目能部署在便宜的PC集群上,不仅能保证稳定性,还节省项目成本。

物理设施包含数据库服务器的基础架构、web服务器的选择,以及资源分配管理服务器的选择。这三者分别负责数据的存取、数据的分析处理以及资源工作的均衡分配,它们协同合作,共同搭建一个高效的协同的后端服务管理,使存储系统均衡工作、高效运行。

作为解决海量数据的存储方案,首要必须考虑是存放海量数据的需求。根据前文可知,分布式数据库的出现其根本原因是解决存放不下数据的问题,故而将数据依照策略存放在不同的数据库服务器上,存放数据的策略以及数据之间的并行查询处理是研究的重点。第二个问题是分布式处理方案,现有技术从各个方面进行过尝试,有的基于关系型数据库提出了多种shard

ing方案。将关系型数据库迁移到非关系型数据库上代价太大,所以本解决方案基于关系型数据库的系统。

根据以上的设计思路与实现目标,设计出分布式海量数据存储解决方案。该系统主要包含以下四个模块:

SQL解析模块。SQL语句复杂、格式多样、形式多变,解析结果作为数据切分的依据。解析SQL语句的方法是编译成字节码,生成语法树,这种方式的优点是准确率高、数据层次清晰、结构正确,但设计到相关语法树知识,比解析字符串更难以理解。

数据分发模块。如果集群系统中没有进行数据切分,则多台数据库服务器存储的是完全一样的数据,这实际上是对硬件资源的浪费,也在同步数据保持一致上浪费了更多的时间和效能。而且一旦数据再上升一个等级,很可能一台服务器就无法存储下大量数据。所以合适的数据切分策略是迟早的,本解决方案将结合现有的数据切分策略,结合业务逻辑,提供多样的切分策略,并且预留切分接口使用户灵活地自定义自实现,系统的可用性更高。

并行处理模块。由分发服务器和多台数据库服务器构成。相对于集中式数据库来说,分布式査询代价需要考虑以下因素:

CPU处理时间,I/O消耗时间,还有数据在网络上的传输时间。在设计系统的时候,应该根据分布式数据库中各个数据库的地理位置的不同情况来设计。在局域网且传输率高的系统中,通信代价和局部处理的开销差别不大,在优化中则应平等对待;在数据传输率较低和通信网速度较慢的系统中,网络传输可能会比花费在查询中的CPU及I/O的开销更大,则应首要考虑优化网络通信。

汇总处理糢块。结果汇总大致分为两种情况:单机单库情况下,直接返回结果;多机多库的情况则需要在转发节点处进行一个汇总。

基于架构的工作流程大致如下:首先,转发节点收到客户端发来的SQL语句,将依据各个解析节点当前工作量、预计完成解析工作的时间、本条查询语句预估需要时间、历史响应需求时间等因素,将SQL语句转发给各个解析节点,对其进行语法解析。当所有的工作量都经过这个转发节点的时候,必然会产生高并发的问题。在存在多个分发节点的情形下,为了消除单个转发节点的性能瓶颈,本文设计多个分发节点,每个节点都可以将任务转发到不同的解析节点。采用RoundRobin策略将任务依次分发给每个解析节点,让工作量保持均衡。其次,解析节点解析本次查询的SQL语句,生成便于理解的SQL对象,通过调用相应的接口方法可以实现对SQL语句的操作。最后,各个数据库服务器执行了 SQL语句,便对查询结果进行一个汇总并返回,划分倘若是单机查询,那么处理的结果可直接返回给客户端。

SQL解析、数据切分以及转发归并的工作都由以上四个模块协同完成。

基于MPP架构的设计了关系型数据库的海量数据分布式存储解决方案。本章采用解析SQL语句、分发SQL语句,并行处理、归并汇总处理结果的方式完成整个框架。与MySQL

Cluster的区别在于采用的存储引擎就是MySQL,适应于本身就釆用MySQL进行存储的集中式数據库的改造,或是业务逻辑复杂的报表展示等,无论是业务的扩展,迁移都十分方便。

参考文献:

[1]姜宇鸣.海量数据存储系统研究.《电脑知识与技术》2011年08期

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:嵌入式系统课程设计 下一篇:嵌入式GIS空间数据结构的设计