Gebruik een dedicated search engine — Elasticsearch/OpenSearch, gebouwd op een inverted index — gevoed vanuit je bron-DB via CDC, en shard de index voor schaal. Je primaire database (Postgres/MySQL) kan geen relevantie-gerangschikte tekstsearch over honderden miljoenen rows; een LIKE '%term%' scant elke row. Een search engine keert het probleem om.
Bron-DB ─▶ CDC (Debezium) ─▶ Kafka ─▶ Indexer ─▶ Elasticsearch/OpenSearch
(Postgres) (change stream) ├─ Shard 0 (inverted index) + replica's
├─ Shard 1
Query ─▶ Coordinator ─▶ scatter naar shards ─▶ gather ─┴─ Shard N ── gerangschikt op BM25
