MongoDB

Da Wikipedia, l'enciclopedia libera.
MongoDB
Logo
Sviluppatore MongoDB Inc.
Ultima versione 2.6.0 (8 Aprile 2014)
Sistema operativo Multipiattaforma
Linguaggio C++
Genere Base_di_dati_orientata_al_documento (non in lista)
Licenza GNU AGPL v3.0 (drivers: Apache license)
(Licenza libera)
Sito web http://www.mongodb.com/

MongoDB (da "humongous", enorme) è un database non relazionale, 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. Rilasciato sotto una combinazione della GNU Affero General Public License e dell'Apache License, MongoDB è un software libero e open source.

Sviluppato inizialmente dalla societa 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 support commerciale e altri servizi.[1] Da allora, MongoDB è stato adottato come backend da un alto numero di grandi siti web e societa di servizi come Craigslist, eBay, Foursquare, SourceForge e il New York Times, tra gli alti. MongoDB è il più popolare database NoSQL.[2]

Storia[modifica | modifica sorgente]

Lo sviluppo di MongoDB è iniziato nel 2007, quando l'azienda (allora chiamata 10gen) stava sviluppando un platform as a service simile a Windows Azure o Google App Engine.[3] Nel 2009, MongoDB è stato reso open source come prodotto indipendente con una licenza AGPL.

Dalla versione 1.4 (Marzo 2010), MongoDB è stato considerato production ready.[4]

L'ultima versione stabile, la 2.6, è stata rilasciato l'8 Aprile 2014.

Licenza e supporto[modifica | modifica sorgente]

MongoDB è disponibile gratuitamente sotto la GNU Affero General Public License.[5] I drivers per i vari linguaggi sono disponibili sotto la Apache License. In aggiunta, MongoDB Inc. offre licenze commerciali per MongoDB.[6]

Caratteristiche Principali[modifica | modifica sorgente]

Alcune delle caraterristiche principali sono:

Query ad hoc

  • MongoDB supporta ricerche per campi, intervalli e regular expression. Le query possono restituire campi specifici del documento e anche includere funzioni definite dall'utente in JavaScript.

Indicizzazione

  • Qualunque campo in MongoDB può essere indicizzato (gli indici in MongoDB sono concettualmente similari a quelli dei tradizionali RDBMS). Sono disponibile anche indici secondari, indici unici, indici sparsi, indici geospaziali e indici full text.

Alta Affidabilità

  • 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.

Sharding e bilanciamento dei dati

  • 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 ad uno shard più vuoto, in modo da bilanciare la distribuzione dei dati all'interno del cluster.

File Storage

  • 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 drivers di MongoDB e disponibile facilmente per tantissimi linguaggi di sviluppo. MongoDB espone delle funzione 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 dividi il file in tanti parti più piccole, chiamate chunks, e memorizza ognuno di questi chunck in un documento separato.
  • Ai file possono essere associati dei metadati, su cui è possibile anche creare degli indici full-text.

Aggregazione

  • MongoDB supporta due modalità di aggregazione dei dati: il MapReduce e l'Aggregration Framework. Quest'ultimo lavora come una pipeline e permette di ottenere risultati molto più rapidamente del MapReduce grazie all'implementazione in C++.

Capped Collection

  • MongoDB supporta collection a dimensioni fisse chiamate capped collection. Questo tipo di collection mantengono l'ordine di inserimento e una volta raggiunto la dimensione definita, si comportano come code circolari.

Supporto Linguaggi di Programmazione[modifica | modifica sorgente]

MongoDB ha i driver ufficiali per i più popolari linguaggi di programmazione e ambienti di sviluppo. Ci sono anche tanti progetti non ufficiali sviluppati e supportati dalla comunita per fornire supporto ad alcuni linguaggi meno diffusi.

Front-End di gestione e amministrazione[modifica | modifica sorgente]

MongoDB Inc. mette a disposizione il servizio di monitoraggio e di backup, si chiama MMS. Tramite l'installazione di un agent locale che invia dati al server MMS nel cloud, permette di monitorare le istanze di mongodb senza dover installare software. Per chi volesse installare l'MMS nel proprio datacenter, può comprare una licenza commerciale.

