SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
De la base de données classique au
streaming avec Debezium
Décembre 2019
Yabir CANARIO DE LA MOTA / Charly CLAIRMONT
Streaming processing
Paris Open Source Summit - 10 Décembre 2019
Charly CLAIRMONT
CTO, Synaltic
Yabir CANARIO DE LA MOTA
Data Engineer
2
Paris Open Source Summit - 10 Décembre 2019
Heterogeneous
data sources
Data Warehouse
Data Lake
Data Hub
Expertise
Data Analysis
Data Science
Data Strategy
15 years old
35 #SynalTeam
members
Datavisualisation
#DataIntelligence , #DataOps
On Premise,
Cloud,
Hybrid cloud !
Synaltic
API
Data
Engineering
Ingest
ETL
Streaming
Scheduler
3
Tous vos processus méritent le temps réel !
4
Sommaire
5
Le contexte --------------------------------- 4
Debezium --------------------------------- 5
Demo --------------------------------- 7
Cas d’utilisation --------------------------------- 11
Fonctionnement --------------------------------- 16
Le contexte : Event Driven
CDC par trigger
- impact sur les performances
- pas de solution générique
CDC par lecture du log
- pas de reprise sur erreur
- pas de solution générique
CDC par Debezium
Sortie de Debezium
(licence Apache)
mai 2019
Qu’est-ce que Debezium ?
7
Events
Message queue
DataBase
Log
Log
8
● Simplifie la mise en place du CDC
● Accélère la propagation des changements
● Enrichi les événements
● DB Agnostique
● Tolérant à la panne
● Du Batch au Streaming
https://debezium.io/
Ce que nous apporte Debezium
Démonstration
9
10
Entrées
MySQL
Ventes
E-commerce
11
Entrées
MySQL
Ventes
Postgres
Stock
E-commerce
12
Entrées
MySQL
Ventes
Postgres
Stock
Debezium + Kafka
E-commerce
ZOOM
13
Kafka
Kafka Connect KSQL
Debezium
MySQL
Kafka Connect
Sink
JDBC
Stack Debezium + Kafka
E-commerce
14
Entrées
MySQL
Ventes
Postgres
Nodejs
Stock
Web App
Debezium + Kafka
E-commerce
DEMO
15
16
CREATE STREAM entrees_stream … WITH (KAFKA_TOPIC='dbserver1.synalticdb.entrees,
VALUE_FORMAT='AVRO');
CREATE STREAM ventes_stream … WITH (KAFKA_TOPIC='dbserver1.synalticdb.ventes', VALUE_FORMAT='AVRO');
CREATE STREAM S_UNION_ENTREES_VENTES WITH (PARTITIONS=1) AS 
SELECT 'STOCK' as SRC, * FROM entrees_stream_key;
INSERT INTO S_UNION_ENTREES_VENTES 
SELECT 'VENTES' AS SRC, * FROM ventes_stream_key;
CREATE TABLE T_DASHBOARD AS 
SELECT id_produit as idproduit, SUM(quantite) as quantite 
FROM S_UNION_STOCK_VENTES 
WITH (KAFKA_TOPIC=T_DASHBOARD, VALUE_FORMAT='delimited', KEY='idproduit') 
GROUP BY id_produit;
KSQL
E-commerce
Uses cases
17
18
Polling
Message broker
API
Connecteur
Debezium
dans Kafka
Connect
Evénements
Réplication
19
DB
App 3
Application 3
Broker de messages
DB
App 2
Application 2
DB
App 1
Application 1
● Extraction de microservices depuis
un système en silo/monolith
● Synchronisation de données entre
différents services
● Tolérant à l'évolution de schéma
Architecture de MicroServices
Slide A Finir
20
● Architecture Micro Services
● Audit / Historisation
● Mise à jour full-text search via Elasticsearch, Solr, etc
● Mise à jour CQRS modèle de lecture
● Mise à jour de la UI en temps réel
● Pouvoir requêter les données en streaming
D’autres Uses Cases ...
Comment obtenir
les changements de la base de données?
21
● Double écriture
○ Gérer les pannes et erreurs
○ Problèmes d’ordre
● Récupération de changements
○ Comment identifier les données mise à jour?
○ Comment identifier les données supprimées?
Slide A Finir
22
Monitoring de la base de données
Applications écrivant à la base de données
-> les modifications sont stockées dans le fichier log
-> les tables sont mises à jour
Utilisons le fichier log de la base de données
Comment suivre tous les changements ?
MySQL -- Binary log / binlog
Postgres -- write-ahead log
MongoDB -- op log
23
Kafka correspond bien aux objectifs CDC
● Messages identifiés par clé
● Ordre garanti
● Basée par pull request
● Support la compaction
● Scalabilité horizontale
Kafka Connect
● Framework pour connecteurs
source et sink
● Suivi des offsets
● Support schema
● Clustering
● Variété de connecteurs
KSQL
● Création de tables et
streaming
● Jointures
Infrastructure du messaging
24
● MySQL
● Postgres
● MongoDB
● SQL Server
● Oracle (incubating)
● Cassandra (incubating)
Connecteurs CDC Debezium
25
● Pair clé-valeur (dont clé = Primary key)
● Payload :
○ Before
○ After
○ Source
○ Operation
○ Date
● Types :
○ JSON
○ Avro
Structure de message
26
● Standardisation des messages, peu importe la base de données source
● Garanti de la récupération de tous les changements de la base de données
● Produit des événements de changement avec un délai très faible (par exemple,
plage de ms pour MySQL ou Postgres)
● Récupération de données supprimées
● Filters -> whitelist/blacklist
● Masking
● Snapshots
● Monitoring a travers JMX
○ Statut du Snapshot
○ Dernier event/snapshot
● Embedded Engine
● Transformation
Fonctionnalités Debezium
27
Application dans le source ou le sink
Use Cases :
Extraction
Conversion
Routage
Fourni par Debezium :
Routage logique de table
SMT flatten événement
Transformation
Slide A Finir
28
● Simplifie la mise en place du CDC
● Accélère la propagation des changements
● Enrichi les événements
● DB Agnostique
● Tolérant à la panne
● Du Batch au Streaming
Pour conclure, Debezium :
29
Tutorat Debezium
https://debezium.io/documentation/reference/1.0
/tutorial.html
Examples docker-compose
https://github.com/debezium/debezium-examples
Accompagnement Synaltic
https://www.synaltic.fr/
Pour aller plus loin !
Questions ?
Yabir CANARIO DE LA MOTA
Data Engineer
Twitter : @CanarioYabir
ycanario@synaltic.fr
www.synaltic.fr
Charly CLAIRMONT
CTO
Twitter : @egwada
cclairmont@synaltic.fr
www.synaltic.fr

