기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Neptune이 문 인덱스를 사용하여 Gremlin 쿼리를 처리하는 방법
문은 Neptune에서 문을 인덱싱하는 방식에 설명된 대로 3개의 문 인덱스를 통해 Amazon Neptune에서 액세스할 수 있습니다. Neptune은 Gremlin 쿼리에서 일부 위치가 알려져 있고 나머지 위치는 인덱스 검색을 통해 검색되도록 남겨두는 문 패턴을 추출합니다.
Neptune은 속성 그래프 스키마의 크기가 크지 않다고 가정합니다. 이는 각기 다른 엣지 레이블 및 속성 이름의 수가 매우 적어서 서로 다른 조건자의 총 수가 적어진다는 의미입니다. Neptune은 별도의 인덱스에서 서로 다른 조건자를 추적합니다. Word OSGP 인덱스를 사용하는 { all P x POGS }
대신이 조건자 캐시를 사용하여의 유니온 스캔을 수행합니다. 역순회 Word OSGP 인덱스가 필요하지 않으면 스토리지 공간과 로드 처리량이 모두 절약됩니다.
Neptune Gremlin 설명/프로필 API를 사용하면 그래프에서 조건자 수를 얻을 수 있습니다. 사용자는 애플리케이션에서 속성 그래프 스키마의 크기가 작다는 Neptune 가정이 무효화되는지 여부를 확인할 수 있습니다.
다음 예제는 Neptune이 어떻게 인덱스를 사용하여 Gremlin 쿼리를 처리하는지 보여줍니다.
질문: 버텍스 v1
의 레이블은 무엇입니까?
Gremlin code: g.V('v1').label() Pattern: (<v1>, <~label>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<~label>:*
질문: 버텍스 v1
의 ‘알려진’ 발신 엣지는 무엇입니까?
Gremlin code: g.V('v1').out('knows') Pattern: (<v1>, <knows>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<knows>:*
질문: Person
버텍스 레이블을 가지고 있는 버텍스는 무엇입니까?
Gremlin code: g.V().hasLabel('Person') Pattern: (?, <~label>, <Person>, <~>) Known positions: POG Lookup positions: S Index: POGS Key range: <~label>:<Person>:<~>:*
질문: 주어진 엣지 e1
의 소스/대상 버텍스는 무엇입니까?
Gremlin code: g.E('e1').bothV() Pattern: (?, ?, ?, <e1>) Known positions: G Lookup positions: SPO Index: GPSO Key range: <e1>:*
Neptune에 없는 문 인덱스 중 하나는 역방향 순회 OSGP 인덱스입니다. 아래 예제에서와 같이 이 인덱스는 모든 엣지 레이블에서 수신 엣지를 수집하는 데 사용할 수 있습니다.
질문: 수신 인접 버텍스 v1
은 무엇인가요?
Gremlin code: g.V('v1').in() Pattern: (?, ?, <v1>, ?) Known positions: O Lookup positions: SPG Index: OSGP // <-- Index does not exist