1M documents (employee-shaped, ~500B each). Docker-Compose, in-network runner (container-to-container — no port-forward artifact). AMD EPYC-Genoa, 4 vCPU, 8 GiB RAM. Source: tests/comparison-mongodb/.
OxiDB 24 — MongoDB 0
Across the full 24-test suite at 1M documents, OxiDB wins every measured workload. Largest wins are on counts (index-only path) and aggregation; smallest wins are insert (1.1×) and bulk full scans (1.1–1.3×).
| Operation | OxiDB | MongoDB | Winner |
|---|---|---|---|
| Count all (1M docs) | 200µs | 429ms | OxiDB 2189× |
| Top 5 cities (aggregation) | 1ms | 822ms | OxiDB 1262× |
| Count age ≥ 50 | 200µs | 156ms | OxiDB 645× |
| Count dept=Engineering | 300µs | 53ms | OxiDB 197× |
| Compound (composite idx) dept+status | 161ms | 626ms | OxiDB 4.1× |
| Random seq lookup × 100K | 8.07s | 27.6s | OxiDB 3.4× |
| Indexed: salary 80K-120K (235K results) | 1.01s | 3.25s | OxiDB 3.2× |
| Indexed: city=Tokyo (100K results) | 448ms | 1.37s | OxiDB 3.0× |
| Indexed: age ≥ 60 (300K results) | 1.43s | 4.12s | OxiDB 2.9× |
| Indexed: dept=Engineering (199K results) | 1.17s | 2.65s | OxiDB 2.3× |
| Create 4 indexes on 1M docs | 2.82s | 7.33s | OxiDB 2.6× |
| Bulk delete (10% of corpus) | 5.88s | 13.3s | OxiDB 2.3× |
| $or city=Tokyo OR Paris (no idx) | 1.48s | 3.15s | OxiDB 2.1× |
| Compound full scan (no idx) | 515ms | 1.03s | OxiDB 2.0× |
| $in country (no idx) | 2.21s | 4.03s | OxiDB 1.8× |
| Range (salary 50K-100K) no idx | 2.06s | 3.95s | OxiDB 1.9× |
| Exact match dept=Engineering (no idx) | 2.18s | 2.95s | OxiDB 1.4× |
| Match + Group (aggregation) | 247ms | 336ms | OxiDB 1.4× |
| Nested address.zip range (dot-path) | 1.47s | 1.91s | OxiDB 1.3× |
| Range query × 10K (10.2M rows total) | 30.2s | 35.9s | OxiDB 1.2× |
| Bulk insert 1M docs (batch 1000) | 16.0s | 18.3s | OxiDB 1.1× |
| Resource | OxiDB | MongoDB | Note |
|---|---|---|---|
| Memory (RSS) | 1.71 GiB | 1.00 GiB | OxiDB caches are env-tunable (OXIDB_DOC_CACHE_SIZE, OXIDB_DOC_BYTES_CACHE_SIZE); MongoDB WT cache capped at 0.5 GiB. |
| Disk (data dir) | 741 MB | 626 MB | OxiDB stores JSONB; MongoDB stores compressed WiredTiger. ~18% larger on disk. |
BENCH_MODE=innetwork). Host-mode runs through Docker's port-forward add ~160µs/round-trip that distorts small-payload workloads.--wiredTigerCacheSizeGB 0.5 per the existing compose config.OxiDB 10 — PostgreSQL 10
Tied overall at 100K docs. OxiDB wins on document queries, counts, and aggregation. PostgreSQL wins on bulk insert, indexed range queries, and JOIN-heavy workloads. (Pending re-run at 1M scale.)