Mercurial > hg > blitz_condensed
diff src/org/dancres/blitz/entry/package.html @ 0:3dc0c5604566
Initial checkin of blitz 2.0 fcs - no installer yet.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Sat, 21 Mar 2009 11:00:06 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/dancres/blitz/entry/package.html Sat Mar 21 11:00:06 2009 +0000 @@ -0,0 +1,39 @@ +<body> + +<P> The blitz storage engine lives in this package and is responsible for +storage and indexing of MangledEntry instances. It is built around the concept +of virtual memory with EntrySleeves being the equivalent of pages which can +be cached or written to Storage instances. </P> + +<P> EntrySleeves contain a certain amount of transient information +(SleeveState) which is used to manage them whilst they are cached in +memory </P> + +<P> EntrySleeves may be pinned in memory using the PINNED flag. This +prevents any state changes made from being reflected to disk (this is most +often used to prevent writes getting to disk until the containing +transaction has commited). Other flags identify dirty, deleted or never +written EntrySleeves which determines what should be done when EntrySleeve +state is sync'd back to disk. </P> + +<P> Recently written entries are not immediately written to disk (though they +are logged) on the assumption that these Entries might well be immediately +taken which has the potential to save us a disk write/delete cycle. </P> + +<P> Note: flushing in this context means removal from the cache and can only +occur after sync'ing which is the copying of appropriate state to disk. Of +course, if the state of an EntrySleeve hasn't changed disk needn't be updated. +</P> + +<p> Storage management is mostly done in EntryStorage which delegates a lot +of responsibility to WriteScheduler (manages PINNED Sleeves). +WriteScheduler delegates handling of updates to WriteBuffer which +asynchronously updates disk via WriteDaemon. We use asynchronous writing +because it allows the upper layers to avoid waiting for disks to perform an +operation.</p> + +@see org.dancres.blitz.entry.SleeveState +@see org.dancres.blitz.entry.WriteScheduler +@see org.dancres.blitz.entry.WriteBuffer +@see org.dancres.blitz.disk.WriteDaemon +</body> \ No newline at end of file