Ingres

Ingres is an open-source relational database management system (DBMS) designed for large-scale commercial and government applications. Actian Corporation currently oversees the development of the database while providing certified binaries and support. The latest version is Ingres 11, which is also known commercially as the Actian X Hybrid Database.

History

When two University of California, Berkeley professors, Michael Stonebraker and Eugene Wong, read the papers about System R at IBM in 1973, they became interested in applying the concepts in those papers on a research project of their own, and thus Ingres was born.

In the mid-1980s, Ingres competed against Oracle in the then-emerging relational DBMS market. These two systems were considered to have comparable functionalities and performance, and were the market leaders. However, from then on, Ingres slowly lost market share to Oracle presumably due to the latter's more aggressive marketing, and more importantly, the recognition of SQL as the go-to query language, which Ingres did not use at the time. It used a query language called QUEL and the transition to SQL took three years. Nevertheless, Ingres reincarnated as the underlying source code of many commercial databases, one of the most well-known being Relational Technology Inc, founded by the very same two professors who started Ingres as a research project. The company was later renamed Ingres Corporation in the late 1980s, and continued to provide commercial database products with Ingres lying underneath. Although Ingres never achieved the same market prominence as its once head-to-head contender Oracle, it endured over the years and was the inspiration for many other popular database management systems, such as Postgres.

In 2011, Ingres Corporation was renamed Actian Corporation and has continued its support on the classic DBMS since then. It is currently branded as the Actian X Hybrid Database.

System Architecture

Shared-Everything

Ingres is a single-node database management system, and therefore it is "Share-Everything".

Storage Architecture

Disk-oriented

Although it is currently branded as the "Actian Hybrid", the "Hybrid" refers to its capability of performing both OLTP and OLAP tasks by employing a hybrid storage model (i.e. both row and column), not that it has a hybrid storage architecture. It is still disk oriented.

Query Compilation

Stored Procedure Compilation

Ingres allows users to write stored procedures in one of the supported query languages.

Data Model

Relational

Ingres is a relational database system.

Isolation Levels

Read Uncommitted Read Committed Serializable Repeatable Read

Ingres supports four isolation levels, from favoring consistency to maximizing concurrency: Serializable, Repeatable Read, Read Committed. and Read Uncommitted, Serializable is the default isolation level because it provides the strongest consistency guarantee.

Stored Procedures

Supported

Ingres supports stored procedures in both SQL and QUEL.

Storage Model

Hybrid

Although the original Ingres was row-based, Actian has incorporated columnar storage into its latest version of Ingres (Actian X) to improve its performance on OLAP tasks.

Foreign Keys

Supported

After primary keys are created, a user can create foreign keys using the New Foreign Key Dialog.

Concurrency Control

Multi-version Concurrency Control (MVCC) Deterministic Concurrency Control Two-Phase Locking (Deadlock Detection)

Ingres uses the terms "logical lock" and "physical lock" to refer to transaction locks and latches, respectively. It supports multiversion concurrency control (MVCC). Its available lock levels are, from most to least granular, are Row, MVCC, Page, Table, Database. It supports the following lock modes: NL(no lock), IS(intent to share), IX(intent to update), S(shared), SIX(shared with intent to update), and X(exclusive access). The locks in Ingres are managed by a lock manager. They are tracked using their unique lock IDs. It supports deadlock detection and aborts one of the transactions that are deadlocked.

Query Interface

SQL Stored Procedures Command-line / Shell QUEL

Ingres was originally built on UNIX and supports a command-line interface. It also supports SQL and QUEL and stored procedures in these two query languages.

Query Execution

Materialized Model

Ingres executes queries by producing materialized views.

Joins

Nested Loop Join Hash Join Sort-Merge Join

Ingres supports hash join, sort-merge join, and nested loop join algorithms.

Compression

Null Suppression

Compression of tables only work on character and text columns. Trailing nulls and blanks are compressed. Non-nullable types such as Integer, floating point, and date are not compressed.

Indexes

B+Tree Hash Table R-Tree

One can create an index on an existing table in Ingres using the CREATE INDEX command. An index cannot contain more than 32 columns, but one can create as many indexes as needed on a table. Ingres chooses ISAM (Index Sequential Access Method) as the index data structure by default, but also supports B+ Tree, Hash Table, and R-Tree for this purpose. It can also create secondary indexes. In addition, it can create an index in parallel to reduce the time needed.

Checkpoints

Consistent Blocking

Ingres supports two types of checkpointing: online and offline. Offline checkpointing requires all users to disconnect from the database. It acquires a global lock on the entire database and performs backup on all the data. Online checkpointing does not require users to disconnect and is the default checkpointing scheme. Therefore, it is faster than offline checkpointing as it results in less down-time. However, it is still blocking. Users cannot proceed until the Ingres creates a consistent point of the database. The DBMS records all changes in the database but does not support operations such as drop or create during online checkpointing.

Ingres Logo
Website

http://www.actian.com/products/ingres

Tech Docs

http://docs.actian.com/ingres/11.0/index.html

Developer

Actian

Country of Origin

US

Start Year

1974

Acquired By

Actian

Project Type

Academic, Commercial, Open Source

Written in

C

Supported languages

SQL

Inspired By

System R

Operating Systems

Linux, Windows

Licenses

GPL v2

Wikipedia

https://en.wikipedia.org/wiki/Ingres_(database)