Databaseserveren (DB) udfører vedligeholdelse og styring af databasen og er ansvarlig for dataenes integritet og sikkerhed, og leverer også I/O-operationer, når klienten tilgår information.
Klient - server- arkitekturen består af klienter og servere. Hovedideen er at placere servere på kraftfulde maskiner, og for applikationer, der bruger DBMS-sprogkomponenter til at give adgang til dem fra mindre kraftfulde klientmaskiner via eksterne grænseflader.
De fleste DBMS'er bruger SQL (Structured Query Language), fordi det er praktisk til at beskrive logiske delmængder af en database.
Formål SQL:
En af nøglefunktionerne ved SQL-sproget er, at det danner forespørgsler, der beskriver, hvilken information der skal hentes fra databasen, og programmet bestemmer selv, hvordan dette problem kan løses.
Der er udvidede versioner af SQL-sproget, der understøtter udvidelser såsom lagrede og udvidede procedurer , samt programflowkontrol gennem forgrening og looping.
Lagrede procedurer er prækompilerede SQL-sætninger, der er gemt på en databaseserver, der bruger SQL. Klienten kører den lagrede procedure med kommandoen EXECUTE<procedurenavn>. Der sendes således kun to ord over netværket. Da denne procedure allerede er kompileret og optimeret, behøver serveren ikke bruge tid på at kompilere og optimere.
Hyppigt udførte forespørgsler bruges normalt som lagrede procedurer.
Vedhæftede procedurer ( triggere ) ligner lagrede procedurer og udføres som svar på hændelser, der opstår i databasen. Når en vedhæftet procedure er knyttet til nogle SQL-applikationer, kører denne klausul altid en hel række kommandoer, der er en del af proceduren. En vedhæftet procedure udfører automatisk en eller flere SQL-sætninger, hver gang den udfører en INSERT-, UPDATE- eller DELETE-sætning.
Den vigtigste anvendelse af vedhæftede procedurer er at håndhæve referentiel integritet.
Eksempler på databaseservere: SQL SERVER (Microsoft), SQL BASE SERVER, Oracle SERVER (Oracle Corporation), IBM DB2, Informix Hver databaseserver kan køre på bestemte typer computere og netværk. Serveroperativsystemer kan være MSDOS, OS/2, Xenix, Unix, Dec VMS/ Brugerarbejdsstationer kører normalt MSDOS, OS/2, Xenix, Unix.
Der er muligheder for blandet brug af forskellige styresystemer. De fleste SQL-servere kan gemme beskrivelsen af databasen i en systemmappe, der normalt er tilgængelig for brugere. SQL-forespørgsler bruges til at få adgang til denne mappe. Relationelle DBMS'er kan bruge de oplysninger, der er gemt i systemkataloget, til at optimere SQL-forespørgsler.
De fleste SQL-servere understøtter relationsdatabasers referenceintegritet, som består af separate tabeller, der kan sammenføjes baseret på delt information.
Overvej følgende eksempel: en database indeholder en kundetabel og en ordretabel, der er forbundet med et kundenummerfelt indeholdt i begge tabeller. Da der kan være mere end én ordre fra samme kunde, er tabelforholdet én-til-mange. Når tabellerne er sammenføjet, er kundetabellen den overordnede tabel, og ordretabellen er den underordnede tabel. Hvis en overordnet post slettes, men dens tilsvarende underordnede poster ikke er, siges de underordnede poster at være forældreløse.
Referenceintegritet betyder, at ingen forældreløse poster er tilladt i nogen tabel.
En post kan gøres forældreløs på tre måder:
Referenceintegritet kan opretholdes på flere måder:
En transaktion er et sæt af logisk indbyrdes forbundne forespørgsler rettet mod den koordinerede ændring af et bestemt sæt rækker i en eller flere databasetabeller. Typisk opdaterer transaktioner flere tabeller og indekser knyttet til disse tabeller. For at sikre opdateringssynkronisering og dataintegritet bruger servere typisk en alt-eller-intet-tilgang, hvilket betyder, at enten alle eller ingen af opdateringerne foretages til databasen. Til dette formål føres en transaktionslog, som registrerer oplysninger om alle ønskede ændringer. Denne log giver mulighed for at "rulle tilbage" forpligtede transaktioner og gendanne den tidligere tilstand af databasen. Dette bliver vigtigt, når ændringerne til databasen, der er forudsat i en transaktion, kun er delvist implementeret, for eksempel på grund af en hardwarefejl.
Typisk for flerbruger DBMS. For at implementere det har servere midler til automatisk blokering.
Niveauer, hvor bordet er låst under opdateringer:
Databaseservere skal have et middel til at registrere dead lock-status. Når denne situation opstår, afbrydes udførelsen af en af transaktionerne, hvilket bringer den anden transaktion ud af tilstanden af evig ventetid. Afbrudt transaktion, efter at muligheden for dens blokering er udelukket, udføres den igen.
Målet med optimering er at give det hurtigst mulige svar på en forespørgsel med et minimum antal databaseadgange.
Der er to typer optimering i SQL-sprog
Syntaksoptimering udnytter det faktum, at i SQL afhænger ydeevnen af en forespørgsel af, hvordan den er formuleret. I dette tilfælde afhænger optimering af programmørens kvalifikationer.
Omkostningsoptimering indsamler information om databasen, såsom antallet af tabeller, antallet af rækker, typen af data i hver række, om indeksering er tilgængelig for en bestemt kolonne osv. Optimeringsværktøjet bruger disse oplysninger til at udvikle de bedste forespørgselsbehandlingsplan.
Fordele ved omkostningsoptimeringsmetoden: opgaven med at bestemme den bedste måde at udføre en forespørgsel på flyttes fra brugeren til databaseprocessoren.
Ulempe: At finde den optimale metode i sig selv kan tage lang tid.