DE102008024809B3 - Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen - Google Patents

Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen Download PDF

Info

Publication number
DE102008024809B3
DE102008024809B3 DE102008024809A DE102008024809A DE102008024809B3 DE 102008024809 B3 DE102008024809 B3 DE 102008024809B3 DE 102008024809 A DE102008024809 A DE 102008024809A DE 102008024809 A DE102008024809 A DE 102008024809A DE 102008024809 B3 DE102008024809 B3 DE 102008024809B3
Authority
DE
Germany
Prior art keywords
data
revision
page
stored
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102008024809A
Other languages
English (en)
Inventor
Marc Ives Maria Kramis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Universitaet Konstanz
Original Assignee
Universitaet Konstanz
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universitaet Konstanz filed Critical Universitaet Konstanz
Priority to DE102008024809A priority Critical patent/DE102008024809B3/de
Priority to PCT/EP2009/003680 priority patent/WO2009141162A1/de
Priority to PCT/EP2009/003679 priority patent/WO2009141161A1/de
Application granted granted Critical
Publication of DE102008024809B3 publication Critical patent/DE102008024809B3/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures

Abstract

Ein Verfahren zur Speicherung einer Mehrzahl von Revisionen (Rr) von baumstrukturartig verknüpften Datenfamilienteilen, die jeweils eine Anzahl von miteinander baumartig verknüpfter Datenseiten (Pr,p) mit einer zentralen Eltern-Datenseite (PPr,0) und von dieser ausgehenden Kinder-Datenseiten (PPr,x) haben, wird beschrieben. Für jede Revision (Rr) wird ein Haupt-Referenzzeiger (RRr) auf die Eltern-Datenseite (PPr,0) der jeweiligen Datenseite (Pr) in einer separat abgespeicherten Liste (NDLr,p) bereitgestellt. Die Datenseiten (Pr) haben mindestens einen Seiten-Referenzzeiger (PRr,p) auf logisch unmittelbar nachfolgend verknüpfte Kinder-Datenseiten (PPr,x). Knotenänderungsinformationen über Änderungen von eine Referenz auf logisch unmittelbar nachfolgend verknüpfte Kinder-Datenseiten (PPr,x) definierende Knoten der Struktur baumartig verknüpfter Datenfamilienteile werden für jede Revision (Rr) abgespeichert.

