InfinityDB
InfinityDB is an all-Java embedded database engine that is deployed in handheld devices, on servers, on workstations, and in distributed settings. The design is based on a proprietary lockless, concurrent, B-Tree architecture that enables client programmers to reach high levels of performance without risk of failures. [1] Data is stored to and retrieved from a single embedded database file using the InfnityDB API that allows direct access to the variable length item spaces. Database client programmers can construct traditional relations as well as specialized models that directly satisfy the needs of the dependent application. There's no limit to the number of items, database size, or JVM size, so InfinityDB can function in both the smallest environment that provides random access storage and can be scaled to large settings. Traditional relations and specialized models can be directed to the same database file. InfinityDB can be optimized for standard relations as well as all other types of data, allowing client applications to perform at a minimum of one million operations per second on a virtual, 8-core system.
Relational and Specialized Data Model Supported
Direct engine-level access via simple or composite keys can store and retrieve, in one access operation, variable-length records with variable-length values. Values can be Java primitive data types, dates, strings, small char or byte arrays, byte strings or composites of these. Higher-level structures that combine the simple or composite values include multirecord groups for unlimited size records, character large objects (CLOB's), binary large objects (BLOB's), unlimited sparse arrays, unlimited sets of values, graphs, trees, or full-text indexes. Multithreaded access is supported on a single core with internal protections, and on a multi-core processor with fully concurrent multithreaded processing on multiple cores.
There is no limit to the number of attributes overall or the number of attributes per record. The database documentation provides sample code illustrating this. The database can represent relational as well as specialized data structures simultaneously without requiring an explicit schema upgrade when structures are extended or modified.
Entity-Attribute-Value Data Model
The Infinity Item Space accommodates the optional use of the Entity-Attribute-Value model, in which a triple can be considered a 'statement' or 'Item'. Triples can be multivalued. The concept of a relational index is replaced by an 'inversion' of an Entity-Attribute-Value triple in which a stored Item has the entity and value reversed and the attribute replaced by an 'inverse' attribute. This approach allows applications to present users with any number of query-free, intuitive navigation paths.
Designed for High Performance and Minimal Administrative Needs
Each InfinityDB instance stores data into a single database file and does not require additional log or rollback files of any type. Database consistency is guaranteed with the Commit function that can be called as often as the dependent application requires. In the event of a power failure or other hardware malfunction, the database is guaranteed to be consistent with the status as of completion of the last Commit. InfinityDB minimizes the size of its database file through four types of compression (prefix, suffix, zlib, and UTF-8).
Products
InfinityDB Version 1.0 features
- 100K random or sequential insertions, deletions, or retrievals per second for in-cache operations at 3 GHz
- Data compression ranges from one to approximately tenfold
- Practical databases up to 250GB have been built.
InfinityDB Version 2.0 features:
- ACID compliant extended transactions
- Use of an optimistic protocol to protect lengthy transactions
- Restores InfinityDB applications to consistency without the need for logs and rollbacks.
InfinityDB Version 3.0 features:
- Concurrent, multithreaded processing on multiple cores without locks, except in rare, automatically-detected exceptions
- This patent-pending multi-core concurrency increases performance on multi-core platforms, such as the Intel i7 by approximately seven times.
History
Roger L. Deran designed and developed the Infinity Database Engine over 20 years ago and holds US Patent 5283894.[2] The Infinity Database Engine was first deployed in Intel 8088 assembly language in the ROSCOR sports video editor (RSVE) that was licensed to NFL teams in the 1980s. Lexicon purchased the RSVE in 1989, and greatly expanded its deployment to all types of professional and college sports.[3]
Uses of the all-JAVA InfinityDB, marketed by Boiler Bay Inc. since 2002, include:
- consolidation of pharmaceutical and medical data
- collection, description, consolidation, and sharing of ornithological data
- representation of taxonomies of various types
- programming environment tools such as source code repository navigation
- text indexers
- email consolidation systems
- distributed industrial data collection systems.
References
- ↑ Peters, L & Lavers, T (2008). Swing Extreme Testing: The Extreme Approach to Complete Java Application Testing. Packt Publishing. p. 224.
- ↑ US 5283894 "Lockless concurrent B-tree index meta access method for cached nodes"
- ↑ New York Times - Sports World Specials: Video Technology; Custom Replays