36 lines
1.6 KiB
Plaintext
36 lines
1.6 KiB
Plaintext
Database structures.
|
|
|
|
|
|
Most databases have a structure with a header record. The header record
|
|
is at the beginning of the datafile and contains information about the
|
|
size of the header record and size of the database records. When a data
|
|
file is opened for reading the first thing to read the header record.
|
|
The field recsize contains the size of the datarecords and the field
|
|
hdrsize the offset to the first datarecord in the file.
|
|
|
|
If in the structure the size of the datarecords changes (grows), we can
|
|
allways read the old format in the correct way.
|
|
|
|
When a datafile is changed the datafile has to be rewritten completly.
|
|
Of course the new format is used then, and the new size must be stored in
|
|
the header.
|
|
|
|
The advantage of this technique is that updates can be performed automatic.
|
|
There is no need for free space for future use in the datarecords, the files
|
|
are thus smaller.
|
|
|
|
|
|
One other important thing, with some DOS based bbs'es, mail/tic processors
|
|
are using index files together with the data files to speed up the search in
|
|
the databases. Also some of them use internal memory cache for the data records.
|
|
I choose not to do this for two reasons, Linux like other Unices handles
|
|
file I/O very fast and when your system is not low on memory the kernel will
|
|
buffer all disk I/O in memory. Also Linux disks are very low fragmented due to
|
|
the design of the ext2fs. Whith all this in mind, using index files is only
|
|
extra overhead.
|
|
However, because of this you should not put the data files on a msdos
|
|
dos partition or on a nfs server.
|
|
|
|
The only exeption that uses index files are the nodelists.
|
|
|