Mot-clé - postgresql

Fil des billets - Fil des commentaires

PostgreSQL 9.6.0

La version 9.6.0 de PostgreSQL est publiée aujourd'hui. La fonctionnalité la plus notable de cette version majeure est la parallélisation des requêtes. De nombreuses autres fonctionnalités permettent de travailler sur des volumes de données toujours plus important. Quelques informations sur le site de Loxodata : http://www.loxodata.com/postgresql-9.6.0-publiee

Je reviendrais sur le détail des nouvelles fonctionnalités dans une série de billets à venir.

Dates à retenir

Trois dates à retenir autour de PostgreSQL :

  • 17 mars, à Nantes, un premier meetup, dans lequel j'évoquerai les nouveautés de PostgreSQL 9.5.
  • 31 mars, à Paris, où j'essayerai de remonter le fil du temps de bases de données.
  • 31 mai, à Lille, où je plongerai dans les structures du stockage de PostgreSQL.

Ces trois dates sont l'occasion pour tous de se rencontrer, au-delà du formalisme des présentations, autour de PostgreSQL, pour des sujets plus informels. N'hésitez donc pas à aller à la rencontre des orateurs présents.

Merci d'avance aux organisateurs pour ces moments précieux, et à Loxodata de me permettre d'y participer.

PS: Je ne peux m'empêcher de remarquer qu'il n'y a aucune oratrice lors de ces 3 événements, je suis presque certain qu'il n'y a pas eu une seule proposition de la part d'une oratrice. Je ne peux que le déplorer …

Suivi de l'activité dans PostgreSQL 9.2

Jumelles

La vue pg_stat_activity a évolué dans la version 9.2 de PostgreSQL, ajoutant des informations essentielles, et modifiant des éléments déjà existant. Afin de l'exploiter au mieux, j'ai ajouté une vue dans certaines instances de production, simplifiant son usage.

Lire la suite...

Citation du jour

« Write someone a query, they'll go away for a day.
Teach someone to query, they'll just go away. »

Comprenne qui pourra, mais ça me fait rire.

Agrégats avec arguments

Alors que je jouais avec PostgreSQL 9.0, j'ai cherché à obtenir le comportement de l’agrégat string_agg ( second argument pour définir le séparateur ), mais dans les versions 8.3 et 8.4

Lire la suite...

PostgreSQL HS+SR

Je viens de mettre en route notre première instance PostgreSQL 9.0, utilisant la réplication Hot Standby + Streaming Replication, en suivant la doc suivante : http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial.

L'application sera réellement en production lundi prochain. Cette technique implique que le serveur esclave pourra recevoir des requêtes en lecture, ce qui est une grosse nouveauté de PostgreSQL 9.0

NoSQL

Je suis administrateur de bases de données, c'est mon métier. L'outil principal avec lequel je travaille est PostgreSQL, qui est un système de gestion de bases de données relationnelles, un des meilleurs outils qui soit.

La prise en main pour un développeur de logiciel de ce type d'outil est loin d'être évidente. La plupart du temps, ce qui importe pour un développeur est la façon dont son code fonctionne, et dont l'architecture du programme est mise en place. Il est rarement intéressé par la façon dont sont stockées les données qu'il manipule, et si le sujet l'intéresse, il le voit au travers de son modèle de données, qui, la plupart du temps, est un modèle objet.

On voit donc régulièrement s'opposer deux façons de penser : les modèles relationnels et les modèles objets ; Une des pire chose qui puisse arriver est de coller un ORM entre les deux modèles : on obtient rarement un compromis acceptable, d'un coté comme de l'autre. Au mieux, l'ORM va permettre de prendre en main progressivement la base de données relationnelle afin de faire correspondre le code avec la base. Ici, il est important de noter que je suis DBA, de mon point de vue, c'est au code de coller au modèle relationnel.

Malheureusement, les contraintes de développement en entreprise étant ce qu'elles sont, les modèles relationnels des bases de données ne sont pas toujours conçues par des concepteurs versés dans l'art des ensembles. On retrouve donc régulièrement des modèles qui consistent simplement à sérialiser des objets et à les associer à des clés. Ce qui revient à stocker des paires clés/valeurs. Et pour cela, nul besoin d'un SGBDR.

