팁 or 주의사항 


1. camel case 주의 

(netflix의 astyanax를 이용한 케이스임)

create table 시 camel case로 column를 정의하면, describe table로 확인하면 모두 소문자로 변환되어 있다. 따라서 기대치는 camel case로 알고 있어 select 이용시 아무것도 없다고 나올 수 있다. insert시는 camel case와 상관없이 잘 작동된다. 


즉, create, insert시 대문자든, 소문자든 의도대로 사용할 수 있으나,  select시 camel case는 따진다.



2. composite key 적용

cassandra최근판이 가장 좋아진 것은 composite key . mysql로 따지자면 mulitple key를 쓸 수 있다는 점. 

cassandra에서는 where절 검색이 쉬워진다는 점이 있다. 

이슈는 다양한 where절 검색을 위해서 모든 필드가 primary key가 될 수 있다. 따라서 쉽게 검색이 된다는 점인데, 주로 timestamp나 timeuuid를 primary key 중의 하나가 되면 좋은 듯 했다.


3. 동작 여부 확인

netflix의 astyanax를 사용하면서 가장 불편한 점은 실행은 되는데, 때때로 잘못된 cql 에 대해서 exception없이 그냥 void return하는 경우가 있다. 이 때는 눈을 의심하고, 스스로 문제를 해결해야 한다.

db에서의 친절한 exception이 없다


만약 에러가 나타난다면 간단한 syntax 체크 또는 thrift binary 통신 이슈 외에는 없는 듯 했다. 



4. order by 된 채로 저장

처음부터 index(order by 된)채로 create table을 생성할 수 있다. 


  create table Bite (
partkey varchar,
score bigint,
id varchar,
data varchar,
PRIMARY KEY (partkey, score, id)
) with clustering order by (score desc);


5. 코드가 cassandra dependent client library에 의존적이 된다.  (little bit)

Spring 개발자라면 nosql 사용시  XXTemplate 이런것을 기대하는데, hector정도만 있는 것 같다. 

나는 netflix의 astyanax를 사용했기 때문에 spring integration이 고급스럽지 않았다. 대신 통신 코딩하는 느낌으로 dao를 구현해야 했다. (사실 가장 깔끔한 코드가 astyanax이기 때문이다.)


그리고 spring 쪽에서는 cassandra 쪽은 표준화하지 못했다는 점이 있다. 

JPA도 아직 완벽한게 아니니. 충분히 테스트하는 것도 좋을 것 같다. 





Posted by 김용환 '김용환'