Naudokite specializuotą paieškos variklį — Elasticsearch/OpenSearch, pastatytą ant inverted index — maitinamą iš jūsų šaltinio DB per CDC, ir skaidykite indeksą mastui. Jūsų pirminė duomenų bazė (Postgres/MySQL) negali atlikti aktualumu ranguotos teksto paieškos per šimtus milijonų eilučių; LIKE '%term%' skenuoja kiekvieną eilutę. Paieškos variklis apverčia problemą.
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
