#Data management & #Blockchain - Track - Data : from stream processing to data lakes and data science
Toute organisation a un système d’information réparti sur un nombre d’applications plus ou moins important. Aujourd’hui elle cherche à obtenir une vision homogène, fédérée, quasi temps réel de son activité, si bien que nous avons des demandes client pour lesquelles il est question de fournir aux métiers une information « instantanée » et non plus vielle de 5 minutes !
Capturer les changements dans les bases de données, le CDC, cela existe depuis longtemps, mais avec une mise en œuvre ô combien complexe, et couteuse en performance !
Debezium est une plateforme distribuée et open source dédié au CDC. Sa simplicité de mise en œuvre, son ouverture (open source, multi bases de données, multi plateformes de streaming…), ses performances la rendent unique et la placent telle une brique incontournable du système d’information. Avec Debezium, les métiers vont enfin avoir des indicateurs de leurs processus instantanément, couvrant ainsi de nombreux cas d’usage (personnalisation client, audit, vision client 360° instantanée, monitoring temps réel...)
Notre talk a pour but de faire connaître Debezium, une couche manquante à Apache Kafka pour mieux dialoguer avec les systèmes d’information actuels (legacy) et apporter du « streaming » aux bases de données classiques.
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...Paris Open Source Summit
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
Similaire à #OSSPARIS19 - Stream processing : de la base de données classique au streaming avec Debezium - CHARLY CLAIRMONT & YABIR CANARIO DE LA MOTA, Synaltic (20)
#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
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
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
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 :