Archives par mot-clé : requêtes asynchrones

Plug-in PHP requêtes asynchrones PostgreSQL pour Jelix/jDb

Je mets à disposition au téléchargement ce plug-in jDb (Jelix) écrit en PHP qui est un driver PostgreSQL permettant les requêtes asynchrones avec la base de données (http://xv4y NULL.radioclub NULL.asia/ftp/JELIX_JDB_PGSQL_ASY NULL.zip).

Logo QScope.org (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2013/08/logo_qscope_b NULL.png)Dans le cadre de mon projet de statistiques en ligne QScope.org (http://www NULL.qscope NULL.org/), je me retrouve à faire des calculs assez intensifs sur la base de données PostgreSQL, en particulier pour calculer le temps d’opération et les nombres réels de QSO/heure en pointe. Sur les gros logs d’expéditions DX ou pour les logs étalés sur plusieurs mois, les requêtes sur la base de données peuvent se chiffrer en milliards de lignes… et jusque 10 minutes de temps d’exécution.

Logo Postgresql (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2013/09/Postgresqlelephant NULL.png)Si les performances de PostgreSQL sont très bonnes et qu’il gère admirablement bien les connexions multiples, il ne permet pas l’exécution parallèle des requêtes. Cette fonctionnalité est encore une exclusivité des bases de données commerciales comme Oracle, Sybase ou MS SQL Server. Cela veut dire qu’une grosse requête ne pourra être répartie sur plusieurs micro-processeurs (ou coeurs) d’un serveur. La solution pour gagner du temps c’est alors de lancer plusieurs requêtes en parallèle pour réduire le temps d’exécution et profiter au mieux des ressource du serveur. PHP étant nativement un langage interprété mono-thread, ceci n’est pas intuitif à mettre en place. Il dispose toutefois dans son pilote PostgreSQL de commandes permettant de lancer les requêtes de manière asynchrone et de récupérer les résultats ensuite. En ouvrant plusieurs connexions simultanées cela ouvre la voie à une forme de traitement parallèle.

Logo Jelix (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2013/09/logo_jelix NULL.png)Si vous utilisez le framework PHP Jelix (http://jelix NULL.org/), ce plugin est simple d’utilisation puisqu’il reprend le pilote jDb PostgreSQL d’origine en lui ajoutant 3 fonctions pour gérer les requêtes asynchrones. Dans l’archive ZIP (http://xv4y NULL.radioclub NULL.asia/ftp/JELIX_JDB_PGSQL_ASY NULL.zip), se trouve un Readme en français et en anglais qui vous donne l’API et les exemples pour utiliser ce plugin.