为什么PostgreSQL没有一个简单可靠的方法来访问表创建时间



如PostgreSQL问题的vage答案所示:表创建时间以及类似的问题,没有简单的方法可以获得表的创建时间。。。控制、表管理或表审计(以及缓存系统和其他系统)的任务需要这些重要信息。。。那么,为什么PostgreSQL不提供一个简单直接的方法来获得它呢?不能使用内部系统表或编译标志来创建此字段(例如在pg_class)?

PostgreSQL是一个社区驱动的开源项目。开发由感兴趣的志愿者、为解决客户问题而付费的顾问,以及销售PostgreSQL服务的公司组成,这些公司希望让PostgreSQL对用户更有吸引力。

如果没有人想要这个功能,愿意为它的开发付费,愿意花时间自己开发补丁,或者向他们使用服务的公司施压来开发它,它就不会被开发出来。

除非你是一个可能想要登录支持/服务的潜在用户,或者能够说服某人你的需求是由大量用户共享的,否则你不太可能说服某人花自己的付费商业开发时间。

这是一种"搁置或…"的情况。

碰巧的是,我正在考虑将其作为我参与的PostgreSQL安全和审计的欧盟AXLE项目的一部分。不过,我还有其他紧迫的优先事项,所以在很长一段时间内不会收到它。

大多数人最终想要最后一个修改的时间,而不仅仅是创建的时间。这要困难得多,因为它强制每次提交都要写入元数据。Pg不能只使用磁盘上的修改时间,因为(a)它为每个表都有多个扩展数据块,(b)像VACUUM和提示位设置这样的非用户活动仍然写入表。我无意解决这个问题,到目前为止,我还没有看到任何人想要它,也愿意为实现它而努力。

(我已经标记了这个"社区维基",因为它不是真正的问答,我很接近投票这个问题)。

主要原因很简单-我们(PostgreSQL开发人员)没有就如何实现该功能(以及该功能应该做什么)达成一致。现在,经过多年的讨论,有了一个简单的解决方案——每个人都可以使用"EVENT TRIGGERS"(PostgreSQL 9.3),并可以根据需要实现此功能。

最新更新