为了学习的目的,我想制作一个简单的网页索引器来抓取网页,并将所有find的页面保存在一个MySQL数据库中,使用它们的标题和URL,这个表格(页面的内容不会被保存):
那个数据库有多大? 是几百MB,GB还是TB? 谢谢。
为了快速和肮脏的答案,滚动底部。 否则,请仔细阅读我的叙述,了解我是如何得出这些数字的。
在2008年,Google发布了一些您可能感兴趣的数据。 那时候,Google的蜘蛛意识到超过1万亿(即1,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_INCREMENT varchar(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 太字节
所以你有它。 1兆的URLs乘以我们定义的表的存储大小将占用将近556太字节的数据。 我们还必须添加索引,表开销和其他一些东西的数据。 同样,我们也可以减去数据,因为对于我们的练习,我假定每个varchar列都已被最大化。 我希望这有帮助。
(另外,只是一个简单的说明:我知道bigint专栏并不是无限的,但是当你不担心物stream的时候,做math就容易了)