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 |