Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
CCI2018 - Iperconvergenza con Windows Serverwalk2talk srl
Il tread dell’iperconvergenza aumenta sempre di più sia grazie al numero sempre crescente di standard (sd* e simili) sia grazie alla presenza di soluzioni ready to go.
Ma spesso le soluzioni proposte sono chiuse e difficilmente integrabili tra loro.
Windows Server (già dalla versione 2012) ha tutto quello che serve per implementare una soluzione iperconvergente out of the box.
In questa sezione andremo ad analizzare cosa ci serve e come possiamo realizzare un semplice cluster a due nodi, senza componenti di terze parti
By Andrea Garattini e Mario Serra
Vieni a scoprire Cloud Native PostgreSQL (CNP), l’operatore per Kubernetes, direttamente da coloro che lo hanno ideato e lo sviluppano in EDB.
CNP facilita l’integrazione di database PostgreSQL con le tue applicazioni all’interno di cluster Kubernetes e OpenShift Container Platform di RedHat, grazie alla sua gestione automatica dell’architettura primario/standby che include: self-healing, failover, switchover, rolling update, backup, ecc.
Durante il webinar affronteremo i seguenti punti:
- DevOps e Cloud Native
- Introduzione a Cloud Native PostgreSQL
- Architetture
- Caratteristiche principali
- Esempi di uso e configurazione
- Kubernetes, Storage e Postgres
- Demo
- Conclusioni
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterPar-Tec S.p.A.
Il TechAdvisor Mirko Conte spiega come progettare, installare e configurare MySQL Cluster, la versione di punta del database open source più utilizzato al mondo.
Durante la presentazione, Mirko ha condiviso numerose informazioni teoriche e pratiche per comprendere dove, come e quando utilizzare al meglio MySQL Cluster. In questa sessione ha trattato i seguenti punti:
- Valutare MySQL Cluster nel proprio progetto
- Esempi di architettura
- Requisiti hardware/network
- Sessione hands-on
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro TechAdvisor su http://www.par-tec.it/progettare-installare-gestire-e-ottimizzare-mysql-cluster#progettare
CCI2018 - Iperconvergenza con Windows Serverwalk2talk srl
Il tread dell’iperconvergenza aumenta sempre di più sia grazie al numero sempre crescente di standard (sd* e simili) sia grazie alla presenza di soluzioni ready to go.
Ma spesso le soluzioni proposte sono chiuse e difficilmente integrabili tra loro.
Windows Server (già dalla versione 2012) ha tutto quello che serve per implementare una soluzione iperconvergente out of the box.
In questa sezione andremo ad analizzare cosa ci serve e come possiamo realizzare un semplice cluster a due nodi, senza componenti di terze parti
By Andrea Garattini e Mario Serra
Vieni a scoprire Cloud Native PostgreSQL (CNP), l’operatore per Kubernetes, direttamente da coloro che lo hanno ideato e lo sviluppano in EDB.
CNP facilita l’integrazione di database PostgreSQL con le tue applicazioni all’interno di cluster Kubernetes e OpenShift Container Platform di RedHat, grazie alla sua gestione automatica dell’architettura primario/standby che include: self-healing, failover, switchover, rolling update, backup, ecc.
Durante il webinar affronteremo i seguenti punti:
- DevOps e Cloud Native
- Introduzione a Cloud Native PostgreSQL
- Architetture
- Caratteristiche principali
- Esempi di uso e configurazione
- Kubernetes, Storage e Postgres
- Demo
- Conclusioni
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterPar-Tec S.p.A.
Il TechAdvisor Mirko Conte spiega come progettare, installare e configurare MySQL Cluster, la versione di punta del database open source più utilizzato al mondo.
Durante la presentazione, Mirko ha condiviso numerose informazioni teoriche e pratiche per comprendere dove, come e quando utilizzare al meglio MySQL Cluster. In questa sessione ha trattato i seguenti punti:
- Valutare MySQL Cluster nel proprio progetto
- Esempi di architettura
- Requisiti hardware/network
- Sessione hands-on
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro TechAdvisor su http://www.par-tec.it/progettare-installare-gestire-e-ottimizzare-mysql-cluster#progettare
La presentazione è stata realizzato per un seminario da tenere durante il corso di Sistemi Operativi Avanzati. Durante la presentazione si è discusso di Hadoop partendo dalle origini fino ad arrivare a parlare di qualche dettaglio più approfondito. Non si è scelto di entrare troppo nel dettaglio in quanto in seguito alla presentazione si è tenuta una demo sull'utilizzo di Hadoop su un cluster da noi allestito all'interno dell'università.
Youtube: https://www.youtube.com/watch?v=jh3CJ1ns0JQ
Il Query Processor è uno dei componenti più sofisticati di un RDBMS, quello di SQL Server non fa eccezione e sono state introdotte molte novità per risolvere le Query in modo più efficiente. In questa sessione affronteremo l'argomento ripercorrendo le varie funzionalità a partire dal nuovo modello del "Cardinality Estimator", introdotto nella versione 2014, per arrivare a tutto ciò che ricade sotto il nome di "Intelligent Query Processor" tra cui le funzionalità di "Adaptive Query Processing", introdotte nella versione 2017, e le novità introdotte nella versione 2019. Il tutto senza dimenticare le funzionalità per aiutare a gestire eventuali problematiche di regressione e coadiuvato da dimostrazioni pratiche.
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
Youtube: https://www.youtube.com/watch?v=dgyXkN3FVb4
Come implementare un cluster di SQL Server AlwaysOn Failover Cluster Instances (FCI) con Azure Managed Disks.
Build a SQL Server machine - the right way (Italian)Danilo Dominici
L'installazione di SQL Server consente di preparare rapidamente un server, ma la configurazione di default non è ottimale. In questa sessione vediamo come preparare una macchina per SQL Server nel migliore dei modi, con un occhio alle performance e alla scalabilità.
Descrizione delle principali tecnologie abilitanti alla gestione dei Big Data, con particolare attenzione all’ecosistema che gravita intorno al framework Hadoop di Apache.
Per il corso di Sistemi Operativi Avanzati ho studiato l'articolo "Google File System" scritto da Sanjay Ghemawat, Howard Gobioff, e Shun-Tak Leung, inquadrandone il contesto storico, gli obiettivi, le prestazioni e le principali differenze con l'HDFS.
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLPar-Tec S.p.A.
Il TechAdvisor Michelangelo Uberti fornisce una panoramica generale inerente le soluzioni di alta disponibilità con MySQL.
I punti trattati durante la presentazione sono:
- Presentazione dell’offerta Par-Tec dedicata a MySQL Enterprise
- Cause, effetti e reali esigenze di HA
- Funzionamento, benefici e limiti dei principali approcci:
- Replica di database
- Cluster attivo/passivo
- Cluster attivo/attivo: shared-nothing
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro TechAdvisor su http://www.par-tec.it/soluzioni-di-alta-disponibilita-con-mysql
Descrizione delle principali tecnologie abilitanti alla gestione dei Big Data, con particolare attenzione all’ecosistema che gravita intorno al framework Hadoop di Apache.
La presentazione è stata realizzato per un seminario da tenere durante il corso di Sistemi Operativi Avanzati. Durante la presentazione si è discusso di Hadoop partendo dalle origini fino ad arrivare a parlare di qualche dettaglio più approfondito. Non si è scelto di entrare troppo nel dettaglio in quanto in seguito alla presentazione si è tenuta una demo sull'utilizzo di Hadoop su un cluster da noi allestito all'interno dell'università.
Youtube: https://www.youtube.com/watch?v=jh3CJ1ns0JQ
Il Query Processor è uno dei componenti più sofisticati di un RDBMS, quello di SQL Server non fa eccezione e sono state introdotte molte novità per risolvere le Query in modo più efficiente. In questa sessione affronteremo l'argomento ripercorrendo le varie funzionalità a partire dal nuovo modello del "Cardinality Estimator", introdotto nella versione 2014, per arrivare a tutto ciò che ricade sotto il nome di "Intelligent Query Processor" tra cui le funzionalità di "Adaptive Query Processing", introdotte nella versione 2017, e le novità introdotte nella versione 2019. Il tutto senza dimenticare le funzionalità per aiutare a gestire eventuali problematiche di regressione e coadiuvato da dimostrazioni pratiche.
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
Youtube: https://www.youtube.com/watch?v=dgyXkN3FVb4
Come implementare un cluster di SQL Server AlwaysOn Failover Cluster Instances (FCI) con Azure Managed Disks.
Build a SQL Server machine - the right way (Italian)Danilo Dominici
L'installazione di SQL Server consente di preparare rapidamente un server, ma la configurazione di default non è ottimale. In questa sessione vediamo come preparare una macchina per SQL Server nel migliore dei modi, con un occhio alle performance e alla scalabilità.
Descrizione delle principali tecnologie abilitanti alla gestione dei Big Data, con particolare attenzione all’ecosistema che gravita intorno al framework Hadoop di Apache.
Per il corso di Sistemi Operativi Avanzati ho studiato l'articolo "Google File System" scritto da Sanjay Ghemawat, Howard Gobioff, e Shun-Tak Leung, inquadrandone il contesto storico, gli obiettivi, le prestazioni e le principali differenze con l'HDFS.
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLPar-Tec S.p.A.
Il TechAdvisor Michelangelo Uberti fornisce una panoramica generale inerente le soluzioni di alta disponibilità con MySQL.
I punti trattati durante la presentazione sono:
- Presentazione dell’offerta Par-Tec dedicata a MySQL Enterprise
- Cause, effetti e reali esigenze di HA
- Funzionamento, benefici e limiti dei principali approcci:
- Replica di database
- Cluster attivo/passivo
- Cluster attivo/attivo: shared-nothing
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro TechAdvisor su http://www.par-tec.it/soluzioni-di-alta-disponibilita-con-mysql
Descrizione delle principali tecnologie abilitanti alla gestione dei Big Data, con particolare attenzione all’ecosistema che gravita intorno al framework Hadoop di Apache.
Un gioco senza un backend in Internet non è più pensabile. Un backend in Internet senza Azure nemmeno. Quali sono i servizi necessari per costruire un backend di un videogioco? Vediamo quali...
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureMarco Obinu
Slides presented at SQL Saturday 871, regarding DR technologies for SQL Server using Azure as a secondary datacenter. Slides includes demo videos on how to extend an existing SQL FCI to Azure with Basic Availabity Groups.
Demo scripts available at https://github.com/OmegaMadLab/FCI_and_AG
Full session recording available at https://www.youtube.com/watch?v=s8TmM-0E9sQ
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
Questa sessione affronta come implementare, mantenere e far evolvere soluzioni sviluppate su Azure SQL Database, attraverso l’utilizzo degli strumenti SQL Sever Management Studio e Visual Studio. Attraverso esempi e casi reali, saranno illustrate la versatilità, potenza e affidabilità del database come servizio nel cloud.
Slides of my talk at the Feb 20th 2020 PMI NIC Event on Requirement Management at Wartsila in Trieste, Italy. I'm highlighting what worked well and what did not during my career, also taking into account recent paradigms such as Cloud and DevOps. I'm also dissecting some of main agile principles and sharing my opinion on how to benefit from them.
The Metaphor Fallacy (in Digital Product Development)Steve Maraspin
Sharing personal thoughts on how metaphors can hinder, rather than help software modeling and design (at different levels). Talk presented at the 2014 Better Software Conference.
La filosofia Lean nello sviluppo di prodotti digitaliSteve Maraspin
Slide del mio intervento presso l'ordine degli Ingegneri di Udine il 12/06/2014. Contemplati diversi ambiti in cui i principi Lean aiutano a migliorare i processi di sviluppo.
Error Reporting in ZF2: form messages, custom error pages, loggingSteve Maraspin
Errors frustrate users. No matter if it's their fault or applications', risks that they'll lose interest in our product is high. In this presentation, given at the Italian ZFDay 2014, I discuss about these issues and provide some hints for improving error reporting and handling.
Outcome not Output: A Story of Lean UX AdoptionSteve Maraspin
This presentation shares our experience with Lean UX adoption and offers some hints on how to combine User Centered Design activities within an Agile development workflow.
How do we take decisions? Are we fully conscious of what we do when using a system interface? There's a lot of unconscious activity going on while we use a digital product. This talk describes a few important factors interface designers should keep in mind while designing interaction.
ZF2 Modular Architecture - Taking advantage of itSteve Maraspin
Zend Framework 1 had modules. Their name is pretty much everything Zend Framework 2 modules share with them, though. The whole framework architecture has been rewritten to encourage software reuse and extension. In this talk I’ll share our experiences on ZF2 module creation and usage.
Fare con Zend Framework 2 ciò che facevo con ZF1Steve Maraspin
Introduzione a Zend Framework 2 per chi proviene da Zend Framework 1, tenuta allo Zend Framework Day di Milano del 01/02/2013. Introduzione alle nuove caratteristiche e pattern architetturali di ZF2
Zend Framework 2 non è l'evoluzione di ZF, ma un progetto nuovo: il codice è stato riscritto e poche sono le parti in comune con la versione precedente. Lo sviluppatore abituato a ZF1 non ha vita facile, ed è fondato il timore di dover imparare tutto da capo. In questo talk vediamo come cambiare le vecchie abitudini di sviluppatori ZF1, per sfruttare al meglio le potenzialità del nuovo strumento. Attraverso esempi concreti, in cui vedremo all'opera i nuovi pattern e le best practice, mostriamo come - partendo con il piede giusto - il passaggio a ZF2 possa essere meno traumatico del previsto. Il talk è orientato soprattutto a chi già conosce ZF1, ma gli argomenti affrontati possono essere utili anche a chi si avvicina a ZF per la prima volta.
NoSQL Data Stores: Introduzione alle Basi di Dati Non RelazionaliSteve Maraspin
Seconda parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Presentata un'introduzione sulle basi di dati non relazionali e sulle implicazioni che le loro caratteristiche hanno nello sviluppo di applicazioni enterprise.
NoSQL, No Worries: Vecchi Problemi, Nuove SoluzioniSteve Maraspin
Slide del talk sulle basi di dati non relazionali (NoSQL) al Codemotion di Venezia del 17/11/2012. Presentato un caso di studio di architettura basata su CouchDB, MongoDB, Redis e OrientDB, oltre che diversi concetti relativi ai datastore NoSQL.
Permettere al cliente di apprezzare l'approccio agileSteve Maraspin
Presentazione del 27/09/2012 a Better Software - Firenze, Italia. Raccontata la nostra esperienza e l'approccio utilizzato per garantire la soddisfazione del cliente nel lungo termine
25. PostgreSQL
25
SELECT titolo, max(visioni) FROM film;
SELECT titolo, max(visioni) FROM film;
SQL error:
ERROR: column "film.titolo" must appear in the GROUP BY clause or
be used in an aggregate function at character 8
In statement:
SELECT titolo, max(visioni) FROM film;
26. PostgreSQL
26
SELECT titolo, max(visioni) FROM film;
SELECT titolo, max(visioni) FROM film;
SQL error:
ERROR: column "film.titolo" must appear in the GROUP BY clause or
be used in an aggregate function at character 8
In statement:
SELECT titolo, max(visioni) FROM film;
27. 27
Disclaimer: Ciò non significa che non utilizziamo anche MySQL in determinati contesti
Ocio però!
30. Possibile Soluzione
30
CREATE VIEW film AS
SELECT titolo, anno, visioni FROM film_provider1
UNION
SELECT titolo, anno, visioni FROM film_provider2;
35. Write Ahead Log (Journal)
• Apri il Log
• Scrivici informazioni tipo “Questo dato va
qui (offset)”
• Scrivi il file
• Tenta il salvataggio su disco (fsync)
• Modifica i dati
• Segna sul Log che le operazioni sono
state compiute
35
http://www.depesz.com/2011/07/14/write-ahead-log-understanding-postgresql-conf-checkpoint_segments-checkpoint_timeout-checkpoint_warning/
50. Non potete avere tutto, ragazzi!
Prof. Eric Brewer
http://www.cs.berkeley.edu/~brewer/
51. Se volete distribuire una base
dati, qualora si venga a creare
un partizionamento, dovete
scegliere tra coerenza dei dati
e disponibilità del servizio.
CAP Theorem, Nancy Lynch and Seth Gilbert, “Brewer's conjecture and the feasibility
of consistent, available, partition-tolerant web services”, ACM SIGACT News, Volume
33 Issue 2 (2002), pg. 51-59.
64. Cos’è CouchDB?
• Datastore Documentale (JSON)
• Interfaccia HTTP
• Replicazione master-master (con filtri)
• Può contenere applicazioni Web
HTML/CSS/JS (Couchapp)
• Pensato per contesti distribuiti
• Un progetto dalla storia “travagliata”
64
72. Versioni
• ID / _rev
• Meglio generare da se gli ID (sequenziali)
• Aggiornamenti atomici sui documenti
• Aggiornamento ottimista, MVCC
• Coerenza Eventuale
72
93. Indicatori di Performance
• 350 evt/sec in inserimento
• 3000 evt/sec se in batch mode
• 100 evt/sec su update
• 10 evt/sec durante compattazione
93
• NB: dati forniti unicamente per dare ordini di grandezza. Test eseguiti su server entry level IBM x3550
M3, 1x3.60 GHz Xeon, 4GB RAM, Dischi SAS in RAID 0
• CouchDB configurato con httpd max_connections = 2048, export ERL_MAX_PORTS=4096, export
ERL_FLAGS="+A 4«, fsync
99. Da considerare:
• Inerentemente più rischioso
• Più onerosa la manutenzione e il backup
degli shard
• Delicato decidere con quali criteri
• In SQL: “Join” tra shards costosi.
Replicazione delle tabelle “globali” – es.
categorie film
99
101. Recap su CouchDB:
• Ottima soluzione per contesti distribuiti
• Non adatto per situazioni con frequenti
aggiornamenti e carichi (ingenti) costanti
• API REST aiuta a scalare le letture
• Bigcouch in aiuto sulle scritture
• Architetture innovative con le Couchapp
• Si possono usare strumenti Tipici Web:
HAproxy, Nginx
101
102. Da Tenere a Mente:
• Attenzione alla generazione degli ID,
specie se distribuiti
• Lo spazio su disco cresce e la
compattazione «inchioda» lo strumento
• I «driver» disponibili non sempre sono di
alta qualità...
102
103. Da Tenere sotto controllo:
• TouchDB
database CouchDB compatibile,
adatto all’embedding in device
mobili
• PouchDB
libreria js: come avere
CouchDB nel browser
103
108. Cosa ci serve?
• Flessibilità del modello dati
• Semplicità
• Facilità di dialogo con PHP
• Scalabilità sulle letture
• Flessibilità di query
108
109. Perché no CouchDB?
• Flessibilità del modello dati
• Semplicità
• Facilità di dialogo con PHP
• Scalabilità sulle letture
• Flessibilità di query
109
120. In CouchDB
120
function(doc) {
if (doc.info_type == 'view') {
emit(doc.movie, doc.views);
}
}
Map:
{
"_id": "39c7c57...",
"info_type": "view",
"movie": "The Gladiator",
"views": 37
}
121. Cosa fa il map?
121
Map:
function(doc) {
if (doc.info_type == 'view') {
emit(doc.movie, doc.views);
}
}
{
"movie": "Spiderman",
"views": 10
}
{
"movie": "The Gladiator",
"views": 37
}
{
"movie": "Shrek",
"views": 25
}
10 37 25
122. Cosa fa il reduce?
122
Reduce:
function (key, values, rereduce) {
return sum(values);
}
10 37 25
47 25
123. Dov’è il problema?
123
function(doc) {
if (doc.info_type == 'config') {
for (param in doc.params) {
emit(param, doc.params[param]);
}
}
}
Map:
Reduce:
.... Non possiamo avere parametri in input!
Viste precalcolate su
ciascun documento
133. Recap su MongoDB:
• Semplice (arma a doppio taglio!)
• Linguaggio d’interrogazione potente
• Ottima documentazione
• Flessibilità nella configurazione
• Driver disponibili per molti linguaggi
• Sviluppo molto attivo
• Supporto
133
134. Fare attenzione a:
• Opzione safe, journaling
• Si inchioda negli ordinamenti se non
definiti indici
• Attenzione ai nomi!
• Non farsi coinvolgere e cercare di
costruirci sopra DB relazionali
134
137. Cosa abbiamo considerato?
• Performance
• Semplicità
• Expiration automatico dei valori
• Gestione del cold start
• Non è un problema la perdita di dati
-> Ok persistenza volatile, no replicazione
137
138. Perchè no Couch/Mongo?
• Couch occupa troppo spazio, troppo lento
• MongoDB poteva starci (soprattutto
perché TTL introdotte da poco – 12/09);
• Ma ci sono soluzioni più semplici…
138
140. About Redis
• Key/Value++
• Progetto Italiano (Salvatore Sanfilippo)
• Protocollo Binario
• Sponsorizzato da VMWare
• Gestione expiry delle chiavi
140
141. Esempi di query
141
// Memorizzare un valore
> SET status ok
// Collezioni
> SADD luci_accese camera bagno
// Valore con scadenza prefissata
> SET status ok
> EXPIRE status 10 // in secondi
143. Recap su Redis:
• E’ molto veloce
• Salva su RAM (snapshot su disco)
• E’ un’ottima soluzione di caching,
evitando problema cold start
• Necessario avere abbastanza RAM
• Può essere usato per delegare alcuni
calcoli costosi
143
155. Con strumenti visti prima…
• Query di Couch poco flessibili
• Redis assenza indici secondari
• MongoDB e Postgres forse ok ma limiti
nel traversare nodi non immediatamente
adiacenti
155
157. Con RDBMS
157
SELECT p1 . * , p2 . * , v . *
FROM pagina AS p1
JOIN visita AS v ON v.pagina_da = p1.id
JOIN pagina AS p2 ON v.pagina_a = p2.id
WHERE p1.id =1
AND v.data_visita >0
AND v.data_visita <4
158. Il problema…
158
SELECT p1 . * , p2 . * , v . *
FROM pagina AS p1
JOIN visita AS v ON v.pagina_da = p1.id
JOIN pagina AS p2 ON v.pagina_a = p2.id
WHERE p1.id =1
AND v.data_visita >0
AND v.data_visita <4
O(log N) O(log M) O(log N)
159. Invece con un grafo:
159
O(1)
O(1)
Adiacenza senza necessità di consultare un indice!
166. Recap su OrientDB:
• Ottima soluzione per gestire relazioni
• Traversa 5 Milioni+ di record/sec
• Progetto Italiano (Luca Garulli)
• ACID
• Supporta ereditarietà
• Semplice da installare e avviare
166
168. Ringraziamento
168
Il know how utilizzato per la preparazione di questa presentazione è
stato in buona parte acquisito durante lo sviluppo del sistema Hotel
OnAir di concezione e proprietà di VDA Multimedia Spa, cui il case
study di cui si è fatto accenno fa riferimento.
Ringraziamo il team leader del progetto, Stefano Brenelli, e tutto il team
di sviluppo, per l'interessante, edificante e proficua collaborazione. In
particolare ringraziamo: Carlo Anselmi, Maurizio Battistella, Manuel
Bitto, Nicola Busanello, Antonino Murador, Antonio Parrella, Nicola
Pressi, Riccardo Zamuner, Michele Zanon, Tiziano Zonta.
Ringraziamo anche i colleghi Diego Drigani e Dario Tion, nonchè tutto il
PUG Friuli per i sempre utili confronti e consigli.