Kategorie: Datenbanken

RAID

RAID = „Redundant Array of Independent Disks“ (Redundante Anordnung unabhängiger Festplatten)

 

Ein RAID-System dient zur Organisation mehrerer physischer Festplatten eines Computers zu einem logischen Laufwerk, das eine höhere Datenverfügbarkeit bei Ausfall einzelner Festplatten und/oder einen größeren Datendurchsatz erlaubt als ein einzelnes physisches Laufwerk.

Quelle: wiki

physische Laufwerke = sind CD’s, DVD so wie Festplatten, SSD (Hardware)

logische Laufwerke = sind Partitionen auf einem Speicher (Festplatte), und können getrennt behandelt werden

Redundanz = das vorkommen doppelter Daten

 

 

RAID Versionen

 

Raid 0
  • Festplatten werden gestriped

Vorteile

  • viel speicher
  • sehr schnell

Nachteile

  • beim ausfall einer Platte, sind die restlichen Daten unbrauchbar

 

Raid 1
  • die Festplatte wird 1:1 gespiegelt
  • normale geschwindigkeit

Vorteile

  • sehr sicher, da ja alles doppelt vorhanden ist
  • beim Ausfall einer Platte, ist immernoch eine komplette kopie vorhanden

Nachteile

  • weniger speicher verfügbar (da ja alles doppelt vorhanden ist)

 

Raid 1 + 0  > 0 + 1

Raids kombinieren: 1 + 0 ist besser als 0 +1

  • Festplatten werden gespiegelt UND gestriped

 

1 + 0 werden mehrere festplatten 1 : 1 gespielt, und dann  gestriped.

Wenn jetzt eine Festplatte aus einem Raid 1 Bereich ausfällt, so ist im selben Bereich noch eine 1:1 kopie verfügbar.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 + 1 werden mehrere festplatten gestriped und dann erst gespiegelt.

Wenn jetzt eine Festplatte aus dem Raid 0 Bereich kaputt geht, sind alle anderen Festplatten in diesem Raid system unbrauchbar(!)

Und sollte jetzt (siehe beispiel) im zweiten Raid 0 eine andere Festplatte mit anderen Daten Defekt sein, so wären alle Raids unbrauchbar.

Raid 2-4 sind unwichtig

/

 

Raid 5

(aktueller und zur zeit bester Standard)

  • mehrere Festplatten werden gestriped
  • keine spiegelung
  • verwendet Paritätsstreifen

Vorteile

  • Daten-Redundanz
  • sehr schnell
  • geringe kosten

 

Paritäten dienen der Wiederherstellung von Daten

Parität = ist eine einfache XOR verknüpfung  (exklusives ODER)

Die Parität wird immer um 1 verschoben auf der nächsten Festplatte gespeichert.

Denkt jetzt einfach mal an Mathe 1 zurück :D

wenn ihr jetzt nach einem Ausfall noch 2 von 3 Festplatten überhabt, könnt ihr anhand der Paritäten in den restlichen 2 Platten bestimmen, was wiederhergestellt werden muss.

 

raid5

Hibernate – Grundbegriffe

Hibernate wird auch als Objektrelationales Mapping (kurz: ORM) bezeichnet.

Sprich: Wenn Fragen zum Thema ORM gestellt werden, ist damit das Mapping bzw. Hibernate gemeint.

 

  • Hibernate – Mapping geschieht im XML format
  • Hibernate ist ein Framework – speziell für relationale DB
  • RDBMS = Relationales DBMS
  • Basierend auf Java
  • Abfrage durch : Hibernate Query Language (HQL)
  • wird mitunter zusammen mit JDBC verwendet

 

Vorteile:
  • übersichtlicher Quellcode
  • übertragbarkeit auf andere DBMS möglich

 

Hibernate arbeitet mit Sessions. Diese müssen explizit gestartet und auch wieder geschlossen werden.

Ebenso muss jede Transaktion mit einem commit() bestätigt, oder rollback() zurückgesetzt werden.

1
2
3
4
5
6
7
transaction = session.beginTransaction();
 
//code
transaction.commit();  // oder transaction.rollback();
//code
 
session.close();

Berechnungen im B-Baum (MIN / MAX)

Hier einmal kurz veranschaulicht wie man die Minimalen und Maximalen Elemente im B-Baum berechnet (und aufzeichnet)

– sehr ausführlich –

———————————

B-Baum Typ (2,3) (Berechnung von MIN)

– es müssen MINDESTENS 2 Elemente in einem Knoten stehen
– ausgenommen der WURZEL dessen Anzahl ist egal. Aber es muss mindest. 1 sein.
damit Kinder Knoten gebildet werden können. (Jeder Knoten hat K+1 Kinder)

minbaumbe

berecmin

B-Baum Typ (2,3) (Berechnung von MAX)

– jeder Knoten muss komplett gefüllt sein (K*2 Knoten => 2*2 = 4)
– Die Wurzel muss jetzt natürlich auch komplett befüllt sein.
– es muss über die Höhe 3, für jeden Knoten k+1 Kinder geben

maxbaum2be

berechmax

maxbaum2

EDIT

