2011-06-28 43 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

關於共享列我想,如果持股比例較少,你可以複製行,否則你最終會訪問多個分區的查詢。