반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함

CQL (Cassandra Query Language)

2015. 12. 18. 06:51 | Posted by 솔웅


Cassandra Query Language (CQL)은 카산드라 데이터베이스를 사용할 수 있는 primary lanuage 이다. 카산드라와 상호작용할 수 있는 가장 기본적인 방법은 CQL shel (cqlsh)을 이용하는 것이다. 이것을 이용해서 keyspace와 table 들을 만들 수 있고 insert와 다른 query tables 등등을 할 수 있다. graphocal tool을 원하시면 DataStax DevCenter 를 사용할 수 있다. Production을 위해서는 Datastax가 여러 driver들을 제공하기 때문에 CQL 구만은 client 에서 cluster 로 전달 되고 또 그 반대로 전달 받게 된다. 다른 관리 차원의 일들은 OpsCenter를 이용하면 된다.




Cassanddra 2.2 와 3.0을 위한 CQL 기능들


New CQL features include:

Improved CQL features include:

Removed CQL features include:

  • Removal of CQL2
  • Removal of cassandra-cli

Native protocol

The Native Protocol has been updated to version 4, with implications for CQL use in the DataStax drivers.




CQL for Cassandra 2.0 & 2.1


Cassandra 2.1 features

Cassandra 2.1 은 다음과 같은 새로운 CQL 기능을 포함한다.
* Nested user-defined types
* Improved counter columns : 카산드라가 commit log를 replay 할 때 정확한 count를 유지하기 위한 기능
* 수정 가능한 counter cache
* collenction에 대한 index 지원 기능, query result를 filter 하기 위햔 map key를 사용하기도 함
* millisecond 까지 가능한 Timestamps
* typed positional fields의 fixed-length set을 hold 하는 tuple typed

cqlsh utility도 개선된 기능들이 있다.
* operating system command line에서 CQL 구문을 받아서 처리할 수 있는 기능
* DESCRIBE 명령어를 사용해 type들을 표시해 주는 기능

DataStax Java Driver 2.0.0 은 제한적으로 Cassandra 2.1을 지원한다. 이 드라이버의 버전은 새로운 기능과 호환되지 않습니다.

다른 변화들은 이런 것들이 있습니다.
* counter column을 업데이트하기 위해 명령어에 USING TIMESTAMP나 USING TTL을 사용하는 것을 reject 합니다. 이럴 경우 카산드라는 에러 메세지를 보내게 됩니다.
* Cassandra 2.1 에서 CQL table property index_interval은 min_index_interval 과 max_index_interval로 대체됐습니다. max_index_interval 은 디폴트로 2048 입니다. 이 디폴트는 SSTable들이 불규칙적으로 읽히고 index summary memory pool이 full일 때에만 도달하게 됩니다. 이전 release에서 upgrade할 때 Cassandra는 min_index_interval에 대해 이전버전에서 사용하던 index_interval 값을 사용할겁니다.




Cassandra 2.0.x 기능들이

* INSERT와 UPDATE 구문에서 IF 키워드를 사용해 Lightweight transaction을 가능하게 한다.
* 현재 있는 테이블, 키스페이스, 인덱스등에 대해 conditional test를 실행함으로서 application error를 방지한다.
  간단히 DROP 이나 CREATE 구문에 IF EXISTSIF NOT EXISTS 를 포함하면 된다.
* 데이터베이스 클러스터 안팎에서 실행되는 이벤트들을 fire 하는 트리거를 위한 initial support 기능
* ALTER TABLE DROP command : 이전 버전에서는 제외 됐었었음
* Coulmn aliases : Select 구문에서 사용할 수 있으며 다른 RDBMS SQL의 aliase와 비슷하다.
* part, partition key 또는 Clustering columns, portion of a compound primary key 의 indexing 기능
DataStax 드라이버들은 Cassandra 2.0 을 자원한다.

Cassandra 2.0에 대한 CQL은 super column을 추천하지 않습니다. 카산드라는 CQL constructs 및 results에 즉석에서 슈퍼 컬럼을 번역하거나 쿼리하는 방법으로 계속적으로 지원하고 있습니다.

CQL Cassandra 2.0 에는 아래와 같은 cqlsh command에 변화가 있었습니다.
* ASSUME 명령어는 사라졌음. 이것 대신 blobAsType 과 typeAsBlob conversion 기능을 사용하면 됨.
* COPY 명령어가 collection도 지원하게 됨

Cassandra 2.0 에서 CQL에 다음과 같은 CQL table attribute들이 추가 됐습니다.

* default_time_to_live
* memtable_flush_period_in_ms
* populate_io_cache_on_flush
* speculative_retry




반응형

Comment