嘿伙计们,我们正在使用多个存储库,并将数据库中的哈希值存储为标识符。
问题是,我的应用程序稍后只有一个短哈希(AKA:8df639)而不是完整哈希(AKA:8df639b301a1e10c36cc2f03bbdf8863)。我虽然使用如下的select语句
SELECT foo FROM table WHERE hash LIKE '8df639%' LIMIT 1
但是我开始害怕我可能会在哈希开始时遇到哈希冲突,以便堆积起来。
问题是,这是一个合理的恐惧,还是这样可以,因为我在36 ^ 4? (1679616组合),由于这些来自不同的存储库,是否真的有可能发生碰撞?
答案 0 :(得分:1)
如果可能的话,最好存储整个哈希值。
Git本身会接受短哈希(通常是7个字符,而不是6个字符),但只要它们保持唯一。如果您生成两个以8df639b
开头的提交,那么在Git识别您正在讨论的提交之前,您将被迫输入更多的哈希值。
顺便说一下,我相信你实际上有六个字符(16 ^ 6)的16,777,216个组合,但是在生成那么多提交对象之前你很可能会很好地发生碰撞。