2017년 8월 14일 월요일

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

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



INSERT

행에 대한 데이터 삽입은 INSERT 문을 사용하여 수행됩니다.

insert_statement ::=  INSERT INTO table_name ( names_values | json_clause )
                      [ IF NOT EXISTS ]
                      [ USING update_parameter ( AND update_parameter )* ]
names_values     ::=  names VALUES tuple_literal
json_clause      ::=  JSON string [ DEFAULT ( NULL | UNSET ) ]
names            ::=  '(' column_name ( ',' column_name )* ')'

예를 들어 :

INSERT INTO NerdMovies (movie, director, main_actor, year)
                VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', 2005)
      USING TTL 86400;

INSERT INTO NerdMovies JSON '{"movie": "Serenity",
                              "director": "Joss Whedon",
                              "year": 2005}';

INSERT 문은 테이블의 주어진 열에 대해 하나 이상의 칼럼을 씁니다.
유의해야할 점은 열은 PRIMARY KEY로 식별되므로 요청되는 칼럼은 해당 PRIMARY KEY에 해당하는 값을 포함하고 있어야 합니다.
VALUES 구문을 사용할 때 해당 VALUE에 해당하는 칼럼 값은 반드시 제공되어야합니다.
하지만, JSON 구문을 사용할 때는 선택적으로 입력할 수 있습니다.

SQL과 달리 INSERT는 기본적으로 해당 열의 값의 존재 여부를 확인하지 않습니다:
전에 존재하지 않으면 행이 작성되고, 그렇지 않으면 갱신됩니다.
또한 생성 또는 업데이트 중 어떤 것이 발생했는지 알 수있는 방법이 없습니다.

그러나 IF NOT EXISTS 조건을 사용하면 이전에 해당 값이 존재하지 않는 경우에만 삽입 할 수 있습니다.
하지만 IF NOT EXISTS를 사용하면 무시할 수없는 성능 비용 (내부적으로는 Paxos가 사용됨)이 발생하므로주의해서 사용해야합니다.

INSERT의 모든 업데이트는 개별적으로 그리고 독립적으로 적용됩니다.

또한 카운터는 UPDATE는 지원하는 반면, INSERT는 지원하지 않습니다.

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

댓글 없음 :

댓글 쓰기