L’historique des données en branche fournit un rapport détaillé de toutes les modifications ajoutées dans la table métier pour stocker et gérer les mises à jour de la version par défaut depuis que le jeu de données a été inscrit en tant que jeu de données en branche versionnées.
Pour le versionnement de branche, le processus d’administration est rationalisé en raison d’un modèle de données simplifié. Le versionnement de branche s’exécute sur un modèle temporel d’insertion uniquement, où toutes les mises à jour sont enregistrées dans une table unique. Le modèle d’insertion uniquement signifie que chaque opération de mise à jour génère une insertion avec un horodatage correspondant, ce qui permet de réaliser un enregistrement historique complet de toutes les modifications, y compris des suppressions. Cette méthode permet de visualiser et d’analyser l’évolution des données au fil du temps.
Contrairement au versionnement traditionnel, qui s’appuie sur des tables de deltas et les joint à d’autres tables système pour représenter les données d’une version en particulier, les classes d’entités en branche versionnées sont conçues pour prendre en charge l’archivage de façon native à l’aide d’un modèle de table unique. Dès qu’un jeu de données est inscrit en tant que jeu de données en branche versionnées, l’archivage est automatiquement activé et des champs supplémentaires sont ajoutés à la table métier pour stocker et gérer les mises à jour entre les versions.
Pour gérer toutes les mises à jour (insertions, mises à jour et suppressions), six champs système spécifiques sont ajoutés à la table métier de la table ou classe d’entités en branche versionnées.
- GDB_BRANCH_ID : identifie la version dans laquelle la mise à jour a été effectuée.
- GDB_FROM_DATE : enregistre la date et l’heure exactes d’une mise à jour.
- GDB_IS_DELETE : indique si une entité a été supprimée, à l’aide d’une valeur binaire (0 pour Non supprimée / 1 ou 2 pour Supprimée).
- GDB_DELETED_AT : enregistre la date et l’heure de la suppression d’une entité.
- GDB_DELETED_BY : enregistre l’utilisateur qui a supprimé l’entité.
- GDB_ARCHIVE_OID : identifie de manière unique chaque ligne de la table, en suivant chaque mise à jour avec un ID distinct.

