SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Web scalabile con Nginx e MongoDB

                           ovvero

NOSQL e nuovi demoni HTTP alla base della scalabilità del web




       Diego Guenzi

       Collaboratore - Area Distributed Computing
       Direzione Progettazione e Gestione Risorse

                                                            1
Problematiche & obiettivi

• Individuare alternative rispetto a prodotti
  (spesso) commerciali di memorizzazione dati
• Analisi per CSI Piemonte
• Requisiti:
   – Specificità (vs general purpose)
   – Utilizzo di commodity hardware
   – Operare in ambienti distribuiti / cloud
   – Opensource (=ridurre i costi ed evitare il più
     possibile vendor lock-in)
   – Possibilità di scalare orizzontalmente e
     verticalmente, sia per lo storage, sia per la
     capacità di calcolo
   – Tolleranza ai guasti e robustezza
• Paper GARR 2010 di Torino


                                                      2
NOSQL

•   Movimento che promuove una classe non ben
    definita di strumenti di archiviazione di dati
•   Not Only SQL:
      – Non è un movimento contro l’SQL
      – Esistono delle alternative ai RDBMS
      – The right tool for the job
•   Strumenti nati per ambienti distribuiti, dove
    l'eccezione è l'uso su macchine stand-alone
•   Si differenziano dai RDBMS:
      – Non utilizzano il tradizionale SQL
      – Non adottano schemi tabellari fissi (dati semi-
        strutturati)
      – Evitano join
      – Scalano facilmente su commodity hardware


                                                          3
Scalabilità




              • Verticale
                 – Potenziamento hardware
                 – Costo esponenziale
              • Orizzontale
                 – Numero di macchine
                 – Costo lineare




                                            4
Scalabilità RDBMS




           • Verticale
              – OK

           • Orizzontale
             – Problematica: tecniche
               complesse con degrado delle
               performance




                                       5
Scalabilità DB NOSQL




           • Verticale
              – OK

           • Orizzontale
             – OK




                           6
Solo scalabilità?


• Scalare orizzontalmente => avere più macchine
   – Fault tolerance
   – Load balancing
   – High availability
• Avere più macchine => poter distribuire e
  replicare i dati su più nodi
   – Uso ideale in ambienti distribuiti
   – Affidabilità
   – Elevate prestazioni
• Tutto in bundle, senza bisogno di software
  aggiuntivi!




                                                  7
Shared-nothing vs shared-disk



                  • Necessita di un
                    numero minore di lock
                  • Caching migliore e più
                    snello
                  • Può richiedere l’uso di
                    TPC (2PC) per le
                    operazioni che
                    riguardano più nodi
                  • Recuperare dati non
                    indicizzati richiede
                    operazioni su ogni
                    macchina



                                          8
Ambienti distribuiti - Pro
10*1=10
10*2=20
10*3=30
10*4=40                                   10*4=40
                                          10*5=50
10*5=50
                                          10*6=60
10*6=60
                    10*1=10
10*7=70             10*2=20
10*8=80             10*3=30
10*9=90
10*10=100
10*11=110
10*12=120
10*13=130
                              10*10=100
10*14=140
                              10*11=110
10*15=150                     10*12=120



            VS                            10*13=130
                                          10*14=140
                    10*7=70
                                          10*15=150
                    10*8=80
                    10*9=90




                                                      9
Fault tolerance




          VS



                  10
Ambienti distribuiti - Con




                             11
Network partitioning




                       12
Il teorema CAP



• Congettura di Brewer
  (2000), dimostrata da
  Gilbert e Lynch (2002) e
  divenuta un teorema
• Consistency, Availability e
  Partition tolerance
   – Non si possono avere
     tutte e tre, al massimo
     due!




                                13
Il teorema CAP


                                                  Consistency
                               C                  Consistenza – Ogni client
                                                  ha la stessa visione dei dati




DBMS NOSQL                                          RDBMS
               CP         Teorema           CA
                            CAP:
                         due su tre


      P                                                A
                                PA
                                     DBMS NOSQL
                                                             Availability
Partition Tolerance                                          Disponibilità – Ogni client può
Tolleranza al partizionamento – Il                           sempre leggere e scrivere, dato
sistema funziona correttamente                               che il servizio risulta sempre
nonostante il partizionamento                                attivo e funzionale
della rete



                                                                                               14
Teorema CAP - CA

• Filosofia adottata nei RDBMS tradizionali
• Evitare il network partitioning tenendo i dati in
  un unico punto
• Non scala orizzontalmente




                                                      15
Teorema CAP - PA

• Se si verifica un network partitioning, offriamo
  una eventual consistency
• Possibilità che si generino risposte differenti da
  server differenti
• Allo scomparire del partizionamento si torna ad
  una strong consistency




                                                       16
Teorema CAP - CP

• Se si verifica un network partitioning
  “sospendiamo” o limitiamo il servizio
• Possibilità che alcuni dati siano reperibili, altri
  no
• Allo scomparire del partizionamento, tutti i dati
  ritornano reperibili




                                                        17
ACID vs BASE




•   Atomicity,   • Basically
•   Consistency,   available,
•   Isolation &  • Soft state &
•   Durability   • Eventually consistent

    RDBMS           DBMS NOSQL
                                           18
Replica


                   Nome: “Mario”
                   Cognome: “Rossi”
                   Età: 48
                                                         Nome: “Mario”
                                                         Cognome: “Rossi”
                                                         Età: 48




                                      Nome: “Mario”
                                      Cognome: “Rossi”
                                      Età: 48




                                                         Nome: “Mario”
                                                         Cognome: “Rossi”
Nome: “Mario”                                            Età: 48
Cognome: “Rossi”
Età: 48




                                                                            19
Eventual consistency


                   Nome: “Mario”
                   Cognome: “Rossi”
                   Età: 48
                                                         Nome: “Mario”
                                                         Cognome: “Rossi”
                                                         Età: 48




                                      Nome: “Mario”
                                      Cognome: “Rossi”
                                      Età: 48




                                                         Nome: “Mario”
                                                         Cognome: “Rossi”
Nome: “Mario”                                            Età: 48
Cognome: “Rossi”
Età: 49




                                                                            20
Eventual consistency


                   Nome: “Mario”
                   Cognome: “Rossi”
                   Età: 48
                                                         Nome: “Mario”
                                                         Cognome: “Rossi”
                                                         Età: 48




                                      Nome: “Mario”
                                      Cognome: “Rossi”
                                      Età: 49




                                                         Nome: “Mario”
                                                         Cognome: “Rossi”
Nome: “Mario”                                            Età: 49
Cognome: “Rossi”
Età: 49




                                                                            21
Strong Consistency


                   Nome: “Mario”
                   Cognome: “Rossi”
                   Età: 49
                                                         Nome: “Mario”
                                                         Cognome: “Rossi”
                                                         Età: 49




                                      Nome: “Mario”
                                      Cognome: “Rossi”
                                      Età: 49




                                                         Nome: “Mario”
                                                         Cognome: “Rossi”
