Database NoSql Document Oriented - MongoDB

Post on 22-May-2015

173 views 1 download

description

Un seminario tenuto all'Università degli Studi di Salerno sui database NoSql orientati al documento. Approfondimento di MongoDB.

Transcript of Database NoSql Document Oriented - MongoDB

Database NoSql Document Oriented

Matteo Merola

Cosa sonoProgrammi ideati per memorizzare, reperire e gestire

informazioni semi-strutturate

Nessuno schema Gestione scalabile

DocumentoIncapsulamento Codifica

DocumentoIncapsulamento Codifica

<user>          <name>Matteo</name>          <address>Via  G.  Mazzini,  5</address>          <hobby>Pesca</hobby>  </user>

Esempio

Documento

{          "author":  “Matteo  Merola",          "text":  "Oggi  presentazione  document-­‐oriented  DB  ;)",          "comments":  [                  {                          "author":  “Giovanni  Grano",                          "text":  "ci  sarò!",                          "replies":  [                                  {                                          "author":  “Carlo  Branca",                                          "text":  "anche  io..."                                  }                          ]                  },                  {                          "author":  “Simone  Scalabrino",                          "text":  "ci  vediamo  lì",                          "replies":  []                  }          ]  }

Un post su facebook

Principali database Document Oriented

Principali database Document Oriented

MongoDBCodifica!

JSON (BSON) Performance!

scritto in C++

supporto pieno all’indicizzazione operazioni atomiche file mappati in memoria (scritture ritardate)

Scalabilità!replicazione sharding

Supporto commerciale!…tanta documentazione

Altre feature di MongoDBQuery basate sul

documento!linguaggio di

interrogazione flessibile basato su JSON/Javascript

!MapReduce!

aggregazione flessibile

GridFS!memorizza file di qualsiasi

dimensione facilmente

Altre feature di MongoDBQuery basate sul

documento!linguaggio di

interrogazione flessibile basato su JSON/Javascript

!MapReduce!

aggregazione flessibile

GridFS!memorizza file di qualsiasi

dimensione facilmente

Multipiattaformafacile installazione

Multipiattaforma

http://docs.mongodb.org/manual/

facile installazione

MongoDB: concetti base

MongoDB: concetti baseDocumento!

analogia con una riga dei RDBMS

rappresentazione tramite JSON (BSON)

annidamento

può referenziare altri documenti

Collection!

analogia con una tabella dei RDBMS

collezione di documenti

i documenti possono essere di diverso tipo ma…

…se sono simili i vantaggi aumentano

MongoDB: concetti base

Incapsulamento!

analogia con una chiave esterna nei RDBMS

relazioni unite senza uso di join

modello concettuale più chiaro

{          "author":  ObjectId(“53b9884344069471a1f19f05c5”),          "text":  “Un  post",          "comments":  [                  {                          "author":  ObjectId(“53b9884344069471a1h142356”),                          "text":  “Un  commento”,            "replies":  [                       {                               "author":  ObjectId(“53b9884344069471a1f19f05c5”),                               "text":  “Una  risposta"                       }                  ]                  }      ]  }

{          “_id":  ObjectId(“53b9884344069471a1f19f05c5”),          "name":  “Matteo  Merola"  }

{          “_id":  ObjectId(“53b9884344069471a1h142356”),          "name":  “Carlo  Branca"  }

Collection posts

Collection authors

* dipende dallo sviluppatore

Query Developer-friendly *

MongoDB: operazioni baseMongo

SQL

MongoDB: operazioni baseInserimento di un documento

Mongo

SQL

MongoDB: operazioni baseModifica di un documento

Mongo

SQL

MongoDB: operazioni baseEliminazione di un documento

Mongo

SQL

Demo

ReplicazioneScopo!

ridondanza

disponibilità del dato

disaster recovery

Modalità!

tipica Master/Slave ma con Failover automatico

ShardingPartizionamento!

i dati sono distribuiti su più macchine

Big Data!

alta quantità di dati memorizzabili

Alto throughput!

Scaling orizzontale!

più potente e meno costoso dello scaling verticale

BilanciamentoSplitting

Migration

Sharding

Come funziona?

Sharding

Quando usare i DB document-oriented?

Dati strutturati Dati NON strutturati

Polyglot Persistence2008, Scott Leberknight “Polyglot Persistence”

–Martin Fowler, November 2011.

“The rise of NoSQL databases marks the end of the era of relational database dominance. The

era of Polyglot Persistence has begun.”

Matteo Merola mattmezza@gmail.com Università degli Studi di Salerno

Scarica questa presentazioneUniversità degli Studi di Salerno