How-To'sInterBaseNouvellesRAD Studio

Utilisation du regroupement de connexions FireDAC avec RAD Server

whatisconnectionpooling

Regroupement de connexions Signification

Un pool de connexions est un cache de connexions √† la base de donn√©es maintenu afin que les connexions puissent √™tre r√©utilis√©es lorsque de futures demandes √† la base de donn√©es sont requises.¬†Les pools de connexion sont utilis√©s pour am√©liorer les performances d’ex√©cution des commandes sur une base de donn√©es.¬†L’ouverture et la maintenance d’une connexion √† la base de donn√©es pour chaque utilisateur, en particulier les requ√™tes adress√©es √† une application dynamique pilot√©e par une base de donn√©es, sont co√Ľteuses et gaspillent des ressources.¬†Dans le regroupement de connexions, une fois qu’une connexion est cr√©√©e, elle est plac√©e dans le pool et elle est r√©utilis√©e afin qu’une nouvelle connexion n’ait pas √† √™tre √©tablie.

Vous pouvez √©galement d√©finir un nombre maximum de connexions qu’un pool va cr√©er, et cela peut √™tre tr√®s int√©ressant pour r√©duire le nombre de licences de bases de donn√©es n√©cessaires.¬†Dans un tel cas, lorsque le pool atteint la limite et qu’une nouvelle requ√™te arrive, cette requ√™te ne sera pas trait√©e si une connexion vacante n’est pas rendue disponible avant un certain d√©lai pr√©alablement d√©fini.

La cl√© d’un pooling de connexions avec des connexions √† la base de donn√©es limit√©es est de d√©finir le nombre id√©al pour ce pool en fonction du nombre final d’utilisateurs et de l’architecture de l’application.¬†Plus d’informations √† ce sujet dans l’exemple ci-dessous.

Le mécanisme de regroupement de connexions FireDAC

Le mécanisme de regroupement de connexions de FireDAC est assez facile à utiliser et peut être activé en définissant une seule propriété de connexion supplémentaire à partir de votre connexion (Pooled=True).

Bien s√Ľr, la fonctionnalit√© de pooling brille dans les applications multi-threads, o√Ļ plusieurs t√Ęches courtes sont ex√©cut√©es simultan√©ment (ou presque), et chacune de ces t√Ęches n√©cessite l’√©tablissement d’une connexion.¬†Lors de l’utilisation de la fonction d’interrogation, la connexion sera d√©j√† √©tablie et en attente de la t√Ęche, ce qui se traduira par un temps de traitement beaucoup plus rapide et moins de consommation de ressources.

Pour les sc√©narios avanc√©s, outre le param√®tre ¬ę¬†Pooled¬†¬Ľ, trois autres param√®tres peuvent √™tre pris en compte¬†:

Paramètre Paramètre Exemple
POOL_CleanupTimeout Le temps (msecs) jusqu’√† ce que FireDAC supprime les connexions qui n’ont pas √©t√© utilis√©es depuis plus longtemps que le temps POOL_ExpireTimeout.¬†La valeur par d√©faut est 30 000 ms (30 s). 3600000
POOL_ExpireTimeout Le temps (msecs) après lequel la connexion inactive peut être supprimée du pool et détruite. La valeur par défaut est 90 000 ms (90 s). 600000
POOL_MaximumItems Le nombre maximum de connexions dans le pool.¬†Lorsque l’application n√©cessite plus de connexions, une exception est d√©clench√©e.¬†La valeur par d√©faut est 50. 100

FireDAC vous permet d’utiliser des connexions ¬ę persistantes ¬Ľ (stock√©es dans le fichier .ini de FireDAC), des connexions ¬ę priv√©es ¬Ľ (disponibles en m√©moire pour une application) et ¬ę temporaires ¬Ľ (non stock√©es et non nomm√©es ni g√©r√©es par le FDManager).¬†Vous pouvez en savoir plus sur la d√©finition et l’√©tablissement d’une connexion (avec ou sans pool) en suivant la documentation ci-dessous¬†:

Regroupement de connexions avec RAD Server (EMS)

Pour toute application backend s√©rieuse, y compris RAD Server, il est presque obligatoire de disposer d’un m√©canisme de pooling √† mesure que le nombre d’appels vers votre application augmente.¬†Notre exemple d√©montrera que l’utilisation d’une connexion ¬ę¬†Priv√©e¬†¬Ľ d√©finie via le FDManager.¬†Bien s√Ľr, vous pouvez √©galement r√©utiliser les connexions d√©j√† d√©finies dans le fichier .ini du FireDAC, ou m√™me charger le fichier .ini via le FDManager et le modifier en ajoutant les param√®tres de regroupement de connexions sp√©cifiques √† votre application serveur, mais pas tr√®s utiles dans une application de bureau.

Notre application de d√©monstration a √©t√© cr√©√©e √† l’aide de l’¬†assistant RAD Server¬†(¬†https://docwiki.embarcadero.com/RADStudio/en/Creating_a_RAD_Server_Package ) et en utilisant la¬†ressource EMSDataSetResource¬†r√©cemment ajout√©e¬†(¬†https://docwiki.embarcadero.com/RADStudio/en/ Using_RAD_Server_Components¬†et¬†https://blogs.embarcadero.com/using-emsdatasetresource-component-with-rad-server/¬†), mais il en va de m√™me pour les points de terminaison RAD Server d√©finis explicitement.

Il est important de noter qu’une seule instance¬†de FDManager¬†peut exister par instance d’application. Vous remarquerez donc que le¬†FDManager¬†est cr√©√© dans la section d’¬†initialisation¬†de notre ressource EMS, comme ceci¬†:

untitled-3

Ex√©cution d’un test de r√©sistance avec notre projet de d√©monstration

La vid√©o ci-dessous montre le m√©canisme de regroupement test√© √† l’aide de¬†JMeter¬†avec une charge totale de 100¬†utilisateurs¬†:

En guise de conseil supplémentaire, si votre application RAD Server est composée de plusieurs packages, vous pouvez toujours utiliser le mécanisme de mise en pool. Tout ce que vous avez à faire est de créer une ressource RAD Server qui vise uniquement à définir la configuration du regroupement de connexions par le FDManager, et assurez-vous de charger cette ressource en premier dans votre environnement de déploiement.

 


Coding Boot Camp

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

IN THE ARTICLES