43

用 Python 编写应用程序,并一直在使用各种 ORM 设置和直接 SQL。所有这些都像罪恶一样丑陋。

我一直将 ZODB 视为一个对象存储,它看起来是一个很有前途的替代方案……你会推荐它吗?你有什么经验、问题和批评,特别是关于开发人员的观点、可扩展性、完整性、长期维护和替代方案?有人用它开始一个项目并放弃它吗?为什么?

虽然 ZODB、Pypersyst 和其他人背后的想法很有趣,但似乎对他们缺乏热情:(

4

5 回答 5

27

我在 Zope 内外使用 ZODB 已有十多年了。如果您的数据是分层的,那就太好了。客户运营的最大数据存储可能拥有。不知道,有100GB吗?反正就是那个数量级的东西。

这是与 Postgres 的性能比较

如果您正在编写 WSGI Web 应用程序,这些包可能很有用:

于 2010-03-05T21:35:57.993 回答
15

与“任何键值存储”相比,ZODB 的关键特性是属性更改与真实 ACID 事务的自动集成,以及对其他持久对象的干净、“任意”引用。

ZODB 不仅仅是 Zope 默认使用的 FileStorage:

  • RelStorage 后端允许您将数据放入 RDBMS 中,可以使用标准工具进行备份、复制等。
  • ZEO 允许轻松扩展应用服务器和离线作业。
  • 两阶段提交支持允许在多个数据库之间协调事务,包括 RDBMS(假设它们提供 TPC 感知层)。
  • 基于对象属性或包含的简单层次结构:您无需编写递归自连接来模拟它。
  • 基于文件系统的 BLOB 支持使服务大文件变得轻而易举。

总的来说,我很高兴将 ZODB 用于几乎所有数据形状不是明显“正方形”的问题。

于 2010-03-05T21:27:34.390 回答
5

我会推荐它。

我真的没有任何批评。如果它是您正在寻找的对象存储,那么这就是要使用的对象。我之前已经在其中存储了 250 万个对象并且没有感到挤压。

于 2010-03-06T01:57:12.410 回答
2

ZODB 已用于大量大型数据库

大多数 ZODB 使用是/可能是 Zope 用户,如果他们从 Zope 迁移出去,他们就会迁移出去

性能不如关系数据库 + ORM 好,尤其是在您有大量写入的情况下。

长期维护还不错,你想时不时打包数据库,但那可以现场完成。

如果要对 ZODB 使用多个进程,则必须使用 ZEO,这比直接使用 ZODB 慢得多

我不知道 ZODB 在闪存盘上的表现如何。

于 2010-03-05T18:53:14.670 回答
0

通过酸洗,您应该能够以类似的方式使用任何键值数据库。

于 2010-03-05T20:56:02.047 回答