Utiliser PostgreSQL comme data warehouse
(narrator.ai)Les principaux ajustements que Narrative, un système d’aide à la décision basé sur l’analyse de données, a recensés à partir de son expérience
-
Ne pas utiliser le même serveur que le système de production
-
Passer à PG 12+ (ne pas utiliser les CTE)
-
Garder les index aussi petits que possible
-
Partitionnement des tables (range/list)
-
Minimiser les E/S disque
-
Faire un Vacuum après les insertions en masse
-
Utiliser les requêtes parallèles
-
Augmenter l’échantillonnage des statistiques (par colonne ou pour toute la base. La valeur par défaut est 100, mais 500)
-
Utiliser moins de colonnes (car le stockage est orienté ligne)
-
Sur des tables de 50 à 100 millions de lignes, Postgres fonctionne remarquablement bien
-
Lorsqu’on passe à l’échelle du milliard de lignes, Citus est recommandé
→ https://www.citusdata.com : open source qui transforme Postgres en base de données distribuée
3 commentaires
D’après mon expérience, dans un contexte basé sur des séries temporelles, j’ai tendance à penser que TimescaleDB serait meilleur, mais je reste prudent faute de sources solides pour l’étayer. En termes de taux de compression et de performances, je pense aussi que TimescaleDB aurait probablement l’avantage.
Je me demande ce que donnerait une comparaison entre Citus et TimescaleDB.
Si je comprends bien, timescaledb a des avantages pour le partitionnement par séries temporelles, et citus pour le sharding... (maintenant que j’y pense, il n’est peut-être pas impossible d’utiliser les deux ensemble ?)