gpt4 book ai didi

php - 将大型 json 字符串存储到数据库 + 哈希

转载 作者:行者123 更新时间:2023-11-30 23:28:05 26 4
gpt4 key购买 nike

我需要在我的数据库中存储大型(30K 未压缩)JSON 字符串。我使用 gzip 压缩字符串,因此使用 MySQL 的 BLOB 数据类型来存储它。然而,只有 5% 的请求包含唯一数据,并且只有唯一数据需要存储在数据库中。

我的做法如下。

  1. array_multisort 数据(数组 [a, b, c] 实际上与 [a, c, b] 相同)。
  2. json_encode 数据(json_encodeserialize 更快;我们需要步骤3 的字符串数组表示)。
  3. sha1 数据(比 md5 慢,但冲突的可能性较小)。
  4. 检查哈希值是否存在于数据库中。
    • 存在:不插入数据。
    • 新:对数据进行 gzip 压缩并将其存储在散列中。

关于这件事(除了首先将 JSON 数据存储到数据库之外)是否有任何听起来可疑或应该以不同方式完成的事情?

该数据库每月大约有 1kk 条独特的记录被创建。

最佳答案

在我看来,您正在做的是某种 L2/持久性/分布式缓存。

整体流程是很正确的,但是你应该考虑使用适合你环境的哈希算法,性能最好。

虽然 MD5 有 128 位,但 SHA-1 有 160 位。差别很大! MD5 可能有 2^128 (~3.4x10^38),而 SHA-1 可能有 2^160 (~1.4x10^48)。您认为使用 MD5 会发生冲突吗?

最佳情况下,假设每月有 100 万条唯一记录 (10^6),您将需要大约 3.4x10^32 个月才能发生冲突。当然,这些都是理论值,即使 MD5 不会均匀分布在 2^128 上。

此外,如果您认为旧值应该被丢弃(如 LRU 算法),因为它们不再与存储相关,您甚至可以使用更简单、更快的哈希算法。

如果无论如何,性能和/或存储容量都不是问题,请坚持使用 SHA-1,它的持续时间更长,冲突的可能性也更小。

干杯!

关于php - 将大型 json 字符串存储到数据库 + 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com