Benchmarks, amb honestedat
Mediana de N execucions, els dos motors en calent, sentències preparades a banda i banda, fsync a un disc real. Allà on guanya SQLite, ho ensenyem: el gràfic només és útil si te'n pots refiar.
AMD Ryzen 7 3700X · 32 GiB · ext4 en SATA SSD · rustc 1.95.0 · SQLite 3.50.2 · un sol fil
El marcador
Cada operació CRUD, com a ràtio de velocitat. A la dreta de la línia, Arkeion és més ràpid; a l'esquerra, ho és SQLite — i sí, l'escaneig complet encara és seu.
Escriptures durables — el cas d'ús central
Cada transacció confirmada paga el fsync. El commit append-only d'Arkeion necessita un fdatasync; SQLite amb synchronous=FULL en paga dos. En disc real això capgira la taula — i és el que un motor auditat fa constantment.
Les mateixes garanties — la baralla justa
El marcador de dalt competeix contra SQLite tal qual. Però Arkeion sempre porta a sobre versionat, una cadena de hashos per commit, AS OF i verify(). Dona a SQLite la mateixa feina — una taula d'històric completa més una cadena de hashos per escriptura, en una sola transacció — i la diferència s'eixampla: aquest és el cost d'un rastre d'auditoria que SQLite ha d'afegir a posteriori i que Arkeion simplement és.
L'emulació amb SQLite no reprodueix ni el hash de contingut per commit ni una instantània consultable, així que aquestes ràtios són una cota inferior del cost real d'igualar Arkeion — que encara hi afegeix AS OF, verify() i ramificació.
Text complet vs FTS5 — decisió dividida
L'índex ha acabat sent més petit que el de FTS5; la velocitat de construcció i de consulta continuen sent terreny de FTS5. L'intercanvi compra una cosa que FTS5 no pot oferir: cerca versionada, demostrable i amb viatge en el temps.
Posting lists comprimides per prefix — i, a diferència de FTS5, cada posting està versionat, encadenat per hash i es pot cercar amb MATCH … AS OF.
Cerca vectorial davant la resta del camp
SIFT 1M, 128 dimensions, L2, ground truth real del top-100, consulta única amb recall ≈ 0,99. Sota càrrega concurrent manté ~700 qps en 8 nuclis; amb recall ≈ 0,88 una consulta única fa ~590 qps.
14–21× més petit que els índexs HNSW — cap en una fracció de la RAM. Qdrant no reporta una mida de fitxer comparable.
Paral·lela i en streaming (186 s → 64 s): el conjunt de dades no es materialitza mai, així que escala a desenes de milions de files en una màquina modesta.
Llegeix-ho amb justícia: pgvector i Qdrant responen per TCP a localhost, així que un round trip de 0,05–0,2 ms infla les seves latències; i IVF escaneja O(N) candidats a recall fix mentre que HNSW és O(log N), de manera que els motors de graf dedicats s'avancen a partir de desenes de milions de vectors. HNSW queda exclòs aquí per disseny: el seu graf d'accés aleatori és incompatible amb el versionat copy-on-write i el viatge en el temps. Arkeion és l'únic fitxer on els vectors viuen al costat de SQL, text complet, branques i AS OF.
El preu de la durabilitat — v0.13 vs FAISS
La comparació més dura que podem fer: FAISS és la biblioteca ANN de referència — RAM pura, sense durabilitat, sense transaccions, sense versionat, sense SQL. La mateixa màquina (una VM de 4 nuclis, així que les barres de dalt i les de baix no són comparables entre si), el mateix SIFT-1M, configuració idèntica a banda i banda: IVF de 1000 llistes, PQ16, rerank exacte ×32. Recall@10 ≈ 0,99 en tots dos, una consulta cada cop, un sol fil.
A menys de 2× de la referència en RAM — des d'un fitxer xifrat, versionat i durable. Abans de la v0.13 la diferència era de 7–10×. El mode per lots de FAISS amb 8 fils arriba a ~5.000 qps davant els 1.381 concurrents d'Arkeion.
Més petit en disc
El mateix conjunt de dades comprimible, escrit pels dos motors. Empaquetatge de pàgines més LZSS en Rust pur — Arkeion va començar aquesta feina amb 4,0 MB.
Executa'ls tu mateix
# CRUD vs SQLite (apunta a un disc real, no a tmpfs)
ARKEION_BENCH_DIR=/path/on/real/disk cargo bench --features bench-sqlite
# espai en disc
cargo run --release --example dbsize --features bench-sqliteUna lliçó que vam aprendre a les males: en tmpfs els fsync surten de franc i SQLite guanya les escriptures durables. En un disc real la cosa es capgira. Fes sempre els benchmarks al disc on executaràs.