専用の検索エンジン — 転置インデックス上に構築されたElasticsearch/OpenSearch — を使い、CDC経由でソースDBから供給し、スケールのためにインデックスをシャーディングします。プライマリデータベース(Postgres/MySQL)は数億行に対する関連度ランク付きのテキスト検索ができません。LIKE '%term%' はすべての行をスキャンします。検索エンジンは問題を反転させます。
Source DB ─▶ CDC (Debezium) ─▶ Kafka ─▶ Indexer ─▶ Elasticsearch/OpenSearch
(Postgres) (change stream) ├─ Shard 0 (inverted index) + replicas
├─ Shard 1
Query ─▶ Coordinator ─▶ scatter to shards ─▶ gather ─┴─ Shard N ── ranked by BM25
