2010-04-21 10 views
5

Voy a escribir una clase de objeto general para usar con zodb. Estos objetos se agregarán a un índice btree una vez que se persistan en el gráfico del objeto zodb.¿Alguna buena guía y/o consejo para indexar mis objetos en zodb?

Nunca he trabajado con esto antes, pero ¿alguien podría tener algún recurso y/o consejo sobre cómo hacer esto?

Con el poder de zodb cuando se trata de referencias de objetos y una buena estrategia de indexación, podría terminar obteniendo lo mejor de ambos mundos de bases de datos.

Cualquier otra idea es más que bienvenida, ¡gracias!

+0

Una posible respuesta sería zcatalog o un equivalente independiente. Dicho esto, no estoy lo suficientemente familiarizado con Zope en general para entender si me vería obligado a adoptar algunos de sus propios enfoques. Si alguien tiene una guía sobre esto, por favor envíe una respuesta! –

Respuesta

2

Tenga una mirada en repoze.catalog:

repoze.catalog es una indexación de Python y el marco de la búsqueda. Se basa en zope.index y la mayoría de sus componentes internos están tomados de zope.app.catalog. Sin embargo, a diferencia de zope.app.catalog, debe ser útil fuera del marco Zope más grande dentro de las aplicaciones arbitrarias de Python.

+0

Parece que no puedo encontrar ningún tutorial completo para zope.index? Su página de inicio es aparentemente la página de pypi, en lugar de una zope ... Hmmm ... –

0

Depende de sus necesidades de indexación, pero cuando todo lo que necesita es accesibilidad mediante una identificación, es probable que no necesite ningún paquete de indexación sofisticado.

Estos objetos se sumarán a un índice btree una vez que se hayan conservado en el gráfico del objeto zodb.

Bueno, "agregarse a sí mismos" implicaría, que tienen una referencia a su solución de índice/BTree. Por otro lado, está hablando de "una vez que se persigue", lo que implica algún tipo de función de "ponerlos en la base de datos". Por lo que sugiero, sólo hago la persistencia y la indexación de los objetos de una sola vez con algo así:

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

Si usted tiene un contenedor para su base de datos, poniendo esto en una función miembro de la envoltura wour sería lo natural ubicación para eso.

Cuestiones relacionadas