我应该使用哪种散列方法来处理大文本? - PHP / MYSQL

时间:2013-09-13 16:55:30

标签: php mysql hash

我的数据库中存储的大部分文本都是1MB到1.5MB。但不超过1.5MB,因为这是我设定的限制。

以下是我的需求:

  • 我需要它来降低我的mysql数据库大小
  • 我需要它尽可能快
  • 无需安全性
  • 它必须正常工作,以便string_1和string_2永远不会有相同的哈希

我使用PHP和MYSQL。

4 个答案:

答案 0 :(得分:1)

哈希是不可逆的。您可以借助散列将1.5MB文本转换为小字符串,但不能将相同的散列转换回原始文本。

您正在寻找的是压缩算法。你可以通过压缩使文件变得更小,但它不可能像哈希一样小。

答案 1 :(得分:1)

节省空间

  • MySQL内置COMPRESS()UNCOMPRESS()函数,可以节省数据库空间,还可以编写额外的PHP代码。

检查unique-ness

  • 不是索引TEXT列[无论它们是否被压缩],您可以存储和索引2个相对较小的内容,以保证该文本是唯一的。

    1. 数据的哈希,MD5,SHA,无论你想要什么。
    2. 未压缩数据的长度。
  • 对于大多数散列函数,你更容易被流星击中而不是有2个相同的散列用于不同的文本字符串,并且具有2个缩进长度和散列字符串的可能性比被流星和闪电同时赢得三个彩票。

答案 2 :(得分:0)

我建议使用SHA1,因为它也被git和类似的应用程序用来识别字符串。

请参阅:https://en.wikipedia.org/wiki/Sha1 并且:http://php.net/manual/en/function.hash.php

$hash = hash( 'sha1', $inputData );

答案 3 :(得分:0)

我假设您需要一种压缩算法来减小文本大小。

请参阅http://php.net/manual/en/function.gzcompress.php