出于学习目的,我想制作一个简单的网络索引器,它可以抓取网络并将所有找到的页面及其标题和 URL 保存在 MySQL 数据库中,并使用此表(页面内容未保存):
该数据库大约有多大?大约是数百 MB、GB 还是大约 TB?谢谢。
对于快速而肮脏的答案,请滚动底部。否则,请通读我的叙述以了解我是如何得出这些数字的。
2008 年,Google 发布了一些您可能感兴趣的数字。当时,Google 的蜘蛛知道超过1 万亿(即 1,000,000,000,000)个唯一 URL。需要注意的一件事是并非所有这些 URL 都被编入索引。对于你的情况在这里,我们会假装我们正在将所有内容建立索引。您可以在此处阅读此公告:http : //googleblog.blogspot.com/2008/07/we-knew-web-was-big.html
您的id列的当前大小仅允许索引中有20 亿个URL。如果你做到了,unsigned int你可以挤出40 亿,但假设你想要使用一个接近无限的规模unsigned bigint实际上,你想要使用 uuid 或类似的东西,这样你就可以同时生成 ID(并且从多个主机,)但在本练习中,我们将假设我们使用的是unsigned bigint.
因此,理论上,我们已经得到了这个无限可扩展的 MySQL 表,其定义如下:
unsigned bigint AUTO_INCREMENTvarchar(100)varchar(500)这些列中的每一列的存储要求是:
参考:http : //dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
现在,为了获得理论表大小,我们只需乘以我们的1 万亿个唯一 URL:
611 字节 * 1,000,000,000,000 个 URL = 611,000,000,000,000 字节 =~ 555.7 TB
所以你有它。1 万亿个 URL 乘以我们定义的表的存储大小将占用近 556 TB 的数据。我们还必须为索引、表开销和其他一些事情添加数据。同样,我们也可以减去数据,因为在我们的练习中,我假设每一varchar列都被最大化了。我希望这有帮助。
(另外,只是快速澄清一下:我知道 bigint 列不是无限的,但是当您不担心物流时,进行数学计算会更容易)
| 归档时间: |
|
| 查看次数: |
1996 次 |
| 最近记录: |