Geen resultaten gevonden

Uw zoekopdracht heeft geen resultaten opgeleverd

Wat is een relationele database

Een relationele database is een type database waarin datapunten zijn opgeslagen die aan elkaar gerelateerd zijn. Relationele databases zijn gebaseerd op het relationele model, een intuïtieve, directe methode om data in tabellen weer te geven. In een relationele database is elke rij van de tabel een record met een unieke ID, de zogeheten sleutel. De kolommen van de tabel bevatten kenmerken van de data en elke record heeft meestal een waarde voor elk kenmerk, waardoor het eenvoudig is om de relaties tussen datapunten vast te stellen.

Een voorbeeld van een relationele database

Hier is een eenvoudig voorbeeld van twee tabellen die een klein bedrijf zou kunnen gebruiken om bestellingen voor zijn producten te verwerken. De eerste tabel is een tabel met klantgegevens. Elke record bevat een naam, adres, verzend- en factureringsgegevens, telefoonnummer en andere contactgegevens van een klant. Elk stukje informatie (elk kenmerk) bevindt zich in een eigen kolom en de database kent aan elke rij een unieke ID (een sleutel) toe. In de tweede tabel, een tabel met klantorders, bevat elke record de ID van de klant die de bestelling heeft geplaatst, het bestelde product, de hoeveelheid, de geselecteerde maat en kleur, enzovoort, maar niet de naam of contactgegevens van de klant.

Deze twee tabellen hebben slechts één ding gemeen: de kolom met de ID (de sleutel). Maar juist door die gemeenschappelijke kolom kan de relationele database een relatie leggen tussen de twee tabellen. Vervolgens, wanneer de orderverwerkingsapplicatie van het bedrijf een bestelling naar de database stuurt, raadpleegt de database de tabel met klantorders, wordt de juiste informatie over de productorder opgehaald, en wordt de klant-ID uit die tabel gebruikt om de verzend- en factureringsgegevens op te halen uit de tabel met klantgegevens. In het magazijn wordt vervolgens het juiste product opgehaald, de klant ontvangt zijn order tijdig in huis, en het bedrijf kan een betaling verwachten.

Hoe relationele databases zijn gestructureerd

Het relationele model betekent dat de logische datastructuren — de datatabellen, weergaven en indexen — zijn gescheiden van de fysieke opslagstructuren. Deze scheiding betekent dat databasebeheerders fysieke dataopslag kunnen beheren zonder dat dit gevolgen heeft voor de toegang tot logische structuur van de data. Wanneer bijvoorbeeld de naam van een databasebestand wordt gewijzigd, blijven de namen van de daarin opgeslagen tabellen ongewijzigd.

Het onderscheid tussen logisch en fysiek is ook van toepassing op databasebewerkingen. Dit zijn duidelijk gedefinieerde acties waarmee applicaties de data en structuren van de database kunnen manipuleren. Door middel van logische bewerkingen kan worden aangegeven welke inhoud een applicatie nodig heeft, en door middel van fysieke bewerkingen wordt bepaald hoe deze data moet worden geraadpleegd en wordt de taak vervolgens uitgevoerd.

Om ervoor te zorgen dat data altijd accuraat en toegankelijk is, worden bij relationele databases bepaalde integriteitsregels gehanteerd. In een integriteitsregel kan bijvoorbeeld zijn bepaald dat dubbelvoorkomende rijen niet zijn toegestaan in een tabel, om het risico van invoer van foutieve informatie in de database te elimineren.

Het relationele model

In de beginjaren van de databases werd in elke applicatie een eigen unieke structuur gebruikt voor de opslag van gegevens. Toen ontwikkelaars applicaties wilden bouwen om die data te gebruiken, moesten ze veel weten over de specifieke datastructuur om de data te vinden die ze nodig hadden. Deze datastructuren waren inefficiënt, moeilijk te onderhouden en moeilijk te optimaliseren om applicaties goed te laten presteren. Het relationele databasemodel is ontworpen om het probleem van meerdere arbitraire datastructuren op te lossen.

Het relationele model leverde een standaardmethode om data te representeren en te raadplegen die door elke applicatie zou kunnen worden gebruikt. Vanaf het begin begrepen ontwikkelaars dat de belangrijkste kracht van het relationele databasemodel lag in het gebruik van tabellen, die een intuïtieve, efficiënte en flexibele methode waren om gestructureerde informatie op te slaan en te raadplegen.

In de loop der tijd kwam een andere sterk punt van het relationele model op de voorgrond toen ontwikkelaars begonnen met het gebruik van de gestructureerde querytaal SQL (Structured Query Language) om data in een database te schrijven en te bevragen. SQL wordt al vele jaren veel gebruikt als de taal voor het bevragen van databases. SQL is gebaseerd op relationele algebra en biedt een intern consistente wiskundige taal die het gemakkelijker maakt om de prestaties van alle databasequery's te verbeteren. Ter vergelijking: bij andere benaderingen moeten individuele query's worden gedefinieerd.

