论文部分内容阅读
云计算平台上大数据的存储管理是当前数据库领域的一个重要的研究方向。由于数据已成为一种关键的战略资源和不可或缺的生产要素,作为信息基础设施的云数据存储系统充当了不同领域中大量应用的基础平台。现有的云存储系统缺少一个拥有足够表达能力,又灵活简单的存储结构,以适应动态伸缩的云计算平台,用于对多样化的数据建模。同时,已有的大多数的NoSQL系统未能提供对辅助索引的支持,即便是少数提供的也没有更多地讨论它们的索引的可扩展性、弹性和一致性。另外,在云存储上提供事务访问,受制于一致性与可用性和低延迟之间的权衡取舍,难以在它们之间找到平衡,实现代价有效的访问。 本文着重研究如何在大规模无共享的集群上存储管理海量数据的方法。研究内容包括适用于表示具有不同特征的数据集合(包括稠密数据和稀疏数据)的存储结构、可扩展的可伸缩的且“看起来一致的”辅助索引和多一致性的事务访问方法。针对云数据存储中的各个问题给出了解决方法及相关的算法,并通过大量实验验证了方法的有效性。本文的主要工作和创新点如下: 1.提出了一个名为“动态表”的分层的、可配置的存储结构,并对稀疏数据中缺失值的语义进行了区分。 本文设计了一种新的存储结构“动态表”,用以刻画具有不同特征的混合的数据集,并有效支持不同类型的查询模式。它是一个三层的、可配置的存储结构,至上而下包括面向表的软模式、结构化的键/值对和可选的物理存储格式。它不仅继承了朴素的键/值对模型简单灵活、易于扩展的优点,且支持用户对表模式的灵活定制和下层物理存储方式的自由选择。由于分布式环境下数据的分布方式和表示方法都直接关系到系统的性能,它允许用户通过定义列组的方式控制不同的列数据在存储空间上的邻近,并为不同的列组选择按行或按列的存储方式。另外,本文对缺失值的语义进行了划分,将未定义的(undefined)或不适用的(inapplicable)缺失值与那些暂时不知道的(unknown)空值区分开。消除了稀疏数据中空缺值在含义上的模糊性,提供了对不完整数据的更精确的描述,提高了存储空间的利用率。在真实数据集和模拟数据集上开展的广泛的实验,验证了“动态表”可以有效表示多样化的数据集,满足差异化的存储需求,同时适用于动态的云存储环境。 2.提出并设计了一个可扩展的、可伸缩的且“看起来一致的”辅助索引。 本文设计了一个由布隆过滤器矩阵(Bloom Filter Matrix,BF-Matrix)和B+树构成的辅助索引。它由动态的计数型布隆过滤器构成,具有良好的可扩展性以应对大规模数据的连续增长,同时,借助于矩阵中行的增减和每一行中过滤器的合并,提供了自由伸缩的弹性,适应集群规模的动态变化。为了缩短查询的访问路径,减少索引维护的开销,本文采用松耦合的分层的架构来组织索引,基于主从架构的分布式系统,在每一个数据节点上创建一个B+树作为本地的索引;而在主节点上,设计了一个布隆过滤器矩阵充当全局索引,保存数据的分布信息。进一步,本文描述了数据检索和索引维护的相关算法,同时给出了算法执行需要遵守的两条行为规则。它们可以有效避免漏判的发生。在缺少事务支持的情况下,仍然保持索引“看起来是一致的”(即在索引表和主表不同步的情况下,也能保证查询操作的正确行为)。大量的实验结果表明本文提出的索引方法要比现有的方法(包括ITHBase、hindex和MR-FTS)更加灵活有效。 3.提出了一种多一致性的事务访问方法,并对传统的快照隔离级别进行了扩展。 本文将云存储系统中的事务提交问题建模为一棵两层的树模型。面对一致性、可用性和低延迟之间的权衡取舍,本文提出了一致性模型可选的事务访问方法,为数据操作提供按需的一致性保证。基于云存储中数据的多版本的冗余存储,通过在每个副本队列上维护多个指针,允许在同一个事务中包括不同一致性的访问,同时,也允许不同一致性的访问作用在相同的数据对象上。对于不同一致性模型的选择,本文给出了可串行的一致性、收敛的因果一致性和最终一致性的形式化描述,并证明了它们之间不会相互冲突,可以共存。另外,本文描述了放松的快照隔离,允许弱一致性级别下事务的异步提交。在本地的单一数据中心和跨区域的多数据中心的环境下的大量实验表明,提供一致性模型可选的操作可以最大限度地在不同的存储需求之间取得平衡,实现代价有效的事务访问。 结合核高基重大专项课题海量非结构化数据管理系统(Massive UnstructuredcLoud Data mAnagement System-MULDAS)的研制及其在国家某部委的上线运行。通过在大规模集群上的部署,及海量移动通信数据上的实际应用,进一步验证了本文提出的方法的有效性。