我将编写一个用于 zodb 的通用对象类。一旦这些对象被持久化到 zodb 对象图中,它们就会将它们自己添加到 btree 索引中。
我以前从来没有真正使用过这些,但是有人有任何资源和/或建议吗?
凭借 zodb 在处理对象引用时的强大功能和良好的索引策略,我最终可以充分利用这两个数据库世界。
任何其他想法都非常受欢迎,谢谢!
repoze.catalog 是一个 Python 索引和搜索框架。它依赖于 zope.index,它的大部分内部结构都取自 zope.app.catalog。然而,与 zope.app.catalog 不同的是,它旨在在任意 Python 应用程序中的更大 Zope 框架之外有用。
取决于您的索引需求,但是当您只需要通过 id 访问时,您可能不需要任何花哨的索引包。
一旦这些对象被持久化到 zodb 对象图中,它们就会将它们自己添加到 btree 索引中。
好吧,“添加自己”意味着他们持有对他们的 BTree / 索引解决方案的引用。另一方面,您正在谈论“一旦它们被持久化”,这意味着某种“将它们放入数据库”功能。所以我建议,只需使用类似的方法一次性完成对象的持久化和索引:
def persist_obj(db, obj):
tree = db.root()['mybtree']
id = tree.maxKey() + 1
obj.id = id
tree[id] = obj
如果您的数据库有一个包装器,那么将它放在 wour 包装器的成员函数中将是它的自然位置。