PostgreSQL aurait commenc� � travailler sur le support de la compression Zstandard,
pour compl�ter toutes les possibilit�s de LZ4 que l'on trouve actuellement dans PostgreSQL 14
Alors que PostgreSQL a support� la compression avec son stockage TOAST et qu'au cours de l'ann�e derni�re, il a d�velopp� le support de la compression LZ4, ainsi que la compression du WAL, la compression des sauvegardes et d'autres utilisations, les d�veloppeurs de PostgreSQL se pr�parent � �tendre davantage leurs capacit�s de compression avec le support de Zstandard (ZSTD).
Le codage ZSTD prend en charge les types de donn�es SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, DOUBLE PRECISION, BOOLEAN, CHAR, VARCHAR, DATE, TIMESTAMP et TIMESTAMPTZ et offre un taux de compression �lev� avec de tr�s bonnes performances sur divers ensembles de donn�es. Le ZSTD fonctionne particuli�rement bien avec les colonnes CHAR et VARCHAR qui stockent un large �ventail de cha�nes longues et courtes, comme les descriptions de produits, les commentaires des utilisateurs, les journaux et les cha�nes JSON.
Alors que certains algorithmes, tels que l'encodage Delta ou l'encodage Mostly, peuvent potentiellement utiliser plus d'espace de stockage que l'absence de compression, ZSTD est tr�s peu susceptible d'augmenter l'utilisation du disque.
Cette semaine, une discussion a �t� lanc�e entre les d�veloppeurs de PostgreSQL pour ajouter Zstd comme algorithme de compression support� par ce serveur de base de donn�es open source largement utilis�. Cette discussion s'est av�r�e favorable et d�j� avec PostgreSQL Git il y a maintenant un support pour construire PostgreSQL avec Zstd inclus.
Bien que cela ajoute l'option --with-zstd build-time et permette de construire avec la biblioth�que de compression Zstd, pour le moment, cela ne permet aucune utilisation r�elle de Zstd dans PostgreSQL. Des commits de suivi sont attendus prochainement pour commencer � permettre � PostgreSQL de tirer parti des capacit�s de compression rapide de Zstandard.
� ZStandard est un algorithme de compression d�velopp� par Facebook qui est compl�tement et totalement g�nial. Une fois, j'ai �valu� plusieurs algorithmes de compression pour compresser environ 10 Go de donn�es. La compression la plus �lev�e que j'ai obtenue �tait de l'ordre de 750 Mo avec LZMA, mais la d�compression prenait environ 1,25 minute et la compression prenait environ une demi-heure. Avec ZStd (multiple threads) au niveau 9 de compression, j'ai atteint 1GB avec 3 minutes de compression et 24 secondes de d�compression �, d�clare un Internaute. � LZ4 �tait un peu plus rapide au moins pour la compression, mais les fichiers r�sultants faisaient presque 2GB �, ajoute-t-il.
C'est formidable de voir toute l'adoption autour de Zstd gr�ce � son bon taux de compression tout en offrant une d�compression (et une compression) tr�s rapide pour ce projet sous double licence (BSD et GPLv2) et centr� sur Facebook. Au moment o� PostgreSQL 15 sortira, il semble que le support de Zstd sera disponible pour compl�ter toutes les possibilit�s de LZ4 que l'on trouve actuellement dans PostgreSQL 14.
Compression LZ4 TOAST dans PostgreSQL 14
PostgreSQL 14 fournit l'option de compression LZ4 pour les colonnes. Elle permet une compression plus rapide par rapport � la m�thode PGLZ existante dans TOAST.
Rappelons que, dans PostgreSQL, une page est l'unit� de base pour stocker des donn�es, et la taille de chaque page est de 8 kB par d�faut. Fondamentalement, les donn�es d'une ligne ne sont pas autoris�es � �tre stock�es sur plusieurs pages. Cependant, certains types de donn�es ont une longueur variable et peuvent d�passer la taille d'une page. Pour surmonter cette limitation, les valeurs des champs de grande taille sont comprim�es et/ou r�parties sur plusieurs lignes physiques. Cette technique est connue sous le nom de TOAST (The Oversized-Attribute Storage Technique).
Par d�faut, TOAST n'est d�clench� que si une table comporte des colonnes de longueur variable et que la taille des donn�es de la ligne d�passe TOAST_TUPLE_THRESHOLD (normalement 2 ko). Dans un premier temps, les donn�es sont compress�es. Ensuite, si les donn�es sont encore trop volumineuses, elles seront stock�es hors ligne.
Avant PostgreSQL 14, TOAST ne supportait qu'un seul algorithme de compression : le PGLZ, un algorithme int�gr� � PostgreSQL. Mais d'autres algorithmes de compression peuvent �tre plus rapides ou avoir des taux de compression plus �lev�s que PGLZ.
Mais � partir de PostgreSQL 14, le SGBD propose une autre option : la compression LZ4 est un algorithme de compression sans perte connu pour sa rapidit�. Afin d'utiliser la nouvelle fonctionnalit� de compression LZ4 dans PostgreSQL14, vous devrez installer les biblioth�ques li�es � LZ4 dans le syst�me d'exploitation, et sp�cifier l'option --with-lz4 lors de la compilation et du packaging de PostgreSQL.
Les taux de compression de PGLZ et LZ4 sont li�s aux donn�es dupliqu�es, plus il y a d'�l�ments dupliqu�s, plus le taux de compression est �lev�. Cependant, la compression ne sera pas effectu�e dans les cas o� PostgreSQL �value que le ratio r�sultant ne serait pas bon, m�me si la taille des donn�es atteint le seuil. En effet, la compression ne permettrait pas d'�conomiser efficacement de l'espace disque, et entra�nerait au contraire un temps et des ressources suppl�mentaires pour la d�compression.
Selon le code source actuel de PostgreSQL14, PGLZ exige un taux de compression d'au moins 25 %, tandis que LZ4 exige seulement que les donn�es compress�es ne soient pas plus grandes que les donn�es non compress�es.
Source : PostgreSQL
Et vous ?
Selon vous, pourquoi PostgreSQL doit-il prendre en charge la compression lui-m�me ?
N'est-il pas plus logique de fournir la compression � partir du syst�me de fichiers ?
Y a-t-il un avantage particulier � ce que PostgreSQL r�implante sa propre compression ?
Voir aussi :
PostgreSQL 10 est disponible en t�l�chargement : quelles sont les nouveaut�s de la derni�re version du SGBD libre ?
Disponibilit� g�n�rale de PostgreSQL 11 : un aper�u des principales fonctionnalit�s du SGBDRO libre
OpenZFS 2.0 est disponible avec la prise en charge de Linux et FreeBSD et apporte de nouvelles fonctionnalit�s comme la compression ZStandard
Ubuntu 18.10 est disponible, embarque GNOME 3.30 pour une nouvelle apparence et s'installe plus vite gr�ce � l'algorithme de compression Zstandard
Partager