Description

  • Die Erfindung betrifft ein Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen, die jeweils eine Anzahl von miteinander baumartig verknüpfter Datenseiten mit einer zentralen Eltern-Datenseite und von dieser ausgehenden Kinder-Datenseiten haben, wobei für jede Revision ein Haupt-Referenzzeiger auf die Eltern-Datenseite der jeweiligen Datenseite in einer separat abgespeicherten Liste bereitgestellt wird und die Datenseiten mindestens einen Seiten-Referenzzeiger auf logisch unmittelbar nachfolgend verknüpfte Kinder-Datenseiten haben.
  • Informationen können digital hierarchisch strukturiert mit Hilfe des so genannten Extensible Mark-Up-Language XML abgespeichert werden. XML ist eine Aufzeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdateien. Das XML-Format wird insbesondere für den Austausch von Daten zwischen unterschiedlichen Computersystemen eingesetzt. Ein XML-Dokument besteht aus Elementen, Attributen, ihren Wertzuweisungen und dem Inhalt der Elemente, der aus Text oder aus untergeordneten Elementen bestehen kann. Die untergeordneten Elemente können ihrerseits wieder Attribute mit Wertzuweisungen und Inhalt haben. In einem XML-Dokument können Elemente mit und ohne Attribute vorkommen. Weiterhin können Elemente vorhanden sein, die ihrerseits viele andere Elemente enthalten. Weiterhin können Elemente lediglich Text oder sogar keinen Inhalt haben. Die Elemente, Attribute und Wertzuweisungen bilden eine Baumstruktur, die einer Verzeichnis- und Dateistruktur herkömmlicher Computersysteme ähnelt. Eine XML-Datei wird von einem so genannten XML-Paser abgearbeitet, indem der Hierarchie gefolgt wird, die sich durch die Baumstruktur der Daten ergibt. Jedes Elemente, jedes Attribut, jede Wertzuweisung an ein Attribut und jeder Zeicheninhalt eines Elements ist dabei ein eigener Bestandteil des Baums, der einzeln adressierbar ist. Diese Bestandteile werden auch als Knoten bezeichnet. Jedes XML-Dokument beginnt mit einem Wurzelknoten, der den Ursprung der Daten bildet. Der Wurzelknoten verweist auf ein äußerstes, den gesamten übrigen Inhalt der XML-Datei umfassendes Element, das heißt den obersten Knoten. An einen solchen Knoten schließen sich ein oder mehrere Kindknoten an, aus deren Sicht der übergeordnete Knoten einen Elternknoten bildet.
  • Mit einem solchen XML-Dokument, bei dem Eltern- und Kinderdatenseiten miteinander hierarchisch verbunden sind, lassen sich systemunabhängig Daten verwalten und insbesondere Revisionen von Datensammlungen so abspeichern, dass die Revisionshistorie nachvollziehbar ist. Dies ist insbesondere dann hilfreich, wenn eine Mehrzahl von Bearbeitern an demselben Objekt arbeiten, wie bspw. der Erstellung von Textdokumenten.
  • Es existieren eine Vielzahl von nativen XML-Datenbanken, die eine Enkodierung zur internen Repräsentation von XML-Daten als ungereihter, geordneter Baum mit der Randbedingung repräsentiert, dass die Ordnung der Kinder jedes Knotens stabil ist. Der enkodierte Baum wird in einem Speichersystem abgespeichert. Die nativen XML-Datenbanken machen den abgespeicherten Baum über ein Interface zugänglich.
  • Es existieren vier Hauptklassen zur Enkodierung. Das Enkodieren mit einem Schlüssel fester Größe weist jedem Knoten einen einzigartigen, nicht flüchtigen Schlüssel fester Größe zu. Ein Vergleich von zwei Schlüsseln reflektiert nicht notwendiger Wei se die globale Reihenfolge der zwei aufeinander bezogenen Knoten. Jeder Knoten speichert Schlüssel seiner unmittelbaren Nachbarknoten. Aktualisierungen sind nicht skaliert, wenn ein Knoten eine große Anzahl von Kindern enthält. Das Enkodieren mit einem Schlüssel variabler Größe weist jedem Knoten einen einzigartigen, nicht flüchtigen Schlüssel variabler Größe zu. Einen Vergleich von zwei Schlüsseln reflektiert immer die globale Ordnung der zwei aufeinander bezogenen Knoten. In Abhängigkeit einer Einfügeposition kann die Größe des Schlüssels unbegrenzt ansteigen. Aktualisierungen sind für ständige Einfügungen in der angrenzenden Nachbarschaft eines einzelnen Knotens nicht skaliert.
  • Die Positionenkodierung weist jedem Knoten einen einzigartigen, flüchtigen Schlüssel fester Größe zu. Ein Vergleich von zwei Schlüsseln reflektiert immer die globale Ordnung der zwei aufeinander bezogenen Knoten. Der Schlüssel eines Knotens entspricht der aktuellen Position des Knotens, während Aktualisierungen die Position aller Knoten ändern, die den eingefügten oder gelöschten Knoten folgen. Aktualisierungen sind nicht skaliert, falls zusätzliche Indizes, wie ein Volltextindex involviert sind. Die vierte Art der Kodierung ist ein indexbasiertes Verfahren, bei dem eine oder mehrere Indizes für jeden Knoten vorhanden sind, um typische Abfragen zu beschleunigen. Hierzu muss das Original XML-Dokument für eine korrekte Rekonstruktion verfügbar gehalten werden. Aktualisierungen sind nicht skaliert, so dass das Original XML-Dokument und alle Knoten nach dem Einfügen oder Löschen von Knoten aktualisiert werden muss. Weiterhin existieren zwei grundlegenden Speichersystemklassen. Die erste Speichersystemklasse überschreibt existierende Daten bei der Ausführung von gegenwärtigen Aktualisierungen. Hierzu wird eine Baumkopie oder ein Feld üblicherweise teilweise oder vollständig im Speicher gehalten und während der Aktualisierung auf das Speichermedium zurückgeschrieben. Alte Daten werden teilweise oder vollständig überschrieben oder gelöscht.
  • Die zweite Speicherklasse führt Aktualisierungen mit Kopien beim Schreibvorgang ohne ein Überschreiben alter Daten aus. Hierbei wird ein Index sowie die Revision der Daten bereitgehalten. Ein neuer Index und neue Daten werden lediglich an die alten Informationen angehängt. Die Indexpunkte auf Daten entsprechen einer Revision und können damit entweder auf einen vollen Dateninhalt oder auf eine Sequenz von inkremmentalen Änderungen, das heißt auf den Unterschied zwischen den Dateninhalten zweier aufeinander folgende Revisionen zeigen, die zur Rekonstruktion der vollen Dateninhalte genutzt werden können.
  • Weiterhin existieren vier grundlegende Schnittstellenklassen, nämlich eine Schnittstelle zur Anwendungsprogrammierung (API = Application Programming Interface), zur integrierten Interaktion (Embedded Interaction) einer anwenderbezogenen Schnittstelle API für alleinstehende Interaktion (Stand Alone Interaction), eine anwenderbezogenen Schnittstelle API zur Web-basierten Interaktion sowie ein Text und/oder grafisches Nutzerinterface zur Mensch-Maschine-Interaktion.
  • C. Grün, A. Holupirek, M. Kramis, M. H. Scholl, M. Waldvogel: ”Pushing XPath Accelerator to its Limits”, in Proceedings of the First International Workshop and Performance and Evaluation of Data Management Systems, June 30, 2006 Chicago, Illinois, USA, beschreibt die Struktur von XML-Daten und Konzepte zur Enkodierung. Durch ein Set von Index-Tupel und Index-Blockstrukturen kann die Aktualisierungszeit reduziert werden. Die Dateistruktur wird mit einer Namensliste, einer Knotenliste und einer Werteliste verwaltet.
  • US 6,938,075 B1 offenbart ein Software-Verteilungssystem, bei dem zur Minimierung der bei der Softwareübertragung über ein Netzwerk genutzten Bandbreite nur die Datenpakete, die durch einen Knoten eines baumartig strukturierten Netzwerkes erforderlich sind, nur über die übergeordneten Verbindungen geschickt werden.
  • US 7,111,233 B1 offenbart ein Verfahren und ein System zur Modifikation von Programmapplikationen, wobei Daten im erweiterten Auszeichen- und Sprachenformat aus einer auf einem Computersystem laufenden Anwendung ausgegeben werden. Mit Hilfe einer Kontexttabelle, mit der ein Modell von Schreibeoperationen eine Altcomputeranwendung auf ein erweiterbares Auszeichen- und Sprachenschema abgebildet wird, wird das Verhältnis eines Schemaelementes der Ausgabedaten innerhalb des erweiterbaren Auszeichen- und Sprachenschemas und ein gegenwärtiger Kontext bestimmt. Weiterhin werden erweiterbare Auszeichnungssprachen-Tax für die Schemaelemente bis hinunter zum Schemaelement der Ausgabedaten geöffnet, um letztendlich die Daten und die geeigneten erweiterbaren Auszeichnungssprachen-Tax von einer Schreibervorrichtung in erweiterbarem Auszeichnungssprachenformat auszugeben. Die direkte Erzeugung von XML formatierten Daten von einem Altcomputersystem reduziert Reibungen in Informationsnetzwerken durch eine Vereinfachung des Informationstransfers.
  • Das der Erfindung zugrunde liegende Problem liegt in der effizienten Speicherung und Suche von Revisionen baumartig verknüpfter Datenfamilienteile, insbesondere unter dem Gesichtspunkt, dass die Größe und Struktur der verknüpften Datenfamilienteile von Revision zu Revision nicht vorhersagbar unterschiedlich ist.
  • Die Aufgabe wird mit dem Verfahren der eingangs genannten Art erfindungsgemäß gelöst durch Abspeichern von Knotenänderungsinformationen für jede Revision über Änderungen von eine Referenz auf logisch unmittelbar nachfolgend verknüpfte KinderDatenseiten definierende Knoten der Struktur baumartig verknüpfter Datenfamilienteile.
  • Es wird somit vorgeschlagen, für jede Datenseite einer Revision Informationen über die Änderungen bezogen auf die vorhergehende Revision in einer separaten Knotenliste als Knotenänderungsinformation abzuspeichern. Durch das Abspeichern der Knotenänderungsinformation für jede Revision wird eine weitere suchbare- und aus- wertbare Liste bereitgestellt, aus der unmittelbar die Änderungen der Knoten einer Datenseite erkennbar sind. Dort wird die Revision bereits anhand der Versionisierung der Baumsstruktur erkennbar, die über die abgespeicherten Knotenänderungsinformationen als Informationsfeld zugänglich ist. Dies hat den Vorteil, dass die Änderungsanweisung nicht erst umständlich über die Haupt- und Seitenreferenzzeiger ausgehend von einem Wurzelknoten ausgewertet werden müssen. Nicht persistent gemachte Seiten in einem Arbeitsspeicher können so aus persistenten Seitenteilen hergeleitet werden.
  • Die Knotenänderungsinformationen können das Hinzufügen neuer Knoten, das Löschen von Knoten und/oder die Änderung von Knoten kennzeichnen. Durch die separate Abspeicherung von Knotenänderungsinformationen in eine zusätzliche, die Änderung der Knoten einer Datenseite enthaltene Liste wird somit vermerkt, ob im Vergleich zur vorhergehenden Revision ein zusätzlicher Knoten hinzugefügt, gelöscht oder geändert worden ist.
  • Die Kinder-Datenseiten können die Änderung der entsprechenden Kinder-Datenseite an einer unmittelbar vorhergehenden Revision in Form von Differenzdaten enthalten. Dies hat den Vorteil, dass nicht der vollständige Inhalt der Datenseite abgespeichert werden muss, sondern lediglich die nicht binäre Änderungsinformationen, was zu einem reduzierten Speicherbedarf führt und keine aufwändigen Berechnungen erfordert.
  • Die Datenseiten können aber auch den vollständigen Dateninhalt enthalten, der in der jeweiligen Revision optional modifiziert wurde.
  • In einer bevorzugten Ausführungsform sind die Hauptreferenzzeiger oder Kopien der Hauptreferenzzeiger auf einem weiteren Datenspeichermedium separat von den referenzierten Datenseiten abgelegt. Dies hat nicht nur den Vorteil der erhöhten Datensicherheit durch Redundanz, sondern ermöglicht auch einen schnelleren Datenzugriff, da die Suche in den Hauptreferenzzeigern auf dem separaten Datenspeichermedium parallel zum Auslesen oder Schreiben von Datenseiten erfolgen kann.
  • Denkbar ist aber auch, dass die Hauptreferenzzeiger oder Kopien davon in Sektoren eines Datenspeichermediums getrennt von den Sektoren desselben Datenspeichermediums abgelegt sind, in denen die referenzierten Datensätze gespeichert sind. Durch die Aufteilung in Sektoren wird sichergestellt, dass die baumartigen Strukturen der Daten zusammenhängend hintereinander abgelegt werden können, wie auch die Hauptreferenzzeiger, ohne dass die Speicherorte verwürftelt werden.
  • Weiterhin ist es vorteilhaft, wenn die Speicherung der Revision von Datenfamilien durch Verschlüsselung abgesichert wird. Durch Verschlüsselung sollte die Performance allerdings nicht wesentlich eingeschränkt werden. Es wird daher vorgeschlagen, ein Kryptographieverfahren basierend auf einem kodierten Hash-Nachrichten-Authentifizierungscode anzusetzen, bei dem eine kryptographische Hash-Funktion in Kombination mit einem geheimen Schlüssel eingesetzt wird. Zusätzlich wird eine symmetrische Verschlüsselung eingesetzt. Hierzu wird einer geheimer Masterschlüssel definiert und unabhängig von dem Masterschlüssel eine Zusatzkennung generiert. Diese Generierung der Zusatzkennung, die auch Salt genannt wird, wird auch als Salting bezeichnet. Aus dem Masterschlüssel und der Zusatzkennung wird ein Schlüssel abgeleitet. Dies wird auch als Stretching bezeichnet. Für jede Datenseite wird dann ein jeweils einzigartiger Ad-Hoc-Schlüssel und ein Zähler aus Ergebnissen der Ver-/Entschlüsselungsalgorhithmen übergeordneter Datenseite zur Verschlüsselung, Entschlüsselung und Authentifizierung mindestens der zugeordneten Hauptreferenzzeiger, Datenseiten und mindestens eines Kopfteils für die Gesamtheit der Revision der gespeicherten Datenfamilien abgeleitet.
  • Das Verschlüsselungsverfahren kann beispielsweise Gebrauch machen von dem standardisierten Advanced-Encryption-Standard, z. B. CTR-AES-256 und dem Hash-Authentifizierungsverfahren, wie z. B. HMAC-SHA-256. Das Auslesen der gespeicherten Revisionen von Datenseiten kann vorzugsweise erfolgen durch die Schritte:
    • a) Verifizieren der Übereinstimmung gespeicherter Kopien eines Kopfteils für die Gesamtheit der Revision gespeicherter Datenfamilien;
    • b) Verifizieren der Übereinstimmung einer in einem separaten Datenspeichermedium oder auf einem separaten Sektor eines Datenspeichermediums abgeleg ten Kopie eines Hauptreferenzzeigers für die aktuelle Revision mit einem Hauptreferenzzeiger der aktuellen Revision, die auf einem Sektor des Datenspeichermediums zusammen mit den zugehörigen Datenseiten der Revision abgelegt sind,
    • c) Zugreifen auf Datenseiten gewünschter Revisionen über im Hauptzeiger für die entsprechende Revision und den Seitenreferenzzeigern enthaltenen Zeigern und
    • d) Auswerten von Knotenänderungsinformationen für jede Revision über Änderungen von einer Referenz auf logisch unmittelbar nachfolgend verknüpfte Kinder-Datenseiten definierende Knoten.
  • Das Zugreifen auf eine gewünschte Revision kann mittels des binären Suchalgorithmus über die Liste der Hauptreferenzzeiger erfolgen, wobei gleichermaßen an Hand der Revisionsnummer und/oder des im Hauptreferenzzeiger gespeicherten Zeitstempels gesucht werden kann.
  • Die Erfindung wird nachfolgend anhand von Ausführungsbeispielen mit den beigefügten Zeichnungen näher erläutert. Es zeigen:
  • 1 – Speicherschema zur Speicherung einer Mehrzahl von Revisionen baumstrukturartig verknüpfter Datenfamilien mit zwei separaten Datenspeichern;
  • 2 – Speicherschema der Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpfter Datenfamilien unter Nutzung von zwei Sektoren eines einzigen Datenspeichers;
  • 3 – beispielhafte Darstellung des logischen und physischen Seiten- und Seitenteilbaums für vier Revisionen;
  • 4 – Darstellung des Zustandsdiagramms eines Verfahrens zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpfter Datenfamilien;
  • 5 – Flussdiagramm des Verfahrens zur Serialisierung einer im Speicher abgelegten Datenseite auf einen Festspeicher.
  • 6 – beispielhafte Darstellung einer Art zur Abspeicherung von Knoten.
  • 1 lässt die Speicheraufteilung unter Verwendung von zwei logischen Datenspeichern LD1 und LD2 erkennen. Jeder Datenspeicher LDd mit d = 0, 1, ... n besteht aus einem Feld von Sektoren Sd,s mit der maximalen Anzahl von max(s) von Sektoren. Jeder Sektor kann beispielsweise 512 Byte breit sein. Die Datenspeicher LDd unterstützen einen zufälligen Schreib- und Lesezugriff auf jeden Sektor Sd,i, wobei die Datenspeicher für Zufallslesen (random-read) und sequentiellen Schreibaktivitäten optimiert sein sollte. Der benötigte Speicherplatz auf den Datenspeichern LDd wächst ständig zu jeder Zeit durch Hinzufügen weiterer Sektoren, wobei die Anzahl von Schreibzugriffen auf jeden Sektor Sd,i begrenzt sein kann.
  • Es ist erkennbar, dass alle Daten und Metadaten auf dem primären logischen Datenspeicher LD1 abgelegt werden. In dem in der 1 dargestellten Ausführungsbeispiel werden die Metadaten zudem auf dem zweiten logischen Datenspeicher LD2 abgelegt, um die Speicherung und das Auslesen von Revisionen sowie die Suche von Revisionen zu beschleunigen. Durch die redundante Abspeicherung in dem zweiten Datenspeicher LD2 kann der Dateninhalt des zweiten Datenspeichers LD2 jederzeit aus dem ersten Datenspeicher LD1 rekonstruiert und auf Konsistenz geprüft werden. Inkrementale Backups des Dateninhalts auf dem ersten und/oder zweiten Datenspeicher LD1 und/oder LD2 können synchron oder asynchron auf einem oder mehreren anderen weiteren Datenspeichern LDd zur Datensicherung abgelegt werden. Als Metadaten sind zunächst sogenannte Kopfdaten Hh (header) vorgesehen, die für das Salting eine Zusatzkennung SLTh (salt) von beispielsweise 32 Byte, eine Konfiguration CONFh von beispielsweise 448 Byte und ein Token HTh von 32 Byte enthalten, der zur Authentifizierung der Konfiguration CONFh genutzt wird. Der Token HTh entspricht dem Authentifizierungsalgorithmus HMAC-SHA-256k (CONFh). Der Algorithmus ist aus dem Secure-Hash-Standard: Federal Information Processing Standards Publication 180-2, National Institute of Standards and Technology, August 2002, aus dem Advanced Encryption Standard (AES): Federal Information Processing Standards Publication 197, National Institute of Standards and Technology, November 2001 und aus „The Keyed Hash-Message Authentication code (HMAC): Federal Information Processing Standards Publication 198, National Institute of Standards and Technology, March 2002, hinreichend bekannt.
  • Die Zusatzkennungen SLTh, d. h. die ersten 32 Byte des Headers Hh werden nicht verschlüsselt. Hh wird zweifach auf dem ersten Datenspeicher LD1 als H0 und H1 und zweifach auf dem zweiten Datenspeicher LD2 als H2 und H3 abgelegt.
  • Als Metadaten werden weiterhin Revisions-Referenzen RRr abgespeichert, die eine Seitenteilreferenz PPRr,0 (z. B. 32 Byte) und das Token RRTr (z. B. 32 Byte) enthält, das zur Authentifizierung der Seitenteilreferenz PPRr,0 verwendet wird. Das Token RRTr entspricht dem Authentifizierungsalgorithmus HMAC-SHA-256k (PPRr,0). Weiter enthalten die Revisions-Referenzen (RRr) Angaben über den Autor sowie den Zeitpunkt der Erstellung der Revision Rr.
  • Um ausgehend von der aktuellsten Revision Rmax(r) die vorhergehende Revisionsreferenz RRmax(r)-1 auf dem zweiten Datenspeicher LD2 aufzufinden, wird eine binäre Suche auf den Sektoren S2,2, ... S2,max(s)-1 durchgeführt. Jedes Mal wird der Median des Sektors S2,s ausgewählt, da angenommen wird, dass dieser einige Seitenteilreferenzen PPRr,p bei einem Byte-offset von Null enthält. Falls das Token RRTr gleich HMAC-SHA-256k (PPRr,0) ist, wird die Suche in die Richtung nach rechts fortgeführt und andernfalls in die Richtung nach links. Falls dort einige Revisionsreferenzen RRmax(r)-1 auf die Revision Rmax(r)-1 vorhanden sind, wird die binäre Suche diese schließlich selektieren.
  • Falls der zweite Datenspeicher LD2 nicht verfügbar ist, wird wiederum eine binäre Suche mit dem ersten Datenspeicher LD1 wie vorstehend beschrieben ausgeführt. Falls der Median keine Revisionsreferenz RRr,p auf eine Revision bei einem Byte-Offset von Null in einem Sektor Ss,1 zurückgibt, wird die Suche in Richtung nach rechts und links wie folgt fortgeführt. Die Revisionsreferenz RRr,b wird in den Sektoren S1,m+kj-1, ..., S1,m+kj ausgehend von ko = 1 gestartet. Falls sie nicht gefunden wird, erfolgt eine Anpassung von kj = –2·kj-1, bis kj eine konfigurierbare Grenze erreicht. Anschließend wird wie oben beschrieben verfahren.
  • Aus logischer Sicht besteht eine im ersten Datenspeicher LD1 abgelegte Revision Rr aus einem Baum von Datenseiten. Die Datenseiten sind beginnend mit der Wurzel-Datenseite Pr,0 aufgezählt. Anfänglich beinhaltet die Revision Rr alle Datenseiten von der vorhergehenden Revision Rr-1. Nachfolgende Änderungen werden nur auf Kopien der Datenseiten vorgenommen und nicht bei den Originalen. Die Kopien sind nur für die Revision Rr sichtbar und in rückwärtiger Ordnung als Datenseitenteile PPr,0 abgespeichert. Falls die gesamte Datenseite gespeichert wird, ist die Kopie des Seitenteils als Seiten-Snapshot PSr,p bezeichnet. Falls nur eine Änderung zur letzten Revision gespeichert wird, ist dies als Seitenänderung PDr,p, d. h. als nicht binäre Differenz oder Delta bezeichnet.
  • Aus 1 ist erkennbar, dass für jede Revision Rr eine Datenseitenreferenz RRr vorgesehen ist, die die Datenseite Pr,0 gleich PPr,0 referenziert, die ein Seiten-Snapshot sein muss. Alle anderen Datenseiten werden durch eine Seitenreferenz PR_(r, p) referenziert, die entweder eine einzelne Seiten-Snapshot PSr,p oder eine Sequenz von Seitenänderungen PDr,p referenziert, wobei die Seitenänderungen auf einen anfänglichen Datenseiten-Snapshot PSr,p angewandt werden, um eine Datenseite PPr,p abzuleiten. Der Seitenteilzähler PPCr,p bezeichnet die Anzahl der Seitenänderungen, die auf die anfängliche Seiten-Snapshots anzuwenden sind. Jede Seite wird dabei an eine Revision r und eine Seitennummer p gebunden, die die Seite eindeutig von allen anderen Seiten unterscheidet. Ein Seitenteil erhält somit über alle Revisionen dieselbe Seitennummer. Jede Seitenteilreferenz in einer Seitenreferenz PR_(r, p) ist mit der Revisionsnummer, während dieser dieses Seitenteil erstellt wurde, assoziiert. Eine Seitenreferenz mit dem Seitenzähler PPCr,p gleich Null kennzeichnet eine gelöschte Seitenreferenz.
  • Eine nicht persistent gemachte Seite Pr,p enthält zwei Felder, das Seitenreferenzfeld PRAr,p sowie das Knotenfeld NDAr,p. Beide Felder sind das Ergebnis aller Änderungen aus allen Seitenteilen, die auf die Seite Pr,p bezogen sind. Die Größe der beiden Felder ist fest oder für jede Seite entsprechend ihrer entsprechenden Position in dem Seitenbaum definiert. Die maximale Größe der beiden Felder ist auf beispielsweise 256 limitiert. Jeder Eintrag in eines der Felder ist durch seine absolute Position n markiert. Ist n negativ, so bedeutet das, dass der Eintrag in einer früheren Revision geändert wurde. Der Eintrag θ ist nicht verwendet. Das erste Feld, d. h., das Seitenreferenzfeld PRAr,p speichert die n-te Seitenreferenzen PRrp', ..., PRrp*, die auf die Kinder-Datenseiten Pr,p' ..., Pr,p* zeigen. Das zweite Feld, d. h. das Knotenfeld NDAr,p speichert Knoten NDp,n
  • Ein Knoten NDp,n besteht aus einer z. B. ein Byte großen Position im Knotenfeld NDAr,p einem Knotentyp von z. B. einem Byte und einer Nutzlast variabler Größe. Der Knotentyp kleiner 0 kennzeichnet einen gelöschten Knoten und enthält keine Nutzlast. Daher sind beispielsweise 127 verschiedene Knotenkinder verfügbar.
  • Ein Seitenteil PPr,p ist entweder ein Seiten-Snapshot PSr,p oder eine Seitenänderung PDr,p. Ein Seiten-Snapshot PSr,p speichert das Ergebnis aller vergangenen Änderungen sowie der Änderungen während der Revision Rr. Die Knotenänderung PDr,p enthält lediglich die während der Revision Rr vorgenommenen Änderungen.
  • Das persistent gemachte Seitenteil PPr,p enthält zwei Listen variabler Größe, die die an der Datenseite Pr,p während der Revision Rr vorgenommenen Änderungen reflektieren. Jede Liste enthält eingangs die Listengröße von einem Byte. Die maximale Größe beider Listen ist beispielsweise auf 256 begrenzt. Die erste Liste, die sogenannte Seitenreferenzliste PRLr,p speichert Änderungen an jeglicher Seitenreferenz PRr,p' ..., PRr,p*, die auf die Kinderseiten Pr,p' ..., Pr,p* zeigen, wobei p < p' < ... < p* ist. Die zweite Liste, die sogenannte Knotenliste NDLr,p speichert Änderungen an jeden Knoten NDr,p,n. Falls das Seitenteil PPr,p ein Seiten-Snapshot PSr,p ist, speichert die Knotenliste NDLr,p auch den aktuellen Zustand vom Knoten, falls dieser nicht während der Revision Rr modifiziert wurde.
  • Erkennbar ist aus 1, dass die Referenzen RRr auf die Revisionen gefolgt von den Headern H2 und H3 hintereinander mit der ersten Referenz RR0 auf die erste Revision R0 abgespeichert werden.
  • In dem ersten Datenspeicher LD1 werden die Revisionen R0, R1, ..., Rmax(r) ebenfalls hintereinander unter Ausnutzung eines oder mehrerer Sektoren Sd,s abgelegt. Dabei werden die Daten einer Referenz RRr in den genutzten Sektoren jedoch rückwärts abgelegt, wobei an dem Ende des letzten Sektors zunächst die Referenz RRr auf die jeweilige Revision Rr abgelegt wird. Die Seitenteile PPr,p der Revision Rr werden beginnend vom Anfang des ersten Sektors Sd,s der Revision Rr mit der letzten Kinder-Datenseite, d. h. dem Datenseitenteil PPr,x bis zum Wurzel-Datenteil PPr,0 abgelegt, so dass die Sequenz der Datenteile PPr,p mit dem Wurzel-Datenteil PPr,0 endet.
  • 2 lässt eine andere Ausführungsform für die Speicherung einer Mehrzahl von Revisionen Rr von baumstrukturartig verknüpften Datenfamilien unter Verwendung eines einzigen logischen Speichermediums LD0 erkennen. Die auf die Seitenteile verweisenden Kopien der Revisionsreferenzen RRr auf die Revisionen Rr sowie die Kopien H2 und H3 der Header H0 und H1 werden in Sektoren S0,max(s)-i getrennt von den Sektoren S0,i für die Revisionen Rr abgelegt.
  • Während der Datenspeicherbereich für die Header H0, H1 und die Revisionen Rr sequentiell beginnend von einem ersten Sektor S0,0 hintereinander in Vorwärts-Reihenfolge abgelegt werden, erfolgt die redundante Speicherung der Metadaten in Rückwärts-Richtung beginnend mit den Headern H2 und H3 am Ende der Sektoren für den zweiten Speicherbereich, d. h. am Ende des Sektors S0,max(s)-1 wie in 2 skizziert ist.
  • 3 lässt die Struktur der logischen und physischen Abspeicherung von Seitenbäumen und Seitenteilbäumen für vier aufeinanderfolgende Revisionen R0, R1, R2 und R3 erkennen.
  • Die erste Revision R0 basiert auf der Ursprungs-Datenseite P0,0, die mit der Revisionsreferenz RR0 referenziert wird. Die Ursprungs-Datenseite P0,0 zeigt ihrerseits auf die Datenseite P0,1.
  • Als Änderungen der revidierten Datenseite P0,1 wurden die Änderungen 0A und 1B vorgenommen. Diese werden in dem Seitenteil PP0,p gekennzeichnet, so dass aus diesem Seitenteil PP0,p die Änderungen in der Revision sofort ersichtlich ist.
  • Der physische Seitenteil-Baum besteht aus der Revisionsreferenz RR0, die auf die Kopie der Seite P0,0, d. h. den Seiten-Snapshot PS0,0 verweist, der seinerseits wieder auf dieser den Seiten-Snapshot PS0,1 mit den Änderungen verweist.
  • In der folgenden Revision R1 wurde eine weitere Datenseite hinzugefügt, so dass die Datenseite P1,0 nunmehr in die Datenseiten P1,1 und P1,2 verzweigt. Der logische Seitenbaum ist beginnend von der Revisionsreferenz RR1, die auf die Wurzel-Datenseite P1,0 der Revision R1 verweist, nunmehr baumartig so strukturiert, dass die Datenseite P1,0 zwei Kinder-Datenseiten P1,1 und P1,2 enthält.
  • Als Änderungen wurden in der Kinder-Datenseite P1,1 die Änderung „2C” und „0” und in der zweiten Kinder-Datenseite P1,2 „0D” und „1E” vorgenommen. Diese Änderungen sind in dem Seitenteil PP1,p entsprechend vermerkt, wobei die Revision auch noch die Änderungen des vorhergehenden Seitenteils PP0,p der ersten Revision R0 enthält.
  • Aus der Darstellung des physischen Seitenteil-Baums in 3 ist erkennbar, dass die revidierte Kinder-Datenseite PD1,1 mit der Kinder-Datenseite PS0,1 verwandt ist. Diese Kinder-Datenseite der Revision R1 enthält allerdings keine vollständigen Dateninhalte, sondern nur die geänderten Daten, so dass der vollständige Inhalt der Kinder-Datenseite aus der Kinder-Datenseite PS0,1 der vorhergehenden Revision R0 und den Änderungsinformationen abgeleitet werden kann.
  • In der folgenden Revision R2 ist der Datenbaum unverändert geblieben. Es wurden daher keine Datenseiten gelöscht oder hinzugefügt. Als Änderungen wurden „1B'” und „0D'” in den Kinder-Datenseiten P2,1 und P2,2 vorgenommen. Diese Änderungen sind zusammen mit der Änderungshistorie in den Seitenteilen PP0, PP1,p und PP2,p verzeichnet.
  • Aus dem physischen Seitenteil-Baum ist erkennbar, dass die erste Kinder-Datenseite wiederum nur die Änderungen zur vorhergehenden Kinder-Datenseite PD1,1 als Änderungsinformation PD2,1 enthält. Auch die zweite geänderte Kinder-Datenseite PD2,2 enthält nur die Änderungsinformation in Form der Deltas zur vorhergehenden Datenseite PS1,2 der vorhergehenden Referenz R1.
  • Bei der nächsten Revision R3 wurde die erste Kinder-Datenseite P3,1 zum vorhergehenden Revision P2,1 nicht geändert. Allerdings wurde aus den Änderungsinformationen PD1,1 und PD2,1 auf der Basis des letzten verfügbaren Snapshots PS0,1 ein Snapshot PS3,1 abgeleitet, der nunmehr den vollständigen Dateninhalt der Kinder-Datenseite P3,1 enthält.
  • In der zweiten Kinder-Datenseite P3,2 wurde im Vergleich zur vorherigen Revision eine Änderung „0D” vorgenommen. Diese Kinder-Datenseite P3,2 wurde physisch nur als Änderungs-Datenseite PD3,2 abgespeichert.
  • Weiterhin wurde eine dritte Kinder-Datenseite P3,3 mit den Änderungen „0F” und „1G” hinzugefügt.
  • 4 lässt ein Zustandsdiagramm bei der Durchführung des Verfahrens zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen erkennen.
  • In dem sogenannten „Wipe”-Zustand werden beispielsweise alle Sektoren einmal mit Zufallsdaten überschrieben, die nicht kodiert sind.
  • In dem Initialisierungs-Zustand „init” werden die Datenspeicher LD1, LD2 und ein Masterschlüssel MK durch den Nutzer ausgewählt. Weiterhin wird eine Zusatzkennung SLTh unter Verwendung des Salting-Prozesses gewählt und ein Schlüssel K aus dem Masterschlüssel MK und der Zusatzkennung SLTh abgeleitet. Ein Token HTh wird auf den durch den HMAC-SHA-256k (CONFh)-Algorithmus vorgegebenen Wert gesetzt. Die n-te Kopie des Headers Hh wird auf einen durch die Bedingung SLTh verknüpft mit CTR-AES-256k (CONFh) verknüpft mit HTh vorgegebenen Wert gesetzt.
  • Die Header H0, H1, H2 und H3 werden dann synchron geschrieben und verifiziert.
  • Im Falle eines Verifikationsfehlers wird ein Neustart des Initialisierungs-Zustands veranlasst.
  • Der sogenannte Start-Zustand „Start” erfolgt nach der Initialisierung. Hierbei werden der Datenspeicher LD1, der Datenspeicher LD2 und der Masterschlüssel MK durch den Nutzer bereitgestellt. Dann werden die Header H0, H1, H2 und H3 ausgelesen und die Zusatzkennung SLTh durch Vergleich mit den in den Headern H0, H1, H2 und H3 abgelegten Zusatzkennungen verifiziert. Ein Knotenschlüssel wird aus dem Masterschlüssel MK und der Zusatzkennung SLTh abgeleitet und die Header H0, H1, terschlüssel MK und der Zusatzkennung SLTh abgeleitet und die Header H0, H1, H2 und H3 zur Überprüfung des Tokens HTh mit dem Algorithmus HMAC-SHA-256k(CONFh) verifiziert.
  • Weiterhin wird die Revisionsreferenz RRmax(r)-1 auf den zweiten Datenspeicher LD2 gesucht und durch Vergleich mit der auf dem ersten Datenspeicher LD1 abgelegten Revisionsreferenz RRmax(r)-1 verifiziert. Ein Fehler bei der Verifikation verursacht einen Übergang in den Wiederherstellungs-Zustand „recover”.
  • Im Wiederherstellungs-Zustand „recover” wird der Header H wiederhergestellt. Dies kann anhand der verfügbaren Kopien des Headers erfolgen. Weiterhin wird der Inhalt auf dem ersten und/oder zweiten Datenspeicher LD1 und LD2 unter Verwendung der verfügbaren redundanten Daten wiederhergestellt. Nach der Wiederherstellung der Information erfolgt ein Sprung in den Stop-Zustand „stop”.
  • Der Ausführungs-Zustand „run” wird jedes Mal durchgeführt, wenn eine Revision übergeben wird. Hierbei werden folgende Punkte abgearbeitet.
  • Im ersten Punkt wird die letzte Revision Rmax(r) synchron auf dem ersten Datenspeicher LD1 geschrieben. Im folgenden Schritt wird die Revisionsreferenz RRmax(r) auf die letzte Revision Rmax(r) auf den ersten Datenspeicher LD1 verifiziert. Sodann wird die Revisionsreferenz RRmax(r) synchron auf den zweiten Datenspeicher LD2 geschrieben und dort verifiziert. Anschließend wird im fünften Schritt die Nummer der verfügbaren Revision Rmax(r), d. h. die fortlaufende Nummer der aktuellen Revision inkrementiert auf max(r) + 1.
  • Ein Fehler bei der Überprüfung führt zu einer zweiten Serialisierung beginnend mit Schritt 1 des Ausführungs-Zustands „run”.
  • Wiederum erfolgt am Ende ein Sprung in den Stop-Zustand, bei der neue Änderungen nicht länger zugelassen werden. Bislang nicht abgespeicherte Änderungen werden wie in dem Ausführungs-Zustand beschrieben abgespeichert.
  • Falls in dem Ausführungs-Zustand der fünfte Punkt der Inkrementierung der Nummer für die aktuelle Revision nicht innerhalb einer einstellbaren Zeit erreicht wurde, erfolgt sofort ein Stop.
  • 5 lässt das Verfahren der Serialisierung einer im Speicher abgelegten Datenseite auf ein Gerät, wie z. B. eine Hard Disk, als Flussdiagramm erkennen.
  • Eine im Speicher abgelegte Datenseite wird serialisiert. Die serialisierten Datenseitenteile werden komprimiert und die komprimierten Datenseiteteile werden authentifiziert, verschlüsselt und anschließend auf das Gerät, wie beispielsweise eine Hard Disk oder einen anderen Datenträger, geschrieben.
  • Das Auslesen von Datenseitenteilen aus dem Gerät erfolgt, indem die Dateninhalte zunächst gelesen und die verschlüsselten Datenseitenteile entschlüsselt und authentifiziert werden. Die komprimierten Datenseitenteile werden anschließend dekomprimiert und liegen als serialisierte Datenseitenteile nunmehr unverschlüsselt vor. Nach einer Deserialisierung kann die Datenseite dann in einem Speicher, insbesondere einem flüchtigen Datenspeicher RAM, abgelegt werden.
  • 6 lässt eine Skizze für eine beispielhafte Art zur Abspeicherung von Knoten erkennen.
  • In der ersten Spalte ist der Zustand der Datenseiten P3,0 zur Zeit der Revision R3 dargestellt. Die Seite P3,0 entspricht der Seitenkopie PS3,0. Der Knoten bei der Position 1 wurde vor der Revision R3 gesetzt. Der Knoten ist vom Typ 22 und hat den Wert <example>. Der Knoten bei der Position 2 wurde vor der Revision R3 gesetzt. Der Knoten ist vom Typ 33 und hat den Wert „text”. Der Knoten an der Position 6 wurde während der Revision R3 gelöscht. Der gelöschte Knoten war vom Typ 33.
  • In der zweiten Spalte ist der Zustand der Datenseite P4,0 zur Zeit der Revision R4 dargestellt. Die Änderungen sind in der Differenz-Datenseite PD4,0 abgelegt. Der Knoten bei der Position 1 wurde vor der Revision R4 gesetzt. Der Knoten ist vom Typ 22 und hat den Wert <example>. Der Knoten bei der Position 2 wurde während der Revision R4 gesetzt. Der Knoten ist nun vom Typ 33 und hat den Wert „new text”.

