一、分布式文件系统
大数据管理研究的文件系统主要是分布式文件系统,分布式文件系统时建立在多台服务器上,并对多个节点上的文件进行统一管理,为用户提供单一文件视图和文件访问结构。目前流行的分布式文件系统是建立在互联网环境上,基于节点自身的文件系统而实现的面向海量数据管理的文件系统,主要研究在大规模集群上数据划分和数据分布,所存储的数据的可靠性以及存储管理的可扩展性,如何支持用户大规模并发访问以及如何适应新型的并行计算模型。
目前比较成熟的分布式文件系统解决方案有谷歌的 GFS ,它是从实际需求、业务类型以及技术环境等方面考虑设计并实现的分布式文件系统,它充分满足了应用存储的需求。雅虎的 HDFS 和亚马逊的 S3 也是相对成熟的分布式文件系统解决方案。HDFS 最大的用户是雅虎,其次是 Facebook,S3 是亚马逊提供的在线按需存储服务,它是一个基于对象的存储系统,为客户提供任意大小的对象存储。
二、分布式数据管理平台
传统数据库无法应对大数据环境下数据存储的管理。NoSQL 数据库技术的提出为大数据管理提供了一个很好的解决方案。NoSQL 数据库根据存储模型可以划分为:基于 Key-Value 的存储模型,基于 Cloumn Family 的存储模型,、基于文档的存储明星以及基于图的模型。
2.1 基于 Key-Value 存储的 NoSQL 数据库
基于 Key-Value 存储的 NoSQL 数据库主要是基于键值对来存储,利用哈希表来维护 Key 值与具体 Value 之间的映射关系,用户可以通过 Key 方便的对数据进行定位。 Value 是以一定的数据结构进行存储,而系统不对 Value 进行任何解释,应用程序会根据事先约定的格式对数据进行处理并对 Value 进行解释。Key-Value 类型的 NoSQL 数据库存在一个弊端,就是用户无法根据 Value 中的某个属性值查询数据,因此该类型的数据库只能支持对 Key 进行简单的查询。
Tip:常见的 Key-Value 类型的 NoSQL 数据库有:Redis、Tokyo Cabinet Tryant、Oracle Berkeley DB 等。
2.2 基于 Cloumn Family 存储的 NoSQL 数据库
Cloumn Family 是指具有相同性质的序列属性。它的存储结构是在 Key-Value 模型基础上进行重新设计的,Value 被设计的更加精细,一个 Value 由多个属性列组成,这些属性列组成了一个组从而在数据结构上呈现出多层嵌套映射。
Tip:常见的 Cloumn Family 类型的NoSQL 数据库是 BigTable。
2.3 基于文档存储的 NoSQL 数据库
基于文档存储的 NoSQL 数据库以传统的文档存储技术为基础,存储模型以是 Key-Value 存储模型为基础,每个文档是一个 Key-Value 列表,文档格式一般采用 JSON 或者类似于 JSON 的格式。该类型的数据库对于特定的查询来说具有较高的效率,并且给数据库的设计人员带来了建模的灵活性,但却给数据操作人员带来了极大的负担。基于文档存储的 NoSQL 数据库存在一个弊端,数据是循环嵌套的,会使应用程序变得越来越复杂、难以维护和理解。因此在使用该类型 NoSQL 数据库时应当在设计阶段平衡好灵活性与复杂性。
Tip:常见的基于文档存储的 NoSQL 数据库有:Lotus Notes、CouchDB、MongoDB 和 Riak 等。
2.4 基于图存储的 NoSQL 数据库
传统图数据库大部分是面向对象的,虽然它们在节点遍历等图数据操作中都具有很好的性能,但是并没有考虑到系统的可扩展性,因此就出现了基于图存储的 NoSQL 数据库。这种类型的 NoSQL 数据库不仅以扩展性为重要目标,还可以对大规模的图数据进行有效的管理和分析。基于图存储模型的 NoSQL 数据库主要应用于社交网络、科学研究以及其他需求不断发展的应用领域,在这些应用中图模型可以在庞大的数据规模下更加清晰准确的表达数据的意义。
三、数据组织与管理
大数据组织和管理技术主要包括数据划分技术、数据块分布技术、索引技术、副本管理技术和支持事务处理技术等,下面重点介绍一下前三种技术,后两种技术将在后续的文章中详细讨论。
3.1 数据划分技术
数据划分是指将数据集分割成多个独立互不相交的子集合,主要目的是使具有相关性的元组和属性尽量一起存储,从而减少操作的开销代价而提高操作性能。
NoSQL 数据库在大数据环境下因为每个表的数据量很大,因此都会以分布式的形式对表进行存储。只有表进行划分才能实现表的分布式存储,所以数据划分对提高 NoSQL 数据库性能有重要作用,主要体现在如下三个方面:
- 数据划分是系统易扩展的前提;
- 数据划分能够提高数据的可用性;
- 数据划分是数据并行处理效率充分发挥的前提。
3.2 数据分布技术
在大规模分布式环境下,对大数据使用合适的划分策略进行划分之后,使用某种策略将数据子集分布存储到各个节点上,这样的策略就叫数据分布策略,过程称为数据分布。数据分布技术直接影响系统性能,因为大数据处理模式是计算靠近数据计算会在数据所在节点上完成,分布策略会影响节点的负载并对系统的并行处理能力、系统负载均衡以及系统操作代价产生直接影响,所以分布策略设计的好坏就至关重要。
数据分布技术主要分为静态分布技术和动态分布技术。静态分布技术是指在系统设计前就已经设计好分布技术,但是没有考虑系统的操作模式。动态分布技术根据基准又分为基于数据块访问频率的分布技术和基于负载均衡的分布技术。
3.3 索引技术
为了减少数据量大部分系统都使用了 Bloom Filter 技术来快速减少不相关的数据。由于大部分 NoSQL 数据库是以 Key-Value 为基础存储模型,并且该模型只支持针对 Key 的简单查询,因此需要借助辅助索引技术让系统能够支持复杂的查询。目前常见的索引技术有:辅助索引技术、分布式索引技术和试试索引技术。