SlideShare a Scribd company logo
Supportare Milioni di
Utenti con NoSQL
Franco Caporale
Draw Something
Draw Something – OMGPop
Draw Something diventa virale in
3 settimane
191715131197533/12826242220181614121082/6
Daily Active Users (millions)
21
2
4
6
8
10
12
14
16
I dati crescono in modo non lineare…
191715131197533/12826242220181614121082/6
Daily Active 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 immagazzinati,
oltre 105,000 operazioni al secondo,
e oltre 3.3 terabytes di dati in totale.
Invece con RDBMS……
191715131197533/12826242220181614121082/6
The Simpson’s: Tapped Out
Daily Active 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
utilizzano gli RDBMS
E a volte puo’ diventare
un po’ grande…..
http://www.seoclerks.com/imagedb/2005/BIG-CAT-FOUND-Spoh
……o forse enorme!
http://www.2pep.com/extreme-funny-stuff/
E complicato!
I principali motivi per l’adozione
del NoSQL
Schema rigido e
non flessibile
Difficolta’ a
scalare
Problemi di
performance
Costi Tutti I
precedenti
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 Struttura dei Dati Diversa
Modello Relazionale vs. A Documento
Modello “Relazionale” Modello “A documento”
Collezione di documenti complessi con
formati arbitrari e schema variabile
Tabelle con schema rigido e struttura
dei dati predefinita
JSON
JSON
JSON
C1 C2 C3 C4
{
}
Database a Documento
• Ogni record e’ un documento a se’
stante
• Ogni documento ha una struttura
indipendente
• I documenti possono essere complessi
• Richiedono una chiave unica
• I dati sono immagazzinati in formato
JSON, XML o simili
• Il contenuto puo’ essere indicizzato e
interrogato
• Offrono sharding automatico e
repliche
{
“UUID”: “21f7f8de-8051-5b89-86
“Time”: “2011-04-01T13:01:02.42
“Server”: “A2223E”,
“Calling Server”: “A2213W”,
“Type”: “E100”,
“Initiating User”: “dsallings@spy.net”,
“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
Oggetto
{
"jsonType": "item",
"name": "Katana_e5890c94-11c6-65746ce6c560",
"uuid": "e5890c94-11c6-4856-a7a6-65746ce6c560",
"ownerId": "Dale9887"
}
ID Oggetto
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’ Documenti
{
“UUID”: “21f7f8de-8051-5b89-86
“Time”: “2011-04-01T13:01:02.42
“Server”: “A2223E”,
“Calling Server”: “A2213W”,
“Type”: “E100”,
“Initiating User”: “dsallings@spy.net”,
“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 ”: “2 1 f7 f8 de-8 0 5 1 -5 b89 -8 6
“Time”: “2 0 1 1 -0 4 -0 1 T1 3 :0 1 :0 2.4 2
“Server”: “A2 2 2 3 E”,
“Calling Server”: “A2 2 1 3 W”,
“Type”: “E1 0 0 ”,
“Initiating Us er”: “ds allings @s py.net”,
“D etails ”:
{
“IP”: “1 0 .1 .1 .2 2 ”,
“API”: “Ins ertD VD QueueItem”,
“Trace”: “cleans ed”,
“Tags ”:
[
“SERVER”,
“US-Wes t”,
“API”
]
}
}
{
“_id”: “comment1_Couchbase_Hello_World”,
“format”: “markdown”,
“body”:”Awesome post!”
}
BLOG
COMMENTI
Esempio: Profilo Utente
Database Relazionale
Indirizzo Utente
1 DEN 30303CO
2 MV 94040CA
3 CHI 60609IL
Informazioni Utente
KEY First ZIP_idLast
4 NY 10010NY
1 Dipti 2Borkar
2 Joe 2Smith
3 Ali 2Dodson
4 John 3Doe
ZIP_id CITY ZIPSTATE
1 2
2 MV 94040CA
Per ottenere informazioni su un utente specifico, devi effettuare un JOIN tra due
tabelle
Tutti I dati di un utente in un singolo documento
{
“ID”: 1,
“FIRST”: “Dipti”,
“LAST”: “Borkar”,
“ZIP”: “94040”,
“CITY”: “MV”,
“STATE”: “CA”
}
JSON
= +
Esempio: Profilo Utente
Database a Documento
User ID Nome Cognome CAP
1 Dipti 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
V5V3
M
•
•
•
50000 Doug Moore 04252
50001 Mary White SW195
50002 Lisa Clark 12425
ID Paese
TEL
3
001
ID Paese Nome Paese
001 USA
002 UK
003 Argentina
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
.
.
.
Effettuare 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
,}
Il NoSQL e i Social Games
Catalogo dei NoSQL
Chiave-Valore
Memcached Redis
Struttura Dati Documento Colonna Grafico
MongoDB
Couchbase Cassandra
Cache
(memoryonly)
Database
(memory/disk)
Neo4J
Come scegliere il database NoSQL
piu’ adatto?
Crescita rapida
Reattivita’ del gioco
Gioco globalizzato e
sempre attivo
Modifiche frequenti
e veloci
Scalabilita’
Performance
Sempre live
Modello dei
dati flessibile
Couchbase Open Source
• Il principale database NoSQL
distribuito
• Supporta sia le applicazioni
chiave-valore che a documento
• Tutti I componenti sono
disponibili con licenza Apache
2.0 Public License
• Disponibile come pacchetto
software sia nella versione
Community che in quella
Enterprise
Couchbase
Open Source Project
≠
Scalabilita’
Semplice
Performance
Elevate e Costanti
Sempre Live
24x365
Ingrandisci il tuo cluster con un
click mentre l’applicazione
rimane live
Tempi di risposta costanti sotto il
millisecondo per operazioni di
scrittura e lettura
L’applicazione non e’ mai
inattiva anche in caso di
aggiornamenti, manutenzione
etc.
Modello Dati
Flessibile
Supporto per documenti JSON
senza uno schema rigido
Principi Chiave di Couchbase Server
Differenze Principali Rispetto ad Altri
Database NoSQL
• Permette un altissimo numero di
connessioni contemporanee
(fondamentale per applicazioni
web interattive)
• Nessun locks
• Cache nativa
• Hash partitioning (non range)
 non si formano “hotspots”
