2010-03-05 24 views
40

Escribir una aplicación en Python, y estado jugando con varias configuraciones de ORM y SQL directo. Todos los cuales son feos como el pecado.ZODB en la vida real

He estado buscando en ZODB como una tienda de objetos, y parece una alternativa prometedora ... ¿la recomendarías? ¿Cuáles son sus experiencias, problemas y críticas, particularmente con respecto a las perspectivas del desarrollador, la escalabilidad, la integridad, el mantenimiento a largo plazo y las alternativas? ¿Alguien comienza un proyecto con él y lo abandona? ¿Por qué?

Mientras que las ideas detrás de ZODB, Pypersyst y otros son interesantes, parece que hay una falta de entusiasmo en torno a ellos :(

+0

-1: Juicio de valor: "empezando a odiar la discrepancia RDBMS/Objeto" ¿Podría eliminar el juicio de valor de la pregunta? ¿Hay alguna manera de enfocarse en los hechos y reducir el énfasis en sus odios personales? –

+16

@ S.Lott - Una edición renuente. No porque sea incorrecto, sino porque el -1 entró en línea con una solicitud que es grosera. Este no es el tapiz de Bayeux. –

Respuesta

25

He usado ZODB durante más de diez años, en Zope y en el exterior. Es genial si tus datos son jerárquicos. La mayor tienda de datos que un cliente opera tiene tal vez ... No sé ... ¿100 GB en ella? Algo en ese orden de magnitud de todos modos.

Aquí está a performance comparison against Postgres.

Si estás escribiendo una aplicación WSGI web, estos paquetes pueden ser útiles:

+1

Aceptado. No solo por la respuesta, sino que sigo encontrando tus publicaciones/artículos/presentaciones cuando busco en Google las cosas que necesito de ZODB. ¡Sé a quién dirigir más preguntas! ;) –

+0

Este http://docs.zope.org/zope3/Code/BTrees/index.html también es útil – amirouche

+0

Enlace realmente interesante sobre el rendimiento allí. ¡Vale la pena leer! – fatuhoku

2

ZODB se ha utilizado para un montón de grandes bases de datos

uso

más ZODB es/Zope fue probablemente usuarios que migraron de distancia si emigran lejos de Zope

El rendimiento no es tan bueno como la base de datos relatonal + ORM especialmente si usted tiene un montón de escrituras.

mantenimiento a largo plazo no es tan ba d, desea empacar la base de datos de vez en cuando, pero eso se puede hacer en vivo.

usted tiene que utilizar ZEO si se va a utilizar más de un proceso con su ZODB que es mucho más lento que usar ZODB directamente

no tengo ni idea de cómo ZODB realiza en discos flash.

+0

¡Gracias por la respuesta! Me pregunto si ZODB encajará en lugar de MySQL usando ZEO en una configuración de webfarma. Se espera que el almacenamiento en caché serio anule el lento rendimiento de la tienda. –

+3

ZODB generalmente fuma bases de datos relacionales para consultas repetidas cuando los datos no cambian, incluso con ZEO en la mezcla, porque ya hay una memoria caché del lado del cliente. –

0

Con decapado, debe poder utilizar cualquier base de datos key value de forma similar.

+3

A menos que salte tanto 'a' como 'b', que cada referencia 'c' seguramente? –

+0

@Aiden, ¿cómo maneja zodb ese estuche? – mikerobi

+8

ZODB lo maneja de forma transparente. Ver http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0 –

14

En comparación con "cualquier almacén de clave-valor", las características clave para ZODB serían la integración automática de cambios de atributos con transacciones ACID reales, y referencias limpias, "arbitrarias" a otros objetos persistentes.

El ZODB es más grande que sólo la FileStorage usado por defecto en Zope:

  • El backend RelStorage le permite poner sus datos en un RDBMS que puede ser una copia de seguridad, replicado, etc., utilizando herramientas estándar.
  • ZEO permite escalar fácilmente los servidores de aplicaciones y los trabajos fuera de línea.
  • El soporte de confirmación en dos fases permite coordinar transacciones entre varias bases de datos, incluidos RDBMS (suponiendo que proporcionan una capa compatible con TPC).
  • Jerarquía fácil en función de los atributos del objeto o la contención: no es necesario que escriba autouniones recursivas para emularla.
  • El soporte BLOB basado en el sistema de archivos hace que sea trivial implementar archivos de gran tamaño.

En general, estoy muy contento de usar ZODB para casi cualquier problema donde la forma de los datos no es obviamente "cuadrada".

+0

+1 - interesante leer –

4

Recomendaría eso.

Realmente no tengo ninguna crítica. Si es un almacén de objetos lo que buscas, este es el que debes usar. He almacenado 2,5 millones de objetos antes y no sentí una pizca.

Cuestiones relacionadas