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.[04]
- Developer
- Country of Origin
- US
- Start Year
- 1974
- Acquired By
- Project Types
- Academic, Commercial, Open Source
- Written in
- C
- Supported Languages
- SQL
- Inspired By
- System R
- License
- GPL v2
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.[04]
History[05][06][07]
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.
Checkpoints[08]
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.
Compression[09]
Ingress's 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. It is not mentioned in the documentation that Ingres supports other types of compression schemes. Compression is applied to each page independently. It is shown in both the documentation and the original paper that compression in Ingres is useful in storing variable length domains. For example, if there is a column storing customer's reviews on a local business, then each review is padding at the end with nulls if it is shorter than the maximum allowed length to maintain homogeneity across the column. By applying compression on this column, these trailing nulls are compressed and the reviews take much less disk space because most of them are expected to be shorter than the maximum allowed length. However, the documentation suggests that compression should be used situationally, as decompression consumes CPU resources. It is up to the application to weight the trade-off between CPU utilization and disk space.
Concurrency Control[10][11][12]
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.
Foreign Keys[14]
After primary keys are created, a user can create foreign keys using the New Foreign Key Dialog.
Hardware Acceleration
It is not known that Ingres supports hardware acceleration.
Indexes[15]
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.
Isolation Levels[16]
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.
Query Compilation[18]
Ingres allows users to write stored procedures in one of the supported query languages.
Query Interface[20]
Ingres was originally built on UNIX, hence it supports a command-line interface. It also supports SQL and QUEL and stored procedures in these two query languages. In addition, applications can use OpenAPI, a set of APIs in the C programming language, to interact with Ingres.
Storage Architecture[13]
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.
Storage Model[21]
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.
System Architecture
Ingres is a single-node database management system, and therefore it is "Share-Everything".
Citations
24 sources- Actian Ingres | Ingres Transactional Database actian.com
- Ingres 11.0 | Ingres 11 Guides actian.com
- Ingres (database) - Wikipedia wikipedia.org
- Comprehensive Guide to Modern Data Management & Governance actian.com
- https://dsf.berkeley.edu/w/source-code berkeley.edu
- https://ieeexplore.ieee.org/document/6297966 ieee.org
- https://www.businesswire.com/news/home/20170418005463/en/Actian-Hybrid-Data-Solutions-Power-Digital-Enterprise businesswire.com
- Checkpointing FAQs actian.com
- Ingres actian.com
- Ingres actian.com
- Ingres 11.0 Documentation actian.com
- Ingres 11.0 Documentation actian.com
- https://sites.fas.harvard.edu/~cs265/papers/stonebraker-1976.pdf harvard.edu
- Actian Director actian.com
- Choosing Storage Structures for your Ingres Database actian.com
- Ingres actian.com
- Ingres actian.com
- Ingres 11.0 Documentation actian.com
- Ingres 11.0 Documentation actian.com
- Ingres 11.0 Documentation actian.com
- https://www.actian.com/wp-content/uploads/2023/12/DS21-ActianX_04A.pdf actian.com
- Ingres 11.0 Documentation actian.com
- Ingres 11.0 Documentation actian.com
- https://www.actian.com/webinars/new-ingres-wbr/ actian.com