Contenu connexe

Similaire à #OSSPARIS19 - Stream processing : de la base de données classique au streaming avec Debezium - CHARLY CLAIRMONT & YABIR CANARIO DE LA MOTA, Synaltic

Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackLe cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackMicrosoft Décideurs IT
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Alan Poe appliqué au data streaming - toutes choses sont bonnes ou mauvaises ...
Alan Poe appliqué au data streaming - toutes choses sont bonnes ou mauvaises ...Alan Poe appliqué au data streaming - toutes choses sont bonnes ou mauvaises ...
Alan Poe appliqué au data streaming - toutes choses sont bonnes ou mauvaises ...Julien Cognet
 
Spark Streaming
Spark StreamingSpark Streaming
Spark StreamingPALO IT
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...Nicolas Desachy
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTVictor Coustenoble
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...Publicis Sapient Engineering
 
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6MongoDB
 
Volcamp 2023 - Compter les moutons à grande échelle
Volcamp 2023 - Compter les moutons à grande échelleVolcamp 2023 - Compter les moutons à grande échelle
Volcamp 2023 - Compter les moutons à grande échelleKarim Bogtob
 
Denodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo
 
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...Patrick Guimonet
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Bruno Bonnin
 
GAB 2015 - Nouveautes sur le stockage de donnees dans Azure
GAB 2015  - Nouveautes sur le stockage de donnees dans AzureGAB 2015  - Nouveautes sur le stockage de donnees dans Azure
GAB 2015 - Nouveautes sur le stockage de donnees dans AzureJean-Luc Boucho
 

Similaire à #OSSPARIS19 - Stream processing : de la base de données classique au streaming avec Debezium - CHARLY CLAIRMONT & YABIR CANARIO DE LA MOTA, Synaltic (20)

Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackLe cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
 
