Skip to main content
QUICK REVIEW

[论文解读] PIQL: Success-Tolerant Query Processing in the Cloud

Michael Armbrust, Kristal Curtis|arXiv (Cornell University)|Nov 30, 2011
Cloud Computing and Resource Management参考文献 22被引用 4
一句话总结

PIQL 引入了一种声明式查询语言,通过静态限定每个查询的键/值操作次数,确保了规模无关性,从而在数据量大规模增长时也能实现可预测的性能。通过结合编译时分析、SLO 合规性预测以及可扩展的键/值后端,PIQL 允许开发人员构建具有容错能力的 Web 应用程序,同时不牺牲数据独立性,也无需编写命令式代码。

ABSTRACT

Newly-released web applications often succumb to a "Success Disaster," where overloaded database machines and resulting high response times destroy a previously good user experience. Unfortunately, the data independence provided by a traditional relational database system, while useful for agile development, only exacerbates the problem by hiding potentially expensive queries under simple declarative expressions. As a result, developers of these applications are increasingly abandoning relational databases in favor of imperative code written against distributed key/value stores, losing the many benefits of data independence in the process. Instead, we propose PIQL, a declarative language that also provides scale independence by calculating an upper bound on the number of key/value store operations that will be performed for any query. Coupled with a service level objective (SLO) compliance prediction model and PIQL's scalable database architecture, these bounds make it easy for developers to write success-tolerant applications that support an arbitrarily large number of users while still providing acceptable performance. In this paper, we present the PIQL query processing system and evaluate its scale independence on hundreds of machines using two benchmarks, TPC-W and SCADr.

研究动机与目标

  • 解决 Web 应用中的“成功灾难”问题,即用户快速增长导致数据库过载和性能下降。
  • 克服传统 RDBMS 的局限性,其因数据独立性隐藏了昂贵操作,从而引发可扩展性失败。
  • 提供一种在保持声明式查询语言优势的同时,确保大规模下可预测性能的解决方案。
  • 使开发人员能够在不放弃数据独立性或转向低级命令式代码的前提下,构建高度可扩展的 Web 应用程序。

提出的方法

  • PIQL 在查询编译期间使用静态分析,计算任意查询计划的键/值存储操作次数的上限。
  • 系统通过拒绝操作次数无界的查询计划来实现规模无关性,即使这些计划在小数据集上运行更快。
  • 服务等级目标(SLO)合规性预测模型可在编译时估算响应时间,从而实现对性能风险的早期检测。
  • 执行引擎利用并行处理和流水线操作符以最小化延迟,其中数据停止操作符将选择逻辑更靠近数据源。
  • 查询编译器集成了阈值算法和“达到后停止”逻辑,以限制中间结果大小并减少 I/O 操作。
  • PIQL 的架构使用分布式键/值存储作为记录管理器,实现线性可扩展性,并保证每次请求的可预测性能。

实验结果

研究问题

  • RQ1声明式查询语言能否实现规模无关性,使得在小数据上表现良好的查询在数据增长时仍能保持高性能?
  • RQ2如何为复杂的 SQL 类查询计算键/值操作的编译时上限,以确保可预测的性能?
  • RQ3在多大程度上可以使用静态分析和运行时统计信息,在编译时预测 SLO 合规性?
  • RQ4结合声明式查询、静态边界和键/值存储的系统能否在大规模下实现线性可扩展性和低延迟?
  • RQ5PIQL 在支持 TPC-W 和类似 Twitter 的真实 Web 应用工作负载方面,其表达能力如何?

主要发现

  • PIQL 对所有查询成功限制了键/值操作次数,确保随着数据规模增长,性能不会下降。
  • SLO 预测模型在估算响应时间方面具有高精度,使开发人员能够在部署前识别并修复性能瓶颈。
  • 在 TPC-W 和类似 Twitter 的基准测试中,PIQL 即使在重负载下,也能在数百台机器上保持低且可预测的延迟。
  • PIQL 的查询语言表达能力足够强,可支持包含连接和聚合的复杂交互式 Web 应用。
  • 该系统表现出线性可扩展性与一致的性能,响应时间即使在数据规模增加多个数量级后仍保持在 SLO 范围内。
  • 静态分析、有界执行计划与键/值后端的结合,使开发人员能够在不编写命令式代码的情况下实现成功容错。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。