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