Datenintensive Anwendungen designen -  Martin Kleppmann

Datenintensive Anwendungen designen (eBook)

Konzepte für zuverlässige, skalierbare und wartbare Systeme
eBook Download: EPUB
2018 | 1. Auflage
652 Seiten
O'Reilly Verlag
978-3-96010-184-0 (ISBN)
Systemvoraussetzungen
44,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Daten stehen heute im Mittelpunkt vieler Herausforderungen im Systemdesign. Dabei sind komplexe Fragen wie Skalierbarkeit, Konsistenz, Zuverlässigkeit, Effizienz und Wartbarkeit zu klären. Darüber hinaus verfügen wir über eine überwältigende Vielfalt an Tools, einschließlich relationaler Datenbanken, NoSQL-Datenspeicher, Stream-und Batchprocessing und Message Broker. Aber was verbirgt sich hinter diesen Schlagworten? Und was ist die richtige Wahl für Ihre Anwendung? In diesem praktischen und umfassenden Leitfaden unterstützt Sie der Autor Martin Kleppmann bei der Navigation durch dieses schwierige Terrain, indem er die Vor-und Nachteile verschiedener Technologien zur Verarbeitung und Speicherung von Daten aufzeigt. Software verändert sich ständig, die Grundprinzipien bleiben aber gleich. Mit diesem Buch lernen Softwareentwickler und -architekten, wie sie die Konzepte in der Praxis umsetzen und wie sie Daten in modernen Anwendungen optimal nutzen können. - Inspizieren Sie die Systeme, die Sie bereits verwenden, und erfahren Sie, wie Sie sie effektiver nutzen können - Treffen Sie fundierte Entscheidungen, indem Sie die Stärken und Schwächen verschiedener Tools kennenlernen - Steuern Sie die notwenigen Kompromisse in Bezug auf Konsistenz, Skalierbarkeit, Fehlertoleranz und Komplexität - Machen Sie sich vertraut mit dem Stand der Forschung zu verteilten Systemen, auf denen moderne Datenbanken aufbauen - Werfen Sie einen Blick hinter die Kulissen der wichtigsten Onlinedienste und lernen Sie von deren Architekturen

Martin Kleppmann ist Forscher auf dem Gebiet verteilter Systeme an der Universität Cambridge, Großbritannien. Zuvor war er Softwareentwickler und Unternehmer bei Internetfirmen wie LinkedIn und Rapportive, wo er an ausgedehnten Dateninfrastrukturen gearbeitet hat. Da er dabei auch einiges an Lehrgeld zahlen musste, hofft er, dass dieses Buch Sie davor bewahrt, die gleichen Fehler zu wiederholen. Martin ist regelmäßig als Speaker auf Konferenzen anzutreffen, betätigt sich als Blogger und trägt zu Open-Source-Projekten bei. Er ist der Ansicht, dass fundiertes technisches Know-how für jeden zugänglich sein sollte und dass ein tieferes Verständnis uns helfen wird, bessere Software zu entwickeln.

Martin Kleppmann ist Forscher auf dem Gebiet verteilter Systeme an der Universität Cambridge, Großbritannien. Zuvor war er Softwareentwickler und Unternehmer bei Internetfirmen wie LinkedIn und Rapportive, wo er an ausgedehnten Dateninfrastrukturen gearbeitet hat. Da er dabei auch einiges an Lehrgeld zahlen musste, hofft er, dass dieses Buch Sie davor bewahrt, die gleichen Fehler zu wiederholen. Martin ist regelmäßig als Speaker auf Konferenzen anzutreffen, betätigt sich als Blogger und trägt zu Open-Source-Projekten bei. Er ist der Ansicht, dass fundiertes technisches Know-how für jeden zugänglich sein sollte und dass ein tieferes Verständnis uns helfen wird, bessere Software zu entwickeln.

Einleitung


Computing ist Popkultur. […] Die Popkultur verachtet die Geschichte. In der Popkultur dreht sich alles um Identität und das Gefühl mitzumachen. Sie hat nichts mit Zusammenarbeit, Vergangenheit oder Zukunft zu tun – es geht um das Leben in der Gegenwart. Ich denke, das Gleiche gilt für die meisten Leute, die Code für Geld schreiben. Sie haben keine Ahnung, woher [ihre Kultur kommt].

Alan Kay, im Interview mit Dr Dobb’s Journal (2012)

Wenn Sie in den letzten Jahren in der Softwareentwicklung gearbeitet haben und hier vor allem mit Server- und Backendsystemen, dann sind Sie wahrscheinlich mit einer Fülle von Schlagwörtern rund um die Speicherung und Verarbeitung von Daten bombardiert worden. NoSQL! Big Data! Skalierbarkeit! Sharding! Konsistenz! ACID! CAP-Theorem! Cloud-Dienste! MapReduce! Echtzeit!

