2013-03-22 5 views
7

Ich mache einige Tests mit Cassandra und seinem Node.JS Treiber, Helenus. Gibt es eine Möglichkeit, den Consistency Level einer Abfrage mithilfe von CQL zu ändern?ändern Helenus Konsistenzebene in CQL Abfrage

Helenus Dokumentation zeigt nur ein Beispiel, dies zu tun, den Helenus Thrift-Anschluss verwenden, aber ich mag den CQL Anschluss verwenden.

Ich versuchte Cassandra wie diese

conn.cql(cqlRead, vals, {ConsistencyLevel:ANY, gzip:true}, cb); 

aber Knoten warf diesen Fehler

ReferenceError: ANY is not defined 

Dann abfragen, ich geändert 'ANY' auf '1' und Knoten den Code lief, aber ich didn Ich habe keinen Unterschied bemerkt.

Antwort

3

Das Problem ist, dass Sie nicht verwenden können CL.ANY für liest, nur für schreibt. ANY bedeutet, dass ein Commit-Protokoll als Erfolg zählt, auch wenn keine Replikate verfügbar sind. Da Commit-Logs von Abfragen nicht lesbar sind, macht es keinen Sinn, CL.ANY für Lesevorgänge zu verwenden, so dass Cassandra Sie nicht lässt.

+1

bekommen Das ist richtig. Ich habe die Cassandra-Dokumentation gesehen, und es ist nicht möglich, mit der Konsistenz-Stufe zu lesen, die auf ANY gesetzt ist. Darüber hinaus verwendet der Helenus-CQL-Connector jedoch nicht den JSON-Optionsschlüssel 'ConsistencyLevel'. Wenn ich die ConsistencyLevel-Abfrageoption ändern möchte, sollte ich die Abfragezeichenfolge und nicht das Optionsobjekt ändern. Mein cqlRead var wird "SELECT FROM DUMMY *" und ich sollte "SELECT * FROM DUMMY weiter verwenden CONSISTENCY ALL" stattdessen verwenden. Danke für die Hilfe! –

1

Ich habe die Helenus documentation gesehen und sie ließen die Konsistenz, die Art und Weise

cf.get('foo', {consistency:helenus.ConsistencyLevel.ONE}, function(err, row){ 
    // Your code here 
}) 

Haben Sie mit Konsistenz versucht: helenus.ConsistencyLevel.ANY. Ich denke, dass Sie wahrscheinlich eine andere anders als Reference