# Zope Object Database

La Zope Object Database (ZODB) es una base de datos orientada a objetos para almacenar de forma transparente y persistente objetos en el lenguaje de programación Python. Se incluye como parte de Zope, un Servidor de aplicaciones Web, pero también puede ser utilizado independientemente de Zope.

## Características

Las características de la ZODB se incluyen: transacciones, historial/deshacer, almacenamiento conectable de forma transparente, almacenamiento en caché, control de concurrencia multiversión (multiversion concurrency control - MVCC), y la escalabilidad a través de una red (usando ZEO).

## Historia

* Creado por Zope Corporation a finales de los años 1990.
* Inicio como un simple sistema de persistencia de Objetos (Persistent Object System - POS) durante el desarrollo de Principia (el cual posteriormente sería Zope)
* ZODB 3 fue renombrada cuando un cambio significante de la arquitectura fue publicado.
* ZODB 4 fue un proyecto de corta duración para volver a poner re-implementar todo el paquete de ZODB 3 usando 100% Python.

## ZEO

ZEO (Zope Enterprise Objects) es una implementación de almacenamiento de ZODB que permite varios procesos de clientes a la persistencia de objetos en un único servidor ZEO. Esto permite la escalabilidad transparente, pero el servidor ZEO es todavía un punto único de fallo.

## Almacenes de datos basado en conectores

* FileStorage - Permite que un único proceso de Python para hablar con un archivo en el disco.
* BlobStorage - Permite a los grandes datos binarios ser gestionado por la ZODB, pero separado de su habitual base de datos FileStorage, es decir Data.fs. Esto tiene varias ventajas, la más importante un archivo Data.fs mucho más pequeños y un mejor rendimiento tanto en CPU, así como de la memoria.
* RelStorage - Permite el almacenamiento de respaldo persistencia para ser un RDBMS.
* NetworkStorage (también conocido como ZEO) - Permite cargar varios procesos de Python y almacenar instancias persistentes al mismo tiempo.
* DirectoryStorage - Cada dato persistente se almacena como un archivo separado en el sistema de archivos. Al igual que en FSFS en Subversion.
* DemoStorage - Un fondo en memoria para el almacenamiento persistente. Proporcione un ejemplo de implementación de un almacenamiento completo sin distraer información acerca del almacenamiento, este tipo de almacenamiento es volátil lo cual es útil para dar demostraciones.
* BDBStorage - que utiliza Berkeley DB back-end. Ahora abandonada.

## Tecnologías de conmutación por error

* Servicios de replicación de Zope (ZRS) - Un producto que elimina el punto único de fallo, proporcionando copia de seguridad en caliente de las escrituras y lecturas de equilibrado de carga.
* ZEORaid - Una solución de código abierto que proporciona un servidor proxy de red que distribuye el almacenamiento de objetos y la recuperación a través de una serie de servidores de red.
* RelStorage - usa las tecnologías RDBMS así de esta forma se evitas la necesidad de servidor [ZODB#ZEO ZEO].
* NEO - Distribuido (tolerancia a fallos, equilibrio de carga) la aplicación de almacenamiento. No está listo para su uso en producción todavía (a partir de 01/2011).