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] (2010) |
Sistema operativo | Microsoft Windows][4][5] |
Linguaggio | C++ |
Licenza | AGPL v3.0 (licenza libera) |
Sito web | ravendb.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] | 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 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]
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
- ^ a b c Other Vendors to Consider for Operational DBMSs, 2018.
- ^ a b c RavenDB goes live!, 2010.
- ^ a b RavenDB 5.0 has been released, 2020.
- ^ a b c RavenDB: Driving DX through DB infrastructure management.
- ^ a b NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar, 2018.
- ^ a b c d e f g h i j k l m RavenDB.
- ^ a b c d Raven, a Document Database for .NET, 2010.
- ^ a b c d e f g RavenDB System Properties.
- ^ 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?), 2008.
- ^ a b Hidden Windows Gems: Extensible Storage Engine, 2008.
- ^ Hibernating Rhino.
- ^ RavenDB Development: Finally, A Solid Document-based Database for Windows?, 2019.
- ^ a b NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application, 2011.
- ^ a b Why Raven DB?, 2010.
- ^ a b RavenDB vs SQL Server, 2012.
- ^ Managed RavenDB Cloud Hosting.
- ^ a b c d e RavenDB Launches Managed Cloud Service, 2019.
- ^ 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.
- ^ a b New capabilities in database infrastructure service ensure high availability in Cloud-only scenarios, 2019.
- ^ RavenDB 2.0 RTM, 2013.
- ^ a b c d e f RavenDB.
- ^ a b c d e f A document database for the .NET platform.
- ^ RavenDB 2.5 Release Candidate is out, 2013.
- ^ RavenDB 3.0 RTM, 2014.
- ^ a b NoSQL for .NET: RavenDB 3.0 Takes Flight, 2014.
- ^ a b NoSQL: RavenDB 3.0 erhält weitere Storage Engine, 2014.
- ^ a b RavenDB 3.5 RTM released, 2016.
- ^ RavenDB 4.0 is out, 2018.
- ^ a b RavenDB 4.1 Release Candidate is out, 2018.
- ^ RavenDB 4.2 has been released, 2019.
- ^ a b RavenDB Adds Time Series Query Support.
- ^ a b RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing, 2020.
- ^ The Design of RavenDB 4.0: The Implications of the Blittable Format, 2016.
- ^ Review: NoSQL database RavenDB, 2019.
- ^ RavenDB Adds Graph Queries, 2019.
- ^ SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware’s acquisition of Bitnami, 2019.
- ^ Graph API.
- ^ Data Modeling with Indexes in RavenDB, 2019.
- ^ 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?, 2011.
- ^ A document database for the .NET platform.
- ^ RavenDB Adds New Enhancements to Its Cloud-Based Database Service.
Voci correlate
Altri progetti
Collegamenti esterni
- Sito ufficiale, su ravendb.net.
- Repository sorgenti di RavenDB, su github.com.
- Sitio web oficial
- GitHub
- RavenDB Cloud
- Blog de Ayende