我开发了一个新网站,并希望将GridFS用作所有用户上载的存储,因为与常规文件系统存储相比,它提供了很多优势。
nginx服务的GridFS的基准测试表明,它不如nginx服务的普通文件系统快。
有没有人在生产环境中使用GridFS,或者将其用于新项目?
我开发了一个新网站,并希望将GridFS用作所有用户上载的存储,因为与常规文件系统存储相比,它提供了很多优势。
nginx服务的GridFS的基准测试表明,它不如nginx服务的普通文件系统快。
有没有人在生产环境中使用GridFS,或者将其用于新项目?
Answers:
我在其中一台服务器上使用gridfs,该服务器是价格比较网站的一部分,具有可观的流量统计信息(每天约有25k访客)。服务器没有太多ram,2gigs,甚至cpu也不是很快(Core 2 duo 1.8Ghz),但是服务器有足够的存储空间:raid 0配置中为10Tb(sata)。服务器正在做的工作非常简单:
价格比较器上的每个产品都有一个映像(根据我们的产品数据库,大约有1000万个产品),服务器的工作是下载映像,调整大小,将其存储在gridfs上并将其交付给访问者浏览器。 ..如果它不存在于网格中...或...如果已将其存储在网格中,则将其传递给访问者浏览器。因此,这可以称为“传统CDN模式”。
自服务器启动并运行以来,我们已在该服务器上存储和处理了400万张图像。调整大小和存储内容是由一个简单的php脚本完成的,但是可以肯定,使用python脚本或类似Java的脚本可能会更快。
当前数据大小:11.23g
当前存储大小:12.5g
指数:5
索引大小:849.65m
关于可靠性:这是非常可靠的。服务器未加载,索引大小正常,查询速度快
关于速度:当然,它不像本地文件存储那样快,可能慢10%,但是足够快,即使需要处理图像时也可以实时使用,在我们的情况下,这非常依赖php。维护和开发时间也减少了:删除单个或多个图像变得如此简单:只需使用简单的delete命令查询数据库。另一个有趣的事情是:当我们使用本地文件存储重新启动旧服务器时(成千上万个文件夹中有数百万个文件),由于系统正在执行文件完整性检查(有时要花费数小时……),有时它挂起了几个小时。gridfs不再存在此问题,我们的图像现在存储在较大的mongodb块中(2gb文件)
所以...在我看来...是的,gridfs足够快速,可靠,可以用于生产。
我不建议您使用gridfs,除非您知道自己在做什么。GridFS只是抽象层,它将文件分成多个块并将文件存储在两个集合中。更多文件-更多开销。如果您希望文件大小大致相同,不超过32M左右-则使用正确的方法。不要尝试在gridfs上存储大文件。为什么?
如果您考虑读取已加载的项目,请考虑将文件直接加载到文档中(如果大小为16M或更小),或者选择另一个clusterfs,然后将文件名/索引节点链接到您的逻辑。
希望这可以帮助。