Claims (9)

  1. Verfahren zur Speicherung einer Mehrzahl von Revisionen (Rr) von baumstrukturartig verknüpften Datenfamilienteilen, die jeweils eine Anzahl von miteinander baumartig verknüpfter Datenseiten (Pr) mit einer zentralen Eltern-Datenseite (PPr,0) und von dieser ausgehenden Kinder-Datenseiten (PPr,x) haben, wobei für jede Revision (Rr) ein Haupt-Referenzzeiger (RRr) auf die Eltern-Datenseite (PPr,0) der jeweiligen Datenseite (Pr) in einer separat abgespeicherten Liste bereitgestellt wird und die Datenseiten (Pr) mindestens einen Seiten-Referenzzeiger (RRr,p) auf logisch unmittelbar nachfolgend verknüpfte Kinder-Datenseiten (PPr,x) haben, gekennzeichnet durch Abspeichern von Knotenänderungsinformationen für jede Revision über Änderungen von eine Referenz auf logisch unmittelbar nachfolgend verknüpfte Kinder-Datenseiten (PPr,x) definierende Knoten der Struktur baumartig verknüpfter Datenfamilienteile.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Knotenänderungsinformationen das Hinzufügen neuer Knoten, das Löschen von Knoten und/oder die Änderung von Knoten kennzeichnen.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass Kinder-Datenseiten (PPr, x) die Änderung der entsprechenden Kinder-Datenseite (PPr, x) einer unmittelbar vorhergehenden Revision in Form von Differenzdaten (PDr, x) enthalten.
  4. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass Datenseiten (Pr) den vollständigen, optional in der jeweiligen Revision modifizierten Dateninhalt enthalten.
  5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Hauptreferenzzeiger (RRr) oder Kopien davon auf einem weiteren Datenspeichermedium (LD2) separat von den referenzierten Datenseiten (Pr) abgelegt sind.
  6. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Hauptreferenzzeiger (RRr) oder Kopien davon in Sektoren (S0,s) eines Datenspeichermediums (LD0) getrennt von den Sektoren (S0,s) desselben Datenspeichermediums (LD0) abgelegt sind, in denen die referenzierten Datensätze (Pr) gespeichert sind.
  7. Verfahren nach einem der vorhergehenden Ansprüche, gekennzeichnet durch Absichern der Speicherung der Revisionen (Rr) von Datenfamilien durch Verschlüsselung, indem ein geheimer Masterschlüssel (MK) definiert und unabhängig von dem Masterschlüssel (MK) eine Zusatzkennung (SLT) generiert (Salting) wird und aus dem Masterschlüssel (MK) und der Zusatzerkennung (SLT) ein Schlüssel (K) abgeleitet wird (Stretching), sowie für jede Datenseite (PPr, x) ein jeweils einzigartiger Ad-Hoc-Schlüssel (N) und ein Zähler (CTR) aus Ergebnissen der Ver-/Entschlüsselungsalgorithmen übergeordneter Knoten zur Verschlüsselung, Entschlüsselung und Authentifizierung mindestens der zugeordneten Hauptreferenzzeiger, der Datenseiten und mindestens eines Kopfteils für die Gesamtheit der Revisionen (Rr) der gespeicherten Datenfamilien abgeleitet wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche, gekennzeichnet durch Auslesen von gespeicherten Revisionen (Rr) von Datenseiten (Pr), gekennzeichnet durch – Verifizieren der Übereinstimmung gespeicherter Kopien eines Kopfteils (Hh) für die Gesamtheit der Revision (Rr) gespeicherter Datenfamilien, – Verifizieren der Übereinstimmung einer in einem separaten Datenspeichermedium (LD2) oder auf einem separaten Sektor (S0,s) eines Datenspeichermediums (LD0) abgelegten Kopie eines Hauptreferenzzeigers (RRr) für die aktuelle Revision (Rmax(r)) mit einem Hauptreferenzzeiger (RRr) der aktuellen Revision (Rmax(r)), die auf einem Sektor (S0,s) des Datenspeichermediums (LD2) zusammen mit den zugehörigen Datenseiten (Pr) der Revision (Rr) abgelegt sind, – Zugreifen auf Datenseiten (PPr,x) gewünschter Revisionen (Rr) über im Hauptreferenzzeiger (RRr) für die entsprechende Revision (Rr) und den Seitenreferenzzeigern (PRr,p) enthaltenen Zeigern und – Auswerten von Knotenänderungsinformationen für jede Revision (Rr) über Änderungen von eine Referenz auf logisch unmittelbar nachfolgend verknüpfte Kinder-Datenseiten (PPr,x) definierende Knoten der Struktur baumartig verknüpfter Datenfamilienteile.
  9. Verfahren nach Anspruch 8, gekennzeichnet durch Zugreifen auf gewünschte Revisionen (Rr) mittels eines binären Suchalgorithmus über die Liste der Hauptreferenzzeiger (RRr), wobei eine Suche an Hand der Revisionsnummer und/oder eines im Hauptreferenzzeiger (RRr) gespeicherten Zeitstempels erfolgt.
