在SQL数据库中存储64位哈希的最佳实践

时间:2013-11-01 17:33:35

标签: c# sql-server-2008 database-design

如何使用C#/ Entity Framework在SQL DB(SQL Server 2008)中有效存储64位哈希值?更具体地说,您将使用什么数据类型将哈希值存储在数据库中,以及如何将原始哈希值转换为值?

正在计算原始哈希值并将其存储在BitArray中:

BitArray hash = CalculateHashValue(); // Returns a BitArray(64)

存储此值的一个选项是使用二进制数据类型(64)。然后我可以使用以下内容将哈希添加到数据库中:

byte[] hashAsByteArray = new byte[8];
dhash.CopyTo(hashAsByteArray, 0);

MyDbObject mdo = new MyDbObject();
mdo.hash = hashAsByteArray;
db.MyDbObject.AddObject(mdo);
db.SaveChanges();

从此选项中存储在数据库中的结果值似乎在末尾填充了大量0,这看起来并不能有效利用空间(例如0x0CAA0820848200800000000000000000000000000000000000000000000000000000000000000000000000000000)

您会使用哪些更好的方法?谢谢!

0 个答案:

没有答案