Table of Contents

Module: DemoStorage Zope-2.2.1-src/lib/python/ZODB/DemoStorage.py

Demo ZODB storage

The Demo storage serves two purposes:

  • Provide an example implementation of a full storage without distracting storage details,

  • Provide a volatile storage that is useful for giving demonstrations.

The demo strorage can have a "base" storage that is used in a read-only fashion. The base storage must not not to contain version data.

There are three main data structures:

_data

Transaction logging information necessary for undo

This is a mapping from transaction id to transaction, where a transaction is simply a 4-tuple:

packed, user, description, extension_data, records

where extension_data is a dictionary or None and records are the actual records in chronological order. Packed is a flag indicating whethe the transaction has been packed or not

_index

A mapping from oid to record

_vindex

A mapping from version name to version data

where version data is a mapping from oid to record

A record is a tuple:

oid, serial, pre, vdata, p,

where:

oid

object id

serial

object serial number

pre

The previous record for this object (or None)

vdata

version data

None if not a version, ortherwise: version, non-version-record

p

the pickle data or None

The pickle data will be None for a record for an object created in an aborted version.

It is instructive to watch what happens to the internal data structures as changes are made. Foe example, in Zope, you can create an external method:

  import Zope

  def info(RESPONSE):
      RESPONSE['Content-type']= 'text/plain'

      return Zope.DB._storage._splat()

and call it to minotor the storage.

Imported modules   
import BTree
import BaseStorage
import POSException
from TimeStamp import TimeStamp
import base64
from cPickle import loads
import string
import time
import utils
Classes   
DemoStorage

Table of Contents

This document was automatically generated on Mon Sep 4 07:33:06 2000 by HappyDoc version r0_6