
Allgemeine Beschreibung
Das Buch besteht aus 12 Kapiteln, die in 3 Abschnitte unterteilt sind. Es gibt kaum Abbildungen und das Lesen gestaltet sich recht mühsam und zeitaufwendig, da es sich durchgehend um Fließtext handelt, zudem ist die Schriftart nicht besonders groß. Nach jedem Kapitel folgt eine kurze Zusammenfassung über mehrere Seiten sowie ein umfangreiches Literaturverzeichnis.
Kurze Zusammenfassung
Das erste Kapitel erläutert Begriffe wie Wartbarkeit, Skalierbarkeit und Zuverlässigkeit. Der Autor erklärt, was diese bedeuten und warum sie wichtig sind. Übrigens erinnere ich mich noch aus Studienzeiten, dass dies bei weitem nicht die einzigen Merkmale sind, die Software haben sollte.
Im zweiten Kapitel werden Datenmodelle beschrieben, insbesondere klassische relationale Datenbanken, dokumentenorientierte und Graph-Datenbanken. Noch nichts konkretes - nur die Besonderheiten, Vor- und Nachteile. Nebenbei werden auch Abfragesprachen behandelt (neben SQL führt der Autor sogar CSS als Beispiel deklarativer Sprachen an).
Kapitel drei. Hier wird es etwas komplexer und ungewohnter für den Alltag des durchschnittlichen Entwicklers: B-Bäume, SSTabellen, LSM-Bäume, Hash-Indizes. Nicht sonderlich schwierig, aber da man nicht täglich direkt damit arbeitet, vergisst man die Informationen schnell. Im besten Fall bleiben von 50 Buchseiten nur ein paar Gedanken hängen. Was ich allerdings fast täglich nutze und hier erwähnt wird, ist die Arbeit mit Indizes und Datenbank-Speichersubsystemen (am Beispiel von InnoDB und MyISAM).
Das vierte Kapitel behandelt Datenformate für die Übertragung. Dem Autor ist anzurechnen, dass er nicht bei JSON und XML stehen bleibt, sondern auch Thrift, Protocol Buffers und Avro abdeckt. Er beschreibt auch Übertragungsansätze wie REST und RPC. Damit endet übrigens der erste Teil über Grundlagen von Informationssystemen und beginnt der Teil über verteilte Systeme.
Eines der folgenden Kapitel leitet einen neuen Abschnitt über Replikation ein. Meiner Meinung nach ist der Inhalt ziemlich gut. Es werden die Haupttopologien für Replikationssysteme behandelt, Master- und Slave-Knoten (sogar Masterlose Replikation), Konsistenz, Latenzprobleme, Quorum - all das ist enthalten.
Das nächste Kapitel handelt von Partitionierung. Ebenso gut beschrieben. Der Unterschied zur Replikation. Bereichspartitionierung, Hash-Partitionierung, Abfrageweiterleitung und Lastverteilung - das sind die Hauptthemen. Übrigens wird Partitionierung generisch beschrieben, anwendbar auf verschiedene Systeme: in MongoDB, Elasticsearch und SolrCloud "Shard" genannt, in HBase "Region", in Bigtable "Tablet", in Cassandra und Riak "virtueller Knoten" (vnode).
Es folgt ein Kapitel über Transaktionen. Ebenso gut ausgeführt. Der Schwerpunkt liegt auf ACID, mit Informationen zu Fehlerbehandlung und Transaktionsabbrüchen.
Die letzten beiden Kapitel dieses Abschnitts behandeln Ausfälle und Probleme verteilter Systeme (wie unzuverlässige Netze oder Zeitasynchronität - "unzuverlässige Uhren"), sowie Konsistenz und Konsens (Linearisierbarkeit) und verteilte Transaktionen.
Von den nächsten drei Kapiteln (wenn man das letzte, sehr theoretische über die Zukunft von Informationssystemen ausklammert), sind besonders die über Batch- und Stream-Verarbeitung (so heißen sie wörtlich) erwähnenswert. Hier geht es um Hadoop, MapReduce und Message Broker. Allerdings ist alles etwas oberflächlich.
Meine Meinung
Ein theoretisches Programmierbuch, das Begriffe wie Datenbanktypen, Transaktionskonzepte, Replikation, Partitionierung, Hochlast- und Verfügbarkeitsprobleme verteilter Systeme, Stream- und Batch-Verarbeitung tiefgehend behandelt - und vor allem, welche Werkzeuge und Technologien es zur Lösung dieser Probleme gibt. Wegen seines Umfangs wirkt das Lesen langwierig und mühsam. Aber insgesamt, wenn Programmieren lernen wie das Zusammensetzen eines Puzzles im Kopf ist, wo jedes Teil eine Technologie, ein Ansatz oder einfach ein Rat ist, dann liefert dieses Buch zweifellos viele solcher Puzzleteile. Daher habe ich dem Buch trotz seiner Länge und Trockenheit, und meiner sehr umfangreichen Zusammenfassung, dennoch eine recht hohe Bewertung gegeben.