250 likes | 412 Views
Databashanteringssystem. nikos dimitrakas nikos@dsv.su.se 08-162099 rum 6626. Connolly/Begg (3rd edition) Kapitel 18.1, 18.2, 6.2, 4.4 (inte 6.4.3, 6.4.4), 6.5, 6.6, 3.3, 8.2.7, 27.4.11, 19.1, 19.2, 19.3
E N D
Databashanteringssystem nikos dimitrakas nikos@dsv.su.se 08-162099 rum 6626 Connolly/Begg (3rd edition) Kapitel 18.1, 18.2, 6.2, 4.4 (inte 6.4.3, 6.4.4), 6.5, 6.6, 3.3, 8.2.7, 27.4.11, 19.1, 19.2, 19.3 (4th edition) Kapitel 19.1, 19.2, 6.2, 6.4 (inte 6.4.3, 6.4.4), 6.5, 6.6, 3.3, 8.2.7, 28.4.12, 20.1, 20.2, 20.3 (5th edition) Kapitel 20.1, 20.2, 7.2, 7.4 (inte 7.4.3, 7.4.4), 7.5, 7.6, 4.3, 29.4.12, 22.1, 22.2, 22.3
Databashanteringssystem • Säkerhet • Användare och behörigheter • Integritet • Backup och återställning • Transaktionshantering • Samtidighet (concurrency) • Lås • Rollback • Återställning
Säkerhet • Hot • Avsiktliga eller oavsiktliga hot som kan påverka systemet och organisationen • Stöld och bedrägeri • Försämrad sekretess (confidentiality) • Försämrad personlig integritet (privacy) • Försämrad integritet/tillförlitlighet • Försämrad tillgänglighet • Säkerhet • Skydd mot dessa hot
Sårbarhet – Potentiella hot • Hårdvara • Nätverk • Applikation • DBHS • Användare • Programmerare • Administratör • Databas
Botemedel • Auktorisation (authorization) • Tillåta tillgång till systemet • Kräva identifiering och authenticering • Åtkomsts-/Behörighetskontroll (access control) • MAC vs DAC (Mandatory/Discretionary) • Bevilja och häva tillgång/åtkomst till resurser/objekt • SQL (DAC): GRANT / REVOKE • Backup och återställning • Integritet • Vyer • Kryptering • RAID • Prestanda • Säkerhet pga redundans
Grant • Beviljar ett subjekt (användare) vissa privilegier (läsa/skriva/etc) på ett objekt (tabell/vy/etc) Ge Kalle behörighet att titta i tabellen Person GRANT SELECTON PersonTO Kalle Förutsätter att man själv har behörighet att ge denna behörighet!
Grant • Privilegier • SELECT, INSERT, UPDATE, DELETE, REFERENCES, USAGE, ALL PRIVILEGES, roll • Specifika kolumner: UPDATE(adress) • Objekt • Tabell, vy, domän, etc • Subjekt • Användare, grupp, roll, PUBLIC • WITH GRANT OPTION • Tillåt subjektet att ge bort samma behörighet vidare GRANT privilegierON objektTO subjekt[WITH GRANT OPTION]
Backup & återställning • Backup • Att ta en kopia • Journaling • Att spara en logg med alla ändringar • Återställning • Få tillbaka allt med hjälp av backup och loggar
Integritet • Integrity Enhancement Feature • Required Data (NOT NULL) • Domain Constraint (CHECK, DOMAIN) • Entity Integrity • Referential Integrity • General Constraint (ASSERTION) • Enterprise Constraint (Trigger)
Entitetsintegritet • Unika och identifierbara rader i varje tabell • Ej NULL eller dubbletter i PN
Referensintegritet • Främmande nycklar har • NULL, eller • Ett värde som finns i den refererade kandidatnyckeln • Regler för främmande nycklar • Vad händer med FN när den refererade kandidatnyckeln förändras eller tas bort • CASCADE • SET NULL / NULLIFY • RESTRICT / NO ACTION
Enterprise Constraint • ECA • Event • Condition • Action • Trigger CREATE TRIGGER triggernamnAFTER/BEFORE händelse ON tabellnamnREFERENCING ny & gammalFOR EACH ROW/STATEMENTWHEN villkorlogik att utföras
Vyer & Integritet • VIEW WITH CHECK OPTION • Man kan mata in data i vyn • Inmatningarna måste uppfylla villkoret i vyn • Inmatningarna sparas i tabellen (inte i vyn) • De inmatade raderna måste alltså ingå i vyn CREATE VIEW personMK AS SELECT *FROM personWHERE kön IN (’m’, ’k’)WITH CHECK OPTION
Databashanteringssystem • Säkerhet • Användare och behörigheter • Integritet • Backup och återställning • Transaktionshantering • Samtidighet (concurrency) • Lås • Rollback • Återställning
Transaktionshantering • Transaktion • Ett logiskt sammanhängande jobb • Egenskaper (ACID) • Atomicity • Allt eller inget • Commit eller Rollback • Consistency • Integritet/Konsekvens före och efter transaktionen • Isolation • Oberoende av varandra • Durability • Permanent även vid krasch
Concurrency / Samtidighet • Flera transaktioner parallellt • Oberoende av varandra • Potentiella problem • Flera vill åt samma resurs (tabell/rad) • Den förlorade uppdateringen • Läsning av okommittade data (dirty read) • Inkonsekvent analys (ej upprepningsbar läsning) • Fantomproblemet
Fantomproblemet tid
Concurrency / Samtidighet • Krav • Serialiserbarhet • Parallellt dock utan konflikt • Återställbarhet • Inga konflikter även vid rollback • Lösningar • Seriellt schema (inga parallella transaktioner) • Lås • Tidsstämplar
T1 T2 T3 Lås • Läslås (Shared lock) • Skrivlås (Exclusive lock) • Låsgranularitet • Databas, tabell, …, rad, cell • Deadlock • 2 eller flera transaktioner väntar på varandra att släppa lås • 2PL – Two-Phase Locking • Växande fas – lås begärs • Krympande fas – lås släpps • Inga nya lås efter att något lås har släppts
T1 T2 T3 Lås • Deadlock • Förhindra • Timeout • Conservative 2PL • Upptäck • Wait-for graph • Lös • Offer (victim) • Rollback (för senare återstart) • Svältning (starvation)
Tidsstämpling • Varje transaktion får en tidsstämpel vid start • Varje dataelement markeras med två tidsstämplar • Transaktionen som läste dataelementet senast • Transaktionen som skrev dataelementet senast • Varje gång en transaktion vill läsa eller skriva ett dataelement • Jämför transaktionens tidsstämpel med dataelementets tidsstämpel • Avgör om transaktionen skall fortsätta eller startas om
Återställning (Recovery) • Databasåterställning • Få tillbaka databasen (i korrekt tillstånd) efter systemfel • Följande behövs • Backup • En kopia av databasen • Full eller inkrementell • Sparas separat • Loggar • Innehåller information om alla transaktioner • Värden före en ändring (BEFORE IMAGE) • Värden efter en ändring (AFTER IMAGE)