DynamoDB 필터 표현식: 알아야 할 모든 것

Dynamodb Pilteo Pyohyeonsig Al Aya Hal Modeun Geos



필터 표현식은 SQL 데이터베이스에서 일반적인 WHERE 절과 같은 No-SQL DynamoDB 함수에서 사용됩니다. 그러나 DynamoDB는 No-SQL 데이터베이스이므로 필터 표현식은 No-SQL 데이터베이스의 특성과 구조로 인해 WHERE 절과 상당히 다르게 동작합니다.

이 문서는 필터 식에 중점을 둡니다. 따라서 필터 표현식을 정의하고 왜 적용되는지, 언제 적용되는지 설명하고 관련 예제를 통해 단계별로 사용 ​​방법을 안내합니다.

필터 표현식이란?

필터 표현식은 쿼리 및 스캔 작업 중에 DynamoDB의 데이터를 필터링하는 데 널리 사용되는 기술입니다. DynamoDB에서 적절한 데이터 모델링 및 구성은 필터링에 의존합니다. 대부분의 응용 프로그램에는 항상 수많은 데이터가 저장되어 있지만 방대한 양의 항목이 긴급하게 필요할 수 있습니다.







필요할 때마다 올바른 데이터를 검색하는 능력은 데이터베이스의 필터링 기능에 따라 달라지며 여기서 필터 표현식이 도움이 됩니다. 나머지 항목을 버릴 때 반환하려는 쿼리 항목 내에서 결과를 지정합니다.



쿼리 작업이 완료된 후 서버가 쿼리 호출 결과를 다시 가져오기 전에 항목 특성에 대한 서버 측 필터에 필터 식을 적용할 수 있습니다. 이는 필터 식을 사용하는지 여부에 관계없이 쿼리가 여전히 동일한 양의 읽기 용량을 사용함을 의미합니다.



게다가 일반 쿼리 작업과 마찬가지로 쿼리 작업에 대한 1MB 데이터 제한은 필터 식 작업을 평가하기 전에 발생합니다. 이 작업을 사용하여 페이로드를 줄이고 특정 항목을 검색하고 애플리케이션 개발 중에 단순성과 가독성을 향상시킬 수 있습니다.





필터 식 구문 및 예

특히 필터 식과 키 식은 모두 동일한 구문을 사용합니다. 게다가 필터 표현식과 조건 표현식은 동일한 함수, 비교기 및 논리 연산자를 사용할 수도 있습니다.

식을 필터링하는 다른 연산자에는 CONTAINS 연산자, OR 연산자, 같지 않음() 연산자, IN 연산자, BETWEEN 연산자, BEGINS_WITH 연산자, SIZE 연산자 및 EXISTS 연산자도 포함됩니다.



예 1: AWS CLI 및 DynamoDB 기본 키를 사용하여 쿼리

이 예에서는 특정 장르(파티션 키) 및 특정 아티스트(정렬 키)에 대해 Music 테이블을 쿼리합니다. 이 유틸리티는 조회수가 가장 많은 노래의 특정 파티션 키 및 정렬 키와 일치하는 항목에 대한 결과만 반환합니다.

명령에서 보기 수(#v)를 지정할 수 있습니다. 예를 들어 조회수가 1000회 이상인 노래에 대한 결과만 표시되도록 최소 조회수를 1,000회로 태그합니다.

$ aws dynamodb 쿼리 \
--테이블 이름 음악 \
--키 조건식 '장르 = :fn 및 아티스트 = :sub' \
--필터 표현식 '#v >= :num(1000)' \
--expression-attribute-names '{'#v': '보기'}' \
--expression-attribute-values 파일: // 값.json

예 2: 조건식과 함께 AWS CLI 사용

이전 예제와 동일한 쿼리를 재구성할 수 있지만 이제 필터와 함께 조건 키를 사용합니다. 정렬 키는 포함하지 않습니다. 대신 조회수가 1,000회 이상인 지정된 아티스트의 모든 레코드를 검색합니다. 특정 사용자 이름(customer_id)에 대해 주어진 숫자 이상의 주문을 제공하도록 재구성할 수도 있습니다.

$ aws dynamodb 쿼리 \
--테이블 이름 음악 \
--키 조건식 '사용자 이름 = :사용자 이름' \
--필터 표현식 '금액 > :금액' \
--expression-attribute-values '{
':username': { 'S': '아티스트' },
':금액': { 'N': '1000' }
}'
\
$LOCAL

결과의 예는 다음과 같습니다.

주어진 그림은 같은 아티스트의 56개 노래 제목 중 7개 노래만이 1,000회 이상의 조회수를 기록했음을 보여줍니다. 그러나 간결함을 위해 수치를 자르고 목록의 첫 번째 결과와 마지막 결과만 포함했습니다.

예 3: 같지 않음() 연산자와 함께 필터 표현식 사용

다음 Java 유틸리티에서 'Movie X'와 같지 않은 모든 영화에 대해 테이블(Movie Collection)을 쿼리하려고 합니다. 다음과 같이 표현식 속성 값(:name)과 함께 속성(#name)이 있는 필터 표현식을 사용해야 합니다.

const AWS = 요구 ( 'aws-sdk' ) ;
AWS.config.update ( { 지역: 'eu-웨스트-1' } ) ;
const dynamodb = 새로운 AWS.DynamoDB.DocumentClient ( ) ;

변수 매개변수 = {
테이블 이름: '영화 컬렉션' ,
키조건식: '#PK = :PK' ,
필터 표현식 : '#이름 :이름' , ( 필터 표현식 )
식속성 이름: { '#PK' : 'PK' , '#이름' : '이름' } , ( 조건식 )
ExpressionAttribute값: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':이름' : '영화 X'
}
} ;

dynamodb.query ( 매개변수, 기능 ( 오류, 데이터 ) {
만약 ( 잘못 ) console.log ( 잘못 ) ;
또 다른 console.log ( 데이터 ) ;
} ) ;

예 4: 스캔 연산자와 함께 필터 표현식 사용

이전 명령은 <>를 사용하여 Movie X라는 영화 이름과 같지 않은 항목만 가져오는 반면 여기서는 필터 표현식과 함께 키 조건 표현식을 사용해야 합니다. 키 조건 식을 사용하지 않고 쿼리 연산자에서 데이터를 필터링할 수 없기 때문입니다.

변수 매개변수 = {
테이블 이름: '영화 컬렉션' ,
필터 표현식 : 'PK = :PK 및 #이름 :이름' ,
식속성 이름: { '#이름' : '이름' } ,
ExpressionAttribute값: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':이름' : '영화 X'
}
} ;

dynamodb.scan ( 매개변수, 기능 ( 오류, 데이터 ) {
만약 ( 잘못 ) console.log ( 잘못 ) ;
또 다른 console.log ( 데이터 ) ;
} ) ;

결론

필터 표현식에 대한 DynamoDB 자습서의 끝입니다. 필터 식을 사용하여 기본 데이터 집합을 검색하거나 검색 또는 쿼리 후 검색된 데이터를 필터링하거나 데이터 집합을 클라이언트에 반환할 수 있습니다. 여러 도구에 적용할 수 있지만 필터 식을 사용할 수 없는 경우가 있습니다. 예를 들어 적절한 데이터 모델이 있고 기본 키를 사용하고 많은 양의 데이터를 추출할 때만 사용할 수 있습니다.