如何用Cassandra Consistencies定义TYPES?

我有以下几点:

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 Server,并对SQL有一个清晰的认识。

谢谢,如果你能帮助。

另外,把“IF EXISTS”是唯一的方法来确保一个独特的logging?

我假设你正在使用node.js驱动程序。 它是否正确?

尝试使用:

 var consistency = cassandra.types.consistencies.quorum; 

我是Cassandra的新手,但自90年代末以来,我一直在使用MSSQL Server,并对SQL有一个清晰的认识。

是的,我也是这样。 我能提供的最好的build议是不要让这影响你对Cassandra的理解。 有几个从SQL中取得的CQL关键字完全不像它们的关系对应performance。 阅读文档很重要,什么都不要。

另外,把“IF EXISTS”是唯一的方法来确保一个独特的logging?

不,卡桑德拉的所有主键都是独一无二的。 你需要了解的是,Cassandra把所有的INSERT和UPDATE 完全一样 。 他们俗称“UPSERT”。

通过执行一个UPSERT,你告诉Cassandra把你的列值存储到给定的键上。 如果这些键的行已经存在,那么现有的列值将被新的列值覆盖。 当你使用IF [NOT] EXISTS时,如果键值已经存在,你告诉Cassandra不要打扰UPSERT。