Comparaison parallélisée rapide et efficace des bases de données Redis

Comparaison parallélisée rapide et efficace des bases de données Redis

Le processus de comparaison de deux versions d’une base de données est une pratique assez courante, généralement utilisée à des fins de test et de développement, ainsi que pour prendre en charge les mises à jour d’applications et les nouvelles versions. Comparer des bases de données offre un certain nombre d’avantages. Commencez par vous assurer que deux bases de données sont entièrement synchronisées, puis permettez aux utilisateurs d’évaluer la fonctionnalité de la configuration de la sauvegarde et divers processus, y compris la vérification de la restauration de la sauvegarde ou la réplication maître-esclave. Ce processus est très utile à quiconque utilise une base de données Redis. Ainsi, chez Redis, nous comparons les anciennes versions des bases de données avec les nôtres nouvellement développées, en veillant à ce que le mécanisme de réplication entre les différentes versions soit satisfaisant. De plus, nous validons en permanence nos synchronisations de bases de données entre différentes zones et régions de cloud afin d’aider les clients avec leurs bases de données Redis entièrement gérées et hautement disponibles. Les informations suivantes développent le processus que j’ai suivi pour développer l’outil de comparaison Redis.

redis comparison art

Les outils Redis RDB

Au départ, nous avons utilisé Outils RDB Redis, qui est un projet open source qui fournit des bibliothèques pour analyser efficacement les fichiers de vidage Redis (RDB). La bibliothèque Redis RDB Tools fournit également des outils pour comparer deux fichiers RDB, en analysant la quantité de mémoire nécessaire à leurs opérations, entre autres fonctionnalités utiles. Au moyen du fichier de vidage d’une base de données donnée, Redis RDB Tools imprime un fichier texte composé de tous les noms de clés existants et des valeurs respectives triées par ordre alphabétique. Une fois qu’un fichier a été créé pour chaque base de données, les deux fichiers peuvent être facilement comparés à l’aide d’un simple outil de comparaison de texte (par exemple différence ou fusionner).

Les inconvénients

Redis RDB Tools s’est avéré très flexible et utile dans le passé, bien qu’au fil du temps, plusieurs inconvénients aient été découverts.

  1. Redis inclut plusieurs types de données : chaînes, hachages, ensembles triés et listes. Malheureusement, Redis RDB Tools ne vide pas suffisamment les ensembles triés et confond fréquemment l’ordre des ensembles, au risque de nuire à une comparaison. Du bon côté, c’est un obstacle mineur qui peut être facilement résolu.
  2. Le processus de comparaison des outils Redis RDB nécessite la création de fichiers de vidage. Cela peut poser un problème si l’accès à distance à la base de données existe uniquement. De plus, comme nous traitons souvent de grands ensembles de données, la génération de fichiers de vidage peut être fastidieuse, coûteuse et chronophage.
  3. La méthode RDB Tools nécessite le tri des fichiers texte, ce qui signifie que les fichiers texte sont conservés dans la RAM. Cela rend les choses difficiles lorsqu’il s’agit de grands ensembles de données. Par exemple, pour exécuter le processus sur un serveur Redis qui contient 60 Go de données en RAM, une machine de développement doit disposer de suffisamment de mémoire pour contenir le fichier de vidage correspondant. L’utilisation d’instances avec ces quantités de RAM pour les tests et le développement est coûteuse et peut donc rendre impossible l’ensemble du processus de comparaison.

Notre solution

La récente version 2.8 de Redis a été introduite une famille de commandes (SCAN, HSCAN, SSCAN et ZSCAN) qui sont utilisés pour itérer de manière incrémentielle une collection de clés. En utilisant la fonction SCAN, il est possible de parcourir toutes les clés d’une base de données et de comparer chaque clé avec le type de clé correspondant dans une seconde base de données, si une telle clé existe effectivement. Cela peut fournir une solution de comparaison simple et efficace qui fonctionne sur la base de données existante et ne nécessite donc aucune ressource de calcul supplémentaire ni la création d’un fichier de vidage local.

Même avec cette approche assez simple, nous avons rencontré des problèmes de performances lorsque nous traitions de grands ensembles de données. Comparer des millions de clés, un type de clé à la fois, tout en utilisant une seule connexion Redis est toujours un processus très lent. Afin de surmonter cela, j’ai écrit un scénario qui consiste en un pool de processus utilisant la bibliothèque de multitraitement de Python. Grâce à cette méthode, le processus principal itère toutes les clés de la base de données source et envoie ensuite plusieurs clés aux processus du pool. Chaque processus compare ensuite la clé qu’il a reçue avec la deuxième base de données. Étant donné que les comparaisons sont parallélisées, l’ensemble du processus est terminé beaucoup plus rapidement.

Poursuite de l’amélioration

Le script s’imprime actuellement “La clé X diffère de la clé Y” lorsque des divergences sont découvertes entre deux bases de données. Des améliorations peuvent être apportées à l’outil en ayant une sortie plus détaillée, comme l’indication de l’élément spécifique qui diffère dans une clé de type liste.

Les clés Redis peuvent éventuellement être définies avec des valeurs d’expiration. Lors d’une comparaison, il est possible qu’une clé lue depuis la base de données source ait déjà expiré dans la base de données cible (ou inversement), cependant, notre outil indiquera toujours une différence. Étant donné que la clé expirera bientôt, cette différence peut ne pas être pertinente pour la comparaison globale de la base de données, néanmoins, notre version actuelle ne tient pas compte de ce facteur. La définition d’un seuil pour les valeurs d’expiration minimales et la comparaison entre différentes valeurs d’expiration est une autre amélioration utile qui améliorerait l’outil.

Il convient de noter que cette solution pourrait éventuellement échouer si les données sont modifiées au cours du processus de comparaison. Cet outil doit être utilisé dans les cas où les données sont constantes ou si les changements de données en temps réel sont tolérables.

je vous souhaite la bienvenue Télécharger ce script Python qui vous aidera à effectuer une comparaison simple et rapide de votre base de données Redis.

Development Source

Related Posts

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Clés Redis dans la RAM |  Redis

Clés Redis dans la RAM | Redis

No Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *