S'abonner au Flux RSS

Mot-clé - postgresql

Fil des billets - Fil des commentaires

jeudi, octobre 29 2009

pgpool-II 2.2.5 dans Debian

La dernière version de pgpool-II, la 2.2.5 vient d'être intégrée dans debian experimental, vous pouvez suivre son évolution au travers de la page du package tracking system dédiée.

mardi, octobre 20 2009

Backport lenny de prefix pour PostgreSQL

Le backport du jour, la librairie prefix de Dimitri Fontaine permet un accés plus rapide aux données utilisant la notion de préfixe, typiquement dans la téléphonie ou le préfixe du numéro composé est primordial pour la tarification.

Accès direct au binaire pour i386.

lundi, octobre 12 2009

Cage ou package ?

Dans ma lancée sur les backports, j'ai rejoins le projet pkg-postgresql de packaging des utilitaires dédiés à PostgreSQL. Je vais pour commencer m'attaquer au packaging de pgpool-II qui a quelques versions stables de retard. À ce jour la dernière version dans sid est numéroté 1.3.2 quand la dernière version stable publiée est la 2.2.5.

samedi, octobre 3 2009

Backport lenny de pgbouncer

Nouveau backport d'un outil lié à PostgreSQL, pgbouncer est un gestionnaire de pool de connexion fortement utile sur les systèmes à nombreuses connexions répétitives.

Seule dépendance de pgbouncer, la libevent en version 1.4 qui n'est pas pas non plus packagée dans Lenny, j'en ai donc réalisé également un backport disponible toujours au même endroit. Pour ceux qui ne connaissent pas pgbouncer et souhaiteraient appronfondir le sujet je leur conseille la lecture du hors-série 44 de GNU/Linux magazine dédiée à PostgreSQL.

Première étape, installons la libevent

wget http://rodolphe.quiedeville.org/backports/lenny/i386/libevent-1.4-2_1.4.12-stable-1_i386.deb
dpkg -i libevent-1.4-2_1.4.12-stable-1_i386.deb

Outre libevent pgbouncer à d'autres dépendances qu'il vaut mieux s'assurer d'avoir sur sa machine avant d'installer le paquet.

aptitude install postgresql-common lsb-base libgcc1 libc6

Ceci étant fait il ne nous reste plus qu'à installer le paquet pgbouncer

wget http://rodolphe.quiedeville.org/backports/lenny/i386/pgbouncer_1.3.1-1_i386.deb
dpkg -i pgbouncer_1.3.1-1_i386.deb

Voilà pgbouncer d'installé sur votre distribution stable favorite, il est à noter que par défaut pgbouncer n'est pas lancé, il faut au préalable modifier le fichier /etc/default/pgbouncer comme indiqué par le warning lors de l'installation du paquet.

vendredi, septembre 25 2009

Backport du paquet postgresl-8.3-plr

Partant d'un besoin de calculs statistiques sur des données stockées dans postgresql j'ai été ammené à intégrer le langage R dans notre SI, travaillant avec PostgreSQL sous Debian j'ai cherché le paquet idoine pour me faciliter l'intégration, celui-ci n'existant que dans Squeeze j'ai backporté le paquet postgresql-8.3-plr pour Lenny que je mets à disposition ici. Le paquet original est basé sur le travail Joseph E Conway à l'origine de PL/R

Je profite de ce billet pour décrire l'intégration complète de PL/R dans PostgreSQL.

On y va, première étape récupérer le paquet pour Lenny

wget http://rodolphe.quiedeville.org/backports/lenny/i386/postgresql-8.3-plr_8.3.0.8-1_i386.deb

On procède à l'installation en ayant au préalable installé les dépendances du paquet qui sont r-base-core, postgresql-8.3, et libc6 (>= 2.7-1), toutes satisfaites dans Lenny à ce jour. J'ose imaginer que vous avez déjà postgresql-8.3 et la libc6 d'installée ;-)

heke:/usr/src# dpkg -i postgresql-8.3-plr_8.3.0.8-1_i386.deb
Selecting previously deselected package postgresql-8.3-plr.                             
(Reading database ... 42279 files and directories currently installed.)                 
Unpacking postgresql-8.3-plr (from postgresql-8.3-plr_8.3.0.8-1_i386.deb) ...           
Setting up postgresql-8.3-plr (1:8.3.0.8-1) ...

L'installation du paquet étant fait nous allons maintenant intégrer ce nouveau langage dans notre base et créer une première fonction d'aggrégat pour calculer la médiane. Pour cela nous allons avoir besoin de deux nouvelles fonctions que sont plr_array_accum et median, nous travaillerons en double precision. Vous pouvez télécharger le fichier de commande SQL plr.sql qui crée les fonctions pour tous les types numériques courants.

CREATE FUNCTION plr_array_accum (_float8, float8)
       RETURNS float8[]
       AS '$libdir/plr','plr_array_accum'
       LANGUAGE 'C';

CREATE FUNCTION r_median(_float8)
       RETURNS float
       AS 'median(arg1)'
       LANGUAGE 'plr';

CREATE AGGREGATE median (
       sfunc = plr_array_accum,
       basetype = float8,
       stype = _float8,
       finalfunc = r_median
);

Ceci étant fait nous allons maintenant créer une table avec un jeu de test.

CREATE TABLE foo (
    bar double precision
);   

et le jeu de test

INSERT INTO foo (bar) VALUES (5);
INSERT INTO foo (bar) VALUES (48);
INSERT INTO foo (bar) VALUES (110);
INSERT INTO foo (bar) VALUES (36);

Nous allons maintenant pouvoir calculer la médiane de bar aussi simplement que son maximum ou la somme en utilisant la nouvelle fonction d'agrégat median

test=# SELECT median(bar) from foo ;
 median
--------
     42
(1 row)

Un tel résultat ne peut-être qu'exact, non ?

page 2 de 2 -