【问题标题】:Aerospike: get upsert time without explicitly storing it for records with a TTLAerospike:获取 upsert 时间,而无需显式地将其存储为具有 TTL 的记录
【发布时间】:2016-01-29 22:50:24
【问题描述】:

Aerospike 非常快速和可靠,但价格昂贵。对我们而言,成本取决于存储的数据量。

我们希望能够根据更新插入时间查询记录。目前,当我们添加或更新记录时,我们将 bin 设置为当前 epoch 时间,并且可以在此 bin 上运行扫描查询。

我突然想到 Aerospike 根据更新插入的时间知道记录何时过期,并且由于我们可以通过 simple UDF 从记录元数据中查询 TTL 值,因此可能可以推断出更新插入时间对于具有 TTL 的记录。我们有效地使用空间来存储已知的值。

是否可以通过 UDF 访问记录创建或到期时间,而无需明确存储?

【问题讨论】:

    标签: user-defined-functions ttl aerospike


    【解决方案1】:

    此时,Aerospike 仅将无效时间与记录(记录到期的时间)一起存储。所以不幸的是,upsert时间不可用。不过请继续关注,因为我听说有一些计划提供一些可能对您有所帮助的新功能。 (我是 Aerospike 的 OPS/支持团队的一员)。

    【讨论】:

    • 谢谢@Meher。如果我们知道 void 时间和 TTL,我们应该能够推断出 upsert 时间,前提是 TTL 不为 0(即“永远”)。所以我很想知道是否可以通过 UDF 访问无效时间?无效 - TTL = upsert;其中 TTL > 0。
    【解决方案2】:

    无效时间:这会跟踪系统中密钥的寿命。这是密钥应该过期的时间,并由驱逐子系统使用。

    所以 ttl 是从无效时间推导出来的。

    当我们从记录中得到ttl时,我们只能计算无效时间(now + ttl)

    根据您所拥有的,我认为只有在您向所有记录添加相同数量的过期时间(例如 CONSTANT_EXPIRATION_TIME)时,您才能从 ttl 评估 upsert 时间。

    在这种情况下

    upsert_time = now - (CONSTANT_EXPIRATION_TIME - ttl)
    

    HTH

    【讨论】:

    • 感谢@AmodPandey。我很欣赏你的回应。目标是最小化存储的数据量。我们当然可以将 upsert 时间存储在 bin 中,但这意味着我们有效地存储了 Aerospike 中已经存在的数据(对于 TTL > 0)。缺少的部分是已经存在的记录的无效时间:Aerospike 存储了这个,但是通过查看文档,如何访问这些信息并不明显。
    • 嘿@AlexWoolford,Aerospike 不会同时存储无效时间和 TTL。它只存储无效时间(记录应该到期的时间)。假设我添加了一条记录并将到期时间设置为 1 小时,并且该记录是在下午 4 点插入的。 Aeropsike 会将无效时间存储为下午 5 点,仅此而已。驱逐系统在下午 5 点运行时将清除索引(以移除对象)。
    • 因此,如果您每次创建/更新对象时都添加相同数量的过期时间(比如一小时,称之为 CONSTANT_EXPIRATION_TIME)。然后 upsert_time = 当前时间 - (CONSTANT_EXPIRATION_TIME - TTL)。 TTL 是从记录中获得的。 HTH
    • 再次感谢@AmodPandey。由于当前时间不是常数,我们需要记录它。这意味着我们记录的值已经可以从 Aerospike 内部的数据中导出(对于 TTL > 0)。这个问题的另一个标题可能是“我如何检索记录的无效时间?”你知道这是否可能吗?
    • 我想我在这里没有帮助。但我会做最后一击。 Java - 现在很长 = System.currentTimeMillis() / 1000; long voidTime = now + record.getTimeToLive() // record.expiration 给出的时间从 2010 年 1 月 1 日 00:00:00 GMT 开始的秒数 Lua local void_time = os.time() + record.ttl(topRecord) -- 其中 topRecord是记录 udf 的第一个参数
    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多