我需要为数以亿计的图像(现在我有7000万,这个数字还在不断增加中)准备的存储。 每个图像都有约。 20KB。 当然,我可以将它们存储在一个文件系统,但我affraid inode的数量。 我已经测试的MongoDB和Cassandra的。 他们都有缺点(我有限的硬盘资源):
- 的MongoDB - 磁盘空间消耗比原始数据的尺寸大3倍
- 卡桑德拉 - 磁盘空间的消耗是类似于原始数据的大小,但卡桑德拉需要大量的可用空间压缩处理顺序
任何人都可以提出这类问题妥善解决?
我需要为数以亿计的图像(现在我有7000万,这个数字还在不断增加中)准备的存储。 每个图像都有约。 20KB。 当然,我可以将它们存储在一个文件系统,但我affraid inode的数量。 我已经测试的MongoDB和Cassandra的。 他们都有缺点(我有限的硬盘资源):
任何人都可以提出这类问题妥善解决?
我已经在我的生活,做既S3视频分发(Rackspace公司cloudfiles包括)和MongoDB。
大多数人,没有第二一目了然,会去S3但是我发现都有自己的缺点。 其中一个大问题是,S3是不是一个CDN,它实际上是不会复制到其他S3区域中的特定区域内的冗余存储,这意味着你需要使用像CloudFront的S3上的顶部ping你的图片以一种高速缓存的,如果你要得到你的网站严重负荷。
S3还具有其他的特征:使得它不太CDN-ISH和更多的存储仓库。 话虽这么说,对于不经常访问的文件S3是极快的。
这种双重当然层产生的复杂性,如维护。 不仅如此,但一个CDN将在TTLS和即使工作很多的CDN现在给天有边缘净化能力,他们仍然无法确保了100%的肯定的方式您的文件无法访问。
因此,由于设置和的访问(即应该被删除的文件可能访问)这有可能会相当昂贵的相当迅速。
这是MongoDB的可以赢。 MongoDB的可能,这取决于您的方案,实际上是便宜这里由于事实,你可以用一大堆微实例在AWS上实际持有您的信息,增加现货实例保留这些实例(便宜)和所有你需要是一台机器上一个大的磁盘。
该死的,你甚至可以使用S3的图像,然后MongoDB中存储为CloudFront的替代品。
当要ping的图像到不同的区域,你只是做了几个点的实例在目标区域,并得到MongoDB的跨复制它的数据。 你可以做一些库尔东西与复制也使从该区域确保只有经常访问的文件被放置在该区域。
所以,我不会扔出去的MongoDB(甚至卡桑德拉),而我会做两者之间的测试手段。
至于有关S3定价的补充说明,如果你保存在RR文件(精简冗余),那么价格一半(约),这使得S3很便宜,但是,你仍然有S3不是CDN的问题。
因为我真的只能从@cirrus的回答进行了我实际上将重新评估你的问题这是有点上述回答。
举例来说,YouTube的实际存储他们所有的单台计算机,然后可分布图像,这样他们就可以轻松管理200米缩略图和......好了很多意见,每天很容易地从文件系统。 因此,我认为你对文件系统的担心是高估的。
至于哪个数据库是更好的......我不知道,这归结为您的测试。
我的意思是回答您的问题取决于您的情况和您的预算和您的硬件和你的资源,也就是说,如果你有AWS服务器,这将是一个完全不同的答案比在内部服务器专用。
你为什么不把它们粘在Amazon的S3或Azure的Blob存储? 他们更加适合,你不会有空间或内存的问题,你会不会有管理的部署。