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
SviluppatoreHibernating Rhinos[1]
Data prima versioneMaggio 2010[2]
Ultima versione5.0[3][2] (Luglio 2020)
Sistema operativoMicrosoft Windows[4][5]
LinguaggioC++
LicenzaAGPL v3.0
(licenza libera)
Sito webravendb.net
hibernatingrhinos.com

Originariamente 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

modifica
Versione 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]
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]
5.0 Luglio 2020[3] Serie temporali[32]; Compressione dei dati usando l’algoritmo zstd[33]

Architettura del sistema

modifica

I 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

modifica

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.[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

modifica

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.[23]

  • Allegati – i documenti possono avere più allegati con qualsiasi tipo formato, come immagini, audio, o binario puro.[4]
  • Serie temporali – Dati numerici associati con tempi specifici e ordinati in ordine cronologico.[33][32]

RavenDB Cloud

modifica

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.[18][19][20][42]

Licenza

modifica

RavenDB è open source sotto licenza di AGPL v3.0.[6] È disponibile con una licenza gratuita e una licenza commerciale.

  1. ^ a b c Other Vendors to Consider for Operational DBMSs, su www.gartner.com, 2018. URL consultato il 4 gennaio 2021.
  2. ^ a b c RavenDB goes live!, su ayende.com, 2010. URL consultato il 4 gennaio 2021.
  3. ^ a b RavenDB 5.0 has been released, su ravendb.net, 2020. URL consultato il 4 gennaio 2021.
  4. ^ 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).
  5. ^ 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.
  6. ^ a b c d e f g h i j k l m RavenDB, su Databases of Databases. URL consultato il 4 gennaio 2021.
  7. ^ a b c d Raven, a Document Database for .NET, su www.infoq.com, 2010. URL consultato il 4 gennaio 2021.
  8. ^ a b c d e f g RavenDB System Properties, su db-engines.com. URL consultato il 4 gennaio 2021.
  9. ^ 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).
  10. ^ 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.
  11. ^ a b Hidden Windows Gems: Extensible Storage Engine, su ayende.com, 2008. URL consultato il 4 gennaio 2021.
  12. ^ Hibernating Rhino, su hibernatingrhinos.com. URL consultato il 4 gennaio 2021.
  13. ^ 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).
  14. ^ 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.
  15. ^ a b Why Raven DB?, su dzone.com, 2010. URL consultato il 4 gennaio 2021.
  16. ^ a b RavenDB vs SQL Server, su www.integrace.nl, 2012. URL consultato il 4 gennaio 2021.
  17. ^ Managed RavenDB Cloud Hosting, su cloud.ravendb.net. URL consultato il 4 gennaio 2021.
  18. ^ a b c d e RavenDB Launches Managed Cloud Service, su www.datanami.com, 2019. URL consultato il 4 gennaio 2021.
  19. ^ 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.
  20. ^ 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.
  21. ^ RavenDB 2.0 RTM, su ayende.com, 2013. URL consultato il 4 gennaio 2021.
  22. ^ a b c d e f RavenDB [collegamento interrotto], su learning.oreilly.com. URL consultato il 4 gennaio 2021.
  23. ^ 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).
  24. ^ RavenDB 2.5 Release Candidate is out, su ayende.com, 2013. URL consultato il 4 gennaio 2021.
  25. ^ RavenDB 3.0 RTM, su ayende.com, 2014. URL consultato il 4 gennaio 2021.
  26. ^ a b NoSQL for .NET: RavenDB 3.0 Takes Flight, su visualstudiomagazine.com, 2014. URL consultato il 4 gennaio 2021.
  27. ^ a b NoSQL: RavenDB 3.0 erhält weitere Storage Engine, su www.heise.de, 2014. URL consultato il 4 gennaio 2021.
  28. ^ a b RavenDB 3.5 RTM released, su ayende.com, 2016. URL consultato il 4 gennaio 2021.
  29. ^ RavenDB 4.0 is out, su ayende.com, 2018. URL consultato il 4 gennaio 2021.
  30. ^ a b RavenDB 4.1 Release Candidate is out, su ayende.com, 2018. URL consultato il 4 gennaio 2021.
  31. ^ RavenDB 4.2 has been released, su ayende.com, 2019. URL consultato il 4 gennaio 2021.
  32. ^ a b RavenDB Adds Time Series Query Support, su i-programmer.info. URL consultato il 4 gennaio 2021.
  33. ^ a b RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing, su infoq.com, 2020. URL consultato il 4 gennaio 2021.
  34. ^ The Design of RavenDB 4.0: The Implications of the Blittable Format, su dzone.com, 2016. URL consultato il 4 gennaio 2021.
  35. ^ Review: NoSQL database RavenDB, su techgenix.com, 2019. URL consultato il 4 gennaio 2021.
  36. ^ RavenDB Adds Graph Queries, su www.datanami.com, 2019. URL consultato il 4 gennaio 2021.
  37. ^ 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.
  38. ^ Graph API, su ravendb.net. URL consultato il 4 gennaio 2021.
  39. ^ Data Modeling with Indexes in RavenDB, su www.codeproject.com, 2019. URL consultato il 4 gennaio 2021.
  40. ^ Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.
  41. ^ Data Points - What the Heck Are Document Databases?, su docs.microsoft.com, 2011. URL consultato il 4 gennaio 2021.
  42. ^ 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

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica