Bug#127063: ITP: mird1 - Mird database library
Description: Mird database library (developer files)
Description: Mird database library (runtime files)
The Mird database library may be freely distributed and used with these
* The database library may be distributed with or without source.
* There is no promise that this software works. (But if you find any
bugs, please let me know!)
* You can use this software for whatever you want. You don't have to
* You may not pretend that you wrote this software. If you use it in
a program, you must acknowledge it somewhere in your documentation.
Mird is a database library, for operating on simple disk-based
databases with the following features:
* The database is key-value oriented, primarily - this is useful for
most database operations, from inserting and removing lines in
tables, and for object-oriented data, provided it's fast enough.
(It should be.) The key can be either a 32-bit integer or a byte
string of any size. (A integer-key table using 32 bit hash keys is
used to store the string-key entries.)
* The database consists of several tables or key-value mappings.
On this level, the table is identified by a 32-bit integer. It is
easy enough to implement a table name lookup table, when the need
* Changes to the database is made in the shell of transactions,
where each transaction encapsulates any change to the database
* More then one transaction could be in progress at any given
moment, with resulting conflicts at the closing of the last
transactions, if they operate on the same data.
* Conflicts are either based on changes to a key:value pair, but a
whole table could be locked to mark dependency conflicts.
* The syncing against disk is normally done first when the database
is closed or forced to sync; this is when any unused block is
reused. This gives very high speed.
(The database could of course be in a state where every
transaction completion is synced to the disk.)
* To make this non-syncing secure, the database uses a journal file.
When something fatal happened to the process using the database
(power loss, kill -9, whatever), this file is read back and the
database is restored to the latest state possible.
* The transaction order is guaranteed; any transaction following any
failed (ie, broken, not cancelled) transaction will never be seen
* The database is fast; it is normally no problem to write or read
several thousand entries per second, if the I/O wait is slow
* The database is unfortunately low-level, there is no high-level
replicating, memory-only or distributing schemes included. It was
never inteded to solve these problems, only the speed and
* The library is heavily tested by a testsuite, including tests
simulating power loss and write failures (as in writing the wrong
data to the database).
Debianized source version you can find on ftp://ftp.cgs.pl/pub/debian/mird/
Moje oczy są oczami wariata
Kiedy spotykają się z twoimi oczami