Bonjour voici ma demande :
SGBD : Postgres
Besoin : Des entités personnes ont une série de propriétés (environ 100) (Nationalité,catégorie,...) avec historique (start - end date)
Volumétrie : Millions de lignes . Environ 500k personnes avec chacun leur historique de propriétés.
Objectif : en un instant T , retrouver l'ensemble des propriétés d'une personne. Retrouver toutes les personnes d'une même nationalité,Etc.
En un instant t une personne possède une seule propriété par type de proriété, donc une nationalité , et une catégorie.
Imaginons que dans le temps cette personne puisse changer de nationalité, de catégorie, etc.
Chaque propriété peut être modifiée indépendament des autres.
Je pensais faire une table personne, une table nationalité, une table catégorie,etc + une table A reprenant : id_personne,id_nationalite,id_categorie,start_date,end_date.
Ce qui implique qu'à chaque changement pour une propriété, on ajoute une ligne dans la table A.
La table A aura donc un gros volume , avec 100 foreign keys.
On devrait indexer chacune des 100 colonnes afin de pouvoir retrouver rapidement , par exemple , toutes les personnes de nationalité française.
Cela engendre donc des indexes de volumes important.
Selon vous, un tel schema est-il viable, performant?
J'ai peur que le volume de la table A croisse trop rapidement.
Autre possibilité, des tables de jointures entre personne et chaque propriété avec id_personne,id_propriété,date_start,date_end
Ce qui impliquerait énormément de jointures.
Le but est bien sûr d'avoir de bonnes performances de requêtes.
Que suggereriez-vous comme schema?
Merci d'avance !
Partager