Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在“锡拉”中使用;“非原子的”;批次/管道_Node.js_Cassandra_Datastax_Scylla - Fatal编程技术网

Node.js 如何在“锡拉”中使用;“非原子的”;批次/管道

Node.js 如何在“锡拉”中使用;“非原子的”;批次/管道,node.js,cassandra,datastax,scylla,Node.js,Cassandra,Datastax,Scylla,我知道“锡拉”允许这样的批处理语句 BEGIN BATCH <insert-stmt>/ <update-stmt>/ <delete-stmt> APPLY BATCH 开始批处理 / / 批量应用 这些语句具有性能含义,因为它确保了原子性。但是,我只需要在一个IO中从节点客户端执行许多insert语句。这些插入之间不需要原子性。你知道我怎么做吗?找不到任何内容。在Cassandra world中批处理多个插入通常是一种反模式(除非它们进入一个分区,请

我知道“锡拉”允许这样的批处理语句

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH
开始批处理
/ / 
批量应用

这些语句具有性能含义,因为它确保了原子性。但是,我只需要在一个IO中从
节点
客户端执行许多insert语句。这些插入之间不需要原子性。你知道我怎么做吗?找不到任何内容。

在Cassandra world中批处理多个插入通常是一种反模式(除非它们进入一个分区,请参阅)。当您在一个批中向多个分区发送插入时,协调器节点需要注意从该批中获取数据并将其发送到拥有数据的节点。这就给一个额外的负载添加了一个额外的负载,它首先需要备份批处理的内容,如果它在执行过程中崩溃,就不丢失它,然后需要执行所有的操作,并在发送回调用方之前等待执行结果(请参阅了解所谓的日志批处理是如何工作的)。
当您不需要原子性时,最好的性能是通过发送多个并行插入并等待它们的执行—这样会更快,节点上的负载会更少,并且驱动程序可以使用令牌感知负载平衡策略,因此请求将发送到拥有数据的节点(如果您正在使用)。在node.js中,您可以通过使用来实现这一点-它的用法有多种变体,因此最好查看文档,选择最适合您的用例。

hi@Alex Ott,谢谢您。。我想我现在明白了。。但我面临的另一个问题是,由于大量的IO操作(大约4k-5k IO操作/秒),我的节点IO进程过去常常急剧减慢。我通过减少IO操作的数量来修复它。因此,我想做一个单IO而不是并行IO。您可以尝试将针对同一分区的多个插入合并到批处理中,但这需要在您这边进行额外的编码。是的,对。。谢谢,伙计