Nome: “Mario”                                            Età: 49
Cognome: “Rossi”
Età: 49




                                                                            22
Sharding


                    Nome: “Mario”
                    Cognome: “Rossi”
                    Età: 49
                                                            Nome: “Ugo”
                                                            Cognome: “Verdi”
                                                            Età: 37




                                       Nome: “Antonio”
                                       Cognome: “Bianchi”
                                       Età: 30
                                                                 Nome: “Viola”
                                                                 Cognome: “Gialli”
                                                                 Età: ??




                                                            Nome: “Marisa”
                                                            Cognome: “Azzurri”
Nome: “Viola”                                               Età: 56
Cognome: “Gialli”
Età: 50




                                                                               23
Sharding
                                                                     Nome: “Viola”
                                                                     Cognome: “Gialli”
                    Nome: “Mario”                                    Età: 50
                    Cognome: “Rossi”
                    Età: 49
                                                            Nome: “Ugo”
                                                            Cognome: “Verdi”
                                                            Età: 37




                                       Nome: “Antonio”
                                       Cognome: “Bianchi”
                                       Età: 30




                                                            Nome: “Marisa”
                                                            Cognome: “Azzurri”
Nome: “Viola”                                               Età: 56
Cognome: “Gialli”
Età: 50




                                                                               24
Basic Availability
                                                                         ???

                    Nome: “Mario”
                    Cognome: “Rossi”
                    Età: 49
                                                            Nome: “Ugo”
                                                            Cognome: “Verdi”
                                                            Età: 37




                                       Nome: “Antonio”
                                       Cognome: “Bianchi”
                                       Età: 30
                                                                 Nome: “Viola”
                                                                 Cognome: “Gialli”
                                                                 Età: ??




                                                            Nome: “Marisa”
                                                            Cognome: “Azzurri”
Nome: “Viola”                                               Età: 56
Cognome: “Gialli”
Età: 50




                                                                               25
Replica e sharding


                       “Mario”,“Rossi”, 49
                       “Ugo”,”Verdi”, 37
                       “Antonio”,”Bianchi”, 30                          “Mario”,“Rossi”, 49
                                                                        “Antonio”,”Bianchi”, 30




                                                 “Mario”,“Rossi”, 49
                                                 “Viola”,”Gialli”, 50




                                                                         “Ugo”,”Verdi”, 37
                                                                         “Viola”,”Gialli”, 50
“Ugo”,”Verdi”, 37                                                        “Antonio”,”Bianchi”, 30
“Viola”,”Gialli”, 50




                                                                                              26
Il mercato




             27
I prodotti




             28
I data model

Modello dei dati nei DBMS NOSQL       Esempi di DBMS NOSQL
 ●   Chiave-Valore                ●   Berkley DB
                                  ●   MemcacheDB
                                  ●   Redis
                                  ●   Dynamo
                                  ●   Voldemort
 ●   Orientato alle colonne       ●   BigTable
                                  ●   Hypertable
                                  ●   HBase
                                  ●   Cassandra
 ●   Orientato ai documenti       ●   SimpleDB
                                  ●   CouchDB
                                  ●   Riak
                                  ●   MongoDB
 ●   Orientato ai grafi           ●   Neo4j

                                                             29
Benchmarking: YCSB

• Yahoo Cloud Serving Benchmark.
• Una piattaforma comune per il benchmarking
  dei DBMS NOSQL (e non solo).




                                               30
MongoDB


• Architettura orientata ai documenti
  (formato JSON/BSON)
• Software opensource scritto in C++
  utilizzato da grossi siti quali bit.ly,
  github.com e sourceforge.net
• Memorizzazione di dati binari molto
  semplice ed efficiente grazie a GridFS
• Ottima gestione degli indici e delle
  collezioni
• Possibilità di fare query tramite
  Javascript
• Replica dei server (replica set) e sharding
• Supporta API verso molti linguaggi
  (Driver)

                                                31
Architettura (base e replica)



               Client / Server
           •   Basata su due processi
           •   Il client può essere sia un applicativo
               utente, sia la shell di MongoDB




               Replica set
           •   Estensione del client / server
           •   Più di un processo server, che
               dialogano fra loro per sincronizzare i
               dati

                                                    32
Architettura (sharding)




    Sharding
•   Si aggiungono un config server (metadati) e
    un mongos (instradamento delle richieste)
•   I dati sono partizionati all'interno dei mongod
                                                      33
Architettura (sharding+replica)




    Sharding + Replica set
•   La configurazione più completa, per avere
    fault tolerance e bilanciamento
                                                34
Architettura fisica realizzata




                                 35
Infinite possibilità

                       •   Creazione di un'appliance
                           con MongoDB
                       •   Stile Oracle Exadata
                           Database Machine
                       •   Mongo-in-a-box




                               =


                                                       36
SQL scalabile


• Una via di mezzo fra il mondo NOSQL e
  quello relazionale:
   – Uso di tabelle relazionali e di SQL
   – Stessa scalabilità dei DBMS NOSQL
• Molti prodotti stanno nascendo: VoltDB,
  MySQL Cluster (NDB), ScaleDB,
  Xeround…
   – Molti storage engine per MySQL




                                            37
Standard del mondo NOSQL

• Carenza di linguaggi e protocolli standard
• Tecnologia recente e, a volte, parzialmente
  immatura
• Esistenza di diversi tentativi di
  standardizzazione tramite layer comuni ai
  DBMS
   – Pig e Hive
   – SPARQL
   – GUI con supporto multi-DB
   – Wrapper / Driver per API multi-DB


                                            38
Server web e C10K


•   Avere uno storage scalabile non è tutto
•   Anche i web server devono scalare facilmente
•   Sfida: 10.000 connessioni HTTP contemporanee
•   Nuovi server oltre ad Apache e IIS
     – costruiti su linee progettuali differenti
     – lightweight
     – riescono a superare le 10.000 connessioni
       contemporanee (risolvono il problema C10K)




                                                    39
Esempi di successo: un URL shortner




                                      40
Un demone HTTP ottimizzato



• Utilizzato come web server, load balancer e proxy
  sotto licenza BSD-like
• Supporta lo streaming di FLV e MP4
• Permette l'uso di SSL e TLS
• Più leggero e veloce: utilizza un’architettura di tipo
  event-driven (asincrona) invece dei classici thread
• Gestisce un numero di connessioni maggiore rispetto
  agli altri prodotti presenti sul mercato




                                                           41
Utilizzo – Agosto 2011


                                  Alcuni esempi:
                                  http://sourceforge.net/
                                  http://www.yellowpages.com/
                                  http://www.whitepages.com/
                                  http://www.filestube.com/
                                  http://www.torrentreactor.net/
                                  http://www.scribd.com/
                                  http://wordpress.com/
                                  http://wordpress.org/
                                  https://github.com/
                                  http://www.rambler.ru/
                                  http://www.yandex.ru/
                                  http://www.hulu.com/
                                  http://www.ohloh.net/
                                  https://www.tumblr.com/
                                  http://www.chinanews.com/
                                  http://www.soso.com/
                                  http://www.163.com/
                                  http://twitpic.com/
                                  http://new.evite.com/
                                  http://yfrog.com/
                                  http://www.simplyhired.com/
                                  http://www.wikihow.com/
                                  http://brainient.com/
                                  http://www.examiner.com/
                                  http://fastmail.fm/
                                  http://autoregister.co.uk/
                                  ...

                         fonte:

                                                          42
Apache non molla



• Apache HTTP server gode di:
   – forte integrazione con i pannelli di controllo per
     hosting
   – un numero elevato di moduli ed estensioni
   – una presenza sul mercato pluriennale (1995)
• I nuovi server web (e Nginx primo fra tutti) offrono
  prestazioni migliori ma:
   – sono spesso poco supportati da altri applicativi
     (perché poco diffusi)
   – i moduli e le estensioni disponibili sono ancora
     limitati (ma in rapido aumento)
   – sono ancora piuttosto immaturi (sebbene stabili)



                                                          43
Test pagine statiche

                                                              Apache - Nginx - No KeepAlive
                                                                                                  Nginx
                         10000                                                                    Apache
                                 8940,23
                          9000

                          8000
                                              7007                    6978,27      6936,81
                                                         6844,04
                          7000                                                                               6544,46                                6634,11

                                                                                                5951,31                   5873,25
                          6000
          Requests/sec




                                                                                                                                       5269,86

                          5000

                          4000

                          3000

                          2000

                          1000
                                     381,18     367,11       366,68       373,96       320,57       372,28       366,63       302,61       369,88       384,00

                             0
                                    500       1000         1500         2000         2500         3000         3500         4000         4500         5000

                                                                                Concurrency


• HP   Proliant G4
   –   Dual Xeon dual core
   –   2Gb RAM
   –   685 Gb Raid local storage
                                                                                                                                                                 44
Architetture web scalabili - 1/3


                          •   Scalabilità orizzontale con
                              macchine tutte identiche
                          •   Semplicità di gestione




                                                       45
Architetture web scalabili - 2/3

                       •   Scalabilità orizzontale su 2 livelli
                       •   Load balancer separato




                                                          46
Architetture web scalabili - 3/3
                       •   Scalabilità orizzontale su 3 livelli
                       •   Aggiungo macchine solo dove
                           serve
                       •   Eventuale load balancer ulteriore




                                                          47
Alcuni test di fault tolerance

• Down di una macchina del DB tollerato senza interruzione
  del servizio
   – Numero di macchine variabile in base al fattore di
      replica e di sharding, alla presenza di un arbiter e al
      peso dei nodi
   – Conseguente ripristino del servizio con
      sincronizzazione automatica
• Fallimento di un supporto di memorizzazione →
  Sincronizzazione automatica recuperando i dati da un altro
  nodo appartenente allo stesso replica set
• Down di un nodo PHP → Nginx sposta il carico in
  automatico sull'altro (o sugli altri) nodo
   – Al ritorno on-line, ribilanciamento automatico da parte
      di Nginx




                                                                48
Test di paragone - 1/4




             vs




                    • Dell PowerEdge R610
                       – Dual Xeon quad core L5520
                       – 32Gb RAM
                       – 160 Gb SAS local storage



                                             49
Test di paragone - 2/4
                                                                                                                                     vs
                      1600

                      1400

                      1200
Tempo di esecuzione




                      1000

                       800
                                                                             Apache
                       600                                                   Nginx

                       400

                       200

                         0
                             1   2   3   4     5      6   7   8   9   10

                                             # test                                              1600

                                                                                                 1400

                                                                                                 1200


                                                                           Tempo di esecuzione
                                                                                                 1000


                         Pre-ottimizzazione
                                                                                                  800
                                                                                                                                              MongoDB
                                                                                                  600                                         MySQL

                                                                                                  400

                                                                                                  200

                                                                                                    0
                                                                                                        1   2   3    4       5   6   7    8

                                                                                                                    # test


                                                                                                                                              50
Test di paragone - 3/4
                                                                                                                                    vs
                      700

                      600
Tempo di esecuzione




                      500

                      400
                                                                          Apache
                      300
                                                                          Nginx
                      200

                      100

                       0
                            1   2   3   4    5       6   7   8   9   10

                                            # test
                                                                                                 700

                                                                                                 600




                                                                           Tempo di esecuzione
                                                                                                 500

                                                                                                 400

                        Post-ottimizzazione                                                      300
                                                                                                                                             MongoDB
                                                                                                                                             MySQL
                                                                                                 200

                                                                                                 100

                                                                                                  0
                                                                                                       1   2   3    4       5   6   7    8

                                                                                                                   # test


                                                                                                                                             51
Test di paragone - 4/4


                      700

                      600
Tempi di esecuzione




                      500

                      400
                                                                                                                      Cassandra
                      300                                                                                             MongoDB
                                                                                                                      MySQL
                      200

                      100

                        0
                            1    2     3                          4       5       6          7          8

                                     # test (1-4 = Apache, 5-8 = Nginx)




                                                            800

                                                            700

                                                            600
                                           Errori non-2xx




                                                            500

                                                            400                                                                           Cassandra
                                                                                                                                          MongoDB
                                                            300
                                                                                                                                          MySQL
                                                            200

                                                            100

                                                              0
                                                                      1       2         3          4          5            6      7   8

                                                                                      # test (1-4 = Apache, 5-8 = Nginx)


                                                                                                                                           52
Conclusioni


              Pillola azzurra, fine della storia:
              domani ti sveglierai in camera tua, e
              crederai a quello che vorrai

              Pillola rossa, resti nel paese delle
              meraviglie, e vedrai quant'è profonda
              la tana del bianconiglio




                                                53
Contatti


                                           http://www.mongotorino.org




 diego.guenzi@csp.it
rodolfo.boraso@csp.it



CSP innovazione nelle ICT
Sede
via Livorno 60 - 10144 Torino
Edificio Laboratori A1
Tel +39 011 4815111
Fax +39 011 4815001
E-mail: info@csp.it

Seconda sede operativa
Villa Gualino - Viale Settimio Severo 63
10133 Torino

www.csp.it
                                                                 54

Mais conteúdo relacionado

Destaque

Presentazione inglese aprile_2012_con_nuovologo
Presentazione inglese aprile_2012_con_nuovologoPresentazione inglese aprile_2012_con_nuovologo
Presentazione inglese aprile_2012_con_nuovologoCSP Scarl
 
初心者向けtwittering-modeのススメ
初心者向けtwittering-modeのススメ初心者向けtwittering-modeのススメ
初心者向けtwittering-modeのススメTakashi Masuda
 
L02 Ecosystems Function
L02 Ecosystems FunctionL02 Ecosystems Function
L02 Ecosystems FunctionFatimah Yusof
 
Remember when...
Remember when...Remember when...
Remember when...alex hole
 
Protecting Data in the Cloud: The Truth about SaaS Backup
Protecting Data in the Cloud: The Truth about SaaS BackupProtecting Data in the Cloud: The Truth about SaaS Backup
Protecting Data in the Cloud: The Truth about SaaS BackupDatto
 
Pam Britton - Leveraging Learning
Pam Britton - Leveraging LearningPam Britton - Leveraging Learning
Pam Britton - Leveraging Learningguest07182a0
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play frameworkCSP Scarl
 
I4school collaborative 3
I4school collaborative 3I4school collaborative 3
I4school collaborative 3CSP Scarl
 
The Rebel’s Handbook
The Rebel’s HandbookThe Rebel’s Handbook
The Rebel’s Handbookshawnielegs
 
The Special Olympics
The Special OlympicsThe Special Olympics
The Special Olympicsmloyall0002
 
Ecomondo - gestione relitti navali
Ecomondo - gestione relitti navaliEcomondo - gestione relitti navali
Ecomondo - gestione relitti navalimcm&partners
 

Destaque (20)

Managerial roles
Managerial rolesManagerial roles
Managerial roles
 
Presentazione inglese aprile_2012_con_nuovologo
Presentazione inglese aprile_2012_con_nuovologoPresentazione inglese aprile_2012_con_nuovologo
Presentazione inglese aprile_2012_con_nuovologo
 
初心者向けtwittering-modeのススメ
初心者向けtwittering-modeのススメ初心者向けtwittering-modeのススメ
初心者向けtwittering-modeのススメ
 
L02 Ecosystems Function
L02 Ecosystems FunctionL02 Ecosystems Function
L02 Ecosystems Function
 
Get Results With Email Marketing
Get Results With Email MarketingGet Results With Email Marketing
Get Results With Email Marketing
 
Thewiseoldman
ThewiseoldmanThewiseoldman
Thewiseoldman
 
Remember when...
Remember when...Remember when...
Remember when...
 
Arvoredeamigos
ArvoredeamigosArvoredeamigos
Arvoredeamigos
 
Vcsは分散型へ
Vcsは分散型へVcsは分散型へ
Vcsは分散型へ
 
Protecting Data in the Cloud: The Truth about SaaS Backup
Protecting Data in the Cloud: The Truth about SaaS BackupProtecting Data in the Cloud: The Truth about SaaS Backup
Protecting Data in the Cloud: The Truth about SaaS Backup
 
Pam Britton - Leveraging Learning
Pam Britton - Leveraging LearningPam Britton - Leveraging Learning
Pam Britton - Leveraging Learning
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play framework
 
I4school collaborative 3
I4school collaborative 3I4school collaborative 3
I4school collaborative 3
 
ubd
ubdubd
ubd
 
Kennedy Creek Dispersal 2015
Kennedy Creek Dispersal 2015Kennedy Creek Dispersal 2015
Kennedy Creek Dispersal 2015
 
The Rebel’s Handbook
The Rebel’s HandbookThe Rebel’s Handbook
The Rebel’s Handbook
 
Laura Munn
Laura MunnLaura Munn
Laura Munn
 
Profile in isro 1
Profile in isro 1Profile in isro 1
Profile in isro 1
 
The Special Olympics
The Special OlympicsThe Special Olympics
The Special Olympics
 
Ecomondo - gestione relitti navali
Ecomondo - gestione relitti navaliEcomondo - gestione relitti navali
Ecomondo - gestione relitti navali
 

Semelhante a Presentazione mongo torino

Redis Cluster by S. Sanfilippo
Redis Cluster by S. SanfilippoRedis Cluster by S. Sanfilippo
Redis Cluster by S. SanfilippoCorley S.r.l.
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech LabUgo Landini
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.PyCon Italia
 
Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Simone Deponti
 
Archeo foss 2012 slides 1
Archeo foss 2012 slides 1Archeo foss 2012 slides 1
Archeo foss 2012 slides 1CSP Scarl
 
Ottimizzazione della gestione dei dati sul cloud
Ottimizzazione della gestione dei dati sul cloudOttimizzazione della gestione dei dati sul cloud
Ottimizzazione della gestione dei dati sul cloudNicolò Carandini
 
Creating highly available MongoDB Microservices with Docker Containers and Ku...
Creating highly available MongoDB Microservices with Docker Containers and Ku...Creating highly available MongoDB Microservices with Docker Containers and Ku...
Creating highly available MongoDB Microservices with Docker Containers and Ku...MongoDB
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...MongoDB
 
CCI2018 - Iperconvergenza con Windows Server
CCI2018 - Iperconvergenza con Windows ServerCCI2018 - Iperconvergenza con Windows Server
CCI2018 - Iperconvergenza con Windows Serverwalk2talk srl
 
Cassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - ItalyCassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - ItalyFabrizio Spataro
 
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLMySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLPar-Tec S.p.A.
 
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUG IT
 
Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Riccardo Zamana
 
VMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUG IT
 
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraPresentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraAndrea Mauro
 

Semelhante a Presentazione mongo torino (20)

Redis Cluster by S. Sanfilippo
Redis Cluster by S. SanfilippoRedis Cluster by S. Sanfilippo
Redis Cluster by S. Sanfilippo
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Data grid
Data gridData grid
Data grid
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech Lab
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.
 
Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i
 
Archeo foss 2012 slides 1
Archeo foss 2012 slides 1Archeo foss 2012 slides 1
Archeo foss 2012 slides 1
 
Ottimizzazione della gestione dei dati sul cloud
Ottimizzazione della gestione dei dati sul cloudOttimizzazione della gestione dei dati sul cloud
Ottimizzazione della gestione dei dati sul cloud
 
Creating highly available MongoDB Microservices with Docker Containers and Ku...
Creating highly available MongoDB Microservices with Docker Containers and Ku...Creating highly available MongoDB Microservices with Docker Containers and Ku...
Creating highly available MongoDB Microservices with Docker Containers and Ku...
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
 
No Sql Intro
No Sql IntroNo Sql Intro
No Sql Intro
 
CCI2018 - Iperconvergenza con Windows Server
CCI2018 - Iperconvergenza con Windows ServerCCI2018 - Iperconvergenza con Windows Server
CCI2018 - Iperconvergenza con Windows Server
 
E5 Transaz
E5 TransazE5 Transaz
E5 Transaz
 
Cassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - ItalyCassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - Italy
 
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLMySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
 
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
 
Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti
 
VMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terra
 
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraPresentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
 

Mais de CSP Scarl

