ElevateDB

ElevateDB is an embedded SQL database engine that offers local single and multi-user access (file-sharing) and client-server access.

History

Elevate Software was founded in 1998 in North Tonawanda, New York. DBISAM database engine was a product that users did not have to pay licensing fees for. In 2007, ElevateDB was launched as an extension of DBISAM with multiple features.

Compression

Bit Packing / Mostly Encoding

DBISAM originally had ZLib compression but this compression was expanded to work for ElevatedDB.

Joins

Index Nested Loop Join

ElevateDB calculates the estimated cost of operations in a certain order to execute queries as quickly as possible.

System Architecture

Shared-Everything Embedded

TEDBEngine, TEDBSession, TEDBDatabase, TEDBTable, TEDBQuery, TEDBScript, and TEDBStoredProc are all components. Users can create a local or remote session, configure, and then access a path in the database to a catalog. The catalog contains tables, constraints, and functions.

Query Interface

SQL

Isolation Levels

Serializable

A transaction can see the changes being made, but other transactions will see the unchanged version at the time of execution. They will not be able to view the operations in the currently running transaction.

Views

Virtual Views

Can use TEDBTable component to access tables and get result sets.

Foreign Keys

Supported

The Type columns can support constraints that are foreign keys.

Stored Procedures

Supported

Users can create a new procedure in a database and reuse.

Concurrency Control

Multi-version Concurrency Control (MVCC)

ElevateDB has multiple ways to manage processes and locking independent of the user. Row locks and table locks have different protocols. When getting a row for updating, the set protocol is pessimistic and locks that row. Optimistic locking protocol can be used when the row changes are sent back to the table and thus the row needs to be locked.

Row locks are not used until the row is inserted if the transaction takes the action. Updating or deleting the row will only be allowed if the row targeted is not in use.