DE112019001744T5 - Verarbeiten von streaming-daten mit mehreren caches - Google Patents

Verarbeiten von streaming-daten mit mehreren caches Download PDF

Info

Publication number
DE112019001744T5
DE112019001744T5 DE112019001744.6T DE112019001744T DE112019001744T5 DE 112019001744 T5 DE112019001744 T5 DE 112019001744T5 DE 112019001744 T DE112019001744 T DE 112019001744T DE 112019001744 T5 DE112019001744 T5 DE 112019001744T5
Authority
DE
Germany
Prior art keywords
cache area
cache
time window
streaming data
database repository
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.)
Pending
Application number
DE112019001744.6T
Other languages
English (en)
Inventor
Motohiro Kawahito
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 DE112019001744T5 publication Critical patent/DE112019001744T5/de
Pending legal-status Critical Current

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache

Abstract

Ein Computer stellt einen ersten Cachebereich und einen zweiten Cachebereich in einem Cache in einem Informationsverarbeitungssystem bereit, das eine Datenbankrepository und den Cache für die Datenbankrepository aufweist. Der Computer empfängt, in einem ersten Zeitfenster, Streaming-Daten und schreibt die Streaming-Daten in den ersten Cachebereich. Der Computer verhindert, in dem ersten Zeitfenster, das Durchführen einer Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository. Der Computer ermöglicht, in mindestens einem Teil des ersten Zeitfensters, eine Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich. Der Computer ermöglicht, nach dem Ablauf des ersten Zeitfensters, eine Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft eine Streaming-Datenverarbeitung und insbesondere eine Verarbeitung von Streaming-Daten.
  • HINTERGRUND
  • Die Streaming-Datenverarbeitung ist ein Datenverarbeitungsparadigma, das aus möglicherweise Tausenden von Datenquellen wie beispielsweise Software- oder Hardware-Sensoren in Form eines Datenstroms fortlaufend erhaltene Daten liest und dann Streaming-Daten berechnet, um ein Analyseergebnis der Datenverarbeitung bereitzustellen.
  • Bei Streaming-Daten kann es sich um ein breites Spektrum an Daten wie folgt handeln: zum Beispiel Finanztransaktionsdaten; Protokolldateidaten, die von beliebigen Sensoren erzeugt werden, wie beispielsweise Internet-of-Things-(loT-)Einheiten, elektrischen Energiemessgeräten, Gasmessgeräten, Wassermessgeräten, In-game-Player-Aktivität, mobilen oder Web-Anwendungen, einem RFID-Tag, IC-Karten, die einen Pendlerpass oder eine Kreditkarte beinhalten, oder aus einem Mikroblog erhaltene Textinformationen. Streaming-Daten können, ohne darauf beschränkt zu sein, kleine Größen haben (zum Beispiel in der Größenordnung von Kilobyte).
  • Oftmals müssen Streaming-Daten datensatzweise oder über gleitende Zeitfenster hinweg sequenziell und des Weiteren inkrementell verarbeitet werden und sie können für ein breites Analytikspektrum wie beispielsweise Korrelationen, Aggregationen, Filtern und Sampling verwendet werden.
  • Eine Verarbeitung von Streaming-Daten kann in Fällen vorteilhaft sein, in denen neue dynamische Daten fortlaufend erzeugt werden. Folglich erfordert das Verarbeiten der Streaming-Daten ein Aufnehmen von Streaming-Daten in Echtzeit und ein Aktualisieren einer Datenbankrepository unter Verwendung eines Caches.
  • Dies sind einige bekannte Techniken zur Verarbeitung von Streaming-Daten, wobei jede Nachteile hat. Eine herkömmliche Lösung verwendet einen Datenbank-Cache und eine In-Memory-Datenbank als Datenbank-Cache. Diese herkömmliche Lösung hat jedoch einen Nachteil in Form von einer schlechten Durchführung in Echtzeit. Diese herkömmliche Lösung ermöglicht eine Anwendung, die aus einem Datenbank-Cache und einer Datenbank, die Daten in regelmäßigen Abständen mit dem Datenbank-Cache synchronisiert, lesen/schreiben kann. Der Datenbank-Cache wird während der Synchronisierung mit der Datenbank gesperrt und daher werden Zugriffe (Lese- und/oder Schreibzugriffe) aus der Anwendung während der Synchronisierung angehalten. Folglich kann eine Durchführung in Echtzeit gemäß der vorstehenden herkömmlichen Lösung nicht erreicht werden. Diese herkömmliche Lösung (traditional solution) wird hierin als TS1 bezeichnet.
  • Eine weitere bekannte Technik verwendet einen datenstrombasierten Datenbank-Cache. Diese Lösung hat jedoch einen Nachteil in Form von Inkonsistenz bei neu ankommenden Daten. Diese Technik schließt eine Anwendung ein, die in eine Datenbank schreiben kann, die Datenbank synchronisiert sich in regelmäßigen Abständen mit einem Datenbank-Cache und die Anwendung kann Daten aus dem Datenbank-Cache lesen. Ankommende Daten werden zuerst direkt in die Datenbank geschrieben und dann erfolgt die Synchronisierung zwischen der Datenbank und dem Datenbank-Cache. Wenn die Anwendung versucht, die neu ankommenden Daten zu lesen, bevor die Synchronisierung abgeschlossen ist, findet sie daher möglicherweise keine Daten vor. Anders ausgedrückt, die Anwendung kann neu ankommende Daten erst lesen, nachdem die Synchronisierung abgeschlossen ist. Folglich kann gemäß der vorstehenden Lösung bei neu ankommenden Daten keine Konsistenz erreicht werden.
  • Eine dritte bekannte Technik schließt ein mehrschichtiges Zwischenspeicherungssystem ein, was bedeutet, dass aus der Hauptdatenbank abgerufene Daten zuerst in dem globalen Redis-Datenspeicher (langsamer globaler Cache) und auch in dem lokalen APC-Cache (schneller lokaler Cache) zwischengespeichert werden. Das mehrschichtige Zwischenspeicherungssystem benötigt jedoch zusätzliche Zeit, um neu ankommende Daten zu lesen. Bei dieser Technik wird eine Schreiboperation durchgeführt, indem ankommende Daten sowohl in den globalen Cache als auch in die Datenbank geschrieben werden. Eine Leseoperation wird zunächst durchgeführt, indem Daten aus dem lokalen Cache gelesen werden, und wenn in dem lokalen Cache keine Daten gefunden werden, werden die Daten zuerst aus der Datenbank in den globalen Cache und dann anschließend aus dem globalen Cache in den lokalen Cache kopiert, um Daten aus dem lokalen Cache zu lesen. Daher kann bei neu ankommende Daten Konsistenz erreicht werden, jedoch wird aufgrund des Kopierens der neu ankommenden Daten aus der Datenbank in den globalen Cache und dann anschließend aus dem globalen Cache in den lokalen Cache oder des Kopierens der neu ankommenden Daten aus dem globalen Cache in den lokalen Cache zusätzliche Zeit benötigt, um neu ankommende Daten zu lesen. Folglich kann eine Durchführung in Echtzeit gemäß dem mehrschichtigen Zwischenspeicherungssystem nicht erreicht werden.
  • Folglich kann es, verglichen mit allen bekannten Techniken, einen bisher unerfüllten Bedarf geben, Konsistenz bei neu ankommenden Daten und bei der Verarbeitung von Streaming-Daten eine Durchführung in Echtzeit zu erreichen.
  • Folglich besteht in der Technik ein Bedarf, das vorstehend genannte Problem anzugehen.
  • KU RZDARSTELLU NG
  • Aspekte der vorliegenden Erfindung sind auf ein Verfahren, ein Informationsverarbeitungssystem und ein Computerprogrammprodukt zur Verarbeitung von Streaming-Daten gerichtet.
  • Von einem ersten Aspekt aus betrachtet, stellt die vorliegende Erfindung ein von einem Computer ausgeführtes Verfahren zur Verarbeitung von Streaming-Daten bereit, das aufweist: Bereitstellen eines ersten Cachebereichs und eines zweiten Cachebereichs in einem Cache in einem Informationsverarbeitungssystem, das eine Datenbankrepository und den Cache für die Datenbankrepository aufweist; Empfangen, in einem ersten Zeitfenster, von Streaming-Daten und Schreiben der Streaming-Daten in den ersten Cachebereich; Verhindern, in dem ersten Zeitfenster, des Durchführens einer Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository; Ermöglichen, in mindestens einem Teil des ersten Zeitfensters, einer Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich; und Ermöglichen, nach dem Ablauf des ersten Zeitfensters, einer Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Informationsverarbeitungssystem bereit, das aufweist: einen oder mehrere Prozessoren; einen Speicher, der ein Programm speichert, das, wenn es auf dem Prozessor ausgeführt wird, eine Operation zur Verarbeitung von Streaming-Daten durchführt; eine Datenbankrepository; und einen Cache für die Datenbankrepository, wobei der Cache aufweist: einen ersten Cachebereich, der verwendet wird, um, in einem ersten Zeitfenster, eine Aufgabe des Empfangens von Streaming-Daten und des Schreibens der Streaming-Daten in den ersten Cachebereich durchzuführen, ohne eine Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository durchzuführen; und einen zweiten Cachebereich, der verwendet wird, um in mindestens einem Teil des ersten Zeitfensters eine Aufgabe der Synchronisierung mit der Datenbankrepository durchzuführen; und wobei das Informationsverarbeitungssystem nach dem Ablauf des ersten Zeitfensters eine Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository durchführt.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zur Verarbeitung von Streaming-Daten bereit, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, das von einer Verarbeitungsschaltung gelesen werden kann und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren zur Durchführung der erfindungsgemäßen Schritte durchzuführen.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem durch einen Computer lesbaren Datenträger gespeichert ist und in den internen Speicher eines digitalen Computers geladen werden kann, wobei das Computerprogramm Teile von Software-Code aufweist, wenn das Programm auf einem Computer ausgeführt wird, um die erfindungsgemäßen Schritte durchzuführen.
  • Ein Computer stellt einen ersten Cachebereich und einen zweiten Cachebereich in einem Cache in einem Informationsverarbeitungssystem bereit, das eine Datenbankrepository und den Cache für die Datenbankrepository aufweist. Der Computer empfängt in einem ersten Zeitfenster Streaming-Daten und schreibt die Streaming-Daten in den ersten Cachebereich. Der Computer verhindert, in dem ersten Zeitfenster, das Durchführen einer Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository. Der Computer ermöglicht, in mindestens einem Teil des ersten Zeitfensters, eine Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich. Der Computer ermöglicht, nach dem Ablauf des ersten Zeitfensters, eine Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository.
  • Die vorstehende Kurzdarstellung zielt nicht darauf ab, jede veranschaulichte Ausführungsform oder jede Ausführung der vorliegenden Offenbarung zu beschreiben.
  • Figurenliste
  • Die vorliegende Erfindung wird nun lediglich beispielhalber unter Bezugnahme auf bevorzugte Ausführungsformen beschrieben, die in den folgenden Figuren veranschaulicht sind:
    • 1 ist ein Blockschaltbild, das ein als Informationsverarbeitungssystem verwendetes Computersystem gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • Die 2A und 2B sind Blockschaltbilder, die ein Verfahren zur Verarbeitung von Streaming-Daten gemäß Ausführungsform der vorliegenden Offenbarung darstellen.
    • Die 3A und 3B sind Blockschaltbilder, die ein Verfahren zur Verarbeitung von Streaming-Daten gemäß Ausführungsform der vorliegenden Offenbarung darstellen.
    • 4 ist ein Ablaufplan, der einen Prozess zur Verarbeitung von Streaming-Daten gemäß Ausführungsform der vorliegenden Offenbarung darstellt.
    • Die 5A und 5B sind Ablaufpläne, die einen Prozess zur Verarbeitung von Streaming-Daten gemäß Ausführungsform der vorliegenden Offenbarung darstellen.
    • 6 zeigt ein Beispiel von gemäß einer Ausführungsform der vorliegenden Offenbarung erhaltenen Ergebnissen.
    • 7 ist ein Übersichts-Funktionsblockschaltbild zur Darstellung einer Computersystem-Hardware in Bezug auf den in 4 beschriebenen Prozess.
  • Während die Erfindung offen für verschiedene Modifikationen und alternative Formen ist, wurden Einzelheiten der Erfindung beispielhalber in den Zeichnungen gezeigt und werden ausführlich beschrieben. Es sollte jedoch klar sein, dass nicht beabsichtigt ist, die Erfindung auf die jeweiligen beschriebenen Ausführungsformen zu beschränken. Im Gegenteil ist beabsichtigt, alle Modifikationen, Äquivalente und Alternativen, die unter die Wesensart und den Umfang der Erfindung fallen, abzudecken.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zum Zweck der Veranschaulichung, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Modifikationen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlicher Technologien zu erklären bzw. um anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • Wie vom Fachmann erkannt wird, kann es sich bei Ausführungsformen der vorliegenden Offenbarung um ein Verfahren, ein Computersystem oder ein Computerprogrammprodukt handeln. Folglich kann eine Ausführungsform der vorliegenden Offenbarung die Form einer ganz auf Hardware basierenden Ausführungsform, einer ganz auf Software basierenden Ausführungsform, darunter, zum Beispiel, Firmware, residente Software und Mikrocode und dergleichen, oder die Form einer Ausführungsform annehmen, die softwarebasierte und hardwarebasierte Aspekte in sich vereint, welche hierin insgesamt als eine „Schaltung“, ein „Modul“ oder ein „System“ bezeichnet werden können.
  • In der Verwendung hierin sollte der Ausdruck „ein(e)/ein(e) einzelne(r/s)“ als „mindestens ein/eine“ verstanden werden. Der Ausdruck „weist, weisen ein, eine(n)/ein, ein(e) einzelne(r/s) auf“/ein, eine(n)/ein, ein(e) einzelne(r/s) aufweisend‟ sollte als „weist, weisen mindestens ein, eine(n)/mindestens ein, eine(n) aufweisend“ verstanden werden. Der Ausdruck „weist, weisen auf/aufweisend“ sollte als „weist, weisen mindestens auf/mindestens aufweisend“ verstanden werden. Der Ausdruck „/“ sollte als „und/oder“ verstanden werden.
  • Um Begriffe in der Verwendung hierin klarer zu definieren, werden nachstehend als Beispiel dienende Definitionen der Begriffe bereitgestellt, dies sollte im weiteren Sinne ausgelegt werden, wie dem Fachmann in der Technik oder auf einem technischen Gebiet, das die vorliegende Offenbarung betrifft, bekannt ist.
  • In der Verwendung hierin kann sich der Begriff „Streaming-Daten“ auf beliebige Daten beziehen, die fortlaufend erzeugt werden. Streaming-Daten können aus derselben Quelle oder aus verschiedenen Quellen erhalten werden, zum Beispiel, ohne darauf beschränkt zu sein, einer Finanztransaktion; beliebigen Sensoren wie beispielsweise Internet-of-Things-(loT-)Einheiten, elektrischen Energiemessgeräten, Gasmessgeräten, Wassermessgeräten, In-game-Player-Aktivität, mobilen oder Web-Anwendungen, einem RFID-Tag, IC-Karten, die einen Pendlerpass und eine Kreditkarte beinhalten, oder einem Mikroblog.
  • In der Verwendung hierin kann sich der Begriff „Datenbankrepository“ auf einen beliebigen Speicher zur Speicherung von Streaming-Daten beziehen. Bei der Datenbankrepository kann es sich um eine oder mehrere Datenbanken handeln. Die Datenbankrepository kann beliebige Daten, darunter Metadaten, speichern.
  • In der Verwendung hierin kann sich der Begriff „Cache“ auf einen Speicher beziehen, der Streaming-Daten temporär speichern und als Cache für eine Datenbankrepository verwendet werden kann. Streaming-Daten können zwischen der Datenbankrepository und einem Cache synchronisiert werden.
  • In der Verwendung hierin kann sich der Begriff „Anwendung“ auf eine beliebige Anwendung beziehen, die Daten aus dem Cache lesen und/oder Daten in den Cache schreiben kann. Bei der in einer Ausführungsform der vorliegenden Offenbarung verwendeten Anwendung kann es sich um eine Anwendung handeln, für die ursprünglich ein Zeitfenster festgelegt wurde. Bei der Anwendung, für die ursprünglich ein Zeitfenster festgelegt wurde, kann es zum Beispiel, ohne darauf beschränkt zu sein, um die folgenden Daten gehen: Crawl-Daten wie beispielsweise periodische Crawl-Daten, Stapelverarbeitungsdaten oder Sensordaten wie beispielsweise Daten eines elektrischen Energiemessgeräts, Daten eines Gasmessgeräts oder Daten eines Wassermessgeräts. Bei der in einigen Ausführungsformen der vorliegenden Offenbarung verwendeten Anwendung kann es sich um eine Anwendung handeln, bei der Datensätze nicht voneinander abhängig sind.
  • Unter Bezugnahme auf 1 ist ein Blockschaltbild dargestellt, das ein als Informationsverarbeitungssystem verwendetes Computersystem gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
  • Bei einem Computersystem (101) kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um einen Desktop, einen Laptop, ein Notebook oder einen Server-Computer handeln. Bei dem Server-Computer kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um eine Workstation, einen Einschubserver, einen Blade-Server, einen Mainframe-Server oder einen Cloud-Server handeln und er kann zum Beispiel einen Hypervisor ausführen, um eine oder mehrere virtuelle Maschinen zu erzeugen und auszuführen. Das Computersystem (101) kann eine oder mehrere CPUs (102) und einen mit einem Bus (104) verbundenen Hauptspeicher (103) aufweisen. Die CPU (102) kann zum Beispiel, ohne darauf beschränkt zu sein, auf einer 32-Bit- oder einer 64-Bit-Architektur beruhen. Die CPU (102) kann zum Beispiel, ohne darauf beschränkt zu sein, eine CPU der IBM® Power®-Serie der International Business Machines Corporation; der Core i™-Serie, der Core 2™-Serie, der Atom™-Serie, der Xeon™-Serie, der Pentium®-Serie oder der Celeron®-Serie der Intel Corporation; oder der Phenom™-Serie, der Athlon™-Serie, der Turion™-Serie oder vom Typ Sempron™ der Advanced Micro Devices, Inc. sein. IBM und Power sind Marken der International Business Machines Corporation, die weltweit in vielen Ländern eingetragen sind. Intel, Core I, Core 2, Atom, Xeon, Pentium und Celeron sind Marken oder eingetragene Marken der Intel Corporation oder ihrer Tochtergesellschaften in den Vereinigten Staaten und anderen Ländern. „Phenom“, „Athlon“, „Turion“ und „Sempron“ sind Marken der Advanced Micro Devices, Inc. in den Vereinigten Staaten, anderen Ländern oder sowohl in den Vereinigten Staaten als auch in anderen Ländern.
  • Ein Bildschirm (106) wie beispielsweise ein Flüssigkristallbildschirm (LCD, liquid crystal display) kann über einen Bildschirmcontroller (105) mit dem Bus (104) verbunden sein. Der Bildschirm (106) kann verwendet werden, um, zur Verwaltung des/der Computer(s), Informationen auf einem Computer, der über eine Übertragungsleitung mit einem Netzwerk verbunden ist, und Informationen über auf dem Computer ausgeführte Software mittels einer entsprechenden Grafikschnittstelle anzuzeigen. Der Bildschirm kann über einen berührungsempfindlichen Bildschirm oder einen nicht berührungsempfindlichen Bildschirm verfügen. Bei dem Bildschirm kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um einen LCD-Bildschirm, einen Plasmabildschirm (PDP, plasma display panel), einen organischen Elektrolumineszenzbildschirm (OEL, organic electro-luminescence display) oder einen Projektionsbildschirm handeln. Eine Platte (108), wie beispielsweise eine Festplatte oder ein Solid-State-Laufwerk (SSD, solid-state drive), und ein Laufwerk (109), wie beispielsweise ein CD-, ein DVD- oder ein BD-(Blu-ray-Platten-)Laufwerk, können über einen SATA- oder IDE-Controller (107) mit dem Bus (104) verbunden sein. Überdies können eine Tastatur (111) und eine Maus (112) über einen Tastatur-Maus-Controller (110) oder einen USB-Bus (nicht gezeigt) mit dem Bus (104) verbunden sein.
  • Ein Betriebssystem, Programme, die eine Microsoft®- Windows®-, UNIX®-Mac-OS®-, Linux®- oder eine Java®-Verarbeitungsumgebung bereitstellen, Java®-Anwendungen, eine virtuelle Java®-Maschine (VM) und ein Java®-Just-in-time-(JIT-)Compiler, wie beispielsweise J2EE®, andere Programme und beliebige Daten können auf der Platte (108) gespeichert werden, um in den Hauptspeicher geladen werden zu können. Microsoft und Windows sind Marken der Microsoft Corporation in den Vereinigten Staaten, anderen Ländern oder sowohl in den Vereinigten Staaten als auch in anderen Ländern. „UNIX“ ist eine eingetragene Marke der Open Group in den Vereinigten Staaten, anderen Ländern oder sowohl in den Vereinigten Staaten als auch in anderen Ländern; „Mac OS“ ist eine eingetragene Marke von Apple Inc. in den Vereinigten Staaten, anderen Ländern oder sowohl in den Vereinigten Staaten als auch in anderen Ländern; „Linux“ ist eine eingetragene Marke von Linus Torvalds in den Vereinigten Staaten, anderen Ländern oder sowohl in den Vereinigten Staaten als auch in anderen Ländern; und „Java“ und „J2EE“ sind eingetragene Marken von Oracle America, Inc. in den Vereinigten Staaten, anderen Ländern oder sowohl in den Vereinigten Staaten als auch in anderen Ländern.
  • Das Laufwerk (109) kann verwendet werden, um ein oder mehrere Programme, wie beispielsweise das Computerprogramm einer Ausführungsform der vorliegenden Offenbarung, zu installieren, die von einem CD-ROM, einem DVD-ROM oder einer BD auf die Platte (108) gelesen werden können, oder um beliebige Daten, die gegebenenfalls von einem CD-ROM, einem DVD-ROM oder einer BD gelesen werden können, in den Hauptspeicher (103) oder auf die Platte (108) zu laden.
  • Eine Übertragungsschnittstelle (114) kann zum Beispiel, ohne darauf beschränkt zu sein, auf dem Ethernet-Protokoll beruhen. Die Übertragungsschnittstelle (114) kann mit dem Bus (104) über einen Übertragungscontroller (113) verbunden sein, sie kann das Computersystem (101) physisch mit einer Übertragungsleitung (115) verbinden und dem TCP/IP-Übertragungsprotokoll einer Übertragungsfunktion des Betriebssystems des Computersystems (101) eine Netzwerkschnittstellenschicht bereitstellen. In diesem Fall kann die Übertragungsleitung (115) eine verdrahtete LAN-Umgebung oder eine drahtlose LAN-Umgebung sein, die auf Verbindungsstandards des drahtlosen LAN beruht, zum Beispiel, ohne darauf beschränkt zu sein, auf IEEE® 802.11a/b/g/n („IEEE“ ist eine eingetragene Marke des Institute of Electrical and Electronics Engineers, Inc. in den Vereinigten Staaten, anderen Ländern oder sowohl in den Vereinigten Staaten als auch in anderen Ländern).
  • Die 2A, 2B, 3A und 3B veranschaulichen jeweils verschiedene Blockschaltbilder, die ein Verfahren zur Verarbeitung von Streaming-Daten gemäß Ausführungsform der vorliegenden Offenbarung darstellen.
  • Unter Bezugnahme auf die 2A und 2B veranschaulichen die 2A und 2B eine Ausführungsform, bei der ein Cache über ein aus einem ersten Cachebereich und einem zweiten Cachebereich bestehendes Paar verfügt.
  • Das Informationsverarbeitungssystem (201) kann dem in 1 beschriebenen Computersystem (101) entsprechen. Das Informationsverarbeitungssystem (201) kann über einen oder mehrere Prozessoren (nicht gezeigt) und einen Speicher (nicht gezeigt) verfügen, der ein Programm speichert, das, wenn es auf dem Prozessor ausgeführt wird, eine Operation gemäß einer Ausführungsform der vorliegenden Offenbarung durchführt. Des Weiteren kann das Informationsverarbeitungssystem (201) über einen Cache (211), eine Schnittstelle zu einer Anwendung (221) und eine Datenbankrepository (291) sowie optional eine Anwendung (241) verfügen.
  • Der Cache (211) kann zur temporären Speicherung von Streaming-Daten verwendet werden, bevor die Streaming-Daten in der Datenbankrepository (291) gespeichert werden, und auf ihn kann aus der Anwendung (241) durch die Schnittstelle (221) zugegriffen werden.
  • Die Schnittstelle (221) kann verwendet werden, um eine Anweisung zum Schreiben von Daten in den Cache (211), eine Anweisung zum Lesen von Daten aus dem Cache (211) oder eine Kombination daraus zu empfangen.
  • Die Anwendung (241) kann gegebenenfalls auf den Cache (211) zuzugreifen, um ankommende Streaming-Daten in Echtzeit zu verarbeiten. Die Anwendung (241) kann eine Anweisung zum Schreiben von Daten in den Cache (211), eine Anweisung zum Lesen von Daten aus dem Cache (211) oder eine Kombination daraus an das Informationsverarbeitungssystem (201) senden. Die Anwendung (241) kann in dem Speicher gespeichert werden, mit dem das Informationsverarbeitungssystem (201) ausgestattet ist; oder sie kann in einem anderen System als dem Informationsverarbeitungssystem (201) gespeichert werden und durch die Schnittstelle (221) auf den Cache (211) zugreifen.
  • Die Datenbankrepository (291) kann zum Speichern von Streaming-Daten verwendet werden.
  • Unter Bezugnahme auf 2A stellt das Informationsverarbeitungssystem (201) zunächst einen ersten Cachebereich (231) und einen zweiten Cachebereich (232) im Cache (211) bereit. Um den ersten Cachebereich (231) und den zweiten Cachebereich (232) bereitzustellen, kann das Informationsverarbeitungssystem (201) im Cache (211) eine für den ersten Cachebereich (231) verwendete Adresse und auch eine für den zweiten Cachebereich (232) verwendete Adresse angeben.
  • Der erste Cachebereich (231) und der zweite Cachebereich (232) haben jeweils eine der folgenden beiden Aufgaben: Einer soll die in einem vordefinierten Zeitfenster ankommenden Streaming-Daten in seinen Cachebereich schreiben, ohne eine Synchronisierung zwischen seinem Cachebereich und der Datenbankrepository (291) durchzuführen; der andere soll Daten zwischen der Datenbankrepository und dem zweiten Cachebereich in dem vorstehenden vordefinierten Zeitfenster synchronisieren. Nach dem Ablauf des vorstehenden vordefinierten Zeitfensters wird die Aufgabe des ersten Cachebereichs gegen die Aufgabe des zweiten Cachebereichs getauscht. Dieses Tauschen wird nach dem Ablauf eines nächsten Zeitfensters (zweiten, dritten, vierten usw. Zeitfensters) wiederholt vorgenommen.
  • Wie in 2A gezeigt ist, hat der erste Cachebereich (231) zunächst eine Aufgabe, die in einem vordefinierten Zeitfenster (nachstehend auch als „ein erstes Zeitfenster“ bezeichnet) ankommenden Streaming-Daten in den ersten Cachebereich (231) zu schreiben, ohne eine Synchronisierung zwischen dem ersten Cachebereich (231) und der Datenbankrepository (291) durchzuführen; und der zweite Cachebereich (232) hat zunächst eine Aufgabe, Daten zwischen der Datenbankrepository (291) und dem zweiten Cachebereich (232) in dem ersten Zeitfenster zu synchronisieren.
  • Das Informationsverarbeitungssystem (201) empfängt die in dem ersten Zeitfenster ankommenden Streaming-Daten. Das Informationsverarbeitungssystem (201) schreibt die Streaming-Daten in dem ersten Zeitfenster in den ersten Cachebereich (231), ohne eine Synchronisierung zwischen dem ersten Cachebereich (231) und der Datenbankrepository (291) durchzuführen. Somit ist eine Synchronisierung zwischen dem ersten Cachebereich (231) und der Datenbankrepository (291) in dem ersten Zeitfenster nicht erlaubt (wie in 2A durch eine punktierte Linie und ein eingekreistes „X“ angegeben ist). Indes ist eine Synchronisierung zwischen der Datenbankrepository (291) und dem zweiten Cachebereich (232) in mindestens einem Teil des ersten Zeitfensters gestattet. Zum Beispiel wird die Erlaubnis zur Synchronisierung gegeben, bis die Synchronisierung zwischen der Datenbankrepository (291) und dem zweiten Cachebereich (232) abgeschlossen ist.
  • In einigen Ausführungsformen kann der erste Cachebereich (231) in dem ersten Zeitfenster mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Operation des Schreibens von Streaming-Daten in den ersten Cachebereich (231) beendet ist; und der zweite Cachebereich (232) kann mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Synchronisierung zwischen dem zweiten Cachebereich (232) und der Datenbankrepository (291) beendet ist, um ein Schreiben der Streaming-Daten in den zweiten Cachebereich (232) zu verhindern. Die Sperrung für den ersten Cachebereich (231) mittels einer Tabellensperre kann erfolgen, indem der ganze erste Cachebereich (231) bei einem Zugriff aus der Anwendung (241) auf den ersten Cachebereich (231) gesperrt wird. Ebenso kann die Sperrung für den zweiten Cachebereich (232) mittels einer Tabellensperre erfolgen, indem der ganze zweite Cachebereich (232) bei einem Zugriff aus der Anwendung (241) auf den zweiten Cachebereich (232) gesperrt wird.
  • In einigen Ausführungsformen kann der erste Cachebereich (231) in dem ersten Zeitfenster mittels einer Hashwertindex-Basis gesperrt werden, zum Beispiel, bis eine Operation des Schreibens von Streaming-Daten in den ersten Cachebereich (231) beendet ist; und der zweite Cachebereich (232) kann mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Synchronisierung zwischen dem zweiten Cachebereich (232) und der Datenbankrepository (291) beendet ist, um ein Schreiben der Streaming-Daten in den zweiten Cachebereich (232) zu verhindern. Die Sperrung für den ersten Cachebereich (231) mittels einer Hashwertindex-Basis kann erfolgen, indem der erste Cachebereich (231) auf der Grundlage einer Hashwertindex-Basis bei einem Zugriff aus der Anwendung (241) auf den ersten Cachebereich (231) gesperrt wird. Die Sperrung für den zweiten Cachebereich (232) mittels einer Tabellensperre kann erfolgen, indem der ganze zweite Cachebereich (232) bei einem Zugriff aus der Anwendung (241) auf den zweiten Cachebereich (232) gesperrt wird.
  • In dem ersten Zeitfenster kann die Anwendung (241) die Daten in dem zweiten Cachebereich (232) lesen, darf aber aufgrund der vorstehenden, für den zweiten Cachebereich (232) erfolgten Sperrung keine Daten in den zweiten Cachebereich (232) schreiben (wie in 2A durch eine punktierte Linie und ein eingekreistes „X“ angegeben ist).
  • Unter Bezugnahme auf 2B ist dieselbe Umgebung dargestellt, wobei das erste Zeitfenster nun abgelaufen ist. Nach dem Ablauf des ersten Zeitfensters tauscht das Informationsverarbeitungssystem (201) die Aufgabe des ersten Cachebereichs gegen die Aufgabe des zweiten Cachebereichs. Das Informationsverarbeitungssystem (201) ermöglicht eine Synchronisierung zwischen dem ersten Cachebereich (231) und der Datenbankrepository (291) nach dem Ablauf des ersten Zeitfensters (wie in 2B durch eine durchgezogene Linie und kein eingekreistes „X“ angegeben ist). Indes blockiert das Informationsverarbeitungssystem (201) eine Synchronisierung zwischen der Datenbankrepository (291) und dem zweiten Cachebereich (232) nach dem Ablauf des ersten Zeitfensters (wie in 2B durch eine punktierte Linie und ein eingekreistes „X“ angegeben ist).
  • Nach dem Ablauf des ersten Zeitfensters beginnt das neue Zeitfenster (d.h. ein zweites Zeitfenster). Das Informationsverarbeitungssystem (201) schreibt neu ankommende Streaming-Daten in dem zweiten Zeitfenster in den zweiten Cachebereich (232), ohne eine Synchronisierung zwischen der Datenbankrepository (291) und dem zweiten Cachebereich (232) durchzuführen. Somit ist eine Synchronisierung zwischen der Datenbankrepository (291) und dem zweiten Cachebereich (232) in dem zweiten Zeitfenster nicht erlaubt. Indes ist eine Synchronisierung zwischen dem ersten Cachebereich (231) und der Datenbankrepository (291) in mindestens einem Teil des zweiten Zeitfensters gestattet.
  • In einigen Ausführungsformen kann der zweite Cachebereich (232) in dem zweiten Zeitfenster mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Operation des Schreibens der neu ankommenden Streaming-Daten in den zweiten Cachebereich (232) beendet ist; und der erste Cachebereich (232) kann mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Synchronisierung zwischen der Datenbankrepository (291) und dem ersten Cachebereich (231) beendet ist, um ein Schreiben der Streaming-Daten in den ersten Cachebereich (231) zu verhindern. Die Sperrung für den zweiten Cachebereich (232) mittels einer Tabellensperre kann erfolgen, indem der ganze zweite Cachebereich (232) bei einem Zugriff aus der Anwendung (241) auf den zweiten Cachebereich (232) gesperrt wird. Ebenso kann die Sperrung für den ersten Cachebereich (231) mittels einer Tabellensperre erfolgen, indem der ganze erste Cachebereich (231) bei einem Zugriff aus der Anwendung (241) auf den ersten Cachebereich (231) gesperrt wird.
  • In einigen Ausführungsformen kann der zweite Cachebereich (232) in dem zweiten Zeitfenster mittels einer Hashwertindex-Basis gesperrt werden, zum Beispiel, bis eine Operation des Schreibens der neu ankommenden Streaming-Daten in den zweiten Cachebereich (232) beendet ist; und der erste Cachebereich (231) kann mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Synchronisierung zwischen der Datenbankrepository (291) und dem ersten Cachebereich (231) beendet ist, um ein Schreiben der neu ankommenden Streaming-Daten in den ersten Cachebereich (231) zu verhindern. Die Sperrung für den zweiten Cachebereich (232) mittels einer Hashwertindex-Basis kann erfolgen, indem der zweite Cachebereich (232) auf der Grundlage einer Hashwertindex-Basis bei einem Zugriff aus der Anwendung (241) auf den zweiten Cachebereich (232) gesperrt wird. Die Sperrung für den ersten Cachebereich (231) mittels einer Tabellensperre kann erfolgen, indem der ganze erste Cachebereich (231) bei einem Zugriff aus der Anwendung (241) auf den ersten Cachebereich (231) gesperrt wird.
  • In dem zweiten Zeitfenster kann die Anwendung (241) die Daten in dem ersten Cachebereich (231) lesen, darf aber aufgrund der vorstehenden, für den ersten Cachebereich (231) erfolgten Sperrung keine Daten in den ersten Cachebereich (231) schreiben (wie in 2B durch eine punktierte Linie und ein eingekreistes „X“ angegeben ist).
  • Unter erneuter Bezugnahme auf 2A tauscht das Informationsverarbeitungssystem (201) nach dem Ablauf des zweiten Zeitfensters die Aufgabe des ersten Cachebereichs wieder gegen die Aufgabe des zweiten Cachebereichs. Folglich verarbeitet das Informationsverarbeitungssystem (201) die neu ankommenden Daten in einem dritten Zeitfenster gemäß dem in 2A beschriebenen Blockschaltbild.
  • Wie vorstehend erwähnt wurde, tauscht das Informationsverarbeitungssystem (201) nach dem Ablauf eines vordefinierten Zeitfensters die Aufgabe des ersten Cachebereichs gegen die Aufgabe des zweiten Cachebereichs, um die Streaming-Daten zu verarbeiten. Dieses Tauschen kann für unbegrenzte Zeit mit ungeradzahligen (z.B. ersten, dritten, fünften) Zeitfenstern mittels der in 2A dargestellten Aufgaben und mit geradzahligen (z.B. zweiten, vierten, sechsten) Zeitfenstern mittels der in 2B dargestellten Aufgaben fortgesetzt werden.
  • Die in den 2A und 2B beschriebenen Ausführungsformen ermöglichen eine Durchführung in Echtzeit einhergehend mit Konsistenz für neu ankommende Streaming-Daten.
  • Unter Bezugnahme auf die 3A und 3B ist eine Ausführungsform veranschaulicht, bei der ein Cache über mehrere aus ersten Cachebereichen und zweiten Cachebereichen bestehende Paare verfügt.
  • Das Informationsverarbeitungssystem (301) kann dem in 1 beschriebenen Computersystem (101) entsprechen. Das Informationsverarbeitungssystem (301) kann über einen oder mehrere Prozessoren (nicht gezeigt) und einen Speicher (nicht gezeigt) verfügen, der ein Programm speichert, das, wenn es auf dem Prozessor ausgeführt wird, eine Operation gemäß einer Ausführungsform der vorliegenden Offenbarung durchführt. Des Weiteren kann das Informationsverarbeitungssystem (301) über einen Cache (311), mehrere Schnittstellen (321, 322 und 323) zu einer Anwendung und eine Datenbankrepository (391) sowie optional mehrere Anwendungen (341, 342 und 343) verfügen.
  • Die 3A und 3B veranschaulichen drei Schnittstellen (321, 322 und 323) und drei Anwendungen (341, 342 und 343). Die Anzahl der Schnittstellen und Anwendungen kann jedoch in Abhängigkeit von der Ausführung von Ausführungsformen der vorliegenden Offenbarung unterschiedlich sein.
  • Des Weiteren veranschaulichen die 3A und 3B, dass eine Anwendung einer Schnittstelle als ein aus der Anwendung und der Schnittstelle bestehendes Paar zugeordnet ist (341 und 321; 342 und 322; sowie 343 und 323 als das Paar) und des Weiteren, dass eine Schnittstelle einem aus einem ersten und einem zweiten Cachebereich bestehenden Paar zugeordnet ist. Jedoch kann eine Anwendung einer oder mehreren Schnittstellen zugeordnet sein oder umgekehrt und eine Schnittstelle kann einem oder mehreren aus ersten und zweiten Cachebereichen bestehenden Paaren zugeordnet sein oder umgekehrt.
  • Der Cache (311) entspricht dem in den 2A und 2B beschriebenen Cache (211). Der Cache (311) weist die folgenden drei aus dem ersten Cachebereich und dem zweiten Cachebereich bestehenden Paare auf: das erste aus dem ersten Cachebereich-1 (331) und dem zweiten Cachebereich-1 (332) bestehende Paar; das zweite aus dem ersten Cachebereich-2 (333) und dem zweiten Cachebereich-2 (334) bestehende Paar; und das dritte aus dem ersten Cachebereich-3 (335) und dem zweiten Cachebereich-3 (336) bestehende Paar.
  • Die Schnittstellen (321, 322 und 323) entsprechen der in den 2A und 2B beschriebenen Schnittstelle (221). Die Schnittstelle-1 (321) kann zum Empfangen, von der Anwendung-1 (341), einer Anweisung zum Schreiben von Daten in den ersten Cachebereich-1 (331) oder den zweiten Cachebereich-1 (332), einer Anweisung zum Lesen von Daten aus dem ersten Cachebereich-1 (331) oder dem zweiten Cachebereich-1 (332) oder einer Kombination daraus durch die Schnittstelle-1 (321) verwendet werden. Ebenso kann die Schnittstelle-2 (322) zum Empfangen, von der Anwendung-2 (342), einer Anweisung zum Schreiben von Daten in den ersten Cachebereich-2 (333) oder den zweiten Cachebereich-2 (334), einer Anweisung zum Lesen von Daten aus dem ersten Cachebereich-2 (333) oder dem zweiten Cachebereich-2 (334) oder einer Kombination daraus durch die Schnittstelle-2 (322) verwendet werden. Ebenso kann die Schnittstelle-3 (323) zum Empfangen, von der Anwendung-3 (343), einer Anweisung zum Schreiben von Daten in den ersten Cachebereich-3 (335) oder den zweiten Cachebereich-3 (336), einer Anweisung zum Lesen von Daten aus dem ersten Cachebereich-3 (335) oder dem zweiten Cachebereich-3 (336) oder einer Kombination daraus durch die Schnittstelle-3 (323) verwendet werden.
  • Die Anwendungen (341, 342 und 343) entsprechen der in den 2A und 2B beschriebenen Anwendung (241). Die Anwendung (341) kann an das Informationsverarbeitungssystem (301) eine Anweisung zum Schreiben von Daten in den ersten Cachebereich-1 (331) oder den zweiten Cachebereich-1 (332), eine Anweisung zum Lesen von Daten aus dem ersten Cachebereich-1 (331) oder dem zweiten Cachebereich-1 (332) oder eine Kombination daraus senden. Ebenso kann die Anwendung (342) an das Informationsverarbeitungssystem (301) eine Anweisung zum Schreiben von Daten in den ersten Cachebereich-2 (333) oder den zweiten Cachebereich-2 (334), eine Anweisung zum Lesen von Daten aus dem ersten Cachebereich-2 (333) oder dem zweiten Cachebereich-2 (334) oder eine Kombination daraus senden. Ebenso kann die Anwendung (343) an das Informationsverarbeitungssystem (303) eine Anweisung zum Schreiben von Daten in den ersten Cachebereich-3 (335) oder den zweiten Cachebereich-3 (336), eine Anweisung zum Lesen von Daten aus dem ersten Cachebereich-3 (335) oder dem zweiten Cachebereich-3 (336) oder eine Kombination daraus senden. Die Anwendungen (341, 342 und 343) können in dem Speicher gespeichert werden, mit dem das Informationsverarbeitungssystem (301) ausgestattet ist; oder sie können in einem anderen System als dem Informationsverarbeitungssystem (301) gespeichert werden und durch die Schnittstellen (321, 322 bzw. 323) auf den Cache (311) zugreifen.
  • Die Datenbankrepository (391) entspricht der in den 2A und 2B beschriebenen Datenbankrepository.
  • Unter Bezugnahme auf 3A stellt das Informationsverarbeitungssystem (301) zunächst das vorstehende erste, zweite und dritte aus einem ersten Cachebereich und einem zweiten Cachebereich bestehende Paar im Cache (311) bereit. Um das vorstehende erste, zweite und dritte Paar bereitzustellen, kann das Informationsverarbeitungssystem (301) im Cache (311) eine für jeden der ersten Cachebereiche (331, 333 und 335) verwendete Adresse und auch eine für jeden der zweiten Cachebereiche (332, 334 und 336) verwendete Adresse angeben.
  • Die ersten Cachebereiche (331, 333 und 335) und die zweiten Cachebereiche (332, 334 und 336) haben dieselbe Aufgabe wie der erste Cachebereich (231) und der zweite Cachebereich (232), die in den 2A bzw. 2B beschrieben ist.
  • Wie in 3A gezeigt ist, haben die ersten Cachebereiche (331, 333 und 335) zunächst die Aufgaben, die in einem vordefinierten Zeitfenster (nachstehend auch als „ein erstes Zeitfenster“ bezeichnet) ankommenden Streaming-Daten in die ersten Cachebereiche (331, 333 und 335) zu schreiben, ohne eine Synchronisierung zwischen einem jeden der ersten Cachebereiche (331, 333 und 335) und der Datenbankrepository (391) durchzuführen; und die zweiten Cachebereiche (332, 334 und 336) haben zunächst die Aufgaben, Daten zwischen der Datenbankrepository (391) und zweiten Cachebereichen (332, 334 bzw. 336) in dem ersten Zeitfenster zu synchronisieren.
  • Das Informationsverarbeitungssystem (301) empfängt die in dem ersten Zeitfenster ankommenden Streaming-Daten. Das Informationsverarbeitungssystem (201) schreibt die Streaming-Daten in dem ersten Zeitfenster in die ersten Cachebereiche (331, 333 und 335), ohne eine Synchronisierung zwischen einem jeden der ersten Cachebereiche (331, 333 und 335) und der Datenbankrepository (391) durchzuführen. Somit ist die Synchronisierung zwischen einem jeden der ersten Cachebereiche (331, 333 und 335) und der Datenbankrepository (391) in dem ersten Zeitfenster nicht erlaubt (wie in 3A durch keine Verbindung zwischen ersten Cachebereichen (331, 333 und 335) und der Datenbankrepository (391) angegeben ist). Indes ist eine Synchronisierung zwischen der Datenbankrepository (391) und einem jeden der zweiten Cachebereiche (332, 334 und 336) in mindestens einem Teil des ersten Zeitfensters gestattet. Zum Beispiel wird die Erlaubnis zur Synchronisierung gegeben, bis die Synchronisierung zwischen der Datenbankrepository (391) und einem jeden der zweiten Cachebereiche (332, 334 und 336) abgeschlossen ist.
  • In einigen Ausführungsformen kann jeder der ersten Cachebereiche (331, 333 und 335) in dem ersten Zeitfenster mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Operation des Schreibens von Streaming-Daten in einen jeden der ersten Cachebereiche (331, 333 und 335) beendet ist; und jeder der zweiten Cachebereiche (332, 334 und 336) kann mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Synchronisierung zwischen einem jeden der zweiten Cachebereiche (332, 334 und 336) und der Datenbankrepository (391) beendet ist, um ein Schreiben der Streaming-Daten in die zweiten Cachebereiche (332, 334 und 336) zu verhindern. Die Sperrung für die ersten Cachebereiche (331, 333 und 335) mittels einer Tabellensperre kann erfolgen, indem die ganzen ersten Cachebereiche (331, 333 bzw. 335) bei einem Zugriff aus der Anwendung (341, 342 bzw. 343) auf die ersten Cachebereiche (331, 333 bzw. 335) gesperrt werden. Ebenso kann die Sperrung für die zweiten Cachebereiche (332, 334 und 336) mittels einer Tabellensperre erfolgen, indem die ganzen zweiten Cachebereiche (332, 334 bzw. 336) bei einem Zugriff aus der Anwendung (341, 342 bzw. 343) auf die zweiten Cachebereiche (332, 334 bzw. 336) gesperrt werden.
  • In einigen Ausführungsformen können die ersten Cachebereiche (331, 333 und 335) in dem ersten Zeitfenster mittels einer Hashwertindex-Basis gesperrt werden, zum Beispiel, bis eine Operation des Schreibens von Streaming-Daten in die ersten Cachebereiche (331, 333 bzw. 335) beendet ist; und die zweiten Cachebereiche (332, 334 und 336) können mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Synchronisierung zwischen den zweiten Cachebereichen (332, 334 bzw. 336) und der Datenbankrepository (391) beendet ist, um ein Schreiben der Streaming-Daten in die zweiten Cachebereiche (332, 334 bzw. 336) zu verhindern. Die Sperrung für die ersten Cachebereiche (331, 333 und 335) mittels einer Hashwertindex-Basis kann erfolgen, indem die ersten Cachebereiche (331, 333 bzw. 335) auf der Grundlage einer Hashwertindex-Basis bei einem Zugriff aus der Anwendung (341, 342 bzw. 343) auf die ersten Cachebereiche (331, 333 bzw. 335) gesperrt werden. Die Sperrung für die zweiten Cachebereiche (332, 334 und 336) mittels einer Tabellensperre kann erfolgen, indem die ganzen zweiten Cachebereiche (332, 334 bzw. 336) bei einem Zugriff aus der Anwendung (341, 342 bzw. 343) auf die zweiten Cachebereiche (332, 334 bzw. 336) gesperrt werden.
  • In dem ersten Zeitfenster kann die Anwendung (341, 342 und 343) die Daten in den zweiten Cachebereichen (332, 334 bzw. 336) lesen, darf aber aufgrund der vorstehenden, für die zweiten Cachebereiche (332, 334 bzw. 336) erfolgten Sperrung keine Daten in die zweiten Cachebereiche (332, 334 bzw. 336) schreiben (wie in 3A durch keine Verbindung zwischen den ersten Cachebereichen (331, 333 und 335) und der Anwendung (341, 342 und 343) angegeben ist).
  • Unter Bezugnahme auf 3B ist dieselbe Umgebung dargestellt, wobei das erste Zeitfenster nun abgelaufen ist. Nach dem Ablauf des ersten Zeitfensters tauscht das Informationsverarbeitungssystem (301) die Aufgabe des ersten Cachebereichs gegen die Aufgabe des zweiten Cachebereichs in jedem der vorstehenden ersten, zweiten und dritten Paare. Das Informationsverarbeitungssystem (301) ermöglicht eine Synchronisierung zwischen einem jeden der ersten Cachebereiche (331, 333 und 335) und der Datenbankrepository (391) nach dem Ablauf des ersten Zeitfensters. Indes blockiert das Informationsverarbeitungssystem (301) eine Synchronisierung zwischen der Datenbankrepository (391) und einem jeden der zweiten Cachebereiche (332, 334 und 336) nach dem Ablauf des ersten Zeitfensters (wie in 3B durch keine Verbindung zwischen zweiten Cachebereichen (332, 334 und 336) und der Datenbankrepository (391) angegeben ist).
  • Nach dem Ablauf des ersten Zeitfensters beginnt das neue Zeitfenster (d.h. ein zweites Zeitfenster). Das Informationsverarbeitungssystem (301) schreibt neu ankommende Streaming-Daten in dem zweiten Zeitfenster in die zweiten Cachebereiche (332, 334 und 336), ohne eine Synchronisierung zwischen der Datenbankrepository (391) und einem jeden der zweiten Cachebereiche (332, 334 und 336) durchzuführen. Somit ist eine Synchronisierung zwischen der Datenbankrepository (391) und einem jeden der zweiten Cachebereiche (332, 334 und 336) in dem zweiten Zeitfenster nicht erlaubt. Indes ist eine Synchronisierung zwischen einem jeden der ersten Cachebereiche (331, 333 und 335) und der Datenbankrepository (391) in mindestens einem Teil des zweiten Zeitfensters gestattet. Zum Beispiel wird die Erlaubnis zur Synchronisierung gegeben, bis die Synchronisierung zwischen einem jeden der ersten Cachebereiche (331, 333 und 335) und der Datenbankrepository (391) abgeschlossen ist.
  • In einigen Ausführungsformen können die zweiten Cachebereiche (332, 334 und 336) in dem zweiten Zeitfenster mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Operation des Schreibens der neu ankommenden Streaming-Daten in die zweiten Cachebereiche (332, 334 bzw. 336) beendet ist; und die ersten Cachebereiche (331, 333 und 335) können mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Synchronisierung zwischen der Datenbankrepository (391) und den ersten Cachebereichen (331, 333 bzw. 335) beendet ist, um ein Schreiben der Streaming-Daten in die ersten Cachebereiche (331, 333 bzw. 335) zu verhindern. Die Sperrung für die zweiten Cachebereiche (332, 334 und 336) mittels einer Tabellensperre kann erfolgen, indem die ganzen zweiten Cachebereiche (332, 334 bzw. 336) bei einem Zugriff aus der Anwendung (341, 342 bzw. 343) auf die zweiten Cachebereiche (332, 334 bzw. 336) gesperrt werden. Ebenso kann die Sperrung für die ersten Cachebereiche (331, 333 und 335) mittels einer Tabellensperre erfolgen, indem die ganzen ersten Cachebereiche (331, 333 bzw. 335) bei einem Zugriff aus der Anwendung (341, 342 bzw. 343) auf die ersten Cachebereiche (331, 333 bzw. 335) gesperrt werden.
  • In einigen Ausführungsformen können die zweiten Cachebereiche (332, 334 und 336) in dem zweiten Zeitfenster mittels einer Hashwertindex-Basis gesperrt werden, zum Beispiel, bis eine Operation des Schreibens der neu ankommenden Streaming-Daten in die zweiten Cachebereiche (332, 334 bzw. 336) beendet ist; und die ersten Cachebereiche (331, 333 und 335) können mittels einer Tabellensperre gesperrt werden, zum Beispiel, bis eine Synchronisierung zwischen der Datenbankrepository (391) und den ersten Cachebereichen (331, 333 bzw. 335) beendet ist, um ein Schreiben der neu ankommenden Streaming-Daten in die ersten Cachebereiche (331, 333 bzw. 335) zu verhindern. Die Sperrung für die zweiten Cachebereiche (332, 334 und 336) mittels einer Hashwertindex-Basis kann erfolgen, indem die zweiten Cachebereiche (332, 334 bzw. 336) auf der Grundlage einer Hashwertindex-Basis bei einem Zugriff aus der Anwendung (341, 342 bzw. 343) auf die zweiten Cachebereiche (332, 334 bzw. 336) gesperrt werden. Die Sperrung für die ersten Cachebereiche (331, 333 und 335) mittels einer Tabellensperre kann erfolgen, indem die ganzen ersten Cachebereiche (331, 333 bzw. 335) bei einem Zugriff aus der Anwendung (341, 342 bzw. 343) auf die ersten Cachebereiche (331, 333 bzw. 335) gesperrt werden.
  • In dem zweiten Zeitfenster kann die Anwendung (341, 342 und 343) die Daten in den ersten Cachebereichen (331, 333 bzw. 335) lesen, darf aber aufgrund der vorstehenden, für die ersten Cachebereiche (331, 333 bzw. 335) erfolgten Sperrung keine Daten in die ersten Cachebereiche (331, 333 bzw. 335) schreiben (wie in 3B durch keine Verbindung zwischen ersten Cachebereichen (331, 333 und 335) und der Anwendung (341, 342 und 343) angegeben ist).
  • Unter erneuter Bezugnahme auf 3A tauscht das Informationsverarbeitungssystem (301) nach dem Ablauf des zweiten Zeitfensters die Aufgabe des ersten Cachebereichs erneut gegen die Aufgabe des zweiten Cachebereichs in jedem der vorstehenden ersten, zweiten und dritten Paare. Folglich verarbeitet das Informationsverarbeitungssystem (301) die neu ankommenden Daten gemäß dem in 3A beschriebenen Blockschaltbild.
  • Wie vorstehend erwähnt wurde, tauscht das Informationsverarbeitungssystem (301) nach dem Ablauf eines vordefinierten Zeitfensters die Aufgabe des ersten Cachebereichs gegen die Aufgabe des zweiten Cachebereichs in einem jeden der vorstehenden ersten, zweiten und dritten Paare, um die Streaming-Daten zu verarbeiten. Dieses Tauschen kann für unbegrenzte Zeit mit ungeradzahligen (z.B. ersten, dritten, fünften) Zeitfenstern mittels der in 3A dargestellten Aufgaben und mit geradzahligen (z.B. zweiten, vierten, sechsten) Zeitfenstern mittels der in 3B dargestellten Aufgaben fortgesetzt werden.
  • Die in den 3A und 3B beschriebenen Ausführungsformen ermöglichen eine Durchführung in Echtzeit einhergehend mit Konsistenz für neu ankommende Streaming-Daten.
  • In den in den 3A und 3B beschriebenen Ausführungsformen können die ersten, zweiten und dritten Paare gleichzeitig in denselben Zeitfenstern verwendet werden.
  • In einer weiteren Ausführungsform können die ersten, zweiten und dritten Paare in einem jeden der verschiedenen Fenster verwendet werden. Zum Beispiel können die ersten, zweiten und dritten Paare entsprechend der Reihenfolge des Zeitfensters verwendet werden. Dies geschieht zum Beispiel unter der Bedingung, dass nur die Anwendung-1 (341) und die Schnittstelle-1 (321) verwendet werden und die ersten, zweiten und dritten Paare nur von der Schnittstelle-1 (321) verwendet werden.
  • Eine Vielfalt an Varianten kann von einem Fachmann unter Verwendung der in den 3A und 3B beschriebenen Blockschaltbilder angewendet werden.
  • 4 und die 5A und 5B veranschaulichen jeweils verschiedene Ablaufpläne, die Prozesse zur Verarbeitung von Streaming-Daten darstellen.
  • Unter Bezugnahme auf 4 ist ein Ablaufplan dargestellt, der einen Prozess zur Verarbeitung von Streaming-Daten gemäß Ausführungsform der vorliegenden Offenbarung darstellt.
  • Der Gegenstand einer jeden Operation kann ein Informationsverarbeitungssystem sein, das dem in 1 beschriebenen Computersystem (101) entsprechen kann.
  • Bei 401 beginnt das Informationsverarbeitungssystem den Prozess. Eine Länge eines vordefinierten Fensters kann im Voraus manuell oder automatisch definiert werden und kann von Daten abhängen, die von den folgenden Daten abgeleitet werden, welche gegebenenfalls aus früheren Instanzen des Prozesses erhalten wurden: zum Beispiel empfangenen Streaming-Daten, der Verarbeitungszeit der Streaming-Daten, der für eine Synchronisierung von Daten mit der Datenbankrepository benötigten Zeit oder einer Kombination daraus.
  • Bei 402 stellt das Informationsverarbeitungssystem ein oder mehrere aus ersten und zweiten Cachebereichen bestehende Paare in einem Cache in dem Informationsverarbeitungssystem bereit. Das Informationsverarbeitungssystem kann im Cache eine für den ersten Cachebereich verwendete Adresse und auch eine für den zweiten Cachebereich verwendete Adresse angeben, um jedes Paar von einem oder mehreren aus dem ersten Cachebereich und dem zweiten Cachebereich bestehenden Paaren bereitzustellen.
  • Bei 403 empfängt das Informationsverarbeitungssystem in einem vordefinierten Zeitfenster (einem ersten Zeitfenster) Streaming-Daten und schreibt die Streaming-Daten in den ersten Cachebereich, ohne eine Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository durchzuführen. Eine Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich ist in mindestens einem Teil des ersten Zeitfensters gestattet. Folglich kann das Informationsverarbeitungssystem die Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich durchführen.
  • In dem ersten Zeitfenster kann das Informationsverarbeitungssystem den ganzen ersten Cachebereich bei einem Zugriff aus der Anwendung auf den ersten Cachebereich sperren und es kann des Weiteren den ganzen zweiten Cachebereich bei einem Zugriff aus der Anwendung auf den zweiten Cachebereich sperren. Alternativ kann das Informationsverarbeitungssystem den ersten Cachebereich in dem ersten Zeitfenster auf der Grundlage einer Hashwertindex-Basis bei einem Zugriff aus der Anwendung auf den ersten Cachebereich sperren und es kann des Weiteren den ganzen zweiten Cachebereich bei einem Zugriff aus der Anwendung auf den zweiten Cachebereich sperren.
  • Bei 404 stellt das Informationsverarbeitungssystem fest, ob das erste Zeitfenster abgelaufen ist. Wenn das erste Zeitfenster abgelaufen ist, schaltet das Informationsverarbeitungssystem zum Schritt 405. Andernfalls schaltet das Informationsverarbeitungssystem wieder zum Schritt 403, um den Schritt 403 zu wiederholen.
  • Bei 405, nach dem Ablauf des ersten Zeitfensters, tauscht das Informationsverarbeitungssystem die Aufgabe des ersten Cachebereichs gegen die Aufgabe des zweiten Cachebereichs.
  • Bei 406 ermöglicht das Informationsverarbeitungssystem eine Synchronisierung zwischen dem ersten Cachebereich nach dem Tauschen bei 405 und der Datenbankrepository, blockiert aber eine Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich nach dem Tauschen bei 405. Des Weiteren schreibt das Informationsverarbeitungssystem neu ankommende Streaming-Daten in den zweiten Cachebereich nach dem Tauschen bei 405.
  • Folglich empfängt das Informationsverarbeitungssystem in einem vordefinierten Zeitfenster (einem zweiten Zeitfenster) neu ankommende Streaming-Daten und schreibt die neu ankommenden Streaming-Daten in den zweiten Cachebereich nach dem Tauschen, ohne eine Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich nach dem Tauschen durchzuführen. Eine Synchronisierung zwischen dem ersten Cachebereich nach dem Tauschen und der Datenbankrepository ist in mindestens einem Teil des zweiten Zeitfensters gestattet. Folglich kann das Informationsverarbeitungssystem die Synchronisierung zwischen dem ersten Cachebereich nach dem Tauschen und der Datenbankrepository durchführen.
  • Eine Länge des zweiten Zeitfensters kann gleich der des ersten Zeitfensters sein oder sich von dieser unterscheiden. Die Länge des zweiten Zeitfensters kann von der Anwendung in Abhängigkeit von Daten automatisch aktualisiert werden, die von den folgenden Daten abgeleitet werden, welche aus früheren Instanzen oder in dem ersten Zeitfenster erhalten wurden: zum Beispiel den empfangenen Streaming-Daten, der Verarbeitungszeit der Streaming-Daten, der für eine Synchronisierung mit der Datenbankrepository benötigten Zeit oder einer Kombination daraus. Wenn eine Länge des vordefinierten Zeitfensters aktualisiert wird, kann die aktualisierte Länge für ein nachfolgendes Zeitfenster (zum Beispiel das folgende zweite Zeitfenster) verwendet werden.
  • In dem zweiten Zeitfenster kann das Informationsverarbeitungssystem den ganzen ersten Cachebereich bei einem Zugriff aus der Anwendung auf den ersten Cachebereich nach dem Tauschen sperren und es kann des Weiteren den ganzen zweiten Cachebereich bei einem Zugriff aus der Anwendung auf den zweiten Cachebereich nach dem Tauschen sperren. Alternativ kann das Informationsverarbeitungssystem in dem zweiten Zeitfenster den ganzen ersten Cachebereich bei einem Zugriff aus der Anwendung auf den ersten Cachebereich sperren und es kann des Weiteren den zweiten Cachebereich bei einem Zugriff aus der Anwendung auf den zweiten Cachebereich auf der Grundlage einer Hashwertindex-Basis sperren.
  • Bei 407 stellt das Informationsverarbeitungssystem fest, ob das zweite Zeitfenster abgelaufen ist. Wenn das zweite Zeitfenster abgelaufen ist, schaltet das Informationsverarbeitungssystem zum Schritt 408. Andernfalls schaltet das Informationsverarbeitungssystem wieder zum Schritt 406, um den Schritt 406 zu wiederholen.
  • Bei 408, nach dem Ablauf des zweiten Zeitfensters, tauscht das Informationsverarbeitungssystem die Aufgabe des ersten Cachebereichs nach dem Tauschen erneut gegen die Aufgabe des zweiten Cachebereichs. Folglich wird dieselbe in 403 beschriebene Verarbeitung in einem dritten Zeitfenster erneut durchgeführt, und der Prozess kehrt zu 403 zurück.
  • In einem Fall, in dem ein Benutzer die Beendigung des vorstehenden Prozesses wählt, kann das Informationsverarbeitungssystem den Prozess beenden.
  • Unter Bezugnahme auf die 5A und 5B sind die 5A und 5B Ablaufpläne, die einen Prozess zur Verarbeitung von Streaming-Daten gemäß Ausführungsformen der vorliegenden Offenbarung darstellen.
  • In 5A kann der Gegenstand einer jeden Operation ein Informationsverarbeitungssystem sein, das dem in 1 beschriebenen Computersystem (101) entsprechen kann.
  • Bei 501 beginnt das Informationsverarbeitungssystem einen Teil des Prozesses. Eine Länge eines vordefinierten Fensters kann im Voraus manuell oder automatisch definiert werden, wie vorstehend erwähnt wurde.
  • Bei 502 stellt das Informationsverarbeitungssystem ein oder mehrere Paare von zwei Cachebereichen, einer vorderen Tabelle (F, front table) und einer hinteren Tabelle (B, back table), in einem Cache in dem Informationsverarbeitungssystem bereit. Das Informationsverarbeitungssystem kann im Cache eine für die vordere Tabelle verwendete Adresse und auch eine für die hintere Tabelle verwendete Adresse angeben, um jedes Paar von einem oder mehreren aus der vorderen Tabelle und der hinteren Tabelle bestehenden Paaren bereitzustellen. Die vordere Tabelle und die hintere Tabelle können dem ersten Cachebereich bzw. dem zweiten Cachebereich entsprechen, die in 4 beschrieben sind.
  • Bei 503 stellt das Informationsverarbeitungssystem fest, ob ein vordefiniertes Zeitfenster abgelaufen ist. Wenn das vordefinierte Zeitfenster abgelaufen ist, schaltet das Informationsverarbeitungssystem zu 504. Andernfalls schaltet das Informationsverarbeitungssystem wieder zu 503, bis das vordefinierte Zeitfenster abgelaufen ist.
  • Bei 504 tauscht das Informationsverarbeitungssystem eine Adresse der vorderen Tabelle gegen diejenige der hinteren Tabelle aus.
  • Bei 505 sperrt das Informationsverarbeitungssystem in einem vordefinierten Zeitfenster (einem zweiten Zeitfenster) die ganze hintere Tabelle bei einem Zugriff aus einer Anwendung auf die hintere Tabelle, steuert eine Momentaufnahme (zum Beispiel Synchronisierung) zwischen einem für die Momentaufnahme verwendeten Speicher und der hinteren Tabelle oder zwischen der Datenbankrepository und der hinteren Tabelle und entsperrt dann die hintere Tabelle. In einigen Ausführungsformen werden die Daten des Weiteren aus dem für die Momentaufnahme verwendeten Speicher in die Datenbank geschrieben. Die hintere Tabelle kann für eine Operation für die Momentaufnahme zugeordnet werden. Somit erfolgt diese Sperrung für die ganze Tabellenbasis.
  • Bei 506 sperrt das Informationsverarbeitungssystem die ganze hintere Tabelle bei einem Zugriff aus der Anwendung auf die hintere Tabelle, löscht den Inhalt der hinteren Tabelle und entsperrt dann die hintere Tabelle.
  • Nach dem Entsperren schaltet das Informationsverarbeitungssystem wieder zu 503.
  • In einem Fall, in dem ein Benutzer die Beendigung des vorstehenden Prozesses wählt, kann das Informationsverarbeitungssystem den Prozess beenden.
  • In 5B kann der Gegenstand eines jeden Schrittes ein System sein, das die Anwendung oder das Informationsverarbeitungssystem ausführt, welches die Anwendung ausführt. Nachstehend kann der Gegenstand eines jeden Schritts in 5B einfach als ein Computersystem bezeichnet werden, jedoch weist das Computersystem das System, das die Anwendung ausführt, oder das Informationsverarbeitungssystem, das die Anwendung ausführt, auf.
  • Bei 511 beginnt das Computersystem den restlichen Teil des Prozesses. Der restliche Teil kann durch eine Operation der Anwendung durchgeführt werden.
  • Bei 512 erhält das Computersystem eine vorhandene Adresse der vorderen Tabelle.
  • Bei 513 berechnet das Computersystem einen Hashwertindex, der auf den Streaming-Daten beruht, welche in die vordere Tabelle geschrieben wurden.
  • Bei 514 sperrt das Computersystem die vordere Tabelle mittels einer Hashwertindex-Basis, schreibt ankommende Streaming-Daten in die vordere Tabelle und entsperrt dann die vordere Tabelle nach dem Schreiben. Die Sperrung für die vordere Tabelle erfolgt mittels der Hashwertindex-Basis, um die Wartezeit darauf, dass das Sperren freigegeben wird, auf ein Minimum zu verringern.
  • Nach dem Entsperren schaltet das Computersystem wieder zum Schritt 512.
  • In einem Fall, in dem ein Benutzer die Beendigung des vorstehenden Prozesses wählt, kann das Computersystem den Prozess beenden.
  • Unter Bezugnahme auf 6 ist ein Beispiel von gemäß einer Ausführungsform der vorliegenden Offenbarung erhaltenen Ergebnissen dargestellt.
  • Das folgende Szenario von Experimenten wurde vorbereitet: Vier Threads, die PUT-Operationen durchführen, vier Threads, die GET-Operationen durchführen, und ein Thread, der Datenbank-Schreiboperationen durchführt, wurden jeweils fünf Mal in einem Zeitfenster von zehn Sekunden ausgeführt, um die in insgesamt 50 Sekunden abgeschlossenen PUT- und GET-Operationen zu zählen. In jeder der Datenbank-Schreiboperationen wird eine Sperrung durchgeführt, während eine Kopie des Cachedatenbankabbilds in diesem Moment in einem für die Momentaufnahme verwendeten Speicher erstellt wird, dann wird die Sperrung freigegeben und die kopierten Daten in dem für die Momentaufnahme verwendeten Speicher werden in die Datenbankrepository geschrieben. Der für die Momentaufnahme verwendete Speicher kann zwischen der Cachedatenbank und der Datenbankrepository vorbereitet werden.
  • Die folgenden vier Experimente wurden in den folgenden drei Umgebungen durchgeführt:
    • - Szenario_1: Die vorstehend mit TS1 beschriebene herkömmliche Lösung mit einer Anwendung, die aus einem Datenbankcache lesen/schreiben kann, und einer Datenbank, die Daten in regelmäßigen Abständen mit dem Datenbank-Cache mit einer Tabellensperre synchronisiert;
    • - Szenario_2a: Zwei Datenbank-Caches, jeder mit einer Tabellensperre, gemäß einer Ausführungsform der vorliegenden Offenbarung; und
    • - Szenario_2b: Zwei Datenbank-Caches, eine vordere Tabelle mit einer Sperrung auf der Grundlage der Hashwertindex-Basis und eine hintere Tabelle mit einer Sperrung der gesamten hinteren Tabelle, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • Die Tabelle (601) und der Graph (602) zeigen einen Vergleich der Anzahl der in 50 Sekunden abgeschlossenen Operationen in jedem einzelnen Szenario_1, Szenario_2a und Szenario_2b. Die Ergebnisse in Tabelle (601) zeigen, dass Ausführungsformen der vorliegenden Offenbarung, d.h. das Szenario_2a und das Szenario_2b, eine Verbesserung der Prozessgeschwindigkeit in Form von einer ungefähr vier bis sechs Mal schnelleren Prozessgeschwindigkeit als derjenigen der vorstehend beschriebenen herkömmlichen Lösung, d.h. dem Szenario_1, erreicht haben.
  • Unter Bezugnahme auf 7 ist ein Übersichts-Funktionsblockschaltbild zur Darstellung einer Computersystem-Hardware in Bezug auf den in 4 beschriebenen Prozess dargestellt.
  • Das Informationsverarbeitungssystem (701) kann dem in 1 beschriebenen Computersystem (101) entsprechen.
  • Das Informationsverarbeitungssystem (701) kann einen Cache (711), einen Bereitstellungsteil (741), einen Sperrungsteil (742), einen Empfangsteil (743), einen Schreibteil (744), einen Synchronisierungsteil (745) und einen Tauschteil (746) sowie optional einen Zeitfensterteil (747) aufweisen.
  • Der Cache (711) kann über ein oder mehrere aus einem ersten Cachebereich (731) und einem zweiten Cachebereich (732) bestehende Paare verfügen.
  • Der Bereitstellungsteil (741) stellt die aus einem ersten Cachebereich (731) und einem zweiten Cachebereich (732) bestehenden Paare im Cache (711) bereit.
  • Der Sperrungsteil (742) sperrt bei einem Zugriff auf den ersten Cachebereich (731) den ganzen ersten Cachebereich (731) und sperrt des Weiteren bei einem Zugriff auf den zweiten Cachebereich (732) den ganzen zweiten Cachebereich (732) in dem ersten Zeitfenster oder sperrt bei einem Zugriff auf den ersten Cachebereich (731) auf einer Hashwertindex-Basis und sperrt des Weiteren bei einem Zugriff auf den zweiten Cachebereich (732) den ganzen zweiten Cachebereich (732) in dem ersten Zeitfenster; er sperrt bei einem Zugriff auf den ersten Cachebereich (731) den ganzen ersten Cachebereich (731) und sperrt des Weiteren bei einem Zugriff auf den zweiten Cachebereich (732) den ganzen zweiten Cachebereich (732); oder er sperrt bei einem Zugriff auf den ersten Cachebereich (731) nach dem Tauschen den ganzen ersten Cachebereich (731) nach dem Tauschen in einem zweiten Zeitfenster und sperrt des Weiteren bei einem Zugriff auf den zweiten Cachebereich (732) nach dem Tauschen auf einer Hashwertindex-Basis in einem zweiten Zeitfenster.
  • Der Empfangsteil (743) empfängt Streaming-Daten in jedem vordefinierten Zeitfenster.
  • Der Schreibteil (744) schreibt die Streaming-Daten in den ersten Cachebereich (731), ohne eine Synchronisierung zwischen dem ersten Cachebereich (731) und der Datenbankrepository (791) in einem ersten Zeitfenster durchzuführen, und nach dem Ablauf des ersten Zeitfensters schreibt er neu ankommende Streaming-Daten in den zweiten Cachebereich (732) nach dem Tauschen in einem zweiten Zeitfenster, ohne eine Synchronisierung zwischen der Datenbankrepository (791) und dem zweiten Cachebereich (732) nach dem Tauschen in dem zweiten Zeitfenster durchzuführen.
  • Der Synchronisierungsteil (745) blockiert eine Synchronisierung zwischen dem ersten Cachebereich (731) und der Datenbankrepository (791) und führt eine Synchronisierung zwischen der Datenbankrepository (791) und dem zweiten Cachebereich (732) in dem ersten Zeitfenster durch, und nach dem Ablauf des ersten Zeitfensters blockiert er eine Synchronisierung zwischen der Datenbankrepository (791) und dem zweiten Cachebereich (732) nach dem Tauschen und führt eine Synchronisierung zwischen dem ersten Cachebereich (731) nach dem Tauschen und der Datenbankrepository (791) durch.
  • Der Tauschteil (746) tauscht eine Aufgabe des ersten Cachebereichs (731) gegen eine Aufgabe des zweiten Cachebereichs (732) nach dem Ablauf des ersten Zeitfensters und er tauscht die Aufgabe des ersten Cachebereichs (731) nach dem Tauschen erneut gegen die Aufgabe des zweiten Cachebereichs (732) nach dem Tauschen nach dem Ablauf des zweiten Zeitfensters.
  • Der Zeitfensterteil (747) kann ein vordefiniertes Zeitfenster festlegen und das vordefinierte Zeitfenster messen. Der Zeitfensterteil (747) kann des Weiteren eine Länge eines Zeitfensters in Abhängigkeit von Daten definieren, die von den folgenden Daten abgeleitet werden, welche aus früheren Instanzen oder einem oder mehreren früheren Zeitfenstern erhalten wurden: zum Beispiel den empfangenen Streaming-Daten, der Verarbeitungszeit der Streaming-Daten, der Zeit, die für eine Synchronisierung mit der Datenbankrepository erforderlich sein soll, oder einer Kombination daraus.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen Integrationsstufe technischer Details handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für eine integrierte Schaltung oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field-programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Informationsverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Informationsverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Informationsverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Informationsverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Der Ablaufplan und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme, welche die festgelegten Funktionen oder Schritte durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen, umgesetzt werden können.

