2013-04-13 9 views
2

질문 - CQL2의 존재하지 않는 열 값에 대한 select 문으로 결과를 검색 할 수 있습니다 (단, CQL3에서는 발생하지 않음). 누군가 나에게 설명 할 수 있을까요?Cassandra CQL2의 문 선택 불일치

존재하지 않는 C0 컬럼 값 ('테스트')을 사용하여 선택 쿼리에서 결과를 얻을 수있는 이유를 알고 있습니까? 나는 그것을 얻지 않는다 - 아래를 보아라. 무엇인가 틀리게되어야한다. 그러나 무엇?

cqlsh> use Keyspace1; 
cqlsh:Keyspace1> CREATE COLUMNFAMILY users (
      ... KEY varchar PRIMARY KEY, 
      ... gender varchar, 
     ... birth_year bigint); 
cqlsh:Keyspace1> INSERT INTO users (KEY, gender, birth_year) VALUES ('TEST', 'm', 1968); 
cqlsh:Keyspace1> select * from users; 
KEY | birth_year | gender 
------+------------+-------- 
TEST |  1968 |  m 

cqlsh:Keyspace1> select * from users where key = 'TEST'; 
KEY | birth_year | gender 
------+------------+-------- 
TEST |  1968 |  m 

cqlsh:Keyspace1> CREATE INDEX birth_year_key ON users (birth_year); 
cqlsh:Keyspace1> CREATE INDEX gender_key ON users (gender); 
cqlsh:Keyspace1> select * from users where key = 'TEST' and birth_year = 1968; 
KEY | birth_year | gender 
------+------------+-------- 
TEST |  1968 |  m 

cqlsh:Keyspace1> select * from users where birth_year = 1968; 
KEY | birth_year | gender 
------+------------+-------- 
TEST |  1968 |  m 

지금까지, 너무 좋아,하지만 지금은 시계 :

cqlsh:Keyspace1> select * from users where key = 'TEST' and birth_year = 1962; 
KEY | birth_year | gender 
------+------------+-------- 
TEST |  1968 |  m 

여기, 무슨 일이야? 고마워, 매트

답변

2

나에게 CQL2의 버그와 같은 소리가납니다.

기본적으로 CQL2가 여전히 주위에있는 유일한 이유는 그로 인해 작성된 몇 가지 응용 프로그램이 계속 작동하기 때문입니다. 새로운 기능은 추가되지 않으며 버그가 수정되지 않습니다 (다른 곳에서는 회귀 현상이 나타날 수 있기 때문에).

새로운 응용 프로그램을 만들려면 절대적으로 CQL3을 사용해야합니다. 의미있는 의미에서 CQL2를 대안으로 생각하지 마십시오. CQL3을 대체 할 수있는 CQL2의 단점에 대한 자세한 분석은 http://www.datastax.com/dev/blog/cql3-for-cassandra-experts을 참조하십시오.