2

키 또는 색인 된 속성으로 단조롭게 증가하는 값을 갖는 엔티티 종류에 빠르게 쓰는 것이 성능에 좋지 않은 아이디어 인 것은 well documented입니다.Datastore의 부울 또는 열거 형 속성을 빠른 색인 작성에 나쁜 아이디어로 색인하고 있습니까?

성별 속성과 같은 항목이나 성별과 같은 열거 형 값을 가진 속성을 색인화하는 방법은 어떻습니까?

낮은 카디널리티 속성에 대한 색인 생성은 이러한 속성에 기본 제공 유형이 없으므로 동일한 문제가 발생할 수 있습니다. 하지만 부울 속성에 대한 특별한 처리가있을 수 있습니까?

답변

1

Cloud Datastore에는 부울 및 열거 형과 같은 낮은 카디널리티 데이터에 대한 최적화 기능이 있습니다. 각 색인 항목에는 엔티티 키가 포함되어 있으므로 기본 Bigtable 태블릿을 효율적으로 분할하여 더 큰로드를 처리 할 수 ​​있습니다. 이것은 동일한 값에 대해 정렬 순서를 고려할 필요가 없으므로 작동합니다. 따라서 키 공간에서 무작위로 분산 시키면 쿼리와 아무런 차이가 없으며 엔티티 키가 고유하도록 보장되므로 충돌을 피할 수 있습니다.

값을 색인 할 때 'scatter key'속성을 끝에 추가합니다.이 속성은 본질적으로 임의의 정수입니다. 이 스 캐터 키는 나중에 쿼리 분할에 사용할 수 있으므로 Cloud Dataflow와 같은 항목이이 데이터 집합에 대해 쿼리를 효율적으로 병렬 처리 할 수 ​​있습니다.

+0

감사합니다. Dan. Datastore는 Enum 유형을 선언 할 수 없으므로 최적화를 적용 할 속성을 어떻게 알 수 있습니까? 다시 한번 생각해 보겠습니다. 이 기술을 인덱싱이 필요한 모든 짧은 텍스트 유형 속성에도 적용하는 방법을 알 수 있습니다. 극단적 인 경우 모든 값이 고유하지만 상처를주지는 않습니다. –

+0

enum으로, 귀하의 질문에 따라 enum-like를 의미합니다. 예, 어디서나 적용 할 수 있습니다. –

관련 문제