2011-06-28 44 views
0

我必须为不同类型的人群构建服务。该服务包含一个Web门户和一个Web服务(由智能手机查询),其中将包含大量记录。每个人口都有自己的一套记录,人口之间共享的记录很少。具有大量记录的数据库的体系结构

每个人口都有其活动,新闻,用户...许多用户将使用这项服务,数据库表(将包含这些事件,新闻和用户)将迅速增长。这个表格中的插入次数将会多出100次。 最后,我计划使用MySQL作为数据库引擎。

我的问题是结构问题:

  • 是更好地对所有的群体共同的表(一个表的消息,单表事件......所有的人口),并允许列过滤?或者每个人口拥有一个单独的数据库(每个人口都有自己的事件表,自己的新闻表......)会更好吗?
  • 如果每个数据库的数据库体系结构更优化,如何处理共享对象?

感谢您的提示和建议!

kheraud

+0

您是否研究过针对不同人群使用单个数据库和不同表格?即Event_Pop_A,Event_Pop_B ... News_Pop_A ...根据您的使用场景,这可能有助于您进行跨种群查询的情况(例如,使用UNION) –

+0

不,我没有。这似乎很难维护/管理,但解决方案可以工作 – iwalktheline

+0

这取决于您创建新人群的频率。如果这是你可以设想的事情发生很多,那么我的建议是不实际的。如果人口集合稳定,并且用户从一个人口到另一个人口几乎没有或没有移动,那么它可能工作 –

回答

1

你可以有一个单一的表中的每个消息,其中将包含所有人口与一些列将区分人口,你可以在该列应用事件分区等。这样你的高频选择在人口将只访问相应的分区,而不是全部。你也可以去分区索引。

您可以参考此为MySQL分区http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html

关于共享列我想,如果持股比例较少,你可以复制行,否则你最终会访问多个分区的查询。