DE69802437T2 - Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen - Google Patents
Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppenInfo
- Publication number
- DE69802437T2 DE69802437T2 DE69802437T DE69802437T DE69802437T2 DE 69802437 T2 DE69802437 T2 DE 69802437T2 DE 69802437 T DE69802437 T DE 69802437T DE 69802437 T DE69802437 T DE 69802437T DE 69802437 T2 DE69802437 T2 DE 69802437T2
- Authority
- DE
- Germany
- Prior art keywords
- transaction
- fields
- database
- groups
- locking
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- 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/99938—Concurrency, e.g. lock management in shared database
-
- 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/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
-
- 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/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Die vorliegende Erfindung bezieht sich generell auf Datenverarbeitungssysteme und im speziellen auf ein Verfahren und ein System zur Verwendung von Verriegelungsgruppen zur Implementierung eines feinkörnigen Übereinstimmungsmechanismus für optimistische Parallelsteuerung.
- Computersysteme benutzen oft Datenbasen zur Speicherung und Verarbeitung großer Mengen von Daten. Die Datenbasen haben in der Regel mehrfache Klienten, welche diese Daten verwenden und manipulieren. Die Klienten manipulieren die Daten typischerweise in der Form von verschiedenen "Lese-" und "Schreib- Vorgängen, welche es dem Klient entweder ermöglichen die Daten von der Datenbasis zurückzuholen oder es dem Klient erlauben die Daten in der Datenbasis zu modifizieren. Eine typische Transaktion eines Klienten weist mehrere Lese- und Schreib-Vorgänge auf, und in einer Datenbasis ist es üblich für viele parallel ausgeführte Transaktionen die Effizienz der Verarbeitung zu verbessern. In einem solchen Fall wird, sofern Zugang zu der Datenbasis bei jeder Transaktion frei ermöglicht ist, die Konsistenz unter den Daten gefährdet.
- Für viele Datenbasisklienten oder für mehrfache Prozeduren in einem einzelnen Klienten-Rechner ist es vollkommen üblich parallelen Zugriff auf das Datenbasissystem zu suchen, um Daten von der Datenbasis zu lesen und Daten auf die Datenbasis zu schreiben. Dazu muss jedoch jeder Klient mit der Datenbasis zusammenarbeiten können, unbeschadet der Interferenzen der anderen. Das sind, während des Verlaufs einer Transaktion eines Klienten mit der Datenbasis - lesen und modifizieren eines Satzes von Daten von der Datenbasis - so dass Teile der Datenbasis durch andere Klienten unverändert bleiben. Um dieses Problem zu verhindern wird Parallelsteuerung durch das Datenbasissystem eingesetzt um parallelen Zugriff auf das Datenbasissystem zu überwachen. Dies sichert die Integrität jeder Transaktion in einer Umgebung mit mehreren Benutzern.
- Eine Art von Parallelsteuerung ist die "optimistische Parallelsteuerung". Optimistische Parallelsteuerung bedeutet, dass der Überwachungspunkt für die Kollisionen zwischen den Transaktionen am Ende einer Transaktion steht. Mit optimistischer Parallelsteuerung wird vorausgesetzt, dass eine Transaktion beendet wird bevor eine weitere Transaktion stattfindet um die gleichen Daten zu verändern. Die Transaktion liest die notwendigen Daten ein, markiert intern das Daten-Update, und bestimmt schließlich ob irgendwelche dieser Daten verändert wurden, bevor in die Datenbasis dieser neue Datensatz eingetragen wird. Wenn der Klient fertig ist um schlussendlich die modifizierten Daten an die Datenbasis zu übergeben, überprüft das System diese Daten durch eine andere Transaktion die seit der Zeit verändert wurden als der Klient zuerst die Daten ausgelesen hat. Wenn keine Änderungen an diesen speziellen Daten festgestellt werden, dann kann die Transaktion des Klienten abgeschlossen werden. Sobald jedwede Daten verändert wurden spielt das System dem vom Klient modifizierten Dateneintrag zurück und zeigt so dem Klient, dass er seine Transaktion von neuem durchführen kann, sofern erforderlich. Ein "Zurückspielen" bezieht sich auf die Transaktion, welche abgebrochen wurde und auf alle Daten, welche in ihren ursprünglichen Status geändert wurden, bevor die Transaktion eingeleitet wurde. Während die optimistische Parallelverarbeitung eine signifikante Verbesserung in der Verarbeitung der Daten bewirken kann, durch die Vermeidung der Verzögerungszeiten durch die Initiale Sicherung der Daten, ist es dennoch möglich, dass das System die Daten einer Transaktion zurückspielen muss, wenn ein anderer Prozess dieselben Daten modifiziert hat.
- Sich nun auf objektorientierte Systeme und Programmiersprachen beziehend verwenden solche Systeme "Klassen", beinhaltend beide Mitglieder von Daten, welche Mitglieder von Daten und Funktionen (anderer Verfahren) speichern, welche auf diese Daten wirken. Klassen von Masken für die Kreierung von "Objekten" repräsentieren Instanzen einer Klasse. Klassen definieren ebenfalls Verfahren, welche Prozeduren sind, die ein Objekt der selben Klasse verarbeiten. Eine exemplarische objektorientierte Programmiersprache ist die JavaTM Programmiersprache, beschrieben in "Java Programming Language" von Ken Arnold, James Goslirig, Addison-Wesley, 1996. Für die weitere Beschreibung der Java-Sprache wird an dieser Stelle auf "Java Lanuage Specification" von James Gosling, Bill Joy, Guy Steele, Addison-Wesley, 1996 verwiesen.
- "Enterprise Objects Framework. A Second Generation Objekts-Relational Enabler" von Karl Kleissner, Sigmod Record, Vol. 24, Nr. 2, Juni 1995, Seiten 455-459 offenbart ein objektorientiertes System, welches eine optimistische Parallelsteuerung implementiert. Wenn in objektorientierten Systemen auf Datenbasen zugegriffen wird, so verwenden einige Systeme "Verriegelungsgruppen" um optimistische Parallelsteuerung zu implementieren. Unter Bezug auf eine optimistische Parallelsteuerung bezieht sich eine Verriegelungsgruppe, trotz ihres Namens, nicht auf einen Verriegelungsblock von Daten. Anstelle dessen stellt die Verriegelungsgruppe einen Mechanismus für das Aufspüren einer Kollision zur Verfügung. Im speziellen spezifiziert eine Verriegelungsgruppe ein oder mehrerer Felder, welches nur durch einen Klient während einer Transaktion dieses Klienten modifiziert werden kann. Verriegelungsgruppen sind deshalb hilfreich für die Überwachung des Ablaufs der Daten in einer Datenbasis. Wenn zum Beispiel ein Kundenobjekt Felder für Kundennamen und Adressen beinhaltet, so kann eine Verriegelungsgruppe die Namen- und Adressfelder spezifizieren, so dass, zum Beispiel, ein Klient Daten in dem Namensfeld nicht verändern kann während ein anderer Klient Daten in dem korrespondierenden Adressfeld verändert. In anderen Worten, können die Daten in den Namens- und Adressfeldern nur durch einen Klient während einer Transaktion verändert werden um zu vermeiden, dass beispielsweise eine falsche Adresse für einen speziellen Namen eingefügt wird.
- Verriegelungsgruppen werden verwendet um Entscheidungen zu treffen wenn Konflikte entstehen wenn ein Klient die Transaktion übergibt. Wenn ein Klient eine Transaktion zur Modifizierung von Daten in einem speziellen Objekt durchführt und versucht die Transaktion zu übergeben um die Modifikation zu sichern, so bestimmt das System ob irgendwelche Verriegelungsgruppen irgendwelche der modifizierten Felder beinhalten, und sofern dies so ist, bestimmt es weiterhin ob irgendwelche anderen Applikationen irgendwelche Felder dieser Verriegelungsgruppen modifizieren. Das System übergibt die Transaktion nicht und modifiziert die Datenbasis nicht, sofern ein anderer Klient solche Modifikationen durchführt.
- Eine herkömmliche Verriegelungsgruppe beinhaltet alle Felder in einem Objekt. Objekte können jedoch viele Felder beinhalten und ein Klient wird oft lediglich einen kleinen Satz von Feldern in einem Objekt modifizieren. Viele Konflikte entstehen wenn eine Verriegelungsgruppe eine große Anzahl von Feldern beinhaltet, weil nur ein Klient die Daten in einem gesamten Objekt während einer Transaktion modifizieren kann, was andere Klienten daran hindert jedwede Daten in diesem Objekt während der Transaktion zu modifizieren.
- Herkömmliche objektorientierte Systeme, welche eine optimistische Parallelsteuerung verwenden, um auf die Datenbasis zuzugreifen, erlauben den Klienten nicht irgendwelche Felder eines Objektes zu modifizieren, ohne andere Transaktionen an das simultanen Modifizierung anderer Felder in dem selben Objekt zu hindern. In herkömmlichen Systemen kann keine andere Transaktion ein weiteres Feld in dem selben Objekt modifizieren, wenn eine Transaktion ein Feld eines Objektes modifiziert. Konsequenterweise erlauben herkömmliche Systeme nicht, dass ein Feld simultan zu mehr als einer Verriegelungsgruppe gehört. Zusätzlich beinhalten Verriegelungsgruppen keine Felder aus verschiedenen Klassen. Diese Einschränkungen bremsen das System durch das Abhalten verschiedener Applikationen von simultanen Zugriff auf verschiedene Felder des selben Objekts. Es ist daher wünschenswert solche Systeme zu verbessern.
- Verfahren und Systeme in Übereinstimmung mit der vorliegenden Erfindung, und, fortgesetzt in den dazugehörigen Ansprüchen, befriedigen diese und andere Wünsche, durch die zur Verfügungstellung eines Verfahrens, welches es den Verriegelungsgruppen ermöglicht Felder in verschiedenen Klassen zu beinhalten, und es einem Feld zu ermöglichen in mehr als einer Verriegelung zur Gruppe zu sein.
- Im Zusammenhang mit Verfahren, in Übereinstimmung · mit der vorliegenden Erfindung, wird ein Verfahren in einem Datenverarbeitungssystem zur Verfügung gestellt, welches Verriegelungsgruppen und Klassen mit Feldern aufweist. Dieses Verfahren erhält eine Anzeige für eine Verriegelungsgruppe, spezifizierend, dass die Verriegelungsgruppe ein erstes Feld einer ersten Klasse und ein zweites Feld einer zweiten Klasse beinhaltet, und die spezifizierte Verriegelungsgruppe kreiert. Es erhält weiteres eine Anfrage für die Übergabe einer Transaktion betreffend eines Wertes für eines der Felder in der Verriegelungsgruppe, und bestimmt, ob die Transaktion übergeben wird, welche darauf basiert, ob wenigstens eines der Felder in der Verriegelungsgruppe während der Transaktion modifiziert wurde.
- Verfahren und Systeme in Übereinstimmung mit der vorliegenden Erfindung erlauben den parallelen Zugriff auf ein einzelnes Objekt wenn die individuellen Felder dieses Objekt durch einen Zugriff von separaten Klienten betroffen sind. Dies reduziert während des Ablaufs die Verzögerung durch Warten auf ein Objekt bis dieses frei ist von einem Zugriff, und senkt die Verzögerung durch das Rückspielen der Transaktionen, welche parallel auf ein Objekt zugreifen. Die Reduzierung dieser Verzögerungen hebt die generelle Effizienz der Datenverarbeitung für dieses System an.
- Die oben angeführten Merkmale, andere Merkmale und Vorteile der vorliegenden Erfindung werden ohne weiteres erkannt und geschätzt werden, durch jemand der in diesem Fachgebiet ausgebildet ist, durch die folgende detaillierte Beschreibung von bevorzugten Implementationen im Zusammenhang mit den beigefügten Zeichnungen.
- Die beigefügten Zeichnen, welche einen Teil dieser Spezifikation ausmachen und einschließen, illustrieren eine Implementation der Erfindung und dienen, zusammen mit der Beschreibung, zur Erklärung der Vorteile und Prinzipien der vorliegenden Erfindung. In den Zeichnungen sind,
- Fig. 1 ist ein Diagramm eines Computer-Systems im Zusammenhang mit den Verfahren und Systemen in Übereinstimmung mit der vorliegenden Erfindung;
- Fig. 2 ist ein Flussdiagramm eines Verfahrens für die Übergabe einer Transaktion in Zusammenhang mit Verfahren und Systemen und Übereinstimmung mit der vorliegenden Erfindung; und
- Fig. 3 ist ein Diagramm eines Beispiels paralleler Transaktionen im Zusammenhang mit den Verfahren und Systemen in Übereinstimmung mit der vorliegenden Erfindung.
- Verfahren und Systeme in Übereinstimmung mit der vorliegenden Erfindung benutzen optimistische Parallelsteuerung und erlauben mehren Klienten simultane Modifikation des selben zur Verfügung gestellten Objektes, so dass diese Felder in verschiedenen Verriegelungsgruppen modifiziert werden können. Sie erlauben weiter das eine Verriegelungsgruppe einer optimistischen Parallelsteuerung Felder unterschiedlicher Klassen zu beinhaltet. Zusätzlich erlauben sie, dass ein einzelnes Feld in mehr als einer Verriegelungsgruppe ist. Diese Systeme erlauben "feinkörnige" Übereinstimmung für parallelen Zugriff auf eine Datenbasis. Feinkörnige Übereinstimmung bezieht sich auf die Tatsache, dass individuelle Felder eines Objektes verriegelt sein können, ohne dass das gesamte Objekt verriegelt sein muss, dabei ermöglichend, anderen Transaktionen parallelen Zugriff auf andere Felder von dem Objekt. Verfahren und Systeme in Übereinstimmung mit der vorliegenden Erfindung ermöglichen zunehmend parallelen Zugriff auf Objekte. Sie reduzieren die Verzögerungen, welche durch warten auf die Freigabe aller Felder eines Objektes entstehen um frei zu sein für den Zugriff und im weiteren reduzieren sie die Rückspieltransaktionen.
- Generell werden Verrieglungsgruppen dazu verwendet zusammenhängende Datensätze innerhalb eines Objektes zu spezifizieren. Während ein Benutzer in einem Objekt Daten modifiziert, kann der Benutzer nicht das gesamte Objekt bearbeiten. Wenn die Daten ebenfalls ein Teil einer Verriegelungsgruppe sind, wirkt die Transaktion nur auf den Satz von Feldern, welcher durch die Verriegelungsgruppe angezeigt ist. Für andere Prozesse ist der Zugang frei und es können überarbeitete Daten innerhalb des selben Objektes eingespielt werden, solange die Daten außerhalb der Verriegelungsgruppe sind. So ist es zum Beispiel für mehre andere Prozesse möglich Änderungen in Feldern in dem Objekt durchzuführen, ohne einen Konflikt mit dem Transaktions-Austausch zu provozieren.
- Wenn das System fertig ist für einen Datenaustausch überprüft es die Originale, nicht modifizierte Kopie der Daten gegenüber den aktuellen Daten (am Übergabezeitpunkt) in der Datenbasis. Wenn die Daten dieselben sind übergibt die Transaktion ihre Änderungen an die Datenbasis. Wenn jedoch ein Unterschied festgestellt wird, dann ließt das System die Verriegelungsgruppe für dieses Objekt ein und überprüft auf eine Kollision. Somit wird überprüft, um festzustellen ob es darum geht Änderungen an ein Feld zu übergeben, welches innerhalb einer Verriegelungsgruppe spezifiziert ist, und während der Zeit seit diese die Daten gelesen und aufbereitet hat um seine Änderungen zu übergeben, ob andere Klienten entweder das selbe Feld oder ein anderes Feld modifiziert haben, welches ebenfalls in dieser Verriegelungsgruppe spezifiziert ist. Wenn dem so ist, so ist dies eine Bedingung für eine Kollision und der Prozess übergibt seine Änderungen nicht. Man beachte, dass es mehrere Verriegelungsgruppen für ein Objekt geben kann, und dass diese Verriegelungsgruppen sich überlappen können. In einer Ausführungsform richtet ein Klient, welcher ein System mit Übereinstimmung mit der vorliegenden Erfindung verwendet, die Verriegelungsgruppe als eine Gruppe von Feldern ein, die unabhängig sind. Eine Verriegelungsgruppe kann mit einzelnen Feldern oder einer Kombination von Feldern in jeder Anzahl von Klassen korrespondieren. Der Benutzer kann spezifizieren, dass jene Felder zusammen als eine Verriegelungsgruppe behandelt werden sollen, und weist auf jene Felder, deren Werte voneinander abhängig sind in einer Gruppe zusammengefasst werden. Wenn eine Anwendung ein Feld modifiziert, so kann seine Transaktion ungünstigerweise betroffen sein wenn eine andere Applikation irgendein Feld modifiziert oder neuen Daten versorgt, welches zu einer der Verriegelungsgruppe gehört, welche das spezifizierte Feld beinhalten.
- In einer Implementation der vorliegenden Erfindung arbeitet das System in einem objekt-relationalem Einbinde-Baustein, welcher Informationen von relationalen Datenbanken in Objekte einbindet und umgekehrt, wogegen die nachfolgende beschriebene Technik ausgeführt wird wenn die Transaktionen übergeben werden.
- Solch ein Einbinde-Baustein generiert Quell-Code von einem Schema in einer relationalen Datenbasis, welche Tabellen enthält. Der generierte Quell-Code beinhaltet Klassen, welche Felder beinhalten, und diese Klassen und Felder werden aus den Tabellen und Spalten der relationalen Datenbasis generiert. Der Einbindebaustein bindet eine Tabelle an eine Klasse und bindet jede Spalte der Tabelle an ein Feld in der Klasse. Der Benutzer kann den Einbinde-Baustein dazu verwenden um eine Verriegelungsgruppe auf die Felder der Klassen zu definieren, wobei diese Verriegelungsgruppen aktuell durch Verriegelungsgruppen der korrespondierenden Spalten in den Tabellen korrespondierender Objekte beeinflusst werden. Zum Zwecke der Klarheit werden nachfolgend die Verriegelungsgruppen beschrieben, wie definiert in den Spalten von Tabellen in der Datenbasis. Jedoch wird jemanden der in dieser Technik ausgebildet ist klar sein, dass die Verriegelungsgruppen ebenfalls so gesehen werden können, als wären sie in Felder oder Klassen oder andere Elemente in der Datenstruktur implementiert.
- Fig. 1 ist ein Blockdiagramm eines Datenverarbeitungssystems 100 geeignet für den Einsatz mit Verfahren und Systemen in Übereinstimmung mit der vorliegenden Erfindung. Das Datenverarbeitungssystem 100 beinhaltet ein Computersystem 101, welches mit dem Internet 103 verbunden ist. Das Computersystem 101 beinhaltet einen zentralen Prozessrechner (CPU) 104, einen Hauptspeicher 106, und eine nebengeordnete Speichervorrichtung 110, welche mittels eines Busses 102 mit diesen verbunden ist. Zusätzlich beinhaltet das Computersystem 100 eine Anzeigevorrichtung 112 und eine Eingabevorrichtung 114. Der Hauptspeicher 106 beinhaltet eine virtuelle Maschine (VM) 120 so wie die JavaTM virtuelle Maschine (JVM), eine Hash-Tabelle 122, einen Klient 126, und einen Transaktions-Manager 128. Der Transaktions-Manager 128 beinhaltet ebenfalls einen Cash 130, verwendet um temporär neu aufbereitete Daten zu speichern, bevor diese in die Datenbasis übergeben werden. Wie nachfolgend beschrieben, kann die Hash-Tabelle 122 als jegliche Form einer temporären Speicherung implementiert werden, und wird verwendet um temporär Spalten von Tabellen zu Speichern, welche zu der Verriegelungsgruppe gehören. Die JavaTM virtuelle Maschine ist wohl bekannt als Ausführungsvorrichtung für Computerprogramme und ist ausführlich detailliert beschrieben in Lindholm und Yellin, "The Java Virtual Machine Specification", Addision-Wesley von 1996. Die VM 120 beinhaltet eine Java-Laufzeit-Umgebung (JRE) 121. Der Klient 126 benutzt die Datenbasis 124 durch die Nutzung des Transaktions-Managers 128. Der Transaktions-Manager 128 führt Transaktionen an der Datenbasis 124 durch, wobei er feinkörnige Parallelsteuerung einsetzt, wie diese im weiteren nachfolgend beschreiben wird. Die Datenbasis 124 speichert Daten für welche Transaktionen durchgeführt werden. Diese Datenbasis 124 können auf einem Server-Computer (nicht dargestellt) abgelegt sein, oder in einer anderen Implementation in Übereinstimmung mit der vorliegenden Erfindung können sie ebenfalls auf dem Computer 101 vorliegen.
- Jemand der in dieser Technik ausgebildet ist wird erkennen, dass die Hash-Tabelle 122 und andere Aspekte der Verfahren und Systeme in Übereinstimmung mit der vorliegenden Erfindung gespeichert sein kann auf, oder gelesen werden kann von, jedem anderen nebengeordneten, computerlesbaren Speichermedium wie eine nebengeordnete Speichervorrichtung, wie Hard-Discs, Flopy-Discs und CD-Rom oder einer Träger-Welle auf einem Netzwerk 103, wie zum Beispiel das Internet. Obwohl die Hash-Tabelle 122 beschrieben ist als in der VM 120 operierend, wird jemand der in dieser Technik ausgebildet ist erkennen, dass die Hash-Tabelle 122 in anderen Programmen arbeiten kann, wie Arbeits-Systeme, und arbeiten kann, in anderen Objekt-orientierten oder nicht-objektorientierten Programm-Umgebungen. Zusätzlich kann jemand der in dieser Technik ausgebildet ist ebenfalls erkennen, dass das Datenverarbeitungs-System 100 zusätzliche oder verschiedene Komponenten enthalten kann.
- Die Fig. 2 visualisiert ein Flussdiagramm der Schritte die ausgeführt werden durch einen Transaktions-Manager 128, wenn Transaktionen von Verriegelungsgruppen implementiert werden, welchen in Übereinstimmung mit der vorliegenden Erfindung stehen. Der Transaktions-Manager 128 erhält eine Transaktions-Anfrage von einem Klient 126. Während der Transaktion speichert der Transaktions-Manager 128 lokal Kopien der Spalten im Speicher (zum Beispiel, einem Cache) und führt Operationen an diesen Kopien der Spalten durch, unter Einsatz von wohlbekannter Technik des Cachings. Lediglich zur Übergabezeit schreibt der Transaktions-Manager 128 die Kopien der Spalten in der Datenbasis 124 mit den aufbereiteten Daten. Wenn es für die Transaktion Zeit ist, die Daten zu übergeben, wenn eine Spalte einer Verriegelungsgruppe mit neuen Daten versorgt wird, so überprüft der Transaktions- Manager 128 generell ob alle Spalten in dieser Verriegelungsgruppe unverändert in der Datenbasis 124 während der Transaktion blieben. Wenn dies der Fall ist, so übergibt der Transaktions-Manager 128 die Transaktion. Andernfalls spielt der Transaktions-Manager 128 die Transaktion zurück.
- Wenn es Zeit ist die Änderungen an die Datenbasis 124 zu übergeben, ist der erste Schritt, welcher vom Transaktions-Manager 128 durchgeführt wird jener, dass er bestimmt welche Spalten in dem Cache 130 durch die Transaktion (Operation 200) mit neuen Daten versorgt wurden. Um dies zu erreichen cacht der Transaktions- Manager 128 zu Beginn der Transaktion die individuellen Werte der Spalten, von welchen die Transaktion auszuführen ist, und vergleicht nun diese Werte mit den aktuellen Werten der Spalten in dem Cache 130; Spalten die nicht den selben Wert aufweisen wurden in dem Cache 130 mit überarbeiteten Daten beschrieben.
- Als nächstes selektiert der Transaktions-Manager 128 eine Verriegelungsgruppe (Operation 202) und bestimmt, ob irgendeine der Spalten der Verriegelungsgruppe iri dem Cache 130 während der Transaktion (Operation 204) mit neuen Daten überschrieben wurde. Sofern eine der Spalten der Verriegelungsgruppe geändert wurde, werden alle der Spalten von dieser Verriegelungsgruppe an die Hash-Tabelle 122 (Operation 206) hinzugefügt, und wenn es mehrere Verriegelungsgruppen in diesem Prozess gibt (Operation 208) so folgt dieser Prozessabfolge in die Operation 202. Andernfalls wurde die Hash-Tabelle 122 mit Spalten aus der Verriegelungsgruppe gefüllt, welche sich verändert haben, und der Transaktions- Manager 128 selektiert eine Spalte aus der Hash-Tabelle (Operation 210). Der Transaktions-Manager 128 bestimmt dann ob die Werte der Datenbasis für diese Spalte sich in der Datenbasis 124 während des Prozesses der Transaktion (Operation 212) verändert haben. Um diese Bestimmung durchzuführen vergleicht der Transaktions-Manager 128 welcher Wert der Datenbasis für die Spalte zu Beginn der Transaktion gegeben war mit dem Wert der Datenbasis für die Spalte am Ende der Transaktion (Übergabe-Zeit). In der Wertdatenbasis für die Spalte die sich in der Datenbasis 124 während der Transaktion verändert hat, spiegelt der Transaktions-Manager 128 die Transaktion durch Abbruch zurück (Operation 214). Wenn sich jedoch der Wert nicht geändert hat, wird eine andere Spalte ausgewählt (Operation 216). Wenn keine der Spalten in der Hash-Tabelle 122 Werte aufweist die in der Datenbasis 124 während der Transaktion verändert wurden, übergibt der Transaktions-Manager 128 die Transaktion und überschreibt dann die Spalten in der Datenbasis basierend auf den Werten der Spalten in dem Cash 130 (Operation 218).
- Zum Beispiel kann eine Kundentabelle aus Spalten Nachname, Vorname, Straße, Stadt, Bezirksnummer, Postleitzahl, Telefonnummer und Verkaufsberater bestehen. Es würde keinen Sinn machen eine Verriegelungsgruppe zu definieren, welche beides beinhaltet, Familienname und Verkaufsberater, da in den meisten Umgebungen Änderungen an den Werten dieser beiden Spalten unabhängig voneinander sein würden (wenn jedoch ein Kunde einem Verkaufsberater zugeordnet wäre, lediglich basierend auf dem Familiennamen, dann würden diese Spalten voneinander abhängig sein).
- Da jedoch die Adress-Komponenten Straße, Stadt, Bezirks-Code, Postleitzahl und Telefonnummer in Wechselbeziehung stehen, sollten diese zusammen in einer Verriegelungsgruppe angeordnet werden. Wenn diese Informationen in der selben Verriegelungsgruppe vorhanden sind wird sichergesellt, dass, wenn zwei Klienten simultan Adressinformationen für den selben Kunden mit neuen Informationen versehen, dass ein Klient nicht die Telefonnummer mit neuen Daten versehen würde während der andere Klient die Postleitzahl dieses Kunden mit neuen Daten versehen würde. Es können jedoch zwei Prozesse simultan dieselbe Kundentabelle mit geänderten Daten beschreiben wenn sichergestellt ist, dass die Daten auf die sie zugreifen nicht in der selben Verriegelungsgruppe sind, wodurch der parallele Zugriff verbessert wird. So kann dieselbe Spalte in mehreren Verriegelungsgruppen aufscheinen, im obigen Beispiel, könnte die Postleitzahl sowohl in der Telefon- als auch in der Adress-Verriegelungsgruppe aufscheinen.
- Die Fig. 3 illustriert mehrfache Transaktionen, zugreifend auf dieselbe Tabelle, verwendend Verriegelungsgruppen in einer optimistischen Parallelsteuerungs- Situation in Zusammenhang mit den Verfahren und Systemen in Übereinstimmung mit der vorliegenden Erfindung. In diesem Beispiel hat meine KUNDENTABELLE sechs Daten-Mitglieder, aufgeteilt in drei Verriegelungsgruppen (Telefon, Adresse und Kundenname). Vier Transaktionen (T1 bis T4) greifen simultan auf unterschiedliche Attribute in dem selben, meine KUNDENTABELLE Beispiel zu. Die Transaktion T1 modifiziert zwei Attribute - Stadt und Straße - während die Transaktion T2 Familienname modifiziert. Sie beenden beide den Vorgang, da T1 die Daten übergibt bevor jegliche Änderungen durch eine der anderen Transaktionen übergeben wurden, und keine der Spalten durch T1 modifiziert wurden, welche zu einer der Verriegelungsgruppen gehören, welche die Spalten beinhalten die durch T2 modifiziert werden.
- Das System lässt jedoch die Transaktion T3 und seine Modifikationen bezüglich der Postleitzahl nicht vollenden, da andere Attribute in der Verriegelungsgruppe Adresse verändert wurden nachdem T3 die Postleitzahl ausgelesen hat, jedoch bevor diese ihre Modifikationen beendet hat. Diese Änderungen wurden an die Datenbasis 124 durch T1 übergeben.
- Man beachte, dass das System T4 erlaubt die Daten zu übergeben, da keine konfliktbegründenden Änderungen gegeben sind. Wenn T4 versucht hat die Postleitzahl zu verändern, wäre ein Konflikt aufgetreten, da Postleitzahl zu der Verriegelungsgruppe Adresse und Telefon gehört und T1 bereits andere Attribute verändert hat, welche zu Adresse gehören.
- Die Transaktion T3 und die Transaktion T4 haben potentiell einen Konflikt, aufgrund der Modifikationen in den Attributen in der Verriegelungsgruppe Telefon, welche die Attribute Postleitzahl und Telefonnummer aufweist. T4 kann seine Änderungen an Telefonnummer übergeben, da die Werte der Datenbasis für die Attribute in der Verriegelungsgruppe Telefon von da an unverändert bleiben, wenn T4 diese ausgelesen hat - in Bezug auf T3's missglückten Versuch der Modifikation Postleitzahl. Hätte jedoch T3 Erfolg gehabt, dann wäre T4 fehl geschlagen.
- Verfahren und Systeme in Übereinstimmung mit der vorliegenden Erfindung erlauben es einer Verriegelungsgruppe individuelle Spalten von unterschiedlichen Tabellen zu beinhalten. Sie erlauben es ebenfalls einer Spalte in einer Tabelle mehr als einer Verriegelungsgruppe zugehörig zu sein. Dies gestattet Transaktionen mit parallelem Zugriff auf eine einzelne Tabelle in der Datenbasis, wenn die individuellen Spalten der Verriegelungsgruppe sich nicht überlappen. Der parallele Zugriff auf eine einzelne Tabelle in der Datenbasis hebt die generelle Effizienz bezüglich der Datenverarbeitung durch die Reduzierung der Wartezeit bezüglich des Zurückspielens von Transaktionen und der Wartezeit bezüglich des Wartens darauf das eine Tabelle von einer Verriegelungsgruppe wieder freigegeben wird.
- Die vorangehende Beschreibung einer Implementation der Erfindung wurde zum Zwecke der Illustration und Beschreibung gegeben. Sie ist nicht erschöpfend und beschränkt die Erfindung nicht auf die genaue, offenbarte Ausführungsform. Modifikationen und Variationen sind möglich im Sinne der technischen Lehre oder durch die Aneignung des Wissens bezüglich der vorliegenden Erfindung. Der Bereich der Erfindung wird durch die Ansprüche und deren Äquivalente definiert. Fig. 1 Fig. 2 Fig. 3
Claims (17)
1. Ein operatives Verfahren in einem Daten-Verarbeitungs-System (100), welches
eine Datenbasis (124) aufweist und Klassen mit Feldern, wobei das Verfahren
beinhaltet:
Eingang einer Anzeige von einer Verriegelungsgruppe spezifizierend, dass die
Verriegelungsgruppe beinhaltet ein erstes Feld einer ersten Klasse und ein
zweites Feld einer zweiten Klasse;
generieren der spezifizierten Verriegelungsgruppe;
Eingang einer Anfrage über die Festlegung einer Transaktion an die Datenbasis
(124) betreffend einen Wert für eines der Felder in der Verriegelungsgruppe;
und,
Feststellung ob das Festlegen der Transaktion an die Datenbasis (124), basierend
darauf ob wenigstens eines der Felder der Verriegelungsgruppe durch eine
weitere Transaktion während der Transaktion modifiziert wurde, erfolgte.
2. Das Verfahren nach Anspruch 1, wobei die Feststellung weiters beinhaltet:
den Abbruch der Transaktion wenn wenigstens eines der Felder der
Verriegelungsgruppe während der Transaktion modifiziert wurde.
3. Das Verfahren nach Anspruch 1, wobei die Feststellung weiters beinhaltet:
Festlegung der Transaktion wenn die Felder der Verriegelungsgruppe während der
Transaktion nicht verändert wurden.
4. Das Verfahren nach Anspruch 1, wobei die Klasse eine Tabelle ist und die
Felder Spalten, und wobei der Eingang weiters beinhaltet:
Eingang einer Anzeige von einer Verriegelungsgruppe, spezifizierend, dass die
Verriegelungsgruppe beinhaltet eine erste Spalte einer ersten Tabelle und eine
zweite Spalte einer zweiten Tabelle.
5. Ein operatives Verfahren in einem Daten-Verarbeitungs-System (100), welches
eine Datenbasis (124) und eine Klasse mit Feldern aufweist, wobei das
Verfahren beinhaltet:
Eingang einer Anzeige von zwei Verriegelungsgruppen spezifizierend, dass sich die
beiden Verriegelungsgruppen ein erstes dieser Felder teilen;
generieren der spezifizieren Verriegelungsgruppen;
Eingang und Anfrage über die Festlegung der Transaktion an die Datenbasis (124)
betreffend einen Wert eines zweiten der Felder in einer der
Verriegelungsgruppen; und
Feststellung ob das Festlegen der Transaktion, darauf basierend ob wenigstens
eines der Felder in einer der Verriegelungsgruppen während der Transaktion
modifiziert wurde, erfolgte.
6. Das Verfahren nach Anspruch 5, wobei die Feststellung weiter beinhaltet:
Abbruch der Transaktion wenn wenigstens eines der Felder einer der
Verriegelungsgruppen während der Transaktion modifiziert wurde.
7. Verfahren nach Anspruch 5, wobei die Entscheidung weiter beinhaltet:
Festlegung der Transaktion wenn die Felder der einen der Verriegelungsgruppe
während der Transaktion nicht verändert wurden.
8. Ein operatives Verfahren in einem Daten-Verarbeitungs-System (100)
aufweisend Verriegelungsgruppen, eine Datenbasis (124) mit Datenbasis-
Klassen und eine Hash-Tabelle (122), wobei das Verfahren beinhaltet:
Generieren einer ersten Verriegelungsgruppe mit Feldern verschiedener Datenbasis-
Klassen;
Einleitung einer Transaktion durch einen Client, so dass wenigstens eines der Felder
in der ersten Verriegelungsgruppe mit einem neuen Dateneintrag versehen wird;
Eingang einer Anfrage für die Festlegung einer Transaktion, weiters beinhaltend die
Schritte:
Feststellung welches der Felder bei der Transaktion mit einem neuen
Dateneintrag versehen wurde;
Feststellung welche der Verriegelungsgruppen die mit neuen Dateneinträgen
versehenen Felder beinhalten;
hinzufügen damit neuen Dateneinträgen versehenen Felder der festgestellten
Verriegelungsgruppen in die Hash-Tabelle (122);
Feststellung ob die dazuaddierten Felder in der Datenbasis (124) mit neuen
Dateneinträgen durch einen anderen Client während der Transaktion
versehen wurden;
Abbrechen der Transaktion wenn festgestellt wurde, dass wenigstens eines der
hinzugefügten Felder in der Datenbasis (124) durch einen anderen Client
während der Transaktion mit einem neuen Dateneintrag versehen wurde; und
festlegen der Transaktion wenn festgestellt wurde, dass die hinzugefügten
Felder in der Datenbasis (124) während der Transaktion unverändert blieben.
9. Ein Daten-Verarbeitungs-System (100) beinhaltend Verriegelungsgruppen, eine
Datenbasis (124) mit einer Datenbasis-Klasse und einer Hash-Tabelle (122),
wobei das Daten-Verarbeitungs-System (100) beinhaltet:
Mittel zur Generierung einer ersten Verriegelungsgruppe mit Feldern aus
verschiedenen Datenbasis-Klassen;
Mittel für die Einleitung einer Transaktion durch einen Client, so dass wenigstens
eines der Felder in den Verriegelungsgruppen mit einem neuen Dateneintrag
versehen werden kann;
Mittel für den Eingang einer Anfrage zur Festlegung einer Transaktion; weiters
beinhaltend:
Mittel zur Feststellung, welches der Felder während der Transaktion mit neuen
Dateneinträgen versehen wurde;
Mittel zur Feststellung, welche der Verriegelungsgruppen die mit neuen
Dateneinträgen versehenen Felder beinhaltet;
Mittel für die Hinzufügung der mit neuen Dateneinträgen versehenen Felder der
festgestellten Verriegelungsgruppen zu der Hash-Tabelle (122);
Mittel zum Feststellen ob die hinzugefügten Felder in der Datenbasis (124) durch
einen anderen Client während der Transaktion mit neuen Dateneinträgen
versehen wurden;
Mittel für den Abbruch der Transaktion wenn festgestellt wurde, dass wenigstens
eines der Felder durch einen anderen Client während der Transaktion in der
Datenbasis (124) mit neuen Dateneinträgen versehen wurde; und
Mittel für die Festlegung der Transaktion wenn festgestellt wurde, dass die
hinzugefügten Felder in der Datenbasis (124) während der Transaktion
unverändert geblieben sind.
10. Ein computer-lesbares Medium beinhaltend Instruktionen für die Überwachung
eines Daten-Verarbeitungs-Systems (100) zur Durchführung eines Verfahrens,
das Daten-Verarbeitungs-System (100), aufweisend eine Datenbasis (124) und
Klassen mit Feldern, wobei das Verfahren beinhaltet:
Eingang einer Anzeige einer Verriegelungsgruppe, spezifizierend dass die
Verriegelungsgruppe beinhaltet ein erstes Feld einer ersten Klasse und ein
zweites Feld einer zweiter Klasse;
Generierung der spezifizierten Verriegelungsgruppe;
Eingang einer Anfrage zur Festlegung einer Transaktion an die Datenbasis (124)
betreffend einen Wert für eines der Felder in der Verriegelungsgruppe; und
Feststellung ob die Festlegung der Transaktion an die Datenbasis (124), darauf
basiert ob wenigstens eines der Felder in der Verriegelungsgruppe während der
Transaktion durch eine andere Transaktion modifiziert wurde, erfolgte.
11. Das computer-lesbare Medium aus Anspruch 10, wobei der Schritt für die
Feststellung in dem Verfahren weiters beinhaltet:
Abbruch der Transaktion wenn wenigstens eines der Felder der
Verriegelungsgruppe während der Transaktion modifiziert wurde.
12. Das computer-lesbare Medium aus Anspruch 10, wobei der Schritt für die
Feststellung in dem Verfahren weiters beinhaltet.
Eine Festlegung der Transaktion wenn die Felder der Verriegelungsgruppe während
der Transaktion unverändert blieben.
13. Ein computer-lesbares Medium beinhaltend Instruktionen für die Überwachung
eines Daten-Verarbeitungs-System (100) zur Durchführung eines Verfahrens,
das Daten-Verarbeitungs-System (100), beinhaltend eine Datenbasis (124) und
Klassen mit Feldern, wobei das Verfahren beinhaltet:
Eingang einer Anzeige von zwei Verriegelungsgruppen, Spezifizierung dass die zwei
Verriegelungsgruppen sich ein erstes der Felder teilen;
Generierung der spezifizierten Verriegelungsgruppen;
Eingang einer Anfrage zur Festlegung einer Transaktion an die Datenbasis (124)
betreffend einen Wert eines zweiten der Felder in einer der
Verriegelungsgruppen; und
feststellen ob die Festlegung der Transaktion darauf basiert ob wenigstens eines der
Felder in der Verriegelungsgruppe während der Transaktion modifiziert wurde.
14. Das Computerlesbare Medium aus Anspruch 13, worin der Schritt für die
Feststellung in dem Verfahren weiters beinhaltet:
Abbruch der Transaktion wenn wenigstens eines der Felder der einen
Verriegelungsgruppe während der Transaktion modifiziert wurde.
15. Das Verfahren nach Anspruch 13, wobei der Schritt für die Feststellung weiters
beinhaltet:
Festlegung der Transaktion wenn die Felder der einen der Verriegelungsgruppen
während der Transaktion unverändert blieben.
16. Ein Daten-Verarbeitungs-System (100) beinhaltend:
Eine sekundäre Speicher-Vorrichtung (110) mit einer Datenbasis (124) beinhaltend
Klassen mit Feldern;
einen Speicher (106) weiters beinhaltend:
einen Transaktions-Manager (128) konfiguriert um eine Definition einer
Verrieglungsgruppe zu erhalten, welche ein Feld in einer ersten Klasse und
ein Feld in zweiten Klasse beinhaltet, konfiguriert um von einem Client eine
Anfrage zu erhalten zur Festlegung einer Transaktion worin ein erstes der
Felder der Verriegelungsgruppe modifiziert ist, und konfiguriert um die
Transaktion abzubrechen, wenn ein zweites der Felder der
Verriegelungsgruppe in der Datenbasis (124) durch einen anderen Clienten
während der Transaktion verändert wurde; und
ein Prozessor (104) für den Betrieb des Transaktions-Managers (128).
17. Ein Daten-Verarbeitungs-System (100) beinhaltend:
eine sekundäre Speicher-Vorrichtung (110) mit einer Datenbasis (124) beinhaltend
Klassen mit Feldern:
einen Speicher (106) weiters beinhaltend:
einen Transaktions-Manager (128) konfiguriert um eine Definition von zwei
Verriegelungsgruppen zu erhalten, welche sich ein erstes der Felder teilen,
konfiguriert um von einem Clienten eine Anfrage zu erhalten zur Festlegung
einer Transaktion worin ein zweites der Felder einer der beiden
Verriegelungsgruppen modifiziert wurde, und konfiguriert um die Transaktion
abzubrechen wenn ein drittes der Felder der einen Verriegelungsgruppe,
beinhaltend das zweite der Felder, in der Datenbasis (124) durch einen
anderen Client während der Transaktion verändert wurde; und
ein Prozessor (104) konfiguriert um den Transaktions-Manager (128) zu betreiben.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US6841597P | 1997-12-22 | 1997-12-22 | |
| US09/106,119 US6240413B1 (en) | 1997-12-22 | 1998-06-29 | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
| PCT/US1998/027242 WO1999033001A1 (en) | 1997-12-22 | 1998-12-21 | A fine-grained consistency mechanism for optimistic concurrency control using lock groups |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE69802437D1 DE69802437D1 (de) | 2001-12-13 |
| DE69802437T2 true DE69802437T2 (de) | 2002-08-08 |
Family
ID=26748953
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE69802437T Expired - Fee Related DE69802437T2 (de) | 1997-12-22 | 1998-12-21 | Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US6240413B1 (de) |
| EP (1) | EP1040433B1 (de) |
| JP (1) | JP2001527242A (de) |
| AU (1) | AU1938899A (de) |
| DE (1) | DE69802437T2 (de) |
| WO (1) | WO1999033001A1 (de) |
Families Citing this family (82)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2279051C (en) * | 1999-07-29 | 2004-12-28 | Ibm Canada Limited-Ibm Canada Limitee | Method and system for improving concurrency through early release of unnecessary locks |
| US7039860B1 (en) * | 1999-10-01 | 2006-05-02 | Netspinner Solutions As | Creating web pages category list prior to the list being served to a browser |
| JP2003524259A (ja) * | 2000-02-22 | 2003-08-12 | メタカルタ インコーポレイテッド | 情報の空間符号化及び表示 |
| DE10047216A1 (de) * | 2000-09-23 | 2002-04-11 | Philips Corp Intellectual Pty | Ein Verfahren zur Erkennung von Schreibkonflikten in replizierten Datenbanken ohne Speicheroverhead |
| JP3673189B2 (ja) * | 2001-05-21 | 2005-07-20 | 株式会社東芝 | 書き込み制御方法および構造化文書管理装置および構造化文書編集装置およびプログラム |
| US7020684B2 (en) * | 2002-01-18 | 2006-03-28 | Bea Systems, Inc. | System and method for optimistic caching |
| US6898587B2 (en) | 2002-01-18 | 2005-05-24 | Bea Systems, Inc. | System and method for performing commutative operations in data access systems |
| US6877014B1 (en) * | 2002-01-30 | 2005-04-05 | Oracle International Corporation | Method and apparatus to facilitate transactional consistency for references in object-relational databases |
| US20030233632A1 (en) * | 2002-06-12 | 2003-12-18 | Lockheed Martin Corporation | Automatically generated client application source code using database table definitions |
| US7155429B2 (en) * | 2002-07-09 | 2006-12-26 | Bridgelogix Corporation | Method, apparatus and article of manufacture to aggregate automated transaction procession |
| US7257705B2 (en) * | 2002-11-18 | 2007-08-14 | Sparta Systems, Inc. | Method for preserving changes made during a migration of a system's configuration to a second configuration |
| US7010655B1 (en) | 2003-03-24 | 2006-03-07 | Veritas Operating Corporation | Locking and memory allocation in file system cache |
| US20040230893A1 (en) * | 2003-05-16 | 2004-11-18 | Dethe Elza | Method and system for enabling collaborative authoring of hierarchical documents with node privileges |
| US7788288B1 (en) | 2004-11-01 | 2010-08-31 | At&T Corp. | Method for distributed configuration and file distribution based on centralized data |
| US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
| US7502843B2 (en) * | 2004-12-30 | 2009-03-10 | Microsoft Corporation | Server queuing system and method |
| US7523110B2 (en) * | 2005-03-03 | 2009-04-21 | Gravic, Inc. | High availability designated winner data replication |
| US20060242104A1 (en) * | 2005-04-21 | 2006-10-26 | Microsoft Corporation | Systems and methods for manipulating data in a data storage system |
| WO2007002800A2 (en) | 2005-06-28 | 2007-01-04 | Metacarta, Inc. | User interface for geographic search |
| US7702658B2 (en) * | 2006-01-27 | 2010-04-20 | International Business Machines Corporation | Method for optimistic locking using SQL select, update, delete, and insert statements |
| US7461065B2 (en) * | 2006-01-31 | 2008-12-02 | International Business Machines Corporation | Method and system for utilizing shared numeric locks |
| JP2009526327A (ja) * | 2006-02-10 | 2009-07-16 | メタカータ・インコーポレーテッド | メディアオブジェクトについての空間サムネイルおよびコンパニオンマップのためのシステムおよび方法 |
| US7647296B2 (en) * | 2006-03-15 | 2010-01-12 | International Business Machines Corporation | Method for estimating a first access time of transactions accessing a database object |
| US7933881B2 (en) * | 2006-03-17 | 2011-04-26 | Microsoft Corporation | Concurrency control within an enterprise resource planning system |
| US20080010273A1 (en) * | 2006-06-12 | 2008-01-10 | Metacarta, Inc. | Systems and methods for hierarchical organization and presentation of geographic search results |
| US7698273B2 (en) * | 2006-06-23 | 2010-04-13 | Microsoft Corporation | Solving table locking problems associated with concurrent processing |
| US20080065685A1 (en) * | 2006-08-04 | 2008-03-13 | Metacarta, Inc. | Systems and methods for presenting results of geographic text searches |
| US9721157B2 (en) * | 2006-08-04 | 2017-08-01 | Nokia Technologies Oy | Systems and methods for obtaining and using information from map images |
| US20080140348A1 (en) * | 2006-10-31 | 2008-06-12 | Metacarta, Inc. | Systems and methods for predictive models using geographic text search |
| US9286404B2 (en) * | 2006-06-28 | 2016-03-15 | Nokia Technologies Oy | Methods of systems using geographic meta-metadata in information retrieval and document displays |
| US7895582B2 (en) | 2006-08-04 | 2011-02-22 | Microsoft Corporation | Facilitating stack read and write operations in a software transactional memory system |
| US7434010B2 (en) * | 2006-08-04 | 2008-10-07 | Microsoft Corporation | Combined pessimistic and optimisitic concurrency control |
| WO2008019348A2 (en) * | 2006-08-04 | 2008-02-14 | Metacarta, Inc. | Systems and methods for presenting results of geographic text searches |
| US8601456B2 (en) * | 2006-08-04 | 2013-12-03 | Microsoft Corporation | Software transactional protection of managed pointers |
| US7941411B2 (en) * | 2007-06-29 | 2011-05-10 | Microsoft Corporation | Memory transaction grouping |
| US8489566B2 (en) * | 2008-04-08 | 2013-07-16 | International Business Machines Corporation | Optimistic locking in online and offline environments |
| US8255373B2 (en) * | 2008-10-24 | 2012-08-28 | Microsoft Corporation | Atomic multiple modification of data in a distributed storage system |
| US9996572B2 (en) * | 2008-10-24 | 2018-06-12 | Microsoft Technology Licensing, Llc | Partition management in a partitioned, scalable, and available structured storage |
| JP4702962B2 (ja) * | 2008-11-12 | 2011-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ制御装置、プログラム及び方法 |
| US8121980B2 (en) * | 2009-02-13 | 2012-02-21 | Microsoft Corporation | Transactional record manager |
| US8799572B2 (en) | 2009-04-20 | 2014-08-05 | Microsoft Corporation | Sliding-window multi-class striping |
| US9411634B2 (en) | 2010-06-21 | 2016-08-09 | Microsoft Technology Licensing, Llc | Action framework in software transactional memory |
| US8719515B2 (en) | 2010-06-21 | 2014-05-06 | Microsoft Corporation | Composition of locks in software transactional memory |
| US8386421B2 (en) | 2010-06-28 | 2013-02-26 | Microsoft Corporation | Concurrency control for confluent trees |
| US8412689B2 (en) * | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
| US9848106B2 (en) | 2010-12-21 | 2017-12-19 | Microsoft Technology Licensing, Llc | Intelligent gameplay photo capture |
| US8745016B2 (en) | 2011-06-17 | 2014-06-03 | International Business Machines Corporation | Managing concurrent access to data in database system |
| US8930330B1 (en) | 2011-06-27 | 2015-01-06 | Amazon Technologies, Inc. | Validation of log formats |
| CN103853527A (zh) | 2012-11-29 | 2014-06-11 | 国际商业机器公司 | 切换多线程程序中的对象锁定模式的方法和系统 |
| US9501501B2 (en) | 2013-03-15 | 2016-11-22 | Amazon Technologies, Inc. | Log record management |
| US11030055B2 (en) | 2013-03-15 | 2021-06-08 | Amazon Technologies, Inc. | Fast crash recovery for distributed database systems |
| US9514007B2 (en) | 2013-03-15 | 2016-12-06 | Amazon Technologies, Inc. | Database system with database engine and separate distributed storage service |
| US9672237B2 (en) | 2013-03-15 | 2017-06-06 | Amazon Technologies, Inc. | System-wide checkpoint avoidance for distributed database systems |
| US10180951B2 (en) | 2013-03-15 | 2019-01-15 | Amazon Technologies, Inc. | Place snapshots |
| US10747746B2 (en) | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
| US9317213B1 (en) | 2013-05-10 | 2016-04-19 | Amazon Technologies, Inc. | Efficient storage of variably-sized data objects in a data store |
| US9760596B2 (en) | 2013-05-13 | 2017-09-12 | Amazon Technologies, Inc. | Transaction ordering |
| US9208032B1 (en) | 2013-05-15 | 2015-12-08 | Amazon Technologies, Inc. | Managing contingency capacity of pooled resources in multiple availability zones |
| US10303564B1 (en) | 2013-05-23 | 2019-05-28 | Amazon Technologies, Inc. | Reduced transaction I/O for log-structured storage systems |
| US9305056B1 (en) | 2013-05-24 | 2016-04-05 | Amazon Technologies, Inc. | Results cache invalidation |
| US9047189B1 (en) | 2013-05-28 | 2015-06-02 | Amazon Technologies, Inc. | Self-describing data blocks of a minimum atomic write size for a data store |
| US9460008B1 (en) | 2013-09-20 | 2016-10-04 | Amazon Technologies, Inc. | Efficient garbage collection for a log-structured data store |
| US10216949B1 (en) | 2013-09-20 | 2019-02-26 | Amazon Technologies, Inc. | Dynamic quorum membership changes |
| US9519664B1 (en) | 2013-09-20 | 2016-12-13 | Amazon Technologies, Inc. | Index structure navigation using page versions for read-only nodes |
| US9280591B1 (en) | 2013-09-20 | 2016-03-08 | Amazon Technologies, Inc. | Efficient replication of system transactions for read-only nodes of a distributed database |
| US9507843B1 (en) | 2013-09-20 | 2016-11-29 | Amazon Technologies, Inc. | Efficient replication of distributed storage changes for read-only nodes of a distributed database |
| US9552242B1 (en) | 2013-09-25 | 2017-01-24 | Amazon Technologies, Inc. | Log-structured distributed storage using a single log sequence number space |
| US10223184B1 (en) | 2013-09-25 | 2019-03-05 | Amazon Technologies, Inc. | Individual write quorums for a log-structured distributed storage system |
| US9699017B1 (en) | 2013-09-25 | 2017-07-04 | Amazon Technologies, Inc. | Dynamic utilization of bandwidth for a quorum-based distributed storage system |
| US9760480B1 (en) | 2013-11-01 | 2017-09-12 | Amazon Technologies, Inc. | Enhanced logging using non-volatile system memory |
| US10387399B1 (en) | 2013-11-01 | 2019-08-20 | Amazon Technologies, Inc. | Efficient database journaling using non-volatile system memory |
| US9880933B1 (en) | 2013-11-20 | 2018-01-30 | Amazon Technologies, Inc. | Distributed in-memory buffer cache system using buffer cache nodes |
| US9223843B1 (en) | 2013-12-02 | 2015-12-29 | Amazon Technologies, Inc. | Optimized log storage for asynchronous log updates |
| US9971627B2 (en) | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
| WO2015162717A1 (ja) * | 2014-04-23 | 2015-10-29 | 株式会社日立製作所 | 計算機 |
| CN104021145B (zh) * | 2014-05-16 | 2018-03-06 | 华为技术有限公司 | 一种混合业务并发访问的方法和装置 |
| US10303663B1 (en) | 2014-06-12 | 2019-05-28 | Amazon Technologies, Inc. | Remote durable logging for journaling file systems |
| US10282228B2 (en) * | 2014-06-26 | 2019-05-07 | Amazon Technologies, Inc. | Log-based transaction constraint management |
| US9916343B2 (en) * | 2015-04-02 | 2018-03-13 | International Business Machines Corporation | Efficient tracking of an alternate global update and read values using exception lists |
| US10825080B2 (en) * | 2017-04-27 | 2020-11-03 | Target Brands, Inc. | Item database creation based on negotiated values |
| US11914571B1 (en) | 2017-11-22 | 2024-02-27 | Amazon Technologies, Inc. | Optimistic concurrency for a multi-writer database |
| US11341163B1 (en) | 2020-03-30 | 2022-05-24 | Amazon Technologies, Inc. | Multi-level replication filtering for a distributed database |
Family Cites Families (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4589092A (en) * | 1983-12-12 | 1986-05-13 | International Business Machines Corporation | Data buffer having separate lock bit storage array |
| US5043876A (en) * | 1988-05-27 | 1991-08-27 | International Business Machines Corporation | N-level file shadowing and recovery in a shared file system |
| US5261069A (en) * | 1990-08-13 | 1993-11-09 | Hewlett-Packard Company | Method of maintaining consistency of cached data in a database system |
| EP0472812B1 (de) | 1990-08-28 | 1998-05-06 | Landis & Gyr Technology Innovation AG | Verfahren zum Aendern einer in einem Computer eines Gerätes abgespeicherten Maschinensprachenfassung eines ersten Programms in eine Maschinensprachenfassung eines durch mindestens eine Aenderung vom ersten Programm abgeleiteten zweiten Programms |
| US5291583A (en) | 1990-12-14 | 1994-03-01 | Racal-Datacom, Inc. | Automatic storage of persistent ASN.1 objects in a relational schema |
| US5263155A (en) * | 1991-02-21 | 1993-11-16 | Texas Instruments Incorporated | System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks |
| US5301297A (en) * | 1991-07-03 | 1994-04-05 | Ibm Corp. (International Business Machines Corp.) | Method and means for managing RAID 5 DASD arrays having RAID DASD arrays as logical devices thereof |
| US5596746A (en) | 1991-10-21 | 1997-01-21 | General Electric Company | Method for transforming relational data base schemas into object models using ideal table meta models |
| US5280612A (en) * | 1991-11-26 | 1994-01-18 | International Business Machines Corporation | Multiple version database concurrency control system |
| WO1995003586A1 (en) | 1993-07-21 | 1995-02-02 | Persistence Software, Inc. | Method and apparatus for generation of code for mapping relational data to objects |
| WO1995004960A2 (en) | 1993-08-02 | 1995-02-16 | Persistence Software, Inc. | Method and apparatus for managing relational data in an object cache |
| US5774731A (en) * | 1995-03-22 | 1998-06-30 | Hitachi, Ltd. | Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage |
| US5835910A (en) * | 1994-11-10 | 1998-11-10 | Cadis, Inc. | Method and system for comparing attributes in an object-oriented management system |
| US5742813A (en) * | 1994-11-10 | 1998-04-21 | Cadis, Inc. | Method and apparatus for concurrency in an object oriented database using lock inheritance based on class objects |
| US5574882A (en) * | 1995-03-03 | 1996-11-12 | International Business Machines Corporation | System and method for identifying inconsistent parity in an array of storage |
| US5717924A (en) | 1995-07-07 | 1998-02-10 | Wall Data Incorporated | Method and apparatus for modifying existing relational database schemas to reflect changes made in a corresponding object model |
| US5812134A (en) | 1996-03-28 | 1998-09-22 | Critical Thought, Inc. | User interface navigational system & method for interactive representation of information contained within a database |
| US5857197A (en) | 1997-03-20 | 1999-01-05 | Thought Inc. | System and method for accessing data stores as objects |
| US5937409A (en) | 1997-07-25 | 1999-08-10 | Oracle Corporation | Integrating relational databases in an object oriented environment |
| US5983020A (en) | 1997-10-02 | 1999-11-09 | International Business Machines Corporation | Rule-based engine for transformation of class hierarchy of an object-oriented program |
-
1998
- 1998-06-29 US US09/106,119 patent/US6240413B1/en not_active Expired - Lifetime
- 1998-12-21 JP JP2000525837A patent/JP2001527242A/ja active Pending
- 1998-12-21 AU AU19388/99A patent/AU1938899A/en not_active Abandoned
- 1998-12-21 WO PCT/US1998/027242 patent/WO1999033001A1/en not_active Ceased
- 1998-12-21 DE DE69802437T patent/DE69802437T2/de not_active Expired - Fee Related
- 1998-12-21 EP EP98964209A patent/EP1040433B1/de not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| DE69802437D1 (de) | 2001-12-13 |
| US6240413B1 (en) | 2001-05-29 |
| EP1040433B1 (de) | 2001-11-07 |
| EP1040433A1 (de) | 2000-10-04 |
| WO1999033001A1 (en) | 1999-07-01 |
| JP2001527242A (ja) | 2001-12-25 |
| AU1938899A (en) | 1999-07-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69802437T2 (de) | Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen | |
| DE69615230T2 (de) | Relationales Datenbanksystem und Verfahren mit grosser Verfügbarkeit der Daten bei der Umstrukturierung von Tabellendaten | |
| DE69533786T2 (de) | Vorrichtung zum Erzeugen von objektorientierten Schnittstellen für relationale Datenbanken und von dieser Vorrichtung durchgeführtes Verfahren | |
| DE69626377T2 (de) | Vorrichtung, Verfahren, Speichermedium und computerlesbare Module zur raumeffizienten Objektverriegelung | |
| DE69128367T2 (de) | System und Verfahren zur Transaktionsbearbeitung mit verminderter Verriegelung | |
| DE3781577T2 (de) | Verwaltung der groesse und der anzahl der den prozessen zugeordneten speichersegmente in einer konfiguration fuer mehrfachverarbeitung. | |
| DE69126067T2 (de) | Verfahren und Gerät zur Verwaltung von Zustandsidentifizierern zur effizienten Wiederherstellung | |
| DE3854667T2 (de) | Datenbasissystem mit einer Baumstruktur. | |
| DE69618131T2 (de) | Anordnung und Verfahren zur Betriebsmittelverwaltung von verteilten Objekten | |
| DE3689664T2 (de) | Verfahren und Gerät zur Verwaltung von veralteten Datenobjekten. | |
| DE69615231T2 (de) | Relationales Datenbanksystem und Verfahren mit grosser Kompilierverfügbarkeit von SQL-Programmen | |
| DE69032337T2 (de) | Multiprozessorsystem verwendendes Datenbasisverarbeitungssystem | |
| DE69126066T2 (de) | Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs | |
| DE69222169T2 (de) | Verfahren und vorrichtung zur datenerholung in mehrstufigen datenbanksystemen | |
| DE3853460T2 (de) | Raumverwaltungsanordnung für das Datenzugriffssystem eines Dateizugriffsprozessors. | |
| DE69528338T2 (de) | Verfahren zur Verwaltung von schwachkonsistenten replizierten Datenbanken | |
| DE68916486T2 (de) | Verfahren zur Durchführung von Operationen in einem relationalen Datenbankverwaltungssystem. | |
| DE112005002402B4 (de) | Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs | |
| DE19926115B4 (de) | Transaktionshandhabung in einer Konfigurationsdatenbank | |
| DE69129678T2 (de) | Verfahren und System für eine konsequente Zeitfestlegung in verteilten Rechnerdatenbanken | |
| DE4420451C2 (de) | Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell | |
| DE60130420T2 (de) | Vorrichtung und Verfahren zur Aufrechterhaltung einer verknüpften Liste | |
| DE69032685T2 (de) | Verfahren und system mit einem cache für offene dateien in einem netzwerkrechnersystem | |
| DE69322064T2 (de) | Verfahren und System zur Zuteilung mehrerer Befehle in einem superskalaren Prozessorsystem in einem einzigen Zyklus | |
| DE69112694T2 (de) | Verfahren zum Betrieb eines Datenverarbeitungssystems zur Ausführung von Datenbanktransaktionen. |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |