就像他们的朋友使用静态类型的语言进行编程一样,Python和其他动态语言的程序员经常使用关系数据库作为后端数据存储。 无论他们是使用SQL直接定义数据库表还是使用其框架或ORM提供的模式语言作为替代,所有这些解决方案都提供了类似的工作流程:应用程序设计者必须指定每个属性的名称,类型和约束,而不是实例。每个类的实例都将支持,作为回报,实例化数据库关系可以持久化那些对象的实例。
十多年前,Zope公司首先提供了一种替代方案,他们旨在更好地适应动态语言的数据模型:Zope对象数据库(ZODB),该数据库专门研究可扩展对象而不是经典关系的存储。 如今,数据库引擎通常是Zope支持的Web应用程序的基础。
在关系数据库之上使用ZODB还是ORM的决定涉及重要的权衡,我们将在本文中进行探讨,以及维护生产ZODB实例的基本指南。
Jim Fulton的ZODB提示
ZODB包含一个BTree实现,该实现允许定义和使用类似关系的结构。 Zope“目录”可以像关系表一样使用。 用于根对象的对象不是非常可伸缩的。 大型集合应使用放置在根对象(或下面)中的BTree。 而且,根对象的键不限于字符串。
吉姆·富尔顿是谁?
Jim Fulton是Zope对象数据库的创建者和维护者之一。 Jim还是Zope对象发布环境和Zope公司CTO的创建者之一。