Je travaille sur la conception d'un projet RoR pour mon entreprise, et notre équipe de développement a déjà eu un petit débat sur la conception, en particulier la base de données.
Nous avons un modèle appelé Message
qui doit être maintenu. C'est un très, très petit modèle avec seulement trois colonnes de base de données autres que l'identifiant, mais il y aura probablement BEAUCOUP de ces modèles lorsque nous passerons à la production. Nous examinons jusqu'à 1 000 000 d'insertions par jour. Les modèles ne seront jamais recherchés que par deux clés étrangères sur eux qui peuvent être indexées. De plus, les modèles n'ont jamais à être supprimés, mais nous n'avons pas non plus à les conserver lorsqu'ils ont environ trois mois.
Alors, ce que nous nous demandons, c'est si l'implémentation de cette table dans Postgres présentera un problème de performances important? Quelqu'un a-t-il de l'expérience avec de très grandes bases de données SQL pour nous dire si cela posera un problème ou non? Et si oui, quelle alternative devrions-nous choisir?
la source
Réponses:
Les lignes par table ne seront pas un problème en soi.
Donc, environ 1 million de lignes par jour pendant 90 jours équivaut à 90 millions de lignes. Je ne vois aucune raison pour laquelle Postgres ne peut pas gérer cela, sans connaître tous les détails de ce que vous faites.
En fonction de la distribution de vos données, vous pouvez utiliser un mélange d'index, d'index filtrés et de partitionnement de table pour accélérer les choses une fois que vous voyez les problèmes de performances que vous pouvez ou non rencontrer. Votre problème sera le même sur tout autre RDMS que je connais. Si vous n'avez besoin que de 3 mois de conception de données dans un processus d'élagage des données, vous n'en avez plus besoin. De cette façon, vous aurez un volume constant de données sur la table. Votre chance, vous savez combien de données existera, testez-le pour votre volume et voyez ce que vous obtenez. Tester une table avec 90 millions de lignes peut être aussi simple que:
https://wiki.postgresql.org/wiki/FAQ
la source
Une autre façon d'accélérer considérablement vos requêtes sur une table de plus de 100 millions de lignes consiste à regrouper la table sur l'index le plus souvent utilisé dans vos requêtes pendant les heures creuses. Nous avons une table avec> 218 millions de lignes et avons trouvé des améliorations 30X.
De plus, pour une table très volumineuse, c'est une bonne idée de créer un index sur vos clés étrangères.
la source