Oracle 有行的生存时间功能吗?

问题描述 投票:0回答:3

在 Cassandra 中,我习惯了 upserts 的

USING TTL
子句,它设置了几秒后更新插入的数据将被删除。

Oracle有这样的功能吗?我还没找到任何相关信息。

sql oracle
3个回答
7
投票

有多种方法可以实现此功能,但我不相信它是内置的。最简单的方法是在表中添加一个

CreatedAt
列,用于指定何时插入行。然后,创建一个视图来获取最新的行,因此对于最近的一天:

create view v_table as
    select t.*
    from table t
    where t.CreatedAt >= sysdate - 1;

这修复了数据访问端。要实际删除行,您需要一项额外的工作来定期删除表中的旧行。


2
投票

我认为这取决于你所说的“Oracle”是什么意思。

Oracle 关系数据库没有开箱即用的功能。我们通常安排一个存储过程来执行此类任务。

Oracle NoSQL 数据库 有它:

生存时间 (TTL) 是一种允许您自动使表行过期的机制。 TTL 表示允许数据在存储中保留的时间量。已达到过期超时值的数据将无法再检索,并且不会出现在任何商店统计信息中。数据是否从存储中物理删除是由用户无法控制的内部机制决定的。


0
投票

Oracle工作人员建议,为了管理比ttl更全面(也更复杂)的数据生命周期,我们可以使用信息生命周期管理(ILM)

https://docs.oracle.com/en/database/oracle/oracle-database/19/vldbg/time-based-info.html#GUID-FB83C140-B7E7-4EF8-959A-A990ECE20369

© www.soinside.com 2019 - 2024. All rights reserved.