DB-EnginesInfluxDB: Focus on building software with an easy-to-use serverless, scalable time series platformEnglish
Deutsch
Informationen zu relationalen und NoSQL DatenbankmanagementsystemenEin Service von solid IT

Enzyklopädie > Artikel

Push on Change

"Push on Change" ist ein Prinzip der Datenmodellierung, das häufig bei NoSQL Datenbanken zum Einsatz kommt. Die Idee ist, bei einer Änderung die Daten eher redundant mehrfach zu verteilen, um danach Abfragen möglichst einfach zu halten.

Pull on Demand

Das gegenteilige Prinzip ist "Pull on Demand", bei dem eine Änderung der Daten möglichst an wenigen Stellen erfolgt, mit der Konsequenz dass bei nicht-trivialen Abfragen die Daten von mehreren Stellen gesammelt werden müssen.

Anwendung

Welches der beiden Prinzipien besser ist, hängt lediglich von den Anforderungen der Applikation ab, etwa die Häufigkeit und Komplexität der Änderungen bzw. der Abfragen.

Tendenziell ist es allerdings so, dass in relationalen Datenmodellen durch den Versuch der Normalisierung eher Pull on Demand zum Einsatz kommt, während bei NoSQL Lösungen, wo komplexe Abfragen von der Technologie weniger unterstützt werden, eher Push on Change favorisiert wird.

Skalierbarkeit

Es ist auch zu beobachten, dass bei sehr großen Datenmengen Push on Change leichter skalierbar ist. Der Grund dafür ist, dass der Aufwand für das Schreiben von Daten kaum mit der Datenmenge ansteigt. Der Nachteil ist allerdings das Risiko der Dateninkonsistenz aufgrund von Fehlern.

Im Gegensatz dazu steigt bei Pull on Demand der Aufwand bei komplexe Abfragen sehr stark mit der Datenmenge. Aus diesem Grund werden die Daten auch bei relationalen Datenmodellen aus Performancegründen häufig teilweise denormalisiert, wodurch eine Mischform der beiden Prinzipien entsteht.

Beispiel

Der Unterschied zwischen Push on Change und Pull on Demand sei an einem einfachen Beispiel verdeutlicht. Angenommen es sollen in einem Online Forum User und Forumsbeiträge abgespeichert werden. Auf der Profilseite jedes Users soll das Datum seines letzten Beitrages und die Anzahl seiner Beiträge angezeigt werden.

Bei Pull on Demand würde man dazu immer wenn die Profilseite generiert wird, alle seine Beiträge zählen, das letzte Datum ermitteln und anzeigen. Bei Push on Change würde man beim Abspeichern eines neuen Beitrages das Datum nicht nur im Beitrag selbst, sondern auch beim User abspeichern, und einen Zähler beim User erhöhen. Bei der Anzeige bräuchte man dann nur noch direkt beim User abgespeicherte Daten anzuzeigen.

Bei Push on Change hätte man einen etwas höheren Speicherbedarf, und einen höheren Aufwand beim Erstellen von Beiträgen, welcher allerdings - und das ist wesentlich - nicht von der Anzahl der Beiträge abhängt. Bei Pull on Demand hat man keinen zusätzlichen Aufwand beim Abspeichern von Beiträgen, man hat auch keinen Aufwand bei etwaigem Löschen von Beiträgen um die redundanten Daten auf Stand zu halten, dafür hat man beim Generieren des Profils einen Zusatzaufwand, welcher sehr wohl von der Anzahl der Beiträge abhängt.



Featured Products

Milvus logo

Vector database designed for GenAI, fully equipped for enterprise implementation.
Try Managed Milvus for Free

Neo4j logo

See for yourself how a graph database can make your life easier.
Use Neo4j online for free.

Datastax Astra logo

Bring all your data to Generative AI applications with vector search enabled by the most scalable
vector database available.
Try for Free

RaimaDB logo

RaimaDB, embedded database for mission-critical applications. When performance, footprint and reliability matters.
Try RaimaDB for free.

AllegroGraph logo

Graph Database Leader for AI Knowledge Graph Applications - The Most Secure Graph Database Available.
Free Download

Präsentieren Sie hier Ihr Produkt