Python SDK を使用して Google Cloud Bigtable で複数のプレフィックスによる検索を実行しようとしています。を使用してread_rows
いますが、接頭辞で明示的に検索する良い方法がわかりません。
私の最初のオプションはRowSet
+RowRange
です。3 つのクエリをテストしていますが、得られる時間は次のとおりです。~1.5 秒、~3.5 秒、~4.2 秒。これは、Node SDK (フィルター オプションがある) を使用した検索よりも桁違いに遅いです。~0.19、~0.13、~0.46。
2 番目のオプションはRowFilterChain
+を使用することRowKeyRegexFilter
です。次の 2 つのクエリのパフォーマンスはひどいものです。~3.1秒、~70秒、~75秒~0.124 秒、~72 秒、~69 秒。フルスキャンを行っているようです。これはコードセクションです:
regex = f'^{prefix}.*'.encode()
filters.append(RowKeyRegexFilter(regex))
3 番目のオプションは、プレフィックス フィルタリングを備えた別の Happybase ベースの SDK を使用することです。それで、私は得ています~36秒、~3秒、~1秒~0.4、~0.1、~0.17。最初のクエリには複数のプレフィックスが含まれており、同じリクエストで複数のフィルタリングをサポートしていないようです。そのため、プレフィックスと同じ数のリクエストを実行し、イテレータを連結しています。他の 2 つは、プレフィックス フィルターを利用しているようです。
UPDATE : 環境に誤りがあったため、最初は削除しました。適切に実行した後、範囲クエリの時間は悪くありませんが、接頭辞検索を利用すると Happybase テストはさらに高速になるため、改善の余地があるようです。
Happybase での複数のプレフィックス検索、またはメインの Python SDK での実際のプレフィックス検索の使用について助けていただければ幸いです。