处理大量状态和评论的问题

时间:2012-07-13 16:31:11

标签: mysql sql database social-networking

嗨,我是网络开发的新手。我正在努力开发一个社交网站。在数据库设计层面,我觉得我有一些问题。这是我的问题。

我有一个状态表,其中属性为:

  • status_id(auto_increment)
  • USER_ID
  • 状态

我的计划是当我的主页加载它将从关系表中查找我的朋友(我有一个关系表)和来自关系表的user_id它从状态表加载状态(按最新排序)。 这是一个好计划吗?我正在考虑它,因为这个表可以包含数百万行(如果我很幸运,但我需要最有效的方式)如果一个用户有200或300个朋友查询它会变慢吗?是否有必要在表中保持原状?请给我一些建议。这个表会经常插入,所以索引可能不是一个好主意,你怎么想? 我还有注释表,其中的属性是:

  • USER_ID
  • friend_id(评论其状态)
  • status_id(评论哪个状态)
  • 评论

这里没有主键。对于这个表,问题是一样的。 我使用MySQL数据库和MyISAM作为数据库引擎。 InnoDB怎么样?哪种引擎最适合社交网络? 请提前告知。

1 个答案:

答案 0 :(得分:0)

您需要存储历史状态吗?如果没有,只需将其设为NVARCHAR表中的Users字段即可。如果你想知道2011年7月3日比尔的状态,你需要约会。我对Microsoft SQL更熟悉,这样的事情应该这样做:

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 某天最终表现不佳,您也可以将CurrentStatus存储在Users表中,或者使用仅具有最新状态的物化视图用户。