Transférer des données de mémoire à mémoire entre serveurs CAS
Simon 32 views
Difficulty Level
Confirmé
Published on :
Expert Advice
Michael
Lors d'une migration entre environnements Viya, évitez le goulot d'étranglement des entrées/sorties disque : l'utilisation d'une Caslib de type srcType="CAS" permet un transfert pur mémoire, contournant la complexité des échanges de fichiers entre namespaces Kubernetes. N'oubliez cependant jamais l'étape finale de persistance sur le disque cible, car une donnée transférée en mémoire reste volatile par nature et disparaîtra au prochain redémarrage.
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.
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.
CAS transfersess;
PROC CAS;
/* Création de la caslib 'transfer' qui pointe vers la source */
table.addcaslib /
name="transfer",
dataSource={
srctype="CAS", /* Le type magique */
user="mon_user",
password="mon_password", /* À encoder de préférence ! */
cashost="controller.source-env-host", /* L'adresse du contrôleur source */
caslib="VAModels" /* La caslib source à lire */
};
QUIT;
1
CAS transfersess;
2
PROC 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
};
13
QUIT;
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).
PROC CAS;
/* Copie de la table de 'transfer' vers 'VAModels' locale */
table.loadtable /
caslib="transfer"
path="MA_TABLE_SOURCE"
casout={caslib="VAModels", name="MA_TABLE_CIBLE", promote=TRUE};
QUIT;
1
PROC CAS;
2
/* Copie de la table de 'transfer' vers 'VAModels' locale */
É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.
PROC CAS;
/* Écriture physique sur le disque de la cible */
table.save /
caslib="VAModels"
name="MA_TABLE_CIBLE"
table={caslib="VAModels", name="MA_TABLE_CIBLE"}
replace=True;
QUIT;
The codes and examples provided on WeAreCAS.eu are for educational purposes. It is imperative not to blindly copy-paste them into your production environments. The best approach is to understand the logic before applying it. We strongly recommend testing these scripts in a test environment (Sandbox/Dev). WeAreCAS accepts no responsibility for any impact or data loss on your systems.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.