Introduzione a NoSQL Giuseppe Terribilio.

Slides:



Advertisements
Presentazioni simili
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
Advertisements

Corso di Basi di Dati Introduzione a MongoDB Home page del corso:
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Giuditta Cantoni, 4 E S.I.A I DATABASE. Definizione databese In informatica, il termine database, banca dati o base di dati (a volte abbreviato con il.
CORSO elementare su DATABASE Applicativo utilizzato OpenOffice 3.0.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Basi di dati - Fondamenti
Il modello logico Il modello logico.
Facile da usare Un'interfaccia amministrativa completamente rinnovata, iniziare con Drupal è più facile!
Corso per Webmaster base
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Esercizio ODBC.
Le operazioni relazionali
Università degli studi di Roma Tor Vergata
ODMG.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
<Nome del gruppo di lavoro>
GeoGebra QuizFaber Formazione tra pari
La rappresentazione delle informazioni
EasyGraph Dynamic web-based dashboard
Microsoft Access E’ un programma utile per lo sviluppo di applicazioni gestionali che si appoggiano a una base dati.
Microsoft Access E’ un programma utile per lo sviluppo di applicazioni gestionali che si appoggiano a una base dati.
Dati in rete Appunti.
Introduzione a MongoDB
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
how to use Windows SharePoint Services
Condizioni decisionali
Analysis framework of distributed thread and malware data-sources
Basi di Dati: Introduzione
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Excel 1 - Introduzione.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Giordano Scuderi Unico SRL - Messina,
Corso di Ingegneria del Web e Applicazioni A A
Organizzazione fisica
I FILES AD ACCESSO SEQUENZIALE
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Asynchronous JavaScript and XML
PROGRAMMAZIONE BASH – ISTRUZIONE IF
FAQ.
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
Database
Corso di Ingegneria del Web A A Domenico Rosaci 1
Introduzione alle basi di dati
OBJECT ORIENTED DATABASE
Access.
Basi di dati - Fondamenti
INTRODUZIONE A EXCEL Il foglio elettronico o foglio di calcolo è una tabella che contiene parole e numeri che possono essere elaborati applicando formule.
Introduzione alla materia sistemi
SQL per la modifica di basi di dati
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
Free .NET Hosting - somee.com
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
OpenLayers Client di mappe “non solo” WMS
Roberto Pecchioli, Nicola Salotti, Massimiliano Sergenti
Gli archivi e le basi di dati
Condizioni decisionali
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
Selezione e Proiezione
Condizioni decisionali
UML Diagramma statico di una classe
Array e Stringhe Linguaggio C.
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
Ricerca 01/08/2019 package.
La programmazione strutturata
Docente: Sabato Bufano
Transcript della presentazione:

Introduzione a NoSQL Giuseppe Terribilio

Cos’è NoSQL NoSQL (Not only SQL) è un termine utilizzato per descrivere database che non usano un modello di dati relazionale e quindi potrebbero non usare SQL come linguaggio di interrogazione utilizzano una serie di modelli di dati, tra cui documenti, grafi, coppie chiave-valore e colonne.

Classificazione DB NoSQL (1) orientate al documento: non memorizzano i dati in tabelle con campi uniformi per ogni record come nei DB relazionali ma ogni record è memorizzato come un documento. Per ogni documento può essere aggiunto un numero qualsiasi di campi con qualsiasi lunghezza. I campi possono anche contenere pezzi multipli di dati. Lotus Notes, MongoDB, Apache Solr, OrientDB, Elasticsearch, CouchDB

Classificazione DB NoSQL (2) database a grafo: usa nodi e archi per rappresentare e archiviare l’informazione. più veloci nell’associazione di set di dati. mappano in maniera più diretta le strutture di applicazioni orientate agli oggetti. Core Data, Neo4j, OrientDB

Classificazione DB NoSQL (3) chiave/valore archiviato su disco chiave/valore cache in RAM valore/chiave Eventually‐consistente chiave-valore che conserva mediante l'implementazione di Paxos basi di dati multivalore ad oggetti: l’informazione è rappresentata in forma di oggetti come nei linguaggi di programmazione ad oggetti. tabulare archiviazione in tuple

Vantaggi NoSQL leggerezza computazionale: i database NoSQL non prevedono operazioni di aggregazione sui dati (JOIN) in quanto tutte le informazioni sono già raccolte in un unico documento associato all’oggetto da trattare. assenza di schema: i database NoSQL sono privi di schema in quanto il documento contiene tutti i campi necessari scalabilità orizzontale: l’aggregazione dei dati e l’assenza di uno schema definito a priori offre l’opportunità di scalare orizzontalmente i database NoSQL senza difficoltà e rischi operativi (può essere quindi utilizzato per applicazioni standard che ambienti enterprise aggiungendo o sottraendo macchine per modificare potenza e capacità di calcolo)

Svantaggi NoSQL duplicazione delle informazioni: in realtà, i costi sempre meno proibitivi dei sistemi di storage rendono questo svantaggio poco importante.

Chi usa i database NoSQL Facebook Twitter Instagram per garantire velocità di esecuzione anche nell’elaborazione di terabyte e terabyte di dati, la scalabilità orizzontale con l’aggiunta di nuovi server e la possibilità di ricevere migliaia di dati non strutturati senza dipendere da uno schema fisso

MongoDB: cos’è MongoDB (da "humongous", gigantesco) è un database NoSQL orientato ai documenti, che nasce nel 2007 in California. memorizza i documenti in JSON, formato basato su JavaScript e più semplice di XML i documenti sono raggruppati in collezioni che possono essere anche eterogenee. Ciò significa che non c’è uno schema fisso per i documenti. Tra le collezioni non ci sono relazioni o legami garantiti da MongoDB: in altre parole, non esiste un concetto analogo al vincolo di integrità referenziale.

mongod --dbpath /home/giuseppe/mongodata Installazione http://www.mongodb.org/downloads creare folder mongodata sotto la propria user folder per memorizzare i file del database avviare il server: mongod --dbpath /home/giuseppe/mongodata Se tutto è andato a buon fine vedremo una schermata che indica che il server è avviato e su quale porta è in ascolto.

Quick start per interagire con il server c’è bisogno di un client. La client console si chiama mongo aprire un altro prompt e lanciare: mongo

db.myCollection.insertOne( { x: 1 } ); mongo Shell Di seguito alcuni comandi fondamentali: db: mostra il nome del database che si sta attualmente utilizzando (dovrebbe ritornare test, che è il database di default) show dbs: mostra i database disponibili use <database>: permette di switchare su un altro database. Se il database non esiste viene creato e avviene lo switching sul nuovo DB appena creato Note: su MongoDB non esiste alcun comando per creare in modo esplicito un database. db.myCollection.find(): visualizza i documenti presenti nella collezione myCollection Note: anche le collezioni vengono create implicitamente al primo utilizzo, quindi non occorre un comando specifico. Es.: db.myCollection.insertOne( { x: 1 } );

{name:’myName’, surname:’mySurname’, age:myAge} Esercizio 1 creare un db ictits creare una collezione users aggiungere 10 nuovi documenti {name:’myName’, surname:’mySurname’, age:myAge} elencare tutti i documenti presenti nella collezione

Interrogazione Note: per ogni documento viene creato un identificatore univoco _id che viene aggiunto come campo al documento stesso db.websites.find({ name: "Giuseppe" }): il metodo find permette di eseguire query includendo anche parametri di filtraggio dei risultati db.websites.find({name:/Giu/}, { _id: 1, name: 1 }): effettua una proiezione dei risultati ottenuti. In questo caso si sta cercando tra i documenti che contengono nel campo name la stringa Giu e per ogni documento trovato viene restituito solo il campo _id e il campo name db.books.find( { $or: [ { pages: { $lte: 200 } } , { published: { $gt: new Date(2014, 0, 1) } } ] }): restituisce i libri che hanno meno di 200 pagine o che sono stati pubblicati dal 2014 db.websites.find( { clicks: { $lt: 5000 } }, { _id: 1, clicks: 1 } ).limit(10): in questo caso vengono restituiti solo i primi 10 risultati

Operatori di confronto Nell’ultimo esempio si può osservare un filtraggio per confronto: il campo clicks di ogni documento viene confrontato con il valore 5000, e solo quelli con valore numerico inferiore saranno selezionati (lt sta infatti per lesser than). Altri operatori tipici sono: $gt (maggiore); $ne (non uguale a); $in (ricerca di un valore all’interno di un array).

Aggiornamento db.websites.update( { name: "homepage"}, { $set : { clicks: 5403 } }, {multi: true} ): aggiorna i documenti che hanno il campo name uguale a homepage settando il campo clicks a 5403. Il parametro multi serve per specificare che potranno essere aggiornati anche più di un documento (se non viene specificato, di default, ne viene aggiornato solamente uno)

Eliminazione db.websites.remove({ name:"homepage"}): il primo parametro rappresenta il criterio di selezione dei documenti da eliminare. Il server restituisce un documento che indica quanti documenti sono stati eliminati. Nel caso in cui non venga specificato un filtro di selezione, saranno eliminati tutti i documenti (db.websites.remove({}))

https://robomongo.org/ Robomongo manager con interfaccia grafica che permette di usare MongoDB https://robomongo.org/

Driver Java per i più importanti e utilizzati linguaggi di programmazione sono state realizzate delle librerie (o Driver, come si dice nell’ambito della gestione di database) per l’interfacciamento con MongoDB in modo semplice e intuitivo vedremo come interagire con MongoDB da un’applicazione JAVA scaricare da http://central.maven.org/maven2/org/mongodb/mongo-java- driver/3.4.1/ il file mongo-java-driver-3.4.1.jar creare un file Mongo.java nella stessa folder dove è presente mongo- java-driver-3.4.1.jar

Driver Java (2) import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.ServerAddress; import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoCollection; import org.bson.Document; import com.mongodb.client.MongoCursor; import static com.mongodb.client.model.Filters.*; import com.mongodb.client.result.DeleteResult; import static com.mongodb.client.model.Updates.*; import com.mongodb.client.result.UpdateResult; import java.util.ArrayList; import java.util.List;

Driver Java (3) class Mongo { public static void main(String[] args) { /**** Get database ****/ MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); //MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017"); //MongoClient mongoClient = new MongoClient(connectionString); /**** Access database ****/ MongoDatabase database = mongoClient.getDatabase("test"); /**** Access a Collection ****/ //If a collection does not exist, MongoDB creates the collection when you first store data for that collection. MongoCollection<Document> collection = database.getCollection("myCollection"); /**** Create Document ****/ Document doc = new Document("name", "MongoDB") .append("type", "database") .append("count", 1) .append("versions", "3.0") .append("info", new Document("x", 203).append("y", 102)); Document myDoc = collection.find().first(); System.out.println(myDoc.toJson()); }

Driver Java (4) per compilare l’applicazione: javac -cp "mongo-java-driver-3.4.2.jar" Mongo.java per eseguire l’applicazione: java -cp "mongo-java-driver-3.4.2.jar";. Mongo