# Ingres (banco de dados)

O Ingres é um SGBD relacional, pertence a CA. Em 2004, foi lançado o Ingres r3 e seu código fonte foi liberado para a comunidade open source e demais usuários do banco, que podem a partir desse momento, utilizarem-no sem nenhum custo com licença de uso.
Ele é considerado um dos mais robustos e poderosos SGBD para armazenamento de dados de missão crítica, e que necessitam de um grande nível de segurança no acesso e armazenamento, bem como ter suporte a grande concorrência de acesso às informações nele armazenadas.
Atualmente a CA apontou para uma definição interna extremamente importante para dar garantia de continuidade do Ingres. A CA está revendo grande parte de seus software internos que utilizam banco de dados para executarem sobre bases de dados Ingres. Além disso, grande parte de seus produtos estão sendo adaptados para terem suporte ao Ingres, como: a família Unicenter, Portal, BrightStor, etc.

## História

Em 1973 quando o Sistema R havia sido iniciado pela IBM, os pesquisadores liberaram muitos artigos descrevendo o sistema que construíam. Dois cientistas de Berkeley, Michael Stonebraker e Eugene Wong, se interessaram após lerem os artigos, e decidiram iniciar um projeto de banco de dados relacional para eles.
Eles já tinham conseguido dinheiro por terem pesquisado um Banco de Dados Geográfico para o grupo econômico Berkeley’s, que chamaram de Ingres, para Sistema de Recuperação de Gráficos Interativo. Eles decidiram usar este dinheiro para fundar seu projeto relacional, e usado isso para criar um projeto novo muito melhor e maior. Para conseguir mais dinheiro, Stonebraker aproximou o grupo DARPA, a fonte de financiamento óbvia para pesquisas de computação daquele tempo. Stonebraker introduziu sua ideia para outras agências, e, com ajuda de seus amigos ele obteve a sustentação do NSF e de três agências militares: o Escritório de Pesquisas Científicas da Força Aérea Americana, o Escritório de Pesquisas do Exército Americano e o Comando Eletrônico dos Sistemas da Marinha Americana.
Com este financiamento o INGRES foi desenvolvido em meados dos anos 1970, por uma equipe que continham estudantes e professores. INGRES alcançou uma evolução similar ao Sistema R, com um protótipo adiantado em 1974 seguidos por revisões para fazer o código principal. INGRES conquistou uma pequena comunidade de usuários, e os membros dos projetos reescreveram o projeto muitas vezes para incorporar a experiência acumulada, e novas ideias. INGRES remanesceu pela maior parte do tempo como o Sistema R da IBM, mas baseado nos sistemas "low end", chamados Unix em máquinas do DEC.

## Principais características

O Ingres r3 apresenta muitas funcionalidades e ferramentas, tais como: replicação de dados (Ingres Replicator), bases de dados distribuídas (Ingres Star), suporte a transações distribuídas (ACID transactions), desenvolvimento web (Ingres ICE), desenvolvimento em 4GL (Ingres Vision, Ingres ABF), ferramentas para consulta SQL e relatórios (ISQL, SQL Monitor, Report Writer, Tables, QBF, Visual SQL), ferramentas para administração e monitoramento (IPM, CBF, VCBF, Visual DBA, Visual Differences Analizer, Visual Journal Analizer, logstat, lockstat, trace points, logs, iimonitor, IMADB), ferramentas de importação e exportação de dados (Visual Import/Export, copydb, unloaddb), backup online e recovery point-in-time com sistema de archives (journals), auditoria de acesso aos dados, alarmes, database events, conectividade (ODBC, JDBC, .NET, Ingres NET, XML), suporte a linguagens de programação (Java, PHP, Perl, Python, OpenROAD, etc), pré-compiladores (SQL embutido-C, Cobol, Fortran, ADA), triggers (rules), stored procedures, integridade referencial, mecanismos de segurança (níveis C2 e B1), controle de concorrência (isolation levels de transação), índices, definição para estruturas de tabelas (Btree, Hash, Heap, ISAM), particionamento físico de bases de dados, de tabelas e índices, suporte a alta disponibilidade (cluster), suporte a Unicode, suporte a execução paralela de queries (uma única query pode executar de forma paralela após a análise do otimizador), multiplataforma (Linux, Windows, Unix, OpenVMS), acesso a outros bancos de dados através de Gateways (MS-SQL Server, IBM-DB2, Oracle, Sybase), suporte a 64 bits, multithreading, e muitas outras características que podem ser encontradas na sua documentação.

## Integridade de dados
### Transaction logging

As transações são escritas em um log , permitindo que o sistema aplique um rollbak/rollforward no caso de um encerramento anormal do servidor.

### CheckPoint

Faz com que se otimize o uso da memória cache e do "logging", forçando todas as modificações pendentes até um determinado ponto serem fisicamente gravadas no disco.

### MVCC

O controle de concorrência de múltipla versão em relação a linhas de uma tabela reduz o conflito entre usuários manipulando os mesmos registros.

## Padrão SQL

O Padrão SQL utilizado pelo Ingres é o ANSI-92.

## Tipo do SGBD

O tipo de banco de dados do Ingres é o relacional. Os bancos de dados relacionais foram desenvolvidos para prover acesso facilitado aos dados, possibilitando que os usuários utilizassem uma grande variedade de abordagens no tratamento das informações. Pois, enquanto em um banco de dados hierárquico os usuários precisam definir as questões de negócios de maneira específica, iniciando pela raiz do mesmo, nos Bancos de Dados Relacionais os usuários podem fazer perguntas relacionadas aos negócios através de vários pontos.
A linguagem padrão dos Bancos de Dados Relacionais é a Structured Query Language (Linguagem de Consulta Estruturada), ou simplesmente SQL, como é mais conhecida.

## Mecanismo XML

O adaptador inteligente de Ingres do software iWay fornece o acesso altamente eficiente aos dados e aos sistemas de Ingres. O adaptador é projetado na mesma maneira que outros adaptadores de dados iWay, assim que os colaboradores podem usar indicações ANSI-padrão do SQL alcançar dados de Ingres de toda a ferramenta. Produtos de terceiros podem também alcançar o adaptador através dos conectores iWay, including ODBC, do DB OLE, do JDBC, do XML, dos serviços de negócio iWay (serviços da correia fotorreceptora), e de outros. Além, os dados podem ser integrados com mais de outras 300 fontes de informação, incluindo outras bases de dados relacionais e do nonrelational, sistemas de transação, costume ou aplicações empacotadas, middleware orientado a mensagem, originais de XML, redes de EDI, e mais.