亨丽埃塔·东布罗夫斯卡娅:
原文英文,约1100词,阅读约需4分钟。发表于: 。At PG Day Chicago, I presented an extended version of my talk given last year at Citus.con – Temporal Tables and Standard. Just between the time my talk was accepted and I delivered the...
在PG Day Chicago上,我展示了去年在Citus.con上的演讲的扩展版本,介绍了PG 17中首次支持的重要时间特性:单时间主键和唯一约束。双时间模型依赖于现有的PG扩展,特别是GIST索引和带有排除约束的GIST。关于GIST的相关文档可以在这里找到。人们普遍认为保留每个元组的所有版本需要太多的磁盘空间,但实际上需要的空间被高估了。使用双时间模型并不会显著增加系统IO。在PG 17中,具有时间主键/唯一时间键可能看起来不重要,但对于我来说,能够在表描述中看到时间键是一个巨大的需求。现在,我们可以做到了。接下来,我关注的是系统时间和应用时间的区别。SQL标准要求在DML中添加语义,对所有命令添加“FOR PERIOD”子句。对于系统时间,“FOR”是无关紧要的,因为系统时间被定义为“事务时间”,所以它只能从“现在”开始,并且对于时间表中的任何元组,它可以是过去或现在。至于应用时间,它不受事务限制,“FOR”可以定义为任何过去、现在或未来的时间段。无论哪种情况,“更新”都不是常规更新,而是一系列的插入和更新。在定义时间参考完整性时,我们需要考虑这些语义。