Date post: | 22-May-2015 |
Category: |
Technology |
Upload: | franco-caporale |
View: | 437 times |
Download: | 4 times |
Introduzione a NoSQL e Couchbase
Franco Caporale
Perché il NoSQL?
Tre Nuove Tendenze
Big Data SaaS/Cloud MolC UtenC
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
2000 2006 2011 Source: IDC 2011 Digital Universe Study (h<p://www.emc.com/collateral/demos/microsites/emc-‐digital-‐universe-‐2011/index.htm)
Trillions of G
igabytes (Ze<
abytes)
Big Data • DaC molto eterogenei a crescita esponenziale
DaC Non StruMuraC
DaC StruMuraC
Text, Log Files, Click Streams, Blogs, Tweets,
Audio, Video, etc.
E’ necessario un modello dei daC piu’ flessibile
MolC UtenC • UtenC da tuMo il mondo, sempre connessi
UtenC Smartphone
Ore passate online
35 Miliardi di ore
1Miliardo
+
Popolazione online
2Miliardi
+
h<p://www.go-‐gulf.com/blog/online-‐Jme h<p://business.Jme.com/2012/02/14/one-‐billion-‐smartphones-‐by-‐2016-‐here-‐comes-‐the-‐mobile-‐arms-‐race/
E’ necessario un database facile da scalare
SaaS/Cloud • Le nuove applicazioni uClizzano un’architeMura a 3 livelli
ArchiteMura client/server
Client User interface Business and data processing logic
Database Server Data
LAN
Moderna architeMura a 3 livelli
Web/App Server Tier
Cloud Public/Private/Hybrid Cloud
Database Server Tier
INTERN
ET
Un database che si puo’ scalare orizzontalmente si adaMa bene alle applicazioni su cloud
NoSQL + +
Piu’ daC Piu’ utenC SaaS/Cloud
Scalabilita’, performance e facilita’ di sviluppo
In mancanza di una soluzione gli utenC se la sono inventata
Dynamo October 2007
Cassandra August 2008
Voldemort February 2009 November 2006
Bigtable
Poche aziende sono in grado di costruirsi e mantenersi un database
Draw Something
Draw Something – OMGPop
Draw Something diventa virale in 3 sebmane
19 17 15 13 11 9 7 5 3 3/1 28 26 24 22 20 18 16 14 12 10 8 2/6
Daily Ac)ve Users (millions)
21
2
4
6
8
10
12
14
16
I daC crescono in modo non lineare…
19 17 15 13 11 9 7 5 3 3/1 28 26 24 22 20 18 16 14 12 10 8 2/6
Daily Ac)ve Users (millions)
21
2
4
6
8
10
12
14
16
In un mese 30,000,000 di downloads della app, oltre 5,000 disegni al secondo,
oltre 2,200,000,000 disegni immagazzinaJ, oltre 105,000 operazioni al secondo, e oltre 3.3 terabytes di daJ in totale.
Invece con RDBMS……
19 17 15 13 11 9 7 5 3 3/1 28 26 24 22 20 18 16 14 12 10 8 2/6
The Simpson’s: Tapped Out Daily Ac)ve Users (millions)
21
2
4
6
8
10
12
14
16
#2 Free app on iPad #3 Free app on iPhone
MySQL o NoSQL?
La maggioranza delle applicazioni uClizzano gli RDBMS
E a volte puo’ diventare un po’ grande…..
h<p://www.seoclerks.com/imagedb/2005/BIG-‐CAT-‐FOUND-‐Spoh
……o forse enorme!
h<p://www.2pep.com/extreme-‐funny-‐stuff/
E complicato!
I principali moCvi per l’adozione del NoSQL
Schema rigido e non flessibile
Difficolta’ a scalare
Problemi di performance
CosC Tub I precedenC
Altri
49%
35%
29%
16% 12% 11%
Source: Couchbase Survey, December 2011, n = 1351.
Architettura moderna di un’applicazione web
Application Scales Out Just add more commodity web servers
Database Scales Up Get a bigger, more complex server
Nota – I database relazionali sono una tecnologia eccellente ma non per questo uso.
I database NoSQL utilizzano la stessa logica dell’applicazione
Application Scales Out Just add more commodity web servers
Database Scales Out Just add more commodity data servers
Scalando orizzontalmente si riducono I costi e aumentano le performance
NoSQL Database Servers
Una StruMura dei DaC Diversa
Modello Relazionale vs. A Documento
Modello “Relazionale” Modello “A documento” Collezione di documenJ complessi con formaJ arbitrari e schema variabile
Tabelle con schema rigido e stru<ura dei daJ predefinita
JSON JSON
JSON
C1 C2 C3 C4
{ }
Database a Documento
• Ogni record e’ un documento a se’ stante
• Ogni documento ha una stru<ura indipendente
• I documenJ possono essere complessi • Richiedono una chiave unica • I daJ sono immagazzinaJ in formato JSON, XML o simili
• Il contenuto puo’ essere indicizzato e interrogato
• Offrono sharding automaJco e repliche
{ “UUID”: “21f7f8de-‐8051-‐5b89-‐86“Time”: “2011-‐04-‐01T13:01:02.42“Server”: “A2223E”,“Calling Server”: “A2213W”,“Type”: “E100”,“Initiating User”: “[email protected]”,“Details”:
{“IP”: “10.1.1.22”,“API”: “InsertDVDQueueItem”,“Trace”: “cleansed”,“Tags”:
[“SERVER”, “US-‐West”, “API”]
}}
Esempio Social Game Profilo Giocatore
{ "jsonType": "player", "uuid": "35767d02-‐a958-‐4b83-‐8179-‐616816692de1", "name": "Keith4540", "hitpoints": 75, "experience": 663, "level": 4, "loggedIn": false
}
ID Utente
Esempio Social Game OggeMo
{ "jsonType": "item", "name": "Katana_e5890c94-‐11c6-‐65746ce6c560", "uuid": "e5890c94-‐11c6-‐4856-‐a7a6-‐65746ce6c560", "ownerId": "Dale9887"
}
ID OggeMo
ID Utente
Esempio Social Game Mostro
{ "jsonType": "monster", "name": "Bauchan9932", "uuid": "d10dfc1b-‐0412-‐4140-‐b4ec-‐affdbf2aa5ec", "hitpoints": 370, "experienceWhenKilled": 52, "itemProbability": 0.5050581341872865
}
ID Mostro
Esempio Blog Diviso su piu’ DocumenC
{ “UUID”: “21f7f8de-‐8051-‐5b89-‐86“Time”: “2011-‐04-‐01T13:01:02.42“Server”: “A2223E”,“Calling Server”: “A2213W”,“Type”: “E100”,“Initiating User”: “[email protected]”,“Details”:
{“IP”: “10.1.1.22”,“API”: “InsertDVDQueueItem”,“Trace”: “cleansed”,“Tags”:
[“SERVER”, “US-‐West”, “API”]
}}
{ !“_id”: “Coucbase_Hello_World”,!“author”: “dborkar”, !“type”: “post”!“title”: “Hello World”,!“format”: “markdown”, !“body”: “Hello from [Couchbase](http://couchbase.com).”, !“html”: “<p>Hello from <a href=\“http: …!“comments”:[!
! “comment1_Couchbase_Hello_world”!! ]!
}!{ “UUID”: “21f7f8de-‐8051-‐5b89-‐86“Time”: “2011-‐04-‐01T13:01:02.42“Server”: “A2223E”,“Calling Server”: “A2213W”,“Type”: “E100”,“Initiating User”: “[email protected]”,“Details”:
{“IP”: “10.1.1.22”,“API”: “InsertDVDQueueItem”,“Trace”: “cleansed”,“Tags”:
[“SERVER”, “US-‐West”, “API”]
}}
{!“_id”: “comment1_Couchbase_Hello_World”,!“format”: “markdown”, !“body”:”Awesome post!” !}
BLOG
COMMENTI
Esempio: Profilo Utente Database Relazionale
Indirizzo Utente
1 DEN 30303 CO
2 MV 94040 CA
3 CHI 60609 IL
Informazioni Utente
KEY First ZIP_id Last
4 NY 10010 NY
1 DipC 2 Borkar
2 Joe
2 Smith
3 Ali 2 Dodson
4 John 3 Doe
ZIP_id CITY ZIP STATE
1 2
2 MV 94040 CA
Per oMenere informazioni su un utente specifico, devi effeMuare un JOIN tra due tabelle
Tub I daC di un utente in un singolo documento
{ “ID”: 1, “FIRST”: “DipC”, “LAST”: “Borkar”, “ZIP”: “94040”, “CITY”: “MV”, “STATE”: “CA” }
JSON
= +
Esempio: Profilo Utente Database a Documento
User ID Nome Cognome CAP
1 DipC Borkar 94040
2 Joe Smith 94040
3 Ali Dodson 94040
4 Sarah Gorin NW1
5 Bob Young 30303
6 Nancy Baker 10010
7 Ray Jones 31311
8 Lee Chen V5V3M
• • •
50000 Doug Moore 04252
50001 Mary White SW195
50002 Lisa Clark 12425
ID Paese TEL3
001
ID Paese Nome Paese
001 USA
002 UK
003 ArgenCna
004 Australia
005 Aruba
006 Austria
007 Brazil
008 Canada
009 Chile
• • •
130 Portugal
131 Romania
132 Russia
133 Spain
134 Sweden
User ID Foto ID Commento
2 d043 NYC
2 b054 Bday
5 c036 Miami
7 d072 Sunset
5002 e086 Spain
Tabella Foto
001
007
001
133
133
User ID Status ID Text
1 a42 At conf
4 b26 excited
5 c32 hockey
12 d83 Go A’s
5000 e34 sailing
Tabella Status
134
007
008
001
005
Tabella Paese
User ID Affl ID Affl Name
2 a42 Cal
4 b96 USC
7 c14 UW
8 e22 Oxford
Tabella Affiliazioni ID Paese
001
001
001
002
ID Paese
ID Paese
001
001
002
001
001
001
008
001
002
001
Tabella Utente
. . .
EffeMuare una Modifica su RDBMS
Modifiche su un database a documento
{ “ID”: 1, “FIRST”: “Don”, “LAST”: “Pinto”, “ZIP”: “94040”, “CITY”: “MV”, “STATE”: “CA”, “STATUS”: { “TEXT”: “At Conf”
}
}
“GEO_LOC”: “134” }, “COUNTRY”: ”USA”
Basta aggiungere le informazioni sul documento
JSON
, }
I Database NoSQL
Catalogo dei NoSQL
Chiave-‐Valore
Memcached Redis
StruMura DaC Documento Colonna Grafico
MongoDB
Couchbase Cassandra
Cache
(mem
ory on
ly)
Database
(mem
ory/disk)
Neo4J
Couchbase Open Source
• Il principale database NoSQL distribuito
• Supporta sia le applicazioni chiave-‐valore che a documento
• Tun I componenJ sono disponibili con licenza Apache 2.0 Public License
• Disponibile come pacche<o sooware sia nella versione Community che in quella Enterprise
Couchbase Open Source Project
≠
Scalabilita’ Semplice
Performance Elevate e CostanJ
Sempre Live 24x365
Ingrandisci il tuo cluster con un click mentre l’applicazione
rimane live
Tempi di risposta costanJ so<o il millisecondo per operazioni di
scri<ura e le<ura
L’applicazione non e’ mai inanva anche in caso di
aggiornamenJ, manutenzione etc.
Modello DaJ Flessibile
Supporto per documenJ JSON senza uno schema rigido
Principi Chiave di Couchbase Server
Differenze Principali RispeMo ad Altri Database NoSQL
• Perme<e un alJssimo numero di connessioni contemporanee (fondamentale per applicazioni web interanve)
• Nessun locks • Cache naJva • Hash parJJoning (non range)
à non si formano “hotspots”
• Sharding automaJco
Dietro le Quinte di Couchbase
3 3 2
Server Singolo-‐ Operazione ScriMura con Couchbase
Managed Cache
Disk Que
ue
ReplicaJon Queue
App Server
Doc 1’
Doc 1
Doc 1’ Doc 1
Doc 1’
Disk
To other node
Couchbase Server Node
GET
Doc 1
3 3 2
Server Singolo-‐ Operazione LeMura con Couchbase
Disk Que
ue
ReplicaJon Queue
App Server
Doc 1
Doc 1 Doc 1
Managed Cache
Disk
To other node
Couchbase Server Node
COUCHBASE SERVER CLUSTER
Operazioni di Base sul Cluster
• Tub I nodi sono uguali e I documenC sono ugualmente distribuiC
• Ogni server conCene sia I documenC abvi che quelli replica
• La mappa del cluster ha le coordinate su dove si trovano I documenC L’applicazione non ha bisogno di saperlo
User Configured Replica Count = 1
READ/WRITE/UPDATE
ACTIVE
Doc 5
Doc 2
Doc
Doc
Doc
SERVER 1 ACTIVE
Doc 4
Doc 7
Doc
Doc
Doc
SERVER 2
Doc 8
ACTIVE
Doc 1
Doc 3
Doc
Doc
Doc
REPLICA
Doc 4
Doc 1
Doc 8
Doc
Doc
Doc
REPLICA
Doc 6
Doc 3
Doc 2
Doc
Doc
Doc
REPLICA
Doc 7
Doc 9
Doc 5
Doc
Doc
Doc
SERVER 3
Doc 6
APP SERVER 1
COUCHBASE Client Library CLUSTER MAP
COUCHBASE Client Library CLUSTER MAP
APP SERVER 2
Doc 9
Aggiungere Nodi al Cluster
• Due servers aggiunC con un solo click
• I documenC vengono automaCcamente ribilanciaC aMraverso il cluster Col minimo spostamento di documenJ possibile
• La mappa del cluster viene aggiornata
• L’applicazione ora e’ supportata da un numero maggiore di servers.
REPLICA
ACTIVE
Doc 5
Doc 2
Doc
Doc
Doc 4
Doc 1
Doc
Doc
SERVER 1
REPLICA
ACTIVE
Doc 4
Doc 7
Doc
Doc
Doc 6
Doc 3
Doc
Doc
SERVER 2
REPLICA
ACTIVE
Doc 1
Doc 3
Doc
Doc
Doc 7
Doc 9
Doc
Doc
SERVER 3
SERVER 4
SERVER 5
REPLICA
ACTIVE
REPLICA
ACTIVE
Doc
Doc 8 Doc
Doc 9 Doc
Doc 2 Doc
Doc 8 Doc
Doc 5 Doc
Doc 6
READ/WRITE/UPDATE READ/WRITE/UPDATE
APP SERVER 1
COUCHBASE Client Library CLUSTER MAP
COUCHBASE Client Library CLUSTER MAP
APP SERVER 2
COUCHBASE SERVER CLUSTER
User Configured Replica Count = 1
Caduta di un Nodo
REPLICA
ACTIVE
Doc 5
Doc 2
Doc
Doc
Doc 4
Doc 1
Doc
Doc
SERVER 1
REPLICA
ACTIVE
Doc 4
Doc 7
Doc
Doc
Doc 6
Doc 3
Doc
Doc
SERVER 2
REPLICA
ACTIVE
Doc 1
Doc 10
Doc
Doc
Doc 7
Doc 9
Doc
Doc
SERVER 3
SERVER 4
SERVER 5
REPLICA
ACTIVE
REPLICA
ACTIVE
Doc 9
Doc 8
Doc Doc 6 Doc
Doc
Doc 5 Doc 10
Doc 2
Doc 8 Doc
Doc
• I server della app accedono ai daC
• Le richieste al Server 3 falliscono
• Il Cluster idenCfica che un nodo e’ offline Le repliche vengono promosse ad anve e la mappa del cluster viene aggiornata
• Le richieste della app ora si dirigono sul server appropriato
• Il tuMo e’ seguito dal ribilanciamento dei daC
Doc
Doc 1 Doc 3
APP SERVER 1
COUCHBASE Client Library CLUSTER MAP
COUCHBASE Client Library CLUSTER MAP
APP SERVER 2
User Configured Replica Count = 1
COUCHBASE SERVER CLUSTER
Cross Data Center ReplicaCon (XDCR) COUCHBASE SERVER CLUSTER NY DATA CENTER
ACTIVE
Doc
Doc 2
SERVER 1
Doc 9
SERVER 2
SERVER 3
RAM
Doc Doc Doc
ACTIVE
Doc
Doc
Doc RAM
ACTIVE
Doc
Doc
Doc RAM
DISK
Doc Doc Doc
DISK
Doc Doc Doc
DISK
COUCHBASE SERVER CLUSTER SF DATA CENTER
ACTIVE
Doc
Doc 2
SERVER 1
Doc 9
SERVER 2
SERVER 3
RAM
Doc Doc Doc
ACTIVE
Doc
Doc
Doc RAM
ACTIVE
Doc
Doc
Doc RAM
DISK
Doc Doc Doc
DISK
Doc Doc Doc
DISK
Couchbase Server Admin Console
Altri Usi Comuni del NoSQL
Market AdopCon – Customers Internet Companies Enterprises
More than 300 customers -‐-‐ 5,000 producCon deployments worldwide
CaraMerisCche dei DaC
• StruMura definita dall’utente (TwiMer feeds) • Serve supporto per crescita esponenziale (Apps virali) • StruMura dei daC non omogenea
• C’e’ necessita’ di cambiare struMura frequentemente
• Lunghezza dei documenC variabile
• StruMura dei daC gerarchica
Couchbase e’ la scelta ideale
RequisiC di Performance
• Latenze estremamente basse (es. 1millisecondo)
• Traffici elevaC (es. 200000 ops/sec)
• Numero di utenC elevato
• Domanda non prevenCvabile con crescite improvvise
• C’e’ predominanza di accesso direMo ai documenC
• Alto traffico in leMura e scriMura
Couchbase e’ la scelta ideale
Applicazioni Comuni Social Gaming
• Couchbase conJene I daJ sugli utenJ e I giochi
• Esempi clienJ: Zynga, Tapjoy, Ubisoo, Tencent
Apps Mobili
• Couchbase conJene daJ su utenJ e contenuJ
• Esempi clienJ: Kobo, PlayJka
Pubblicita’ Online
• Couchbase conJene info sugli utenJ per un accesso veloce
• Esempi clienJ: AOL, Mediamind, Convertro
Informazioni di Sessione
• Couchbase come database chiave-‐valore
• Esempi clienJ: Concur, Sabre
Profili UtenC
• Couchbase come database chiave-‐valore
• Esempi clienJ: Tunewiki
Cache ad Alta Disponibilita’
• Couchbase uJlizzato come livello di cache
• Esempi clienJ: Orbitz
Metadata e ContenuC • Couchbase insieme ad ElasJcsearch
• Esempi clienJ: McGraw Hill
Aggregazione DaC
• Couchbase aggrega I daJ dai social media
• Esempi clienJ: Sambacloud
• Informazioni sui profili utenC • Informazioni di registrazione • Nomi utenC e password
Profili UtenC
Esempio d’uso: Profili UtenC
Accesso chiave-‐valore con le seguenC caraMerisCche: • Alta consistenza • Scalabilita’ per gesCre cenCnaia di milioni di utenC • Il sistema dev’essere sempre live 24x7x365
• Alta consistenza a livello del cluster. • Il cluster puo’ essere allargato o ristreMo per supportare la crescita esponenziale di utenC • Il cluster dev’essere disponibile 24/365. Con Couchbase tuMe le operazioni di manutenzione, aggiornamento e riparazione vengono effeMuate lasciando l’applicazione live. Grazie al cross datacenter replicaCon e’possibile collegare due centri daC diversi per ridurre I rischi di perdita daC e per una maggiore prossimita’ agli utenC
Tipologia di DaC RequisiC dell’applicazione
Perche’ NoSQL e Couchbase
h<p://blog.couchbase.com/couchbase-‐nosql-‐tunewiki-‐billion-‐documents-‐and-‐counJng
• Preferenze utenC e daC psicografici • Cronologia delle ricerche • Cronologia delle parole chiave acquistate dall’azienda • Cronologia delle pubblicita’ visualizzate
Pubblicita’ Online
Esempio d’uso: Pubblicita’ Online
• Alte performance per soddisfare I tempi ristrebssimi degli utenC (soMo I 40ms in totale) • Scalabilita’ per sostenere traffici elevaC e cenCnaia di milioni di utenC • Sistema disponibile 24x7x365 per evitare perdite di guadagni
• Accesso ai daC in meno di un millisecondo costante, lasciando quindi piu’ tempo per l’analisi • Facilita’ a scalare il cluster a cenCnaia di servers se necessario • Il cluster rimarra’ sempre live e disponibile, evitando quindi perdite di profib..
Tipologia di DaC RequisiC dell’Applicazione
Perche’ NoSQL e Couchbase
h<p://www.couchbase.com/ad_platorms
• Oggeb dell’applicazione • RisultaC delle ricerche • Informazioni di sessione • Pagine web ad alto uClizzo • Metadata
Cache ad alta disponibilita’
Esempio d’uso: Cache ad Alta Disponibilita’
• Tempi di risposta brevissimi e costanC • Alta disponibilita’-‐ 24x7x365 • Facile da gesCre mantenendo l’applicazione sempre live • SosCtuisce l’intero livello di caching
• Basse latenze (soMo il millisecondo) e prestazioni costanC e prevedibili • TuMe le operazioni possono essere effeMuate lasciando live l’applicazione • CompaCbile con memcached. La migrazione a Couchbase viene effeMuata lasciando intaMa l’applicazione • Alta disponibilita’ con repliche all’interno del cluster e all’esterno (XDCR) per essere garanCC anche in caso di disastri
Tipologia di daC RequisiC dell’applicazione
Perche’ NoSQL e Couchbase
h<p://www.couchbase.com/memcached
QuesCons?
Demo
Non dimenCcate di………
Scaricare e fare praCca con Couchbase Server
hMp://www.couchbase.com/download
Iscrivervi sul gruppo di Couchbase Italia su LinkedIn
hMp://www.linkedin.com/groups/Couchbase-‐Italia-‐4932288
Iscrivervi sul nostro Community Portal hMp://www.couchbase.com/communiCes/user/register