DE68926849T2 - Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank - Google Patents
Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer DatenbankInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 37
- 238000005070 sampling Methods 0.000 claims description 4
- 238000011835 investigation Methods 0.000 claims 1
- 238000011156 evaluation Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 4
- 101100311330 Schizosaccharomyces pombe (strain 972 / ATCC 24843) uap56 gene Proteins 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 101150018444 sub2 gene Proteins 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
- G06F16/902—Indexing; 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
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query 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
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1989
- 1989-10-24 CA CA002001390A patent/CA2001390C/en not_active Expired - Fee Related
- 1989-12-18 EP EP89313180A patent/EP0375307B1/de not_active Expired - Lifetime
- 1989-12-18 DE DE68926849T patent/DE68926849T2/de not_active Expired - Fee Related
- 1989-12-19 JP JP1329400A patent/JP2771288B2/ja not_active Expired - Lifetime
-
1993
- 1993-02-16 US US08/018,473 patent/US5546571A/en not_active Expired - Lifetime
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 |