[Zodb-checkins] CVS: ZODB3/ZODB/FileStorage - FileStorage.py:1.1.2.3
Jeremy Hylton
cvs-admin at zope.org
Thu Oct 30 15:38:06 EST 2003
Update of /cvs-repository/ZODB3/ZODB/FileStorage
In directory cvs.zope.org:/tmp/cvs-serv16923
Modified Files:
Tag: ZODB3-mvcc-2-branch
FileStorage.py
Log Message:
Remove format comments and add simple doc string.
The format comments are in format.py.
=== ZODB3/ZODB/FileStorage/FileStorage.py 1.1.2.2 => 1.1.2.3 ===
--- ZODB3/ZODB/FileStorage/FileStorage.py:1.1.2.2 Thu Oct 9 16:26:23 2003
+++ ZODB3/ZODB/FileStorage/FileStorage.py Thu Oct 30 15:38:01 2003
@@ -11,111 +11,10 @@
# FOR A PARTICULAR PURPOSE
#
##############################################################################
-#
-# File-based ZODB storage
-#
-# Files are arranged as follows.
-#
-# - The first 4 bytes are a file identifier.
-#
-# - The rest of the file consists of a sequence of transaction
-# "records".
-#
-# A transaction record consists of:
-#
-# - 8-byte transaction id, which is also a time stamp.
-#
-# - 8-byte transaction record length - 8.
-#
-# - 1-byte status code
-#
-# - 2-byte length of user name
-#
-# - 2-byte length of description
-#
-# - 2-byte length of extension attributes
-#
-# - user name
-#
-# - description
-#
-# - extension attributes
-#
-# * A sequence of data records
-#
-# - 8-byte redundant transaction length -8
-#
-# A data record consists of
-#
-# - 8-byte oid.
-#
-# - 8-byte serial, which is a type stamp that matches the
-# transaction timestamp.
-#
-# - 8-byte previous-record file-position.
-#
-# - 8-byte beginning of transaction record file position.
-#
-# - 2-byte version length
-#
-# - 8-byte data length
-#
-# ? 8-byte position of non-version data
-# (if version length > 0)
-#
-# ? 8-byte position of previous record in this version
-# (if version length > 0)
-#
-# ? version string
-# (if version length > 0)
-#
-# ? data
-# (data length > 0)
-#
-# ? 8-byte position of data record containing data
-# (data length == 0)
-#
-# Note that the lengths and positions are all big-endian.
-# Also, the object ids time stamps are big-endian, so comparisons
-# are meaningful.
-#
-# Version handling
-#
-# There isn't a separate store for versions. Each record has a
-# version field, indicating what version it is in. The records in a
-# version form a linked list. Each record that has a non-empty
-# version string has a pointer to the previous record in the version.
-# Version back pointers are retained *even* when versions are
-# committed or aborted or when transactions are undone.
-#
-# There is a notion of "current" version records, which are the
-# records in a version that are the current records for their
-# respective objects. When a version is comitted, the current records
-# are committed to the destination version. When a version is
-# aborted, the current records are aborted.
-#
-# When committing or aborting, we search backward through the linked
-# list until we find a record for an object that does not have a
-# current record in the version. If we find a record for which the
-# non-version pointer is the same as the previous pointer, then we
-# forget that the corresponding object had a current record in the
-# version. This strategy allows us to avoid searching backward through
-# previously committed or aborted version records.
-#
-# Of course, we ignore records in undone transactions when committing
-# or aborting.
-#
-# Backpointers
-#
-# When we commit or abort a version, we don't copy (or delete)
-# and data. Instead, we write records with back pointers.
-#
-# A version record *never* has a back pointer to a non-version
-# record, because we never abort to a version. A non-version record
-# may have a back pointer to a version record or to a non-version
-# record.
-#
-__version__='$Revision$'[11:-2]
+"""Storage implementation using a log written to a single file.
+
+$Revision$
+"""
import base64
from cPickle import Pickler, Unpickler, loads
More information about the Zodb-checkins
mailing list