乐趣区

关于sql:超越-SQL-的数据查询语言新秀Top8GraphQLPRQLWebAssembly上榜

几十年来,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(缩写为 Wasm)是一种用于创立在 web 浏览器中运行的疾速应用程序的工具,当 Redpanda 开始构建一个数据流工具来取代 Kafka 时,他们心愿增加一种机制,不仅能够传递数据,而且能够在过程中偶然转换数据,WebAssembly 就是最好的抉择。

当然,WebAssembly 甚至比某些数据库中的存储过程性能更强、级别更低。并非所有开发人员都想编写字节级代码。然而这个选项关上了数据流,使其可能进行简单的转换,远远超出了 SQL 所能实现的范畴。

GQL

图形查询语言(Graph Query Language,简称 GQL)是一种被提议的规范,它交融了相似 Cypher、PGQL 和 GSQL 的申明式编程语言。

开发人员通过为一组节点指定特定模型来创立查问,而后数据库负责查找匹配项。GQL 应用更简单的属性图,容许成对的节点共享多个不同的连贯。

Gremlin

Gremlin 是搜寻图形的原始语言之一,它要求执行一组步骤来搜寻节点之间的连贯,因而被一些人称为“基于门路”或“图形遍历”语言。

Gremlin 语言每个查问都是基于步骤构建的,每个步骤都可能波及映射以后节点、过滤列表或以某种形式将后果制成表格。

Gremlin 语言通常只是一个终点,如在扩大 Gremlin 时,在其中嵌入 Python 解释器,以便查问能够蕴含 Python 代码。也有人将 Gremlin 嵌入 Java 等规范编程语言中,以此来从该语言中开掘 Gremlin 的威力。

Gremlin 最后是为 Apache 的 TinkerPop 我的项目构建的,它已被次要的事务性分布式图形数据库(如 Amazon 的 Neptune)和应用 Apache Spark 或 Hadoop 的图形处理框架所采纳。

N1QL

N1QL(发音为“nickel”)旨在让 SQL 原生用户更容易解决可能存储在 Couchbase 中的 JSON 对象。与 SQL 一样,根本查问有几个由关键字 SELECT、FROM 和 WHERE 指定的局部,指定数据将来自的数据结构门路的细节将依据 JSON 对象的嵌套世界进行调整和调整。

多年来,数据库软件公司 Couchbase 始终在寻找查问个别文档的最佳形式。一开始,查问是作为一个 JavaScript 函数编写的,而后交给数据库执行。只管这是一个很好的、通用的解决方案,但有时须要破费很长时间能力生成后果,因而开发者发明出了 N1QL。

为了激励试验,N1QL 提供了一个带有可视化界面的查问工作台,用于测试和优化查问。此外,Couchbase 还提供了一个通用的全文搜寻选项,可独立运行,用于搜寻文本词而非结构化数据的查问。

Malloy

Malloy 的创建者曾示意,SQL 的问题在于语法细节 —— 表白哪怕是最简略的查问也须要工夫,因为语言简短且充斥暗藏的性能陷阱。因而,他们发明了一种具备天然默认值和更简略语法的古代编程语言 —— Malloy,能够编译成 SQL,因而没有人须要革新 stock database。

其后果是一种相似于更弱小的 GraphQL 的语法,查问更像是后果的模型或愿景,包含任何限度、匹配或默认值。Malloy 可在后盾解决一些优化,如能够主动生成更智能的连贯,以防止一些性能陷进;而子查问能够聚合以节省时间,还可依据须要增加索引。因而,编写查问更像是编写古代代码,标点符号能够放弃构造简洁。

Malloy 的开源外围是在 TypeScript 中构建的,用于蕴含在 Node.js 中的代码,VS Code 插件简化了开发。

Basis

大多数查询语言都间接绑定到特定的数据库,而 Basis 正在构建更多的管道,在应用 SQL 和 Python 混合过滤之前,能够从各种源中提取数据,最初再将数据交付给各种规范选项进行输入,从运行代码到人工智能算法再到图表和仪表盘。

Basis 只是更新的数据管道工具的一个例子,这些工具正在关上查问过程,从多个源中提取数据,应用多个语言进行过滤,并以多种形式交付数据。

综述

下面 8 个新型数据查询语言的呈现,也并非意味着 SQL 越来越不受欢迎。如果说有什么区别的话,那就是编写的 SQL 比以往任何时候都多,而数据存储的世界正在以更快的速度倒退,而这些倒退和增长正在激发更多新尝试和新拓展。

当然,也并非所有这些新类型语言都比 SQL 更好,并不是所有这些都是开发者们正在寻找的,但他们的而呈现都提供了一个新的机会,让你有机会以不同的形式思考某些服务器上的海量字节,期待你能找到一种新的办法来说明自我所需,不是吗?

退出移动版