InfinityDB is an embedded database engine written in Java. It is based on a fast, reliable and high concurrent B-Tree architecture to guarantee high performance. It can represent and manipulate relational data and non-tabular or custom structures. InfinityDB is appropriate for memory- or disk-oriented embedded hardware platforms, text indexing engines, distributed industrial data collection systems, heterogenous data environments and much more.
- Tech Docs
- https://boilerbay.com/papers/[02]
- Developer
- Country of Origin
- US
- Start Year
- 2002
- Project Type
- Commercial
- Written in
- Java
- Supported Languages
- Java
- Operating System
- All OS with Java VM
- License
- Proprietary
InfinityDB is an embedded database engine written in Java. It is based on a fast, reliable and high concurrent B-Tree architecture to guarantee high performance. It can represent and manipulate relational data and non-tabular or custom structures. InfinityDB is appropriate for memory- or disk-oriented embedded hardware platforms, text indexing engines, distributed industrial data collection systems, heterogenous data environments and much more.
History
The Infinity Database Engine was first written by Roger L. Deran in the Intel 8088 assembly language in the 1980s. It was then re-written to be entirely in Java in 2002 and now marketed by Boiler Bay Inc.
Compression[04][05]
InfinityDB can achieve high compression on disk and in memory. The system packs data into variable-length blocks by continuous, dynamic ZLib and UTF-8 data compression methods, reducing block-internal free space. ZLib is used for compressing common 'substrings' in any kind of data, and ZLib's Huffman coding is used for ASCII, UTF-16 or other small values. Furthermore, prefix and suffix compression are used. For example, common-prefixes in keys and common suffixes in upper trees levels are removed. Other compression methods including variable-length concatenations of primitives and variable-length binary-encoded primitives are used as well.
Concurrency Control[06]
InfinityDB 1.0 only has 'ACD' features and uses a single global transaction. Any data store modification in the system will be visible to all threads. No lock is used and all access is concurrent during the commit by any threads. InfinityDB 2.0 adds transparent multi-Threaded transactionally and the global transaction of InfinityDB 1.0 is also available. The system uses optimistic locking and the optimistic protocal is two-phase. 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. In addition, OptimisticLockConflictException are throwed and optionally retried by the application code. InfinityDB dose not use pessimistic locking to guarantee there is no probability of deadlocks.
Data Model[07][05]
InfinityDB supports a rich data representation space. ItemSpace is the lowest-level InfinityDB data model. An ItemSpace is a container for a set of Items. An item is a variable-length char sequence and items are in ascending order in the ItemSpace. 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.
Citations
7 sources- InfinityDB Embedded – Boiler Bay Software boilerbay.com
- Documents – Boiler Bay Software boilerbay.com
- InfinityDB - Wikipedia wikipedia.org
- https://boilerbay.com/infinitydb/manual/features.html; boilerbay.com
- Boiler Bay Software – InfinityDB Java NoSQL Database boilerbay.com
- ACID Transactionality boilerbay.com
- InfinityDB Programming Guide boilerbay.com