테이블 쿼리 비교 - Amazon DynamoDB

테이블 쿼리 비교

또 다른 공통적인 액세스 패턴은 쿼리 기준에 기반하여 한 테이블에서 복수의 항목을 읽어오는 것입니다.

SQL에서 테이블 쿼리

SQL SELECT 문을 사용하여 키 열, 키 이외 열 또는 임의의 조합에서 쿼리를 수행할 수 있습니다. 다음 예제와 같이 WHERE 절은 반환되는 행을 결정합니다.

/* Return a single song, by primary key */ SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today';
/* Return all of the songs by an artist */ SELECT * FROM Music WHERE Artist='No One You Know';
/* Return all of the songs by an artist, matching first part of title */ SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle LIKE 'Call%';
/* Return all of the songs by an artist, only if the price is less than 1.00 */ SELECT * FROM Music WHERE Artist='No One You Know' AND Price < 1.00;

이 테이블의 프라이머리 키는 ArtistSongTitle로 구성되어 있다는 점에 유의하세요.

DynamoDB에서 테이블 쿼리

Amazon DynamoDB에서는 DynamoDB API나 PartiQL(SQL 호환 쿼리 언어)을 사용하여 테이블에서 항목을 쿼리할 수 있습니다.

DynamoDB API

Amazon DynamoDB의 Query 작업을 사용해도 비슷한 방법으로 데이터를 가져올 수 있습니다. Query 작업은 데이터가 저장된 물리적 위치에 대한 빠르고 효율적인 액세스를 제공합니다. 자세한 내용은 DynamoDB의 파티션 및 데이터 배포 섹션을 참조하세요.

테이블 또는 보조 인덱스와 함께 Query를 사용할 수 있습니다. 파티션 키 값에는 등식 조건을 지정해야 하며 지정된 경우 정렬 키 속성에 대해 다른 조건을 선택적으로 지정할 수 있습니다.

KeyConditionExpression 파라미터는 쿼리하려는 키 값을 지정합니다. 선택 사항인 FilterExpression을 사용하면 반환 전에 일정 항목을 결과에서 제거할 수 있습니다.

DynamoDB에서는 ExpressionAttributeValues를 표현식 파라미터(KeyConditionExpression, FilterExpression 등)에서 자리 표시자로 사용해야 합니다. 이는 런타임에 실제 값을 SELECT 문으로 대체하는 관계형 데이터베이스의 바인드 변수 사용과 유사합니다.

이 테이블의 프라이머리 키는 ArtistSongTitle로 구성되어 있다는 점에 유의하세요.

다음은 몇 가지 DynamoDB Query 예제입니다.

// Return a single song, by primary key { TableName: "Music", KeyConditionExpression: "Artist = :a and SongTitle = :t", ExpressionAttributeValues: { ":a": "No One You Know", ":t": "Call Me Today" } }
// Return all of the songs by an artist { TableName: "Music", KeyConditionExpression: "Artist = :a", ExpressionAttributeValues: { ":a": "No One You Know" } }
// Return all of the songs by an artist, matching first part of title { TableName: "Music", KeyConditionExpression: "Artist = :a and begins_with(SongTitle, :t)", ExpressionAttributeValues: { ":a": "No One You Know", ":t": "Call" } }
// Return all of the songs by an artist, only if the price is less than 1.00 { TableName: "Music", KeyConditionExpression: "Artist = :a", FilterExpression: "Price < :p", ExpressionAttributeValues: { ":a": "No One You Know", ":p": 1.00 } }
참고

FilterExpressionQuery가 일치하는 항목을 읽은 후 적용되므로 소비되는 읽기 용량을 줄이지 않습니다. 가능한 경우 범위 조건이 효율적인 쿼리를 위해 정렬 키에 KeyConditionExpression을 사용하도록 데이터를 모델링합니다. 자세한 내용은 DynamoDB에서 테이블 쿼리 섹션을 참조하세요.

PartiQL for DynamoDB

PartiQL에서는 ExecuteStatement 작업과 파티션 키에 Select 문을 사용하여 쿼리를 수행할 수 있습니다.

SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know'

이와 같이 SELECT 문을 사용하면 이 특정 Artist와 연결된 모든 곡이 반환됩니다.

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