The reasonable man adapts himself to the
world; the unreasonable one persists in trying to adapt the
world to himself. Therefore, all progress depends on the
unreasonable man.
-- George Bernard Shaw
Out of frustration at MySQL and Postgresql comes Eris, the Goddess of Chaos^W^W^Wrelational database system with the features I feel I need. Only some code exists at the moment, but the current view is that it will aim to be:
- Fast to read
- Not necessarily so fast to write
- Speaks ODBC
- Has the ACID nature
- Supports multiple writing transactions but does not really aim higher than at two
- Does not have arbitrary data size limitations
There is a design for the buffer cache with an integrated memory manager, transaction handling and locking implementation here. The beginning of an implementation exists. There is also an SQL parser in flex and bison, but it only accepts SQL, it does not do anything with it yet. The number of reserved words in SQL is quite remarkable, and a good demonstration of SQL not being as much designed as happened. What I don't get is how SQL in a Nutshell can possibly give advice not to use obvious prefixes on identifiers. With keywords numbering in hundreds and the set forever changing, the only realistic way of avoiding collisions now and in the future I can come up with is to use a prefixing strategy of some sort. At least the Oracle coding guidelines seem to be on the same track as me.
The buffer cache design draws heavily on the papers of the Shadows project at Helsinki University of Technology. The project showed that the classical objections to shadow paging as a database durability method are not in general well founded.
There is a code preview on the buffer cache available. So far it has been tested to generate an empty buffer file and single threadedly write and read the logical block number zero successfully.