tutorial objects python zodb

objects - zodb python tutorial



ZODB en la vida real (5)

Escribí una aplicación en Python y jugamos con varias configuraciones de ORM y SQL directo. Todos los cuales son feos como el pecado.

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

Si bien las ideas detrás de ZODB, Pypersyst y otros son interesantes, parece haber una falta de entusiasmo para ellos :(


Con el decapado, debería poder utilizar cualquier base de datos de valores clave de manera similar.


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

El ZODB es más grande que solo el FileStorage usado por defecto en Zope:

  • El back-end RelStorage le permite poner sus datos en un RDBMS que puede ser respaldado, replicado, etc. usando 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 la coordinación de transacciones entre múltiples bases de datos, incluyendo RDBMS (asumiendo que proporcionan una capa compatible con TPC).
  • Jerarquía sencilla basada en atributos de objeto o contención: no es necesario escribir autocombustas recursivas para emularla.
  • El soporte de BLOB basado en el sistema de archivos hace que el servicio de archivos grandes sea trivial de implementar.

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


He usado ZODB por más de diez años, en Zope y afuera. Es genial si tus datos son jerárquicos. El almacén de datos más grande que un cliente opera tiene tal vez ... No sé ... ¿100 GB en él? Algo en ese orden de magnitud de todos modos.

Aquí hay una comparación de rendimiento contra Postgres .

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


Yo lo recomendaría.

Realmente no tengo ninguna crítica. Si es un almacén de objetos que busca, este es el que debe usar. He almacenado 2.5 millones de objetos en ella antes y no sentí un pellizco.


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

La mayoría del uso de ZODB es / fue probablemente de los usuarios de Zope que migran si migran desde Zope

El rendimiento no es tan bueno como la base de datos relatonal + ORM, especialmente si tiene muchas escrituras.

El mantenimiento a largo plazo no es tan malo, desea empaquetar la base de datos de vez en cuando, pero eso puede hacerse en vivo.

Debe usar ZEO si va a usar más de un proceso con su ZODB, que es bastante más lento que usar ZODB directamente

No tengo idea de cómo se realiza ZODB en discos flash.