Claims (19)

  1. Durch einen Computer ausgeführtes Verfahren zur Verarbeitung von Streaming-Daten, das aufweist: Bereitstellen eines ersten Cachebereichs und eines zweiten Cachebereichs in einem Cache in einem Informationsverarbeitungssystem, das eine Datenbankrepository und den Cache für die Datenbankrepository aufweist; Empfangen, in einem ersten Zeitfenster, von Streaming-Daten und Schreiben der Streaming-Daten in den ersten Cachebereich; Verhindern, in dem ersten Zeitfenster, des Durchführens einer Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository; Ermöglichen, in mindestens einem Teil des ersten Zeitfensters, einer Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich; und Ermöglichen, nach dem Ablauf des ersten Zeitfensters, einer Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository.
  2. Verfahren nach Anspruch 1, wobei das Informationsverarbeitungssystem des Weiteren eine Schnittstelle zu einer Anwendung aufweist und des Weiteren aufweist: Ermöglichen der Anwendung, auf den Cache zuzugreifen, um ankommende Streaming-Daten in Echtzeit zu verarbeiten.
  3. Verfahren nach einem der beiden vorhergehenden Ansprüche, wobei das Verfahren des Weiteren aufweist: Blockieren, nach dem Ablauf des ersten Zeitfensters, einer Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich.
  4. Verfahren nach Anspruch 3, wobei das Verfahren des Weiteren aufweist: Schreiben, nach dem Ablauf des ersten Zeitfensters, von neu ankommenden Streaming-Daten in den zweiten Cachebereich.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren des Weiteren aufweist: Tauschen, nach dem Ablauf des ersten Zeitfensters, einer Aufgabe des ersten Cachebereichs gegen eine Aufgabe des zweiten Cachebereichs; und Durchführen einer Synchronisierung, in einem zweiten Zeitfenster, zwischen dem ersten Cachebereich nach dem Tauschen und der Datenbankrepository; Schreiben, in dem zweiten Zeitfenster, von neu ankommenden Streaming-Daten in den zweiten Cachebereich; und Verhindern, in dem zweiten Zeitfenster, einer Synchronisierung zwischen dem zweiten Cachebereich und der Datenbankrepository.
  6. Verfahren nach Anspruch 5, wobei das Verfahren des Weiteren aufweist: erneutes Tauschen, nach dem Ablauf des zweiten Zeitfensters, einer Aufgabe des ersten Cachebereichs nach dem Tauschen gegen eine Aufgabe des zweiten Cachebereichs nach dem Tauschen; und in einem dritten Zeitfenster, Wiederholen des Empfangens, des Schreibens und des Ermöglichens.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren des Weiteren aufweist: Sperren, in dem ersten Zeitfenster, bei einem Zugriff auf den ersten Cachebereich des ganzen ersten Cachebereichs; und Sperren, in dem ersten Zeitfenster, bei einem Zugriff auf den zweiten Cachebereich des ganzen zweiten Cachebereichs.
  8. Verfahren nach einem der Ansprüche 1 bis 6, wobei das Verfahren des Weiteren aufweist: Sperren, in dem ersten Zeitfenster, bei einem Zugriff auf den ersten Cachebereich auf einer Hashwertindex-Basis; und Sperren, in dem ersten Zeitfenster, bei einem Zugriff auf den zweiten Cachebereich des ganzen zweiten Cachebereichs.
  9. Verfahren nach Anspruch 8, wobei das Verfahren des Weiteren aufweist: Tauschen, nach dem Ablauf des ersten Zeitfensters, einer Aufgabe des ersten Cachebereichs gegen eine Aufgabe des zweiten Cachebereichs; und Sperren, in einem zweiten Zeitfenster, bei einem Zugriff auf den ersten Cachebereich des ganzen ersten Cachebereichs; und Sperren, in einem zweiten Zeitfenster, bei einem Zugriff auf den zweiten Cachebereich des ganzen zweiten Cachebereichs.
  10. Verfahren nach einem der vorhergehender Ansprüche, wobei das Bereitstellen eines ersten Cachebereichs und eines zweiten Cachebereichs in dem Cache das Bereitstellen von mehreren aus ersten Cachebereichen und zweiten Cachebereichen bestehenden Paaren in dem Cache aufweist.
  11. Verfahren nach Anspruch 10, wobei die mehreren Paare in denselben Zeitfenstern gleichzeitig verwendet werden oder in einem jeden der verschiedenen Zeitfenster verwendet werden.
  12. Verfahren nach Anspruch 5, wobei eine Länge eines jeweiligen Zeitfensters von der Anwendung zur Verarbeitung der Streaming-Daten aktualisiert wird; und wobei die aktualisierte Länge für ein nachfolgendes Zeitfenster verwendet wird.
  13. Verfahren nach Anspruch 5, wobei eine Länge eines jeweiligen Zeitfensters in Abhängigkeit von der Menge der empfangenen Streaming-Daten, der Verarbeitungszeit der Streaming-Daten, der für eine Synchronisierung mit der Datenbankrepository benötigten Zeit oder einer Kombination daraus definiert wird.
  14. Informationsverarbeitungssystem, das aufweist: einen oder mehrere Prozessoren; einen Speicher, der ein Programm speichert, das, wenn es auf dem Prozessor ausgeführt wird, eine Operation zur Verarbeitung von Streaming-Daten durchführt; eine Datenbankrepository; und einen Cache für die Datenbankrepository, wobei der Cache aufweist: einen ersten Cachebereich, der verwendet wird, um, in einem ersten Zeitfenster, eine Aufgabe des Empfangens von Streaming-Daten und des Schreibens der Streaming-Daten in den ersten Cachebereich durchzuführen, ohne eine Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository durchzuführen; und einen zweiten Cachebereich, der verwendet wird, um, in mindestens einem Teil des ersten Zeitfensters, eine Aufgabe der Synchronisierung mit der Datenbankrepository durchzuführen; und wobei das Informationsverarbeitungssystem eine Synchronisierung zwischen dem ersten Cachebereich und der Datenbankrepository nach dem Ablauf des ersten Zeitfensters durchführt.
  15. Informationsverarbeitungssystem nach Anspruch 14, wobei das Informationsverarbeitungssystem eine Synchronisierung zwischen der Datenbankrepository und dem zweiten Cachebereich nach dem Ablauf des ersten Zeitfensters blockiert.
  16. Informationsverarbeitungssystem nach einem der beiden Ansprüche 14 oder 15, wobei das Informationsverarbeitungssystem nach dem Ablauf des ersten Zeitfensters neu ankommende Streaming-Daten in den zweiten Cachebereich schreibt.
  17. Informationsverarbeitungssystem nach einem der Ansprüche 14 bis 16, wobei das Informationsverarbeitungssystem die Aufgabe des ersten Cachebereichs gegen die Aufgabe des zweiten Cachebereichs nach dem Ablauf des ersten Zeitfensters tauscht; und in einem zweiten Zeitfenster, das nach dem Tauschen auftritt, eine Synchronisierung zwischen der Datenbankrepository und dem ersten Cachebereich durchführt und neu ankommende Streaming-Daten in den zweiten Cachebereich schreibt, ohne eine Synchronisierung zwischen dem zweiten Cachebereich und der Datenbankrepository durchzuführen.
  18. Computerprogrammprodukt zur Verarbeitung von Streaming-Daten, wobei das Computerprogrammprodukt aufweist: ein durch einen Computer lesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren nach einem der Ansprüche 1 bis 13 durchzuführen.
  19. Computerprogramm, das auf einem durch einen Computer lesbaren Datenträger gespeichert ist und in den internen Speicher eines digitalen Computers ladbar ist, wobei das Computerprogramm Teile von Software-Code aufweist, wenn das Programm auf einem Computer ausgeführt wird, um das Verfahren nach einem der Ansprüche 1 bis 13 durchzuführen.
