Data RESTorage, overview tecnico
Panoramica Architetturale e Whitepaper Funzionalità
Innovazioni Architetturali Chiave
1. Eliminati sia lo scoglio del linguaggio di query che il peso del query optimizer
Il Problema dei Query Optimizer Tradizionali
La Soluzione DRS: Determinismo Procedurale Esplicito
2. Deep Indexing e Proiezione Relazionale Ibrida
I limiti di MongoDB e dei Document Store Puri
La Soluzione DRS: Proiezione Relazionale Mirata
3. Transazionalità Atomica Unificata e Rollback
4. Esperienza di Sviluppo ad Alto Rendimento (Zero-Friction)
Data RESTorage (DRS) è un motore di backend ibrido documentale e relazionale a zero overhead, progettato per eliminare la complessità, il consumo di risorse e l'imprevedibilità prestazionale tipici dei database NoSQL tradizionali e dei pesanti layer ORM.
Sostituendo i linguaggi di query astratti e i query optimizer dinamici con moduli asincroni scolpiti e deterministici (TypeScript/JavaScript) e introducendo il concetto di Deep Indexing ibrido, DRS garantisce tempi di risposta sub-millisecondo prevedibili, integrità transazionale unificata e massima agilità di sviluppo.
┌────────────────────────────────────────────────────────┐
│ Client REST (GET / POST - Payload JSON / XML) │
└───────────────────────────┬────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ Middleware Autoexec a Cascata (Dataset/Schema/Entity) │
└───────────────────────────┬────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ Modulo Operazione Target: op-*.ts / op-*.mjs │
│ (Logica di Business Deterministica e Flusso Diretto) │
└───────────────────────────┬────────────────────────────┘
│
┌─────────────────────────┴──────────────────────────┐
▼ ▼
[ 1. Documento Alberato Completo ] [ 2. Deep Indexing Puntuale ]
Memorizzazione documento JSON ricco Tabelle Indice SQL Relazionali
(Sfrutta la Page Cache del kernel OS) (Proiezioni MariaDB / PostgreSQL)
│ │
▼ ▼
`drs.set(docId, json)` `drs.sql(query, values)`
Accesso rapido O(1) Chiave/File Indici piatti e fortemente tipizzati
│ │
└─────────────────────────┬──────────────────────────┘
│
▼
`drs.commit()`
Transazione Atomica Unificata (Filesystem + DB Relazionale)
I motori di database convenzionali (sia relazionali che documentali come MongoDB) si basano su complessi Query Optimizer incaricati di tradurre query dichiarative (SQL, MQL, GraphQL) in piani di esecuzione fisici.
op-*.ts / op-*.mjs).L'interrogazione e l'indicizzazione di dati JSON ricchi, fortemente nidificati o con array interni è storicamente uno dei nodi più critici dei database documentali.
$unwind, $elemMatch, $lookup), con elevato consumo di CPU e limiti di memoria per stage.JOIN, WHERE, ORDER BY e paginazione nativa) che restituiscono esclusivamente gli ID dei documenti pertinenti (doc_id).drs.get(id)).Coordinare scritture su disco e database relazionali richiede solitamente pesanti transazioni distribuite (2PC/XA).
drs.set() (filesystem) e drs.sql() / drs.pgInsert() (database).drs.commit() applica in modo coordinato e atomico sia i file JSON pendenti che le transazioni SQL.dry_run: true): l'operazione viene eseguita per intero ma le modifiche vengono annullate al termine, restituendo il payload di risposta reale.HotPluggableDir, qualsiasi modifica a file .ts o .mjs ha effetto immediato alla successiva richiesta REST senza riavviare il processo server.tsc), bundler o loader aggiuntivi (ts-node, tsx).autoexec): File autoexec.ts / autoexec.mjs eseguiti in sequenza a livello Dataset, Schema ed Entity per condividere helper, normalizzare contesti o implementare guardie di sicurezza precoci.| Caratteristica Architetturale | NoSQL Tradizionale (es. MongoDB) | RDBMS Tradizionale + ORM | Data RESTorage (DRS) |
|---|---|---|---|
| Meccanismo di Query | Dichiarativo MQL / Aggregazioni | Dichiarativo SQL tramite ORM | Operazioni Asincrone Deterministiche (TS/JS) |
| Rischio Query Optimizer | Elevato (Regressioni di piano, cache miss) | Elevato (SQL non ottimizzato da ORM) | Assente (Logica procedurale esplicita) |
| Deep Tree Indexing | Multikey / Wildcard (Alto consumo RAM) | Colonne JSON complesse o tabelle EAV | Proiezione Relazionale Ibrida (XPath a SQL) |
| Indici su Valori Calcolati | Richiede Pipeline / Trigger asincroni | Generated Columns o Trigger complessi | Nativo (Calcolato nel codice operazione) |
| Consumo di Memoria | Elevato (Cache motore + indici in RAM) | Medio-Alto | Minimo (Page cache del kernel OS) |
| Ambito Transazionale | Multi-documento (setup complesso) | Solo Database (ignora il filesystem) | Unificato Atomico (Filesystem + SQL DB) |
| Hot Reload / Deploy | Riavvio server o rebuild API | Rebuild, migrazioni, riavvio | Zero downtime (Hot-reload istantaneo dei file) |
| Toolchain TypeScript / JS | Richiede pipeline di build esterne | Richiede pipeline di build esterne | Esecuzione nativa a zero configurazione |
| Interoperabilità XML / Legacy | Richiede layer di trasformazione esterni | Richiede parser XML applicativi | Supporto nativo duale JSON / XML |
Data RESTorage unisce la flessibilità dei documenti JSON non strutturati con la velocità e la precisione di ricerca dei database relazionali.
Eliminando l'ottimizzatore di query, separando la conservazione del dato dalla proiezione degli indici ed eseguendo TypeScript/JavaScript nativo direttamente sul percorso REST, DRS offre prevedibilità prestazionale assoluta, consumi infrastrutturali minimi e massima velocità di rilascio.