有一个注册了20亿用户的门户网站。如果将所有20亿用户存储在传统数据库中,则当用户尝试登录时,将需要更多时间来检索有关特定用户的数据。如何处理这种情况以确保用户快速获得响应。
答案 0 :(得分:7)
即使你有20亿条记录,我也没有看到为什么传统数据库在体面的现代硬件上无法快速检索登录信息的任何特殊原因。毕竟它只是一个简单的索引查找(您确实记得对用户ID进行索引,对吗?)
在一台非常大的机器上,你甚至可以将大部分内容放在RAM中。
但是,如果你真的试图按比例设计这个,我会看Cassandra之类的东西。这是一个高度可用的分布式NoSQL数据库,基本上与谷歌,Facebook等将使用的架构相同。
答案 1 :(得分:0)
我不知道它是否实用,但理论上你可以使用某种树形结构。如果我从很久以前就记得我的CS类,那么树就是O(ln),所以对于十亿(即2 ^ 30),你只需要30次操作来进行查找。这就是CS的美丽......
为此实现树结构,我不知道。
答案 2 :(得分:0)
如果您拥有20亿用户的门户网站,则登录将是所有将要执行的查询的少量内容 这里的问题不是1次登录所需的时间,而是如果所有用户的百分之一同时处于活动状态 Luckely有20亿用户不适合一个大陆,所以你可以使用分布式数据库服务器,每个服务器都服务于他们自己的世界。你可以在后台同步它们(如果有人前往另一个大陆)。
如果您拥有资源(时间,金钱,员工),您可以创建自己的大型数据库,如谷歌(拥有20亿用户,您可能有钱和员工),但我会坚持使用正常的关系数据库来实现这一点