jOOQ星期二:Markus Winand执行现代SQL任务

马库斯温德 欢迎来到jOOQ Tuesdays系列。 在本系列中,我们每隔一个月的第三个星期二发布一篇文章,从jOOQ的角度采访我们发现该行业令人兴奋的人。 这包括从事SQL,Java,开放源代码以及其他各种相关主题的人员。

我们很高兴在第六版中与Markus Winand交谈。 Markus是受欢迎的《 SQL Performance Explained》一书的作者,更受欢迎的网站Use The Index卢克(Luke)的作者 ,我们很高兴看到他正在实现另一个特技:

这个网站的目标是什么?

对于modern-sql.com,我的目标是创建一本教科书,并提供有关您在学校或大学中未学过的SQL知识的参考。 有趣的是,有关这些功能的在线手册很少。 它们以两种方式出现:博客文章和供应商文档。 博客文章通常是一次性事件,涉及特定功能或用例。 那里有很多很棒的博客-jOOQ博客就是其中之一 -但我没有推荐我学习所有有关最近的SQL功能的博客 。 另一方面,供应商文档主要是关于语法的参考-甚至常常是一个不好的参考:他们通常根本没有提及标准合规性,并且倾向于遵循“专有功能优先”的方法。

结果是SQL市场非常分散:除了SQL-92外,没有明显的基础可以为所有数据库所共有。 在工作市场上,这一点尤其明显:工作机会要么只需要SQL(意味着良好的旧关系SQL),要么需要具有特定产品的经验。 如今,这几乎是正常现象,没有人对此表示怀疑。 但是,您如何看待这个职位空缺:“ Google Chrome Web Developer”。 Web开发人员无法选择客户端的浏览器。 许多尝试,但失败了。 还记得“针对XYZ优化”吗? 这就是为什么在过去的几十年中,Web开发人员要求浏览器具有标准一致性的原因。 刚启动一个新网站,我可以说CSS的一致性在过去五年中得到了极大的改善。 最终,我希望SQL发生相同的事情。 我希望modern-sql.com引起人们对标准符合SQL的兴趣,以便开发人员也开始要求数据库供应商提供标准符合性。 雄心勃勃的目标。

是否想阐明该运动的背景?

OFFSET最引人注目的问题是它通常用于无效的用例:分页。 在这种情况下,OFFSET用于跳过许多行,以查找先前选择的行之后的行。 但是,按定义,OFFSET不会返回之前选择的行之后的行,而只是丢弃结果的前N行。 巧合的是,如果同时未更改数据,则OFFSET会产生预期的结果-这种情况在开发过程中非常普遍。 但是,一旦添加或删除行,丢弃固定数量的行就无法给出正确的结果。 正确的方法是记住提取的最后一行,并在WHERE子句中使用此数据来选择后面的行。 有关此方法的详细信息,请参见http://use-the-index-luke.com/no-offset

除了不能使用OFFSET来实现正确的分页之外,OFFSET还不利于性能。 偏移量错误且缓慢。 你还需要什么? 实际上,我知道OFFSET的唯一有效用例是在SQL中实现SLEEP,而我从不需要。 不幸的是,OFFSET于2011年成为SQL标准。我认为这是最近的SQL历史中最严重的错误,因为它无法纠正。 唯一的好处是它是一项可选功能-供应商无需实现标准一致性。 尽管如此,Oracle和Microsoft最近才在其SQL数据库中添加了OFFSET。

它与其他SQL书籍相比如何?为什么读者应该购买?

我将从第二个问题开始。 首先,您必须知道SQL Performance Explained的全部内容可从http://use-the-index-luke.com/免费获得。 我问的大多数人为什么要买这本书,是因为喜欢该网站。 他们购买了这本书,以支持我在“使用索引”方面的工作,卢克(非常感谢!),或者更重要的是,最终从头到尾阅读了这本书。 我得到的典型答案是:“我认识卢克(Luke)已有多年,并且在那里读过很多文章,但是我最终还是想从头到尾阅读所有内容。”

现在要问的第一个问题是,为什么世界需要另一个SQL性能指标:事实并非如此。 因此,我写了一本很小的书,可以在不到一天的时间内阅读。 我专注于基本概念,这些概念在大多数数据库中都是相同的,并且大胆地跳过了不太常见的特殊情况。 在评论中也最赞赏它的简短性。 另一方面,这本书有时被批评为不完整,可能是因为副标题是“开发人员需要了解SQL性能的所有内容”。 我个人认为这些批评以某种方式证明了我的观点:显然,Java,PHP或.NET开发人员不需要像数据库性能顾问那样了解SQL性能。 为此类读者写作时,您必须跳过很多。

从现在开始的10年后,您将在哪里看到SQL?

我希望SQL:2011的时态功能( 请参阅此处 )在公共开源数据库中也可以普遍使用。 目前,它们仅在商业数据库中可用,即使完整性和标准一致性也有所不同。 我也希望SQL标准找到一种方法来应对当前的趋势,即每个数据库供应商都添加自己的专有JSON函数集。 不幸的是,这可能已经为时已晚。

但是,我最大的希望是,开发人员意识到SQL不会在1992年陷入困境。自那时以来,该标准已添加了许多有用的功能。 大多数数据库都提供了这些功能的很大一部分。 实际上,我们对SQL的看法在1992年陷入困境。

进一步了解Markus的作品

…Markus在会议上发表了他的Modern SQL演讲。 点击此处了解详情:

来自Markus Winand的 PostgreSQL中的现代SQL

翻译自: https://www.javacodegeeks.com/2015/10/jooq-tuesdays-markus-winand-is-on-a-modern-sql-mission.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值