# Ingres (database)

Ingres (uitgesproken als /iŋ-'grεs/) is een commercieel ondersteunde opensource-relationeledatabase ontwikkeld om grote commerciële applicaties te ondersteunen. Ingres is volledig open source en kan rekenen op een wereldwijd groeiende groep medewerkers die deze software onderhouden, uitbreiden en gebruikersvriendelijker maken, maar Ingres Corporation controleert deze ontwikkeling en zorgt voor officiële releases en professionele ondersteuning van deze releases.
Ingres profileert zich nu voornamelijk als een stabiel opensource-alternatief tegenover andere databases.

## Geschiedenis

De Ingres-database was eerst ontwikkeld als een onderzoeksproject in de Berkeley Universiteit van Californië, van het begin van de jaren zeventig tot het begin van de jaren tachtig. In deze periode was de code verkrijgbaar onder de BSD-licentie, zoals vele andere projecten van Berkeley.
Vanaf het midden van de jaren tachtig zijn er op basis van Ingres verschillende commerciële databases ontwikkeld, zoals Sybase, Microsoft SQL Server en PostgreSQL. Deze laatste twee zijn nu enkele van de meest populaire databases voor commerciële applicaties.

## Eigenschappen

Ingres voldoet aan de ACID-regels, zodat de database niet verstrikt kan raken in een situatie waarbij meerdere transacties tegelijk willen schrijven op een enkel tupel.

## Versie 10

Ingres 10 is op de markt gekomen op 12 oktober 2010. Deze release is bedoeld als stand-alone product, niet als upgrade voor oudere versies. Er is vooral gesleuteld aan het transparant migreren vanuit andere databasetoepassingen. Deze versie is ondersteund door het bedrijf zelf.

### Updates

Aan versie 10 zijn enkele verbeteringen toegevoegd. Deze houden in dat er makkelijke migratie kan gebeuren vanuit MySQL, Oracle, SQL Server en Sybase. Hiervoor zijn zowel nieuws SQL-types, functies en synchronisatiemethodes toegevoegd. Ook worden er per gebruiker 'snapshots' genomen van deze database. Op deze manier kunnen er geen gebruikers geblokkeerd worden door query's van anderen. Enkel wanneer dezelfde rij tegelijk wordt aangepast zal er een blokkade voorkomen.

## Installatie

Ingres kan als client of als server worden geïnstalleerd. Enkel de serverversie zal databases met zich geassocieerd hebben. De databases geassocieerd met deze servers kunnen wel bereikt worden via de clients.
Een manier om te werken met Ingres is om clients te installeren op elke ervan gebruikmakende computer, die dan communiceert met de server, die geïnstalleerd staat op een van de servers van het bedrijf.
Een installatie kan gezien worden als een verzameling van serverprocessen, gedeeld geheugen en semaforen om te communiceren tussen processen. Je kan deze ook bekijken als een verzameling gegevens op een harde schijf die gebruikt kan worden om de server te verhuizen, of, in geval van nood, om de server opnieuw op te kunnen starten.

### Identificatie van instanties

Bij installatie zal een instantienaam en een aantal poortnummers worden bepaald. De instantienaam bestaat uit twee tekens en moet beginnen met een letter. Deze code zal gebruikt worden om te berekenen op welke poorten de Ingres Servers zal luisteren. Standaard zal er gebruikgemaakt worden van de code 'll', welke zal luisteren naar de poorten 21064 tot 21071.
Het is ook mogelijk meer dan een enkele instantie op dezelfde computer te installeren. In dat geval moet elke instantie een andere, unieke naam krijgen, zodat alle communicatie met de juiste instantie kan verlopen. Het is wel mogelijk verscheidene namen te verbinden met dezelfde instantie. De gegevens van elke instantie worden van de andere gescheiden in een aparte mappenstructuur.
| Naam | Doel |
| II_SYSTEM | De gedeelde bestanden en configuratie zijn hierin opgeslagen. |
| II_DATABASE | De primaire gegevens van de instantie zijn hier opgeslagen (de databases zelf). |
| II_CHECKPOINT | Dit wordt gebruikt om reservekopieën (back-ups) op te slaan |
| II_JOURNAL | Hier worden de verschillende transacties opgeslagen, zodat gecontroleerd kan worden wie wat heeft toegevoegd en om back-ups te maken. |
| II_DUMP | Alle 'dumps' kunnen hier worden gemaakt zodat back-ups en herstel van de database kan worden uitgevoerd. |
| II_WORK | Hier worden tijdelijke bestanden opgeslagen, tijdens het uitvoeren van query's op de server. |

## Databases

In één installatie van Ingres Database kunnen verschillende databases aanwezig zijn, die ook simultaan kunnen worden gebruikt. Dit aantal kan gelimiteerd worden in de configuratie van de server. Deze databases zijn niet beperkt in groei; ze mogen groter worden totdat de harde schijf waar de installatie zich bevindt vol raakt. De installatie zelf maakt ook gebruik van databases om zichzelf te configureren.

### Meerdere datalocaties

Als het gaat om belangrijke data is het nuttig om de informatie op meerdere locaties tegelijk op te slaan. Standaard zal de data worden opgeslagen in II_DATABASE, maar er kan ook gebruikgemaakt worden van de andere paden die voor Ingres gedefinieerd zijn.

### Publiek/Privaat

De databases kunnen bij het aanmaken zowel publiek als privaat zijn gespecificeerd. Publiek zal ervoor zorgen dat elke verbonden Ingres-gebruiker over de database kan beschikken tenzij specifiek geweigerd; private databases zijn alleen toegankelijk indien uitdrukkelijk toegestaan.

### Unicode

Databases kunnen specifieke tekencoderingen gebruiken, zodat niet de volledige Unicode-tekenset hoeft te worden ondersteund, maar enkel de subset die nodig is voor de database. Dit is om de database niet onnodig groot te maken.

### Gedistribueerde databases

Er kan gebruikgemaakt worden van databases die verdeeld zijn over verschillende servers. Dit gebeurt via de IngresSTAR server. Deze ondersteunt zowel gedistribueerde opslag als toegang en verwerking.
Het gedistribueerde gebruik is volledig transparant voor de gebruikers, maar zal wel zorgen voor beperkingen in het gebruik van query's.

## Externe link

* (en) Productpagina
* ↑ https://supportservices.actian.com/wp-content/uploads/2021/07/Product_Avail_Matrix_Ingres.pdf; geraadpleegd op: 15 april 2022.
* ↑ Press Release Ingres Database 10
* ↑ Ingres Database 10
* 1 2 Design and Implementation of Ingres
* ↑ Ingres Star Handleiding