ZODB在现实生活中

使用Python编写应用程序,并使用各种ORM设置和直接的SQL进行操作。 所有这些都是丑陋的罪过。

我一直在寻找ZODB作为一个对象存储,它看起来很有希望的替代scheme…你会推荐它吗? 什么是您的经验,问题和批评,特别是关于开发人员的观点,可扩展性,完整性,长期维护和替代? 任何人开始一个项目,并把它呢? 为什么?

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

我已经使用ZODB超过十年了,在Zope和外面。 如果你的数据是分层的,那就太好了。 一个客户经营的最大的数据存储可能..我不知道… 100GB的呢? 无论如何,这个数量级的东西。

这是一个与Postgres的性能比较 。

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

  • repoze.tm2 ( docs )

  • repoze.zodbconn ( docs )

与“任何键值存储”相比,ZODB的关键特性是将属性更改与实际的ACID事务自动集成,并清除对其他持久对象的“任意”引用。

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

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

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

我会推荐它。

我真的没有任何批评。 如果它是您寻找的对象商店,这是使用的。 我之前已经存储了250万个对象,并没有感觉到掐指。

ZODB已被用于大量的大型数据库

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

性能不如relatonal database + ORM,尤其是如果你有很多的写操作。

长期维护并不是那么糟糕,你想不时打包数据库,但可以现场完成。

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

我不知道ZODB如何在闪存盘上执行。

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