AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

谷歌建议在 SQL 中增加管道语法

作者:Renato Losio

  • 2024-10-25
    北京
  • 本文字数:1293 字

    阅读完需:约 4 分钟

谷歌建议在 SQL 中增加管道语法

在最近一篇题为“SQL 有问题,我们可以解决”(SQL Has Problems. We Can Fix Them)的论文中,谷歌的一个研究团队建议在 SQL 中引入新的管道语法。谷歌为解决 SQL 被认为存在的局限性而提出的这一解决方案目前已在 GoogleSQL 和 ZetaSQL 方言中提供,但社区对此的反馈却褒贬不一。


为了解决 SQL 的设计挑战并使其成为一种更灵活的语言,谷歌的研究团队提出通过引入管道数据流语法来扩展 SQL。这种设计遵循了与 MongoDB 查询语言 等新兴数据语言相似的模式。谷歌的软件工程师 Jeff Shute 及其同事写道:


我们不必容忍 SQL 的缺陷。这种语言是可以修复的!本文展示了如何借鉴其他语言和 API 的灵感,将管道结构化数据流添加到 SQL 中,而且只需可接受的开销。由此产生的语言依然是 SQL,但却是更好的 SQL。它更灵活、更可扩展,也更易于使用。


传统 SQL 将操作组合成一个语句,而管道式 SQL 则将其拆分为一系列步骤。例如,以下查询:


SELECT name, price FROM products WHERE price > 10;
复制代码


现在可以写成:


products | WHERE price > 10 | SELECT name, price;
复制代码


作者和其他专家认为,采用 SQL 的管道语法可以带来多种实际好处,包括提高代码的可读性和可维护性、更好的工具和 IDE 支持,以及提高工作效率。由于新语法旨在简化 SQL 查询的编写、读取和维护过程,因此可以加快开发周期,使查询结构更直观,更容易理解和修改。


来源:谷歌研究


目前,GoogleSQL 支持管道语法,这是一种 SQL 方言,用于 Google 的多个不同的 SQL 产品,包括 BigQuery、Spanner、F1、Bigtable、Dremel 和 Procella,既用于公开产品,也用于内部产品。Shute 及其同事总结道:


管道语法开启了全新的 SQL 使用方式、提升 SQL 工具的机会以及未来的语言创新(……)。取代 SQL 既不必要,也不理想,更不现实。我们可以从语言内部解决 SQL 最严重的问题。


谷歌并不是唯一一家采用管道式 SQL 的超大规模云服务提供商;微软也在 Azure Data Explorer 和使用 Kusto Query Language (KQL) 的 Fabric KQL DB 中提出了类似的做法。SQLite 的创建者 Richard Hipp 对此 并不十分认可,YugabyteDB 的数据库专家兼开发者倡导者 Franck Pachot 则认为这并 不是什么好主意。Pachot 写道:


这种管道语法在编写简洁 SQL 代码方面非常糟糕(……)。在所有语言中,以函数的签名、名称、输入参数和返回类型作为开头是有充分理由的(……),SQL 查询也是如此。SELECT 子句定义了返回给程序的内容:表格结果的列及其名称(……)。你能用管道语法查看上面的查询吗?你该如何猜测结果的结构?


在 Reddit 上的一个热门话题中,用户 Jabes 评论道:


我认为这看起来非常有趣。如果我的数据库能够支持它,并且假设优化器仍能将语句作为一个整体来考虑,我愿意试一试。我在想,是否有可能实现一个翻译层。


新语法也可用于 GoogleSQL 的开源版本 ZetaSQL。

作者简介


Renato Losio,拥有丰富的云架构师、技术负责人和云服务专家经验。他目前居住在柏林和的里雅斯特之间,远程担任首席云架构师。他的主要兴趣领域包括云服务和关系数据库。他是 InfoQ 的编辑,也是公认的 AWS 数据英雄。


原文链接:

https://www.infoq.com/news/2024/09/google-sql-pipe-syntax/

2024-10-25 08:0413326

评论

发布
暂无评论
发现更多内容

大模型重塑区域人才培养,飞桨(重庆)人工智能教育创新中心正式启动

飞桨PaddlePaddle

人工智能 百度飞桨

连接云-边-端,构建火山引擎边缘云网技术体系

火山引擎边缘云

网站 CDN 边缘计算 边缘云 火山引擎边缘计算

ABAQUS是什么软件?哪里可以学习有限元分析技术?

思茂信息

仿真软件 abaqus 有限元分析 有限元技术 结构仿真

NFTScan 浏览器正式版上线 2 周年!

NFT Research

NFT nft工具

多元任务,高额奖金!首届“开放原子开源大赛”等你参与!

飞桨PaddlePaddle

人工智能 paddle 百度飞桨

【原理篇】Supabase 权限模型 Part1

张文平

Serverless API sdk 权限控制 Supabase

【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看?| ARTS 打卡第 四 周

计算机魔术师

人工智能

低代码开发的优势与劣势,看这一篇就够了

互联网工科生

软件开发 低代码

音视频数字化进行时,MediaBox重新定义「高易用」

阿里云CloudImagine

云计算 视频云

学习CAE软件有什么方法技巧?

智造软件

有限元分析 CAE软件 altair

容器编排工具的比较:Kubernetes、Docker Swarm、Nomad

树上有只程序猿

Kubernetes Docker Swarm Nomad

INFINI Labs 产品更新 | Console 告警中心 UI 全新改版,新增 Dashboard 全屏模式等功能

极限实验室

console INFINI Labs INFINI Console 极限科技

MySQL的Json类型个人用法详解

北桥苏

活动回顾丨云原生开源开发者沙龙深圳站(含 PPT)

阿里巴巴云原生

阿里云 开源 云原生 消息列队

如何利用FuncGPT告别繁琐的开源代码调试

飞算JavaAI开发助手

AI 软件开发 程序员‘’ 自然语言 Java'

谷歌建议在 SQL 中增加管道语法_大数据_InfoQ精选文章