Présentation de pgtestdb

Pgtestdb est un package de test pour Go et Postgres qui utilise la fonctionnalité de base de données template de Postgres. Cette fonctionnalité permet de créer une nouvelle base de données en copiant une base de données existante, ce qui est plus rapide que de migrer une base de données de test à partir de zéro ou d'utiliser des techniques lourdes basées sur Docker.

Fonctionnement de pgtestdb

La copie d'une base de données template est très rapide, car Postgres énumère les relations de la base de données template et copie leurs fichiers de tas, d'index et de catalogue en chunks de 8 ko. Cela signifie que la création d'une nouvelle base de données de test est beaucoup plus rapide que les autres approches de test.

Comparaison avec d'autres approches de test

Une comparaison a été effectuée entre pgtestdb et une approche de test basée sur les schémas, qui est utilisée par River. Les résultats ont montré que les deux approches ont des temps de configuration similaires, autour de 100 ms. Cependant, l'approche basée sur les schémas est globalement plus rapide, car elle peut réutiliser les schémas de test existants au lieu de créer de nouveaux.

Optimisation de pgtestdb

Pgtestdb pourrait être optimisé en réutilisant les bases de données de test existantes, ce qui pourrait réduire le temps de configuration à 10-20 ms. Cela pourrait être réalisé en ajoutant une fonctionnalité de réutilisation des bases de données de test au package pgtestdb ou en l'implémentant dans les projets qui utilisent pgtestdb.

CREATE DATABASE dbname TEMPLATE template_to_copy;

Cette commande Postgres permet de créer une nouvelle base de données en copiant une base de données existante, ce qui est à la base de la fonctionnalité de pgtestdb.