数据淘汰
TcaplusDB后台淘汰记录的两种方式:
- 被动淘汰:有请求访问记录时,实时判断该记录是否过期, 过期记录立即清除,并返回记录不存在。
- 主动淘汰:Tcaplus后台遍历表,判断并删除已过期记录。主动淘汰因会遍历整张表,因此性能消耗相对较大,通常由DBA配置在业务低峰期扫描。
在产品形态上,TcaplusDB支持“表级数据淘汰”和“记录级数据淘汰(TTL)”
1. 表级数据淘汰
- TcaplusDB支持为任何表配置一个根据"记录最后修改时间"做判断的数据淘汰规则,如淘汰30天前的邮件。
- 记录在更新数据(插入、修改、替换)的时候,系统会自动更新记录的"最后修改时间"。
- 仅通过"主动淘汰"方式,判断"系统当前时间 - 记录最后修改时间 > 过期时间"来淘汰过期的记录。 因此过期记录可能延迟天级别删除。
1.1. 适用场景
- 全表的数据都遵循相同的数据淘汰规则;
- 能够容忍数据过期后,短时间内还可以查询到的情况。如设置30天淘汰的记录,可能在31天才删除。
- 淘汰时间的粒度在天以上。
1.2. 使用方法
2. 记录级数据淘汰(TTL)
- TcaplusDB支持为Generic表(List表暂不支持)的单条数据设置过期时间(TTL)。一张表的不同记录可以有不同的过期时间。
- 业务通过调用SetTTL和GetTTL等接口设置和查询记录的过期时间
- TcaplusdB通过"主动淘汰"和"被动淘汰"相结合方式,判断"系统当前时间 > 过期时间"来淘汰过期的记录。
2.1. 适用场景
- 记录的过期时间需要精确到秒或毫秒级,过期时间后一定访问不到记录.
- 一张表中的不同记录需要设置不同的淘汰时间.
2.2. 使用方法
查询和设置单条数据的过期时间(TTL)接口,参见TcaplusDB SDK & API文档中的相关接口说明。
注意:如果设置了表界别数据淘汰的同时,调用TTL接口设置了某些key永不过期淘汰(记录级别淘汰),实际也可能淘汰TTL接口设置永不淘汰的记录