Aerospike 作为去重缓存
Aerospike as a deduplication cache
我们想使用 Aerospike 作为事件 ID 重复数据删除的缓存,具有预定义的 TTL。
我们的用例非常简单:对于我们收到的每个事件,我们都想检查缓存中是否存在该事件 ID。如果是这样,我们会想要重置 TTL(触摸记录)并在我们的应用程序中将此事件标记为欺诈,否则我们想执行放置操作以插入此 ID。
我们计划做的事情如下:
(i) 配置单个记录命名空间,因为我们唯一希望存储的是 ID。我们将使用事件 id 作为键,并将 NullValue 存储为相应的值。 (因为除了键值我们真的不需要任何东西)。
(ii) 对于重复数据删除检查,我们将首先检查 client.exists() ,然后在写入策略中使用 RecordExistsAction.REPLACE 进行放置操作(因为这是针对性能优化的)。这两个操作都将在 operate() 块中调用以实现原子性。
但我们对以下问题有一些疑问:
(i) 关于操作块,我们希望做的这个检查和设置交易似乎是一个非常常见的用例。是否有 API 以更简洁的方式实现此目的? (我们找不到任何东西)
(ii) 是否绝对需要一个垃圾桶?我们只希望存储键而不是相应的值。我意识到键值从未存储过,Aerospike 只存储了摘要,但由于 exists() 是我们唯一关心的事情,有没有办法摆脱额外的 bin 存储开销?
谢谢!
(ii) Is it absolutely necessary to have even a single bin? We only wish to store the keys and no corresponding value. I realize that the key value isn't ever stored and Aerospike only stores the digest but since exists() is the only thing we care about, is there any way to get rid of the extra bin storage overhead?
您正在寻找 data-in-index。您将必须有一个值,没有值将删除记录。对于索引中的数据,该值将需要为 8 个字节或更少(通常使用整数)。
由于需要单 bin 才能使用 data-in-index,因此消除了大部分 bin 开销。
我们想使用 Aerospike 作为事件 ID 重复数据删除的缓存,具有预定义的 TTL。
我们的用例非常简单:对于我们收到的每个事件,我们都想检查缓存中是否存在该事件 ID。如果是这样,我们会想要重置 TTL(触摸记录)并在我们的应用程序中将此事件标记为欺诈,否则我们想执行放置操作以插入此 ID。
我们计划做的事情如下:
(i) 配置单个记录命名空间,因为我们唯一希望存储的是 ID。我们将使用事件 id 作为键,并将 NullValue 存储为相应的值。 (因为除了键值我们真的不需要任何东西)。
(ii) 对于重复数据删除检查,我们将首先检查 client.exists() ,然后在写入策略中使用 RecordExistsAction.REPLACE 进行放置操作(因为这是针对性能优化的)。这两个操作都将在 operate() 块中调用以实现原子性。
但我们对以下问题有一些疑问:
(i) 关于操作块,我们希望做的这个检查和设置交易似乎是一个非常常见的用例。是否有 API 以更简洁的方式实现此目的? (我们找不到任何东西)
(ii) 是否绝对需要一个垃圾桶?我们只希望存储键而不是相应的值。我意识到键值从未存储过,Aerospike 只存储了摘要,但由于 exists() 是我们唯一关心的事情,有没有办法摆脱额外的 bin 存储开销?
谢谢!
(ii) Is it absolutely necessary to have even a single bin? We only wish to store the keys and no corresponding value. I realize that the key value isn't ever stored and Aerospike only stores the digest but since exists() is the only thing we care about, is there any way to get rid of the extra bin storage overhead?
您正在寻找 data-in-index。您将必须有一个值,没有值将删除记录。对于索引中的数据,该值将需要为 8 个字节或更少(通常使用整数)。
由于需要单 bin 才能使用 data-in-index,因此消除了大部分 bin 开销。