De plus, des bases de données relationnelles comme PostgreSQL sont de très bons outils transactionnels, mais ils existent des outils qui peuvent être plus pratique lorsqu'on ne fait que des lectures de données et très peu d'écriture.

Or, on passe plus de temps à lire des tweets ou des profils Facebook qu'a y raconter sa vie ( quoique ), et ces outils manipulent des données qui sont très faiblement modélisés.

Depuis quelques années, de très gros sites Webs ( Amazon, Google, Facebook, ... ) ont donc amorcé une réflexion sur leurs besoins en base de données, et y répondent aujourd'hui par la publication de documents et d'outils qui font parti de la mouvance NoSQL. Récemment, c'est Twitter qui annoncait se passer de MySQL pour se diriger vers une base de données très différentes : Cassandra.

On voit ici que s'oppose deux modèles : des bases de données très structurés, et ayant essentiellement des besoins en écritures ( par exemple, une application comptable ), et des bases de données non-structurées, accédées essentiellement en lecture.

Je vais donc tenter de comprendre, d'expliquer et de prendre en main la seconde famille d'outils, que je ne connais pas, dans une séries d'articles sur ce blog.

Ubuntu « Karmic Koala » 9.10

La dernière version d'Ubuntu est sortie hier soir, j'ai mis mon ordinateur portable à jour aujourd'hui, sans aucun soucis. Je l'ai lancé cette mise à jour ce matin, j'ai redémarrer ce soir, tout s'est bien passé :)

Il me semble que c'est la première distribution GNU/Linux à proposer PostgreSQL 8.4 ;-)

Dernière Semaine

Cette semaine était la dernière semaine en tant que travailleur indépendant. En effet, apres quelques semaines de vacances, je vais intégrer la société Hi-Média en tant qu'archictecte-DBA PostgreSQL. Ca sera alors l'occasion de passer à autre chose, professionnellement parlant. Plus de conseil ni de formation, mais une mise en application concrète de mes connaissances sur PostgreSQL, au service des projets et des métiers de l'entreprise, en relation avec les autres acteurs de la même entreprise. En quelque sorte, je passe de l'autre coté du miroir.

Cette dernière semaine était un peu particulière, puisque j'ai pu animer une formation à La Rochelle, non loin du vieux port, alors qu'avaient lieux les Francofolies !

J'en ai bien sûr profité, et j'ai pu voir quelques concerts qui m'ont particulièrement plu : Amélie-les-crayons et Daphné, Thérèse, Moriarty et Stacey Kent, puis Loane et Pauline Croze. J'ai vraiment beaucoup aimé tous ces concerts, avec une mention spéciale à Moriarty, que je ne connaissais pas.

2 pétabytes

Yahoo vient d'annoncer qu'ils utilisent PostgreSQL pour stocker 2 pétaoctets de données¹. Ce qui en ferait la plus grosse base de données au monde.

Certes, ils utilisent une version modifiée de PostgreSQL, ils ont retirés le support des transactions, et utilisent un stockage en mode colonne, à la place du traditionnel stockage en mode ligne. De plus, l'éxécuteur de requètes permet d'utiliser plusieurs coeurs de processeur. Mais tout de même, c'est la license et la qualité du code de PostgreSQL qui font qu'il a été choisi.

Il est intérressant d'apprendre que Yahoo va supporter et aider le projet.

Ceci n'aurait pas été possible avec une base de données propriétaire, et montre bien la superiorité du logiciel libre, au code ouvert, sur le logiciel propriétaire.

¹ : Un pétaoctet, c'est mille téraoctets, un million de gigaoctets, un milliard de mégaoctets. Un mégaoctet, c'est un million de caractères, c'est 1 minute de musique au format Ogg-Vorbis, c'est une photo numérique de 4 mégapixels.

PostgreSQL 8.3

PostgreSQL 8.3 est donc sorti lundi dernier, et d'après les premiers tests que j'ai pu faire, cette nouvelle version est vraiment intéressante.

Quelques liens sur le sujet :

Bilan de Solutions Linux 2008

