40 votes

Quel est le meilleur - 6 bases de données avec 5 000 000 de tables ou 5 000 000 de bases de données avec 6 tables?

Je suis en création d'une application web, où j'ai besoin de stocker des informations de 5 000 000 de personnes et l'info est de 6 catégories. Je suis en utilisant MySQL comme ma base de données. Ma question est, quel est le meilleur:

  1. Créer des 6 bases de données avec le nom de 6 catégories et de créer 5 000 000 de tableaux dans le document correspondant à l'info de chaque utilisateur. Par conséquent, [6 bases de données avec 5 000 000 de tables chacune]. Info sur chaque utilisateur serait divisé en 6 différentes bases de données.

  2. Créer 5 000 000 de bases de données qui représentent compléter les infos de l'utilisateur avec 6 tables chacune des catégories spécifiées. Par conséquent, [5 000 000 de bases de données avec 6 tables chacune]. Info sur l'utilisateur dans une base de données unique.

Veuillez expliquer les avantages et les inconvénients des deux options à l'égard de la performance et de la mise en œuvre.

Puis-je créer autant que 5 000 000 de bases de données dans MySQL? Si oui, est-elle efficace?

115voto

a_horse_with_no_name Points 100769

Vous n'avez besoin que de trois tables:

  • personnes (stocke chaque personne)
  • catégories (stocke toutes les catégories)
  • people_categories (stocke le lien entre une catégorie et une personne)

63voto

Stefanos Kargas Points 1810

Vous devez être source de confusion sur le sens des mots de la base de données, table, champ (ou colonne), enregistrement (ou ligne).

  • Une base de données contient toutes vos données pour un projet spécifique. Il y a toujours une base de données par projet (ou presque toujours)
  • Une table contient toutes les données d'une entité spécifique et par dire d'une entité, je veux dire un type d'objet qui est imaginable ou réel seperatelly existant par lui-même. Une personne est une entité, un livre est une entité, un téléphone est une entité, un film est une entité, etc. Chacun de ces serait séparée des tables dans une base de données.
  • Un champ (ou colonne) est un type de données qui représente une caractéristique spécifique (long métrage) d'une table de l'entité. Par exemple un tableau de personnes peuvent avoir le champs: NAME, SURNAME, AGE, etc. Ce sont toutes les caractéristiques que possède une personne.
  • Un enregistrement (ou ligne) est un élément d'un tableau. Il est un seul "morceau" de la table de l'entité. Par exemple, dans un tableau de personnes, un seul enregistrement est une seule personne, à savoir, "Jean", "dupont", "32".

Dans votre exemple, je peux vous assurer que vous avez seulement besoin d' une base de données. Vous voulez stocker des informations pour 5000000 les gens, si vous avez besoin d' une table appelée PERSON. Maintenant, si en 6 catégories, vous voulez dire les caractéristiques d'une personne, comme: nom, prénom, âge, adresse, etc., ensuite, vous aurez besoin de créer de 6 cases de ce tableau: NAME, SURNAME, AGE, ADDRESS, etc. Ensuite, vous aurez besoin d'insérer vos données dans la base de données 5000000 enregistrements.

22voto

Piskvor Points 46986

Ni l'un ni l'autre - pourquoi voudriez-vous même créer cela en tant que bases de données séparées? Créez simplement des tables pour stocker le même type de données (utilisateurs, catégories, informations utilisateur, etc.) et utilisez l'ID utilisateur pour rechercher les parties pertinentes.

Exemple:

 users
id | name    | ...
1    Noddy   | 
2    Piskvor |

user_info
user_id | email               | some_other_field
1         a@example.com         ...
2         piskvor@example.org   foobar

categories
user_id | category_id | name
1         1             Noddy's category
2         1             something else
 

Les bases de données SQL sont tout à fait capables de traiter des tables de millions de lignes. manipuler des centaines de milliers de tables vous rendra fou rapidement.

15voto

Dalmas Points 13600

Créer autant de bases de données n'a pas l'air génial. MySQL est conçu et optimisé pour fonctionner avec une base de données à la fois, vous devriez donc l'utiliser de cette façon.

Je me demande comment vous feriez une recherche dans 5 000 000 de bases de données, à moins d'ouvrir / de fermer vos bases de données une à une, 5 000 000 de fois ...?

-3voto

AB01 Points 22

Une seule table ne suffit-elle pas?

Table contenant les informations sur la personne, l'une des colonnes étant la catégorie. Vous voudrez peut-être simplement cocher la colonne Catégorie pour qu’elle soit l’un des 6 que vous avez l’intention de faire. Ce serait tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X