En tant que pur produit académique des années 2010, mon langage de script de prédilection a
toujours été le Bash (Bourne Again Shell). Non sans ignorer qu’il ait pu en exister d’autres, je
ne me suis jamais vraiment tourné vers d’autres shells pour automatiser les tâches du quotidien
dans mon métier de DBA.
Et pour cause, j’ai administré des centaines de serveurs de distributions très variées et il
n’était pas bien vu d’installer des dépendances systèmes lourdes pour enrichir des scripts Python
ou Perl. Nous apprenions donc à écrire des scripts portables et universels, compatibles partout
où nous déposions nos valises.
Me suis-je enfermé dans un dogme conservateur, en m’interdisant de facto à me tourner vers des
shells modernes et bien plus aisés à appréhender ?
Bien que la norme SQL définisse un ensemble de règles pour que les systèmes de bases
de données puissent être interchangeables, il existe de petites singularités dans la
nature. À ce titre, le type de données hierarchyid fourni par SQL Server est un
exemple flagrant. Si vous êtes amené à basculer vers PostgreSQL, deux solutions s’offrent
à vous.
Une première et plus simple consiste à lier chaque nœud à son parent à l’aide d’une nouvelle
colonne parentid et d’y appliquer une contrainte de clé étrangère. Une autre approche,
plus complète, consiste à utiliser l’extension ltree. Cet article traite de ce dernier
cas.
Le PG Day France s’est tenu les 11 et 12 juin derniers à Lille, ma ville natale.
Il s’agit de l’événement de la communauté française de PostgreSQL qui pose ses valises dans une
ville différente chaque année. L’occasion était trop belle pour moi et j’y ai rencontré de nombreuses
personnes venant de toute la France et de ses alentours, pour discuter de PostgreSQL au cours
de deux jours d’ateliers et de conférences.
Pour cette édition, j’ai eu le plaisir de prendre la parole et de faire un retour d’expérience
sur l’animation du groupe Meetup local dont j’ai repris les rennes il y a maintenant quatre ans.
Dans cet article, je souhaite retranscrire les principaux points abordés lors de cette présentation,
en attendant que la vidéo de la conférence soit mise en ligne.
Lors de la dernière PGSession 16, j’ai rédigé et animé un atelier de
trois heures au sujet de la migration vers PostgreSQL à l’aide des Foreign Data
Wrappers, ou FDW. Ce fut notamment l’occasion de présenter au grand public,
l’extension db_migrator pour laquelle j’ai dédié un article sur ce
blog.
Au cours de cet atelier, nous pouvons constater que la copie des données avec
l’extension db_migrator n’est pas parfaitement prise en charge. En effet, bien
qu’il existe une fonction de bas niveau pour répartir sur plusieurs processus le
transfert table à table, de nombreuses situations devront exiger de rédiger un
grand nombre de requêtes SQL pour se tirer d’affaire. Au cours des mois qui
suivirent, je me suis attelé à la conception d’un assistant écrit en
PL/pgSQL dont le but est de simplifier la génération de ces requêtes.
En informatique, un projet de migration consiste à changer un ou plusieurs
composants techniques sans qu’aucun comportement des applications n’en soit
impacté. Dans le paysage des bases de données (et le métier que j’exerce), il
s’agira de choisir un nouveau système (comme PostgreSQL) en remplacement d’un
autre (comme Oracle ou Microsoft SQL Server).
Dans un précédent article, je décrivais les étapes exhaustives pour
réaliser une migration complète à l’aide de la technologie des Foreign Data
Wrappers, mais l’étape critique de transfert des données qui y était décrite ne
s’adapte pas à toutes les situations. Voyons ensemble les alternatives qui
permettent de couvrir une grande partie des besoins.