PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment stocker efficacement des millions d'enregistrements de statistiques ?

Ce nombre n'est pas aussi élevé que vous le pensez. Dans le travail actuel, nous stockons les données de métriques pour les sites Web et le nombre total de lignes que nous avons est beaucoup plus élevé. Et dans mon travail précédent, j'ai travaillé avec la base de données pg qui collectait des mesures à partir du réseau mobile et collectait environ 2 milliards d'enregistrements par jour. Alors n'ayez pas peur des milliards en nombre d'enregistrements.

Vous aurez certainement besoin de partitionner les données - très probablement de jour. Avec cette quantité de données, vous pouvez trouver des index tout à fait inutiles. Dépend des avions que vous verrez dans EXPLAIN sortie de commande. Par exemple, cette application de télécommunication n'a utilisé aucun index, car ils ne feraient que ralentir tout le moteur.

Une autre question est la rapidité des réponses aux requêtes dont vous aurez besoin. Et quelles étapes de granularité (sommes sur heures/jours/semaines, etc.) pour les requêtes que vous autoriserez pour les utilisateurs. Vous devrez peut-être même effectuer des agrégations pour des granularités comme la semaine, le mois ou le trimestre.

Ajout :

Ces ~ 2 milliards d'enregistrements par jour dans cette application de télécommunication ont pris environ 290 Go par jour. Et cela signifiait des insertions d'environ 23 000 enregistrements par seconde à l'aide d'insertions en bloc avec la commande COPY. Chaque bloc était composé de plusieurs milliers d'enregistrements. Les données brutes ont été partitionnées par minutes. Pour éviter les attentes de disque, la base de données disposait de 4 espaces de table sur 4 disques/tableaux différents et des partitions étaient réparties sur eux. PostreSQL a pu tout gérer sans aucun problème. Vous devez donc également penser à une configuration matérielle appropriée.

Une bonne idée est également de déplacer le répertoire pg_xlog vers un disque ou un tableau séparé. Non, juste un système de fichiers différent. Tout doit être séparé HW. Les SSD que je ne peux recommander que dans les baies avec un contrôle d'erreur approprié. Dernièrement, nous avons eu des problèmes avec une base de données corrompue sur un seul SSD.