테이블 스캔 비교 - Amazon DynamoDB

테이블 스캔 비교

SQL에서 WHERE 절이 없는 SELECT 문은 테이블의 모든 행을 반환합니다. Amazon DynamoDB에서 Scan 작업도 동일한 작업을 수행합니다. 두 경우 모두 모든 항목 또는 일부 항목만 검색할 수 있습니다.

SQL 데이터베이스를 사용하건 NoSQL 데이터베이스를 사용하건 스캔은 시스템 리소스를 많이 사용할 수 있으므로 꼭 필요할 때만 사용해야 합니다. 스캔이 적절하거나(작은 테이블을 스캔할 때) 불가피한(데이터를 대량으로 내보낼 때) 경우도 있습니다. 하지만 일반적으로는 스캔 수행을 피할 수 있도록 애플리케이션을 설계해야 합니다. 자세한 내용은 DynamoDB에서 테이블 쿼리 단원을 참조하십시오.

참고

대량 내보내기를 수행하면 파티션당 하나 이상의 파일이 만들어집니다. 각 파일의 모든 항목은 해당 파티션의 해시된 키스페이스에서 가져온 것입니다.

SQL에서 테이블 스캔

SQL에서는 WHERE 절을 지정하지 않고 SELECT 문을 사용하여 테이블을 스캔하고 모든 데이터를 가져올 수 있습니다. 결과에 하나 이상의 열이 포함되도록 요청할 수 있습니다. 또는 와일드카드 문자(*)를 사용하는 경우 모든 열을 요청할 수 있습니다.

다음은 SELECT 문 사용의 예입니다.

/* Return all of the data in the table */ SELECT * FROM Music;
/* Return all of the values for Artist and Title */ SELECT Artist, Title FROM Music;

DynamoDB에서 테이블 스캔

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

DynamoDB API

DynamoDB API에서는 Scan 작업을 통해 테이블 또는 보조 인덱스의 모든 항목에 액세스하여 하나 이상의 항목 및 항목 속성을 반환합니다.

// Return all of the data in the table { TableName: "Music" }
// Return all of the values for Artist and Title { TableName: "Music", ProjectionExpression: "Artist, Title" }

Scan 작업도 결과에 표시되기를 원치 않는 항목을 삭제하는 데 사용할 수 있는 FilterExpression 파라미터를 제공합니다. FilterExpression은 스캔이 수행된 후 결과가 반환되기 전에 적용됩니다. (큰 테이블에는 사용하지 않는 것이 좋습니다. 일치하는 소수의 항목이 반환되더라도 여전히 전체 Scan에 대한 요금이 청구됩니다.)

PartiQL for DynamoDB

PartiQL에서는 ExecuteStatement 작업을 통해 Select 문을 사용하여 테이블의 모든 내용을 반환하여 스캔을 수행합니다.

SELECT AlbumTitle, Year, Price FROM Music

이 문은 Music 테이블에서 모든 항목을 반환합니다.

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