WO2009141162A1 - Method for storing a plurality of revisions of data families linked tree structure-like - Google Patents
Method for storing a plurality of revisions of data families linked tree structure-like Download PDFInfo
- Publication number
- WO2009141162A1 WO2009141162A1 PCT/EP2009/003680 EP2009003680W WO2009141162A1 WO 2009141162 A1 WO2009141162 A1 WO 2009141162A1 EP 2009003680 W EP2009003680 W EP 2009003680W WO 2009141162 A1 WO2009141162 A1 WO 2009141162A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- revision
- page
- stored
- data page
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information 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/83—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information 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/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
Definitions
- the invention relates to a method for storing a plurality of revisions of tree-structured data families, each of which has a number of tree-like linked data pages with a central parent data page and child data pages emanating therefrom, wherein for each revision a main reference pointer to the Parent data page of the respective data page is provided in a separately stored list and the data page have at least one page reference pointer to logically immediately following linked child data pages.
- XML is a recording language for displaying hierarchically structured data in the form of text files.
- the XML format is used in particular for the exchange of data between different computer systems.
- An XML document consists of elements, attributes, their value assignments, and the content of the elements, which can be text or children. The subordinate
- Elements can in turn have attributes with value assignments and content.
- An XML document can contain elements with and without attributes. Furthermore, there may be elements which in turn contain many other elements. Furthermore, elements can only have text or even no content.
- the elements, attributes, and value assignments form a tree structure that resembles a directory and file structure of conventional computer systems.
- An XML file is processed by a so-called XML Paser, following the hierarchy that results from the tree structure of the data.
- Each element, each attribute, each value assignment to an attribute and each character content of an element is a separate part of the tree, which is individually addressable. These components are also called nodes.
- Each XML document begins with a root node that forms the origin of the data.
- the root node points to an outmost element, that is, the topmost node, that encompasses the entire rest of the XML file.
- One or more child nodes are connected to such a node, from the perspective of which the parent node forms a parent node.
- native XML databases that represent encoding for the internal representation of XML data as an unordered, ordered tree, with the constraint that the order of the children of each node is stable.
- the encoded tree is stored in a memory system.
- the native XML databases make the stored tree accessible via an interface.
- Encoding with a fixed-size key assigns each node a unique, nonvolatile, fixed-size key.
- a comparison of two keys does not reflect necessary se the global order of the two related nodes.
- Each node stores keys of its immediate neighbor nodes. Updates are not scaled if a node contains a large number of children.
- Encoding with a variable-size key assigns each node a unique, nonvolatile variable-sized key.
- a comparison of two keys always reflects the global order of the two related nodes. Depending on an insertion position, the size of the key may increase indefinitely. Updates are not scaled for persistent inserts in the adjacent neighborhood of a single node.
- the position coding assigns each node a unique, volatile key of fixed size.
- a comparison of two keys always reflects the global order of the two related nodes.
- the key of a node corresponds to the current position of the node, while updates change the position of all nodes following the inserted or deleted node. Updates are not scaled if additional indexes, such as a full-text index, are involved.
- the fourth type of coding is an index-based method in which one or more indexes exist for each node to speed up typical queries. To do this, the original XML document must be kept available for correct reconstruction. Updates are not scaled, so the original XML document and all nodes must be updated after inserting or deleting nodes.
- the first class of storage system overwrites existing data when executing current updates. For this purpose, a tree copy or a field is usually partially or completely held in memory and written back to the storage medium during the update. Old data is partially or completely overwritten or deleted.
- the second storage class makes updates to copies while writing without overwriting old data.
- an index and the revision of the data is kept.
- a new index and new data are just appended to the old information.
- the index points on data correspond to a revision and can be used either on a full data content or on a sequence of incremental changes, that is, the difference between the data contents of two consecutive revisions that can be used to reconstruct the full data content.
- API application programming interface
- embedded interaction embedded interaction
- user-interface API for stand-alone interaction
- user-interface API for web-based interaction
- Text and / or graphical user interface for human-machine interaction
- a problem is the efficient storage and search of tree-linked data family revisions, particularly in view of the size and structure of the linked families of data being unpredictably different from revision to revision.
- the object is achieved with the method of the aforementioned type according to the invention by storing node change information for each revision via changes of a reference to logically immediately following linked child data pages defining nodes of tree-like linked data family parts.
- the node change information may indicate adding new nodes, deleting nodes, and / or changing nodes.
- the child data pages may contain the change of the corresponding child data page on an immediately preceding revision in the form of difference data. This has the advantage that it is not necessary to store the complete content of the data page, but only the non-binary change information, which leads to a reduced storage requirement and requires no complex calculations.
- the data pages can also contain the complete data content, which was optionally modified in the respective revision.
- the main reference pointers or copies of the main reference pointers are stored on a further data storage medium separately from the referenced data pages. This not only has the advantage of increased data security through redundancy, but also allows for faster data access, since the search in the main reference pointers on the separate data storage medium can be done in parallel with the reading or writing of data pages.
- the main reference pointers or copies thereof are stored in sectors of a data storage medium separate from the sectors of the same data storage medium in which the referenced data records are stored. The division into sectors ensures that the tree-like structures of the data can be consecutively stored, as well as the main reference pointers, without the storage locations being scrambled.
- encryption should not significantly limit performance. It is therefore proposed to set up a cryptographic method based on a coded hash message authentication code, in which a cryptographic hash function is used in combination with a secret key.
- a symmetric encryption is used.
- a secret master key is defined and an additional identifier is generated independently of the master key. This generation of the additional identifier, which is also called salt, is also referred to as salting.
- a key is derived from the master key and the additional identifier. This is also called stretching.
- a unique ad hoc key and a counter from results of encryption / decryption algorithms superordinate data page for encryption, decryption and authentication of at least the associated main reference pointers, data pages and at least one header for the entirety of the revision stored families of data derived.
- the encryption method may, for example, make use of the standardized Advanced Encryption standard, e.g. CTR-AES-256 and the hash authentication method, e.g. HMAC-SHA-256.
- the reading out of the stored revisions of data pages can preferably take place by the steps:
- the access to a desired revision can be made by means of the binary search algorithm via the list of main reference pointers, it being equally possible to search for the revision number and / or the time stamp stored in the main reference pointer.
- Figure 1 Memory scheme for storing a plurality of
- Figure 2 Memory scheme storing a plurality of
- Figure 3 - exemplary representation of the logical and physical page and page subtree for four revisions
- FIG. 5 shows a flow chart of the method for serializing a data page stored in O memory onto a read-only memory.
- Figure 6 exemplary representation of a way to store nodes.
- FIG. 1 shows the memory division using two logical data memories LDi and LD 2 .
- Each sector may be 512 bytes wide, for example.
- the data memories LD d support random read and write access to each sector S d , i, where
- the data storage should be optimized for random read and sequential write activities.
- the required storage space on the data storage LDd is constantly growing at any time by adding further sectors, wherein the number of write accesses to each sector S d , ⁇ may be limited.
- all data and metadata are stored on the primary logical data memory LDi.
- the metadata is also stored on the second logical data memory LD 2 5 in order to speed up the storage and read-out of revisions and the search for revisions. Due to the redundant storage in the second data memory LD 2 , the data content of the second data memory LD 2 can be reconstructed at any time from the first data memory LDi and checked for consistency.
- Incremental backups of the data content on the first and / or second data memory LDi and / or LD 2 can be stored synchronously or asynchronously on one or more other further data memories LDd for data backup.
- header data H h header
- SLT h salt
- a configuration CONFh for example, 448 bytes
- a token HT h of 32 bytes 5 contain the authentication the configuration CONF h is used.
- the token HT h corresponds to the authentication algorithm HMAC-SHA-256k (CONF h ).
- the algorithm is from the secure hash standard: Federal Information Processing Standards Publication 180-2, National Institute of Standards and Technology, August 2002, from the Advanced Encryption Standard (AES): Federal Information Processing Standards Publication 197, National Institute of Standards and Technology, November 2001, and The Keyed Hash-Message Authentication Code (HMAC): Federal Information Processing Standards Publication 198, National Institute of Standards and Technology, March 2002.
- AES Advanced Encryption Standard
- HMAC Keyed Hash-Message Authentication Code
- H h is stored twice on the first data memory LDi as Ho and Hi and twice on the second data memory LD 2 as H 2 and H3.
- revision references RR r are also stored, which contain an i ⁇ page sub-reference PPR r , o (eg 32 bytes) and the token RRT r (eg 32 bytes), which is used to authenticate the page sub-reference PPR r , o is used.
- RRT r corresponds to the authentication algorithm HMAC-SHA-256 "(PPR r , o). Further
- the revision references (RR r ) contain information about the author as well as the time of the creation of the revision R r .
- the search continues to the right and left as follows.
- a revision R r stored in the first data memory LDi consists of a tree of data pages.
- the data pages are listed starting with the root data page P r , o.
- the revision R r includes all data pages from the previous revision R r -i. Subsequent changes will only be made on copies of the data pages and not on the originals. The copies are visible only for the revision R r and stored in the back order as data side parts PPr.x ..., PP r , o. If the entire data page is stored, the copy of the page portion is referred to as a page snapshot PS r, p .
- a page change PD r Pl ie as a non-binary difference or delta.
- a data page reference RR r which references the data page P r , o equal to PP r , o, which must be a page snapshot.
- All other data pages are referenced by a page reference PR_ (r, p) which references either a single page snapshot PS r, p or a sequence of page changes PD r , p , the page changes to an initial data page snapshot PS r, p be applied to derive a data page PP r , p.
- the page count counter PPC r , P denotes the number of page changes to be applied to the initial page snapshots. Each page is bound to a revision r and a page number p, which uniquely distinguishes the page from all other pages. A page section thus receives the same page number for all revisions. Each page sub-reference in a page reference PR_ (r, p) is associated with the revision number during which this page sub-page was created. A page reference with the page counter PPC r , p equal to zero indicates a deleted page reference.
- a non-persistent page P r , p contains two fields, the page reference field PRAr.p and the node field NDA r , p . Both fields are the result of all changes from all page parts, which are related to the page P r, p .
- the size of the two fields is fixed or defined for each page according to their corresponding position in the page tree. The maximum size of the two fields is limited to 256, for example.
- Each entry in one of the fields is marked by its absolute position n. If n is negative, this means that the entry was changed in an earlier revision. The entry ⁇ is not used.
- the first field ie, the page reference field PRAr.p stores the nth page references PR rp ⁇ ..., PR ⁇ * pointing to the child data pages Pr, ..., Pr. P * .
- the second field ie the node field NDAr, p stores node ND p , n
- a node ND p , n consists of an eg one-byte position in the node field NDA ri p a node type of eg one byte and a payload of variable size.
- the node type less than 0 indicates a deleted node and contains no payload. Therefore, for example, 127 different node children are available.
- a page part PP r , P is either a page snapshot PS r, p or a page change PD r, p .
- a page snapshot PS r , p stores the result of all past changes as well as the changes during the revision R r .
- the node change PD r , p contains only the changes made during the revision R r .
- the persistently-made page part PP r , p contains two variable-size lists which reflect the changes made to the data page P r , p during the revision R r .
- Each list initially contains the list size of one byte. For example, the maximum size of both lists is limited to 256.
- the first list, the so-called page reference list PRL r , p stores changes to any page reference PRr, P '..., PRr.p * pointing to the child pages P r , P ' ..., P r , P * where p ⁇ p 1 ⁇ ... ⁇ p * .
- the second list, the so-called node list NDL riP stores changes to each node ND riP , n. If the page part PP r , p is a side snapshot PS r , P , the node list NDL r , p also stores the current state of the node, if it was not modified during the revision R r .
- the revisions Ro, Ri,..., Rmax are likewise stored one after the other using one or more sectors S d , s .
- the side parts PP r, p of the revision R r are stored starting from the beginning of the first sector S d , s of the revision R r with the last child data page, ie the data page part PP r , x up to the root data part PP r , o such that the sequence of data parts PP r , p ends with the root data part PP r , o.
- FIG. 2 shows another embodiment for storing a plurality of revisions R r of tree-structured data families using a single logical storage medium LD 0 .
- the copies of the revision references RR r referring to the page parts to the revisions R r as well as the Copies hb and H3 of the headers Ho and Hi are stored in sectors So, ma ⁇ (s) -i separated from the sectors S 0 - for the revisions R 1 -.
- Figure 3 shows the structure of logically and physically storing side and side-part trees for four consecutive revisions Ro, Ri, R2 and R3. 5
- the first revision Ro is based on the source data page Po, o, which is referenced with the revision reference RR 0 .
- the originating data page Po.o in turn points to the data page P Oi1 .
- the physical page-sub tree consists of the revision reference RRo which is based on the copy of the page Po.o, i. refers to the page snapshot PSo.o, which in turn refers5 to the page snapshot PSo.i with the changes.
- the first child data page again only contains the changes to the preceding child data page PDi, i as change information PD 2 , i.
- the second modified child data page PD 2i2 contains only the change information in the form of the deltas to the previous data page PSi, 2 of the previous reference R 1 .
- SO data page contains P 3i1 .
- P 3 ⁇ 2 a change was made "OD" compared to the previous revision
- . 2 was physically stored only as change data page PD 3I2.
- FIG. 4 shows a state diagram in the implementation of the method for storing a plurality of revisions of tree-structured data file parts.
- the data stores LDi, LD 2 and a master key MK are selected by the user Furthermore, an additional identifier SLT h is selected using the salting process and a key K from the master key MK and the additional identifier derived SLT h.
- a token HTh is set to by the HMAC-SHA-256 k (CONF h) algorithm predetermined value.
- the n-th copy of the header H h is set to a linked by the condition SLTh with CTR AES 256 k (CONF h ) linked with HT h set value.
- the headers Ho, Hi, H 2 and H 3 are then synchronously written and verified.
- start state "Start” occurs after the initialization, whereby the data memory LDi, the data memory LD 2 and the master key MK are provided by the user, then the headers Ho, Hi, H 2 and H 3 are read out and the additional identifier SLT h is verified by comparison with the additional identifiers stored in the headers Ho, Hi, H 2 and H 3.
- a node key is derived from the master key MK and the additional identifier SLT h and the headers Ho, Hi, ter key MK and the additional identifier SLT h derived and the headers H 0 , H 1 , H 2 and H 3 for checking the token HT h with the algorithm HMAC-SHA- 256 k (CONF h ) verified.
- revision reference RR ma ⁇ (r) -i is searched for the second data memory LD2 and verified by comparison with the stored on the first data memory LD 1 revision reference RR ma ⁇ (r) -i. An error in the verification causes a transition to the recover state "recover".
- header H is restored, this can be done from the available copies of the header, and the content is restored to the first and / or second data stores LD 1 and LD 2 using the available redundant data Restoration of the information takes place a jump in the stop state "stop".
- the execution state "run” is executed each time a revision is passed, whereby the following points are processed.
- the last revision Rmax " is written synchronously on the first data memory rather LD 1 .
- the revision reference RR maX (r ) is verified to the last revision R ma ⁇ (r) on the first data memory LD 1 .
- the revision reference RRmax " is synchronously written to the second data memory LD 2 and verified there.
- the number of the available revision R m ax (r), ie the consecutive number of the current revision, is incremented to max (r) +1.
- Figure 5 omits the method of serialization of a data page stored in memory to a device such as e.g. recognize a hard disk as a flowchart.
- a data page stored in memory is serialized.
- the serialized data page parts are compressed and the compressed data page parts are authenticated, encrypted, and then written to the device, such as a hard disk or other disk.
- the readout of data page parts from the device takes place by first reading the data contents and decrypting and authenticating the encrypted data page parts.
- the compressed data page parts are then decompressed and are now available as unencrypted serialized data page parts.
- the data page can then be stored in a memory, in particular a volatile data memory RAM.
- FIG. 6 shows a sketch for an exemplary way of storing nodes.
- the first column shows the state of the data pages P 3 , o at the time of the revision R3.
- the page P 3 , o corresponds to the page copy PS 3i0 .
- the node at position 1 was set before revision R 3 .
- the node is of type 22 and has the value ⁇ example>.
- the node at the 2-position is set before the revision R. 3
- the node is of type 33 and has the value "text.”
- the node at position 6 was deleted during revision R 3.
- the deleted node was of type 33.
- the state of the data page P 4 ⁇ o at the time of revision R4 is shown.
- the changes are stored in the difference data page PD 4 , o.
- the node at position 1 was set before revision R 4 .
- the node is of the type 22 and has the value ⁇ example>.
- the node at position 2 was set during revision R 4 .
- the node is now of type 33 and has the value "new text".
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
The invention relates to a method for storing a plurality of revisions (Rr) of data family parts which are linked tree structure-like and each have a number of tree-like linked data pages (Pr,p) with a central parent data page (PPr,0) and originating therefrom child data pages (PPr,x). For each revision (Rr), a main reference pointer (RRr) is provided on the parent data page (PPr,0) of the respective data page (Pr) in a separately stored list (NDLr,p). The data pages (Pr) have at least one page reference pointer (PPr,x) on logically linked child data pages (PPr,x). Node change information about a reference to changes of nodes of the structure of tree-like linked data family parts defining logically directly subsequently linked child data pages (PPr,x) are stored for each revision (Rr).
Description
Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturar- tig verknüpften Datenfamilien Method for storing a plurality of revisions of tree-structured data families
Die Erfindung betrifft ein Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilien, 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 Datenseite mindestens ei- nen Seiten-Referenzzeiger auf logisch unmittelbar nachfolgend verknüpfte Kinder- Datenseiten haben.The invention relates to a method for storing a plurality of revisions of tree-structured data families, each of which has a number of tree-like linked data pages with a central parent data page and child data pages emanating therefrom, wherein for each revision a main reference pointer to the Parent data page of the respective data page is provided in a separately stored list and the data page have at least one page reference pointer to logically immediately following linked child data pages.
Informationen können digital hierarchisch strukturiert mit Hilfe des so genannten Ex- tensible Mark-Up-Language XML abgespeichert werden. XML ist eine Aufzeich- nungssprache 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
Information can be stored digitally in a hierarchical structure using the so-called Extensible Mark-Up-Language XML. XML is a recording language for displaying hierarchically structured data in the form of text files. The XML format is used in particular for the exchange of data between different computer systems. An XML document consists of elements, attributes, their value assignments, and the content of the elements, which can be text or children. The subordinate
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.Elements can in turn have attributes with value assignments and content. An XML document can contain elements with and without attributes. Furthermore, there may be elements which in turn contain many other elements. Furthermore, elements can only have text or even no content. The elements, attributes, and value assignments form a tree structure that resembles a directory and file structure of conventional computer systems. An XML file is processed by a so-called XML Paser, following the hierarchy that results from the tree structure of the data. Each element, each attribute, each value assignment to an attribute and each character content of an element is a separate part of the tree, which is individually addressable. These components are also called nodes. Each XML document begins with a root node that forms the origin of the data. The root node points to an outmost element, that is, the topmost node, that encompasses the entire rest of the XML file. One or more child nodes are connected to such a node, from the perspective of which the parent node forms a parent node.
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.With such an XML document, in which parent and child data pages are linked to one another hierarchically, system-independent data can be managed and, in particular, revisions of data collections stored in such a way that the revision history can be traced. This is particularly useful when a plurality of agents work on the same object, such as the creation of text documents.
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.There are a variety of native XML databases that represent encoding for the internal representation of XML data as an unordered, ordered tree, with the constraint that the order of the children of each node is stable. The encoded tree is stored in a memory system. The native XML databases make the stored tree accessible via an interface.
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üch- tigen 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.There are four main classes for encoding. Encoding with a fixed-size key assigns each node a unique, nonvolatile, fixed-size key. A comparison of two keys does not reflect necessary se the global order of the two related nodes. Each node stores keys of its immediate neighbor nodes. Updates are not scaled if a node contains a large number of children. Encoding with a variable-size key assigns each node a unique, nonvolatile variable-sized key. A comparison of two keys always reflects the global order of the two related nodes. Depending on an insertion position, the size of the key may increase indefinitely. Updates are not scaled for persistent inserts in the adjacent neighborhood of a single node.
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 Rekonstruk- tion 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.The position coding assigns each node a unique, volatile key of fixed size. A comparison of two keys always reflects the global order of the two related nodes. The key of a node corresponds to the current position of the node, while updates change the position of all nodes following the inserted or deleted node. Updates are not scaled if additional indexes, such as a full-text index, are involved. The fourth type of coding is an index-based method in which one or more indexes exist for each node to speed up typical queries. To do this, the original XML document must be kept available for correct reconstruction. Updates are not scaled, so the original XML document and all nodes must be updated after inserting or deleting nodes. Furthermore, there are two basic classes of storage systems. The first class of storage system overwrites existing data when executing current updates. For this purpose, a tree copy or a field is usually partially or completely held in memory and written back to the storage medium during the update. Old data is partially or completely overwritten or deleted.
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.The second storage class makes updates to copies while writing without overwriting old data. Here, an index and the revision of the data is kept. A new index and new data are just appended to the old information. The index points on data correspond to a revision and can be used either on a full data content or on a sequence of incremental changes, that is, the difference between the data contents of two consecutive revisions that can be used to reconstruct the full data content.
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.There are also four basic interface classes, namely an application programming interface (API), integrated interaction (embedded interaction) of a user-interface API for stand-alone interaction, a user-interface API for web-based interaction and a Text and / or graphical user interface for human-machine interaction.
C. Grün, A. Holupirek, M. Kramis, M. H. Scholl, M. Waldvogel: „Pushing XPath Ac- celerator 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.C. Green, A. Holupirek, M. Kramis, MH 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, describes the structure of XML data and concepts for encoding, through a set of index tuples and index block structures, the update time can be reduced.The file structure is managed with a name list, a node list, and a list of values.
Ein Problem stellt die effiziente Speicherung und Suche von Revisionen baumartig verknüpfter Datenfamilien, insbesondere unter dem Gesichtspunkt dar, dass die Größe und Struktur der verknüpften Datenfamilien von Revision zu Revision nicht vorhersagbar unterschiedlich ist.A problem is the efficient storage and search of tree-linked data family revisions, particularly in view of the size and structure of the linked families of data being unpredictably different from revision to revision.
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 Kinder-Datenseiten definierende Knoten baumartig verknüpfter Datenfamilienteile.The object is achieved with the method of the aforementioned type according to the invention by storing node change information for each revision via changes of a reference to logically immediately following linked child data pages defining nodes of tree-like linked data family parts.
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 Ände- rungsanweisung 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.It is thus proposed to store for each data page of a revision information about the changes with respect to the previous revision in a separate node list as node change information. By storing the node change information for each revision, another searchable and evaluable list from which immediately the changes of the nodes of a data page are recognizable. There, the revision is already recognizable on the basis of the versioning of the tree structure, which is accessible via the stored node change information as an information field. This has the advantage that the change instruction does not first have to be evaluated cumbersomely via the main and page reference pointers starting from a root node. Non-persistent pages in memory can be derived from persistent pages.
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, ge- löscht oder geändert worden ist.The node change information may indicate adding new nodes, deleting nodes, and / or changing nodes. By separately storing node change information in an additional list containing the change of the nodes of a data page, it is thus noted whether an additional node has been added, deleted or changed in comparison to the previous revision.
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 erfor- dert.The child data pages may contain the change of the corresponding child data page on an immediately preceding revision in the form of difference data. This has the advantage that it is not necessary to store the complete content of the data page, but only the non-binary change information, which leads to a reduced storage requirement and requires no complex calculations.
Die Datenseiten können aber auch den vollständigen Dateninhalt enthalten, der in der jeweiligen Revision optional modifiziert wurde.The data pages can also contain the complete data content, which was optionally modified in the respective revision.
In einer bevorzugten Ausführungsform sind die Hauptreferenzzeiger oder Kopien der Hauptreferenzzeiger auf einem weiteren Datenspeichermedium separat von den re- ferenzierten Datenseiten abgelegt. Dies hat nicht nur den Vorteil der erhöhten Da- tensicherheit 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.In a preferred embodiment, the main reference pointers or copies of the main reference pointers are stored on a further data storage medium separately from the referenced data pages. This not only has the advantage of increased data security through redundancy, but also allows for faster data access, since the search in the main reference pointers on the separate data storage medium can be done in parallel with the reading or writing of data pages. However, it is also conceivable that the main reference pointers or copies thereof are stored in sectors of a data storage medium separate from the sectors of the same data storage medium in which the referenced data records are stored. The division into sectors ensures that the tree-like structures of the data can be consecutively stored, as well as the main reference pointers, without the storage locations being scrambled.
Weiterhin ist es vorteilhaft, wenn die Speicherung der Revision von Datenfamilien durch Verschlüsselung abgesichert wird. Durch Verschlüsselung sollte die Perfor- mance 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üs- sei 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 gespeicherten Datenfamilien abgeleitet.Furthermore, it is advantageous if the storage of the revision of data families is secured by encryption. However, encryption should not significantly limit performance. It is therefore proposed to set up a cryptographic method based on a coded hash message authentication code, in which a cryptographic hash function is used in combination with a secret key. In addition, a symmetric encryption is used. For this purpose, a secret master key is defined and an additional identifier is generated independently of the master key. This generation of the additional identifier, which is also called salt, is also referred to as salting. A key is derived from the master key and the additional identifier. This is also called stretching. For each data page then a unique ad hoc key and a counter from results of encryption / decryption algorithms superordinate data page for encryption, decryption and authentication of at least the associated main reference pointers, data pages and at least one header for the entirety of the revision stored families of data derived.
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:The encryption method may, for example, make use of the standardized Advanced Encryption standard, e.g. CTR-AES-256 and the hash authentication method, e.g. HMAC-SHA-256. The reading out of the stored revisions of data pages can preferably take place by the steps:
a) Verifizieren der Übereinstimmung gespeicherter Kopien eines Kopfteils für diea) Verify the match of stored copies of a header for the
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 Seitenreferenzzeigem 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.Totality of revision of stored data families; b) verifying the compliance of a data storage medium stored in a separate data storage medium or on a separate sector of a data storage medium. a copy of a main reference pointer for the current revision with a main reference pointer of the current revision stored on a sector of the data storage medium together with the associated data pages of the revision, c) accessing data pages of desired revisions via pointers contained in the main pointer for the corresponding revision and the page reference pointer and d) evaluating node change information for each revision via changes from a reference to child children pages logically linked immediately thereafter.
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.
The access to a desired revision can be made by means of the binary search algorithm via the list of main reference pointers, it being equally possible to search for the revision number and / or the time stamp stored in the main reference pointer.
Die Erfindung wird nachfolgend anhand von Ausführungsbeispielen mit den beigefügten Zeichnungen näher erläutert. Es zeigen:The invention will be explained in more detail with reference to embodiments with the accompanying drawings. Show it:
Figur 1 - Speicherschema zur Speicherung einer Mehrzahl vonFigure 1 - Memory scheme for storing a plurality of
5 Revisionen baumstrukturartig verknüpfter Datenfamilien mit zwei separaten Datenspeichern;5 revisions of tree-structured data families with two separate data stores;
Figur 2 - Speicherschema der Speicherung einer Mehrzahl vonFigure 2 - Memory scheme storing a plurality of
Revisionen von baumstrukturartig verknüpfter DatenfamilienO unter Nutzung von zwei Sektoren eines einzigen Datenspeichers;Revisions of tree-structured data families O using two sectors of a single data store;
Figur 3 - beispielhafte Darstellung des logischen und physischen Seiten- und Seitenteilbaums für vier Revisionen;Figure 3 - exemplary representation of the logical and physical page and page subtree for four revisions;
5 Figur 4 - Darstellung des Zustandsdiagramms eines Verfahrens zur5 Figure 4 - representation of the state diagram of a method for
Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpfter Datenfamilien;Storing a plurality of revisions of tree-structured data families;
Figur 5 - Flussdiagramm des Verfahrens zur Serialisierung einer im O Speicher abgelegten Datenseite auf einen Festspeicher.FIG. 5 shows a flow chart of the method for serializing a data page stored in O memory onto a read-only memory.
Figur 6 - beispielhafte Darstellung einer Art zur Abspeicherung von Knoten.Figure 6 - exemplary representation of a way to store nodes.
5 Figur 1 lässt die Speicheraufteilung unter Verwendung von zwei logischen Datenspeichern LDi 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, wobeiFIG. 1 shows the memory division using two logical data memories LDi and LD 2 . Each data memory LDd with d = 0,1, ... n consists of a field of sectors S d , s with the maximum number of max (s) of sectors. Each sector may be 512 bytes wide, for example. The data memories LD d support random read and write access to each sector S d , i, where
D 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,ι begrenzt sein kann.
Es ist erkennbar, dass alle Daten und Metadaten auf dem primären logischen Datenspeicher LDi abgelegt werden. In dem in der Figur 1 dargestellten Ausführungsbeispiel werden die Metadaten zudem auf dem zweiten logischen Datenspeicher LD2 5 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 LDi rekonstruiert und auf Konsistenz geprüft werden. Inkrementale Backups des Dateninhalts auf dem ersten und/oder zweiten 0 Datenspeicher LDi 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 5 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 Process- 0 ing 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.D the data storage should be optimized for random read and sequential write activities. The required storage space on the data storage LDd is constantly growing at any time by adding further sectors, wherein the number of write accesses to each sector S d , ι may be limited. It can be seen that all data and metadata are stored on the primary logical data memory LDi. In the exemplary embodiment illustrated in FIG. 1, the metadata is also stored on the second logical data memory LD 2 5 in order to speed up the storage and read-out of revisions and the search for revisions. Due to the redundant storage in the second data memory LD 2 , the data content of the second data memory LD 2 can be reconstructed at any time from the first data memory LDi and checked for consistency. Incremental backups of the data content on the first and / or second data memory LDi and / or LD 2 can be stored synchronously or asynchronously on one or more other further data memories LDd for data backup. As metadata so-called header data H h (header) are initially provided, for salting an additional identifier SLT h (salt), for example, 32 bytes, a configuration CONFh, for example, 448 bytes and a token HT h of 32 bytes 5 contain the authentication the configuration CONF h is used. The token HT h corresponds to the authentication algorithm HMAC-SHA-256k (CONF h ). The algorithm is from the secure hash standard: Federal Information Processing Standards Publication 180-2, National Institute of Standards and Technology, August 2002, from the Advanced Encryption Standard (AES): Federal Information Processing Standards Publication 197, National Institute of Standards and Technology, November 2001, and The Keyed Hash-Message Authentication Code (HMAC): Federal Information Processing Standards Publication 198, National Institute of Standards and Technology, March 2002.
.5 Die Zusatzkennungen SLTh, d.h. die ersten 32 Byte des Headers Hh werden nicht verschlüsselt. Hh wird zweifach auf dem ersten Datenspeicher LDi als Ho und Hi und zweifach auf dem zweiten Datenspeicher LD2 als H2 und H3 abgelegt..5 The additional identifiers SLTh, ie the first 32 bytes of the header H h are not encrypted. H h is stored twice on the first data memory LDi as Ho and Hi and twice on the second data memory LD 2 as H 2 and H3.
Als Metadaten werden weiterhin Revisions-Referenzen RRr abgespeichert, die eine iθ Seitenteilreferenz PPRr,o (z. B. 32 Byte) und das Token RRTr (z. B. 32 Byte) enthält, das zur Authentifizierung der Seitenteilreferenz PPRr,o verwendet wird. Das TokenAs metadata, revision references RR r are also stored, which contain an iθ page sub-reference PPR r , o (eg 32 bytes) and the token RRT r (eg 32 bytes), which is used to authenticate the page sub-reference PPR r , o is used. The token
RRTr entspricht dem Authentifizierungsalgorithmus HMAC-SHA-256« (PPRr,o). Weiter
enthalten die Revisions-Referenzen (RRr) Angaben über den Autor sowie den Zeitpunkt der Erstellung der Revision Rr.RRT r corresponds to the authentication algorithm HMAC-SHA-256 "(PPR r , o). Further The revision references (RR r ) contain information about the author as well as the time of the creation of the revision R r .
Um ausgehend von der aktuellsten Revision RmaX(r) die vorhergehende Revisionsrefe- renz RRmaχ(r)-i auf dem zweiten Datenspeicher LD2 aufzufinden, wird eine binäre Suche auf den Sektoren S2,2, - S2,maχ(s)-i 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,o) ist, wird die Suche in die Richtung nach rechts fortgeführt und andernfalls in die Richtung nach links. Falls dort einige Revisionsreferenzen RRmax(r)-i auf die Revision Rmaχ(r)-i vorhanden sind, wird die binäre Suche diese schließlich selektieren.In order to find the previous revision reference RR ma χ (r) -i on the second data memory LD 2 starting from the most recent revision R maX ( r ) , a binary search is made on the sectors S2, 2, -S2, maχ (s). -i performed. Each time the median of sector S2, s is selected, it is assumed that it contains some page subrefs PPRr.p at a byte offset of zero. If the token RRT r equal to HMAC-SHA-256 k (PPR r, o) is the search in the direction to the right is continued, and otherwise in the leftward direction. If there are some revision references RRmax (r) -i to the revision R ma χ (r) -i, the binary search will eventually select them.
Falls der zweite Datenspeicher LD2 nicht verfügbar ist, wird wiederum eine binäre Suche mit dem ersten Datenspeicher LDi 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,i 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 + icj-1, .... Si, m+kj ausgehend von ko = 1 gestartet. Falls sie nicht gefunden wird, erfolgt eine Anpassung von kj = -2 • k^, bis kj eine konfigurierbare Grenze erreicht. Anschließend wird wie oben beschrieben verfahren.If the second data memory LD 2 is not available, again a binary search is carried out with the first data memory LDi as described above. If the median does not return a revision reference RR r , p to a revision at a zero byte offset in a sector S s , i, the search continues to the right and left as follows. The revision reference RR r, b is started in the sectors S 1 , m + icj-1,... Si, m + kj starting from ko = 1. If it is not found, an adaptation of kj = -2 • ^ k, j to k reaches a configurable limit. Then proceed as described above.
Aus logischer Sicht besteht eine im ersten Datenspeicher LDi abgelegte Revision Rr aus einem Baum von Datenseiten. Die Datenseiten sind beginnend mit der Wurzel- Datenseite Pr,o aufgezählt. Anfänglich beinhaltet die Revision Rr alle Datenseiten von der vorhergehenden Revision Rr-i. 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.x... , PPr,o 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,Pl d.h. als nicht binäre Differenz oder Delta bezeichnet.
Aus Figur 1 ist erkennbar, dass für jede Revision Rr eine Datenseitenreferenz RRr vorgesehen ist, die die Datenseite Pr,o gleich PPr,o 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 ein- deutig 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.From a logical point of view, a revision R r stored in the first data memory LDi consists of a tree of data pages. The data pages are listed starting with the root data page P r , o. Initially, the revision R r includes all data pages from the previous revision R r -i. Subsequent changes will only be made on copies of the data pages and not on the originals. The copies are visible only for the revision R r and stored in the back order as data side parts PPr.x ..., PP r , o. If the entire data page is stored, the copy of the page portion is referred to as a page snapshot PS r, p . If only one change to the last revision is stored, this is referred to as a page change PD r , Pl ie as a non-binary difference or delta. From Figure 1 it can be seen that for each revision R r a data page reference RR r is provided which references the data page P r , o equal to PP r , o, which must be a page snapshot. All other data pages are referenced by a page reference PR_ (r, p) which references either a single page snapshot PS r, p or a sequence of page changes PD r , p , the page changes to an initial data page snapshot PS r, p be applied to derive a data page PP r , p. The page count counter PPC r , P denotes the number of page changes to be applied to the initial page snapshots. Each page is bound to a revision r and a page number p, which uniquely distinguishes the page from all other pages. A page section thus receives the same page number for all revisions. Each page sub-reference in a page reference PR_ (r, p) is associated with the revision number during which this page sub-page was created. A page reference with the page counter PPC r , p equal to zero indicates a deleted page reference.
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\ ... , PRΦ*, die auf die Kin- der-Datenseiten Pr,?... , Pr.p* zeigen. Das zweite Feld, d.h. das Knotenfeld NDAr,p speichert Knoten NDp,n A non-persistent page P r , p contains two fields, the page reference field PRAr.p and the node field NDA r , p . Both fields are the result of all changes from all page parts, which are related to the page P r, p . The size of the two fields is fixed or defined for each page according to their corresponding position in the page tree. The maximum size of the two fields is limited to 256, for example. Each entry in one of the fields is marked by its absolute position n. If n is negative, this means that the entry was changed in an earlier revision. The entry θ is not used. The first field, ie, the page reference field PRAr.p stores the nth page references PR rp \ ..., PR Φ * pointing to the child data pages Pr, ..., Pr. P * . The second field, ie the node field NDAr, p stores node ND p , n
Ein Knoten NDp,n besteht aus einer z.B. ein Byte großen Position im Knotenfeld NDArip 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.A node ND p , n consists of an eg one-byte position in the node field NDA ri p a node type of eg one byte and a payload of variable size. The node type less than 0 indicates a deleted node and contains no payload. Therefore, for example, 127 different node children are available. A page part PP r , P is either a page snapshot PS r, p or a page change PD r, p . A page snapshot PS r , p stores the result of all past changes as well as the changes during the revision R r . The node change PD r , p contains only the changes made during the revision R r .
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 soge- nannte Seitenreferenzliste PRLr,p speichert Änderungen an jeglicher Seitenreferenz PRr,P'... , PRr.p*, die auf die Kinderseiten Pr,P'... , Pr,P* zeigen, wobei p < p1 < ... < p* ist. Die zweite Liste, die sogenannte Knotenliste NDLriP speichert Änderungen an jeden Knoten NDriP,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äh- rend der Revision Rr modifiziert wurde.The persistently-made page part PP r , p contains two variable-size lists which reflect the changes made to the data page P r , p during the revision R r . Each list initially contains the list size of one byte. For example, the maximum size of both lists is limited to 256. The first list, the so-called page reference list PRL r , p stores changes to any page reference PRr, P '..., PRr.p * pointing to the child pages P r , P ' ..., P r , P * where p <p 1 <... <p * . The second list, the so-called node list NDL riP stores changes to each node ND riP , n. If the page part PP r , p is a side snapshot PS r , P , the node list NDL r , p also stores the current state of the node, if it was not modified during the revision R r .
Erkennbar ist aus Figur 1 , dass die Referenzen RRr auf die Revisionen gefolgt von den Headern H2 und H3 hintereinander mit der ersten Referenz RRo auf die erste Revision R0 abgespeichert werden.It can be seen from FIG. 1 that the references RR r to the revisions followed by the headers H 2 and H 3 are stored in succession with the first reference RRo to the first revision R 0 .
In dem ersten Datenspeicher LDi werden die Revisionen Ro, Ri, ... , Rmax« 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,o abgelegt, so dass die Sequenz der Datenteile PPr,p mit dem Wurzel-Datenteil PPr,o endet.In the first data memory LDi, the revisions Ro, Ri,..., Rmax "are likewise stored one after the other using one or more sectors S d , s . The data to be a reference RR r in the unused sectors, however, backward stored, whereby first the reference RR r R r to the respective revision is stored at the end of the last sector. The side parts PP r, p of the revision R r are stored starting from the beginning of the first sector S d , s of the revision R r with the last child data page, ie the data page part PP r , x up to the root data part PP r , o such that the sequence of data parts PP r , p ends with the root data part PP r , o.
Figur 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 hb und H3 der Header Ho und Hi werden in Sektoren So,maχ(s)-i getrennt von den Sektoren S0-, für die Revisionen R1- abgelegt.FIG. 2 shows another embodiment for storing a plurality of revisions R r of tree-structured data families using a single logical storage medium LD 0 . The copies of the revision references RR r referring to the page parts to the revisions R r as well as the Copies hb and H3 of the headers Ho and Hi are stored in sectors So, ma χ (s) -i separated from the sectors S 0 - for the revisions R 1 -.
Während der Datenspeicherbereich für die Header Ho, Hi und die Revisionen Rr se- 5 quentiell beginnend von einem ersten Sektor So.o 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 So,max(s)-i wie in Figur 2 skizziert ist. 0During the data memory area for the header Ho, Hi and the revisions R r are se- 5 quentiell stored sequentially starting from a first sector So.o in forward order, the redundant storage of the metadata is carried in the reverse direction starting with the headers H 2 and H 3 at the end of the sectors for the second memory area, ie at the end of sector So, max (s) -i as sketched in FIG. 0
Figur 3 lässt die Struktur der logischen und physischen Abspeicherung von Seitenbäumen und Seitenteilbäumen für vier aufeinanderfolgende Revisionen Ro, Ri, R2 und R3 erkennen. 5 Die erste Revision Ro basiert auf der Ursprungs-Datenseite Po,o, die mit der Revisionsreferenz RR0 referenziert wird. Die Ursprungs-Datenseite Po.o zeigt ihrerseits auf die Datenseite POi1.Figure 3 shows the structure of logically and physically storing side and side-part trees for four consecutive revisions Ro, Ri, R2 and R3. 5 The first revision Ro is based on the source data page Po, o, which is referenced with the revision reference RR 0 . The originating data page Po.o in turn points to the data page P Oi1 .
Als Änderungen der revidierten Datenseite POli wurden die Änderungen OA und 1 B0 vorgenommen. Diese werden in dem Seitenteil PPOlP gekennzeichnet, so dass aus diesem Seitenteil PPo,P die Änderungen in der Revision sofort ersichtlich ist.As changes to the revised data page P ol i, the changes OA and 1 B0 were made. These are marked in the side part PP OlP , so that from this side part PPo, P the changes in the revision is immediately apparent.
Der physische Seitenteil-Baum besteht aus der Revisionsreferenz RRo, die auf die Kopie der Seite Po.o, d.h. den Seiten-Snapshot PSo.o verweist, der seinerseits wieder5 auf dieser den Seiten-Snapshot PSo.i mit den Änderungen verweist.The physical page-sub tree consists of the revision reference RRo which is based on the copy of the page Po.o, i. refers to the page snapshot PSo.o, which in turn refers5 to the page snapshot PSo.i with the changes.
In der folgenden Revision Ri wurde eine weitere Datenseite hinzugefügt, so dass die Datenseite Pi,o nunmehr in die Datenseiten Pi,i und Pi,2 verzweigt. Der logische Seitenbaum ist beginnend von der Revisionsreferenz RRi, die auf die Wurzel-Datenseite ιθ Piι0 der Revision Ri verweist, nunmehr baumartig so strukturiert, dass die Datenseite Pi,o zwei Kinder-Datenseiten Pi,i und Pi,2 enthält.
Als Änderungen wurden in der Kinder-Datenseite Pi,i die Änderung „2C" und „0" und in der zweiten Kinder-Datenseite P1|2 „OD" und J E" vorgenommen. Diese Änderungen sind in dem Seitenteil PP1 iP entsprechend vermerkt, wobei die Revision auch noch die Änderungen des vorhergehenden Seitenteils PPo,P der ersten Revision R0 5 enthält.In the following revision Ri, another data page has been added so that the data page Pi, o now branches into the data pages Pi, i and Pi, 2. Starting from the revision reference RRi, which points to the root data page ιθ Pi ι0 of the revision Ri, the logical page tree is now structured in a tree-like manner such that the data page Pi, o contains two child data pages Pi , i and Pi, 2 . As changes, in the child data page Pi , i, the change "2C" and "0" and in the second child data page P 1 | 2 "OD" and JE "were made. These changes are noted accordingly in the side part PP 1 iP , wherein the revision also contains the changes of the previous side part PPo, P of the first revision R 0 5.
Aus der Darstellung des physischen Seitenteil-Baums in Figur 3 ist erkennbar, dass die revidierte Kinder-Datenseite PD1 1 mit der Kinder-Datenseite PSo,i verwandt ist. Diese Kinder-Datenseite der Revision Ri enthält allerdings keine vollständigen Da- 0 teninhalte, sondern nur die geänderten Daten, so dass der vollständige Inhalt der Kinder-Datenseite aus der Kinder-Datenseite PS0,i der vorhergehenden Revision R0 und den Änderungsinformationen abgeleitet werden kann.From the representation of the physical page partial tree in Figure 3 it can be seen that the revised data page children PD 1 is 1 related to the children's data page PSo, i. However, this child data page of the revision Ri does not contain complete data contents but only the changed data, so that the complete content of the child data page is derived from the child data page PS 0 , i of the previous revision R 0 and the change information can.
In der folgenden Revision R2 ist der Datenbaum unverändert geblieben. Es wurden 5 daher keine Datenseiten gelöscht oder hinzugefügt. Als Änderungen wurden J B'" und „OD"' in den Kinder-Datenseiten P2,i und P2,2 vorgenommen. Diese Änderungen sind zusammen mit der Änderungshistorie in den Seitenteilen PP0, PPi,P und PP2,p verzeichnet.In the following revision R 2 , the data tree has remained unchanged. Therefore 5 data pages were not deleted or added. As changes, J B "and" OD "were made in the child data pages P2, i and P 2 , 2 . These changes are recorded together with the change history in the page parts PP 0 , PPi, P and PP2, p.
10 Aus dem physischen Seitenteil-Baum ist erkennbar, dass die erste Kinder-Datenseite wiederum nur die Änderungen zur vorhergehenden Kinder-Datenseite PDi,i als Änderungsinformation PD2,i enthält. Auch die zweite geänderte Kinder-Datenseite PD2i2 enthält nur die Änderungsinformation in Form der Deltas zur vorhergehenden Datenseite PSi,2 der vorhergehenden Referenz R1.It can be seen from the physical page sub-tree that the first child data page again only contains the changes to the preceding child data page PDi, i as change information PD 2 , i. Also, the second modified child data page PD 2i2 contains only the change information in the form of the deltas to the previous data page PSi, 2 of the previous reference R 1 .
>5> 5
Bei der nächsten Revision R3 wurde die erste Kinder-Datenseite P3§1 zum vorhergehenden Revision P2,i nicht geändert. Allerdings wurde aus den Änderungsinformationen PDu und PD2ιi auf der Basis des letzten verfügbaren Snapshots PS0.1 ein Snapshot PS^1 abgeleitet, der nunmehr den vollständigen Dateninhalt der Kinder-In the next revision R 3 , the first child data page P 3§1 to the previous revision P 2 , i was not changed. However, a snapshot PS ^ 1 was derived from the change information PDu and PD 2ι i on the basis of the last available snapshot PS0.1, which now contains the complete data content of the child
SO Datenseite P3i1 enthält.
In der zweiten Kinder-Datenseite P3ι2 wurde im Vergleich zur vorherigen Revision eine Änderung „OD" vorgenommen. Diese Kinder-Datenseite P3|2 wurde physisch nur als Änderungs-Datenseite PD3i2 abgespeichert.SO data page contains P 3i1 . In the second children's data page P 3ι2 a change was made "OD" compared to the previous revision These children Data Page 3 P |. 2 was physically stored only as change data page PD 3I2.
Weiterhin wurde eine dritte Kinder-Datenseite P3|3 mit den Änderungen „OF" und „1 G" hinzugefügt.Furthermore, a third child data page P 3 | 3 was added with the changes "OF" and "1 G".
Figur 4 lässt ein Zustandsdiagramm bei der Durchführung des Verfahrens zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfa- milienteilen erkennen.FIG. 4 shows a state diagram in the implementation of the method for storing a plurality of revisions of tree-structured data file parts.
In dem sogenannten „Wipe"-Zustand werden beispielsweise alle Sektoren einmal mit Zufallsdaten überschrieben, die nicht kodiert sind.For example, in the so-called "wipe" state, all sectors are overwritten once with random data that is not encoded.
In dem Initialisierungs-Zustand „init" werden die Datenspeicher LDi, LD2 und ein Masterschlüssel MK durch den Nutzer ausgewählt. Weiterhin wird eine Zusatzken- nung 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.In the initialization state "init", the data stores LDi, LD 2 and a master key MK are selected by the user Furthermore, an additional identifier SLT h is selected using the salting process and a key K from the master key MK and the additional identifier derived SLT h. a token HTh is set to by the HMAC-SHA-256 k (CONF h) algorithm predetermined value. the n-th copy of the header H h is set to a linked by the condition SLTh with CTR AES 256 k (CONF h ) linked with HT h set value.
Die Header Ho, Hi, H2 und H3 werden dann synchron geschrieben und verifiziert.The headers Ho, Hi, H 2 and H 3 are then synchronously written and verified.
Im Falle eines Verifikationsfehlers wird ein Neustart des Initialisierungs-Zustands veranlasst.In the case of a verification error, a restart of the initialization state is initiated.
Der sogenannte Start-Zustand „Start" erfolgt nach der Initialisierung. Hierbei werden der Datenspeicher LDi, der Datenspeicher LD2 und der Masterschlüssel MK durch den Nutzer bereitgestellt. Dann werden die Header Ho, Hi, H2 und H3 ausgelesen und die Zusatzkennung SLTh durch Vergleich mit den in den Headern Ho, Hi, H2 und H3 abgelegten Zusatzkennungen verifiziert. Ein Knotenschlüssel wird aus dem Masterschlüssel MK und der Zusatzkennung SLTh abgeleitet und die Header Ho, Hi,
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.The so-called start state "Start" occurs after the initialization, whereby the data memory LDi, the data memory LD 2 and the master key MK are provided by the user, then the headers Ho, Hi, H 2 and H 3 are read out and the additional identifier SLT h is verified by comparison with the additional identifiers stored in the headers Ho, Hi, H 2 and H 3. A node key is derived from the master key MK and the additional identifier SLT h and the headers Ho, Hi, ter key MK and the additional identifier SLT h derived and the headers H 0 , H 1 , H 2 and H 3 for checking the token HT h with the algorithm HMAC-SHA- 256 k (CONF h ) verified.
Weiterhin wird die Revisionsreferenz RRmaχ(r)-i auf den zweiten Datenspeicher LD2 gesucht und durch Vergleich mit der auf dem ersten Datenspeicher LD1 abgelegten Revisionsreferenz RRmaχ(r)-i verifiziert. Ein Fehler bei der Verifikation verursacht einen Übergang in den Wiederherstellungs-Zustand „recover".Furthermore, the revision reference RR ma χ (r) -i is searched for the second data memory LD2 and verified by comparison with the stored on the first data memory LD 1 revision reference RR ma χ (r) -i. An error in the verification causes a transition to the recover state "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".In the recover state "recover", header H is restored, this can be done from the available copies of the header, and the content is restored to the first and / or second data stores LD 1 and LD 2 using the available redundant data Restoration of the information takes place a jump in the stop state "stop".
Der Ausführungs-Zustand „run" wird jedes Mal durchgeführt, wenn eine Revision ü- bergeben wird. Hierbei werden folgende Punkte abgearbeitet.The execution state "run" is executed each time a revision is passed, whereby the following points are processed.
Im ersten Punkt wird die letzte Revision Rmax« synchron auf dem ersten Datenspei- eher LD1 geschrieben. Im folgenden Schritt wird die Revisionsreferenz RRmaX(r) auf die letzte Revision Rmaχ(r) auf den ersten Datenspeicher LD1 verifiziert. Sodann wird die Revisionsreferenz RRmax« 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.In the first point the last revision Rmax "is written synchronously on the first data memory rather LD 1 . In the following step, the revision reference RR maX (r ) is verified to the last revision R ma χ (r) on the first data memory LD 1 . Then the revision reference RRmax "is synchronously written to the second data memory LD 2 and verified there. Then, in the fifth step, the number of the available revision R m ax (r), ie the consecutive number of the current revision, is incremented to max (r) +1.
Ein Fehler bei der Überprüfung führt zu einer zweiten Serialisierung beginnend mit Schritt 1 des Ausführungs-Zustands „run".An error in the check results in a second serialization beginning with step 1 of the execution state "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.Again, at the end of a jump in the stop state, in which new changes are no longer allowed. So far unsaved changes are stored as described in the execution state. If, in the execution state, the fifth point of incrementing the number for the current revision has not been reached within an adjustable time, a stop occurs immediately.
Figur 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.Figure 5 omits the method of serialization of a data page stored in memory to a device such as e.g. recognize a hard disk as a flowchart.
Eine im Speicher abgelegte Datenseite wird serialisiert. Die serialisierten Datenseitenteile werden komprimiert und die komprimierten Datenseiteteile werden authentifi- ziert, verschlüsselt und anschließend auf das Gerät, wie beispielsweise eine Hard Disk oder einen anderen Datenträger, geschrieben.A data page stored in memory is serialized. The serialized data page parts are compressed and the compressed data page parts are authenticated, encrypted, and then written to the device, such as a hard disk or other disk.
Das Auslesen von Datenseitenteilen aus dem Gerät erfolgt, indem die Dateninhalte zunächst gelesen und die verschlüsselten Datenseitenteile entschlüsselt und authen- tifiziert 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.The readout of data page parts from the device takes place by first reading the data contents and decrypting and authenticating the encrypted data page parts. The compressed data page parts are then decompressed and are now available as unencrypted serialized data page parts. After deserialization, the data page can then be stored in a memory, in particular a volatile data memory RAM.
Figur 6 lässt eine Skizze für eine beispielhafte Art zur Abspeicherung von Knoten erkennen.FIG. 6 shows a sketch for an exemplary way of storing nodes.
In der ersten Spalte ist der Zustand der Datenseiten P3,o zur Zeit der Revision R3 dargestellt. Die Seite P3,o entspricht der Seitenkopie PS3i0. Der Knoten bei der Positi- on 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.The first column shows the state of the data pages P 3 , o at the time of the revision R3. The page P 3 , o corresponds to the page copy PS 3i0 . The node at position 1 was set before revision R 3 . The node is of type 22 and has the value <example>. The node at the 2-position is set before the revision R. 3 The node is of type 33 and has the value "text." The node at position 6 was deleted during revision R 3. The deleted node was of type 33.
In der zweiten Spalte ist der Zustand der Datenseite P4ιo zur Zeit der Revision R4 dargestellt. Die Änderungen sind in der Differenz-Datenseite PD4,o 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".
In the second column, the state of the data page P 4ι o at the time of revision R4 is shown. The changes are stored in the difference data page PD 4 , o. The node at position 1 was set before revision R 4 . The node is of the type 22 and has the value <example>. The node at position 2 was set during revision R 4 . The node is now of type 33 and has the value "new text".
Claims
1. Verfahren zur Speicherung einer Mehrzahl von Revisionen (Rr) von baumstrukturartig verknüpften Datenfamilien, die jeweils eine Anzahl von miteinander baumartig verknüpfter Datenseiten (Pr) miteiner zentralen Eltern- Datenseite (Pr,o) und zumindest einer von dieser ausgehenden Kinder- Datenseite (Pr,P', ..., Pr,p*) haben, wobei für jede Revision (Rr) ein Hauptreferenzzeiger (RR1-) auf die zentrale Eltern-Datenseite (Pr,o) der jeweiligen Datenfamilie in einer separat abgespeicherten Liste bereitgestellt wird und jede Eltern-Datenseite (Pr p) mindestens einen Seiten-Referenzzeiger (PRr,p) auf logisch unmittelbar nachfolgend verknüpfte Kinder-Datenseiten (Pr,P', ..., Pr,p«) hat, gekennzeichnet durch Abspeichern von Knotenänderungsinformationen für jede Revision (R1-) über Änderungen von Knoten der baumartig verknüpften Datenseiten (P1-, Pr,o, Pr.p- Pr,p*)-1. A method for storing a plurality of revisions (R r ) of tree-structured data families, each of which has a number of data pages (P r ) connected to each other in a tree-like manner with a central parent data page (P r , o) and at least one child page originating therefrom. Data page (P r , P ', ..., P r , p *), wherein for each revision (R r ) a main reference pointer (RR 1 -) to the central parent data page (P r , o) of the respective data family is provided in a separately stored list and each parent data page (P rp ) has at least one page reference pointer (PR r , p) to logically immediately following linked child data pages (P r , P ', ..., Pr, p. ), characterized by storing node change information for each revision (R 1 -) about changes in nodes of the tree-like linked data pages (P 1 -, P r , o, Pr.p - P r , p *) -
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 kennzeichen.2. The method according to claim 1, characterized in that the node change information identifying the addition of new nodes, the deletion of nodes and / or the change of nodes.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die3. The method according to claim 1 or 2, characterized in that the
Datenseiten (Pn Pr,o, Pr.p- Pr,P*) die Änderung der entsprechenden DatenseiteData pages (P n P r , o, Pr.p-Pr, P *) the change of the corresponding data page
(Pr, Pr,o> Pr.p1 Pr,p*) einer unmittelbar vorhergehenden Revision (RM) in Form von nicht-binären Differenzdaten (PDr,x) enthält.(Pr, Pr, o > Pr.p 1 P r , p *) of an immediately preceding revision (RM) in the form of non-binary difference data (PD r , x ).
4. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass eine Datenseite (Pr) den vollständigen, optional in der jeweiligen Revision (Rr) modifizierten Dateninhalt enthält.4. The method according to any one of the preceding claims, characterized in that a data page (P r ) contains the complete, optionally in the respective revision (R r ) modified data content.
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.5. The method according to any one of the preceding claims, characterized in that the main reference pointer (RR r ) or copies thereof on a another data storage medium (LD 2 ) are stored separately from the referenced data pages (P r ).
6. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Hauptreferenzzeiger (RRr) oder Kopien davon in Sektoren (So,s) eines Datenspeichermediums (LDo) getrennt von den Sektoren (So,s) desselben Datenspeichermediums (LD0) abgelegt sind, in denen die referenzierten Datenseiten (Pr) gespeichert sind.6. The method according to any one of claims 1 to 4, characterized in that the main reference pointers (RR r ) or copies thereof in sectors (So, s ) of a data storage medium (LDo) separated from the sectors (So, s ) of the same data storage medium (LD 0 ) are stored, in which the referenced data pages (P r ) are stored.
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) 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 Haupt- Referenzzeiger, Datenseiten und mindestens eines Kopfteils (Hh) für die Gesamtheit der Revision (R1-) gespeicherter Datenfamilien abgeleitet wird.7. The method according to any one of the preceding claims, characterized by securing the storage of revisions (R r ) of data families by encryption by a secret master key (MK) defines and independent of the master key (MK) generates a supplementary identifier (SLT) (Salting) and from the master key (MK) and the additional recognition (SLT) a key (K) is derived (stretching), and for each data page (PP r , x) a unique ad hoc key (N) and a counter (CTR ) is derived from results of the encryption / decryption algorithms of higher-level nodes for encryption, decryption and authentication of at least the assigned main reference pointers, data pages and at least one header (H h ) for the entirety of the revision (R 1 -) of stored data families.
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 (SOlS) eines Datenspeichermediums (LD0) abgelegten Kopie eines Hauptreferenzzeigers (RRr) für die aktuelle Revision (Rmaχ(r)) mit einem Hauptreferenzzeiger (RRr) der aktuellen Revision (Rmaψ)), 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 und8. The method according to any one of the preceding claims, characterized by reading stored revisions (R r ) of data pages (P r ), characterized by - verifying the match of stored copies of a header (H h ) stored for the entirety of the revision (R r ) Data families, - verifying the compliance of a copy of a main reference pointer (RR r ) for the current revision (R ma χ (r)) stored in a separate data storage medium (LD 2 ) or on a separate sector (S OlS ) of a data storage medium (LD 0 ) with a main reference pointer (RRr) of the current revision (Rm a ψ)) stored on a sector (S 0 , s ) of the data storage medium (LD 2 ) together with the associated data pages (P r ) of the revision (R r ), Accessing data pages (PP r , x) of desired revisions (R r ) via pointers contained in the main reference pointer (RR r ) for the corresponding revision (R r ) and the page reference pointers (PR r , p ) and
- Auswerten von Knotenänderungsinformationen für jede Revision (Rr) über Änderungen von Knoten der baumartig verknüpften Datenseiten (Pn Pr,0, Pr,P'Evaluating node change information for each revision (R r ) about changes of nodes of the tree-like linked data pages (P n P r , 0 , P r , P '
Pr,p*)-Pr, p * ) -
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.9. The method of claim 8, characterized by accessing desired revisions (R r ) by means of a binary search algorithm on the list of main reference pointers (RR r ), wherein a search on the basis of the revision number and / or one in the main reference pointer (RR r ) stored timestamp he follows.
10. Verfahren zur Speicherung einer Mehrzahl von Revisionen (R1-) von baumstrukturartig, hierarchisch verknüpften Daten, wobei die Daten in ein Speichersystem als Knoten eines zur internen Repräsentation enkodierten Baumes abgespeichert und über ein Interface zugänglich gemacht werden, wobei jeder Knoten (NDr,p,n) in einem Knotenfeld (NDAr p) einer Datenseite (Pr,p) an einer Position (n) gespeichert wird, und wobei für jede Revision (R1-) eine Revisionsreferenz (RRr) auf die Datenseite (Pr,p) zeigt, wobei für jede Revision (R1-) bezogen auf die vorherige Revision (Rr-i) Änderungen von Knoten (NDr,p,n) der Datenseite (Pr p) in einer Knotenliste (NDLr,p) eines Datenseitenteils (PPr,P) derart abgespeichert werden, dass die während der Revision (Rr) vorgenommenen Änderungen von Knoten (NDr,p,n) der Datenseite (Pr,p) unmittelbar aus dem Datenseitenteil (PPr,P) erkennbar sind; und wobei die Revisionsreferenz (RRr) zumindest eine Seitenteilreferenz (PPRr,P) auf den für diese Revision (Rr) abgespeicherten Datenseitenteil (PPr,P) enthält.10. A method for storing a plurality of revisions (R 1 -) of tree-structured, hierarchically linked data, the data being stored in a memory system as a node of a tree encoded for internal representation and made accessible via an interface, each node (ND r , p , n) is stored in a node field (NDA rp ) of a data page (P r , p ) at a position (n), and wherein for each revision (R 1 -) a revision reference (RRr) is applied to the data page (P r , p ), wherein for each revision (R 1 -) with respect to the previous revision (R r- i), changes of nodes (ND r , p , n ) of the data page (P rp ) in a node list (NDL r , p ) of a data page part (PP r , P ) are stored in such a way that the changes of nodes (ND r , p , n ) of the data page (P r , p ) made during the revision (R r ) are taken directly from the data page part (PP r , P ) are recognizable; and wherein the revision reference (RR r ) contains at least one page sub-reference (PPR r , P ) on the data page part (PP r , P ) stored for this revision (R r ).
11. Verfahren nach Anspruch 10, wobei die Datenseite (Pr,p) ein Seitenreferenzfeld (PRAr p) enthält, in dem an wenigstens einer Position (n) wenigstens eine Seitenreferenz (PRr,P' PRr,P*) auf wenigstens eine weitere Datenseite (Pr,p', ..., Pr,p«), die eine Kinder- Datenseite der Datenseite (Pr,p) ist, gespeichert wird; und wobei für jede Revision (Rr) bezogen auf die vorherige Revision (Rr-i) Änderungen von Seiten referenzen (PRr,P', •■., PRr,P*) auf Kinder-Datenseiten (Pr,P' Pr,P*) der Datenseite (Pr,p) in einer Seitenreferenzliste (PRLr,p) des Datenseitenteils (PPr,p) abgespeichert werden.11. The method of claim 10, wherein the data page (P r , p ) includes a page reference field (PRA rp ) in which at least one position (n) at least one page reference (PR r , P 'PR r , P *) on at least another data page (P r , p ' , ..., P r, p ") which is a child data page of the data page (P r , p ) is stored; and where for each revision (R r ) relative to the previous revision (R r- i) changes of page references (PR r , P ', • ■., PRr, P *) to child data pages (P r , P ' P r , P *) of the data page (P r, p ) in a page reference list (PRL r , p ) of the data page part (PP r , p ) are stored.
12. Verfahren nach Anspruch 11 , wobei für jede Revision (R1-) bezogen auf die vorherige Revision (RM) Änderungen von Knoten (NDr,p,n) der Kinder-Datenseiten (Pr,P', ..., Pr,p*) in einer Knotenliste (NDLr,p) eines Datenseitenteils (PPr,P) derart abgespeichert werden, dass die während der Revision (R1-) vorgenommenen Änderungen von Knoten (NDriP,n) der Kinder-Datenseiten (Pr,P' Pr,P*) unmittelbar aus dem Datenseitenteil12. The method of claim 11, wherein for each revision (R 1 -) with respect to the previous revision (RM) changes of nodes (ND r , p , n ) of the child data pages (P r , P ', ..., P r , p *) are stored in a node list (NDL r , p ) of a data page part (PP r , P ) in such a way that the changes made during the revision (R 1 -) by nodes (ND riP , n ) of the child page Data pages (P r , P 'P r , P *) directly from the data page part
(PPr p) erkennbar sind; und wobei die Seitenreferenz (PRr,P' PRr,P*) zumindest eine Seitenteilreferenz(PP rp ) are recognizable; and wherein the page reference (PR r , P 'PRr, P *) at least one page sub-reference
(PPRr,p) auf den für diese Revision (Rr) abgespeicherten Datenseitenteil (PPr,P) enthält.(PPR r , p ) to the data page part (PP r , P ) stored for this revision (R r ).
13. Verfahren nach einem der Ansprüche 10 bis 12, wobei die Knotenliste (NDLr p) des Datenseitenteils (PPr,P) lediglich die während der Revision (Rr) vorgenommenen Änderungen von Knoten (NDr,p,n) der Datenseite (Pr,p) enthält, so dass es sich insbesondere um ein Datenseitenteil (PDr,p) handelt, oder die Knotenliste (NDLr p) des Datenseitenteils (PPr,P) auch den Zustand von Knoten (NDr,p,n) der Datenseite (Pr,p) enthält, die nicht während der Revision (Rr) modifiziert wurden, so dass es sich insbesondere um ein Datenseitenteil (PSr p) handelt, welches das Ergebnis aller vergangenen Änderungen sowie der Änderungen während der Revision (R1-) speichert und somit den vollständigen Dateninhalt der Datenseite (Pr,p) enthält.13. The method according to any one of claims 10 to 12, wherein the node list (NDL rp ) of the data page part (PP r , P ) only during the revision (R r ) made changes of nodes (ND r , p , n ) of the data side ( P r, p ), so that it is in particular a data page part (PD r, p ), or the node list (NDL rp ) of the data page part (PP r , P ) and the state of nodes (ND r , p , n ) of the data page (P r , p ) which were not modified during the revision (Rr), in particular being a data page part (PS rp ) representing the result of all past changes as well as the changes during the revision (R 1 -) stores and thus contains the complete data content of the data page (P r , p ).
14. Verfahren nach einem der Ansprüche 10 bis 13, wobei die Revisionsreferenz (RRr) Angaben über den Autor und den Zeitpunkt der Erstellung der Revision (R1-) enthält. 14. The method according to any one of claims 10 to 13, wherein the revision reference (RR r ) contains information about the author and the time of the preparation of the revision (R 1 -).
15. Verfahren nach einem der Ansprüche 10 bis 14, wobei jede Datenseite (Pr,p, Pr,P'> •••, Pr,p*) an eine Revisionsnummer (r) und eine15. The method according to any one of claims 10 to 14, wherein each data page (P r , p , P r , P '> •••, Pr, p *) to a revision number (r) and a
Seitennummer (p) gebunden ist, die die Datenseite eindeutig von allen anderenPage number (p) is bound to uniquely identify the data page from all others
Datenseiten unterscheidet, wobei jedes Datenseitenteil (PPr,P) während allerData pages, each data page part (PP r , P ) during all
Revisionen (Rr) dieselbe Seitennummer (p) erhält, und jede Seitenteilreferenz (PPRr,p) auf ein Datenseitenteil (PPr,P) mit derRevisions (Rr) receives the same page number (p), and each page subreference (PPR r , p ) to a data page part (PP r , P ) with the
Revisionsnummer (r) der Revision (Rr), während der dieses DatenseitenteilRevision number (r) of the revision (R r ) during which this data page part
(PPr.p) erstellt wurde, assoziiert ist. (PPr.p) was created.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102008024809A DE102008024809B3 (en) | 2008-05-23 | 2008-05-23 | A method of storing a plurality of revisions of tree-structured data family parts |
DE102008024809.6 | 2008-05-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009141162A1 true WO2009141162A1 (en) | 2009-11-26 |
Family
ID=40996734
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2009/003679 WO2009141161A1 (en) | 2008-05-23 | 2009-05-25 | Method for hosting a plurality of versions of memory pages in a storage system and accessing the same |
PCT/EP2009/003680 WO2009141162A1 (en) | 2008-05-23 | 2009-05-25 | Method for storing a plurality of revisions of data families linked tree structure-like |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2009/003679 WO2009141161A1 (en) | 2008-05-23 | 2009-05-25 | Method for hosting a plurality of versions of memory pages in a storage system and accessing the same |
Country Status (2)
Country | Link |
---|---|
DE (1) | DE102008024809B3 (en) |
WO (2) | WO2009141161A1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061697A (en) * | 1996-09-11 | 2000-05-09 | Fujitsu Limited | SGML type document managing apparatus and managing method |
US20050234847A1 (en) * | 2004-04-15 | 2005-10-20 | Damien Le M | Information storage apparatus, information storage method and information storage processing program |
WO2006102512A2 (en) * | 2005-03-24 | 2006-09-28 | Computer Associates Think, Inc. | Change control management of xml documents |
US20070005632A1 (en) * | 2005-06-30 | 2007-01-04 | Microsoft Corporation | Method for efficient maintenance of XML indexes |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0541281B1 (en) * | 1991-11-04 | 1998-04-29 | Commvault Systems, Inc. | Incremental-computer-file backup using signatures |
US6938075B1 (en) * | 1998-12-24 | 2005-08-30 | Computer Associates Think, Inc. | Method and apparatus for hierarchical software distribution packages including composite packages |
US6460052B1 (en) * | 1999-08-20 | 2002-10-01 | Oracle Corporation | Method and system for performing fine grain versioning |
US7111233B1 (en) * | 2000-03-09 | 2006-09-19 | Electronic Data Systems Corporation | Method and system for applying XML schema |
AU2002227072A1 (en) * | 2000-12-12 | 2002-06-24 | 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 |
US9760652B2 (en) * | 2004-06-21 | 2017-09-12 | International Business Machines Corporation | Hierarchical storage architecture using node ID ranges |
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 |
US7529726B2 (en) * | 2005-08-22 | 2009-05-05 | International Business Machines Corporation | XML sub-document versioning method in XML databases using record storages |
-
2008
- 2008-05-23 DE DE102008024809A patent/DE102008024809B3/en not_active Expired - Fee Related
-
2009
- 2009-05-25 WO PCT/EP2009/003679 patent/WO2009141161A1/en active Application Filing
- 2009-05-25 WO PCT/EP2009/003680 patent/WO2009141162A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061697A (en) * | 1996-09-11 | 2000-05-09 | Fujitsu Limited | SGML type document managing apparatus and managing method |
US20050234847A1 (en) * | 2004-04-15 | 2005-10-20 | Damien Le M | Information storage apparatus, information storage method and information storage processing program |
WO2006102512A2 (en) * | 2005-03-24 | 2006-09-28 | Computer Associates Think, Inc. | Change control management of xml documents |
US20070005632A1 (en) * | 2005-06-30 | 2007-01-04 | Microsoft Corporation | Method for efficient maintenance of XML indexes |
Non-Patent Citations (2)
Title |
---|
NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY-INFORMATION TECHNOLOGY LABORATORY: "The Keyed-Hash Message Authentication Code (HMAC)", FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION - FIPS PUB 198, GAITHERSBURG, MD (USA), 6 March 2002 (2002-03-06), pages 1 - 20, XP002509798, Retrieved from the Internet <URL:http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf> [retrieved on 20090112] * |
YASUHIRO ET AL: "Revision Control System Using Delta Script of Syntax Tree", SOFTWARE CONFIGURATION MANAGEMENT. ICSE SCM WORKSHOP. SELECTEDPAPERS, XX, XX, 1 January 2005 (2005-01-01), pages 133 - 149, XP002408839 * |
Also Published As
Publication number | Publication date |
---|---|
WO2009141161A1 (en) | 2009-11-26 |
DE102008024809B3 (en) | 2009-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112007003678B4 (en) | Data processing device and method for data processing | |
DE69913618T2 (en) | Method for generating a checkpoint that describes a base file and method for generating a difference file between an updated file and a base file | |
DE102005023128B4 (en) | System and method for sharing storage resources between multiple files | |
DE112007003693B4 (en) | Data processing device and method for data processing | |
DE102008015662B4 (en) | Elimination of data | |
DE60224030T2 (en) | ADMINISTRATIVE AND SYNCHRONIZATION APPLICATION FOR NETWORK FILE SYSTEM | |
DE112007003645T5 (en) | Data processing device and method for data processing | |
DE102020111199B4 (en) | BACKUPS OF FILE SYSTEM INSTANCES OF ENCRYPTED DATA OBJECTS | |
EP3084638A1 (en) | Posix-compatible file system, method for producing a file list and memory apparatus | |
DE102011010613A1 (en) | A method of storing and restoring data, using the methods in a storage cloud, storage server and computer program product | |
DE112017000167B4 (en) | Distributed data deduplication in a processor grid | |
DE112012002332B4 (en) | Protecting a Control Vector in a Cryptographic System | |
DE102014116393A1 (en) | Method and system for secure archiving of data | |
EP1883906A1 (en) | Portable data carrier featuring secure data processing | |
DE102021102442A1 (en) | CATALOG OF FILES ASSOCIATED WITH SNAPSHOTS | |
DE102017104080A1 (en) | GENERALIZED VERIFICATION SCHEME FOR SAFE METADATA MODIFICATION | |
EP3159824B1 (en) | Method for processing an encrypted print job | |
DE19839680A1 (en) | Altering control equipment memory contents involves securing first and/or second programs and/or data by copying before clearing, copying and/or reading in program/data | |
US7949630B1 (en) | Storage of data addresses with hashes in backup systems | |
DE112012005635T5 (en) | Incremental modification of an error detection code | |
EP3563261A1 (en) | Bit-sequence-based data classification system | |
DE102010011344A1 (en) | Method for producing and managing a large-volume long-term archive | |
DE102018213615A1 (en) | Cryptography module and operating method therefor | |
DE102008024809B3 (en) | A method of storing a plurality of revisions of tree-structured data family parts | |
DE102021127177B4 (en) | CONTAINER INDEX WITH A TRACKING DATA STRUCTURE |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09749652 Country of ref document: EP Kind code of ref document: A1 |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09749652 Country of ref document: EP Kind code of ref document: A1 |