Ich habe gerade noch eine kleine Brücke gefunden. Für alle die sich das keine langen komplexen Formeln merken können.

MIN

Ihr nehmt einfach die vorherige anzahl an Knoten, und nehmt dann [ Knoten * Knoten + Knoten ]

Und am ende müsst ihr diese nur noch mit der Anzahl der Elemente in einem Knoten Addieren. (funktioniert nur bei der berechnung von MIN)

 

Berechnung Typ (2,3)

Die Wurzel hat einen Knoten. also:

1*1 +1 = 2   -> 2 knoten auf der höhe 2

jetzt nehmt ihr das ergebnis von der Wurzel, und rechnet damit weiter

2*2+2 = 6 -> 6 Knoten auf der höhe 3

usw.

6*6+6 = 36 -> 36 knoten auf der höhe 4 (ab hier macht das Zeichnen dann auch keinen spass mehr : )

Für MAX kann man das ähnlich darstellen:  im Typ (2,h)

es ist einfach immer MAL 5 => denn 2*2+1 (Knoten * 2 + 1 Kind)

[ ( KNOTEN * 5 ) ]

Wurzel : max 4

4 * 5 = 20

20 * 5 = 100

100 * 5 = 500

500 * 5 = 2500

—–

Ich glaub ausführlicher geht es nicht mehr :)
Wenn dennoch fragen offen geblieben sind: einfach anschreiben!

——

HAUSAUFGABEN

Ich höre schön das stöhnen und seufzen aus dem Hintergrund ^^

Aber die beste Art etwas neues zu lernen, ist nun mal das mehrfache anwenden.

Die Aufgabe ist auch ganz simpel: berechnet die folgenden Typen von B-Bäumen mal per Hand durch. (und macht dabei auch gerne Skizzen)

Und zur Kontrolle habt ihr hier direkt alle Lösungen (>“<)

1) B-Baum Typ (2,6)  – min

2) B-Baum Typ (3,4) – max

3) B-Baum Typ (3,4) – min

4) B-Baum Typ (2,5) – max

 

HA_minmax

Linksammlung [wird editiert]

Löschen im B-Baum

So jetzt wird es lustig… viel spass…!

[Wir gehen hier grundsätzlich von einem B-Baum vom Typ(2,h) aus ]

loeschen01 loeschen02

loeschen03

loeschen04

 

 

INFO

comments_delete

 

Kollektionen in PL/SQL

Kollektionen besitzen mehrere Elemente des gleichen Datentyps (homogon)

Man kann sie sich auch als Array vorstellen.

 

Wir unterschieden hierbei 3 verschiedene Kollektionen:

kollektionen

Laut PL/SQL – kurz & gut hat auch das assoziative Array nur eine dimension. Aber ich halte mich jetzt einfach mal ohne Gewähr an die Vorlage.

 

Ausformuliert:

TABLE.. INDEX BY :

ist ein zweidimensionales – assoziatives – Feld mit variabler Länge. Mit (ungeordnete) Schlüsselwerten indexiert. (assoziatives array)

TABLE:

ist ein eindimensionales Feld mit variabler Länge. Es ist nach natürlichen Zahlen geordnet zugreifbar.

VARRAY:

ist ein eindimensionales Feld mit maximaler Länge

Was ist PL/SQL ?

„PL/SQL ist eine Prozedurale Erweiterung für die strukturierte Abfragesprache SQL“

oder auch

„Erweiterung der Datenbanksprache (SQL) um prozedurale Programmierung“ 

SQL ist Mengenorientiert. Das Ergebnis ist immer eine Menge von Tupeln.

 

WAS fehlt SQL um vollständige Anwendungssysteme zu Programmieren?
  • man kann nicht gezielt einzelne tupel bearbeiten
  • man kann keine schleifen definieren (oder rekursion.. etc)
  • variablen deklarieren

 

Wozu brauch man PL/SQL?
  • um komplexe erweiterungen für SQL zu ermöglichen. Unter verwendung von variablen, methoden, und kontrollstrukturen
  • zu steuerung von selbst programmierten abläufen
  • wiederverwendbarkeit von Funktionen und Prozeduren

zu deutsch:

Man kann in SQL nur umständlich über Zwischentabellen diverse Abfragen machen. Was sich mit schleifen und Variablen wesentlich einfacher umsetzen ließe. Es gibt einen direkten zugriff auf die Datenbank. Und man kann seine selbstgeschriebenen Prozeduren und Funktionen wiederverwenden.

 

WAS HAT PL/SQL ZU BIETEN?
[ADA nachempfundene Sprache] (ähnlich wie die fragen zuvor)

  • Variablen, Konstanten und Datentypen
  • Kontrollstrukturen [Bedingungen (IF, CASE, EXIT) und Schleifen (WHILE, FOR, LOOP)]
  • Blöcke, Prozeduren, Funktionen und Pakete (anonym block, PROCEDURE, FUNCTION, PACKAGE)
  • Fehlerbehandlung (EXCEPTION)
  • Einbettung von SQL-Anweisungen

 

Wie ist PL/SQL angepasst an SQL?
  • Die DT sind identisch
  • SQL kann normal eingebettet werden
  • a) lesen: SELECT INTO <pl var>
  • b) schreiben: INSERT INTO VALUES (<pl var/wert>..)
  • c) Menge aus DB lesen: DECLARE CURSOR Name IS SELECT .. etc
  • Die Funktionen des DBMS werden verwendet
  • a) erweiterbarkeit von SQL durch in der DB gespeicherte Prozeduren und Funktionen (CREATE, DROP)
  • b) Rechte Verwaltung in Mehrfachanwender umgebung
  • c) Ausführung meist auf dem server

 

Was ist der Nachteil von PL/SQL?
  • PL/SQL ist proprietär zum Oracle DBMS
  • zu deutsch: Die Programme laufen nur für Oracle-Datenbanken. Wechselt man die Datenbank, wird es relativ kompliziert, die Anwendung umzuschreiben. 

 

Weitere umfassende Informationen über PL/SQL findet ihr hier

Es würde jetzt zu weit gehen, wirklich jede Kleinigkeit hier neu zu formulieren.

Vier Schichten Architektur (WEB)

  1. Präsentation – Darstellung und Benutzerinteraktion
  2. Webschicht – Kommunikation zwischen webclient/webserver
  3. Anwendungs-/Geschäftslogik – Verarbeitung der Daten
  4. Datenhaltung – Dauerhafte Speicherung + Fehlerholung + Mehrbenutzerzugriff

vierschicht

Version von Wikipedia:

 

 

 

 

 

 

 

 

 

Vierschichten-Architektur: Web-Server-Architektur“

Quelle : wikiepedia

Diagramme… UML

Es gibt 12 verschiedene Arten von Diagrammen in UML. Wir benötigen hier „Klassendiagramme„.

Ein Klassendiagramm ist ein „Strukturdiagramm “ für UML [Unified Modelling Language] .

[UML ist die o.o. Variante eines EER Diagramms]

Der Name der Klasse (Tabelle), ist auch der Name eines Blocks. Darunter kommen dann die Attribute (+ ihren DT), und im untersten Abschnitt die Operationen (Methoden)

allgstern

Quelle: Wikipedia

Bei UML unterscheiden sich vor allem die Beziehungen von allen anderen Diagrammetypen

allgstern

Quelle: Wikipedia

Komposition: Jedes Buch gehört genau einem Studenten. Und ein Student kann mehrere Bücher besitzen. [OWNERSHIP Beziehung]

Aggregation: Eine Vorlesung kann, muss aber nicht besucht werden.  [HAS-A Beziehung]

Und dann gibt es noch die Generalisierung als Beziehungstyp

allgstern
Quelle: Wikipedia

Dieses Prinzip entspricht der Vererbung (wie z.b. in Java)

Ihr könnt euch das also auch so vorstellen: class Privatkunde extends Person              

Der Privatkunde erbt also alles(!) was auch schon in der Person drin steht.

 

———-

Ihr wollt jetzt direkt loslegen und eure eigene Diagramme machen? Und wisst nicht womit?

Eure Optionen sind vielseitig!

  • Stift und Papier auspacken, und erstmal lustig Kästchen malen :)
  • ein Plugin für Eclipse oder den CodeEditor eurer Wahl besorgen (teilweise gibt es auch plugins die aus eurem Code automatisch Diagramme generieren können)
  • die MySQL Workbench generiert euch automatisch aus MySQL eure UML Diagramme mit allen Beziehungen. sehr schön und übersichtlich.
  • Offline am PC: Ein Programm nur für UML besorgen :  z.B. ArgoUML oder UMLet  (beide nicht sonderlich schön/sauber.. aber funktionell)
  • Online [+Gruppenarbeit]:  mein pers. Favourite: CACOO mit bis zu 15 leuten gemeinsam Arbeiten, oder auch Lucidchart vorteil hierbei: ihr könnt euch auch mit eurem google Login einloggen

Allgemeines zum B-Baum / B*-Baum

bbaumallg

Dastellung:  [B-Baum (K,H)]

K = Knoten, die vorgegebene zahl K ist der min wert für Elemente in einem Knoten, und max ist 2*k

H = Höhe, die vorgebene zahl H, ist die max. höhe die ein Baum erreichen darf (wobei die wurzel bereits 1 ist)

  • wenn kein wert angegeben ist, heisst es, das es schlichtweg kein limit gibt.
  • für die wurzel gilt stehts: anzahl elemente egal

für uns heisst das jetzt: [2,h]

  • 2 Knoten = min 2 Elemente pro knoten, max 4 (2*k), sobald also ein 5ter hinzu kommt, muss dieser nach oben hin rausgeschoben werden.
  • h = nicht gegeben, also kann es unendlich groß werden (in unserem fall wird die höhe bei 2 stoppen)

Formel zur Berechnung der Knoten

  • minimal: 1(Wurzel) + 2/k*((k+1)^(h-1) – 1)
  • maximal: (1/2k)*((2k+1)^h – 1)

Formel zur Berechnung der Anzahl der Elemente

  • minimal:   2(k+1)^(h-1) + 1
  • maximal: ( 2(k+1)^(h-1) ) – 1
Loading...
X