SlideShare uma empresa Scribd logo
1 de 22
Cloud storage in azienda:
perchè riak ci è piaciuto
Alberto Eusebi
alberto@biodec.com
Biodec Srl
http://www.biodec.com
Il problema

●

Flusso di dati: 100.000/mese

●

Archiviare

●

Dimensione media: 300KB

●

Versionare

●

In rapida crescita

●

Query system
Idee?
●

Storage basato su db SQL

●

Storage su filesystem (metadati su SQL)

●

Dati su NoSql (metadati su SQL)
La scelta: Riak + Postgres
●

Usato e consigliato in scenari simili

●

Ridondanza

●

High availability e affidabilità (masterless; no single
point of failure)

●

Scalabilità

●

Setup -ragionevolmente- semplice

●

Versatilità (eg. pluggable storage backends)

●

Buona documentazione e supporto tecnico

●

Codice open; progetto “vivo”
Riak
●

Rilasciato nel 2009 da Basho Technology

●

Basato su Amazon Dynamo
–

http://docs.basho.com/riak/latest/theory/dynamo/

●

Licenza Apache2

●

Altri prodotti:
–

Riak CS

–

Versioni enterprise

●

Erlang (C, Java, Javascript)

●

API native:
–
–

●

Http
Protocol Buffer (Google)

Clients libraries (Basho supported): Java, Erlang, Ruby,
Php, Python
–

http://docs.basho.com/riak/latest/dev/using/libraries/
Anti-outline
●

Map-reduce

●

Strutture dati specifiche:
–
–

Key indexing (2i)

–
●

Full text search (tagging)
Link walking

Gestione avanzata di conflitti (vector clocks)
Requisiti e progettazione
●

System:
–
–

Debian based: Debian, Ubuntu

–
●

Red Hat based: Red Hat Enterprise Linux, CentOS, Fedora
Solaris based: Sun Solaris, OpenSolaris

Hardware
–

Multi-core 64-bit CPU

–

Minimum 4 GB RAM

–

Multiple Fast Hard Disks (RAID and/or SSD)

–

Fast Network (Gigabit +)

●

Virtualization?

●

Network load balancing (eg. Haproxy)
Setup
●

Packages (deb, rpm …)
–
–

Facile gestione dell'upgrade

–
●

Un nodo per macchina
Limitazione di problemi con Erlang

Source tarball
–

Massima libertà nel setup (ambiente di test)

–

Utilizzo di make e rebar per la creazione e la distribuzione
dei nodi

–

Gestire la dipendenza con Erlang (kerl)
Partizionamento dei dati
●
●
●

Indirizzamento basato sugli hash delle chiavi (consistent hashing)
Spazio di indirizzamento: 160-bit (“bucket/key”)
Numero di partizioni fissato (ring_creation_size)
Replicazione
Eventual consistency

●

Parametri default per gestire la replicazione:
–

Numero di repliche: nval (3)

–

Controlli sulla lettura/scrittura:
●

Sloppy check: r / w (quorum)

●

Primary check: pr / pw (0)

●

Durable check: dr / dw (quorum)

Immagine presa da:
http://highlyscalable.wordpress.com/2012/09/18/distributed-algorithms-in-nosql-databases/
Entropy

●

Inconsistenza in scrittura
–
–

●

last write wins (default)
allow multi (disabilitato)

Inconsistenza in lettura
–

(Passive/Active) Read repair
Scelta del backend

●

Bitcask (default)

●

LevelDB

●

Memory

●

Multi
Bitcask
Append only
Bitcask
●

Bassa latenza (Append only)

●

High throughhput

●

Backup agevolato

Attenzione a:
●

Uso della ram (chiavi in memoria)

●

Overheads sull'utilizzo del disco

●

Open files limit
Live demo
Gestione del cluster
●

Aggiornamento

●

Scalabilità: verticale vs orizzontale

●

Backup

●

Monitoraggio
Limiti

●

Limite nella dimensione degli oggetti

●

Gestione degli errori rivedibile

●

Fallimento a cascata

●

Occhio al tuning
Domande?
Riak Stack

http://littleriakbook.com
CAP Theorem

Immagine presa da:
http://www.w3resource.com/mongodb/nosql.php
Il “buon” vecchio metodo
●

Directories enormi

●

Ridondanza/partizionamento manuale

●

Sistema di ricerca improvvisato

Mais conteúdo relacionado

Mais procurados

Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb PgTraining
 
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...KohaGruppoItaliano
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioMongoDB
 
Introduzione al framework dl4j Antonio berti
Introduzione al framework dl4j Antonio bertiIntroduzione al framework dl4j Antonio berti
Introduzione al framework dl4j Antonio bertiDeep Learning Italia
 
Benchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLBenchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLEDB
 
PostgreSQL: Point in time recovery
PostgreSQL: Point in time recoveryPostgreSQL: Point in time recovery
PostgreSQL: Point in time recoveryEnrico Pirozzi
 
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)MongoDB
 
Async navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworkAsync navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworksparkfabrik
 
Hadoop
HadoopHadoop
HadoopReply
 

