SimpleDBM is an open source transactional database, written in Java. It has a
very small footprint and can be embedded in the address space of an
application. It provides a simple programming API, which can be learned
SimpleDBM has the following features:
- Transactional - SimpleDBM fully supports ACID transactions.
SimpleDBM uses a STEAL/NO-FORCE buffer management strategy for
- Multi-threaded - SimpleDBM is multi-threaded and
supports concurrent reads and writes of data.
- Write Ahead Log - SimpleDBM uses a write ahead log to
ensure transaction recovery in the event of system crashes.
- Lock based concurrency - SimpleDBM uses shared, update
and exclusive locks to manage concurrency. Row locks are used.
- Multiple Isolation Levels - SimpleDBM supports
read-committed, repeatable-read, and serializable isolation levels.
- B-Tree Indexes - SimpleDBM implements B-plus Tree
indexes, that fully support concurrent reads, inserts and deletes.
SimpleDBM B-Trees continually re-balance themselves, and do not suffer
- Tables - SimpleDBM supports tables, but for maximum
flexibility, treats table rows as blobs of data. Table rows can have any
internal structure as you like, and can span multiple disk pages.
- Latches and Locks - SimpleDBM uses latches for internal
consistency, and locks for concurrency. Latches are more efficient
locking mechanisms that do not suffer from deadlocks.
- Deadlock detection - SimpleDBM has support for deadlock
detection. A background thread periodically checks the lock table for
deadlocks and aborts transactions to resolve deadlocks.
- Network API - A network client/server API is being developed and will be released soon!
SimpleDBM is currently in early BETA and not suitable for use in
Production systems. The latest builds can be downloaded from http://code.google.com/p/simpledbm/downloads/list.
SimpleDBM is licensed under GPL V2 with
Classpath exception. This means that you can freely extend SimpleDBM
without having to GPL your own code.