MongoDB: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Popolarità: verificati dati a maggio 2025
 
(14 versioni intermedie di 13 utenti non mostrate)
Riga 1:
{{W|informatica|agosto 2022|commento=uso eccessivo di [[WP:Grassetto|grassetti]] e [[WP:CE|link esterni]] nel corpo del testo}}
{{Software
|Nome = MongoDB
Riga 7 ⟶ 8:
|SoftwareLibero = no
}}
'''MongoDB''' (da "hu'''mongo'''us", enorme) è un [[DBMS]] non relazionale, [[Base di dati orientata al documento|orientato ai documenti]]. Classificato come un database di tipo [[NoSQL]], MongoDB si allontana dalla struttura tradizionale basata su tabelle dei [[database relazionali]] in favore di documenti in stile [[JSON]] con schema dinamico (MongoDB chiama il formato [[BSON]]), rendendo l'integrazione di dati di alcuni tipi di applicazioni più facile e veloce.
 
Classificato come un database di tipo [[NoSQL]], MongoDB si allontana dalla struttura tradizionale basata su tabelle dei [[database relazionali]] in favore di documenti in stile [[JSON]] con schema dinamico (MongoDB chiama il formato [[BSON]]), rendendo l'integrazione di dati di alcuni tipi di applicazioni più facile e veloce.
Sviluppato inizialmente dalla società di software 10gen (ora diventata MongoDB Inc.) nell'ottobre 2007 come un componente di un prodotto di [[platform as a service]], l'azienda si è spostata verso un modello di sviluppo open source nel 2009, con 10gen in grado di offrire un supporto commerciale e altri servizi.<ref>[https://gigaom.com/2013/08/27/10gen-embraces-what-it-created-becomes-mongodb-inc/ 10gen diventa MongoDB]</ref> Da allora, MongoDB è stato adottato come backend da un alto numero di grandi siti web e società di servizi come [[Craigslist]], [[eBay]], [[Foursquare]], [[SourceForge]] e il ''[[The New York Times]]'', tra gli altri. MongoDB è il più popolare database NoSQL.<ref name=":0">Database [http://db-engines.com/en/ranking Ranking]</ref>
 
Sviluppato inizialmente dalla società di software 10gen (ora diventata MongoDB Inc.) nell'ottobre 2007 come un componente di un prodotto di [[platform as a service]], l'azienda si è spostata verso un modello di sviluppo [[open source]] nel 2009, con 10gen in grado di offrire un supporto commerciale e altri servizi.<ref>[{{Cita web |url=https://gigaom.com/2013/08/27/10gen-embraces-what-it-created-becomes-mongodb-inc/ |titolo=10gen diventa MongoDB] |accesso=3 maggio 2019 |dataarchivio=16 novembre 2018 |urlarchivio=https://web.archive.org/web/20181116183237/https://gigaom.com/2013/08/27/10gen-embraces-what-it-created-becomes-mongodb-inc/ |urlmorto=sì }}</ref> Da allora, MongoDB è stato adottato come backend da un alto numero di grandi siti web e società di servizi come [[Craigslist]], [[eBay]], [[Foursquare]], [[SourceForge]] e il ''[[The New York Times]]'', tra gli altri. MongoDB è il più popolare database NoSQL.<ref name=":0">Database{{Cita [httpweb|url=https://db-engines.com/en/ranking|titolo=DB-Engines Ranking]|sito=DB-Engines|lingua=en|accesso=2022-08-09}}</ref>
 
== Storia ==
Riga 17 ⟶ 20:
 
== Licenza e supporto ==
MongoDB è disponibile gratuitamente sotto la [[Server Side Public License]]. Le librerie per i vari linguaggi sono disponibili sotto la [[Licenza Apache|Apache License]]. In aggiunta, MongoDB Inc. offre licenze commerciali per MongoDB.<ref>[{{Cita web|url=https://www.mongodb.com/productsatlas/subscriptionsdatabase|titolo=MongoDB LeAtlas sottoscrizioniDatabase di{{!}} Multi-Cloud Database Service|sito=MongoDB]|lingua=en|accesso=2022-08-09}}</ref>
 
== Caratteristiche principali ==
Alcune delle caratteristiche principali sono:
 
'''Query ad hoc'''<ref>{{Cita web|url=https://www.mongodb.com/docs/manual/crud/|titolo=MongoDB CRUD Operations — MongoDB Manual|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
'''[http://docs.mongodb.org/manual/crud/ Query ad hoc]'''
* MongoDB supporta ricerche per campi, intervalli e [[Espressione regolare|regular expression]]. Le query possono restituire campi specifici del documento e anche includere funzioni definite dall'utente in JavaScript.
 
'''Indicizzazione'''<ref>{{Cita web|url=https://www.mongodb.com/docs/manual/indexes/|titolo=Indexes — MongoDB Manual|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
'''[http://docs.mongodb.org/manual/indexes/ Indicizzazione]'''
* Qualunque campo in MongoDB può essere indicizzato (gli indici in MongoDB sono concettualmente similari a quelli dei tradizionali RDBMSdatabase relazionali). Sono disponibili anche indici secondari, indici unici, indici sparsi, indici geospaziali e indici full text.
 
'''Alta Disponibilità'''<ref>{{Cita web|url=https://www.mongodb.com/docs/manual/replication/|titolo=Replication — MongoDB Manual|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
'''[http://docs.mongodb.org/manual/replication/ Alta Disponibilità]'''
* MongoDB fornisce alta disponibilità e aumento del carico gestito attraverso i replica set. Un replica set consiste in due o più copie dei dati. Ogni replica può avere il ruolo di copia primaria o secondaria in qualunque momento. La replica primaria effettua tutte le scritture e le letture. Le repliche secondarie mantengono una copia dei dati della replica primaria attraverso un meccanismo di replicazione incluso nel prodotto. Quando una replica primaria fallisce, il replica set inizia automaticamente un processo di elezione per determinare quale replica secondaria deve diventare primaria. Le copie secondarie possono anche effettuare letture, con dati eventualmente consistenti di default.
 
'''[httpSharding e bilanciamento dei dati'''<ref>{{Cita web|url=https://docswww.mongodb.orgcom/docs/manual/sharding/ |titolo=Sharding e bilanciamentoMongoDB dei dati]'''Manual|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
* MongoDB scala orizzontalmente usando lo sharding. L'utente deve scegliere una chiave di sharding, che determina come i dati di una collection saranno distribuiti tra i vari nodi. I dati sono divisi in intervalli (basati sulla chiave di shard) e distribuiti su molteplici shard (uno shard è un replica set, quindi con una replica primaria e due o più repliche secondarie).
* MongoDB include un meccanismo di bilanciamento dei dati, spostando gli intervalli di dati da uno shard troppo carico a uno shard meno carico, in modo da bilanciare la distribuzione dei dati all'interno del cluster.
 
'''[httpFile Storage'''<ref>{{Cita web|url=https://docswww.mongodb.orgcom/docs/manual/core/gridfs/|titolo=GridFS File Storage]'''MongoDB Manual|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
* MongoDB può essere usato anche come un [[file system]], traendo vantaggio dalla caratteristiche di replicazione e di bilanciamento su più server per memorizzare file, anche di grandi dimensioni.
* Questa funzione, chiamata GridFS, è inclusa nei driver di MongoDB e disponibile facilmente per tantissimi linguaggi di sviluppo. MongoDB espone delle funzioni per la manipolazione dei file. GridFS è usato, ad esempio, nei plugin di NGINX e lighttpd. Invece di memorizzare il file in un singolo documento, GridFS divide il file in tante parti più piccole, chiamate chunks, e memorizza ognuno di questi chunk in un documento separato.
* Ai file possono essere associati dei [[Metadato|metadati]], su cui è possibile anche creare degli indici full-text.
 
'''Aggregazione'''<ref>{{Cita web|url=https://www.mongodb.com/docs/manual/aggregation/|titolo=Aggregation Operations — MongoDB Manual|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
'''[http://docs.mongodb.org/manual/aggregation/ Aggregazione]'''
* MongoDB supporta due modalità di aggregazione dei dati: il MapReduce e l'Aggregration Framework. Quest'ultimo lavora come una [[Pipeline software|pipeline]] e permette di ottenere risultati molto più rapidamente del MapReduce grazie all'implementazione in C++.
 
'''[httpCapped Collection'''<ref>{{Cita web|url=https://docswww.mongodb.orgcom/docs/manual/core/capped-collections/ |titolo=Capped Collection]'''Collections — MongoDB Manual|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
* MongoDB supporta collection a dimensioni fisse chiamate capped collection. Questo tipo di collection mantiene l'ordine di inserimento e una volta raggiunta la dimensione definita, si comporta come una coda circolare.
 
== Supporto ai linguaggi di programmazione ==
 
MongoDB ha reso disponibili le [[ApplicationSoftware programmingdevelopment interfacekit|APISDK]] ufficiali per i più popolari linguaggi di programmazione e ambienti di sviluppo. Ci sonoEsistono anche tantimoltissimi progetti non ufficiali, sviluppati e supportati dalla comunità, per fornire supporto ad alcuni linguaggi meno diffusi.
 
== Front-end di gestioneGestione e amministrazione del database ==
 
MongoDB Inc. mette a disposizione il servizio di monitoraggio e di backup, chiamato MMS<ref>[http://mms.mongodb.com MMS]</ref>. Tramite l'installazione di un agent locale che invia dati al server MMS nel [[Cloud database|cloud]], questo permette di monitorare le istanze di MongoDB senza dover installare software. PerL'utilizzo chidel volesseservizio installareè l'MMSovviamente nelsubordinato proprioall'acquisto datacenter, può compraredi una licenza commerciale.
 
Oltre a MMS ci sono alcuni tools già presenti nell'installazione di MongoDB:
 
'''[httpmongo'''<ref>{{Cita web|url=https://docswww.mongodb.orgcom/docs/manual/reference/mongo-shell/ |titolo=mongo]''' Shell Quick Reference — MongoDB Manual|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
* MongoDB offre una shell interattiva chiamata '''[http://docs.mongodb.org/manual/reference/mongo-shell/ mongo]''', la quale permette agli sviluppatori di:
** vedere, inserire, rimuovere e aggiornare i dati nei loro database, come di;
** ottenere informazioni sulla replicazione, sulla configurazione dello sharding,;
** spegnere i server,;
** eseguire del codice JavaScript e;
** molto altro.
* LeÈ possibile accedere alle informazioni amministrative possono anche essere accedute attraverso un{{'}}'''interfaccia web''', una pagina web semplice che fornisce informazioni sullo stato corrente del server. La porta predefinita per l'interfaccia web è di 1 0001000 superiore a quella predefinita del database (quindi 28017).
'''mongostat'''<ref>{{Cita web|url=https://www.mongodb.com/docs/database-tools/mongostat/|titolo=mongostat — MongoDB Database Tools|sito=www.mongodb.com|lingua=en|accesso=2022-08-09}}</ref>
'''[http://docs.mongodb.org/manual/reference/program/mongostat/ mongostat]'''
* [http://docs.mongodb.org/manual/reference/program/'''mongostat/ mongostat]''' è ununo toolstrumento command-linea riga di comando che visualizza una lista riassuntiva delle statistiche di un'istanza di MongoDB in esecuzione: quante insert,e update,che tipo di query sono eseguite così come chela percentuale di tempo in cui il database è rimasto {{Non chiaro|lockato}} e quanta memoria sta usando. Questo tool è simile al comando [[vmstat]] di UNIX/Linux.
'''mongotop'''<ref>[http://docs.mongodb.org/manual/reference/program/mongotop/ mongotop]'''</ref>
* [http://docs.mongodb.org/manual/reference/program/mongotop/ mongotop] è uno strumento a linea di comando che fornisce un metodo per tracciare la quantità di tempo usata da un'istanza di MongoDB a leggere e a scrivere dati. Fornisce statistiche a livello di collection. Di default, mongotop ritorna valori al secondo. Questo tool è simile al comando [[Top (Unix)|top]] di UNIX/Linux.
'''mongosniff'''<ref>[http://docs.mongodb.org/manual/reference/program/mongosniff/ mongosniff]'''</ref>
* [http://docs.mongodb.org/manual/reference/program/mongosniff/ mongosniff] è un tool command-line che fornisce uno sniffing a basso livello dell'attività del database monitorando il traffico di rete in entrata e in uscita. Richiede la libreria di rete [[Libpcap]] ed è disponibile solo per i sistemi UNIX-like. Un'alternativa cross-platform open source è [[Wireshark]], un analizzatore di pacchetti che ha il pieno supporto del protocollo di MongoDB.
'''mongoimport, mongoexport'''<ref>[http://docs.mongodb.org/manual/reference/program/mongoimport/ mongoimport], mongoexport'''</ref>
* [http://docs.mongodb.org/manual/reference/program/mongoimport/ mongoimport] è un'utility command-line per importare il contenuto da un file JSON, CSV o TSV creato da mongoexport o da qualunque export di terze parti che ne rispettano il formato.
'''mongodump, mongorestore'''
* mongodump è un'utility command-line per creare un export binario del contenuto di un database MongoDB. Mongorestore può essere usato per ricaricare un dump fatto con mongodump.
Riga 72 ⟶ 80:
== Popolarità ==
 
Secondo [https://db-engines.com/en/ db-engines.com], a giugnomaggio 20182025 MongoDB è al 5º posto della classifica dei database più popolaridiffuso delal mondo e al 1º posto dei database NoSQL.<ref name=":0" />
 
Al 9 agosto 2022, MongoDB Inc. conta circa 2731.000 clienti attivi che utilizzano il loro database per salvare i propri dati.<ref>{{Cita web|url=https://www.mongodb.com/who-uses-mongodb|titolo=Our Customers|sito=MongoDB|lingua=en|accesso=2021-06-14}}</ref>
 
== Implementazioni popolari ==
Alcuni degli utilizzatori più significativi di MongoDB sono:
* [[MetLife]] usa MongoDB per "The Wall", un'applicazione di servizio al cliente che fornisce una vista a 360 gradi dei clienti di MetLife.<ref>{{Cita web|url=https://www.dataversity.net/metlifes-wall-powered-by-mongodb/|titolo=MetLife's "Wall" Powered by MongoDB|sito=DATAVERSITY|data=2013-11-22|lingua=en-US|accesso=2021-06-14}}</ref>
* [[Craigslist]] memorizza oltre 2 miliardi di documenti in MongoDB.{{Senza fonte}}
* [[SAP (azienda)|SAP]] usa MongoDB in SAP platform-as-a-service.{{Senza fonte}}
* [[Forbes]] memorizza articoli e dati societari in MongoDB.<ref>{{Cita web|url=https://aster.cloud/2020/11/14/forbes-embraces-mongodb-on-google-cloud-as-part-of-digital-first-strategy/|titolo=Forbes Embraces MongoDB On Google Cloud As Part Of Digital-first Strategy|sito=aster.cloud|data=2020-11-14|lingua=en-US|accesso=2021-06-14}}</ref>
* [[The New York Times]] usa MongoDB nella sua applicazione di caricamento di fotografie.<ref>{{Cita web|url=https://www.mongodb.com/post/38162455327/new-york-times-runs-mongodb|titolo=Case Study: The New York Times Runs MongoDB|sito=MongoDB|lingua=en-us|accesso=2021-06-14|dataarchivio=14 giugno 2021|urlarchivio=https://web.archive.org/web/20210614120334/https://www.mongodb.com/post/38162455327/new-york-times-runs-mongodb|urlmorto=sì}}</ref>
* [[SourceForge|Sourceforge]] usa MongoDB come storage delle pagine.{{Senza fonte}}
* [[Codecademy]] usa MongoDB come datastore per il suo sistema di learning online.{{Senza fonte}}
* [[Shuttefly]] usa MongoDB per la sua piattaforma di fotografie. Nel 2013 la piattaforma aveva oltre 18 miliardi di foto caricate da oltre 7 milioni di utenti.{{Senza fonte}}
* [[CERN]] usa MongoDB come back-end del Data Aggregation System nel [[Large Hadron Collider]].{{Senza fonte}}
* [[Foursquare]] implementa MongoDB su [[Amazon Web Services|Amazon AWS]] per memorizzare località e le registrazioni degli utenti nelle località.<ref>{{Cita web|url=https://www.delltechnologies.com/en-us/blog/oscon-how-foursquare-uses-mongodb-to-manage-its-data/|titolo=OSCON: How foursquare uses MongoDB to manage its data|sito=Dell Technologies|lingua=en-US|accesso=2021-06-17}}</ref>
* [[eBay]] usa MongoDB per i suggerimenti della ricerca e per State Hub, il Cloud Manager interno.<ref>{{Cita web|url=https://morpheusdata.com/cloud-blog/how-ebay-solves-the-database-scaling-problem-with-mongodb/|titolo=How eBay Solves the Database Scaling Problem with MongoDB - Hybrid Cloud Management and Automation {{!}} Morpheus|sito=morpheusdata.com|accesso=2021-06-17}}</ref>
*[https://www.owlstat.com [OwlStat]] utilizza MongoDB per il salvataggio delle statistiche.{{Senza fonte}}
 
== Alternative FOSS ==
 
* [https://www.mangodb.io/ MangoDB] agisce come un proxy open-source, che converte le query del protocollo wire di MongoDB in SQL ed usa PostgreSQL come motore di database.
 
== Note ==
Riga 119 ⟶ 123:
{{Portale|software libero}}
 
[[Categoria:BaseDBMS di dati orientataorientati al documento]]