테이블에서 데이터를 수정할 때 관계형(SQL) 데이터베이스와 DynamoDB 비교 - Amazon DynamoDB

테이블에서 데이터를 수정할 때 관계형(SQL) 데이터베이스와 DynamoDB 비교

SQL 언어는 데이터 수정을 위한 UPDATE 문을 제공합니다. Amazon DynamoDB는 비슷한 태스크를 위해 UpdateItem 작업을 사용합니다.

SQL에서 테이블의 데이터 수정

SQL에서는 UPDATE 문을 사용하여 하나 이상의 행을 수정합니다. SET 절은 하나 이상의 열의 새로운 값을 지정하고, WHERE 절은 어떤 행이 수정되는지 결정합니다. 다음은 예입니다.

UPDATE Music SET RecordLabel = 'Global Records' WHERE Artist = 'No One You Know' AND SongTitle = 'Call Me Today';

WHERE 절과 일치하는 행이 없으면 UPDATE 문은 영향을 미치지 않습니다.

DynamoDB에서 테이블의 데이터 수정

DynamoDB에서는 클래식 API나 PartiQL(SQL 호환 쿼리 언어)을 사용하여 단일 항목을 수정할 수 있습니다. 복수의 항목을 수정하려면 복수의 작업을 사용해야 합니다.

DynamoDB API

DynamoDB API에서는 UpdateItem 작업을 사용하여 단일 항목을 수정합니다.

{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ExpressionAttributeValues: { ":label": "Global Records" } }

수정할 항목의 Key 속성과 속성 값을 지정하는 UpdateExpression을 지정해야 합니다. UpdateItem은 'upsert' 작업처럼 동작합니다. 즉 항목이 테이블에 존재하면 업데이트되지만 그렇지 않으면 새 항목이 추가(삽입)됩니다.

UpdateItem조건부 쓰기를 지원하는데, 특정 ConditionExpression이 true로 평가되는 경우에 한해 작업이 성공합니다. 예를 들어, 다음 UpdateItem 작업은 노래의 가격이 2.00 이상이 아니면 업데이트를 수행하지 않습니다.

{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ConditionExpression: "Price >= :p", ExpressionAttributeValues: { ":label": "Global Records", ":p": 2.00 } }

UpdateItem원자성 카운터 즉, 증가하거나 감소할 수 있는 Number 형식의 속성도 지원합니다. 원자성 카운터는 여러 가지 면에서 SQL 데이터베이스의 시퀀스 발생기, 자격 증명 열 또는 자동 증분 필드와 유사합니다.

다음은 UpdateItem 작업을 통해 새 속성(Plays)을 초기화하여 노래가 재생된 횟수를 추적하는 예제입니다.

{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = :val", ExpressionAttributeValues: { ":val": 0 }, ReturnValues: "UPDATED_NEW" }

ReturnValues 파라미터는 업데이트된 속성의 새 값을 반환하는 UPDATED_NEW로 설정됩니다. 이 경우에는 0을 반환합니다.

누군가가 이 노래를 재생할 때마다 다음 UpdateItem 작업을 사용하여 Plays를 1씩 증가시킬 수 있습니다.

{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = Plays + :incr", ExpressionAttributeValues: { ":incr": 1 }, ReturnValues: "UPDATED_NEW" }
PartiQL for DynamoDB

PartiQL에서는 PartiQL Update 문을 사용하여 ExecuteStatement 작업을 통해 테이블의 항목을 수정합니다.

이 테이블의 기본 키는 ArtistSongTitle로 구성됩니다. 이 속성들의 값을 지정해야 합니다.

UPDATE Music SET RecordLabel ='Global Records' WHERE Artist='No One You Know' AND SongTitle='Call Me Today'

다음 예와 같이 여러 필드를 한 번에 수정할 수도 있습니다.

UPDATE Music SET RecordLabel = 'Global Records' SET AwardsWon = 10 WHERE Artist ='No One You Know' AND SongTitle='Call Me Today'

Update원자성 카운터 즉, 증가하거나 감소할 수 있는 Number 형식의 속성도 지원합니다. 원자성 카운터는 여러 가지 면에서 SQL 데이터베이스의 시퀀스 발생기, 자격 증명 열 또는 자동 증분 필드와 유사합니다.

다음은 Update 문을 통해 새 속성(Plays)을 초기화하여 노래가 재생된 횟수를 추적하는 예제입니다.

UPDATE Music SET Plays = 0 WHERE Artist='No One You Know' AND SongTitle='Call Me Today'

누군가가 이 노래를 재생할 때마다 다음 Update 문을 사용하여 Plays를 1씩 증가시킬 수 있습니다.

UPDATE Music SET Plays = Plays + 1 WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
참고

UpdateExecuteStatement를 사용하는 코드 예제는 DynamoDB의 PartiQL update 문 섹션을 참조하세요.