如何使用 Cassandra Consistencies 定义 TYPES?

How to define TYPES with Cassandra Consistencies?

我有以下内容:

var cassandra = require('cassandra-driver');
var clientCass = new cassandra.Client({
    contactPoints: ['localhost'],
    keyspace: 'localhost'
});

在代码的底部,我这样做:

//Now add a row or Check to see if the session already exists
        var query = "INSERT INTO localhost.shirosessions     (id,expired,last_access_ts,start_ts) \n\
                VALUES ('" + theSession.sessionid + "',false,'" 
                + component.getTimeStampA() + "','" + component.getTimeStampA() + "') IF NOT EXISTS";


        //var params = [];
        var consistency = client.cql.types.consistencies.quorum;
        //client.executeAsPrepared(query, params, consistency, function (err) {
        clientCass.execute(query, consistency, function (err) {
            if (err)
                console.log('Something when wrong and the row was not Inserted', err);
            else {
                console.log('Inserted on the cluster! Yay!');
            }
        });

但是,我得到的错误是:

TypeError: Cannot read property 'types' of undefined

我不明白? TYPES 在哪里定义的?怎么样?

我是 Cassandra 的新手,但自 90 年代末以来我一直在使用 MSSQL 服务器,并且对 SQL.

有清楚的了解

谢谢,如果你能帮忙。

此外,输入 "IF EXISTS" 是确保唯一记录的唯一方法吗?

我假设您使用的是 node.js 驱动程序。这是正确的吗?

尝试使用:

var consistency = cassandra.types.consistencies.quorum;

I'm new to Cassandra and yet I've been using MSSQL Server since the late 90s and have a clear understanding of SQL.

是的,我也是这样。我能提供的最好建议就是不要让它影响你对 Cassandra 的理解。 几个 CQL 关键字取自SQL,它们的行为根本 不像它们的关系对应关键字。阅读文档并且不做任何假设很重要。

Also, is putting "IF EXISTS" the only way to ensure a UNIQUE record?

不,Cassandra 中的所有 PRIMARY KEY 都是唯一的。您需要了解的是,Cassandra 对待所有 INSERT 和 UPDATE 完全相同。他们通俗地称为 "UPSERTs."

通过执行 UPSERT,您告诉 Cassandra 获取您的列值并为给定的键存储它们。如果这些键已经存在一行,则现有列值将被新列值覆盖。当您使用 IF [NOT] EXISTS 时,您是在告诉 Cassandra 如果键值已经存在则不要理会 UPSERT。