“超越” SQL 的数据查询语言“新秀”Top8:GraphQL、PRQL、WebAssembly上榜
技术编辑:MissD丨发自 思否编辑部
几十年来,SQL(结构化查询语言)一直在数据查询语言领域处于主导地位,几乎成了数据库的“代名词”,任何想从数据库中检索信息的人都必须学习 SQL。但随着时代的变迁,SQL 对数据检索的主导力量正在减弱。
众所周知,世界上其他地方都使用小写字母,但 SQL 用户却仍在输入 SELECT 或 WHERE 等单词,这本身就是一种“倒退”。也正因为如此,现在市面上已经出现了一批使用全新语言的新数据库。
近日,InfoWorld 评选出了 8 款“超越” SQL 的数据查询语言,不仅为现代用例提供了更多的优雅、简单和灵活性,有些甚至还更好用,一起来看看吧!
GraphQL
GraphQL 的名字乍一听会让人有点困惑,因为它并非一种利用图形数据库中所有可能性的语言,反而更像一种查询类似于 JSON 的嵌套格式存储数据的优雅速记。
GraphQL 数据查询语言只是对结果的查询做快速描述,通过后端查看该字段列表,这些字段可能对值有限制,并尝试查找匹配的结果。SQL 一般是指定数据库应该如何完成请求,而 GraphQL 用户只需提供一个字段列表。
特别对于某些 JSON 数据库来说,GraphQL 语言是一种天然的匹配语言,且 GraphQL 在使用表格模式搜索关系数据库时也越来越流行,智能后端可以将嵌套请求转换为符合模式的连接模式。
GraphQL 最初由 Facebook 构建,用于 API 的查询语言,允许开发人员选择他们想要发出的请求类型,并在单个请求中接收所需的信息。在作为一个独立的开源项目被发布后,开发人员开始开发 GraphQL 后端。
PRQL
PRQL 语言为 Pipelined Relational Query Language(发音为“Prequel”)的缩写。这种语言中的查询被构造为一系列小命令,这些命令只使用所需的数据生成结果。
与许多现代编程语言类似,PRQL 查询的思考模型采用函数方法,变量等简单功能可以减少重复,简化流程。一行的结果以长链形式输入下一行,如果您想删除一个步骤,通常只需注释掉这一行,其余的 pipeline 仍然可以工作。
PRQL 的代码采用了 Rust 编写,以此将 PRQL 转换为 SQL 的传输工具,因此基本结构是可扩展的,这种简单的实验确保了语言的快速发展。
WebAssembly
当然,WebAssembly 甚至比某些数据库中的存储过程功能更强、级别更低。
并非所有开发人员都想编写字节级代码。但是这个选项打开了数据流,使其能够进行复杂的转换,远远超出了 SQL 所能实现的范围。
GQL
图形查询语言(Graph Query Language,简称GQL)是一种被提议的标准,它融合了类似 Cypher、PGQL 和 GSQL 的声明式编程语言。
开发人员通过为一组节点指定特定模型来创建查询,然后数据库负责查找匹配项。GQL 使用更复杂的属性图,允许成对的节点共享多个不同的连接。
Gremlin
Gremlin 语言每个查询都是基于步骤构建的,每个步骤都可能涉及映射当前节点、过滤列表或以某种方式将结果制成表格。
Gremlin 语言通常只是一个起点,如在扩展 Gremlin 时,在其中嵌入 Python 解释器,以便查询可以包含 Python 代码。也有人将 Gremlin 嵌入 Java 等标准编程语言中,以此来从该语言中挖掘 Gremlin 的威力。
Gremlin 最初是为 Apache 的 TinkerPop 项目构建的,它已被主要的事务性分布式图形数据库(如 Amazon 的 Neptune)和使用 Apache Spark 或 Hadoop 的图形处理框架所采用。
N1QL
为了鼓励实验,N1QL 提供了一个带有可视化界面的查询工作台,用于测试和优化查询。此外,Couchbase 还提供了一个通用的全文搜索选项,可独立运行,用于搜索文本词而非结构化数据的查询。
Malloy
Basis
大多数查询语言都直接绑定到特定的数据库,而 Basis 正在构建更多的管道,在使用 SQL 和 Python 混合过滤之前,可以从各种源中提取数据,最后再将数据交付给各种标准选项进行输出,从运行代码到人工智能算法再到图表和仪表盘。
Basis 只是更新的数据管道工具的一个例子,这些工具正在打开查询过程,从多个源中提取数据,使用多个语言进行过滤,并以多种形式交付数据。
综述