Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
How-To'sInterBaseNouvellesRAD Studio

Utilisation du regroupement de connexions FireDAC avec RAD Server

what-is-connection-pooling

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.

 


What's Next
Enter the Enterprise Software Development Article Challenge
Enterprise Software Development Article Challenge

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