HTDB objects are simply key/value pairs stored in-memory.
The (C language) libhtdb library contains a full suite of functions for
accessing and manipulating the various storage methods of HTDB objects.
Currently, the storage method is a hash table, but we are toying with moving
to ternary trees for greater flexibility of walking through stored values.
One of the aims of the HTDB library is to have a very straight-forward API
so that common programming gaffes - such as memory leaks, or bad NULL pointer checks
- are minimized. Properly used, there should never be such things as a NULL pointer
when dealing with HTDB objects.
So what's the big deal here, you might ask - why all this fuss about moving
things into in-memory storage..?
The whole concept of the HTDB system is one
of "pulling" values at will from that in-memory store to "build-up" what will
eventually become an HTML document (in the case of a web CGI).
Everything gets stored in the same place: web server variables, GET/POST values,
CGI program calculations, database query results, resource file HTML fragments
and scripted values.
Eventually, they are all pulled-together in a top-down fashion when the "parent"
object is called upon. Order of evaluation does not matter - objects not-yet
created remain until the final object evaluation. More on all that later.
The take-away is that everything gets tossed into one big bucket, and eventually
a web page emerges from the mess. And the approach is suprisingly efficient.
And now for some details...
Tue Mar 6 22:41:44 PST 2001