Edlich / Friedland / Hampe | NoSQL | E-Book | sack.de
E-Book

E-Book, Deutsch, 412 Seiten

Edlich / Friedland / Hampe NoSQL

Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken

E-Book, Deutsch, 412 Seiten

ISBN: 978-3-446-42855-3
Verlag: Hanser, Carl
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)



NOSQL //- 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
Edlich / Friedland / Hampe NoSQL jetzt bestellen!

Weitere Infos & Material


1;Inhalt;6
2;Geleitwort;14
3;Vorwort;16
3.1;Vorwort zur 2.Auflage;18
4;Einführung;20
4.1;1.1 Historie;20
4.2;1.2 Definition und Diskussion;21
4.3;1.3 Kategorisierung von NoSQL-Systemen;24
4.3.1;1.3.1 Key/Value-Systeme;26
4.3.2;1.3.2 Column-Family-Systeme;26
4.3.3;1.3.3 Document Stores;27
4.3.4;1.3.4 Graphdatenbanken;27
4.4;1.4 Fazit;28
5;NoSQL – Theoretische Grundlagen;30
5.1;2.1 Map/Reduce;31
5.1.1;2.1.1 Funktionale Ursprünge;31
5.1.2;2.1.2 Phasen und Datenfluss;36
5.1.3;2.1.3 Komponenten und Architektur;38
5.1.4;2.1.4 Anwendungsbereiche und Implementierungen;41
5.1.5;2.1.5 Praktisches Beispiel;43
5.1.6;2.1.6 Zusammenfassung;47
5.2;2.2 CAP und Eventually Consistent;49
5.2.1;2.2.1 Konsistenzmodell relationaler Datenbanken;49
5.2.2;2.2.2 CAP- Theorem;50
5.2.3;2.2.3 Alternatives Konsistenzmodell: BASE;52
5.3;2.3 Consistent-Hashing;55
5.4;2.4 Multiversion Concurrency Control;59
5.5;2.5 Vector Clocks;62
5.6;2.6 Paxos;66
5.7;2.7 REST;70
5.7.1;2.7.1 Web-scale?;70
5.7.2;2.7.2 Bausteine;71
5.7.3;2.7.3 Entwurf von REST- Applikationen;75
5.7.4;2.7.4 Skalierung von REST-Systemen;78
5.7.5;2.7.5 Fazit;80
6;Wide Column Stores;82
6.1;3.1 HBase;83
6.1.1;3.1.1 Überblick;83
6.1.2;3.1.2 Allgemeines;84
6.1.3;3.1.3 Datenmodell;84
6.1.4;3.1.4 Installation;86
6.1.5;3.1.5 CRUD-Operationen;88
6.1.6;3.1.6 Fortgeschrittene Abfragen mit Map/Reduce;93
6.1.7;3.1.7 Skalierung und Konfiguration;96
6.1.8;3.1.8 Replikation;98
6.1.9;3.1.9 Bewertung;99
6.2;3.2 Cassandra;101
6.2.1;3.2.1 Allgemeines;101
6.2.2;3.2.2 Installation;102
6.2.3;3.2.3 Datenmodell;103
6.2.4;3.2.4 CRUD-Operationen;107
6.2.5;3.2.5 Abfragen in Cassandra;110
6.2.6;3.2.6 Replikation und Skalierung;112
6.2.7;3.2.7 Bewertung;113
6.3;3.3 Amazon SimpleDB;115
6.3.1;3.3.1 Allgemeines;116
6.3.2;3.3.2 Datenmodell;116
6.3.3;3.3.3 Datensicherheit und Datenschutz;117
6.3.4;3.3.4 Installation;118
6.3.5;3.3.5 CRUD-Operationen;119
6.3.6;3.3.6 Zugriff mit dem AWS Toolkit für Eclipse;130
6.3.7;3.3.7 Replikation und Skalierung;133
6.3.8;3.3.8 Bewertung;133
7;Document Stores;136
7.1;4.1 CouchDB;137
7.1.1;4.1.1 Überblick;137
7.1.2;4.1.2 Beschreibung;137
7.1.3;4.1.3 Datenmodell;138
7.1.4;4.1.4 View-Modell;139
7.1.5;4.1.5 Zugriffskontrolle;139
7.1.6;4.1.6 Installation;140
7.1.7;4.1.7 CRUD-Operationen;142
7.1.8;4.1.8 Erstellen von Views;146
7.1.9;4.1.9 Replikation;147
7.1.10;4.1.10 Skalierung;148
7.1.11;4.1.11 CouchApps;148
7.1.12;4.1.12 Bewertung;149
7.2;4.2 MongoDB;150
7.2.1;4.2.1 Überblick;150
7.2.2;4.2.2 Datenmodell;152
7.2.3;4.2.3 Installation;153
7.2.4;4.2.4 CRUD-Operationen;154
7.2.5;4.2.5 Fortgeschrittene Abfragen und Map/Reduce;159
7.2.6;4.2.6 Skalierung;162
7.2.7;4.2.7 Replikation;164
7.2.8;4.2.8 Bewertung;167
8;Key/Value-Datenbanken;170
8.1;5.1 Redis;171
8.1.1;5.1.1 Überblick;171
8.1.2;5.1.2 Allgemeines;171
8.1.3;5.1.3 Installation;172
8.1.4;5.1.4 CRUD-Operationen;173
8.1.5;5.1.5 Redis Hashes;179
8.1.6;5.1.6 Redis Messaging;180
8.1.7;5.1.7 Zugriff aus anderen Programmiersprachen;181
8.1.8;5.1.8 Replikation und Konfiguration;183
8.1.9;5.1.9 Skalierung;185
8.1.10;5.1.10 Bewertung;185
8.2;5.2 Chordless;187
8.2.1;5.2.1 Überblick;187
8.2.2;5.2.2 Allgemeines;188
8.2.3;5.2.3 Installation;189
8.2.4;5.2.4 CRUD-Operationen;190
8.2.5;5.2.5 Fortgeschrittene Abfragen;192
8.2.6;5.2.6 Skalierung, Replikation und Konfiguration;195
8.2.7;5.2.7 Bewertung;196
8.3;5.3 Riak;198
8.3.1;5.3.1 Überblick;198
8.3.2;5.3.2 Allgemeines;198
8.3.3;5.3.3 Installation;201
8.3.4;5.3.4 CRUD-Operationen;201
8.3.5;5.3.5 Zugriff aus anderen Programmiersprachen;203
8.3.6;5.3.6 Abfragen und Links in Riak;206
8.3.7;5.3.7 Riak Search;208
8.3.8;5.3.8 Skalierung, Replikation und Konfiguration;209
8.3.9;5.3.9 Bewertung;210
8.4;5.4 Membase;212
8.4.1;5.4.1 Überblick;212
8.4.2;5.4.2 Allgemeines;212
8.4.3;5.4.3 Installation;213
8.4.4;5.4.4 Architektur und Konzepte;215
8.4.5;5.4.5 Das Memcached-Protokoll;218
8.4.6;5.4.6 Zugriff aus anderen Programmiersprachen;218
8.4.7;5.4.7 Skalierung und Replikation;220
8.4.8;5.4.8 Der Moxi;221
8.4.9;5.4.9 Die TAP-Schnittstelle;222
8.4.10;5.4.10 Bewertung;223
9;Graphdatenbanken;226
9.1;6.1 Mathematische und technische Grundlagen;228
9.1.1;6.1.1 Das allgemeine Graphenmodell;228
9.1.2;6.1.2 Das Property-Graph-Modell;229
9.1.3;6.1.3 Relationen höherer Ordnung;232
9.1.4;6.1.4 Repräsentation von Graphen;236
9.1.5;6.1.5 Traversierung von Graphen;238
9.1.6;6.1.6 Indizierung von Graphdaten;240
9.1.7;6.1.7 Skalierung mittels Replikation und Partitionierung;241
9.1.8;6.1.8 Graph Query Languages;244
9.1.9;6.1.9 Vergleich mit anderen Datenmodellen;244
9.1.10;6.1.10 Zusammenfassung;247
9.2;6.2 Der Tinkerpop Graph Processing Stack;249
9.2.1;6.2.1 Blueprints;250
9.2.2;6.2.2 Blueprints.NET;253
9.2.3;6.2.3 Frames;255
9.2.4;6.2.4 Pipes und Pipes.NET;256
9.2.5;6.2.5 Gremlin;259
9.2.6;6.2.6 Pacer;263
9.2.7;6.2.7 Rexster;263
9.3;6.3 AllegroGraph;267
9.3.1;6.3.1 Datenmodell;268
9.3.2;6.3.2 Installation;269
9.3.3;6.3.3 CRUD-Operationen mit Java;270
9.3.4;6.3.4 RDF-Reasoning und Konsistenzkriterien;276
9.3.5;6.3.5 Bewertung;278
9.4;6.4 DEX;279
9.4.1;6.4.1 Beschreibung;280
9.4.2;6.4.2 Datenmodell;281
9.4.3;6.4.3 Installation;281
9.4.4;6.4.4 CRUD-Operationen;281
9.4.5;6.4.5 Graphoperationen;283
9.4.6;6.4.6 DEX-Skripting;284
9.4.7;6.4.7 DEX-Shell;286
9.4.8;6.4.8 Bewertung;287
9.5;6.5 HyperGraphDB;288
9.5.1;6.5.1 Datenmodell;288
9.5.2;6.5.2 Installation;289
9.5.3;6.5.3 CRUD-Operationen;290
9.5.4;6.5.4 Graphoperationen;293
9.5.5;6.5.5 Peer- To-Peer-Framework;293
9.5.6;6.5.6 Bewertung;293
9.6;6.6 InfiniteGraph;295
9.6.1;6.6.1 Beschreibung;295
9.6.2;6.6.2 Datenmodell;296
9.6.3;6.6.3 Installation;297
9.6.4;6.6.4 CRUD-Operationen;297
9.6.5;6.6.5 Graphoperationen;301
9.6.6;6.6.6 Bewertung;302
9.7;6.7 InfoGrid;303
9.7.1;6.7.1 Beschreibung;304
9.7.2;6.7.2 Datenmodell;304
9.7.3;6.7.3 Installation;305
9.7.4;6.7.4 CRUD-Operationen;305
9.7.5;6.7.5 Models;308
9.7.6;6.7.6 Bewertung;309
9.8;6.8 Neo4j;309
9.8.1;6.8.1 Installation;310
9.8.2;6.8.2 CRUD-Operationen mit der Java- API;311
9.8.3;6.8.3 CRUD-Operationen mit JRuby;315
9.8.4;6.8.4 HTTP/REST-Schnittstelle;316
9.8.5;6.8.5 Cypher;319
9.8.6;6.8.6 Replikation und Skalierung;320
9.8.7;6.8.7 Bewertung;320
9.9;6.9 sones GraphDB;321
9.9.1;6.9.1 Datenmodell;322
9.9.2;6.9.2 Installation;323
9.9.3;6.9.3 CRUD-Operationen;323
9.9.4;6.9.4 Bewertung;327
9.10;6.10 Weitere graphorientierte Ansätze;328
9.10.1;6.10.1 Twitters FlockDB;328
9.10.2;6.10.2 Google Pregel;330
9.10.3;6.10.3 Apache Hama;334
9.10.4;6.10.4 Microsoft Trinity;336
9.10.5;6.10.5 Die VertexDB-Familie;340
9.10.6;6.10.6 Filament;343
10;OrientDB;348
10.1;7.1 Überblick;348
10.2;7.2 Allgemeines;349
10.3;7.3 Datenmodell;349
10.4;7.4 Struktur der Datenablage;351
10.5;7.5 Datenbanksicherheit;351
10.6;7.6 Installation;352
10.7;7.7 CRUD-Operationen DocumentDB;355
10.8;7.8 CRUD-Operationen ObjectDB;359
10.9;7.9 CRUD-Operationen GraphDB;362
10.10;7.10 Datenbankschemata;366
10.11;7.11 Transaktionen;366
10.12;7.12 HTTP-REST-Schnittstelle;367
10.13;7.13 Replizierung;370
10.14;7.14 Hosting über NuvolaBase;372
10.15;7.15 Bewertung;372
11;Weitere NoSQL-Datenbanken;374
11.1;8.1 Wide Column Stores;375
11.1.1;8.1.1 Hypertable;375
11.1.2;8.1.2 Cloudera;376
11.2;8.2 Document Stores;377
11.3;8.3 Key/Value/Tupel-Stores;378
11.3.1;8.3.1 Amazon Dynamo;378
11.3.2;8.3.2 Dynomite und KAI;379
11.3.3;8.3.3 Voldemort;379
11.3.4;8.3.4 Scalaris;382
11.3.5;8.3.5 Die Tokyo-Produktfamilie;383
11.3.6;8.3.6 Weitere Key/Value-Systeme;385
11.4;8.4 Google App Engine Storage;386
11.5;8.5 Weitere ‚Soft’-NoSQL-Lösungen;387
12;Orientierung im Datenbankraum;390
12.1;9.1 Grundlegende Gedanken;391
12.2;9.2 Datenanalyse;392
12.3;9.3 Transaktionsmodell;394
12.4;9.4 Performancesapekte;395
12.5;9.5 Abfrageanforderungen;396
12.6;9.6 Architektur;397
12.7;9.7 Weitere nicht-funktionale Anforderungen;398
12.8;9.8 Anwendungsfälle für NoSQL-Datenbanken;400
12.9;9.9 Fazit;401
13;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.


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.


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.