DE3854667T2 - Datenbasissystem mit einer Baumstruktur. - Google Patents

Datenbasissystem mit einer Baumstruktur.

Info

Publication number
DE3854667T2
DE3854667T2 DE3854667T DE3854667T DE3854667T2 DE 3854667 T2 DE3854667 T2 DE 3854667T2 DE 3854667 T DE3854667 T DE 3854667T DE 3854667 T DE3854667 T DE 3854667T DE 3854667 T2 DE3854667 T2 DE 3854667T2
Authority
DE
Germany
Prior art keywords
node
operations
key set
database
nodes
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
DE3854667T
Other languages
English (en)
Other versions
DE3854667D1 (de
Inventor
Frank Eliot Levine
Chandrasekaran Mohan
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3854667D1 publication Critical patent/DE3854667D1/de
Application granted granted Critical
Publication of DE3854667T2 publication Critical patent/DE3854667T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • 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

Landscapes

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

Description

  • Die vorliegende Erfindung betrifft Datenverarbeitungsverfahren und -geräte und speziell ein Verfahren und ein Gerät zur Verwaltung von Datensätzen in einer Datenbank.
  • Datenbankverwaltungs- oder Transaktionsverarbeitungssysteme sind nach dem Stand der Technik bereits gut eingeführt. Solche Systeme werden gewöhnlich eingesetzt, um einen schnellen Zugriff auf Datenbanktabellen mit zahlreichen Datensätzen zu ermöglichen. Ein relationales Transaktionsverarbeitungssystem ermöglicht den Zugriff auf mehrere Datenbanktabellen, wobei Elemente einer Datenbanktabelle in der Regel mit Elementen einer anderen Datenbanktabelle verknüpft sind. In einer relationalen Datenbank kann der Benutzer die in mehreren Datenbanktabellen enthaltenen Daten anhand eines oder mehrerer spezieller Merkmale oder Felder suchen, abrufen oder ändern.
  • Ein wichtiger Aspekt aller solchen Datenbanksysteme ist die Fähigkeit des Systems, schnell und effizient Zugriff auf einzelne Datensätze jeder Datenbank zu ermöglichen. Vor kurzem wurden Datenbanksysteme entwickelt, die die gleichzeitige Benutzung der Datenbank durch mehrere Personen ermöglichen, wobei die Benutzer gleichzeitig auf die speziellen Daten zugreifen können.
  • Datenbankverwaltungssysteme arbeiten gewöhnlich mit einer Indexdatei, um schnell und effizient auf die Datensätze in den Tabellen zugreifen zu können. Diese Indexdateien sind in der Regel in einer B-Baum-Struktur konfiguriert. Der B-Baum ist unter anderem in "Efficient Locking For Concurrent Operation on B-Tree" von Lehman und Yao in ACM Transactions on Database Systems, Band 6, Nummer 4, Dezember 1981, Seite 650 bis 670, beschrieben. Zur Referenzliteratur über B-Baum-Strukturen zählen auch "The Ubiquitous B-Tree" von Comer, Computing Surveys, Band 11, Nummer 2, Juni 1979, Seite 121 bis 137 sowie "Concurrent Operation on B- Trees with Over Taking" von Sagiv, Proceedings ACM SIGACT-SIGMOD Symposium on Principles of Database Systems, März 1985, Seite 28 bis 37.
  • Die als B-Baumstruktur konfigurierte Indexdatei besteht aus einem Root-Knoten mit mehreren davon abzweigenden Knotenebenen. Zu den in diesen Knoten enthaltenen Informationen zählen Zeiger auf die Knoten der nächsten Ebene oder Zeiger auf Datensätze in der Datenbank. Diese Zeiger enthalten nähere Informationen, sogenannte Schlüsselsatzdaten, die auf die Sätze in den Datenbanken verweisen. Die Satzschlüssel sind über die Knoten hinweg geordnet. Angenommen, es gibt beispielsweise einen Indexbaum für eine alphabetische Namensliste der Mitarbeiter. Der Root-Knoten enthält Referenzschlüsseldaten, die sich auf Datensätze beziehen, auf welche in der nächsten Knotenebene indirekt oder direkt verwiesen wird. Die Referenzschlüssel enthalten Informationen über den verwendeten Index, in diesem Fall also über die Buchstabenfolge der Mitarbeiternamen. Die geordneten Schlüssel im Root- Knoten verweisen deshalb auf die nächste Knotenebene. Mit anderen Worten, der nächste Knoten kann indirekt oder direkt auf alle Mitarbeiternamen verweisen, die mit den Buchstaben A, B und C beginnen. Ein nächster Knoten auf der gleichen Ebene enthält vielleicht die Datensätze der Mitarbeiter, deren Namen mit den Buchstaben D bis M beginnen. Der letzte Knoten dieser Ebene verweist dann auf die Mitarbeiter, deren Namen mit N bis Z beginnen. Bei der Suche durch den Indexdateibaum wird schließlich ein End- oder Blattknoten erreicht. Dieser End- oder Blattknoten enthält Satzschlüssel, die auf die einzelnen Datensätze im Speicher verweisen.
  • Ein Problem bei gleichzeitigen Zugriffen auf Datenbanktabellen entsteht, wenn mehrere Transaktionen zur gleichen Zeit versuchen, auf denselben Datensatz zuzugreifen. Speziell wenn ein Benutzer einen Datensatz ändern will und ein anderer Benutzer auf eben diesen Datensatz zugreifen will, entsteht eine Konkurrenzsituation. Eine Lösung dieses Konkurrenzproblems besteht im ausschließlichen Zugriff (oder Sperren) der Datensätze oder der betreffenden Teile der B-Baum-Indizes, um sicherzustellen, daß der Indexknoten oder der Datensatz nicht geändert wird, währen ein anderer Benutzer versucht, darauf zuzugreifen. Das Sperren wird in "Index Locking and Splitting", IBM Technical Disclosure Bulletin, Band 25, Nummer 7B, Dezember 1982, Seite 3725 bis 3729, und in "Locking Protocols für Concurrent Operations on B- Trees", IBM Technical Disclosure Bulletin, Band 19, Nummer 10, März 1977, Seite 3887 bis 3889, beschrieben. Der Nachteil des Sperrens besteht darin, daß nur einer der beiden konkurrierenden Benutzer eine Zugriffsmöglichkeit hat. Durch eine möglichst geringe Anzahl von Sperren wäre es möglich, die gleichzeitige Systembenutzung durch mehrere Personen effizienter zu gestalten.
  • Ein anderer wichtiger Aspekt von Datenbanksystemen ist die Fähigkeit eines solchen Systems, Änderungen der in der Datenbank enthaltenen Daten so vorzunehmen, daß sie wieder rückgängig gemacht werden können. Dies bedeutet, daß diese Systeme sicherstellen, daß bei einer Systemunterbrechung durch Fehler in einer oder mehreren Komponenten entweder alle von einem bestimmten Benutzer eingegebenen Änderungen erhalten bleiben, oder daß keine dieser Änderungen übernommen wird. Entsprechend bekommt auch der Benutzer die Möglichkeit, bis zu einem bestimmten Zeitpunkt anzufordern, daß die von ihm vorgenommenen Änderungen in der Datenbank wieder rückgängig gemacht werden sollen. Die durch den Benutzer vorgenommenen Änderungen der Datenbank werden deshalb als "aufhebbar" bezeichnet. Dieses Konzept ist Bestandteil von Datenbanksystemen, die auf der Basis der Transaktionsverarbeitung arbeiten. Eine Transaktion ist eine logische Arbeitseinheit, die aus einer Folge von Operationen besteht, welche einen ersten konsistenten Zustand einer wiederherstellbaren Datenbankressource in einen anderen konsistenten Zustand umwandelt, ohne daß notwendigerweise in allen Zwischenschritten Konsistenz bewahrt wird. Die Verwendung eines Transaktionsverarbeitungssystems muß gewährleisten, daß wenn eine Transaktion bestimmte Änderungen an einer wiederherstellbaren Datenbankressource vornimmt und ein Fehler auftritt, bevor die Transaktion ordnungsgemäß abgeschlossen oder ein konsistentes Zwischenstadium erreicht ist, die vorgenommenen Änderungen rückgängig gemacht werden.
  • Da eine Transaktion die Ausführung einer durch die Anwendung vorgegebenen Operationsfolge beinhaltet, wird ihre Existenz im System gewöhnlich mit einer speziellen "ARBEITSBEGINN"-Operation eingeleitet und entweder mit "FESTSCHREIBEN" oder mit "ABBRUCH" beendet. Die Operationen FESTSCHREIBEN und ABBRUCH liefern "atomare" Einheiten, da die Operation FESTSCHREIBEN bedeutet, daß ein neuer Konsistenzpunkt erreicht ist und alle bis dahin von der betreffenden Transaktion vorgenommenen Änderungen permanent festgeschrieben werden müssen. Die Operation ABBRUCH bedeutet, daß ein Fehler aufgetreten ist und alle von der betreffenden Transaktion vorgenommenen Änderungen rückgängig gemacht und die wiederherstellbaren Datenbankressourcen auf den letzten konsistenten Stand gebracht werden müssen.
  • Um diese Wiederherstellungsgarantie zu ermöglichen, muß das Datenbanksystem in der Lage sein, über Systemausfälle hinweg die noch nicht abgeschlossenen Transaktionen und das Stadium ihrer Änderungsaktionen zu speichern, so daß die Auswirkungen dieser Aktionen auf die wiederherstellbaren Daten bei einem erneuten Systemstart angemessen wiedergegeben werden. Dies wird erreicht, indem der Fortgang jeder Transaktion vom Anfang bis zum Ende sowie die Aktionen, welche Änderungen an wiederherstellbaren Datenbankressourcen bewirken, in einem stabilen Speicher protokolliert werden. Mit Hilfe dieses Protokolls wird gewährleistet, daß die festgeschriebenen Aktionen der Transaktion berücksichtigt werden bzw. die nicht festgeschriebenen Aktionen rückgängig gemacht werden, um sicherzustellen, daß die Datenbank konsistent bleibt. Wenn das Protokoll der Transaktionsoperationen widersprüchliche Datenobjekte widerspiegelt, werden die Protokollsätze auch als Quelle zur Rekonstruktion der fehlerhaften oder verlorengegangenen Daten benutzt. In diesen Systemen wird in der Regel jedem Protokollsatz eine eindeutige Protokollnummer (LSN) zugeordnet, sobald der Satz in das Protokoll geschrieben wird. Die Protokollnummern werden meist in aufsteigender numerischer Reihenfolge zugeordnet. Nach Abschluß der Aufzeichnung einer Änderung einer Speicherseite der Datenbank wird die Protokollnummer des Protokollsatzes für diese Änderung typischerweise ebenfalls auf der betreffenden Seite gespeichert.
  • Der oben beschriebene Systemtyp wird als System mit Protokollvorausschreibung bezeichnet. In einem System mit Protokollvorausschreibung muß ein Protokolleintrag zu einer bestimmten Operation physisch in einen stabilen Speicher geschrieben werden, bevor neue Versionen der geänderten Daten die vorausgehenden Versionen der Daten im nichtflüchtigen Speicher ersetzen. Unter einem stabilen Speicher ist hier ein nichtflüchtiger Speicher zu verstehen, der auch bei einem Systemausfall intakt und verfügbar bleibt. Ein Beispiel hierfür ist die Verwendung einer magnetischen Festplatte. Zusätzlich wird in solchen Systemen der Transaktionsstatus im Protokoll gespeichert, und keine Transaktion kann als abgeschlossen betrachtet werden, solange sie nicht festgeschrieben ist und alle zugehörigen Protokolldaten sicher im stabilen Speicher aufgezeichnet sind. Beim erneuten Systemstart nach einem Ausfall werden Operationen der Transaktion, die zwar erfolgreich abgeschlossen wurden, denen es vor dem Systemausfall aber nicht mehr gelang, ihre geänderten Ressourcen physisch in den stabilen nichtflüchtigen Speicher zu schreiben, nicht berücksichtigt. Außerdem erlauben solche Systeme nicht, daß eine Transaktion die Fortschreibungsverarbeitung beendet, bevor alle Teile aller Protokollsätze für die betreffende Transaktion physisch protokolliert sind.
  • In "Data Base Management for HP Precision Architecture Computers" von Brown et al., Hewlett Packard Journal, Band 37, Nummer 12, Dezember 1986, wird ein Datenverarbeitungssystem beschrieben, das ein Datenbanksystem enthält, in welchem mehrere Benutzer mittels einer Baumstruktur gleichzeitig auf Daten in der Datenbank zugreifen können. Der Zugriff umfaßt erste Operationen, in denen die Baumstruktur unverändert bleibt, und zweite Operationen, in denen die Baumstruktur verändert wird. Das Datenverarbeitungssystem enthält Mittel zur Durchführung einer aus einer Folge von Operationen bestehenden Transaktion sowie Wiederherstellungsmittel zur Speicherung der sequentiellen Positionen von Operationen, anhand derer eine Transaktion sozusagen zurückgespult werden kann, damit die Operationen im Fall eines Systemausfalls rückgängig gemacht werden können.
  • Gemäß Anspruch 1 der vorliegenden Erfindung gibt es jetzt ein Datenverarbeitungssystem mit einem Datenbanksystem, in dem mehrere Benutzer über eine Baumstruktur gleichzeitig auf die Daten in der Datenbank zugreifen können, wobei der Zugriff erste Operationen enthält, in denen die Baumstruktur unverändert bleibt, und zweite Operationen, in denen die Baumstruktur verändert wird, wobei das Datenverarbeitungssystem Mittel zur Durchführung einer aus mehreren Operationen bestehenden Transaktion sowie Wiederherstellungsmittel enthält, mittels derer die sequentiellen Positionen von Operationen gespeichert werden, anhand derer eine Transaktion zurückgespult werden kann, damit die Operationen im Fall eines Systemausfalls rückgangig gemacht werden können. Das System ist dadurch gekennzeichnet, daß das Wiederherstellungmittel Mittel zur Speicherung einer Angabe der sequentiellen Position einer zweiten Operation aus einer Folge von Operationen, welche die Baumstruktur unmittelbar vor Beginn der Sequenz verändert, enthält, ferner Mittel zur Speicherung eines Kompensationsprotokollsatzes, der bei Beendigung der Operationsfolge auf diese Angabe verweist, und Mittel zum Zurückspulen all dieser Operationen der Transaktion anhand der gespeicherten Angabe für den Fall, daß das System ausfällt, bevor die Folge abgeschlossen ist, sowie zum Zurückspulen nur der nicht in der Folge enthaltenen Operationen, wenn die Folge zum Zeitpunkt eines Systemausfalls abgeschlossen ist, anhand des Kompensationsprotokollsatzes.
  • Unter einem anderen Gesichtspunkt betrachtet liefert die Erfindung ein Verfahren zum Betrieb eines Datenverarbeitungssystem mit einem Datenbanksystem, in dem mehrere Benutzer gleichzeitig über eine Baumstruktur auf die Daten in der Datenbank zugreifen können, wobei der Zugriff erste Operationen enthält, in denen die Baumstruktur unverändert bleibt, und zweite Operationen, in denen die Baumstruktur verändert wird, und wobei das Verfahren aus folgenden Schritten besteht: Durchführung einer aus mehreren Operationen bestehenden Transaktion; Speicherung einer Angabe der sequentiellen Position einer zweiten Operation in einer Folge von Operationen, welche die Baumstruktur verändert, unmittelbar vor Beginn der Folge; Speicherung eines Kompensationsprotokollsatzes, der bei Beendigung der Folge auf diese Angabe verweist; Zurückspulen jeder Operation der Transaktion durch Verweis auf die gespeicherte Angabe für den Fall, daß das System ausfällt, bevor die Folge abgeschlossen ist, sowie im Fall eines Systemausfalls Zurückspulen nur der nicht in der Folge enthaltenen Operationen, wenn die Folge abgeschlossen ist, durch Verweis auf den Kompensationsprotokollsatz.
  • Ein Ausführungsbeispiel der Erfindung, das im folgenden ausführlicher beschrieben wird, ermöglicht gleichzeitige Änderungen eines Indexbaums in einem Transaktionsverarbeitungssystem. Der Indexbaum enthält mindestens einen Root-Knoten mit einem Schlüsselsatzverweis auf einen oder mehrere Knoten der nächstniedrigeren Ebene und mindestens einen Endknoten, der den Zugriff auf Schlüsselsätze ermöglicht. Transaktionen einschließlich einer Strukturänderungsoperation werden durchgeführt, indem der Indexbaum bis zu dem ausgewählten Knoten durchlaufen und dann ein Hinweis auf die Anhängigkeit einer Strukturänderungsoperation erzeugt wird. Gleichzeitiges Löschen oder Einfügen von Schlüsselsätzen ist im Indexbaum erlaubt, wo kein Hinweis auf eine anhangige Strukturänderungsoperation vorliegt, und wird verzögert, wo ein solcher Hinweis auf eine anhängige Strukturänderungsoperation vorhanden ist. Entsprechend können Transaktionen, bei denen ein Schlüsselsatz gelöscht werden muß, eine Strukturänderungsoperation erfordern, falls die Transaktion keinen neuen Konsistenzpunkt erreicht und rückgängig gemacht werden muß. Aus diesem Grund wird ein Hinweis auf jede Löschung eines Schlüsselsatzes, die noch keinen neuen Konsistenzpunkt erreicht hat, erzeugt, und gleichzeitige Einfügungen von Schlüsselsätzen werden ebenfalls verzögert, bis die Möglichkeit einer Strukturänderungsoperation endet. Nach Abschluß einer Strukturänderungsoperation wird ein Protokollsatz geschrieben, der das Rückgängigmachen der Strukturänderungsoperation im Fall eines Systemausfalls verhindert, unabhängig davon, ob die Transaktion, welche die Strukturänderungsoperation enthält, einen neuen Konsistenzpunkt erreicht hat. In einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird nach einer Verzögerung der lokale Knoten daraufhin geprüft, ob ein Schlüsselsatz eingefügt oder gelöscht werden kann, ohne daß der Baum ein zweites Mal durchlaufen werden muß.
  • Im folgenden wird das bevorzugte Ausführungsbeispiel der Erfindung anhand der beigefügten Zeichnungen exemplarisch beschrieben.
  • FIGUR 1 ist ein Blockdiagramm eines Datenbanksystems für gemeinsamen Zugriff gemäß der vorliegenden Erfindung.
  • FIGUR 2 ist ein Flußdiagramm, das eine erste Suchoperation in einer Datenbank illustriert.
  • FIGUR 3 ist ein Flußdiagramm, das eine Abfrageoperation in einer Datenbank illustriert.
  • FIGUR 4 ist ein Flußdiagramm, das eine Einfügungsoperation in einer Datenbank illlustriert.
  • FIGUR 5 ist ein Flußdiagramm, das eine Löschoperation in einer Datenbank illustriert.
  • FIGUR 6 ist ein Flußdiagramm, das eine Aufhebungsoperation einer Schlüsselsatzeinfügung in einer Datenbank illustriert.
  • FIGUR 7 ist ein Flußdiagramm, das eine Aufhebungsoperation einer Schlüsselsatzlöschung in einer Datenbank illustriert.
  • FIGUR 8 ist ein Flußdiagramm, das einen Knotenaufspaltungsalgorithmus illustriert.
  • FIGUR 9 ist ein Flußdiagramm, das einen Knotenauflösungsalgorithmus illustriert.
  • Figur 1 ist ein Blockdiagramm eines Datenbanksystems für gemeinsamen Zugriff gemäß der vorliegenden Erfindung. Wie aus dem Diagramm ersichtlich ist, enthält das Datenbanksystem für gemeinsamen Zugriff mehrere interaktive Datenstationen (IWS) 10, die alle mit einem Host 12 verbunden sind. Der Host 12 ist wiederum mit der Datenbank 14 verbunden. Für den Fachmann ist klar, daß außer der abgebildeten Konfiguration auch ein ähnliches System verwendet werden kann, bei dem einzelne Rechner über ein lokales Netzwerk verbunden sind. Jeder Bediener einer interaktiven Datenstation 10 kann mit Hilfe eines Datenbankverwaltungssystems im Host 12 Sätze der Datenbank 14 suchen, abfragen oder ändern. Der Fachmann weiß, daß die Datenbank 14 typischerweise durch Verwendung von Indexdateien zugänglich gemacht wird, welche in der Regel in einer oben beschriebenen B-Baum-Struktur konfiguriert sind. Eine typische B-Baum-Struktur besteht aus mindestens einem Root-Knoten und mehreren davon abzweigenden Knotenebenen. Zu den in den einzelnen Knoten enthaltenen Informationen zählen Zeiger auf Knoten der nächstniedrigeren Ebene oder Zeiger auf Datensätze, die in den auch als Blattknoten bezeichneten Knoten der untersten Ebene in der Datenbank stehen.
  • Fig. 2 zeigt ein Flußdiagramm einer ersten Suchoperation in einer Datenbank. Die Logik beginnt bei Schritt 100 und geht dann weiter bei Schritt 102, dem Verhängen einer S-Sperre und dem Zugriff auf den Index-Root-Knoten. Eine S-Sperre gewährt anderen konkurrierenden Benutzern beschränkten Zugriff. Dieser beschränkte Zugriff gibt anderen Benutzern die Möglichkeit, die im Knoten gespeicherten Daten abzurufen und zu lesen. Andere Zugriffe wie Löschen oder Ändern der Daten im Knoten sind nicht möglich. Der Index-Root-Knoten gibt die Indexart an und liefert die Anfangsrichtung für den Zugriff auf einen Datensatz in diesem Beispiel. Der Index-Root-Knoten kann beispielsweise den Index als alphabetischen Index in aufsteigender Reihenfolge für mehrere Namen ausweisen. In Schritt 103 wird der Kindknoten, auf den zugegriffen werden soll, nach den Informationen des Elternknotens identifiziert. In Schritt 104 wird danach festgestellt, ob es sich bei der auszuführenden Operation um eine Abrufoperation handelt. Ist die Operation keine Abrufoperation, sondern eine Satzeinfügungsoperation (oder eine Schlüsselsatzeinfügung) oder eine Satzlöschoperation (oder eine Schlüsselsatzlöschoperation), fährt die Zugriffslogik mit Schritt 106 fort, wo festgestellt wird, ob der nächste Knoten unterhalb des Elternknotens ein End- oder Blattknoten ist. Handelt es sich um einen Blattknoten, wird mit Schritt 110 fortgefahren und eine X-Sperre am Kindknoten gesetzt. Die X-Sperre ist eine exklusive Sperre, die alle anderen Zugriffe auf diesen speziellen Knoten ausschließt. Durch Verhängen einer X-Sperre für den betreffenden Knoten hindert das Programm alle anderen Transaktionen am Zugriff auf diesen Knoten.
  • Wird in Schritt 104 festgestellt, daß es sich um eine Abrufoperation handelt, oder ist in Schritt 106 der Kindknoten kein Blattknoten, fährt das Zugriffsprogramm mit Schritt 108 fort, um den Kindknoten mit einer S-Sperre zu versehen. Die Zugriffslogik fährt dann mit Schritt 112 fort; in diesem Schritt wird festgestellt, ob der Schlüssel des gesuchten Datensatzes größer ist als der höchste Schlüssel im Kindknoten. Dem Fachmann ist selbstverständlich bekannt, daß, falls bei der Suche ein leerer Knoten geprüft wird, automatisch bestimmt wird, daß der gesuchte Schlüssel größer ist als der höchste Schlüssel im Kindknoten. Ist der gesuchte Schlüsselsatz größer als der höchste Schlüssel im Kindknoten, fährt das Programm mit Schritt 114 fort und prüft, ob die Baumindexstruktur gesperrt ist. Ist der Baum nicht gesperrt, geht es weiter mit Schritt 118, wo die Sperren an Eltern- und Kindknoten aufgehoben werden und der Baum gesperrt wird. Die Zugriffslogik springt dann von Schritt 118 zurück zu Schritt 102 und leitet nach der Sperrung des Baums die Operation erneut ein. Der Fachmann weiß, daß Optimierungen möglich sind, um die Anzahl der Knoten zu verringern, auf die zugegriffen werden muß, wenn erneut versucht wird, die Operation auszuführen.
  • In diesem Beispiel wird der Baum mit einer X-Sperre versehen, wodurch allen anderen Zugriffen mitgeteilt wird, daß gerade eine Änderung der Baumstruktur erfolgt. Läuft gerade ein Zugriff mit X-Sperre ab, wenn der Baum mit einer Sperre versehen werden soll, so muß dieser zweite Zugriff warten, bis der erste beendet ist. Eine S-Sperre des Baums signalisiert allen anderen Zugriffen, daß keine Strukturänderung vorgenommen wird, daß aber eventuell gleichzeitig andere Zugriffe auf den Baum erfolgen. Weitere Änderungen sind erst nach Aufhebung der S-Sperre möglich. Die Baumstruktur kann unabhängig von eventuellen S- oder X-Sperren durchlaufen werden, auch zum Löschen oder Einfügen von Schlüsselsätzen.
  • War in Schritt 114 der Baum gesperrt oder ist in Schritt 112 der Schlüssel nicht größer als der höchste Schlüssel im Kindknoten, fährt die Logik mit Schritt 116 fort, um festzustellen, ob der Kindknoten ein Blattknoten ist. Ist dies nicht der Fall, fährt das Programm mit Schritt 115 fort, um die Sperre des Elternknotens aufzuheben, und springt dann zu Schritt 103 zurück. Ist der Kindknoten hingegen ein Blattknoten, fährt das Programm mit Schritt 120 fort, um den Elternknoten freizugeben, und springt dann zu den Schritten 122, 124 und 126, um festzustellen, ob es sich um eine Abrufoperation, eine Einfügungsoperation oder eine Löschoperation handelt. In dem abgebildeten Beispiel kehrt das Programm in Schritt 130 wieder zum Benutzer zurück, wenn keine dieser Operationen versucht wurde. In der Praxis würde dabei eine Fehlermeldung ausgegeben, die besagt, daß die auszuführende Operation von diesem Programm nicht identifiziert werden kann.
  • Ist die auszuführende Operation eine Abrufoperation, fährt die Zugriffslogik mit Schritt 200 in Figur 3 fort. Figur 3 ist ein Flußdiagramm einer Abrufoperation aus einer Datenbank gemäß der vorliegenden Erfindung. In Schritt 200 findet die Logik den angeforderten Schlüssel, der gesucht wird, oder den nächsthöheren Schlüssel in der Datenbank. In Schritt 202 fordert die Logik dann eine bedingte Satzsperre des gefundenen Schlüsselsatzes an. In dem abgebildeten Beispiel wird von einem Datenbankverwaltungssystem, das die Satzschlüsselsperren verwaltet, eine bedingte Satzsperre angefordert. "Bedingt" bedeutet, daß wenn die Sperre nicht sofort gewährt wird, der Zugreifende, der die Sperre angefordert hat, eine Antwort erhält, die besagt, daß die Sperre im Moment nicht gewährt wird. Anhand dieser Antwort wird die Entscheidung in Schritt 204 getroffen. Wurde die Sperre nicht gewährt, fährt die Logik mit Schritt 206, wo die Sperre am Kindknoten aufgehoben wird, und anschließend mit Schritt 208, der Anforderung einer unbedingten Sperre des Schlüsselsatzes, fort. Die Anforderung einer unbedingten Satzsperre wie in Schritt 208 macht es erforderlich, daß der Zugreifende mit der Fortsetzung seiner Operation warten muß, bis eine solche Satzsperre gewährt wird. Nach Gewährung der Satzsperre sperrt die Logik in Schritt 214 den Kindknoten wieder und prüft in Schritt 216, ob sich der Knoten geändert hat. Die Prüfung des Knotens in Schritt 216 wird hier als "lokale Prüfung" bezeichnet und dient zur Steigerung der Effizienz des dargestellten Systems, indem sie es der Logik ermöglicht, wieder vom lokalen Knoten auszugehen, wenn der Knoten nicht wesentlich geändert wurde, anstatt den ganzen Baum ein zweites Mal zu durchlaufen. Ob sich der Knoten geändert hat kann zum Beispiel durch einen Vergleich der im Knoten gespeicherten Protokollnummer mit der vor der Warteperiode aufgezeichneten Protokollnummer festgestellt werden. Wurde der Knoten nicht verändert, wird in Schritt 218 geprüft, ob der Schlüssel der erste im lokalen Knoten ist. Ist dies nicht der Fall, wird der gefundene Schlüsselsatz in Schritt 209 zurückgegeben. Anschließend wird in Schritt 210 die Sperre des Kindknotens aufgehoben. Dem Fachmann ist klar, daß Schritt 211 ausgeführt wird, wenn die Transaktion abgeschlossen ist, oder zu einem früheren Zeitpunkt.
  • Wird in Schritt 218 hingegen festgestellt, daß der gefundene Schlüssel der erste Schlüssel im Knoten ist, so kehrt die Logik an den Anfang des in Figur 2 dargestellten Prozesses zurück und durchläuft den Baum erneut. Dies ist erforderlich, weil die Möglichkeit besteht, daß der angeforderte Schlüssel nicht gefunden wurde und der gefundene nächsthöhere Schlüsselsatz der erste im lokalen Knoten war. Die Verzögerung durch das Warten auf eine unbedingte Sperre des gefundenen Schlüsselsatzes könnte bedeuten, daß im nächstniedrigeren Knoten ein Schlüsselsatz eingefügt wurde und der angeforderte Schlüssel deshalb möglicherweise vorhanden ist. In diesem Fall muß der Baum erneut durchlaufen werden, um festzustellen, ob der angeforderte Schlüssel vorhanden ist oder nicht.
  • Wurde in Schritt 216 festgestellt, daß der Knoten geändert wurde, so wird in Schritt 220 geprüft, ob der Knoten noch im gleichen Baum und auf der gleichen Ebene wie der vorherige Kindknoten vorhanden ist. Ist dies nicht der Fall, muß der Baum erneut durchlaufen werden, um den richtigen Kindknoten für den angeforderten Schlüsselsatz zu finden. Sind der Baum und die Ebene des lokalen Knotens trotz der Änderung des Knotens unverändert, wird in Schritt 222 der angeforderte Schlüssel oder der nächsthöhere Schlüssel gesucht. Anschließend wird in Schritt 224 geprüft, ob die Logik wieder denselben Schlüssel gefunden hat wie zuvor. Wenn dies der Fall ist, wurde der richtige Schlüsselsatz gefunden, und der Schlüsselsatz wird durch Schritt 209 wie oben beschrieben zurückgegeben. Wurde nicht der gleiche Schlüssel gefunden wie zuvor, muß der Baum erneut durchlaufen werden, um den richtigen Kindknoten zu finden. Ist im Kindknoten tatsächlich ein Schlüssel vorhanden, der kleiner als der angeforderte ist, wird in Schritt 226 die Sperre des zuvor gefundenen Schlüsselsatzes aufgehoben, und es erfolgt ein Rücksprung zu Schritt 200 zum erneuten Suchen des angeforderten Schlüssels oder des nächsthöheren Schlüssels.
  • Figur 4 zeigt ein Flußdiagramm einer Einfügungsoperation in eine Datenbank gemäß der vorliegenden Erfindung. Dem Fachmann ist klar, daß vor Beginn der Einfügungsoperation der einzufügende Schlüsselsatz bei Bedarf mit einer X-Sperre versehen wird. Diese Operation würde verwendet, um einen Datensatz in den Speicher des Rechners einzufügen und den Index um einen eingefügten Schlüsselsatz zu erweitern, der den bzw. die betreffenden Knoten des Index aktualisiert, so daß andere Transaktionen auf den neu eingefügten Datensatz zugreifen können.
  • In Schritt 300 wird zuerst geprüft, ob der einzufügende Schlüsselsatz in den End- oder Blattknoten paßt. Ist dies der Fall, fährt die Logik mit Schritt 304 fort und sucht den nächsten Schlüssel, der größer ist als der einzufügende Schlüssel. Befindet sich der nächste Schlüssel nicht in diesem Knoten, wird auf den darauffolgenden Knoten verwiesen. Gibt es keinen darauffolgenden Knoten, so findet die Zugriffslogik den Nullanzeiger. Anschließend fordert die Zugriffslogik in Schritt 308 eine bedingte X-Sperre des nächsten Schlüsselsatzes an. In Schritt 312 wird festgestellt, ob diese bedingte X-Sperre gewährt wurde. Wurde sie gewährt, fährt die Logik mit Schritt 330 fort und stellt fest, ob das SMO-Bit den Wert Null hat.
  • Das SMO-Bit ist ein in einem Blattknoten vorhandenes Kennzeichen, das gesetzt wird, wenn eine Transaktion anhängig ist, welche eine Strukturänderungsoperation beinhaltet. Dieses Kennzeichen dient zur Verzögerung der Operation eines Benutzers, während eine Strukturänderungsoperation eines anderen Benutzers noch nicht abgeschlossen ist. Ist die Strukturänderungsoperation dieses Benutzers abgeschlossen, so wird diese bei einem Systemausfall nicht rückgängig gemacht, und das SMO-Bit wird auf Null gesetzt.
  • Dann wird in Schritt 332 ermittelt, ob das Löschbit den Wert Null hat. Jeder Blattknoten enthält ein Löschbit, das angibt, ob der betreffende Knoten von einer Löschoperation betroffen ist oder war, die noch keinen neuen Konsistenzzustand erreicht hat. Dies ist wichtig angesichts der Tatsache, daß wenn vor Erreichen eines Konsistenz zustandes eine Löschoperation rückgängig gemacht werden muß, die nachfolgende Einfügung des zuvor gelöschten Datensatzes die Aufspaltung eines Knotens erforderlich machen kann, falls im Knoten nicht mehr genügend Platz ist, um das zuvor gelöschte Bit wieder einzufügen. Diese Änderung in der Struktur des Indexbaums kann sich nachteilig auf eine gleichzeitig ablaufende Operation auswirken.
  • Hat das Löschbit den Wert eins, muß deshalb die versuchte Schlüsselsatzoperation verzögert werden, bis ein neuer Konsistenzpunkt erreicht ist. Sind die beiden genannten Bedingungen erfüllt, zeigt Schritt 334 die Protokollierung der Einfügungsoperation, die in allen Systemen mit Protokollvorausschreibung erforderlich ist. Anschließend fügt Schritt 318 den Schlüssel in den entsprechenden Kindknoten ein. In Schritt 324 wird die Sperre des nächsten Datensatzes und des zugehörigen Schlüsselsatzes wieder aufgehoben. In Schritt 329 werden auch eventuelle Sperren des Knotens aufgehoben, und in Schritt 325 kehrt das Programm zum Benutzer zurück.
  • Hat in Schritt 330 und 332 entweder das SMO-Bit oder das Löschbit den Wert eins, was bedeutet, daß entweder eine Strukturänderungsoperation anhängig ist oder daß die Möglichkeit besteht, daß durch Rückgängigmachen einer Löschoperation eine Strukturänderungsoperation erforderlich wird, muß die Zugriffslogik eine bedingte S-Sperre des Indexbaums anfordern wie in Schritt 336 dargestellt. In Schritt 338 wird dann geprüft, ob die Sperre gewährt wurde. Wurde sie gewährt, werden in Schritt 340 das SMO- Bit und das Löschbit auf Null gesetzt, bevor in den Schritten 334 und 318 die Einfügung wie oben beschrieben protokolliert und durchgeführt wird.
  • Wurde in Schritt 336 die bedingte S-Sperre des Baums nicht gewährt, wird in Schritt 342 die Sperre des Knotens aufgehoben, und in Schritt 334 wird eine unbedingte S-Sperre des Baums angefordert. Nach Ablauf einer gewissen Zeit und nach Gewährung der unbedingten S-Sperre wird in Schritt 346 der betreffende Knoten wieder mit einer Sperre versehen. Anschließend wird in Schritt 348 lokal geprüft, ob der Knoten wesentlich geändert wurde. Wurde der Knoten nicht geändert, wird der einzufügende Schlüsselsatz in Schritt 334 und 318 protokolliert und eingefügt.
  • Wurde der zuvor gefundene Knoten wesentlich geändert, wird in Schritt 350 geprüft, ob der gefundene Knoten sich im gleichen Indexbaum und auf der gleichen Ebene befindet. Ist dies nicht der Fall, kehrt die Logik zu der in Figur 2 dargestellten Abrufoperation zurück, und der Baum wird erneut durchlaufen, um den richtigen Knoten zu ermitteln.
  • Falls der gefundene Knoten geändert wurde, Baum und Ebene jedoch identisch sind, wird in Schritt 352 geprüft, ob der einzufügende Schlüssel auf den lokalen Knoten begrenzt ist. Ist dies der Fall, muß der Baum nicht erneut durchlaufen werden, und die Einfügung wird gemäß Schritt 334 und 318 protokolliert und durchgeführt. Ist der Schlüssel nicht auf den Knoten begrenzt, beginnt wie oben die in Figur 2 dargestellte Prozedur zum Suchen und Identifizieren des richtigen Knotens für die Schlüsseleinfügung.
  • Wurde in Schritt 312 die bedingte X-Satzsperre des nächsten Schlüsselsatzes nicht gewährt, fährt die Logik mit Schritt 316 fort und hebt die Sperre am Kindknoten auf. Dann wird in Schritt 322 eine unbedingte X-Sperre für den nächsten Schlüsselsatz angefordert. Nach Gewährung der unbedingten X-Sperre zeigt Schritt 354 das erneute Sperren des Knotens, und in Schritt 356 wird geprüft, ob der Knoten während der Warteperiode wesentlich geändert wurde. Wurde er nicht geändert, wird in Schritt 360 festgestellt, ob der einzufügende Schlüssel auf den Knoten begrenzt ist, und wenn dies der Fall ist, wird die Einfügung gemäß Schritt 334 und 318 protokolliert und durchgeführt.
  • Wurde der Knoten geändert, wird in Schritt 358 geprüft, ob Baum und Ebene des Knotens gleich geblieben sind. Wurden sie geändert, so wird wieder die in Figur 2 dargestellte Prozedur zum Suchen des richtigen Knotens eingeleitet. Sind sie gleich geblieben, wird in Schritt 360 festgestellt, ob der einzufügende Schlüsselsatz auf den lokalen Knoten begrenzt ist. Ist dies nicht der Fall, beginnt die Suchprozedur aus Figur 2 von neuem wie oben beschrieben. Ist der einzufügende Schlüsselsatz auf den lokalen Knoten begrenzt, kehrt das Programm zu Schritt 300 zurück und folgt der oben beschriebenen Prozedur.
  • Paßt in Schritt 300 der einzufügende Schlüsselsatz nicht in den Blattknoten, fährt das Programm mit Schritt 302 fort und fordert eine bedingte X-Sperre des Indexbaums an. In Schritt 306 wird dann geprüft, ob die bedingte Sperre gewährt wurde. Wurde sie nicht gewährt, fährt die Logik mit Schritt 310 fort und hebt die Sperre am Kindknoten auf. Anschließend wird in Schritt 314 eine unbedingte X-Sperre des Indexbaums angefordert. Nach Gewährung der unbedingten X-Sperre für den Indexbaum wird in Schritt 362 der Knoten wieder gesperrt, und in Schritt 364 wird geprüft, ob der lokale Knoten während der Warteperiode geändert wurde.
  • Wurde der Knoten geändert, wird der in Schritt 320 genannte Knotenaufspaltungsalgorithmus, der weiter unten ausführlicher beschrieben wird, aufgerufen. Anschließend wird der Baum freigegeben, und der Einfügungsprozeß kehrt zu Schritt 300 zurück, um den Schlüsselsatz je nach Schlüsselwert entweder in den neu eingerichteten Knoten oder in den ursprünglich gefundenen Knoten einzufügen. Wurde der gefundene Knoten geändert, wird in Schritt 366 geprüft, ob Baum und Ebene des lokalen Knotens gleich geblieben sind. Ist dies nicht der Fall, kehrt die Logik wie oben beschrieben zu dem in Figur 2 dargestellten Suchprozeß zurück, um den richtigen Blattknoten zu suchen. Sind Baum und Ebene des lokalen Knotens gleich geblieben, wird in Schritt 368 festgestellt, ob der einzufügende Schlüsselsatz auf den lokalen Knoten begrenzt ist. Ist dies nicht der Fall, wird die in Figur 2 beschriebenene Suchprozedur erneut ausgeführt. Ist der einzufügende Schlüsselsatz hingegen auf den Knoten begrenzt, so kehrt die Logik zu Schritt 300 zurück und vollzieht die zum Einfügen des Schlüsselsatzes erforderlichen Schritte.
  • Figur 5 zeigt ein Flußdiagramm einer Löschoperation in einer Datenbank gemäß der vorliegenden Erfindung. Dem Fachmann ist klar, daß vor Beginn der Löschoperation der zu löschende Schlüsselsatz bei Bedarf mit einer X-Sperre versehen wird. In Schritt 400 sucht die Logik den nächsthöheren Schlüssel bezüglich des zu löschenden Schlüssels. In Schritt 402 wird eine bedingte X-Satzsperre dieses nächsthöheren Datensatzes angefordert. Dann wird in Schritt 404 geprüft, ob die bedingte X-Satzperre gewährt wurde. Wurde sie nicht gewährt, wird in Schritt 406 die Sperre des Kindknotens aufgehoben und dann in Schritt 410 eine unbedingte Satzsperre für den nächsten Schlüsselsatz angefordert.
  • Nach dem Warten auf die Gewährung der unbedingten Satzsperre wird in Schritt 456 der Kindknoten wieder mit einer Sperre belegt. Anschließend wird in Schritt 458 geprüft, ob der lokale Knoten während der Warteperiode wesentlich geändert wurde. Wurde er nicht geändert, wird in Schritt 462 festgestellt, ob der zu löschende Schlüssel noch vorhanden ist. Ist er noch vorhanden, kehrt die Logik zu Schritt 400 zurück und beginnt den Löschprozeß. Ist er nicht mehr vorhanden, wird der Suchprozeß aus Figur 2 erneut ausgeführt.
  • Wurde der lokale Knoten wesentlich geändert, wird in Schritt 460 geprüft, ob Baum und Ebene des Knotens gleich geblieben sind. Ist dies nicht der Fall, kehrt die Logik zu dem in Figur 2 dargestellten Suchprozeß zurück. Sind Baum und Ebene des lokalen Knotens gleich geblieben, wird in Schritt 462 geprüft, ob der zu löschende Schlüssel noch im lokalen Knoten vorhanden ist. Ist er nicht mehr vorhanden, kehrt die Logik wieder zu der in Figur 2 dargestellten Suchprozedur zurück, um den richtigen Blattknoten zu suchen. Ist der zu löschende Schlüssel hingegen noch im lokalen Knoten vorhanden, kehrt die Logik zu Schritt 400 zurück und beginnt den Löschprozeß.
  • Wurde in Schritt 404 die bedingte X-Satzsperre des nächsten Schlüsselsatzes gewährt, wird in Schritt 432 festgestellt, ob der zu löschende Schlüssel auf den lokalen Knoten begrenzt ist. Ist dies der Fall, wird in Schritt 434 geprüft, ob das SMO-Bit den Wert Null hat, was bedeutet, daß der betreffende Blattknoten nicht von einer noch nicht abgeschlossenen Strukturänderungsoperation betroffen ist. Wenn das SMO-Bit den Wert Null hat, wird in Schritt 436 das Löschbit auf Eins gesetzt, was bedeutet, daß in dem betreffenden Knoten ein Schlüsselsatz in einer Transaktion gelöscht wurde&sub1; die noch keinen neuen Konsistenzpunkt erreicht hat. Anschließend wird der zu löschende Satz in Schritt 437 protokolliert und in Schritt 408 gelöscht.
  • Ist der zu löschende Schlüsselsatz nicht auf den Blattknoten begrenzt oder hat das SMO-Bit nicht den Wert Null, wird in Schritt 438 eine bedingte S-Sperre des Indexbaums angefordert. Wurde die S-Sperre gewährt und dies in Schritt 440 festgestellt, werden nun in Schritt 442 das SMO-Bit und das Löschbit auf Null gesetzt, und die Löschung wird in den Schritten 437 bzw. 408 protokolliert und durchgeführt. Wurde die angeforderte bedingte Sperre des Knotens aufgehoben, und in Schritt 446 wird eine unbedingte S-Sperre des Indexbaums angefordert.
  • Nach dem Warten auf die Gewährung der unbedingten S-Sperre wird in Schritt 448 der Kindknoten wieder mit einer Sperre versehen, und in Schritt 450 wird lokal geprüft, ob der Knoten während der Warteperiode wesentlich geändert wurde. Wurde er nicht geändert, kehrt die Logik zu Schritt 442 zurück, wo das SMO-Bit und das Löschbit auf Null gesetzt werden, und die Löschung wird dann in Schritt 437 und 408 protokolliert und ausgeführt. Wurde der Knoten wesentlich geändert, wird in Schritt 452 geprüft, ob der Knoten sich noch im gleichen Baum und auf der gleichen Ebene befindet. Befindet sich der Knoten noch im gleichen Baum und auf der gleichen Ebene, wird in Schritt 454 festgestellt, ob der zu löschende Schlüsselsatz noch im Knoten vorhanden ist. Ist dies der Fall, kehrt das Programm zu Schritt 400 zurück und beginnt den Löschprozeß. Befindet sich der lokale Knoten nicht mehr im gleichen Baum oder auf der gleichen Ebene, kehrt die Logik zu der in Figur 2 dargestellten Suchprozedur zurück, um den richtigen Blattknoten für diese Operation zu ermitteln.
  • Nachdem der Schlüsselsatz in Schritt 408 gelöscht wurde, fährt die Logik mit Schritt 412 fort und prüft, ob der Knoten, der den gelöschten Schlüsselsatz zuvor enthalten hatte, jetzt leer ist. Ist er nicht leer, hebt die Logik in Schritt 421 die Sperre des Knotens auf und kehrt in Schritt 414 zum Bediener zurück. Ist der Knoten hingegen leer, wird in Schritt 416 eine bedingte X- Sperre des Indexbaums angefordert. Anschließend wird in Schritt 418 geprüft, ob die bedingte Sperre gewährt wurde. Ist dies der Fall, fährt die Logik mit Schritt 424 fort und führt den später näher beschriebenen Knotenauflösungsalgorithmus aus. Der Knotenauflösungsalgorithmus entfernt den leeren Knoten und die Verweise auf den leeren Knoten aus den Knoten, die dem leeren Knoten im Indexbaum vorausgehen. Anschließend wird in Schritt 426 die Sperre des Baums aufgehoben, und in Schritt 430 kehrt die Logik zum Bediener zurück.
  • Wurde in Schritt 418 festgestellt, daß die angeforderte X-Sperre des Indexbaums nicht gewährt wurde, so wird in Schritt 420 die Sperre des Kindknotens aufgehoben und in Schritt 422 eine unbedingte X-Sperre des Baums angefordert. Nach dem Warten auf die Gewährung der unbedingten X-Sperre des Indexbaums wird in Schritt 423 geprüft, ob der betreffende Knoten während dieser Wartezeit geändert wurde. Wurde er geändert, erfolgt in Schritt 425 eine Rückkehr zum Bediener. Wurde der Knoten nicht geändert, werden der Knotenauflösungsalgorithmus und die oben beschriebenen nachfolgenden Schritte ausgeführt.
  • Figur 6 zeigt ein Flußdiagramm einer Operation zum Rückgängigmachen einer Schlüsselsatzeinfügung in einer Datenbank gemäß der vorliegenden Erfindung. Für den Fachmann ist klar, daß wenn beim Einfügen eines Schlüsselsatzes in einer Transaktion das System ausfällt, bevor ein neuer Konsistenzpunkt erreicht ist, die Einfügung rückgängig gemacht werden muß. Dies entspricht dem Löschen eines Schlüsselsatzes. Wie in Figur 6 zu sehen ist, besteht der erste Schritt beim Rückgängigmachen einer Schlüsselsatzeinfügung darin, anhand des Protokollsatzes den richtigen Knoten zu ermitteln wie in Schritt 500 angegeben. Anschließend wird der betreffende Knoten in Schritt 502 mit einer X-Sperre versehen, und in Schritt 504 werden das SMO-Bit und das Löschbit auf Null gesetzt, wenn die Einfügungsoperation aufgrund eines Neustarts des Systems rückgängig gemacht werden muß. Anschließend wird in Schritt 506 geprüft, ob der betreffende Knoten sich im gleichen Baum und auf der gleichen Ebene befindet wie vor dem Systemausfall, aufgrund dessen die Einfügung rückgangig gemacht werden muß. Entsprechend wird in Schritt 508 festgestellt, ob der zu löschende Schlüssel im Knoten vorhanden ist. Sind Baum und Ebene nicht gleich geblieben oder ist der Schlüssel nicht vorhanden, muß die Logik zu der in Figur 2 dargestellten Suchprozedur zurückkehren. Anschließend wird in Schritt 510 geprüft, ob das SMO-Bit den Wert eins hat, was bedeutet, daß der Knoten von einer noch nicht abgeschlossenen Strukturänderungsoperation betroffen ist. Hat das SMO-Bit nicht den Wert eins, wird in Schritt 512 geprüft, ob der zu löschende Schlüssel der erste oder der letzte Schlüssel im Knoten ist. Hat das SMO-Bit den Wert eins oder ist der zu löschende Schlüssel der erste im Knoten, wird in Schritt 514 eine bedingte S-Sperre des Baums angefordert. Dann wird in Schritt 516 festgestellt, ob die Sperre gewährt wurde. Ist dies der Fall, so werden in Schritt 518 das SMO-Bit und das Löschbit auf Null gesetzt.
  • Hat das SMO-Bit nicht den Wert eins und ist der zu löschende Schlüssel nicht der erste im betreffenden Knoten, wird in Schritt 520 ein Protokollsatz geschrieben, bevor der Schlüsselsatz gelöscht wird. Danach wird der Schlüsselsatz in Schritt 522 gelöscht, und in Schritt 528 wird geprüft, ob der Knoten jetzt leer ist. Ist dies nicht der Fall, erfolgt in Schritt 530 eine Rückkehr zum Bediener. Ist der Knoten nach dem Löschen des Schlüsselsatzes leer, führt die Logik in Schritt 532 den Knotenauflösungsalgorithmus aus. Anschließend wird in Schritt 534 die Sperre des Baums aufgehoben, und in Schritt 536 kehrt die Logik zum Bediener zurück.
  • Wurde in Schritt 516 festgestellt, daß die angeforderte bedingte S-Sperre des Baums nicht gewährt wurde, wird in Schritt 524 die Sperre des Knotens aufgehoben, und in Schritt 526 wird eine unbedingte S-Sperre des Baums angefordert. Danach kehrt die Logik zu Schritt 502 zurück und beginnt nach Gewährung der unbedingten S-Sperre, die Schlüsselsatzeinfügung rückgängig zu machen.
  • Figur 7 zeigt ein Flußdiagramm, in dem die Löschung eines Schlüsselsatzes in einer Datenbank gemäß der vorliegenden Erfindung rückgängig gemacht wird. Dem Fachmann ist klar, daß es zur Erhaltung der Konsistenz eines Indexbaums von Zeit zu Zeit erforderlich ist, eine Operation, die noch keinen neuen Konsistenzpunkt erreicht hat, rückgängig zu machen, wenn vor Beendigung der Operation das System ausgefallen ist oder ein anderer Fehler aufgetreten ist. Zum Rückgängigmachen einer Schlüsselsatzlöschung wird ähnlich vorgegangen wie zum Rückgangigmachen einer Schlüsselsatzeinfügung. Zuerst wird in Schritt 600 anhand des Protokollsatzes, der nach dem Protokollvorausschreibungsverfahren angelegt und verwaltet wurde, der richtige Knoten ermittelt. Dann wird der Knoten in Schritt 602 mit einer X-Sperre versehen, und in Schritt 604 werden das SMO-Bit und das Löschbit auf Null gesetzt, falls die Operation aufgrund eines Neustarts nach einem Systemausfall rückgängig gemacht werden muß.
  • In Schritt 606 wird festgestellt, ob der Knoten sich im gleichen Baum und auf der gleichen Ebene befindet wie vor der Situation, die das Rückgängigmachen erforderlich machte. Ist dies nicht der Fall, wird die in Figur 2 dargestellte Suchprozedur wiederholt. In Schritt 608 wird dann geprüft, ob der zu löschende Schlüssel auf den Knoten begrenzt ist. Ist dies nicht der Fall, wird wieder die in Figur 2 dargestellte Suchprozedur ausgeführt.
  • Ist der zu löschende Schlüssel auf den lokalen Knoten begrenzt, so wird in Schritt 610 geprüft, ob das SMO-Bit den Wert eins hat, was wie oben beschrieben bedeutet, daß der betreffende Knoten von einer anhängigen Strukturänderungsoperation betroffen ist. Hat das SMO-Bit nicht den Wert eins, so wird in Schritt 612 festgestellt, ob das Löschbit den Wert eins hat, was bedeutet, daß in dem betreffenden Knoten ein Datensatz in einer Transaktion gelöscht wurde, die noch keinen neuen Konsistenzpunkt erreicht hat.
  • Hat weder das SMO-Bit noch das Löschbit den Wert eins, fährt die Logik mit Schritt 624 fort und prüft, ob der einzufügende Schlüsselsatz in den betreffenden Knoten paßt. Wurde in den Schritten 610 und 612 festgestellt, daß entweder das SMO-Bit oder das Löschbit den Wert eins hat, wird in Schritt 614 eine bedingte S-Sperre des Baums angefordert. In Schritt 616 wird dann festgestellt, ob die S-Sperre gewährt wurde. Ist dies der Fall, werden in Schritt 622 das SMO-Bit und das Löschbit auf Null gesetzt, bevor in Schritt 624 festgestellt wird, ob der einzufügende Schlüssel im Knoten Platz findet.
  • Wurde die in Schritt 614 angeforderte S-Sperre des Baums nicht gewährt, wird in Schritt 618 die Sperre des Knotens aufgehoben, und in Schritt 620 wird eine unbedingte S-Sperre des Baums angefordert. Nach Gewährung einer unbedingten S-Sperre kehrt die Logik zu Schritt 602 zurück, wo eine X-Sperre über den Knoten verhängt wird und der Prozeß von vorne beginnt.
  • Wurde in Schritt 624 festgestellt, daß der einzufügende Schlüsselsatz nicht in den Knoten paßt, wird in Schritt 626 der Knotenaufspaltungsalgorithmus aufgerufen. Anschließend wird in Schritt 628 die Sperre des Baums aufgehoben, und das Programm kehrt wieder zu Schritt 602 zurück, um die Prozedur von vorne zu beginnen. Paßt der einzufügende Satz hingegen in den betreffenden Knoten, wird in Schritt 630 ein Protokollsatz geschrieben, bevor dann in Schritt 632 die Einfügung vorgenommen wird. Danach erfolgt in Schritt 634 eine Rückkehr zum Benutzer.
  • Figur 8 zeigt ein Flußdiagramm eines Knotenaufspaltungsalgorithmus. Wie aus der Zeichnung ersichtlich ist, beginnt der Knotenaufspaltungsalgorithmus mit der Speicherung einer Protokollnummer, die der Operation zugeordnet ist, welche unmittelbar vor der Knotenaufspaltungsoperation ausgeführt wurde. Dem Fachmann ist klar, daß dies bei einer vorwärtsgerichteten Transaktion die Protokollnummer unmittelbar vor dem Knotenaufspaltungsalgorithmus ist; wenn jedoch beim Rückgangigmachen einer Operation eine Knotenaufspaltungsoperation notwendig wird, ist die Protokollnummer diejenige der Operation, die unmittelbar nach der fraglichen Operation stattgefunden hat.
  • Dann wird in Schritt 702 eine X-Sperre über den Baum verhängt, und in Schritt 704 wird die Notwendigkeit eines neuen Knotens nach dem Protokollvorausschreibungsverfahren protokolliert. Nun wird in Schritt 706 der neue Knoten erstellt, und in Schritt 708 werden bei Bedarf der neue und der alte Knoten mit einer X-Sperre belegt. In Schritt 710 werden die Änderungen der Schlüsselpositionen nach dem Protokollvorausschreibungsverfahren in ein Protokoll geschrieben, bevor dann in Schritt 712 ein Teil der Schlüssel aus dem alten Knoten in den neuen verschoben wird. Außerdem wird in Schritt 712 das SMO-Bit im betroffenen Blattknoten auf eins gesetzt, so daß gleichzeitig auf die Datenbank zugreifende Benutzer feststellen können, daß dieser Knoten von einer noch nicht abgeschlossenen Strukturänderungsoperation betroffen ist.
  • Dann werden in Schritt 714 der alte und der neue Knoten freigegeben, und in Schritt 716 wird der Elternknoten mit einer X- Sperre versehen. Eventuell erforderliche Änderungen im Elternknoten werden dann in Schritt 718 protokolliert, und in Schritt 720 wird der Elternknoten aktualisiert. Anschließend wird in Schritt 722 die Sperre des Elternknotens aufgehoben, und in Schritt 724 wird ein Dummy-Kompensationsprotokollsatz (CLR) in den Protokollspeicher geschrieben, der auf die gespeicherte Protokollnummer (LSN) verweist. Wie der Fachmann weiß, ist ein Dummy-Kompensationsprotokollsatz ein Protokoll, das den Ort oder Zeitpunkt angibt, an dem eine Operation rückgängig gemacht wird, so daß diesem Satz zu entnehmen ist, wieviel und was zu diesem Zeitpunkt rückgängig gemacht wurde. Auf diese Weise wird eine eben beendete Strukturänderungsoperation nicht rückgängig gemacht, auch wenn das System ausfällt, bevor die beteiligte Transaktion einen neuen Konsistenzpunkt erreicht hat. Bei einem solchen Systemausfall bewirkt der Dummy-CLR-Satz, daß der Algorithmus zum Rückgängigmachen auf die Operation springt, die unmittelbar vor Beginn der Durchführung der Strukturänderungsoperation stattgefunden hat. Eine Transaktion, bei der eine Strukturänderungsoperation erfolgte, wird so im Ganzen rückgängig gemacht, wenn die Strukturänderungsoperation noch nicht abgeschlossen ist; war die Strukturänderungsoperation jedoch vor dem Systemausfall oder einem Abbruch während der normalen Verarbeitung abgeschlossen, so werden nur die Operationen der Transaktion rückgängig gemacht, die die Struktur nicht verändert haben. Es ist anzumerken, daß dies effektiv verhindert, daß eine bereits abgeschlossene Strukturänderungsoperation rückgängig gemacht wird, auch wenn die Transaktion, in deren Verlauf die Strukturänderungsoperation ausgeführt wurde, keinen Festschreibungsstatus erreicht hat. Auf diese Weise ist ein höherer Grad gemeinsamer Nutzung möglich, da das System eine Strukturänderung festschreiben kann, ohne daß die Transaktion einen Festschreibungsstatus erreicht haben muß.
  • Figur 9 schließlich zeigt ein Flußdiagramm eines Knotenauflösungsalgorithmus gemäß der vorliegenden Erfindung. Wie der Zeichnung zu entnehmen ist, beginnt der Prozeß ähnlich wie bei dem beschriebenen Knotenaufspaltungsalgorithmus mit der Speicherung einer Protokollnummer (LSN) in Schritt 800. Anschließend wird der Baum in Schritt 802 mit einer X-Sperre belegt, und der benachbarte Knoten und der alte Knoten werden bei Bedarf mit einer X-Sperre versehen.
  • Die Schlüsselverschiebung beim Auflösen des Knotens wird in Schritt 806 nach dem oben beschriebenen Protokollvorausschreibungsverfahren protokolliert, und in Schritt 808 werden die Schlüssel vom benachbarten Knoten in den leeren Knoten verschoben. Außerdem wird in Schritt 808 das SMO-Bit auf eins gesetzt, so daß gleichzeitig zugreifende Benutzer wissen, daß eine Strukturänderungsoperation bezüglich dieses Knotens im Gange ist. Anschließend wird in Schritt 810 der Vorwärtsknotenzeiger aktualisiert, und in Schritt 812 wird der benachbarte Knoten aufgelöst.
  • Die Sperren des Kindknotens und des benachbarten Knotens werden dann in Schritt 814 aufgehoben, und in Schritt 816 wird der Elternknoten mit einer X-Sperre versehen, bevor er geändert wird. In Schritt 818 werden die Änderungen am Elternknoten protokolliert, bevor die Änderungen in Schritt 820 tatsächlich vorgenommen werden. Anschließend wird in Schritt 822 die Sperre des Elternknotens aufgehoben, und es wird ein Dummy-Kompensationsprotokollsatz (CLR) geschrieben, der auf die betreffende gespeicherte Protokollnummer verweist.
  • Sowohl beim Knotenaufspaltungsalgorithmus als auch beim oben beschriebenen Knotenauflösungsalgorithmus ist dem Fachmann klar, daß das SMO-Bit nach Abschluß der Strukturänderungsoperation jederzeit auf geeignete Weise auf Null zurückgesetzt werden kann. Aus den vorigen Ausführungen wird deutlich, daß die Erfindung ein System für gleichzeitige Änderungen eines Indexbaums in einem Transaktionsverarbeitungssystem liefert, das einen hohen Grad gemeinsamer Nutzung ermöglicht, indem es das Einfügen und Löschen von Schlüsselsätzen im gesamten Baum mit Ausnahme der Bereiche, in denen eine Strukturänderungsoperation anhängig ist, erlaubt.
  • Außerdem wird nach Beendigung der Strukturänderungsoperation ein Dummy-Kompensationsprotokollsatz verwendet, um zu gewährleisten, daß die Strukturänderungsoperation auch dann nicht rückgängig gemacht wird, wenn das System ausfällt, bevor die fragliche Transaktion einen neuen Konsistenzpunkt erreicht hat. Auf diese Weise wird die physische Konsistenz des Indexbaums bewahrt, und der dadurch ermöglichte hohe Grad gemeinsamer Nutzung ermöglicht eine bessere Verwendung des Indexbaums durch mehrere gleichzeitig arbeitende Benutzer.
  • Entsprechend verzögert die Verwendung eines Kennzeichenbits innerhalb der Knoten, das besagt, daß vor kurzem eine Löschoperation ausgeführt wurde, eine Schlüsselsatzeinfügung, die andernfalls von einer Strukturänderungsoperation während des Rückgängigmachens einer Einfügungs- oder Löschoperation betroffen wäre. Sobald die Transaktion, in deren Verlauf der Satz gelöscht wurde, einen Konsistenzpunkt erreicht hat, wird das Löschbit wieder auf Null gesetzt, und verzögerte Schlüsselsatzeinfügungen können ablaufen.
  • Der Fachmann weiß, daß die hier beschriebenen Operationen allgemein als in einem Blattknoten ablaufend betrachtet werden, die Knotenaufspaltungs- und Knotenauflösungsoperationen jedoch häufig bewirken, daß sich entsprechende Operationen im Baum bis zum Root-Knoten fortpflanzen. Die hier beschriebenen Verfahren gelten selbstverständlich auch für solche Operationen auf höheren Ebenen.

Claims (8)

1. Ein Datenverarbeitungssystem bestehend aus einem Datenbanksystem für gemeinsamen Zugriff 12, 14, in dem mehrere Benutzer 10 mittels einer Baumstruktur gleichzeitig auf die Datenbank zugreifen können, wobei der Zugriff erste Operationen umfaßt, bei denen die Baumstruktur unverändert bleibt, sowie zweite Operationen, bei denen die Baumstruktur geändert wird, und wobei das Datenverarbeitungssystem über Mittel zur Ausführung einer aus mehreren Operationen bestehenden Transaktion sowie Mittel zur Speicherung der sequentiellen Positionen von Operationen, anhand derer eine Transaktion im Fall eines Systemausfalls rückgangig gemacht werden kann, verfügt,
wobei das System dadurch gekennzeichnet ist, daß das Mittel zur Wiederherstellung über Mittel zur Speicherung einer Angabe der sequentiellen Position einer zweiten Operation aus einer Folge von Operationen, welche die Baumstruktur unmittelbar vor Beginn der Operation verändert haben, verfügt, ferner über Mittel zur Speicherung eines Kompensationsprotokollsatzes, der nach Beendigung der Operationsfolge auf diese Angabe verweist, sowie Mittel zum Rückgängigmachen der Operationen in der Transaktion durch einen Verweis auf die gespeicherte Angabe, falls das System vor Beendigung der Operationsfolge ausfällt, und zum Rückgängigmachen nur der nicht in der Folge enthaltenen Operationen bei einem Systemausfall, sofern die Folge durch einen Verweis auf den Protokollkompensationssatz abgeschlossen wurde.
2. Ein Datenverarbeitungssystem gemäß Anspruch 1, bei dem die Baumstruktur eine Indexbaumstruktur ist mit einem Root-Knoten und Schlüsselsatzverweisen auf Knoten einer nächstniedrigeren Ebene, der wiederum eine nächstniedrigere Knotenebene folgt, auf deren Knoten durch Schlüssel im nächsthöheren Knoten verwiesen wird, bis hin zu Endknoten mit Schlüsseln, die auf die Daten in der Datenbank verweisen, wobei in jeder Operation die Knoten mittels der Schlüsselsatzverweise auf einen vorhandenen Endknoten durchlaufen werden, und das Mittel zur Anforderung bedingter Zugriffsbeschränkungen bei Erreichen eines Schlüsselsatzes im Endknoten, Mittel zum Zugriff auf die im Verweis bezeichneten Daten in der Datenbank nach Gewährung der Zugriffsbeschränkung, Mittel zur Anforderung unbedingter Zugriffsbeschränkungen bei Nichtgewährung der bedingten Zugriffsbeschränkung sowie Mittel zum Durchlaufen der Knoten vom Root-Knoten zu einem neuen Endknoten im Fall einer wesentlichen Änderung des vorhandenen Endknotens enthält.
3. Ein Datenverarbeitungssystem gemäß Anspruch 2, das Mittel enthält, um den Endknoten nach Gewährung der unbedingten Zugriffsbeschränkung daraufhin zu prüfen, ob ein im Endknoten bezeichneter Schlüsselsatz der erste Schlüsselsatz in dem Knoten ist.
4. Ein Datenverarbeitungssystem gemäß Anspruch 3, das Mittel enthält, um den Endknoten daraufhin zu prüfen, ob ein darin enthaltener Schlüsselsatz kleiner ist als ein angeforderter Schlüssel satz.
5. Ein Verfahren zum Betrieb eines Datenverarbeitungssystems bestehend aus einem Datenbanksystem, das mittels einer Baumstruktur den gleichzeitigen Zugriff mehrerer Benutzer auf Daten in der Datenbank ermöglicht, wobei der Zugriff erste Operationen enthält, bei denen die Baumstruktur unverändert bleibt, sowie zweite Operationen, bei denen die Baumstruktur verändert wird, wobei das Verfahren folgende Schritte umfaßt:
Ausführen einer Transaktion bestehend aus mehreren solchen Operationen;
Speichern einer Angabe der sequentiellen Position einer zweiten Operation aus einer Folge von Operationen, welche die Baumstruktur verändern, unmittelbar vor Beginn der Operationsfolge;
Speichern eines Kompensationsprotokollsatzes, der nach Abschluß der Folge auf diese Angabe verweist;
Rückgängigmachen der Operationen einer Transaktion durch Verweis auf die gespeicherte Angabe, falls das System vor Beendigung der Folge ausfällt; sowie
Rückgängigmachen nur der nicht in der Folge enthaltenen Operationen bei einem Systemausfall, sofern die Folge abgeschlossen ist, anhand des Kompensationsprotokollsatzes.
6. Ein Verfahren gemäß Anspruch 5, bei dem die Baumstruktur eine Indexbaumstruktur ist mit einem Root-Knoten und Schlüsselsatzverweisen auf Knoten einer nächstniedrigeren Ebene, der wiederum eine nächstniedrigere Knotenebene folgt, auf deren Knoten jeweils durch Schlüssel im nächsthöheren Knoten verwiesen wird, bis hin zu Endknoten mit Schlüsseln, die auf die Daten in der Datenbank verweisen, wobei in jeder Operation die Knoten mittels der Schlüsselsatzverweise bis zu einem vorhandenen Endknoten durchlaufen werden, und das außerdem folgende Schritte enthält:
Anforderung bedingter Zugriffsbeschränkungen bei Erreichen eines Schlüsselsatzes im Endknoten;
Zugriff auf die im Verweis bezeichneten Daten in der Datenbank nach Gewährung der Zugriffsbeschränkung;
Anforderung einer unbedingten Zugriffsbeschränkung, falls die bedingte Zugriffsbeschränkung nicht gewährt wird;
Durchlaufen der Knoten vom Root-Knoten bis zu einem neuen Endknoten, wenn der bestehende Endknoten wesentlich verändert wurde.
7. Ein Verfahren gemäß Anspruch 6, bei dem der Endknoten nach Gewährung der unbedingten Zugriffsbeschränkung daraufhin geprüft wird, ob ein im Endknoten bezeichneter Schlüsselsatz der erste Schlüsselsatz des Knotens ist.
8. Ein Verfahren gemäß Anspruch 7, bei dem ferner geprüft wird, ob ein Schlüsselsatz im Endknoten kleiner ist als der angeforderte Schlüsselsatz.
DE3854667T 1988-04-08 1988-08-03 Datenbasissystem mit einer Baumstruktur. Expired - Fee Related DE3854667T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/179,190 US5123104A (en) 1988-04-08 1988-04-08 Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations

Publications (2)

Publication Number Publication Date
DE3854667D1 DE3854667D1 (de) 1995-12-14
DE3854667T2 true DE3854667T2 (de) 1996-06-20

Family

ID=22655596

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3854667T Expired - Fee Related DE3854667T2 (de) 1988-04-08 1988-08-03 Datenbasissystem mit einer Baumstruktur.

Country Status (13)

Country Link
US (1) US5123104A (de)
EP (1) EP0336035B1 (de)
JP (1) JP2505040B2 (de)
KR (1) KR930002331B1 (de)
CN (1) CN1021713C (de)
BR (1) BR8901659A (de)
DE (1) DE3854667T2 (de)
ES (1) ES2079355T3 (de)
GB (1) GB8818455D0 (de)
HK (1) HK71296A (de)
MY (1) MY107385A (de)
PH (1) PH27313A (de)
SG (1) SG42824A1 (de)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0402542B1 (de) * 1989-06-13 1997-01-22 International Business Machines Corporation Verfahren zum Entfernen unbestätigter Änderungen an gespeicherten Daten durch ein Datenbankverwaltungssystem
JP2634908B2 (ja) * 1989-06-21 1997-07-30 日本電気株式会社 情報処理装置
JP2507604B2 (ja) * 1989-06-21 1996-06-12 日本電気株式会社 情報処理装置
CA2027934C (en) * 1989-12-22 1994-06-21 Cherie C. Barnes Accelerated deadlock detection in congested data transactions
US5319777A (en) * 1990-10-16 1994-06-07 Sinper Corporation System and method for storing and retrieving information from a multidimensional array
US5430869A (en) * 1991-05-29 1995-07-04 Hewlett-Packard Company System and method for restructuring a B-Tree
US5276872A (en) * 1991-06-25 1994-01-04 Digital Equipment Corporation Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions
US5764877A (en) * 1991-06-25 1998-06-09 Digital Equipment Corporation Media recovery with time-split B-trees
US5270712A (en) * 1992-04-02 1993-12-14 International Business Machines Corporation Sort order preserving method for data storage compression
US5404508A (en) * 1992-12-03 1995-04-04 Unisys Corporation Data base backup and recovery system and method
US5440732A (en) * 1993-02-05 1995-08-08 Digital Equipment Corp., Pat. Law Gr. Key-range locking with index trees
US5678040A (en) * 1993-10-29 1997-10-14 Motorola, Inc. Method for managing a hierarchical design transaction
US5590318A (en) * 1993-11-18 1996-12-31 Microsoft Corporation Method and system for tracking files pending processing
JP3441807B2 (ja) * 1994-09-19 2003-09-02 株式会社日立製作所 B木インデクスの管理方法およびシステム
US5748952A (en) * 1995-05-10 1998-05-05 International Business Machines Corporation System and method for avoiding complete index tree traversals in sequential and almost sequential index probes
US5713017A (en) * 1995-06-07 1998-01-27 International Business Machines Corporation Dual counter consistency control for fault tolerant network file servers
US5644763A (en) * 1995-06-28 1997-07-01 Sybase, Inc. Database system with improved methods for B-tree maintenance
US5842196A (en) * 1996-04-03 1998-11-24 Sybase, Inc. Database system with improved methods for updating records
US5999946A (en) 1996-04-10 1999-12-07 Harris Corporation Databases in telecommunications
US5832484A (en) * 1996-07-02 1998-11-03 Sybase, Inc. Database system with methods for parallel lock management
US6009425A (en) * 1996-08-21 1999-12-28 International Business Machines Corporation System and method for performing record deletions using index scans
US5937401A (en) * 1996-11-27 1999-08-10 Sybase, Inc. Database system with improved methods for filtering duplicates from a tuple stream
US5958005A (en) * 1997-07-17 1999-09-28 Bell Atlantic Network Services, Inc. Electronic mail security
US6792432B1 (en) 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6606626B1 (en) 1998-10-20 2003-08-12 Sybase, Inc. Database system with lock manager enhancement for improving concurrency
US6363387B1 (en) 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US6631366B1 (en) 1998-10-20 2003-10-07 Sybase, Inc. Database system providing methodology for optimizing latching/copying costs in index scans on data-only locked tables
US6591269B1 (en) * 1999-05-19 2003-07-08 Sybase, Inc. Database system with methodology for online index rebuild
US6490578B1 (en) 2000-04-05 2002-12-03 Sybase, Inc. Database system with methodology for high-performance date
US6647386B2 (en) * 2000-12-14 2003-11-11 International Business Machines Corporation Method, system, and program for reverse index scanning
US6735600B1 (en) * 2001-03-30 2004-05-11 Lsi Logic Corporation Editing protocol for flexible search engines
US6944615B2 (en) * 2001-06-28 2005-09-13 International Business Machines Corporation System and method for avoiding deadlock situations due to pseudo-deleted entries
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7010662B2 (en) * 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7281050B2 (en) * 2003-04-08 2007-10-09 Sun Microsystems, Inc. Distributed token manager with transactional properties
US20040236744A1 (en) * 2003-05-22 2004-11-25 Desai Paramesh S. Method for ensuring referential integrity in highly concurrent datbase environments
US20050102255A1 (en) * 2003-11-06 2005-05-12 Bultman David C. Computer-implemented system and method for handling stored data
US20050108300A1 (en) * 2003-11-17 2005-05-19 Terrascale Technologies Inc. Method for the management of local client cache buffers in a clustered computer environment
US7324995B2 (en) * 2003-11-17 2008-01-29 Rackable Systems Inc. Method for retrieving and modifying data elements on a shared medium
US7293043B1 (en) * 2003-12-04 2007-11-06 Sprint Communications Company L.P. Tracking switch transactions
US7650352B2 (en) * 2006-03-23 2010-01-19 International Business Machines Corporation System and method for increasing availability of an index
CN100447294C (zh) * 2006-03-27 2008-12-31 南京航空航天大学 一种生长厚纳米金刚石膜的方法
US7941451B1 (en) * 2006-08-18 2011-05-10 Unisys Corporation Dynamic preconditioning of a B+ tree
CN100472537C (zh) * 2007-06-20 2009-03-25 中国科学院计算技术研究所 一种资源空间模型的存储与访问方法
KR100922389B1 (ko) * 2007-07-04 2009-10-19 삼성전자주식회사 플래시 메모리를 위한 색인 스킴
US8706699B2 (en) * 2009-07-16 2014-04-22 Synopsys, Inc. Transaction history with bounded operation sequences
US20110137922A1 (en) * 2009-12-07 2011-06-09 International Business Machines Corporation Automatic generation of a query lineage
US20110145201A1 (en) * 2009-12-11 2011-06-16 Microsoft Corporation Database mirroring
CN102385588B (zh) * 2010-08-31 2014-08-06 国际商业机器公司 用于提高数据并行插入的性能的方法和系统
US8868514B2 (en) * 2011-01-07 2014-10-21 Microsoft Corporation Transaction support for distributed data
US9582588B2 (en) * 2012-06-07 2017-02-28 Google Inc. Methods and systems for providing custom crawl-time metadata
US9003162B2 (en) 2012-06-20 2015-04-07 Microsoft Technology Licensing, Llc Structuring storage based on latch-free B-trees
US9189518B2 (en) * 2012-10-19 2015-11-17 International Business Machines Corporation Gathering index statistics using sampling
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9323771B2 (en) * 2013-04-24 2016-04-26 Dell Products, Lp Efficient rename in a lock-coupled traversal of B+tree
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9519591B2 (en) 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US9514211B2 (en) 2014-07-20 2016-12-06 Microsoft Technology Licensing, Llc High throughput data modifications using blind update operations
US10095721B2 (en) * 2015-03-27 2018-10-09 International Business Machines Corporation Index building in response to data input
CN105373835B (zh) * 2015-10-14 2021-07-02 国网湖北省电力公司 一种基于构造树模型的链路信息管理方法
US10558636B2 (en) 2016-04-27 2020-02-11 Sap Se Index page with latch-free access
US10275480B1 (en) * 2016-06-16 2019-04-30 Amazon Technologies, Inc. Immediately-consistent lock-free indexing for distributed applications
US11269837B2 (en) * 2020-03-16 2022-03-08 International Business Machines Corporation Data tree checkpoint and restoration system and method

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4318184A (en) * 1978-09-05 1982-03-02 Millett Ronald P Information storage and retrieval system and method
US4468728A (en) * 1981-06-25 1984-08-28 At&T Bell Laboratories Data structure and search method for a data base management system
US4507751A (en) * 1982-06-21 1985-03-26 International Business Machines Corporation Method and apparatus for logging journal data using a log write ahead data set
US4627019A (en) * 1982-07-08 1986-12-02 At&T Bell Laboratories Database management system for controlling concurrent access to a database
US4479196A (en) * 1982-11-15 1984-10-23 At&T Bell Laboratories Hyperedge entity-relationship data base systems
US4698752A (en) * 1982-11-15 1987-10-06 American Telephone And Telegraph Company At&T Bell Laboratories Data base locking
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
US4611298A (en) * 1983-06-03 1986-09-09 Harding And Harris Behavioral Research, Inc. Information storage and retrieval system and method
US4704703A (en) * 1985-07-22 1987-11-03 Airus Incorporated Dynamic input processing system
US4868744A (en) * 1986-03-03 1989-09-19 International Business Machines Corporation Method for restarting a long-running, fault-tolerant operation in a transaction-oriented data base system without burdening the system log
JPS62206628A (ja) * 1986-03-07 1987-09-11 Hitachi Ltd 知識の蓄積方式
US4878167A (en) * 1986-06-30 1989-10-31 International Business Machines Corporation Method for managing reuse of hard log space by mapping log data during state changes and discarding the log data
US4823310A (en) * 1987-08-10 1989-04-18 Wang Laboratories, Inc. Device for enabling concurrent access of indexed sequential data files
US4914569A (en) * 1987-10-30 1990-04-03 International Business Machines Corporation Method for concurrent record access, insertion, deletion and alteration using an index tree
US4945474A (en) * 1988-04-08 1990-07-31 Internatinal Business Machines Corporation Method for restoring a database after I/O error employing write-ahead logging protocols

Also Published As

Publication number Publication date
PH27313A (en) 1993-05-28
KR890016469A (ko) 1989-11-29
DE3854667D1 (de) 1995-12-14
KR930002331B1 (ko) 1993-03-29
ES2079355T3 (es) 1996-01-16
EP0336035A3 (de) 1992-07-01
BR8901659A (pt) 1989-11-21
CN1037044A (zh) 1989-11-08
JP2505040B2 (ja) 1996-06-05
EP0336035B1 (de) 1995-11-08
HK71296A (en) 1996-05-03
JPH0212460A (ja) 1990-01-17
CN1021713C (zh) 1993-07-28
US5123104A (en) 1992-06-16
GB8818455D0 (en) 1988-09-07
SG42824A1 (en) 1997-10-17
EP0336035A2 (de) 1989-10-11
MY107385A (en) 1995-11-30

Similar Documents

Publication Publication Date Title
DE3854667T2 (de) Datenbasissystem mit einer Baumstruktur.
DE3855213T2 (de) Datenbanksystem und Verfahren für den gleichzeitigen Satzzugriff mit Hilfe eines Baumstrukturindexes
DE3856055T2 (de) Verfahren und Einrichtung, um gleichzeitigen Zugriff zu indizierten sequentiellen Dateien zu ermöglichen
DE69126066T2 (de) Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
DE69112694T2 (de) Verfahren zum Betrieb eines Datenverarbeitungssystems zur Ausführung von Datenbanktransaktionen.
DE69126067T2 (de) Verfahren und Gerät zur Verwaltung von Zustandsidentifizierern zur effizienten Wiederherstellung
DE68927142T2 (de) Verriegelungs- und Lese-Minimierung in einem segmentierten Speicherraum
DE3853460T2 (de) Raumverwaltungsanordnung für das Datenzugriffssystem eines Dateizugriffsprozessors.
DE3784190T2 (de) Eintragung eines datenbasisindex in das journal zur verbesserten rueckstellung.
CA2302981C (en) Online database table reorganization
US6567928B1 (en) Method and apparatus for efficiently recovering from a failure in a database that includes unlogged objects
DE4216871C2 (de) Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
DE3688529T2 (de) Verfahren zur Auffrischung von Mehrspaltentabellen in einer relationellen Datenbank mit Mindestinformation.
DE68916486T2 (de) Verfahren zur Durchführung von Operationen in einem relationalen Datenbankverwaltungssystem.
DE69032337T2 (de) Multiprozessorsystem verwendendes Datenbasisverarbeitungssystem
US4498145A (en) Method for assuring atomicity of multi-row update operations in a database system
DE3788444T2 (de) Verfahren zum Wiederanlauf einer langlaufenden fehlertoleranten Operation in einem transaktionsorientierten Datenbasissystem.
DE4220198C2 (de) Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem
DE68926849T2 (de) Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank
DE68926693T2 (de) System und Verfahren zur einem Systemfehler nachfolgenden Datenerholung in einer Datenbank eines Rechnersystems
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
US7966298B2 (en) Record-level locking and page-level recovery in a database management system
DE68926422T2 (de) Datenbankverwaltungssystem
DE69119222T2 (de) Datensicherung und Beseitigung in einem Datenverarbeitungssystem
DE3780807T2 (de) Verfahren zum schnellen oeffnen von mit pfadnamen identifizierten plattendateien.

Legal Events

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