Remarque :
Les champs GDB_DELETED_AT et GDB_DELETED_BY sont ajoutés à la table ou classe d’entités pour permettre le suivi des suppressions. Ils fonctionnent en synergie avec les champs de suivi d’éditeur standard.
Les données archivées ont différentes finalités, notamment les suivantes :
- Réalisation d’une analyse historique et génération de rapports
- Garantie de la conformité via l’audit
- Exportation du jeu de données tel qu’il existait à un moment donné dans le temps
Nettoyer l’historique des données en branche
Au fil du temps, la quantité de données qui se trouve dans la table métier augmente en raison du modèle de versionnement de branche, qui effectue un suivi de toutes les modifications en insérant de nouveaux enregistrements pour chaque mise à jour, ce qui peut conduire à une accumulation de données considérable. Le nettoyage d’un jeu de données en branche versionnées implique la suppression des enregistrements historiques qui ne sont plus nécessaires, l’optimisation du stockage et l’amélioration des performances.
Le nettoyage est nécessaire pour gérer le développement des données historiques, qui peuvent utiliser un espace de stockage considérable au fil du temps. Il est recommandé de nettoyer les enregistrements archivés d’un jeu de données dans certaines circonstances, telles que les suivantes :
- Lorsque les données historiques ne sont plus nécessaires au fonctionnement
- Pour libérer de l’espace de stockage en éliminant les enregistrements historique inutiles
- Pour réduire les coûts de stockage
À compter de ArcGIS Pro 3.5, vous pouvez gérer et optimiser le stockage des jeux de données en branche versionnées à l’aide de l’outil de géotraitement Nettoyer l’historique des données en branche. L’outil Prune Branch History (Nettoyer l’historique des données en branche) offre un contrôle plus granulaire, ce qui vous permet de déterminer les enregistrements spécifiques à conserver en fonction de critères établis. Vous pouvez par exemple configurer le paramètre Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]).
Fonctionnement de l’outil Prune Branch History (Nettoyer l’historique des données en branche)
L’outil Nettoyer l’historique des données en branche est conçu pour gérer efficacement les données historiques. Ses principales fonctions sont les suivantes :
- Suppression des données historiques : cet outil permet aux utilisateurs de supprimer les données historiques des classes en fonction d’une date en particulier. Les données retirées antérieures à cette date sont supprimées de l’historique. Une ligne retirée est une ligne dans l’archive pour laquelle une représentation plus récente existe, ou dont la dernière représentation est celle de l’entité en cours de suppression. Cela signifie que la ligne n’est plus la version la plus récente des données et qu’elle a été remplacée par une mise à jour plus récente ou marquée comme devant être supprimée. Cela est particulièrement utile pour gérer la taille de la base de données en éliminant les informations obsolètes ou superflues.
- Conservation des lignes d’archive actuelles : l’une des fonctionnalités clés de l’outil Nettoyer l’historique des données en branche est de s’assurer qu’aucune ligne active n’est supprimée. Une ligne active est la représentation la plus récente d’une entité qui n’a pas été supprimée. Cette ligne représente l’état actuel des données et n’est pas marquée comme devant être supprimée. Si une entité était présente avant la date spécifiée et qu’elle est toujours active, elle sera conservée. L’outil se concentre sur la suppression des données historiques qui ne sont plus pertinentes uniquement.
- Protection des données référencées : l’outil évite de nettoyer les données qui sont toujours référencées par des versions actives. Si une version pointe sur un moment qui comprend des données plus anciennes, les données ne sont pas nettoyées jusqu’à ce qu’elles ne soient plus référencées.
- Réconciliation : il peut être nécessaire de réconcilier les versions qui existent depuis un certain temps afin de s’assurer que les données peuvent être nettoyées. Cela est particulièrement important lorsque l’outil sert à gérer des données qui sont restées dans le système pendant une durée prolongée. Si l’ancêtre commun et l’ancêtre précédent se trouvent tous les deux avant le moment de nettoyage, vous devez réconcilier la version deux fois.
- Conservation d’historique personnalisable : les organisations peuvent déterminer la quantité de données historiques à conserver. Vous pouvez par exemple conserver l’historique des deux ou cinq dernières années et nettoyer tout ce qui est antérieur. Cette souplesse permet de trouver un équilibre entre conserver les données historiques utiles et gérer la taille globale de la base de données.
L’outil Prune Branch History (Nettoyer l’historique des données en branche) ressemble à l’outil Trim Archive Histor (Réduire l’historique d’archivage), qui est pris en charge sur les jeux de données archivés non versionnés. Toutefois, l’outil Prune Branch History (Nettoyer l’historique des données en branche) est créé explicitement pour les jeux de données inscrits en tant que branche versionnée. L’outil Prune Branch History (Nettoyer l’historique des données en branche) permet de générer un rapeport avec le paramètre Report Only (Consigner uniquement), qui indique le nombre total d’enregistrements d’archive éligibles, sans nettoyer les enregistrements. En outre, vous pouvez sélectionner Only Prune System Tables (Nettoyer uniquement les tables système). Lorsque cette option est activée, seules les tables système internes éligibles des jeux de données de contrôleur sont nettoyées ou consignées.
Concepts clés et points à prendre en compte pour nettoyer l’historique des données en branche
Il est important de bien comprendre certains concepts liés à l’historique des données en branche et à l’outil Nettoyer l’historique des données en branche. Les concepts suivants sont expliqués dans les sections qui suivent :
Nettoyer les éléments antérieurs à (date/heure)
Le paramètre Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]) est un paramètre de date/heure défini par l’utilisateur qui marque la limite avant laquelle les données peuvent faire l’objet d’un nettoyage. Lorsque vous définissez le paramètre Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]), tous les enregistrements antérieurs à ce moment sont des candidats à la suppression par l’opération de nettoyage, à condition qu’il n’y ait aucun conflit avec des moments référencés.
Avant d’utiliser l’outil Prune Branch History (Nettoyer l’historique des données en branche), il est important d’avoir un objectif clair et de choisir une date appropriée, qui reflète vos besoins spécifiques (par exemple, une obligation légale).
Par exemple, si le paramètre Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]) est défini sur le 1er janvier 2022, toutes les données supprimées antérieures à cette date font l’objet d’un nettoyage.
Moments référencés
Un moment référencé est un instant qui empêche certains enregistrements d’être nettoyés. Ces moments sont importants pour la préservation de l’intégrité des données et pour s’assurer que les enregistrements historiques essentiels ne sont pas supprimés.
L’outil Nettoyer l’historique des données en branche examine les enregistrements historiques des entités dans la base de données. Si l’outil signale un moment référencé, cela signifie qu’une version ou un réplica de service d’entités utilise un moment référencé antérieur à la date de nettoyage demandée. Ce moment référencé peut empêcher les enregistrements d’être nettoyés dans le jeu de données. Le journal en sortie signale le moment le plus ancien susceptible d’être utilisé, notamment le moment référencé, le réplica de service d’entités et la version qui a bloqué l’outil.
Pour résoudre ce problème, vous pouvez régler le paramètre Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]) sur une date antérieure, réconcilier les versions ou synchroniser les réplicas de service d’entités. Cette étape garantit que tous les enregistrements nécessaires sont conservés et évite les moments référencés.
Par exemple, une nouvelle parcelle a été ajoutée il y a un an à un jeu de données parcellaire inscrit en tant que branche versionnée. Ensuite, la parcelle a été mise à jour il y a six mois, puis de nouveau mise à jour aujourd’hui. Si vous définissez le paramètre Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]) sur trois mois en arrière, l’outil identifie les lignes candidates au nettoyage en fonction de leur date de mise à jour. Toute représentation de la parcelle qui est antérieure à la valeur Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]) et qui ne correspond pas à la représentation actuelle du jeu de données parcellaire peut être supprimée.
Lorsqu’une entité est mise à jour, l’outil s’assure que la représentation actuelle de l’entité n’est pas renvoyée dans les requêtes. Si la représentation actuelle est une suppression, la ligne doit être nettoyée car aucune représentation actuelle ne peut être renvoyée à compter de la date du nettoyage.
Par exemple, si une parcelle a été supprimée il y a six mois, sa représentation actuelle est marquée comme étant supprimée. Cette ligne devient une candidate au nettoyage car aucune représentation actuelle ne peut être renvoyée.
Versions nommées et réconciliation
Lorsqu’une version nommée est créée, la date et l’heure de ce moment sont enregistrées et servent d’ancêtre commun pour la réconciliation. Au cours d’une réconciliation, l’outil doit revenir à la date initiale afin de déterminer si des modifications ont été apportées dans la version par défaut ou nommée. Ce processus implique l’enregistrement des dates initiale et nouvelle, puis la mise à jour de l’ancêtre commun.
Remarque :
L’outil Nettoyer l’historique des données en branche nettoie uniquement les enregistrements archivés retirés dans la version par défaut.
Supposons par exemple que vous avez une version nommée créée il y a six mois. Au cours d’une réconciliation, le système compare l’état actuel de la version de branche par défaut et de la version nommée pour savoir si des modifications ont été apportées à l’une ou l’autre. Cela permet de garantir que toutes les modifications sont répercutées avec exactitude et évite les moments référencés.
Réplicas de service d’entités
Les réplicas de service d’entités contiennent également des moments référencés et avancent dans le temps lors de leur synchronisation. L’outil s’assure que les lignes nécessaires à la synchronisation ne sont pas purgées. Cela inclut la conservation des enregistrements historiques nécessaires à la détection des conflits.
Par exemple, si un réplica de service d’entités a été créé il y a un an et qu’il a été synchronisé plusieurs fois, l’outil s’assure que les lignes nécessaires à ces synchronisations ne sont pas purgées. Cela permet de préserver l’intégrité des données dans différents réplicas.
Modèle de transaction
L’outil Prune Branch History (Nettoyer l’historique des données en branche) requiert un verrou exclusif sur le jeu de données et supprime toutes les lignes candidates dont la date est antérieure à la date spécifiée par l’option Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]). Si l’outil rencontre une erreur lors de l’opération de nettoyage, vous devez la résoudre avant d’exécuter à nouveau l’outil. Ce processus garantit l’homogénéité de la base de données, ainsi que l’absence de toute interruption dans les enregistrements historiques.
Lors du nettoyage d’un jeu de classes d’entités ou de tables système, chaque table ou classe en entrée est validée à mesure que l’opération est effectuée sur chaque objet individuel. Par exemple, si l’outil rencontre un problème de mémoire au cours du nettoyage, le traitement s’arrête. Vous pouvez alors diagnostiquer et résoudre le problème, puis relancer l’outil, qui reprend le nettoyage à l’endroit où il s’est arrêté.
En fonction du volume de lignes candidates nettoyées, il peut être nécessaire d’augmenter les ressources de la base de données, telles que l’espace disque, pour que la taille de la transaction puisse être effectivement prise en charge.
Moment de l’ancêtre commun et de l’ancêtre précédent
Les propriétés de version de l’ancêtre commun et de l’ancêtre précédent sont importantes pour gérer les données en branche versionnées, suivre l’historique des changements, éviter les moments référencés et s’assurer que la version appropriée d’une entité est extraite au cours des requêtes. Ces propriétés de version sont visibles lorsque vous ouvrez la vue Versions d’une couche d’entités Web de la carte active à partir de la fenêtre Contents (Contenu). Les informations présentées dans ces colonnes peuvent également vous aider à résoudre les problèmes liés aux moments référencés qui empêchent le nettoyage lorsque vous utilisez l’outil Nettoyer l’historique des données en branche.
- Ancêtre commun : l’ancêtre commun marque le dernier moment partagé par deux branches avant qu’elles ne divergent, ce qui désigne la date et l’heure auxquelles la version a référencé le même moment que la version par défaut.
- Ancêtre précédent : l’ancêtre précédent affiche le moment (date et heure) précédent avant la dernière réconciliation, lorsque la version et la version par défaut référençaient le même moment. Lorsqu’une nouvelle réconciliation est réalisée, il devient le nouvel ancêtre commun.
Au cours d’une réconciliation, si des conflits sont détectés, les moments de l’ancêtre commun et de l’ancêtre précédent permettent de déterminer si des modifications ont été apportées à la même entité à la fois dans la version et dans la version par défaut.
Avec l’outil Nettoyer l’historique des données en branche, les moments de l’ancêtre commun et de l’ancêtre précédent peuvent empêcher le nettoyage de certains enregistrements si une version ou un réplica de service d’entités y fait référence. Cela garantit que des données historiques importantes ne sont pas supprimées par inadvertance. Si l’outil Prune Branch History (Nettoyer l’historique des données en branche) renvoie une erreur indiquant que la valeur du paramètre Prune Before Date (Nettoyer les éléments antérieurs à [date/heure]) n’est pas valide en raison d’un moment référencé, vérifiez les moments de l’ancêtre commun et de l’ancêtre précédent dans le gestionnaire de versions. L’identification de ces moments dans le gestionnaire de versions peut vous aider à comprendre pourquoi certains enregistrements ne peuvent pas être nettoyés, ce qui vous permet de prendre des mesures telles que la réconciliation des versions ou la synchronisation des réplicas de service d’entités pour actualiser et avancer le moment référencé.
En savoir plus sur la création, l’affichage et la gestion des réplicas de service d’entités.
Conservation historique
Suivez les recommandations ci-après pour conserver les données historiques ou les lignes archivées avant d’exécuter l’outil Nettoyer l’historique des données en branche.
- Sauvegardez régulièrement votre géodatabase d’entreprise.
Conseil :
Il est également recommandé de tester régulièrement la sauvegarde de votre base de données et le plan de récupération. Consultez la documentation de votre SGBDR pour en savoir plus sur les options de sauvegarde de la base de données et du plan de récupération.
- Utilisez l’option Consigner uniquement de l’outil Nettoyer l’historique des données en branche pour identifier les problèmes potentiels avant le nettoyage.
- Avant de procéder au nettoyage, stockez les enregistrements historiques exportés dans une base de données ou un fichier externe à des fins de référence ultérieure.
Exportation des enregistrements historiques
Pour conserver les enregistrements historiques avant le nettoyage, vous pouvez exporter les lignes de classes archivées à l’aide d’un moment antérieur. Le processus d’exportation des enregistrements historiques est le suivant :
- Ajoutez la classe d’archive à une carte.
- Utilisez le champ GDB_FROM_DATE pour trier et identifier les enregistrements antérieurs au moment du nettoyage.
- Sélectionnez et exportez tous les enregistrements antérieurs à la valeur du paramètre Nettoyer les éléments antérieurs à [date/heure].
Consultez Historique des données en branche pour en savoir plus sur la configuration requise et le processus d’utilisation de l’outil Nettoyer l’historique des données en branche.
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?