DE102008024809A 2008-05-23 2008-05-23 Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen Expired - Fee Related DE102008024809B3 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102008024809A DE102008024809B3 (de) 2008-05-23 2008-05-23 Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen
PCT/EP2009/003680 WO2009141162A1 (de) 2008-05-23 2009-05-25 Verfahren zur speicherung einer mehrzahl von revisionen von baumstrukturartig verknüpften datenfamilien
PCT/EP2009/003679 WO2009141161A1 (de) 2008-05-23 2009-05-25 Verfahren zum vorhalten einer mehrzahl von versionen von speicherseiten in einem speichersystem sowie zum zugreifen auf diese

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102008024809A DE102008024809B3 (de) 2008-05-23 2008-05-23 Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen

Publications (1)

Publication Number Publication Date
DE102008024809B3 true DE102008024809B3 (de) 2009-11-19

Family

ID=40996734

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008024809A Expired - Fee Related DE102008024809B3 (de) 2008-05-23 2008-05-23 Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen

Country Status (2)

Country Link
DE (1) DE102008024809B3 (de)
WO (2) WO2009141162A1 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938075B1 (en) * 1998-12-24 2005-08-30 Computer Associates Think, Inc. Method and apparatus for hierarchical software distribution packages including composite packages
US7111233B1 (en) * 2000-03-09 2006-09-19 Electronic Data Systems Corporation Method and system for applying XML schema

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0541281B1 (de) * 1991-11-04 1998-04-29 Commvault Systems, Inc. Inkrementale Rechnerdateisicherung unter Verwendung von Kennzeichnungen
US6061697A (en) * 1996-09-11 2000-05-09 Fujitsu Limited SGML type document managing apparatus and managing method
US6460052B1 (en) * 1999-08-20 2002-10-01 Oracle Corporation Method and system for performing fine grain versioning
WO2002048919A1 (en) * 2000-12-12 2002-06-20 Fresher Information Corporation Non-log based information storage and retrieval system with intrinsic versioning
US7389308B2 (en) * 2003-05-30 2008-06-17 Microsoft Corporation Shadow paging
JP4227931B2 (ja) * 2004-04-15 2009-02-18 株式会社日立製作所 情報記憶装置、情報格納方法及び情報記憶処理プログラム
US9760652B2 (en) * 2004-06-21 2017-09-12 International Business Machines Corporation Hierarchical storage architecture using node ID ranges
US20060218160A1 (en) * 2005-03-24 2006-09-28 Computer Associates Think, Inc. Change control management of XML documents
US7636739B2 (en) * 2005-06-30 2009-12-22 Microsoft Corporation Method for efficient maintenance of XML indexes
US7529726B2 (en) * 2005-08-22 2009-05-05 International Business Machines Corporation XML sub-document versioning method in XML databases using record storages
US8543614B2 (en) * 2005-08-22 2013-09-24 International Business Machines Corporation Packing nodes into records to store XML XQuery data model and other hierarchically structured data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938075B1 (en) * 1998-12-24 2005-08-30 Computer Associates Think, Inc. Method and apparatus for hierarchical software distribution packages including composite packages
US7111233B1 (en) * 2000-03-09 2006-09-19 Electronic Data Systems Corporation Method and system for applying XML schema