DE112019001744.6T 2018-06-08 2019-06-06 Verarbeiten von streaming-daten mit mehreren caches Pending DE112019001744T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/004,020 2018-06-08
US16/004,020 US10902020B2 (en) 2018-06-08 2018-06-08 Multiple cache processing of streaming data
PCT/IB2019/054733 WO2019234685A1 (en) 2018-06-08 2019-06-06 Multiple cache processing of streaming data

Publications (1)

Publication Number Publication Date
DE112019001744T5 true DE112019001744T5 (de) 2021-03-04

Family

ID=68763884

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019001744.6T Pending DE112019001744T5 (de) 2018-06-08 2019-06-06 Verarbeiten von streaming-daten mit mehreren caches

Country Status (6)

Country Link
US (1) US10902020B2 (de)
JP (1) JP7316724B2 (de)
CN (1) CN112119387A (de)
DE (1) DE112019001744T5 (de)
GB (1) GB2587583B (de)
WO (1) WO2019234685A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11305194B2 (en) * 2019-01-21 2022-04-19 Tempus Ex Machina, Inc. Systems and methods for providing a real-time representation of positional information of subjects
CN112637355B (zh) * 2020-12-25 2023-05-23 新天科技股份有限公司 基于多并发单通道无线数据处理方法、装置、设备及介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0453389A (ja) * 1990-06-21 1992-02-20 Graphics Commun Technol:Kk 動ベクトル検出装置
US7062515B1 (en) 2001-12-28 2006-06-13 Vignette Corporation System and method for the synchronization of a file in a cache
WO2004092189A1 (en) * 2003-04-09 2004-10-28 Wyeth Derivatives of 2-(8,9-dioxo-2,6-diazabicyclo(5.2.0)non-1(7)-en-2-yl)alkyl phosphonic acid and their use as n-methyl-d-aspartate (nmda) recetor antagonists
TWI227409B (en) 2003-06-05 2005-02-01 Carry Computer Eng Co Ltd Storage device capable of enhancing transmission speed
US7412496B2 (en) * 2003-08-22 2008-08-12 Emc Corporation Management of the file-modification time attribute in a multi-processor file server system
US7496607B2 (en) 2003-08-29 2009-02-24 Yahoo! Inc. Method and system for maintaining synchronization between a local data cache and a data store
US7831642B1 (en) * 2004-09-30 2010-11-09 Symantec Operating Corporation Page cache management for a shared file
US8402224B2 (en) * 2005-09-20 2013-03-19 Vmware, Inc. Thread-shared software code caches
JP5092374B2 (ja) 2006-12-01 2012-12-05 富士通株式会社 データセンタ及びデータ転送方法
US7769958B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Avoiding livelock using intervention messages in multiple core processors
US7664799B2 (en) * 2007-07-30 2010-02-16 Oracle International Corporation In-memory space management for database systems
US20100174863A1 (en) * 2007-11-30 2010-07-08 Yahoo! Inc. System for providing scalable in-memory caching for a distributed database
US8302105B2 (en) * 2009-06-26 2012-10-30 Oracle America, Inc. Bulk synchronization in transactional memory systems
US8271729B2 (en) * 2009-09-18 2012-09-18 International Business Machines Corporation Read and write aware cache storing cache lines in a read-often portion and a write-often portion
US8924652B2 (en) 2009-11-23 2014-12-30 Marvell Israel (M.I.S.L.) Ltd. Simultaneous eviction and cleaning operations in a cache
CN102486753B (zh) * 2009-11-30 2015-09-16 国际商业机器公司 构建及允许访问高速缓存的方法、设备及存储系统
JP2011133947A (ja) 2009-12-22 2011-07-07 Panasonic Corp 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
US9104684B2 (en) * 2012-04-04 2015-08-11 International Business Machines Corporation Cache handling in a database system
US9710510B2 (en) * 2013-03-11 2017-07-18 Mongodb, Inc. System and method for minimizing lock contention
JP2014186397A (ja) 2013-03-21 2014-10-02 Fujitsu Ltd キャッシュメモリ装置、情報処理装置及びキャッシュメモリ制御方法
US10049022B2 (en) * 2013-06-24 2018-08-14 Oracle International Corporation Systems and methods to retain and reclaim resource locks and client states after server failures
US9411869B2 (en) * 2013-07-09 2016-08-09 Red Hat, Inc. Replication between sites using keys associated with modified data
US10684986B2 (en) 2013-08-28 2020-06-16 Biosense Webster (Israel) Ltd. Double buffering with atomic transactions for the persistent storage of real-time data flows
US9619336B2 (en) * 2014-01-05 2017-04-11 International Business Machines Corporation Managing production data
US9870410B2 (en) * 2014-09-15 2018-01-16 Microsoft Technology Licensing, Llc Constructed data stream for enhanced event processing
US10242050B2 (en) 2015-12-23 2019-03-26 Sybase, Inc. Database caching in a database system
US10262032B2 (en) 2016-02-24 2019-04-16 Salesforce.Com, Inc. Cache based efficient access scheduling for super scaled stream processing systems
US10148722B2 (en) 2016-07-04 2018-12-04 Znipe Esports AB Methods and nodes for synchronized streaming of a first and a second data stream
CN108388524A (zh) 2016-12-21 2018-08-10 伊姆西Ip控股有限责任公司 用于缓存数据的方法和设备
US11055271B2 (en) * 2017-11-13 2021-07-06 International Business Machines Corporation Funnel locking for sleepable read-copy update

