„Persistenz (Informatik)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][Sichtung ausstehend]
Inhalt gelöscht Inhalt hinzugefügt
Malbun (Diskussion | Beiträge)
1. Abschnitt überarbeitet
 
Zeile 1: Zeile 1:
{{Überarbeiten}}
{{Überarbeiten}}
{{QS-Informatik|Zitat ([[Diskussion:Persistenz (Informatik)#Verworren]]): "Der Artikel ist in einem schlechten Zustand. Es findet sich keine verständliche Definition. Die Formulierungen sind unbeholfen. Viele Nebelbegriffe. Am Ende wird das ganze mit dem peinlichen Senf der Fachinformatiker "Java-Anwendungsentwicklung" zu gekleistert. Ohne schwere Eingriffe ist da nichts zu retten."}}
{{QS-Informatik|Zitat ([[Diskussion:Persistenz (Informatik)#Verworren]]): "Der Artikel ist in einem schlechten Zustand. Es findet sich keine verständliche Definition. Die Formulierungen sind unbeholfen. Viele Nebelbegriffe. Am Ende wird das ganze mit dem peinlichen Senf der Fachinformatiker "Java-Anwendungsentwicklung" zu gekleistert. Ohne schwere Eingriffe ist da nichts zu retten."}}
'''Persistenz''' (von [[Lateinische Sprache|lateinisch]] ''persistere'' „verharren, stehen bleiben“) ist ein wesentlicher Begriff in der [[Informatik]]. Grundlegend bezeichnet dieser Begriff das Fortbestehen eines bestimmten, definierten Systemzustandes (Daten, Relationen, Domänen etc.), um z. B. nach einer Pause die konsistente Weiterverarbeitung ab diesem ausgezeichneten Zustand zu gewährleisten. Das kann auf verschiedenen Weisen erreicht werden, z. B. indem eine Software ihre [[Daten]] vor Terminierung in eine [[Datenbank]] oder ein [[Dateisystem]] schreibt und mit Neustart den gespeicherten Zustand wiederherstellt, indem komplexere Zusammenhänge dieser Daten z. B. in Objektmodellen oder logischen Strukturen (zwischen-)speichert etc. Das Bewahren der Daten und des Zustands kann auch über längere Zeiträume erfolgen, wichtiger Nutzen der Persistenz ist eine konsistente Ablage und spätere Wiederherstellbarkeit des jeweiligen Systemzustands, damit sichergestellt wird, dass Informationen und Zusammenhänge auch bei Pausen oder Unterbrechungen nicht verloren gehen und die Arbeit nach der Unterbrechung fehlerfrei fortgesetzt werden kann.
'''Persistenz''' (von [[Lateinische Sprache|lateinisch]] ''persistere'' „verharren, stehen bleiben“) ist ein wesentlicher Begriff in der [[Informatik]]. Der Begriff Persistenz bezeichnet einen Prozess in dem ein Programm [[Daten]] für den späteren gebrauch, z. B. nach einem Neustart des Programms oder des gesamten Systems, speichert. Ziel der Persistenz ist das zuverlässliche Speichern von Daten auch über einen längeren Zeitraum. Das kann auf verschiedenen Wegen geschehen, z. B. indem es seine Daten vor dem Beenden in eine [[Datenbank]] oder ein [[Dateisystem]] schreibt. Dies kann natürlich auch geschehen wenn das Programm danach noch weiterarbeitet. Diese Daten können danach von demselben oder einem anderen Programm weiterverarbeitet werden, sofern dieses auf die Datenbank oder das Dateisystem zugriff hat. Dies ist auch zu einem späteren Zeitpunkt noch möglich, wenn das schreibende Programm schon beendet wurde. Das Bewahren der Daten und des Zustands kann auch über längere Zeiträume erfolgen. Mithilfe von Persistenz kann ein Prozess unterbrochen und zu einem späteren Zeitpunkt weitergeführt werden, ohne dass Daten verloren gehen. Programme können so z. B. auch ihre aktuelle Konfiguration speichern und diese beim nächsten Start wieder laden. Gleiches gilt auch für Betriebssysteme. Unter Windows trifft dies z. B. auf die Registry zu.


Ziel ist es dass immer einen möglichst aktuellen Stand der Daten in der Datenbank oder dem Dateisystem gespeichert ist. Dieses Vorgehen gewährleistet auch bei einem unvorhergesehenen Abbruch des Programms dass alle Daten die bereits verarbeitet wurden, nicht verloren gehen.
Derartige Fähigkeiten hängen vom Design eines Software-Systems ab, die Spezifikation der Persistenzeigenschaften sind grundlegende Aufgabenstellung beim System- und Anwendungsdesign. Dies gilt für die verschiedenen Zustände des Regelbetriebs einer Software, muss aber (bei gutem Design) neben geplanten Programmabbrüchen insbesondere auch mögliche Quellen und Vorkommnisse unvorhergesehener Programmabbrüche berücksichtigen. Der Systemzustand sollte zu jedem Zeitpunkt konsistent und integer sein, wird Persistenz per Design gefordert, sollte jeder Zustand jederzeit reproduzierbar sein.

Eine entscheidende Rolle dabei spielt die konsistente und sichere Erhaltung dieser Informationen, je nach Anforderungen auf [[Hardware]] wie nichtflüchtigen [[Datenspeicher|Speichermedien]] (Festplatten, SSDs, optischen Datenträgern, USB-Sticks …) oder in Software-Systemen (Datenbanken, Content Management-/Collaboration-Systemen, Cloud- und Web-Services etc.) oder auch kombiniert.


Es handelt sich also um sehr grundlegende Anforderungen, um die Kontinuität, Zuverlässigkeit und Verfügbarkeit von Informationen in einer digitalen Welt zu gewährleisten.
Es handelt sich also um sehr grundlegende Anforderungen, um die Kontinuität, Zuverlässigkeit und Verfügbarkeit von Informationen in einer digitalen Welt zu gewährleisten.

Aktuelle Version vom 11. Mai 2024, 22:45 Uhr

QS-Informatik
Beteilige dich an der Diskussion!
Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+)


Begründung: Zitat (Diskussion:Persistenz (Informatik)#Verworren): "Der Artikel ist in einem schlechten Zustand. Es findet sich keine verständliche Definition. Die Formulierungen sind unbeholfen. Viele Nebelbegriffe. Am Ende wird das ganze mit dem peinlichen Senf der Fachinformatiker "Java-Anwendungsentwicklung" zu gekleistert. Ohne schwere Eingriffe ist da nichts zu retten."

Persistenz (von lateinisch persistere „verharren, stehen bleiben“) ist ein wesentlicher Begriff in der Informatik. Der Begriff Persistenz bezeichnet einen Prozess in dem ein Programm Daten für den späteren gebrauch, z. B. nach einem Neustart des Programms oder des gesamten Systems, speichert. Ziel der Persistenz ist das zuverlässliche Speichern von Daten auch über einen längeren Zeitraum. Das kann auf verschiedenen Wegen geschehen, z. B. indem es seine Daten vor dem Beenden in eine Datenbank oder ein Dateisystem schreibt. Dies kann natürlich auch geschehen wenn das Programm danach noch weiterarbeitet. Diese Daten können danach von demselben oder einem anderen Programm weiterverarbeitet werden, sofern dieses auf die Datenbank oder das Dateisystem zugriff hat. Dies ist auch zu einem späteren Zeitpunkt noch möglich, wenn das schreibende Programm schon beendet wurde. Das Bewahren der Daten und des Zustands kann auch über längere Zeiträume erfolgen. Mithilfe von Persistenz kann ein Prozess unterbrochen und zu einem späteren Zeitpunkt weitergeführt werden, ohne dass Daten verloren gehen. Programme können so z. B. auch ihre aktuelle Konfiguration speichern und diese beim nächsten Start wieder laden. Gleiches gilt auch für Betriebssysteme. Unter Windows trifft dies z. B. auf die Registry zu.

Ziel ist es dass immer einen möglichst aktuellen Stand der Daten in der Datenbank oder dem Dateisystem gespeichert ist. Dieses Vorgehen gewährleistet auch bei einem unvorhergesehenen Abbruch des Programms dass alle Daten die bereits verarbeitet wurden, nicht verloren gehen.

Es handelt sich also um sehr grundlegende Anforderungen, um die Kontinuität, Zuverlässigkeit und Verfügbarkeit von Informationen in einer digitalen Welt zu gewährleisten.

Persistenz bei objektorientierten Programmen[Bearbeiten | Quelltext bearbeiten]

Die Implementierung von Persistenz in objektorientierten Programmen spielt eine entscheidende Rolle, um den Zustand von Objekten über verschiedene Programmläufe hinweg zu bewahren. Diese wichtige Funktionalität ermöglicht es, die Daten von Objekten dauerhaft zu speichern und wiederherzustellen, selbst nachdem das Programm beendet wurde oder der Computer neu gestartet wurde[1][2]. Diese Eigenschaft ist von besonderer Bedeutung, da sie die Fähigkeit schafft, essentielle Informationen und Daten zu behalten und wiederzuverwenden, was die Entwicklung vieler Anwendungen erheblich verbessert.

Ein Hauptgrund für die Notwendigkeit von Persistenz liegt in der Erfordernis, den Zustand von Objekten über Programmläufe hinweg zu bewahren. In vielen Anwendungen der objektorientierten Programmierung ist es unerlässlich, dass bestimmte Daten und Informationen auch nach Beendigung des Programms weiterhin vorhanden sind[3]. Beispielsweise könnte in einem Anwendungsfall, in dem Aufgabenverwaltung betrieben wird, die Fähigkeit, den Status von Aufgaben, Benutzern und Projekten zu speichern, sicherstellen, dass diese Informationen nicht verloren gehen, wenn das Programm geschlossen wird.

Die Implementierung von Persistenz kann auf verschiedene Weisen erfolgen. Eine gängige Methode ist die Nutzung von Datenbanken. Hierbei werden Objekte und ihre Attribute in Datenbanktabellen gespeichert. Diese Methode ermöglicht eine strukturierte Speicherung und effiziente Abfrage von Daten[4]. Alternativ können Objekte in Dateien serialisiert und deserialisiert werden, um ihren Zustand zu erhalten. ORM (Object-Relational Mapping) Frameworks wie Hibernate in Java oder Entity Framework in .NET bieten Abstraktionen, die die Verwaltung von Persistenz erleichtern, indem sie Objekte automatisch mit Datenbanktabellen synchronisieren[5].

Trotz der Vorteile, die Persistenz bietet, ergeben sich auch einige Herausforderungen bei der Implementierung. Die Datenintegrität und -konsistenz müssen gewährleistet sein, um inkonsistente Speicherung und Beschädigung von Daten zu verhindern. Transaktionskonzepte helfen dabei, diese Herausforderungen zu bewältigen, indem sie sicherstellen, dass Datenbankoperationen entweder vollständig oder überhaupt nicht ausgeführt werden[5].

Die Integration von Persistenz in objektorientierten Programmen bietet zahlreiche Vorteile. Sie ermöglicht die Wiederverwendung von Daten über verschiedene Sitzungen hinweg, was die Benutzerfreundlichkeit und Effizienz erhöht. Zudem unterstützt sie die Schaffung von Anwendungen mit anhaltender Datenintegrität, was besonders in Bereichen wie Finanzwesen, Gesundheitswesen und E-Commerce von Bedeutung ist[1].

Mit dem Fortschritt von Cloud-Computing und verteilten Systemen gewinnt die Persistenz in objektorientierten Programmen weiter an Bedeutung. Die Möglichkeit, Daten über verschiedene Geräte und Standorte hinweg zu speichern und zu synchronisieren, eröffnet neue Möglichkeiten für die Entwicklung vielfältiger Anwendungen[5].

Persistenz in einer bestehenden Laufzeitumgebung[Bearbeiten | Quelltext bearbeiten]

In der Welt der objektorientierten Programmierung gibt es zwei grundlegende Ansätze, um Persistenz zu implementieren: containerbasierte Persistenz und komponentenbasierte Persistenz. Diese Ansätze definieren, wie Daten in einer Laufzeitumgebung gespeichert und wiederhergestellt werden.

Die containerbasierte Persistenz legt die Verantwortung des Speicherns und Wiederherstellens von Daten in die Hände der Laufzeitumgebung, wie beispielsweise eines Anwendungsservers. Dies bedeutet, dass Entwickler sich weniger um die Details der Datenpersistenz kümmern müssen, da die Laufzeitumgebung die Aufgabe des Datenmanagements übernimmt.

Im Gegensatz dazu liegt bei der komponentenbasierten Persistenz die Verantwortung, Daten zu speichern und wiederherzustellen, direkt bei der einzelnen Komponente. Das bedeutet, dass die Programmierer für das Management der Daten selbst zuständig sind und die notwendigen Mechanismen implementieren müssen, um die Persistenz sicherzustellen.

In Java-Entwicklungsumgebungen, insbesondere ab der Java Platform, Enterprise Edition 5, werden für die containerbasierte Persistenz Enterprise JavaBeans (EJBs) verwendet. Diese Komponenten werden mit Annotations wie „@Entity“ gekennzeichnet, um anzuzeigen, welche Klassen persistiert werden sollen[6]. Dies ermöglicht es, dass die Laufzeitumgebung die Speicherung und Wiederherstellung der Daten automatisch übernimmt.

Die Wahl zwischen containerbasierter und komponentenbasierter Persistenz hängt von den Anforderungen und der Komplexität des Projekts ab. Während die containerbasierte Persistenz Entwicklern die Arbeit erleichtert, indem sie viele Details abstrahiert, bietet die komponentenbasierte Variante mehr Kontrolle und Flexibilität über den Persistenzprozess.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Wiktionary: Persistenz – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. a b Dmitri Nesteruk: Design Patterns in Modern C++20: Reusable Approaches for Object-Oriented Software Design. Apress, Berkeley, CA 2022, ISBN 978-1-4842-7294-7, doi:10.1007/978-1-4842-7295-4 (springer.com [abgerufen am 11. August 2023]).
  2. Dhrubojyoti Kayal: Pro Java EE spring patterns: best practices and design strategies implementing Java EE patterns with the Spring Framework (= The expert's voice in Open Source). Apress, Berkeley, Calif 2008, ISBN 978-1-4302-1009-2.
  3. Sarah Beecham, Helen Sharp, Nathan Baddoo, Tracy Hall, Hugh Robinson: Does the XP environment meet the motivational needs of the software developer? An empirical study. In: Agile 2007 (AGILE 2007). August 2007, S. 37–49, doi:10.1109/AGILE.2007.22 (ieee.org [abgerufen am 11. August 2023]).
  4. Samuel A. Soares, Marcius Brandao, Mariela I. Cortes, Emmanuel S. S. Freire: Dribbling complexity in model driven development using Naked Objects, domain driven design, and software design patterns. IEEE, 2015, ISBN 978-1-4673-9143-6, S. 1–11, doi:10.1109/CLEI.2015.7360022 (ieee.org [abgerufen am 11. August 2023]).
  5. a b c Rick Cattell: Scalable SQL and NoSQL data stores. In: ACM SIGMOD Record. Band 39, Nr. 4, 6. Mai 2011, ISSN 0163-5808, S. 12–27, doi:10.1145/1978915.1978919 (acm.org [abgerufen am 11. August 2023]).
  6. Entity (Java EE 5 API) bei Oracle (englisch)