【问题标题】:Cassandra with nodejs client is not working as expected带有 nodejs 客户端的 Cassandra 未按预期工作
【发布时间】:2018-05-03 18:01:58
【问题描述】:

我有一个如下所示的节点设置, DC1(Node1、Node2)和DC2(Node3和Node4)

我正在尝试通过 NodeJs 客户端连接到 Cassandra,如下所示,

const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['172.30.56.60','172.30.56.61','172.30.56.62','172.30.56.63'], keyspace: 'users' });

console.log(client);

const query = 'INSERT INTO user (user_id, user_name, user_phone) VALUES (?, ?, ?) IF NOT EXISTS';

console.log(query);
console.time('time');
for (var primaryKey = 0; primaryKey < 10000; primaryKey++) {
    const params = [primaryKey, 'hari', 12345678];
    console.log(primaryKey);
    client.execute(query, params, { prepare: true, consistency: cassandra.types.consistencies.quorum });
    console.log(primaryKey);
}
console.timeEnd('time');

我正在尝试跟踪插入所有 10000 个条目所花费的总时间,但我观察到,它正在异步更新条目(即),我得到的执行时间为 '3.755 ms' 但是当我签入 cqlsh shell 它正在缓慢更新(使用来自用户的 select count(*);),注意:我已将一致性指定为 'cassandra.types.consistencies.quorum'

卡桑德拉:3.0

要同步执行它们,我需要做哪些更改?

谢谢, 哈利

【问题讨论】:

    标签: node.js database cassandra high-availability cassandra-3.0


    【解决方案1】:

    现在您正在同时执行所有查询,因为您无需等待任何查询完成。

    client.execute 方法返回一个 Promise,因此要同步执行每个查询,您可以等待每个 Promise 完成,然后进行下一个查询。你可以用async/await 做到这一点 -

    async function insertBulk() {
        for (var primaryKey = 0; primaryKey < 10000; primaryKey++) {
            const params = [primaryKey, 'hari', 12345678];
            await client.execute(query, params, { prepare: true, consistency: cassandra.types.consistencies.quorum });
        }
    }
    
    async function getTime() {
        console.time('time');
        await insertBulk(); // wait till all the queries are executed sequentially.
        console.timeEnd('time');
    }
    
    getTime();
    

    此外,如果您的用例是插入许多文档,那么您可以使用 Batch 查询。阅读它here

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2018-10-02
      • 2015-06-30
      • 2012-08-16
      相关资源
      最近更新 更多