Utilisation d'un ensemble de données client pour mettre en cache les mises à jour

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation d'ensembles de données client - Index


Lorsque vous modifiez des données dans la majorité des ensembles de données, chaque fois que vous supprimez ou émettez un enregistrement, par défaut, l'ensemble de données génère une transaction, supprime ou écrit l'enregistrement sur le serveur de base de données, puis valide la transaction. S'il y a un problème lors de l'écriture des modifications dans la base de données, votre application reçoit immédiatement une notification : l'ensemble de données déclenche une exception lorsque vous émettez (post) l'enregistrement.

Si votre ensemble de données utilise un serveur de base de données distant, cette approche peut réduire les performances, à cause du trafic sur le réseau entre votre application et le serveur chaque fois que vous passez à un nouvel enregistrement après l'édition de l'enregistrement en cours. Pour réduire le trafic sur le réseau, vous pouvez effectuer les mises à jour dans un cache local. Lorsque vous mettez en cache les mises à jour, votre application récupère les données dans la base de données, les met en cache et les modifie en local, puis applique les mises à jour du cache à la base de données en une seule transaction. Lorsque vous mettez en cache les mises à jour, les changements effectués sur un ensemble de données (comme émettre des modifications ou supprimer des enregistrements) sont stockés en local au lieu d'être écrits directement dans la table sous-jacente à l'ensemble de données. Lorsque les modifications sont terminées, votre application appelle une méthode qui écrit les modifications du cache dans la base de données et vide le cache.

Mettre en cache les mises à jour peut minimiser le temps de transaction et réduire le trafic sur le réseau. Cependant, les données mises en cache sont locales pour votre application et ne se trouvent plus sous le contrôle des transactions. Cela signifie que, pendant que vous travaillez sur votre copie des données dans votre mémoire locale, d'autres applications peuvent être en train de changer les données dans la table de la base de données sous-jacente. D'autre part, elles ne peuvent pas voir les modifications que vous effectuez tant que ne validez pas les mises à jour du cache. De ce fait, les mises à jour en cache ne conviennent pas aux applications impliquant des données trop versatiles, car vous risqueriez de créer ou de rencontrer trop de conflits au moment d'intégrer vos modifications dans la base de données.

Bien que le BDE et ADO fournissent d'autres mécanismes pour cacher les mises à jour, l'utilisation d'un ensemble de données client offre plusieurs avantages :

  • Lorsque des ensembles de données sont liés par des relations maître/détail, l'application des mises à jour est gérée à votre place. Cela garantit que les mises à jour dans des ensembles de données multiples liés entre eux sont effectuées dans le bon ordre.
  • Les ensembles de données client vous procurent le meilleur contrôle sur le processus de mise à jour. Vous pouvez définir des propriétés pour influencer le SQL généré pour mettre à jour les enregistrements, spécifier la table à utiliser dans le cas de mise à jour d'enregistrements à partir d'une jointure multitable, ou même appliquer les mises à jour manuellement à partir d'un gestionnaire d'événement BeforeUpdateRecord.
  • Si des erreurs se produisent pendant l'application au serveur de la base de données des mises à jour du cache, seuls les ensembles de données client (et les fournisseurs d'ensembles de données) vous donnent des informations sur l'enregistrement en cours dans le serveur en plus de la valeur originale (non modifiée) de votre ensemble de données et de la nouvelle valeur (modifiée) de la mise à jour qui a échoué.
  • Les ensembles de données client vous permettent de spécifier le nombre d'erreurs de mise à jour que vous pouvez accepter avant l'abandon de la totalité de la mise à jour.

Les rubriques suivantes décrivent de manière détaillée comment utiliser un ensemble de données pour mettre en cache des mises à jour :

Voir aussi