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.
capçalera pàgines#v126 pàgines#v127 pàgines#v128 afegir →
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.