2017-12-04 27 views
0

접두사의 유무에 관계없이 Bigtable에서 Regex 쿼리를 사용하는 것에 대한 권장 사항 및 성능 고려 사항에 대해 질문하고 싶습니다.Bigtable 쿼리의 정규식 필터 - 성능/권장 사항

Regex로 필터링해야하는 행 키 끝에 정보가 있습니다.

접두사를 포함하지 않는 Regex 쿼리를 수행하기 위해 Bigtable이 전체 테이블 스캔을 수행해야합니까? 성능 고려 사항은 무엇입니까? 권장 사항입니까?

쿼리에 접두사를 가져 오는 것이 권장 사항에 어떤 영향을 미칩니 까?

우리가 스키마를 최적화 할 때 이에 대한 조언이나 의견을 부탁드립니다.

+1

Bigtable에는 행 키에 대해 하나의 색인 만 있습니다. Bigtable은 범위 시작 부분에서 검색을 시작하고 행 키 범위의 끝까지 모든 행을 순차적으로 살펴볼 것입니다. 질문에 대한 답변이 있습니까? –

답변

2

Cloud Bigtable의 eng 팀입니다.

Bigtable 필터 엔진은 Regex 쿼리에있는 모든 접두어를 구문 분석하고이를 사용하여 검색 범위를 줄입니다.

그러나 접두사를 제공하지 않으면 Bigtable에 아무 것도 표시되지 않습니다. 행 일 가능성이 있으므로 표시 할 항목이 없습니다. 따라서이 유형의 쿼리는 전체 테이블 검색을 발생시킵니다. 잘 수행해야하는 쿼리에는 대용량 스캔을 사용하지 않는 것이 좋습니다. 행 키를 최대한 많이 사용하지 않으려면 행 키를 정렬하는 것이 가장 좋습니다. schema design in the docs에 대한 자세한 정보를 찾을 수 있습니다.

지원되는 모든 클라이언트에서 스캔 할 때 항상 명시 적 행 경계를 설정할 수 있습니다. 이것은 달리 무제한의 스캔의 크기를 제한하는 데 유용하지만, 당신이 진정으로 큰 쿼리를 가속화해야하는 경우도 병렬로 테이블의 여러 파편을 읽을 사용할 수 있습니다 :