|
Inhalt |
6 |
|
|
Geleitwort |
12 |
|
|
Vorwort |
14 |
|
|
1 Einführung |
16 |
|
|
1.1 Historie |
16 |
|
|
1.2 Definition und Diskussion |
17 |
|
|
1.3 Kategorisierung von NoSQL-Systemen |
20 |
|
|
1.3.1 Key/Value-Systeme |
22 |
|
|
1.3.2 Column-Family-Systeme |
22 |
|
|
1.3.3 Document Stores |
23 |
|
|
1.3.4 Graphdatenbanken |
23 |
|
|
1.4 Fazit |
24 |
|
|
2 NoSQL – Theoretische Grundlagen |
26 |
|
|
2.1 Map/Reduce |
27 |
|
|
2.1.1 Funktionale Ursprünge |
27 |
|
|
2.1.2 Phasen und Datenfluss |
32 |
|
|
2.1.3 Komponenten und Architektur |
34 |
|
|
2.1.4 Anwendungsbereiche und Implementierungen |
37 |
|
|
2.1.5 Praktisches Beispiel |
39 |
|
|
2.1.6 Zusammenfassung |
43 |
|
|
2.2 CAP und Eventually Consistent |
45 |
|
|
2.2.1 Konsistenzmodell relationaler Datenbanken |
45 |
|
|
2.2.2 CAP-Theorem |
46 |
|
|
2.2.3 Alternatives Konsistenzmodell: BASE |
48 |
|
|
2.3 Consistent-Hashing |
51 |
|
|
2.4 Multiversion Concurrency Control |
55 |
|
|
2.5 Vector Clocks |
58 |
|
|
2.6 Paxos |
62 |
|
|
3 Wide Column Stores |
68 |
|
|
3.1 HBase |
69 |
|
|
3.1.1 Überblick |
69 |
|
|
3.1.2 Allgemeines |
70 |
|
|
3.1.3 Datenmodell |
70 |
|
|
3.1.4 Installation |
72 |
|
|
3.1.5 CRUD-Operationen |
73 |
|
|
3.1.6 Fortgeschrittene Abfragen mit Map/Reduce |
78 |
|
|
3.1.7 Skalierung und Konfiguration |
81 |
|
|
3.1.8 Replikation |
83 |
|
|
3.1.9 Bewertung |
83 |
|
|
3.2 Cassandra |
84 |
|
|
3.2.1 Allgemeines |
85 |
|
|
3.2.2 Datenmodell |
86 |
|
|
3.2.3 Installation |
89 |
|
|
3.2.4 CRUD-Operationen |
91 |
|
|
3.2.5 Abfragen in Cassandra |
94 |
|
|
3.2.6 Zugriff mit Java |
94 |
|
|
3.2.7 Replikation und Skalierung |
95 |
|
|
3.2.8 Bewertung |
97 |
|
|
3.3 Amazon SimpleDB |
98 |
|
|
3.3.1 Allgemeines |
99 |
|
|
3.3.2 Datenmodell |
100 |
|
|
3.3.3 Datensicherheit und Datenschutz |
100 |
|
|
3.3.4 Installation |
101 |
|
|
3.3.5 CRUD-Operationen |
102 |
|
|
3.3.6 Replikation und Skalierung |
112 |
|
|
3.3.7 Bewertung |
112 |
|
|
4 Document Stores |
116 |
|
|
4.1 CouchDB |
117 |
|
|
4.1.1 Überblick |
117 |
|
|
4.1.2 Beschreibung |
117 |
|
|
4.1.3 Datenmodell |
118 |
|
|
4.1.4 View-Modell |
119 |
|
|
4.1.5 Zugriffskontrolle |
119 |
|
|
4.1.6 Installation |
119 |
|
|
4.1.7 CRUD-Operationen |
122 |
|
|
4.1.8 Erstellen von Views |
126 |
|
|
4.1.9 Replikation |
127 |
|
|
4.1.10 Skalierung |
128 |
|
|
4.1.11 CouchApps |
128 |
|
|
4.1.12 Bewertung |
129 |
|
|
4.2 MongoDB |
130 |
|
|
4.2.1 Überblick |
130 |
|
|
4.2.2 Datenmodell |
131 |
|
|
4.2.3 Installation |
132 |
|
|
4.2.4 CRUD-Operationen |
134 |
|
|
4.2.5 Fortgeschrittene Abfragen und Map/Reduce |
138 |
|
|
4.2.6 Skalierung |
140 |
|
|
4.2.7 Replikation |
142 |
|
|
4.2.8 Bewertung |
143 |
|
|
5 Key/Value-Datenbanken |
146 |
|
|
5.1 Redis |
147 |
|
|
5.1.1 Überblick |
147 |
|
|
5.1.2 Allgemeines |
147 |
|
|
5.1.3 Installation |
148 |
|
|
5.1.4 CRUD-Operationen |
149 |
|
|
5.1.5 Redis Hashes |
155 |
|
|
5.1.6 Zugriff aus anderen Programmiersprachen |
155 |
|
|
5.1.7 Replikation und Konfiguration |
157 |
|
|
5.1.8 Skalierung |
159 |
|
|
5.1.9 Bewertung |
159 |
|
|
5.2 Chordless |
161 |
|
|
5.2.1 Überblick |
161 |
|
|
5.2.2 Allgemeines |
162 |
|
|
5.2.3 Installation |
163 |
|
|
5.2.4 CRUD-Operationen |
164 |
|
|
5.2.5 Fortgeschrittene Abfragen |
166 |
|
|
5.2.6 Skalierung, Replikation und Konfiguration |
169 |
|
|
5.2.7 Bewertung |
169 |
|
|
5.3 Riak |
171 |
|
|
5.3.1 Überblick |
171 |
|
|
5.3.2 Allgemeines |
172 |
|
|
5.3.3 Installation |
174 |
|
|
5.3.4 CRUD-Operationen |
175 |
|
|
5.3.5 Zugriff aus anderen Programmiersprachen |
176 |
|
|
5.3.6 Abfragen und Links in Riak |
177 |
|
|
5.3.7 Skalierung, Replikation und Konfiguration |
179 |
|
|
5.3.8 Bewertung |
181 |
|
|
6 Graphdatenbanken |
184 |
|
|
6.1 Einführung und Hintergrund |
186 |
|
|
6.1.1 Das Graphdatenmodell |
187 |
|
|
6.1.2 Das Property-Graph-Datenmodell |
188 |
|
|
6.1.3 Repräsentation von Graphen |
189 |
|
|
6.1.4 Traversierung von Graphen |
191 |
|
|
6.1.5 Skalierung mittels Replikation und Partitionierung |
193 |
|
|
6.1.6 Vergleich mit anderen Datenmodellen |
195 |
|
|
6.1.7 Zusammenfassung |
197 |
|
|
6.2 Neo4j |
199 |
|
|
6.2.1 Datenmodell |
200 |
|
|
6.2.2 Installation und CRUD-Operationen |
200 |
|
|
6.2.3 Fortgeschrittene Abfragen |
204 |
|
|
6.2.4 Replikation |
208 |
|
|
6.2.5 Horizontale Skalierung |
209 |
|
|
6.2.6 Bewertung |
209 |
|
|
6.3 sones |
211 |
|
|
6.3.1 Überblick |
211 |
|
|
6.3.2 Beschreibung |
212 |
|
|
6.3.3 Datenmodell |
213 |
|
|
6.3.4 Installation |
214 |
|
|
6.3.5 CRUD-Operationen |
215 |
|
|
6.3.6 Bewertung |
223 |
|
|
6.4 InfoGrid |
224 |
|
|
6.4.1 Überblick |
224 |
|
|
6.4.2 Beschreibung |
224 |
|
|
6.4.3 Datenmodell |
225 |
|
|
6.4.4 Installation |
226 |
|
|
6.4.5 CRUD-Operationen |
226 |
|
|
6.4.6 Models |
228 |
|
|
6.4.7 Bewertung |
229 |
|
|
6.5 DEX |
230 |
|
|
6.5.1 Überblick |
230 |
|
|
6.5.2 Beschreibung |
230 |
|
|
6.5.3 Datenmodell |
231 |
|
|
6.5.4 Installation |
231 |
|
|
6.5.5 CRUD-Operationen |
232 |
|
|
6.5.6 Graphoperationen |
233 |
|
|
6.5.7 DEX-Skripting |
234 |
|
|
6.5.8 DEX-Shell |
235 |
|
|
6.5.9 Bewertung |
236 |
|
|
6.6 HyperGraphDB |
237 |
|
|
6.6.1 Überblick |
237 |
|
|
6.6.2 Datenmodell |
238 |
|
|
6.6.3 Installation |
239 |
|
|
6.6.4 CRUD-Operationen |
239 |
|
|
6.6.5 Graphoperationen |
242 |
|
|
6.6.6 Peer-To-Peer-Framework |
242 |
|
|
6.6.7 Bewertung |
242 |
|
|
6.7 InfiniteGraph |
244 |
|
|
6.7.1 Überblick |
244 |
|
|
6.7.2 Beschreibung |
244 |
|
|
6.7.3 Datenmodell |
245 |
|
|
6.7.4 Installation |
245 |
|
|
6.7.5 CRUD-Operationen |
246 |
|
|
6.7.6 Graphoperationen |
249 |
|
|
6.7.7 Bewertung |
250 |
|
|
6.8 OrientDB |
251 |
|
|
6.8.1 Überblick |
251 |
|
|
6.8.2 Datenmodell |
252 |
|
|
6.8.3 Installation |
252 |
|
|
6.8.4 CRUD-Operationen |
252 |
|
|
6.8.5 Datenbankschemata |
254 |
|
|
6.8.6 HTTP-REST-Schnittstelle |
255 |
|
|
6.8.7 Bewertung |
256 |
|
|
6.9 Weitere graphorientierte Ansätze |
257 |
|
|
6.9.1 Twitters FlockDB |
257 |
|
|
6.9.2 Google Pregel |
259 |
|
|
6.9.3 Apache Hama/Hamburg |
262 |
|
|
6.9.4 Die VertexDB-Familie |
263 |
|
|
6.9.5 Filament |
266 |
|
|
7 Weitere NoSQL-Datenbanken |
270 |
|
|
7.1 Wide Column Stores |
271 |
|
|
7.1.1 Hypertable |
271 |
|
|
7.1.2 Cloudera |
272 |
|
|
7.2 Document Stores |
273 |
|
|
7.3 Key/Value/Tupel-Stores |
274 |
|
|
7.3.1 Amazon Dynamo |
274 |
|
|
7.3.2 Dynomite und KAI |
275 |
|
|
7.3.3 MEMBASE |
276 |
|
|
7.3.4 Voldemort |
277 |
|
|
7.3.5 Scalaris |
279 |
|
|
7.3.6 Die Tokyo-Produktfamilie |
281 |
|
|
7.3.7 Weitere Key/Value-Systeme |
282 |
|
|
7.4 Google App Engine Storage |
283 |
|
|
7.5 Weitere ‚Soft’-NoSQL-Lösungen |
284 |
|
|
8 Orientierung im Datenbankraum |
286 |
|
|
8.1 Grundlegende Gedanken |
287 |
|
|
8.2 Datenanalyse |
288 |
|
|
8.3 Transaktionsmodell |
291 |
|
|
8.4 Performancesapekte |
292 |
|
|
8.5 Abfrageanforderungen |
292 |
|
|
8.6 Architektur |
293 |
|
|
8.7 Weitere nicht-funktionale Anforderungen |
294 |
|
|
8.8 Anwendungsfälle für NoSQL-Datenbanken |
296 |
|
|
8.9 Fazit |
297 |
|
|
Register |
301 |
|
|
database-pro |
306 |
|