This page was last modified on 19 June 2016, at 10:46.
Ingres Corporation logo from 2007
|Original author(s)||University of California, Berkeley|
10.2 / 2014.09.30
|License||GNU General Public License or proprietary|
Ingres is a relational database management system (RDBMS) that evolved from a research project at the University of California at Berkeley in the 1970s. There are two different versions of Ingres: a public domain version, known as University Ingres or Berkeley Ingres; and a commercial version currently marketed by Computer Associates, and known as OpenIngres, CA-OpenIngres, or Ingres II.
IBM set out to develop a prototype system that would demonstrate Codd's idea. Simultaneously, Michael Stonebraker, a young professor of Electrical Engineering and Computer Sciences at UC Berkeley, was searching for a research project that would earn him tenure. He found it with relational databases.
Collaborating with professor Eugene Wong, Stonebraker began developing a relational data system called INGRES (Interactive Graphics and Retrieval System). Inspired by Codd's publications, Wong, Stonebraker and graduate student Jerry Held turned INGRES into a working system that could satisfy the needs of an urban systems project, led by Professor Pravin Varaiya.
Unlike IBM's similar System R project, the constantly-evolving INGRES code was freely available to users outside the University who wanted to experiment with the system themselves and offer suggestions. INGRES was an early example of the University's commitment to what's now called Open Source software distribution.
While still teaching at Berkeley, Stonebraker founded Ingres Corp. to commercialize the relational database technology. (The company was acquired in 1990 by ASK Computer Systems.) Shortly after launching Ingres Corp., Stonebraker and his students pushed databases ahead yet again with POSTGRES, a relational database that could understand "objects," groups of simpler pieces of data. POSTGRES, now known as PostgreSQL, is considered the most advanced open-source database available today. While at Berkeley, Stonebraker also developed Mariposa, the federated data system.
- Eight 2-D (flat earth), twenty-seven 3-D (round earth), fifteen 4-D (2-D and 3-D plus time series) data types and eight linear reference functions
- Setting parallelism at the query level using SELECT...WITH MAX_PARALLEL n, where n is the number of cores to use.
- Analytics and aggregation support
- Remote GCA.
This new capability permits a GCA client process to connect to a remote installation without a Name Server (GCN) or Communications Server (GCC) in the client. By making use of existing Dynamic Vnode functionality, it removes the need to maintain static Vnodes. All libq (ESQL, OpenROAD) and OpenAPI (including ODBC) applications can make direct use of Remote GCA. JDBC and .NET applications also can benefit indirectly through the DAS server’s use of Remote GCA.
- DBMS level authentication
- UTF-8 transliteration
Changing table structures:
import ingresdbi import re import getopt import sys # Function to affect whether we generate straight DDL or terminal monitor # script def dbprint( str ): print "%s;\n\\p\\g" %(str) return def usage(): print "-v<vnode> -d<database>" print "-v, --vnode Vnode name" print "-d, --database Database name" print "-h, --help Print this message" try: opts, args = getopt.getopt(sys.argv[1:], "v:d:h", ["vnode=", "database=", "help"]) except getopt.GetoptError: # print help information and exit: usage() sys.exit(2) vnode = "(local)" db = None for o, a in opts: if o in ("-v", "--vnode"): vnode = a if o in ("-d", "--database"): db = a if o in ("-h", "--help"): usage() sys.exit(1) if db != None: ingdb = ingresdbi.connect(vnode=vnode, database=db) cur = ingdb.cursor(); cur.execute("select trim(table_name),trim(constraint_name), text_segment \ from iiconstraints \ where constraint_type = 'P' and \ (table_name not like 'ii%') and \ constraint_name like '$%'") res = cur.fetchall() for row in res: rkey = re.compile(r' PRIMARY KEY\(([^)]*)\)') k = rkey.match(row) print "alter table %s drop constraint \"%s\" cascade;\p\g" %( row, row ) print "modify %s to btree unique on %s with unique_scope=statement;\p\g" %(row, k.group(1)) print "alter table %s add primary key(%s) with index=base table structure;\p\g" %(row, k.group(1))
Cite error: Invalid
parameter "group" is allowed only.
<references />, or
<references group="..." />