[WEBINAR💻] NIS 2 en action : Stratégies et solutions pour une cyber-résilience renforcée ! Le replay est disponible dès maintenant🎙!

✖︎
top

PostgreSQL gagne en popularité

09/04/2014
Données

La réduction des budgets IT mais également le nombre de fonctionnalités déclinées au fur et à mesure des versions font de PostgreSQL un atout de force pour les projets IT. Découvrez comment, depuis la version 9.1, PostgreSQL est de mieux en mieux équipé pour répondre aux  problématiques de garanties de données et de continuité de services.

PostgreSQL  repose sur des fondamentaux solides : la communauté prône la robustesse et le respect des standards SQL. Sans retracer l’historique de PostgreSQL, la version 8.0 a poussé les entreprises à s’y intéresser de près. La dernière version est la 9.3, sortie en septembre dernier. Elle n’a pas à pâlir face à ses principaux concurrents.

Principales caractéristiques

PostgreSQL permet de répondre à de nombreuses problématiques métiers. Vous trouverez ci-dessous une liste non exhaustive des principales caractéristiques de PostgreSQL.

  • Administration

PostgreSQL dispose d'outils d'administration graphiques et également une pléthore d’outils en ligne de commande

  • Sécurité
    • Filtrage IP : pg_hba.conf
    • Authentification interne : md5
    • Authentification externe (LDAP, Kerberos, …)
    • Support natif de SSL pour le chiffrement des connexions
    • Politique de sécurité système : Module sepgsql
    • Vérification de la complexité du password
  • Versionning et Support

Chaque version majeure est supportée 5 ans par la communauté : mise en ligne de patchs

  • Sauvegarde
    • Export classique
    • Sauvegarde à froid
    • Sauvegarde à chaud
  • Développement

PostgreSQL est une plateforme de développement avec de nombreuses librairies de développement intégrées. Voici quelques exemples :

 pl/sql pl/perl pl/pythonpl/sh  pl/java  pl/php pl/ruby
  • Haute disponibilité
    • Online Index Creation
    • Réorganisation ONLINE des tables : module pg_repack
    • Partitionnement
    • LogShipping
    • Streaming Replication et HotStandby: réplication asynchrone ou synchrone
    • Replication externe: londiste, slony

Le schéma ci-dessous vous permet de découvrir une architecture évoluée, possible avec PostgreSQL :

Postgres 2 

Le serveur P2 peut être envisagé pour déporter toutes les activités de Reporting/OLAP.

Depuis la version 9.2, les StandBy sont capables de pousser les informations de réplication à d'autres serveurs esclaves. Il s’agit de la réplication en cascade. Le serveur maître P1 se voit ainsi décharger de cette tâche.

La 9.3 facilite les taches d’administration en cas de bascule du serveur maître vers un esclave. Dans le schéma ci-dessus en cas de crash de P1, P2 deviendra le serveur maître. P3 se raccrochera automatiquement à P2.

  • Extensibilité

PostgreSQL est extensible aisément par l’intermédiaire de modules créés et contrôlés par la communauté.

Il en existe une pléthore.

Exemples :

La contribution pgbench permet d’opérer des tirs performances de type TPC-B

pg_buffercache est une contribution utile pour examiner le cache Postgres en temps réel

 Vous pouvez trouver une liste complète sur http://docs.postgresqlfr.org/9.3/contrib.html 

Les nouveautés POSTGRESQL 9.3

La version 9.3 apporte son lot de nouveautés majeures. En voici quelques-unes :

  • Simplification de la configuration mémoire avec le passage de SysV à Posix/mmap

Il n’est plus nécessaire d’ajuster les paramètres kernel shhmax et shmall

  •  Exports parallélisés

Une option –j est apparue dans pg_dump permettant de préciser le nombre de jobs

pg_dump -U digadm –j5 -Fd -f /export/digora_db_9.3.dmp digora_db_9.3

Attention cette option fonctionne uniquement en format répertoire (-Fd).

  • Vues matérialisées

La création des vues matérialisées est maintenant possible.

dig_db_9.3=# CREATE TABLE T_DIG AS SELECT generate_series(1, 100) AS id;
SELECT 100
dig_db_9.3=# SELECT * FROM T_DIG;
id
----
1
2
100

 
dig_db_9.3=# CREATE MATERIALIZED VIEW M_DIG AS SELECT id FROM T_DIG;
SELECT 100

Si une ligne dans la table T_DIG est supprimée, la modification ne sera pas visible dans la vue matérialisée. Elle doit être rafraîchie.

dig_db_9.3=# REFRESH MATERIALIZED VIEW M_DIG;
  • Amélioration de  foreign data wrapper
    • La version 9.1 a introduit les foreign data wrapper permettant d’accéder à des bases externes et de pouvoir les lire.
    • La 9.3 améliore le système en permettant le support de l’écriture.
    • Un billet sera rédigé à ce sujet.
  • Checksums

La fonctionnalité est apparue afin de relever les corruptions de données. Elle est activable par le biais de la commande initdb permettant de créer une  instance.

# su - postgres
$ initdb -D /pgdata/data_checksum/ --data-checksums
$ pg_ctl –D /pgdata/data_checksum start
$ psql –D /pgdata/data_checksum

 

 

postgres# create table digora (agence text);
postgres# insert into digora values('paris');
postgres# checkpoint;

La prochaine étape va être de modifier le fichier de données correspondant à la table créée.

Vous pouvez vous servir de vi comme éditeur hexadécimal ( :%!xxd)

postgres# select pg_relation_filepath('digora'); //récupérer le fichier de données associé à la table
pg_relation_filepath
----------------------
 base/12080/16387

 

 

$vi $PGDATA/base/12080/16387

Après sauvegarde des modifications, tentez de visualiser les données.

postgres# select * from digora ;
WARNING:  page verification failed, calculated checksum 21964 but expected 12336
WARNING:  page verification failed, calculated checksum 21964 but expected 12336
ERROR:  invalid page in block 1 of relation base/12080/16387

La corruption du  fichier est relevée. Le checksum apporte donc une nouvelle protection au niveau page de données.

En 9.3, il n’existe pas de paramètre permettant de vérifier si le checksum est actif.

En revanche, vous pouvez vérifier comme ceci :

$ pg_controldata /pgdata/data_checksum/ |grep checksum
Data page checksum version:           1

Avènement du Big Data

A l’heure du Big Data, l’exploitation de données volumineuses n’a jamais autant été au cœur des préoccupations. La version 9. 3 permet à PostgreSQL de franchir le cap. Il peut s’intégrer dans des environnements de production hétérogènes grâce notamment aux Foreign Data Wrappers. L’écriture sur d’autres SGBD est désormais supportée. La gestion des données structurées et non structurées est essentielle. PostgreSQL dispose d’une extension hstore permettant de stocker des données non structurées sous forme de clé-valeur. Une des forces de hstore est la possibilité d’indexer toutes les clés et valeurs avec l’aide des index gin et gist. Couplé avec JSON et le langage de procédure javascript de Google plv8, PostgreSQL peut être utilisé en tant que serveur NoSQL comme le populaire MongoDB. PostgreSQL 9.3 serait un candidat de choix dans le cadre d'un projet Big Data. ----------------------------------------------------------------------------------------------------------------------------------- Vous souhaitez en savoir plus sur PostgreSQL et sa mise en oeuvre ? Contactez-nous ici pour de plus amples informations. Index thématique du Blog Digora