TechnologyOctober 22, 2010

Was ist Datenpersistenz und warum ist sie wichtig?

Matt Pfeil
Matt Pfeil
Was ist Datenpersistenz und warum ist sie wichtig?

Zu verstehen, was Persistenz bedeutet, ist unerlässlich, um verschiedene Datenspeichersysteme bewerten zu können. Da der Datenspeicher in den meisten modernen Anwendungen eine wichtige Rolle spielt, kann die unüberlegte Entscheidung für eine Lösung zu erheblichen Ausfallzeiten oder Datenverlust führen. In diesem Beitrag erörtern wir verschiedene Designansätze für Persistenz und Datenspeicher und bieten einige Hintergrundinformationen dazu im Kontext von Cassandra.

Wenn Sie mehr über Persistenz in Cassandra und anderen NoSQL-Datenbanken erfahren möchten, lesen Sie unseren umfangreichen Leitfaden zu NoSQL.

Was ist Datenpersistenz?

Persistenz ist „das Fortbestehen einer Wirkung, nachdem ihre Ursache beseitigt wurde“. Bezüglich der Speicherung von Daten in einem Computersystem bedeutet dies, dass die Daten nach Beendigung des Prozesses, mit dem sie erstellt wurden, fortbestehen. Mit anderen Worten gilt ein Datenspeicher als persistent, wenn Daten in den nichtflüchtigen Speicher geschrieben werden.

Welche Datenspeicher stellen Persistenz bereit?

Wenn Sie Persistenz in Ihrem Datenspeicher benötigen, müssen Sie auch die vier wichtigsten Designansätze verstehen, nach denen ein Datenspeicher funktioniert, und wie (bzw. ob) diese Designs für Persistenz sorgen:

  • reines In-Memory ohne jegliche Persistenz wie Memcached oder Scalaris
  • In-Memory mit regelmäßigen Snapshots wie Oracle Coherence oder Redis
  • festplattenbasiert mit Update-in-Place-Schreibvorgängen wie MySQL ISAM oder MongoDB
  • Commitprotokoll-basiert, wie alle traditionellen OLTP-Datenbanken (Oracle, SQL Server etc.)

Bei In-Memory-Ansätzen kann eine enorme Geschwindigkeit erzielt werden, allerdings bleiben sie auf einen relativ kleinen Datenbestand beschränkt. Die meisten Workloads haben eine relativ kleine „heiße“ (aktive) Teilmenge ihrer Gesamtdaten. Systeme, bei denen der Speicher den gesamten Datenbestand und nicht nur den aktiven Teil aufnehmen muss, eignen sich gut für Caches, aber weniger für die meisten anderen Anwendungen. Da sich die Daten nur im Arbeitsspeicher befinden, bleiben sie nach Beendigung des Prozesses nicht dauerhaft erhalten. Daher gelten diese Datenspeichertypen nicht als persistent.

So erreichen Sie Persistenz in einem System

Die einfachste Möglichkeit, ein In-Memory-System persistent zu machen, sind regelmäßige Snapshots auf der Festplatte in einem konfigurierbaren Intervall. Dabei können Sie Aktualisierungen verlieren, die zwischen diesen Snapshots liegen.

Update-in-Place- und Commitprotokoll-basierte Systeme speichern Daten sofort im nichtflüchtigen Speicher. Allerdings bietet nur die Commitprotokoll-basierte Persistenz Dauerhaftigkeit – das D in ACID - indem jeder Schreibvorgang persistiert wird, bevor die entsprechende Erfolgsmeldung an den Client zurückgegeben wird.

Cassandra implementiert ein Commitprotokoll-basiertes Persistenz-Design, bietet aber gleichzeitig einstellbare Stufen der Dauerhaftigkeit. Auf diese Weise können Sie über das richtige Verhältnis zwischen Sicherheit und Performance selbst entscheiden. Sie können für jeden Schreibvorgang wählen, ob diese Aktualisierung: 

  • im Arbeitsspeicher gepuffert wird
  • auf einer einzelnen Maschine auf die Festplatte geschrieben wird
  • auf mehreren Maschinen auf die Festplatte geschrieben wird
  • auf mehreren Maschinen in verschiedenen Rechenzentren auf die Festplatte geschrieben wird 

Sie können aber auch wählen, dass Schreibvorgänge so schnell wie möglich akzeptiert werden und ihr Empfang sofort bestätigt wird, noch bevor sie überhaupt vollständig aus dem Netzwerk deserialisiert wurden.

Warum Datenpersistenz wichtig ist

Letztendlich wissen Sie selbst am besten, was das richtige Verhältnis zwischen Performance und Dauerhaftigkeit für Ihre Daten ist. Um dieses Verhältnis entsprechend Ihren Vorstellungen zu wählen, ist eine fundierte Entscheidung über Datenspeichertechnologien unabdingbar. Für Systeme, die einen dauerhaften, leistungsstarken Datenspeicher benötigen, ist Cassandra mit seiner oben beschriebenen Einstellbarkeit die logische Wahl.

Discover more
Architecture
Share

One-stop Data API for Production GenAI

Astra DB gives JavaScript developers a complete data API and out-of-the-box integrations that make it easier to build production RAG apps with high relevancy and low latency.