发布于: Nov 30, 2022

【概要】为了提高数据的利用率,我们设计了一套可兼容的数据查询语言:PartiQL,下面就为大家介绍一下我们的设计原理以及实现方式。

为了提高数据的利用率,我们设计了一套可兼容的数据查询语言:PartiQL,下面就为大家介绍一下我们的设计原理以及实现方式。

 

以下设计原则体现了我们的设计目标,是 PartiQL 的基础:

  • SQL 兼容性:PartiQL 通过维持与 SQL 的兼容性来促进采用。现有 SQL 查询在为了提供 PartiQL 而扩展的 SQL 查询处理器中继续起作用(即它们将维持自己的语法和语义)。如此一来,便避免了重写现有 SQL 的需求,并且使开发人员和商业智能功能可轻松利用 PartiQL。
  • 一类嵌套数据:该数据模型将嵌套数据视为数据抽象的基础部分。因此,PartiQL 查询语言提供可全面准确地访问和查询嵌套数据的语法和语义,同时与 SQL 的标准功能自然的组合到一起。
  • 可选架构和查询稳定性:PartiQL 不需要在数据集上使用预定义架构。按设计,它可被担任有架构引擎(无论是写入时的架构还是读取时的架构)或无架构引擎的数据库引擎使用。从技术上来看,只要数据本身保持不变,正在进行的查询就不会因现有数据被应用架构而改变。因此,尽管参与引擎的架构假设不同,仍然更容易提供对多个存储的一致性访问。
  • 最小扩展:PartiQL 在 SQL 上有最少数量的扩展。这些扩展易于理解、有助于高效实现,并且彼此之间及与 SQL 本身都能很好的结合。它支持对结构化、半结构化和嵌套数据集的组合进行直观筛选、加入、聚合和窗口化。
  • 格式的独立性:PartiQL 语法和语义不受任何特定数据格式的限制。在 JSON、Parquet、ORC、CSV、Ion 或其他格式的基础数据中,查询均以相同方式编写。查询在映射到不同基础格式的综合逻辑型系统中运行。
  • 数据存储的独立性:PartiQL 语法和语义不受任何特定基础数据存储的限制。由于其表达性,语言适用于各种不同的基础数据存储。

过去的语言已经解决了这些原则的子集。例如,Postgres JSON 与 SQL 兼容,但没有将 JSON 嵌套数据视为一类需求。半结构化查询语言虽然将嵌套数据视为一类需求,但它允许偶尔与 SQL 不兼容,或者甚至看起来不像 SQL。PartiQL 是第一个遵守这一整套原则的语言。

正如它的设计原则带给您的期望结果一样,PartiQL 对于 SQL 用户来说既简单又熟悉。自 2018 年以来,它已被 Amazon Redshift Spectrum 的多位客户使用:

Annalect 是 Omnicom 的全球数据与分析小组,它提供使数据可操作的特定用途可扩展解决方案,是 Omnicom 的革命性精准营销和洞察力平台 Omni 背后的推动力。“PartiQL 使我们能够在 Amazon S3 中使用 Amazon Redshift Spectrum 直接查询嵌套数据,无需进行无嵌套化处理,同时,它还使我们能够使用标准化语言将 Amazon S3 中的嵌套数据带入 Amazon Redshift 的本地表格中”,Annalect 的高级工程师兼架构师 Eric Kamm 说。Annalect 数据和运营部总监 John Briscoe 补充道:“令我们兴奋的还有,它可以让我们在一个数据平台到另一个数据平台中一致地查询语法,从而可以更轻松地开发多数据平台应用程序、更简单地进行开发人员入职培训。”

Yelp 的软件工程师 Steven Moy 说:“PartiQL 解决了多存储环境中的关键缺失部分 — 可以跨多个域特定数据存储工作的高层次声明性语言。在 Yelp,我们利用多个 Amazon Web Services 数据存储(Redshift、S3、DynamoDB)技术将最佳的本地业务提供给用户,并为当地企业所有者提供接触当地受众的最佳方式。利用 Amazon Redshift Spectrum,Yelp 支持八倍的数据量,从而帮助开发人员社区根据数据作出明智的决策,并且我们期待能与 PartiQL 进一步合作,从而使 Yelp 的开发人员能将时间集中于创造愉悦的用户体验,而不是掌握一门新的查询语言或解决典型的一致性问题。”

与传统 SQL 不同的是,PartiQL 查询语言同时还满足 NoSQL 和非关系数据库的需求。Amazon Quantum Ledger Database (QLDB) 已采用 PartiQL 作为它们的查询语言。

Amazon Web Services 高级首席工程师兼 Amazon Quantum Ledger Database (QLDB) 架构师 Andrew Certain 谈到选择 PartiQL 时称:“QLDB 需要一个灵活的、面向文档的数据模式,从而使用户可以轻松存储和处理结构化和半结构化数据,无需承受定义和发展架构的负担。同时,QLDB 希望从广泛的 SQL 知识中获益。PartiQL 极大地满足了这两个目的。它只需极少的扩展便可以访问嵌套和半结构化数据,且这些扩展功能强大且非常直观。” QLDB 目前处于预览模式,是采用了 PartiQL 的 Amazon Web Services 服务之一。

Couchbase Server 利用的是基于 JSON 的面向文档的数据模型,也期待采用 PartiQL:

Couchbase 的工程高级副总裁兼首席技术官 Ravi Mayuram 说:“作为将 SQL 引入 JSON 的先驱(在三年前引入 N1QL 时),Couchbase 认为为关系数据库构建 SQL 所依据的基础与 JSON 数据模型和数据库同样可靠。PartiQL 是此趋同过程中一个可喜的进步,我们期待为它提供支持。”

 

此图表在较高的级别上显示了 PartiQL 参考实现。我们对 PartiQL 查询表达式的词句分析器、解析器和编译器进行了开源。我们提供了一个可嵌入或用作独立工具以运行查询的库。用户可以使用这个库来验证 PartiQL 查询,或嵌入 PartiQL 评估器以在其系统内处理数据。该库提供数据接口以绑定到应用程序可能具有的任何数据后端,并为 Ion 和 JSON 提供开箱即用的支持。
 
相关文章