Gestion de la base de données
Mise à jour des bases de données
Pour la production, votre copie de la base de données doit rester à jour. Pour ce faire, nous fournissons une image Docker pour l'outil de mise à jour. Cette image est fournie sous forme de fichier tar.
Pour importer l’image dans votre instance Docker, utilisez les commandes suivantes :
$ gunzip updater-sdk-vxxx.tar.gz $ docker image load -i updater-sdk-vxxx.tar
Vous pouvez ensuite exécuter le programme de mise à jour dans votre environnement Docker.
$ docker run --rm olfeo-oem-updater:v0.8.0 --version nexus-updater version sdk/v0.8.0-beae5f24
Le programme de mise à jour doit avoir accès à votre base de données Redis et recevoir votre identifiant et votre mot de passe.
Vous pouvez aussi les fournir à l'aide d'arguments de ligne de commande, mais également à l'aide de variables d'environnement. Vous pouvez mélanger et assortir, par exemple :
$ docker run --rm olfeo-oem-updater:v0.8.0 -e "OLFEO_OEM_SDK_USERNAME=client" -e "OLFEO_OEM_SDK_PASSWORD=$password" --redis-dsn rediss://my-redis-instance.local/0 --update-url https://api.oem.olfeo.eu
Le processus va démarrer la mise à jour. Au début, le processus peut prendre un certain temps. La progression est enregistrée afin que le processus reprenne là où il s'est arrêté en cas d'arrêt.
Une fois la base de données à jour, le processus se termine. Vous pouvez alors exécuter à nouveau le processus de mise à jour à intervalles réguliers pour maintenir votre base de données à jour. Vous pouvez utiliser une tâche cron pour cela.
Instance unique
Assurez-vous de n'avoir qu'une seule instance du processus de mise à jour en cours d'exécution : avoir plusieurs instances ne le rendra pas plus rapide.
Personnalisation du préfixe de base de données
Il est possible de spécifier un préfixe personnalisé pour toutes les clés Redis gérées par le SDK. Cela permet de minimiser le risque de conflit lorsque la base de données Redis est partagée avec d'autres projets. Il permet également de gérer différentes versions de notre base de données en choisissant des préfixes différents pour chaque version
Cohérence du préfixe requise
All components of the SDK must be configured with the same prefix. This includes both the Database instance and the Updater process.
Bien qu'il soit courant de séparer le préfixe du reste de la clé à l'aide des deux points (:) caractère en rouge, nous n'imposons aucune contrainte quant à votre choix de préfixe. Vous pouvez ajouter un caractère deux-points à la fin si vous souhaitez suivre la convention. Par exemple, en utilisant od: en tant que préfixe.
Le préfixe de base de données personnalisé peut être utilisé avec :
Configuration de la base de données
Dans votre code d'initialisation, vous pouvez spécifier le préfixe à utiliser avec la fonction d'assistance comme suit :
import "gitlab.olfeo.tech/data-tools/nexus/sdk/database/redis"
...
func createDbInstance() {
...
db, err := redis.NewDatabase(ctx, redisClient, redis.WithKeyPrefix("od:"))
You can define the key prefix during initialization using the appropriate helper function, like so:}Configuration du processus de mise à jour
Le processus de mise à jour doit également connaître le préfixe que vous souhaitez utiliser. Vous pouvez l'ajouter en utilisant 2 méthodes différentes :
En tant que paramètre de ligne de commande supplémentaire :
$ docker run --rm -e "OLFEO_OEM_SDK_USERNAME=client" -e "OLFEO_OEM_SDK_PASSWORD=$password" \ olfeo-oem-updater:v1.1.0 --redis-dsn rediss://my-redis-instance.local/0 --redis-prefix od:
En tant que variable d'environnement :
$ docker run --rm -e "OLFEO_OEM_SDK_USERNAME=client" -e "OLFEO_OEM_SDK_PASSWORD=$password" \ -e "OLFEO_OEM_SDK_REDIS_PREFIX=od:" olfeo-oem-updater:v1.1.0 \ --redis-dsn rediss://my-redis-instance.local/0
Outils OLFEO
Le outil olfeo binary permet d'inclure des données de domaine personnalisées dans la base de données, à des fins de test.
Lorsque vous utilisez un préfixe, celui-ci doit également être inclus dans la ligne de commande, comme suit :
$ olfeo-tool add-test-domain --redis-dsn rediss://my-redis-instance.local/0 --redis-prefix od: ...
Réinitialisation de la base de données
Cette section décrit comment redémarrer la base de données Redis locale, y compris les options permettant de réinitialiser l'intégralité de la base de données ou de cibler des parties spécifiques de l'ensemble de données.
Réinitialiser la base de données complète
Pour réinitialiser complètement la base de données et supprimer toutes les données stockées, utilisez la commande Redis suivante :
$ FLUSHDB
Cela démarrera la base de données à partir de zéro, en effaçant toutes les données existantes.
Réinitialiser une partie spécifique de l'ensemble de données
Si vous devez uniquement réinitialiser des parties spécifiques de la base de données, vous pouvez gérer de manière sélective les données associées à un état de synchronisation donné.
L'état du processus de synchronisation entre la base de données locale et le serveur API est stocké sous une clé spécifique dans la base de données Redis, identifiée comme : status. Pour obtenir l'état actuel, exécutez la commande suivante :
$ HGETALL status
Cette clé contient une carte qui associe les ID de type de données aux dernières dates de synchronisation. Chaque date indique la mise à jour la plus récente pour le type de données correspondant.
Le tableau ci-dessous décrit les types de données existants et leurs identifiants respectifs :
Type de données | Id |
|---|---|
Domaine |
|
Catégorie de domaine |
|
Thème |
|
Catégorie d'application | ca |
Application |
|
Domaine d'application | da |
Plages d'IP d'applications | ia |
Logo |
|
L'outil updater est là pour resynchroniser un type de données spécifique en effaçant la clé correspondante dans la carte des status .
Par exemple, pour resynchroniser toutes les applications, la commande suivante peut être utilisée :
$ HDEL status a