Les tables Delta prennent en charge l'écriture et le stockage incrémentiels des données. MaxCompute propose une syntaxe SQL dédiée aux requêtes incrémentielles, conçue pour les pipelines de traitement en quasi temps réel. Une requête incrémentielle lit uniquement les fichiers delta compris dans une plage de versions donnée, les fusionne et renvoie le résultat, sans lire les fichiers de base générés par la compaction ou le clustering.
Fonctionnement

Le schéma illustre une requête incrémentielle exécutée sur une table transactionnelle nommée src qui comporte deux colonnes : pk et val.
Chronologie des modifications de données :
Cinq transactions d'écriture surviennent aux instants t1 à t5 et génèrent cinq fichiers delta.
La compaction s'exécute aux instants t2 et t4 et produit deux fichiers de base : b1 et b2.
Lorsque vous envoyez une instruction SQL de requête incrémentielle, MaxCompute :
Analyse la plage de versions spécifiée (valeurs
BeginetEnd).Repère tous les fichiers delta dont l'horodatage se situe dans cette plage.
Fusionne les données de ces fichiers delta selon la politique de fusion définie.
Renvoie le résultat fusionné comme sortie de la requête.
Pourquoi les fichiers de base sont exclus : La compaction et le clustering réorganisent les enregistrements existants pour optimiser le stockage, sans ajouter de nouveaux enregistrements logiques. Inclure les fichiers de base dupliquerait les données déjà capturées dans les fichiers delta précédents. MaxCompute exclut les fichiers de base par conception afin que les résultats incrémentiels reflètent uniquement les nouvelles écritures.
Sémantique de la plage de versions
La plage de versions est définie par les valeurs Begin et End. Chaque valeur identifie une version temporelle spécifique dans l'historique des transactions de la table.
|
Begin |
End |
Fichiers delta lus |
Résultat |
|
t1-1 |
t1 |
d1 |
Enregistrements du fichier delta d1 |
|
t2 |
non spécifié |
d1, d2 |
Enregistrements des fichiers delta d1 et d2 |
|
t1 |
t2-1 |
aucun |
Vide — aucune transaction d'écriture n'est survenue dans la plage (t1, t2) |
Limites
Exclusion des fichiers de base : Les enregistrements réorganisés par la compaction ou le clustering n'apparaissent pas dans les résultats des requêtes incrémentielles. Ces opérations n'ajoutant aucun nouvel enregistrement logique, l'exclusion de leurs fichiers de sortie n'entraîne aucune perte de données nouvelles.
Résultats vides pour les plages discontinues : Si la plage spécifiée se situe entièrement entre deux points de compaction sans qu'aucune transaction d'écriture ne soit intervenue, la requête renvoie un jeu de résultats vide.