Voordelen van relationele databases

Het eenvoudige maar krachtige relationele model wordt gebruikt door organisaties van alle soorten en maten voor een breed scala van informatiebehoeften. Relationele databases worden gebruikt om voorraden bij te houden, e-commercetransacties te verwerken, enorme hoeveelheden bedrijfskritische klantinformatie te beheren, en nog veel meer. Een relationele database kan worden overwogen voor elke informatiebehoefte waarbij datapunten met elkaar in verband staan en moeten worden beheerd op een veilige, op regels gebaseerde, consistente manier.

Relationele databases bestaan al sinds de jaren 1970. Door de voordelen van het relationele model is het nog steeds het breedst geaccepteerde model voor databases.

Dataconsistentie

Het relationele model is zeer goed in het handhaven van de consistentie van data tussen verschillende applicaties en kopieën van de database (de zogeheten instances). Wanneer een klant bijvoorbeeld geld stort bij een geldautomaat en vervolgens kijkt naar het rekeningsaldo op een mobiele telefoon, verwacht de klant dat die storting onmiddellijk te zien is in een bijgewerkt rekeningsaldo. Relationele databases blinken uit in dit soort consistentie van data, zodat meerdere instances van een database altijd dezelfde data hebben.

Bij andere soorten databases is het moeilijk om deze mate van actuele consistentie te handhaven bij grote hoeveelheden data. Sommige recente databases, zoals NoSQL, bieden slechts “uiteindelijke consistentie”. Bij gebruik van dit principe, is enige tijd nodig voor het “bijwerken” van de data wanneer de database wordt opgeschaald of wanneer dezelfde data door meerdere gebruikers tegelijk worden geraadpleegd. Uiteindelijke consistentie is acceptabel voor sommige toepassingen, zoals het bijhouden van vermeldingen in een productcatalogus, maar voor kritieke bedrijfsactiviteiten, zoals winkelwagentransacties, is de relationele database nog steeds de gouden standaard.

Persisteren en ondeelbaarheid

In relationele databases worden bedrijfsregels en -beleid op een zeer gedetailleerd niveau verwerkt, met een strikt beleid voor persisteren (dat wil zeggen, het permanent maken van wijzigingen in de database). Neem bijvoorbeeld een voorraaddatabase waarin drie onderdelen worden bijgehouden die altijd samen worden gebruikt. Wanneer een onderdeel uit de voorraad wordt opgehaald, moeten de andere twee ook worden opgehaald. Als een van de drie onderdelen niet beschikbaar is, mag geen van de onderdelen worden opgehaald. Alle drie onderdelen moeten beschikbaar zijn voordat de database een wijziging persisteert. Een relationele database persisteert de wijziging van een onderdeel pas wanneer duidelijk is dat de wijziging kan worden gepersisteerd voor alle drie onderdelen. Deze mogelijkheid om rekening te houden met meerdere facetten bij het persisteren wordt atomiciteit genoemd. Atomiciteit vormt de sleutel om de data in de database accuraat te houden en ervoor te zorgen dat deze voldoen aan de regels, voorschriften en het beleid van het bedrijf.

ACID en relationele databases

Transacties in relationele databases worden gekenmerkt door vier cruciale eigenschappen: atomiciteit, consistentie, isolatie en duurzaamheid, doorgaans aangeduid als ACID.

  • Atomiciteit houdt alle elementen waaruit een volledige databasetransactie bestaat bijeen.
  • Consistentie zorgt ervoor dat datapunten in de juiste toestand verkeren na een transactie.
  • Isolatie zorgt ervoor dat het effect van een transactie onzichtbaar blijft voor anderen totdat deze is gepersisteerd, om verwarring te voorkomen.
  • Duurzaamheid zorgt ervoor dat datawijzigingen permanent worden zodra de transactie is gepersisteerd.

Opgeslagen procedures en relationele databases

Bij toegang tot data worden veel repetitieve handelingen uitgevoerd. Een eenvoudige query om informatie uit een datatabel te halen moet bijvoorbeeld mogelijk honderden of duizenden keren worden herhaald om het gewenste resultaat te produceren. Deze functies voor toegang tot de data vereisen een bepaald type programmacode voor toegang tot de database. Applicatieontwikkelaars willen niet voor elke nieuwe applicatie nieuwe programmacode schrijven voor deze functies. Gelukkig is het in relationele databases mogelijk opgeslagen procedures te gebruiken. Dit zijn blokken met programmacode die toegankelijk zijn via een eenvoudige oproep vanuit de applicatie. Met één enkele opgeslagen procedure kan bijvoorbeeld ervoor worden gezorgd dat records consistent worden getagd voor gebruikers van meerdere applicaties. Opgeslagen procedures kunnen ontwikkelaars ook helpen erop toe te zien dat bepaalde datafuncties in de applicatie op een specifieke manier worden geïmplementeerd.