Das letzte Jahrzehnt hat viele interessante Entwicklungen hervorgebracht, und zwar bei Datenbanken, in verteilten Systemen und in der Art und Weise, wie wir Anwendungen darauf aufbauen. Für diese Entwicklungen gibt es vielfältige Triebkräfte:

  • Internetfirmen wie Google, Microsoft, Amazon, Facebook, LinkedIn, Netflix und Twitter verarbeiten riesige Mengen an Daten und Datenverkehr, was sie dazu zwingt, neue Tools zu entwickeln, die in dieser Größenordnung effizient arbeiten.
  • Unternehmen müssen agil sein, Hypothesen kostengünstig testen und schnell auf neue Markterkenntnisse reagieren, indem sie die Entwicklungszyklen kurz und die Datenmodelle flexibel halten.
  • Freie und Open-Source-Software ist sehr erfolgreich geworden und wird heute in vielen Umgebungen kommerzieller oder intern entwickelter Software vorgezogen.
  • Während sich die Taktfrequenz der Prozessoren kaum mehr erhöht, sind Multi-Core-Prozessoren zum Standard avanciert, und Netzwerke werden immer schneller. Die Entwicklung strebt also in Richtung Parallelverarbeitung.
  • Dank Infrastructure as a Service (IaaS) wie zum Beispiel Amazon Web Services können Sie selbst in einem kleinen Team Systeme aufbauen, die über mehrere Computer und sogar über mehrere geografische Regionen hinweg verteilt sind.
  • Bei vielen Diensten erwartet man heutzutage, dass sie hochverfügbar sind. Längere Ausfallzeiten aufgrund von Störungen oder Wartungsarbeiten sind kaum noch tragbar.

Datenintensive Anwendungen erweitern die Grenzen des Machbaren, indem sie diese technologischen Entwicklungen nutzen. Eine Anwendung bezeichnen wir als datenintensiv, wenn sie vorrangig Probleme in Bezug auf Daten – die Menge der Daten, ihre Komplexität oder die Geschwindigkeit, mit der sie sich verändern – zu lösen hat, im Unterschied zu rechenintensiv, wenn die CPU-Takte einen Engpass darstellen.

Die Werkzeuge und Techniken, mit denen datenintensive Anwendungen Daten speichern und verarbeiten, haben sich diesen Änderungen schnell angepasst. Neue Arten von Datenbanksystemen (»NoSQL«) haben viel Aufmerksamkeit erregt, doch auch Nachrichtenwarteschlangen, Caches, Suchindizes, Frameworks für Batch- und Stream-Verarbeitung sowie verwandte Techniken sind auch sehr wichtig. Viele Anwendungen kombinieren diese Techniken.

Die diesbezüglichen Schlagwörter kennzeichnen die Begeisterung für die neuen Möglichkeiten, was prinzipiell zu begrüßen ist. Allerdings brauchen wir als Softwareentwickler und -architekten ein technisch genaues und präzises Verständnis für die verschiedenen Techniken und deren Abwägungen, wenn wir gute Anwendungen erstellen wollen. Für dieses Verständnis dürfen wir uns nicht mit Schlagwörtern begnügen, sondern müssen tiefer eintauchen.

Glücklicherweise stehen hinter diesen rasanten technischen Veränderungen dauerhafte Prinzipien, die ihre Gültigkeit behalten, unabhängig davon, welche Version eines bestimmten Tools Sie verwenden. Wenn Sie diese Prinzipien verstehen, können Sie sehen, wozu jedes Werkzeug passt, wie Sie es zweckmäßig einsetzen und wie Sie seine Fallstricke vermeiden. Hier kommt dieses Buch ins Spiel.

Es soll Ihnen helfen, sich in der vielfältigen und sich schnell verändernden Landschaft der Techniken zum Verarbeiten und Speichern von Daten zurechtzufinden. Dabei ist das Buch weder ein Tutorial für ein bestimmtes Tool noch ein Lehrbuch voller trockener Theorie. Vielmehr sehen wir uns Beispiele erfolgreicher Datensysteme an: Techniken, die die Grundlage vieler bekannter Anwendungen bilden und die täglich den Anforderungen an Skalierbarkeit, Leistung und Zuverlässigkeit in der Produktion gerecht werden müssen.

Wir dringen in die Interna dieser Systeme ein, nehmen ihre Schlüsselalgorithmen auseinander und diskutieren ihre Prinzipien und Abwägungen, die sie treffen müssen. Dabei streben wir nach zweckmäßigen Methoden, um über Datensysteme nachzudenken – nicht nur darüber, wie sie funktionieren, sondern auch, warum sie auf diese Weise funktionieren und welche Fragen wir stellen müssen.

Nachdem Sie dieses Buch gelesen haben, befinden Sie sich in einer komfortablen Position, um zu entscheiden, welche Technik für welchen Zweck geeignet ist, und um zu verstehen, wie sich die Tools kombinieren lassen, um die Grundlage für eine gute Anwendungsarchitektur zu bilden. Zwar werden Sie Ihre eigene Datenbank noch nicht von Grund auf neu erstellen können, doch zum Glück ist das auch kaum notwendig. Allerdings werden Sie ein gutes Gespür dafür entwickeln, was Ihre Systeme im Verborgenen tun, sodass Sie über ihr Verhalten nachdenken, gute Entwurfsentscheidungen treffen und eventuelle Probleme aufspüren können.