Reti Banda Ultra Larga e Internet delle cose
Reti Banda Ultra Larga e Internet delle cose Reti Banda Ultra Larga e Internet delle cose
Reti Banda Ultra Larga e Internet delle cose CSP Scarl
 
Internet delle cose e remote sensing per agricoltura di precisione Innovazion...
Internet delle cose e remote sensing per agricoltura di precisione Innovazion...Internet delle cose e remote sensing per agricoltura di precisione Innovazion...
Internet delle cose e remote sensing per agricoltura di precisione Innovazion...CSP Scarl
 
"Iot on the field: making smart environments in everyday experience"
"Iot on the field: making smart environments in everyday experience""Iot on the field: making smart environments in everyday experience"
"Iot on the field: making smart environments in everyday experience"CSP Scarl
 
Sigevi - Tecnologie ICT applicate in agricoltura
Sigevi - Tecnologie ICT applicate in agricolturaSigevi - Tecnologie ICT applicate in agricoltura
Sigevi - Tecnologie ICT applicate in agricolturaCSP Scarl
 
Living Labs ovvero il possibile contributo delle ICT ai Presidi Territoriali ...
Living Labs ovvero il possibile contributo delle ICT ai Presidi Territoriali ...Living Labs ovvero il possibile contributo delle ICT ai Presidi Territoriali ...
Living Labs ovvero il possibile contributo delle ICT ai Presidi Territoriali ...CSP Scarl
 
Forum PA challenge: HALADIN's
Forum PA challenge: HALADIN'sForum PA challenge: HALADIN's
Forum PA challenge: HALADIN'sCSP Scarl
 
Livinglabs per nexa_duretti
Livinglabs per nexa_durettiLivinglabs per nexa_duretti
Livinglabs per nexa_durettiCSP Scarl
 
Scuola futuro prossimo
Scuola futuro prossimoScuola futuro prossimo
Scuola futuro prossimoCSP Scarl
 
Storie dal futuro: persone e cose sempre connesse - per genitori
Storie dal futuro: persone e cose sempre connesse - per genitoriStorie dal futuro: persone e cose sempre connesse - per genitori
Storie dal futuro: persone e cose sempre connesse - per genitoriCSP Scarl
 
Storie dal futuro: persone e cose sempre connesse
Storie dal futuro: persone e cose sempre connesseStorie dal futuro: persone e cose sempre connesse
Storie dal futuro: persone e cose sempre connesseCSP Scarl
 
OBSERVO - Piattaforma Open Source per la videosorveglianza territoriale
OBSERVO - Piattaforma Open Source per la videosorveglianza territorialeOBSERVO - Piattaforma Open Source per la videosorveglianza territoriale
OBSERVO - Piattaforma Open Source per la videosorveglianza territorialeCSP Scarl
 
19 Luglio 2013 - Il Futuro della TV - Sergio Duretti - CSP
19 Luglio 2013 - Il Futuro della TV - Sergio Duretti - CSP19 Luglio 2013 - Il Futuro della TV - Sergio Duretti - CSP
19 Luglio 2013 - Il Futuro della TV - Sergio Duretti - CSPCSP Scarl
 
19 Luglio 2013 - Il futuro della TV - Marco Bussone - UNCEM
19 Luglio 2013 - Il futuro della TV - Marco Bussone - UNCEM19 Luglio 2013 - Il futuro della TV - Marco Bussone - UNCEM
19 Luglio 2013 - Il futuro della TV - Marco Bussone - UNCEMCSP Scarl
 
19 Luglio 2013 - Il futuro della TV - Marco Cantamessa - I3P
19 Luglio 2013 - Il futuro della TV - Marco Cantamessa - I3P19 Luglio 2013 - Il futuro della TV - Marco Cantamessa - I3P
19 Luglio 2013 - Il futuro della TV - Marco Cantamessa - I3PCSP Scarl
 
19 Luglio 2013 - Il futuro della TV - Andrea Piersanti, Virtual & Reality Mul...
19 Luglio 2013 - Il futuro della TV - Andrea Piersanti, Virtual & Reality Mul...19 Luglio 2013 - Il futuro della TV - Andrea Piersanti, Virtual & Reality Mul...
19 Luglio 2013 - Il futuro della TV - Andrea Piersanti, Virtual & Reality Mul...CSP Scarl
 
19 Luglio 2013 - Il Futuro della Televisione -
19 Luglio 2013 - Il Futuro della Televisione - 19 Luglio 2013 - Il Futuro della Televisione -
19 Luglio 2013 - Il Futuro della Televisione - CSP Scarl
 
19 Luglio 2013 - Il Futuro della Televisione - Andrea Casalegno - Top-IX
19 Luglio 2013 - Il Futuro della Televisione - Andrea Casalegno - Top-IX19 Luglio 2013 - Il Futuro della Televisione - Andrea Casalegno - Top-IX
19 Luglio 2013 - Il Futuro della Televisione - Andrea Casalegno - Top-IXCSP Scarl
 
19 Luglio 2013 - Il Futuro della Televisione - Chiara Gallino - CSP
19 Luglio 2013 - Il Futuro della Televisione - Chiara Gallino - CSP19 Luglio 2013 - Il Futuro della Televisione - Chiara Gallino - CSP
19 Luglio 2013 - Il Futuro della Televisione - Chiara Gallino - CSPCSP Scarl
 
19 Luglio 2013 - Il Futuro della Televisione - Fabrizio Gramaglia, Finpiemonte
19 Luglio 2013 - Il Futuro della Televisione - Fabrizio Gramaglia, Finpiemonte19 Luglio 2013 - Il Futuro della Televisione - Fabrizio Gramaglia, Finpiemonte
19 Luglio 2013 - Il Futuro della Televisione - Fabrizio Gramaglia, FinpiemonteCSP Scarl
 
Seminario ict agricoltura
Seminario ict agricolturaSeminario ict agricoltura
Seminario ict agricolturaCSP Scarl
 

Mais de CSP Scarl (20)

Reti Banda Ultra Larga e Internet delle cose
Reti Banda Ultra Larga e Internet delle cose Reti Banda Ultra Larga e Internet delle cose
Reti Banda Ultra Larga e Internet delle cose
 
Internet delle cose e remote sensing per agricoltura di precisione Innovazion...
Internet delle cose e remote sensing per agricoltura di precisione Innovazion...Internet delle cose e remote sensing per agricoltura di precisione Innovazion...
Internet delle cose e remote sensing per agricoltura di precisione Innovazion...
 
"Iot on the field: making smart environments in everyday experience"
"Iot on the field: making smart environments in everyday experience""Iot on the field: making smart environments in everyday experience"
"Iot on the field: making smart environments in everyday experience"
 
Sigevi - Tecnologie ICT applicate in agricoltura
Sigevi - Tecnologie ICT applicate in agricolturaSigevi - Tecnologie ICT applicate in agricoltura
Sigevi - Tecnologie ICT applicate in agricoltura
 
