在过去几十年中,我们存储和访问数据的方式发生了快速变化。最初,数据存储在传统的单节点关系型数据库中,这些数据库旨在处理规范化和结构化的数据。开发人员必须提前定义数据的模式,并以结构化的方式存储数据。然而,随着数据量的增加,关系型数据库在扩展性方面变得过于缓慢且成本高昂。此外,由于需要存储非规范化和非结构化的数据(如日志和多媒体内容),NoSQL数据库应运而生,这些数据库旨在处理非结构化数据并在分布式系统中水平扩展。同时,新的数据模型及其相应的DBMS也出现了,每种模型都针对特定的数据类型和用例进行了优化。
近年来,各种应用程序和设备生成的数据呈指数级增长,这推动了对更先进和复杂的数据库系统的需求。开发人员越来越多地需要处理多模型数据,即在单个系统中结合不同的数据模型。这导致了多模型DBMS的出现,它们将多种数据模型集成到一个统一的后端中,使用户能够在同一平台上管理和查询关系型、文档型、图型和键值型数据。虽然这些数据库能够实现高效的跨模型操作和数据整合,但在存储策略和性能优化方面带来了新的挑战,因此人们进行了大量的研究以找到针对给定多模型数据的最佳存储策略[1]、[2]、[3]、[4]。
除了多模型数据,现代应用程序还经常处理多模态数据,即来自不同模态(如文本、图像、视频和地理空间信息)的数据需要一起存储和查询。多模态数据库需要专门的索引技术,包括用于文本的倒排索引、用于空间数据的R树以及用于高维数据(如图像)的多索引哈希。在单个系统中处理如此多样化的数据类型引入了复杂性,传统的索引选择方法(针对单模型或结构化数据设计)无法直接解决这些问题[5]。因此,需要新的研究来适应和扩展这些索引选择算法,以应对多模态和多模型数据库带来的挑战。
尽管选择正确的数据模型组合对数据库性能至关重要,但这并不是唯一因素。例如,有效的索引选择和物化视图对于优化性能也是必不可少的[6]。此外,在多模态系统中,索引类型必须针对每种数据模态进行定制,自动化索引选择算法必须能够处理多种数据类型的多样化查询模式。
本文重点关注多模型和多模态DBMS中的索引选择问题。这个问题在单模型数据库领域已经得到了充分研究[7]、[8]、[9]、[10]、[11]、[12],其对查询性能的影响已经得到很好的理解,并且一直在改进[7]。然而,随着数据模型复杂性的增加,特别是在多模型和多模态数据的情况下,对索引管理进行更高层次抽象的需求变得明显。我们认为,必须开发新的算法来自动化和优化这些复杂环境中的索引选择,以确保现代DBMS能够高效扩展并满足现实世界应用不断变化的需求。
本文的主要目标可以总结如下:
- •
各种DBMS中的索引分析 首先,我们分析了最流行的DBMS,描述了它们的用例,并比较了它们的典型工作负载。接下来,我们全面分析了这些DBMS使用的索引策略。我们主要关注它们支持的索引类型以及实现这些索引使用的数据结构。
- •
现有方法的分析 由于索引选择在关系型数据库的背景下已经是一个被充分研究的问题[7],我们首先分析了当前最先进的算法,并挑选出可能适用于多模型数据的算法。我们研究的算法在方法、实现和复杂性方面各不相同。我们还考虑了基于机器学习的算法,尽管这些算法目前不如其他算法先进,但它们对未来索引选择算法的发展具有极大的潜力[6]。
- •
它们的更广泛适用性验证 我们考虑了所选算法在其他DBMS中的适用性,并比较了每种数据库系统最适合的算法。如果算法不适用,我们会分析原因并提出改进的想法。
- •
开放性问题的提出 最后,我们提出了多模型和多模态DBMS中索引选择研究的开放性问题。
第1节提供了流行数据模型及其相应DBMS的概述,并根据实际应用、典型查询、优势和劣势对这些模型进行了比较。第2节介绍了本文中使用的定义和符号。第3节回顾了最先进的索引选择算法,并按方法(例如机器学习、整数线性规划、贪心算法)对它们进行了分类。第4节根据不同数据模型的适用性、支持的索引类型范围和计算复杂性比较了选定的方法,并评估了它们对多模型和多模态数据的适用性。第5节提出了多模型DBMS和索引选择未来工作的挑战和开放性问题,最后是结论。