InfinityDB
InfinityDB is an all-Java embedded database engine that is deployed in hand-held 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] All of the data storage and retrieval to and from the single embedded database file is accomplished through the InfnityDB API that allows direct access to the Variable Length Item Spaces. 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 the smallest environment that provides random access storage or scaled to large settings. Traditional relations and specialized models can be directed to the same database file. The capability of InfinityDB to be optimized for standard relations as well as all other types of data allows the client application to perform at a minimum of one million operations per second on a vitual, 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 primitives, Dates, Strings, small char or byte arrays, byte strings or composites of these. Higher-level structures that combine the simple or composite values include multi-record groups for unlimited-size records, Character Long Objects, Binary Long Objects, unlimited sparse arrays, unlimited sets of values, graphs, trees, or full-text indexes. Multi-threaded access is supported on one core with internal protections, and on the multi-core system with fully concurrent multi-threaded processing on multiple cores.
There is no limit to the number of attributes overall or the number of attributes per record. Demonstration of these is given in example code and documentation.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 multi-valued. 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 its status upon 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 Vesion 1.0 InfinityDB reaches 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 Vesion 2.0 provides ACID compliant extended transactions, using an Optimistic protocol to protect lengthy transactions and also restores InfinityDB applications to consistency without the need for logs and rollbacks.
InfinityDB Version 3.0 supports concurrent, multi-threaded processing on multiple cores without locks, except in rare and automatically- detected exceptions. This patent-pending multi-core concurrency increases performance on a multi-core platform, such as the Intel i7 by approximately seven times.
History
Roger L. Deran designed and developed the Infinity Database Engine over 20 years and holds the Lockless Concurrent B*Tree Patent. The Infinity Database Engine was first deployed in 8088 Assembly Language in the ROSCOR Sports Video Editor 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.[2]
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; and distributed industrial data collection systems.
References
- ↑ Lavers, T., Lindsay, P. Swing Extreme Testing: The Extreme Approach to Complete Java Application Testing, page 224. Packt Publishing, Birmingham, Mumbai, 2008.
- ↑ New york Times - Sports World Specials: Video Technology; custom replays