[Zodb-checkins] SVN: ZODB/branches/ctheune-blobsupport/src/ZODB/Blobs/concept.txt Clean up formatting to 80 cols and add a restriction noting that BlobFiles can't live beyond the transaction in which their "open" call was invoked.

Chris McDonough chrism at plope.com
Thu Mar 24 17:11:39 EST 2005


Log message for revision 29670:
  Clean up formatting to 80 cols and add a restriction noting that BlobFiles can't live beyond the transaction in which their "open" call was invoked.
  

Changed:
  U   ZODB/branches/ctheune-blobsupport/src/ZODB/Blobs/concept.txt

-=-
Modified: ZODB/branches/ctheune-blobsupport/src/ZODB/Blobs/concept.txt
===================================================================
--- ZODB/branches/ctheune-blobsupport/src/ZODB/Blobs/concept.txt	2005-03-24 22:10:26 UTC (rev 29669)
+++ ZODB/branches/ctheune-blobsupport/src/ZODB/Blobs/concept.txt	2005-03-24 22:11:39 UTC (rev 29670)
@@ -1,5 +1,6 @@
 
-Goal: Handle BLOBs (within the Zope context) better.
+Goal: Handle storage and retrieval of binary large objects efficiently,
+      transactionally, and transparently.
 
 Measure:
 
@@ -13,11 +14,14 @@
     
 Comments:
 
-    -   Cache: BLOBs could be cached in a seperate "BLOB" space, e.g. in single files
-    -   Be storage independent?
+    - Cache: BLOBs could be cached in a seperate "BLOB" space, e.g. in
+      single files
 
-    -   Memory efficiency: Storge.load() currently holds all data of an object in a string.
+    - Be storage independent?
 
+    - Memory efficiency: Storge.load() currently holds all data of an
+      object in a string.
+
 Steps:
 
     - simple aspects:
@@ -36,30 +40,40 @@
 
     - complicated aspects
 
+        - temporary files holding blob data could server as a
+          separated cache for blob data
 
-        - temporary files holding blob data could server as a separated cache for blob data
-
         - storage / zodb api change
         
-        - 
-
 Restrictions:
 
-    -   a particular BLOB instance can't be open for read _and_ write at the same time 
+    - a particular BLOB instance can't be open for read _and_ write at
+      the same time
 
         -   Allowed: N readers, no writers; 1 writer, no readers
 
         -   Reason: 
 
+    - a writable filehandle opened via a BLOB's 'open' method has a
+      lifetime tied to the transaction in which the 'open' method was
+      called.  We do this in order to prevent changes to blob data
+      from "bleeding over" between transactions.
 
+- Data has been committed? -> File(name) for commited data available
 
-- Data has been committed? -> File(name) for commited data available
 - .open("r") on fresh loaded blob returns committed data
+
 - first .open("w") -> new empty file for uncommitted data
-- .open("a") or .open("r+"), we copy existing data into file for uncommitted data
-- if uncommitted data exists, subsequent .open("*") will use the uncommitted data
-- if opened for writing, the object is marked as changed (optimiziation possible)
 
+- .open("a") or .open("r+"), we copy existing data into file for
+  uncommitted data
+
+- if uncommitted data exists, subsequent .open("*") will use the
+  uncommitted data
+
+- if opened for writing, the object is marked as changed
+  (optimiziation possible)
+
 - connections want to recognize blobs on transaction boundaries
 
-- 
+



More information about the Zodb-checkins mailing list