DQL语言的历史

大家好,才是真的好。没错,哪怕是一门新语言,它也有自身的演变历史。最近,一名叫做JD Curtis的技术工程师介绍了DQL诞生的来龙去脉,它并不是凭空产生的,而是有很久的技术积累和酝酿。

当然以下文章来自于我的半吊子翻译,文章很长,估计得花费一段时间去看,当然因为是翻译,如果词不达意,您可以阅读这里的简单介绍,如果读者觉得有必要看看全文可以参见下面的翻译和最后的原文链接。

一、简单介绍

DQL来源于JD Curtis和其他三个同事的一个代号“臭鼬鼠”的项目,尽管该项目后来废弃了,但产生了一系列的想法和思路,为最终设计DQL实现了很好的基础。DQL借鉴了很多其他产品的搜索和查询思路,作者本人也对大型机数据库和SQL了如指掌,同时也了解MongoDB和CouchDB等,最终DQL语言使用逻辑运算结合Notes数据库中的 IDTable,实现了超快的数据搜索查询。

二、我的一点小翻译

早先几年,JD Curtis和他的三个同事一起为一个废弃的技术项目做无用的工作,虽然说起来无用,但验证了一些概念。主要是采用功能强大的用REST API替代一些Domino内置服务,他们在圣诞节一起工作了几个月,展示了更方便的方式来提供API所需的功能。

工作中涉及到一些数据转换,当然,JSON是所有REST有效支持的数据格式,而幸运的是,他们有一些内置库可以解决JSON问题。不过验证了将Domino服务整合在一起以满足不同的查询条件,为后续的工作做了很好的铺垫。

作者本人在查询处理方面有很长的工作经验,1986就开始接触大型机数据库,比如Model 204。该数据库有自己的查询语言,通过使用两种索引和直接数据访问,至少比Lucene、Hadoop和map-reduce等方式要早40年吧?它使用布尔方式处理,避免IO访问问题,使用机器级别的指令集,采用了AND,OR和NOT逻辑操作。
DQL语言的历史_第1张图片
后来,这种方式被移植到C、Unix 和 Windows上,也支持1992版的SQL。它有良好的可移植性,在专门领域实现高速、复杂的布尔逻辑处理。作者本身对SQL也非常了解,了解SQL中的关系范式和优势。但在Notes/Domino平台上工作时,他深入研究了半结构和非结构化数据结构的键值对应关系,如强制映射到SQL时,发现每次的成功方式不一样。进入互联网时代后,关系型数据库慢慢地由绝对主角变成了辅助角色。

2018年早些时候,作者和团队成员开始认真地考虑和使用Node.js提供NoSQL功能来访问Domino。现在,Domino最棒的属性之一就是它可以支持任何前端和后端,如Node.js和JSON。

在开发新前端时,最大的挑战是在新的格式中映射并使用Domino数据库。作者需要进行大量工作,以实现使用底层引擎的现有能力,实现一个早期的可交付的查询功能。

Domino很久就已经支持常规查询工具,它不是关系数据库搜索引擎,对于NoSQL数据库改造来说,这是一件非常好的事情。它在非结构化,关系非规范化数据中已经打好了深层基础。

不可否认,现在大多数Domino的引擎都是为了支持IBM Notes客户端及其基于早期的浏览器而构建的。在Node.js和其他查询工具中,索引和文档数据的使用,使用不同的资源和空间。例如,在滚动收件箱或视图时一次呈现100个索引条目的调用,是在同一视图中查找5000个条目的结果所需的小增量。

在早先几年的项目中,使用过Notes索引工具(NIF)。鉴于数据库级查询和Domino数据模型的语义,在视图和视图列设计中需要某些限制才能实现工作引擎。在那项目中,他们还将Domino IDTable表确定为布尔处理的首选途径,速度超快,但有一个限制,那就是是NoteID不能移植到其他副本,但这不会影响早期用户的需求,毕竟这种查询极具性能优势。 IDTables是查询引擎的关键。

设计方式和思想有了,还需要一种语言。早期他们在基于文档的NoSQL数据中确定了现有的语言模式。它们是MongoDB和CouchDB,它们都有JSON查询接口,方便用户构建布尔树。用同样的方式,构建出可使用的DQL 1.0。他们没有像发动机那样专注于语言。因此我们将其称为DGQF(Domino General Query Facility),因为Domino是一组协同工作的基础设施,但语言首字母缩略词DQL赢得了许多人的赞美(如果没关系,我们仍然会在内部称之为DQF)

这里并不会介绍语言的详细信息,正式的语言文档会随着产品最终发布一起进行发布。新的语言是合理的,相信新语言会在应用程序开发人员手中产生新的力量。他们将会尽最大努力 并将继续努力 将现有功能进行创新使用,并将视图和文件夹中存在的IDTables等组件写在语法中,让它们能很好地融合在一起。

还有Domino V11,目前,你还没有见过它呢。

三、原文地址

原文地址:https://jdcurtisblog.wordpress.com/2018/09/15/dql-roots/

更多精彩内容可关注微信公众号:“协作者”
DQL语言的历史_第2张图片

你可能感兴趣的:(DQL语言的历史)