Inf208
Inf208Inf208
Inf208
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Alan Poe appliqué au data streaming - toutes choses sont bonnes ou mauvaises ...
Alan Poe appliqué au data streaming - toutes choses sont bonnes ou mauvaises ...Alan Poe appliqué au data streaming - toutes choses sont bonnes ou mauvaises ...
Alan Poe appliqué au data streaming - toutes choses sont bonnes ou mauvaises ...
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoT
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
 
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptx
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6
 
Volcamp 2023 - Compter les moutons à grande échelle
Volcamp 2023 - Compter les moutons à grande échelleVolcamp 2023 - Compter les moutons à grande échelle
Volcamp 2023 - Compter les moutons à grande échelle
 
Denodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie API
 
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
 
GAB 2015 - Nouveautes sur le stockage de donnees dans Azure
GAB 2015  - Nouveautes sur le stockage de donnees dans AzureGAB 2015  - Nouveautes sur le stockage de donnees dans Azure
GAB 2015 - Nouveautes sur le stockage de donnees dans Azure
 
Fusion io
Fusion ioFusion io
Fusion io
 

Plus de Paris Open Source Summit

#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...Paris Open Source Summit
 
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...Paris Open Source Summit
 
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...Paris Open Source Summit
 
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, ArduinoParis Open Source Summit
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...Paris Open Source Summit
 
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...Paris Open Source Summit
 
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, ZabbixParis Open Source Summit
 
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, InriaParis Open Source Summit
 
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...Paris Open Source Summit
 
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...Paris Open Source Summit
 
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...Paris Open Source Summit
 
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...Paris Open Source Summit
 
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...Paris Open Source Summit
 
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...Paris Open Source Summit
 
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...Paris Open Source Summit
 
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...Paris Open Source Summit
 
#OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données #OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données Paris Open Source Summit
 
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...Paris Open Source Summit
 
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...Paris Open Source Summit
 
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...Paris Open Source Summit
 

Plus de Paris Open Source Summit (20)

#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
 
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
 
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
 
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
 
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
 
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
 
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
 
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
 
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
 
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
 
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
 
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
 
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
 
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
 
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
 
#OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données #OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données
 
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
 
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
 
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
 