J'étais donc présent sur le stand de l'association PostgreSQLFR pendant les 3 jours du salon Solutions Linux 2008.

Simon Riggs nous à fait l'honneur de sa présence sur notre stand mardi, et nous a montré comment attirer le chaland (entre autres, bien sûr). Nous n'avons pas pu essayer sa méthode mercredi, puisque le stand n'a pas désempli.

Beaucoup de monde est donc venu à notre rencontre, avec des questions et des besoins précis sur PostgreSQL : le constat est clair, PostgreSQL est un outil utilisé par des professionnels. C'est d'ailleurs assez cohérent avec le fait que l'essentiel des membres actifs de l'association utilise PostgreSQL comme outil de travail. Nous avons aussi eu d'autres surprises, dont on reparlera ...

mercredi soir s'est tenu l'assemblée générale de l'association, et outre la bonne ambiance et la bonne bouffe, nous avons décidé de nous lancer dans des projets ambitieux, pour l'année à venir.

Que des bonnes nouvelles, donc, et des mois à venir bien chargés.

Solutions Linux 2008

Je serais présent du 29 au 31 janvier sur le stand de l'association PostgreSQL FR, dans le cadre du salon Solutions Linux 2008, qui à lieu au CNIT à La Défense, à coté de Paris.

Je serais aussi sur le stand de l'éditeur de mon livre, le mercredi 30 de 15h à 16h.

N'hésitez pas à venir parler d'informatique, de Logiciels Libres, et en particulier de PostgreSQL sur le salon.

Google Books

Google indexe un certain nombre de livres publiés habituellement sous la forme de livre papier. C'est le cas pour mon livre sur PostgreSQL. On le trouve en premier lorsqu'on recherche postgresql dans le moteur. L'édition indexée n'est pas celle qui est sortie en octobre, mais la précédente, couvrant la version 8.1 de PostgreSQL.

Les résultats sont partiels, c'est-à-dire que les pages ne sont pas toutes disponibles en ligne, il est donc encore nécessaire d'acheter la version papier.

Script pour Pgfouine

Pgfouine est un outil permettant de comprendre le comportement de PostgreSQL.

On distingue deux tâches :

  • Analyse des traces d'activités
  • Analyse du rapport du nettoyage des tables

Ces taches peuvent être automatisées pour générer des fichiers HTML, par exemple tous les jours avec un planificateur de tache comme crontab.

Le script suivant extrait la liste des bases de données d'un serveur, et lance le nettoyage et les analyses pour chacune de ces bases de données, et termine par une analyse globale des traces d'activités.

pgfouine.sh

#!/bin/sh 

PGUSER=postgres

# Emplacement des fichiers générés
PGFOUINESPOOL=/var/www/pgfouine

# Bases de données à ignorer 
EXCLUDEDBS="postgres template0 template1"

# Bases de données du serveur 
DBS=`psql -A -l -t -U $PGUSER | awk -F"|" '{ print $1 }'`

# Chemin du fichier de traces d'activités
PGLOG=/var/log/postgresql.log 

# Retire les bases de données "systèmes"
for ex in $EXCLUDEDBS 
do
  DBS=`echo $DBS | sed s/$ex//` 
done

# Boucle sur les bases de données
for db in $DBS
do
 # Crée le répertoire de spool
 spool=$PGFOUINESPOOL/$db/ 
 if [ ! -d $spool ]
 then
   mkdir -p $spool 
 fi

 # Nettoyage complet et analyse de la base de données  
 vacuumdb -U postgres -z -f -v $db > $spool/vacuum.log 2>&1

 # Analyse des message de nettoyage et d'analyse 
 pgfouine_vacuum -file $spool/vacuum.log > $spool/vacuum.html

 # Analysee des traces d'activités de la base
 pgfouine -file $PGLOG -database $db -format html-with-graphs -report $PGFOUINESPOOL/$db/pgfouine_report.html=overall,bytype,hourly,slowest,n-mosttime,n-mostfrequent,n-slowestaverage,n-mostfrequenterrors 

done

# Analyse du fichier de logs 
#pgfouine -file $PGLOG -format html > $PGFOUINESPOOL/pgfouine.html 

