转:
目前大数据存储有两种方案可供选择:行存储和列存储。业界对两种存储方案有很多争持,集中焦点是:谁能够更有效地处理海量数据,且兼顾安全、可靠、完整性。从目前发展情况看,关系数据库已经不适应这种巨大的存储量和计算要求,基本是淘汰出局。在已知的几种大数据处理软件中,Hadoop的HBase采用列存储,MongoDB是文档型的行存储,Lexst是二进制型的行存储。在这里,我不讨论这些软件的技术和优缺点,只围绕机械磁盘的物理特质,分析行存储和列存储的存储特点,以及由此产生的一些问题和解决办法。
一.结构布局
行存储数据排列
列存储数据排列
表格的灰色背景部分表示行列结构,白色背景部分表示数据的物理分布,两种存储的数据都是从上至下,从左向右的排列。行是列的组合,行存储以一行记录为单位,列存储以列数据集合单位,或称列族(column family)。行存储的读写过程是一致的,都是从第一列开始,到最后一列结束。列存储的读取是列数据集中的一段或者全部数据,写入时,一行记录被拆分为多列,每一列数据追加到对应列的末尾处。
二. 对比
从上面表格可以看出,行存储的写入是一次完成。如果这种写入建立在操作系统的文件系统上,可以保证写入过程的成功或者失败,数据的完整性因此可以确定。列存储由于需要把一行记录拆分成单列保存,写入次数明显比行存储多,再加上磁头需要在盘片上移动和定位花费的时间,实际时间消耗会更大。所以,行存储在写入上占有很大的优势。
还有数据修改,这实际也是一次写入过程。不同的是,数据修改是对磁盘上的记录做删除标记。行存储是在指定位置写入一次,列存储是将磁盘定位到多个列上分别写入,这个过程仍是行存储的列数倍。所以,数据修改也是以行存储占优。 数据读取时,行存储通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。列存储每次读取的数据是集合的一段或者全部,如果读取多列时,就需要移动磁头,再次定位到下一列的位置继续读取。 再谈两种存储的数据分布。由于列存储的每一列数据类型是同质的,不存在二义性问题。比如说某列数据类型为整型(int),那么它的数据集合一定是整型数据。这种情况使数据解析变得十分容易。相比之下,行存储则要复杂得多,因为在一行记录中保存了多种类型的数据,数据解析需要在多种数据类型之间频繁转换,这个操作很消耗CPU,增加了解析的时间。所以,列存储的解析过程更有利于分析大数据。
三. 优化
显而易见,两种存储格式都有各自的优缺点:行存储的写入是一次性完成,消耗的时间比列存储少,并且能够保证数据的完整性,缺点是数据读取过程中会产生冗余数据,如果只有少量数据,此影响可以忽略;数量大可能会影响到数据的处理效率。列存储在写入效率、保证数据完整性上都不如行存储,它的优势是在读取过程,不会产生冗余数据,这对数据完整性要求不高的大数据处理领域,比如互联网,犹为重要。
改进集中在两方面:行存储读取过程中避免产生冗余数据,列存储提高读写效率。
如何改进它们的缺点,并保证优点呢?
行存储的改进:减少冗余数据首先是用户在定义数据时避免冗余列的产生;其次是优化数据存储记录结构,保证从磁盘读出的数据进入内存后,能够被快速分解,消除冗余列。要知道,目前市场上即使最低端CPU和内存的速度也比机械磁盘快上100-1000倍。如果用上高端的硬件配置,这个处理过程还要更快。
列存储的两点改进:1.在计算机上安装多块硬盘,以多线程并行的方式读写它们。多块硬盘并行工作可以减少磁盘读写竞用,这种方式对提高处理效率优势十分明显。缺点是需要更多的硬盘,这会增加投入成本,在大规模数据处理应用中是不小的数目,运营商需要认真考虑这个问题。2.对写过程中的数据完整性问题,可考虑在写入过程中加入类似关系数据库的“回滚”机制,当某一列发生写入失败时,此前写入的数据全部失效,同时加入散列码校验,进一步保证数据完整性。
这两种存储方案还有一个共同改进的地方:频繁的小量的数据写入对磁盘影响很大,更好的解决办法是将数据在内存中暂时保存并整理,达到一定数量后,一次性写入磁盘,这样消耗时间更少一些。目前机械磁盘的写入速度在20M-50M/秒之间,能够以批量的方式写入磁盘,效果也是不错的。
四. 总结
两种存储格式各自的特性都决定了它们不可能是完美的解决方案。 如果首要考虑是数据的完整性和可靠性,那么行存储是不二选择,列存储只有在增加磁盘并改进软件设计后才能接近这样的目标。如果以保存数据为主,行存储的写入性能比列存储高很多。在需要频繁读取单列集合数据的应用中,列存储是最合适的。如果每次读取多列,两个方案可酌情选择:采用行存储时,设计中应考虑减少或避免冗余列;若采用列存储方案,为保证读写入效率,每列数据尽可能分别保存到不同的磁盘上,多个线程并行读写各自的数据,这样避免了磁盘竞用的同时也提高了处理效率。 无论选择哪种方案,将同内容数据聚凑在一起都是必须的,这是减少磁头在磁盘上的移动,提高数据读取时间的有效办法。
分享到:
相关推荐
。。。
。。。
大数据存储方式概述 随着信息社会的发展,越来越多的信息被数据化,尤其是伴随着Internet的发展,数 据呈爆炸式增长。从存储服务的发展趋势来看,一方面,是对数据的存储量的需求越来 越大,另一方面,是对数据的有效...
VC 使用ADO技术存取BLOB二进制大数据,将大对象以二进制方式存储在数据库中,存取的方式与普通数据有所区别,里面包括有图像的存取,带个实例的工程比较完整。
大数据存储方式概述全文共3页,当前为第1页。大数据存储方式概述全文共3页,当前为第1页。大数据存储方式概述 大数据存储方式概述全文共3页,当前为第1页。 大数据存储方式概述全文共3页,当前为第1页。 随着信息...
第3章 大数据存储技术 大数据技术及应用教学课件第3章-大数据存储技术全文共34页,当前为第1页。 数据库 01 02 03 主要内容 分布式文件系统 存储技术的发展 数据仓库 04 大数据技术及应用教学课件第3章-大数据存储...
5、管理大数据"易"理解大数据"难" 虽然大数据是一个重大问题,真正的问题是让大数据更有意义 目前大数据管理多从架构和并行等方面考虑,解决高并发数据存取的性能要求及数据存储的横向扩展,但对非结构化数据的内容...
7、为充分发挥大数据的潜力,以下几个方面的问题必须得到解决: 数据策略 技术 企业变革和人才 数据存取 产业结构 大数据介绍全文共49页,当前为第6页。 纵观全球数据形势:大幅增长和价值创造 数据量正在呈指数...
》数据存取-》数据挖掘与分析-》数据展示与应用 大数据技术生态 数据采集 数据存储 SQL 引擎 离线计算 流式计算 多维分析 数据挖掘 Sqoop Flume HDFS Hbase PGXZ MongoDB Spark SQL HAWQ Hive Impala MR Spark Storm...
大数据的概念全文共3页,当前为第1页。大数据的概念全文共3页,当前为第1页。一、大数据概念 大数据的概念全文共3页,当前为第1页。 大数据的概念全文共3页,当前为第1页。 "大数据"是一个体量特别大,数据类别特别...
5、管理大数据"易"理解大数据"难" 虽然大数据是一个重大问题,真正的问题是让大数据更有意义 目前大数据管理多从架构和并行等方面考虑,解决高并发数据存取的性能要求及数据存储的横向扩展,但对非结构化数据的内容...
《国务院关于印发促进大数据发展行动纲要的通知》明文规定:"大数据是以容量大、类型多、存取速度快、应用价值高为主要特征的数据集合,正快速发展成为对数量巨大、来源分散、格式多样的数据进行采集、存储和关联...
Company number:【0089WT-...3)数据服务的种类和水平要求高大数据存储与管理,需要对上层应用提供高效的数据访问接口,存取PB甚至EB量级的数据,并且对数据处理的实时性、有效性提出更高要求,传统常规技术手段根本
大数据处理关键技术一般包括:大数据采集、大数据预处理、大数据存储及管理、大 数据分析及挖掘、大数据展现和应用(大数据检索、大数据可视化、大数据应用、大数 据安全等)。 7、新一代数据体系的分类 新一代数据...
大数据处理关键技术一般包括:大数据采集、大数据预处理、大数据存储及管理、开 发大数据安全大数据分析及挖掘、大数据展现和应用(大数据检索、大数据可视化、大 数据应用、大数据安全等)。 7、新一代数据体系的...
大数据是以容量大、类型多、存取速度快、应用价值高为主要特征的数据集合,正快速发展为对数量巨大、来源分散、格式多样的数据进行采集、存储和关联分析,从中发现新知识、创造新价 值、提升新能力的新一代信息技术...
近年来,随着数据收集手段的丰富及数据存储能力的提 升,公司、企业存储的以及科学研究( 如: 脑电信号分析等) 产 生的数据量急剧增加。对大数据进行科学的...常见的 并 行 计 算 模 型[1 - 2] 有并行随机存取器
虽然采集端本身会有很多数据库,但是如果要对这些海量数据进 行有效的分析,还是应该将这些来自前端的数据导入到一个集中的大型分布式数据库, 或者分布式存储集群,并且可以在导入基础上做一些简单的清洗和预处理...
地理信息系统(GIS)是一种通过先进的计算机...传统的关系型数据库对空间数据的存储需要通过对空间数据模型进行扩展来实现海量大数据的存储,这种存储模式存在的扩展性差、处理服务效率低下、数据存取性能不足等局限。