Databasevergrendeling en concurrency

Er kunnen zich conflicten voordoen in een database wanneer meerdere gebruikers of applicaties tegelijkertijd proberen data te wijzigen. Technieken voor vergrendeling en concurrency verlagen de kans op conflicten en zorgen ervoor dat de integriteit van de data behouden blijft.

Vergrendeling voorkomt dat andere gebruikers en applicaties toegang verkrijgen tot data terwijl deze worden bijgewerkt. In sommige databases geldt de vergrendeling voor de gehele tabel. Dit heeft een negatieve invloed op de prestaties van de applicatie. In andere databases, zoals de relationele databases van Oracle, wordt de vergrendeling toegepast op recordniveau, zodat de andere records in de tabel beschikbaar blijven. Hierdoor presteert de applicatie beter.

Concurrency wordt toegepast voor het beheren van de activiteit wanneer meerdere gebruikers of applicaties tegelijkertijd query's aanroepen in dezelfde database. Deze mogelijkheid zorgt ervoor dat de juiste toegang wordt geboden aan gebruikers en applicaties, overeenkomstig het beleid voor data management.

Waar u op moet letten bij het selecteren van een relationele database

De software die wordt gebruikt voor het opslaan, beheren, bevragen en ophalen van data die zijn opgeslagen in een relationele database, wordt een relationeel databasebeheersysteem (RDBMS) genoemd. Het RDBMS biedt een interface tussen gebruikers en applicaties enerzijds en de database anderzijds, alsmede beheerfuncties voor het beheren van dataopslag, -toegang en prestaties.

U kunt zich laten leiden door verschillende factoren bij het kiezen tussen databasetypen en relationele databaseproducten. Welk RDBMS u moet kiezen, is afhankelijk van uw zakelijke behoeften. Stel uzelf de volgende vragen:

  • Wat zijn onze vereisten met betrekking tot de nauwkeurigheid van de data? Is de dataopslag en nauwkeurigheid afhankelijk van bedrijfslogica? Zijn er strenge vereisten met betrekking tot de nauwkeurigheid van onze data (bijvoorbeeld financiële data en overheidsrapporten)?
  • Hebben we behoefte aan schaalbaarheid? Wat is de schaal van data die moet worden beheerd en wat is de verwachte groei? Moet het databasemodel worden ondersteund door gemirrorde databasekopieën (als afzonderlijke instances) ten behoeve van de schaalbaarheid? Zo ja, kan het systeem de consistentie van de data tussen de verschillende instances bewaren?
  • Hoe belangrijk is concurrency? Hebben meerdere gebruikers en applicaties gelijktijdig toegang tot de data nodig? Ondersteunt de databasesoftware concurrency en beschermt deze tegelijkertijd de data?
  • Wat zijn onze behoeften met betrekking tot prestaties en betrouwbaarheid? Hebben we een product met hoge prestaties en een hoge betrouwbaarheid nodig? Wat zijn onze vereisten wat betreft de snelheid van de verwerking van query's? Welke toezeggingen doet de leverancier wat betreft service level overeenkomsten (SLA’s) of ongeplande downtime?

De relationele database van de toekomst: de zelfsturende database

In de loop der jaren zijn relationele databases beter, sneller, krachtiger en gebruiksvriendelijker geworden. Maar ze zijn ook complexer geworden en het beheren van de database was lange tijd een fulltime bezigheid. In plaats van hun expertise te gebruiken om innovatieve applicaties te ontwikkelen die waarde toevoegen aan het bedrijf, moesten ontwikkelaars het grootste deel van hun tijd besteden aan beheeractiviteiten die nodig waren om de databaseprestaties te optimaliseren.

Tegenwoordig bouwt autonome technologie voort op de sterke punten van het relationele model om een nieuw type relationele database te leveren. De zelfsturende database (ook bekend als de autonomous database) behoudt de kracht en voordelen van het relationele model, maar maakt gebruik van kunstmatige intelligentie (AI), zelflerende systemen en automatisering om de queryprestaties en beheertaken te bewaken en te verbeteren. Om de prestaties van zoekopdrachten te verbeteren kan de zelfsturende database bijvoorbeeld hypothetische indexen opstellen en testen om zoekopdrachten te versnellen en de beste in de productieomgeving opnemen, en dat alles geheel zelfstandig. De zelfsturende database brengt deze verbeteringen voortdurend aan, zonder menselijke tussenkomst.

Autonome technologie verlost ontwikkelaars van de alledaagse taken van het beheren van de database. Ze hoeven bijvoorbeeld niet langer vooraf infrastructuurvereisten te bepalen. Bij een zelfsturende database kunnen ze in plaats daarvan opslagruimte en rekenkracht naar behoefte toevoegen om de groei van de database te ondersteunen. In slechts enkele stappen kunnen ontwikkelaars eenvoudig een autonome relationele database maken, waardoor ze meer tijd hebben voor de ontwikkeling van applicaties.