在MongoDB中有效存储md5哈希的最佳实践

时间:2012-01-24 17:39:57

标签: ruby mongodb database-design md5 nosql

假设我们有一个md5哈希:

红宝石:

>Digest::MD5.hexdigest("ZZtop")
=> "d3e5c7c22df12b70e882f593432a3bdd"

可能的字段类型:

  

:type =>串

     

:type =>散列

我应该选择哪个?

3 个答案:

答案 0 :(得分:7)

使用字符串。 BSON中的哈希是指键值对集。

答案 1 :(得分:4)

在MongoDB中,哈希表示加密指纹(如MD5或SHA-1)。它表示散列表中的散列(允许存储键值对的数据结构)。

您必须使用字符串来存储MD5指纹。

答案 2 :(得分:0)

字符串,或者更好的是使用Binary,它的大小只有一半。

> Digest::MD5.hexdigest("ZZtop").size
=> 32
> Digest::MD5.digest("ZZtop").size
=> 16

您可能必须通过明确告知其BSON :: Binary来解决UTF8 check

> BSON::Binary.new(Digest::MD5.digest("ZZtop"))