Installation de PostgreSQL et Madlib sur OSX

Installation de PostgreSQL et Madlib sur OSX

By WORMS David

7 juil. 2012

Nous couvrons l’installation et l’utilisation de PostgreSQL et de MADlib sur OSX et Ubuntu. Les instructions pour les autres environnements doivent être similaires. PostgreSQL est une base de données Open Source avec des fonctionnalités d’entreprise qui manquent souvent dans MySQL. MADlib est une bibliothèque Open Source qui améliore les bases de données PostgreSQL et Greenplum, avec des fonctionnalités d’analyse passant l’échelle.

PostgreSQL : installation

Premièrement, nous devons avoir une installation de PostgreSQL. Sous OSX, nous utiliserons Homebrew au lieu de compiler nous-mêmes le code source. Sur Ubuntu, apt-get s’en chargera. Remarque : Homebrew doit être présent sur votre machine. Au moment de la rédaction de cet article, la version proposée actuelle est 9.0.1. Les commandes suivantes installeront et configureront une nouvelle installation de PostgreSQL. En outre, PostgreSQL sera enregistré en tant que service de démarrage.

OSX :

brew update
brew install postgres
initdb /usr/local/var/postgres
mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/postgresql/9.1.3/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Si vous rencontrez des problèmes sous OSX Lion avec le message suivant :

FATAL:  could not create shared memory segment: Cannot allocate memory
DETAIL:  Failed system call was shmget(key=1, size=1646592, 03600).

Vous devriez éditer “/etc/sysctl.conf” ou le créer s’il n’existe pas et écrire :

kern.sysv.shmall=65536
kern.sysv.shmmax=16777216

Unbuntu :

apt-get update
apt-get install postgres

Assurez-vous que votre commande postgres correspond à votre nouvelle installation PostgreSQL et non à celle par défaut. La commande wich postgres doit afficher “/usr/local/bin/postgres”. Si vous voyez plutôt “/usr/bin/postgres”, vous devez modifier votre $PATH et placer “/usr/local/bin” avant “/usr/bin”. Pour ce faire, vous pouvez éditer votre fichier ”~/.bashrc”, ”~/.profile” ou “/etc/chemins”. Voici un exemple :

echo "export PATH=/usr/local/bin:\$PATH" >> ~/.bashr
. ~/.profile
which postgres

Votre serveur PostgreSQL devrait déjà être opérationnel. À l’avenir, si vous souhaitez démarrer / arrêter le serveur :

# Start
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
# Stop
pg_ctl -D /usr/local/var/postgres stop -s -m fast

PostgreSQL : en cours d’exécution

Notez que la formule Homebrew configure le système avec une authentification “de confiance” locale. L’authentification est effectuée auprès de l’utilisateur Unix actuellement connecté. Homebrew ne crée pas d’utilisateur «postgres» et le serveur est lancé avec le même compte d’utilisateur sous lequel vous avez exécuté Homebrew.

Vous pouvez tester la connexion à votre nouveau serveur PostgreSQL en émettant avec psql. Par exemple, la commande psql -d postgres -c “\l”permet d'ouvrir une connexion à la base de données "postgres" (à l'aide de votre nom d'utilisateur actuel) et d'exécuter la commande\l` pour répertorier les bases de données.

Maintenant, activons pgadmin en installant les fonctions d’instrumentation absentes par défaut.

psql -d postgres -c "CREATE EXTENSION "adminpack";"
# List installed extensions
psql -d postgres -c "select * from pg_extension"
# List available extensions
psql -d postgres -c "select * from pg_available_extensions"

C’est à peu pret tout pour PostgreSQL, passons maintenant à l’installation de la bibliothèque MADlib.

MADlib : installation

Nous commençons par télécharger le package MADlib et exécuter le programme d’installation.

Une fois installé, MADlib doit être enregistré dans une base de données PostgreSQL. Nous commençons par créer une base de données “mad” puis nous l’enregistrons :

psql -d postgres -c "CREATE DATABASE mad"
/usr/local/madlib/bin/madpack -p postgres -c $USER@$HOST/mad install

MADlib : test

MADlib est livré avec un ensemble complet de tests que vous pouvez également utiliser comme référence d’utilisation ou tout simplement comme source d’inspiration. Les scripts sont présents dans “/usr/local/madlib/ports/postgres/modules//test/.sql”. Pour exécuter la suite de tests :

/usr/local/madlib/bin/madpack -p postgres -c $USER@$HOST/mad install-check

MADlib : rapide exemple de quantile

Nous allons tester la fonction quantile. Pour une définition simple, un quantile est la division d’un total en sous-groupes égaux.

À titre d’exemple, le quantile “.5” de la série “.25, .45, .5, .5, .55, .75” est “.5”. Si nous soustrayons “.1” à chaque élément et utilisons le même quantile, le quantile “.5” de la série “.15, .35, .4, .4, .4, .45, .65” est “.4” . Nous pouvons interpréter le résultat en disant que la série est divisée en deux en “.4”. Enfin, en utilisant la dernière série, le quantile “.75” est “.425”, ce qui signifie qu’un quart des valeurs sont après “.415”.

Nous utiliserons le test du quantile MADlib comme source d’inspiration. Il se trouve dans “/usr/local/madlib/ports/postgres/modules/quantile/test/quantile.sql_in”.

Notre version simplifiée va :

  1. Créer une nouvelle table
  2. Insérer des valeurs aléatoires
  3. Calculez le quantile “.5”
  4. Laisser tomber la table
CREATE TABLE TestQuantile ( val FLOAT );
INSERT INTO TestQuantile SELECT random()*100 FROM generate_series(1,1000);
SELECT MADLIB.quantile('TestQuantile', 'val', 0.5);
DROP TABLE TestQuantile;

Puisque notre fonction random() * 100 générera une représentation uniforme entre 0 et 100, nous nous attendons à un résultat relativement proche de 50.

Canada - Morocco - France

International locations

10 rue de la Kasbah
2393 Rabbat
Canada

Nous sommes une équipe passionnées par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Sciencem le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.