ZODB, the Zope Object Database (May 2003)

100 %
0 %
Information about ZODB, the Zope Object Database (May 2003)

Published on March 5, 2014

Author: jace



A presentation on the Zope Obect Database, made to the Bangalore LUG in May 2003. ZODB was an early entrant to what is called NoSQL these days.

ZODB The Zope Object Database An introduction to the open source object database, by Kiran Jonnalagadda <>

Agenda Where relational databases are unwieldy The object database methodology A brief introduction to Python Mechanics of ZODB Limitations Resources

Relational Database Records Record 1 Record 2 ... First Name Atul Kiran ... Last Name Chitnis Age 41 24 ... Phone No. 344 0397 658 2921 ... Jonnalagadda ... Individual Record Is Not Extensible Extensible Field

Issues with Relational DBs Can’t store multiple values in a single field Can’t add extra fields to individual records Solved by adding extra relational tables With complex data, this gets unmanageable Developer time is wasted writing a database interaction layer

Object Hierarchy ... Atul Chitnis First Name Last Name Address Book Database Kiran Jonnalagadda Age ... ... Phone Number ...

Object Concepts An object oriented database stores objects instead of database records Objects contain variables (data) and methods to act on these variables; may be inherited Objects are usually organised hierarchically Most object databases are bound to a specific language because each language implements OOP differently

Introducing ZODB High performance Transparent Operation and Caching Transactional: Unlimited Undo Multi-threaded Storage plugins Needs Python

Why Python? Python is a dynamic typed and a strong typed language Python is dynamic: everything can be modified at runtime. Class members, base classes, whatever

What Dynamic Means Variables Are: Dynamic Typed Static Typed Strong Typed Python C, C++, Java Weak Typed Perl, PHP, JS, Shell Script *

What ZODB is Not Not a relational database No SQL support No security model No query interface: Objects must be accessed via container A separate search engine is available

ZODB: The Mechanics

Really Simple Usage All classes must be derived from the “Persistent” base class provided by ZODB At the start of your program, open a ZODB connection Commit the transaction periodically That is all! Code need not be ZODB aware

Example Code # Necessary imports from ZODB import FileStorage, DB from Persistence import Persistent # Connect to a database storage = FileStorage.FileStorage('/tmp/test-filestorage.fs') db = DB(storage) conn = # Get the root of the database dbroot = conn.root() # Defining user classes class UserDataClass(Persistent): pass # Commit or abort after making a change get_transaction().commit() get_transaction().abort()

Remote Storage: ZEO ZEO is Zope Enterprise Objects One ZEO serves multiple ZODB clients Databases can be mounted on each other, just like file systems No replicated storage yet

Available ZODB Storages FileStorage (standard) The entire database is stored in a single file DirectoryStorage Each object is stored as a separate file BerkeleyDB Storage The database is stored in BerkeleyDB ClientStorage Database is stored in a remote ZEO database

Limitations Only available via Python Transparency is sometimes undesirable Cannot detect changes in objects not derived from the Persistent base class, like a list or dictionary Programmer has to flag such objects as dirty ZEO is optimised for heavy reads, not writes

Resources ZODB Product Page: ZEO Product Page: An introduction to ZODB and ZEO: The Indian Zope and Python User Group:

Thank You! This presentation is available online at:

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Zope Object Database - Wikipedia, the free encyclopedia

Zope Object Database; Developer(s) Zope Foundation: ... The Zope Object Database (ZODB) is an object-oriented database for ... (open-source since May ...
Read more - Zope Object Database

... Home » Download Zope Products » Zope Object Database. ... Zope Object Database The ZODB package is a Python object persistence system.
Read more - Zope Object Database (ZODB) 3.2

... Home » Download Zope Products » Zope Object Database (ZODB) 3.2.; /Products /Members; Log ... 2003-02-03: published: NEWS
Read more

Zope Object Database – Wikipedia

Die Zope Object Database (englisch für Zope Objekt-Datenbank, auch ZODB) ist eine objektorientierte Datenbank, ...
Read more

Introduction to the Zope Object Database - Python ...

Introduction to the Zope Object Database ... the Zope Object Database (ZODB). ... a persistent object may temporarily
Read more

ZODB 4.0.0 : Python Package Index - PyPI - the Python ...

Zope Object Database: object database and persistence. Package Index. Browse packages; Package submission; ... A future version of ZODB may add such support.
Read more

How do I pack the ZODB? — Plone CMS: Open Source Content ...

How do I pack the ZODB? How do I pack the Zope Object Database? Also, why should I pack the zodb? ... There may be a little performance benefit.
Read more

GitHub - zopefoundation/ZODB: The ZODB object database

The ZODB object database ... Latest commit 9618301 May 12 ... The ZODB package provides a set of tools for using the Zope Object Database (ZODB).
Read more

The World of Zope —

The World of Zope During more than ... ZODB The Zope Object DataBase (ZODB) ... some of which may be non-Python-based.
Read more

ZODB - a native object database for Python — ZODB 3.10.3 ...

ZODB - a native object database for ... When accessing database objects, ... ZODB is a project managed by the Zope Foundation so you can get write ...
Read more