Published on March 5, 2014
ZODB The Zope Object Database An introduction to the open source object database, by Kiran Jonnalagadda <email@example.com> http://jace.seacrow.com/
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 ﬁeld Can’t add extra ﬁelds 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 speciﬁc 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 modiﬁed 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-ﬁlestorage.fs') db = DB(storage) conn = db.open() # Get the root of the database dbroot = conn.root() # Deﬁning 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 ﬁle systems No replicated storage yet
Available ZODB Storages FileStorage (standard) The entire database is stored in a single ﬁle DirectoryStorage Each object is stored as a separate ﬁle 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 ﬂag such objects as dirty ZEO is optimised for heavy reads, not writes
Resources ZODB Product Page: http://zope.org/Products/StandaloneZODB ZEO Product Page: http://zope.org/Products/ZEO/ An introduction to ZODB and ZEO: http://www.amk.ca/zodb/zodb-zeo.html The Indian Zope and Python User Group: http://groups.yahoo.com/group/izpug
Thank You! This presentation is available online at: http://jace.seacrow.com/tech/zope/blug-zodb
Zope Object Database; Developer(s) Zope Foundation: ... The Zope Object Database (ZODB) is an object-oriented database for ... (open-source since May ...
... Home » Download Zope Products » Zope Object Database. ... Zope Object Database The ZODB package is a Python object persistence system.
... Home » Download Zope Products » Zope Object Database (ZODB) 3.2. www.zope.org; old.zope.org /Products /Members; Log ... 2003-02-03: published: NEWS
Die Zope Object Database (englisch für Zope Objekt-Datenbank, auch ZODB) ist eine objektorientierte Datenbank, ...
Introduction to the Zope Object Database ... the Zope Object Database (ZODB). ... a persistent object may temporarily
Zope Object Database: object database and persistence. Package Index. Browse packages; Package submission; ... A future version of ZODB may add such support.
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.
The ZODB object database ... Latest commit 9618301 May 12 ... The ZODB package provides a set of tools for using the Zope Object Database (ZODB).
The World of Zope During more than ... ZODB The Zope Object DataBase (ZODB) ... some of which may be non-Python-based.
ZODB - a native object database for ... When accessing database objects, ... ZODB is a project managed by the Zope Foundation so you can get write ...