DE60310255T2 - Skalierbarer datenzugang in einem beliebig grossen dokument - Google Patents

Skalierbarer datenzugang in einem beliebig grossen dokument Download PDF

Info

Publication number
DE60310255T2
DE60310255T2 DE60310255T DE60310255T DE60310255T2 DE 60310255 T2 DE60310255 T2 DE 60310255T2 DE 60310255 T DE60310255 T DE 60310255T DE 60310255 T DE60310255 T DE 60310255T DE 60310255 T2 DE60310255 T2 DE 60310255T2
Authority
DE
Germany
Prior art keywords
document
section
memory
xml
data structure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60310255T
Other languages
English (en)
Other versions
DE60310255D1 (de
Inventor
Sivasankaran Palo CHANDRASEKAR
Ravi Fremont MURTHY
Nipun Santa Clara AGARWAL
Eric San Francisco SEDLAR
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Application granted granted Critical
Publication of DE60310255D1 publication Critical patent/DE60310255D1/de
Publication of DE60310255T2 publication Critical patent/DE60310255T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft Verfahren zum Zugreifen auf Daten in einem beliebig großen Dokument, mittels denen eine Anpassung an die einer Vorrichtung zur Verfügung stehenden eingeschränkten Ressourcen bewirkt wird, und insbesondere zum Verarbeiten von Daten, die in einem XML-Dokument gespeichert sind, das größer ist, als ein verfügbarer Speicher manifestieren kann.
  • HINTERGRUND DER ERFINDUNG
  • Die Anzahl von Firmen, die Informationen auf elektronischem Weg austauschen, nimmt stark zu. Die Firmen, welche die Informationen austauschen, haben die Notwendigkeit einer allgemeinen Norm zur Darstellung von Daten erkannt. "XML" (erweiterbare Auszeichnungssprache) entwickelt sich gerade rasch zum allgemeinen Standard zur Darstellung von Daten.
  • XML beschreibt einen Datenkörper und verleiht diesem Struktur, und zwar beispielsweise einer Datei oder einem Datenpaket, das hier als XML-Dokument bezeichnet wird. XML-Standards stellen Tags (Markierungen) bereit, die Abschnitte eines XML-Dokumentes begrenzen und die als XML-Elemente, oder einfach "Elemente" bezeichnet werden.
  • Ein Element kann verschiedene Typen von Daten enthalten, einschließlich Elementattributen und anderen Elementen. Ein Element, das in einem anderen Element enthalten ist, wird als ein Abkömmling oder Nachkomme dieses Elementes bezeichnet. Durch Definieren eines Elementes, das Attribute und Abkömmlingselemente enthält, definiert das XML-Dokument hierarchische Beziehungen vom Eltern-Kind-Typ zwischen dem Element, dessen Abkömmlingselementen und dessen Attributen.
  • Der Begriff Knoten wird verwendet, um auf einzelne Elemente und Elementattribute in einem XML-Dokument Bezug zu nehmen. Somit definiert ein XML-Dokument eine Hierarchie von Knoten, die Eltern-Kind-Beziehungen aufweisen. Eine derartige Hierarchie wird hier als Knoten-Baum oder als Knoten-Hierarchie bezeichnet.
  • Der Begriff Attribut wird hier verwendet, um auf einen diskreten Teil oder ein Element einer Struktur, beispielsweise einer Datenstruktur oder eines Objektes Bezug zu nehmen, das zu einem Objekttyp gemäß der objektorientierten Methodik gehört. Ein Attribut kann ein komplexes Konstrukt sein, das eines oder mehrere weitere Attribute enthält, die hier als Element des Attributes bezeichnet werden. XML-Standards sorgen für Elementattribute in Form von Name-Wert-Paaren. Zwar umfasst der Begriff Attribut, wie hier verwendet, die Bedeutung Elementattribute, der Begriff ist jedoch nicht darauf eingeschränkt.
  • Industriestandards definieren Strukturen zur Darstellung von XML-Dokumenten. Ein solcher Standard ist das DOM (Document Object Model), das durch das W3C (World Wide Web Consortium) promulgiert wird.
  • Damit ein Computer mit einem XML-Dokument umgehen kann, wird im Speicher eine Darstellung des XML-Dokumentes erzeugt. Im Allgemeinen wird ein XML-Dokument aus einer Speichervorrichtung (d. h. einer Platte, die XML-Einheiten enthaltende Dateien speichert) oder aus über einen Kommunikationskanal empfangenen Daten geladen, um im Speicher dargestellte Datenstrukturen zu erzeugen, die verwendet werden, um ein XML-Dokument darzustellen. Die im Speicher befindlichen Datenstrukturen werden mittels Software und Programme ausführenden Computerprozessen gehandhabt. Der Prozess des Ladens eines XML-Dokumentes in den Speicher und des Erzeugens einer im Speicher befindlichen Darstellung des XML-Dokumentes wird als "Manifestierung" eines XML-Dokuments bezeichnet. Typischerweise greifen Anwendungen auf die durch die Manifestierung erzeugten, im Speicher befindlichen Datenstrukturen zu und handhaben diese, und zwar mittels einer API (Programmierschnittstelle).
  • Bei herkömmlichen Lösungsansätzen zur Manifestierung erfolgt, wenn ein XML-Dokument manifestiert wird, ein Manifestieren des gesamten XML-Dokumentes. XML-Dokumente können sehr groß sein und somit eine beträchtliche Menge an Speicher erfordern, wenn sie manifestiert werden. Einige XML-Dokumente sind so groß, dass der Speicher, der benötigt wird, um diese zu manifestieren, bei weitem den diesen zugewiesenen Speicher übersteigt und auch bei weitem die Kapazität vieler Computer übersteigen kann.
  • Basierend auf dem zuvor Erwähnten, ist es erwünscht, einen Mechanismus bereitzustellen, der die Speichergröße verringert, die benötigt wird, um ein XML-Dokument zu manifestieren.
  • Bei einem Lösungsansatz wird ein XML-Dokument in eine Mehrzahl von ladbaren Einheiten aufgeteilt, die separat in Datenbankobjekten eines Datenbanksystems gespeichert werden können. Dann werden, wenn ein Prozess versucht, Daten aus dem XML-Dokument zu manifestieren, lediglich die ladbaren Einheiten, welche die interessierenden Daten enthalten, aus der Datenbank in den Speicher geladen. Es erfolgt keine Manifestierung des gesamten XML-Dokumentes. Eine ladbare Einheit ist ein Satz aus einem oder mehreren Knoten eines XML-Dokumentes. Wenn ein einziger Knoten in der ladbaren Einheit manifestiert ist, sind alle in der ladbaren Einheit befindlichen Knoten ebenfalls manifestiert. Möglicherweise, jedoch nicht notwendigerweise, können ladbare Einheiten mit Inhaltsstrukturen korrelieren, welche die Knoten im dauerhaften Speicher speichern. Dieser Lösungsansatz wird nachfolgend als Lösungsansatz von Pannala bezeichnet.
  • Zwar ist das System von Pannala für viele Zwecke nützlich, jedoch können gewisse Operationen keinen Nutzen aus den separat gespeicherten und geladenen ladbaren Einheiten ziehen. Derartige Operationen verlangen weiterhin nach übermäßig großen Speichermengen; sie bewerkstelligen keine Anpassung an große XML-Dokumente. Derartige Operationen beinhalten Operationen, die an vielen oder allen ladbaren Einheiten eines großen XML-Dokumentes "Interesse ausdrücken", sowie Operationen, die anfänglich ein großes XML-Dokument insgesamt in einen dauerhaften Speicher, beispielsweise in ein Datenbanksystem einbringen.
  • Basierend auf dem zuvor Erwähnten, ist es erwünscht, Verfahren zum Reduzieren der Speichermenge bereitzustellen, die Operationen benötigen, bei denen die Menge an ladbaren Einheiten eines XML-Dokumentes ausreicht, einen verfügbarer Speicher zu übersteigen.
  • Außerdem nimmt der Lösungsansatz von Pannala an, dass die Inhalte der in den Speicher geladenen ladbaren Einheiten dort nicht verändert werden, so dass eine ladbare Einheit immer dadurch ersetzt werden kann, dass die ladbare Einheit aus dem dauerhaften Speicher nachgeladen wird. Jedoch unterscheiden sich bei vielen Operationen bei einer oder mehreren der ladbaren Einheiten die Inhalte im Speicher von denen, die separat im dauerhaften Speicher gespeichert sind. Beispielsweise befinden sich, während des anfänglichen Einbringens in ein Datenbanksystem, keine der ladbaren Einheiten, die als erstes in den Speicher geladen werden, als separat gespeicherte Einheiten in der Datenbank des dauerhaften Speichers. Man bezeichnet derartige ladbare Einheiten als "dirty" (verfälscht). Der Lösungsansatz von Pannala ist für ladbare "Dirty"-Einheiten nicht geeignet.
  • Basierend auf dem zuvor Erwähnten, ist es weiter erwünscht, Verfahren zum Bewahren von Information während Operationen bereitzustellen, bei denen ladbare "Dirty"-Einheiten eines XML-Dokumentes beteiligt sind.
  • Die letzten Lösungsansätze, die in diesem Abschnitt beschrieben wurden, könnte man verfolgen, diese sind jedoch nicht notwendigerweise Lösungsansätze, die zuvor geplant oder verfolgt wurden. Daher sind, wenn hier nicht anders angegeben, die in diesem Abschnitt beschriebenen Lösungsansätze nur aufgrund des Vorhandenseins dieser Lösungsansätze in diesem Hintergrundabschnitt, nicht als Stand der Technik für die Ansprüche dieser Anmeldung zu betrachten.
  • Der Artikel "The XML Garbage Collector" von K. Chakraborty und EP 1 241 589 A2 offenbaren jeweils eine Speicherbereinigungseinrichtung, die Knoten eines XML-DOM-Baumes, deren Nutzung zeitlich am weitesten zurückliegt, aus einem Cache-Speicher entfernt. Ein fester Schwellenwert für die Größe des verwendeten Cache-Speichers ist festgelegt. Wenn der Schwellenwert überschritten wird, entfernt die Speicherbereinigungseinrichtung Einträge aus dem Cache, bis die Cache-Speichernutzung unter den Schwellenwert abfällt. Ein LRU-Algorithmus (= Algorithmus auf Basis der zeitlich am weitesten zurückliegenden Nutzung) wird verwendet, um zu bestimmen, welche Knoten während dieses Prozesses aus dem Cache entfernt werden sollen.
  • US 2002/0056025 A1 offenbart ein Speicherverwaltungsverfahren, das eine Vielschicht-Warteschlangen-Verwaltungsstruktur verwendet. Mindestens eine Puffer-Warteschlange ist in einer Pufferschicht enthalten, und mindestens eine Cache-Warteschlange ist in einer Cache-Schicht enthalten. Alle Warteschlangen folgen einer LRU-Organisierung (Organisierung, die sich an der zeitlich am weitesten zurückliegenden Nutzung orientiert. Die "vertikale Verwaltung" von Speicherblöcken, d. h. die Zuweisung und die Neuzuweisung von Speicherblöcken zwischen der Pufferschicht und der Cache-Schicht erfolgt auf Basis des Verbindungsstatus, d. h. ob auf einen Speicherblock aktuell zugegriffen wird, oder nicht.
  • Die Erfindung ist durch die unabhängigen Ansprüche definiert. Die abhängigen Ansprüche legen optionale Merkmale einiger Ausführungsformen der Erfindung dar.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung ist in den Figuren der anliegenden Zeichnungen beispielhaft und nicht einschränkend dargestellt, und in diesen sind ähnliche Elemente mit den gleichen Bezugszeichen bezeichnet; in diesen sind:
  • 1 ein Blockdiagramm, das Strukturen darstellt, die von einem Server verwendet werden, um ein XML-Dokument zu verarbeiten, das den verfügbaren Speicher übersteigt, gemäß einer Ausführungsform;
  • 2 ein Ablaufdiagramm, das ein zu einer hohen Ebene gehöriges Verfahren zur Verarbeitung eines einen verfügbaren Speicher übersteigenden XML-Dokumentes gemäß einer Ausführungsform darstellt; und
  • 3 ein Blockdiagramm, das ein Computersystem darstellt, in das eine Ausführungsform der Erfindung implementiert werden kann.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Ein Verfahren und ein Fertigungsgegenstand zum Zugreifen auf Daten in einem großen Dokument mittels einer Vorrichtung mit eingeschränkten Ressourcen wird beschrieben. In der folgenden Beschreibung werden zu Erläuterungszwecken zahlreiche spezifische Details dargelegt, um für ein grundlegendes Verständnis der Erfindung zu sorgen. Es ist jedoch offensichtlich, dass die Erfindung ohne diese spezifischen Details ausgeführt sein kann. In anderen Fällen sind wohlbekannte Strukturen in Vorrichtungen in Blockdiagrammform dargestellt, um unnötige Unklarheiten bei der Erfindung zu vermeiden.
  • Ausführungsformen der Erfindung werden hier im Kontext einer Verwendung der Gesamtheit oder eines Teils eines XML-Dokumentes beschrieben, welches, falls es vollständig im Speicher manifestiert wäre, die auf einem Datenbank-Server verfügbare Speichermenge überschreiten würde. Jedoch ist die Erfindung nicht auf diesen Kontext eingeschränkt. Weitere Ausführungsformen der Erfindung können auf andere Kontexte angewandt werden, bei denen der Server kein Datenbank-Server ist, sondern weitere Dienste basierend auf dem XML-Dokument bereitstellt. Bei noch weiteren Ausführungsformen kann das XML-Dokument als Eingabe für eine eigenständige Anwendung verwendet werden, bei der es sich nicht um einen Server handelt, d. h. eine Anwendung, die nicht auf Anfragen von einem separaten Client-Prozess antwortet. Bei einigen Ausführungsformen ist das Dokument, auf das zugegriffen wird, kein XML-Dokument, sondern ein Dokument, das aus mehrfachen Konstrukten gemäß einer weiteren Auszeichnungssprache besteht. Bei einigen Ausführungsformen ist es nicht der Speicher, der eingeschränkt ist, sondern irgendeine andere Ressource, wie beispielsweise Puffer oder eine Eingabe- oder Ausgabevorrichtung, die mit dem Host-Computer oder der das Dokument verarbeitenden Anwendung verbunden ist, oder ein Bandbreite einer Netzwerkverbindung, über die das Dokument gesendet werden soll.
  • Bei den dargestellten Ausführungsformen werden Abschnitte des XML-Dokumentes, auf die separat zugegriffen werden kann (beispielsweise die "ladbaren Einheiten", LU, von Pannala), in den Speicher geladen, und eine Nutzung dieser Abschnitte wird überwacht. Wenn zusätzlicher Speicher gewünscht wird, wird der Speicher, der einem oder mehreren dieser Abschnitte zugewiesen ist, freigegeben, und zwar basierend auf der Nutzung. Bei spielsweise wird der Speicher, der dem Abschnitt zugewiesen ist, dessen Nutzung zeitlich am weitesten zurückliegt, freigegeben. Der Abschnitt, der den ihm zugewiesenen Speicher "verliert", wird als "aus dem Speicher entladen" bezeichnet. Bei einigen Ausführungsformen wird, wenn der zu entladende Abschnitt "dirty" ist (z. B. er Daten enthält, die nicht dauerhaft als separater Abschnitt wie beispielsweise eine ladbare Einheit in einem oder mehreren Behältern einer Datenbank gespeichert sind), dann dieser Abschnitt dauerhaft gespeichert, bevor eine Neuzuweisung des Speichers zu einem weiteren Abschnitt des Dokumentes erfolgt. Da auf jede ladbare Einheit vom dauerhaften Speicher unabhängig zugegriffen werden kann, kann die ladbare Einheit aus dem dauerhaften Speicher anschließend ausgelesen werden, wenn diese erneut verwendet werden soll. Bei einigen Ausführungsformen wird der Abschnitt dauerhaft direkt in einer objektrelationalen Datenbankstruktur einer Datenbank gespeichert; bei einigen Ausführungsformen wird der Abschnitt dauerhaft in einer temporären Datei in einer dauerhaften Speichervorrichtung gespeichert.
  • Die Verfahren der Erfindung ermöglichen, dass eine Dokumentverarbeitungsvorrichtung mit eingeschränkten Ressourcen angepasst wird, um ein großes Dokument zu verarbeiten, das andernfalls die verfügbaren Ressourcen übersteigen würde. Dies ist ein Vorteil, wenn ein großes XML-Dokument, das nicht vollständig im verfügbaren Speicher manifestiert werden kann, zum ersten Mal als Vielzahl von ladbaren Einheiten in eine Datenbank oder einen anderen dauerhaften Speicher eingebracht wird. Dies ist auch ein Vorteil, nachdem die unterschiedlichen Abschnitte des großen XML-Dokumentes separat in einen dauerhaften Datenspeicher eingebracht wurden, wenn bei einer Operation mehr Abschnitte involviert sind als in einem Speicher gleichzeitig manifestiert werden können, oder wenn die Operation die Inhalte einer ladbaren Einheit modifiziert. Beispiele derartiger Operationen sind eine Operation, um das gesamte Dokument für eine Darstellung auf einer graphischen Benutzeroberfläche unter Verwendung eines XML-Stylesheet (XML-Formatvorlage) zu formatieren, und eine Operation, die beliebige Elemente eines großen XML-Dokumentes editiert.
  • GESAMTAUFBAU
  • 1 ist ein Blockdiagramm, das Datenstrukturen darstellt, die von einem Server in einem XML-Verarbeitungssystem 100 verwendet werden, um ein XML-Dokument zu verarbeiten, das einen verfügbaren Speicher übersteigt, gemäß einer Ausführungsform. Das System 100 beinhaltet einen Datenbank-Server 120, der einen schnellen Server-Speicher 150 beinhaltet, der zur Verarbeitung eines XML-Dokumentes zugewiesen wird. Wie hier verwendet, bezeichnet der Begriff schneller Speicher einen Speicher, der für einen Prozessor sehr schnell verfügbar ist, um Daten und Anweisungen außerhalb des Prozessors zu speichern. Bei aktuellen Technologien weist der zu diesem Zweck verwendete Speicher eine schnelle Reaktionszeit auf; jedoch bleiben Daten in einem derartigen Speicher nicht bestehen, wenn die Stromversorgung des Speichers ausfällt. Tendenziell ist schneller Speicher teurer als andere Speichertypen, und ist daher häufig knapper als andere Speichertypen. Der Server 120 beinhaltet auch eine oder mehrere dauerhafte Speichervorrichtungen, die für den Server einen dauerhaften Speicher 130 bereitstellen. Bei aktuellen Technologien bleiben die Daten in einem derartigen dauerhaften Speicher erhalten, wenn die Stromversorgung ausfällt; jedoch ist ein derartiger Speicher langsam und wird für eine Verwendung als sehr schnell verfügbarer Speicher für einen Prozessor nicht angestrebt. Der dauerhafte Speicher beinhaltet einen Speicherbereich, der für einen temporären Speicher 132 reserviert ist, und einen Speicherbereich, der für den Datenbank-Speicherraum 140 verwendet wird.
  • Der Datenbank-Speicherraum 140 beinhaltet einen Speicher für eine oder mehrere objektrelationale Strukturen 144a, 144b und weitere, die durch Ellipsen 146 angegeben sind, die nachfolgend hier insgesamt als objektrelationale Strukturen 144 bezeichnet werden. Die objektrelationalen Strukturen 144 speichern Datenobjekte in einer oder mehreren relationalen Datenbankstrukturen, wie beispielsweise Tabellen, Zeilen, Spalten und gespeicherten Prozeduren.
  • Das System 100 verarbeitet eine Datenstruktur 102 vom XML-Dokumenttyp, welche die Attribute eines jeden Elementtyps definiert, die durch ein XML-Dokument, die eine Instanz des Typs ist, verwendet werden kann. Die Datenstruktur kann auf einem beliebigen computerlesbaren Medium vorliegen, wie in einem späteren Abschnitt noch detaillierter beschrieben wird, welches von einem Server 120 gelesen werden kann, beispielsweise auf einer entnehmbaren magnetischen oder optischen Platte, oder über einen Kommunikationskanal. Der Datenbank-Speicherraum 140 beinhaltet einen Abbildungsspeicher 142 zwischen den Elementattributen, oder Elementen, die in den XML-Dokumenten und den Datenobjekten in einer oder mehreren objektrelationalen Strukturen 144 verwendet werden. Das System 100 erzeugt die Inhalte des Abbildungsspeichers 142, basierend auf den Inhalten der Datenstruktur 102 vom XML-Dokumenttyp unter Verwendung eines beliebigen in der Technik bekannten Mechanismus. Bei einigen Ausführungsformen werden die objektrelationalen Strukturen tatsächlich basierend auf den Inhalten der Datenstruktur 102 vom XML-Dokumenttyp definiert und erzeugt. Bei einer Ausführungsform wird der in Pannala beschriebene Mechanismus verwendet, um Elemente und Attribute der Datenstruktur vom XML-Dokumenttyp auf Datenobjekte der objektrelationalen Datenstrukturen 144 abzubilden.
  • Ein XML-Dokument 110 ist eine Instanz des Typs, die in der Datenstruktur 102 definiert ist. Das XML-Dokument 110 beinhaltet eines oder mehrere Elemente, die jeweils eines oder mehrere Attribute umfassen können, bei denen es sich jeweils um ein weiteres Element handeln kann, wie in der Datenstruktur 102 vom Dokumenttyp definiert. Das XML-Dokument 110 stellt auf diese Weise eine spezielle Hierarchie der Knoten her, wobei jeder Kind-Knoten ein Attribut seines Eltern-Knoten repräsentiert, und jedes Attribut einen für seinen Typ geeigneten Wert hat.
  • Zu Darstellungszwecken sei angenommen, dass ein XML-Dokument 110 mehrere Attribute hat, einschließlich eines Attributes, das durch das Element 112a repräsentiert ist, und eines weiteren Attributes, das durch das Element 112b repräsentiert ist. Weiter sei angenommen, dass das Element 112a mehrere Attribute aufweist, einschließlich Attributen, die durch Elemente 114a, 114b, 115 und weitere Elemente repräsentiert sind, die durch die Ellipsen 113 repräsentiert sind. Weiter sei angenommen, dass Elemente 114a, 114b weitere Attribute beinhalten können, die weitere nicht dargestellte Elemente beinhalten. Es sei ebenfalls angenommen, dass ein Element 115 ein Block von Daten ist, die durch die Datenstruktur 102 vom XML-Typ nicht weiter unterteilt oder definiert sind. Es wird als "opakes" Element bezeichnet und kann ziemlich groß sein. Beispielsweise könnte das opake Element 115 einen Text für eine lange Beschreibung von Geschäftsbedingungen eines Kaufvertrages beinhalten, oder könnte eine Zeichenkette beinhalten, die eine genetische Codesequenz repräsentiert. Es sei weiter angenommen, dass das Element 112 mehrere Attribute beinhaltet, einschließlich Attributen, die durch die Elemente 116, 117 repräsentiert sind, sowie weiteren Elementen, die durch die Ellipsen 118 repräsentiert sind.
  • Der Server erstellt eine oder mehrere ladbare Einheiten (LU) aufweisende Datenstrukturen, wie beispielsweise 152a, 152b, und weitere, die durch die Ellipsen 153 repräsentiert sind und nachfolgend insgesamt als LU-Datenstrukturen 152 bezeichnet werden. Während der Verarbeitung werden Daten für einen oder mehrere Knoten des XML-Dokumentes 110 im Speicher 150 für ein Speichern im dauerhaften Speicher 130 in eine LU umgewandelt. Für einige LU sind die Werte der Attribute in der LU enthalten. Für einige LU ist der Wert für ein Attribut, wie beispielsweise ein Kind-Element, nicht in der LU enthalten. Stattdessen ist das andere Attribut selbst eine unterschiedliche LU. Ein Ortsanzeiger (Locator) bezeichnet einen Ort für die unterschiedlichen LU im dauerhaften Speicher 130. Der Ortsanzeiger für die unterschiedlichen LU ist in der Eltern-LU enthalten. Somit enthält die LU genügend Information, um den verbleibenden Teil des XML-Baums, bei Knoten jenseits der Knoten in der Eltern-LU zu laden. Eine LU, die durch einen Ortsanzeiger in einer Eltern-LU bezeichnet ist, wird manchmal als eine "aus dem Rahmen fallende" LU ("Out-of-Line"-LU) bezeichnet, da sie häufig in einer oder mehreren Datenstrukturen gespeichert sind, die von der Datenstruktur, welche die Eltern-LU speichert, verschieden sind.
  • Der Server 120 erstellt auch eine Nutzungsdatenstruktur 156, in der die Nutzung der Daten in den LU-Datenstrukturen 152 aufgezeichnet ist. Beispielsweise beinhaltet die Nutzungsdatenstruktur 156 ein erstes Datenelement, das angibt, ob ein Prozess auf dem Server 120 mit der Verarbeitung der Daten fertig ist, die sich in einer speziellen LU-Datenstruktur 152 im Speicher 150 befinden. Bei einigen Ausführungsformen beinhaltet die Nutzungsdatenstruktur ein zweites Datenelement, das eine relative Zeit bezeichnet, zu der die Daten der speziellen LU-Datenstruktur 152 zuletzt verwendet wurden.
  • Der Server 120 erstellt auch eine Ortsanzeiger-Datenstruktur 158. Die Ortsanzeiger-Datenstruktur 158 enthält einen Ortsanzeiger, der angibt, wo auf einem dauerhaften Speicher 130 eine spezielle LU gespeichert ist, und ordnet diesem Ortsanzeiger eine LU-Kennung zu, wie beispielsweise einen LU-Namen. Beispielsweise bezeichnet ein Ortsanzeiger einen Dateinamen und eine Distanzadresse für Daten, die in einem großes Objekt (LOB) im temporären Speicher 132 gespeichert sind. Bei einem weiteren Beispiel bezeichnet ein Ortsanzeiger ein Datenelement, wie beispielsweise eine Zeile in einer oder mehreren objektrelationalen Strukturen 144 im Datenbank-Speicherraum 140. Objektrelationale Strukturen 144 können u. a. eine Datenbank-LOB-Struktur beinhalten.
  • GESAMTFUNKTION
  • 2 ist ein Ablaufdiagramm, das ein zu einer hohen Ebene gehöriges Verfahren 200 zur Verarbeitung eines den verfügbaren Speicher übersteigenden XML-Dokumentes gemäß einer Ausführungsform darstellt. Zwar sind die Schritte in 2 in einer speziellen Reihenfolge dargestellt, jedoch können bei weiteren Ausführungsformen die Schritte in einer unterschiedlichen Reihenfolge, oder zeitlich überlappend ausgeführt werden.
  • Bei Schritt 202 werden die ladbaren Einheiten für ein Dokument basierend auf den Elementtyp-Definitionen der Datenstruktur 102 vom XML-Dokumenttyp bestimmt. Normen für XML definieren eine schematische Sprache zum Spezifizieren der Struktur eines XML-Dokumentes, wobei diese Sprache in der Datenstruktur 102 verwendet werden kann. Die Struktur, die in der Datenstruktur 102 vom XML-Dokumententyp definiert ist, wird hier als XML-Schema bezeichnet. Der Datenbank-Server 120 verfügt über die Fähigkeit, eine Datenstruktur 102 vom XML-Dokumententyp zu interpretieren und objektrelationale Strukturen 144 zu erzeugen oder zu modifizieren, die zur Unterstützung des XML-Schemas benötigt werden. Beispielsweise wird das XML-Schemakonstrukt "<Komplextyp>" auf einen Objekttyp in der Datenbank abgebildet. Zusätzliche Benutzerkommentare im XML-Schema werden verwendet, um spezielle Speicherparameter zu spezifizieren, wodurch ermöglicht wird, das einige Abschnitte des XML-Dokumentes in zusätzlichen Tabellen, großen Objekten (LOBs) und anderen Datenbankbehältern gespeichert werden. Bei weiteren Ausführungsformen verfügt ein unterschiedlicher Server über die Fähigkeit, eine Datenstruktur 102 vom XML-Dokumententyp zu interpretieren und weitere Datenbehälter zu erzeugen oder zu modifizieren, die zur Unterstützung des XML-Schemas benötigt werden.
  • Bei Schritt 210 wird eine ladbare Einheit (LU) in den schnellen Speicher 150 geladen, welcher der Verarbeitung des XML-Dokumentes zugewiesen ist, und wird in einer LU-Datenstruktur 152 gespeichert. Die LU kann aus der Datenbank im Datenspeicherraum 140, oder aus einem temporären Speicher 132, oder aus einem XML-Dokument 110, oder irgendeinem anderen computerlesbaren Medium ausgelesen werden. Wenn eine LU, die einen Ortsanzeiger für eines oder mehrere Attribute verwendet, von einem temporären Speicher 132 oder einem XML-Dokument 110 geladen wird, wurde möglicherweise noch kein Wert für den Ortsanzeiger für den Ort des Attributes in der Datenbank erstellt; in derartigen Fällen wird ein temporärer Wert für den Ortsanzeiger verwendet, beispielsweise ein Name des ersten Elementes, das der LU entspricht.
  • Beispielsweise sei zu Darstellungszwecken angenommen, dass das Element 112a einer einzigen ladbaren Einheit entspricht, und Elemente 114a, 114b und 115 jeweils unterschiedliche ladbare Einheiten sind. Somit verwendet die LU für das Element 112a Ortsanzeiger anstelle von tatsächlichen Werten für Attribute, die den Elementen 114a, 114b und 115 entsprechen. Wenn das Element 112a aus einem neuen XML-Dokument 110 durch den Server 120 ausgelesen wird, wird eine LU-Datenstruktur 152 (z. B. 152b) im Speicher 150 erzeugt, um dieses Element zu speichern, jedoch wurden die Elemente 114a, 114b, 115 noch nicht in den dauerhaften Speicher 130 eingelesen oder gespeichert, und daher sind noch keine Ortsanzeiger für die LU-Datenstrukturen definiert, welche diese LUs speichern werden. Wenn diese Elemente gelesen werden, werden LU-Datenstrukturen erzeugt.
  • Bei Schritt 220 wird eine Nutzung für die LUs bestimmt, die in den Speicherdatenstrukturen 152 gespeichert sind, und die Nutzung wird in der Nutzungsdatenstruktur 156 gespeichert. Bei einer Ausführungsform beinhaltet die Nutzungsdatenstruktur 156 ein LU-Speicheradressenfeld (nachfolgend als "MEM_ADDR" bezeichnet), ein Zählfeld (nachfolgend als "ZÄHLER" bezeichnet) und ein Zeitfeld (nachfolgend als "ZEIT" bezeichnet), und zwar für jede LU-Datenstruktur im Speicher 150. Bei einigen Ausführungsformen ist die Nutzerdatenstruktur 156 von den LU-Datenstrukturen 152 separat, und ein separater Datensatz wird der Benutzerdatenstruktur 156 für jede LU-Datenstruktur 152 hinzugefügt. Wenn eine LU-Datenstruktur 152 im Speicher 150 erzeugt wird, wird eine Zeile der Nutzungsdatenstruktur 158 hinzugefügt, die Werte in diesen Feldern aufweist. Der Wert für das MEM_ADDR-Feld bezeichnet, an welcher Stelle im Speicher 150 die LU-Datenstruktur 152 beginnt. Der Wert für das ZÄHLER-Feld wird auf "1" gesetzt, um anzugeben, dass ein einziger Prozess die LU-Datenstruktur verwendet (in diesem Fall der Prozess, der die Datenstruktur erzeugt). Der Wert für das ZEIT-Feld wird auf die aktuelle Systemzeit gesetzt, um anzugeben, wann die LU-Datenstruktur zuletzt verwendet wurde.
  • Bei weiteren Ausführungsformen wird eine größere oder eine geringere Anzahl von Feldern in der Nutzungsdatenstruktur 156 verwendet. Beispielsweise ist bei einigen Ausführungsformen ein Größenfeld (nachfolgend als "GRÖSSE" bezeichnet) für jede LU-Datenstruktur 152 hinzugefügt, um die Größe der LU-Datenstruktur 152 anzugeben. Bei einigen Ausführungsformen wird ein "DIRTY"-Flag-Feld (nachfolgend als "DIRTY"-Feld bezeichnet) für jede LU-Datenstruktur 152 hinzugefügt, um anzuzeigen, ob Inhalte der LU "dirty" sind, d. h. sich möglicherweise von den Inhalten dieser LU unterscheiden, die sich im dauerhaften Speicher 130 befinden. Das DIRTY-Feld enthält einen oder zwei Werte; der eine Wert bezeichnet, dass die entsprechende LU "dirty" ist, und der andere bezeichnet, dass die entsprechende LU nicht "dirty" ist.
  • Bei einigen Ausführungsformen ist die Nutzungsdatenstruktur 156 Teil der LU-Datenstruktur 152. Bei derartigen Ausführungsformen kann das MEM_ADDR-Feld entfallen, und wenn eine LU-Datenstruktur 152 im Speicher 150 erzeugt wird, werden Werte in den übrigen Feldern der Nutzungsdatenstruktur 156 gespeichert, wie zuvor beschrieben.
  • Immer wenn ein Prozess des Servers 120, der eine LU-Datenstruktur 152 verwendet, beginnt, wird der Wert im ZÄHLER-Feld, welcher dieser LU entspricht, um 1 erhöht, und der Wert des ZEIT-Feldes, das dieser LU entspricht, wird aktualisiert. Der Beginn eines Prozesses, der eine LU-Datenstruktur verwendet, wird nachfolgend als ein "Berühren" dieser LU-Datenstruktur bezeichnet. Immer wenn ein Prozess eines Servers 120, der eine LU-Datenstruktur 152 verwendet, endet, wird der Wert im ZÄHLER-Feld, der dieser LU entspricht, um 1 vermindert, und der Wert des ZEIT-Feldes, der dieser LU entspricht, wird aktualisiert. Beispielsweise bewirkt ein Prozess, der einfach Daten aus dem XML-Dokument 110 lädt, dass der Wert des entsprechenden ZÄHLER-Feldes den Wert 1 hat, wenn die LU-Datenstruktur 152 erzeugt wird, und der Wert des ZÄHLER-Feldes wird auf Null vermindert, wenn die LU vollständig in die Datenstruktur 152 geladen ist. Sobald die LUs, die den Attributen entsprechen, geladen sind, wird die Eltern-LU als vollständig geladen betrachtet.
  • Bei einer dargestellten Ausführungsform beinhaltet die Nutzungsdatenstruktur 156 eine Liste von ladbaren Einheiten. Wenn der Wert des ZÄHLER-Feldes Null erreicht, wird die entsprechende LU-Datenstruktur zur Liste hinzugefügt. Ein beliebiges Verfahren kann verwendet werden, um die LU auf der Liste zu bezeichnen. Bei einem Beispiel wird eine LU in der Liste durch ihre Speicheradresse angegeben. Bei weiteren Ausführungsformen können von Null verschiedene Werte des ZÄHLER-Feldes verwendet werden, um zu bewirken, dass die LU-Datenstruktur zur Liste der ladbaren Einheiten hinzugefügt wird. Ausführungsformen, welche diese Liste verwenden, brauchen das ZEIT-Feld in der Nutzungsdatenstruktur 156 nicht beizubehalten, da die LU-Datenstrukturen zur Liste der nicht-ladbaren Einheiten in der zeitlichen Reihenfolge von der, die als erste unladbar wird, bis zu der, die als letzte unladbar wird, hinzugefügt werden.
  • Bei Schritt 230 wird bestimmt, ob eine Bedingung zur Freigabe von Speicher, der einer oder mehreren LU-Datenstrukturen 152 zugeordnet ist, erfüllt ist. Bei der dargestellten Ausführungsform besteht die Bedingung zur Freigabe von Speicher darin, dass die Gesamtnutzung von Speicher 150 durch die LU-Datenstrukturen 152 einen Schwellenwert übersteigt. Der Schwellenwert wird typischerweise so gewählt, dass er geringer ist als der gesamte zugewiesene Speicher. Beispielsweise kann die Bedingung zur Freigabe von Speicher sein, dass mehr als 75 % des Speichers 150 durch die LU-Datenstrukturen 152 verbraucht wird. Der gesamte verbrauchte Speicher kann dadurch berechnet werden, dass alle Werte der GRÖSSE-Felder in der Nutzungsdatenstruktur 156 aufaddiert werden. Wenn bei Schritt 230 bestimmt wird, dass die Bedingung zur Freigabe von Speicher nicht erfüllt ist, dann geht die Steuerung zurück auf Schritt 210, um die nächste LU in den schnellen Speicher zu laden. Wenn bei Schritt 230 bestimmt wird, dass die Bedingung zur Freigabe von Speicher erfüllt ist, dann geht die Steuerung weiter auf Schritt 240.
  • Bei Schritt 240 werden eine oder mehrere der LU-Datenstrukturen ausgewählt, um basierend auf der Nutzung entladen zu werden. Beispielsweise wird die LU-Daten struktur, deren Nutzung zeitlich am weitesten zurückliegt, für ein Entladen ausgewählt. Die LU-Datenstruktur, deren Nutzung zeitlich am längsten zurückliegt, kann dadurch bestimmt werden, dass die LU-Datenstruktur 152 aufgefunden wird, die dem frühesten Wert im ZEIT-Feld entspricht.
  • Um zu vermeiden, dass eine LU entladen wird, die noch von einem Prozess verwendet wird, werden bei einigen Ausführungsformen lediglich LU-Datenstrukturen, deren ZÄHLER-Werte Null sind, für ein Entladen in Betracht gezogen. Bei einigen derartigen Ausführungsformen wird die LU, deren Nutzung zeitlich am längsten zurückliegt, lediglich aus der Liste der entladbaren Einheiten bestimmt, wie zuvor beschrieben. Die LU-Datenstruktur, deren Nutzung zeitlich am weitesten zurückliegt, ist die erste LU-Datenstruktur, die in der Liste der entladbaren Einheiten angegeben ist.
  • Bei Schritt 250 wird der Speicher, welcher der ausgewählten LU-Datenstruktur zugewiesen ist, freigegeben. Bei einigen Ausführungsformen beinhaltet Schritt 250 die Schritte 252, 254, 256.
  • Bei Schritt 252 wird bestimmt, ob die Inhalte der ausgewählten LU-Datenstruktur 152 separat im dauerhaften Speicher gespeichert sind. Bei Ausführungsformen, bei denen ein DIRTY-Feld jeder LU-Datenstruktur 152 zugeordnet ist, kann Schritt 252 dadurch ausgeführt werden, dass bestimmt wird, ob das DIRTY-Feld angibt, dass die LU-Datenstruktur 152 nicht "dirty" ist. Wenn bestimmt wird, dass die ausgewählte LU-Datenstruktur 152 nicht "dirty" ist, dann geht die Steuerung weiter auf Schritt 256, der nachfolgend beschrieben ist, ohne dass ein Schreiben der Inhalte in den dauerhaften Speicher erfolgt.
  • Falls bei Schritt 252 bestimmt wird, dass die ausgewählte LU-Datenstruktur "dirty" ist, geht die Steuerung weiter auf Schritt 254. Bei Schritt 254 werden die LU-Inhalte in der LU-Datenstruktur 152 in eine LU-Datenstruktur im dauerhaften Speicher 130 geschrieben. Bei einigen Ausführungsformen wird die LU in eine Datenstruktur im dauerhaften Speicher 132 geschrieben. Bei einigen Ausführungsformen wird die LU in eine objektrelationale Struktur 144 im Datenbank-Speicherraum 140 geschrieben. In der einen oder anderen Ausführungsform wird ein Ortsanzeiger zurückgegeben, der einen Ort der LU im dauerhaften Speicher 130 angibt, so dass die LU zu einem späteren Zeitpunkt in den Spei cher 150 nachgeladen werden kann. Bei der dargestellten Ausführungsform wird der zurückgegebene Ortsanzeiger in der Ortsanzeiger-Datenstruktur 158 gespeichert, in welcher der Ortsanzeiger der LU-Kennung zugeordnet ist, beispielsweise dem LU-Namen oder dem Namen des ersten entsprechenden XML-Elementes.
  • Bei Schritt 256 erfolgt eine Aufhebung der Zuordnung des Speichers, welcher der ausgewählten LU-Datenstruktur 152 zugeordnet ist, im schnellen Speicher 152, und dieser wird für ein Zuordnen zu einer unterschiedlichen LU-Datenstruktur verfügbar gemacht. Bei einigen Ausführungsformen beinhaltet dieser Schritt ein Löschen der Nutzungsinformation entsprechend der ausgewählten LU-Datenstruktur aus der Nutzungsdatenstruktur 156. Die Steuerung geht dann zurück auf Schritt 230, um zu bestimmen, ob die Bedingung für ein Freigeben von Speicher weiterhin erfüllt ist.
  • Diese Verfahren erlauben, dass bei einer Vorrichtung mit eingeschränkten Ressourcen, wie beispielsweise einer eingeschränkten Menge an schnellem Speicher, eine Größenanpassung durchgeführt wird, um beliebig große Dokumente zu verarbeiten. Diese Fähigkeit ist ein Vorteil, wenn ein großes XML-Dokument, das in einem verfügbaren Speicher nicht vollständig manifestiert werden kann, als Vielzahl von ladbaren Einheiten das erste Mal in eine Datenbank oder einen anderen dauerhaften Speicher eingebracht wird. Diese Fähigkeit ist ebenfalls ein Vorteil, nachdem die unterschiedlichen Abschnitte eines großen XML-Dokumentes separat in einen dauerhaften Datenspeicher eingebracht wurden, wenn eine Operation eine größere Anzahl von Abschnitten beinhaltet als im Speicher gleichzeitig manifestiert werden können, und zwar beispielsweise während einer Bearbeitung eines gesamten XML-Dokumentes, um Styles (Formate) anzuwenden, die in einem XML-Stylesheet-Dokument (XSL-Dokument) spezifiziert sind. Die Nutzungsmöglichkeiten der dargestellten Ausführungsform für diese zwei Fälle sind in den nächsten zwei Abschnitten beschrieben.
  • EINBRINGEN EINES XML-DOKUMENTES IN EINE DATENBANK
  • Um diesen Fall zu erläutern, sei angenommen, dass die objektrelationalen Strukturen 144 in der Datenbank bereits basierend auf einem XML-Schema, das in der Datenstruktur 102 vom XML-Dokumenttyp dargelegt ist, erzeugt oder modifiziert wurden, und zwar wäh rend Schritt 202. Es sei weiter angenommen, dass das XML-Dokument 110 von irgendeiner externen Quelle, beispielsweise über einen Kommunikationskanal oder von einer entnehmbaren optischen Platte empfangen wird und in die Datenbank eingebracht werden soll. Es sei weiter angenommen, dass schneller Server-Speicher 150 zur Verarbeitung des Dokumentes 110 zugewiesen wurde. Es sei weiter angenommen, dass das ZÄHLER-Feld, das GRÖSSE-Feld und ein DIRTY-Feld der Nutzungsdatenstruktur 156 in jeder LU-Datenstruktur enthalten sind und dass die Nutzungsdatenstruktur 156, abgesehen von den LU-Datenstrukturen 152, eine Liste von nicht-ladbaren Einheiten beinhaltet, welche die LU-Datenstrukturen bezeichnet, deren ZÄHLER-Wert Null ist. Eine LU-Datenstruktur ist in der Liste durch die Speicheradresse des ersten Byte in der LU-Datenstruktur 152 identifiziert. Es sei weiter angenommen, dass die Menge an schnellem Speicher 150, die diesem Dokument zugeordnet ist, 2 Millionen Byte (2 MB) beträgt und der Schwellenwert zu Entladen einer ladbaren Einheit 1,5 MB beträgt.
  • Während Schritt 210 erzeugt der Server 120 eine erste LU-Datenstruktur 152a, die nachfolgend als "LU-A" bezeichnet wird, um den höchsten Knoten in der XML-Hierarchie, den Dokumentebenen-Knoten für Dokument 110, zu speichern. Das ZÄHLER-Feld wird mit dem Wert 1 initialisiert. Das DIRTY-Feld wird mit dem Wert 1 initialisiert, von dem zu Darstellungszwecken angenommen sei, dass er eine "dirty" LU-Datenstruktur bezeichnet. Die LU-Datenstruktur LU-A, 152a, ist "dirty", da die Inhalte noch nicht dauerhaft als LU gespeichert wurden. Das GRÖSSE-Feld wird mit einer minimalen Größe für die Dokumentebenen-LU initialisiert, die genügend Platz für die Werte der Attribute und Ortsanzeiger für die Elemente 112a, 112b, etc. bis zur minimalen Anzahl von für das Dokument 110 erwarteten Elementen beinhaltet, und zwar basierend auf dessen Schema. Es sei zu Darstellungszwecken angenommen, dass die GRÖSSE von LU-A den Wert 0,01 MB hat. Der Server 120 verarbeitet die ersten paar Zeilen des XML-Dokumentes 110 und lädt die Werte der Attribute des Dokumentes in die LU-A, 152a. Der Server gelangt dann zu einer Zeile des XML-Dokumentes, die mit dem Element 112a beginnt, bevor die Ortsanzeiger der "aus dem Rahmen fallenden" LUs, die den Elementen 112a, 112b zugeordnet sind, bestimmt wurden. Somit wird der Ladeprozess bei der LU-A nicht abgeschlossen, und das ZÄHLER-Feld bleibt auf einen Wert von 1 gesetzt.
  • Während Schritt 220 wird bestimmt, dass der gesamte von den LU-Datenstrukturen 152 verwendete Speicher die GRÖSSE von LU-A ist. Die Liste von nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 ist leer. Bei Schritt 230 wird bestimmt, dass diese Menge an Speicher (0,01 MB) den Schwellenwert von 1,5 MB nicht übersteigt, und die Steuerung geht zurück auf Schritt 210, um mit dem Laden der nächsten LU zu beginnen.
  • Während dieser Iteration von Schritt 210 erzeugt der Server 120 eine zweite zu einer ladbaren Einheit gehörige Datenstruktur 152b, die nachfolgend als "LU-B" bezeichnet wird, um den dem Element 112a zugehörigen Knoten zu speichern. Das ZÄHLER-Feld und das DIRTY-Feld werden jeweils mit dem Wert 1 initialisiert. Das GRÖSSE-Feld wird mit einer minimalen Größe für die LU für Element 112 initialisiert, welches ausreichend Platz für die Werte von Attributen und Ortsanzeigern für die Elemente 114a, 114b, 115, etc. bis zur minimalen Anzahl von für Element 112a erwarteten Elementen aufweist, und zwar basierend auf dem Schema von diesem. Zu Erläuterungszwecken sei angenommen, dass die Größe von LU-B den Wert 0,1 MB hat. Der Server 120 verarbeitet die ersten paar Zeilen des Elementes 112a und lädt die Werte der Attribute des Elementes in LU-B, 152b. Der Server gelangt dann zu einer Zeile des XML-Dokumentes, das mit dem Element 114a beginnt, bevor Ortsanzeiger der "aus dem Rahmen fallenden" LUs, die den Elementen 114a, 114b, 115 zugehörig sind, bestimmt werden. Somit wird der Ladeprozess bei LU-B nicht abgeschlossen, und das ZÄHLER-Feld bleibt auf einen Wert von 1 gesetzt.
  • Während der nächsten Iteration von Schritt 220 wird bestimmt, dass der gesamte von den LU-Datenstrukturen 152 verwendete Speicher die GRÖSSE von LU-A und LU-B ist. Die Liste von nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 ist leer. Bei der nächsten Iteration von Schritt 230 wird bestimmt, dass diese Menge an Speicher (0,11 MB) den Schwellenwert von 1,5 MB nicht übersteigt, und die Steuerung geht zurück auf Schritt 210, um mit dem Laden der nächsten LU zu beginnen.
  • Der Prozess fährt mit den nächsten LUs fort, die den Kind-Elementen von 112a zugehörig sind, einschließlich den Elementen 114a, 114b, 115. Zu Darstellungszwecken sei angenommen, dass Elemente 114a, 114b und 115 keine Kind-Elemente beinhalten und dass die Werte für die GRÖSSE-Felder der drei Elemente 0,2 MB, 0,2 MB bzw. 1,1 MB be trägt. Es sei weiter angenommen, dass, basierend auf dem Vorhandensein von Elementen 114b und 115, zusätzliche Ortsanzeiger zu LU-B hinzugefügt wurden und die Größe des GRÖSSE-Feldes in LU-B dadurch auf 0,11 vergrößert wird. Sobald ein jedes vollständig in die LU-Datenstrukturen LU-C, LU-D bzw. LU-E (nicht dargestellt) im Speicher 150 geladen ist, werden die Werte des ZÄHLER-Feldes auf Null vermindert, und die Adressen der drei LU-Datenstrukturen werden zur Liste der nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 hinzugefügt.
  • Während der nächsten Iteration von Schritt 220 wird bestimmt, dass der gesamte durch die LU-Datenstrukturen 152 verwendete Speicher die Summe der Werte in den GRÖSSE-Felder von LU-A, LU-B, LU-C, LU-D und LU-E ist. Die Liste von nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 beinhaltet die Speicheradressen von LU-C, LU-D und LU-E. Bei der nächsten Iteration von Schritt 230 wird bestimmt, dass diese Menge an Speicher (1,62 MB) den Schwellenwert von 1,5 MB nicht übersteigt, und die Steuerung geht auf Schritt 240, um eine LU-Datenstruktur 152 zum Entladen aus dem Speicher 150 zu wählen.
  • Bei Schritt 240 wird die LU-Datenstruktur, deren Nutzung zeitlich am weitesten zurückliegt, in der Liste von nicht-ladbaren Einheiten ausgewählt. Die erste LU-Datenstruktur in der Liste, welche LU-C ist, die Element 114a entspricht, ist die, deren Nutzung zeitlich am weitesten zurückliegt. Daher wird LU-C als zu entladende Datenstruktur ausgewählt. Bei weiteren Ausführungsformen können andere Auswahlkriterien verwendet werden. Beispielsweise kann die LU-Datenstruktur LU-E mit dem größten Wert (1,1 MB) von GRÖSSE ausgewählt werden. Die geeignete Auswahl wird basierend auf der An und Weise bestimmt, auf die ein System verwendet wird. Es wird erwartet, dass die zuletzt verwendet LU diejenige ist, deren erneute Nutzung am wahrscheinlichsten ist, und dass diejenige, deren Nutzung zeitlich am weitesten zurückliegt, am wenigsten wahrscheinlich erneut verwendet wird. Daher wird die am wenigsten Wahrscheinliche ausgewählt, um das Entladen einer LU zu vermeiden, bei der ein erneutes Laden wahrscheinlicher ist.
  • Bei Schritt 252 wird bestimmt, ob die LU-C "dirty" ist. Da der Wert des DIRTY-Feldes angibt, dass LU-C "dirty" ist, geht die Steuerung auf Schritt 254. Bei Schritt 254 wird LU-C in eine objektrelationale Struktur 144 der Datenbank geschrieben, und ein Anzeiger für LU-C, der hier als "L-C" bezeichnet wird, wird beim Prozess zurückgegeben. Der Server 120 schreibt den Wert "L-C" in die Anzeiger-Datenstruktur 158, und zwar zugehörig zu einer Kennung der LU, die für Element 114a erzeugt wird. Bei allen LU-Datenstrukturen 152 im Speicher, die nicht-aufgelöste Verweise zu Element 114a als Attribut haben, werden diese Verweise unter Verwendung dieses Anzeigers "L-C" aufgelöst. Bei jeder LU-Datenstruktur, die ihren letzten nicht-aufgelösten Anzeiger empfängt, erfolgt ein Dekrementieren seines ZÄHLER-Feldes. Falls die LU-Datenstruktur einem ZÄHLER-Wert zugehörig ist, der Null erreicht, dann wird die LU-Datenstruktur der Liste von nichtladbaren Einheiten hinzugefügt. Bei Schritt 256 wird der Speicher, der LU-C zugewiesen ist, freigemacht, so dass er einer anderen LU-Datenstruktur zugeordnet werden kann. Ebenso wird bei Schritt 256 die Nutzungsinformation für LU-C in der Nutzungsdatenstruktur 156 gelöscht.
  • Die Steuerung geht dann zurück auf Schritt 230, um zu bestimmen, ob die Speichernutzung weiterhin den Schwellenwert überschreitet. Der gesamte von den LU-Datenstrukturen 152 verwendete Speicher ist die Summe der Werte in den GRÖSSE-Feldern von LU-A, LU-B, LU-D und LU-E (ohne LU-C). Die Liste von nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 beinhaltet die Speicheradressen von LU-D, LU-E (ohne LU-C). Es wird bestimmt, dass diese Menge an Speicher (1,42 MB) den Schwellenwert von 1,5 MB nicht überschreitet, und die Steuerung geht zurück auf Schritt 210, um die nächste ladbare Einheit in den Speicher 150 zu laden.
  • Auf diese Weise kann ein XML-Dokument beliebiger Größe in eine Datenbank unter Verwendung eines Servers mit einer eingeschränkten Menge an dem Dokument zugewiesenem Speicher eingebracht werden.
  • Bei einigen Ausführungsformen ist das XML-Dokument ein transientes Dokument, das lediglich für einen kurzen Zeitraum verwendet wird, jedoch nicht dauerhaft in der Datenbank gespeichert wird. Bei derartigen Ausführungsformen sind die Schritte ähnlich, abgesehen davon, dass während eines Schreibens in den dauerhaften Speicher, bei Schritt 254, die LU in Datenstrukturen im temporären Speicher geschrieben werden. Bei einer Ausführungsform dieser Gruppe ist die Datenstruktur des temporären Speichers eine LOB- Datei mit einer Anzahl von Distanzadressen-Bytes, bei denen die LU beginnt, und die Zuordnung oder Abbildung 142 wird weiterhin in der Datenbank gespeichert.
  • VERARBEITEN EINES XML-DOKUMENTES VON EINER DATENBANK
  • Um diesen Fall zu erläutern, werden die beim vorhergehenden Fall verwendeten Annahmen erneut getroffen, abgesehen davon, dass, anstatt dass das XML-Dokument 110 aus einer externen Quelle erhalten wird, sich dies bereits in der Datenbank befindet. Somit hat jede LU, die eine "aus dem Rahmen fallende" Kind-LU hat, einen definierten Anzeiger für diese Kind-LU. Es sei weiter angenommen, dass mit dem gesamten XML-Dokument gearbeitet werden muss, um eine Darstellung zu erzeugen, deren Format gemäß einem XSL-Dokument ist, wobei das formatierte Ergebnis an eine Anzeigevorrichtung gesendet wird.
  • Während Schritt 210 erzeugt der Server 120 die zur ersten ladbaren Einheit gehörige Datenstruktur 152a, die als "LU-A" bezeichnet wird, um den höchsten Knoten der XML-Hierarchie, den Dokumentebenen-Knoten für Dokument 110 zu speichern. Das ZÄHLER-Feld wird mit dem Wert 1 initialisiert. Das DIRTY-Feld wird mit dem Wert Null initialisiert, um eine LU-Datenstruktur zu bezeichnen, die nicht "dirty" ist. Die LU-Datenstruktur ist nicht "dirty", da die Inhalte aus dem dauerhaften Speicher in der Datenbank ausgelesen wurden und nicht verändert wurden. Das GRÖSSE-Feld wird mit der tatsächlichen Größe für die Dokumentebene LU initialisiert. Der Server 120 verarbeitet die ersten paar Attribute des XML-Dokumentes 110 gemäß dem XSL-Dokument und sendet das Ergebnis an das Ziel, und zwar die Anzeigevorrichtung. Der Server muss dann das Formatierungselement 112 starten, bevor eine Formatierung des gesamten Dokumentes erfolgt. Somit wird der Formatierungsprozess bei LU-A nicht abgeschlossen, und das ZÄHLER-Feld bleibt auf einen Wert von 1 gesetzt.
  • Wie zuvor wird während Schritt 220 bestimmt, dass der gesamte von den LU-Datenstrukturen 152 verwendete Speicher die GRÖSSE von LU-A ist. Die Liste von nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 ist leer. Bei Schritt 230 wird bestimmt, dass diese Menge an Speicher (0,01 MB) den Schwellenwert von 1,5 MB nicht übersteigt, und die Steuerung geht zurück auf Schritt 210, um mit dem Laden der nächsten LU zu beginnen.
  • Während dieser Iteration von Schritt 210 erzeugt der Server 120 eine zu einer zweiten ladbaren Einheit gehörige Datenstruktur 152b, die als "LU-B" bezeichnet wird, um den zum Element 112a zugeordneten Knoten zu speichern. Das ZÄHLER-Feld und das DIRTY-Feld werden mit den Werten 1 bzw. 0 initialisiert. Das GRÖSSE-Feld wird mit der tatsächlichen Größe für die LU für Element 112 initialisiert. Zu Erläuterungszwecken sei angenommen, dass die GRÖSSE von LU-B den Wert 0,11 MB hat. Der Server 120 formatiert" die ersten paar Attribute von Element 112a und sendet die Ergebnisse an die das Ziel darstellende Anzeigevorrichtung. Der Server gelangt zu einem Formatieren eines Attributes, das dem Element 114a entspricht, bevor das Formatieren von Element 112a abgeschlossen ist. Somit wird der Formatierungsprozess bei LU-B nicht abgeschlossen, und das ZÄHLER-Feld bleibt auf einen Wert von 1 gesetzt.
  • Während der nächsten Iteration von Schritt 220 wird bestimmt, dass der gesamte von den LU-Datenstrukturen 152 verwendete Speicher die GRÖSSE von LU-A und LU-B ist. Die Liste der nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 ist leer. Bei der nächsten Iteration von Schritt 230 wird bestimmt, dass diese Menge an Speicher (0,12 MB) den Schwellenwert von 1,5 MB nicht überschreitet, und die Steuerung geht zurück auf Schritt 210, um mit dem Laden der nächsten LU zu beginnen.
  • Der Prozess wird mit den nächsten LUs fortgesetzt, die den Kind-Elementen von 112a zugehörig sind, einschließlich Elementen 114a, 114b, 115. Wie zuvor beschrieben, sei zu Darstellungszwecken angenommen, dass die Elemente 114a, 114b und 115 keine Kind-Elemente beinhalten, und dass die Größen für die GRÖSSE-Felder der drei Elemente 0,2 MB, 0,2 MB bzw. 1,1 MB sind. Sobald jedes vollständig in die LU-Datenstrukturen LU-C, LU-D bzw. LU-E (nicht dargestellt) im Speicher 150 geladen ist, wird das ZÄHLER-Feld auf 1 inkrementiert; wenn das Formatieren beginnt, wird das ZÄHLER-Feld erneut auf 2 imkrementiert. Wenn das Formatieren abgeschlossen ist, wird das ZÄHLER-Feld auf 1 dekrementiert, und wenn das Ergebnis an die das Ziel darstellende Anzeigevorrichtung gesendet wird, wird das ZÄHLER-Feld erneut auf Null dekrementiert. Wenn das ZÄHLER-Feld für jede der drei LU-Datenstrukturen auf Null dekre mentiert ist, wird die Adresse einer jeden zur Liste der nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 hinzugefügt.
  • Während der nächsten Iteration von Schritt 220 wird bestimmt, dass der gesamte von den LU-Datenstrukturen 152 verwendete Speicher die Summe der Werte in GRÖSSE-Feldern von LU-A, LU-B, LU-C, LU-D und LU-E ist. Die Liste von nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 beinhaltet die Speicheradressen von LU-C, LU-D, LU-E. Bei der nächsten Iteration von Schritt 220 wird bestimmt, dass diese Menge an Speicher (1,62 MB) den Schwellenwert von 1,5 MB überschreitet, und die Steuerung geht zurück auf Schritt 240, um eine LU-Datenstruktur 152 zum Entladen aus dem Speicher 150 auszuwählen.
  • Bei Schritt 240 wird die LU-Datenstruktur, deren Nutzung zeitlich am weitesten zurückliegt, in der Liste von nicht-ladbaren Einheiten ausgewählt. Die erste LU-Datenstruktur in der Liste, bei der es sich um LU-C entsprechend Element 114a handelt, ist diejenige, deren Nutzung zeitlich am weitesten zurückliegt. Daher wird LU-C als die zu entladende LU-Datenstruktur ausgewählt.
  • Bei Schritt 252 wird bestimmt, ob LU-C "dirty" ist. Da der Wert des DIRTY-Feldes angibt, dass LU-C nicht "dirty" ist, geht die Steuerung auf Schritt 256. Bei Schritt 256 wird der LU-C zugewiesene Speicher freigemacht, um einer anderen LU-Datenstruktur zugeordnet zu werden, und die Nutzungsinformation für LU-C in der Nutzungsdatenstruktur 156 wird gelöscht.
  • Die Steuerung geht dann zurück auf Schritt 230, um zu bestimmen, ob die Speichernutzung weiterhin den Schwellenwert überschreitet. Es wird bestimmt, dass der gesamte durch die LU-Datenstrukturen 152 verwendete Speicher die Summe der Werte in den GRÖSSE-Feldern von LU-A, LU-B, LU-D und LU-E (ohne LU-C) ist. Die Liste von nicht-ladbaren Einheiten in der Nutzungsdatenstruktur 156 beinhaltet die Speicheradressen von LU-D, LU-E (ohne LU-C). Bei der nächsten Iteration von Schritt 230 wird bestimmt, dass diese Menge an Speicher (1,42 MB) den Schwellenwert von 1,5 MB nicht überschreitet, und die Steuerung geht zurück auf Schritt 210, um die nächste ladbare Einheit in den Speicher 150 zu laden.
  • Somit kann ein XML-Dokument beliebiger Größe von einer Datenbank unter Verwendung eines Servers mit eingeschränkter Größe von dem Dokument zugeordnetem schnellen Speicher verarbeitet werden.
  • HARDWARE-ÜBERSICHT
  • 3 ist ein Blockdiagramm, das ein Computersystem 300 darstellt, auf dem eine Ausführungsform der Erfindung implementiert werden kann. Das Computersystem 300 beinhaltet einen Bus 302 oder einen anderen Kommunikationsmechanismus zum Weiterleiten von Information, und einem mit dem Bus 302 verbundenen Prozessor 304 zum Verarbeiten von Informationen. Das Computersystem 300 beinhaltet auch einen Hauptspeicher 306, wie beispielsweise einen RAM (Direktzugriffsspeicher) oder eine andere dynamische Speichervorrichtung, die mit dem Bus 302 verbunden ist, um Informationen und durch den Prozessor 304 auszuführende Anweisungen zu speichern. Der Hauptspeicher 306 kann auch zum Speichern von temporären Variablen oder anderen Zwischeninformationen während eines Ausführens von durch den Prozessor 304 auszuführenden Anweisungen verwendet werden. Das Computersystem 300 beinhaltet weiter einen ROM (Nur-Lese-Speicher) 308 oder eine andere mit dem Bus 302 verbundene statische Speichervorrichtung zum Speichern statischer Informationen und Anweisungen für den Prozessor 304. Eine Speichervorrichtung 310, wie beispielsweise eine Magnetplatte oder eine optische Platte, ist vorgesehen und mit dem Bus 302 verbunden, um Informationen und Anweisungen zu speichern.
  • Das Computersystem 300 kann über einen Bus 302 mit einer Anzeigeeinrichtung 312 wie beispielsweise einer Kathodenstrahlröhre (CRT) verbunden sein, um einem Computerbenutzer Informationen anzuzeigen. Eine Eingabevorrichtung 314, die alphanumerische und weitere Tasten beinhaltet, ist mit dem Bus 302 verbunden, um Informationen und ausgewählte Befehle an den Prozessor 304 zu übermitteln. Ein weiterer Typ vom Benutzereingabevorrichtung ist eine Cursorsteuerung 316, wie beispielsweise ein Maus, ein Trackball oder Cursor-Richtungstasten, um Richtungsinformationen und ausgewählte Befehle an den Prozessor 304 zu übermitteln und die Cursorbewegung auf der Anzeige vorrichtung 312 zu steuern. Diese Eingabevorrichtung weist typischerweise zwei Freiheitsgrade in zwei Achsen auf, einer ersten Achse (z. B. x) und einer zweiten Achse (z. B. y), was ermöglicht, dass die Vorrichtung Positionen in einer Ebene bezeichnen kann.
  • Die Erfindung betrifft die Verwendung eines Computersystems 300 zum Implementieren der hier beschriebenen Verfahren. Gemäß einer Ausführungsform der Erfindung werden diese Verfahren durch ein Computersystem 300 durchgeführt, und zwar reagierend darauf, dass der Prozessor 304 eine oder mehrere Sequenzen von einer oder mehreren im Hauptspeicher 306 enthaltenen Anweisungen ausführt. Derartige Anweisungen können in den Hauptspeicher 306 von einem weiteren computerlesbaren Medium, wie beispielsweise einer Speichervorrichtung 310, eingelesen werden. Ein Ausführen der im Hauptspeicher 306 enthaltenen Anweisungssequenzen bewirkt, dass der Prozessor 304 die hier beschriebenen Prozessschritte durchführt. Bei alternativen Ausführungsformen kann eine fest verdrahtete Schaltungsanordnung verwendet werden, und zwar anstelle von Softwareanweisungen oder in Kombination mit diesen, um die Erfindung zu implementieren. Daher sind die Ausführungsformen der Erfindung nicht auf irgendeine spezielle Kombination aus Hardware-Schaltungsanordnung und Software eingeschränkt.
  • Der Begriff "computerlesbares Medium", wie hier verwendet, betrifft ein beliebiges Medium, das daran beteiligt ist, Anweisungen an den Prozessor 304 zum Ausführen zu liefern. Ein derartiges Medium kann viele Formen annehmen, einschließlich, jedoch nicht eingeschränkt auf nicht-flüchtige Medien, flüchtige Medien und Übertragungsmedien. Nicht-flüchtige Medien beinhalten beispielsweise optische oder magnetische Platten, wie beispielsweise die Speichervorrichtung 310. Flüchtige Medien beinhalten einen dynamischen Speicher, wie beispielsweise den Hauptspeicher 306. Übertragungsmedien beinhalten Koaxialkabel, Kupferdraht- und Glasfaserkabel, einschließlich der Drähte, die den Bus 302 beinhalten. Übertragungsmedien können auch die Form von akustischen Wellen oder Lichtwellen annehmen, beispielsweise solche, die während Radiowellen- und Infrarot-Datenkommunikationen erzeugt werden.
  • Übliche Formen vom computerlesbaren Medien beinhalten beispielsweise eine Floppy-Disk, eine Diskette, eine Festplatte, ein Magnetband oder ein beliebiges anderes magneti sches Medium, eine CD-ROM, ein beliebiges anderes optisches Medium, Lochkarten, Papierband, ein beliebiges anderes physisches Medium mit Lochmustern, ein RAM, ein PROM und ein EPROM, ein FLASH-EPROM, einen beliebigen anderen Speicherchip oder eine -kassette, eine Trägerwelle wie nachfolgend beschrieben, oder ein beliebiges anderes Medium, von dem ein Computer lesen kann.
  • Verschiedene Formen von computerlesbaren Medien können daran beteiligt sein, eine oder mehrere Sequenzen von einer oder mehreren Anweisungen zum Prozessor 304 zur Ausführung zu transportieren. Beispielsweise können sich die Anweisungen zu Anfang auf einer Magnetscheibe eines entfernt angeordneten Computers befinden. Der entfernt angeordnete Computer kann die Anweisungen in seinen dynamischen Speicher laden und die Anweisungen über eine Telefonleitung unter Verwendung eines Modems senden. Ein Modem, das sich lokal beim Computersystem 300 befindet, kann die auf der Telefonleitung befindlichen Daten empfangen und eine Infrarot-Übertragungseinrichtung verwenden, um die Daten in ein infrarotes Signal umzuwandeln. Eine Infrarot-Erfassungseinrichtung kann die im Infrarot-Signal transportierten Daten empfangen, und eine geeignete Schaltungsanordnung kann die Daten auf dem Bus 302 platzieren. Der Bus 302 transportiert die Daten zum Hauptspeicher 306, von dem aus der Prozessor 304 die Anweisungen ausliest und ausführt. Die vom Hauptspeicher 306 empfangenen Anweisungen können optional in der Speichervorrichtung 310 gespeichert werden, und zwar entweder vor oder nach dem Ausführen durch den Prozessor 304.
  • Das Computersystem 300 beinhaltet auch eine Kommunikationsschnittstelle 318, die mit dem Bus 302 verbunden ist. Die Kommunikationsschnittstelle 318 sorgt für eine Zweiweg-Datenkommunikationsverbindung zu einem Netzwerk-Verbindungsglied 320, das mit einem lokalen Netz 322 verbunden ist. Beispielsweise kann die Kommunikationsschnittstelle 318 eine ISDN-(Integrated Services Digital Network)-Karte oder ein Modem sein, um eine Datenkommunikationsverbindung zu einem entsprechenden Typ von Telefonleitung bereitzustellen. Als weiteres Beispiel kann die Kommunikationsschnittstelle 318 eine LAN-(Local Area Network)-Karte sein, um eine Datenkommunikationsverbindung zu einem kompatiblen LAN bereitzustellen. Drahtlose Verkehrsverbindungen können auch implementiert sein. Bei jeder derartigen Implementierung sendet und empfängt die Kommunikationsschnittstelle 318 elektrische, elektromagnetische oder optische Signale, welche digitale Datenströme transportieren, die verschiedene Typen von Information repräsentieren.
  • Das Netzwerk-Verbindungsglied 320 sorgt typischerweise für eine Datenkommunikation über eines oder mehrere Netze zu anderen Datenvorrichtungen. Beispielsweise kann das Netzwerk-Verbindungsglied 320 eine Verbindung über ein lokales Netz 322 zu einem Host-Computer 324 oder zu einer Datenanlage bereitstellen, die durch einen Internetdienstanbieter (ISP) 326 betrieben wird. Der ISP 326 stellt seinerseits Datenkommunikationsdienste über das weltweite Paketdaten-Kommunikationsnetz bereit, das heutzutage allgemein als "Internet" 328 bezeichnet wird. Das lokale Netz 322 und das Internet 328 verwenden beide elektrische, elektromagnetische oder optische Signale, welche digitale Datenströme transportieren. Die über die verschiedenen Netzwerke übertragenen Signale, und die beim Netzwerk-Verbindungsglied 320 und über die Kommunikationsschnittstelle 318 übertragenen Signale, welche die digitalen Signale vom Computersystem 300 weg und zu diesem hin transportieren, sind beispielhafte Formen von die Informationen transportierenden Trägerwellen.
  • Das Computersystem 300 kann Nachrichten senden und Daten, einschließlich Programmcode empfangen, und zwar über das/die Netzwerk(e), das Netzwerk-Verbindungsglied 320 und die Kommunikationsschnittstelle 318. Beim Beispiel des Internet könnte ein Server 330 einen angeforderten Code für ein Anwendungsprogramm über das Internet 328, den ISP 326, das lokale Netz 322 und die Kommunikationsschnittstelle 318 übertragen.
  • Der empfangene Code kann durch den Prozessor 304 bei seinem Empfang ausgeführt werden, und/oder in der Speichervorrichtung 310 oder einem anderen nicht-flüchtigen Speicher zur späteren Ausführung gespeichert werden. Auf diese Weise kann das Computersystem 300 Anwendungscode in Form einer Trägerwelle erhalten.
  • Bei der vorhergehenden Beschreibung wurde die Erfindung mit Bezug auf spezielle Ausführungsformen von dieser beschrieben. Es versteht sich jedoch, dass verschiedene Modifikationen und Änderungen an dieser vorgenommen werden können, ohne vom Schutzumfang der Erfindung abzuweichen, der durch die Ansprüche definiert ist. Die Beschreibung und die Zeichnungen sind demgemäß beispielhaft und nicht einschränkend zu verstehen.

Claims (17)

  1. Verfahren zum Zugreifen auf Daten, die sich in einem Dokument (110) mit Inhalten, die gemäß einer Auszeichnungssprache strukturiert sind, auf einem computerlesbaren Medium befinden, wobei eine Vorrichtung mit einer begrenzten Menge von Vorrichtungsressourcen eingesetzt wird und das Verfahren die Schritte aufweist: für jeden Abschnitt des Dokuments (110) von einer Mehrzahl von Abschnitten des Dokuments (110) ausgeführtes Bestimmen einer Benutzungsangabe, die anzeigt, wie sehr auf den Abschnitt zugegriffen wird; wobei jeder Abschnitt auf einem oder mehreren Konstrukten der Auszeichnungssprache beruht; beruhend auf der Benutzungsangabe durchgeführtes Auswählen eines bestimmten Abschnitts des Dokuments (110), der die Vorrichtungsressourcen nicht länger in Anspruch nehmen soll; und Freigeben der von dem bestimmten Abschnitt in Anspruch genommenen Vorrichtungsressourcen; dadurch gekennzeichnet, dass der Schritt des Bestimmens der Benutzungsangabe ferner das Bestimmen einer Anzahl von nicht abgeschlossenen Operationen der Vorrichtung auf jedem Abschnitt, der Vorrichtungsressourcen in Anspruch nimmt, aufweist; und der Schritt des Auswählens des bestimmten Abschnitts das Feststellen, dass die Anzahl nicht abgeschlossener Operationen auf dem bestimmten Abschnitt geringer als eine Mindestanzahl ist, aufweist.
  2. Verfahren nach Anspruch 1, bei dem: das Verfahren ferner den Schritt aufweist, zu bestimmen, ob eine Bedingung zur Freigabe einer Ressource erfüllt ist; und der Schritt der Auswählens des bestimmten Abschnitts nur dann ausgeführt wird, wenn festgestellt wurde, dass die Bedingung zur Freigabe einer Ressource erfüllt ist.
  3. Verfahren nach Anspruch 2, bei dem: der Schritt des Bestimmens der Benutzungsangabe ferner das Bestimmen der Gesamtressourcenbenutzung durch alle Abschnitte des Dokuments (110), die die Vorrichtungsressourcen in Anspruch nehmen, umfasst; und die Bedingung zur Freigabe einer Ressource umfasst, dass die Gesamtressourcenbenutzung einen Ressourcenmengen-Grenzwert übersteigt, der geringer als die begrenzte Ressourcenmenge ist.
  4. Verfahren nach einem der Ansprüche 1–3, bei dem die Mindestanzahl 1 beträgt.
  5. Verfahren nach einem der Ansprüche 1–4, bei dem der Schritt des Auswählens des bestimmten Abschnitts ferner der Schritt aufweist, denjenigen bestimmten Abschnitt auszuwählen, der von einer Mehrzahl von Abschnitten, für die die Anzahl nicht beendeter Operationen geringer als die Mindestanzahl ist, die längste Zeit nicht benutzt wurde.
  6. Verfahren nach einem der Ansprüche 1–5, bei dem der Schritt des Freigebens der Vorrichtungsressourcen, die von dem bestimmten Abschnitt in Anspruch genommen werden, die Schritte aufweist: Bestimmen, ob Inhalte des bestimmten Abschnitts sich getrennt von einem anderen Abschnitt des Dokuments (110) im persistenten Speicher (130) befinden, und falls festgestellt wird, dass die Inhalte sich nicht getrennt von einem anderen Abschnitt im persistenten Speicher (130) befinden, dann Einschreiben der Inhalte in den persistenten Speicher (130) getrennt von einem anderen Abschnitt, bevor die Vorrichtungsressourcen, die von dem bestimmten Abschnitt in Anspruch genommen werden, freigegeben werden.
  7. Verfahren nach Anspruch 6, bei dem der Schritt des Freigebens der Vorrichtungsressourcen, die von dem bestimmten Abschnitt in Anspruch genommen werden, ferner umfasst, den Schritt des Freigebens der Vorrichtungsressourcen, die von dem bestimmten Abschnitt in Anspruch genommen werden, ohne ein Einschreiben der Inhalte in den persistenten Speicher (130) auszuführen, wenn festgestellt wird, dass sich die Inhalte in dem persistenten Speicher (130) von einem anderen Abschnitt getrennt befinden.
  8. Verfahren nach Anspruch 6 oder Anspruch 7, bei dem der persistente Speicher (130) eine Datei in einem Dateisystem ist.
  9. Verfahren nach Anspruch 6 oder Anspruch 7, bei dem der persistente Speicher (130) ein Datenbankobjekt in einem Datenbanksystem ist.
  10. Verfahren nach einem der Ansprüche 1–9, ferner mit den Schritten: Bestimmen von hierarchischen Elementen (112, 114, 116, 117) des Dokuments (110) aus einem dem Dokument (110) zugeordneten Typdefinitionsdokument (102); und Bestimmen der Mehrzahl von Abschnitten des Dokuments (110) beruhend auf den hierarchischen Elementen (112, 114, 116, 117).
  11. Verfahren nach einem der Ansprüche 1–10, bei dem das Dokument (110) ein Dokument der erweiterbaren Auszeichnungssprache (XML = extensible markup language) ist.
  12. Verfahren nach Anspruch 10, bei dem das Dokument (110) ein XML-Dokument ist und das Typdefinitionsdokument (102) ein Dokumententypdefinitionsdokument (DTD = document type definition) ist.
  13. Verfahren nach Anspruch 10, bei dem das Dokument (110) ein XML-Dokument ist und das Typdefinitionsdokument (102) ein XML-Schema-Dokument ist.
  14. Verfahren nach einem der Ansprüche 6–9, bei dem der Schritt des Freigebens der Vorrichtungsressourcen ferner den Schritt aufweist, einen Verweis auf den bestimmten Abschnitt im persistenten Speicher (130) zurückzugeben.
  15. Verwendung des Verfahrens nach einem der Ansprüche 1–14 in einem Verfahren zum Ausführen einer Operation auf einem Dokument (110), das gemäß einer Auszeichnungssprache strukturierte Inhalte aufweist, wobei die Verwendung umfasst: Feststellen, dass die Operation eine Mehrzahl von Abschnitten des Dokuments (110) betrifft, einschließlich eines ersten Satzes von einem oder mehreren Abschnitten und eines zweiten Satzes von einem oder mehreren Abschnitten, wobei jeder Abschnitt auf einem oder mehreren Konstrukten der Auszeichnungssprache beruht; während des Ausführens der Operation durchgeführtes Ausführen der Schritte: Laden des ersten Satzes von einem oder mehreren Abschnitten des Dokuments (110) in flüchtigen Speicher; vor der Beendigung der Operation ausgeführtes Verwenden des Verfahrens nach einem der Ansprüche 1–14, um für jeden Abschnitt des ersten Satzes von einem oder mehreren Abschnitten des Dokuments (110) eine Benutzungsangabe zu bestimmen, die anzeigt, wie sehr auf den Abschnitt zugegriffen wird, beruhend auf der Benutzungsangabe durchgeführtes Auswählen von mindestens einem Abschnitt in dem ersten Satz von Abschnitten, der aufhören soll, den flüchtigen Speicher (150) zu belegen, und, nachdem der mindestens eine Abschnitt ausgewählt worden ist, Freigeben des flüchtigen Speichers, der den mindestens einen Abschnitt enthalten hat, um den zweiten Satz von einem oder mehreren Abschnitten des Dokuments (110) in den flüchtigen Speicher (150) zu laden.
  16. Verfahren nach Anspruch 15, bei dem: das Dokument (110) ein Dokument in der erweiterbaren Auszeichnungssprache (XML-Dokument = extensible markup language document) mit einer Größe ist, die den flüchtigen Speicher (150) einer Computervorrichtung übersteigt; die Operation das Laden des Dokuments (110) in den flüchtigen Speicher (150) der Computervorrichtung umfasst, indem ein Datenstrom, der das XML-Dokument (110) wiedergibt, in den flüchtigen Speicher (150) der Computervorrichtung aufgenommen wird; der Schritt des Auswählens zumindest eines Abschnitts das Bestimmen eines bestimmten Abschnitts aus einer Mehrzahl von Abschnitten des Doku ments (110), beruhend auf einem oder mehreren XML-Konstrukten, aufweist; das Verfahren ferner die Schritte aufweist: bevor das gesamte XML-Dokument (110) in den flüchtigen Speicher (150) aufgenommen worden ist, getrenntes Speichern des bestimmten Abschnitts im persistenten Speicher (130); und im dem flüchtigen Speicher (150), Zuordnen einer Ortsangabe (158) für den bestimmten Abschnitt zu einem XML-Konstrukt, das einem Elternknoten mindestens eines XML-Konstrukts entspricht, auf dem der bestimmte Abschnitt beruht.
  17. Computerlesbares Medium, das eine oder mehrere Befehlssequenzen aufweist, die, wenn sie von einem oder mehreren Prozessoren (304) ausgeführt werden, den einen oder die mehreren Prozessoren (304) dazu veranlassen, das in einem der Ansprüche 1–16 genannte Verfahren auszuführen.
DE60310255T 2002-11-06 2003-11-06 Skalierbarer datenzugang in einem beliebig grossen dokument Expired - Lifetime DE60310255T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US306130 1989-02-06
US42454302P 2002-11-06 2002-11-06
US424543P 2002-11-06
US10/306,130 US7308474B2 (en) 2002-11-06 2002-11-26 Techniques for scalably accessing data in an arbitrarily large document by a device with limited resources
PCT/US2003/035551 WO2004044780A2 (en) 2002-11-06 2003-11-06 Scalable access to data in an arbitrarily large document

Publications (2)

Publication Number Publication Date
DE60310255D1 DE60310255D1 (de) 2007-01-18
DE60310255T2 true DE60310255T2 (de) 2007-06-28

Family

ID=32179506

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60310255T Expired - Lifetime DE60310255T2 (de) 2002-11-06 2003-11-06 Skalierbarer datenzugang in einem beliebig grossen dokument

Country Status (8)

Country Link
US (1) US7308474B2 (de)
EP (1) EP1559035B1 (de)
JP (1) JP4476813B2 (de)
AU (1) AU2003290654B2 (de)
CA (1) CA2504141C (de)
DE (1) DE60310255T2 (de)
HK (1) HK1077108A1 (de)
WO (1) WO2004044780A2 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962962B2 (en) * 2001-06-19 2011-06-14 International Business Machines Corporation Using an object model to improve handling of personally identifiable information
US20050086584A1 (en) * 2001-07-09 2005-04-21 Microsoft Corporation XSL transform
US7120645B2 (en) * 2002-09-27 2006-10-10 Oracle International Corporation Techniques for rewriting XML queries directed to relational database constructs
EP1406183A3 (de) * 2002-10-01 2004-04-14 Sap Ag Verfahren und System zur Auffrischung von Browserseiten
US7020653B2 (en) 2002-11-06 2006-03-28 Oracle International Corporation Techniques for supporting application-specific access controls with a separate server
US7386568B2 (en) * 2003-05-01 2008-06-10 Oracle International Corporation Techniques for partial rewrite of XPath queries in a relational database
US6836778B2 (en) 2003-05-01 2004-12-28 Oracle International Corporation Techniques for changing XML content in a relational database
US7103611B2 (en) * 2003-05-01 2006-09-05 Oracle International Corporation Techniques for retaining hierarchical information in mapping between XML documents and relational data
US7747580B2 (en) * 2003-08-25 2010-06-29 Oracle International Corporation Direct loading of opaque types
US7814047B2 (en) 2003-08-25 2010-10-12 Oracle International Corporation Direct loading of semistructured data
US8694510B2 (en) 2003-09-04 2014-04-08 Oracle International Corporation Indexing XML documents efficiently
US8229932B2 (en) 2003-09-04 2012-07-24 Oracle International Corporation Storing XML documents efficiently in an RDBMS
US9690811B1 (en) * 2003-11-05 2017-06-27 Hewlett Packard Enterprise Development Lp Single repository manifestation of a multi-repository system
US7930277B2 (en) 2004-04-21 2011-04-19 Oracle International Corporation Cost-based optimizer for an XML data repository within a database
US7516121B2 (en) 2004-06-23 2009-04-07 Oracle International Corporation Efficient evaluation of queries using translation
DE602005022069D1 (de) 2004-06-23 2010-08-12 Oracle Int Corp Effiziente auswertung von abfragen mittels übersetzung
US20070208946A1 (en) * 2004-07-06 2007-09-06 Oracle International Corporation High performance secure caching in the mid-tier
US7668806B2 (en) 2004-08-05 2010-02-23 Oracle International Corporation Processing queries against one or more markup language sources
US7433866B2 (en) * 2005-01-11 2008-10-07 International Business Machines Corporation Systems, methods, and media for awarding credits based on provided usage information
US7386569B2 (en) * 2005-01-11 2008-06-10 International Business Machines Corporation Systems, methods, and media for aggregating electronic document usage information
US7421426B2 (en) * 2005-01-11 2008-09-02 International Business Machines Corporation Systems, methods, and media for utilizing electronic document usage information with search engines
US20060161511A1 (en) * 2005-01-20 2006-07-20 Viktors Berstis Systems, methods, and media for determining electronic document usage
US7305414B2 (en) 2005-04-05 2007-12-04 Oracle International Corporation Techniques for efficient integration of text searching with queries over XML data
US7685150B2 (en) * 2005-04-19 2010-03-23 Oracle International Corporation Optimization of queries over XML views that are based on union all operators
US20060235839A1 (en) * 2005-04-19 2006-10-19 Muralidhar Krishnaprasad Using XML as a common parser architecture to separate parser from compiler
US7949941B2 (en) 2005-04-22 2011-05-24 Oracle International Corporation Optimizing XSLT based on input XML document structure description and translating XSLT into equivalent XQuery expressions
US8166059B2 (en) 2005-07-08 2012-04-24 Oracle International Corporation Optimization of queries on a repository based on constraints on how the data is stored in the repository
US20080198723A1 (en) * 2005-07-22 2008-08-21 Koninklijke Philips Electronics, N.V. Method and Apparatus of Controlling Playback of an Optical Disc Program
US8073841B2 (en) 2005-10-07 2011-12-06 Oracle International Corporation Optimizing correlated XML extracts
US20070083549A1 (en) * 2005-10-10 2007-04-12 Oracle International Corporation Method and mechanism for providing a caching mechanism for contexts
US7933928B2 (en) 2005-12-22 2011-04-26 Oracle International Corporation Method and mechanism for loading XML documents into memory
US7464226B2 (en) * 2006-02-23 2008-12-09 Lars Andreas Reinertsen Fractional caching
US7853573B2 (en) * 2006-05-03 2010-12-14 Oracle International Corporation Efficient replication of XML data in a relational database management system
US7499909B2 (en) * 2006-07-03 2009-03-03 Oracle International Corporation Techniques of using a relational caching framework for efficiently handling XML queries in the mid-tier data caching
US7801856B2 (en) * 2006-08-09 2010-09-21 Oracle International Corporation Using XML for flexible replication of complex types
US7933935B2 (en) * 2006-10-16 2011-04-26 Oracle International Corporation Efficient partitioning technique while managing large XML documents
US7797310B2 (en) 2006-10-16 2010-09-14 Oracle International Corporation Technique to estimate the cost of streaming evaluation of XPaths
US7689612B2 (en) * 2007-04-19 2010-03-30 Sap Ag Handling of queries of transient and persistent data
US7937298B2 (en) * 2007-05-17 2011-05-03 Oracle International Corporation Guaranteed RFID event delivery
US8522249B2 (en) * 2007-06-27 2013-08-27 Bluestreak Technology, Inc. Management of software implemented services in processor-based devices
US7836098B2 (en) * 2007-07-13 2010-11-16 Oracle International Corporation Accelerating value-based lookup of XML document in XQuery
US8156149B2 (en) * 2007-07-24 2012-04-10 Microsoft Corporation Composite nested streams
US7840609B2 (en) * 2007-07-31 2010-11-23 Oracle International Corporation Using sibling-count in XML indexes to optimize single-path queries
US8250062B2 (en) * 2007-11-09 2012-08-21 Oracle International Corporation Optimized streaming evaluation of XML queries
US8527867B2 (en) * 2008-01-18 2013-09-03 Oracle International Corporation Enabling users to edit very large XML data
US8429196B2 (en) * 2008-06-06 2013-04-23 Oracle International Corporation Fast extraction of scalar values from binary encoded XML
US7958112B2 (en) 2008-08-08 2011-06-07 Oracle International Corporation Interleaving query transformations for XML indexes
US8943498B2 (en) * 2009-05-31 2015-01-27 Red Hat Israel, Ltd. Method and apparatus for swapping virtual machine memory
US8527466B2 (en) * 2009-05-31 2013-09-03 Red Hat Israel, Ltd. Handling temporary files of a virtual machine
EP2312473A1 (de) * 2009-10-14 2011-04-20 Research In Motion Limited System, Vorrichtung und Verfahren zur Verarbeitung von Inhalt auf einer Rechnervorrichtung
US8365020B2 (en) 2010-03-18 2013-01-29 Red Hat Israel, Ltd. Mechanism for saving crash dump files of a virtual machine on a designated disk
US8489649B2 (en) 2010-12-13 2013-07-16 Oracle International Corporation Extensible RDF databases
US9043363B2 (en) * 2011-06-03 2015-05-26 Oracle International Corporation System and method for performing memory management using hardware transactions
GB2510887A (en) 2013-02-18 2014-08-20 Ibm Markup language parser
US10324589B2 (en) * 2016-10-25 2019-06-18 International Business Machines Corporation Navigation by usage locations in a document editing application

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US5893104A (en) * 1996-07-09 1999-04-06 Oracle Corporation Method and system for processing queries in a database system using index structures that are not native to the database system
US6226649B1 (en) * 1997-06-23 2001-05-01 Oracle Corporation Apparatus and method for transparent access of foreign databases in a heterogeneous database system
US6915307B1 (en) * 1998-04-15 2005-07-05 Inktomi Corporation High performance object cache
US6704739B2 (en) * 1999-01-04 2004-03-09 Adobe Systems Incorporated Tagging data assets
US6427123B1 (en) 1999-02-18 2002-07-30 Oracle Corporation Hierarchical indexing for accessing hierarchically organized information in a relational system
HK1020419A2 (en) * 1999-03-16 2000-03-17 Shi Piu Joseph Fong Frame model for universal database in database reengineering and integration
US6826727B1 (en) * 1999-11-24 2004-11-30 Bitstream Inc. Apparatus, methods, programming for automatically laying out documents
US6721727B2 (en) * 1999-12-02 2004-04-13 International Business Machines Corporation XML documents stored as column data
US6604100B1 (en) * 2000-02-09 2003-08-05 At&T Corp. Method for converting relational data into a structured document
US20020056025A1 (en) * 2000-11-07 2002-05-09 Qiu Chaoxin C. Systems and methods for management of memory
US6915304B2 (en) * 2000-05-23 2005-07-05 Kenneth A. Krupa System and method for converting an XML data structure into a relational database
US20020029229A1 (en) * 2000-06-30 2002-03-07 Jakopac David E. Systems and methods for data compression
US6678795B1 (en) * 2000-08-15 2004-01-13 International Business Machines Corporation Method and apparatus for memory prefetching based on intra-page usage history
AU2002243335A1 (en) * 2000-10-20 2002-06-18 Polexis, Inc. Extensible information system (xis)
US7917888B2 (en) * 2001-01-22 2011-03-29 Symbol Technologies, Inc. System and method for building multi-modal and multi-channel applications
US6542911B2 (en) 2001-03-01 2003-04-01 Sun Microsystems, Inc. Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache
US6964025B2 (en) * 2001-03-20 2005-11-08 Microsoft Corporation Auto thumbnail gallery
JP4529063B2 (ja) * 2001-03-30 2010-08-25 ルネサスエレクトロニクス株式会社 システムシミュレータ、シミュレーション方法及びシミュレーションプログラム
US6745295B2 (en) * 2001-04-19 2004-06-01 International Business Machines Corporation Designing a cache with adaptive reconfiguration
AU2002334721B2 (en) 2001-09-28 2008-10-23 Oracle International Corporation An index structure to access hierarchical data in a relational database system
US6836857B2 (en) * 2001-10-18 2004-12-28 Sun Microsystems, Inc. Mechanism for debugging a computer process
US6928449B2 (en) * 2001-10-18 2005-08-09 Sun Microsystems, Inc. Mechanism for facilitating backtracking
US6918067B2 (en) * 2002-04-30 2005-07-12 International Business Machines Corporation Detecting network instability
US6823428B2 (en) * 2002-05-17 2004-11-23 International Business Preventing cache floods from sequential streams
US7120645B2 (en) * 2002-09-27 2006-10-10 Oracle International Corporation Techniques for rewriting XML queries directed to relational database constructs
US6851030B2 (en) * 2002-10-16 2005-02-01 International Business Machines Corporation System and method for dynamically allocating associative resources

Also Published As

Publication number Publication date
CA2504141A1 (en) 2004-05-27
EP1559035A2 (de) 2005-08-03
AU2003290654A1 (en) 2004-06-03
US20040088415A1 (en) 2004-05-06
US7308474B2 (en) 2007-12-11
EP1559035B1 (de) 2006-12-06
HK1077108A1 (en) 2006-02-03
WO2004044780A3 (en) 2004-12-09
WO2004044780A2 (en) 2004-05-27
DE60310255D1 (de) 2007-01-18
JP4476813B2 (ja) 2010-06-09
CA2504141C (en) 2009-06-16
AU2003290654B2 (en) 2009-08-27
JP2006505871A (ja) 2006-02-16

Similar Documents

Publication Publication Date Title
DE60310255T2 (de) Skalierbarer datenzugang in einem beliebig grossen dokument
DE60220676T2 (de) Konsistente lesevorgänge in einer verteilten datenbankumgebung
DE60015423T2 (de) Verfahren und Vorrichtung zur Objektwiedergabe in einem Netzwerk
DE69637436T2 (de) Objektorientiertes Kommunikationssystem mit Unterstützung für mehrere entfernte Maschinentypen
DE10135445B4 (de) Integriertes Verfahren für das Schaffen einer aktualisierbaren Netzabfrage
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE60117150T2 (de) Verfahren und computerprogramm zum übertragen von inhalt aus einer quellendatenbank zu einer zieldatenbank
DE69535581T2 (de) Datenaustausch mit erweiterten Zwischenablage-Datenformaten
DE69733305T2 (de) System/Verfahren zur wirkungsvollen Übermittlung von Datenströmen in einem Multimediasystem
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE4134419A1 (de) Dynamische entwurfsschnittstelleneinrichtung fuer leistungsfaehigkeit und konfiguration eines computersystems
DE19844013A1 (de) Strukturierter Arbeitsordner
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE10162495A1 (de) Erweiterbare Datenbank
DE10031716A1 (de) Abonnement und Benachrichtigung bei Datenbanktechnik
DE112011101793T5 (de) Gemeinsame Datennutzung bei Dateiklonen
DE4135347A1 (de) Verfahren und system zum aufrufen eines verfahrens in objektorientierter sprache
EP1166228A2 (de) Verfahren zur nutzung von fraktalen semantischen netzen für alle arten von datenbank-anwendungen
DE102006027425A1 (de) System und Verfahren zur Implementierung eines gemeinsamen Deskriptorformats
DE102016005519B4 (de) Verfahren zur Erstellung eines Metadaten-Datenmodells für eine BI-Infrastruktur
DE112007002327T5 (de) Persistente Sperren auf Ressourcen zur Steuerung der Nebenläufigkeit
DE112012002268B4 (de) Modifizieren von Paketen zum Einsparen von Speicherplatz
EP1285315B1 (de) Informationsverarbeitungssystem und verfahren zu dessen betrieb
EP2264626B1 (de) Verfahren und Vorrichtung zum speichereffizienten Suchen mindestens eines Anfragedatenelementes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition