Base di dati orientata al documento: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Sintassi e rimozione stub
m Implementazioni: sistemazione fonti, smistamento lavoro sporco e fix vari
 
(30 versioni intermedie di 18 utenti non mostrate)
Riga 1:
{{F|informatica|giugno 2024}}
Una '''Base di dati orientata al documento''' è un programma per applicazioni orientate al documento. Questi sistemi potrebbero essere implementati come strato sopra un database relazionale o a oggetti.
 
Una '''Basebase di dati orientata al documento''' è un [[programma (informatica)|programma]] per [[applicazione (informatica)|applicazioni]] orientate al documento. Questi sistemi potrebbero essere implementati come strato sopra un [[database relazionale]] o a [[database ad oggetti|oggetti]].
Le Base di dati orientata al documento non memorizzano i dati in tabelle con campi uniformi per ogni record come nei database relazionali ma ogni record è memorizzato come un documento che possiede determinate caratteristiche.
 
Qualsiasi numero di campi con qualsiasi lunghezza può essere aggiunto al documento.
Le Basebasi di dati orientataorientate al documento non memorizzano i dati in tabelle con campi uniformi per ogni [[record (database)|record]] come nei database relazionali, ma ogni record è memorizzato come un documento che possiede determinate caratteristiche. Qualsiasi numero di campi con qualsiasi lunghezza può essere aggiunto al documento. I campi possono anche contenere pezzi multipli di dati.
I campi possono anche contenere pezzi multipli di dati.
 
== Documenti ==
Il concetto fondamentale è quello di ''Documento''. Ogni implementazione differisce nei dettagli della definizione di documento, ma comunque in generale si assume che siano incapsulati e codificati i dati o le informazioni in base ad uno [[Norma tecnica|standard]]. Le codifiche più comuni sono [[XML]], [[YAML]], [[JSON]], e [[BSON]] così come formati binari tipo [[PDF]] o [[Microsoft Office]].
 
I documenti all'interno della base di dati sono simili ai record dei database relazionali, ma sono meno rigidi. Non è richiesta l'adesione ad uno schema standard. Un esempio di documento:
 
{
Riga 25:
{Nome:"Luigi", Eta:2}
]
}
 
I documenti negli esempi hanno similitudini e differentedifferenze. Diversamente da un database relazionale, in cui in ogni record ci sono gli stessi attributi ed i campi inutilizzati rimangono vuoti, non ci sono campi vuoti in nessun documento. Questo sistema consente di aggiungere nuove informazioni e non richiede che vengano indicati i campi vuoti.
Questo sistema consente di aggiungere nuove informazioni e non richiede che vengano indicati i campi vuoti.
 
=== Chiavi ===
I documenti sono indirizzati all'interno del database mediante ''key'' univoche. Spesso la [[chiave di database|chiave]] è una semplice [[stringa (informatica)|stringa]], in alcuni casi è un [[Uniform Resource Identifier|URI]] o una path. Solitamente il database mantiene un indice delle chiavi per consentire un recupero veloce del documento.
 
=== Recupero ===
Una delle caratteristiche particolari di un database orientato ai documenti è che, oltre alla semplice ricerca del documento per chiave, il database offre anche [[Application programming interface|API]] (o un semplice linguaggio di [[query]]) che permette il recupero in base al contenuto. Questo, ad esempio, consente di recuperare documenti basandosi sul valore di un determinato campo. Il set di API (o il linguaggio di interrogazione) così come le performance variano in maniera significativa a seconda dell'[[implementazione]].
Il set di API (o il linguaggio di interrogazione) così come le performance variano in maniera significativa a seconda dell'implementazione.
 
