在之前的某个时间点执行查询

时间:2017-01-09 14:49:30

标签: postgresql

是否有可能记得"某个时间点,并给它一个标识符,以便我以后可以在查询中引用它,然后从数据库中获取结果呢?

如果存在这样的机制,它有多轻量级?产生数十个"快照"是否可以接受?一秒钟?

我认为我可以通过公开其身份证的交易得到类似的内容,但我担心这太重了,我不确定交易是否可以退出,但不会被销毁。< / p>

1 个答案:

答案 0 :(得分:1)

您无法访问未保留的数据,但有一些方法可以让您执行此类操作。如果您真的很感兴趣,请阅读有关双时态表和SQL:2011的内容。两本好书是由Richard Snodgrass撰写的在SQL中开发面向时间的数据库应用程序(也可作为free PDF on his website)和Tom Johnston的双时态数据

this talk from 2015中描述了一种不那么学术化的方法,它不是 bi -temporal,而是允许您访问旧数据。

另一种方法,也不是双时态的,是使用temporal_tables extensiongithub here)。

我认为最大的挑战是随着时间的推移随着架构的发展而处理旧数据。例如,您添加了一个新的NOT NULL列。你怎么处理所有旧记录?据我所知,无论是在研究还是在工具中,都很少能解决这个问题。