gpt4 book ai didi

Cassandra : Batch write optimisation

转载 作者:行者123 更新时间:2023-12-04 02:11:39 24 4
gpt4 key购买 nike

我收到了来自客户端的批量写入请求,比如说大约 20 个 key 。
我可以将它们批量写入 C*,也可以以异步方式单独写入它们,然后等待将来完成它们。

根据文档,批量写入似乎不是一个不错的选择,因为我的插入率会很高,而且如果键属于不同的分区,协调员将不得不做额外的工作。

Is there a way in datastax java driver with which I can group keys which could belong to same partition and then club them into small batches and then do invidual unlogged batch write in async. IN that way i make less rpc calls to server at the same time coordinator will have to write locally. I will be using token aware policy.

最佳答案

你的想法是对的,但没有内置的方法,你通常手动完成。

这里的主要规则是使用 TokenAwarePolicy ,因此在驾驶员侧会发生一些协调。
然后,您可以按分区键的相等性对您的请求进行分组,这可能就足够了,具体取决于您的工作量。

我的意思是“按分区键的相等性分组”是例如你有一些数据看起来像

MyData { partitioningKey, clusteringKey, otherValue, andAnotherOne }

然后在插入多个这样的对象时,您可以按 MyData.partitioningKey 对它们进行分组。 .对于所有现有的 paritioningKey值,您可以使用相同的所有对象 partitioningKey ,并将它们包裹在 BatchStatement 中.现在你有几个 BatchStatements ,所以只需执行它们。

如果你想更进一步并模仿 cassandra 散列,那么你应该通过 getMetadata 查看集群元数据。 com.datastax.driver.core.Cluster 中的方法类,有方法 getTokenRanges并将它们与 Murmur3Partitioner.getToken 的结果进行比较或您在 cassandra.yaml 中配置的任何其他分区器.不过我自己从来没有尝试过。

因此,我建议实现第一种方法,然后对您的应用程序进行基准测试。我自己正在使用这种方法,在我的工作量中,它比没有批处理要好得多,更不用说没有分组的批处理了。

关于 Cassandra : Batch write optimisation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38931909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com