Databasearchitectuur met drie niveaus. Databases

Het Oracle databasemanagementsysteem (DBMS) is ontworpen voor gelijktijdige toegang tot en manipulatie van grote hoeveelheden opgeslagen informatie. Er zijn twee basisconcepten in een DBMS die u moet begrijpen om enkele van de daaropvolgende punten in termen van beveiliging en bescherming van het DBMS te begrijpen: de database en de instance. In een notendop is een database een reeks bestanden in het besturingssysteem, en een instance bestaat uit processen en geheugen, en één database kan in meerdere instances worden benaderd, en een instance biedt toegang tot slechts één database tegelijk. Laten we deze concepten nu in meer detail bekijken.

Oracle-database

Er zijn twee niveaus van gegevensrepresentatie in een Oracle-database: fysiek en logisch. De fysieke laag omvat databasebestanden die op schijf zijn opgeslagen, en de logische laag omvat tabelruimte en gebruikersschema's. Laten we deze niveaus in meer detail bekijken.

Fysieke databaselaag

De database en het fysieke exemplaar worden weergegeven door zes bestandstypen. Een instance bevat parameterbestanden waarin de kenmerken ervan zijn gespecificeerd. Het hoofdbestand is het init.ora-bestand, dat verantwoordelijk is voor de instance-initialisatieparameters, zoals de databasenaam, link naar besturingsbestanden, enz. Een voorbeeld van het initialisatiebestand wordt getoond in Fig. 1

Databasebestanden

De database zelf wordt vertegenwoordigd door een reeks bestanden van verschillende typen, waarin feitelijk verschillende gegevens worden opgeslagen. Hieronder vindt u een korte beschrijving van wat deze bestandstypen zijn en hoe elk bestandstype nuttig voor ons kan zijn:

  • Gegevensbestanden. Deze bestanden slaan de gegevens zelf op in de vorm van tabellen, indexen, triggers en andere objecten. Gegevensbestanden zijn het belangrijkste in de hele database. Een standaarddatabase moet minimaal twee gegevensbestanden bevatten: voor systeemgegevens (SYSTEM-tabelruimte) en voor gebruikersgegevens (USER-tabelruimte). In de tabelruimte SYSTEM worden de wachtwoorden van alle gebruikers in gecodeerde vorm opgeslagen.
  • Logbestanden opnieuw uitvoeren. Logbestanden voor opnieuw uitvoeren zijn erg belangrijk voor een Oracle-database. Ze registreren alle databasetransacties. Ze worden alleen gebruikt om gegevens in de database zelf te herstellen als een exemplaar mislukt. In de redo-logboeken kunt u veel belangrijke informatie vinden waar de gemiddelde beheerder misschien niet eens aan denkt, inclusief gebruikerswachtwoorden.
  • Controle bestanden. Deze bestanden definiëren de locatie van gegevensbestanden en andere informatie over de status van de database. Controlebestanden moeten goed beveiligd zijn. Het belangrijkste bestand is het bestand met de initialisatieparameters van de instantie, omdat de instantie zonder dit bestand niet kan starten. Andere bestanden zoals LISTENER.ORA, SQLNET.ORA, PROTOCOL.ORA, NAMEN.ORA etc. houden verband met netwerkondersteuning en zijn ook erg belangrijk. In deze bestanden kunt u veel nuttige informatie vinden om het DBMS te doorgronden.
  • Tijdelijke bestanden. Tijdelijke bestanden worden gebruikt om tussenresultaten van acties op een grote hoeveelheid gegevens op te slaan, voor het geval er hiervoor niet voldoende ruimte in het RAM is. In tijdelijke bestanden kunt u de inhoud vinden van tijdelijke tabellen en daarop gebouwde indexen. Tijdelijke bestanden kunnen handig zijn tijdens incidentonderzoeken of bij het herstellen van belangrijke informatie die uit een database is verwijderd.
  • Wachtwoordbestanden. Wordt gebruikt om gebruikers te authenticeren die DBMS-beheer op afstand via het netwerk uitvoeren. We zullen er later meer in detail over praten.

Zoals u kunt zien, is elk van de bovenstaande bestandstypen vanuit veiligheidsoogpunt van groot belang.

Logisch databaseniveau

Op logisch niveau zijn er tabelruimten en een databaseschema, bestaande uit tabellen, indexen, views, opgeslagen procedures, enz.

De database is verdeeld in verschillende logische delen, tabelruimten genoemd. Tabelruimten worden gebruikt om gegevens logisch te groeperen om het beheer te vereenvoudigen.

Elke tabelruimte bestaat uit een of meer gegevensbestanden, die zich fysiek op verschillende schijven kunnen bevinden.

Tabelruimten bevatten op hun beurt schema's: dit zijn unieke containers met objecten die in de database zijn opgeslagen. Elk schema is uniek gekoppeld aan een specifieke gebruiker: de eigenaar van dit schema. Deze schema's bevatten al logische eenheden zoals tabellen, indexen, views en opgeslagen procedures.

Drie niveaus van architectuur.

De ANSI/SPARC-architectuur omvat drie niveaus: intern, conceptueel en extern. In algemene termen zijn deze als volgt:

De interne laag is de laag die het dichtst bij de fysieke opslag ligt, d.w.z. geassocieerd met methoden voor het opslaan van informatie op fysieke opslagapparaten.

Het externe niveau ligt het dichtst bij de gebruikers, d.w.z. het houdt zich bezig met de manieren waarop gegevens aan individuele gebruikers worden gepresenteerd.

Het conceptuele niveau is een ‘tussenniveau’ tussen de eerste twee.

Extern niveau (individuele visies van gebruikers). Conceptueel niveau (algemene visies van gebruikers).

Intern niveau (representatie in het geheugen).

Als het externe niveau betrekking heeft op individuele opvattingen van gebruikers, wordt het conceptuele niveau geassocieerd met een algemeen beeld van gebruikers.

Met andere woorden, er kunnen meerdere externe weergaven zijn, die elk bestaan ​​uit een min of meer abstracte weergave van een bepaald deel van de database, en er kan slechts één conceptuele weergave zijn, bestaande uit een abstracte weergave van de database als geheel. .

Het externe niveau is het individuele gebruikersniveau. De gebruiker kan een applicatieprogrammeur of een eindgebruiker van elk vaardigheidsniveau zijn. Een speciale plaats onder de gebruikers wordt ingenomen door de databasebeheerder. (In tegenstelling tot andere gebruikers is hij ook geïnteresseerd in het conceptuele en interne niveau.)

Elke gebruiker heeft zijn eigen communicatietaal.

Voor een applicatieprogrammeur is dit óf één van de gangbare programmeertalen zoals C, COBOL of PL/1, óf een speciale taal van het betreffende systeem. Dergelijke oorspronkelijke talen worden (informeel!) talen van de vierde generatie genoemd omdat machinecode, assembleertaal en talen als COBOL kunnen worden beschouwd als talen van de eerste drie ‘generaties’, en de Originele talen worden op dezelfde manier gemoderniseerd vanuit talen van de derde generatie.

Voor de eindgebruiker is dit óf een speciale zoektaal, óf een taal voor een speciaal doel, misschien gebaseerd op formulieren en menu's, specifiek toegesneden op de vereisten en ondersteund door een online applicatie.

Hoewel het architectonisch handig is om onderscheid te maken tussen een data-subtaal en de onderliggende basistaal, kunnen ze in de praktijk voor de gebruiker niet van elkaar te onderscheiden zijn. Vanuit het oogpunt van de gebruiker verdient het uiteraard de voorkeur dat ze niet of moeilijk te onderscheiden zijn, ze worden sterk gekoppeld genoemd. Als ze duidelijk en gemakkelijk te onderscheiden zijn, wordt er gezegd dat ze losjes gekoppeld zijn. De meeste systemen ondersteunen tegenwoordig slechts zwakke communicatie. Een nauw gekoppeld systeem kan de gebruiker wellicht een meer uniforme reeks mogelijkheden bieden, maar vergt uiteraard meer inspanning van de kant van systeemontwerpers en -ontwikkelaars (die waarschijnlijk de status quo verwachten); Er zijn echter aanwijzingen dat er de komende jaren een geleidelijke beweging zal plaatsvinden naar nauwer gekoppelde systemen.

De gegevensverwerkingstaal bestaat uit uitvoerbare PL/1-instructies die informatie van en naar de database overbrengen; opnieuw, mogelijk inclusief nieuwe speciale operators.

Over het algemeen bestaat een externe representatie uit meerdere exemplaren van elk type extern record, die op hun beurt niet noodzakelijkerwijs hoeven overeen te komen met de kwetsbare records. De gegevenssubtaal waarover de gebruiker beschikt, wordt gedefinieerd in termen van externe records; Een ophaalbewerking voor een gegevensverwerkingstaal zal bijvoorbeeld monsters nemen van exemplaren van externe in plaats van opgeslagen records.

Conceptueel niveau.

Een conceptuele weergave is een weergave van alle database-informatie in een iets abstractere vorm (zoals het geval is bij een externe weergave) vergeleken met de fysieke manier van gegevensopslag. Een conceptuele representatie is echter heel anders dan de manier waarop gegevens aan een individuele gebruiker worden gepresenteerd. Over het algemeen is een conceptuele weergave een weergave van gegevens zoals ze ‘werkelijk zijn’, en niet zoals de gebruiker gedwongen wordt deze te zien door bijvoorbeeld een bepaalde taal of de gebruikte hardware.

Een conceptuele representatie bestaat uit meerdere exemplaren van elk type conceptueel record. Het kan bijvoorbeeld bestaan ​​uit een set recordinstanties die informatie over individuen bevatten, plus een set recordinstanties die informatie over onderdelen bevatten, enz. Het conceptuele document hoeft niet noodzakelijkerwijs samen te vallen met het externe document enerzijds en met het opgeslagen document anderzijds.

Een conceptueel beeld wordt gedefinieerd met behulp van een conceptueel schema, dat definities bevat voor elk type conceptueel document.

Een conceptueel schema gebruikt een andere datadefinitietaal: conceptueel. Een conceptueel beeld is een weergave van de gehele inhoud van een database, en een conceptueel schema is de definitie van een dergelijke weergave. Het zou echter een vergissing zijn om aan te nemen dat een conceptueel schema niets meer is dan een reeks definities, meer als eenvoudige recordrelaties in een COBOL-programma (of een ander programma).

Laten we nu verder gaan met een meer gedetailleerde studie van de drie niveaus van architectuur.

Intern niveau.

Het derde niveau van de architectuur is het interne niveau. Een interne weergave is een weergave op laag niveau van de gehele database; het bestaat uit vele exemplaren van elk intern recordtype. De term "intern record" behoort tot de ANSI/SPARC-terminologie en verwijst naar een constructie die een opgeslagen record wordt genoemd. De interne representatie is, net als de externe en conceptuele representatie, niet gerelateerd aan de fysieke laag, omdat er geen rekening wordt gehouden met de fysieke gebieden van het opslagapparaat, zoals cilinders en sporen. Met andere woorden: de interne representatie gaat uit van een oneindige lineaire adresruimte; de details over hoe de adresruimte wordt toegewezen aan het fysieke opslagapparaat zijn zeer systeemspecifiek en zijn opzettelijk niet opgenomen in de algehele architectuur.

De interne representatie wordt beschreven met behulp van een intern schema, dat niet alleen de verschillende soorten records definieert die worden opgeslagen, maar ook de bestaande indexen, hoe de velden worden weergegeven, de fysieke volgorde van de records die worden opgeslagen, enzovoort. Het interne schema is geschreven met een andere gegevensdefinitietaal: intern.

Concluderend merken we op dat in sommige uitzonderlijke situaties applicatieprogramma's, met name die welke hulpprogramma's worden genoemd, bewerkingen rechtstreeks op het interne niveau kunnen uitvoeren in plaats van op het externe niveau. Deze praktijk wordt uiteraard niet aanbevolen; het definieert het risico in termen van veiligheid (beveiligingsregels worden genegeerd) en integriteit (integriteitsregels worden ook genegeerd), bovendien zal het programma afhankelijk zijn van de geladen gegevens; maar soms kan dit de enige manier zijn om de vereiste functie te bereiken of de vereiste prestaties te bereiken - net zoals een gebruiker van een taal op hoog niveau soms om dezelfde redenen zijn toevlucht moet nemen tot assembleertaal.

Applicaties die databases gebruiken, worden meestal ingedeeld in een van de software-architecturen, die hun eigen voor- en nadelen hebben.

Lokale architectuur.

Zowel het programma als de database bevinden zich op dezelfde computer. De meeste desktopapplicaties draaien op deze architectuur.

Bestandsserverarchitectuur.

De database bevindt zich op een krachtige speciale computer (server) en personal computers zijn ermee verbonden via een lokaal netwerk. Op deze computers zijn clientprogramma's geïnstalleerd die via het netwerk toegang krijgen tot de database. Het voordeel van deze architectuur is de mogelijkheid voor meerdere gebruikers om gelijktijdig met één database te werken.

Het nadeel van deze aanpak is de grote hoeveelheid informatie die via het netwerk wordt verzonden. Alle verwerking vindt plaats aan de clientzijde, waar daadwerkelijk een kopie van de database wordt gemaakt. Dit leidt tot een beperking van het maximaal mogelijke aantal gebruikers en grote vertragingen bij het werken met de database. Deze vertragingen worden veroorzaakt door het feit dat gelijktijdige toegang niet mogelijk is op het specifieke tafelniveau. Totdat een programma op een van de clientsites klaar is met werken met de tabel (bijvoorbeeld door records te wijzigen), hebben andere programma's geen toegang tot deze tabel. Dit wordt vergrendeling op tabelniveau genoemd en voorkomt verwarring over de inhoud van de tabel.

Client-serverarchitectuur.

In deze architectuur slaat de server niet alleen de database op, maar voert hij ook een DBMS-programma uit dat gebruikersverzoeken verwerkt en sets records naar hen terugstuurt. In dit geval werken gebruikersprogramma's bijvoorbeeld niet meer met de database als een set fysieke bestanden, maar wenden ze zich tot het DBMS, dat bewerkingen uitvoert. Dit neemt de belasting van de clientsites weg, aangezien het meeste werk op de server gebeurt. Het DBMS bewaakt automatisch de integriteit en veiligheid van de database en controleert ook de toegang tot informatie met behulp van een wachtwoordservice. Client-server DBMS's maken blokken mogelijk op recordniveau en zelfs op individueel veldniveau. Dit betekent dat een willekeurig aantal gebruikers met de tabel kan werken, maar slechts één van hen heeft toegang tot de functie om een ​​specifiek record of een van de velden ervan te wijzigen.

Het grootste nadeel van deze architectuur is geen erg hoge betrouwbaarheid. Als de server uitvalt, stopt al het werk.

Gedistribueerde architectuur.

Er draaien meerdere servers op een netwerk en de databasetabellen worden onderling verdeeld om een ​​grotere efficiëntie te bereiken. Elke server heeft zijn eigen kopie van het DBMS. Bovendien maakt een dergelijke architectuur meestal gebruik van speciale programma's, zogenaamde applicatieservers. Zij

kunt u de verwerking van verzoeken van een groot aantal gebruikers optimaliseren en de belasting gelijkmatig verdelen over computers in het netwerk.

Het nadeel van gedistribueerde architectuur is het nogal complexe en dure proces van creatie en onderhoud (beheer), evenals de hoge eisen aan servercomputers.

Internet - architectuur.

Toegang tot de database en DBMS (gedistribueerd op één computer of netwerk) wordt uitgevoerd vanuit een browser met behulp van een standaardprotocol. Dit stelt minimale eisen aan clienthardware. Dergelijke programma's worden "thin clients" genoemd omdat ze dankzij de standaardisatie van alle protocollen en implementatie zelfs op een pc met een 80386-processor kunnen werken. U kunt bijvoorbeeld geen lokaal netwerk organiseren, maar toegang krijgen tot de server via internet op een lokaal netwerk (in dit geval hebben we het over intranettechnologieën). In dit geval is het niet nodig om speciale clientprogramma's te ontwikkelen of uw eigen specificaties te bedenken voor de gegevensuitwisseling tussen de server en de clientsites. Het is voldoende om kant-en-klare browsers en softwareoplossingen te gebruiken.

De ANSI-SPARC-onderzoeksgroep (ANSI - American National Standard Institute en SPARC - Standards Planning and Requirements Committee) stelde drie abstractieniveaus voor voor het organiseren van de databasestructuur. Dit extern, conceptueel En interieur niveaus van gegevensbeschrijving.

Het is op basis van de ANSI-SPARC-architectuur dat de architectuur van de meeste moderne DBMS'en is gebaseerd.

Definitie Extern niveau- Dit is het niveau waarop gegevens worden waargenomen door de gebruiker of gebruikersniveau. Het bestaat uit een aantal verschillende databaseweergaven van externe gebruikers. Verschillende weergaven kunnen dagen en dezelfde gegevens echter anders weergeven.

Definitie Conceptueel niveau _ is een algemeen overzicht van de database waarin alle gegevens worden beschreven die erin zijn opgeslagen. Dit niveau bevat de logische structuur van de gehele database. Het is op dit niveau dat de volgende componenten worden gepresenteerd:

  • - entiteiten, attributen en relaties
  • - gegevensbeperkingen
  • - semantische informatie over de gegevens
  • - informatie over hoe gegevensbeveiliging en -integriteit worden gewaarborgd.

Het is belangrijk op te merken dat de presentatie van gegevens op conceptueel niveau onafhankelijk is van de manier waarop deze zijn opgeslagen, maar dat elke externe representatie op dit niveau wordt ondersteund.

Definitie Intern niveau is de fysieke representatie van informatie in een computer. Dit niveau bevat een beschrijving van datastructuren en de organisatie van individuele bestanden voor het opslaan van gegevens op fysieke apparaten.

Definitie Schema van een database wordt de beschrijving ervan genoemd. In overeenstemming met de abstractieniveaus worden de typen databaseschema's bepaald: verzameling externe circuits(overeenkomend met individuele gegevensweergaven), conceptueel En intern schema's. Het is het conceptuele diagram dat alle entiteiten, attributen en relaties daartussen beschrijft. Ten slotte is het interne schema een volledige beschrijving van de fysieke structuur van de gegevens.

Het DBMS is verantwoordelijk voor de onderlinge overeenstemming van de genoemde schema's en voor het controleren van de consistentie ervan. In het kader van het DBMS worden de zgn conceptueel intern En conceptueel-externe mapping. De eerste verbindt het conceptuele schema met het interne schema en maakt het mogelijk dat feitelijke records in het computergeheugen worden gevonden die overeenkomen met logische records in het conceptuele schema. Met de tweede kan het DBMS gebruikersweergaven toewijzen aan de juiste delen van het conceptuele diagram.

We benadrukken dat veranderingen die op de lagere abstractieniveaus worden aangebracht, geen invloed hebben op de hogere niveaus. Externe schema's worden dus beschermd tegen veranderingen die op conceptueel niveau worden aangebracht, en het conceptuele schema wordt beschermd tegen veranderingen die in het interne schema worden aangebracht. De architectuur voor gegevensdefinitie op drie niveaus biedt dus data-onafhankelijkheid van programma’s.

Elk databasebeheersysteem moet aan de volgende vereisten voldoen:

  • de gebruiker de mogelijkheid bieden om nieuwe databases te creëren en hun schema (logische datastructuur) te definiëren met behulp van een speciale taal (datadefinitietaal); meerdere weergaven van dezelfde gegevens ondersteunen;
  • u in staat stellen om zoekopdrachten uit te voeren op gegevens (informatie uit de database) en gegevens te wijzigen met behulp van een zoektaal of gegevensmanipulatietaal; integratie en delen van gegevens tussen applicaties mogelijk maken;
  • de opslag van zeer grote hoeveelheden gegevens gedurende lange tijd ondersteunen en deze beschermen tegen accidentele schade en ongeoorloofde toegang; zorgen voor indien nodig aanpassing van de database en toegang tot gegevens via zoekopdrachten, d.w.z. de veiligheid en integriteit van gegevens garanderen;
  • controle van de toegang tot gegevens voor veel gebruikers tegelijk; de invloed van het verzoek van de ene gebruiker op het verzoek van een andere gebruiker uitsluiten en gelijktijdige toegang voorkomen, wat de gegevens zou kunnen beschadigen, d.w.z. zorgen voor gelijktijdige controle van gegevenstoegang.

In een informatiesysteem met een database zijn verschillende componenten te onderscheiden.

  • 1. Gebruikers - mensen die informatie in de database gebruiken. Het is gebruikelijk om de volgende gebruikersgroepen te onderscheiden: systeembeheerders - verantwoordelijk voor de basissysteembewerkingen; databasebeheerders - beheren de werking van het DBMS en zorgen voor de werking van de database; databaseontwerpers - ontwikkel de databasestructuur; systeemanalisten - bepalen de belangrijkste functies van het databasesysteem en ontwerpen formulieren voor gegevensinvoer, rapporten en procedures die toegang bieden tot en manipulatie van gegevens (toevoegen, wijzigen, verwijderen); programmeurs - maak programmacode; directe gebruikers - gebruik applicatieprogramma's om de noodzakelijke bewerkingen uit te voeren om hun activiteiten te automatiseren.
  • 2. Toepassingen - gebruikersprogramma's die informatie van het systeem nodig hebben.
  • 3. Databasebeheersysteem - Software die de toegang tot gegevens regelt en de gespecificeerde functionaliteit van de IS met de database biedt.
  • 4. Informatie- verwerkte gegevens (strings opgeslagen in bestanden).
  • 5. Hostsysteem - een computersysteem waarop bestanden worden opgeslagen. Gegevensrijen zijn toegankelijk voor het hostsysteem. De rol van het DBMS is het genereren van query's waarmee de bestandsbeheerfunctionaliteit van het hostsysteem kan worden gebruikt voor verschillende toepassingen. Een DBMS is een extra softwarelaag die bovenop de hostsysteemsoftware is gebouwd.
  • 6. Apparatuur - alle systeemsoftware (computer voor algemeen gebruik, personal computer, laptop, zakcomputer).
  • 7. Randapparatuur - fysieke apparaten die input/output leveren, evenals elektronische apparaten voor het aansluiten van extra computers en het organiseren van een netwerk.

Een grafische interpretatie van een IS met een database in de vorm van een logische reeks niveaus wordt weergegeven in Fig. 3.1.

Rijst. 3.1

Op het lagere niveau zijn er gegevens opgeslagen in fysieke bestanden (fysiek databasegeheugen). Op het hoogste niveau bevinden zich applicaties die een eigen weergave hebben van dezelfde fysieke gegevens. Elke databaseweergave gaat uit van een specifieke logische structuur, opgebouwd uit de onderliggende fysieke gegevens. Om een ​​interface te bieden tussen het fysieke geheugen van de database en de verschillende logische versies ervan (de set ondersteunde views), bestaat het DBMS zelf ook uit verschillende lagen (componenten).

Normaal gesproken bevat een modern DBMS de volgende componenten:

  • de kern, die verantwoordelijk is voor het beheer van gegevens in extern en RAM;
  • een databasetaalprocessor die zorgt voor het ophalen en wijzigen van gegevens en het creëren van, in de regel, machine-onafhankelijke uitvoerbare interne code;
  • een runtime-ondersteuningssubsysteem dat gegevensmanipulatieprogramma's interpreteert die een gebruikersinterface met het DBMS creëren;
  • serviceprogramma's (externe hulpprogramma's) die een aantal extra mogelijkheden bieden voor het onderhouden van het informatiesysteem.

Databasebeheersystemen worden geclassificeerd op basis van verschillende criteria, bijvoorbeeld: volgens het datamodel - hiërarchisch, netwerk, relationeel, objectgeoriënteerd, objectrelationeel; per plaatsingsmethode - lokaal (alle delen van het lokale DBMS bevinden zich op één computer), gedistribueerd (delen van het DBMS bevinden zich op twee of meer computers); door de methode van toegang tot de database - bestandsserver, client-server, ingebed, - evenals door andere kenmerken |9, 33].

Conceptuele, logische en fysieke modellen van het vakgebied. Onderwerpgebied vertegenwoordigt een deel van de echte wereld dat wordt verkend of gebruikt. Dit kan zijn “Vervaardiging van producten op bestelling”, “Verkoop van eindproducten”, “Registratie van een werknemer voor werk”, etc. Vanwege de complexiteit van het vakgebied is het niet mogelijk om de aspecten ervan in één keer te behandelen. niveau model. Daarom worden drie niveaus gebruikt: conceptueel (conceptueel), logisch en fysiek.

Conceptueel niveau weerspiegelt het vakgebied in zijn meest algemene vorm. Het definieert de inhoud en structuur van het vakgebied, ongeacht de datamodellen (zie paragraaf 3.3) en het gebruikte type DBMS. Dit niveau moet begrijpelijk zijn voor de gebruiker en volledig onafhankelijk van hoe de gegevens daadwerkelijk in de database worden opgeslagen. Wijzigingen in dit model mogen alleen worden aangebracht als er veranderingen plaatsvinden in de echte wereld, zodat het model een weerspiegeling blijft van het domein.

Logisch het niveau is gemiddeld, waarop het model is geformaliseerd. Op dit niveau wordt het onderwerpgebied weergegeven in de vorm van informatieobjecten (entiteiten) en verbindingen daartussen. Voor het relationele model zijn entiteiten ‘prototypes’ van tabellen, en vertegenwoordigen relaties de relaties daartussen. Het logische model ligt ten grondslag aan de constructie van een database, inclusief het gebruik van CASE-tools.

Fysiek Het domeinmodelniveau bepaalt de wijze van implementatie in de omgeving van het geselecteerde DBMS. Eén logisch model kan overeenkomen met meerdere fysieke modellen (voor verschillende DBMS'en). CASE-tools converteren automatisch een logisch model naar een fysiek model voor een specifiek DBMS. Op basis van het fysieke model wordt de databasestructuur ontworpen. Met het gebruik van CASE-tools vindt dit proces automatisch plaats en wordt het forward design genoemd. Met CASE-tools kunt u ook fysieke en vervolgens logische modellen maken (reverse engineering) op basis van een bestaande database.

DBMS-architectuur op drie niveaus. De eerste pogingen om de algemene architectuur van een DBMS te standaardiseren dateren uit 1971, toen een benadering op twee niveaus van de DBMS-architectuur werd voorgesteld, gebaseerd op het gebruik van een systeemweergave, inclusief het concept van een databaseschema en gebruikersweergaven (subschema).

In 1978 heeft de ANSI/SPARC-commissie (ANSI, American National Standard Institute; SPARC,

Comité Standaardplanning en Eisen - Het Comité Standaardplanning en Normen formaliseert het verschil tussen de logische en fysieke representatie van gegevens. In het bijzonder werd een algemene structuur van databasesystemen voorgesteld. Deze structuur wordt een architectuur met drie niveaus genoemd, inclusief interne, conceptuele en externe niveaus (Fig. 3.2).


Rijst. 3.2.

De introductie van een databasearchitectuur met drie niveaus maakte het mogelijk om de gebruikersweergave van de database te scheiden van de fysieke representatie ervan. De noodzaak voor een dergelijke scheiding is voornamelijk te wijten aan de volgende redenen:

  • elke gebruiker moet toegang kunnen krijgen tot dezelfde gegevens met behulp van zijn eigen weergave van deze gegevens, en deze indien nodig ook kunnen wijzigen, wat de mening van andere gebruikers niet mag beïnvloeden;
  • de toegang van de gebruiker tot de database mag niet afhankelijk zijn van de specifieke kenmerken van de opslag van gegevens daarin;
  • de databasebeheerder kan, indien nodig, de structuur van de gegevensopslag in de database wijzigen, inclusief de conceptuele structuur van de database, en deze acties mogen de weergave van de gegevens door de gebruiker niet beïnvloeden;
  • De interne structuur van gegevensopslag mag niet afhankelijk zijn van veranderingen in fysieke opslagapparaten.

Intern niveau in het DBMS-model met drie niveaus is dit het niveau dat het fysieke uiterlijk van de database bepaalt, dat het dichtst bij de fysieke opslag ligt. Het gaat over de manieren waarop informatie op fysieke apparaten wordt opgeslagen. Schijfstations, fysieke adressen, indexen, pointers, etc. zijn gerelateerd aan dit niveau. De laag is de verantwoordelijkheid van fysieke databaseontwerpers die beslissen welke fysieke apparaten gegevens zullen opslaan, welke methoden voor gegevenstoegang zullen worden gebruikt en welke maatregelen moeten worden genomen om de prestaties van het DBMS te behouden of te verbeteren. Dit niveau is gesloten voor gebruikers.

Conceptueel niveau - structureel niveau, dat een idee geeft van het logische diagram van de database. Op dit niveau wordt het conceptuele ontwerp van de database uitgevoerd, inclusief een analyse van de informatiebehoeften van gebruikers en de identificatie van de gegevenselementen die zij nodig hebben. Het resultaat van conceptueel ontwerp is een conceptueel databasediagram, evenals een logische beschrijving van alle data-elementen en de relaties daartussen. Zoals hierboven vermeld is het conceptuele diagram van de database niet direct gerelateerd aan het geselecteerde datamodel en DBMS, terwijl het logische diagram al uitgaat van de representatie van de datastructuur binnen het raamwerk van het geselecteerde model (zie paragraaf 3.3).

Extern niveau - het structurele niveau van de database dat de gebruikersweergaven van gegevens definieert. Elke gebruiker of groep gebruikers krijgt zijn eigen weergave van de gegevens in de database. Deze aangepaste beschrijving van data-elementen en de relaties daartussen kunnen rechtstreeks worden afgeleid uit het conceptuele diagram. Het verzamelen van verschillende gebruikersweergaven van gegevens vormt het externe niveau.

Onder gegevensschema(databaseschema) verwijst naar de algemene beschrijving van de database. In overeenstemming met de drielaagse architectuur worden drie soorten databaseschema's onderscheiden:

  • 1) het externe presentatieniveau van de database komt in de regel overeen met meerdere externe schema's (subschema's) van de database. Elk van deze schema's komt overeen met de presentatie van gegevens door een specifieke groep DBMS-gebruikers;
  • 2) het conceptuele diagram beschrijft alle data-elementen, de relaties daartussen, evenals de noodzakelijke beperkingen om de data-integriteit te behouden. Er is slechts één conceptueel gegevensschema voor elke database;
  • 3) het interne schema is een volledige beschrijving van het interne datamodel en bevat definities van opgeslagen records, presentatiemethoden, beschrijvingen van datavelden, informatie over indexen, enz. Er is slechts één intern schema voor elke database.

Op basis van de verschillende databaseschema's in het drie-niveaumodel volgt hieruit dat het DBMS de correspondentie tot stand moet brengen en de consistentie van de genoemde schema's moet bewaken.

Het conceptuele schema is de centrale schakel tussen elk extern schema en het interne schema van de database. Een conceptueel schema is gerelateerd aan een intern schema via een interne conceptuele mapping. Elk extern schema is op zijn beurt gekoppeld aan een conceptueel diagram met behulp van een externe conceptuele mapping, waardoor de weergave van de gebruiker kan worden toegewezen aan het overeenkomstige deel van het conceptuele diagram.

In de theorie en praktijk van databases is het gebruikelijk om onderscheid te maken tussen de begrippen ‘databasebeschrijving’ en ‘database’. Onder beschrijving van de databank het databaseschema begrijpen dat is gemaakt tijdens het databaseontwerpproces, waarvan de verandering in uitzonderlijke gevallen wordt verwacht. Onder database begrijpt alle informatie in de database, die in de loop van de tijd kan veranderen. Het geheel van informatie dat op een bepaald moment in de database is opgeslagen, wordt opgeroepen staat van de databank. Hetzelfde databaseschema kan dus overeenkomen met veel verschillende databasestatussen. Databasestatus wordt ook wel genoemd detaillering.

Het belangrijkste doel van de drielaagse architectuur is het waarborgen van de onafhankelijkheid van de gegevens, d.w.z. eventuele wijzigingen op de lagere niveaus van de database mogen geen invloed hebben op de hogere niveaus.

Er zijn twee soorten onafhankelijkheid:

  • logisch - volledige bescherming van externe circuits tegen wijzigingen in het conceptuele circuit;
  • fysiek - bescherming van het conceptuele schema tegen wijzigingen in het interne schema.

Het belangrijkste belang van het gebruik van een DBMS is om de gebruiker (of applicatieprocessen) een abstracte weergave van gegevens te bieden, waarbij de kenmerken van het opslaan en beheren ervan verborgen blijven. Het DBMS moet via toepassingsprocessen toegang tot gegevens bieden aan alle gebruikers, inclusief degenen die geen idee hebben:

Over de fysieke plaatsing van gegevens en hun beschrijvingen in het geheugen;

Over het zoekmechanisme voor de opgevraagde gegevens;

Over problemen die ontstaan ​​wanneer een groot aantal gebruikers (applicatieprogramma’s) tegelijkertijd dezelfde gegevens opvragen;

Over manieren om gegevens te beschermen tegen onjuiste updates en (of) ongeautoriseerde toegang;

Over het up-to-date houden van de database.

De algemene structuur van verbindingen tussen programma's en gegevens bij gebruik van een DBMS wordt weergegeven in figuur 6.6.

Bij het uitvoeren van de belangrijkste van deze functies moet het DBMS verschillende gegevensbeschrijvingen gebruiken, waarbij rekening moet worden gehouden met:

De essentie van het vakgebied;

Attributen die de inherente eigenschappen van elke entiteit karakteriseren;

Relaties die geselecteerde entiteiten koppelen.

Rijst. 6.6. Gegeneraliseerde structuur van verbindingen tussen programma's en gegevens in een DBMS

De aanpak van architectuur en databeschrijving werd voorgesteld door de ANSISPARC-commissie (Standards and Codes Planning Committee).

US National Standards Institute) en heeft tot doel het zicht van de gebruiker op de database te scheiden van de fysieke organisatie ervan. In overeenstemming met dit voorstel zou de DBMS-architectuur uit drie niveaus moeten bestaan ​​en externe, conceptuele en interne niveaus moeten bevatten (figuur 6.7).

Rijst. 6.7. ANSI-SPARC-architectuur met drie niveaus

Deze scheiding in niveaus waarborgt de onafhankelijkheid van de opgeslagen gegevens, wat noodzakelijk is om de volgende redenen:

1. Elke gebruiker moet toegang kunnen krijgen tot gegevens vanuit zijn eigen weergave ervan, en zijn weergave van de gegevens kunnen wijzigen zonder de weergave van andere gebruikers te beïnvloeden.

2. Gebruikers hoeven zich niet bezig te houden met de details van de fysieke organisatie van gegevens, b.v. mag niet afhankelijk zijn van de kenmerken van fysieke gegevensopslag.

3. De databasebeheerder moet de structuur van de gegevensopslag kunnen wijzigen, zodat deze wijzigingen transparant blijven voor andere gebruikers.

4. De databasestructuur mag niet afhankelijk zijn van fysieke aspecten van opslag, bijvoorbeeld bij het overstappen naar een nieuw extern geheugenapparaat.

Het externe niveau is een weergave van de database vanuit het standpunt van specifieke gebruikers. Dit niveau kan verschillende weergaven van de database van verschillende gebruikersgroepen omvatten. In dit geval heeft elke gebruiker te maken met een weergave van het onderwerpgebied, uitgedrukt in de voor hem meest begrijpelijke en handige vorm. Een dergelijke representatie bevat alleen die entiteiten, attributen en verbindingen die voor hem van belang zijn bij het oplossen van professionele problemen. Verschillende representaties op extern niveau kunnen elkaar overlappen, d.w.z. gebruik algemene beschrijvingen van domeinabstracties. Op extern niveau wordt een infologisch databasemodel gecreëerd, volledig onafhankelijk van het platform (het computersysteem waarop het zal worden gebruikt).

Het informatiemodel is mensgericht: het opslagmedium kan een menselijk geheugen zijn, geen computer. Het informatiemodel verandert pas als sommige veranderingen in de echte wereld veranderingen in sommige definities vereisen, zodat dit model het vakgebied blijft weerspiegelen.

Het conceptuele niveau is een algemene weergave van de database die beschrijft welke gegevens in de database zijn opgeslagen, evenals de relaties die daartussen bestaan. Het conceptuele niveau ligt tussenin in de architectuur op drie niveaus. Bevat de logische structuur van de gehele database. In feite is het een volledige weergave van de gegevensbehoeften van de organisatie, onafhankelijk van overwegingen met betrekking tot de manier waarop deze worden opgeslagen. Op conceptueel niveau is het noodzakelijk om het volgende te benadrukken:

1) entiteiten, hun attributen en verbindingen;

2) beperkingen opgelegd aan de gegevens;

3) semantische informatie over de gegevens;

4) informatie over veiligheidsmaatregelen.

Het conceptuele niveau ondersteunt elke externe representatie. Dit niveau bevat dus alle gegevens die toegankelijk zijn voor de gebruiker, met uitzondering van informatie over de methoden voor het opslaan van deze gegevens. Op conceptueel niveau wordt een datalogisch model gecreëerd.

Een datalogisch model is een beschrijving van een informatiemodel in de datadefinitietaal van een specifiek DBMS. Dit model is computergericht (afhankelijk van het DBMS en besturingssysteem dat op de computer wordt gebruikt).