Mais procurados (10)

Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb
 
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
Introduzione al framework dl4j Antonio berti
Introduzione al framework dl4j Antonio bertiIntroduzione al framework dl4j Antonio berti
Introduzione al framework dl4j Antonio berti
 
Benchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLBenchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQL
 
Apcamp
ApcampApcamp
Apcamp
 
PostgreSQL: Point in time recovery
PostgreSQL: Point in time recoveryPostgreSQL: Point in time recovery
PostgreSQL: Point in time recovery
 
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
 
Async navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworkAsync navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 framework
 
Hadoop
HadoopHadoop
Hadoop
 

Destaque

Cassandra - Wellington No Sql
Cassandra - Wellington No SqlCassandra - Wellington No Sql
Cassandra - Wellington No Sqlaaronmorton
 
NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non RelazionaliNoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non RelazionaliSteve Maraspin
 
NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandrarantav
 
Cassandra + Hadoop: Analisi Batch con Apache Cassandra
Cassandra + Hadoop: Analisi Batch con Apache CassandraCassandra + Hadoop: Analisi Batch con Apache Cassandra
Cassandra + Hadoop: Analisi Batch con Apache CassandraJeremy Hanna
 
Eletti big data_trento_25ott14
Eletti big data_trento_25ott14Eletti big data_trento_25ott14
Eletti big data_trento_25ott14Valerio Eletti
 
AWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideAWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideDavide Trevisan
 
Cassandra, web scale no sql data platform
Cassandra, web scale no sql data platformCassandra, web scale no sql data platform
Cassandra, web scale no sql data platformMarko Švaljek
 
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...DataStax
 
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...DataStax Academy
 
NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove SoluzioniNoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove SoluzioniSteve Maraspin
 
Cassandra Data Model
Cassandra Data ModelCassandra Data Model
Cassandra Data Modelebenhewitt
 
Dynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonDynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonGrisha Weintraub
 
Dynamodb Presentation
Dynamodb PresentationDynamodb Presentation
Dynamodb Presentationadvaitdeo
 

Destaque (19)

Cassandra at no_sql
Cassandra at no_sqlCassandra at no_sql
Cassandra at no_sql
 
Seminar presentation final
Seminar presentation finalSeminar presentation final
Seminar presentation final
 
Cassandra - Wellington No Sql
Cassandra - Wellington No SqlCassandra - Wellington No Sql
Cassandra - Wellington No Sql
 
NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non RelazionaliNoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
 
NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandra
 
No SQL Cassandra
No SQL CassandraNo SQL Cassandra
No SQL Cassandra
 
Cassandra + Hadoop: Analisi Batch con Apache Cassandra
Cassandra + Hadoop: Analisi Batch con Apache CassandraCassandra + Hadoop: Analisi Batch con Apache Cassandra
Cassandra + Hadoop: Analisi Batch con Apache Cassandra
 
NoSql - Key Value
NoSql - Key ValueNoSql - Key Value
NoSql - Key Value
 
Eletti big data_trento_25ott14
Eletti big data_trento_25ott14Eletti big data_trento_25ott14
Eletti big data_trento_25ott14
 
AWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideAWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan Davide
 
Cassandra, web scale no sql data platform
Cassandra, web scale no sql data platformCassandra, web scale no sql data platform
Cassandra, web scale no sql data platform
 
Cassandra ppt 1
Cassandra ppt 1Cassandra ppt 1
Cassandra ppt 1
 
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
 
Introduzione a Riak
Introduzione a RiakIntroduzione a Riak
Introduzione a Riak
 
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
 
NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove SoluzioniNoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
 
Cassandra Data Model
Cassandra Data ModelCassandra Data Model
Cassandra Data Model
 
Dynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonDynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and Comparison
 
Dynamodb Presentation
Dynamodb PresentationDynamodb Presentation
Dynamodb Presentation
 

Semelhante a Cloud storage in azienda: perche` Riak ci e` piaciuto

Stack tecnologico Per Linked Data
Stack tecnologico Per Linked DataStack tecnologico Per Linked Data
Stack tecnologico Per Linked DataSynapta
 
Stack tecnologico Per Linked Data
Stack tecnologico Per Linked DataStack tecnologico Per Linked Data
Stack tecnologico Per Linked DataDavide Allavena
 
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
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileBioDec
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileIvan Rossi
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologicoConsulthinkspa
 
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Meet Magento Italy
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databasesGianluca Hotz
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...MariaDB plc
 
CCI2018 - Iperconvergenza con Windows Server
CCI2018 - Iperconvergenza con Windows ServerCCI2018 - Iperconvergenza con Windows Server
CCI2018 - Iperconvergenza con Windows Serverwalk2talk srl
 
Big data stack tecnologico
Big data stack tecnologicoBig data stack tecnologico
Big data stack tecnologicoMassimo Romano
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss CloudJBug Italy
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009Sanne Grinovero
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech LabUgo Landini
 
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on Azure
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureSQL Saturday 871 - Sardegna 2019 - SQL Server DR on Azure
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureMarco Obinu
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 

Semelhante a Cloud storage in azienda: perche` Riak ci e` piaciuto (20)

