전용 검색 엔진을 사용하십시오 — 역인덱스(inverted index) 위에 구축된 Elasticsearch/OpenSearch — 소스 DB에서 CDC를 통해 공급받고, 확장을 위해 인덱스를 샤딩하십시오. 당신의 primary 데이터베이스(Postgres/MySQL)는 수억 row에 대한 relevance 순위 텍스트 검색을 할 수 없습니다. LIKE '%term%'는 모든 row를 스캔합니다. 검색 엔진은 문제를 뒤집습니다.
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
