在zodb索引我的对象的任何好的指南和/或建议?

时间:2010-04-21 17:36:18

标签: python indexing b-tree zodb

我将编写一个与zodb一起使用的通用对象类。一旦它们被持久化到zodb对象图形,这些对象就会将它们自己添加到btree索引中。

我之前从未真正与之合作,但是有人会有任何资源和/或建议来做这件事吗?

在处理对象引用和良好的索引策略时,zodb具有强大的功能,我最终可以充分利用这两个数据库世界。

非常欢迎任何其他想法,谢谢!

2 个答案:

答案 0 :(得分:2)

查看repoze.catalog

  

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包装器的成员函数中将是它的自然位置。