#OSSPARIS19 - Stream processing : de la base de données classique au streaming avec Debezium - CHARLY CLAIRMONT & YABIR CANARIO DE LA MOTA, Synaltic

  • 1. De la base de données classique au streaming avec Debezium Décembre 2019 Yabir CANARIO DE LA MOTA / Charly CLAIRMONT Streaming processing
  • 2. Paris Open Source Summit - 10 Décembre 2019 Charly CLAIRMONT CTO, Synaltic Yabir CANARIO DE LA MOTA Data Engineer 2
  • 3. Paris Open Source Summit - 10 Décembre 2019 Heterogeneous data sources Data Warehouse Data Lake Data Hub Expertise Data Analysis Data Science Data Strategy 15 years old 35 #SynalTeam members Datavisualisation #DataIntelligence , #DataOps On Premise, Cloud, Hybrid cloud ! Synaltic API Data Engineering Ingest ETL Streaming Scheduler 3
  • 4. Tous vos processus méritent le temps réel ! 4
  • 5. Sommaire 5 Le contexte --------------------------------- 4 Debezium --------------------------------- 5 Demo --------------------------------- 7 Cas d’utilisation --------------------------------- 11 Fonctionnement --------------------------------- 16
  • 6. Le contexte : Event Driven CDC par trigger - impact sur les performances - pas de solution générique CDC par lecture du log - pas de reprise sur erreur - pas de solution générique CDC par Debezium Sortie de Debezium (licence Apache) mai 2019
  • 7. Qu’est-ce que Debezium ? 7 Events Message queue DataBase Log Log
  • 8. 8 ● Simplifie la mise en place du CDC ● Accélère la propagation des changements ● Enrichi les événements ● DB Agnostique ● Tolérant à la panne ● Du Batch au Streaming https://debezium.io/ Ce que nous apporte Debezium
  • 13. 13 Kafka Kafka Connect KSQL Debezium MySQL Kafka Connect Sink JDBC Stack Debezium + Kafka E-commerce
  • 16. 16 CREATE STREAM entrees_stream … WITH (KAFKA_TOPIC='dbserver1.synalticdb.entrees, VALUE_FORMAT='AVRO'); CREATE STREAM ventes_stream … WITH (KAFKA_TOPIC='dbserver1.synalticdb.ventes', VALUE_FORMAT='AVRO'); CREATE STREAM S_UNION_ENTREES_VENTES WITH (PARTITIONS=1) AS SELECT 'STOCK' as SRC, * FROM entrees_stream_key; INSERT INTO S_UNION_ENTREES_VENTES SELECT 'VENTES' AS SRC, * FROM ventes_stream_key; CREATE TABLE T_DASHBOARD AS SELECT id_produit as idproduit, SUM(quantite) as quantite FROM S_UNION_STOCK_VENTES WITH (KAFKA_TOPIC=T_DASHBOARD, VALUE_FORMAT='delimited', KEY='idproduit') GROUP BY id_produit; KSQL E-commerce
  • 19. 19 DB App 3 Application 3 Broker de messages DB App 2 Application 2 DB App 1 Application 1 ● Extraction de microservices depuis un système en silo/monolith ● Synchronisation de données entre différents services ● Tolérant à l'évolution de schéma Architecture de MicroServices Slide A Finir
  • 20. 20 ● Architecture Micro Services ● Audit / Historisation ● Mise à jour full-text search via Elasticsearch, Solr, etc ● Mise à jour CQRS modèle de lecture ● Mise à jour de la UI en temps réel ● Pouvoir requêter les données en streaming D’autres Uses Cases ...
  • 21. Comment obtenir les changements de la base de données? 21 ● Double écriture ○ Gérer les pannes et erreurs ○ Problèmes d’ordre ● Récupération de changements ○ Comment identifier les données mise à jour? ○ Comment identifier les données supprimées? Slide A Finir
  • 22. 22 Monitoring de la base de données Applications écrivant à la base de données -> les modifications sont stockées dans le fichier log -> les tables sont mises à jour Utilisons le fichier log de la base de données Comment suivre tous les changements ? MySQL -- Binary log / binlog Postgres -- write-ahead log MongoDB -- op log
  • 23. 23 Kafka correspond bien aux objectifs CDC ● Messages identifiés par clé ● Ordre garanti ● Basée par pull request ● Support la compaction ● Scalabilité horizontale Kafka Connect ● Framework pour connecteurs source et sink ● Suivi des offsets ● Support schema ● Clustering ● Variété de connecteurs KSQL ● Création de tables et streaming ● Jointures Infrastructure du messaging
  • 24. 24 ● MySQL ● Postgres ● MongoDB ● SQL Server ● Oracle (incubating) ● Cassandra (incubating) Connecteurs CDC Debezium
  • 25. 25 ● Pair clé-valeur (dont clé = Primary key) ● Payload : ○ Before ○ After ○ Source ○ Operation ○ Date ● Types : ○ JSON ○ Avro Structure de message
  • 26. 26 ● Standardisation des messages, peu importe la base de données source ● Garanti de la récupération de tous les changements de la base de données ● Produit des événements de changement avec un délai très faible (par exemple, plage de ms pour MySQL ou Postgres) ● Récupération de données supprimées ● Filters -> whitelist/blacklist ● Masking ● Snapshots ● Monitoring a travers JMX ○ Statut du Snapshot ○ Dernier event/snapshot ● Embedded Engine ● Transformation Fonctionnalités Debezium
  • 27. 27 Application dans le source ou le sink Use Cases : Extraction Conversion Routage Fourni par Debezium : Routage logique de table SMT flatten événement Transformation Slide A Finir
  • 28. 28 ● Simplifie la mise en place du CDC ● Accélère la propagation des changements ● Enrichi les événements ● DB Agnostique ● Tolérant à la panne ● Du Batch au Streaming Pour conclure, Debezium :
  • 31. Yabir CANARIO DE LA MOTA Data Engineer Twitter : @CanarioYabir ycanario@synaltic.fr www.synaltic.fr Charly CLAIRMONT CTO Twitter : @egwada cclairmont@synaltic.fr www.synaltic.fr