2016-07-16 96 views
0

我在考慮使用JSON數據類型在MySQL 5.7或更高版本中保存歷史數據價格而不是按歷史價格添加新行的可能解決方案。用於存儲歷史價格的MySQL JSON數據類型

案例描述: 我有一張產品當前價格表和產品說明稱爲「產品」。產品價格可幾天後的變化,我想用JSON數組來保存歷史價格變動:

JSON基礎結構:

PriceChangeDate (date) 
PriceChanged (float) 
PromoType (tinyint) 
PromoDesc (nvarchar(50)) 

的想法是歷史數據保存到稱爲分離表「HistoricalProductPrices」,包含ProductID(與「Products」表的關係),DateCreated和一個JSON數據類型,用於描述字段的ProductID歷史價格。

在某些情況下,我需要一個產品的整個歷史數據,所以我將只取整JSON和顯示報表。有時我需要一個具體的日期或產品歷史價格範圍,所以我想我只會從JSON中獲取歷史數據並尋找神化的「PriceChangeDate」。 這也將使我可以節省大量的日常插入,相反,我需要使用新的產品數據更新JSON。

你們認爲這個方法來保存歷史數據呢?

+0

不,我不明白你爲什麼這樣做。只是存儲日期和價格有什麼不對? – Strawberry

+0

我說的是價格每天都會變化的情況,我需要用變更日期來保存歷史價格。 – Dror

+0

爲什麼一定是json。你可以試試5.7。我不會。主要是因爲我確信它不會擴展,也不太可調。但是去做吧。 – Drew

回答

1

你問:

你們覺得這個怎麼樣的方法來保存歷史數據?

恕我直言,我認爲這是一個可怕的想法。如果你使用MySQL或任何其他RDMS來完成這項工作,那麼必須處理你的代碼的下一個人將把釘子釘在一個看起來像你的木偶中。認真。

添加新行新的事件(如股票交易)或新的天是什麼RDMSs做。他們確實做得非常好。

SQL數據庫的全部要點是允許快速更新,搜索和數據的聚集在許多列。 RDMS系統可以存儲和搜索數以百萬計的數據行,而不會出汗。將多個記錄放在一個BLOB中是爲了擊敗所有的搜索技術。

如果你真的要用於存儲JSON文檔,您可能需要調查的MongoDB。它具有在一些JSON文檔中工作的索引。