0

我正在考虑使用 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。

你们如何看待这种保存历史数据的方法?

4

1 回答 1

1

您问:

你们如何看待这种保存历史数据的方法?

恕我直言,我认为这是一个糟糕的主意。如果您使用 MySQL 或任何其他 RDMS 执行此操作,那么下一个必须处理您的代码的人将在看起来像您的木偶中钉钉子。严重地。

为新事件(如股票交易)或新日子添加新行是 RDMS 所做的。他们确实做得很好。

SQL 数据库的全部意义在于允许快速更新、搜索和聚合多列中的数据。RDMS 系统可以毫不费力地存储和搜索数百万行数据。将许多记录放在一个 BLOB 中就是要打败所有的搜索技术。

如果您真的想使用 JSON 文档进行存储,您可能需要研究 MongoDB。它具有在一些 JSON 文档中工作的索引。

于 2016-07-16T12:15:46.560 回答