2017-12-04 19 views
0

プレフィックスの有無にかかわらず、BigtableでRegexクエリを使用する際の推奨事項とパフォーマンスに関する考慮事項についてお尋ねします。Bigtableクエリの正規表現フィルタ - パフォーマンス/推奨事項

Regexでフィルタリングする必要がある行キーの最後に情報があります。

Bigtableはプレフィックスを含まないRegexクエリを実行するために全テーブルスキャンを行う必要がありますか?パフォーマンスの考慮事項は何ですか?これはお勧めですか?

クエリにプレフィックスを付けると、推奨事項にどのような影響がありますか?

私たちがスキーマを最適化するにつれて、これに関するアドバイス/考えを感謝します。

+1

Bigtableには行キーのインデックスが1つしかありません。 Bigtableは範囲の先頭でスキャンを開始し、行キー範囲の最後まですべての行を順番に調べます。 これはあなたの質問に答えますか? –

答えて

2

私はCloud Bigtableのengチームです。

Bigtableフィルタエンジンは、Regexクエリに存在する任意のプレフィックスを解析し、それを使用してスキャンの範囲を縮小しようとします。

ただし、プレフィックスを指定しないと、のいずれかの行がと一致する可能性があるため、Bigtableには何も表示されません。したがって、このタイプの問合せは、全表スキャンとなります。大量のスキャンは、実行が必要なクエリには推奨されません。できるだけ避けるために、行キーを配置することをお勧めします。 schema design in the docsについての詳細な情報があります。

サポート対象のすべてのクライアントでスキャンに明示的な行境界を設定できることに注意してください。これは、そうでない場合は無制限スキャンのサイズを制限するのに便利ですが、あなたは本当に大規模なクエリを加速する必要がある場合も並行して、テーブルの複数の破片を読むためにそれを使用することができます:

関連する問題