L’article explore trois méthodes pour gérer les chevauchements temporels dans une base de données PostgreSQL, en prenant l’exemple d’une application de location de vélos. La première méthode utilise deux colonnes (start_datetime et end_datetime) avec un déclencheur PL/pgSQL pour vérifier les conflits, ce qui est efficace mais complexe à maintenir. La deuxième méthode exploite le type TSTZRANGE et une contrainte d’exclusion avec un index GiST, offrant une solution plus élégante et performante, surtout depuis PostgreSQL 9.2. Enfin, la troisième méthode, introduite avec PostgreSQL 18, utilise la clause WITHOUT OVERLAPS pour simplifier la déclaration de cette logique directement dans une contrainte unique. L’article compare les performances d’insertion, la taille des index et les temps de recherche : les solutions basées sur les plages de dates (range) sont plus rapides à l’insertion, mais les index GiST occupent plus d’espace disque. Les tests montrent aussi que l’optimisation des requêtes dépend fortement de la structure des index et du type de recherche effectué. En conclusion, le type range et la clause WITHOUT OVERLAPS apportent une gestion plus propre et intégrée des chevauchements, au prix d’un stockage légèrement plus important.
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Moralité : "faites confiance à vos développeurs et développeuses."
Pour citer l'auteur "Alors au lieu de chercher à estimer le temps de développement de votre projet, avancez d'un pas à l'aide de [ces] 4 étapes..."
Un article très complet sur le problème du temps en programmation. Pour résumer, stocker les dates au format ISO 8601 et les afficher selon la locale de l'utilisateur. Pour ce qui concerne les événements récurrents, le plus simple est de les générer sur une année et de renouveler cette génération d'année en année. Cela permet de traiter facilement les exceptions.
Tout est dans le titre
La gestion de la notion de temps est toujours difficile en programmation... L'auteur montre quelques difficultés et comment les contourner en PHP
Pourquoi certains serveurs mettent moins de temps à redémarrer que d'autres...
 
