Utiliser un routage d'instructions efficace en activant ProxySQL sur une base de données Autonomous AI
ProxySQL permet un accès unifié à plusieurs bases de données d'IA autonomes en acheminant des instructions pour les instructions LMD et les requêtes, et élimine la nécessité de consolider physiquement toutes les données dans une seule base de données.
Sujets
- A propos du routage efficace des déclarations avec ProxySQL sur une base de données d'IA autonome
ProxySQL sur une 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 au même endroit. - Routage tenant compte du contexte
Le routage ProxySQL prend en charge le routage tenant compte du contexte, un mécanisme qui choisit dynamiquement l'instance de base de données Autonomous AI cible pour une table lors de l'exécution d'une requête. - Où le routage d'instructions avec ProxySQL peut apporter des avantages aux applications
Le routage d'instructions avec ProxySQL est le plus efficace lorsque chaque instruction SQL peut être mise en correspondance de manière déterministe avec une instance de base de données Autonomous AI cible unique à l'aide de mappings de niveau schéma ou objet. - Activation du routage des instructions et définition du mapping de schéma
Cette section explique comment configurer ProxySQL pour le routage automatique des instructions d'un routeur principal vers une ou plusieurs instances de base de données cible. - Soumission d'instructions via ProxySQL
Pour tirer parti du routage automatique des instructions, vous devez vous connecter à l'instance de routeur gérée par ProxySQL et la soumettre. - Arrêt des instructions de routage vers une instance cible
Effectuez ces étapes sur une base de données Autonomous AI cible pour l'empêcher d'accepter des instructions acheminées à partir du routeur ProxySQL. - Suppression d'une correspondance de schéma ou d'objet d'une instance de routeur
Fournit les étapes permettant d'enlever une correspondance spécifique de la base de données de routeur gérée par ProxySQL. - Désactiver le routage des instructions
Affiche les étapes du routage automatique des instructions en désactivant ProxySQL. - Routage automatique des instructions avec ProxySQL Notes
Répertorie les limites et les remarques importantes concernant le routage automatique des instructions lorsque ProxySQL est activé.
A propos du routage efficace des instructions avec ProxySQL sur Autonomous AI Database
ProxySQL sur Autonomous AI Database 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 au même endroit.
Vous pouvez utiliser ProxySQL lorsque vous avez besoin d'utiliser une configuration volumineuse impliquant plusieurs bases de données Autonomous AI. ProxySQL vous offre un accès unifié à différentes bases de données et vous évite d'avoir à déplacer physiquement les données au même endroit.
Lorsque vous activez ProxySQL, vous désignez une instance de base de données Autonomous AI en tant qu'instance de routeur et des instances de base de données Autonomous AI en tant qu'instances cible. L'instance de routeur inclut une table de routage qui détermine la façon dont une instruction est distribuée (mise en correspondance) avec une ou plusieurs instances cible. 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 réacheminements d'instruction à partir du routeur.
Selon la méthode de routage que vous sélectionnez, les instructions sont automatiquement mises en correspondance à partir de l'instance de routeur vers une ou plusieurs instances cible. Une application se connecte à l'instance de routeur et s'exécute sur l'instance de routeur et Autonomous AI Database redirige les instructions vers une ou plusieurs instances cible.
Voici quelques-uns des avantages de 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 des bases de données pour les opérations telles que la gestion du cycle de vie et les tâches d'administration. Par exemple, à l'aide de ProxySQL, les opérations de base de données, y compris la sauvegarde et la restauration, et des fonctionnalités telles qu'Autonomous Data Guard sont gérées indépendamment dans chaque instance de base de données Autonomous AI.
-
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 existe plusieurs termes à connaître 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 la façon dont une instruction est distribuée (mise en correspondance) avec une ou plusieurs instances cible. Selon la méthode de routage indiquée, les instructions de l'instance de routeur sont automatiquement mises en correspondance avec des instances cible.
Instance cible : l'instance cible est désignée lorsque vous créez un mapping 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 mapping cible qui indiquent l'instance vers laquelle les instructions sont automatiquement acheminées.
Table d'acceptation : une table d'acceptation contient des entrées indiquant que l'instance accepte les réacheminements d'instruction à partir du routeur.
Conditions d'utilisation de ProxySQL
Voici les exigences de ProxySQL :
-
L'activation de ProxySQL est uniquement prise en charge pour les instances de base de données Autonomous AI qui se trouvent dans un pool élastique. L'instance de routeur et toutes les instances cible doivent être membres du même pool élastique.
-
L'instance de routeur et toutes les instances cible 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'applications est responsable de la présence des métadonnées des objets présents dans une instance cible 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 des métadonnées correspondantes nomméesEMPLOYEESdans l'instance de routeur. La table de l'instance de routeur ne doit pas nécessairement être 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 globale de base de données Autonomous AI. S'il existe des entrées dans la table de routage (mise en correspondance), les instructions sur les objets spécifiés dans ces entrées sont acheminées vers les instances cible correspondantes, quel que soit le type de charge globale de la cible. Oracle recommande à toutes les instances de base de données Autonomous AI d'utiliser le type de charge globale Lakehouse.
Routage automatique des instructions avec ProxySQL activé
Avec ProxySQL, vous pouvez distribuer des instructions entre les cibles à l'aide de l'une des méthodes de routage 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 des métadonnées correspondantes nommées EMPLOYEES dans l'instance de routeur. La table de l'instance de routeur ne doit pas être vide.
-
Routage au niveau du schéma : tous les objets d'un schéma sont mis en correspondance avec une instance cible unique. Vous pouvez mettre en correspondance plusieurs schémas avec une seule instance cible. Toutefois, les instructions d'un schéma ne peuvent pas être mises en correspondance entre plusieurs instances cible, ce qui signifie que le même schéma ne peut pas être utilisé à la fois pour le routage de schéma et d'objet.
Pour indiquer le routage de niveau schéma, appelez la procédure
DBMS_PROXY_SQL.ADD_MAPPINGavec le compteurobject_namedéfini sur la valeur "*".
Description de l'image 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 Autonomous AI 1 cible 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 Autonomous AI 2 cible et dans l'instance de routeur, etc.
-
Routage au niveau de l'objet : les objets d'un schéma sont mis en correspondance entre plusieurs instances cible.
Pour indiquer le routage au niveau de l'objet, appelez la procédure
DBMS_PROXY_SQL.ADD_MAPPINGavec le paramètreobject_namedéfini sur un nom de table.
Description de l'image 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, etc.
-
Routage hybride : les objets d'un schéma sont acheminés à l'aide d'une combinaison de routage de niveau schéma et de routage de niveau objet.