pgfouine -file $PGLOG -format html-with-graphs -report $PGFOUINESPOOL/pgfouine_report.html=overall,bytype,hourly,slowest,n-mosttime,n-mostfrequent,n-slowestaverage,n-mostfrequenterrors 

PostgreSQL vs. MySQL

On me demande souvent la liste des différences existantes entre PostgreSQL et MySQL. Je vais donc tenter de faire une liste des fonctionnalités existantes dans PostgreSQL, et pas dans MySQL :

  • L'opérateur ||, pour la concaténation de chaines de caractères, qui fait parti du standard SQL.
  • Un type de données booléen.
  • Les contraintes de vérifications sur les colonnes, et sur une table, avec le mot-clé CHECK.
  • Les clés étrangères ne sont présentes qu'avec le moteur de stockage InnoDb.
  • Le fait de pouvoir différer les vérifications des clés étrangères.
  • Les déclencheurs sur les ordres (For each statement), et non pas seulement sur les tuples (For each row).
  • Les ordres DDL compatibles ACID.
  • Les domaines : types de données avec des contraintes.
  • Les aggrégats définis par l'utilisateur.
  • Le choix du langage de procédures stockées : Java, Php, Python, Perl, C, Ruby, Sh, ...
  • Les règles de réecritures des requêtes.
  • Un auto-incrément mutualisé entre plusieurs tables.
  • Des opérateurs et transtypages définis par l'utilisateur.
  • La notion d'espace de noms (schémas). Cette notion est confondue avec celle de base de données dans MySQL, alors qu'elle est bien distincte dans le cas de PostgreSQL.
  • Les espaces de données (tablespace).
  • L'héritage de tables.
  • Les types d'index définis pas l'utilisateur.

Cette liste est dans le désordre, et certainement pas finie...

PostgreSQL, seconde édition

Une seconde édition de mon livre sur PostgreSQL est paru, intégrant les nouveautés de la version 8.2 de PostgreSQL.

Il est toujours disponible aux éditions ENI. Tous les renseignements sur trouvent sur la page qui lui est dédiée.

A noter que la version 8.3 de PostgreSQL est en préparation. Actuellement, la version 8.3 est dans la phase « béta », et est donc disponible pour des tests.

C'est la Rentrée

Nantaise, la semaine prochaine, le 8 septembre, à l'Estuaire. Petit changement dans le programme, Sylvain Girault n'étant plus disponible, c'est Janick Peniguel qui accepte gentillement de le remplacer.

Comme bonne résolution pour la rentrée, j'ai décidé de me bouger, je me suis acheter un vélo, en remplacement du vieux Peugeot : un Trek 7.3 FX

Trek 7.3 FX

C'est une bécane excellente, ça roule tout seul, c'est un vrai plaisir d'aller prendre l'air, et ça fait du bien !

Le boulot est reparti, je viens de remettre les dernières relectures de la seconde édition de mon livre sur PostgreSQL, toujours chez ENI-Editions.

J'ai bien profité de mon été, météo mise à part, avec une bonne semaine dans les alpes, a faire du roller près du lac d'Annecy, ainsi que du catamaran, et autres activités sportives. Une semaine pluvieuse dans le Morbihan, mais j'ai quand même fait quelques siestes dans mon hamac

Sieste dans le hamac

, et un saut dans le Nord de l'Allemagne, la Frise orientale, ou le temps était magnifique.

Hier soir, par anticipation, les 25 ans d'un futur instit' bilingue :

25 ans

En vrac

  • J'ai vraiment passé un super week-end avec ma petite soeur à Lyon. Je ne connaissais pas cette ville, et elle m'a bien plu.
  • J'ai été content de revoir Nicolas, ça faisait quelques années, et on s'est retrouvé vraiment par hasard, ce fut une bonne surprise.
  • Aujourd'hui, je dois absolument aller chez le coiffeur, mais il pleut.
  • PostgreSQL 8.2.0 est sorti mardi dernier, et c'est vraiment une bonne version.
  • Mon livre sur PostgreSQL 8.1 sort la semaine prochaine, et il faut l'acheter.
  • et j'ai vraiment besoin de vacances ...

Wooooh

Ca approche : 2746034689

- page 1 de 2