De nouveaux défis amènent de nouveaux outils, puis de nouveaux défis ?
Dans le pipeline de données, nous parlons souvent d’ETL, alias Extract-Transform-Load, qui est en fait un processus très simple comme suit.
Étant donné qu’une application extrait des données d’une source et les enregistre dans un autre stockage de données après un traitement et une conversion, c’est ce que fait ETL. Il s’agit d’un processus ETL complet, et pour être honnête, la plupart des applications non ETL font quelque chose comme ça.
Permettez-moi d’utiliser un exemple Python simple pour démontrer l’implémentation d’ETL.
# Open the CSV file containing the data
with open("orders.csv", "r") as file:
# Use the CSV module to read the data
reader = csv.DictReader(file)# Iterate over the rows in the CSV file
for row in reader:
# Extract the data from the row
order_id = row["order_id"]
customer_name = row["customer_name"]
order_date = row["order_date"]
order_total = row["order_total"]
# Insert the data into the database
cursor = db.cursor()
cursor.execute(
"INSERT INTO orders (order_id, customer_name, order_date, order_total) VALUES (%s, %s, %s, %s)",
(order_id, customer_name, order_date, order_total)
)
db.commit()
Ceci est un exemple ETL simple, nous extrayons chaque ligne d’un fichier CSV (source de données), et convertissons les détails de la commande au format CSV dans les colonnes correspondantes de la base de données, et enfin écrivons dans la base de données.
Au fur et à mesure que la base de données évolue, ce processus évolue également, et l’ETL a également une variante, ELT, qui semble être un échange séquentiel de T et L. Mais dans les coulisses, la base de données est en fait devenue plus puissante.
Continuons avec l’exemple ci-dessus et voyons comment l’ELT serait-il géré ?
with open("orders.csv", "r") as file:
# Use the LOAD DATA INFILE statement to load the data into the database
cursor = db.cursor()
cursor.execute(
"LOAD DATA INFILE 'orders.csv' INTO TABLE orders FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS"
)
db.commit()
Dans cet exemple, nous utilisons MySQL LOAD DATA
pour écrire un fichier CSV directement dans la base de données, en le convertissant pendant le processus d’écriture, plutôt que de convertir d’abord le format puis de l’écrire dans la base de données.
Dans le pipeline de données, il s’agit en fait de diverses combinaisons d’ETL et d’ELT, et nous produirons éventuellement une structure de données adaptée à l’analyse et à l’utilisation.
Ce processus est le même concept dans le domaine du big data, sauf que le pipeline de données du big data multiplie un volume de données beaucoup plus important et doit faire face à un stockage de données plus diversifié.
Dans mes articles précédents, nous avons déjà abordé la mise en œuvre de nombreuses architectures de pipeline de Big Data.
Pour la partie source de données, nous nous appuyons fortement sur Débezium pour capturer les changements de données (CDC).
Le processus sous-jacent à Debezium est qu’un groupe de travailleurs extrait les binlogs de diverses bases de données, restaure les binlogs dans les données d’origine et identifie le contenu du schéma à transmettre au stockage de données suivant.
En d’autres termes, chaque source de données doit avoir un groupe de travailleurs Debezium pour en être responsable.
Lorsque le nombre de sources de données est important, c’est un énorme effort que de construire et de maintenir le Debezium correspondant. Après tout, le logiciel ne fonctionne pas correctement lorsqu’il est laissé seul, mais nécessite également un mécanisme complet de surveillance et d’alerte, ce qui finira par créer une énorme surcharge de fonctionnement.
En fait, E et L dans ETL sont les choses les plus sans valeur dans un pipeline. Pour qu’un pipeline soit efficace, le plus important est de produire des données efficaces basées sur la logique métier, et T devrait être la partie sur laquelle nous devrions nous concentrer.
Cependant, nous devons prendre beaucoup de temps sur E et L dans l’exploitation du pipeline, ce qui n’est pas ce à quoi nous nous attendons.
Alors, y a-t-il une solution à ce dilemme ?
Oui absolument, Échange d’airet il existe de nombreuses solutions similaires, mais Airbyte est open source et relativement facile à utiliser.
Prenons MongoDB vers Kafka comme exemple, dès que la configuration sera terminée, ce sera comme dans l’exemple ci-dessous.
Airbyte peut se synchroniser automatiquement ou manuellement selon les paramètres, et il peut choisir une synchronisation incrémentielle ou une synchronisation complète. Chaque enregistrement de synchronisation est répertorié et le processus de synchronisation peut être vu après avoir développé les journaux.
En conséquence, la création de pipelines de données est efficacement simplifiée et le stockage de données peut être intégré en douceur via l’interface utilisateur Web d’Airbyte.
Cet article n’est pas pour promouvoir Airbyte, ni pour introduire l’architecture Airbyte en profondeur, mais du point de vue d’un architecte, nous constaterons que dans le domaine du big data, nous serons confrontés à divers défis, et chaque défi a un correspondant solution, mais nécessite également des coûts d’apprentissage élevés.
En fait, Airbyte a aussi ses limites, par exemple, la période de synchronisation doit spécifier un intervalle de temps régulier, comme toutes les heures, même s’il peut utiliser représentation cronmais toujours limité par le temps fixe, ne peut pas faire le vrai streaming, c’est à dire une fois les données déclenchées.
De plus, lorsque vous vous appuyez sur des outils supplémentaires, il peut être frustrant de rencontrer ce problème.
Une fois que le problème survient, par où commencer pour résoudre le problème et comment clarifier l’étendue de la catastrophe, tous ont besoin d’expérience et d’un apprentissage approfondi avant de trouver un moyen de le résoudre.
L’apprentissage de ces outils est également le plus grand défi pour les ingénieurs de données et les architectes de données, il existe de nombreux outils pour résoudre de nombreux problèmes. Cependant, les mégadonnées sont vraiment volumineuses et apprendre tous les outils est presque impossible.
Enfin, permettez-moi de conclure avec une image.
Quelle est la prochaine?