zodb, the zope object database (may 2003)

Post on 30-Jun-2015

295 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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.

TRANSCRIPT

An introduction to the open source object database, by

Kiran Jonnalagadda <jace@pobox.com>http://jace.seacrow.com/

ZODBThe Zope Object Database

Where relational databases are unwieldy

The object database methodology

A brief introduction to Python

Mechanics of ZODB

Limitations

Resources

Agenda

Relational Database Records

Field Record 1 Record 2 ...

First Name Atul Kiran ...

Last Name Chitnis Jonnalagadda ...

Age 41 24 ...

Phone No. 344 0397 658 2921 ...

Exte

nsib

le

Individual Record Is Not Extensible

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

Address BookDatabase

KiranJonnalagadda

Atul Chitnis

...

...

First Name

Last Name

Age

Phone Number

...

...

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

Object Concepts

High performance

Transparent Operation and Caching

Transactional: Unlimited Undo

Multi-threaded

Storage plugins

Needs Python

Introducing ZODB

Python is a dynamic typed and a strong typed language

Python is dynamic: everything can be modified at run-time. Class members, base classes, whatever

Why Python?

What Dynamic Means

Variables Are: Dynamic Typed Static Typed

Strong Typed Python C, C++, Java

Weak Typed Perl, PHP, JS,Shell Script *

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

What ZODB is Not

ZODB: The Mechanics

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

Really Simple Usage

Example Code

# Necessary importsfrom ZODB import FileStorage, DBfrom Persistence import Persistent

# Connect to a databasestorage = FileStorage.FileStorage('/tmp/test-filestorage.fs')db = DB(storage)conn = db.open()

# Get the root of the databasedbroot = conn.root()

# Defining user classesclass UserDataClass(Persistent): pass

# Commit or abort after making a changeget_transaction().commit()get_transaction().abort()

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

Remote Storage: ZEO

FileStorage (standard)The entire database is stored in a single file

DirectoryStorageEach object is stored as a separate file

BerkeleyDB StorageThe database is stored in BerkeleyDB

ClientStorageDatabase is stored in a remote ZEO database

Available ZODB Storages

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

Limitations

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

Resources

This presentation is available online at:http://jace.seacrow.com/tech/zope/blug-zodb

Thank You!

top related