InfinityDB is an embedded database engine based on a B+Tree written in Java. It supports relational data and non-tabular or custom structures. InfinityDB is appropriate for embedded hardware platforms, text indexing engines, distributed industrial data collection systems, and heterogeneous data environments.
Bit Packing / Mostly Encoding Prefix Compression
InfinityDB supports compression for both in-memory and on disk data. It uses ZLib for compressing common substrings and small values via Huffman coding. Furthermore, it also supports prefix and suffix compression to remove common-prefixes in keys and common suffixes in upper tree levels. Other compression methods, including variable-length concatenations of primitives and variable-length encoded Java primitives, are used as well.
Optimistic Concurrency Control (OCC)
InfinityDB 1.0 only executes one global transaction at a time. Any data store modification in the system will be visible to all threads. No lock is used and one global transaction is effected all the time.
InfinityDB 2.0 added support for multi-threaded transactions using optimistic concurrency control. If one transaction of a particular thread has held one lock and another transaction of another thread requests this lock. The existing locks of the requester are all released, the transaction is reset to the not-in-progress state and changes are rolled back. InfinityDB does not use pessimistic locking to avoid deadlocks.
Relational Key/Value Graph Hierarchical Array / Matrix
InfinityDB supports a rich data representation space. ItemSpace is the lowest-level data model containing a set of Items. The basic data model can be used to define huge spare arrays, matrix, any mixture of trees, graphs, key/value maps, key/value maps or user-defined structures.
https://boilerbay.com/infinitydb/
Boiler Bay Software
2002