这会有点麻烦,但是我对那些试图发明自己的查询语言的软件感到非常恼火。 我们已经拥有一万亿个不同的ORM,另一个具有我们自己的查询语言的兆亿个数据库以及另一个兆万个SaaS产品,您需要掌握它们所发明的一些常规DSL才能访问这些产品。
还我的SQL。 这种语言是所有人都可以理解的,自70年代就已经存在,并且在此期间已成为一种标准。 它易于阅读,任何人(从企业到工程师)都可以使用。
但是,相反,我必须学习一大堆不同的“垃圾查询语言”,因为人们仍在尝试重新发明轮子。
让我们从ORM开始。 它们的主要特点是减少了开发时间。 但是,与其代替为所有人编写易于理解的SQL,我还必须研究特定ORM的文档以弄清楚如何为其编写查询。 另外,我必须花时间进行调试,以找出为什么此ORM会将我的查询转换为一些庞杂的SQL,并使用它们的完整扫描将它们联接到17个表中。 与其坚持使用标准SQL(在效率上很容易谈论效率)(“尝试在谓词中使用索引列”,“不要在一个查询中使用联接来过度使用”等),我必须处理一个额外的泥泞层,隐藏原始的SQL查询。 最后,您将获得更高级别的膨胀数据类,而不是处理易于理解和处理的数据库结构。
更不用说大约有五千个ORM,因此一旦学习了34种不同的ORM,就不用学习SQL。 这并不意味着人们学习ORM,而是意味着他们根本不学习SQL。
以及所有这些SaaS产品。 我只是从公司堆栈中挑选了一些:
有什么比数据转储更糟糕的呢? 发明了自己的查询语言的数据转储。
公平地讲,应该说其中一些查询仍然类似于SQL,或者至少要扮演这个角色,但是由于它们自身的怪癖,使我放弃了以前对SQL的了解。 有时在某种程度上,过去的知识可能实际上是一文不值的。
此外,每个数据库还尝试重新发明查询语言。 Mongo有其自己的糟糕查询语言 ,我从未理解,Lucene有其自己的等等。
我要什么? 并不是很多:
- 每个SaaS产品都应该能够将所有数据复制到我自己的SQL数据库中(在我的情况下是Postgresql / Redshift)。 我不想使用他们的DSL。 在通过关于开放银行服务PSD2的指令之后,也许欧盟将能够将此作为下一个要求。
- 需要暂停30年以发明新的查询语言。
- 我们需要消除有关ORM使代码更干净的神话。 切换到纯SQL,您将与数据库进行更简单,更透明的交互。
仅此而已。 我知道我就像一个老gr子,但是我要冒这个险。
聚苯乙烯
该帖子已收到足够多的意见,因此应该引起公众的强烈兴趣。 关注关于Hacker News的讨论和有关Reddit r / programming的评论。