DE102013204521B4 - Transaktionsverwaltung für Datenbanksysteme - Google Patents
Transaktionsverwaltung für Datenbanksysteme Download PDFInfo
- Publication number
- DE102013204521B4 DE102013204521B4 DE102013204521.2A DE102013204521A DE102013204521B4 DE 102013204521 B4 DE102013204521 B4 DE 102013204521B4 DE 102013204521 A DE102013204521 A DE 102013204521A DE 102013204521 B4 DE102013204521 B4 DE 102013204521B4
- Authority
- DE
- Germany
- Prior art keywords
- transaction
- data object
- database
- data
- access
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 26
- 230000004044 response Effects 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 14
- 230000007246 mechanism Effects 0.000 description 8
- 230000000903 blocking effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 101100270992 Caenorhabditis elegans asna-1 gene Proteins 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000003012 network analysis Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Hierin werden Systeme, Verfahren und Produkte zur Transaktionsverwaltung für Datenbanksysteme bereitgestellt. Ein Aspekt sieht das Annotieren eines auf einer Datenverarbeitungseinheit vorhandenen Datenobjektes mittels der Datenverarbeitungseinheit unter Verwendung wenigstens eines Transaktions-Tag vor, wobei das wenigstens eine Transaktions-Tag so konfiguriert ist, dass es einen Status eines dazugehörigen Datenobjektes anzeigt; das Verarbeiten wenigstens einer Datenbanktransaktion unter Verwendung eines transaktionsorientierten Speicherprozesses, wobei ein Zugriff auf das wenigstens eine Datenobjekt auf der Grundlage des Status des wenigstens einen Datenobjektes festgelegt wird; und das Aktualisieren des Status des wenigstens einen Datenobjektes als Reaktion auf einen versuchten Zugriff auf das wenigstens eine Datenobjekt durch die wenigstens eine Datenbanktransaktion. Hierein werden darüber hinaus weitere Ausführungsformen und Aspekte beschrieben.
Description
- GEBIET DER ERFINDUNG
- Der hierein beschriebene Gegenstand betrifft im Allgemeinen die Verarbeitung und Verwaltung von Datentransaktionen in einem Datenbankverwaltungssystem (DBMS, database management system), insbesondere unter Verwendung von transaktionsorientierten Speichern.
- HINTERGRUND
- Transactional Memory (TM, transaktionsorientierter Speicher) ist ein Mechanismus zur Concurreny Control (Überprüfung auf gleichzeitige Lese- und Schreiboperationen), die eine weniger fehleranfällige Parallelprogrammierung ermöglicht und vereinfacht. Im Allgemeinen ist mit TM ein flexibles Verfahren möglich, mit dem Programme unterschiedliche Speicherorte im Sinne einer atomaren Operation einzeln lesen und modifizieren können, was der atomaren Datenbanktransaktion ähnelt, bei der eine Vielzahl von Einträgen auf einer Platte (disk) modifiziert werden. So kann TM beispielsweise einen optimistischen Ansatz anwenden, um möglicherweise die Ausführungsgleichzeitigkeit für Multi-Thread-Programme zu erhöhen, die auf dieselben oder überlappende Sätze von mehreren Speicherorten zugreifen. Um eine optimistische Ausführung (optimistic execution) zu erzielen, kann eine TM-Ausführungsumgebung bestimmte Funktionen, einschließlich Konflikterfassung (conflict detection), Versionsverwaltung (version management) und Konfliktlösung (conflict resolution), nutzen. TM kann in Hardware (HTM), Software (STM) oder als hybride Kombination aus Hardware und Software implementiert werden.
- Die Erfindung stellt sich die Aufgabe, neben Transaktionen mittels Hardware-transactional-memory-Speichern auch Software-basierte Transaktionen durchzuführen.
- Diese Aufgabe wird erfindungsgemäß gelöst durch ein System zum Ausführen von Datenbanktransaktionen nach Anspruch 1, ein Verfahren zum Ausführen von Datenbanktransaktionen nach Anspruch 11 und ein Computerprogrammprodukt zum Ausführen des Verfahrens zum Ausführen von Datenbanktransaktionen nach Anspruch 13. Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der jeweiligen Unteransprüche.
- KURZDARSTELLUNG
- Ein erfindungsgemäßes System zum Ausführen von Datenbanktransaktionen umfasst wenigstens einen Prozessor und eine Speichereinheit, die funktionell mit dem wenigstens einen Prozessor verbunden ist. Der wenigstens eine Prozessor ist so konfiguriert, dass er das nachfolgend dargestellte Verfahren ausführen kann.
- Ein erfindungsgemäßes Verfahren zum Ausführen von Datenbanktransaktionen weist im wesentlichen die Schritte auf: Annotieren wenigstens eines Datenobjektes unter Verwendung wenigstens eines Transaktions-Tags; Verarbeiten wenigstens einer Datenbanktransaktion und Aktualisieren des Status des wenigstens einen Datenobjektes als Reaktion auf einen versuchten Zugriff. Einzelheiten dieser Verfahrensschritte, die auch auf einem Computerprogrammprodukt gespeichert werden können, werden im folgenden erläutert.
- KURZBESCHREIBUNG DER MEHREREN ANSICHTEN DER ZEICHNUNGEN
- Die Erfindung wird im folgenden anhand von in der beigefügten Zeichnung dargestellten bevorzugten Ausführungsformen erläutert.
-
1 stellt einen beispielhaften Transaktionsprozess in einem Datenbanksystem dar. -
2 stellt beispielhafte Objektdatenstrukturen dar, die gemäß Ausführungsformen konfiguriert sind. -
3 stellt ein Beispiel für eine Transaktionsverarbeitung gemäß einer Ausführungsform dar. - Die
4A bis 4C stellen beispielhafte Anwendungsprogrammierschnittstellen (application programming interfaces, APIs) und dazugehörige Implementierungen gemäß Ausführungsformen dar. - Die
5A und5B stellen beispielhafte Anwendungsprogrammierschnittstellen (APIs) und Implementierungstransformationen dar, die gemäß Ausführungsformen konfiguriert sind. -
6 veranschaulicht eine beispielhafte Datenverarbeitungseinheit. - AUSFÜHRLICHE BESCHREIBUNG
- Transactional Memory (TM) bietet viele Vorteile, unter anderem eine vereinfachte Parallelprogrammierung sowie weniger Schwierigkeiten, die mit dem Schreiben paralleler Programme einhergehen. Dennoch weist TM eigene Schwachstellen auf, wie beispielsweise Leistungseinbußen, weil Transaktionsprotokolle geführt sowie Konflikte erfasst und gelöst werden müssen. Die Leistungseinbußen können durch ein vollständiges Implementieren von TM in Hardware minimiert werden (HTM). Dies beschränkt jedoch notwendigerweise aufgrund der begrenzten Hardwareressourcen und zugrundeliegender Cache-Kohärenz-Protokolle, die vom HTM zur Unterstützung von Kohärenz für mehrere Daten verwendet werden können, die Datengröße, auf die eine Transaktion zugreifen kann. Demzufolge müssen Systeme für Transaktionen, die auf eine große Datenmenge zugreifen, entweder auf herkömmliche Locking-Verfahren oder auf Software beruhenden TM (SMT) zurückgreifen, wodurch aufgrund einer sehr hohen Leistungseinbuße möglicherweise der Vorteil der Gleichzeitigkeit aufgehoben wird.
- Ein TM-aktiviertes Programm deklariert einen Transaktionsumfang als kritischen Ausführungsabschnitt (critical execution section), der einen oder mehrere Speicherorte berührt. HTM löst die Konflikte im Hinblick auf Granularität einer Speicher-Manipulationseinheit, wie beispielsweise einer Cache-Zeile. Im Hinblick auf die Deklarierung einer Arbeitseinheit (unit of work) und ihre Wiederherstellung existieren ähnliche Strukturen (constructs) in Datenbankverwaltungssystemen (database management systems, DBMS). So kann eine Anwendung beispielsweise vor dem Lesen oder Modifizieren eines Satzes von Datenbankobjekten einen „Start der Wiederherstellungseinheit“ („start of the unit of recovery (UR)“) deklarieren. An einer Stelle kann die Anwendung dann ein „Commit“ oder „Roll back“ ausgeben, um die Änderungen in der Datenbank zu bestätigen („Commit“) oder sämtliche Änderungen seit dem Befehl „Start der UR“ rückgängig zu machen („Rollback“).
- Im Allgemeinen kann ein Datenbankeintrag jede beliebige Größe aufweisen, die von dem DBMS unterstützt wird. Ein DBMS kann einen Software-Lock-Manager verwenden, um Parallelzugriffe auf dieselben Datenentitäten (data entities) zu serialisieren, wobei nur der Thread, der die Sperre (lock) erhält, zu seinem Zugriff gelangen kann. Je nach Anwendungssemantik können weitere Threads, die einen Zugriff auf dieselben Entitäten beabsichtigen, blockiert werden, was ebenfalls von der Semantik abhängt. Ein Lock-Manager kann Objekte anhand ihrer Namen oder Kennungen unterscheiden. Auf diese Weise kann Serialisierung der Granularität auf Tabellenebene, Dateiebene (eine Tabelle kann partitioniert werden und sich über mehrere Dateien erstrecken), Eintragsebene oder Seitenebene (es können ein oder mehrere Einträge auf einer Seite gespeichert werden oder sich über mehrere Seiten erstrecken, wobei es sich gleichzeitig um die Einheit zur E/A handelt) erzielt werden. Das Sperren von Objekten (object locking) kann jedoch sehr kostenintensiv sein. Ein Übergang zwischen den Hierarchien unterschiedlicher Sperrebenen kann ebenfalls möglich sein. Schließlich handelt es sich dabei auch um eine Kompromisslösung zwischen den Faktoren Gleichzeitigkeit (concurrency), Leistung und Systemressourcen. Das Serialisieren von Zugriff auf einzelne Objekte mittels Sperren (locking) in einer Umgebung, in der sich eine Transaktion auf mehrere Objekte erstreckt, kann des Weiteren zu einer Verklemmung („deadlock“) führen, die von einem Lock-Manager gelöst werden muss.
- In
1 ist ein beispielhafter Datenbankverwaltungsprozess dargestellt. Ein System besteht aus einer Datenbank 101, die Tabellen 102, Seiten 103 und Zeilen 104 enthält, einem Anwendungs-Thread 105 und einem Lock-Manager 106. Eine Transaktion wird gestartet 107, und ein oder mehrere Objekte (z.B. table.page.row innerhalb der Datenbank 101) werden positioniert (located) 108. Die Erlaubnis des Lock-Managers für den Zugriff auf das eine oder die mehreren Objekte wird angefordert 109. Wird die Erlaubnis erteilt 110, kann der Zugriff auf das eine oder die mehreren Objekte erfolgen, anderenfalls wartet der Prozess 111. Der Prozess geht zu einem erneuten Anfordern der Erlaubnis zum Zugriff auf ein Objekt über 109 zurück. Der Prozess kann so konfiguriert sein, dass er ein „Commit“ (Annehmen der Transaktion) oder ein „Abort“ (Verwerfen der Transaktion) erteilt und aktive Locks (Sperren) aufhebt. - Hardware Transaction Management (HTM) ist ein durch Hardware gestützter lock-freier Mechanismus für die Konfliktlösung beim Datenzugriff. Es gewährleistet eine gute Leistung, gleichzeitig weist es einige eigene Grenzen auf, wie beispielsweise beschränkte Datengrößen und das Unvermögen, einen gleichzeitigen Zugriff (concurrent access) auf unterschiedlichen Objekthierarchieebenen verwalten zu können. Zusätzlich zu Einträgen, Seiten, Dateien und Tabellen erfordern viele Anwendungen atomare Operationen an noch größeren Datenstrukturen, insbesondere Datentypen wie Text, XML-Dokumente, binäre Objekte und Bilder.
- Dementsprechend stellen Ausführungsformen ein Transaktionsverarbeitungssystem bereit, das auf HTM beruhend arbeitet und so konfiguriert ist, dass es ohne einen Lock-Manager funktioniert. So stellen Ausführungsformen beispielsweise einen hybriden Ansatz bereit, bei dem ein optimistischer Mechanismus und ein Blockierungsmechanismus (blocking mechanism) zur Ausführung von Datenbanktransaktionen an verschiedenen Datenobjekten kombiniert werden. Der hybride Ansatz zum Ausführen von Datenbanktransaktionen gemäß Ausführungsformen kann so konfiguriert sein, dass er den Vorteil der vereinfachten Programmierschnittstelle des Transactional Memory (TM) nutzt und unter Verwendung von HTM einen Teil der Konflikterfassung und - lösung mit dem Ziel übernimmt, eine bessere Leistung als ein Lock-Manager zu erzielen. Datenbankobjekttransaktionen, die den hybriden Ansatz in der hierin offenbarten Form verwenden, werden realisiert, indem unter Ausnutzung des Vorteils von TM die Datenbank-Objektstruktur erweitert und gleichzeitig Datenkonsistenz innerhalb eines Objektes beibehalten wird, ohne dass auf alle von dem Objekt besetzten Speicherorte zugegriffen werden muss. In einem nicht einschränkenden Beispiel können APIs zum Bearbeiten der Datenbankobjekte bereitgestellt werden, einschließlich, jedoch nicht beschränkt auf, APIs zum Daten-Tagging oder zur Datenannotation, um das Problem der begrenzten Transaktionsgröße zu verringern, wobei ein Language Interpreter oder Compiler zum Bearbeiten von Übersetzungen von Annotationen verwendet werden kann. Eine gemäß Ausführungsformen konfigurierte Transaktionsverarbeitung kann unter anderem eine bessere Leistung als bisher verfügbare Transaktionsverarbeitungssysteme bei weniger Verklemmungen („deadlocks“) oder Wartezeit bis zur Freigabe von Sperren (lockwait timeout) erzielen.
-
2 stellt beispielhafte Objekte in einem hybriden System dar, das gemäß Ausführungsformen konfiguriert ist. Das hybride System besteht aus einer Datenbank 201, die Tabellen 202, Seiten 203 und Zeilen 204 enthält. Gemäß Ausführungsformen können Systemobjekten Tags hinzugefügt werden, die für eine zu den Objekten gehörende Systemanwendung (z.B. einen Anwendungs-Thread) transparent sind. Wie dies in2 dargestellt ist, kann ein transaktionsorientiertes Tabellen-Tag 205 einer Tabelle 202 zugeordnet sein, ein transaktionsorientiertes Seiten-Tag 206 kann einer Seite 203 zugeordnet sein und ein transaktionsorientiertes Zeilen-Tag 207 kann einer Zeile 204 zugeordnet sein. Jedes Tag kann einem Zustand (state) zugeordnet und so konfiguriert sein, dass es die Verfügbarkeit (accessibility) eines dazugehörigen Objektes oder dazugehöriger Objekte und von einer oder mehreren Datenstrukturen 208, 209 anzeigt, die so konfiguriert sind, dass sie die Operation des TM-Systems unter Verwendung der transaktionsorientierten Tags 205 bis 207 unterstützen. Ausführungsformen stellen sicher, dass die Tag-Aktualisierungen unter Verwendung von optimistischem lock-freiem HTM bearbeitet werden können. - In
3 ist ein beispielhafter hybrider Prozess dargestellt, der gemäß einer Ausführungsform konfiguriert ist. Der Prozess interagiert mit einer Datenbank 301 und einem Anwendungs-Thread 302. Eine Transaktion wird initiiert 303, und gemäß Ausführungsformen wird ein Zugriff auf Objekte gewährt 304, beispielsweise durch optimistisches lock-freies (lock-free) Aktualisieren von Objekt-Tags innerhalb einer Tagged_HTM_Tx-Funktion, die folgendermaßen konfiguriert sein kann:
Tagged_HTM_Tx_begin; Aktualisieren (aller Objekte im Transaktionsumfang); ODER Verwerfen und erneut versuchen/aussetzen ("abort and re-try/suspend") Tagged_HTM_Tx_end;
Darüber hinaus kann im Anschluss an die Tagged_HTM_Tx-Funktion ein Aktualisieren eines Tag zum Rückgängigmachen eines Objektes (undo object tag) unter Verwendung von HTM optimistisch und lock-frei initiiert werden. Anschließend können Objekte für die Transaktion angenommen werden (committed) 305. Als ein Ergebnis des in 3 dargestellten Prozesses kann ein dichterer (tighter) Transaktionscode erzielt werden, unter anderem Implementieren von Schnittstellen zur Blockaktualisierung zwischen Ebenen der Data-Engine (data engine layers).
Wie dies vorstehend hierin beschrieben wurde, kann der hybride Prozess gemäß Ausführungsformen so konfiguriert sein, dass er zum Ausführen von Datenbanktransaktionen an verschiedenen Datenobjekten einen optimistischen Mechanismus mit einem Blockierungsmechanismus kombiniert. Ausführungsformen gewährleisten, dass ein Zugriff auf ein Datenobjekt die folgenden zwei Funktionen beinhaltet: (1) Reservieren des Rechts auf einen Zugriffsversuch und die Zugriffsoperation, beispielsweise unter Verwendung von HTM zum Behandeln des Zugriffsversuchs und der damit zusammenhängenden Konflikterfassung und -lösung; und (2) anschließend an das Reservieren des Zugriffsversuches Einstellen der Datenzugriffsoperation als lock-frei, so dass, falls das Recht auf Zugriffsversuch nicht reserviert wird, die Datenzugriffsoperation blockiert werden kann.
Die Transaktionsverarbeitung kann gemäß Ausführungsformen so konfiguriert sein, dass HTM auf Objekte in einem Datenbankverwaltungssystem (DBMS) angewendet wird. Vorhandene Datenbankobjekte können beispielsweise um eine kleine Datenstruktur (z.B. Tag und Metadaten) erweitert werden, die zum Beschreiben der Zugriffsabsicht (access intent) und des Status des Datenobjektes verwendet werden kann. Dieses Datenobjekt kann beispielsweise eine Tabelle, eine Datei für eine Tabellenpartition, ein Eintrag (z.B. innerhalb einer Seite oder als Verweis auf eine andere Seite (cross-page)) oder eine Seite usw. sein. Wird ein Datenobjekt erweitert, kann es als „getaggte Daten“ („tagged data“) bezeichnet werden. Auf Anwendungsebene können eine oder mehrere APIs festgelegt werden, die so konfiguriert sein können, dass sie eine Transaktionsdeklaration (transaction declaration) auf „getaggten Daten“ aktivieren. Verfahren zum Implementieren der APIs können so bereitgestellt werden, dass deklarierte Transaktionen von „getaggten Daten“ für Anwendungen transparent und auf folgende Weise ausgeführt werden. Das Privileg des Zugriffs auf ein Datenobjekt kann nach erfolgreichen Aktualisierungen an seinem „Tag“ gewährt werden, wobei der „Tag“-Aktualisierungsprozess optimistisch mittels HTM ausgeführt und verwaltet werden kann. Nach erfolgreichem Reservieren des Zugriffsprivilegs kann lock-frei auf das Datenobjekt zugegriffen werden. Der Zugriff auf mehrere Datenobjekte kann behandelt werden, indem diese in einer gemeinsam deklarierten Transaktion (common declared transaction) gruppiert werden, wie beispielsweise jene, die in den hierin beschriebenen APIs auf Anwendungsebene bereitgestellt sind. Die Datenobjektgruppen können mittels HTM optimistisch bei lock-freiem Zugriff als Gruppe verarbeitet werden.
Transaktionsprozesse, die gemäß dem Stand der Technik entwickelt wurden, können Concurrency Control an großen Datenobjekten nicht angemessen behandeln, insbesondere wenn HTM verwendet wird. Wie dies vorstehend hierin beschrieben wurde, können Ausführungsformen dieses Problem angehen, indem Transaktionsprozesse bereitgestellt werden, die so konfiguriert sind, dass sie ohne Lock-Manager arbeiten. Eine entsprechende Datenstruktur (z.B. ein Baum, eine Datenseite, ein Dokument) kann bei Deklarierung (upon declaration) erweitert werden. An der Erweiterung können beispielsweise Transaktions-Tag-Zähler beteiligt sein, die von dem Compiler der Programmiersprache verwendet werden, wobei ein Zähler für Zählungen aktiver Leseoperationen („active read“) und ein weiterer Zähler für aktive Schreiboperationen („active write“) zum aktuellen Zeitpunkt („current time“) auf der Datenstruktur vorhanden sein können. Alternativ dazu kann der Zähler für aktive Leseoperationen aus einem oder mehreren Bits bestehen. Diese Zähler können als Transaktions-Tag der Datenstruktur bezeichnet werden.
In den 4A bis 4C werden beispielhafte APIs und dazugehörige Implementierungen gemäß Ausführungsformen dargestellt. Deklarationen wie jene, die in den 4A bis 4C dargestellt sind, können so erweitert werden, dass sie mehrere diskrete Objekte (wie beispielsweise eine Datenseite und eine Indexseite in einer Datenbank) und eine „logische Dateneinheit“ („logic data unit“) wie jene, die in 5 darunter dargestellt ist und mit einem Tag erweitert wird, behandeln. Darüber hinaus lassen die Ausführungsformen möglicherweise eine Anwendung zum Gruppieren von Objekten bei einer Transaktionsgranularität zu. Die in den 5A bis 5C dargestellten beispielhaften APIs veranschaulichen Transaktionen an einzelnen Objekten, während die nachfolgenden 5A bis 5C Transaktionen an mehreren Objekten darstellen.
In den 5A und 5B werden APIs dargestellt, die gemäß Ausführungsformen konfiguriert sind. 5A stellt eine API für Tagged_Tx_begin dar, und 5B stellt eine API für Tagged_Tx_end dar, die für Datenzugriffstransaktionen an getaggten Datenstrukturen verwendet werden können. Unter Verwendung der Ausführungsformen kann ein Compiler oder ein Language Interpreter eine Transaktion Tagged_Tx_begin und Tagged_Tx_end in eine Operation umwandeln, die sich aus Folgendem zusammensetzt: (1) Bevor ein Datenelement (des Datenstrukturtyps) gelesen oder aktualisiert wird, kann sein Transaktions-Tag aktualisiert werden; (2) zum Bearbeiten der Aktualisierungen der Transaktions-Tags kann HTM verwendet werden; (3) führt ein Thread ein Commit zu (1) und (2) aus, ist er zum Aktualisieren oder Lesen von Inhalt der Datenstruktur ohne Transaktion („transaction free“) berechtigt; (4) bei Abschluss von (1) kann das Transaktions-Tag des Datenelementes entsprechend zurückaktualisiert werden. Darüber hinaus ermöglichen Ausführungsformen, dass, wenn eine Anwendung am Ende ein Rollback ausgibt, die Protokolleinträge zum „Rückgängigmachen“ („un-do log records“) des vorhandenen DBMS zum Wiederholen der Datenzugriffstransaktionen an getaggten Datenstrukturen auf die hierin beschriebene Weise verwenden können, womit die Datenaktualisierungsoperationen umgekehrt werden.
Gemäß Ausführungsformen können die vorstehend beschriebenen Schritte (1) bis (4) so erweitert werden, dass eine Transaktion behandelt wird, die sich aus einer Mischung aus kleinen, nicht getaggten Datenobjekten und großen, getaggten Datenobjekten zusammensetzt. Für Datenbankanwendungen kann damit die Fähigkeit zum Gruppieren diskreter Datenobjekte, wie beispielsweise eines Satzes von Seiten, in einen Transaktionsumfang nach dem Alles-oder-Nichts-Prinzip bereitgestellt werden. Obgleich eine solche Konfiguration im Hinblick auf Datenaktualisierung tatsächlich eher einem Blockierungsmechanismus entspricht, müssen, verglichen mit einem Mechanismus wie beispielsweise Sperren (Locking) oder Latching, keine Verklemmungen (dead locks) oder eine „dead-latch situation“ befürchtet werden. Es besteht des Weiteren keine Notwendigkeit zum Aufsuchen von Sperr-Tabellen (lock tables).
Anwendungen können versuchen, auf nicht festgeschriebene Daten („uncommitted data) (z.B. „dirty“ (genutzt)) zuzugreifen. So kann ein Leser beispielsweise versuchen, nicht festgeschriebene Daten zu lesen. Zum Bearbeiten von nicht festgeschriebenen Daten können Ausführungsformen zusätzliche APIs und dazugehörige Implementierungen bereitstellen, einschließlich APIs für „update“ (Aktualisieren) und „dirty_read“. So kann für eine Aktualisierungsoperation an einem logischen Objekt, das auf mehreren Daten-/Indexseiten abgebildet (mapped) wird, eine Übersetzungs- und Ausführungsfunktion bereitgestellt werden, um bestimmte APIs in eine HW-Transaktion („tx_“) zu übersetzen, die Schreibzugriff auf alle Unterobjekt-Tags (sub-object tags) des logischen Objektes (z.B. eine zusätzliche Hierarchie) erfordert. Eine beispielhafte update-API kann wie folgt konfiguriert sein:
Tagged_Update_Tx_begin; Aktualisierung a & b -- a & b gehören zum selben logischen Objekt Tagged_Update_Tx_end.Die update-API kann folgendermaßen zur Ausführung übersetzt werden:
Tx_begin; wenn (a_read_count > 0 oder b_read_count > 0 oder a_write_count=1 oder b_write_count=1) verwerfen (abort); ansonsten a_write_count =1; b_write_count =1; Tx_end; wenn (TX_commit) a aktualisieren b aktualisieren ansonsten erneut versuchen (re-try); Tx_begin; a_write_count = 0; b_write_count = 0; Tx_end;Für eine „dirty read“-API kann die Gruppe aus logischen Objekten in einzelne kleinere Unterobjekt-Transaktionen (sub-object transactions) aufgeteilt werden, während ein Tag pro Objekt beibehalten wird, so dass Datenkonsistenz auf der Ebene des einzelnen Objektes aufrechterhalten wird. Eine beispielhafte „dirty read“-API kann folgendermaßen konfiguriert sein:
Tagged_Dirty_read_Tx_begin; a lesen; b lesen; Tagged_Dirty_Read_Tx_end;Die dirty read-API kann folgendermaßen zur Ausführung konfiguriert sein:
Tx_begin; wenn (a_write_count <>0) verwerfen ansonsten a_read_count ++; Tx_end; wenn (TX_commit) a lesen ansonsten a erneut versuchen oder b versuchen. Tx_begin; wenn (b_write_count <>0) verwerfen ansonsten b_read_count ++; Tx_end; wenn (TX_commit) b lesenansonsten erneut versuchen (re-try) oder zurückgehen (go back), falls es noch nicht gelesen wurde.
Datenobjekte können als Hierarchie bearbeitet werden. So kann beispielsweise für eine Datenbank eine Hierarchie aus Objekten von oben nach unten Tabellen-, Seiten- und Zeilenobjekte enthalten. Darüber hinaus können Objekte in einer Hierarchie auf der Grundlage von einem lokalen oder globalen Status kategorisiert werden. Dementsprechend können Ausführungsformen zusätzliche Tags bereitstellen, um eine Blockierung auf Hierarchieebene (Hierarchy Level Blocking) zu unterstützen. Im Sinne eines nicht einschränkenden Beispiels können Ausführungsformen table_global_write-Tags und table_global_read-Tags bereitstellen, und gemäß diesem Beispiel können noch weitere Tags bereitgestellt werden: table_local_write / table_local_read; page_global_write / page_global_read; und page_local_write / page_local_read. Hierarchy Level Blocking kann gemäß Ausführungsformen so konfiguriert sein, dass Operationen, unter anderem Aktualisieren von lokalen Tags durch lokalen Zugriff, Überprüfen von globalen Tags durch lokalen Zugriff sowie Überprüfen und Aktualisieren von globalen Tags durch globalen Zugriff, unterstützt werden.
Hierarchy Level Blocking kann so konfiguriert sein, dass es mit einer groberen Granularität arbeitet. Beispielsweise können unter Verwendung von HTM (anstelle von Latching) Drain- und Claim-Tags für eine Tabelle an einem zentralen Ort bereitgestellt und verwaltet werden. Gemäß Ausführungsformen kann Hierarchy Locking jedoch auch durch Festlegen eines bestimmten Satzes an Tags konfiguriert werden. Für eine Tabelle oder eine Partition können die folgenden Tags festgelegt werden: (1) table_global_write_count zum Erteilen von Tabellensperren (table level locking) und zum Sperren weiterer Tabellensperr-Threads (table level locking threads); (2) table_global_intent_write_count, das zum Entleeren (drain) aller Seitenschreibvorgänge (page level writes) verwendet werden kann, so dass ein Dienstprogramm schließlich dann Zugriff erhalten kann, wenn eine Tabellensperre (table level lock) beabsichtigt ist; (3) table_local_write_count, das so konfiguriert sein kann, dass eine Tabellensperre (table level locking) nur dann erteilt wird, wenn sein Wert beim Aktualisieren von Seiten 0 erreicht; (4) table_read_count; und (5) table_page_read_count. Auf Seitenebene kann jede Seite table_global_write_count-Tags und table_global_intent_write_count-Tags aufweisen, die so konfiguriert sind, dass sie neue Anforderungen zum Aktualisieren von Seiten blockieren, wenn sie auf einen Wert gesetzt sind, der nicht Null beträgt. Darüber hinaus können alle Schreibvorgänge auf Seitenebene oder auf Zeilenebene so konfiguriert sein, dass sie ein table_local_write_count-Tag aktualisieren, beispielsweise durch Erhöhen des Tag vor und durch Vermindern des Tag nach einem Schreibvorgang. Da HTM oftmals bei Cachezeilen-Granularität funktioniert, können Tags verteilt werden (z.B. mittels Hashing), um am selben Ort vorhandene Tags, die in derselben Cachezeile von unterschiedlichen Transaktionen berührt werden, statistisch zu minimieren.
Kurz zusammengefasst, können Ausführungsformen so konfiguriert sein, dass sie Prozesse zum Behandeln von Datenbanktransaktionen (einschließlich verschachtelter Transaktionen) unter Verwendung von HTM und einer Laufzeit-Implementierung bei einer oder mehreren APIs bereitstellen. So können die APIs beispielsweise transparent sein und Datenbankobjekten Tags oder Annotationen hinzufügen. Eine Anwendung kann auf der Grundlage von erfolgreicher HTM-Ausführung und Annahme der Statusänderungen (die nach Abschluss des Zugriffs wieder rückgängig gemacht werden können) von annotierten Objekten auf Transaktionsobjekte zugreifen, wobei der Zugriff entweder gewährt oder abgelehnt wird. Wird ein Zugriff gewährt, darf damit eine Anwendung Objekte aktualisieren oder lesen, und wird ein Zugriff verweigert, darf eine Anwendung nicht auf ein bestimmtes Objekt zugreifen. Gemäß Ausführungsformen kann der Zugriff auf Gruppen von Objekten nach dem Alles-oder-Nichts-Prinzip gewährt werden. Wird beispielsweise der Umfang einer Gruppe als Satz von Objekten definiert, kann auf diese Objekte in der Gruppe gemäß einem Alles-oder-Nichts-Prinzip zugegriffen werden.
In Bezug auf 6 ist offensichtlich, dass bestimmte Ausführungsformen unter Verwendung einer beliebigen von einer breiten Vielfalt von Einheiten oder von Kombinationen aus Einheiten implementiert werden können. Eine beispielhafte Einheit, die zum Implementieren von Ausführungsformen verwendet werden kann, weist eine Datenverarbeitungseinheit in Form eines Computers 610 auf, der als Server, Workstation-Computer, mobile Einheit und Ähnliches ausgebildet sein kann. In dieser Hinsicht kann der Computer 610 Programmanweisungen ausführen, die so konfiguriert sind, dass sie eine Vorhersageplatzierung (predictive placement) durch Netzwerkanalyse bereitstellen und weitere Funktionen der Ausführungsformen in ihrer hierin beschriebenen Form ausführen.
Zu Komponenten des Computers 610 gehören, ohne darauf beschränkt zu sein, wenigstens eine Verarbeitungseinheit 620, ein Systemspeicher 630 und ein Systembus 622, der verschiedene Systemkomponenten, unter anderem den Systemspeicher 630, mit der oder den Verarbeitungseinheit/en 620 verbindet. Der Computer 610 kann verschiedene computerlesbare Medien aufweisen beziehungsweise Zugriff darauf haben. Der Systemspeicher 630 kann computerlesbare Speichermedien in Form von flüchtigem und/oder nichtflüchtigem Speicher wie beispielsweise Nur-Lese-Speicher (ROM) und/oder Arbeitsspeicher (RAM) aufweisen. Im Sinne eines Beispiels und nicht als Beschränkung kann der Systemspeicher 630 des Weiteren ein Betriebssystem, Anwendungsprogramme, weitere Programmmodule und Programmdaten aufweisen.
Ein Benutzer kann über Eingabeeinheiten 640 (beispielsweise durch Eingabe von Befehlen und Daten) eine Schnittstelle mit dem Computer 610 bilden. Ein Monitor oder ein anderer Typ von Einheit kann über eine Schnittstelle 650, beispielsweise eine Ausgabeschnittstelle, ebenfalls mit dem Systembus 622 verbunden sein. Zusätzlich zu einem Monitor können Computer auch andere Peripherie-Ausgabeeinheiten aufweisen. Der Computer 610 kann in einer vernetzten oder einer verteilten Umgebung unter Verwendung logischer Verbindungen (Netzwerkschnittstelle 660) zu anderen fernen Computern oder Datenbanken (ferne Einheit(en) 670) arbeiten. Zu den logischen Verbindungen können ein Netzwerk wie beispielsweise ein Lokalnetz (LAN), ein Weitverkehrsnetz (WAN), ein zellulares Netz oder auch andere Netzwerke gehören.
Claims (13)
- System zum Ausführen von Datenbanktransaktionen, aufweisend: wenigstens einen Prozessor; und eine Speichereinheit mit einem Hardware-transaction-memory- (HTM-) Speicher, die funktionell mit dem wenigstens einen Prozessor verbunden ist; wobei als Reaktion auf eine Ausführung von Programmanweisungen, auf die der wenigstens eine Prozessor zugreifen kann, der wenigstens eine Prozessor so konfiguriert ist, dass er die Schritte ausführt: Annotieren wenigstens eines auf einer Datenverarbeitungseinheit vorhandenen Datenobjektes unter Verwendung wenigstens eines Transaktions-Tags, um dessen Verfügbarkeit anzuzeigen, wobei ein Transaktions-Tag-Zähler aktive Leseoperationen und ein Transaktions-Tag-Zähler aktive Schreiboperationen zum aktuellen Zeitpunkt bei dem Datenobjekt zählt; Verarbeiten wenigstens einer Datenbanktransaktion, wobei das Verarbeiten umfasst: Aktualisieren des Transaktions-Tag-Zählers des wenigstens einen Datenobjekts zum Reservieren eines Zugriffsprivilegs auf das wenigstens eine Datenobjekt und Setzen des HTM-Status des wenigstens einen Datenobjekts auf „lock-free“-, Aktualisieren des HTM-Status des wenigstens einen Datenobjektes als Reaktion auf einen versuchten Zugriff auf das wenigstens eine Datenobjekt durch die wenigstens eine Datenbanktransaktion, wobei das Aktualisieren des HTM-Status ein Modifizieren des wenigstens einen Datenobjekts durch Markieren als zugegriffen enthält.
- System nach
Anspruch 1 , wobei der wenigstens eine Prozessor des Weiteren so konfiguriert ist, dass er wenigstens eine Anwendungsprogrammierschnittstelle definieren kann, die so konfiguriert ist, dass sie eine Transaktionsdeklaration an Daten, die mit einem Transaktions-Tag annotiert sind, aktivieren kann. - System nach
Anspruch 1 , wobei der Status des wenigstens einen Datenobjektes mittels Hardware-Transaktionsverwaltung aktualisiert wird. - System nach
Anspruch 3 , wobei Hardware-Transaktionsverwaltung ein Aktualisieren optimistisch „lock-frei“ behandelt. - System nach
Anspruch 1 , wobei das wenigstens eine Transaktions-Tag einen Zähler für aktive Leseoperationen und einen Zähler für aktive Schreiboperationen aufweist. - System nach
Anspruch 1 , wobei das wenigstens eine Transaktions-Tag für Anwendungen mit Datenbanktransaktionen transparent ist. - System nach
Anspruch 1 , wobei das Aktualisieren des Status des wenigstens einen Datenobjektes als Reaktion auf den Abschluss des Zugriffs auf das wenigstens eine Datenobjekt rückgängig gemacht wird. - System nach
Anspruch 1 , wobei ein Zugriff auf eine Vielzahl von Datenobjekten gruppiert werden kann. - System nach
Anspruch 1 , wobei ein Zugriff auf eine gruppierte Vielzahl von Datenobjekten auf der Grundlage eines Alles-oder-Nichts-Prinzips gewährt wird. - System nach
Anspruch 1 , wobei das wenigstens eine Datenobjekt innerhalb einer Datenbank definiert wird, die Tabellen-, Seiten- und Zeilenelemente aufweist. - Verfahren zum Ausführen von Datenbanktransaktionen mit einem Hardware-transaction-memory- (HTM-) Speicher, das die Schritte umfasst: Annotieren wenigstens eines auf einer Datenverarbeitungseinheit vorhandenen Datenobjektes unter Verwendung wenigstens eines Transaktions-Tags, um dessen Verfügbarkeit anzuzeigen, wobei ein Transaktions-Tag-Zähler aktive Leseoperationen und ein Transaktions-Tag-Zähler aktive Schreiboperationen zum aktuellen Zeitpunkt bei dem Datenobjekt zählt; Verarbeiten wenigstens einer Datenbanktransaktion, wobei das Verarbeiten umfasst: Aktualisieren des Transaktions-Tag-Zählers des wenigstens einen Datenobjekts zum Reservieren eines Zugriffsprivilegs auf das wenigstens eine Datenobjekt und Setzen des HTM-Status des wenigstens einen Datenobjekts auf „lock-free“-, Aktualisieren des HTM-Status des wenigstens einen Datenobjektes als Reaktion auf einen versuchten Zugriff auf das wenigstens eine Datenobjekt durch die wenigstens eine Datenbanktransaktion, wobei das Aktualisieren des HTM-Status ein Modifizieren des wenigstens einen Datenobjekts durch Markieren als zugegriffen enthält.
- Verfahren nach
Anspruch 11 , bei dem jedes Datenbankobjekt eine Datenstruktur zum Anzeigen des Status des Datenbankobjekts und einer Zugriffsabsicht aufweist, wobei die Datenstruktur das Transaktions-Tag und Metadaten umfasst. - Computerprogrammprodukt, aufweisend: ein computerlesbares Speichermedium mit darin enthaltenem computerlesbarem Programmcode, wobei der computerlesbare Programmcode aufweist: computerlesbaren Programmcode, der so konfiguriert ist, dass er das Verfahren nach
Anspruch 11 oder12 ausführt.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/435,281 US9870384B2 (en) | 2012-03-30 | 2012-03-30 | Database system transaction management |
US13/435,281 | 2012-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102013204521A1 DE102013204521A1 (de) | 2013-10-02 |
DE102013204521B4 true DE102013204521B4 (de) | 2024-04-25 |
Family
ID=48142239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102013204521.2A Active DE102013204521B4 (de) | 2012-03-30 | 2013-03-15 | Transaktionsverwaltung für Datenbanksysteme |
Country Status (4)
Country | Link |
---|---|
US (2) | US9870384B2 (de) |
CN (1) | CN103365652B (de) |
DE (1) | DE102013204521B4 (de) |
GB (1) | GB2501800B (de) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102271265B1 (ko) | 2014-01-21 | 2021-07-01 | 오라클 인터내셔날 코포레이션 | 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티 테넌시를 지원하기 위한 시스템 및 방법 |
EP3158442B1 (de) * | 2014-06-23 | 2020-05-06 | Oracle International Corporation | System und verfahren zur bereitstellung eines arbeitsmanagers in einer mandantenfähigen anwendungsserverumgebung |
EP3161630A1 (de) * | 2014-06-26 | 2017-05-03 | Amazon Technologies, Inc. | Mehrfachdatenbankprotokoll mit mehrfachelementtransaktionsunterstützung |
US9613078B2 (en) | 2014-06-26 | 2017-04-04 | Amazon Technologies, Inc. | Multi-database log with multi-item transaction support |
US10373247B2 (en) | 2014-09-19 | 2019-08-06 | Amazon Technologies, Inc. | Lifecycle transitions in log-coordinated data stores |
US10025802B2 (en) | 2014-09-19 | 2018-07-17 | Amazon Technologies, Inc. | Automated configuration of log-coordinated storage groups |
US9799017B1 (en) | 2014-09-19 | 2017-10-24 | Amazon Technologies, Inc. | Cross-data-store operations in log-coordinated storage systems |
US10698767B1 (en) | 2014-12-22 | 2020-06-30 | Amazon Technologies, Inc. | Decentralized management of multi-service workflows |
US9904722B1 (en) | 2015-03-13 | 2018-02-27 | Amazon Technologies, Inc. | Log-based distributed transaction management |
US9652168B2 (en) * | 2015-04-10 | 2017-05-16 | International Business Machines Corporation | Adaptive concurrency control using hardware transactional memory and locking mechanism |
US10067960B2 (en) * | 2015-06-04 | 2018-09-04 | Microsoft Technology Licensing, Llc | Controlling atomic updates of indexes using hardware transactional memory |
US10866865B1 (en) | 2015-06-29 | 2020-12-15 | Amazon Technologies, Inc. | Storage system journal entry redaction |
US10866968B1 (en) | 2015-06-29 | 2020-12-15 | Amazon Technologies, Inc. | Compact snapshots of journal-based storage systems |
US11599520B1 (en) * | 2015-06-29 | 2023-03-07 | Amazon Technologies, Inc. | Consistency management using query restrictions in journal-based storage systems |
US11609890B1 (en) | 2015-06-29 | 2023-03-21 | Amazon Technologies, Inc. | Schema management for journal-based storage systems |
US10031935B1 (en) | 2015-08-21 | 2018-07-24 | Amazon Technologies, Inc. | Customer-requested partitioning of journal-based storage systems |
US10346434B1 (en) | 2015-08-21 | 2019-07-09 | Amazon Technologies, Inc. | Partitioned data materialization in journal-based storage systems |
US9971822B1 (en) | 2015-12-29 | 2018-05-15 | Amazon Technologies, Inc. | Replicated state management using journal-based registers |
WO2018192644A1 (en) * | 2017-04-19 | 2018-10-25 | Huawei Technologies Co., Ltd. | Hardware transactional memory (htm) assisted database transactions |
US11295296B2 (en) * | 2018-08-06 | 2022-04-05 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
CN110716947B (zh) * | 2019-10-24 | 2022-07-19 | 网易(杭州)网络有限公司 | 一种数据访问的方法、装置、计算机设备及存储介质 |
US11372995B2 (en) | 2020-01-17 | 2022-06-28 | Snowflake Inc. | Container-centric access control on database objects |
US11934543B1 (en) | 2022-11-17 | 2024-03-19 | Snowflake Inc. | Transient object references |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69429686T2 (de) * | 1993-02-25 | 2003-04-30 | Sun Microsystems Inc | Transaktionsverwaltung in objektorientiertem System |
ATE165174T1 (de) * | 1994-05-10 | 1998-05-15 | Siemens Ag | Datenverwaltungssystem eines realzeitsystems |
US5799305A (en) * | 1995-11-02 | 1998-08-25 | Informix Software, Inc. | Method of commitment in a distributed database transaction |
US6097292A (en) * | 1997-04-01 | 2000-08-01 | Cubic Corporation | Contactless proximity automated data collection system and method |
US5897634A (en) * | 1997-05-09 | 1999-04-27 | International Business Machines Corporation | Optimized caching of SQL data in an object server system |
US6158044A (en) * | 1997-05-21 | 2000-12-05 | Epropose, Inc. | Proposal based architecture system |
US6915254B1 (en) * | 1998-07-30 | 2005-07-05 | A-Life Medical, Inc. | Automatically assigning medical codes using natural language processing |
US7840440B2 (en) * | 1998-08-06 | 2010-11-23 | Cybersettle Holdings, Inc. | Computerized transaction bargaining system and method |
US6687878B1 (en) * | 1999-03-15 | 2004-02-03 | Real Time Image Ltd. | Synchronizing/updating local client notes with annotations previously made by other clients in a notes database |
EP1332578A4 (de) * | 2000-10-16 | 2006-12-20 | Goahead Software Inc | Techniken zur aufrechterhaltung einer hohen verfügbarkeit von vernetzten systemen |
US20020129001A1 (en) * | 2000-12-12 | 2002-09-12 | Levkoff Jonathan S. | Method and system for assimilation, integration and deployment of architectural, engineering and construction information technology |
US6883162B2 (en) * | 2001-06-06 | 2005-04-19 | Sun Microsystems, Inc. | Annotations for transaction tracing |
US7213020B1 (en) * | 2002-07-30 | 2007-05-01 | Unisys Corporation | Methods and system for facilitating updating of data in a database by a data access system |
WO2004027604A2 (en) * | 2002-09-23 | 2004-04-01 | Neos Financial Systems Limited | Transaction processing system |
US7120635B2 (en) * | 2002-12-16 | 2006-10-10 | International Business Machines Corporation | Event-based database access execution |
US7584474B2 (en) * | 2003-02-25 | 2009-09-01 | Bea Systems, Inc. | Systems and methods for transaction chaining |
US8392298B2 (en) * | 2003-03-04 | 2013-03-05 | Siebel Systems, Inc. | Invoice adjustment data object for a common data object format |
US7444349B1 (en) | 2003-05-23 | 2008-10-28 | Xilinx, Inc. | Control of concurrent access to a partitioned data file |
US7421458B1 (en) * | 2003-10-16 | 2008-09-02 | Informatica Corporation | Querying, versioning, and dynamic deployment of database objects |
US20070266388A1 (en) * | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7853961B2 (en) * | 2005-02-28 | 2010-12-14 | Microsoft Corporation | Platform for data services across disparate application frameworks |
US7613743B1 (en) * | 2005-06-10 | 2009-11-03 | Apple Inc. | Methods and apparatuses for data protection |
KR20080033998A (ko) * | 2005-07-25 | 2008-04-17 | 실버브룩 리서치 피티와이 리미티드 | 레이아웃을 식별하는 부호화 데이터를 가지는 상품 아이템 |
US9036028B2 (en) * | 2005-09-02 | 2015-05-19 | Sensormatic Electronics, LLC | Object tracking and alerts |
US7634520B1 (en) * | 2005-10-07 | 2009-12-15 | Advent Software, Inc. | Audit trail tools for transaction systems |
US7720891B2 (en) * | 2006-02-14 | 2010-05-18 | Oracle America, Inc. | Synchronized objects for software transactional memory |
US7792805B2 (en) * | 2006-05-30 | 2010-09-07 | Oracle America, Inc. | Fine-locked transactional memory |
US8924653B2 (en) * | 2006-10-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Transactional cache memory system |
US7711678B2 (en) * | 2006-11-17 | 2010-05-04 | Microsoft Corporation | Software transaction commit order and conflict management |
US8924844B2 (en) * | 2007-03-13 | 2014-12-30 | Visual Cues Llc | Object annotation |
US8185698B2 (en) | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US8719514B2 (en) | 2007-06-27 | 2014-05-06 | Intel Corporation | Software filtering in a transactional memory system |
US7941411B2 (en) * | 2007-06-29 | 2011-05-10 | Microsoft Corporation | Memory transaction grouping |
US7890472B2 (en) | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US7899997B2 (en) | 2008-03-12 | 2011-03-01 | International Business Machines Corporation | Systems and methods for implementing key-based transactional memory conflict detection |
US8740073B2 (en) * | 2008-08-01 | 2014-06-03 | Mastercard International Incorporated | Methods, systems and computer readable media for storing and redeeming electronic certificates using a wireless smart card |
US8112528B2 (en) * | 2009-02-19 | 2012-02-07 | International Business Machines Corporation | Mechanisms for providing exclusive access to shared resources in a database |
US8566524B2 (en) * | 2009-08-31 | 2013-10-22 | International Business Machines Corporation | Transactional memory system with efficient cache support |
CN101699439B (zh) | 2009-11-16 | 2011-12-28 | 中兴通讯股份有限公司 | 一种数据库的事务提交方法和装置 |
US9529839B2 (en) | 2009-12-07 | 2016-12-27 | International Business Machines Corporation | Applying limited-size hardware transactional memory to arbitrarily large data structure |
US8356007B2 (en) * | 2010-10-20 | 2013-01-15 | Microsoft Corporation | Distributed transaction management for database systems with multiversioning |
US20110161281A1 (en) * | 2009-12-30 | 2011-06-30 | Sybase, Inc. | Distributed Transaction Management in a Distributed Shared Disk Cluster Environment |
US8473952B2 (en) | 2010-06-30 | 2013-06-25 | Oracle International Corporation | System and method for communication between concurrent transactions using transaction communicator objects |
US9251021B2 (en) * | 2011-05-23 | 2016-02-02 | Bradley Gene Calder | Asynchronous replication in a distributed storage environment |
CN102375892B (zh) | 2011-11-16 | 2014-07-02 | 北京握奇数据系统有限公司 | 大容量数据库卡的事务管理方法、大容量数据库卡及系统 |
-
2012
- 2012-03-30 US US13/435,281 patent/US9870384B2/en not_active Expired - Fee Related
-
2013
- 2013-03-01 GB GB1303662.9A patent/GB2501800B/en active Active
- 2013-03-15 DE DE102013204521.2A patent/DE102013204521B4/de active Active
- 2013-03-29 CN CN201310106849.2A patent/CN103365652B/zh active Active
-
2017
- 2017-12-21 US US15/850,421 patent/US10885015B2/en active Active
Non-Patent Citations (3)
Title |
---|
AGARWAL, Sameer; BORTHAKUR, Dhruba; STOICA, Ion. Snapshots in hadoop distributed file system. UC Berkeley Technical Report UCB/EECS, 2011. [online] URL: http://www.cs.berkeley.edu/~sameerag/hdfs_snapshots_ucb_tr.pdf [abgerufen am 14.10.2014] |
HERLIHY, Maurice; MOSS, J. Eliot B. Transactional memory: Architectural support for lock-free data structures. ACM, 1993. [ACM] doi: 10.1145/173682.165164 |
WAMHOFF, Jons-Tobias; FETZER, Christof. The universal transactional memory construction. In TRANSACT 11, ACM New York, NY, USA, 2011. [online] http://se.inf.tu-dresden.de/pubs/papers/Wamhoff2011.pdf [abgerufen am 11.03.2015] |
Also Published As
Publication number | Publication date |
---|---|
GB201303662D0 (en) | 2013-04-17 |
GB2501800B (en) | 2014-10-08 |
US20180113895A1 (en) | 2018-04-26 |
US20130262424A1 (en) | 2013-10-03 |
CN103365652B (zh) | 2017-05-17 |
CN103365652A (zh) | 2013-10-23 |
DE102013204521A1 (de) | 2013-10-02 |
GB2501800A (en) | 2013-11-06 |
US9870384B2 (en) | 2018-01-16 |
US10885015B2 (en) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102013204521B4 (de) | Transaktionsverwaltung für Datenbanksysteme | |
DE3854384T2 (de) | Verfahren zum Betreiben eines einen anteilig genutzten virtuellen Speicher verwendenden Multiprozessorsystems. | |
DE112005002402B4 (de) | Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs | |
EP1088280B1 (de) | Verfahren und system zur schnellen speicherresidenten verarbeitung von transaktionsdaten | |
DE102012216022B4 (de) | Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger | |
DE68927142T2 (de) | Verriegelungs- und Lese-Minimierung in einem segmentierten Speicherraum | |
DE112010003492B4 (de) | Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung | |
DE112010004652B4 (de) | Zuverlässige Replikation mit hohem Durchsatz von umgewandelten Daten in Datensystemen | |
DE60130420T2 (de) | Vorrichtung und Verfahren zur Aufrechterhaltung einer verknüpften Liste | |
DE69838367T2 (de) | Paralleles Dateiensystem und Verfahren zur unabhängigen Aufzeichnung von Metadaten | |
DE69738101T2 (de) | Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen | |
DE202019005594U1 (de) | Sicheres gemeinsames Benutzen von Daten in einem mandantenfähigen Datenbanksystem | |
DE112012000693B4 (de) | Ausführen einer Vielzahl von Instanzen einer Anwendung | |
DE102013022405B3 (de) | Schutz globaler Register in einem Multithreaded-Prozessor | |
US8176022B1 (en) | Locking protocol using dynamic locks and dynamic shared memory | |
DE112009000741T5 (de) | Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen | |
US11698893B2 (en) | System and method for use of lock-less techniques with a multidimensional database | |
EP1639475B1 (de) | Prozessorarchitektur für exakte zeigeridentifizierung | |
DE112016000776T5 (de) | Effiziente Durchführung von Einfüge- und Punktabfrage-Operationen in einem Spaltenspeicher | |
DE202021004295U1 (de) | Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem | |
DE102021127151A1 (de) | Verfahren und system für libfabric atomics-basierte lockless cluster-wide shared memory access api in einem verteilten system | |
DE102006032519A1 (de) | Klassifikationssystem für versionierbare Objekte | |
DE3854831T2 (de) | Datenzugriffssystem für einen Dateizugriffsprozessor | |
DE112011100951T5 (de) | Hoch entwickelte funktionale Verhaltensweisen in einem Datenbankverwaltungssystem | |
DE60315030T2 (de) | Vermeiden von datenverlusten beim aktualisieren eines data warehouse |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0017300000 Ipc: G06F0016000000 |
|
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division |