价格变动的校验和

Checksum for price changes

提问人:root66 提问时间:11/5/2023 最后编辑:root66 更新时间:11/6/2023 访问量:44

问:

我将每周更新的产品价格与外部数据源同步,然后仅将价格更改与有效开始日期保存在 SQL 数据库中。这样,我以后就可以确定给定日期的有效价格并节省数据库内存。

现在我想集成一个校验和,以便我可以确定过去每周价格同步是否失败。有没有一种校验和算法,我可以用它来专门检查价格是否在 X 周更新,而不会生成太多数据,以至于我最终可以更好地保存每周价格,即使它没有改变?

背景: 我从其他外部来源收到延迟预订数据(发票日期、发票日期的产品价格、数量),并希望使用我自己的价目表验证外部来源是否正确选择了价格。但事实往往并非如此。 为了使我的系统更耐错,我需要确保识别失败的价格同步。

当然,最安全的方法是每周再次节省价格,但我想节省存储空间,因为涉及的产品很多。

一个简单的想法是,自上一个价格更新周以来,每周都使用检查位。每年 52 位 = 7 字节,而不是完整价格表行大小 + 索引的 52 倍。

与语言无关的 计算机科学 校验和

评论

0赞 Progman 11/6/2023
欢迎使用 Stack Overflow。请观看导览,了解 Stack Overflow 的工作原理,并阅读如何提问,了解如何提高问题的质量。目前尚不清楚您在问什么或问题出在哪里。目前还不清楚如何使用校验和来确定同步是否失败。请编辑您的问题,以包括对您遇到的问题的更详细描述以及您想问的一个具体问题。

答:

-1赞 Andi 11/5/2023 #1

您可以使用校验和来检查价格变化,而无需保存整个价格历史记录。方法如下:

计算每周价格数据的哈希值。 将哈希值与周数一起存储。 在随后的价格同步期间,再次计算哈希值。 将新的哈希值与存储的哈希值进行比较。 如果哈希值匹配,则价格数据未更改。 如果哈希值不同,则价格数据已更改。 这样,您可以快速识别价格变化,而无需存储整个价格历史记录。

评论

2赞 500 - Internal Server Error 11/6/2023
If the hash values match, the price data hasn't changed- 虽然情况恰恰相反,但这种说法实际上可能并不成立。
0赞 root66 11/6/2023
这将确保前一周正确同步,如果不是这种情况,则必须立即进行干预。我曾希望有一种算法可以专门检查第 X 周。当然,您可以将所有 52 个每周价格相加,然后通过将总数与经过验证的价格数据进行比较来确定某处是否缺少价格变化,但您不知道同步在哪一周或哪几周失败。
0赞 Dillon Davis 11/20/2023 #2

与您提出的方案类似 - 为什么不在该表上包含一列。我假设您的表格已经有一列,以及实际价格和数量数据。这将使你能够更轻松地对历史数据执行查询 ()。此列的数据类型大小可以是 1 个字节或 2 个字节,具体取决于如何处理年份之间的滚动。end_weekstart_weekstart_week <= week AND week <= end_week

评论

0赞 root66 11/21/2023
这也是一种选择,但每周更新也不能失败。否则,end_week将在下一次更新时再次更新,您将无法再判断 start_week 和 end_week 之间的周数是否完整。