Living Labs ovvero il possibile contributo delle ICT ai Presidi Territoriali ...
Living Labs ovvero il possibile contributo delle ICT ai Presidi Territoriali ...Living Labs ovvero il possibile contributo delle ICT ai Presidi Territoriali ...
Living Labs ovvero il possibile contributo delle ICT ai Presidi Territoriali ...
 
Forum PA challenge: HALADIN's
Forum PA challenge: HALADIN'sForum PA challenge: HALADIN's
Forum PA challenge: HALADIN's
 
Livinglabs per nexa_duretti
Livinglabs per nexa_durettiLivinglabs per nexa_duretti
Livinglabs per nexa_duretti
 
Scuola futuro prossimo
Scuola futuro prossimoScuola futuro prossimo
Scuola futuro prossimo
 
Storie dal futuro: persone e cose sempre connesse - per genitori
Storie dal futuro: persone e cose sempre connesse - per genitoriStorie dal futuro: persone e cose sempre connesse - per genitori
Storie dal futuro: persone e cose sempre connesse - per genitori
 
Storie dal futuro: persone e cose sempre connesse
Storie dal futuro: persone e cose sempre connesseStorie dal futuro: persone e cose sempre connesse
Storie dal futuro: persone e cose sempre connesse
 
OBSERVO - Piattaforma Open Source per la videosorveglianza territoriale
OBSERVO - Piattaforma Open Source per la videosorveglianza territorialeOBSERVO - Piattaforma Open Source per la videosorveglianza territoriale
OBSERVO - Piattaforma Open Source per la videosorveglianza territoriale
 
19 Luglio 2013 - Il Futuro della TV - Sergio Duretti - CSP
19 Luglio 2013 - Il Futuro della TV - Sergio Duretti - CSP19 Luglio 2013 - Il Futuro della TV - Sergio Duretti - CSP
19 Luglio 2013 - Il Futuro della TV - Sergio Duretti - CSP
 
19 Luglio 2013 - Il futuro della TV - Marco Bussone - UNCEM
19 Luglio 2013 - Il futuro della TV - Marco Bussone - UNCEM19 Luglio 2013 - Il futuro della TV - Marco Bussone - UNCEM
19 Luglio 2013 - Il futuro della TV - Marco Bussone - UNCEM
 
19 Luglio 2013 - Il futuro della TV - Marco Cantamessa - I3P
19 Luglio 2013 - Il futuro della TV - Marco Cantamessa - I3P19 Luglio 2013 - Il futuro della TV - Marco Cantamessa - I3P
19 Luglio 2013 - Il futuro della TV - Marco Cantamessa - I3P
 
19 Luglio 2013 - Il futuro della TV - Andrea Piersanti, Virtual & Reality Mul...
19 Luglio 2013 - Il futuro della TV - Andrea Piersanti, Virtual & Reality Mul...19 Luglio 2013 - Il futuro della TV - Andrea Piersanti, Virtual & Reality Mul...
19 Luglio 2013 - Il futuro della TV - Andrea Piersanti, Virtual & Reality Mul...
 
19 Luglio 2013 - Il Futuro della Televisione -
19 Luglio 2013 - Il Futuro della Televisione - 19 Luglio 2013 - Il Futuro della Televisione -
19 Luglio 2013 - Il Futuro della Televisione -
 
19 Luglio 2013 - Il Futuro della Televisione - Andrea Casalegno - Top-IX
19 Luglio 2013 - Il Futuro della Televisione - Andrea Casalegno - Top-IX19 Luglio 2013 - Il Futuro della Televisione - Andrea Casalegno - Top-IX
19 Luglio 2013 - Il Futuro della Televisione - Andrea Casalegno - Top-IX
 
19 Luglio 2013 - Il Futuro della Televisione - Chiara Gallino - CSP
19 Luglio 2013 - Il Futuro della Televisione - Chiara Gallino - CSP19 Luglio 2013 - Il Futuro della Televisione - Chiara Gallino - CSP
19 Luglio 2013 - Il Futuro della Televisione - Chiara Gallino - CSP
 
19 Luglio 2013 - Il Futuro della Televisione - Fabrizio Gramaglia, Finpiemonte
19 Luglio 2013 - Il Futuro della Televisione - Fabrizio Gramaglia, Finpiemonte19 Luglio 2013 - Il Futuro della Televisione - Fabrizio Gramaglia, Finpiemonte
19 Luglio 2013 - Il Futuro della Televisione - Fabrizio Gramaglia, Finpiemonte
 
Seminario ict agricoltura
Seminario ict agricolturaSeminario ict agricoltura
Seminario ict agricoltura
 

