X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep%2FInternals.pod;h=132bc9eff17bb68bb204a04a6fb949b6200183e6;hb=66285e35e40d582589aef424377640ca96745fce;hp=b5b0ff2a88e40fa70333f31955e65700ef0bdca4;hpb=e9b0b5f026035a56f53cecda0126cb62bc1da3da;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep/Internals.pod b/lib/DBM/Deep/Internals.pod index b5b0ff2..132bc9e 100644 --- a/lib/DBM/Deep/Internals.pod +++ b/lib/DBM/Deep/Internals.pod @@ -4,33 +4,37 @@ DBM::Deep::Internals =head1 DESCRIPTION -This is a document describing the internal workings of L. It is +B: This document is out-of-date. It describes an intermediate file +format used during the development from 0.983 to 1.0000. It will be rewritten +soon. + +This is a document describing the internal workings of L. It is not necessary to read this document if you only intend to be a user. This document is intended for people who either want a deeper understanding of -specifics of how L works or who wish to help program -L. +specifics of how L works or who wish to help program +L. =head1 CLASS LAYOUT -L is broken up into five classes in three inheritance hierarchies. +L is broken up into five classes in three inheritance hierarchies. =over 4 =item * -L is the parent of L and L. +L is the parent of L and L. These classes form the immediate interface to the outside world. They are the classes that provide the TIE mechanisms as well as the OO methods. =item * -L is the layer that deals with the mechanics of reading +L is the layer that deals with the mechanics of reading and writing to the file. This is where the logic of the file layout is handled. =item * -L is the layer that deals with the physical file. As a +L is the layer that deals with the physical file. As a singleton that every other object has a reference to, it also provides a place to handle datastructure-wide items, such as transactions. @@ -131,10 +135,10 @@ than the key. =head1 PERFORMANCE -L is written completely in Perl. It also is a multi-process DBM +L is written completely in Perl. It also is a multi-process DBM that uses the datafile as a method of synchronizing between multiple processes. This is unlike most RDBMSes like MySQL and Oracle. Furthermore, -unlike all RDBMSes, L stores both the data and the structure of +unlike all RDBMSes, L stores both the data and the structure of that data as it would appear in a Perl program. =head2 CPU @@ -256,9 +260,9 @@ Run time was 12 min 3 sec. =head2 MEMORY USAGE -One of the great things about L is that it uses very little memory. +One of the great things about L is that it uses very little memory. Even with huge databases (1,000,000+ keys) you will not see much increased -memory on your process. L relies solely on the filesystem for storing +memory on your process. L relies solely on the filesystem for storing and fetching data. Here is output from I before even opening a database handle: