Compare
Side-by-side on the decisions that recur: index vs scan, normalize vs denormalize, optimistic vs pessimistic, partition vs shard, and more — with when to choose each.
Index Scan vs Sequential ScanNormalize vs DenormalizeOptimistic locking vs Pessimistic lockingRead Committed vs SerializablePartitioning vs ShardingRead replica vs ShardRelational vs DocumentPostgres + pgvector vs Dedicated vector DBCache-aside vs Write-throughB+ tree storage engine vs LSM tree storage engineHeap table + secondary indexes (PostgreSQL-style) vs Clustered primary index (InnoDB-style)LRU vs Clock (second chance)Synchronous replication vs Asynchronous replication
| Postgres + pgvector | Dedicated vector DB | |
|---|---|---|
| Systems to run | One | Two (plus a sync boundary) |
| Filters | SQL, transactional with the data | Engine-specific; joins done in your code |
| Scale ceiling | Tens of millions of vectors | Hundreds of millions to billions |
| Consistency | Same transaction as the rows | Eventual with the source of truth |
| When | Vectors alongside existing relational data | Vector search is the core workload at proven scale |
| Choose this when | The default for RAG and recommendations — start here; the vectors live next to the rows they describe. | When a measured number shows pgvector cannot keep up and vector search is the product. |