开发者社区 问答 正文

Cassandra仅导出/转发数据一次

我需要以一定的间隔将数据从系统转发到外部系统。为此,我已经将所有行存储在表中。已转发的数据不应再次导出。

这样做的目的是记住客户端的最后一次导出时间,并在下次导出以下记录。成功导出后,旧行将被删除。

CREATE TABLE export(
    id int,
    import_date_time timestamp, 
    data text,
    PRIMARY KEY (id, import_date_time)
) WITH CLUSTERING ORDER BY (import_date_time DESC) 

insert into export(id, import_date_time, data) values (1, toUnixTimestamp(now()), 'content')

select * from export where id = 1 and import_date_time > '2017-03-30 16:22:37'

delete from export where id = 1 and import_date_time <= '2017-03-30 16:22:37'

有没有人已经实现了类似的解决方案,或者您有不同的解决方案?

如果可能,我不需要请求的ID,因为我想导出所有数据

展开
收起
游客ufivfoddcd53c 2020-01-04 15:21:07 924 分享 版权
1 条回答
写回答
取消 提交回答
  • 如果您使用固定的分区键值(id = 1),则所有插入,选择和删除操作都会在同一节点上重复进行(如果RF = 1)。并且还为每个删除卡桑德拉创建一个逻辑删除条目,当您执行选择查询时,卡桑德拉需要合并每个条目。因此,您的选择查询性能将下降。

    2020-01-04 15:21:16
    赞同 展开评论
问答分类:
问答地址: