如何在 Scylla 中获取特定分区键的流 ID

let*_*4be 4 change-data-capture scylla

我在 Scylla 有一张桌子

CREATE TABLE event (
    eventSource TEXT,        
    createdAt TIMEUUID,
    eventData TEXT,
    PRIMARY KEY (eventSource, createdAt)
) WITH cdc = {'enabled':true};
Run Code Online (Sandbox Code Playgroud)

现在我希望使用 CDC

我知道流 IDCDC取决于生成和基表分区键,但是如何在不对 CDC 表进行全表扫描的情况下获取此流 ID?

是否有一些函数可以将给定的分区键转换为当前活动生成的流 ID?

haa*_*awk 5

这一切都记录在这里

简而言之,有一个特殊的表来存储不同代的所有流。

你可以这样查询:

SELECT streams FROM system_distributed.cdc_description WHERE time = '2020-03-25 16:05:29.484+0000';

没有简单的方法可以找到 partition_key 的 stream_id。不过,它可以被逆向工程:

  1. stream_id 是一个 16 字节的 blob。前 8 个字节是分配给此流的令牌的值。
  2. 与此令牌位于同一 vnode 和分片中的所有分区键都属于此流。

  • 这是开源软件。我们需要您对功能的意见和建议,以使数据库更好地为您服务。为什么里面没有呢?我不知道——也许是优先事项,但他们还没有建立它。或者也许没有人认为它会有用?我保证我的意图不是恶意的。:) 我建议搜索以查看是否已提出请求,如果没有,请提交请求问题 - https://github.com/scylladb/scylla (2认同)