Description de l'image proxysql_hybrid.pngDans cet exemple, les métadonnées du schéma A sont présentes à la fois dans la base de données Autonomous AI 1 cible et dans l'instance de routeur, et les métadonnées de la table B (dans le schéma B) sont présentes à la fois dans la base de données Autonomous Database 2 cible et dans l'instance de routeur, etc.
Mappage de service avec routage automatique des relevés lorsque ProxySQL est activé
Lorsque la table de routage indique un mapping avec 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 la connexion à l'instance de routeur n'est pas disponible sur une instance cible, l'instruction ou le fragment d'instruction acheminé vers l'instance cible utilise le service MEDIUM (les services disponibles dépendent du type de charge globale de la base de données Autonomous AI).
Sémantique utilisateur actuelle pour les requêtes routé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 en utilisant le même nom utilisateur de base de données que l'appelant.
Par exemple, si l'utilisateur SCOTT exécute une valeur SELECT sur une table ou une vue routée, la requête correspondante est exécutée sur la base de données cible en tant qu'utilisateur SCOTT. De ce fait :
-
L'utilisateur SCOTT doit exister dans la base de données cible.
- L'utilisateur SCOTT doit disposer des privilèges requis sur les objets cible dans 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, la requête acheminée échoue.
Routage contextuel
ProxySQL Le routage prend en charge le routage contextuel, mécanisme qui choisit dynamiquement l'instance de base de données Autonomous AI cible pour une table lors de l'exécution de la requête.
Lorsqu'une table peut être acheminée vers plusieurs instances de base de données Autonomous AI cible, la décision de routage finale est influencée non seulement par le mapping statique de table, mais également par la structure et le contexte de la requête. Si une telle table apparaît avec d'autres tables acheminées au même niveau de la requête (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 mapping.
Si, après l'application de ces règles, il reste plusieurs instances de base de données Autonomous AI cible valides, le routage ProxySQL choisit l'une des cibles admissibles de manière aléatoire.
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 mis en correspondance avec plusieurs instances de base de données Autonomous AI cible T1 et que T2.SCOTT.DEPT est mis en correspondance uniquement avec l'instance de base de données Autonomous AI cible T2. En effet, SCOTT.EMP et SCOTT.DEPT apparaissent au même niveau dans la requête. Le routage ProxySQL achemine SCOTT.EMP vers T2 pour s'aligner sur le routage de SCOTT.DEPT. Ce routage dynamique de SCOTT.EMP n'est utilisé que lorsque la table est explicitement mise en correspondance avec plusieurs cibles. Si SCOTT.EMP n'est mis en correspondance avec aucune instance de base de données Autonomous AI cible, le routage ProxySQL exécute la requête pour SCOTT.EMP sur l'instance de base de données Autonomous AI 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 mis en correspondance avec T1 et que T2.TAB2 est routé uniquement vers T2.TAB1 est routé uniquement vers T1. Dans la sous-interrogation sub1, TAB_DUP et TAB2 apparaissent ensemble au même niveau. Par conséquent, le routage ProxySQL achemine TAB_DUP vers T2 pour co-localiser l'exécution avec TAB2. Dans la sous-interrogation sub2, TAB_DUP apparaît avec TAB1, qui est mis en correspondance uniquement avec T1. Par conséquent, le routage ProxySQL achemine TAB_DUP vers T1. Par conséquent, TAB_DUP peut être acheminé vers différentes cibles dans différentes parties de la même instruction, en fonction du contexte de requête 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 supposez que TAB_DUP est mis en correspondance avec T1 et T2. TAB1 est mis en correspondance uniquement avec T1.
Ici, AB1 et TAB_DUP sont référencés au même niveau dans l'instruction MERGE. Le routage ProxySQL achemine donc TAB_DUP vers T1 pour l'aligner sur l'emplacement de TAB1. Seules les lignes de TAB_DUP présentes dans T1 participent à l'opération MERGE et les mises à jour vers TAB1 sont basées sur ces valeurs.
Où l'acheminement des relevés avec ProxySQL peut apporter des avantages aux applications
Le routage d'instructions avec ProxySQL est plus efficace lorsque chaque instruction SQL peut être mise en correspondance de manière déterministe avec une instance de base de données Autonomous AI cible unique à l'aide de mappings de niveau schéma ou objet.
Lorsque chaque instruction SQL peut être mise en correspondance de manière déterministe avec une seule cible et que vous activez le routage des instructions, le travail est exécuté là où résident les objets référencés. Ce modèle est avantageux en termes de performances des requêtes pour les architectures de base de données suivantes :
-
Dispositions de locataire par schéma/base de données
-
Partitions régionales
-
Effacer les limites de domaine (par exemple,
INVENTORYetBILLING)
Lorsque vous utilisez le routage d'instructions avec ProxySQL, vous pouvez redimensionner des domaines très volumineux derrière une instance de base de données Autonomous AI cible unique, sans consolider physiquement les données.
Si vos analyses nécessitent que vous combiniez des objets mis en correspondance avec différentes bases de données cible dans une requête ad hoc unique, vous devez utiliser des approches complémentaires plutôt que de vous fier au routage d'instructions avec ProxySQL. Autres approches complémentaires :
- Utiliser des vues pré-agrégation ou matérialisées
- Utiliser des travaux par cible avec une étape de fusion
- Utiliser une banque de rapports
L'exemple suivant décrit un cas où le routage d'instructions est adapté et un cas où l'utilisation du routage d'instructions n'est pas adaptée :
-
Exemple adapté : application SaaS colocative dans laquelle l'application inclut
tenant_idet le schéma de chaque locataire est mis en correspondance avec sa propre instance de base de données Autonomous AI cible (mise en correspondance au niveau du schéma avecobject_name => '*'). Dans ce cas, chaque demande d'un locataire est acheminée vers la bonne cible de manière transparente via la table de mapping du routeur. -
Exemple qui ne convient pas : tableau de bord de niveau supérieur qui émet une instruction SQL joignant des données pour "tous les locataires à la fois", lorsque ces locataires sont mis en correspondance avec différentes cibles. Etant donné que le routage d'instructions met en correspondance des instructions/objets avec des cibles spécifiques, une application ou un état avec une jointure inter-cibles ne convient pas pour le routage d'instructions. Dans ce type d'application, vous devez exécuter plusieurs requêtes par cible et fusionner les résultats ou alimenter une zone de reporting consolidée à la place.
Activer l'acheminement des relevés et définir le mappage des schémas
Cette section explique comment configurer ProxySQL pour le routage automatique des instructions d'un routeur principal vers une ou plusieurs instances de base de données cible.
- Activation du routage d'instructions et définition du mapping d'objet du routeur vers les instances cible
Pour configurer le routage d'instructions, activez ProxySQL sur l'instance de routeur et définissez le ou les schémas dont les instructions sont mises en correspondance (envoyées) avec les bases de données cible. - Accepter le routage d'instructions sur les instances cible
Vous devez accepter le routage d'instructions sur une instance cible pour autoriser le mapping à partir de l'instance de routeur.
Activer le routage des instructions et définir la correspondance d'objets entre routeur et instances cible
Pour configurer le routage des instructions, vous activez ProxySQL sur l'instance de routeur et définissez le ou les schémas dont les instructions sont mises en correspondance (envoyées) avec les bases de données cible.
Les prérequis suivants permettent d'activer le routage automatique des instructions :
-
Créez l'instance de base de données Autonomous AI que vous prévoyez d'utiliser pour l'instance de routeur ou identifiez une instance de base de données Autonomous AI existante en tant qu'instance de routeur.
-
Créez les instances cible ou identifiez-les à partir des instances de base de données Autonomous AI existantes.
-
Assurez-vous que l'instance de routeur et toute instance cible sur laquelle vous redirigez les requêtes ont des métadonnées correspondantes pour tous les objets que vous mettez en correspondance du routeur avec 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 des métadonnées correspondantes nomméesEMPLOYEESdans l'instance de routeur. La table de l'instance de routeur ne doit pas être vide. -
Dans les choix disponibles, déterminez le type de routage d'instruction à utiliser : Routage au niveau schéma, Routage au niveau objet ou Routage hybride.
Pour activer le routage automatique des instructions et ajouter des entrées de mapping cible à la table de routage :
Vous pouvez interroger la vue DBA_PROXY_SQL_MAPPINGS pour répertorier les enregistrements dans la table de routage. Pour plus d'informations, reportez-vous à DBA_PROXY_SQL_MAPPINGS View.
Soumettre des relevés via ProxySQL
Pour tirer parti du routage automatique d'instructions, vous devez vous connecter à l'instance de routeur gérée par ProxySQL et la soumettre.
Lorsque vous envoyez des requêtes et des instructions LMD avec ProxySQL activé, vous devez vous connecter à l'instance de routeur pour tirer parti du routage automatique des instructions.
Arrêter le routage des instructions vers une instance cible
Effectuez ces étapes sur une base de données Autonomous AI cible pour l'empêcher d'accepter des instructions acheminées à partir du routeur ProxySQL.
Pour plus d'informations, reportez-vous à Procédure REJECT_MAPPING.
Enlever le schéma ou le mappage d'objet de l'instance de routeur
Fournit les étapes permettant de supprimer un mapping spécifique de la base de données de routeur gérée par ProxySQL.
Désactiver le routage des relevés
Affiche les étapes du routage automatique des instructions en désactivant ProxySQL.
Exécutez DBMS_PROXY_SQL.DISABLE_ROUTING sur l'instance de routeur pour désactiver ProxySQL et pour désactiver le routage automatique des instructions vers les instances cible.
Par exemple :
BEGIN
DBMS_PROXY_SQL.DISABLE_ROUTING;
END;
/
Cela désactive ProxySQL et désactive le routage automatique des instructions sur le routeur.
Lorsque vous désactivez ProxySQL, les entrées de mise en correspondance d'instructions 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, le routage automatique des instructions achemine les instructions vers les instances cible, comme indiqué dans la table de routage. Utilisez la procédure DBMS_PROXY_SQL.REMOVE_MAPPING si vous souhaitez enlever les entrées de table de routage existantes avant de réactiver ProxySQL.
Pour plus d'informations, reportez-vous à Procédure DISABLE_ROUTING.
Routage automatique des instructions avec les notes ProxySQL
Répertorie les limites et les remarques importantes sur le routage automatique des instructions lorsque ProxySQL est activé.
-
L'utilisateur
ADMINdispose des privilèges permettant de gérer ProxySQL. Si vous souhaitez activer un autre utilisateur, vous devez accorder les privilèges suivants-
Privilège
EXECUTEsur le packageDBMS_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 manière transparente lorsque :
-
L'instance de base de données Autonomous AI 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 Autonomous AI cible vers une base de données de secours Autonomous Data Guard locale.
Toutefois, le routage automatique des instructions s'arrête après un basculement ou une permutation vers une base de données de secours Autonomous Data Guard inter-région.
-