Base di dati orientata al documento: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
m Implementazioni: sistemazione fonti, smistamento lavoro sporco e fix vari
 
(45 versioni intermedie di 30 utenti non mostrate)
Riga 1:
{{SF|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 relazione 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 relazionerelazionale]] 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 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:
 
{
Nome:"Mario",
Indirizzo:"Via Veneto 10",
Hobby:"Calcio"
}
 
Un altro esempio potrebbe essere questo:
 
{
Nome:"Luca",
Indirizzo:"Via del Popolo 20",
Figli:[
{Nome:"Annamaria", Eta:3},
{Nome:"Luigi", Eta:2}
]
}
 
I documenti negli esempi hanno similitudini e differenze. 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.
 
=== 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]].
 
== 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.
* [http://strokedb.com/ StrokeDB] ( [[Licenza MIT]])
* [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]].
* [[ThruDB]] ( [[Licenza BSD]])
* [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}}
== Collegamenti esterni ==
*{{en}} [http://www.cfoster.net/articles/xmldb-business-case XML Databases - The Business Case, Charles Foster, June 2008] - Parla dell'attuale stato delle basi di dati e dei dati persistenti, come l'attuale modello relazionale sta iniziando a crollare e dà una visione sulle alternative a questo modello.
*{{pdf}} [http://www.google.it/url?sa=t&source=web&cd=2&ved=0CCIQFjAB&url=http%3A%2F%2Fwww.di.univaq.it%2Fgdellape%2Fdownload.php%3Ffn%3DXMLDBpdf&ei=B5QJTKK6LoHFsgbykKCrCA&usg=AFQjCNHVMToMU2Y0hBu1RNyn4jprP_CPyg&sig2=0koP3vlqsUzb1SL2oGgZpQ XML e Database di Giuseppe Della Penna - Università degli Studi dell'Aquila]
 
[[categoria: database]]
 
[[Categoria:DBMS orientati al documento| ]]
[[de:Dokumentenorientierte Datenbank]]
[[en:Document-oriented database]]