Polyglot Persistence

Moderne Anwendungen werden zunehmend datengetriebener und verteilter, um immer mehr Nutzer bei stets wachsenden Datenmengen mit geringstmöglichen Antwortzeiten zu bedienen. Dabei werden nicht nur die verarbeiteten Daten heterogener, sondern auch die Anforderungen: Horizontale Skalierbarkeit, Schemaflexibilität und Ausfallsicherheit sind für viele Anwendungen unabdingbar geworden. Während klassische relationale Datenbanksysteme viele funktionale Anforderungen (z. B. ACID-Transaktionen, ausdrucksstarke Queries) erfolgreich abdecken, fehlt ihnen die Skalierbarkeit, Performance und Fehlertoleranz, die spezialisierte Systeme durch bewusst getroffene Kompromisse erzielen können. Die explosionsartig ansteigende Systemvielfalt der NoSQLund Big-Data-Bewegung hat dazu geführt, dass für bestimmte Teilprobleme einer Anwendung oft besonders geeignete Datenbanksysteme zur Verfügung stehen. Das Architekturmuster Polyglot Persistence bezeichnet den Einsatz verschiedener Datenbanken für verschiedene Anforderungen. Der Begriff wurde 2011 von Martin Fowler popularisiert und lehnt sich an Polyglot Programming an [6]. Der Kerngedanke von Polyglot Persistence ist, dass eine Abkehr von monolithisch konzipiertenAnwendungen mit einer „one-size-fits-all“-Datenbank Entwicklungsproduktivität und Performance erhöhen kann. Polyglotte (mehrsprachige) Persistenz kann sich dabei sowohl auf einzelne Anwendungen als auch ganze Unternehmen beziehen. Abb. 1 zeigt eine beispielhafte Polyglot-PersistenceArchitektur für eine E-Commerce-Applikation, wie sie in