Stefan Edlich, Achim Friedland, Jens Hampe et al.
NoSQL
Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken
Inhalt
6
Geleitwort
14
Vorwort
16
Vorwort zur 2.Auflage
18
Einführung
20
1.1 Historie
20
1.2 Definition und Diskussion
21
1.3 Kategorisierung von NoSQL-Systemen
24
1.3.1 Key/Value-Systeme
26
1.3.2 Column-Family-Systeme
26
1.3.3 Document Stores
27
1.3.4 Graphdatenbanken
27
1.4 Fazit
28
NoSQL – Theoretische Grundlagen
30
2.1 Map/Reduce
31
2.1.1 Funktionale Ursprünge
31
2.1.2 Phasen und Datenfluss
36
2.1.3 Komponenten und Architektur
38
2.1.4 Anwendungsbereiche und Implementierungen
41
2.1.5 Praktisches Beispiel
43
2.1.6 Zusammenfassung
47
2.2 CAP und Eventually Consistent
49
2.2.1 Konsistenzmodell relationaler Datenbanken
49
2.2.2 CAP- Theorem
50
2.2.3 Alternatives Konsistenzmodell: BASE
52
2.3 Consistent-Hashing
55
2.4 Multiversion Concurrency Control
59
2.5 Vector Clocks
62
2.6 Paxos
66
2.7 REST
70
2.7.1 Web-scale?
70
2.7.2 Bausteine
71
2.7.3 Entwurf von REST- Applikationen
75
2.7.4 Skalierung von REST-Systemen
78
2.7.5 Fazit
80
Wide Column Stores
82
3.1 HBase
83
3.1.1 Überblick
83
3.1.2 Allgemeines
84
3.1.3 Datenmodell
84
3.1.4 Installation
86
3.1.5 CRUD-Operationen
88
3.1.6 Fortgeschrittene Abfragen mit Map/Reduce
93
3.1.7 Skalierung und Konfiguration
96
3.1.8 Replikation
98
3.1.9 Bewertung
99
3.2 Cassandra
101
3.2.1 Allgemeines
101
3.2.2 Installation
102
3.2.3 Datenmodell
103
3.2.4 CRUD-Operationen
107
3.2.5 Abfragen in Cassandra
110
3.2.6 Replikation und Skalierung
112
3.2.7 Bewertung
113
3.3 Amazon SimpleDB
115
3.3.1 Allgemeines
116
3.3.2 Datenmodell
116
3.3.3 Datensicherheit und Datenschutz
117
3.3.4 Installation
118
3.3.5 CRUD-Operationen
119
3.3.6 Zugriff mit dem AWS Toolkit für Eclipse
130
3.3.7 Replikation und Skalierung
133
3.3.8 Bewertung
133
Document Stores
136
4.1 CouchDB
137
4.1.1 Überblick
137
4.1.2 Beschreibung
137
4.1.3 Datenmodell
138
4.1.4 View-Modell
139
4.1.5 Zugriffskontrolle
139
4.1.6 Installation
140
4.1.7 CRUD-Operationen
142
4.1.8 Erstellen von Views
146
4.1.9 Replikation
147
4.1.10 Skalierung
148
4.1.11 CouchApps
148
4.1.12 Bewertung
149
4.2 MongoDB
150
4.2.1 Überblick
150
4.2.2 Datenmodell
152
4.2.3 Installation
153
4.2.4 CRUD-Operationen
154
4.2.5 Fortgeschrittene Abfragen und Map/Reduce
159
4.2.6 Skalierung
162
4.2.7 Replikation
164
4.2.8 Bewertung
167
Key/Value-Datenbanken
170
5.1 Redis
171
5.1.1 Überblick
171
5.1.2 Allgemeines
171
5.1.3 Installation
172
5.1.4 CRUD-Operationen
173
5.1.5 Redis Hashes
179
5.1.6 Redis Messaging
180
5.1.7 Zugriff aus anderen Programmiersprachen
181
5.1.8 Replikation und Konfiguration
183
5.1.9 Skalierung
185
5.1.10 Bewertung
185
5.2 Chordless
187
5.2.1 Überblick
187
5.2.2 Allgemeines
188
5.2.3 Installation
189
5.2.4 CRUD-Operationen
190
5.2.5 Fortgeschrittene Abfragen
192
5.2.6 Skalierung, Replikation und Konfiguration
195
5.2.7 Bewertung
196
5.3 Riak
198
5.3.1 Überblick
198
5.3.2 Allgemeines
198
5.3.3 Installation
201
5.3.4 CRUD-Operationen
201
5.3.5 Zugriff aus anderen Programmiersprachen
203
5.3.6 Abfragen und Links in Riak
206
5.3.7 Riak Search
208
5.3.8 Skalierung, Replikation und Konfiguration
209
5.3.9 Bewertung
210
5.4 Membase
212
5.4.1 Überblick
212
5.4.2 Allgemeines
212
5.4.3 Installation
213
5.4.4 Architektur und Konzepte
215
5.4.5 Das Memcached-Protokoll
218
5.4.6 Zugriff aus anderen Programmiersprachen
218
5.4.7 Skalierung und Replikation
220
5.4.8 Der Moxi
221
5.4.9 Die TAP-Schnittstelle
222
5.4.10 Bewertung
223
Graphdatenbanken
226
6.1 Mathematische und technische Grundlagen
228
6.1.1 Das allgemeine Graphenmodell
228
6.1.2 Das Property-Graph-Modell
229
6.1.3 Relationen höherer Ordnung
232
6.1.4 Repräsentation von Graphen
236
6.1.5 Traversierung von Graphen
238
6.1.6 Indizierung von Graphdaten
240
6.1.7 Skalierung mittels Replikation und Partitionierung
241
6.1.8 Graph Query Languages
244
6.1.9 Vergleich mit anderen Datenmodellen
244
6.1.10 Zusammenfassung
247
6.2 Der Tinkerpop Graph Processing Stack
249
6.2.1 Blueprints
250
6.2.2 Blueprints.NET
253
6.2.3 Frames
255
6.2.4 Pipes und Pipes.NET
256
6.2.5 Gremlin
259
6.2.6 Pacer
263
6.2.7 Rexster
263
6.3 AllegroGraph
267
6.3.1 Datenmodell
268
6.3.2 Installation
269
6.3.3 CRUD-Operationen mit Java
270
6.3.4 RDF-Reasoning und Konsistenzkriterien
276
6.3.5 Bewertung
278
6.4 DEX
279
6.4.1 Beschreibung
280
6.4.2 Datenmodell
281
6.4.3 Installation
281
6.4.4 CRUD-Operationen
281
6.4.5 Graphoperationen
283
6.4.6 DEX-Skripting
284
6.4.7 DEX-Shell
286
6.4.8 Bewertung
287
6.5 HyperGraphDB
288
6.5.1 Datenmodell
288
6.5.2 Installation
289
6.5.3 CRUD-Operationen
290
6.5.4 Graphoperationen
293
6.5.5 Peer- To-Peer-Framework
293
6.5.6 Bewertung
293
6.6 InfiniteGraph
295
6.6.1 Beschreibung
295
6.6.2 Datenmodell
296
6.6.3 Installation
297
6.6.4 CRUD-Operationen
297
6.6.5 Graphoperationen
301
6.6.6 Bewertung
302
6.7 InfoGrid
303
6.7.1 Beschreibung
304
6.7.2 Datenmodell
304
6.7.3 Installation
305
6.7.4 CRUD-Operationen
305
6.7.5 Models
308
6.7.6 Bewertung
309
6.8 Neo4j
309
6.8.1 Installation
310
6.8.2 CRUD-Operationen mit der Java- API
311
6.8.3 CRUD-Operationen mit JRuby
315
6.8.4 HTTP/REST-Schnittstelle
316
6.8.5 Cypher
319
6.8.6 Replikation und Skalierung
320
6.8.7 Bewertung
320
6.9 sones GraphDB
321
6.9.1 Datenmodell
322
6.9.2 Installation
323
6.9.3 CRUD-Operationen
323
6.9.4 Bewertung
327
6.10 Weitere graphorientierte Ansätze
328
6.10.1 Twitters FlockDB
328
6.10.2 Google Pregel
330
6.10.3 Apache Hama
334
6.10.4 Microsoft Trinity
336
6.10.5 Die VertexDB-Familie
340
6.10.6 Filament
343
OrientDB
348
7.1 Überblick
348
7.2 Allgemeines
349
7.3 Datenmodell
349
7.4 Struktur der Datenablage
351
7.5 Datenbanksicherheit
351
7.6 Installation
352
7.7 CRUD-Operationen DocumentDB
355
7.8 CRUD-Operationen ObjectDB
359
7.9 CRUD-Operationen GraphDB
362
7.10 Datenbankschemata
366
7.11 Transaktionen
366
7.12 HTTP-REST-Schnittstelle
367
7.13 Replizierung
370
7.14 Hosting über NuvolaBase
372
7.15 Bewertung
372
Weitere NoSQL-Datenbanken
374
8.1 Wide Column Stores
375
8.1.1 Hypertable
375
8.1.2 Cloudera
376
8.2 Document Stores
377
8.3 Key/Value/Tupel-Stores
378
8.3.1 Amazon Dynamo
378
8.3.2 Dynomite und KAI
379
8.3.3 Voldemort
379
8.3.4 Scalaris
382
8.3.5 Die Tokyo-Produktfamilie
383
8.3.6 Weitere Key/Value-Systeme
385
8.4 Google App Engine Storage
386
8.5 Weitere ‚Soft’-NoSQL-Lösungen
387
Orientierung im Datenbankraum
390
9.1 Grundlegende Gedanken
391
9.2 Datenanalyse
392
9.3 Transaktionsmodell
394
9.4 Performancesapekte
395
9.5 Abfrageanforderungen
396
9.6 Architektur
397
9.7 Weitere nicht-funktionale Anforderungen
398
9.8 Anwendungsfälle für NoSQL-Datenbanken
400
9.9 Fazit
401
Register
404
© 2009-2024 ciando GmbH