Wer sollte dieses Buch lesen?


Wenn Sie Anwendungen entwickeln, die Daten auf einer Art Server oder Backend speichern oder verarbeiten, und Ihre Anwendungen das Internet nutzen (zum Beispiel Webanwendungen, mobile Apps oder Sensoren mit Internetanschluss), dann ist dieses Buch genau richtig für Sie.

Die Zielgruppe dieses Buchs sind Softwareentwickler, Softwarearchitekten und technische Führungskräfte, die gerne programmieren. Es ist vor allem relevant, wenn Sie Entscheidungen über die Architektur der Systeme treffen müssen, an denen Sie arbeiten – wenn Sie zum Beispiel Tools für ein bestimmtes Problem auswählen und herausfinden müssen, wie Sie sie am besten anwenden. Doch selbst wenn Sie keinen Einfluss auf die Auswahl Ihrer Tools haben, hilft Ihnen das Buch, deren Stärken und Schwächen besser zu verstehen.

Sie sollten einige Erfahrungen im Erstellen von webbasierten Anwendungen oder Netzwerkdiensten mitbringen und mit relationalen Datenbanken und SQL vertraut sein. Wenn Sie nichtrelationale Datenbanken und andere datenbezogene Tools kennen, ist das prinzipiell von Vorteil, aber nicht unbedingt erforderlich. Hilfreich ist ein allgemeines Verständnis der gängigen Netzwerkprotokolle wie zum Beispiel TCP und HTTP. Welche Programmiersprache oder welches Framework Sie wählen, ist für dieses Buch nicht entscheidend.

Wenn einer der folgenden Punkte auf Sie zutrifft, wird Ihnen dieses Buch nützlich sein:

  • Sie möchten lernen, wie sich Datensysteme skalierbar machen lassen, um beispielsweise Webanwendungen oder mobile Apps mit Millionen von Benutzern zu unterstützen.
  • Sie müssen Anwendungen hochverfügbar machen (Ausfallzeiten minimieren) und betriebssicher gestalten.
  • Sie suchen nach Möglichkeiten, Systeme langfristig wartungsfreundlicher zu machen, selbst wenn sie wachsen und sich die Anforderungen und Techniken verändern.
  • Sie sind von Haus aus neugierig, wie die Dinge funktionieren, und wollen wissen, was bei den großen Websites und Onlinediensten hinter den Kulissen vor sich geht. Dieses Buch nimmt die Interna der verschiedenen Datenbanken und Datenverarbeitungssysteme auseinander, und es macht großen Spaß, die cleveren Überlegungen zu erkunden, die in ihr Design eingeflossen sind.

Wenn es um skalierbare Datensysteme geht, hört man manchmal Meinungen wie »Du bist nicht Google oder Amazon. Mach dir keine Gedanken um die Skalierbarkeit und nimm einfach eine relationale Datenbank.« In dieser Aussage liegt etwas Wahres: Ein System zu erstellen für eine Skalierung, die Sie noch nicht brauchen, ist unnützer Aufwand und kann Sie in ein unflexibles Design zwängen. Letztlich handelt es sich dabei um eine Form von vorschneller Optimierung. Allerdings ist es auch wichtig, das richtige Tool für den Job auszuwählen, und verschiedene Techniken zeichnen sich jeweils durch ihre eigenen Stärken und Schwächen aus. Wie wir sehen werden, sind relationale Datenbanken zwar wichtig, aber kein Allheilmittel für den Umgang mit Daten.

Das Themenspektrum dieses Buchs


Dieses Buch liefert keine detaillierten Anleitungen, wie Sie bestimmte Softwarepakete oder APIs installieren oder verwenden. Hierfür gibt es genügend Dokumentationen. Stattdessen erörtern wir die verschiedenen Prinzipien und Abwägungen, die für Datensysteme maßgeblich sind, und wir analysieren die...

Erscheint lt. Verlag 26.11.2018
Reihe/Serie Animals
Übersetzer Frank Langenau
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik
Schlagworte Batchprocessing • BI • Big Data • Data Science • Datenbanken • Datensysteme • Message Broker • NoSQL • NoSQL-Datenspeicher • Relationale Datenbanken • Skalierung • Streamprocessing • Systemdesign
ISBN-10 3-96010-184-8 / 3960101848
ISBN-13 978-3-96010-184-0 / 9783960101840
Haben Sie eine Frage zum Produkt?
Wie bewerten Sie den Artikel?
Bitte geben Sie Ihre Bewertung ein:
Bitte geben Sie Daten ein:
EPUBEPUB (Wasserzeichen)
Größe: 13,3 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software 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 eine kostenlose App.
Geräteliste und zusätzliche Hinweise

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.

Mehr entdecken
aus dem Bereich
Konzepte, Methoden, Lösungen und Arbeitshilfen für die Praxis

von Ernst Tiemeyer

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
69,99
Konzepte, Methoden, Lösungen und Arbeitshilfen für die Praxis

von Ernst Tiemeyer

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
69,99