2012-07-13 1 views
0

Salut, je suis un débutant dans le développement web. J'essaie de développer un site de réseautage social. Au niveau de la conception de la base de données, j'ai l'impression d'avoir quelques problèmes. Voici mes problèmes.problèmes dans la manipulation énorme quantité de statut et de commentaire

J'ai une table d'état où les attributs sont les suivants:

  • status_id (auto_increment)
  • user_id
  • état

Mon plan est quand ma charge de page d'accueil il va chercher mon les amis de la table des relations (j'ai une table de relations) et avec l'id_utilisateur de la table des relations, il charge l'état (ordonné par le plus récent) de la table d'état. Est-ce un bon plan? J'y pense parce que cette table peut contenir des millions de lignes (si j'ai de la chance, mais j'ai besoin de la manière la plus efficace) et si un utilisateur a 200 ou 300 amis, cela deviendra-t-il lent? Est-il nécessaire de conserver un statut très ancien dans le tableau? S'il vous plaît donnez-moi quelques conseils. Cette table aura des insertions fréquentes, donc l'indexation n'est peut-être pas une bonne idée, que pensez-vous? J'ai également commenter table où les attributs sont les suivants:

  • user_id
  • friend_id (commentaire sur dont le statut)
  • status_id (commentaire sur lequel statut)
  • commentaire

Ici pas de clé primaire. Pour cette table, la question est la même. J'utilise la base de données MySQL et MyISAM comme moteur de base de données. Qu'en est-il d'InnoDB? Quel moteur conviendra le mieux aux réseaux sociaux? S'il vous plaît aviser, merci d'avance.

+0

Quelle est la taille de ce site? Est-ce un devoir ou un exercice d'auto-apprentissage? Les grands réseaux sociaux utilisent des bases de données NoSQL en raison de leurs performances. –

+0

1) Beaucoup trop de questions. 2) Votre table de commentaires n'a pas besoin de friend_id, et devrait probablement avoir un commentaire_id comme clé primaire – Ghost

+0

Je veux la meilleure façon de le faire avec rdms –

Répondre

0

Avez-vous besoin de stocker les statuts historiques? Si ce n'est pas le cas, créez simplement un champ NVARCHAR dans le tableau Users. Si vous voulez savoir quel était le statut de Bill le 3 juillet 2011, vous aurez besoin de la date. Je suis plus familier avec Microsoft SQL, quelque chose comme ça devrait le faire:

CREATE TABLE Statuses 
(
UserID INT NOT NULL REFERENCES Users (UserID) ON DELETE CASCADE, 
EffectiveDate DATETIME NOT NULL DEFAULT NOW(), 
PRIMARY KEY (UserID, EffectiveDate DESC), 
Status NVARCHAR(100) NOT NULL 
) 

IF qui finit mal un jour l'exécution, vous pouvez également stocker CurrentStatus dans le tableau Users, ou utiliser une vue matérialisée avec juste le statut le plus récent pour chaque utilisateur.

Questions connexes