【发布时间】:2020-09-28 04:05:39
【问题描述】:
在创建 gmail 帐户时,它要求我们输入用户名。当我们输入用户名和密码时,我们点击下一步按钮。在几秒钟内,它会给出类似“该用户名已被占用。尝试另一个。”之类的错误。有数十亿个gmail帐户。我的问题是,谷歌使用什么算法来确定用户名是否已经被使用,以及它是如何在 1-2 秒内给出响应的。
【问题讨论】:
-
@Emma,您好,我已经通过 Bloom Filters,但它也说它不是 100% 有效的。
-
布隆过滤器可能会阻止您注册可用的名称,但绝对不会让您注册已被占用的名称。所以检查 gmail 名称很好。
-
在一台配备 4TB 驱动器的 PC 上,您可以在 Postgres 或 Oracle 等完全普通的数据库中存储大约 100 亿个包含密码检查数据和帐户 ID 的电子邮件地址,并且该数据库可以检查任何给定的如果是旋转磁盘,电子邮件地址大约需要 50 毫秒,如果是 SSD,则速度要快得多。它将使用 B+tree 索引或类似索引来完成此操作:en.wikipedia.org/wiki/B%2B_tree
标签: algorithm caching architecture system-design bloom-filter