开发者社区> 问答> 正文

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 908 0
1 条回答
写回答
取消 提交回答
  • 如果您使用固定的分区键值(id = 1),则所有插入,选择和删除操作都会在同一节点上重复进行(如果RF = 1)。并且还为每个删除卡桑德拉创建一个逻辑删除条目,当您执行选择查询时,卡桑德拉需要合并每个条目。因此,您的选择查询性能将下降。

    2020-01-04 15:21:16
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
实战-如何基于HBase构建图片视频数据的统一存储检索方案 立即下载
HBase2.0重新定义小对象实时存取 立即下载
PostgreSQL复制原理及高可用集群 立即下载