我想从实时更新的cassandra表中流式传输数据。是的,它是一个数据库但是有办法做到这一点吗?如果是这样,保留偏移或我可以使用哪些CQL查询?
答案 0 :(得分:5)
简短的回答是否定的。
很长的答案是有很多困难和智能群集键你可以做到这一点。基本上,如果使用始终增加的聚类键插入数据,则始终只能在最近的时间间隔内扫描聚类键。这当然会错过窗外的无序插入。对于您的用例,这可能或者可能不够好。
未来的最佳答案是变更数据捕获:https://issues.apache.org/jira/browse/CASSANDRA-8844
答案 1 :(得分:0)
我了解您是在特别询问有关从Cassandra流出数据的问题,但是我想建议一种类似Apache Kafka的技术听起来更适合您要尝试的工作。 number of other large companies使用它,并具有出色的实时性能。
Jay Kreps发表了一篇开创性的博客文章,名为The Log: What every software engineer should know about real-time data's unifying abstraction,在解释Kafka的宗旨和设计方面做得非常好。博客文章的关键语录总结了卡夫卡的角色:
获取组织的所有数据,并将其放入中央日志中以进行实时订阅。
答案 2 :(得分:0)
要从Cassandra流式传输数据,您需要像这样使用PageSize选项:
iter := cass.Query(`SELECT * FROM cmuser.users;`).PageSize(100).Iter()
以上是Golang的示例。 PageSize的描述是:
PageSize将告诉迭代器在以下页面中获取结果: 尺寸 这对于迭代大型结果集很有用,但是 设置 页面大小太小可能会降低性能。这个 该功能仅在Cassandra 2及更高版本中可用。