-
Notifications
You must be signed in to change notification settings - Fork 0
/
Grundlagen.txt
85 lines (64 loc) · 3.36 KB
/
Grundlagen.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
MapReduce:
------------------
MapReduce: Simplified Data Processing on Large Clusters
Jeffrey Dean and Sanjay Ghemawat 2004
- stammt aus der funktionalen Programmierung
- map: key/value pair to key/value pairs
- reduce: Zwischenergebisse mit gleichen keys werden zusammengefasst
- map/reduce von Lisp inspiriert
- Ursprung: Google
- Implementationen in C++, Erlang, Java, Python
- Ziel ist dem Programmierer nur mit der Logik von map/reduce zu konfrontieren - Parallelisierung, Fehlerbehandlung, IO, Kommunikation, Überwachung, ... übernimmt das System
Beispiel:
Input: Text, map- und reduce-Funktion
map: ließt wort und erzeugt key: wort, value: 1
reduce: summiert values gleicher keys auf und erzeugt value: anzahl
-> Häufigkeit von Wörtern
CAP:
-------------------
Consistency: Transaktionen erreichen konsistenten Zustand im gesamten verteilten System
Availability: Verfügbarkeit und akzeptable Reaktionszeit ist gegeben (auch bei Ausfall einzelner Knoten) mit 100% Datenverfügbarkeit
Partition tolerance: Ausfall von Kommunikationsverbindungen (Oder Veränderungen der Nodes) führt nicht zum Ausfall des Systemes (eingeschränkt noch nutzbar)
Maximal 2 der Eigenschaften sind zugleich verfügbar
BASE: Konzept
-------------------
Basically Available, Soft State, Eventual Consistent
Notwendigkeit der Verfügbarkeit und horizontalen Skalierung -> Consistence wird gelockert
DB befindet sich fließend im konsistenten und inkonsistenten Zustand
Duplikate und Synchronisation
"optimistischer Ansatz"
Eventual-Consistency:
-----------------
lockerer Konsistenzbegriff
Nodes können unterschiedliche Daten (oder unterschiedliche Veriosnen der Dtane) besitzen
Inconsistence-window: Zeitfenster für synchronisation
Consistent hashing: 1997 David Karger
--------------------
Hasing mit dem Ziel bei horizontaler Skalierung eine gleichverteilung der Daten anhand deren Hashwerte zu erreichen.
Jeder Server erhält außerdem einen Hashwert
Zuordnung der Daten zu Servern über ähnliche Hashwerte
Kopien der n Vorgänger der Knoten können mitgespeichert werden
- bsp: Amazon Dynamo
Vorteile:
- gleichverteilung (durch hashfunktion und die Nutzung virtueller Server [n pro server])
- hinzufügen/entfernen eines servers ist kein problem, da wieder entsprechend des hashwerten zugeordnet wird
- Read/Write Anfrage ohne Umwege direkt auf server realisierbar - kein metaserver notwendig
MVCC: Konzept
-------------------
Multi-version concurrency control
Schreiben eines Objektes erueugt ein neues mit neuem Zeitstempel, ID und Verweis auf vorgängerversion
Transaktionen werden nur wiederholt, wenn die Dateiversion zu Beginn jener zum Ende entspricht und die Datei geschrieben werden sollte
REST: Paradigma
-------------------
REpresentational State Transfer
Jedes Ziel hat eine eindeutige oder mehrere Adressen
meist http
anfrage mit header und body und zusätzlich Methode mit header und body
GET, PUT, POST, DELETE und HEAD
GET: lese ressource - immer gleiche Rückgabe
HEAD: lese Information zu ressourcen - immer gleiche Rückgabe
PUT: schreibe Resource - doppelter gleicher PUT hat selben effect wie einer
DELETE: entferne Resource - doppelter aufruf wie einer
POST: Senden von Informationen um resourcen zu ändern oder zu erzeugen oder ohne nebeneffect - nicht idempotent
Zustandsinformationen zwischen anfragen sollen nicht gespeichert werden
Links/Verweise auf weitere ressourcen in ressourcen