Utiliser un acheminement d'énoncé efficace en activant ProxySQL sur Autonomous AI Database
ProxySQL permet un accès unifié à plusieurs bases de données autonomes d'IA en acheminant les énoncés pour les opérations LMD et les interrogations, et élimine la nécessité de consolider physiquement toutes les données dans une seule base de données.
Rubriques
- À propos du routage efficace des énoncés avec ProxySQL sur la base de données d'IA autonome
ProxySQL sur la base de données d'IA autonome vous permet d'utiliser plusieurs instances de base de données d'IA autonome et facilite l'accès et l'analyse des données comme si elles étaient stockées dans un seul emplacement. - Routage en fonction du contexte
ProxySQL Le routage prend en charge le routage en fonction du contexte, un mécanisme qui choisit dynamiquement l'instance de base de données IA autonome cible pour une table lors de l'exécution de l'interrogation. - Lorsque l'acheminement d'énoncé avec ProxySQL peut fournir des avantages pour les applications
L'acheminement d'énoncé avec ProxySQL est le plus efficace lorsque chaque énoncé SQL peut être mappé de manière déterministe à une seule instance de base de données d'IA autonome cible à l'aide de mappages au niveau du schéma ou au niveau de l'objet. - Activer le routage d'énoncés et définir le mappage de schéma
Cette section explique comment configurer ProxySQL pour le routage automatique d'énoncés d'un routeur principal vers une ou plusieurs instances de base de données cible. - Soumettre des énoncés au moyen de ProxySQL
Pour tirer parti du routage automatique des énoncés, vous devez vous connecter à l'instance de routeur gérée par ProxySQL et soumettre vos énoncés à cette instance. - Arrêter les énoncés de routage vers une instance cible
Effectuez ces étapes sur une base de données d'intelligence artificielle autonome cible pour l'empêcher d'accepter les énoncés acheminés du routeur ProxySQL. - Supprimer le mappage de schéma ou d'objet de l'instance de routeur
Fournit les étapes pour supprimer un mappage spécifique de la base de données de routeur gérée par ProxySQL. - Désactiver l'acheminement d'énoncé
Affiche les étapes pour l'acheminement automatique d'énoncé en désactivant ProxySQL. - Acheminement automatique des énoncés avec des notes ProxySQL
Liste les limitations et les notes importantes concernant l'acheminement automatique des énoncés lorsque ProxySQL est activé.
À propos du routage efficace des énoncés avec ProxySQL sur Autonomous AI Database
ProxySQL sur Autonomous AI Database vous permet d'utiliser plusieurs instances Autonomous AI Database et facilite l'accès et l'analyse des données comme si elles étaient stockées à un seul endroit.
Vous pouvez utiliser ProxySQL lorsque vous avez besoin d'utiliser une configuration volumineuse impliquant plusieurs bases de données d'IA autonomes. ProxySQL vous donne un accès unifié à différentes bases de données et élimine la nécessité de déplacer physiquement les données en un seul endroit.
Lorsque vous activez ProxySQL, vous désignez une instance de base de données d'IA autonome en tant qu'instance de routeur et une ou plusieurs instances de base de données d'IA autonome en tant qu'instances cibles. L'instance de routeur comprend une table de routage qui détermine comment une instruction est distribuée (mappée) à une ou plusieurs instances cibles. Une instance cible inclut une table d'acceptation. La table d'acceptation est similaire à la table de routage et contient des entrées indiquant que l'instance accepte les redirections d'énoncé à partir du routeur.
Selon la méthode de routage que vous sélectionnez, les instructions sont automatiquement mappées de l'instance de routeur à une ou plusieurs instances cibles. Une application se connecte à l'instance de routeur et s'exécute sur l'instance de routeur, et Autonomous AI Database redirige les énoncés vers une ou plusieurs instances cibles.
Voici quelques-uns des avantages liés à l'activation de ProxySQL, par rapport à l'utilisation d'une seule base de données d'IA autonome de très grande taille :
-
ProxySQL assure l'autonomie et l'indépendance de la base de données pour les opérations telles que la gestion du cycle de vie et les tâches d'administration. Par exemple, en utilisant ProxySQL, les opérations de base de données, y compris la sauvegarde et la restauration, et les fonctions telles qu'Autonomous Data Guard sont gérées de manière indépendante dans chaque instance de base de données Autonomous AI Database.
-
ProxySQL vous permet de gérer efficacement des bases de données très volumineuses en divisant les données entre plusieurs instances de base de données d'IA autonome.
Il y a plusieurs termes à savoir lorsque vous travaillez avec ProxySQL :
Instance de routeur : Une instance de routeur est désignée lorsque vous activez ProxySQL. Une table de routage détermine comment un énoncé est distribué (mappé) à une ou plusieurs instances cibles. Selon la méthode de routage spécifiée, les instructions de l'instance de routeur sont automatiquement mappées à une ou plusieurs instances cibles.
Instance cible : L'instance cible est désignée lorsque vous créez un mappage sur l'instance de routeur. Une table d'acceptation est ajoutée sur chaque instance cible.
Table de routage : Une table de routage contient des entrées de mappage cible qui spécifient l'instance vers laquelle les énoncés sont automatiquement acheminés.
Table d'acceptation : Une table d'acceptation contient des entrées indiquant que l'instance accepte les redirections d'énoncé à partir du routeur.
Exigences pour utiliser ProxySQL
Voici les exigences ProxySQL :
-
L'activation de ProxySQL n'est prise en charge que pour les instances de base de données d'intelligence artificielle autonome qui se trouvent dans un groupe élastique. L'instance de routeur et toutes les instances cibles doivent être membres du même groupe élastique.
-
L'instance de routeur et toutes les instances cibles doivent se trouver dans la même région.
-
Les métadonnées des objets que vous acheminez doivent correspondre sur les instances de routeur et de cible. Le concepteur d'application est responsable que les métadonnées des objets présents dans une instance cible sont également présentes dans l'instance de routeur. Par exemple, si vous avez une table nommée
EMPLOYEESdans l'instance cible, vous devez également avoir une table avec les métadonnées correspondantes nomméesEMPLOYEESdans l'instance de routeur. Il n'est pas nécessaire que la table de l'instance de routeur soit vide (métadonnées uniquement).
Recommandation pour l'activation de ProxySQL
Les instances que vous ajoutez en tant que routeur et cibles peuvent être de n'importe quel type de charge de travail de base de données d'IA autonome. S'il existe des entrées dans la table de routage (mappage), les instructions sur les objets spécifiés dans ces entrées sont acheminées vers les instances cibles correspondantes, quel que soit le type de charge de travail de la cible. Oracle recommande que toutes les instances de base de données autonome avec intelligence artificielle utilisent le type de charge de travail Entrepôt avec lac de données.
Acheminement automatique des énoncés avec ProxySQL activé
À l'aide de ProxySQL, vous pouvez répartir les énoncés entre les cibles à l'aide de l'une des méthodes d'acheminement prises en charge.
Quelle que soit la méthode de routage (mappage) que vous décidez d'utiliser, il incombe au concepteur de schéma d'application de s'assurer que les métadonnées des objets placés dans une instance cible sont également disponibles dans l'instance de routeur. Par exemple, si vous avez une table nommée
EMPLOYEES dans l'instance cible, vous devez également avoir une table avec les métadonnées correspondantes nommées EMPLOYEES dans l'instance de routeur. Il n'est pas nécessaire que la table de l'instance de routeur soit vide.
-
Routage au niveau schéma : Tous les objets d'un schéma sont mappés à une seule instance cible. Vous pouvez mapper plusieurs schémas à une seule instance cible. Toutefois, les instructions d'un schéma ne peuvent pas être mappées entre plusieurs instances cibles, ce qui signifie que le même schéma ne peut pas être utilisé pour le routage de schéma et d'objet.
Pour spécifier le routage au niveau du schéma, vous appelez la procédure
DBMS_PROXY_SQL.ADD_MAPPINGavec le paramètreobject_nameréglé à la valeur "*".
Description de l'illustration proxysql_schema.pngDans cet exemple, les métadonnées des objets du schéma A sont présentes à la fois dans la base de données d'IA autonome cible 1 et dans l'instance de routeur, et les métadonnées des objets du schéma B sont présentes à la fois dans la base de données d'IA autonome cible 2 et dans l'instance de routeur, etc.
-
Routage au niveau de l'objet : Les objets d'un schéma sont mappés entre plusieurs instances cibles.
Pour spécifier le routage au niveau de l'objet, vous appelez la procédure
DBMS_PROXY_SQL.ADD_MAPPINGavec le paramètreobject_nameréglé à un nom de table.
Description de l'illustration proxysql_object.pngDans cet exemple, les métadonnées de la table A sont présentes à la fois dans la cible 1 et dans l'instance de routeur, et les métadonnées de la table B sont présentes à la fois dans la cible 2 et dans l'instance de routeur, et ainsi de suite.
-
Routage hybride : Les objets d'un schéma sont acheminés à l'aide d'une combinaison de routage au niveau du schéma et de routage au niveau de l'objet.

