我目前正在开展一个神奇的大型项目(活跃成员大约数百K)并且非常倾向于Plone解决方案。
得到了一些非常有经验的Plonistas(以及活跃的stackoverflowers)的回复。对此,我真的非常感激。人们一直说Plone不能很好地扩展到那么大,而且大部分原因都是因为ZODB。
然后我想到了ZODB的内存后端。 RAM现在真的很便宜!只需~3000美元即可获得128GB,比普通300美元128GB SSD高出10倍,与300MB左右的SSD相比,可实现~30GB的IO带宽。
内存后端+ Blob for binary + 10s disk journalling for backup + all undos除了last 10s将是一个实例kill!他们应该抽取RDBM并提供完整的ACID + Transaction + Object Mapping比较这样的沙发* / redis等。
技术可行吗?有没有实施?是否值得实施(在您看来)?
答案 0 :(得分:3)
RelStorage有一个memcache选项,当你需要使用一个慢速数据库时会有所帮助,但实际上你应该将这种缓存留给你的操作系统,并确保你的数据库服务器有足够的RAM。 (如果你的RAM足够大,那么你的文件系统缓存应该已经存储了大部分数据。)
SSD将显着减少对文件系统缓存中尚未存在的数据的随机访问的最坏情况读取延迟。现在使用它们似乎很愚蠢,特别是因为英特尔330固态硬盘非常便宜并且有一个电容器相当于电池支持的raid控制器(使写入速度也超高。)
全内存解决方案永远不能被视为ACID,因为它不会持久耐用。
正如我在你的另一篇文章评论中提到的那样,这不是ZODB的问题,而是Plone同时使用一个竞争的portal_catalog。
答案 1 :(得分:2)
您可以将portal_catalog安装在单独的挂载点中,并将其保存在内存中,而不是将整个ZODB保留在内存中。我已经看过这样的配置,它可以使用标准硬件(2台服务器+ 1台zeo服务器)为大约8k用户顺利运行。它可能足以满足您的需求,也许可以使用性能更高的hw。