Fédération Amazon RDS for Db2 - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fédération Amazon RDS for Db2

Vous pouvez utiliser votre base de données Amazon RDS for Db2 en tant que base de données fédérée. Après avoir configuré la fédération pour RDS for Db2, vous pourrez accéder aux données de plusieurs bases de données et les interroger à partir de votre base de données RDS for Db2. La fédération vous évite d’avoir à migrer des données vers votre base de données RDS for Db2 ou à consolider les données dans une base de données unique.

En utilisant votre base de données RDS for Db2 en tant que base de données fédérée, vous pouvez continuer à accéder à toutes les fonctionnalités de RDS for Db2 et à en tirer parti Services AWS, tout en conservant vos données dans différentes bases de données. Vous pouvez configurer à la fois une fédération homogène qui connecte différentes bases de données du même type ou une fédération hétérogène qui connecte différentes bases de données de différents types.

Vous devez d’abord connecter votre base de données Db2 dans RDS for Db2 à des bases de données distantes. Vous pouvez ensuite exécuter des requêtes sur toutes les bases de données connectées. Par exemple, vous pouvez exécuter une instruction SQL JOIN qui joint les tables de votre base de données RDS pour DB2 aux tables d'une base de données Db2 on distante. z/OS

Fédération homogène

Vous pouvez configurer une fédération homogène entre votre base de données RDS for Db2 et la famille de produits Db2 suivante :

  • Db2 pour Linux, UNIX, Windows (LUW)

  • Db2 iSeries

  • Db2 pour z/OS

La fédération homogène RDS for Db2 ne prend pas en charge les actions suivantes :

  • Exécution des commandes CATALOG pour configurer un répertoire de nœuds et une base de données distante sur une base de données hôte RDS for Db2

  • Configuration de l’équilibrage de la charge de travail (WLB) lors de la fédération vers Db2 sur z/OS

  • Configuration du fichier de configuration du pilote du serveur de données IBM (db2dsdriver.cfg)

La fédération homogène RDS for Db2 présente les exigences suivantes :

Étape 1 : création d’un wrapper DRDA et d’un serveur fédéré

Pour une fédération homogène, créez un wrapper DRDA et un serveur fédéré. La connexion à l’hôte distant utilise HOST, PORT et DBNAME.

Choisissez l’une des méthodes suivantes en fonction du type de votre base de données Db2 distante :

  • Base de données Db2 pour Linux, UNIX et Windows (LUX) : exécutez les commandes SQL suivantes. Dans l'exemple suivant, remplacez server_name par le nom du serveur que vous utiliserez pour la fédération. db2_versionRemplacez-le par la version de votre base de données Db2 distante. Remplacez username et password par vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacez db_namedns_name, et par port les valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.

    create wrapper drda options(DB2_FENCED 'N'); create server server_name type DB2/LUW wrapper drda version 'db2_version' authorization "master_username" password "master_password" options (add DBNAME 'db_name',add HOST 'dns_name',add PORT 'port');

    Exemple

    create wrapper drda options(DB2_FENCED 'N'); create server SERVER1 type DB2/LUW wrapper drda version '11.5' authorization "sysuser" password "******" options (add DBNAME 'TESTDB2',add HOST 'ip-123-45-67-899.us-west-1.compute.internal',add PORT '25010');
  • Db2 iSeries : exécutez les commandes SQL suivantes. Dans l'exemple suivant, remplacez wrapper_name et library_name par un nom pour votre wrapper DRDA et le fichier de bibliothèque d'enveloppes. Remplacez server_name par le nom du serveur que vous utiliserez pour la fédération. db2_versionRemplacez-le par la version de votre base de données Db2 distante. Remplacez username et password par vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacez dns_nameport, et par db_name les valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.

    create wrapper wrapper_name library 'library name' options(DB2_FENCED 'N'); create server server_name type db2/mvs version db2_version wrapper wrapper_name authorization "sername" password "password" options (HOST 'dns_name', PORT 'port', DBNAME 'db_name');

    Exemple

    create wrapper WRAPPER1 library 'libdb2drda.so' options(DB2_FENCED 'N'); create server SERVER1 type db2/mvs version 11 wrapper WRAPPER1 authorization "sysuser" password "******" options (HOST 'test1.123.com', PORT '446', DBNAME 'STLEC1');
  • Db2 for z/OS : exécutez les commandes SQL suivantes. Dans l'exemple suivant, remplacez wrapper_name et library_name par un nom pour votre wrapper DRDA et le fichier de bibliothèque d'enveloppes. Remplacez server_name par le nom du serveur que vous utiliserez pour la fédération. db2_versionRemplacez-le par la version de votre base de données Db2 distante. Remplacez username et password par vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacez dns_nameport, et par db_name les valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.

    create wrapper wrapper_name library 'library_name' options(DB2_FENCED 'N'); create server server_name type db2/mvs version db2_version wrapper wrapper_name authorization "username" password "password" options (HOST 'dns_name', PORT 'port', DBNAME 'db_name');

    Exemple

    create wrapper WRAPPER1 library 'libdb2drda.so' OPTIONS(DB2_FENCED 'N'); create server SERVER1 type db2/mvs version 11 wrapper WRAPPER1 authorization "sysuser" password "******" options (HOST 'test1.123.com', PORT '446', DBNAME 'STLEC1');

