Dbs1 - HSR Teil 2

Dbs1 - HSR Teil2

Dbs1 - HSR Teil2


Set of flashcards Details

Flashcards 75
Students 11
Language Deutsch
Category Computer Science
Level University
Created / Updated 03.01.2018 / 13.01.2020
Weblink
https://card2brain.ch/box/20180103_dbs1_hsr_teil_2_HLi6
Embed
<iframe src="https://card2brain.ch/box/20180103_dbs1_hsr_teil_2_HLi6/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Beispiel Unterabfrage

select (...) where salaer = (select min(salaer) from angestellter inner join abteilung on abteilung.abtnr = angestellter.abtnr where abteilung.name = "Entwicklung");

Unterabfrage mit IN

select name from angestellter where persnr NOT IN (select distinct persnr projektzuteilung);

Unterabfrage mit EXISTS

Unterabfrage sucht passende Tupel aus der tabelle der Unterabfrage. Wenn ein Tupel gefunden wird liefert Exists den Wert true und das tupel aus der äusseren Abfrage erscheint im Resultat.

select name from angestellter a where EXISTS (select * from projektzuteilung where persnr = a.persnr);

Unterabfrage mit ANY

Für jedes tupel der äusseren Abfrage wird überprüft ob das gewählte Attribut kleiner/grösser/=ist, weder irgend eines aus der Resultatmenge der Unterabfrage. ANY liefert für solche Tupel true.

select (...) where ang.salaer < ANY (select salaer from angestellter ang1 inner join abteilung abt1 on ang1.abtnr = abt1.abtnr where abt1.name = 'entwicklung');

CTE

Common Table Expressions

Was sind CTE?

  • sind temporäre Tabellen
  • select, insert, update, delete
  • können sich auf vorhergehende Hilfs-Querys beziehen
  • Anstelle von Subqueries - mächtiger
  • rekursive Variante ermöglicht rekursive Abfragen

CTE Beispiel

tmptable1 AS (select * from mytable), tmptable2 AS (select * from tmptable1) select * from tmptable2;

Views Vorteile

  • Unabhängigkeit
    • Änderungen können von den Benutzern abgeschirmt werden
  • Vereinfachung
  • Sicherheit
    • Bestimmte Daten können für bestimmte benutzerklassen verborgen werden

Views

Eine View ist eine vituelle Tabelle basierend auf Tabellen oder anderen Views. Daten werden zur Asuführungszeit hergeleitet.

create view angpublic (persnr, name) as select persnr, name from angestellter;

select * from angpublic order by name;

drop view angpublic

Updateable views

eine View ist automatisch updatable wenn:

  • nur eine Tabelle oder updatable view in FROM Klausel
  • keine with, distinct, group by, having, limit, offset
  • keine set operations (union, intersect, except)
  • alles einfach refernzierte Kollonen, Keine Expressions, literale oder funktionen
  • keine Kollone kann mehrfach vorkommen
  • die view darf nicht die security_barrier Einstellung haben

Temporäre Tabellen

Werden am Ende eine Session oder transaction gelöscht.

create temporary table mytable (...);

drop table mytable;

3 Werte Logik

3 Werte Logik

ACID

A = Atomicity (Eine transaktion wird entweder vollständig oder gar nicht ausgeführt)

C = Consistency (Eine Transaktion führt die Daten von einem konstistenten Zustand in einen anderen über)

I = Isolation (Eine Transaktion soll so ausgeführt werden, als sei sie von anderen isoliert)

D = Durability (Alle Änderungen einer Transaktion sind persistent und gehen nicht durch Fehler verloren)

Nutzen von ACID

  • Concurrency
    • Geschwindigkeit
    • Korrekte Isolation der Transaktion
  • Fault Tolerance
    • Atomarität (Mögliche Wiederholung einer fehlgeschlagenen transaktion)
    • Dauerhaftigkeit nach erfolgreichem Commit (z.b mittels Write-Ahead Log)

SQL Transaction

BEGIN;

...

COMMIT;

Transaction Rollback

BEGIN;

...

ROLLBACK;

Transactions Savepoints

SAVEPOINT SP1;

...

ROLLBACK TO SP1;

RELEASE [SAVEPOINT] SP1;

Transaktionsausführung

Serielle Ausführung

Nebenläufige Ausführung

Serialisierbarkeit Vorgehen

  1. Operationen bestimmen (lesen, schreiben)
  2. Schedule der Transaktionen erstellen
  3. Konflikte zwischen Operationen bestimmen (Konfliktpaare)
  4. Serialisierbarkeitsgraph erstellen und prüfen

Wann gibt es einen Konflikt?

MVCC

Multi Version Concurrency Control

MVCC Verhalten

Schreiber blockieren keine Leser, Leser blockieren keine Schreiber

Schreiber blockieren andere Schreiber, welche dasselbe Tupel modifizieren wollen

MVCC Verfahren

Beim Update werden Tupels mit x-Locks versehen --> Deadlocks möglich

Beim Lesen werden keine Locks gesetzt

Jeder Update führt zu einer neueren Version des Tupels

MVCC Read Committed

ein Statement liest nur Daten mit derselben Version

MVCC Repeatable Read oder Serializable

die ganze Transaktion liest nur Daten mit derselben Version

MVCC Read Uncommitted

Wird nicht unterstützt

Transaktionsmanager

koordiniert die von den Applikationen gestarteten Transaktionen

Scheduler

ist für parallelität von Transaktionen zuständig

Recovery Manager

ist bei Fehlern welche zum Abbruch der transaktion zuständig dafür, dass die Daten in einem konsistenten zustand sind. Führt ein Log File

Puffer Manager

ist zuständig für interne DB Puffer und stellt mit Storage Manager Transfer von Daten zwischen Haupt und Sek. Speicher sicher

Pufferverwaltung

transaktionen schreiben Änderungen in DBMS Puffer. Hintergrundprozess in Sekundärspeicher

Languages

1. Data Definition Language (DDL) - CREATE, ALTER, DROP, TRUNCATE, COMMENT, …
2. Data Manipulation Language (DML) - SELECT, INSERT, UPDATE, DELETE
3. Date Control Language (DCL) - GRANT, REVOKE
4. Transaction Control Language (TCL) - COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION
 

Was passiert bei einem Deadlock?

Transaktionen sperren sich gegenseitig aus

T1= W1(x)W1(y)

T2=W2(y)W2(x)

Welche Möglichkeiten besitzt man einen Deadlock zu beheben?

Timeout - Nach einer bestimmten Wartezeit brechen die Transaktionen ab

Deadlock Erkennung - Abbruch einzelner Transaktionen (Opfer) bei Deadlock