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

Historia

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]

Historial de versiones

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 sistemaa

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

  • 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

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

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

  • 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

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][43]

Licencia

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

Note

  1. ^ a b c Other Vendors to Consider for Operational DBMSs, 2018.
  2. ^ a b c RavenDB goes live!, 2010.
  3. ^ a b RavenDB 5.0 has been released, 2020.
  4. ^ a b c RavenDB: Driving DX through DB infrastructure management.
  5. ^ a b NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar, 2018.
  6. ^ a b c d e f g h i j k l m RavenDB.
  7. ^ a b c d Raven, a Document Database for .NET, 2010.
  8. ^ a b c d e f g RavenDB System Properties.
  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?), 2008.
  11. ^ a b Hidden Windows Gems: Extensible Storage Engine, 2008.
  12. ^ Hibernating Rhino.
  13. ^ RavenDB Development: Finally, A Solid Document-based Database for Windows?, 2019.
  14. ^ a b NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application, 2011.
  15. ^ a b Why Raven DB?, 2010.
  16. ^ a b RavenDB vs SQL Server, 2012.
  17. ^ Managed RavenDB Cloud Hosting.
  18. ^ a b c d e RavenDB Launches Managed Cloud Service, 2019.
  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, 2019.
  20. ^ a b New capabilities in database infrastructure service ensure high availability in Cloud-only scenarios, 2019.
  21. ^ RavenDB 2.0 RTM, 2013.
  22. ^ a b c d e f RavenDB.
  23. ^ a b c d e f A document database for the .NET platform.
  24. ^ RavenDB 2.5 Release Candidate is out, 2013.
  25. ^ RavenDB 3.0 RTM, 2014.
  26. ^ a b NoSQL for .NET: RavenDB 3.0 Takes Flight, 2014.
  27. ^ a b NoSQL: RavenDB 3.0 erhält weitere Storage Engine, 2014.
  28. ^ a b RavenDB 3.5 RTM released, 2016.
  29. ^ RavenDB 4.0 is out, 2018.
  30. ^ a b RavenDB 4.1 Release Candidate is out, 2018.
  31. ^ RavenDB 4.2 has been released, 2019.
  32. ^ a b RavenDB Adds Time Series Query Support.
  33. ^ a b RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing, 2020.
  34. ^ The Design of RavenDB 4.0: The Implications of the Blittable Format, 2016.
  35. ^ Review: NoSQL database RavenDB, 2019.
  36. ^ RavenDB Adds Graph Queries, 2019.
  37. ^ SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware’s acquisition of Bitnami, 2019.
  38. ^ Graph API.
  39. ^ Data Modeling with Indexes in RavenDB, 2019.
  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?, 2011.
  42. ^ A document database for the .NET platform.
  43. ^ RavenDB Adds New Enhancements to Its Cloud-Based Database Service.

Voci correlate

Altri progetti

Collegamenti esterni

  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero