数据库存储所有SHA1情况的hashset时的查找时间
Search time when storing hashset of all cases of SHA1 in database
我正在研究 sha1 碰撞。
sha1所有情况下hashset的大小都是2^160。假设你放到aws数据库中,要多久才能取回记录?在mysql或mssql文档中是否有一个区域定义为检索一条记录需要多少秒?还有,你觉得什么数据库类型的aws适合2^160的巨量?
提前感谢您的回复。
无法在 aws 或其他任何地方存储那么多数据。也不可能在任何可想象的时间内生成那么多数据。
从任何 适当索引的 table 中检索 一个 行将花费“几”毫秒。
换句话说,一个程序可以从 table 中的那个 sha1 列 索引的 table 中获取数百甚至数千行,一次一个一秒钟。
要了解这是如何实现的,请阅读 BTree
的工作原理。
密钥的位数(160)对我上面说的影响很小。 2^160 只是该键的 distinct 值的最大数量。
在 AWS 上查找它和我们个人笔记本电脑之间的唯一显着区别是网络延迟。
如果您要插入一行但想先检查 sha1 是否已经存在,只需执行插入,然后检查“重复键”错误。或使用 INSERT IGNORE...
或使用 INSERT ... ON DUPLICATE KEY UPDATE...
Insert 必须(有效地)先执行 SELECT
以查看是否将是复制密钥——基本上不需要额外的努力。
回想一下您的祖父母过去是如何在名为字典、电话簿或地图集的书中查找单词的。
I just want to calculate an imaginary estimated time
大约 4 秒。
想象一下 160 位密钥上的 B 树。如果每个页面是 8000 字节,并且页面指针也是 160 位,那么每页有 25 个键值。 2^160 ~ 25^35,所以 B-Tree 中会有 35 个级别,所以 35 个 IO 才能到达叶级别。
这必然是一个行星大小的分布式系统,因此每个 IO 允许 100 毫秒,也就是不到 4 秒。
我正在研究 sha1 碰撞。
sha1所有情况下hashset的大小都是2^160。假设你放到aws数据库中,要多久才能取回记录?在mysql或mssql文档中是否有一个区域定义为检索一条记录需要多少秒?还有,你觉得什么数据库类型的aws适合2^160的巨量?
提前感谢您的回复。
无法在 aws 或其他任何地方存储那么多数据。也不可能在任何可想象的时间内生成那么多数据。
从任何 适当索引的 table 中检索 一个 行将花费“几”毫秒。
换句话说,一个程序可以从 table 中的那个 sha1 列 索引的 table 中获取数百甚至数千行,一次一个一秒钟。
要了解这是如何实现的,请阅读 BTree
的工作原理。
密钥的位数(160)对我上面说的影响很小。 2^160 只是该键的 distinct 值的最大数量。
在 AWS 上查找它和我们个人笔记本电脑之间的唯一显着区别是网络延迟。
如果您要插入一行但想先检查 sha1 是否已经存在,只需执行插入,然后检查“重复键”错误。或使用 INSERT IGNORE...
或使用 INSERT ... ON DUPLICATE KEY UPDATE...
Insert 必须(有效地)先执行 SELECT
以查看是否将是复制密钥——基本上不需要额外的努力。
回想一下您的祖父母过去是如何在名为字典、电话簿或地图集的书中查找单词的。
I just want to calculate an imaginary estimated time
大约 4 秒。
想象一下 160 位密钥上的 B 树。如果每个页面是 8000 字节,并且页面指针也是 160 位,那么每页有 25 个键值。 2^160 ~ 25^35,所以 B-Tree 中会有 35 个级别,所以 35 个 IO 才能到达叶级别。
这必然是一个行星大小的分布式系统,因此每个 IO 允许 100 毫秒,也就是不到 4 秒。