如何使用 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。
我有以下内容:
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。