2017년 8월 14일 월요일

[Cassandra 레퍼런스] [Data Manipulation] UPDATE 문

이 문서는 개인적인 목적이나 배포하기 위해서 복사할 수 있다. 출력물이든 디지털 문서든 각 복사본에 어떤 비용도 청구할 수 없고 모든 복사본에는 이 카피라이트 문구가 있어야 한다.



UPDATE

UPDATE 문을 사용하여 행을 업데이트합니다.

update_statement ::=  UPDATE table_name
                      [ USING update_parameter ( AND update_parameter )* ]
                      SET assignment ( ',' assignment )*
                      WHERE where_clause
                      [ IF ( EXISTS | condition ( AND condition )*) ]
update_parameter ::=  ( TIMESTAMP | TTL ) ( integer | bind_marker )
assignment       ::=  simple_selection '=' term
                     | column_name '=' column_name ( '+' | '-' ) term
                     | column_name '=' list_literal '+' column_name
simple_selection ::=  column_name
                     | column_name '[' term ']'
                     | column_name '.' `field_name
condition        ::=  simple_selection operator term

예를 들어 :

UPDATE NerdMovies USING TTL 400
   SET director   = 'Joss Whedon',
       main_actor = 'Nathan Fillion',
       year       = 2005
 WHERE movie = 'Serenity';

UPDATE UserActions
   SET total = total + 2
   WHERE user = B70DE1D0-9908-4AE3-BE34-5573E5B09F14
     AND action = 'click';

UPDATE 문은 테이블의 주어진 행에 대해 하나 이상의 칼럼을 씁니다.
where_clause는 업데이트 할 행을 선택하는 데 사용되며 반드시 PRIMARY KEY를 포함해야합니다.
PRIMARY KEY가 아닌 컬럼은 SET 키워드를 사용하여 업데이트됩니다.

SQL과 달리 UPDATE는 기본적으로 행의 존재 여부를 확인하지 않습니다 (IF를 사용할 경우 제외):
전에 존재하지 않으면 행이 작성되고, 그렇지 않으면 갱신됩니다.
또한 생성 또는 업데이트가 발생했는지 여부를 알 수있는 방법이 없습니다.

그러나 IF를 통해 일부 열에 대한 조건을 사용할 수 있고, 이 경우 조건이 충족되지 않으면 행이 업데이트되지 않습니다.
그러나 IF 를 사용하면 무시할 수없는 성능 비용 (내부적으로는 Paxos가 사용됨)이 발생하므로 주의해서 사용해야합니다.

UPDATE 문을 사용할 때 동일한 파티션 키 내의 모든 업데이트는 독립적으로 개별적으로 적용됩니다.

- c = c + 3 은 카운터를 증가 / 감소시키는 데 사용됩니다.
  '='기호 다음의 컬럼 이름은 '='기호 앞의 컬럼 이름과 동일해야합니다.
  증가 / 감소는 카운터에서만 허용되며 카운터에서 허용되는 유일한 업데이트 작업입니다.

- id = id + 및 id [value1] = value2는 콜렉션에 대한 것입니다.

- id.field = 3은 고정되지 않은 사용자 정의 유형의 필드 값을 설정하기위한 것입니다.


Update parameters

TIMESTAMP에 대한 UPDATE, INSERT (및 DELETE 및 BATCH) 문은 다음 매개 변수를 지원합니다:

- TIMESTAMP : 작업의 타임 스탬프를 설정합니다. 지정되지 않으면 코디네이터는 명령문 실행 시작시 현재 시간 (마이크로 초)을 timestamp로 사용합니다.

- TTL : 삽입 된 값에 대한 선택적 TTL (Time To Live)을 초 단위로 지정합니다.
         설정하면 삽입 된 값이 지정된 시간 후에 데이터베이스에서 자동으로 제거됩니다.
         TTL은 삽입 된 값과 관련이 있으며 열 자체는 관련이 없습니다.
         이는 해당 열의 다음 업데이트가 TTL을 재설정한다는 것을 의미합니다 (해당 업데이트에 지정된 TTL에 관계없이).
         기본적으로 값은 만료되지 않습니다.
         TTL 0은 TTL이없는 것과 같습니다.
         만약 테이블에 default_time_to_live가 있을때, TTL을 0으로 설정하면 삽입되거나 업데이트된 값의 지정된 TTL이 제거됩니다.
         TTL의 null 값은 TTL을 0으로 삽입하는 것과 같습니다.


출처 : http://cassandra.apache.org/doc/latest/cql/dml.html

댓글 없음 :

댓글 쓰기