프라이머리 키를 사용하여 항목 읽기 비교
데이터베이스에 대한 공통적인 액세스 패턴 중 하나는 한 테이블에서 단일 항목을 읽어오는 것입니다. 원하는 항목의 기본 키를 지정해야 합니다.
SQL에서 항목의 프라이머리 키를 사용하여 항목 읽기
SQL에서는 SELECT
문을 사용하여 테이블에서 데이터를 가져옵니다. 결과에 하나 이상의 열(또는 *
연산자를 사용하는 경우 모든 열)이 포함되도록 요청할 수 있습니다. WHERE
절은 반환할 행을 결정합니다.
다음은 Music 테이블에서 단일 행을 가져오는 SELECT
문입니다. WHERE
절은 기본 키 값을 지정합니다.
SELECT *
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
이 쿼리를 수정하여 열의 하위 집합만 검색할 수 있습니다.
SELECT AlbumTitle, Year, Price
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
이 테이블의 프라이머리 키는 Artist 및 SongTitle로 구성되어 있다는 점에 유의하세요.
DynamoDB에서 항목의 프라이머리 키를 사용하여 항목 읽기
Amazon DynamoDB에서는 DynamoDB API나 PartiQL(SQL 호환 쿼리 언어)을 사용하여 테이블에서 항목을 읽을 수 있습니다.
- DynamoDB API
-
DynamoDB API에서는 PutItem
작업을 사용하여 테이블에 항목을 추가합니다.
DynamoDB는 항목을 해당 프라이머리 키를 기준으로 가져오기 위한 GetItem
작업을 제공합니다. GetItem
은 항목의 물리적 위치에 대한 직접 액세스를 제공하므로 매우 효율적입니다. (자세한 설명은 DynamoDB의 파티션 및 데이터 배포 섹션을 참조하십시오.)
기본적으로 GetItem
은 모든 속성과 함께 전체 항목을 반환합니다.
{
TableName: "Music",
Key: {
"Artist": "No One You Know",
"SongTitle": "Call Me Today"
}
}
속성의 일부만 반환하는 ProjectionExpression
파라미터를 추가할 수 있습니다.
{
TableName: "Music",
Key: {
"Artist": "No One You Know",
"SongTitle": "Call Me Today"
},
"ProjectionExpression": "AlbumTitle, Year, Price"
}
이 테이블의 프라이머리 키는 Artist 및 SongTitle로 구성되어 있다는 점에 유의하세요.
DynamoDB GetItem
작업은 매우 효율적입니다. 프라이머리 키 값을 사용하여 해당 항목의 정확한 스토리지 위치를 확인하고 그 위치에서 직접 항목을 가져옵니다. SQL SELECT
문도 기본 키 값을 기준으로 항목을 가져오는 경우에는 마찬가지로 효율적입니다.
SQL SELECT
문은 다양한 쿼리 및 테이블 스캔을 지원합니다. DynamoDB는 테이블 쿼리 비교 및 테이블 스캔 비교에 설명된 대로 Query
및 Scan
작업을 통해 이와 비슷한 기능을 제공합니다.
SQL SELECT
문은 테이블 조인을 수행하여 한 번에 여러 테이블에서 데이터를 가져올 수 있습니다. 조인은 데이터베이스 테이블들이 정규화되어 있고 테이블 간 관계가 명확한 경우에 가장 효과적입니다. 그러나 하나의 SELECT
문에서 지나치게 많은 테이블을 조인하는 경우, 애플리케이션 성능이 영향을 받을 수 있습니다. 이런 문제는 데이터베이스 복제, 구체화된 보기 또는 쿼리 다시 쓰기를 사용하여 해결할 수 있습니다.
DynamoDB는 비관계형 데이터베이스로, 테이블 조인을 지원하지 않습니다. 기존 애플리케이션을 관계형 데이터베이스에서 DynamoDB로 마이그레이션하는 경우, 조인의 필요성을 제거하기 위해 데이터 모델을 비정규화해야 합니다.
- PartiQL for DynamoDB
-
PartiQL에서는 PartiQL Select
문을 사용하여 ExecuteStatement
작업을 통해 테이블에서 항목을 읽습니다.
SELECT AlbumTitle, Year, Price
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
이 테이블의 프라이머리 키는 Artist 및 SongTitle로 구성되어 있다는 점에 유의하세요.
Select PartiQL 문은 DynamoDB 테이블을 쿼리하거나 스캔하는 데에도 사용할 수 있습니다.
Select
및 ExecuteStatement
를 사용하는 코드 예제는 DynamoDB의 PartiQL select 문 섹션을 참조하세요.