MongoDB. Un database NoSQL Open-Source

Documenti analoghi
Linee di evoluzione dei Database

DBMS (Data Base Management System)

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Organizzazione degli archivi

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Introduzione alla teoria dei database relazionali. Come progettare un database

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

SQL, NoSQL, o entrambi?

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Novità di Access 2010

Servizio Feed RSS del sito CNIT

MANUALE PARCELLA FACILE PLUS INDICE

Software per Helpdesk

MODULO 5 Appunti ACCESS - Basi di dati

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Database. Si ringrazia Marco Bertini per le slides

Esercizio data base "Biblioteca"

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

MySQL Database Management System

TEORIA sulle BASI DI DATI

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

Volumi di riferimento

PROGRAMMA DI CLASSE 5AI

Strutturazione logica dei dati: i file

Facoltà di Farmacia - Corso di Informatica

Amministrare MySQL con PhpMyAdmin

Tibet4DExt. Manuale Utente. Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea. (Versione 1.7.x)

DATABASE.

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

MODELLISTICA DI IMPIANTI E SISTEMI 2

19. LA PROGRAMMAZIONE LATO SERVER

I database relazionali (Access)

Introduzione alla programmazione in C

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

PROGRAMMAZIONE MODULARE. Periodo mensile. Ore previste

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Installazione e caratteristiche generali 1

Base di dati e sistemi informativi

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Manuale Utente Albo Pretorio GA

Diego GUENZI Rodolfo BORASO

2 Fortino Lugi. Figura Errore. Nel documento non esiste testo dello stile specificato Finestra attiva o nuovo documento

Funzioni in C. Violetta Lonati

Approfondimento: Migrazione dei database e backup della posta

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database

Progettaz. e sviluppo Data Base

4 3 4 = 4 x x x 10 0 aaa

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Funzioni non documentate Openoffice.org. 3 Base mini-howto

GESTIONE CONTRATTI. Contratti clienti e contratti fornitori

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Database. Francesco Tapparo Informatica e Bioinformatica /16

Basi di Dati e Microsoft Access

Introduzione ai database relazionali

1. BASI DI DATI: GENERALITÀ

4 PASSI PER INVIARE LA TUA NEWSLETTER CON MAILUP

DNS-Tunneling. Reference to. Ettore di Giacinto Luca Montunato

Gestione delle tabelle

Dropbox di classe. É un servizio internet fornito gratuitamente (funzioni base).

File system II. Sistemi Operativi Lez. 20

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

Corso di Sistemi di Elaborazione delle informazioni

Guida Compilazione Piani di Studio on-line

Access. P a r t e p r i m a

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Considerazioni sui server

La Gestione delle risorse Renato Agati

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base Variabili, operatori e commenti Array...

TI.RA. Software per il Tiro Rapido Sportivo

OSSIF WEB. Manuale query builder

Progettazione di Database. Un Esempio

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Lezione 1 Introduzione

AeMmag Software. (Gestione vendite e magazzino) Guida per l utente. Versione Manuale di utilizzo Stato: Definitivo

SUAP. Per gli operatori SUAP/amministratori. Per il richiedente

MODULO 02. Iniziamo a usare il computer

Mon Ami 3000 Cespiti Gestione cespiti e calcolo degli ammortamenti

Collegamento remoto vending machines by do-dots

Joomla! 2.5:Utenti e permessi - Il wiki di Joomla.it

FIRESHOP.NET. Utilizzare il FireSoft. Rev

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Dispensa di database Access

Capitolo 13. Interrogare una base di dati

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

Transcript:

MongoDB Un database NoSQL Open-Source

Database Relazionali I dati sono divisi in tabelle. Ogni tabella è composta da diverse colonne fisse. Le tabelle possono avere riferimenti tra loro.

A.C.I.D. I database relazionali devono garantire quattro proprietà fondamentali:

Database NoSQL Movimento Not-Only SQL Database che rinunciano alle proprietà A.C.I.D.e allo scopo di avere: Maggiore flessibilità nella strutturazione dei dati Più semplicità nelle operazioni di scalabilità Migliore Availability (disponibilità) Alcuni software non seguono solo ad alcune delle proprietà A.C.I.D.e, altri le ignorano tutte.

CAP Theorem Ex-congettura, dimostrata nel 2002 e divenuta teorema è impossibile per un sistema informatico distribuito fornire simultaneamente tutte e tre le seguenti garanzie:

Not Only SQL! Alcuni applicativi richiedono consistenza forte: Banche Sistemi di controllo di Aerei/Aeroporti Sistemi di controllo di catene di montaggio Gli stessi esponenti del Movimento NoSQL suggeriscono di usare un database relazionale dove opportuno Nella maggior parte dei casi, una consistenza eventuale è accettabile, a favore di Availability e Partitioning

Consistenza eventuale Le scritture avvengono su una parte delle repliche responsabili di quel dato I nodi che ricevono la scrittura propagano l'informazione alle altre repliche Le letture avvengono su una parte (spesso 1) delle repliche Se una lettura avviene su un nodo non sincronizzato con l'ultima scrittura, viene restituito un dato precedente (stale data)

Esempio Scrittura su due delle tre repliche

Esempio Scrittura avvenuta sulle due repliche

Esempio Sincronizzazione tra le repliche

Esempio Consistenza!

Esempio Stale read: lettura prima della sincronizzazione

Il nome deriva da humongous E' l'unico DBMS NoSQL presente nella Top10 dei DBMS più usati, al 6 posto E' probabilmente il più simile ad un database relazionale, da cui la sua diffusione Rispetto ad un database relazionale, le rinunce maggiori sono: Transazioni, JOINs, Integrità referenziale e Vincolare e la Consistenza Forte.

