RavenDB
RavenDB è un database orientato ai documenti completamente ACID e open-source; scritto in C# e sviluppato da Hibernating Rhinos Ltd.[6][7][8][1][9] È 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.[6][8]
RavenDB software | |
---|---|
Sviluppatore | Hibernating Rhinos[1] |
Data prima versione | Maggio 2010[2] |
Ultima versione | 5.0[3][2] (Luglio 2020) |
Sistema operativo | Microsoft Windows[4][5] |
Linguaggio | C++ |
Licenza | AGPL v3.0 (licenza libera) |
Sito web | ravendb.net hibernatingrhinos.com |
Storia
modificaOriginariamente chiamato “Rhino DivanDB”[6][10], RavenDB inizia come un progetto di Oren Eini (alias Ayende Rahien) nel 2008[11] ed è sviluppato da Hibernating Rhinos Ltd.[1][12] La società sostiene che è stato il primo database orientato ai documenti ad essere eseguito in modo nativo col framework .NET.[13][14][7][15] È stato uno fra i primi database orientati ai documenti a fornire garanzie di tipo ACID.[8][15][16]
Nel 2019 Hibernating Rhinos ha cominciato ad offrire RavenDB come un servizio cloud chiamato RavenDB Cloud.[17][18][19][20]
Storia delle versioni
modificaVersione | Data | Funzionalità aggiunte (elenco parziale) | Supportato? |
---|---|---|---|
1.0 | Maggio 2010[2] | No | |
2.0 | Gennaio 2013[21] | Replica[22][23] | No |
2.5 | Giugno 2013[24] | Proiezioni; Query basate su facet[22] | No |
3.0 | Novembre 2014[25] | Java API; Motore di persistenza Voron[26][27] | No |
3.5 | Ottobre 2016[28] | Clustering[28] | Sì |
4.0 | Febbraio 2018[29] | Supporto multi piattaforma; disponibile con una licenza gratuita[5] | No |
4.1 | Agosto 2018[30] | [18][30] | No |
4.2 | Maggio 2019[31] | Supporto per le Graph query[18] | Sì |
5.0 | Luglio 2020[3] | Serie temporali[32]; Compressione dei dati usando l’algoritmo zstd[33] | Sì |
Architettura del sistema
modificaI dati sono memorizzati come documenti senza schema in formato JSON.[6][10][7][22][23][9] A livello di archiviazione, i documenti sono scritti in un formato binario chiamato “blittable”.[34] I documenti sono raggruppati in collection, ogni documento appartiene solo ed unicamente a una collection.[22][23]
I database possono essere distribuiti su un cluster di server (chiamati ‘nodi’) usando replica multi-master.[6][8] Alcune operazioni a livello di cluster richiedono il consenso della maggioranza dei nodi, il consenso è determinato usando un’implementazione dell’algoritmo Raft chiamata Rachis.[6] Le attività sono distribuite ai diversi nodi in modo bilanciato.[6][35]
Originariamente RavenDB usava il motore di archiviazione Esent.[10][11][23] Nella Versione 3.0 è stato sostituito con un nuovo motore di archiviazione, open source, chiamato Voron.[26][27]
Il database client è disponibile per C#, C++, Java, Node.js, Python, Ruby e Go.[8]
Caratteristiche principali
modifica- 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.[6][18]
Indici e query
modificaLe 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.[6][7][8]
- 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.[6][14][4][22][23][9]
- 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.[36][37][38]
- Proiezioni – gli indici possono essere configurati in modo da trasformare i dati indicizzati, eseguire calcoli, eseguire aggregazioni ed eseguire codice JavaScript lato del server.[6][8][39]
- Ricerca full-text – a basso livello, i dati sono indicizzati tramite Lucene.net, questo comporta che gli indici supportano ricerche full-text.[6][16][22][23][40][41]
Estensioni del documento
modificaI 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.[23]
RavenDB Cloud
modificaRavenDB 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.[18][19][20][42]
Licenza
modificaRavenDB è open source sotto licenza di AGPL v3.0.[6] È disponibile con una licenza gratuita e una licenza commerciale.
Note
modifica- ^ a b c Other Vendors to Consider for Operational DBMSs, su www.gartner.com, 2018. URL consultato il 4 gennaio 2021.
- ^ a b c RavenDB goes live!, su ayende.com, 2010. URL consultato il 4 gennaio 2021.
- ^ a b RavenDB 5.0 has been released, su ravendb.net, 2020. URL consultato il 4 gennaio 2021.
- ^ a b c RavenDB: Driving DX through DB infrastructure management, su ciostory.com. URL consultato il 4 gennaio 2021 (archiviato dall'url originale l'11 ottobre 2020).
- ^ a b NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar, su www.heise.de, 2018. URL consultato il 4 gennaio 2021.
- ^ a b c d e f g h i j k l m RavenDB, su Databases of Databases. URL consultato il 4 gennaio 2021.
- ^ a b c d Raven, a Document Database for .NET, su www.infoq.com, 2010. URL consultato il 4 gennaio 2021.
- ^ a b c d e f g RavenDB System Properties, su db-engines.com. URL consultato il 4 gennaio 2021.
- ^ a b c 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).
- ^ a b c Ayende's DivanDB (also, is esent the most widely used database engine?), su blogs.msdn.microsoft.com, 2008. URL consultato il 4 gennaio 2021.
- ^ a b Hidden Windows Gems: Extensible Storage Engine, su ayende.com, 2008. URL consultato il 4 gennaio 2021.
- ^ Hibernating Rhino, su hibernatingrhinos.com. URL consultato il 4 gennaio 2021.
- ^ RavenDB Development: Finally, A Solid Document-based Database for Windows?, su www.whoishostingthis.com, 2019. URL consultato il 4 gennaio 2021 (archiviato dall'url originale l'8 ottobre 2020).
- ^ a b NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application, su docs.microsoft.com, 2011. URL consultato il 4 gennaio 2021.
- ^ a b Why Raven DB?, su dzone.com, 2010. URL consultato il 4 gennaio 2021.
- ^ a b RavenDB vs SQL Server, su www.integrace.nl, 2012. URL consultato il 4 gennaio 2021.
- ^ Managed RavenDB Cloud Hosting, su cloud.ravendb.net. URL consultato il 4 gennaio 2021.
- ^ a b c d e RavenDB Launches Managed Cloud Service, su www.datanami.com, 2019. URL consultato il 4 gennaio 2021.
- ^ a b SD Times news digest: Google robots.text parser open sourced, Bonitasoft’s cloud and low-code capabilities, and OWASP ZAP 2.8, su sdtimes.com, 2019. URL consultato il 4 gennaio 2021.
- ^ a b New capabilities in database infrastructure service ensure high availability in Cloud-only scenarios, su it.toolbox.com, 2019. URL consultato il 4 gennaio 2021.
- ^ RavenDB 2.0 RTM, su ayende.com, 2013. URL consultato il 4 gennaio 2021.
- ^ a b c d e f RavenDB [collegamento interrotto], su learning.oreilly.com. URL consultato il 4 gennaio 2021.
- ^ a b c d e f g A document database for the .NET platform, su learning.oreilly.com. URL consultato il 4 gennaio 2021 (archiviato dall'url originale il 2 novembre 2020).
- ^ RavenDB 2.5 Release Candidate is out, su ayende.com, 2013. URL consultato il 4 gennaio 2021.
- ^ RavenDB 3.0 RTM, su ayende.com, 2014. URL consultato il 4 gennaio 2021.
- ^ a b NoSQL for .NET: RavenDB 3.0 Takes Flight, su visualstudiomagazine.com, 2014. URL consultato il 4 gennaio 2021.
- ^ a b NoSQL: RavenDB 3.0 erhält weitere Storage Engine, su www.heise.de, 2014. URL consultato il 4 gennaio 2021.
- ^ a b RavenDB 3.5 RTM released, su ayende.com, 2016. URL consultato il 4 gennaio 2021.
- ^ RavenDB 4.0 is out, su ayende.com, 2018. URL consultato il 4 gennaio 2021.
- ^ a b RavenDB 4.1 Release Candidate is out, su ayende.com, 2018. URL consultato il 4 gennaio 2021.
- ^ RavenDB 4.2 has been released, su ayende.com, 2019. URL consultato il 4 gennaio 2021.
- ^ a b RavenDB Adds Time Series Query Support, su i-programmer.info. URL consultato il 4 gennaio 2021.
- ^ a b RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing, su infoq.com, 2020. URL consultato il 4 gennaio 2021.
- ^ The Design of RavenDB 4.0: The Implications of the Blittable Format, su dzone.com, 2016. URL consultato il 4 gennaio 2021.
- ^ Review: NoSQL database RavenDB, su techgenix.com, 2019. URL consultato il 4 gennaio 2021.
- ^ RavenDB Adds Graph Queries, su www.datanami.com, 2019. URL consultato il 4 gennaio 2021.
- ^ SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware’s acquisition of Bitnami, su sdtimes.com, 2019. URL consultato il 4 gennaio 2021.
- ^ Graph API, su ravendb.net. URL consultato il 4 gennaio 2021.
- ^ Data Modeling with Indexes in RavenDB, su www.codeproject.com, 2019. URL consultato il 4 gennaio 2021.
- ^ Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.
- ^ Data Points - What the Heck Are Document Databases?, su docs.microsoft.com, 2011. URL consultato il 4 gennaio 2021.
- ^ RavenDB Adds New Enhancements to Its Cloud-Based Database Service, su bigdata-madesimple.com. URL consultato il 4 gennaio 2021 (archiviato dall'url originale l'8 ottobre 2020).
Voci correlate
modificaCollegamenti esterni
modifica- Sito ufficiale, su ravendb.net.
- Repository sorgenti di RavenDB, su github.com.
- RavenDB Cloud
- Blog di Ayende