timeuuid나 timestamp를 range로 검색하려면 다음의 Rule을 써야 한다.

primary key의 첫번째 인자가 되면 안된다. 즉 secondary index여야 한다.



primary key 첫번째 인자가 timestamp이면 , in, eq외에는 쓸 수 없다.


cqlsh:userkeyspace> select percentage from mem_physical where time>'2011-02-03';
Bad Request: Only EQ and IN relation are supported on the partition key (unless you use the token() function)




secondary index로 써야 timestamp 쿼리를 쓸 수 있다.



create table mem_physical (
    time text, // sharding 또는 addition data
    ts timestamp,
    pct double,
    total int,
    used int,
    PRIMARY KEY (time, ts, pct, total, used)
);


cqlsh:userkeyspace> insert into mem_physical (timeString, time, percentage, total, used) values ('2011-02-03+0000', '2011-02-03+0000', 50.5, 100, 40);
cqlsh:userkeyspace> insert into mem_physical (timeString, time, percentage, total, used) values ('2011-02-03+0000', '2011-02-02+0000', 50.5, 100, 40);



cqlsh:userkeyspace> select * from mem_physical where time > 1231252312307 ALLOW FILTERING;

 timestring          | time                     | percentage | total | used
---------------------+--------------------------+------------+-------+------

....


(2) rows



timeuuid대신 timestamp를 사용중이다. ebay에서는 timestamp대신 timeuuid를 사용하라고 권고하고 있다. 그러나 timeuuid를 쓰기 번거로운 부분이 있었다. 단순히 long 값인 timestamp 로 단순히 query하기에는 좋은 모델이라 timeuuid대신 timestamp를 쓰고 있다. 



참고로 timeuuid의 장점은 select시 dateOf나 unixTimestampOf fuctiion을 사용할 수 있다는 점이다. 표준화된 포맷으로 다양하게 쓸 수 있다. 


cqlsh:userkeyspace> select canon_key, t, dateOf(t), unixTimestampOf(t) from test_t  ;


 canon_key | t                                    | dateOf(t)                | unixTimestampOf(t)

-----------+--------------------------------------+--------------------------+--------------------

         k | 6366bfe0-4a89-11e3-b040-6b48c21c33af | 2013-11-11 13:26:08+0900 |      1384143968990




그러나 아래와 같은 timestamp 값 또는 int값으로 비교하는 것은 허용이 되지 않는다. TimeUUID를 이용해야 한다. 


select canon_key, t, dateOf(t), unixTimestampOf(t) from test_t  where unixTimestampOf(t) > 1384143968990;







'nosql' 카테고리의 다른 글

cassandra - select cql 문서  (0) 2013.11.13
cassandra 2.0 - 데이터 저장시 TTL 지정  (0) 2013.11.11
cassandra 시간정보 저장  (0) 2013.11.11
cassandra 2.0 - copy  (0) 2013.11.08
facebook 분석툴 (dw엔진) fresto 소스 공개  (0) 2013.11.08
Posted by '김용환'
,