CAS

Transférer des données de mémoire à mémoire entre serveurs CAS

Simon 24/03/2021 7 vues

Avec l'évolution de l'architecture SAS© Viya, le besoin de déplacer des données chargées en mémoire d'un serveur CAS vers un autre (par exemple, lors d'une migration entre deux environnements Viya ou deux namespaces Kubernetes différents) est devenu crucial.

Auparavant complexe, cette opération est désormais simplifiée grâce à un type spécifique de librairie : la Caslib de type CAS (srcType="CAS").

Le Concept : Un pont entre deux mémoires

Traditionnellement, une caslib pointe vers une source physique (un dossier système, une base de données Oracle, etc.) et charge les données en mémoire. La nouveauté ici est de définir une caslib dont la source n'est pas un disque, mais la mémoire d'un autre serveur CAS.

Cela permet de copier des données directement de serveur à serveur via des outils SAS© natifs, sans passer par des exports fichiers intermédiaires et sans nécessiter l'intervention complexe d'un administrateur Kubernetes.

Le Cas d'Usage : Migration entre environnements

Imaginons que vous deviez migrer des tables chargées en mémoire depuis un environnement source (ex: "From35") vers un environnement cible (ex: "Target"), situés dans deux namespaces différents.

Voici la procédure en 3 étapes pour réaliser ce transfert proprement :

Étape 1 : Créer le "Pont" (La Caslib de transfert)

Sur votre environnement cible, vous allez créer une caslib spéciale. Elle agira comme un tunnel vers l'environnement source.

1CAS transfersess;
2PROC CAS;
3 /* Création de la caslib 'transfer' qui pointe vers la source */
4 TABLE.addcaslib /
5 name="transfer",
6 dataSource={
7 srctype="CAS", /* Le type magique */
8 user="mon_user",
9 password="mon_password", /* À encoder de préférence ! */
10 cashost="controller.source-env-host", /* L'adresse du contrôleur source */
11 caslib="VAModels" /* La caslib source à lire */
12 };
13QUIT;
Note : Le cashost correspond au nom d'hôte du contrôleur CAS source (récupérable via la configuration CAS).

Étape 2 : Charger les données dans la mémoire cible

Les tables de l'environnement source sont maintenant visibles via la librairie transfer. Il suffit de les charger dans la mémoire de votre librairie de destination finale (ex: VAModels sur la cible).

1PROC CAS;
2 /* Copie de la table de 'transfer' vers 'VAModels' locale */
3 TABLE.loadtable /
4 caslib="transfer"
5 path="MA_TABLE_SOURCE"
6 casout={caslib="VAModels", name="MA_TABLE_CIBLE", promote=TRUE};
7QUIT;

Étape 3 : Persister les données (Sauvegarde physique)

Les données sont maintenant dans la mémoire du nouveau serveur, mais elles disparaîtront au redémarrage si elles ne sont pas sauvegardées sur le disque local du nouvel environnement.

1PROC CAS;
2 /* Écriture physique sur le disque de la cible */
3 TABLE.save /
4 caslib="VAModels"
5 name="MA_TABLE_CIBLE"
6 TABLE={caslib="VAModels", name="MA_TABLE_CIBLE"}
7 replace=True;
8QUIT;

L'utilisation de srcType="CAS" offre une méthode élégante et 100% SAS© pour "téléporter" des données entre déploiements. C'est un outil indispensable pour les administrateurs SAS© modernes gérant des architectures distribuées ou des migrations Cloud.