Réalisation de suppressions et d'extractions de données
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Utiliser le mécanisme de suppression des données de l'API de transfert en masse Salesforce pour obtenir une influence positive sur les performances lorsque vous travaillez avec de grandes quantités de données.
- Utiliser la segmentation PK pour lutter contre de faibles performances lors de l'extraction de grandes quantités de données depuis votre organisation.
- Comprendre les avantages de la troncation d'enregistrements dans les objets personnalisés pour accélérer la suppression.
Suppression et extraction grâce à l'API de transfert en masse
Lorsqu'on évoque votre organisation Salesforce, la gestion des données figure toujours en haut de votre liste de priorités. Une partie de cette gestion implique la suppression et l'extraction de données. Et, tout comme lors du chargement de grandes quantités de données, l'API de transfert en masse s'avère utile lorsqu'on est amené à supprimer ou à extraire de grandes quantités de données. Lorsqu'il existe un processus qui implique la suppression d'un million d'enregistrements, voire plus, l'option de suppression définitive de l'API de transfert en masse peut faire l'affaire.
Suppression non définitive et suppression définitive
Le mécanisme de suppression des données de Salesforce peut avoir une incidence profonde sur les performances de grandes quantités de données. Salesforce utilise une corbeille pour les données que suppriment les utilisateurs. Au lieu de supprimer les données, elles sont marquées comme étant supprimées et visibles dans la corbeille. Ce processus est appelé suppression non définitive. Lorsque les données sont supprimées de manière non définitive, cela une incidence sur les performances de la base de données car elles existent encore dans l'organisation, et les enregistrements supprimés doivent être exclus de toutes les requêtes.
Les données demeurent dans la corbeille pendant 15 jours, ou jusqu'à ce que la corbeille atteigne une taille déterminée. Les données sont alors supprimées physiquement de la base de données lorsque les limites de temps ou de taille sont atteintes, ou lorsque la corbeille est vidée à l'aide de l'IU de l'API ou d'Apex.
L'API de transfert en masse prend en charge l'option de suppression définitive (suppression physique), qui permet aux enregistrements de contourner la corbeille et de pouvoir être immédiatement supprimés. L'utilisation de la fonction de suppression définitive de l'API de transfert en masse est une stratégie recommandée pour la suppression de grandes quantités de données pour libérer de l'espace plus rapidement et éviter que du matériel extérieur n'affectent les performances. Veuillez noter que l'option de suppression définitive est désactivée par défaut et qu'elle doit être activée par un administrateur.
Segmentation des données
Lors de l'extraction de données avec l'API de transfert en masse, les requêtes sont divisées en segments de 100 000 enregistrements par défaut : vous pouvez utiliser le champ d'en-tête chunkSize pour configurer des segments plus petits ou plus grands, jusqu'à 250 000. Des tailles de segments plus grandes utilisent moins de lots de l'API de transfert en masse, mais les performances peuvent être inférieures. Vous pouvez être amené à faire quelques essais pour déterminer la taille optimale des segments.
Pour des volumes extrêmement importants (des centaines de millions d'enregistrements), définir ces segments en filtrant les valeurs des champs peut ne pas s'avérer pratique. Le nombre de lignes renvoyées peut être supérieur au seuil de sélectivité du moteur d'optimisation des requêtes de Salesforce. Le résultat pourrait être un scan de tableau complet et des performances ralenties, voire un échec complet. Vous devez alors recourir à une autre stratégie.
Utilisation de la segmentation PK
Donc, si le filtrage des attributs ne vous aide pas à casser les données en segments suffisamment petits, que pouvez-vous faire ? Utilisez la segmentation PK pour gérer des extraits de jeux de données très grands. PK signifie Primary Key (clé principale) (l'ID d'enregistrement de l'objet) qui est toujours indexé. La segmentation PK divise les requêtes de transfert en masse dans des tableaux très grands en segments basés sur les ID d'enregistrement des enregistrements interrogés.
Activez la segmentation PK lorsque vous interrogez les tableaux comportant plus de 10 millions d'enregistrements ou lorsqu'une requête de transfert en masse est régulièrement victime de dépassement de délai. La segmentation PK est une fonctionnalité prise en charge par l'API de transfert en masse de Salesforce, et se charge donc de tout le travail de division des requêtes en segments gérables. Il vous suffit de saisir quelques paramètres dans votre tâche d'API de transfert en masse, et la plateforme divise automatiquement la requête en segments distincts, exécute une requête pour chaque segment et renvoie les données.
Vous pouvez utiliser la segmentation PK avec la plupart des objets standards. Elle est prise en charge par Compte, Campagne, CampaignMember, Cas, Contact, Piste, LoginHistory, Opportunité, Tâches et Utilisateur, ainsi que pour tous les objets personnalisés. Pour activer la fonctionnalité, spécifiez l’en-tête Sforce-Enable-PKChunking dans la requête de la tâche de votre requête d’API de transfert en masse.
Pour choisir une taille de segment, il vous suffit de la spécifier dans l'en-tête. Par exemple, cet en-tête permet d'effectuer une segmentation PK avec une taille de segment de 50 000 enregistrements : Sforce-Enable-PKChunking: chunkSize=50000. Chaque segment est traité comme un lot distinct qui compte dans votre limite quotidienne de lots, et ses résultats doivent être téléchargés séparément. Vous pouvez effectuer un filtrage tout en utilisant la segmentation PK. Pour ce faire, insérez une clause WHERE dans la requête de l’API de transfert en masse. Grâce à cette méthode, moins d'enregistrements devraient être renvoyés pour un segment que le nombre que vous avez spécifié dans chunkSize.
Lorsqu'une requête est segmentée avec succès, l'état du lot original indique NOT_PROCESSED. En cas d'échec de la segmentation, l'état du lot original indique FAILED, mais tous les lots segmentés qui ont été mis dans la file d'attente avec succès pendant la tentative de segmentation sont traités de manière normale. Lorsque l'état du lot original passe à NOT_PROCESSED, surveillez les lots suivants. Vous pouvez récupérer les résultats de chaque lot suivant lorsqu'il est terminé. Puis, vous pouvez fermer la tâche en toute sécurité.
Troncation
Si vous souhaitez immédiatement supprimer des enregistrements dans les objets personnalisés de l'organisation Sandbox, vous pouvez essayer de tronquer ces objets personnalisés. La troncation d'objets personnalisés est une manière rapide de supprimer définitivement tous les enregistrements d'un objet personnalisé, tout en conservant l'objet et ses métadonnées intacts pour une utilisation ultérieure.
La troncation d'un objet personnalisé efface tous les enregistrements qui se trouvent actuellement dans la corbeille de l'objet personnalisé, l'historique de l'objet personnalisé et les événements, les tâches, les notes et les pièces jointes connexes de chaque enregistrement supprimé.
La troncation est pratique si, par exemple, vous avez créé un objet personnalisé et que vous l'avez rempli avec des enregistrements test. Lorsque vous en avez terminé avec les données de test, vous pouvez tronquer l'objet pour purger les enregistrements test, mais conserver l'objet et le mettre en production. C’est beaucoup plus rapide que la suppression d'enregistrements par lots et éventuellement la recréation de l'objet.
Voici le processus de configuration simple.
- Dans Setup (Configuration), dans la zone Quick Find (Recherche rapide), saisissez User Interface (Interface utilisateur), puis sélectionnez User Interface (Interface utilisateur) (remarque : cette option se trouve tout en bas de la liste).
- Dans la section Setup (Configuration) (entre Name Settings [Paramètres de nom] et Advanced [Avancé]), cochez Enable Custom Object Truncate (Activer la troncature d’objet personnalisé).
- Cliquez sur Enregistrer.
Tronquer un objet personnalisé supprime définitivement tous ses enregistrements. Vous ne pouvez pas récupérer les enregistrements de la corbeille. Une copie de l’objet tronqué figure dans la liste Objets supprimés pendant 15 jours (pendant cette période, l’objet et ses enregistrements continuent d’être pris en compte dans les limites de votre organisation), puis l’objet copié et ses enregistrements sont définitivement supprimés.
Vous ne pouvez pas tronquer des objets standard ou des objets personnalisés qui sont référencés par un autre objet via un champ de référence ou qui se trouve du côté principal d'une relation principal-détails, qui sont référencés par un instantané de rapport, qui ont un index personnalisé ou un ID externe ou qui ont activé des tableaux fins. Et vous ne pouvez pas tronquer des objets personnalisés lorsque votre organisation a atteint ses limites quant aux objets personnalisés autorisés.
L'utilisation de stratégies telles que la troncation avec la segmentation PK et la suppression définitive de l'API de transfert en masse vous aide à empêcher que de grands volumes de données ne soient un problème pour votre organisation. Leur utilisation régulière, selon les besoins, est une pratique sage pour préserver de bonnes performances.
Ressources
- Développeur Salesforce : Extraction de grandes quantités de données (LDV) dans Force.com
- Développeur Salesforce : Utilisation de la segmentation PK pour extraire de grands ensembles de données depuis Salesforce
- Développeur Salesforce : En tête de segmentation PK
- Aide Salesforce : Troncation d'objets personnalisés
- Développeur Salesforce : Présentation d'un exemple de requête de transfert en masse à l'aide de la segmentation PK