RavenDB: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Atarubot (discussione | contributi)
template cita "xxxx"; rinomina/fix nomi parametri; converto template cite xxx -> cita xxx; fix formato data
Riga 8:
|Sviluppatore = Hibernating Rhinos<ref name=":22"/>
|DataPrimaVersione = Maggio 2010<ref name=":9"/>
|UltimaVersione = 5.0<ref name=":42">{{citeCita news|url= https://ravendb.net/articles/ravendb-5-0-has-been-released |websitesito=ravendb.net |titletitolo=RavenDB 5.0 has been released |datedata=2020 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
|NotaUltimaVersione = <ref name=":9">{{citeCita news|url=https://ayende.com/blog/4507/ravendb-goes-live |websitesito=ayende.com |titletitolo=RavenDB goes live! |datedata=2010 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
|DataUltimaVersione = Luglio 2020
|UltimaVersioneBeta =
Riga 32:
}}
 
'''RavenDB''' è un database orientato ai documenti completamente [[ACID]] e open-source; scritto in [[C sharp|C#]] e sviluppato da Hibernating Rhinos Ltd.<ref name=":1">{{citeCita news|url=https://dbdb.io/ |websitesito=Databases of Databases |titletitolo=RavenDB |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":7"/><ref name=":17"/><ref name=":22"/><ref name=":39"/> È 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.<ref name=":1"/><ref name=":17"/>
 
== Storia ==
Originariamente chiamato “Rhino DivanDB”<ref name=":1"/><ref name=":2">{{citeCita news|url=https://blogs.msdn.microsoft.com/laurionb/2008/12/23/ayendes-divandb-also-is-esent-the-most-widely-used-database-engine/ |websitesito=blogs.msdn.microsoft.com |titletitolo=Ayende's DivanDB (also, is esent the most widely used database engine?) |datedata=2008 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>, RavenDB inizia come un progetto di Oren Eini (alias Ayende Rahien) nel 2008<ref name=":18"/> ed è sviluppato da Hibernating Rhinos Ltd.<ref name=":22">{{citeCita news|url=https://www.gartner.com/en/documents/3892294/other-vendors-to-consider-for-operational-dbmss |websitesito=www.gartner.com |titletitolo=Other Vendors to Consider for Operational DBMSs |datedata=2018 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":24">{{citeCita news|url=https://hibernatingrhinos.com/ |websitesito=hibernatingrhinos.com |titletitolo=Hibernating Rhino |access-dateaccesso=4 gennaio 2021-01-04}}</ref> La società sostiene che è stato il primo database orientato ai documenti ad essere eseguito in modo nativo col framework [[.NET]].<ref name=":3">{{citeCita news|url=https://www.whoishostingthis.com/resources/ravendb/ |websitesito=www.whoishostingthis.com |titletitolo=RavenDB Development: Finally, A Solid Document-based Database for Windows? |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":4">{{citeCita news|url=https://docs.microsoft.com/en-us/archive/msdn-magazine/2011/november/nosql-document-database-embedding-ravendb-into-an-asp-net-mvc-3-application |websitesito=docs.microsoft.com |titletitolo=NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application |datedata=2011 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":7"/><ref name=":20">{{citeCita news|url=https://dzone.com/articles/why-raven-db |websitesito=dzone.com |titletitolo=Why Raven DB? |datedata=2010 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> È stato uno fra i primi database orientati ai documenti a fornire garanzie di tipo ACID.<ref name=":17"/><ref name=":20"/><ref name=":21">{{citeCita news|url=https://www.integrace.nl/nl/News/307/RavenDB |websitesito=www.integrace.nl |titletitolo=RavenDB vs SQL Server |datedata=2012 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
 
Nel 2019 Hibernating Rhinos ha cominciato ad offrire RavenDB come un servizio cloud chiamato RavenDB Cloud.<ref name=":23">{{citeCita news|url=https://cloud.ravendb.net/ |websitesito=cloud.ravendb.net |titletitolo=Managed RavenDB Cloud Hosting |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":27">{{citeCita news|url=https://www.datanami.com/2019/07/02/ravendb-launches-managed-cloud-service/ |websitesito=www.datanami.com |titletitolo=RavenDB Launches Managed Cloud Service |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":28">{{citeCita news|url=https://sdtimes.com/goog/sd-times-news-digest-google-robots-text-parser-open-sourced-bonitasofts-cloud-and-low-code-capabilities-and-owasp-zap-2-8/ |websitesito=sdtimes.com |titletitolo=SD Times news digest: Google robots.text parser open sourced, Bonitasoft’s cloud and low-code capabilities, and OWASP ZAP 2.8 |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":29">{{citeCita news|url=https://it.toolbox.com/blogs/shrutiumathe/ravendb-adds-new-enhancements-to-its-cloud-based-database-service-ensuring-high-availability-in-cloud-110419 |websitesito=it.toolbox.com |titletitolo=New capabilities in database infrastructure service ensure high availability in Cloud-only scenarios |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
 
== Storia delle versioni ==
Riga 45:
| 1.0 || Maggio 2010<ref name=":9"/> || || {{Not}}
|-
| 2.0 || Gennaio 2013<ref name=":10">{{citeCita news|url=https://ayende.com/blog/160642/ravendb-2-0-rtm |websitesito=ayende.com |titletitolo=RavenDB 2.0 RTM |datedata=2013 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || Replica<ref name=":31">{{citeCita news|url=https://learning.oreilly.com/library/view/ravendb-2x-beginners/9781783283798/ch01s04.html |websitesito=learning.oreilly.com |titletitolo=RavenDB |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":32">{{citeCita news|url=https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html |websitesito=learning.oreilly.com |titletitolo=A document database for the .NET platform |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || {{Not}}
|-
| 2.5 || Giugno 2013<ref name=":11">{{citeCita news|url=https://ayende.com/blog/162498/ravendb-2-5-release-candidate-is-out |websitesito=ayende.com |titletitolo=RavenDB 2.5 Release Candidate is out |datedata=2013 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || Proiezioni; Query basate su facet<ref name=":31"/> || {{Not}}
|-
| 3.0 || Novembre 2014<ref name=":12">{{citeCita news|url=https://ayende.com/blog/169313/ravendb-3-0-rtm |websitesito=ayende.com |titletitolo=RavenDB 3.0 RTM |datedata=2014 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || Java API; Motore di persistenza Voron<ref name=":5"/><ref name=":6"/> || {{Not}}
|-
| 3.5 || Ottobre 2016<ref name=":13">{{citeCita news|url=https://ayende.com/blog/175937/ravendb-3-5-rtm-released |websitesito=ayende.com |titletitolo=RavenDB 3.5 RTM released |datedata=2016 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || Clustering<ref name=":13"/> || {{Sit}}
|-
| 4.0 || Febbraio 2018<ref name=":14">{{citeCita news|url=https://ayende.com/blog/181857-A/ravendb-4-0-is-out |websitesito=ayende.com |titletitolo=RavenDB 4.0 is out |datedata=2018 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || Supporto multi piattaforma; disponibile con una licenza gratuita<ref name=":26">{{citeCita news|url=https://www.heise.de/developer/meldung/NoSQL-RavenDB-4-0-jetzt-fuer-Windows-Linux-macOS-und-Docker-verfuegbar-3971913.html |websitesito=www.heise.de |titletitolo=NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar |datedata=2018 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || {{Not}}
|-
| 4.1 || Agosto 2018<ref name=":15">{{citeCita news|url=https://ayende.com/blog/184194-A/ravendb-4-1-release-candidate-is-out |websitesito=ayende.com |titletitolo=RavenDB 4.1 Release Candidate is out |datedata=2018 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || <ref name=":27"/><ref name=":15"/> || {{Not}}
|-
| 4.2 || Maggio 2019<ref name=":16">{{citeCita news|url=https://ayende.com/blog/187361-A/ravendb-4-2-has-been-released |websitesito=ayende.com |titletitolo=RavenDB 4.2 has been released |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref> || Supporto per le Graph query<ref name=":27"/> || {{Sit}}
|-
| 5.0 || Luglio 2020<ref name=":42"/> || Serie temporali<ref name=":44"/>; Compressione dei dati usando l’algoritmo Zstd<ref name=":43"/> || {{Sit}}
Riga 63:
 
== Architettura del sistema ==
I dati sono memorizzati come documenti senza schema in formato [[JSON]].<ref name=":1"/><ref name=":2"/><ref name=":7"/><ref name=":31"/><ref name=":32"/><ref name=":39"/> A livello di archiviazione, i documenti sono scritti in un formato binario chiamato “blittable”.<ref name=":33">{{citeCita news|url=https://dzone.com/articles/the-design-of-ravendb-40-the-implications-of-the-b |websitesito=dzone.com |titletitolo=The Design of RavenDB 4.0: The Implications of the Blittable Format |datedata=2016|access-dateaccesso=4 gennaio 2021-01-04}}</ref> I documenti sono raggruppati in collection, ogni documento appartiene solo ed unicamente a una collection.<ref name=":31"/><ref name=":32"/>
 
I database possono essere distribuiti su un cluster di server (chiamati ‘nodi’) usando replica multi-master.<ref name=":1"/><ref name=":17">{{citeCita news|url=https://db-engines.com/en/system/RavenDB |websitesito=db-engines.com |titletitolo=RavenDB System Properties |access-dateaccesso=4 gennaio 2021-01-04}}</ref> Alcune operazioni a livello di cluster richiedono il consenso della maggioranza dei nodi, il consenso è determinato usando un’implementazione dell’algoritmo Raft chiamata Rachis.<ref name=":1"/> Le attività sono distribuite ai diversi nodi in modo bilanciato.<ref name=":1"/><ref name=":34">{{citeCita news|url=http://techgenix.com/review-nosql-database-ravendb/ |websitesito=techgenix.com |titletitolo=Review: NoSQL database RavenDB |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
 
Originariamente RavenDB usava il motore di archiviazione Esent.<ref name=":2"/><ref name=":18">{{citeCita news|url=https://ayende.com/blog/3769/hidden-windows-gems-extensible-storage-engine |websitesito=ayende.com |titletitolo=Hidden Windows Gems: Extensible Storage Engine |datedata=2008 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":32"/> Nella Versione 3.0 è stato sostituito con un nuovo motore di archiviazione, open source, chiamato Voron.<ref name=":5">{{citeCita news|url=https://visualstudiomagazine.com/articles/2014/12/02/ravendb-3-for-dotnet.aspx |websitesito=visualstudiomagazine.com |titletitolo=NoSQL for .NET: RavenDB 3.0 Takes Flight |datedata=2014 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":6">{{citeCita news|url=https://www.heise.de/developer/meldung/NoSQL-RavenDB-3-0-erhaelt-weitere-Storage-Engine-2480210.html |websitesito=www.heise.de |titletitolo=NoSQL: RavenDB 3.0 erhält weitere Storage Engine |datedata=2014 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
 
Il database client è disponibile per [[C Sharp|C#]], [[C++]], [[Java (linguaggio di programmazione)|Java]], [[Node.js]], [[Python]], [[Ruby]] e [[Go]].<ref name=":17"/>
Riga 75:
 
== 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]].<ref name=":1"/><ref name=":7">{{citeCita news|url=https://www.infoq.com/news/2010/05/Raven/ |websitesito=www.infoq.com |titletitolo=Raven, a Document Database for .NET |datedata=2010 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":17"/>
 
* '''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.<ref name=":1"/><ref name=":4"/><ref name=":25">{{citeCita news|url=https://ciostory.com/technology/ravendb-driving-dx-through-db-infrastructure-management/ |websitesito=ciostory.com |titletitolo=RavenDB: Driving DX through DB infrastructure management |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":31"/><ref name=":32"/><ref name=":39">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).</ref>
* '''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.<ref name=":35">{{citeCita news|url=https://www.datanami.com/2019/05/15/ravendb-adds-graph-queries/ |websitesito=www.datanami.com |titletitolo=RavenDB Adds Graph Queries |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":36">{{citeCita news|url=https://sdtimes.com/softwaredev/sd-times-news-digest-new-relic-one-whitesource-for-developers-ravendb4-2-and-vmware-acquisition-of-bitnami/ |websitesito=sdtimes.com |titletitolo=SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware’s acquisition of Bitnami |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":37">{{citeCita news|url=https://ravendb.net/features/querying/graph-api |websitesito=ravendb.net |titletitolo=Graph API |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
* '''Proiezioni''' – gli indici possono essere configurati in modo da trasformare i dati indicizzati, eseguire calcoli, eseguire aggregazioni ed eseguire codice [[JavaScript]] lato del server.<ref name=":1"/><ref name=":17"/><ref name=":38">{{citeCita news|url=https://www.codeproject.com/Articles/1348454/Data-Modeling-with-Indexes-in-RavenDB |websitesito=www.codeproject.com |titletitolo=Data Modeling with Indexes in RavenDB |datedata=2019 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
* '''Ricerca full-text''' – a basso livello, i dati sono indicizzati tramite Lucene.net, questo comporta che gli indici supportano ricerche full-text.<ref name=":1"/><ref name=":21"/><ref name=":31"/><ref name=":32"/><ref name=":40">Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." ''Online Journal of Applied Knowledge Management'' (''OJAKM'') 1.2 (2013): 105-115.</ref><ref name=":41">{{citeCita news|url=https://docs.microsoft.com/en-us/archive/msdn-magazine/2011/november/data-points-what-the-heck-are-document-databases |websitesito=docs.microsoft.com |titletitolo=Data Points - What the Heck Are Document Databases? |datedata=2011 |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
 
== 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.<ref name=":8">{{citeCita news|url=https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html |websitesito=learning.oreilly.com |titletitolo=A document database for the .NET platform |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
 
* '''Allegati''' – i documenti possono avere più allegati con qualsiasi tipo formato, come immagini, audio, o binario puro.<ref name=":25"/>
* '''Serie temporali''' – Dati numerici associati con tempi specifici e ordinati in ordine cronologico.<ref name=":43">{{citeCita news|url=https://www.infoq.com/news/2020/08/ravendb-5-release-document-db/ |websitesito=infoq.com |titletitolo=RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing |datedata=2020 |access-dateaccesso=4 gennaio 2021-01-04}}</ref><ref name=":44">{{citeCita news|url= https://www.i-programmer.info/news/84-database/13846-ravendb-adds-time-series-query-support.html |websitesito=i-programmer.info |titletitolo=RavenDB Adds Time Series Query Support |datedata= |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
 
== RavenDB Cloud ==
RavenDB Cloud è un database distribuito-as-a-service, lanciato nel 2019 su [[Amazon Web Services|AWS]], [[Microsoft Azure|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.<ref name=":27"/><ref name=":28"/><ref name=":29"/><ref name=":30">{{citeCita news|url=https://bigdata-madesimple.com/interview-with-oren-eini-of-ravendb-on-database-management-analytics-security/ |websitesito=bigdata-madesimple.com |titletitolo=RavenDB Adds New Enhancements to Its Cloud-Based Database Service |access-dateaccesso=4 gennaio 2021-01-04}}</ref>
 
== Licenza ==