[Mailman-Developers] Requirements for a new archiver
Chuq Von Rospach
chuqui at plaidworks.com
Wed Oct 29 14:38:33 EST 2003
On Oct 29, 2003, at 10:45 AM, Brad Knowles wrote:
> That said, storing meta-data in a real database and then using
> external filesystem techniques for actually accessing the data, should
> give you the best of both worlds -- the speed of access of the
> database, and the reliability and well-understood access and backup
> mechanisms of filesystems.
>
Hint: look at what INN did when they implmented cycbufs.
Effectively, you create 1-N files, or create files as needed. Each file
is N bytes long, pre-allocated on file creation. When you store
messages, they're written into the file sequentially (or any other way
you want. If you want to get into best fit allocations and turn this
into a malloc() style heap, be my guest).
Metadata to access the info is then a filename, and an lseek() pointer
into the file, and # of bytes to read, plus your normal identifying
info. It's fast, it's efficient use of file pointers, it avoids the
worst aspects of the unix file system, and I'm amazed nobody ever
thinks to use it for other purposes (or that it took that long for
usenet people to discover it, I suggested a simpler variant of it back
in the 80s and was told inodes are our friends...)
you can even do expiration/purge/etc if you want, by moving stuff
around and changing the pointers.
I've even thought of using it as the backing store for a picture
library. With a nice relational database and a series of these "data
boxes", I think you have store data in the best and fastest possible
way...
More information about the Mailman-Developers
mailing list