Also Published As

Publication number Publication date
WO2009141162A1 (de) 2009-11-26
WO2009141161A1 (de) 2009-11-26

Similar Documents

Publication Publication Date Title
DE112007003678B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE102005023128B4 (de) System und Verfahren zum gemeinschaftlichen Verwenden von Speicherressourcen zwischen mehreren Dateien
DE69913618T2 (de) Verfahren zur Erzeugung eines Prüfpunktes, welcher eine Basisdatei beschreibt, und Verfahren zur Erzeugung einer Differenzdatei zwischen einer aktualisierten Datei und einer Basisdatei
DE112007003693B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE60033376T2 (de) Verteilte datenarchivierungsvorrichtung und system
US8443000B2 (en) Storage of data with composite hashes in backup systems
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE60112257T2 (de) Virtuelles Dateisystem für dynamisch erzeugte Webseiten
DE112010003262B4 (de) Synchronisierung replizierter sequenzieller Zugriffsspeicherkomponenten
WO2015090668A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE202009019149U1 (de) Asynchron verteilte Speicherbereinigung für replizierte Speichercluster
DE3390323T1 (de) Ermittlung eines sequentiellen Datenstroms
EP1883906B1 (de) Tragbarer datenträger mit sicherer datenverarbeitung
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE102012213788A1 (de) Ende-zu-Ende-Datenschutz bei gleichzeitiger Unterstützung mehrerer CRC-Algorithmen
DE102021108455B4 (de) Erzeugen von Snapshots eines Schlüssel-Wert-Index
DE102020111199B4 (de) Sicherungen von dateisystem-instanzen verschlüsselter datenobjekte
DE102016226338A1 (de) Bitsequenzbasiertes Datenklassifikationssystem
DE112012005635T5 (de) Inkrementelles Modifizieren eines Fehlererkennungscodes
DE102008024809B3 (de) Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen
DE102022112400A1 (de) Vertrauenswürdige systeme zur dezentralisierten datenspeicherung
DE10205316B4 (de) Schlüsselmanagementeinrichtung und Verfahren zur verschlüsselten Ablage von digitalen Datenwörtern
DE102021125858A1 (de) Verfolgen eines protokollverlaufs einer änderungsdatenerfassung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20121201