DE68926849T2 - Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank - Google Patents

Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank

Info

Publication number
DE68926849T2
DE68926849T2 DE68926849T DE68926849T DE68926849T2 DE 68926849 T2 DE68926849 T2 DE 68926849T2 DE 68926849 T DE68926849 T DE 68926849T DE 68926849 T DE68926849 T DE 68926849T DE 68926849 T2 DE68926849 T2 DE 68926849T2
Authority
DE
Germany
Prior art keywords
level
data
iteration
data elements
new
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE68926849T
Other languages
English (en)
Other versions
DE68926849D1 (de
Inventor
Hongjun Lu
Ming-Chien Shan
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE68926849D1 publication Critical patent/DE68926849D1/de
Application granted granted Critical
Publication of DE68926849T2 publication Critical patent/DE68926849T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

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

Description

    Hintergrund der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf Datenbanksysteme und insbesondere auf eine Datenbankstruktur für rekursiv abgeleitete Datenelemente und ein Verfahren zum Anordnen solcher Datenelemente in einer Datenbank.
  • Datenbanksysteme werden verwendet, um immer unterschiedlichere Arten von Daten zu speichern und zu verwalten. Da sich die Verwendung von Datenbanksystemen ausgebreitet hat, und die Datenmengen, die in einer Datenbank gespeichert sind, zugenommen haben, wurden große Anstrengungen unternommen, um existierende Datenbanksysteme zu verbessern und neue Systeme mit neuen und besseren Fähigkeiten zu entwickeln.
  • Um eine Datenbankeinrichtung "abzufragen", um Informationen von derselben anzufordern, können die angeforderten Informationen direkt durch das Wiedergewinnen von Datenelementen, die in der Datenbank gespeichert sind, erhalten werden, oder können aus Datenelementen, die in der Datenbank gespeichert sind, abgeleitet werden.
  • Eine Art einer Datenbankabfrage, die in jüngeren Jahren an Bedeutung gewonnen hat, ist eine Abfrage, bei der Informationen rekursiv abgeleitet werden. Eine derartige Abfrage kann als eine Abfrage beschrieben werden, die sich selbst wiederholt abfragt. Ein rekursives Ableiten von Informationen erfordert das Auswerten einer rekursiven Relation unter den Datenelementen in der Datenbank. Eine allgemeine Erörterung des mathematischen Konzepts ist bei J. Bradley, Introduction to Discrete Mathematics, Kap. 6, Addison-Wesley 1988, zu finden; siehe ferner E. Roberts, Thinking Recursivelv, John Wiley 1986.
  • Es sei beispielsweise angenommen, daß eine bestimmte Datenbank einen Satz von Datenelementen aufweist, die jeweils eine Eltern-Kind-Relation ausdrücken. Einige solcher Datenelemente könnten Folgende sein: Bill ist der Vater von Richard; Abigail ist die Mutter von Richard; Richard ist der Vater von Mary; Jane ist die Mutter von Mary; John ist der Vater von Andrew; Mary ist die Mutter von Andrew; usw.. Es sei ferner angenommen, daß die Namen der Eltern einer Person durch eine Abfrage der Form "FINDE ELTERN VON [X]" zurückgegeben werden, wobei X der Name der Person ist, deren Eltern gefunden werden sollen. Der Name eines Elternteils einer Person ist ein Beispiel der Art von Informationen, die direkt durch das Wiedergewinnen eines Datenelements in dieser speziellen Datenbank erhalten werden kann.
  • Das obige Beispiel fortsetzend ist zu bemerken, daß die Datenbank keine Informationen über Großeltern enthält. Es ist jedoch offensichtlich, daß derartige Informationen rekursiv aus den Informationen in der Datenbank abgeleitet werden können, beispielsweise durch eine Abfrage der Form "FINDE ELTERN VON [FINDE ELTERN VON [X]]". Das Liefern der Informationen, die durch eine solche Abfrage angefordert werden, schließt das Auswerten der rekursiven Relation von Großeltern und Enkeln ein.
  • Ein Beispiel einer komplexeren Abfrage ist eine Abfrage, um alle gemeinsamen Großeltern von X und Y zu finden. Zwei rekursive Relationen müßten ausgewertet werden, und die Ergebnisse dieser zwei Auswertungen müßten dann verglichen werden, um alle Übereinstimmungen zu finden. Diese zwei rekursiven Relationen werden als wechselseitig rekursive Relationen bezeichnet.
  • Relationen, die durch Datenelemente in modernen Datenbanken ausgedrückt werden, sind häufig viel komplexer als die obigen Beispiele. Beispielsweise würde angenommen werden, daß eine Relation zwischen einem Flug einer Fluggesellschaft und einem Paar von Städten ferner Abflug- und Ankunfts-Zeiten, die Essensverpflegung, die Anzahl von verfügbaren Sitzen, Anschlußverbindungen zu anderen Städten, Flugpreise, usw., aufweist. Das Erzeugen einer Reiseroute, um die Bedürfnisse eines Passagiers zu erfüllen, könnte das Auswerten einer Anzahl von wechselseitig bezogenen rekursiven Relationen erfordern.
  • Wenn die Anzahl von Iterationen, die erforderlich ist, um eine rekursive Relation auszuwerten, im voraus bekannt ist, ist das Auswerten der Relation relativ einfach. Beispielsweise erfordert die Abfrage, um die Großeltern von X zu finden, exakt zwei Iterationen -- eine, um die Eltern von X zu finden, und eine, um die Eltern der Eltern von X zu finden. Wenn jedoch die Anzahl von Iterationen nicht bekannt ist, wird die Auswertung viel schwieriger; ein Beispiel einer Abfrage, bei der die Anzahl von Iterationen nicht bekannt ist, ist eine Abfrage, um alle Vorfahren von X zu finden.
  • Wenn das Datenvolumen in einer Datenbank größer wird und die Beschaffenheit dieser Relationen, die durch die Daten ausgedrückt werden, komplexer wird, kann die Zeit, die selbst für einen sehr leistungsstarken Computer erforderlich ist, um auf eine komplexe Abfrage zu antworten, unannehmbar lang werden, besonders wenn die Anzahl von Iterationen, die erforderlich ist, um die Antwort abzuleiten, nicht im voraus bekannt ist. Folglich wurde die wirkungsvolle Auswertung rekursiver Relationen, speziell von Sätzen von wechselseitig rekursiven Relationen, beim Entwurf moderner Datenbanksysterne eine Sache von kritischer Bedeutung. Eine umfassende Betrachtung dieses Problems wird von F. Bancilhon und R. Ramakrishnan in "An Amateur" Introduction to Recursive Query Processing Strategies" in Proceedings of the ACM-SIGMOD Conference, Washington, D.C., Mai 1986, geboten.
  • In Computing Surveys, Bd. 11, Nr. 2, Juni 1979, Seiten 121-137, "The Ubiguitous B-Tree", erörtert D. Comer den weit verbreiteten B-Baum-Standard für eine Dateiorganisation. Ein wichtiger Vorteil des B-Baums besteht darin, daß der Baum symmetrisch bleibt, wenn Datensätze eingefügt oder entfernt werden. Eine übliche Variation des B-Baums ist der B&spplus;-Baum. Bei einem B&spplus;-Baum befinden sich alle Schlüssel in den Blättern. Die höheren Ebenen sind als ein Index eines herkömmlichen B-Baums organisiert. Die Blattknoten in den unteren Ebenen sind gewöhnlich von links nach rechts verbunden und werden, wenn sie derart verbunden sind, als ein "Sequenzsatz" bezeichnet, der von dem Index getrennt ist. Der B-Baum und der B&spplus;-Baum unterstützen relativ wenig aufwendige Finden-, Einfügen- und Löschen-Operationen, lösten jedoch nicht das Problem des wirksamen Auswertens rekursiver Relationen.
  • Ein Satz von mathematischen Operatoren, die kollektiv als "relationale Algebra" bezeichnet werden, wurde für die Manipulation von Datenelementen in einer Datenbank entwickelt (siehe allgemein C.J. Date, An Introduction to Database Systems (4. Ausg.) Bd. 1, Kap. 13, Addison-Wesley 1986). Die relationale Algebra bietet viele Vorteile und wird beim modernen Datensystementwurf weit verbreitet verwendet; jedoch besitzt die relationale Algebra nicht die Fähigkeit, rekursive Relationen auszuwerten.
  • Neue Operatoren, beispielsweise transitive Abschlußoperatoren wurden vorgeschlagen, um der relationalen Algebra die Fähigkeit zu geben, rekursive Relationen auszuwerten (R. Agrawal, "Alpha: An Extension of Relational Algebra to Express a dass of Recursive Queries", Proceedings of the Third International Conference on Data Engineering, Los Angeles, California, 3. - 5. Februar 1987; S. Ceri u.a., "Translation and Optimization of Logic Queries; the Algebraic Approach", Proceedings of the Eleventh International Conference on Very Large Data Bases, Kyoto, Japan, August 1986).
  • Die Verwendung eines solchen Operators, um eine rekursive Relation r auszuwerten, macht es erforderlich, einen "kleinsten Fixpunkt" einer rekursiven Gleichung der Form
  • r = f(r) (1)
  • zu finden, wobei f eine Funktion ist, die im folgenden Absatz definiert wird. Der kleinste Fixpunkt der rekursiven Relation r ist als eine Relation r* definiert, die den folgenden Kriterien genügt:
  • r* = f(r*) (2)
  • und
  • r* p, für ein beliebiges p, das der Gleichung p = f(p) genügt (3)
  • Siehe A. Aho u.a., "Universality of Data Retrieval Languages", Proceedings of the Sixth POPL, 1979.
  • Obwohl nicht alle rekursiven Gleichungen kleinste Fixpunkte aufweisen, ist garantiert, daß die Gleichung einen kleinsten Fixpunkt aufweist, wenn die Funktion f monoton ist. Eine Funktion f, die nur aus relationalen Algebraoperationen besteht, ist monoton, weshalb eine rekursive Gleichung, bei der die Funktion f nur aus relationalen Algebraoperationen besteht, einen kleinsten Fixpunkt aufweist. Siehe allgemein A. Tarski, "A Lattice-Theoretical Fixpomt Theorem and its Applications", Pacific Journal of Mathematics, Bd. S, Nr. 2, Seiten 285-309, Juni 1955.
  • Um ein Paar von wechselseitig rekursiven Relationen r&sub1; und r&sub2; auszuwerten, müssen die kleinsten Fixpunkte der folgenden, rekursiven, relationalen Algebragleichungen gefunden werden:
  • r&sub1; = f&sub1;(r&sub1;, r&sub2;) (4)
  • und
  • r&sub2; = f&sub2;(r&sub1;, r&sub2;) (5)
  • Allgemein erfordert das Auswerten eines Satzes von n wech selseitig rekursiven Relationen r&sub1; bis rn das Herausfinden der kleinsten Fixpunkte eines Satzes rekursiver Gleichungen der Form
  • r&sub1; = fi(r&sub1;, ..., rn) (6)
  • Die Funktionen f&sub1; sind bezüglich der Definitionen der rekursiven Relationen selbst definiert. Beispielsweise sind zwei wechselseitig rekursive Relationen r&sub1; und r&sub2; durch die folgenden Horn-Anweisungen definiert:
  • r&sub1;(X, Y) E- b&sub1;(X, Z), r&sub2;(Z, Y) (7)
  • r&sub2;(X, Y) E- r&sub1;(X, Z), b&sub2;(Z, Y) (8)
  • r&sub1;(X, Y) E- b&sub3;(x, Y) (9)
  • wobei die b's Basisrelationen sind, und X, Y und Z Spalten in den Basisrelationen sind. Die Funktionen f&sub1; und f&sub2; sind dann gegeben durch:
  • f&sub1;(r&sub1;, r&sub2;) = b&sub3; b&sub1; º r&sub2; (10)
  • f&sub2;(r&sub1;, r&sub2;) = r&sub1; º b&sub2; (11)
  • wobei º ein "Zusammensetzungsoperator" ist, der eine Verknüpfung ist, gefolgt von einer Projektion auf die Attribute in der Zielliste.
  • Allgemeiner ist ein Satz von n Funktionen fi bezüglich der n wechselseitig rekursiven Relationen ri wie folgt definiert.
  • r&sub1; = b&sup0;i bi º r&sub1; º r&sub2; º ... º rn (12)
  • wobei einige der b&sup0; leer sein können, jedoch zumindest eines leer sein muß, um zu garantieren, daß die Berechnung enden wird. Einige der bi können Zwischenrelationen sein, die aus einem oder mehreren anderen bi erhalten werden.
  • Es existieren verschiedene Verfahren zum Berechnen des kleinsten Fixpunktes einer rekursiven Gleichung in einer Datenbankumgebung. Eines derselben, das semi-naive Verfahren, liefert ein gutes Verhalten, wenn es zusammen mit geeigneten Optimierungstechniken verwendet wird. F. Bancilhon u.a. siehe oben; F. Bancilhon, "Naive Evaluation of Recursively Def med Relations" in Brodie and Mylopoulos (eds.), On Knowledge Based Management Systems -- Integrating Database and AI Systems, Springer-Verlag, 1985.
  • Das semi-naive Verfahren zum Berechnen des kleinsten Fixpunktes ist ein iteratives Verfahren. Für eine rekursive Relation r und eine entsprechende rekursive Gleichung r = f(r) berechnet das semi-naive Verfahren iterativ neue Werte für r, die der Gleichung genügen, und fügt dieselben während aufeinanderfolgender Iterationen in r ein, bis keine neuen Werte von r gefunden werden können, wie folgt:
  • while (δrj # φ) do
  • begin
  • end;
  • wobei δr ein neuer Wert von r ist, φ der leere Satz ist, und j die Iterationsvariable ist.
  • Um die kleinsten Fixpunkte eines Satzes von n wechselweise rekursiven Relationen r&sub1; zu finden, muß ein Satz von wechselseitig rekursiven Gleichungen der Form der Gleichung (6) wie folgt zusammen ausgewertet werden:
  • for each ri do
  • r&sup0;i :=φ; (19)
  • for each ri do
  • δr&sup0;i := fi(φ); (20)
  • j := 0; (21)
  • while (some δri # φ) do
  • begin
  • end;
  • Ein differentieller Lösungsansatz, um die kleinsten Fixpunkte eines Satzes von n wechselweise rekursiven Relationen zu finden, wurde ebenfalls vorgeschlagen (I. Balbin u.a., "A Differential Approach to Query Optimization in a Recursive Deductive Database", Technical Report 86/7, Department of Computer Science, University of Melbourne, Australia). Dieser Lösungsansatz ist wie folgt beschrieben:
  • (*Initialization*)
  • for each recursive relation ri do
  • begin
  • r&sup0;i := φ; (25)
  • δr&sup0;i:= b&sup0;i; (26)
  • end;
  • (*Iteration*)
  • j := 0; (27)
  • repeat
  • for each recursive relation ri do
  • begin
  • end;
  • until all δrji = φ
  • Die obigen Verfahren des Findens eines kleinsten Fixpunktes wurden mittels getrennter Anwendungsprogramme in Datenbankumgebungen implementiert.
  • Aus dem Vorhergehenden ist offensichtlich, daß ein Bedarf nach einer Datenstruktur und einem Verfahren zum Anordnen rekursiv abgeleiteter Datenelemente in einer Datenbank auf eine Art und Weise, die eine wirkungsvolle Auswertung der rekursiven Relationen liefert, besteht, besonders wenn die Relationen wechselweise rekursive Relationen sind, und wenn die Anzahl an Iterationen nicht im voraus bekannt ist, mittels einer solchen Einrichtung, daß die direkte Berechnung der kleinsten Fixpunkte ohne den Bedarf nach getrennten Anwendungsprogrammen stattfindet.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung liefert eine Datenbankstruktur für rekursiv abgeleitete Datenelemente und ein Verfahren zum Anordnen derartiger Datenelemente in einer Datenbank gemäß den Ansprüchen 1 und 4. Vorteilhafte Ausführungsbeispiele sind in den Unteransprüchen zu finden.
  • Bei einem bevorzugten Ausführungsbeispiel der Erfindung weist eine Datenbankstruktur für rekursiv abgeleitete Datenelemente eine Mehrzahl von hierarchischen Iterationspegeln auf, einen für jede Iteration einer rekursiven Relation, von der die Datenelemente abgeleitet werden; eine Indexstruktur zum Indizieren der Datenelemente; und eine Einrichtung um die verschiedenen Datenelemente, die jeder Iterationsebene zugeordnet sind, miteinander zu verbinden.
  • Die Indexstruktur weist vorzugsweise einen Sequenzsatz mit einer Mehrzahl von Blattknoten, einen Indexsatz mit einer Mehrzahl von Nicht-Blatt-Knoten und einen Iterationsebenenindex auf. Die Knoten des Sequenzsatzes sind sequentiell in einer Grundindexebene angeordnet. Jeder Knoten liefert einen Bezug zwischen einem Zeiger auf eines der Datenelemente, einem Schlüsselwert, der das Datenelement eindeutig identifiziert, und der Iterationsebene, die diesem Datenelement zugeordnet ist.
  • Die Knoten des Indexsatzes sind hierarchisch angeordnet, um eine Mehrzahl von Indexebenen über der Grundebene zu definieren, wobei jede Ebene weniger Knoten aufweist als die Ebene unter ihr. Jeder Knoten schließt einen Bereich von Schlüsselwerten des Sequenzsatzes ein, wobei alle Knoten auf jeder Ebene zusammen alle Schlüsselwerte einschließen. Jeder Knoten liefert einen Zugriffsweg für jeden Schlüsseiwert in seinem Bereich auf einen Knoten in der nächstunteren Ebene, die den Schlüsselwert in ihrem Bereich aufweist.
  • Der Iterationsebenenindex liefert einen Bezug zwischen jeder Iterationsebene und einem Datenelement, das dieser Ebene zugeordnet ist.
  • Bei einem Ausführungsbeispiel wird jedes Datenelement, das einer gegebenen Iterationsebene zugeordnet ist, einer Seite zugewiesen, die dieser Ebene zugeordnet ist, wobei die Seiten dieser Ebene miteinander verkettet sind. Bei einem weiteren Ausführungsbeispiel sind die einzelnen Datenelemente, die einer gegebenen Iterationsebene zugeordnet sind, global miteinander verkettet.
  • Ein neues Datenelement wird eingefügt, indem die existierenden Daten gefunden werden, die die gleiche Iterationsebene und den nächstliegenden Schlüsselwert aufweisen, indem das neue Element benachbart zu denselben eingefügt wird, indem das neue Datenelement mit den anderen, die die gleiche Iterationsebene aufweisen, verbunden wird, wenn die Datenelemente global verbunden sind, und indem der Index- und der Sequenz-Satz eingestellt werden, um einen Suchweg zu dem neuen Element aufzuweisen.
  • Wenn das neue Datenelement den gleichen Schlüsselwert wie ein existierendes Elernent aufweist, wird das neue Element vorzugsweise beseitigt. Alternativ werden, wenn die Schlüsselwerte die gleichen sind, die zwei Elemente verglichen, wobei das neue nur beseitigt wird, wenn dieselben identisch sind. Jeder dieser Tests kann mit einer minimalen Zusatzbelastung während der Auswertung der rekursiven Relation durchgeführt werden, wobei, wenn alle Datenelemente, die während einer gegebenen Iteration abgeleitet werden, beseitigt sind, die Iteration gestoppt wird. Folglich ist ein wirksamer Test bezüglich dessen, wann die Iterationen gestoppt werden sollen, vorgesehen, wenn die Anzahl von Iterationen, die erforderlich ist, um die rekursive Relation auszuwerten, im voraus nicht bekannt ist.
  • Ein Satz von Datenelementen, der gemäß der Erfindung angeordnet ist, kann sehr wirkungsvoll nach einem Datenelement, das eine Iterationsebene in einem spezifizierten Bereich aufweist, abgesucht werden, indem einem Zugriffsweg durch den Indexsatz zu dem Blattknoten gefolgt wird, der dem Element entspricht, nach dem gesucht wird, indem die Iterationsebene dieses Elements überprüft wird, und indem das Element nur zurückgegeben wird, wenn seine Iterationsebene innerhalb des spezifizierten Bereichs liegt.
  • Die Daten können mit einem hohen Wirkungsgrad abgetastet werden, um alle Datenelemente zu finden, die einer spezifizierten Bedingung genügen und die eine spezifizierte Iterationsebene aufweisen, indem der Iterationsebenenindex verwendet wird, um ein erstes Datenelement, das eine Iterationsebene in dem spezifizierten Bereich aufweist, zu lokalisieren, und indem dann der Verbindung der Datenelemente, die diese Ebene aufweisen, gefolgt wird, bis alle derartigen Elemente abgetastet wurden. Das Durchführen einer Abtastung auf diese Art und Weise liefert die angeforderten Datenelemente automatisch angeordnet in der Reihenfolge des Schlüsselwerts.
  • Eine verschachtelte Schleifenverbindung wird ohne weiteres durchgeführt, indem ein erster Satz von Datenelementen in einer spezifizierten Iterationsebene abgetastet wird; indem für jedes Datenelement, das während der Abtastung gefunden wird, ein zweiter Satz von Datenelementen in einer spezifizierten Iterationsebene nach einer Übereinstimmung abgesucht wird, und indem jedes Element, das bei der Abtastung gefunden wird, mit jedem entsprechenden, das bei der Suche gefunden wird, verbunden wird.
  • In gleicher Weise wird eine Mischabtastverbindung erreicht, indem gleichzeitig ein erster Satz von Datenelementen in einer ersten Iterationsebene und ein zweiter Satz in einer zweiten Iterationsebene abgetastet wird, und indem jedes Datenelement, das bei der ersten Abtastung gefunden wird, mit jedem übereinstimmenden Element, das bei der zweiten Abtastung gefunden wird, verbunden wird.
  • Weitere Aspekte und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung, die in Verbindung mit den beiliegenden Zeichnungen durchgeführt wird, offensichtlich, welche beispielhaft die Grundsätze der Erfindung zeigt.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist eine Darstellung einer Datenstruktur gemäß der Erfindung, wobei die Daten durch Iterationsebenen gruppiert sind;
  • Fig. 2 ist eine Darstellung einer Datenstruktur wie der in Fig. 1, bei der die Daten jedoch nicht gruppiert sind; und
  • Fig. 3 ist eine Darstellung einer Einfügung eines neuen Datenelements in die Datenstruktur, die in Fig. 2 gezeigt ist.
  • Beschreibung des bevorzugten Ausführungsbeispiels
  • Wie in den Zeichnungen zu Zwecken der Darstellung gezeigt ist, ist die Erfindung in einer neuartigen Struktur und einem Verfahren des Anordnens rekursiv abgeleiteter Daten in einer Datenbank verkörpert. Es existierte ein Bedarf nach einer Möglichkeit, wechselweise rekursive Relationen in einer Datenbank direkt auszuwerten, speziell wenn die Anzahl von Iterationen nicht im voraus bekannt ist.
  • Die Struktur und das Verfahren der Erfindung liefern eine hocheffiziente Möglichkeit, um wechselweise rekursive Relationen beispielsweise durch das Berechnen des kleinsten Fixpunktes derartiger Relationen auszuwerten. Dies ermöglicht die Verwendung relationaler Algebratechniken, die durch neu vorgeschlagene Operatoren erweitert sind, und ermöglicht die effiziente Auswertung von Sätzen von wechselweise rekursiven Relationen, selbst wenn die Anzahl von Iterationen, die für eine derartige Auswertung erforderlich ist, nicht im voraus bekannt ist.
  • Wie veranschaulichend in den Figuren dargestellt ist, weist bei einem bevorzugten Ausführungsbeispiel der Erfindung eine Datenbankstruktur für rekursiv abgeleitete Datenelemente, beispielsweise die Datenelemente A, B, D, F, G, H, M, N, P, R, T und Z, folgende Merkmale auf: eine Mehrzahl von hierarchischen Iterationsebenen, beispielsweise den Ebenen 1 bis 3, wie dieselben in einem Iterationsebenenindex 101 dargestellt sind, wobei eine solche Ebene jeder Iteration der rekursiven Relation, von der die Datenelemente abgeleitet werden, entspricht, wobei alle Datenelemente, die während einer gegebenen Iteration abgeleitet werden, der entsprechenden Iterationsebene zugeordnet sind; eine Indexstruktur, die allgemein zum Indizieren der Datenelemente bestimmt 103 ist; und eine Einrichtung, beispielsweise Zeiger 105, 107 und 109, zum Verbinden der Datenelemente, die jeder Iterationsebene zugeordnet sind.
  • Die Indexstruktur 103 weist einen Sequenzsatz 111 mit einer Mehrzahl von Blattknoten, beispielsweise dem Knoten 113, auf, welche sequentiell angeordnet sind, um einen Grundindexpegel der Struktur zu definieren, wobei jeder derartige Knoten einen Bezug zwischen einem Zeiger, beispielsweise dem Zeiger 15, und einem der Datenelemente, beispielsweise dem Datenelement T, auf das der Zeiger 115 zeigt, einem Schlüsselwert, beispielsweise dem Wert "5", der dieses Datenelement eindeutig identifiziert, und der Iterationsebene, beispielsweise der Ebene "2", die diesem Datenelement zugeordnet ist, liefert.
  • Die Struktur 103 weist ferner einen Indexsatz 117 mit einer Mehrzahl von Nicht-Blatt-Knoten, beispielsweise dem Knoten 119, auf, welche hierarchisch angeordnet sind, um eine Mehrzahl von Indexebenen, beispielsweise den Ebenen 121, 123 und 125, über der Grundindexebene der Struktur zu definieren, wobei jede Ebene weniger Knoten als die Ebene unter derselben aufweist, wobei jeder Knoten einen Bereich von Schlüsselwerten des Sequenzsatzes einschließt, wobei alle Knoten auf jeder Ebene zusammen alle Schlüsselwerte einschließen, wobei jeder Bereich, der von einem Knoten eingeschlossen ist, in dem Bereich enthalten ist, der durch einen Knoten auf der nächsthöheren Ebene eingeschlossen ist, wobei jeder Knoten für einen beliebigen Schlüsselwert in seinem Bereich einen Zugriffsweg liefert, beispielsweise den Weg, der durch einen Pfeil 127 gezeigt ist, zu einem Knoten auf der nächstunteren Ebene, die den Schlüsselwert in ihrem Bereich aufweist.
  • Die Struktur 103 weist ferner den Iterationsebenenindex 101 auf, der einen Bezug zwischen jeder Iterationsebene und einem Datenelement, das der Ebene zugeordnet ist, liefert.
  • Bei einem Ausführungsbeispiel weist die Verbindungseinrichtung globale Kettenbezüge, beispielsweise die Pfeile 129 in Fig. 2, auf, die Datenelemente, die jeder Iterationsebene zugeordnet sind, verbinden.
  • Bei einem weiteren Ausführungsbeispiel ist jedes Datenelement, das einer gegebenen Iterationsebene zugeordnet ist, einer Seite zugewiesen, beispielsweise der Seite 131 in Fig. 1, wobei jede Seite dieser Iterationsebene zugeordnet ist. Die Verbindungseinrichtung weist Seitenkettenbezüge, beispielsweise die Pfeile 105, 107 und 109, auf, die die Seiten, die jeder Iterationsebene zugeordnet sind, verbinden.
  • Die Erfindung liefert ein Verfahren des Anordnens rekursiv abgeleiteter Datenelemente in einer Datenbank, bei dem die Daten gemäß der Struktur, die oben beschrieben ist, angeordnet werden.
  • Neue Datenelemente werden in die Datenstruktur, die oben beschrieben ist, eingefügt, wenn dieselben abgeleitet werden. Wenn solche Daten gemäß der Iterationsebene gruppiert werden, werden dieselben folglich wie gewöhnlich sequentiell, so wie sie erzeugt werden, Seiten zugewiesen. Dies ist jedoch nicht erforderlich, wobei die Daten den Seiten in einer beliebigen Reihenfolge zugewiesen werden können, solange nur Datenelemente, die während einer gegebenen Iterationsebene hergeleitet werden, den Seiten zugewiesen werden, die dieser Iterationsebene entsprechen. Wenn die Daten nicht durch eine Iterationsebene gruppiert werden, wird selbstverständlich jedes Datenelement mit anderen der gleichen Ebene verkettet.
  • Ein neues Datenelement wird eingefügt, indem identifiziert wird, welches der Datenelemente, die der Iterationsebene des neuen Elements zugeordnet sind, den nächstliegenden Schlüsselwert bezüglich des Schlüsselwerts des neuen Elements aufweist, indem das neue Datenelement benachbart zu dem identifizierten Datenelement in die Datenbank eingefügt wird, indem das neue Datenelement mit den anderen Datenelementen, die der Iterationsebene des neuen Elements zugeordnet sind, verbunden wird, indem ein neuer Blattknoten mit einem Zeiger auf das neue Datenelement erzeugt wird, indem der neue Blattknoten in den Sequenzsatz eingefügt wird, und indem der Indexsatz eingestellt wird, um einen Weg zu dem neuen Blattknoten aufzuweisen. Der Indexsatz wird auf eine Art und Weise eingestellt, die ähnlich der ist, die verwendet wird, um den Indexsatz eines gewöhnlichen B-Baumes einzustellen, wie es beispielsweise bei C.J. Date, An Introduction to Database Systems (4te Aufl.) Bd. 1, Seiten 63 - 67, beschrieben ist. Wenn die Daten durch eine Iterationsebene gruppiert sind, ist keine andere Verbindung wie die Zuweisung des Datenelements zu einer Seite der richtigen Iterationsebene erforderlich, da die Seiten, die dieser Iterationsebene entsprechen, miteinander verkettet sind.
  • Das Verfahren des Einfügens eines neuen Datenelements ist in Fig. 3 dargestellt, wobei ein neues Datenelement K dem globalen Datensatz 129 hinzugefügt wurde. Ein neuer Blattknoten 133 wurde erzeugt und in einer ordnungsgemäßen Sequenz zwischen existierende Knoten 135 und 137 eingefügt, wobei der Knoten 137, der um eine Position nach rechts bewegt wurde, verschoben wurde. Das Datenelement K wurde mit dem Element P der Ebene 2 verkettet, wie durch einen Pfeil 139 angezeigt ist, wobei der Indexbaum eingestellt wurde, wie durch einen geänderten Wert in dem Nicht-Blatt-Knoten 119 angezeigt ist. Ein neuer Zeiger, der durch einen Pfeil 141 gezeigt ist, wurde zwischen dem Knoten 133 und dem Datenelement K vorgesehen.
  • Vorzugsweise werden doppelte Datenelemente beseitigt. Dies kann durchgeführt werden, indem das neue Datenelement beseitigt wird, wenn sein Schlüsselwert der gleiche wie der Schlüsselwert des identifizierten Datenelements ist, neben dem dasselbe plaziert werden soll. Wenn es erwünscht ist, können die zwei Datenelemente verglichen werden, um sicher zu sein, daß dieselben identisch sind, bevor das neue Element beseitigt wird.
  • Ein Vorteil des Beseitigens doppelter Datenelemente besteht darin, daß die Iteration beendet werden kann, wenn alle Elemente, die während einer Iteration erzeugt werden, beseitigt sind. Dies liefert einen effizienten Test dafür, wann eine Iteration angehalten werden soll, wenn die Anzahl von Iterationen, die erforderlich ist, um eine rekursive Relation auszuwerten, nicht bekannt ist.
  • Die Erfindung liefert ein hocheffizientes Verfahren des Suchens von Datenelementen, die wie beschrieben angeordnet wurden, um ein Datenelement mit einem spezifizierten Schlüsselwert und einer Iterationsebene in einem spezifizierten Bereich zu finden. Dieses Suchverfahren umfaßt das Auswählen eines Zugriffsweges aus den Wegen, die durch die Nicht- Blatt-Knoten vorgesehen sind, um einen Blattknoten zu lokalisieren, der dem spezifizierten Schlüsselwert zugeordnet ist; das Bestimmen, ob die Iterationsebene, die dem Blattknoten zugeordnet ist, innerhalb des spezifizierten Bereichs liegt; und das Zurückgeben des Datenelements, das dem Blattknoten zugeordnet ist, nur wenn die Bestimmung positiv ist.
  • Die Erfindung liefert ferner ein sehr effizientes Verfahren des Abtastens eines Satzes von Datenelementen, um alle zu finden, die einer spezifizierten Bedingung genügen und eine spezifizierte Iterationsebene aufweisen. Dieses Verfahren umfaßt das Verwenden des Iterationsebenenindex, um ein erstes Datenelement zu lokalisieren, das der Iterationsebene zugeordnet ist, das nachfolgende Verbinden der Datenelemente, um die anderen Datenelemente, die der Iterationsebene zugeordnet sind, zu lokalisieren, das Untersuchen jedes lokalisierten Datenelements der Reihe nach, um zu bestimmen, ob dasselbe der vorgeschriebenen Bedingung genügt, und, wenn das untersuchte Element der vorgeschriebenen Bedingung genügt, das Wiedergewinnen des Elements, wobei die Elemente, die während der Abtastung wiedergewonnen werden, in einer sequentiellen Reihenfolge entsprechend ihren Schlüsselwerten angeordnet werden.
  • Die obige Such- und Abtast-Technik kann kombiniert werden, um Verbindungsoperationen, beispielsweise verschachtelte Schleifenverbindungen und Mischabtastverbindungen durchzuführen. Die Fähigkeit, derartige Verbindungen durchzuführen, ist der Punkt, der der Erfindung die Fähigkeit gibt, effizient kleinste Fixpunkte auszuwerten.
  • Ein Verfahren des Durchführens einer verschachtelten Schleifenverbindung gemäß der Erfindung umfaßt das Abtasten eines ersten Satzes von Datenelementen, um alle Datenelemente zu finden, die einer spezifizierten Bedingung genügen und eine spezifizierte Iterationsebene aufweisen, für jedes Datenelement, das in dem vorhergehenden Schritt gefunden wird, Durchsuchen eines zweiten Satzes von Datenelementen, um alle Datenelemente zu finden, die einen Schlüsselwert aufweisen, der dem Schlüsselwert des Datenelements und einer spezifizierten Iterationsebene entspricht, und Verbinden jedes Datenelements, das bei der Abtastung gefunden wird, mit jedem entsprechenden Datenelement, das bei der Suche gefunden wird.
  • Ein Verfahren des Durchführens einer Mischabtastverbindung gemäß der Erfindung umfaßt das gleichzeitige Abtasten eines ersten Satzes von Datenelementen mit einer ersten spezifizierten Iterationsebene und eines zweiten Satzes von Datenelementen mit einer zweiten Iterationsebene und das Verbinden jedes Datenelements, das bei der Abtastung des ersten Satzes gefunden wird, mit jedem übereinstimmenden Datenelement, das bei jeder Abtastung des zweiten Satzes gefunden wird. Essentiell pausiert die erste Abtastung bei jedem Element während ihrer Abtastung, während die zweite Abtastung weitermacht, bis keine Übereinstimmungen gefunden werden. Da die Daten in beiden Sätzen in der Reihenfolge ihrer Schlüsselwerte angeordnet sind, ist nur ein einziger Durchlauf durch jeden Satz erforderlich, um die Mischabtastoperation abzuschließen.
  • Eine mathematische Beschreibung der Erfindung ist in einem Anhang hierzu vorgesehen, wobei der Anhang hiermit durch Bezugnahme aufgenommen ist.
  • Aus dem Vorhergehenden ist es offensichtlich, daß die Daten struktur und das Verfahren der Erfindung eine Möglichkeit liefern, um effizient auf komplexe Datenbankabfragen zu antworten. Ein Satz von wechselweise rekursiven Relationen wird beispielsweise durch das Berechnen der kleinsten Fixpunkte der Relationen mit einem Minimum an Zusatzaufwand ausgewertet, selbst wenn die Anzahl von Rekursionen, die erforderlich ist, um die Auswertung durchzuführen, nicht im voraus bekannt ist.

Claims (18)

1. Eine Datenbankstruktur für rekursiv abgeleitete Datenelemente (A ... Z), wobei die Datenbankstruktur folgende Merkmale aufweist:
eine Indexstruktur zum Indizieren der Datenelemente, wobei die Indexstruktur einen Sequenzsatz (111) mit einer Mehrzahl von Blattknoten (113, 135, 137), die sequentiell angeordnet sind, um einen Grundindexpegel der Struktur zu definieren, aufweist; und
einen Indexsatz (117) mit einer Mehrzahl von Nicht- Blatt-Knoten (119), die hierarchisch angeordnet sind, um eine Mehrzahl von Indexebenen (121, 123, 125) über der Grundindexebene der Struktur zu definieren, wobei jede Ebene weniger Knoten als die Ebene unter derselben aufweist, wobei jeder Knoten einen Bereich von Schlüsselwerten des Sequenzsatzes einschließt, wobei alle Knoten auf jeder Ebene zusammen alle Schlüsselwerte einschließen, wobei jeder Bereich, der durch einen Knoten eingeschlossen ist, in dem Bereich enthalten ist, der durch einen Knoten auf der nächsthöheren Ebene eingeschlossen ist, wobei jeder Knoten für jeden Schlüsseiwert innerhalb seines Bereichs einen Zugriffsweg (127) zu einem Knoten auf der nächstniedrigeren Ebene, die den Schlüsselwert in dem Bereich derselben aufweist, liefert,
wobei die Datenbankstruktur durch folgende Merkmale gekennzeichnet ist:
eine Mehrzahl von hierarchischen Iterationsebenen (1 ... 4), wobei eine solche Ebene jeder Iteration der rekursiven Relation, von der die Datenelemente abgeleitet werden, entspricht, wobei alle Datenelemente, die während einer gegebenen Iteration abgeleitet werden, der entsprechenden Iterationsebene zugeordnet sind;
einen Bezug, der durch jeden Blattknoten zwischen einem Zeiger (115) und einem der Datenelemente, einem Schlüsselwert, der dieses Datenelement eindeutig identifiziert und der Iterationsebene, die diesem Datenelement zugeordnet ist, vorgesehen ist;
einen Iterationsebenenindex (101), der eine Referenz zwischen jeder Iterationsebene und einem Datenelement, das dieser Ebene zugeordnet ist, liefert; und
eine Einrichtung zum Verbinden der Datenelemente, die jeder Iterationsebene zugeordnet sind.
2. Eine Datenbankstruktur gemäß Anspruch 1, bei der die Verbindungseinrichtung globale Kettenbezüge (129) aufweist, die die Datenelemente, die jeder Iterationsebene zugeordnet sind, verbinden.
3. Eine Datenbankstruktur gemäß Anspruch 1, bei der jedes Datenelement, das einer gegebenen Iterationsebene zugeordnet ist, einer Seite (131), die der Iterationsebene zugeordnet ist, zugewiesen ist.
4. Eine Datenbankstruktur gemäß Anspruch 3, bei der die Verbindungseinrichtung Seitenkettenbezüge (105, 107, 109) aufweist, die die Seiten, die jeder Iterationsebene zugeordnet sind, verbinden.
5. Ein Verfahren des Anordnens rekursiv abgeleiteter Datenelemente (A ... Z) in einer Datenbank mit folgenden Schritten:
Definieren eines Sequenzsatzes (111) mit einer Mehrzahl von Blattknoten (113, 135, 137), die sequentiell angeordnet sind, um einen Grundindexpegel einer Indexstruktur (103) zu definieren;
Definieren eines Indexsatzes (117) mit einer Mehrzahl von Nicht-Blattknoten (119), die hierarchisch angeordnet sind, um eine Mehrzahl von Indexebenen (121, 123, 125) über der Grundindexebene der Indexstruktur zu definieren, wobei jede Ebene weniger Knoten als die Ebene unter derselben aufweist; und
Zuweisen eines Bereichs von Schlüsselwerten des Sequenzsatzes zu jedem Knoten, derart, daß alle Knoten auf jeder Ebene zusammen alle Schlüsselwerte einschließen, wobei jeder Bereich, der durch einen Knoten eingeschlossen ist, in dem Bereich enthalten ist, der durch einen Knoten auf der nächsthöheren Ebene eingeschlossen ist, und wobei jeder Knoten für jeden Schlüsselwert innerhalb seines Bereichs einen Zugriffsweg (127) zu einem Knoten auf der nächstniedrigeren Ebene, die den Schlüsselwert innerhalb ihres Bereichs aufweist, liefert, wobei das Verfahren durch folgende Schritte gekennzeichnet ist:
Definieren einer Mehrzahl hierarchischer Iterationsebenen (1 ... 4), wobei eine solche Ebene jeder Iteration der rekursiven Relation, von der die Datenelemente abgeleitet werden, entspricht;
Zuordnen aller Datenelemente, die während einer gegebenen Iteration abgeleitet werden, zu der entsprechenden Iterationsebene;
Zuordnen jedes Blattknotens mit einem Zeiger (115) auf eines der Datenelemente, zu einem Schlüsselwert, der dieses Datenelement eindeutig identifiziert, und zu einer Iterationsebene, die dem Datenelement zugeordnet ist;
Definieren eines Iterationsebenenindex (101), um einen Bezug zwischen jeder Iterationsebene und einem Datenelement, das dieser Ebene zugeordnet ist, zu liefern; und
Verbinden der Datenelemente, die jeder Iterationsebene zugeordnet sind.
6. Ein Verfahren gemäß Anspruch 5, bei dem das Verbinden der Datenelemente das globale Verketten (129) der Datenelemente, die einer gegebenen Iterationsebene zugeordnet sind, aufweist.
7. Ein Verfahren gemäß Anspruch 6, das ferner das Einfügen eines neuen Datenelements in die Datenbank durch folgende Schritte aufweist:
Identifizieren, welches der Datenelemente, die der Iterationsebene des neuen Datenelements zugeordnet sind, den nächstliegenden Schlüsselwert bezüglich des Schlüsselwerts des neuen Elements aufweist;
Einfügen des neuen Datenelements in die Datenbank benachbart zu dem identifizierten Datenelement;
Verbinden des neuen Datenelements mit den anderen Datenelementen, die der Iterationsebene des neuen Datenelements zugeordnet sind;
Erzeugen eines neuen Blattknotens mit einem Zeiger auf das neue Datenelement;
Einfügen des neuen Blattknotens in den Sequenzsatz; und
Einstellen des Indexsatzes, um einen Weg zu dem neuen Blattknoten aufzuweisen.
8. Ein Verfahren gemäß Anspruch 5, das ferner das Zuweisen jedes Datenelements, das einer gegebenen Iterationsebene zugeordnet ist, zu einer Seite (131), die der Iterationsebene zugeordnet ist, aufweist.
9. Ein Verfahren gemäß Anspruch 8, bei dem das Verbinden der Datenelemente das Verketten der Seiten, die einer gegebenen Iterationsebene zugeordnet sind, aufweist.
10. Ein Verfahren gemäß Anspruch 9, das ferner das Einfügen eines neuen Datenelements durch folgende Schritte aufweist:
Identifizieren, welches der Datenelemente, die der Iterationsebene des neuen Elements zugeordnet sind, den nächstliegenden Schlüsselwert bezüglich des Schlüsselwerts des neuen Elements aufweist;
Zuweisen des neuen Datenelements zu einer Seite, die der Iterationsebene des neuen Elements zugeordnet ist, an einem Ort benachbart zu dem identifizierten Datenelement;
Erzeugen eines neuen Blattknotens mit einem Zeiger auf das neue Datenelement;
Einfügen des neuen Blattknotens in den Sequenzsatz; und
Einstellen des Indexsatzes, um einen Weg zu dem neuen Blattknoten aufzuweisen.
11. Ein Verfahren gemäß Anspruch 7 oder Anspruch 10, das ferner das Beseitigen neuer Datenelemente aufweist, wenn der Schlüsselwert derselben der gleiche wie der Schlüsselwert des identifizierten Datenelements ist.
12. Ein Verfahren gemäß Anspruch 7 oder Anspruch 10, das ferner das Beseitigen des neuen Datenelements aufweist, wenn dasselbe identisch zu dem des identifizierten Datenelements ist.
13. Ein Verfahren gemäß Anspruch 11 oder Anspruch 12, das ferner das Stoppen der Iteration der rekursiven Relation aufweist, wenn alle Elemente, die während einer Iteration erzeugt werden, beseitigt sind.
14. Ein Verfahren gemäß einem beliebigen der Ansprüche 5, 6, 8 und 9, das ferner das Suchen eines Satzes von Datenelementen aufweist, um ein Datenelement mit einem spezifizierten Schlüsselwert und einer Iterationsebene in einem spezifizierten Bereich zu finden, wobei der Schritt des Suchens folgende Merkmale aufweist:
Auswählen eines Zugriffswegs aus den Wegen, die durch die Nicht-Blattknoten geliefert werden, um einen Blattknoten zu lokalisieren, der dem spezifizierten Schlüsselwert zugeordnet ist;
Bestimmen, ob der Iterationspegel, der dem Blattknoten zugeordnet ist, innerhalb des spezifizierten Bereichs liegt; und
Zurückgeben des Datenelements, das dem Blattknoten zugeordnet ist, nur wenn die Bestimmung positiv ist.
15. Ein Verfahren gemäß einem beliebigen der Ansprüche 5, 6, 8 oder 9, das ferner das Abtasten eines Satzes von Datenelementen aufweist, um alle Datenelemente zu finden, die einer spezifizierten Bedingung genügen und eine spezifizierte Iterationsebene aufweisen, wobei der Schritt des Abtastens folgende Schritte aufweist:
Verwenden des Iterationsebenenindex, um ein erstes Datenelement, das der Iterationsebene zugeordnet ist, zu lokalisieren;
Folgen der Verbindung der Datenelemente, um die anderen Datenelemente, die der Iterationsebene zugeordnet sind, zu lokalisieren;
Untersuchen jedes lokalisierten Datenelements der Reihe nach, um zu bestimmen, ob dasselbe der vorgeschriebenen Bedingung genügt; und
wenn das untersuchte Element der vorgeschriebenen Bedingung genügt, Wiedergewinnen des Elements, wobei die Elemente, die während der Abtastung wiedergewonnen werden, in einer sequentiellen Reihenfolge gemäß ihren Schlüsselwerten angeordnet werden.
16. Ein Verfahren gemäß einem beliebigen der Ansprüche 5, 6, 8 oder 9, das ferner das Durchführen einer verschachtelten Schleifenverbindung gemäß folgenden Schritten aufweist:
Abtasten eines ersten Satzes von Datenelementen, um alle Datenelemente zu finden, die einer spezifizierten Bedingung genügen und eine spezifizierte Iterationsebene aufweisen;
für jedes Datenelement, das bei dem vorhergehenden Schritt gefunden wird, Durchsuchen eines zweiten Satzes von Datenelementen, um alle Datenelemente zu finden, die einen Schlüsselwert aufweisen, der dem Schlüsselwert des Datenelements und einer spezifizierten Iterationsebene entspricht; und
Verbinden jedes Datenelements, das bei der Abtastung gefunden wird, mit jedem entsprechenden Datenelement, das bei der Suche gefunden wird.
17. Ein Verfahren gemäß einem beliebigen der Ansprüche 5, 6, 8 oder 9, das ferner das Durchführen einer Mischabtastverbindung durch folgende Schritte aufweist:
gleichzeitiges Abtasten eines ersten Satzes von Datenelementen mit einer ersten spezifizierten Iterationsebene und eines zweiten Satzes von Datenelementen mit einer zweiten Iterationsebene; und
Verbinden jedes Datenelements, das bei dem Abtasten des ersten Satzes gefunden wird, mit jedem übereinstimmenden Datenelement, das bei jedem Abtasten des zweiten Satzes gefunden wird.
18. Ein Computer, der die Datenbankstruktur gemäß einem der Ansprüche 1 bis 4 aufweist.
DE68926849T 1988-12-19 1989-12-18 Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank Expired - Fee Related DE68926849T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US28642588A 1988-12-19 1988-12-19

Publications (2)

Publication Number Publication Date
DE68926849D1 DE68926849D1 (de) 1996-08-22
DE68926849T2 true DE68926849T2 (de) 1996-11-21

Family

ID=23098548

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68926849T Expired - Fee Related DE68926849T2 (de) 1988-12-19 1989-12-18 Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank

Country Status (5)

Country Link
US (1) US5546571A (de)
EP (1) EP0375307B1 (de)
JP (1) JP2771288B2 (de)
CA (1) CA2001390C (de)
DE (1) DE68926849T2 (de)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0558505B1 (de) * 1990-10-05 2000-01-26 Microsoft Corporation System und verfahren für informationsauffindung
CA2117846C (en) * 1993-10-20 2001-02-20 Allen Reiter Computer method and storage structure for storing and accessing multidimensional data
US5657437A (en) * 1993-12-10 1997-08-12 Lucent Technologies Inc. Data processing apparatus and method including proportional updating of data
GB9417314D0 (en) * 1994-08-27 1994-10-19 Int Computers Ltd Method for performing joins in a database system
JP3549608B2 (ja) * 1995-04-04 2004-08-04 富士通株式会社 識別子による階層構造データの構造判定方法および装置
US5752241A (en) * 1995-11-14 1998-05-12 Lucent Technologies Inc. Method and apparatus for estimating transitive closure and reachability
US5787424A (en) * 1995-11-30 1998-07-28 Electronic Data Systems Corporation Process and system for recursive document retrieval
US5761654A (en) * 1996-06-05 1998-06-02 Oracle Corporation Memory structure and method for tuning a database statement using a join-tree data structure representation, including selectivity factors, of a master table and detail table
US6374232B1 (en) * 1996-08-29 2002-04-16 Oracle Corp. Method and mechanism for retrieving values from a database
US5937388A (en) * 1996-12-05 1999-08-10 Hewlett-Packard Company System and method for performing scalable distribution of process flow activities in a distributed workflow management system
US6014673A (en) * 1996-12-05 2000-01-11 Hewlett-Packard Company Simultaneous use of database and durable store in work flow and process flow systems
US6115716A (en) * 1997-03-14 2000-09-05 Nokia Telecommunications Oy Method for implementing an associative memory based on a digital trie structure
FI102426B (fi) 1997-03-14 1998-11-30 Nokia Telecommunications Oy Menetelmä muistin toteuttamiseksi
FI102424B (fi) 1997-03-14 1998-11-30 Nokia Telecommunications Oy Menetelmä muistin toteuttamiseksi
US6735253B1 (en) 1997-05-16 2004-05-11 The Trustees Of Columbia University In The City Of New York Methods and architecture for indexing and editing compressed video over the world wide web
US5991756A (en) * 1997-11-03 1999-11-23 Yahoo, Inc. Information retrieval from hierarchical compound documents
US6442557B1 (en) 1998-02-27 2002-08-27 Prc Inc. Evaluation of enterprise architecture model including relational database
US6272486B1 (en) * 1998-04-16 2001-08-07 International Business Machines Corporation Determining the optimal number of tasks for building a database index
US6112209A (en) * 1998-06-17 2000-08-29 Gusack; Mark David Associative database model for electronic-based informational assemblies
US6327587B1 (en) 1998-10-05 2001-12-04 Digital Archaeology, Inc. Caching optimization with disk and/or memory cache management
US6601058B2 (en) * 1998-10-05 2003-07-29 Michael Forster Data exploration system and method
US7143434B1 (en) 1998-11-06 2006-11-28 Seungyup Paek Video description system and method
US7526468B2 (en) * 1999-01-08 2009-04-28 Computer Associates Think, Inc. System and method for recursive path analysis of DBMS procedures
US6941325B1 (en) * 1999-02-01 2005-09-06 The Trustees Of Columbia University Multimedia archive description scheme
KR100706820B1 (ko) * 1999-02-01 2007-04-11 더 트러스티스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 멀티미디어 아카이브 디스크립션 스킴
US6427123B1 (en) 1999-02-18 2002-07-30 Oracle Corporation Hierarchical indexing for accessing hierarchically organized information in a relational system
US6446085B1 (en) 1999-06-17 2002-09-03 International Business Machines Corporation Method and apparatus for processing recursive hard links in a data processing system
US6473763B1 (en) 2000-03-31 2002-10-29 International Business Machines Corporation System, method and computer program for filtering multi-action rule set
US7313692B2 (en) * 2000-05-19 2007-12-25 Intertrust Technologies Corp. Trust management systems and methods
KR100413967B1 (ko) * 2000-12-30 2004-01-07 한국전자통신연구원 항해기반 데이터 모델에서 중첩구조 데이터세트의 해석 및변환 방법
WO2003051031A2 (en) 2001-12-06 2003-06-19 The Trustees Of Columbia University In The City Of New York Method and apparatus for planarization of a material by growing and removing a sacrificial film
US7058640B2 (en) * 2003-02-05 2006-06-06 International Business Machines Corporation Systems, methods, and computer program products to efficiently update multidimensional databases
US8229932B2 (en) 2003-09-04 2012-07-24 Oracle International Corporation Storing XML documents efficiently in an RDBMS
US8694510B2 (en) 2003-09-04 2014-04-08 Oracle International Corporation Indexing XML documents efficiently
JP2007505387A (ja) * 2003-09-09 2007-03-08 コニンクリユケ フィリップス エレクトロニクス エヌ.ブイ. データのツリー構造の表示を提供する方法
US7499915B2 (en) * 2004-04-09 2009-03-03 Oracle International Corporation Index for accessing XML data
US7366735B2 (en) 2004-04-09 2008-04-29 Oracle International Corporation Efficient extraction of XML content stored in a LOB
US7493305B2 (en) 2004-04-09 2009-02-17 Oracle International Corporation Efficient queribility and manageability of an XML index with path subsetting
US7680811B2 (en) * 2004-04-16 2010-03-16 Infoblox Inc. Set based data store
US7930277B2 (en) 2004-04-21 2011-04-19 Oracle International Corporation Cost-based optimizer for an XML data repository within a database
US20050278301A1 (en) * 2004-05-26 2005-12-15 Castellanos Maria G System and method for determining an optimized process configuration
US7971191B2 (en) * 2004-06-10 2011-06-28 Hewlett-Packard Development Company, L.P. System and method for analyzing a process
US7885980B2 (en) * 2004-07-02 2011-02-08 Oracle International Corporation Mechanism for improving performance on XML over XML data using path subsetting
US8566300B2 (en) 2004-07-02 2013-10-22 Oracle International Corporation Mechanism for efficient maintenance of XML index structures in a database system
US7236938B2 (en) * 2004-08-11 2007-06-26 Hewlett-Packard Development Company, L.P. System and method for refreshing metric values
US8412671B2 (en) * 2004-08-13 2013-04-02 Hewlett-Packard Development Company, L.P. System and method for developing a star schema
US7389296B2 (en) * 2004-09-02 2008-06-17 International Business Machines Corporation Method, system and program product for displaying a logical structure
US7627547B2 (en) * 2004-11-29 2009-12-01 Oracle International Corporation Processing path-based database operations
US8131766B2 (en) * 2004-12-15 2012-03-06 Oracle International Corporation Comprehensive framework to integrate business logic into a repository
US7921076B2 (en) 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US8631391B2 (en) 2005-01-24 2014-01-14 Hewlett-Packard Development Company, L.P. Method and a system for process discovery
US20060167825A1 (en) * 2005-01-24 2006-07-27 Mehmet Sayal System and method for discovering correlations among data
US7529790B1 (en) 2005-01-27 2009-05-05 Hewlett-Packard Development Company, L.P. System and method of data analysis
WO2006096612A2 (en) 2005-03-04 2006-09-14 The Trustees Of Columbia University In The City Of New York System and method for motion estimation and mode decision for low-complexity h.264 decoder
US7337167B2 (en) * 2005-04-14 2008-02-26 International Business Machines Corporation Estimating a number of rows returned by a recursive query
US7467145B1 (en) 2005-04-15 2008-12-16 Hewlett-Packard Development Company, L.P. System and method for analyzing processes
US8423396B1 (en) 2005-04-28 2013-04-16 Hewlett-Packard Development Company, L.P. System and method for process discovery
US8073841B2 (en) 2005-10-07 2011-12-06 Oracle International Corporation Optimizing correlated XML extracts
US8356053B2 (en) * 2005-10-20 2013-01-15 Oracle International Corporation Managing relationships between resources stored within a repository
US20070118510A1 (en) * 2005-11-18 2007-05-24 Microsoft Corporation Optimization of leaf-level multi-dimensional calculation using scripts
US8949455B2 (en) 2005-11-21 2015-02-03 Oracle International Corporation Path-caching mechanism to improve performance of path-related operations in a repository
US8510292B2 (en) * 2006-05-25 2013-08-13 Oracle International Coporation Isolation for applications working on shared XML data
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
US7941451B1 (en) * 2006-08-18 2011-05-10 Unisys Corporation Dynamic preconditioning of a B+ tree
US9183321B2 (en) 2006-10-16 2015-11-10 Oracle International Corporation Managing compound XML documents in a repository
US7797310B2 (en) 2006-10-16 2010-09-14 Oracle International Corporation Technique to estimate the cost of streaming evaluation of XPaths
US7827177B2 (en) * 2006-10-16 2010-11-02 Oracle International Corporation Managing compound XML documents in a repository
EP2092446A4 (de) * 2006-12-05 2013-03-13 Univ Florida Nichtlineare dynamische suchmaschine
US7836098B2 (en) * 2007-07-13 2010-11-16 Oracle International Corporation Accelerating value-based lookup of XML document in XQuery
US7840609B2 (en) * 2007-07-31 2010-11-23 Oracle International Corporation Using sibling-count in XML indexes to optimize single-path queries
US7991768B2 (en) 2007-11-08 2011-08-02 Oracle International Corporation Global query normalization to improve XML index based rewrites for path subsetted index
US8144705B1 (en) * 2008-03-17 2012-03-27 Juniper Networks, Inc. Systems and methods for recursively accessing a multi-bank SRAM
WO2009126785A2 (en) 2008-04-10 2009-10-15 The Trustees Of Columbia University In The City Of New York Systems and methods for image archaeology
WO2009144821A1 (ja) 2008-05-30 2009-12-03 富士通株式会社 装置構成情報最適配置方法及び装置構成情報最適配置システム
WO2009155281A1 (en) 2008-06-17 2009-12-23 The Trustees Of Columbia University In The City Of New York System and method for dynamically and interactively searching media data
US7958112B2 (en) 2008-08-08 2011-06-07 Oracle International Corporation Interleaving query transformations for XML indexes
US8671069B2 (en) 2008-12-22 2014-03-11 The Trustees Of Columbia University, In The City Of New York Rapid image annotation via brain state decoding and visual pattern mining
US8219563B2 (en) * 2008-12-30 2012-07-10 Oracle International Corporation Indexing mechanism for efficient node-aware full-text search over XML
US8126932B2 (en) * 2008-12-30 2012-02-28 Oracle International Corporation Indexing strategy with improved DML performance and space usage for node-aware full-text search over XML
JP5517263B2 (ja) * 2011-07-06 2014-06-11 日本電信電話株式会社 チャンク生成装置、チャンク読み取り装置、チャンク生成方法及びプログラム
US9171031B2 (en) * 2012-03-02 2015-10-27 Cleversafe, Inc. Merging index nodes of a hierarchical dispersed storage index
US9959299B2 (en) 2014-12-02 2018-05-01 International Business Machines Corporation Compression-aware partial sort of streaming columnar data
US10909078B2 (en) * 2015-02-25 2021-02-02 International Business Machines Corporation Query predicate evaluation and computation for hierarchically compressed data
US9875087B2 (en) * 2015-04-10 2018-01-23 Oracle International Corporation Declarative program engine for large-scale program analysis
US10678792B2 (en) * 2015-10-23 2020-06-09 Oracle International Corporation Parallel execution of queries with a recursive clause
US10642831B2 (en) 2015-10-23 2020-05-05 Oracle International Corporation Static data caching for queries with a clause that requires multiple iterations to execute
US10783142B2 (en) 2015-10-23 2020-09-22 Oracle International Corporation Efficient data retrieval in staged use of in-memory cursor duration temporary tables
US10452655B2 (en) 2015-10-23 2019-10-22 Oracle International Corporation In-memory cursor duration temp tables
US10942891B2 (en) 2019-03-27 2021-03-09 Ownbackup Ltd. Reducing number of queries on a relational database

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4128891A (en) * 1976-12-30 1978-12-05 International Business Machines Corporation Magnetic bubble domain relational data base system
US4514826A (en) * 1981-05-18 1985-04-30 Tokyo Shibaura Denki Kabushiki Kaisha Relational algebra engine
US4606002A (en) * 1983-05-02 1986-08-12 Wang Laboratories, Inc. B-tree structured data base using sparse array bit maps to store inverted lists
US5010478A (en) * 1986-04-11 1991-04-23 Deran Roger L Entity-attribute value database system with inverse attribute for selectively relating two different entities
US4945475A (en) * 1986-10-30 1990-07-31 Apple Computer, Inc. Hierarchical file system to provide cataloging and retrieval of data
US5062074A (en) * 1986-12-04 1991-10-29 Tnet, Inc. Information retrieval system and method
US4972349A (en) * 1986-12-04 1990-11-20 Kleinberger Paul J Information retrieval system and method
US4823310A (en) * 1987-08-10 1989-04-18 Wang Laboratories, Inc. Device for enabling concurrent access of indexed sequential data files
US4930072A (en) * 1987-08-31 1990-05-29 At&T Bell Laboratories Method for computing transitive closure
US5021943A (en) * 1988-08-01 1991-06-04 Motorola, Inc. Content independent rule based options negotiations method
US5050071A (en) * 1988-11-04 1991-09-17 Harris Edward S Text retrieval method for texts created by external application programs

Also Published As

Publication number Publication date
DE68926849D1 (de) 1996-08-22
EP0375307A3 (de) 1992-06-03
JPH02212972A (ja) 1990-08-24
EP0375307A2 (de) 1990-06-27
CA2001390C (en) 1997-12-30
CA2001390A1 (en) 1990-06-19
US5546571A (en) 1996-08-13
EP0375307B1 (de) 1996-07-17
JP2771288B2 (ja) 1998-07-02

Similar Documents

Publication Publication Date Title
DE68926849T2 (de) Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank
DE3688529T2 (de) Verfahren zur Auffrischung von Mehrspaltentabellen in einer relationellen Datenbank mit Mindestinformation.
DE3382808T2 (de) Datenbankzugriffsverfahren mit einem benutzerfreundlichen Menü
DE69128958T2 (de) Schneide- und Klebefilterung von unbegrenzten, dynamischen, unmodifizierbaren Datenströmen
DE3854667T2 (de) Datenbasissystem mit einer Baumstruktur.
DE3856055T2 (de) Verfahren und Einrichtung, um gleichzeitigen Zugriff zu indizierten sequentiellen Dateien zu ermöglichen
DE3650417T2 (de) Informationsaufzeichnungs- und Wiederauffindungssystem.
DE69032576T2 (de) Dynamische Optimierung eines einzelnen relationalen Zugriffs
DE69606794T2 (de) System und Verfahren zur Ermittlung von ähnlichen Zeitsequenzen in Datenbanken
DE69615230T2 (de) Relationales Datenbanksystem und Verfahren mit grosser Verfügbarkeit der Daten bei der Umstrukturierung von Tabellendaten
DE60208778T2 (de) Datenstruktur für informationssysteme
DE60022152T2 (de) Parallele optimierte Ereignisauslösung in parallelen Datenbanksystemen
DE69031758T2 (de) Verfahren zur Organisation von und zum Zugriff auf Produkt beschreibenden Daten in Zusammenhang mit einem technischen Prozess
DE69425711T2 (de) Computerverfahren und -system zur Optimierung von Beta-Bäumen
DE69530595T2 (de) System und verfahren für die x.500-datenbanknorm
DE68929132T2 (de) Datenbankverwaltungssystem und Verfahren hierfür
DE3855212T2 (de) Verfahren zur Berechnung eines transitiven Abschlusses
DE10028688B4 (de) Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten
DE3855706T2 (de) Automatisierte Rechnung von Materialien
DE68927743T2 (de) Sortier-/Mischausgabe
DE3855213T2 (de) Datenbanksystem und Verfahren für den gleichzeitigen Satzzugriff mit Hilfe eines Baumstrukturindexes
DE69227948T2 (de) Verfahren und Gerät um ein dynamisches Lexikon in ein Textinformationsauffindungssystem zu integrieren
DE68916486T2 (de) Verfahren zur Durchführung von Operationen in einem relationalen Datenbankverwaltungssystem.
DE60121231T2 (de) Datenverarbeitungsverfahren
DE69424586T2 (de) Verfahren und System zum formulieren interaktiver Abfragen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee