Onderverdeling taal- en softwaretools. Databasebeheersystemen

Rijst. 1.4. DBMS-structuur

Woordenboekcontroller– biedt toegang tot de systeemcatalogus en werkt ermee.

Bestandscontroleur– manipuleert gegevensbestanden en is verantwoordelijk voor het toewijzen van schijfruimte. Het beheert geen fysieke I/O, maar geeft verzoeken door aan de juiste toegangsmethoden voor het besturingssysteem.

Database-controller– communiceert met programma's en verzoeken die door gebruikers zijn gelanceerd. Het accepteert vragen en onderzoekt externe en conceptuele schema's om de conceptuele records te bepalen die nodig zijn om een ​​databasequery uit te voeren. De databasecontroller roept vervolgens de bestandscontroller op om het verzoek uit te voeren. De databasecontroller bevat de volgende softwarecomponenten:

· toegangsrechtencontrole – controleert of een bepaalde gebruiker de bevoegdheid heeft om de gevraagde handeling uit te voeren;

· opdrachtprocessor – voert het verzoek uit;

· instrumenten voor integriteitscontrole – controleer de beperkingen op het gebied van integriteitsondersteuning bij het uitvoeren van gegevenswijzigingsbewerkingen;

· Query-optimalisatie – bepaalt de optimale strategie voor het uitvoeren van query's;

· transactiecontroller – verwerkt bewerkingen die tijdens het transactieproces worden ontvangen;

· planner – is verantwoordelijk voor de conflictvrije uitvoering van parallelle bewerkingen met de database en beheert de relatieve volgorde van uitvoering van bewerkingen die in verschillende transacties zijn gedefinieerd;

· herstelcontroller – verantwoordelijk voor het herstellen van de database in geval van fouten naar een consistente staat;

· Buffercontroller – verantwoordelijk voor de gegevensoverdracht tussen het RAM-geheugen en de harde schijf.

Veel DBMS'en ondersteunen de mogelijkheid om hun eigen operators in talen op hoog niveau te implementeren (COBOL, Fortran, Pascal, Ada, C). Maar het DBMS ondersteunt 2 gespecialiseerde talen voor het ontwikkelen van applicaties met een database: DDL (DDL - Data Definition Language) en DMD (Data Manipulation Language). YaOD– een beschrijvende taal voor het definiëren van het logische schema van een database. Het bestaat uit een reeks instructies die het databaseschema definiëren. Het resultaat van het samenstellen van dergelijke beschrijvingen (conceptuele en externe schema's) is een reeks tabellen die zijn opgeslagen in een speciale databasesysteemcatalogus. (Het slaat metagegevens op). DDL wordt niet gebruikt om met data te werken. Voor dit doel wordt het gebruikt YaMD, dat een reeks operators bevat die gegevensverwerking uitvoeren: zoeken, toevoegen, wijzigen en verwijderen. Nucleaire MD-ondersteuning is een van de belangrijkste functies van een DBMS. Er zijn twee benaderingen voor de implementatie van NMD: procedureel en declaratief.

Bij gebruik procedurele nucleaire geneeskunde de gebruiker bepaalt de volgorde van handelingen die moeten worden uitgevoerd om het gewenste resultaat te verkrijgen. Deze aanpak is vergelijkbaar met de manier waarop procedurele programmeertalen (Pascal, C, enz.) worden geïmplementeerd. In dit geval biedt YMD de gebruiker een reeks operators voor de gegevens. Dit type omvat talen gebaseerd op relationele algebra.

Declaratieve NMD kunt u alle vereisten voor de resulterende gegevens definiëren met behulp van één enkele operator. In dit geval is het niet nodig om de details te kennen van de interne implementatie van datastructuren en de kenmerken van de algoritmen die worden gebruikt om deze op te halen. Dit type omvat talen gebaseerd op relationele calculus SQL en QBE. SQL(Structured Query Language) is gebaseerd op relationele calculus en wordt ondersteund door alle relationele DBMS'en. Er is een internationale standaard voor gedefinieerd. QBE(Query By Exemple) is een eenvoudige taal met een grafische interface waarmee niet-professionele gebruikers een query kunnen formuleren (bijvoorbeeld in Access DBMS).

Moderne DBMS'en bevatten ook een reeks tools die de ontwikkeling van databasetoepassingen vergemakkelijken - verschillende soorten generatoren:

  • schermformulieren – voor het maken van sjablonen voor gegevensinvoer;
  • rapporten;
  • grafische weergave van gegevens in de vorm van diagrammen;
  • toepassingen voor het maken van gegevensverwerkingsprogramma's.

Om met databases te werken worden speciale talen gebruikt, doorgaans genoemd database talen. Vroege DBMS'en ondersteunden verschillende talen die gespecialiseerd waren in hun functies. Meestal vielen twee talen op: schemadefinitietaal DB (SDL - Schemadefinitietaal) En taal voor gegevensmanipulatie (DML - Data Manipulation Language). SDL diende voornamelijk om de logische structuur van de database te definiëren, d.w.z. de structuur van de database zoals deze voor gebruikers verschijnt. De DML bevatte een reeks operatoren voor gegevensmanipulatie, d.w.z. Operators waarmee u gegevens in de database kunt invoeren en bestaande gegevens kunt verwijderen, wijzigen of selecteren. In de volgende lezing zullen we de vroege DBMS-talen gedetailleerder bekijken.

Moderne DBMS'en ondersteunen doorgaans één enkele geïntegreerde taal die alle noodzakelijke hulpmiddelen bevat voor het werken met een database, vanaf de creatie ervan, en die een basisgebruikersinterface met databases biedt. De standaardtaal van het momenteel meest voorkomende relationele DBMS is SQL (Structured Query Language). In verschillende lezingen van deze cursus zal de SQL-taal in enig detail worden besproken, maar voor nu zullen we de belangrijkste functies opsommen van een relationeel DBMS dat wordt ondersteund op taalniveau (d.w.z. functies die worden ondersteund bij het implementeren van de SQL-interface).

Allereerst combineert de SQL-taal de tools van SDL en DML, d.w.z. Hiermee kunt u een relationeel databaseschema definiëren en gegevens manipuleren. Tegelijkertijd wordt het benoemen van databaseobjecten (voor een relationele database - het benoemen van tabellen en hun kolommen) ondersteund op taalniveau in de zin dat de SQL-compiler objectnamen omzet in hun interne identificatiegegevens op basis van speciaal ondersteunde servicecatalogustabellen. Het interne deel van het DBMS (kernel) werkt helemaal niet met de namen van tabellen en hun kolommen.

De SQL-taal bevat speciale hulpmiddelen voor het definiëren van beperkingen voor de database-integriteit. Ook hier worden integriteitsbeperkingen opgeslagen in speciale catalogustabellen, en wordt de database-integriteitscontrole verzekerd op taalniveau, d.w.z. Bij het compileren van databasewijzigingsoperatoren genereert de SQL-compiler, gebaseerd op de integriteitsbeperkingen die in de database bestaan, de overeenkomstige programmacode.

Met speciale SQL-operatoren kunt u zogenaamde databaseviews definiëren. Dit zijn feitelijk query's die in de database zijn opgeslagen (het resultaat van elke query naar een relationele database is een tabel) met benoemde kolommen. Voor de gebruiker is een view dezelfde tabel als elke basistabel die in de database is opgeslagen, maar met behulp van views kunt u de zichtbaarheid van de database voor een specifieke gebruiker beperken of juist uitbreiden. Representaties worden ook op taalkundig niveau gehandhaafd.

Ten slotte wordt de autorisatie van toegang tot databaseobjecten ook uitgevoerd op basis van een speciale set SQL-instructies. Het idee is dat de gebruiker verschillende machtigingen moet hebben om verschillende soorten SQL-instructies uit te voeren. De gebruiker die de databasetabel heeft gemaakt, heeft een volledige set rechten om met deze tabel te werken. Tot deze bevoegdheden behoort onder meer de bevoegdheid om de bevoegdheid geheel of gedeeltelijk aan andere gebruikers te delegeren, inclusief de overdrachtsbevoegdheid. Gebruikersrechten worden beschreven in speciale catalogustabellen, en toestemmingscontrole wordt op taalniveau ondersteund.

Taal- en softwaretools van het DBMS

Concept en classificatie van DBMS

DBMS is software- en taalcomplex, ontworpen om een ​​database te creëren op een computer die voor veel gebruikers gebruikelijk is en om de daarin opgeslagen gegevens te beheren. Databasebeheer betekent het actueel houden ervan, wat wordt bereikt door het tijdig wijzigen van gegevens die in de database zijn opgeslagen, het herstellen van gegevens in ongebruikelijke situaties, het beschermen van gegevens tegen ongeoorloofde interventie en het uitvoeren van vele andere functies die zorgen voor een adequate weergave van de database van een bepaald vakgebied. DBMS'en bieden efficiënte gebruikerstoegang tot de gegevens die erin zijn opgenomen, binnen de grenzen van de aan de gebruikers verleende bevoegdheden.

Door de mate van veelzijdigheid Er zijn twee klassen DBMS:

universele systemen die niet gericht zijn op een specifiek vakgebied of de informatiebehoefte van een specifieke groep gebruikers;

gespecialiseerde systemen die werken op een bepaald computermodel in een specifiek besturingssysteem en beschikken over configuratiemiddelen voor het werken met een database in een specifiek vakgebied.

Door uitgevoerde functies DBMS'en zijn onderverdeeld in informatief en operationeel. Met informatiesystemen kunt u de opslag van informatie en de toegang daartoe organiseren voor beoordeling en uitgifte van eenvoudige certificaten. Operatiekamers voeren complexe gegevensverwerking uit.

Door communicatietalen DBMS kan open, gesloten of gemengd zijn. In open systemen worden universele programmeertalen gebruikt om toegang te krijgen tot de database. Gesloten systemen hebben hun eigen talen voor de communicatie met databasegebruikers.

Door macht Er zijn desktop- en bedrijfs-DBMS'en. Desktopsystemen (Access, FoxPro, Paradox) zijn gericht op eindgebruikers (specialisten op een specifiek vakgebied). Ze stellen geen hoge eisen aan de technische uitrusting en zijn laag in kosten. Corporate DBMS (Oracle, SyBase, DB2) bieden werk in een gedistribueerde omgeving, beschikken over hoge prestaties, geavanceerde beheertools en grotere mogelijkheden voor het handhaven van de integriteit. DBMS MS SQL Server en Interbase hebben de mogelijkheden van zowel desktop- als bedrijfssystemen.

Volgens het geïmplementeerde datamodel DBMS'en worden genoemd op basis van het gegevensschema dat ze ondersteunen: hiërarchisch, netwerk, relationeel, objectgeoriënteerd.

Taal- en softwaretools van het DBMS

DBMS-taaltools zijn vereist om de volgende functies uit te voeren:

– beschrijvingen van de databasepresentatie;

– het uitvoeren van gegevensmanipulatieoperaties;

– databasebeheer.

De eerste van deze functies is aanwezig databeschrijving (definitie) taal(YOD) – Shema-definitietaal. Beschrijving van de database met behulp van LDL-middelen databaseschema. DB-schema beschrijft de structuur van de database en de integriteitsbeperkingen die eraan worden opgelegd in overeenstemming met de regels die worden gereguleerd door het datamodel van het gebruikte DBMS. In sommige DBMS'en biedt de databeschrijvingstaal ook de mogelijkheid om beperkingen in te stellen op de toegang tot gegevens of gebruikersrechten.

Taal voor datamanipulatie(JMD) – Shema-manipulatietaal bevat een reeks operatoren voor gegevensmanipulatie waarmee u gegevens in de database kunt invoeren, verwijderen, wijzigen en de gevraagde informatie uit de database kunt selecteren.

Momenteel zijn er talloze voorbeelden van DBMS-talen die de mogelijkheden van databeschrijving en datamanipulatie combineren binnen één syntactisch raamwerk. Eén enkele geïntegreerde taal van het moderne DBMS bevat alle noodzakelijke hulpmiddelen voor het werken met een database, vanaf de oprichting ervan, en biedt een gebruikersinterface met de database. De meest populaire en standaardtaal voor relationele DBMS'en is SQL. (Gestructureerde querytaal- gestructureerde zoektaal ), ontwikkeld door IBM. Ter ondersteuning van objectmodellen is de OQL-taal (Object Query Language) ontworpen, die is gebaseerd op SQL.

Voorbeelden van andere talen in deze klasse zijn: Quel van het Ingres-systeem, gemaakt door de Universiteit van Californië; dBase-familie van DBMS van Asthon - Tate; R:Base van Microrim.

De proceduretaal die wordt gebruikt om de database te beheren is de QBE-taal (Query per voorbeeld). Deze taal biedt de gebruiker een handige en uniforme interface voor het uitvoeren van databaseonderhoudsbewerkingen.

DBMS-software bevat programmeertalen waarmee u complexe gegevensverwerkingssystemen kunt creëren die zijn gericht op specifieke taken en een specifieke gebruiker.

In het MS Access DBMS wordt het programmeren uitgevoerd met behulp van macro's en modules. Macro's zijn kleine programma's geschreven in de Access-macrotaal. Ze zijn een structuur die bestaat uit een of meer macro-instructies die opeenvolgend worden uitgevoerd of in een volgorde die door bepaalde voorwaarden wordt gespecificeerd. Met macro's kunt u bijna alle procedures programmeren die deel uitmaken van de functionaliteit van het DBMS en die worden uitgevoerd door databasegebruikers die geen programmeertalen kennen.

Modules zijn procedures geschreven in Visual Basic for Application (VBA).

VBA is een gemeenschappelijke taal voor alle Microsoft Office-applicaties en stelt u in staat elk programmeerprobleem op te lossen, van het automatiseren van de acties van een specifieke gebruiker tot het ontwikkelen van complexe applicaties die Microsoft Office als ontwikkelomgeving gebruiken. De VBA-taal is een objectgeoriënteerde programmeer- en computertaal. De basis van VBA-programma's zijn procedures, bestaande uit instructies die noodzakelijke bewerkingen uitvoeren. Procedures worden opgeslagen in modules van waaruit ze moeten worden uitgevoerd. De module wordt gebruikt om procedures te combineren op basis van hun functionele doel of om ze te koppelen aan een formulier of rapport.

Het MySQL DBMS wordt actief gebruikt bij webprogrammering. Om met de database van dit systeem te werken, wordt de programmeertaal PHP gebruikt. Het is een C-achtige taal die is ontworpen voor het snel maken van programma's op een webserver.

Scripttaal is ontwikkeld in PHP - code (software) instructies voor het uitvoeren van bepaalde acties op gegevens die uit de database zijn geselecteerd. Scripts worden in HTML-documenten ingevoegd, waardoor ze van statisch naar actief worden geconverteerd. De webserver scant het document, voert de daarin gevonden PHP-instructies uit en stuurt het resultaat van de instructies terug naar de gebruiker.

Met PHP kunt u gegevens uit formulieren verwerken, dynamische pagina's genereren, tellers, gastenboeken maken, enz. PHP biedt ondersteuning voor veel databases: FilePro, Informix, MySQL, Oracle, Sybase, enz.

Een databasebeheersysteem (DBMS) is een gespecialiseerd programma (meestal een reeks programma's) dat is ontworpen om een ​​database te organiseren en te onderhouden. Om een ​​informatiesysteem te creëren en te beheren is een DBMS nodig in dezelfde mate als een vertaler nodig is om een ​​programma in een algoritmische taal te ontwikkelen.

Belangrijkste functies van het DBMS:

· databeheer in extern geheugen (op schijven);

· gegevens in RAM beheren met behulp van schijfcache;

· het registreren van wijzigingen, het maken van back-ups en het herstellen van de database na storingen;

· ondersteuning voor databasetalen (datadefinitietaal, datamanipulatietaal).

Normaal gesproken bevat een modern DBMS de volgende componenten:

· de kernel, die verantwoordelijk is voor het beheer van gegevens in extern en RAM-geheugen en voor logboekregistratie;

· een databasetaalprocessor die zoekopdrachten optimaliseert voor het ophalen en wijzigen van gegevens en het creëren, 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.

Classificatie van DBMS.

Volgens het datamodel:

· Hiërarchisch;

· Netwerk;

· relationeel;

· Object-relationeel;

· Objectgericht.

Volgens de architectuur van de gegevensopslagorganisatie:

· lokaal DBMS (alle onderdelen van het lokale DBMS bevinden zich op één computer);

· gedistribueerd DBMS (delen van het DBMS kunnen zich op twee of meer computers bevinden).

Via de manier waarop u toegang krijgt tot de database:

· Bestandsserver.

In DBMS'en op bestandsservers bevinden gegevensbestanden zich centraal op een bestandsserver. De DBMS-kernel bevindt zich op elke clientcomputer. Gegevens zijn toegankelijk via een lokaal netwerk. Synchronisatie van leesbewerkingen en updates wordt uitgevoerd met behulp van bestandsvergrendelingen. Het voordeel van deze architectuur is de lage CPU-belasting op de server, maar het nadeel is de hoge belasting van het lokale netwerk.

Voorbeelden: Microsoft Access, Borland Paradox.

· Client-server.

Dergelijke DBMS'en bestaan ​​uit een clientgedeelte en een server. Client-server-DBMS's bieden, in tegenstelling tot bestandsserver-DBMS's, toegangscontrole tussen gebruikers en belasten het netwerk en de clientmachines weinig. De server is een programma buiten de client en kan indien nodig door een ander worden vervangen. Het nadeel van client-server DBMS is juist het bestaan ​​van de server en de grote computerbronnen die door de server worden verbruikt.

Voorbeelden: Firebird, Interbase, MS SQL Server, Sybase, Oracle, PostgreSQL, MySQL, Linter.

· Ingebouwd.

Een ingebed DBMS is een bibliotheek waarmee u grote hoeveelheden gegevens op een uniforme manier op een lokale machine kunt opslaan. Gegevens zijn toegankelijk via SQL of via speciale DBMS-functies. Geïntegreerde DBMS'en zijn sneller dan conventionele client-server-systemen en vereisen geen serverinstallatie. Daarom zijn ze veelgevraagd in lokale software die met grote hoeveelheden gegevens omgaat (bijvoorbeeld geografische informatiesystemen).

Voorbeelden: OpenEdge, SQLite, BerkeleyDB, een van de Firebird-varianten, een van de MySQL-varianten, Sav Zigzag, Microsoft SQL Server Compact, LINTER.

Ondersteuning van databasetaal

Om met databases te werken worden speciale talen gebruikt, doorgaans databasetalen genoemd. Vroege DBMS'en ondersteunden verschillende talen die gespecialiseerd waren in hun functies. Meestal werden twee talen onderscheiden: de databaseschemadefinitietaal (SDL - Schema Definition Language) en de datamanipulatietaal (DML - Data Manipulation Language). SDL diende voornamelijk om de logische structuur van de database te definiëren, d.w.z. de structuur van de database zoals deze voor gebruikers verschijnt. De DML bevatte een reeks operatoren voor gegevensmanipulatie, d.w.z. Operators waarmee u gegevens in de database kunt invoeren en bestaande gegevens kunt verwijderen, wijzigen of selecteren.

Moderne DBMS'en ondersteunen doorgaans één enkele geïntegreerde taal die alle noodzakelijke hulpmiddelen bevat voor het werken met een database, vanaf de creatie ervan, en die een basisgebruikersinterface met databases biedt. De standaardtaal van het momenteel meest voorkomende relationele DBMS is SQL (Structured Query Language).

De belangrijkste functies van een relationeel DBMS dat wordt ondersteund bij de implementatie van de SQL-interface zijn:

Allereerst combineert de SQL-taal de tools van SDL en DML, d.w.z. Hiermee kunt u een relationeel databaseschema definiëren en gegevens manipuleren. Tegelijkertijd wordt het benoemen van databaseobjecten (voor een relationele database - het benoemen van tabellen en hun kolommen) ondersteund op taalniveau in de zin dat de SQL-compiler objectnamen omzet in hun interne identificatiegegevens op basis van speciaal ondersteunde servicecatalogustabellen. Het interne deel van het DBMS (kernel) werkt helemaal niet met de namen van tabellen en hun kolommen.

De SQL-taal bevat speciale hulpmiddelen voor het definiëren van beperkingen voor de database-integriteit. Ook hier worden integriteitsbeperkingen opgeslagen in speciale catalogustabellen, en wordt de database-integriteitscontrole verzekerd op taalniveau, d.w.z. Bij het compileren van databasewijzigingsoperatoren genereert de SQL-compiler, gebaseerd op de integriteitsbeperkingen die in de database bestaan, de overeenkomstige programmacode.

Met speciale SQL-operatoren kunt u zogenaamde databaseviews definiëren. Dit zijn feitelijk query's die in de database zijn opgeslagen (het resultaat van elke query naar een relationele database is een tabel) met benoemde kolommen. Voor de gebruiker is een view dezelfde tabel als elke basistabel die in de database is opgeslagen, maar met behulp van views kunt u de zichtbaarheid van de database voor een specifieke gebruiker beperken of juist uitbreiden. Representaties worden ook op taalkundig niveau gehandhaafd.

Autorisatie van toegang tot databaseobjecten wordt ook uitgevoerd op basis van een speciale set SQL-instructies. Het idee is dat de gebruiker verschillende machtigingen moet hebben om verschillende soorten SQL-instructies uit te voeren. De gebruiker die de databasetabel heeft gemaakt, heeft een volledige set rechten om met deze tabel te werken. Tot deze bevoegdheden behoort onder meer de bevoegdheid om de bevoegdheid geheel of gedeeltelijk aan andere gebruikers te delegeren, inclusief de overdrachtsbevoegdheid. Gebruikersrechten worden beschreven in speciale catalogustabellen, en toestemmingscontrole wordt ondersteund op taalniveau.