Oltre a MMS ci sono alcuni tools già presenti nell'installazione di MongoDB:

mongo

  • MongoDB offre una shell interattiva chiamata 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 informazioni amministrative possono anche essere accedute attraverso un'interfaccia web, una pagine web semplice che fornisce informazioni sullo stato corrente del server. La porta predefinita per l'interfaccia web è di 1000 porte superiore a quella predefinita del database (quindi 28017).

mongostat

  • mongostat è un tool command-line che visualizza una lista riassuntiva delle statistiche di un'istanza di MongoDB in esecuzione: quante insert, update, query sono eseguite così come che perceutnale di tempo il database è rimasto lockato e quanta memoria sta usando. Questo tool è simile al comando vmstat di UNIX/Linux

mongotop

  • mongotop è un tool command-line che fornisce un metodo per tracciare la quantita di tempo usata da un'istanza di MongoDB a leggere e a scrivere dati. mongotop fornisce statistiche a livello di collection. Di default, mongotop ritorna valori al secondo. QUesto tool è simile al comando top di UNIX/Linux

mongosniff

  • mongosniff è un tool command-line che fornisce uno sniffing a basso livello dell'attivita del database monitorando il traffico di rete in entrata ed in uscita. mongosniff richiede la libreria di rete Libpcap ed è disponobile 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

  • 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.

Popolarità[modifica | modifica sorgente]

Secondo db-engines.com, ad Aprile 2014 MongoDB e' al 5º posto della classifica dei database più popolari del mondo e al 1º posto dei database NoSQL.

Implementazioni Popolari[modifica | modifica sorgente]

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
  • Craigslist memorizza oltre 2 miliardi di documenti in MongoDB
  • SAP usa MongoDB in SAP platform-as-a-service
  • Forbes memorizza articoli e dati societari in MongoDB
  • The New York Times usa MongoDB nella sua applicazione di caricamento di fotografie
  • Sourceforge usa MongoDB come storage delle pagine
  • Codecademy usa MongoDB come datastore per il suo sistema di learning online
  • Shuttefly usa MongoDB for la sua piattaforma di fotografie. Nel 2013 la piattaforma aveva oltre 18 miliardi di foto caricate da oltre 7 milioni di utenti.
  • The Guardian usa MongoDB per il suo sistema di identificazione
  • CERN usa MongoDB come back-end del Data Aggregation System nel Large Hadron Collider
  • Foursquare implementa MongoDB su Amazon AWS per memorizzare localita e le registrazioni degli utenti nelle località
  • eBay usa MongoDB per i suggerimenti della ricerca e per State Hub, il Cloud Manager interno

Applicazioni con interfaccia grafica per Desktop e Web[modifica | modifica sorgente]

MongoDB Inc. e la comunità hanno sviluppato una serie di tool per monitorare, gestire e visualizzare i dati di un database mongodb. Ecco i più popolari

  • RockMongo: PHP-based MongoDB administration GUI tool
  • phpMoAdmin: another PHP GUI that runs entirely from a single 95kb self-configuring file
  • UMongo: a desktop application for all platforms.
  • Mongo3: a Ruby-based interface.
  • Meclipse: Eclipse plugin for interacting with MongoDB
  • MonjaDB: Eclipse another plugin for interacting with MongoDB
  • MongoHub: a freeware native Mac OS X application for managing MongoDB. Version for other operating systems is built on Titanium Desktop.
  • mViewer: A simple web-based Administration and Management Tool for MongoDB written in Java.
  • MongoDBPumper: a commercial high-performance data transfer solution to provide export and import functionality between Oracle and MongoDB databases.

Altre applicazioni sono elencate qui: MongoDB Administrator Manual

Note[modifica | modifica sorgente]

  1. ^ 10gen diventa MongoDB
  2. ^ Database Ranking
  3. ^ Il papà di MongoDB: la mia creatura e' meglio di Google Big Tables
  4. ^ MongoDB 1.4 è pronto per la produzione
  5. ^ MongoDB rilasciato sotto la licenza AGPL
  6. ^ Le sottoscrizioni di MongoDB

Voci correlate[modifica | modifica sorgente]

Clienti Principali[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

Software libero Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero