NoSQL (eBook)
XVIII, 412 Seiten
Carl Hanser Fachbuchverlag
978-3-446-42855-3 (ISBN)
- Lernen Sie HBase, SimpleDB, CouchDB, MongoDB, Redis, Riak, Neo4J und andere NoSQL-Systeme kennen.
- 3 neue Kapitel in der 2. Auflage: Membase, OrientDB und REST im Datenbankkontext.
- Verschaffen Sie sich einen umfassenden Überblick über die aktuellen Entwicklungen in der NoSQL-Szene.
- Erfahren Sie, welche zentralen Konzepte den NoSQL-Datenbanken zugrunde liegen.
- Entscheiden Sie auf dieser Grundlage, welches der NoSQL-Systeme für Ihr Anwendungsgebiet am besten geeignet ist.
NoSQL-Datenbanken sind dabei, die Datenbankwelt zu revolutionieren. Laufend hört man von neuen NoSQL-Datenbanken, die sich jeweils für besondere Einsatzbereiche gut eignen. Dieses Buch hilft Datenbank- und Web-Entwicklern, den Überblick zu behalten und das richtige System für ihre Zwecke zu finden.
Sie lernen die Konzepte von NoSQL-Systemen kennen, die sie von den klassischen relationalen Datenbanksystemen unterscheiden. Vorgestellt und erklärt werden die theoretischen Grundlagen Map/Reduce, CAP-Theorem/Eventually Consistent, Consistent Hashing, MVCC-Protokoll, Vector Clocks, Paxos und REST.
Detailliert stellen die Autoren die wichtigsten Vertreter der vier großen NoSQL-Datenbanktypen Wide Column Stores, Document Stores, Key/Value-Datenbanken und Graphdatenbanken vor.
Damit Sie die Systeme gut vergleichen können, werden alle nach dem gleichen Schema vorgestellt. Sie erfahren, wie die Systeme aufgesetzt und skaliert werden, welche Vor- und Nachteile sie haben und für welche Anwendungsgebiete Sie sie einsetzen können. So haben Sie eine gute Grundlage für die Entscheidung, welche Datenbank in Ihrem Fall am besten geeignet ist.
Aus dem Inhalt: NoSQL - Theoretische Grundlagen, Wide Column Stores, Document Stores, Key/Value-Datenbanken, Graphdatenbanken, OrientDB, Weitere NoSQLDatenbanken, Orientierung im Datenbankraum
Stefan Edlich ist Professor für Softwaretechnik und Datenbanken und betreibt die Seite http://nosql-database.org/.Achim Friedland leitet den Bereich Hard- und Softwareentwicklung der Aperis GmbH, die sich schwerpunktmäßig mit dem Informationsmanagement im Bereich der Solartechnologie, Sensornetze und Smart Grids beschäftigt.Jens Hampe ist am Deutschen Zentrum für Luft- und Raumfahrt beschäftigt mit den Schwerpunkten Datenintegration, Softwareentwicklung, Systemintegration, Validierung und Simulationstechnologien. Benjamin Brauer ist als Softwareentwickler für verschiedene Unternehmen tätig, sein Schwerpunkt ist die Entwicklung datenbankgestützter Geschäftsanwendungen.Markus Brückner ist wissenschaftlicher Mitarbeiter am Fachgebiet Integrierte Kommunikationssysteme der TU Ilmenau und beschäftigt sich hauptsächlich mit der Kommunikation in verteilten Systemen.
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
8 Weitere NoSQLDatenbanken (S. 355-356)
In den vorigen Kapiteln wurde gut ein Dutzend der wichtigsten NoSQL-Datenbanken ausführlich erwähnt. Daher werden wir Ihnen in diesem Kapitel einen kurzen Überblick über die wichtigsten weiteren NoSQL-Datenbanken geben, die nachweisbar Einzug in die Industrie gefunden haben. Wie groß der Raum der NoSQL-Systeme derzeit tatsächlich ist, ist nicht zu bestimmen. Auf den wichtigsten Referenzseiten zu NoSQL wird alle paar Tage ein neues Datenbanksystem eingetragen. Weit über 100 NoSQL-Systeme sind dort bereits verzeichnet. Sicherlich sind viele von diesen Datenbanken noch jung und auch viele von kleinen Gruppen oder Einzelpersonen erstellt.
Dennoch dürften derzeit mindestens 30 bis 40 dieser Datenbanken bereits in nichttrivialen Anwendungen in der Industrie eingesetzt sein und eine Community mitbringen. Ziel dieses Kapitels ist, diese Anwendungen vorzustellen und auf Stärken und Schwächen hinzuweisen, damit Sie diese Systeme vielleicht auch in den Lösungsraum mit einbeziehen können. Wir beginnen mit dem Bereich der Wide Column Stores, in dem es derzeit noch sehr wenige Systeme gibt.
Hier fällt auch die Abgrenzung zu vielen Key/Value-Datenbanken (siehe Kapitel 3 und 5) – aufgrund der mächtigen Erweiterungen ebendieser – schwer. Aber mit Hypertable und Cloudera gibt es zwei Vertreter, die als Hadoop-Derivate in der Liga der Petabyte-Scale-Datenbanken spielen. Im folgenden Teil werden die NoSQL-Datenbanken vorgestellt, die in der ausführlichen Analyse vorher keinen Platz mehr gefunden haben, aber dennoch relevant für eine Evaluation wären. Darunter sind Systeme wie Amazon Dynamo, die die NoSQL-Welt nachhaltig geprägt haben, aber nicht Open Source sind. Oder das NoSQL-System Voldemort, welches im Vergleich zu vielen anderen Key/Value-Systemen bereits sehr oft eingesetzt wird.
8.1 Wide Column Stores
8.1.1 Hypertable
Hypertable wurde von Doug Judd gegründet und ahmt die Idee von Googles BigTable mit dem Map/Reduce-Framework beziehungsweise von Apache Hadoop nach. Da Hypertable Open Source ist, gibt es zwei Websites:
- http://www.hypertable.org
- http://www.hypertable.com
Die erste Website hostet das Open Source-Projekt selbst. Die zweite bietet kommerziellen Support auf Hypertable-Basis. Hypertable kann auf Hadoop aufsetzen und die Daten auch in das HDFS-Dateisystem speichern. Hypertable ist stark an das Googles BigTable-Modell angelehnt. Google selbst bietet damit Services wie YouTube, Blogger, Google Earth, Google Maps, Orkut und natürlich die Suchmaschine selbst an.
Dies ist also das Anwendungsfeld, das Hypertable anspricht. Hypertable wird auch von baidu.com und rediff.com eingesetzt. Ersteres ist das chinesische Äquivalent zur Suchmaschine Google und Letzteres eines der größten indischen Web-Portale. Anders als Apache Hadoop ist Hypertable in C++ geschrieben und daher um einiges schneller. Das primäre Ziel von Hypertable ist es, sehr große Datenvolumen zu verarbeiten und diese Online-Anwendungen zur Verfügung zu stellen. Die Datensätze werden in tabellenähnlicher Form zur Verfügung gestellt und über einen Primärschüssel indiziert. Gleichzeitig werden die Daten auch in dieser Primärschlüsselabfolge gespeichert, sodass Bereichsabfragen sehr effizient durchgeführt werden können.
| Erscheint lt. Verlag | 1.9.2011 |
|---|---|
| Verlagsort | München |
| Sprache | deutsch |
| Themenwelt | Mathematik / Informatik ► Informatik ► Netzwerke |
| Schlagworte | Couch DB • Datenbanken • Dynamo • Hadoop • NoSQL • SQL |
| ISBN-10 | 3-446-42855-0 / 3446428550 |
| ISBN-13 | 978-3-446-42855-3 / 9783446428553 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich