User:Mars2035/Temp

Infinity Database Engine B*Tree (InfinityDB) is a Java database engine created by Roger L. Deran and marketed by Boiler Bay Inc. as an alternative to traditional relational database engines with tabular data models. Because of its small size, single-file architecture, data integrity guarantee, it can be embedded in the smallest to the largest of applications. It is used in PDA's and in extremely large, multi-threaded systems. Unlike other database engines such as Apache Derby and Pointbase, Infinity DB uses a custom API instead of the SQL database management language.

History
InfinityDB was originally written in Z80 assembly language during the early 1980's, and then translated into C++ and then Java. It was incorporated into other software such as the Roscor Sports Video Editor and the Boilerbase Email Management System, before being released as a stand-alone product in 2002. Since then, it has been licensed to companies that used it in settings ranging from handheld devices to large hierarchies of text-based data.

Applications
The software developers who benefit from using Infinity DB include those who represent data as a taxonomy, systems with highly texty data, email management and sorting systems, text indexers, and graphical systems. Infinity DB is able to represent the relational model, but it is not limited to that. Attributes do not consume pre-allocated database space, can be multi-valued, and can be added or modified at any time without the requirement for a formal schema upgrade.

Transactionality
InfinityDB provides single-transaction integrity. All committed data remains intact and uncorrupted even after a spontaneous power failure, application crash, or user termination, without the need for logs and rollbacks. Although there are no rollbacks of extended transactions, there are alternative approaches to preserving the integrity of sequences of transactions.

Data Compression
The engine automatically compresses repetitive data, meaning that its database files take up much less space than alternative engines such as Berkeley DB, which sacrifices disk space in order to increase the speed of data retrievals.

Concurrency
Infinity DB is highly concurrent, meaning that many threads can modify the data at once without causing a significant decrease in performance. This is an asset in mobile devices with slow processors, as CPU usage is limited in those devices. Concurrency in the database is acheived by giving priority to threads which are trying to access data in the cache. This prevents slow disk I/O operations from holding up threads which are trying to access cached data.

Unique Data Model
Infinity DB uses a data storage method that is very different from a typical relational database. Each database consists of ordered sets of data slots, called items. An item can contain a string of text, an integer, or any of the other standard Java data types. The database is automatically sorted and compressed down to the minimum size possible. Inserts and retrievals to the database are performed using cursors, temporary storage units for items which are to be retrieved from or inserted into the database.

Programming with Infinity DB
Infinity DB's API is quite simple, meaning that programmers can often adapt their system to work with the engine within the timeframe of the free trial period. However, the unusual data model used by the engine sometimes discourages programmers who are used to traditional SQL based relational databases. Once the programmer has learned to work with Infinity DB's unique approach, it can be a very effective alternative to SQL.