Какие-нибудь хорошие руководства и / или советы по индексации моих объектов в zodb? - PullRequest
5 голосов
/ 21 апреля 2010

Я собираюсь написать общий класс объектов для использования с zodb. Эти объекты будут добавлены в индекс btree, как только они будут сохранены в графе объектов zodb.

Я никогда раньше не работал с этим, но есть ли у кого-нибудь ресурсы и / или советы по этому поводу?

Обладая мощью zodb при работе со ссылками на объекты и хорошей стратегией индексации, я мог бы получить лучшее из обоих миров баз данных.

Любые другие мысли приветствуются, спасибо!

Ответы [ 2 ]

2 голосов
/ 22 апреля 2010

Посмотрите на repoze.catalog :

repoze.catalog - это среда индексации и поиска Python. Он основан на zope.index, и большинство его внутренних компонентов взято из zope.app.catalog. Однако, в отличие от zope.app.catalog, он предназначен для использования вне более широкой среды Zope в произвольных приложениях Python.

0 голосов
/ 28 сентября 2012

Зависит от ваших потребностей в индексировании, но когда все, что вам нужно - это доступность по идентификатору, вам, вероятно, не понадобится какой-либо модный пакет для индексирования.

Эти объекты будут добавлены в индекс btree, как только они будут сохранены в графе объектов zodb.

Ну, «добавить себя» означало бы, что они содержат ссылку на свое решение BTree / index. С другой стороны, вы говорите о том, «как только они будут сохранены», что подразумевает какую-то функцию «положить их в БД». Поэтому я предлагаю просто выполнить сохранение и индексирование объектов за один раз с помощью чего-то подобного:

def persist_obj(db, obj):
    tree = db.root()['mybtree']
    id = tree.maxKey() + 1
    obj.id = id
    tree[id] = obj

Если у вас есть обертка для вашей базы данных, естественным местом для этого будет помещение ее в функцию-член wour wrapper.

...