기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
6단계: 데이터 쿼리 만들기
액세스 패턴을 정의하고 데이터 모델을 설계한 후 DynamoDB 데이터베이스에서 계층적 데이터를 쿼리할 수 있습니다. 비용을 절감하고 성능을 보장하는 데 도움이 되는 모범 사례로, 다음 예시에서는 쿼리 작업 없이 쿼리 작업만 사용합니다. Scan
-
구성 요소의 상위 구성 요소 찾기
CM8 구성 요소의 상위 항목(상위, 차상위, 최상위 등)을 찾으려면
ComponentId = "CM8"
을 사용하여 기본 테이블을 쿼리합니다. 쿼리는 다음 레코드를 반환합니다.결과 데이터의 크기를 줄이려면 프로젝션 표현식을 사용하여
Path
속성만 반환합니다.ComponentId
ParentId
GraphId
경로
CM8
CM4
CM1#1
CM1|CM2|CM4|CM8
경로
CM1|CM2|CM4|CM8
이제 파이프 (“|”) 를 사용하여 경로를 분할하고 첫 번째 N-1 구성 요소를 가져와서 조상을 구하십시오.
쿼리 결과: CM8의 상위 항목은 CM1, CM2, CM4입니다.
-
구성요소의 직계 하위 구성요소를 찾으세요.
CM2 구성 요소의 모든 직계 하위 구성 요소 또는 한 수준 다운스트림 구성 요소를 가져오려면 를 사용하여 GSI1을 쿼리하십시오.
ParentId = "CM2"
쿼리는 다음 레코드를 반환합니다.ParentId
ComponentId
CM2
CM4
CM5
-
최상위 구성 요소를 사용하여 모든 다운스트림 하위 구성 요소를 찾습니다.
최상위 컴포넌트 CM1의 모든 하위 컴포넌트 또는 다운스트림 컴포넌트를 가져오려면
GraphId = "CM1#1"
및 를 사용하여 GSI2를 쿼리하고begins_with("Path", "CM1|")
를 사용하여 프로젝션 표현식을 사용하십시오.ComponentId
해당 트리와 관련된 모든 구성 요소가 반환됩니다.이 예제에는 최상위 구성 요소가 CM1인 단일 트리가 있습니다. 실제로는 동일한 테이블에 최상위 구성 요소가 수백만 개 있을 수 있습니다.
GraphId
ComponentId
CM1#1
CM2
CM3
CM4
CM5
CM8
CM9
CM10
CM6
CM7
-
중간 수준 구성 요소를 사용하여 모든 다운스트림 하위 구성 요소를 찾습니다.
구성 요소 CM2에 대해 모든 하위 구성 요소 또는 다운스트림 구성 요소를 재귀적으로 가져오려면 두 가지 옵션이 있습니다. 한 수준씩 재귀적으로 쿼리하거나 GSI2 인덱스를 쿼리할 수 있습니다.
-
하위 구성 요소의 마지막 수준에 도달할 때까지 한 수준씩 재귀적으로 GSI1을 쿼리합니다.
-
ParentId = "CM2"
를 사용하여 GSI1을 쿼리합니다. 이는 다음 레코드를 반환합니다.ParentId
ComponentId
CM2
CM4
CM5
-
다시
ParentId = "CM4"
를 사용하여 GSI1을 쿼리합니다. 이는 다음 레코드를 반환합니다.ParentId
ComponentId
CM4
CM8
CM9
-
다시
ParentId = "CM5"
를 사용하여 GSI1을 쿼리합니다. 이는 다음 레코드를 반환합니다.루프 계속: 마지막 수준에 도달할 때까지 각
ComponentId
에 대해 쿼리합니다.ParentId = "<ComponentId>"
를 사용한 쿼리가 결과를 반환하지 않는 경우 이전 결과가 트리의 마지막 수준에서 나온 것입니다.ParentId
ComponentId
CM5
CM10
-
모든 결과를 병합합니다.
결과= [CM4, CM5] + [CM8, CM9] + [CM10]
= [CM4, CM5, CM8, CM9, CM10]
-
-
최상위 구성 요소(자동차 또는 CM1)의 계층 트리를 저장하는 GSI2를 쿼리합니다.
-
먼저 최상위 구성 요소 또는 최상위 항목과 CM2의
Path
를 찾습니다. 이를 위해 이 경우ComponentId = "CM2"
를 사용하여 기본 테이블을 쿼리하여 계층 트리에서 해당 구성 요소의 경로를 찾습니다. 및 h 속성을 선택합니다.GraphId
Pat
쿼리는 다음 레코드를 반환합니다.GraphId
경로
CM1#1
CM1|CM2
-
를 사용하여 GSI2를 쿼리합니다.
GraphId = "CM1#1" AND BEGINS_WITH("Path", "CM1|CM2|")
쿼리가 다음 결과를 반환합니다.GraphId
경로
ComponentId
CM1#1
CM1|CM2|CM4
CM1|CM2|CM5
CM1|CM2|CM4|CM8
CM1|CM2|CM4|CM9
CM1|CM2|CM5|CM10
CM4
CM5
CM8
CM9
CM10
-
CM2에 대해 모든 하위 구성 요소를 반환하려면
ComponentId
속성을 선택합니다.
-
-