Also Published As

Publication number Publication date
JP2021526252A (ja) 2021-09-30
GB202100032D0 (en) 2021-02-17
WO2019234685A1 (en) 2019-12-12
GB2587583A (en) 2021-03-31
CN112119387A (zh) 2020-12-22
JP7316724B2 (ja) 2023-07-28
GB2587583B (en) 2021-08-25
US10902020B2 (en) 2021-01-26
US20190377822A1 (en) 2019-12-12

Similar Documents

Publication Publication Date Title
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112019002948T5 (de) Feststellen einer optimalen speicherumgebung für datensätze und für das migrieren von datensätzen
DE112016003120T5 (de) Umleiten einer Kopie beim Schreiben
DE112017007224T5 (de) Momentaufnahmen-Verwaltung in einer Blockchain
DE112013000650B4 (de) Datenzwischenspeicherungsbereich
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE102013201174A1 (de) Online-Überprüfung einer Standby-Datenbank in physischen Replikationsumgebungen mit Protokollversand
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102013200508A1 (de) Ersetzungsreihenfolge von Cache-Sets auf der Grundlage von zeitbezogener Set-Aufzeichnung
DE112019001821B4 (de) Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection)
DE112018003133T5 (de) Zwischenspeicherverwaltung
DE112017005772T5 (de) Zeitpunktgesteuerte sicherungen über einen speicher-controller in eine objektspeicher-cloud
DE112021000338T5 (de) Auslagern der statistikerfassung
DE112017008158T5 (de) Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE112019001744T5 (de) Verarbeiten von streaming-daten mit mehreren caches
DE112018005359T5 (de) Verhindern eines Beibehaltens von Datensatzsperren durch Transaktionen mit langer Laufzeit
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems
DE112011104830T5 (de) Ein Verfahren zum Sicherstellen der Programmkorrektheit unter Verwendung von feingranularem spekulativem Hardwareausführen
DE102019103279A1 (de) Techniken zur informationsgraphenkomprimierung
DE112021003031T5 (de) Archivieren von nur-beschleuniger-datenbanktabellen
DE112012002562T5 (de) Unterbringung von Daten in Partitionen auf einer Speichereinheit
DE112018004636B4 (de) Gleichzeitige änderung einer gemeinsam genutzten cachezeile durch mehrere prozessoren
DE112019000303B4 (de) Datenspeichersystem, das die datenverlagerung auf grundlage von zeitlicher nähe von zugriffen durchführt

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication