大家知道,像OB,HBase这种存储系统,插入数据的时候,一般数据上都会有一个时间戳(ts)。
Hbase有一个TTL(time to live),可以标识数据的有效期,比如,可以把TTL设置成86400*1000,也就是说数据将于1天后过期。这是一个表级的设置,必须在建表时指定。
但是如果说你需要存储某一天内的数据,到第二天0点失效。这种情况TTL是没法控制的,因为TTL只能控制数据在一段时间后失效,而不能控制在特定的时间点失效。
TTL的本质是通过对比数据的ts,与当前系统时间,然后确定是否应该失效,于是,我们可以通过ts来hack一下。
假设数据的TTL是1天,如果我在凌晨1点插入数据,那么正常情况,它会到第二天凌晨1点失效。实际上就是判断:currentMilliseconds - ts > 86400*1000,如果满足,数据就失效了。