2012-12-18 112 views
0

我需要建立一個在線零售店的聯屬系統。它的數據庫(MySQL的)應該爲他們的附屬機構:可擴展的統計數據庫

  • 時間間隔過濾
  • 與意見,點擊會員鏈接和他們的推薦
  • 客戶和訂單(只計算)
  • 產品和產品類別
  • CTR,收益,等等 - 有些可以通過PHP腳本進行彙總

所以我基本上有兩種選擇:

  1. 店一切都在一個表(鍵值對),並從該表
  2. 把所有的數據做出的一切表

有人可以請解釋一下我該怎麼辦,什麼這兩種變體的缺點和優勢是什麼?我知道有一些性能方面的考慮,但我沒有數據可以支持它。

+1

缺少信息,您可能希望擁有關聯企業表格,而且您可能需要更多表格或修改現有表格。例如,要獲得收益,您可能需要修改現有的銷售表以擁有聯屬營銷代碼。對於可能位於會員表中的客戶和訂單計數,如果計算速度較慢,則客戶/訂單表可能有聯盟會員編號,因此您可以提取數據。如果會員可以有多個鏈接,聯盟鏈接可能會有一個新表。 –

+0

@JamesBlack是的,我已經做了所有的事情。但我要問的是,我是否應該重用這些表來將統計信息列放在那裏,或者只是將所有統計信息存儲在新的鍵值對錶中? –

回答

0

如果你想你的分支機構的數據是歷史的,這樣他們就可以看到它是如何隨時間變化,那麼一個單獨的表會更好。

如果你決定你永遠不希望提供這一點,只是給他們一個即時快照,然後將它添加到表比較好。

就個人而言,我會由聯盟ID引用的一個單獨的表去,這樣他們就可以看到他們的信息如何隨時間變化的曲線圖。

現在,如果您存儲數據,例如每週存儲一個新行,那麼您失去了查看當天變化的能力,或者其他時間間隔小於您存儲的時間間隔,以及基於產品進行過濾很難,以防改變營銷方式並希望看到效果。因此,我會選擇3,即根據需要提取數據,以便用戶可以根據需要對其進行過濾,但是,您也可以使用標準方法執行並運行一次/ wk,如果這是一個合理的時間片。

我能緩存那些導致的NoSQL數據庫,主要是因爲它會更快檢索,因爲你可以得到的JavaScript並直接發送給用戶。

如果你有能力讓需求數據,然後還緩存,在NoSQL的數據庫,因爲這是你第一次看,看是否能滿足請求有,你去到實際的數據庫之前。

您也可以讓子公司來設定自己的選擇標準,而且每天只執行那些自定義標準,使他們不打真正的數據庫只是爲了讓自己的信息。

這是關鍵,限制子公司需要去真正的數據庫,把他們的信息放在其他地方,除非你必須去那個數據庫,以減少會員可能影響到客戶的影響。

0

存儲一切都在一個表(在鍵 - 值對)

本方法採用MySQL作爲鍵值存儲。在這種情況下,您沒有一個定義良好的模式。這是一個優點,因爲它很容易更改數據模式。這也是一個缺點,因爲您沒有注意到數據丟失或不一致的情況。

作出一切

這將迫使你想想你的數據結構表,但它可能是適合你的表中的所有數據一個麻煩。

我建議你嘗試製作表格。在項目開始時考慮數據結構是一件好事,並且使表格迫使你正確地構造數據。如果這真的不適合你,你可以使用一個表或一些NoSQL解決方案。