skyportal (astronomy)
ZTF public alert stream, 6.6GB nightly tarball ingested live
| query | postgres | lastbase |
| count WHERE flux>20 | 7.6 ms | 1.0 ms |
| point lookup by id | 0.66 ms | 2.0 ms |
| group by filter | 5.7 ms | 2.4 ms |
| ingest alerts/s | 839 | 814 |
Mixed results, honestly. Scans and aggregates favor lastbase; single-row lookups favor postgres at this small scale.
dak (debian archive kit)
Debian stable archive: 2000 sources, 1968 binaries
| postgres | lastbase |
| qps, 50 threads | 15635.7 | 4112.9 |
A loss, reported anyway. On tiny fully-cached tables postgres is 3.8x faster. lastbase is built for data that does not fit in RAM.
musicbrainz
fullexport 20261017: 40.5M recordings, 58.4M tracks, 5.8M releases (59.4 GB)
| query | postgres 16 |
| artist pk lookup | 100 ms (cached) |
| track pk lookup | 100 ms (cached) |
| insert 10k rows | 110 ms (90,909 rows/s) |
Scale reference: parallel connections scale cleanly 1 to 64 before slowdown.
odoo (erp)
UK HM Land Registry price paid: 31,610,742 rows, 5.3 GB table
| value |
| COPY ingest | 390,000 rows/s |
| ORM search_count | matches psql count exactly |
| xmlrpc bench (64t) | 3.0 req/s, p95 7.1 s |
The ORM through the full app stack is the bottleneck, not the database.
bookwyrm
OpenLibrary works: 45,066,337 book rows
| query | lastbase |
| count(*) books | 2712 ms |
| pk lookup | 0.202 ms |
| ILIKE search | 0.530 ms |
| insert 10k | 666,666 rows/s |
logto (identity)
GH Archive events: 11,548,008 log rows, 1.2M users, 4.7 GB db
| clients | avg latency |
| 8 | 2.9 ms |
| 32 | 2.4 ms |
| 128 | 2.3 ms |
Ingest sustained 7,900 rows/s. Latency flat from 8 to 128 concurrent clients.
discourse (forums)
fineweb CC-MAIN-2013-20: 5,430,029 posts, 15 GB text
| postgres 16 |
| COPY ingest | 13,200 rows/s |
| ILIKE seq scan 15GB | 66 s |
| web 2 req/s | avg 91 ms, 0 errors |
chatwoot (support)
pushshift reddit: 804,711 messages, 101,126 conversations
| postgres |
| COPY ingest | 7,000 rows/s |
| mixed bench 120s | 112 count/s, 0 errors |
hatchet (task queue)
wikimedia wikipedia dumps: 28,253 events, 28,365 tasks
| |
| bench qps | 950.17 |
| avg query | 4.52 ms |
concourse (ci)
concourse's own ci pipeline: 20 repos, 10 builds, 45 containers
| |
| sustained parallelism | 45 containers |
| lost workers | 0 |
| fly builds api | 0.03 s/call |
zitadel (iam)
GH Archive identities: 15,397,424 unique names, 476,805 users created
| |
| api ingest peak | 400 users/s |
| session delete visibility | <5 s |
Key finding: postgres-backed event projections lag behind sustained ingest; a new user row took 10+ minutes to appear under load.