60
Introduzione a NoSQL e Couchbase Franco Caporale

Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Embed Size (px)

DESCRIPTION

In questa presentazione spiegheremo quali sono i trend che hanno portato alla nascita dei database NoSQL. Verranno illustrate le differenze tra i database relazionali e i database NoSQL come Couchbase, mostrando i vantaggi di quest'ultimi e le loro principali applicazioni. Inoltre, presenteremo in dettaglio l'architettura di Couchbase e le sue principali caratteristiche (performance elevate e costanti, facile da scalare, modello dati flessibile e sempre live 24x365). La presentazione si chiudera' con una descrizione delle applicazioni che attualmente utilizzano Couchbase in produzione.

Citation preview

Page 1: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Introduzione  a  NoSQL  e  Couchbase  

Franco  Caporale  

Page 2: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"
Page 3: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Perché  il  NoSQL?  

Page 4: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Tre  Nuove  Tendenze  

Big  Data   SaaS/Cloud  MolC  UtenC  

Page 5: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 6: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 7: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 8: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

NoSQL  +   +  

Piu’  daC   Piu’  utenC  SaaS/Cloud  

Scalabilita’,  performance  e  facilita’  di  sviluppo  

Page 9: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 10: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Draw  Something  

Page 11: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Draw  Something  –  OMGPop  

Page 12: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 13: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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.  

 

Page 14: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 15: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

MySQL  o  NoSQL?  

Page 16: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

La  maggioranza  delle  applicazioni  uClizzano  gli  RDBMS  

Page 17: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

E  a  volte  puo’  diventare    un  po’  grande…..  

h<p://www.seoclerks.com/imagedb/2005/BIG-­‐CAT-­‐FOUND-­‐Spoh  

Page 18: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

……o  forse  enorme!  

h<p://www.2pep.com/extreme-­‐funny-­‐stuff/  

Page 19: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

E  complicato!  

Page 20: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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.  

Page 21: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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.  

Page 22: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 23: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Una  StruMura  dei  DaC  Diversa  

Page 24: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

{        }  

Page 25: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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”]

}}

Page 26: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 27: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Esempio  Social  Game  OggeMo  

{    "jsonType":  "item",    "name":  "Katana_e5890c94-­‐11c6-­‐65746ce6c560",    "uuid":  "e5890c94-­‐11c6-­‐4856-­‐a7a6-­‐65746ce6c560",    "ownerId":  "Dale9887"  

}  

ID  OggeMo  

ID  Utente  

Page 28: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Esempio  Social  Game  Mostro  

{    "jsonType":  "monster",    "name":  "Bauchan9932",    "uuid":  "d10dfc1b-­‐0412-­‐4140-­‐b4ec-­‐affdbf2aa5ec",    "hitpoints":  370,    "experienceWhenKilled":  52,    "itemProbability":  0.5050581341872865  

}  

ID  Mostro  

Page 29: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 30: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 31: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 32: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 33: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

,  }  

Page 34: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

I  Database  NoSQL  

Page 35: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 36: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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

Page 37: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

≠  

Page 38: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 39: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 40: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Dietro  le  Quinte  di  Couchbase  

Page 41: Couchbase Meetup - "Introduzione a NoSQL e 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  

Page 42: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 43: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 44: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 45: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 46: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 47: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Couchbase  Server  Admin  Console  

Page 48: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"
Page 49: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Altri  Usi  Comuni  del  NoSQL  

Page 50: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Market  AdopCon  –  Customers  Internet  Companies   Enterprises  

More  than  300  customers  -­‐-­‐  5,000  producCon  deployments  worldwide  

Page 51: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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    

Page 52: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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    

Page 53: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

 

Page 54: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

• 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    

Page 55: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

• 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    

Page 56: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

• 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    

Page 57: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

QuesCons?  

Page 58: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Demo  

Page 59: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

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  

Page 60: Couchbase Meetup - "Introduzione a NoSQL e Couchbase"

Grazie  a  Tub!  

[email protected]