Het interne niveau is de fysieke representatie van de database en beschrijft de methoden voor opslag ervan in het computersysteem. Dit niveau beschrijft de fysieke implementatie van de database en is ontworpen om optimale prestaties te bereiken en zuinig gebruik van schijfruimte te garanderen.

Bevat een beschrijving van datastructuren en individuele bestanden die worden gebruikt voor opslag op opslagapparaten.

Op intern niveau werkt het DBMS samen met de toegangsmethoden van het besturingssysteem om gegevens efficiënt op media te plaatsen, indexen te maken, enz. Op dit niveau wordt gebruik gemaakt van:

Kaart van toewijzing van schijfruimte voor gegevensopslag en indexen;

Een beschrijving van de details van het opslaan van records (met vermelding van de werkelijke grootte van de gegevenselementen die worden opgeslagen);

Informatie over het plaatsen van records;

Informatie over de mogelijkheid van datacompressie en de geselecteerde versleutelingsmethoden.

De implementatie van de vermelde informatie wordt uitgevoerd op het fysieke niveau van het computersysteem, dat wordt bestuurd door het besturingssysteem. Momenteel worden de functies van het DBMS en het besturingssysteem niet strikt gescheiden. Er zijn DBMS'en die alle toegangsmethoden gebruiken die in een bepaald besturingssysteem worden geboden, terwijl andere slechts enkele van de methoden gebruiken of hun eigen bestandssysteem implementeren.

Op intern niveau wordt een fysiek model gecreëerd.

Dankzij het fysieke model kan het DBMS programma's en gebruikers op naam toegang geven tot opgeslagen gegevens, zonder zich zorgen te hoeven maken over de fysieke locatie ervan. Het is computergericht (afhankelijk van het DBMS en besturingssysteem). Volgens dit model zoekt het DBMS naar gegevens op externe opslagapparaten.

In overeenstemming met de ANSI-SPARC-voorstellen kan een overeenkomstig datamodel op drie niveaus worden weergegeven (Figuur 6.8):

Rijst. 6.8. Gegevensmodellagen

Het DBMS is gebouwd op een modulair principe, omdat Dit is een vrij complex softwareproduct. De samenstelling en onderlinge verbinding van modules van echte DBMS’en variëren sterk, maar er kan een aantal algemene componenten worden geïdentificeerd (Fig. 6.9):

Rijst. 6.9. Belangrijkste componenten van een DBMS

Laten we eens kijken naar de belangrijkste componenten van het DBMS.

De queryprocessor is het hoofdonderdeel van het DBMS dat query's omzet in een reeks instructies op laag niveau voor de databasecontroller.

De databasecontroller communiceert met actieve gebruikersprogramma's en query's. De databasecontroller accepteert query's en onderzoekt externe en conceptuele schema's om de conceptuele records te bepalen die nodig zijn om aan de queryvereisten te voldoen. De databasecontroller roept de bestandscontroller op om aan het binnenkomende verzoek te voldoen.

De bestandscontroller manipuleert bestanden die bedoeld zijn voor het opslaan van gegevens en is verantwoordelijk voor het toewijzen van beschikbare schijfruimte. Het creëert en onderhoudt een lijst met structuren en indexen die zijn gedefinieerd in het interne schema. (De bestandscontroller beheert geen fysieke invoer - dat is een functie van het besturingssysteem).

De DML-taalpreprocessor converteert DML-instructies die zijn ingebed in applicatieprogramma's naar oproepen naar standaardfuncties van de basistaal. Om de juiste code te genereren, moet de DML-preprocessor communiceren met de queryprocessor. Data Manipulation Language (DML) is een set taalhulpmiddelen voor het organiseren van de toegang tot gegevens in een bepaald datamodel en in het bijbehorende DBMS.

De DDL-taalcompiler converteert DDL-opdrachten naar een reeks tabellen met metagegevens. Deze tabellen worden vervolgens opgeslagen in de systeemcatalogus en de besturingsinformatie wordt opgeslagen in de headers van de gegevensbestanden. Data Definition Language (DDL) is een formele wet die in sommige datamodellen wordt gebruikt om de structuur van de gegevens te definiëren.

De woordenboekcontroller regelt de toegang tot en de werking van de systeemmap. De systeemcatalogus is toegankelijk voor de meeste DBMS-componenten.

De databasecontroller bevat, net als andere DBMS-componenten, een groot aantal programma-eenheden. De databasecontroller bevat bijvoorbeeld de volgende softwarecomponenten (Figuur 6.10):

1. Controle van toegangsrechten (de gebruiker heeft wel of niet het recht op de gevraagde handeling).

2. Commandoprocessor (om het verzoek uit te voeren wordt de besturing overgedragen aan de commandoprocessor).

3. Integriteitscontroles (bij het uitvoeren van bewerkingen die verband houden met het wijzigen van de inhoud van de database, wordt de integriteit van de sleutels gecontroleerd).

4. De query-optimalisatie bepaalt de beste strategie voor het uitvoeren van de query.

5. De transactiebeheerder voert de benodigde verwerking uit van de tijdens de uitvoering van transacties ontvangen handelingen.

6. De planner is verantwoordelijk voor de conflictvrije uitvoering van database-parallelle bewerkingen.

7. De herstelcontroller zorgt ervoor dat gegevens na een storing in een consistente staat worden hersteld.

8. De buffercontroller is verantwoordelijk voor de gegevensoverdracht tussen RAM en externe media.

Rijst. 6.10. Componenten van databasecontroller