Perché dovrei...? Si può fare a meno delle JOINs denormalizzando i dati. I vincoli di integrità vincolare e referenziale possono essere facilmente sostituiti con controlli eseguiti dall'applicazione utente. La Consistenza Forte non è quasi mai un requisito di massima priorità. Se l'applicazione ha forte bisogno di Consistenza e/o Transazioni, allora un database relazionale è sempre più adatto.

E i vantaggi? Le tabelle (collections) non hanno struttura (schema) prestabilite. Addio alle ALTER TABLE ADD/DROP COLUMN che possono bloccare il sistema per minuti o ore. Ogni elemento (document) in una collection ha le sue proprie colonne, ed i valori possono rappresentare qualsiasi cosa: Numeri, Stringhe, Dati binari Oggetti (embedded documents) Array di Oggetti o Numeri/Stringhe/Dati Protezione dagli attacchi di SQL Injection!

Formato di memorizzazione JavaScript Object Notation (JSON):

E la normalizzazione? Dividere i dati in più tabelle risulta comodo in fase di progettazione. Tutto sembra più ordinato. In realtà la normalizzazione dei dati rende molto più complicato l'accesso alle informazioni. Se poi i dati sono distribuiti su più nodi, una JOIN potrebbe letteralmente paralizzare l'intero Cluster. Dimenticate tutto quello che il professore di Basi di Dati vi ha mai insegnato.

JSON Coppie di chiave e valore separate da due punti. Ogni coppia è separata da virgola. Tutte le coppie in un oggetto sono racchiuse in parentesi graffa. Un array di qualsiasi tipo è contenuto in parentesi quadre.

BSON Il formato che MongoDB utilizza sul disco è una versione alleggerita di JSON, detta Binary JSON (BSON) Quando si utilizza MongoDB non si vedrà mai il formato BSON, ma sempre il JSON Sostituisce due punti e parentesi con particolari valori binari che servono ad identificare i vari contenuti.

Querying MongoDB MongoDB come MySQL e altri DBMS fornisce una shell per inserire query direttamente. La shell utilizza un motore JavaScript. Si possono usare variabili, istruzioni condizionali e iterative. La shell può eseguire operazioni molto complesse come Map/Reduce. Da qui si possono anche eseguire le operazioni ordinarie di Create, Read, Update & Destroy.

Esempio: Create Comando: db.[collection].insert([json-object]); Se non è specificato un campo _id viene generato da MongoDB. Se la collection non esiste, verrà creata.

Esempio: Read Sintassi: db.[collection].find([criteria], [proj]); Restituisce tutti i document che rispettano i dati criteria. Il secondo parametro può specificare quali campi mostrare o nascondere. Il campo _id è stato aggiunto da MongoDB anche se non lo abbiamo specificato!

Esempio: Read 2 La ricerca può avvenire anche usando i soliti operatori di >, <, >=, <=, not, or, and e altri ancora. La sintassi è molto diversa dal familiare SQL: Richiesti i documenti la cui age era maggiore di 18, vediamo entrambi i documenti inseriti.

Esempio: Read 3 La ricerca può essere effettuata anche in Array o embedded documents: Trova tutti i Post che hanno almeno un commento il cui autore è 'Pluto':

Esempio: Update Sintassi: db.[collection].update([query], [upd]); Il primo parametro indica quali documenti aggiornare. Il secondo, come devono essere aggiornati. La precedente query sostituisce l'intero documento, la prossima solo i campi specificati:

Esempio: Destroy Sintassi: db.[collection].remove([query]); Vengono eliminati tutti i documenti identificati dalla query. Per svuotare una collection, basta non passare alcun parametro.

Sharding Meccanismo di partizionamento di MongoDB. Si sceglie una Shard Key, generalmente _id. I dati sono distribuiti automaticamente sul cluster dividendo lo spazio della Shard Key in parti uguali, definite chunks. Il numero delle chunks è definito dall'amministratore. In un sistema con 32 chunks e 4 nodi, ogni nodo sarà responsabile di 8 chunks di dati.

Aggiungere un nodo L'aggiunta di un nodo consiste in due semplici passaggi: Installare MongoDB sul nuovo server. Eseguire un semplice comando su una qualsiasi delle shell del cluster: db.runcommand({addshard: "10.12.1.25:123"}) Il Cluster inizierà il Rebalancing, i chunks saranno redistribuiti nel modo più equo possibile tra tutti i nodi. Il Cluster continuerà ad essere utilizzabile durante tutta l'operazione. Alta Disponibilità!

Replication Master-Slave replication. Ogni Shard ha le sue repliche. I nodi Master ricevono tutte le scritture e le inoltrano ai nodi Slave I nodi Slave sono in sola lettura. Se il nodo Master ha un problema (system crash, network error, mongod server crash) i nodi Slave tengono una elezione per scegliere un nuovo Master.

Perché non usare MongoDB Se sono necessarie transazioni Le query di ricerca sono Case-Sensitive Quando un nodo Master cade, il processo di elezione può durare fino a 60 secondi durante i quali la Shard non può accettare Write! Per efficienza, la durabilità non è sempre garantita (configurabile)

Altri database NoSQL Cassandra HBase Riak HyperTable Redis (made in Italy) Neo4j CouchDB Scalaris

Link & Resources http://en.wikipedia.org/wiki/mongodb http://www.mongodb.org http://docs.mongodb.org/ http://en.wikipedia.org/wiki/mapreduce http://en.wikipedia.org/wiki/nosql http://en.wikipedia.org/wiki/cap_theorem