Étape 2 : création d’un mappage utilisateur

Créez un mappage utilisateur pour associer votre serveur fédéré à votre serveur de source de données en exécutant la commande SQL suivante. Dans l'exemple suivant, remplacez server_name par le nom du serveur distant sur lequel vous souhaitez effectuer des opérations. Il s’agit du serveur que vous avez créé à l’étape 1. Remplacez username et password par vos informations d'identification pour ce serveur distant.

create user mapping for user server server_name options (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');

Pour plus d’informations, consultez Mappages d’utilisateurs dans la documentation IBM Db2.

Étape 3 : vérification de la connexion

Vérifiez que la configuration de votre fédération s’est bien déroulée en vérifiant la connexion. Ouvrez une session pour envoyer des commandes SQL natives à votre source de données distante à l’aide de la commande SET PASSTHRU, puis créez une table sur le serveur de données distant.

  1. Ouvrez et fermez une session pour envoyer du code SQL à une source de données. Dans l'exemple suivant, remplacez server_name par le nom du serveur que vous avez créé pour la fédération à l'étape 1.

    set passthru server_name;
  2. Créez une nouvelle table . Dans l'exemple suivant, remplacez column_namedata_type, et value par les éléments appropriés pour votre tableau.

    create table table_name ( column_name data_type(value), column_name data_type(value);

    Pour plus d’informations, consultez Instruction CREATE TABLE dans la documentation IBM Db2.

  3. Créez un index, insérez des valeurs pour les lignes dans le tableau et réinitialisez la connexion. La réinitialisation de la connexion interrompt la connexion, mais conserve les processus principaux. Dans l'exemple suivant, remplacez index_nametable_name,column_name, et columnx_value par vos informations.

    create index index_name on table_name(column_name); insert into table_name values(column1_value,column2_value,column3_value); insert into table_name values(column1_value,column2_value,column3_value); set passthru reset; connect reset;
  4. Connectez-vous à votre base de données Db2 distante, créez un surnom pour votre serveur distant et effectuez des opérations. Lorsque vous avez terminé d’accéder aux données de la base de données Db2 distante, réinitialisez puis mettez fin à la connexion. Dans l'exemple suivant, remplacez database_name par le nom de votre base de données Db2 distante. Remplacez nickname par un nom. Remplacez server_name et table_name par le nom du serveur distant et de la table de ce serveur sur lesquels vous souhaitez effectuer des opérations. Remplacez username par les informations relatives à votre serveur distant. Remplacez sql_command par l'opération à effectuer sur le serveur distant.

    connect to database_name; create nickname nickname for server_name."username"."table_name"; select sql_command from nickname; connect reset; terminate;

Exemple

L’exemple suivant crée une session directe pour autoriser les opérations sur le serveur fédéré testdb10.

Ensuite, il crée la table t1 avec trois colonnes contenant différents types de données.

Ensuite, l’exemple crée l’index i1_t1 sur trois colonnes de la table t1. Ensuite, il insère deux lignes contenant des valeurs pour ces trois colonnes, puis se déconnecte.

Enfin, l’exemple se connecte à la base de données Db2 distante testdb2 et crée un surnom pour la table sur t1 le serveur fédéré testdb10. Il crée le surnom avec le nom d’utilisateur TESTUSER pour cette source de données. Une commande SQL génère toutes les données de la table t1. L’exemple déconnecte et met fin à la session.

set passthru testdbl0; create table t1 ( c1 decimal(13,0), c2 char(200), c3 int); create index i1_t1 on t1(c3); insert into t1 values(1,'Test',1); insert into t1 values(2,'Test 2',2); connect reset; connect to testdb2; create nickname remote_t1 for testdbl0."TESTUSER"."T1"; select * from remote_t1; connect reset; terminate;

Fédération hétérogène

Vous pouvez configurer une fédération hétérogène entre votre base de données RDS for Db2 et d’autres sources de données telles qu’Oracle et Microsoft SQL Server. Pour obtenir la liste complète des sources de données prises en charge par Db2 LUW, consultez Matrice de support des sources de données de fédération fournie dans Db2 LUW V11.5 sur le site de support d’IBM.

La fédération hétérogène RDS for Db2 ne prend pas en charge les éléments suivants :

  • Wrappers natifs pour les autres sources de données

  • Wrappers JDBC pour les autres sources de données

  • Fédération avec les sources de données Sybase, Informix et Teradata, car ces sources de données nécessitent l’installation d’un logiciel client sur RDS for Db2

La fédération hétérogène RDS for Db2 présente les exigences suivantes :

  • RDS for Db2 ne prend en charge que la méthode d’encapsulation ODBC.

  • Si vous créez une définition explicite d’un wrapper, vous devez définir l’option DB2_FENCED sur 'N'. Pour obtenir la liste des options d’encapsulation valides pour ODBC, consultez Options ODBC dans la documentation IBM Db2.

  • Vous devez autoriser le trafic entrant et sortant de votre base de données hôte RDS for Db2 vers votre base de données hôte distante. Pour plus d’informations, consultez Créer un groupe de sécurité qui autorise l'accès à votre instance de base de données dans votre VPC.

Pour plus d’informations sur la fédération vers Oracle, consultez Comment interroger Oracle à l’aide de la fédération Db2 et du pilote ODBC ? sur le site de support d’IBM.

Pour plus d’informations sur les sources de données qui prennent en charge la fédération, consultez Matrice de support des sources de données de fédération fournie dans Db2 LUW V11.5 sur le site de support d’IBM.

Étape 1 : création d’un wrapper ODBC

Créez un wrapper en exécutant la commande suivante :

db2 "create wrapper odbc options( module '/home/rdsdb/sqllib/federation/odbc/lib/libodbc.so')"

Étape 2 : création d’un serveur fédéré

Créez un serveur fédéré en exécutant la commande suivante. Dans l'exemple suivant, remplacez server_name par le nom du serveur que vous utiliserez pour la fédération. wrapper_typeRemplacez-le par l'emballage approprié. db_versionRemplacez-le par la version de votre base de données distante. Remplacez dns_nameport, et service_name par les valeurs appropriées pour la base de données distante à laquelle vous souhaitez vous connecter.

db2 "create server server_name type wrapper_type version db_version options (HOST 'dns_name', PORT 'port', SERVICE_NAME 'service_name')“

Pour plus d’informations sur les types de wrappers, consultez Matrice de support des sources de données de fédération fournie dans Db2 LUW V11.5 sur le site de support d’IBM.

Exemple

L’exemple suivant crée un serveur fédéré pour une base de données Oracle distante.

db2 "create server server1 type oracle_odbc version 12.1 options (HOST 'test1.amazon.com', PORT '1521', SERVICE_NAME 'pdborcl.amazon.com')“

Étape 3 : création d’un mappage utilisateur

Créez un mappage utilisateur pour associer votre serveur fédéré à votre serveur de source de données en exécutant la commande SQL suivante. Dans l'exemple suivant, remplacez server_name par le nom du serveur distant sur lequel vous souhaitez effectuer des opérations. Il s’agit du serveur que vous avez créé à l’étape 2. Remplacez username et password par vos informations d'identification pour ce serveur distant.

create user mapping for user server server_name options (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');

Pour plus d’informations, consultez Mappages d’utilisateurs dans la documentation IBM Db2.

Étape 4 : vérification de la connexion

Vérifiez que la configuration de votre fédération s’est bien déroulée en vérifiant la connexion. Ouvrez une session pour envoyer des commandes SQL natives à votre source de données distante à l’aide de la commande SET PASSTHRU, puis créez une table sur le serveur de données distant.

  1. Ouvrez et fermez une session pour envoyer du code SQL à une source de données. Dans l'exemple suivant, remplacez server_name par le nom du serveur que vous avez créé pour la fédération à l'étape 2.

    set passthru server_name;
  2. Créez une nouvelle table . Dans l'exemple suivant, remplacez column_namedata_type, et value par les éléments appropriés pour votre tableau.

    create table table_name ( column_name data_type(value), column_name data_type(value);

    Pour plus d’informations, consultez Instruction CREATE TABLE dans la documentation IBM Db2.

  3. Créez un index, insérez des valeurs pour les lignes dans le tableau et réinitialisez la connexion. La réinitialisation de la connexion interrompt la connexion, mais conserve les processus principaux. Dans l'exemple suivant, remplacez index_nametable_name,column_name, et columnx_value par vos informations.

    create index index_name on table_name(column_name); insert into table_name values(column1_value,column2_value,column3_value); insert into table_name values(column1_value,column2_value,column3_value); set passthru reset; connect reset;
  4. Connectez-vous à votre base de données Db2 distante, créez un surnom pour votre serveur distant et effectuez des opérations. Lorsque vous avez terminé d’accéder aux données de la base de données Db2 distante, réinitialisez puis mettez fin à la connexion. Dans l'exemple suivant, remplacez database_name par le nom de votre base de données Db2 distante. Remplacez nickname par un nom. Remplacez server_name et table_name par le nom du serveur distant et de la table de ce serveur sur lesquels vous souhaitez effectuer des opérations. Remplacez username par les informations relatives à votre serveur distant. Remplacez sql_command par l'opération à effectuer sur le serveur distant.

    connect to database_name; create nickname nickname for server_name."username"."table_name"; select sql_command from nickname; connect reset; terminate;

Exemple

L’exemple suivant crée une session directe pour autoriser les opérations sur le serveur fédéré testdb10.

Ensuite, il crée la table t1 avec trois colonnes contenant différents types de données.

Ensuite, l’exemple crée l’index i1_t1 sur trois colonnes de la table t1. Ensuite, il insère deux lignes contenant des valeurs pour ces trois colonnes, puis se déconnecte.

Enfin, l’exemple se connecte à la base de données Db2 distante testdb2 et crée un surnom pour la table sur t1 le serveur fédéré testdb10. Il crée le surnom avec le nom d’utilisateur TESTUSER pour cette source de données. Une commande SQL génère toutes les données de la table t1. L’exemple déconnecte et met fin à la session.

set passthru testdbl0; create table t1 ( c1 decimal(13,0), c2 char(200), c3 int); create index i1_t1 on t1(c3); insert into t1 values(1,'Test',1); insert into t1 values(2,'Test 2',2); connect reset; connect to testdb2; create nickname remote_t1 for testdbl0."TESTUSER"."T1"; select * from remote_t1; connect reset; terminate;