【问题标题】:ZODB in-memory backend?ZODB 内存后端?
【发布时间】:2011-10-13 17:26:01
【问题描述】:

我目前正在从事一个神仙般的大型项目(活跃成员约为数百 K),并且非常倾向于 Plone 解决方案。

我问过一些与它相关的问题,例如herehere

从非常有经验的 Plonistas(以及活跃的 stackoverflowers)那里得到了一些回复。对此,我真的非常感激。人们一直说 Plone 不能很好地扩展到那么大,大部分原因是因为 ZODB。

然后我想到了 ZODB 的内存后端。 RAM现在真的很便宜!您只需约 3000 美元即可获得 128GB,是普通 300 美元的 128GB SSD 的十倍,与约 300MB 的 SSD 相比,实现约 30GB 的 IO 带宽。

内存后端 + Blob 用于二进制 + 10 秒磁盘日志记录用于备份 + 除了最后 10 秒之外的所有撤消都将是实例终止!与这种沙发*/redis 等相比,他们应该使用 RDBM 并提供完整的 ACID + 事务 + 对象映射。

技术可行吗?有什么实施吗?是否值得实施(在您看来)?

【问题讨论】:

    标签: plone zope zodb


    【解决方案1】:

    RelStorage 有一个 memcache 选项,可以在您需要使用慢速数据库时提供帮助,但实际上您可能应该将这种缓存留给您的操作系统,并确保您的数据库服务器有足够的 RAM。 (如果您的 RAM 足够大,那么您的文件系统缓存应该已经存储了大部分数据。)

    SSD 将显着降低随机访问尚未在文件系统缓存中的数据的最坏情况读取延迟。现在不使用它们似乎很愚蠢,特别是因为 Intel 330 SSD 非常便宜,并且有一个电容器,相当于一个电池支持的 raid 控制器(也使写入速度超快。)

    一个全在 RAM 的解决方案永远不能被认为是 ACID,因为它不会是持久的。

    正如我在你的另一篇文章的评论中提到的,这里的问题不是 ZODB,而是 Plone 同步使用单个竞争的 portal_catalog。

    【讨论】:

      【解决方案2】:

      您可以将portal_catalog 挂载到单独的挂载点并将其保存在内存中,而不是将整个ZODB 保存在内存中。我已经看到过这种配置,它可以为大约 8k 使用标准硬件(2 个服务器 + 1 个 zeo 服务器)的用户顺利运行。它可能足以满足您的需求,也许使用性能更高的硬件。

      【讨论】:

      • 感谢您的提醒。如果整个 ZODB 内存工作正常,我会这样做。
      猜你喜欢
      • 1970-01-01
      • 2019-05-05
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多