Description de l'illustration proxysql_hybrid.pngDans cet exemple, les métadonnées pour le schéma A sont présentes à la fois dans la base de données d'IA autonome 1 cible et dans l'instance de routeur, et les métadonnées pour la table B (dans le schéma B) sont présentes à la fois dans la base de données d'IA autonome 2 cible et dans l'instance de routeur, etc.
Mappage de service avec acheminement automatique d'énoncés lorsque ProxySQL est activé
Lorsque la table de routage indique un mappage à une base de données cible, le même service que vous êtes connecté à la base de données du routeur est utilisé pour l'accès aux données dans la base de données cible.
Par exemple, si une session est connectée au service HIGH sur l'instance de routeur, une instruction ou un fragment d'instruction acheminé vers une instance cible utilise également le service HIGH. De même, si une session est connectée au service MEDIUM sur l'instance de routeur, une instruction acheminée vers une instance cible utilise le service MEDIUM.
Si le service utilisé pour se connecter à l'instance de routeur n'est pas disponible sur une instance cible, l'énoncé ou le fragment d'énoncé acheminé vers l'instance cible utilise le service MEDIUM (les services disponibles dépendent du type de charge de travail de la base de données d'intelligence artificielle autonome).
Sémantique de l'utilisateur courant pour les interrogations acheminées
Lorsqu'un utilisateur interroge une table ou une vue répertoriée dans la table de routage, ProxySQL se connecte à la base de données cible à l'aide du même nom d'utilisateur de base de données que l'appelant.
Par exemple, si l'utilisateur SCOTT exécute un SELECT sur une table ou une vue acheminée, l'interrogation correspondante est exécutée sur la base de données cible en tant qu'utilisateur SCOTT. Cela signifie que :
-
L'utilisateur SCOTT doit exister dans la base de données cible.
- L'utilisateur SCOTT doit disposer des privilèges requis sur les objets cibles de la base de données cible. Si l'utilisateur n'existe pas ou ne dispose pas de privilèges suffisants dans la base de données cible, l'interrogation acheminée échoue.
Acheminement contextuel
Le routage ProxySQL prend en charge le routage en fonction du contexte, un mécanisme qui choisit dynamiquement l'instance de base de données d'IA autonome cible pour une table lors de l'exécution de l'interrogation.
Lorsqu'une table peut être acheminée vers plusieurs instances de base de données autonome d'IA cible, la décision finale de routage est influencée non seulement par le mappage statique de table, mais aussi par la structure et le contexte de l'interrogation. Si une telle table apparaît avec d'autres tables routées au même niveau de l'interrogation - par exemple, dans la même sous-interrogation ou clause de jointure - ProxySQL Routing préfère l'acheminer vers la même cible que ces autres tables, à condition que cela soit autorisé par les règles de mappage.
Si, après l'application de ces règles, il existe encore plus d'une instance de base de données d'intelligence artificielle autonome cible valide, le routage ProxySQL choisit l'une des cibles admissibles au hasard.
SELECT e.name AS emp_name, d.name AS dept_name
FROM scott.emp e, scott.dept d
WHERE e.deptno = d.deptno;
Dans cet exemple, supposons que SCOTT.EMP est mappé à plusieurs instances de base de données d'IA autonome cibles T1 et que T2.SCOTT.DEPT est mappé uniquement à l'instance de base de données d'IA autonome cible T2. En effet, SCOTT.EMP et SCOTT.DEPT apparaissent au même niveau dans l'interrogation, ProxySQL Routing achemine SCOTT.EMP vers T2 pour s'aligner avec le routage de SCOTT.DEPT. Ce routage dynamique de SCOTT.EMP n'est utilisé que lorsque la table est explicitement mappée à plusieurs cibles. Si SCOTT.EMP n'est mappé à aucune instance de base de données d'IA autonome cible, le routage ProxySQL exécute l'interrogation pour SCOTT.EMP sur l'instance de base de données d'IA autonome du routeur elle-même.
WITH
sub1 AS (
SELECT a.c1 r1, b.c1 r2 FROM tab_dup a, tab2 b
),
sub2 AS (
SELECT a.c1 t1, b.c1 t2 FROM tab_dup a, tab1 b
)
SELECT * FROM sub1, sub2 ORDER BY 1, 2, 3, 4;
Dans l'exemple ci-dessus, vous supposerez que TAB_DUP est mappé à T1 et que T2.TAB2 est acheminé uniquement vers T2.TAB1 est acheminé uniquement vers T1. Dans la sous-interrogation sub1, TAB_DUP et TAB2 apparaissent ensemble au même niveau, de sorte que le routage ProxySQL achemine TAB_DUP vers T2 pour colocaliser l'exécution avec TAB2. Dans la sous-interrogation sub2, TAB_DUP s'affiche avec TAB1, qui est mappé uniquement à T1. Le routage ProxySQL achemine TAB_DUP vers T1. Par conséquent, TAB_DUP peut être acheminé vers différentes cibles dans différentes parties du même énoncé, en fonction du contexte d'interrogation environnant.
MERGE INTO tab1 t1
USING tab_dup t2
ON (t1.c1 = t2.c1)
WHEN MATCHED THEN
UPDATE SET t1.c2 = t2.c2;Dans l'exemple ci-dessus, vous supposerez que TAB_DUP est mappé à la fois à T1 et à T2. TAB1 est mappé uniquement à T1.
Ici, AB1 et TAB_DUP sont référencés au même niveau dans l'énoncé MERGE. Le routage ProxySQL achemine donc TAB_DUP vers T1 pour s'aligner sur l'emplacement de TAB1. Seules les rangées de TAB_DUP présentes dans T1 participent à l'opération MERGE et les mises à jour de TAB1 sont basées sur ces valeurs.
Où l'acheminement d'énoncé avec ProxySQL peut fournir des avantages pour l'application
Le routage d'énoncés avec ProxySQL est le plus efficace lorsque chaque énoncé SQL peut être mappé de manière déterministe à une seule instance de base de données d'IA autonome cible à l'aide de mappages au niveau du schéma ou au niveau de l'objet.
Lorsque chaque instruction SQL peut être mappée de manière déterministe à une seule cible et que vous activez le routage des instructions, le travail s'exécute là où résident les objets référencés. Ce modèle est avantageux en termes de performances des interrogations pour les architectures de base de données suivantes :
-
Dispositions de client par schéma/base de données
-
Cloisons régionales
-
Effacer les limites de domaine (par exemple,
INVENTORYetBILLING)
Lorsque vous utilisez le routage d'énoncés avec ProxySQL, vous pouvez ajuster de très grands domaines pour une seule instance de base de données autonome d'IA cible, sans consolider physiquement les données.
Si vos analyses nécessitent de combiner des objets mappés à différentes bases de données cibles dans une seule interrogation ad hoc, vous devez utiliser des approches complémentaires, plutôt que de vous fier au routage d'énoncés avec ProxySQL. Les autres approches complémentaires sont les suivantes :
- Utiliser des vues de préagrégation ou matérialisées
- Utiliser des tâches par cible avec une étape de fusion
- Utiliser un magasin de rapports
Ce qui suit décrit un cas où le routage d'instruction est un bon ajustement et un cas où l'utilisation du routage d'instruction n'est pas un bon ajustement :
-
Exemple d'ajustement approprié : Application SaaS multilocataire dans laquelle l'application inclut
tenant_idet le schéma de chaque locataire est mappé à sa propre instance de base de données d'intelligence artificielle autonome cible (mappage au niveau du schéma avecobject_name => '*'). Dans ce cas, chaque demande pour un locataire est acheminée vers la bonne cible de manière transparente au moyen de la table de mappage du routeur. -
Exemple qui ne convient pas : Tableau de bord de niveau supérieur qui émet un énoncé SQL joignant des données pour "tous les locataires à la fois", lorsque ces locataires sont mappés à des cibles différentes. Etant donné que le routage des instructions mappe des instructions/objets à des cibles spécifiques, une application ou un rapport avec une jointure entre cibles n'est pas adapté au routage des instructions. Dans ce type d'application, vous devez exécuter plusieurs interrogations par cible et fusionner les résultats ou alimenter une zone de production de rapports consolidée.
Activer l'acheminement des relevés et définir le mappage de schéma
Cette section explique comment configurer ProxySQL pour le routage automatique des énoncés d'un routeur principal vers une ou plusieurs instances de base de données cible.
- Activer le routage d'énoncés et définir le mappage d'objets du routeur aux instances cibles
Pour configurer le routage des énoncés, vous activez ProxySQL sur l'instance de routeur et définissez le schéma ou les objets dont les énoncés sont mappés (envoyés) aux bases de données cibles. - Accepter le routage d'énoncés sur les instances cibles
Vous devez accepter le routage d'énoncés sur une instance cible pour permettre le mappage à partir de l'instance de routeur.
Activer le routage d'énoncés et définir le mappage d'objets du routeur aux instances cibles
Pour configurer le routage des énoncés, vous activez ProxySQL sur l'instance de routeur et définissez le schéma ou les objets dont les énoncés sont mappés (envoyés) aux bases de données cibles.
Voici les conditions requises pour activer l'acheminement automatique des énoncés :
-
Créez l'instance Autonomous AI Database que vous prévoyez d'utiliser pour l'instance de routeur ou identifiez une instance Autonomous AI Database existante en tant qu'instance de routeur.
-
Créez les instances cibles ou identifiez les instances cibles à partir des instances existantes de la base de données autonome avec intelligence artificielle.
-
Assurez-vous que l'instance de routeur et toute instance cible où vous redirigez des interrogations ont des métadonnées correspondantes pour tous les objets que vous mappez du routeur à une cible.
Quelle que soit la méthode de routage (mappage) que vous décidez d'utiliser, il incombe au concepteur de schéma d'application de s'assurer que les métadonnées des objets placés dans une instance cible sont également disponibles dans l'instance de routeur. Par exemple, si vous avez une table nommée
EMPLOYEESdans l'instance cible, vous devez également avoir une table avec les métadonnées correspondantes nomméesEMPLOYEESdans l'instance de routeur. Il n'est pas nécessaire que la table de l'instance de routeur soit vide. -
À partir des choix disponibles, déterminez le type de routage d'énoncés à utiliser : Routage au niveau du schéma, Routage au niveau de l'objet ou Routage hybride.
Pour activer l'acheminement automatique des relevés et ajouter des entrées de mappage cible à la table d'acheminement :
Vous pouvez interroger la vue DBA_PROXY_SQL_MAPPINGS pour lister les enregistrements de la table de routage. Pour plus d'informations, voir Vue DBA_PROXY_SQL_MAPPINGS.
Rubrique parent : Activer l'acheminement d'énoncé et définir le mappage de schéma
Accepter l'acheminement de relevé sur les instances cibles
Vous devez accepter le routage d'énoncés sur une instance cible pour permettre le mappage à partir de l'instance de routeur.
Pour autoriser (accepter) les redirections d'énoncé de l'instance de routeur vers une instance cible :
Rubrique parent : Activer l'acheminement d'énoncé et définir le mappage de schéma
Soumettre des énoncés au moyen de ProxySQL
Pour tirer parti du routage automatique des énoncés, vous devez vous connecter à l'instance de routeur gérée par ProxySQL et soumettre vos énoncés à cette instance.
Lorsque vous envoyez des interrogations et des instructions LMD avec l'option ProxySQL activée, vous devez vous connecter à l'instance de routeur pour tirer parti du routage automatique des énoncés.
Arrêter les énoncés de routage vers une instance cible
Effectuez ces étapes sur une base de données d'IA autonome cible pour l'empêcher d'accepter des énoncés acheminés à partir du routeur ProxySQL.
Pour plus d'informations, voir ProcédureREJECT_MAPPING.
Supprimer le mappage de schéma ou d'objet de l'instance de routeur
Fournit les étapes pour supprimer un mappage spécifique de la base de données du routeur gérée par ProxySQL.
Désactiver l'acheminement de relevé
Affiche les étapes d'acheminement automatique des énoncés en désactivant ProxySQL.
Exécutez DBMS_PROXY_SQL.DISABLE_ROUTING sur l'instance de routeur pour désactiver ProxySQL et pour désactiver l'acheminement automatique des énoncés vers les instances cibles.
Exemple :
BEGIN
DBMS_PROXY_SQL.DISABLE_ROUTING;
END;
/
Cela désactive ProxySQL et désactive le routage automatique des énoncés sur le routeur.
Lorsque vous désactivez ProxySQL, les entrées de mappage d'énoncés dans la table de routage de l'instance de routeur ne sont pas supprimées. Cela signifie que si vous réactivez ProxySQL et que la table de routage contient des entrées existantes, l'acheminement d'énoncé automatique achemine les énoncés vers les instances cibles, comme spécifié dans la table de routage. Utilisez la procédure DBMS_PROXY_SQL.REMOVE_MAPPING si vous souhaitez supprimer les entrées de table de routage existantes avant de réactiver ProxySQL.
Pour plus d'informations, voir ProcédureDISABLE_ROUTING.
Acheminement automatique des relevés avec des notes ProxySQL
Répertorie les limitations et les notes importantes concernant l'acheminement automatique des énoncés lorsque ProxySQL est activé.
-
L'utilisateur
ADMINdispose des privilèges nécessaires pour gérer ProxySQL. Si vous voulez activer un autre utilisateur, vous devez accorder les privilèges suivants-
Privilège
EXECUTEsur l'ensembleDBMS_PROXY_SQL. -
Privilège
READsur la vueDBA_PROXY_SQL_MAPPINGS. -
Privilège
READsur la vueDBA_PROXY_SQL_ACCEPTED_MAPPINGS.
-
-
Le routage automatique des relevés reprend de façon transparente lorsque :
-
L'instance de base de données Autonomous AI Database cible bascule vers une base de données de secours Autonomous Data Guard locale.
-
Vous effectuez une permutation pour une instance de base de données d'intelligence artificielle autonome cible vers une base de données de secours Autonomous Data Guard locale.
Toutefois, le routage d'énoncés automatique s'arrête après un basculement ou une permutation vers une base de données de secours Autonomous Data Guard inter-région.
-