| RavenDB software | |
|---|---|
| Sviluppatore | Hibernating Rhinos |
| Data prima versione | Maggio 2010 |
| Ultima versione | 5.0 (Luglio 2020) |
| Sistema operativo | Microsoft Windows |
| Linguaggio | C++ |
| Licenza | AGPL v3.0 (licenza libera) |
| Sito web | ravendb.net hibernatingrhinos.com |
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.
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.
| Versione | Data | Funzionalità aggiunte (elenco parziale) | Supportato? |
|---|---|---|---|
| 1.0 | Maggio 2010 | No | |
| 2.0 | Gennaio 2013 | Replica | No |
| 2.5 | Giugno 2013 | Proiezioni; Query basate su facet | No |
| 3.0 | Novembre 2014 | Java API; Motore di persistenza Voron | No |
| 3.5 | Ottobre 2016 | Clustering | Sì |
| 4.0 | Febbraio 2018 | Supporto multi piattaforma; disponibile con una licenza gratuita | No |
| 4.1 | Agosto 2018 | No | |
| 4.2 | Maggio 2019 | Supporto per le Graph query | Sì |
| 5.0 | Luglio 2020 | Serie temporali; Compressione dei dati usando l’algoritmo zstd | Sì |
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.
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.
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.
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.
RavenDB è open source sotto licenza di AGPL v3.0. È disponibile con una licenza gratuita e una licenza commerciale.