[MUD-Dev] ColdStore

J C Lawrence claw at kanga.nu
Wed Dec 8 11:30:15 New Zealand Daylight Time 1999


ColdStore is a gigabyte-scale persistent object store which mmap()s
objects into a file (for persistence), can allocate objects in a
minimal working-set of pages (for speed), permits library versions
to change without a rebuild of the store, permits application
checkpoint/restart.  ColdStore might be used to replace a database,
cache highly structured objects, act as an OODB, make STL
persistent, act as a Document Store for XML/SGML/HTML, create a
MUD. Future projects include a virtual machine toolkit, ports of
several languages, VM and byte-interpretive language workbench.

With ColdStore you can:

-- Construct objects within a program (structs, classes, etc) which
persist, so when the program stops and is restarted the objects are
there and available to the program as if they'd been there all the
time: pointers and references to them still work.

-- Change library code implementing objects (so long as the object
layout and virtual method table doesn't change) without having to
reconstruct the store.

-- Allocate memory in `extents' or `neighborhoods' such that the
allocations are clustered onto a small (not to say minimal) set of
hardware pages. This means code referencing those neighborhoods is
more likely to find the objects it needs already swapped into RAM
from the store.

-- Optionally use a whole library of classes designed or adapted to
work well with extent-based allocation: array/lists, Tuples, dynamic
strings, dictionary (content addressable array), BTree, Symbols,
Namespaces, big integers, arbitrary precision float, regular
expresisons, more added all the time.

-- Leave out the parts of the system you don't need. 

The system's modularly layered so it's at least possible to
substitute a new class library for the ColdStore one, a different
allocation scheme for qvmm, EPCKPT for persistence, and still get
the functionality of the parts you choose to use. I don't know about
you, but I'm tired of software libraries which come with normative
`lifestyle' assumptions. We've tried (as much as possible) to
minimise this with ColdStore.

J C Lawrence                                 Home: claw at kanga.nu
----------(*)                              Other: coder at kanga.nu
--=| A man is as sane as he is dangerous to his environment |=--

MUD-Dev maillist  -  MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list