El motor

Una base de dades seriosa en un sol fitxer — tot el que s'afirma aquí sota ja és dins del crate de codi obert d'avui.

SQL i esquema

Dialecte ampli
JOIN, GROUP BY/HAVING, DISTINCT, agregats (incl. GROUP_CONCAT), subconsultes, CTEs (WITH), UNION, CASE, CAST, BETWEEN, ||, més una biblioteca de funcions escalars i de data/hora.
Vistes i triggers
CREATE VIEW; triggers BEFORE/AFTER a nivell de fila sobre INSERT/UPDATE/DELETE amb OLD/NEW.
Integritat
Claus foranes amb ON DELETE RESTRICT, CASCADE i SET NULL.
ALTER TABLE lògic
ADD, DROP, RENAME, MOVE i REORDER COLUMN sense reescriure ni una sola fila — i segur davant del viatge en el temps.
Índexs secundaris
CREATE [UNIQUE] INDEX sobre B-tree; el planificador els fa servir per a igualtats, rangs i cerques multicolumna, amb pushdown determinista de predicats als JOIN.

Cerca

Text complet, natiu
MATCH amb ranking BM25, snippet() i highlight(), accelerat per índex. Les posting lists comprimides per prefix mantenen l'índex per sota de SQLite FTS5.
Vectorial / semàntica
Columnes vectorials f32 i int8; KNN exacte i ANN via CREATE VECTOR INDEX … USING cosine|l2 (IVF / IVF-PQ); el RRF híbrid combina BM25 i vectors. L'índex és ≈10–20× més petit que HNSW.
Cerca amb viatge en el temps
MATCH … AS OF consulta el passat — una cosa que cap motor de cerca dedicat ofereix.
Construccions d'índex que escalen
Paral·leles (k-means, assignació i PQ a tots els nuclis) i en streaming — el conjunt de dades no es materialitza mai, o sigui que desenes de milions de files caben en una màquina modesta.

Emmagatzematge i velocitat

El fitxer és el WAL
B-tree append-only amb copy-on-write. Un fitxer per tenant: fer còpia és cp, restaurar és cp.
Durabilitat
ACID amb recuperació per tail-scan i un sol fsync per commit. El group commit agrupa els committers concurrents — uns 4.6× de throughput durable amb 16 fils.
Càrregues massives
bulk_insert executa tot el lot dins d'una sola transacció sense executor per fila — 2.5M files/s als nostres benches.
Lectures en streaming
Els SELECT simples es transmeten amb descodificació mandrosa: només les columnes projectades, directament des de la pàgina. L'API tipada del motor resol cerques puntuals ~3.7× més ràpid que la via SQL.
Concurrència
Lectors concurrents sense cap lock global — cada lectura és un snapshot immutable.

Integritat i criptografia

Històric encadenat per hash
Cada commit s'encadena amb SHA-256; manipular el passat és detectable. verify() amb àncores demostra que el fitxer és intacte.
Xifratge en repòs
AES-256-GCM per pàgina (opcional) — les dades personals no toquen mai el disc en clar.
Autoreparació
Reed–Solomon per pàgina (opcional) corregeix el bit-rot en comptes de només detectar-lo; scrub() recorre el fitxer.
Compressió i manteniment
LZSS en Rust pur per pàgina; vacuum amb retenció i rotació de claus, amb rename atòmic.

Temps i branques

AS OF
SELECT … AS OF <versió o marca de temps> — més history(), diff_versions() i changes().
Branques i merge de dades
Branques de dades amb diff i merge a tres bandes, sobre el model conceptual de Git. Prova una migració en una branca; fes-ne el merge quan hagi demostrat que funciona.

Posa'l a prova

O mira què aporten aquestes decisions en xifres.

Llegeix el codi font