6

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

我以前从来没有真正使用过这些,但是有人有任何资源和/或建议吗?

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

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

4

2 回答 2

2

看看repoze.catalog

repoze.catalog 是一个 Python 索引和搜索框架。它依赖于 zope.index,它的大部分内部结构都取自 zope.app.catalog。然而,与 zope.app.catalog 不同的是,它旨在在任意 Python 应用程序中的更大 Zope 框架之外有用。

于 2010-04-22T08:05:12.630 回答
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 包装器的成员函数中将是它的自然位置。

于 2012-09-28T11:19:17.530 回答