我正在考虑使用JSON数据类型保存MySQL 5.7+中的历史数据价格而不是按历史价格添加新行的可能解决方案。
案例说明: 我有一张产品当前价格表和产品描述称为“产品”。产品价格可能会在几天后发生变化,我想使用JSON数组保存历史价格变化:
JSON基础结构:
PriceChangeDate (date)
PriceChanged (float)
PromoType (tinyint)
PromoDesc (nvarchar(50))
我们的想法是将历史数据保存到名为“HistoricalProductPrices”的分隔表中,该表包含ProductID,(与“Products”表的关系),DateCreated以及ProductID历史价格的JSON数据类型以及我所描述的字段。
在某些情况下,我需要产品的完整数据历史记录,因此我只需获取整个JSON并显示报告。有时候我会需要一个特定的日期或产品历史价格范围,所以我想我只是从JSON获取历史数据并寻找神化的“PriceChangeDate”。 这也将允许我节省大量的每日插入,而我将需要使用新的产品数据更新JSON。
您如何看待这种保存历史数据的方法?
答案 0 :(得分:1)
你问:
您如何看待这种保存历史数据的方法?
尊重,我认为这是一个糟糕的主意。如果您使用MySQL或任何其他RDMS执行此操作,则必须处理您的代码的下一个人将钉子钉在看起来像您的木偶中。严重。
为新事件(如股票交易)或新日添加新行是RDMS所做的。他们确实做得非常好。
SQL数据库的重点是允许在许多列中快速更新,搜索和聚合数据。 RDMS系统可以存储和搜索数百万行数据而不会出汗。将许多记录放在一个BLOB中就是打败所有搜索技术。
如果您确实想要使用JSON文档进行存储,可能需要调查MongoDB。它的索引在一些JSON文档中有效。