DE102013204521B4 - Transaktionsverwaltung für Datenbanksysteme - Google Patents

Transaktionsverwaltung für Datenbanksysteme Download PDF

Info

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
Application number
DE102013204521.2A
Other languages
English (en)
Other versions
DE102013204521A1 (de
Inventor
Harold Wade Cain III
Donna N. Dillenberger
Michel H.T. Hack
Hong Min
Gong Su
James Zu-chia Teng
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013204521A1 publication Critical patent/DE102013204521A1/de
Application granted granted Critical
Publication of DE102013204521B4 publication Critical patent/DE102013204521B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional 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 und 5B 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 in 2 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 lesen
    ansonsten 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)

    1. 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.
    2. 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.
    3. System nach Anspruch 1, wobei der Status des wenigstens einen Datenobjektes mittels Hardware-Transaktionsverwaltung aktualisiert wird.
    4. System nach Anspruch 3, wobei Hardware-Transaktionsverwaltung ein Aktualisieren optimistisch „lock-frei“ behandelt.
    5. 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.
    6. System nach Anspruch 1, wobei das wenigstens eine Transaktions-Tag für Anwendungen mit Datenbanktransaktionen transparent ist.
    7. 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.
    8. System nach Anspruch 1, wobei ein Zugriff auf eine Vielzahl von Datenobjekten gruppiert werden kann.
    9. System nach Anspruch 1, wobei ein Zugriff auf eine gruppierte Vielzahl von Datenobjekten auf der Grundlage eines Alles-oder-Nichts-Prinzips gewährt wird.
    10. System nach Anspruch 1, wobei das wenigstens eine Datenobjekt innerhalb einer Datenbank definiert wird, die Tabellen-, Seiten- und Zeilenelemente aufweist.
    11. 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.
    12. 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.
    13. 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 oder 12 ausführt.
    DE102013204521.2A 2012-03-30 2013-03-15 Transaktionsverwaltung für Datenbanksysteme Active DE102013204521B4 (de)

    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)

    * Cited by examiner, † Cited by third party
    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)

    * Cited by examiner, † Cited by third party
    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 北京握奇数据系统有限公司 大容量数据库卡的事务管理方法、大容量数据库卡及系统

    Non-Patent Citations (3)

    * Cited by examiner, † Cited by third party
    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