Infinispan
InfinispanInfinispan
Infinispan
 
Stack tecnologico Per Linked Data
Stack tecnologico Per Linked DataStack tecnologico Per Linked Data
Stack tecnologico Per Linked Data
 
Stack tecnologico Per Linked Data
Stack tecnologico Per Linked DataStack tecnologico Per Linked Data
Stack tecnologico Per Linked Data
 
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
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologico
 
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...
 
CCI2018 - Iperconvergenza con Windows Server
CCI2018 - Iperconvergenza con Windows ServerCCI2018 - Iperconvergenza con Windows Server
CCI2018 - Iperconvergenza con Windows Server
 
Big data stack tecnologico
Big data stack tecnologicoBig data stack tecnologico
Big data stack tecnologico
 
Ha solutions su power i
Ha solutions su power iHa solutions su power i
Ha solutions su power i
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss Cloud
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech Lab
 
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on Azure
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureSQL Saturday 871 - Sardegna 2019 - SQL Server DR on Azure
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on Azure
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 

Cloud storage in azienda: perche` Riak ci e` piaciuto

  • 1. Cloud storage in azienda: perchè riak ci è piaciuto Alberto Eusebi alberto@biodec.com Biodec Srl http://www.biodec.com
  • 2. Il problema ● Flusso di dati: 100.000/mese ● Archiviare ● Dimensione media: 300KB ● Versionare ● In rapida crescita ● Query system
  • 3. Idee? ● Storage basato su db SQL ● Storage su filesystem (metadati su SQL) ● Dati su NoSql (metadati su SQL)
  • 4. La scelta: Riak + Postgres ● Usato e consigliato in scenari simili ● Ridondanza ● High availability e affidabilità (masterless; no single point of failure) ● Scalabilità ● Setup -ragionevolmente- semplice ● Versatilità (eg. pluggable storage backends) ● Buona documentazione e supporto tecnico ● Codice open; progetto “vivo”
  • 5. Riak ● Rilasciato nel 2009 da Basho Technology ● Basato su Amazon Dynamo – http://docs.basho.com/riak/latest/theory/dynamo/ ● Licenza Apache2 ● Altri prodotti: – Riak CS – Versioni enterprise ● Erlang (C, Java, Javascript) ● API native: – – ● Http Protocol Buffer (Google) Clients libraries (Basho supported): Java, Erlang, Ruby, Php, Python – http://docs.basho.com/riak/latest/dev/using/libraries/
  • 6. Anti-outline ● Map-reduce ● Strutture dati specifiche: – – Key indexing (2i) – ● Full text search (tagging) Link walking Gestione avanzata di conflitti (vector clocks)
  • 7. Requisiti e progettazione ● System: – – Debian based: Debian, Ubuntu – ● Red Hat based: Red Hat Enterprise Linux, CentOS, Fedora Solaris based: Sun Solaris, OpenSolaris Hardware – Multi-core 64-bit CPU – Minimum 4 GB RAM – Multiple Fast Hard Disks (RAID and/or SSD) – Fast Network (Gigabit +) ● Virtualization? ● Network load balancing (eg. Haproxy)
  • 8. Setup ● Packages (deb, rpm …) – – Facile gestione dell'upgrade – ● Un nodo per macchina Limitazione di problemi con Erlang Source tarball – Massima libertà nel setup (ambiente di test) – Utilizzo di make e rebar per la creazione e la distribuzione dei nodi – Gestire la dipendenza con Erlang (kerl)
  • 9. Partizionamento dei dati ● ● ● Indirizzamento basato sugli hash delle chiavi (consistent hashing) Spazio di indirizzamento: 160-bit (“bucket/key”) Numero di partizioni fissato (ring_creation_size)
  • 11. Eventual consistency ● Parametri default per gestire la replicazione: – Numero di repliche: nval (3) – Controlli sulla lettura/scrittura: ● Sloppy check: r / w (quorum) ● Primary check: pr / pw (0) ● Durable check: dr / dw (quorum) Immagine presa da: http://highlyscalable.wordpress.com/2012/09/18/distributed-algorithms-in-nosql-databases/
  • 12. Entropy ● Inconsistenza in scrittura – – ● last write wins (default) allow multi (disabilitato) Inconsistenza in lettura – (Passive/Active) Read repair
  • 13. Scelta del backend ● Bitcask (default) ● LevelDB ● Memory ● Multi
  • 15. Bitcask ● Bassa latenza (Append only) ● High throughhput ● Backup agevolato Attenzione a: ● Uso della ram (chiavi in memoria) ● Overheads sull'utilizzo del disco ● Open files limit
  • 17. Gestione del cluster ● Aggiornamento ● Scalabilità: verticale vs orizzontale ● Backup ● Monitoraggio
  • 18. Limiti ● Limite nella dimensione degli oggetti ● Gestione degli errori rivedibile ● Fallimento a cascata ● Occhio al tuning
  • 21. CAP Theorem Immagine presa da: http://www.w3resource.com/mongodb/nosql.php
  • 22. Il “buon” vecchio metodo ● Directories enormi ● Ridondanza/partizionamento manuale ● Sistema di ricerca improvvisato