Presentazione mongo torino

  • 1. Web scalabile con Nginx e MongoDB ovvero NOSQL e nuovi demoni HTTP alla base della scalabilità del web Diego Guenzi Collaboratore - Area Distributed Computing Direzione Progettazione e Gestione Risorse 1
  • 2. Problematiche & obiettivi • Individuare alternative rispetto a prodotti (spesso) commerciali di memorizzazione dati • Analisi per CSI Piemonte • Requisiti: – Specificità (vs general purpose) – Utilizzo di commodity hardware – Operare in ambienti distribuiti / cloud – Opensource (=ridurre i costi ed evitare il più possibile vendor lock-in) – Possibilità di scalare orizzontalmente e verticalmente, sia per lo storage, sia per la capacità di calcolo – Tolleranza ai guasti e robustezza • Paper GARR 2010 di Torino 2
  • 3. NOSQL • Movimento che promuove una classe non ben definita di strumenti di archiviazione di dati • Not Only SQL: – Non è un movimento contro l’SQL – Esistono delle alternative ai RDBMS – The right tool for the job • Strumenti nati per ambienti distribuiti, dove l'eccezione è l'uso su macchine stand-alone • Si differenziano dai RDBMS: – Non utilizzano il tradizionale SQL – Non adottano schemi tabellari fissi (dati semi- strutturati) – Evitano join – Scalano facilmente su commodity hardware 3
  • 4. Scalabilità • Verticale – Potenziamento hardware – Costo esponenziale • Orizzontale – Numero di macchine – Costo lineare 4
  • 5. Scalabilità RDBMS • Verticale – OK • Orizzontale – Problematica: tecniche complesse con degrado delle performance 5
  • 6. Scalabilità DB NOSQL • Verticale – OK • Orizzontale – OK 6
  • 7. Solo scalabilità? • Scalare orizzontalmente => avere più macchine – Fault tolerance – Load balancing – High availability • Avere più macchine => poter distribuire e replicare i dati su più nodi – Uso ideale in ambienti distribuiti – Affidabilità – Elevate prestazioni • Tutto in bundle, senza bisogno di software aggiuntivi! 7
  • 8. Shared-nothing vs shared-disk • Necessita di un numero minore di lock • Caching migliore e più snello • Può richiedere l’uso di TPC (2PC) per le operazioni che riguardano più nodi • Recuperare dati non indicizzati richiede operazioni su ogni macchina 8
  • 9. Ambienti distribuiti - Pro 10*1=10 10*2=20 10*3=30 10*4=40 10*4=40 10*5=50 10*5=50 10*6=60 10*6=60 10*1=10 10*7=70 10*2=20 10*8=80 10*3=30 10*9=90 10*10=100 10*11=110 10*12=120 10*13=130 10*10=100 10*14=140 10*11=110 10*15=150 10*12=120 VS 10*13=130 10*14=140 10*7=70 10*15=150 10*8=80 10*9=90 9
  • 13. Il teorema CAP • Congettura di Brewer (2000), dimostrata da Gilbert e Lynch (2002) e divenuta un teorema • Consistency, Availability e Partition tolerance – Non si possono avere tutte e tre, al massimo due! 13
  • 14. Il teorema CAP Consistency C Consistenza – Ogni client ha la stessa visione dei dati DBMS NOSQL RDBMS CP Teorema CA CAP: due su tre P A PA DBMS NOSQL Availability Partition Tolerance Disponibilità – Ogni client può Tolleranza al partizionamento – Il sempre leggere e scrivere, dato sistema funziona correttamente che il servizio risulta sempre nonostante il partizionamento attivo e funzionale della rete 14
  • 15. Teorema CAP - CA • Filosofia adottata nei RDBMS tradizionali • Evitare il network partitioning tenendo i dati in un unico punto • Non scala orizzontalmente 15
  • 16. Teorema CAP - PA • Se si verifica un network partitioning, offriamo una eventual consistency • Possibilità che si generino risposte differenti da server differenti • Allo scomparire del partizionamento si torna ad una strong consistency 16
  • 17. Teorema CAP - CP • Se si verifica un network partitioning “sospendiamo” o limitiamo il servizio • Possibilità che alcuni dati siano reperibili, altri no • Allo scomparire del partizionamento, tutti i dati ritornano reperibili 17
  • 18. ACID vs BASE • Atomicity, • Basically • Consistency, available, • Isolation & • Soft state & • Durability • Eventually consistent RDBMS DBMS NOSQL 18
  • 19. Replica Nome: “Mario” Cognome: “Rossi” Età: 48 Nome: “Mario” Cognome: “Rossi” Età: 48 Nome: “Mario” Cognome: “Rossi” Età: 48 Nome: “Mario” Cognome: “Rossi” Nome: “Mario” Età: 48 Cognome: “Rossi” Età: 48 19
  • 20. Eventual consistency Nome: “Mario” Cognome: “Rossi” Età: 48 Nome: “Mario” Cognome: “Rossi” Età: 48 Nome: “Mario” Cognome: “Rossi” Età: 48 Nome: “Mario” Cognome: “Rossi” Nome: “Mario” Età: 48 Cognome: “Rossi” Età: 49 20
  • 21. Eventual consistency Nome: “Mario” Cognome: “Rossi” Età: 48 Nome: “Mario” Cognome: “Rossi” Età: 48 Nome: “Mario” Cognome: “Rossi” Età: 49 Nome: “Mario” Cognome: “Rossi” Nome: “Mario” Età: 49 Cognome: “Rossi” Età: 49 21
  • 22. Strong Consistency Nome: “Mario” Cognome: “Rossi” Età: 49 Nome: “Mario” Cognome: “Rossi” Età: 49 Nome: “Mario” Cognome: “Rossi” Età: 49 Nome: “Mario” Cognome: “Rossi” Nome: “Mario” Età: 49 Cognome: “Rossi” Età: 49 22
  • 23. Sharding Nome: “Mario” Cognome: “Rossi” Età: 49 Nome: “Ugo” Cognome: “Verdi” Età: 37 Nome: “Antonio” Cognome: “Bianchi” Età: 30 Nome: “Viola” Cognome: “Gialli” Età: ?? Nome: “Marisa” Cognome: “Azzurri” Nome: “Viola” Età: 56 Cognome: “Gialli” Età: 50 23
  • 24. Sharding Nome: “Viola” Cognome: “Gialli” Nome: “Mario” Età: 50 Cognome: “Rossi” Età: 49 Nome: “Ugo” Cognome: “Verdi” Età: 37 Nome: “Antonio” Cognome: “Bianchi” Età: 30 Nome: “Marisa” Cognome: “Azzurri” Nome: “Viola” Età: 56 Cognome: “Gialli” Età: 50 24
  • 25. Basic Availability ??? Nome: “Mario” Cognome: “Rossi” Età: 49 Nome: “Ugo” Cognome: “Verdi” Età: 37 Nome: “Antonio” Cognome: “Bianchi” Età: 30 Nome: “Viola” Cognome: “Gialli” Età: ?? Nome: “Marisa” Cognome: “Azzurri” Nome: “Viola” Età: 56 Cognome: “Gialli” Età: 50 25
  • 26. Replica e sharding “Mario”,“Rossi”, 49 “Ugo”,”Verdi”, 37 “Antonio”,”Bianchi”, 30 “Mario”,“Rossi”, 49 “Antonio”,”Bianchi”, 30 “Mario”,“Rossi”, 49 “Viola”,”Gialli”, 50 “Ugo”,”Verdi”, 37 “Viola”,”Gialli”, 50 “Ugo”,”Verdi”, 37 “Antonio”,”Bianchi”, 30 “Viola”,”Gialli”, 50 26
  • 29. I data model Modello dei dati nei DBMS NOSQL Esempi di DBMS NOSQL ● Chiave-Valore ● Berkley DB ● MemcacheDB ● Redis ● Dynamo ● Voldemort ● Orientato alle colonne ● BigTable ● Hypertable ● HBase ● Cassandra ● Orientato ai documenti ● SimpleDB ● CouchDB ● Riak ● MongoDB ● Orientato ai grafi ● Neo4j 29
  • 30. Benchmarking: YCSB • Yahoo Cloud Serving Benchmark. • Una piattaforma comune per il benchmarking dei DBMS NOSQL (e non solo). 30
  • 31. MongoDB • Architettura orientata ai documenti (formato JSON/BSON) • Software opensource scritto in C++ utilizzato da grossi siti quali bit.ly, github.com e sourceforge.net • Memorizzazione di dati binari molto semplice ed efficiente grazie a GridFS • Ottima gestione degli indici e delle collezioni • Possibilità di fare query tramite Javascript • Replica dei server (replica set) e sharding • Supporta API verso molti linguaggi (Driver) 31
  • 32. Architettura (base e replica) Client / Server • Basata su due processi • Il client può essere sia un applicativo utente, sia la shell di MongoDB Replica set • Estensione del client / server • Più di un processo server, che dialogano fra loro per sincronizzare i dati 32
  • 33. Architettura (sharding) Sharding • Si aggiungono un config server (metadati) e un mongos (instradamento delle richieste) • I dati sono partizionati all'interno dei mongod 33
  • 34. Architettura (sharding+replica) Sharding + Replica set • La configurazione più completa, per avere fault tolerance e bilanciamento 34
  • 36. Infinite possibilità • Creazione di un'appliance con MongoDB • Stile Oracle Exadata Database Machine • Mongo-in-a-box = 36
  • 37. SQL scalabile • Una via di mezzo fra il mondo NOSQL e quello relazionale: – Uso di tabelle relazionali e di SQL – Stessa scalabilità dei DBMS NOSQL • Molti prodotti stanno nascendo: VoltDB, MySQL Cluster (NDB), ScaleDB, Xeround… – Molti storage engine per MySQL 37
  • 38. Standard del mondo NOSQL • Carenza di linguaggi e protocolli standard • Tecnologia recente e, a volte, parzialmente immatura • Esistenza di diversi tentativi di standardizzazione tramite layer comuni ai DBMS – Pig e Hive – SPARQL – GUI con supporto multi-DB – Wrapper / Driver per API multi-DB 38
  • 39. Server web e C10K • Avere uno storage scalabile non è tutto • Anche i web server devono scalare facilmente • Sfida: 10.000 connessioni HTTP contemporanee • Nuovi server oltre ad Apache e IIS – costruiti su linee progettuali differenti – lightweight – riescono a superare le 10.000 connessioni contemporanee (risolvono il problema C10K) 39
  • 40. Esempi di successo: un URL shortner 40
  • 41. Un demone HTTP ottimizzato • Utilizzato come web server, load balancer e proxy sotto licenza BSD-like • Supporta lo streaming di FLV e MP4 • Permette l'uso di SSL e TLS • Più leggero e veloce: utilizza un’architettura di tipo event-driven (asincrona) invece dei classici thread • Gestisce un numero di connessioni maggiore rispetto agli altri prodotti presenti sul mercato 41
  • 42. Utilizzo – Agosto 2011 Alcuni esempi: http://sourceforge.net/ http://www.yellowpages.com/ http://www.whitepages.com/ http://www.filestube.com/ http://www.torrentreactor.net/ http://www.scribd.com/ http://wordpress.com/ http://wordpress.org/ https://github.com/ http://www.rambler.ru/ http://www.yandex.ru/ http://www.hulu.com/ http://www.ohloh.net/ https://www.tumblr.com/ http://www.chinanews.com/ http://www.soso.com/ http://www.163.com/ http://twitpic.com/ http://new.evite.com/ http://yfrog.com/ http://www.simplyhired.com/ http://www.wikihow.com/ http://brainient.com/ http://www.examiner.com/ http://fastmail.fm/ http://autoregister.co.uk/ ... fonte: 42
  • 43. Apache non molla • Apache HTTP server gode di: – forte integrazione con i pannelli di controllo per hosting – un numero elevato di moduli ed estensioni – una presenza sul mercato pluriennale (1995) • I nuovi server web (e Nginx primo fra tutti) offrono prestazioni migliori ma: – sono spesso poco supportati da altri applicativi (perché poco diffusi) – i moduli e le estensioni disponibili sono ancora limitati (ma in rapido aumento) – sono ancora piuttosto immaturi (sebbene stabili) 43
  • 44. Test pagine statiche Apache - Nginx - No KeepAlive Nginx 10000 Apache 8940,23 9000 8000 7007 6978,27 6936,81 6844,04 7000 6544,46 6634,11 5951,31 5873,25 6000 Requests/sec 5269,86 5000 4000 3000 2000 1000 381,18 367,11 366,68 373,96 320,57 372,28 366,63 302,61 369,88 384,00 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Concurrency • HP Proliant G4 – Dual Xeon dual core – 2Gb RAM – 685 Gb Raid local storage 44
  • 45. Architetture web scalabili - 1/3 • Scalabilità orizzontale con macchine tutte identiche • Semplicità di gestione 45
  • 46. Architetture web scalabili - 2/3 • Scalabilità orizzontale su 2 livelli • Load balancer separato 46
  • 47. Architetture web scalabili - 3/3 • Scalabilità orizzontale su 3 livelli • Aggiungo macchine solo dove serve • Eventuale load balancer ulteriore 47
  • 48. Alcuni test di fault tolerance • Down di una macchina del DB tollerato senza interruzione del servizio – Numero di macchine variabile in base al fattore di replica e di sharding, alla presenza di un arbiter e al peso dei nodi – Conseguente ripristino del servizio con sincronizzazione automatica • Fallimento di un supporto di memorizzazione → Sincronizzazione automatica recuperando i dati da un altro nodo appartenente allo stesso replica set • Down di un nodo PHP → Nginx sposta il carico in automatico sull'altro (o sugli altri) nodo – Al ritorno on-line, ribilanciamento automatico da parte di Nginx 48
  • 49. Test di paragone - 1/4 vs • Dell PowerEdge R610 – Dual Xeon quad core L5520 – 32Gb RAM – 160 Gb SAS local storage 49
  • 50. Test di paragone - 2/4 vs 1600 1400 1200 Tempo di esecuzione 1000 800 Apache 600 Nginx 400 200 0 1 2 3 4 5 6 7 8 9 10 # test 1600 1400 1200 Tempo di esecuzione 1000 Pre-ottimizzazione 800 MongoDB 600 MySQL 400 200 0 1 2 3 4 5 6 7 8 # test 50
  • 51. Test di paragone - 3/4 vs 700 600 Tempo di esecuzione 500 400 Apache 300 Nginx 200 100 0 1 2 3 4 5 6 7 8 9 10 # test 700 600 Tempo di esecuzione 500 400 Post-ottimizzazione 300 MongoDB MySQL 200 100 0 1 2 3 4 5 6 7 8 # test 51
  • 52. Test di paragone - 4/4 700 600 Tempi di esecuzione 500 400 Cassandra 300 MongoDB MySQL 200 100 0 1 2 3 4 5 6 7 8 # test (1-4 = Apache, 5-8 = Nginx) 800 700 600 Errori non-2xx 500 400 Cassandra MongoDB 300 MySQL 200 100 0 1 2 3 4 5 6 7 8 # test (1-4 = Apache, 5-8 = Nginx) 52
  • 53. Conclusioni Pillola azzurra, fine della storia: domani ti sveglierai in camera tua, e crederai a quello che vorrai Pillola rossa, resti nel paese delle meraviglie, e vedrai quant'è profonda la tana del bianconiglio 53
  • 54. Contatti http://www.mongotorino.org diego.guenzi@csp.it rodolfo.boraso@csp.it CSP innovazione nelle ICT Sede via Livorno 60 - 10144 Torino Edificio Laboratori A1 Tel +39 011 4815111 Fax +39 011 4815001 E-mail: info@csp.it Seconda sede operativa Villa Gualino - Viale Settimio Severo 63 10133 Torino www.csp.it 54