Bonjour, je réfléchi à l'archi bdd (mysql) d'un projet et j'aurais besoin de conseils :
Le projet, pour simplifier :
- Il faut stocker des "billets" (textes), auxquels sont affectés des "tags" (mots).
- Les billets et les tags sont dans des "catégories" cloisonnées, un billet ne peut pas faire partie de plusieurs catégories ni plusieurs langues.
- Les billets et les tags sont en plusieurs langues.
- Un billet et un tag appartiendront toujours à une même langue et même catégorie.
Requêtes
- Les billets et les tags seront l'objet de requêtes incessantes, car des algorithmes analysent les billets, et ajoutent des tags. Chaque fois qu'un nouveau billet est ajouté dans la bdd, il faut refaire nécessairement une analyse de tous les billets de sa même langue et sa même catégorie (ranking).
- Il y aura plus de 1 000 000 de billets, 10 000 tags, 5 à 10 catégories, et 2 langues (4 par la suite).
Question : lequel des deux modèles choisir, pour des raisons d'optimisation, scalabilité, d'intégrité des données (facilité à recupérer en cas d'erreur)
Modèle 1 :
[billets] : id / texte / catégorie / langue
[billet_tags_liens] : id / id_billet / id_tag
[tags] : id / nom / catégorie / langue
Modèle 2 :
[langue1_category1_billets] : id / texte
[langue1_category1_billet_tags_liens] : id / id_billet / id_tag
[langue1_category1_tags] : id / nom
[langue2_category1_billets] : id / texte
[langue2_category1_billet_tags_liens] : id / id_billet / id_tag
[langue2_category1_tags] : id / nom
[langue1_category2_billets] : id / texte
[langue1_category2_billet_tags_liens] : id / id_billet / id_tag
[langue1_category2_tags] : id / nom
[langue2_category2_billets] : id / texte
[langue2_category2_billet_tags_liens] : id / id_billet / id_tag
[langue2_category2_tags] : id / nom
etc...
(En gros splitter chaque table par langue et par catégorie)
Le modèle 1 est simple ... mais va t-il tenir la charge ... mysql va t-il pouvoir gérer des tables avec des millions d'entrées ?
Le modèle 2 est complexe (il faudra créer des dizaines voir centaines de tables), mais il permet d'économiser des requetes Select sur les langues et les catégories.
Vos avis sont les bienvenus
Message édité par strim le 18-01-2011 à 12:44:02