RavenDB è un database orientato ai documenti completamente ACID e open-source; scritto in C# e sviluppato da Hibernating Rhinos Ltd. È multi piattaforma, supportata Windows, Linux e MacOS. RavenDB memorizza i dati sotto forma di documenti JSON, e può essere installato con support per i cluster distribuiti con replica master-master.
Storia Originariamente chiamato “Rhino DivanDB”, RavenDB inizia come un progetto di Oren Eini (alias Ayende Rahien) nel 2008 ed è sviluppato da Hibernating Rhinos Ltd. La società sostiene che è stato il primo database orientato ai documenti ad essere eseguito in modo nativo col framework .NET. È stato uno fra i primi database orientati ai documenti a fornire garanzie di tipo ACID.
Nel 2019 Hibernating Rhinos ha cominciato ad offrire RavenDB come un servizio cloud chiamato RavenDB Cloud.
Storia delle versioni Versione Data Funzionalità aggiunte (elenco parziale) Supportato? 1.0 Maggio 2010 2.0 Gennaio 2013 Replica 2.5 Giugno 2013 Proiezioni; Query basate su facet 3.0 Novembre 2014 Java API; Motore di persistenza Voron 3.5 Ottobre 2016 Clustering 4.0 Febbraio 2018 Supporto multi piattaforma; disponibile con una licenza gratuita 4.1 Agosto 2018 4.2 Maggio 2019 Supporto per le Graph query 5.0 Luglio 2020 Serie temporali; Compressione dei dati usando l’algoritmo zstd
Architettura del sistema I dati sono memorizzati come documenti senza schema in formato JSON. A livello di archiviazione, i documenti sono scritti in un formato binario chiamato “blittable”. I documenti sono raggruppati in collection, ogni documento appartiene solo ed unicamente a una collection.
I database possono essere distribuiti su un cluster di server (chiamati ‘nodi’) usando replica multi-master. Alcune operazioni a livello di cluster richiedono il consenso della maggioranza dei nodi, il consenso è determinato usando un’implementazione dell’algoritmo Raft chiamata Rachis. Le attività sono distribuite ai diversi nodi in modo bilanciato.
Originariamente RavenDB usava il motore di archiviazione Esent. Nella Versione 3.0 è stato sostituito con un nuovo motore di archiviazione, open source, chiamato Voron.
Il database client è disponibile per C#, C++, Java, Node.js, Python, Ruby e Go.
Caratteristiche principali Transazioni ACID cluster-wide – le transazioni ACID possono essere eseguite a livello di cluster (oltre a transazioni a livello di singolo nodo). La transazione sarà completata solo se confermata dalla maggioranza dei nodi; altrimenti, la transazione è annullata e viene eseguito il roll back.
Indici e query Le query sono espresse in LINQ o con un linguaggio di query personalizzato chiamato RQL (acronimo di Raven Query Language) che ha una sintassi simile a SQL.
Indici dinamici – in RavenDB le query possono essere soddisfatte solo da un indice; se non esiste un indice appropriato, un nuovo indice viene creato per soddisfare la query.Kaur, Harpreet, and Kamal Jeet Kaur. "A Review: Study of Document oriented databases and their Security." International Journal of Advanced Research in Computer Science 4.8 (2013). Graph Query – documenti in relazione tra loro possono essere trattati come vertici in un grafo, e le relazioni come collegamenti. Questo consente di creare query recorsive. Proiezioni – gli indici possono essere configurati in modo da trasformare i dati indicizzati, eseguire calcoli, eseguire aggregazioni ed eseguire codice JavaScript lato del server. Ricerca full-text – a basso livello, i dati sono indicizzati tramite Lucene.net, questo comporta che gli indici supportano ricerche full-text.Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.
Estensioni del documento I documenti possono essere estesi con altri tipi di dati meno adatti a JSON. Queste estensioni possono essere lette, modificate e memorizzate indipendentemente dal documento stesso.
Allegati – i documenti possono avere più allegati con qualsiasi tipo formato, come immagini, audio, o binario puro. Serie temporali – Dati numerici associati con tempi specifici e ordinati in ordine cronologico.
RavenDB Cloud RavenDB Cloud è un database distribuito-as-a-service, lanciato nel 2019 su AWS, Azure e Google Compute Platform (GCP). Il servizio esegue attività amministrative come la manutenzione dell’hardware e gestisce la sicurezza per gli utenti. Garantisce la condivisione delle CPU fra i diversi nodi in un cluster per evitare throttling.
Licenza RavenDB è open source sotto licenza di AGPL v3.0. È disponibile con una licenza gratuita e una licenza commerciale.
Note
Voci correlate Database management system JavaScript JSON NoSQL Big data
Collegamenti esterni
Categoria:DBMS orientati al documento