Databasservern (DB) utför underhåll och hantering av databasen och ansvarar för integriteten och säkerheten för data, och tillhandahåller även I/O-operationer när klienten får tillgång till information.
Klient -server- arkitekturen består av klienter och servrar. Huvudidén är att placera servrar på kraftfulla maskiner och för applikationer som använder DBMS-språkkomponenter för att ge tillgång till dem från mindre kraftfulla klientmaskiner via externa gränssnitt.
De flesta DBMS använder SQL (Structured Query Language) eftersom det är bekvämt för att beskriva logiska delmängder av en databas.
Syfte SQL:
En av nyckelfunktionerna i SQL-språket är att det bildar frågor som beskriver vilken information som behöver hämtas från databasen, och programmet bestämmer självt sätten att lösa detta problem.
Det finns utökade versioner av SQL-språket som stöder tillägg som lagrade och utökade procedurer , samt programflödeskontroll genom förgrening och looping.
Lagrade procedurer är förkompilerade SQL-satser som lagras på en databasserver som använder SQL. Klienten kör den lagrade proceduren med kommandot EXECUTE<procedurnamn>. Således sänds endast två ord över nätverket. Eftersom denna procedur redan är kompilerad och optimerad behöver servern inte lägga tid på att kompilera och optimera.
Ofta körda frågor används vanligtvis som lagrade procedurer.
Bifogade procedurer ( triggers ) liknar lagrade procedurer och exekveras som svar på händelser som inträffar i databasen. När en bifogad procedur är associerad med vissa SQL-applikationer körs alltid en hel serie kommandon som är en del av proceduren när den här satsen körs. En bifogad procedur kör automatiskt en eller flera SQL-satser när den kör en INSERT-, UPDATE- eller DELETE-sats.
Den viktigaste användningen av bifogade procedurer är att upprätthålla referensintegritet.
Exempel på databasservrar: SQL SERVER (Microsoft), SQL BASE SERVER, Oracle SERVER (Oracle Corporation), IBM DB2, Informix Varje databasserver kan köras på vissa typer av datorer och nätverk. Serveroperativsystem kan vara MSDOS, OS/2, Xenix, Unix, Dec VMS/ Användararbetsstationer kör vanligtvis MSDOS, OS/2, Xenix, Unix.
Det finns möjligheter till blandad användning av olika operativsystem. De flesta SQL-servrar kan lagra beskrivningen av databasen i en systemkatalog som vanligtvis är tillgänglig för användare. SQL-frågor används för att komma åt den här katalogen. Relationella DBMS kan använda informationen som lagras i systemkatalogen för att optimera SQL-frågor.
De flesta SQL-servrar stöder referensintegriteten hos relationsdatabaser, som består av separata tabeller som kan sammanfogas baserat på delad information.
Tänk på följande exempel: en databas innehåller en kundtabell och en ordertabell som är länkade av ett kundnummerfält i båda tabellerna. Eftersom det kan vara mer än en beställning från samma kund är tabellrelationen en-till-många. När tabellerna är sammanfogade är kundtabellen den överordnade tabellen och ordertabellen är den underordnade tabellen. Om en överordnad post raderas men dess motsvarande underordnade poster inte, sägs de underordnade posterna vara föräldralösa.
Referensintegritet innebär att inga föräldralösa poster är tillåtna i någon tabell.
En post kan göras föräldralös på tre sätt:
Referensintegritet kan upprätthållas på flera sätt:
En transaktion är en uppsättning logiskt sammanlänkade frågor som syftar till koordinerad förändring av en viss uppsättning rader i en eller flera databastabeller. Vanligtvis uppdaterar transaktioner flera tabeller och index som är associerade med dessa tabeller. För att säkerställa uppdateringssynkronisering och dataintegritet använder servrar vanligtvis en allt-eller-inget-metod, vilket innebär att antingen alla eller ingen av uppdateringarna görs till databasen. För detta ändamål upprätthålls en transaktionslogg som registrerar information om alla begärda ändringar. Denna logg ger möjlighet att "rulla tillbaka" begångna transaktioner och återställa databasens tidigare tillstånd. Detta blir viktigt när ändringarna i databasen som tillhandahålls i en transaktion endast delvis implementeras, till exempel på grund av ett hårdvarufel.
Typiskt för DBMS för flera användare. För att implementera det har servrar medel för automatisk blockering.
Nivåer där bordet är låst under uppdateringar:
Databasservrar måste ha ett sätt att upptäcka dödlåsstatus . När denna situation inträffar avbryts exekveringen av en av transaktionerna, vilket för den andra transaktionen ut ur tillståndet av evig väntan. Avbruten transaktion efter att möjligheten att dess blockering är utesluten, utförs den igen.
Målet med optimering är att ge snabbast möjliga svar på en fråga med ett minimum antal databasåtkomster.
Det finns två typer av optimering i SQL-språk
Syntaxoptimering utnyttjar det faktum att i SQL beror en frågas prestanda på hur den är formulerad. I det här fallet beror optimeringen på programmerarens kvalifikationer.
Kostnadsoptimering samlar in information om databasen, såsom antalet tabeller, antalet rader, typen av data i varje rad, om indexering är tillgänglig för en viss kolumn osv. Optimeraren använder denna information för att utveckla den bästa frågebehandlingsplan.
Fördelar med kostnadsoptimeringsmetoden: uppgiften att bestämma det bästa sättet att exekvera en fråga flyttas från användaren till databasprocessorn.
Nackdel: Att hitta den optimala metoden i sig kan ta lång tid.