• Sharding automatico
Dietro le Quinte di Couchbase
33 2
Server Singolo- Operazione Scrittura con
Couchbase
Managed Cache
DiskQueue
Replication
Queue
App Server
Doc 1’
Doc 1
Doc 1’Doc 1
Doc 1’
Disk
To other node
Couchbase Server Node
GET
Doc1
33 2
Server Singolo- Operazione Lettura con
Couchbase
DiskQueue
Replication
Queue
App Server
Doc 1
Doc 1Doc 1
Managed Cache
Disk
To other node
Couchbase Server Node
COUCHBASE SERVER CLUSTER
Operazioni di Base sul Cluster
• Tutti I nodi sono uguali e I
documenti sono
ugualmente distribuiti
• Ogni server contiene sia I
documenti attivi che
quelli replica
• La mappa del cluster ha le
coordinate su dove si
trovano I documenti
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 aggiunti
con un solo click
• I documenti vengono
automaticamente
ribilanciati attraverso il
cluster
Col minimo
spostamento di
documenti 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 dati
• Le richieste al Server 3
falliscono
• Il Cluster identifica che un
nodo e’ offline
Le repliche vengono promosse ad
attive e la mappa del cluster
viene aggiornata
• Le richieste della app ora si
dirigono sul server
appropriato
• Il tutto e’ seguito dal
ribilanciamento dei dati
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 Replication (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
Altri Usi Comuni del NoSQL
Market Adoption – Customers
Internet Companies Enterprises
More than 300 customers -- 5,000 production deployments worldwide
Caratteristiche dei Dati
• Struttura definita dall’utente (Twitter feeds)
• Serve supporto per crescita esponenziale (Apps virali)
• Struttura dei dati non omogenea
• C’e’ necessita’ di cambiare struttura frequentemente
• Lunghezza dei documenti variabile
• Struttura dei dati gerarchica
Couchbase e’ la scelta ideale
Requisiti di Performance
• Latenze estremamente basse (es. 1millisecondo)
• Traffici elevati (es. 200000 ops/sec)
• Numero di utenti elevato
• Domanda non preventivabile con crescite improvvise
• C’e’ predominanza di accesso diretto ai documenti
• Alto traffico in lettura e scrittura
Couchbase e’ la scelta ideale
Applicazioni Comuni
Social Gaming
• Couchbase
contiene I dati sugli
utenti e I giochi
• Esempi clienti:
Zynga, Tapjoy,
Ubisoft, Tencent
Apps Mobili
• Couchbase contiene dati
su utenti e contenuti
• Esempi clienti: Kobo,
Playtika
Pubblicita’ Online
• Couchbase contiene
info sugli utenti per
un accesso veloce
• Esempi clienti: AOL,
Mediamind,
Convertro
Informazioni di Sessione
• Couchbase come database
chiave-valore
• Esempi clienti: Concur, Sabre
Profili Utenti
• Couchbase come
database chiave-valore
• Esempi clienti: Tunewiki
Cache ad Alta Disponibilita’
• Couchbase utilizzato come livello di cache
• Esempi clienti: Orbitz
Metadata e Contenuti
• Couchbase insieme ad
Elasticsearch
• Esempi clienti: McGraw Hill
Aggregazione Dati
• Couchbase aggrega I dati dai social
media
• Esempi clienti: Sambacloud
Questions?
Non dimenticate di………
Scaricare e fare pratica con Couchbase
Server
http://www.couchbase.com/download
Iscrivervi sul gruppo di Couchbase Italia su
LinkedIn
http://www.linkedin.com/groups/Couchbase-Italia-4932288
Iscrivervi sul nostro Community Portal
http://www.couchbase.com/communities/user/register
Grazie a Tutti!
franco@couchbase.com

More Related Content

Viewers also liked

Finland bilder - Andra världskriget
Finland bilder - Andra världskrigetFinland bilder - Andra världskriget
Finland bilder - Andra världskrigetJan-Erik HYLLÉN
 
AppsFuel, il nuovo marketplace per mobile web app e mobile site!
AppsFuel, il nuovo marketplace per mobile web app e mobile site!AppsFuel, il nuovo marketplace per mobile web app e mobile site!
AppsFuel, il nuovo marketplace per mobile web app e mobile site!
Mobile Web Italy Meetup
 
Sverige bilder 1918 - 1939 bildspel
Sverige bilder 1918 - 1939 bildspelSverige bilder 1918 - 1939 bildspel
Sverige bilder 1918 - 1939 bildspelJan-Erik HYLLÉN
 
Our town, our institution final
Our town, our institution  finalOur town, our institution  final
Our town, our institution final
Ina Clara Vlad
 
Megh kete kete aasbe aakash
Megh kete kete aasbe aakashMegh kete kete aasbe aakash
Megh kete kete aasbe aakashShyamal Saha
 
tom jones as a realistic novel
  tom jones as a realistic novel  tom jones as a realistic novel
tom jones as a realistic novel
Poojaba Jadeja
 
Första världskriget bildspel
Första världskriget bildspelFörsta världskriget bildspel
Första världskriget bildspelJan-Erik HYLLÉN
 
Värendsbygden bilder gamla bilder
Värendsbygden bilder gamla bilderVärendsbygden bilder gamla bilder
Värendsbygden bilder gamla bilderJan-Erik HYLLÉN
 
Växjö bilder Gamla bilder
Växjö bilder  Gamla bilder Växjö bilder  Gamla bilder
Växjö bilder Gamla bilder
Jan-Erik HYLLÉN
 
Struggle of duty and doubt in African Literature
Struggle of duty and doubt in African LiteratureStruggle of duty and doubt in African Literature
Struggle of duty and doubt in African Literature
Poojaba Jadeja
 
The Sense of an ending group ppt
The Sense of an ending group ppt The Sense of an ending group ppt
The Sense of an ending group ppt
Poojaba Jadeja
 
Cassandra 3.0
Cassandra 3.0Cassandra 3.0
Cassandra 3.0
Robert Stupp
 
Mobile Is Eating the World (2016)
Mobile Is Eating the World (2016)Mobile Is Eating the World (2016)
Mobile Is Eating the World (2016)
a16z
 

Viewers also liked (13)

Finland bilder - Andra världskriget
Finland bilder - Andra världskrigetFinland bilder - Andra världskriget
Finland bilder - Andra världskriget
 
AppsFuel, il nuovo marketplace per mobile web app e mobile site!
AppsFuel, il nuovo marketplace per mobile web app e mobile site!AppsFuel, il nuovo marketplace per mobile web app e mobile site!
AppsFuel, il nuovo marketplace per mobile web app e mobile site!
 
Sverige bilder 1918 - 1939 bildspel
Sverige bilder 1918 - 1939 bildspelSverige bilder 1918 - 1939 bildspel
Sverige bilder 1918 - 1939 bildspel
 
Our town, our institution final
Our town, our institution  finalOur town, our institution  final
Our town, our institution final
 
Megh kete kete aasbe aakash
Megh kete kete aasbe aakashMegh kete kete aasbe aakash
Megh kete kete aasbe aakash
 
tom jones as a realistic novel
  tom jones as a realistic novel  tom jones as a realistic novel
tom jones as a realistic novel
 
Första världskriget bildspel
Första världskriget bildspelFörsta världskriget bildspel
Första världskriget bildspel
 
Värendsbygden bilder gamla bilder
Värendsbygden bilder gamla bilderVärendsbygden bilder gamla bilder
Värendsbygden bilder gamla bilder
 
Växjö bilder Gamla bilder
Växjö bilder  Gamla bilder Växjö bilder  Gamla bilder
Växjö bilder Gamla bilder
 
Struggle of duty and doubt in African Literature
Struggle of duty and doubt in African LiteratureStruggle of duty and doubt in African Literature
Struggle of duty and doubt in African Literature
 
The Sense of an ending group ppt
The Sense of an ending group ppt The Sense of an ending group ppt
The Sense of an ending group ppt
 
Cassandra 3.0
Cassandra 3.0Cassandra 3.0
Cassandra 3.0
 
Mobile Is Eating the World (2016)
Mobile Is Eating the World (2016)Mobile Is Eating the World (2016)
Mobile Is Eating the World (2016)
 

Similar to Franco Caporale Couchbase Milano

MongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDBMongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDB
Stefano Dindo
 
OpenStreetMap: la mappa Libera
OpenStreetMap: la mappa LiberaOpenStreetMap: la mappa Libera
OpenStreetMap: la mappa Libera
NaLUG
 
OpenStreetMap - una panoramica
OpenStreetMap - una panoramicaOpenStreetMap - una panoramica
OpenStreetMap - una panoramica
Eduard Natale
 
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data AnalysisIntroduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Vincenzo Manzoni
 
Network_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptxNetwork_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptx
ManlioSantonastaso
 
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...jekil
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimento
Mavigex srl
 
Ortocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su BluemixOrtocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su Bluemix
Dominopoint - Italian Lotus User Group
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
Luca Masini
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
Team per la Trasformazione Digitale
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
Dominopoint - Italian Lotus User Group
 
SQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with SparkSQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with Spark
Alessio Biasiutti
 
Reccomandation engine with GraphDB
Reccomandation engine with GraphDBReccomandation engine with GraphDB
Reccomandation engine with GraphDB
Piero Bozzolo
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
Marcello Missiroli
 
Il nuovo Portale della Provincia di Grosseto
Il nuovo Portale della Provincia di GrossetoIl nuovo Portale della Provincia di Grosseto
Il nuovo Portale della Provincia di Grosseto
Claudio Masia
 
OrientDB & Big Data
OrientDB & Big DataOrientDB & Big Data
OrientDB & Big Data
Luca Bianconi
 
Deployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con SaltDeployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con Salt
itbabu
 

Similar to Franco Caporale Couchbase Milano (20)

MongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDBMongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDB
 
OpenStreetMap: la mappa Libera
OpenStreetMap: la mappa LiberaOpenStreetMap: la mappa Libera
OpenStreetMap: la mappa Libera
 
OpenStreetMap - una panoramica
OpenStreetMap - una panoramicaOpenStreetMap - una panoramica
OpenStreetMap - una panoramica
 
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data AnalysisIntroduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
 
Network_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptxNetwork_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptx
 
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimento
 
Ortocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su BluemixOrtocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su Bluemix
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
 
SQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with SparkSQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with Spark
 
Reccomandation engine with GraphDB
Reccomandation engine with GraphDBReccomandation engine with GraphDB
Reccomandation engine with GraphDB
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
 
Il nuovo Portale della Provincia di Grosseto
Il nuovo Portale della Provincia di GrossetoIl nuovo Portale della Provincia di Grosseto
Il nuovo Portale della Provincia di Grosseto
 
OrientDB & Big Data
OrientDB & Big DataOrientDB & Big Data
OrientDB & Big Data
 
Deployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con SaltDeployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con Salt
 
Oai Data Adapter
Oai Data AdapterOai Data Adapter
Oai Data Adapter
 
Presentazione
PresentazionePresentazione
Presentazione
 

Franco Caporale Couchbase Milano

  • 1. Supportare Milioni di Utenti con NoSQL Franco Caporale
  • 4. Draw Something diventa virale in 3 settimane 191715131197533/12826242220181614121082/6 Daily Active Users (millions) 21 2 4 6 8 10 12 14 16
  • 5. I dati crescono in modo non lineare… 191715131197533/12826242220181614121082/6 Daily Active 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 immagazzinati, oltre 105,000 operazioni al secondo, e oltre 3.3 terabytes di dati in totale.
  • 6. Invece con RDBMS…… 191715131197533/12826242220181614121082/6 The Simpson’s: Tapped Out Daily Active Users (millions) 21 2 4 6 8 10 12 14 16 #2 Free app on iPad #3 Free app on iPhone
  • 8. La maggioranza delle applicazioni utilizzano gli RDBMS
  • 9. E a volte puo’ diventare un po’ grande….. http://www.seoclerks.com/imagedb/2005/BIG-CAT-FOUND-Spoh
  • 12. I principali motivi per l’adozione del NoSQL Schema rigido e non flessibile Difficolta’ a scalare Problemi di performance Costi Tutti I precedenti Altri 49% 35% 29% 16% 12% 11% Source: Couchbase Survey, December 2011, n = 1351.
  • 13. 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.
  • 14. 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
  • 15. Una Struttura dei Dati Diversa
  • 16. Modello Relazionale vs. A Documento Modello “Relazionale” Modello “A documento” Collezione di documenti complessi con formati arbitrari e schema variabile Tabelle con schema rigido e struttura dei dati predefinita JSON JSON JSON C1 C2 C3 C4 { }
  • 17. Database a Documento • Ogni record e’ un documento a se’ stante • Ogni documento ha una struttura indipendente • I documenti possono essere complessi • Richiedono una chiave unica • I dati sono immagazzinati in formato JSON, XML o simili • Il contenuto puo’ essere indicizzato e interrogato • Offrono sharding automatico e repliche { “UUID”: “21f7f8de-8051-5b89-86 “Time”: “2011-04-01T13:01:02.42 “Server”: “A2223E”, “Calling Server”: “A2213W”, “Type”: “E100”, “Initiating User”: “dsallings@spy.net”, “Details”: { “IP”: “10.1.1.22”, “API”: “InsertDVDQueueItem”, “Trace”: “cleansed”, “Tags”: [ “SERVER”, “US-West”, “API” ] } }
  • 18. 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
  • 19. Esempio Social Game Oggetto { "jsonType": "item", "name": "Katana_e5890c94-11c6-65746ce6c560", "uuid": "e5890c94-11c6-4856-a7a6-65746ce6c560", "ownerId": "Dale9887" } ID Oggetto ID Utente
  • 20. Esempio Social Game Mostro { "jsonType": "monster", "name": "Bauchan9932", "uuid": "d10dfc1b-0412-4140-b4ec-affdbf2aa5ec", "hitpoints": 370, "experienceWhenKilled": 52, "itemProbability": 0.5050581341872865 } ID Mostro
  • 21. Esempio Blog Diviso su piu’ Documenti { “UUID”: “21f7f8de-8051-5b89-86 “Time”: “2011-04-01T13:01:02.42 “Server”: “A2223E”, “Calling Server”: “A2213W”, “Type”: “E100”, “Initiating User”: “dsallings@spy.net”, “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 ”: “2 1 f7 f8 de-8 0 5 1 -5 b89 -8 6 “Time”: “2 0 1 1 -0 4 -0 1 T1 3 :0 1 :0 2.4 2 “Server”: “A2 2 2 3 E”, “Calling Server”: “A2 2 1 3 W”, “Type”: “E1 0 0 ”, “Initiating Us er”: “ds allings @s py.net”, “D etails ”: { “IP”: “1 0 .1 .1 .2 2 ”, “API”: “Ins ertD VD QueueItem”, “Trace”: “cleans ed”, “Tags ”: [ “SERVER”, “US-Wes t”, “API” ] } } { “_id”: “comment1_Couchbase_Hello_World”, “format”: “markdown”, “body”:”Awesome post!” } BLOG COMMENTI
  • 22. Esempio: Profilo Utente Database Relazionale Indirizzo Utente 1 DEN 30303CO 2 MV 94040CA 3 CHI 60609IL Informazioni Utente KEY First ZIP_idLast 4 NY 10010NY 1 Dipti 2Borkar 2 Joe 2Smith 3 Ali 2Dodson 4 John 3Doe ZIP_id CITY ZIPSTATE 1 2 2 MV 94040CA Per ottenere informazioni su un utente specifico, devi effettuare un JOIN tra due tabelle
  • 23. Tutti I dati di un utente in un singolo documento { “ID”: 1, “FIRST”: “Dipti”, “LAST”: “Borkar”, “ZIP”: “94040”, “CITY”: “MV”, “STATE”: “CA” } JSON = + Esempio: Profilo Utente Database a Documento
  • 24. User ID Nome Cognome CAP 1 Dipti 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 V5V3 M • • • 50000 Doug Moore 04252 50001 Mary White SW195 50002 Lisa Clark 12425 ID Paese TEL 3 001 ID Paese Nome Paese 001 USA 002 UK 003 Argentina 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 . . . Effettuare una Modifica su RDBMS
  • 25. 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 ,}
  • 26. Il NoSQL e i Social Games
  • 27. Catalogo dei NoSQL Chiave-Valore Memcached Redis Struttura Dati Documento Colonna Grafico MongoDB Couchbase Cassandra Cache (memoryonly) Database (memory/disk) Neo4J
  • 28. Come scegliere il database NoSQL piu’ adatto? Crescita rapida Reattivita’ del gioco Gioco globalizzato e sempre attivo Modifiche frequenti e veloci Scalabilita’ Performance Sempre live Modello dei dati flessibile
  • 29. Couchbase Open Source • Il principale database NoSQL distribuito • Supporta sia le applicazioni chiave-valore che a documento • Tutti I componenti sono disponibili con licenza Apache 2.0 Public License • Disponibile come pacchetto software sia nella versione Community che in quella Enterprise Couchbase Open Source Project
  • 30.
  • 31. Scalabilita’ Semplice Performance Elevate e Costanti Sempre Live 24x365 Ingrandisci il tuo cluster con un click mentre l’applicazione rimane live Tempi di risposta costanti sotto il millisecondo per operazioni di scrittura e lettura L’applicazione non e’ mai inattiva anche in caso di aggiornamenti, manutenzione etc. Modello Dati Flessibile Supporto per documenti JSON senza uno schema rigido Principi Chiave di Couchbase Server
  • 32. Differenze Principali Rispetto ad Altri Database NoSQL • Permette un altissimo numero di connessioni contemporanee (fondamentale per applicazioni web interattive) • Nessun locks • Cache nativa • Hash partitioning (non range)  non si formano “hotspots” • Sharding automatico
  • 33. Dietro le Quinte di Couchbase
  • 34. 33 2 Server Singolo- Operazione Scrittura con Couchbase Managed Cache DiskQueue Replication Queue App Server Doc 1’ Doc 1 Doc 1’Doc 1 Doc 1’ Disk To other node Couchbase Server Node
  • 35. GET Doc1 33 2 Server Singolo- Operazione Lettura con Couchbase DiskQueue Replication Queue App Server Doc 1 Doc 1Doc 1 Managed Cache Disk To other node Couchbase Server Node
  • 36. COUCHBASE SERVER CLUSTER Operazioni di Base sul Cluster • Tutti I nodi sono uguali e I documenti sono ugualmente distribuiti • Ogni server contiene sia I documenti attivi che quelli replica • La mappa del cluster ha le coordinate su dove si trovano I documenti 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
  • 37. Aggiungere Nodi al Cluster • Due servers aggiunti con un solo click • I documenti vengono automaticamente ribilanciati attraverso il cluster Col minimo spostamento di documenti 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
  • 38. 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 dati • Le richieste al Server 3 falliscono • Il Cluster identifica che un nodo e’ offline Le repliche vengono promosse ad attive e la mappa del cluster viene aggiornata • Le richieste della app ora si dirigono sul server appropriato • Il tutto e’ seguito dal ribilanciamento dei dati 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
  • 39. Cross Data Center Replication (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
  • 40. Altri Usi Comuni del NoSQL
  • 41. Market Adoption – Customers Internet Companies Enterprises More than 300 customers -- 5,000 production deployments worldwide
  • 42. Caratteristiche dei Dati • Struttura definita dall’utente (Twitter feeds) • Serve supporto per crescita esponenziale (Apps virali) • Struttura dei dati non omogenea • C’e’ necessita’ di cambiare struttura frequentemente • Lunghezza dei documenti variabile • Struttura dei dati gerarchica Couchbase e’ la scelta ideale
  • 43. Requisiti di Performance • Latenze estremamente basse (es. 1millisecondo) • Traffici elevati (es. 200000 ops/sec) • Numero di utenti elevato • Domanda non preventivabile con crescite improvvise • C’e’ predominanza di accesso diretto ai documenti • Alto traffico in lettura e scrittura Couchbase e’ la scelta ideale
  • 44. Applicazioni Comuni Social Gaming • Couchbase contiene I dati sugli utenti e I giochi • Esempi clienti: Zynga, Tapjoy, Ubisoft, Tencent Apps Mobili • Couchbase contiene dati su utenti e contenuti • Esempi clienti: Kobo, Playtika Pubblicita’ Online • Couchbase contiene info sugli utenti per un accesso veloce • Esempi clienti: AOL, Mediamind, Convertro Informazioni di Sessione • Couchbase come database chiave-valore • Esempi clienti: Concur, Sabre Profili Utenti • Couchbase come database chiave-valore • Esempi clienti: Tunewiki Cache ad Alta Disponibilita’ • Couchbase utilizzato come livello di cache • Esempi clienti: Orbitz Metadata e Contenuti • Couchbase insieme ad Elasticsearch • Esempi clienti: McGraw Hill Aggregazione Dati • Couchbase aggrega I dati dai social media • Esempi clienti: Sambacloud
  • 46. Non dimenticate di……… Scaricare e fare pratica con Couchbase Server http://www.couchbase.com/download Iscrivervi sul gruppo di Couchbase Italia su LinkedIn http://www.linkedin.com/groups/Couchbase-Italia-4932288 Iscrivervi sul nostro Community Portal http://www.couchbase.com/communities/user/register