This talk is a brief introduction to Elasticsearch. What is it ? How can I use it ? How can it be useful for my company or for my business ? (the slides are in ITALIAN)
Come funzionano i Retrieval-Augmented Generators (RAG) e quanto i database vettoriali sono fondamentali per poter memorizzare e utilizzare le sorgenti dati aziendali e personali?
Descrizione delle principali tecnologie abilitanti alla gestione dei Big Data, con particolare attenzione all’ecosistema che gravita intorno al framework Hadoop di Apache.
Deploy MongoDB su Infrastruttura Amazon Web ServicesStefano Dindo
Lo scopo della presentazione è quella di fornire una visione a 360 gradi su come realizzare un'architettura MongoDB su un'infrastruttura Cloud Amazon Web Services.
La presentazione è suddivisa in quattro aree:
- Introduzione di base su MongoDB
- Preview delle caratteristiche di MongoDB 3
- Come organizzare architetture Replica Set e Sharding di MongoDB in VPC Cloud di Amazon Web Services
- Introduzione alle logiche di Schema Design di MongoDB
Trovare ciò che serve nella confusione: comprendere i Big Data con l'analisi AWSAmazon Web Services
Ai giorno nostri, le informazioni sono una risorsa che deve ancora essere esplorata. Con l’evoluzione dei social media e della tecnologia, la raccolta di dati sta crescendo costantemente, raddoppiando ogni due anni poiché viene creato un numero sempre maggiore di flussi di dati. L’utente di Internet medio nel 2017 generava 1,5 GB di dati al giorno, un numero che raddoppia ogni 18 mesi. Un veicolo autonomo può generare da solo 4 TB al giorno. Ogni stabilimento di produzione "smart" genera 1PB al giorno. Tuttavia, il potenziale di utilizzo di questa abbondanza di dati deve ancora concretizzarsi, poiché sempre più compagnie e tecnologie di intelligenza artificiale stanno usando questi dati per fare scoperte e influenzare decisioni chiave. In questa sessione esamineremo lo stato attuale dei Big Data all'interno di AWS e analizzeremo in profondità gli ultimi trend in materia di Big Data, oltre che alcuni casi d'uso industriale. Scopriremo la gamma di servizi AWS per i dati gestiti che permettono ai clienti di concentrarsi sul rendere utili i dati, tra cui Amazon Aurora, RDS, DynamoDB, Redshift, Spectrum, ElastiCache, Kinesis, EMR, Elasticsearch Service e Gluehow. In questa sessione parleremo di questi servizi, mostrando come vengono utilizzati oggi dai nostri clienti e condivideremo la nostra visione per l’innovazione.
Speaker: Giorgio Nobile, Solutions Architect, AWS
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.
Azure Synapse Analytics for your IoT SolutionsMarco Parenzan
Let's find out in this session how Azure Synapse Analytics, with its SQL Serverless Pool, ADX, Data Factory, Notebooks, Spark can be useful for managing data analysis in an IoT solution.
Slide dell'evento One Day Cache (http://www.xedotnet.org/eventi/one-day-performance-optimization/)
ABSTRACT: Cache, amica e nemica di molti dev.
Uno dei modi per incrementare le performance di un'applicativo è l'utilizzo della cache, ma non è tutto oro quel che luccica.
In questa sessione vedremo quali tipologie di cache esistono, ed il come poterle utilizzare al meglio. Output cache, cache applicativa, Redis, Memcached...cerchiamo di fare un pò di chiarezza e capiamo i pro e contro delle varie soluzioni.
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB
MongoDB Atlas è il servizio DBaaS (Database-as-a-Service) che ti consente distribuire, gestire e scalare un database MongoDB in ambiente cloud con pochi clic.
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackPar-Tec S.p.A.
In occasione dell’Oracle MySQL Tech Tour 2016, il TechAdvisor Daniele Marcocci ha illustrato come Oracle OpenStack e MySQL Enterprise Edition permettono di realizzare un DBaaS funzionale e produttivo.
Nella sessione introduttiva sono stati trattati i seguenti punti:
- Capiamo l’architettura
- Approfondimenti
- Database-as-a-Service
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro TechAdvisor su http://www.par-tec.it/database-as-a-service-con-mysql-e-oracle-openstack
Machine Learning: strategie di collaborative filtering nelle piattaforme onli...Federico Panini
Machine Learning: strategie di collaborative filtering nelle piattaforme online. Un caso concreto di applicazione nel mondo SaaS e E-commerce, il caso Fazland.com.
Come funzionano i Retrieval-Augmented Generators (RAG) e quanto i database vettoriali sono fondamentali per poter memorizzare e utilizzare le sorgenti dati aziendali e personali?
Descrizione delle principali tecnologie abilitanti alla gestione dei Big Data, con particolare attenzione all’ecosistema che gravita intorno al framework Hadoop di Apache.
Deploy MongoDB su Infrastruttura Amazon Web ServicesStefano Dindo
Lo scopo della presentazione è quella di fornire una visione a 360 gradi su come realizzare un'architettura MongoDB su un'infrastruttura Cloud Amazon Web Services.
La presentazione è suddivisa in quattro aree:
- Introduzione di base su MongoDB
- Preview delle caratteristiche di MongoDB 3
- Come organizzare architetture Replica Set e Sharding di MongoDB in VPC Cloud di Amazon Web Services
- Introduzione alle logiche di Schema Design di MongoDB
Trovare ciò che serve nella confusione: comprendere i Big Data con l'analisi AWSAmazon Web Services
Ai giorno nostri, le informazioni sono una risorsa che deve ancora essere esplorata. Con l’evoluzione dei social media e della tecnologia, la raccolta di dati sta crescendo costantemente, raddoppiando ogni due anni poiché viene creato un numero sempre maggiore di flussi di dati. L’utente di Internet medio nel 2017 generava 1,5 GB di dati al giorno, un numero che raddoppia ogni 18 mesi. Un veicolo autonomo può generare da solo 4 TB al giorno. Ogni stabilimento di produzione "smart" genera 1PB al giorno. Tuttavia, il potenziale di utilizzo di questa abbondanza di dati deve ancora concretizzarsi, poiché sempre più compagnie e tecnologie di intelligenza artificiale stanno usando questi dati per fare scoperte e influenzare decisioni chiave. In questa sessione esamineremo lo stato attuale dei Big Data all'interno di AWS e analizzeremo in profondità gli ultimi trend in materia di Big Data, oltre che alcuni casi d'uso industriale. Scopriremo la gamma di servizi AWS per i dati gestiti che permettono ai clienti di concentrarsi sul rendere utili i dati, tra cui Amazon Aurora, RDS, DynamoDB, Redshift, Spectrum, ElastiCache, Kinesis, EMR, Elasticsearch Service e Gluehow. In questa sessione parleremo di questi servizi, mostrando come vengono utilizzati oggi dai nostri clienti e condivideremo la nostra visione per l’innovazione.
Speaker: Giorgio Nobile, Solutions Architect, AWS
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.
Azure Synapse Analytics for your IoT SolutionsMarco Parenzan
Let's find out in this session how Azure Synapse Analytics, with its SQL Serverless Pool, ADX, Data Factory, Notebooks, Spark can be useful for managing data analysis in an IoT solution.
Slide dell'evento One Day Cache (http://www.xedotnet.org/eventi/one-day-performance-optimization/)
ABSTRACT: Cache, amica e nemica di molti dev.
Uno dei modi per incrementare le performance di un'applicativo è l'utilizzo della cache, ma non è tutto oro quel che luccica.
In questa sessione vedremo quali tipologie di cache esistono, ed il come poterle utilizzare al meglio. Output cache, cache applicativa, Redis, Memcached...cerchiamo di fare un pò di chiarezza e capiamo i pro e contro delle varie soluzioni.
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB
MongoDB Atlas è il servizio DBaaS (Database-as-a-Service) che ti consente distribuire, gestire e scalare un database MongoDB in ambiente cloud con pochi clic.
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackPar-Tec S.p.A.
In occasione dell’Oracle MySQL Tech Tour 2016, il TechAdvisor Daniele Marcocci ha illustrato come Oracle OpenStack e MySQL Enterprise Edition permettono di realizzare un DBaaS funzionale e produttivo.
Nella sessione introduttiva sono stati trattati i seguenti punti:
- Capiamo l’architettura
- Approfondimenti
- Database-as-a-Service
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro TechAdvisor su http://www.par-tec.it/database-as-a-service-con-mysql-e-oracle-openstack
Machine Learning: strategie di collaborative filtering nelle piattaforme onli...Federico Panini
Machine Learning: strategie di collaborative filtering nelle piattaforme online. Un caso concreto di applicazione nel mondo SaaS e E-commerce, il caso Fazland.com.
These slides show how you can use a fully very simple smtp server on your vagrant machines, called mailcatcher. Mailcatcher is a small ruby gem which let you test your emails locally. A very useful web frontend will help you checking email sent through your Symfony application.
Elasticsearch what is it ? How can I use it in my stack ? I will explain how to set up a working environment with Elasticsearch. The slides are in English.
2. Cos’è Elasticsearch ?
federico.panini@fazland.com - CTO
motore di ricerca full text
“Un motore di ricerca (in inglese search engine) è un
sistema automatico che, su richiesta, analizza un insieme di
dati (spesso da esso stesso raccolti) e restituisce un indice
dei contenuti disponibili classificandoli in modo automatico
in base a formule statistico-matematiche che ne indichino il
grado di rilevanza data una determinata chiave di ricerca”.
5. Cos’è Elasticsearch ?
federico.panini@fazland.com - CTO
caratteristiche
Dati disponibili real-time
Analisi dei dati real-time
Ambiente distribuito
Alta disponibilità
Ricerche full-text
Document oriented DB
Schemaless DB
RESTFul Api
Persistenza per-operazione
Open Source
Costruito su Apache Lucene
Optimistic version control
8. Elastic cosa ha in più di Lucene?
federico.panini@fazland.com - CTO
ricerche full text
horizontal scaling
high availability
Semplicità d’uso
near real time
9. Architettura
federico.panini@fazland.com - CTO
requirements - CPU
Per sua natura elasticsearch non necessita di molte
capacità “computazionali”. In generale l’utilizzo della CPU
è molto limitato.
E’ consigliato utilizzare un modello di CPU di ultima
generazione con più di un core.
In genere installazioni standard di ES utilizzano dai 2 agli 8
cores.
11. Architettura
federico.panini@fazland.com - CTO
requirements - Disco - bonus slide …
Unico punto di attenzione è sullo scheduler in uso dal sistema
operativo. Lo scheduler è lo strumento che i sistemi operativi *nix
utilizzano per decidere quando i dati devono essere inviati al disco e
con quale tipo di priorità. Normalmente le installazioni di unix
utilizzano cfq, che è uno scheduler ottimizzato per i dischi classici a
“piatti rotanti”. Se si implementano dischi SSD è consigliato utilizzare
“noop” o “deadline”, scheduler ottimizzati per questa tipologia di
hard disk.
Si riescono a raggiungere miglioramenti nelle prestazioni di 500x
rispetto ad una errata configurazione del Sistema operativo.
12. Architettura
federico.panini@fazland.com - CTO
Sistema Operativo
Non ci sono particolari
vincoli sul sistema operativo
in quanto ES è sviluppato in
Java, quindi potenzialmente
multipiattaforma. Il consiglio
è di utilizzare l’ultima
versione disponibile della
JDK.
15. Architettura
federico.panini@fazland.com - CTO
installazione
curl -L -O http://download.elasticsearch.org/PATH/TO/
VERSION.zip
unzip elasticsearch-$VERSION.zip
cd elasticsearch-$VERSION
sono disponibili distribuzioni Debian o RPM packages
oltre a moduli chef e puppet.
17. Comunicare con Elastic
federico.panini@fazland.com - CTO
clients Java #1
Per Java sono disponibili 2 client:
Node client: con questo tipo di
approccio il client fa una join al cluster
come “nodo non contenente dati”, il
nodo in se non ha dati ma sa
perfettamente su quale nodo del
cluster si trovano i dati che sta
cercando
18. Comunicare con Elastic
federico.panini@fazland.com - CTO
clients Java #2
Per Java sono disponibili 2 client:
Transport client : è molto più “snello”
del precedente ed è lo strumento
utilizzato per comunicare con cluster
in remoto.
19. Comunicare con Elastic
federico.panini@fazland.com - CTO
clients Java #2
Per Java sono disponibili 2 client:
Tutti e due i tipi di client comunicano con
il cluster sulla porta 9300, che tra l’altro
la stessa porta con la quale comunicano
i nodi stessi del cluster.
20. Comunicare con Elastic
federico.panini@fazland.com - CTO
client API RESTful
Tutti gli altri linguaggi possono comunicare
con Elasticsearch utilizzando le API Rest
disponibili sulla porta 9200.
Esistono client ufficiale per questi
linguaggi :
Groovy, JavaScript, .NET, PHP,
Perl, Python, e Ruby
21. Elastic
federico.panini@fazland.com - CTO
Document oriented
NoSql
Elasticsearch è un database
document oriented. Questo
significa che i dati inseriti non
sono “costretti” a nessun tipo di
forma tabellare ma è possibile
inserire oggetti o meglio
documenti direttamente.
A seguito dell’inserimento,
Elasticsearch provvede anche ad
indicizzare i dati appena inseriti.
24. Elastic
federico.panini@fazland.com - CTO
cluster
Un cluster è un insieme a cui appartiene uno o più
nodi, che condividono la stessa proprietà
cluster.name. Il cluster server per bilanciare il carico
delle richieste che provengono ad Elasticsearch.
Un nodo può essere eliminato o aggiunto al cluster,
questo sarà responsabile di riorganizzarsi.
25. Elastic
federico.panini@fazland.com - CTO
cluster
All’interno del cluster un nodo è eletto come Master.
Questo nodo è responsabile di gestire operazioni
sugli indici come la loro creazione o eliminazione,
aggiungere o rimuovere un nodo dal cluster. Ogni
nodo può essere Master.
31. Elastic
federico.panini@fazland.com - CTO
shards
Se vogliamo iniziare a salvare dati su Elasticsearch è
necessario creare un indice. Il termine Indice è solamente
una definizione logica e rappresenta un puntatore ad uno
o più elementi definiti SHARDS.
32. Elastic
federico.panini@fazland.com - CTO
shards
Lo shard è considerato un elemento di basso livello
nell’infrastruttura di ES. Lo shard contiene un subset di
tutti i dati contenuti nell’indice.
Lo shard, fisicamente rappresenta una singola istanza di
Apache Lucene.
33. Elastic
federico.panini@fazland.com - CTO
Replica shards
Gli shards di tipo replica sono delle copie esatte degli
shards utilizzate per proteggere i nostri dati da errori
hardware. Allo stesso modo degli shards “servono”
richieste e ricerche sugli indici.
37. Elastic
federico.panini@fazland.com - CTO
shards immutability
Shards di tipo replica sullo stesso nodo sono
assolutamente inutili… perde di ogni significato il
concetto di ridondanza per il quale sono stati creati. E’
necessario eseguire un nuovo nodo. In automatico il
cluster si renderà responsabile di creare 3 replica shards
per il nostro indice.
39. Elastic
federico.panini@fazland.com - CTO
BONUS : gestione dei conflitti #2 : Pessimistic Concurrency Control
Gestito ed utilizzato normalmente nei RDBMS
Questo approccio parte dall’assunto che i conflitti
possano avvenire di frequente e quindi per evitarli blocca
la risorsa alla quale sta accedendo.
Il processo blocca l’accesso alla row prima di accedere ai
suoi dati in lettura, avendo così la garanzia che solamente
questo thread possa modificarla e nessun altro.
Al termine dell’operazione rilascerà il LOCK.
40. Elastic
federico.panini@fazland.com - CTO
BONUS : gestione dei conflitti #3 : Optimistic Concurrency Control
Elasticsearch utilizza questo approccio
Al contrario l’assunzione, è che i conflitti avvengano poco
di frequente. E quindi il DB non blocca la risorsa quando
vi accede.
La responsabilità è applicativa : quando i dati sono
modificati tra una lettura ed una scrittura allora
l’aggiornamento fallisce. In questo caso è necessario
recuperare il dato “fresco” e rifarne l’update.
41. Elastic
federico.panini@fazland.com - CTO
BONUS : gestione dei conflitti #4 : Optimistic Concurrency Control
Elasticsearch è per sua natura distribuito, concorrente ed
asincrono. Quando un documento è creato/aggiornato/
eliminato è necessario che questa informazine sia
replicata su tutti i nodi del cluster.
Ogni informazione è inviata ai vari nodi in parallelo e può
succedere che un dato arrivi a destinazione già scaduto.
42. Elastic
federico.panini@fazland.com - CTO
BONUS : gestione dei conflitti #5 : Optimistic Concurrency Control
E’ necessario che Elasticsearch abbia un
modo per non aggiornare un dato più
“aggiornato”.
44. Elastic
federico.panini@fazland.com - CTO
BONUS : gestione dei conflitti #7 : Optimistic Concurrency Control
In ogni documento è presente un campo :
_version
Questo campo è incrementato ogni volta che un
operazione sul documento è avvenuta con successo. In
questo modo un aggiornamento della versione 3 non
andrà mai ad aggiornare un document che è già alla
versione 4.
45. Elastic
federico.panini@fazland.com - CTO
BONUS : gestione dei conflitti #8 : Optimistic Concurrency Control
Attenzione la responsabilità di implementare questa
soluzione è tutta APPLICATIVA! quindi nostra. Se
vogliamo essere assolutamente sicuri di non avere perdite
di dati dobbiamo effettuare scritture utilizzando il version
number del documento che vogliamo aggiornare!
54. Elastic
federico.panini@fazland.com - CTO
mapping and analysis
EXACT MATCH vs FULL TEXT
Exact match Full Text
where name = ‘Federico’
and user_id = 2
and date > “2014-09-15”
“Federico è andato al
mare”
Federico / FEDERICO /
federico
55. Elastic
federico.panini@fazland.com - CTO
mapping and analysis
EXACT MATCH vs FULL TEXT
Exact match
Full Text
binario : il documento contiene questi valori ?
Quanto è rilevante il documento per la query
digitata ?
56. Elastic
federico.panini@fazland.com - CTO
mapping and analysis
Elasticsearch per facilitare la ricerca full-text analizza il
testo ed utilizza il risultato di questa analisi per costruire
un inverted index.
Inverted Index Analyzer
58. Elastic
federico.panini@fazland.com - CTO
Inverted Index
Se dobbiamo cercare la parola
“quick” e “brown” prendiamo i
documenti dove sono presenti
entrambe i termini
1. The quick brown fox jumped
over the lazy dog
2. Quick brown foxes leap over
lazy dogs in summer
59. Elastic
federico.panini@fazland.com - CTO
Inverted Index
E’ stato portato tutto in lowercase,
stemmer, e synonyms (leap)
1. The quick brown fox jumped
over the lazy dog
2. Quick brown foxes leap over
lazy dogs in summer
61. Elastic
federico.panini@fazland.com - CTO
ANALYZERS - Character Filters
Il primo step è passare ogni stringa ad un character filter
il quale è responsabile di ripulire / riordinare le string
prima della fase di Tokenizing.
in questa fase vengono eliminati i caratteri HTML o “&” è
convertito in “and”.
63. Elastic
federico.panini@fazland.com - CTO
ANALYZERS - Token Filters
Successivamente alla fase di Tokenizzazione delle
stringhe in singoli termini (terms), i filtri (selezionati) sono
applicati in sequenza.
Per esempio :
- lowercase di tutto il testo
- rimuovi le stop words
- aggiungi termini come sinonimi
64. Elastic
federico.panini@fazland.com - CTO
Standard Analyzer
“Set the shape to semi-transparent by calling
set_trans(5)”
Lo standard analyzer è l’analyzer di default di
Elasticsearch. Separa il testo in singole parole e
rimuove buona parte della punteggiatura.
“set, the, shape, to, semi, transparent, by, calling,
set_trans, 5”
65. Elastic
federico.panini@fazland.com - CTO
Simple Analyzer
“Set the shape to semi-transparent by calling
set_trans(5)”
Il simple analyzer rimuove tutti i caratteri che non sono
lettere e mette tutto il testo in minuscolo.
“set, the, shape, to, semi, transparent, by, calling,
set, trans”
66. Elastic
federico.panini@fazland.com - CTO
Whitespace Analyzer
“Set the shape to semi-transparent by calling
set_trans(5)”
Tokenizza utilizzando gli spazi e non forze le stringhe in
minuscolo.
“Set, the, shape, to, semi, transparent, by, calling,
set_trans(5)”
67. Elastic
federico.panini@fazland.com - CTO
Language Analyzer
“Set the shape to semi-transparent by calling
set_trans(5)”
Questo analyzer utilizza le specificità del linguaggio
naturale. Può eliminare le stop words e fare stemming.
“set, shape, semi, transpar, call, set_tran, 5”