大数据已经变得非常非常大:到2025年,全球所有数据总计将达到175万亿千兆字节。为了获得视觉效果,如果将这么多的数据存储在DVD上,它将堆积得足够高,可以绕地球旋转222次。
计算中最大的挑战之一是在处理这种猛烈的信息的同时仍然能够有效地存储和处理信息。麻省理工学院计算机科学与人工智能实验室(CSAIL)的一个小组认为,答案在于所谓的“实例优化系统”。
传统的存储和数据库系统被设计为可用于各种应用程序,因为构建它们需要花费多长时间(数月甚至是数年)。结果,对于任何给定的工作负载,此类系统提供的性能都很好,但通常不是最好的。更糟的是,它们有时需要管理员手动调整系统以提供合理的性能。
相反,实例优化系统的目标是构建针对其存储的数据和所服务的工作负载进行优化和部分重新组织的系统。
麻省理工学院教授蒂姆·克拉斯卡(Tim Kraska)说:“这就像从头开始为每个应用程序构建数据库系统,这在传统系统设计上在经济上是不可行的。”
作为实现这一愿景的第一步,Kraska及其同事开发了Tsunami和Bao。Tsunami使用机器学习功能,根据用户进行查询的类型自动重新组织数据集的存储布局。测试表明,它运行查询的速度比最新系统快10倍。而且,它的数据集可以通过一系列“学习索引”进行组织,这些索引比传统系统中使用的索引小100倍。
克拉斯卡(Kraska)多年来一直在探索学习索引的主题,可追溯到2017年他与Google同事的有影响力的工作。
并未参与海啸项目的哈佛大学教授Stratos Idreos表示,学习型索引的独特优势是它们的体积小,除了节省空间外,还可以显着提高性能。
Idreos说:“我认为这一工作是范式的转变,它将长期影响系统设计。” “我期望基于模型的方法将成为新一轮自适应系统核心的核心组成部分之一。”
同时,Bao致力于通过机器学习提高查询优化的效率。查询优化器将高级声明性查询重写为查询计划,该计划实际上可以在数据上执行以计算查询结果。但是,通常存在不止一个查询计划来回答任何查询。选择错误的查询可能会导致查询花几天时间才能计算出答案,而不是几秒钟。
传统的查询优化器需要花费数年的时间才能构建,很难维护,而且最重要的是,不要从错误中吸取教训。Bao是第一种基于学习的查询优化方法,已完全集成到流行的数据库管理系统PostgreSQL中。首席作者Ryan Marcus是Kraska小组的博士后,他说Bao生成的查询计划比PostgreSQL优化器创建的查询计划快50%,这意味着它可以帮助显着降低云服务的成本,例如Amazon的Redshift,基于PostgreSQL的。
通过将两个系统融合在一起,Kraska希望构建第一个实例优化的数据库系统,该系统可以为每个单独的应用程序提供最佳性能,而无需任何手动调整。
目标不仅是使开发人员摆脱调整数据库系统的艰巨而艰苦的过程,而且还可以提供传统系统无法实现的性能和成本优势。
传统上,我们用于存储数据的系统仅限于少数几个存储选项,因此,它们不能为给定应用程序提供最佳性能。海啸能做的就是根据接收到的查询的种类动态更改数据存储的结构,并创建新的存储数据的方式,这在更传统的方法中是不可行的。
微软研究院常务董事约翰尼斯·格克(Johannes Gehrke)也是微软团队的机器学习工作负责人,他说他的工作打开了许多有趣的应用程序,例如在主内存数据仓库中进行所谓的“多维查询”。哈佛大学的Idreos希望该项目能刺激进一步的工作,以在新数据和新查询出现时如何保持此类系统的良好性能。
Bao是“强盗优化器”的简称,它是与所谓的“多臂强盗”类比有关的词语,赌徒试图在收益率不同的多台老虎机上最大化其赢利。多臂匪徒问题通常出现在探索多个不同选项与开发单个选项之间(从风险优化到A / B测试)之间进行权衡的任何情况。
“查询优化器已经存在了很多年,但是它们经常犯错误,而且通常他们不会从错误中学到东西,” Kraska说。“这就是我们认为我们的系统可以取得重大突破的地方,因为它可以快速了解给定的数据和工作量,计划使用哪些查询,避免使用哪些查询。”
Kraska表示,与其他基于学习的查询优化方法相比,Bao的学习速度更快,并且只需不到一小时的培训时间就可以超越开源和商业优化器。未来,他的团队旨在将Bao集成到云中系统,以在磁盘,RAM和CPU时间是稀缺资源的环境中提高资源利用率。
克拉斯卡说:“我们希望这样的系统能够缩短查询时间,人们可以回答以前从未回答过的问题。”