论文部分内容阅读
近年来,大数据以数据量大、数据类型多样、难辨识、数据产生速度快和价值高的5V特性成为工业界和学术界关注的热点。另一方面,大数据存储和处理的需求也推动了技术的发展。作为业界大数据技术的事实标准,Hadoop生态系统(Hadoop Ecosystem)包含了从数据采集、数据存储、数据处理到数据分析整个生命周期的工具和框架。得益于其线性可扩展能力、高性能、灵活性等优势,Hadoop生态系统已经广泛应用于金融、电商、教育和医疗等各个领域。 当Hadoop生态系统进入企业,所面对的重要问题是怎样应对基于传统关系数据库的信息架构。具体来讲,需要考虑如何在Hadoop生态系统中对结构化的关系数据进行存储并提供SQL查询支持。在此驱动下,基于Hadoop生态系统的SQL查询处理技术及系统(即SQL-on-Hadoop)应运而生。SQL-on-Hadoop系统提供了关系数据存储管理功能与SQL查询接口,通过将SQL查询翻译为特定的分布式计算范型(如MapReduce和Spark等),来访问分布式文件系统或NoSQL数据库中存储的数据表。作为数据分析领域重要的支撑,SQL-on-Hadoop逐渐成为广受关注的研究方向。 论文关注于SQL-on-Hadoop系统的数据存储层,并以传统企业数据分析应用的迁移为背景,重点考虑在SQL-on-Hadoop系统中如何采用分布式文件系统HDFS和分布式NoSQL数据库来进行高效的数据组织与管理。论文旨在分析和解决这种混合存储结构优化所面临的关键问题:(1)关系数据表如何在分布式文件系统进行存储?(2)关系数据表与索引如何在NoSQL数据库中进行存储实现(即关系模型到NoSQL数据模型的转换)?(3)如何在分布式NoSQL环境下构建索引以支持进一步的查询优化?这些问题的解决不仅能够促进SQL-on-Hadoop系统中高效的数据的组织与管理方式,也为大数据场景下应用开发与维护人员提供支撑。具体地,论文从以下三个方面开展了研究: (1)数据表存储策略的评测与选取:数据表存储策略提供了关系数据表到分布式文件系统中文件的序列化与反序列化机制。在SQL-on-Hadoop系统的实际应用中,开发人员需要考虑如何从不同的实现中选取合适的数据表存储策略使得查询性能最优。现有工作以实验研究为主,偏重于特定数据表存储策略实现层面的技术分析,且给出的经验性结论过于宽泛。针对这方面的不足,论文提出了查询感知的选取方法。该方法根据应用负载类型,提取出查询中数据表存储策略相关的算子,以基于算子级别测试的方式获得相关性能指标,在此基础上针对性地选取性能最优的数据表存储策略,为开发人员提供决策支持。论文对业界主流的数据表存储策略进行了实验性研究,并在TPC-H标准测试集上验证了方法的有效性。 (2)关系数据模型到NoSQL数据模型转换:NoSQL数据库的广泛应用带来了数据模型转换的问题,其本质在于关系表与索引到NoSQL存储方式的映射与实现。然而,NoSQL数据库普遍采用的弱模式(schema-less)结构意味着多种多样的转换方式。现有解决方案主要采用一种面向数据的转换方法,将关系数据表按照固定的方式映射成NoSQL中基于key-value的存储形式。这种通用的方法忽略了应用中不同查询的类型,且不支持索引的转换,导致了性能上的不足。针对该问题,论文提出了一种查询感知的方法。该方法结合上层查询以及相关索引信息,针对性地采用不同的转换方式。论文以企业数据分析型应用作为背景,通过实际案例对方法进行了验证,结果表明该方法能够有效提高数据模型转换的质量。 (3)分布式NoSQL数据库环境下索引的构建:索引技术作为提升查询性能的重要手段,在关系数据库中一直得到广泛应用。然而,在SQL-on-Hadoop系统中,分布式NoSQL数据库缺乏内在索引机制的支持,为进一步的性能优化带来了挑战。论文以一类常用的查询(Top-k范围聚合查询)作为具体的研究对象,通过逐步建立不同类型索引使得查询响应时间从分钟级提升到(毫)秒级。另一方面,通过对这一类具体查询进行优化的过程揭示了分布式NoSQL数据库环境下索引构建与管理的一般性原则与方法,主要包括应用端管理、轻量级实现以及索引结构的数据模型映射管理等。 总的来讲,论文结合应用中的查询来解决SQL-on-Hadoop存储层数据组织与管理的关键问题,涉及到数据表存储、数据模型转换、索引构建和查询优化等方面。论文工作既包括技术上的创新,也为开发人员和系统维护人员提供了实际经验上的指导。