互联网海量数据存储及处理调研综述
2.2. 新兴数据存储系统
在传统关系型数据库已不能满足互联网应用需求的情况下,开始出现一些针对结构化、
半结构化甚至非结构化数据的管理系统。在这些系统中,数据通常采用多副本的方式进行
存储,保证系统的可用性和并发性;采用较弱的一致性模型(如最终一致性模型),在保
证低延时的用户相应的同时,维持复本之间的一致状态;并且都提供良好的负载平衡策略
和容错手段。
按照数据管理方式划分,这些新兴的数据管理系统可以归为两大类:
(一) 集中式数据管理系统
这类系统采用传统的 server farm 架构。整个系统需要一个主控节点维护各从节点的元
信息,是一种集中控制的管理手段。其优势在于,集中管理的方式人为可控且维护方便,
在处理数据同步时更为简单。其劣势在于,系统存在单点故障的危险。这类系统包括
Google 的 Bigtable 和 Yahoo!的 Pnuts。
Bigtable
Bigtable 是 Google 开发的一套结构化存储系统
[5]
。数据以多维顺序表的方式进行存储。
整个系统采用传统的 server farm 形式,由一个主控服务器和多个子表服务器构成,并使
用分布式锁服务 Chubby 进行容错等管理。
Pnuts
Pnuts 是 Yahoo 内部使用的,用于跨数据中心进行部署的大规模并行数据管理系统
[6]
。
它与 bigtable 类似的集中管理体系。它支持顺序表和哈希表两种方式进行结构化数据的组
织存储,并通过一定的优化手段在保证用户低延时访问服务的同时,提高数据批量载入的
性能
[7]
。
(二) 非集中式数据管理系统
系统中各节点无主从之分,各节点通过相应的通信机制相互感知,自我管理性较强。
其优势在于:由于没有主控节点,因而避免单点失效带来的危险;不需要过多人工干预。
其劣势在于:由于无主控节点因而对于一些元数据更新操作,实现较为复杂;不易进行人
工控制。Amazon 的 Dynamo 和 Facebook 的 Cassandra 则采用这种方式。
Dynamo
Dynamo 是一个基于分布式哈希的去中心化的大规模数据管理系统
[4]
。在 Dynamo 中,
数据按照 key-value 进行形式,主要面向原始数据的存储。这种架构下,系统中每个节点都
能相互感知,自我管理性能较强,没有单点失效。
Cassandra
Cassandra 是 Facebook 开发的一套采用 P2P 技术实现的结构化数据存储系统
[25]
。与
Dynamo 有所不同的是,Cassandra 采用类似 Bigtable 的多维表数据模型进行数据的存储管
理。
在下面的章节,我们将探讨互联网背景下海量存储的关键技术问题,并对比这些系统
在解决这些问题上所采用的技术手段。
2.3. 关键技术分析
扩展性是互联网应用需求下海量数据存储的首要问题。构建一个 TB 级甚至 PB 级的数
据存储系统,需要有自适应的数据划分方式、良好的负载均衡策略来满足数据、用户规模
的不断增长需求。同时,在保证系统可靠性的同时,需要权衡数据一致性与数据可用性,
来满足互联网应用低延时、高吞吐率的特点。在这一节中,我们主要从数据划分、数据一