== Implementazioni ==
Tutti i [[database XML]] sono database orientati al documento. Alcuni esempi:
* [[Lotus Notes]] (IBM)
* [[askSam]] (askSam Systems)<ref>[{{Cita web |url=http://dlist.sir.arizona.edu/2234/01/sofrev10/sofrev10.html |titolo=DLIST - The University of Arizona Campus Repository<!-- Titolo generato automaticamente -->] |accesso=4 giugno 2010 |urlarchivio=https://web.archive.org/web/20091001174207/http://dlist.sir.arizona.edu/2234/01/sofrev10/sofrev10.html |urlmorto=sì }}</ref>
* Apstrata<ref>{{cita web | url = http://www.apstrata.com/ | titolo = Apstrata | accesso = 4 giugno 2010 | urlarchivio = https://web.archive.org/web/20100130110031/http://www.apstrata.com/ | urlmorto = sì }}</ref>
* [http://www.apstrata.com/ Apstrata]
* [[Datawasp]] (Significant Data Systems)
* [[SimpleDB]] (Amazon.com)
* [[CRX]] (Day Software)
* [[MUMPS]] Database<ref>[{{cita web|url=http://gradvs1.mgateway.com/download/extreme1.pdf |titolo=Extreme Database programming with MUMPS Globals]|accesso=4 giugno 2010|urlarchivio=https://web.archive.org/web/20160706033008/http://gradvs1.mgateway.com/download/extreme1.pdf|urlmorto=sì}}</ref>
* [[UniVerse]] (Rocket Software)
* [[UniData]] (Rocket Software)
 
Implementazioni Open source:
 
* [[Apache Jackrabbit]] ([[Apache License]])
* [[BaseX]], base di dati XML ([[Licenze BSD]])
* [[CouchDB|Apache CouchDB]] ([[Software release life cycle#Beta|Beta software]]), ([[Apache License]])
* [FleetDB<ref>{{cita testo|url=https://web.archive.org/web/20140920195555/http://www.fleetdb.org/ |titolo=FleetDB]}}</ref> una base di dati senza schema implementato in Clojure e ottimizzato per uno sviluppo agile. ([[Licenza MIT]])
* [[MongoDB]] - database orientato al documento. ([[Affero General Public License|GNU AGPL v3.0]] <ref>[http{{cita testo|url=https://www.mongodb.org/display/DOCS/Licensing |titolo=Licensing - MongoDB<!-- Titolo generato automaticamente -->]}}</ref>)
* [httpOrientDB<ref>{{cita testo|url=https://www.orientechnologiesorientdb.com org/|titolo=OrientDB]}}</ref> - Database orientato al documento, ma con una gestione ottimizzata delle relazioni fra documenti come avviene in un database a grafo. Open source con licenza commercial friendly ([[Apache License]])
* [[RavenDB]] - Transazionale [[.NET Framework|.NET]] basato su database a documento [[REST|RESTful]]ful.<ref name="RavenDB">[http{{Cita web |url=https://ravendb.net/ |titolo=RavenDB - 2nd generation document database<!-- Titolo generato automaticamente -->] |accesso=29 aprile 2019 |urlarchivio=https://web.archive.org/web/20190406183440/https://ravendb.net/ |urlmorto=sì }}</ref> (commercial o [[Affero General Public License|GNU AGPL v3.0]])
* [Riak<ref>{{cita testo|url=https://web.archive.org/web/20100317144345/http://riak.basho.com/ |titolo=Riak]}}</ref> - Decentralizzato, tolleranza all'errore, datastore di documenti scalabile orizzontalmente ([[Apache License]])
* [[Redis (data store)|Redis]] - Key-value store with support for lists and sets ([[BSD License]])
* [[ThruDB]] ( [[Licenza BSD]])
* [http://riak.basho.com/ Riak] - Decentralizzato, tolleranza all'errore, datastore di documenti scalabile orizzontalmente ([[Apache License]])
* [Persevere<ref>{{cita testo|url=http://persvr.org/ |titolo=Persevere]|urlarchivio=https://web.archive.org/web/20110824075949/http://persvr.org/Page/Persevere }}</ref> è un database [[JSON]] e un [[JavaScript Application Server]]. Fornisce un'interfaccia [[RESTful]] JSON per l'accesoaccesso alla creazione, lettura, aggiornamento e cancellazione dei dati. Supporta anche le interrogazioni JSONQuery/JSONPath.
* [[ThruDB]] ( [[Licenza BSD]])
* [DBSlayer<ref>{{cita testo|url=https://web.archive.org/web/20110319214209/http://code.nytimes.com/projects/dbslayer /|titolo=DBSlayer]}}</ref> è un leggero [[database abstraction layer]] (su [[MySQL]]) che può parlare ai client via JSON su HTTP usato dal [[New York Times]].
* [http://persvr.org/ Persevere] è un database [[JSON]] e un [[JavaScript Application Server]]. Fornisce un'interfaccia [[RESTful]] JSON per l'acceso alla creazione, lettura, aggiornamento e cancellazione dei dati. Supporta anche le interrogazioni JSONQuery/JSONPath.
* [http://code.nytimes.com/projects/dbslayer DBSlayer] è un leggero [[database abstraction layer]] (su [[MySQL]]) che può parlare ai client via JSON su HTTP usato dal [[New York Times]].
 
== Note ==
 
<references/>
 
== Voci correlate ==
*[[Base di dati XML]]
*[[Base di dati in tempo reale]]
*[[Internet Message Access Protocol]]
 
{{Portale|informatica}}
 
[[Categoria:DatabaseDBMS orientati al documento| ]]