Che cos’è GroveDB?
✍️ Traduzione by Dash Italia - Fonte originale
Che cos’è GroveDB?
GroveDB è la prima implementazione a livello di produzione di una struttura dati autenticata gerarchica di tipo chiave-valore (HADS), progettata per integrare il database RocksDB della Dash Platform. La Dash Core Group (DCG) ha creato GroveDB poiché nessuna soluzione esistente offriva la funzionalità desiderata per la Dash Platform. In generale, GroveDB offre tre capacità critiche:
- Abilità di interrogazione complete.
- Query trustless in modo che gli utenti sappiano che i loro dati sono accurati tramite prove crittografiche.
- Prove efficienti sia in termini di dimensioni che di tempo.
Perché era necessaria GroveDB?
La Dash Platform è sull’orlo del rilascio e sarà l’accesso di Dash nel Web3. Tuttavia, perché la decentralizzazione dovrebbe rimanere localizzata alla piattaforma stessa e non all’intera esperienza? Considera questo: quando un utente interroga un database, essenzialmente sta chiedendo ai server host di:
- Esaminare il loro database memorizzato.
- Restituire il pezzo di informazione richiesto.
Il problema evidente è che devi fidarti dell’host per inviarti le informazioni corrette e agire eticamente con i tuoi dati. Questo è particolarmente rilevante per i sistemi distribuiti come le blockchain, dove chiunque può ospitare anonimamente il database.
Una solida soluzione qui è utilizzare prove crittografiche. Il ricevente dei dati può verificare le prove crittografiche inviate dall’host per garantire la validità dei dati. Senza prove crittografiche, il ricevente non può mai essere sicuro della qualità e validità dei dati ricevuti.
Sebbene ci siano database che utilizzano prove crittografiche, sono inefficienti. GroveDB si distingue dalla concorrenza per i seguenti motivi:
- Prove di query complesse
- Archiviazione immutabile e mutabile
- Prove di inclusione e non inclusione
- Conformità ACID
Architettura degli Alberi di GroveDB
Grove (sostantivo): un piccolo gruppo di alberi
A differenza di un’architettura ad albero tradizionale, GroveDB utilizza una struttura dati autenticata gerarchica basata su Database Outsourcing con Strutture Dati Autenticate Gerarchiche (HADS). Il grafo complessivo assume una forma in cui gli hash radice degli alberi di livello inferiore sono memorizzati nei nodi degli alberi di livello superiore e l’hash radice dell’albero radice può essere utilizzato per dimostrare lo stato dell’intero database. In termini semplici, invece di utilizzare un semplice albero di Merkle, GroveDB assume la forma di un gruppo (o un boschetto) di alberi di Merkle. Nell’attuale implementazione di GroveDB, l’”albero radice” di livello superiore ha 5 sottoalberi: identità, documenti di contratto, hash di chiavi pubbliche per identità, transazioni di blocco di asset spesi e pool.
Indici Secondari per Query Complesse
Prima di entrare negli indici secondari, capiamo come funzionano gli identificatori unici nei database tradizionali. Tutti i documenti o i record memorizzati nei database richiedono un valore unico o “identificatore” per differenziarli dagli altri. L’identificatore unico può essere una colonna o un campo nel tuo database, come i numeri di serie in un elenco.
Tuttavia, cosa succede se i record devono essere interrogati in base a un altro indice, come spesso accade nel mondo reale? Le applicazioni spesso devono interrogare i propri dati in base a campi secondari come nome, data, città, ecc. I database con indici secondari consentono agli utenti di eseguire operazioni di interrogazione complesse utilizzando diversi campi di dati.
I database che forniscono prove crittografiche spesso faticano a gestire gli indici secondari a causa del grado di complessità coinvolto. Con GroveDB, gli ingegneri della Dash Core Group hanno raggiunto un importante passo avanti nella gestione degli indici secondari. Se vuoi sapere di più su come funziona l’indicizzazione secondaria in GroveDB, leggi questo.
Utilità di GroveDB
GroveDB fornisce prove crittografiche, che garantiscono l’accuratezza dei dati recuperati. Questa funzionalità è inestimabile quando si tratta di dati sensibili. Come tale, GroveDB vede un’enorme utilità in settori in cui la fiducia è cruciale.
Come menzionato, la sicurezza avanzata e le capacità di interrogazione avanzate daranno agli sviluppatori un vantaggio significativo quando distribuiranno le loro dApp sulla Dash Platform. Tuttavia, non è necessario distribuire le tue applicazioni sulla Dash Platform per sfruttare la funzionalità di GroveDB.
GroveDB è stato progettato per essere un prodotto autonomo che può essere integrato con qualsiasi sistema che utilizza RocksDB. Un esempio di integrazione utilizzando Rust può essere visto in rs-drive. GroveDB ha anche binding per Node.js per supportare gli sviluppatori JavaScript.
Come Iniziare con GroveDB?
Qui, ti daremo una breve panoramica di come puoi iniziare a lavorare con GroveDB. Troverai un tutorial dettagliato qui.
La prima cosa che devi fare è clonare il repository di GroveDB. Ora, esegui i nostri tutorial. Per prima cosa, dovrai costruire il codice del tutorial:
cd grovedb/tutorials
cargo build
Esegui i tutorial utilizzando questo:
cargo run — bin ❮tutorial name❯
Il <nome del tutorial>
avrà i tutorial che puoi eseguire:
- open: La funzione open() apre un’istanza esistente di GroveDB nel percorso dato. Se non esiste alcun file esistente, ne verrà creato uno nuovo con un albero radice vuoto.
- insert: La funzione insert() consente a GroveDB di inserire elementi nella memoria. Per impostazione predefinita, l’inserimento sovrascrive i valori a meno che il valore non sia un albero.
- delete: La funzione delete() elimina le chiavi-valore dalla memoria.
- Queries (query-simple e query-complex): La funzione query() consente a GroveDB di eseguire query sulla memoria. Le funzioni di query possono essere semplici o complesse. Quando esegui una query semplice, GroveDB recupera il sottoinsieme dell’elemento richiesto e stampa il risultato nel terminale. Una query complessa ti permette di inviare due sottoquery insieme alla query principale. Non più di 10 elementi possono essere visualizzati nel risultato.
- proofs: La funzione prove_query() genera prove di query prendendo come argomento una query di percorso. La funzione verify_query() verifica le prove di query, prendendo come argomento una query di percorso e la prova.
Sei Pronto a Usare GroveDB?
Come sviluppatore, è chiaro vedere i vantaggi di utilizzare un database come GroveDB. Attualmente, è l’unica implementazione efficiente di un database basato su prove crittografiche che supporta query complesse. Ti consigliamo di seguire i nostri tutorial di GroveDB per metterti al passo con le basi.
Quando sei pronto a iniziare a costruire, visita la homepage del crate per le istruzioni su come aggiungere GroveDB al tuo progetto e i link alla documentazione.
🌐 V️isita il nostro Sito Web 🌐