データベースに組み込む検索
PlanetScaleは、アプリケーションが既に依存するデータベース機能を維持しながら、検索処理をPostgres内に収めるための全文検索拡張TINを公開した。同社は9月16日、PostgresおよびNekiデータベース向けに、この拡張の一般提供を開始した。
Text INdexの略であるTINは、単純なキーワード検索以上を必要とするアプリケーションを想定している。PlanetScaleによると、論理積、論理和、フレーズによるクエリ、BM25による順位付け、正確な検索結果件数、継続的な挿入・更新・削除に対応する。検索結果は、トランザクションの可視性を保ちながらコミット済みの変更を反映するよう設計されており、クエリは他の列型に対する結合やフィルターとも組み合わせられる。
これらの機能は、一般的な複数の製品用途を対象にしている。オンラインストアなら、すべての検索語に合致する商品を10件順位付けしたいかもしれない。一方、訴訟に伴う証拠開示システムでは、指定語のいずれかを含む全書類が必要になることがある。写真サービスではタグの正確な件数を利用できる。こうした操作をPostgres内に保つことで、別の検索サービスへレコードを同期する必要を減らせる。
ベンダーのベンチマークは大幅な向上を示す
PlanetScaleはTIN 1.0.2を、ParadeDB 0.25.2、pg_textsearch 1.4.0、Postgres 18.6内蔵のGINインデックスと比較した。主なベンチマークでは、1億5000万件の文書を含む85GBのStack Exchangeエクスポートと、1,719件の合成クエリを使用した。各エンジンはAWSのi7i.8xlargeインスタンス上で、8基の仮想CPUと32GBメモリーを割り当てた独立コンテナー内で稼働した。
同社の、同時書き込みを伴わない混合クエリの上位10件順位付けテストでは、TINの毎秒クエリ処理数はParadeDBの25倍で、99パーセンタイルの遅延は26分の1だった。論理積とフレーズの処理では、PlanetScaleはParadeDBの10倍、GINの541倍のスループットを報告した。毎秒1,000件の更新を目標とするクライアントと併用した論理和の処理では、TINのクエリ処理速度はpg_textsearchの36倍、ParadeDBの57倍だったとしている。
これらはベンダー自身が実施した結果であり、独立した評価ではない。PlanetScaleは、オープンソースのParadeDB Benchmarkerをフォークしたものを使い、測定前にシステムをウォームアップし、複数のPostgres設定の変更も開示したと説明している。各ベンチマーク段階は順番に実行されたため、エンジン同士が資源を奪い合うことはなかった。また、TIN以外で全試験を完了したのはParadeDBのみで、競合の一部は特定のクエリ形式を実行できなかったり、設定したメモリーを使い切ったりしたとも記している。
TINの公開により、Postgres利用者には、別のエンジンを用いずにアプリケーション検索を実現する新たな選択肢が加わった。実用上の価値は、独立したテスト、本番環境での挙動、処理内容ごとの要件によって変わるが、一般提供の開始により、顧客は今この拡張を利用できるようになった。



