-
HINTERGRUND
-
Die vorliegende Erfindung betrifft allgemein die Datenspeicherung und insbesondere die Änderung der Lebenszeit(TTL)-Werte in einem Datencache als Reaktion auf Kostenfaktoren.
-
Ein Cache ist eine speicherinterne Speicherkomponente, die Daten auf transparente Weise speichert, damit künftige Anforderungen nach diesen Daten schneller bedient werden können. Die Daten, die gespeichert werden, können zuvor berechnete Werte oder Kopien von woanders gespeicherten Werten sein. Da die Cachegröße relativ klein ist, sind typischerweise mehr Daten vorhanden als speicherinterner Speicherplatz verfügbar ist. Daher implementieren Datencaches gewöhnlich eine Bereinigungsrichtline wie z. B. Time to Live (TTL, deutsch: „Lebenszeit”), Least Recently Used (LRU, deutsch: „Am längsten nicht verwendet”) oder Least Frequently Used (LFU, deutsch: „Am wenigsten verwendet”), wovon jede gewöhnlich einen festen Wert definiert, der auf der Toleranz des Clients für veraltete Daten und auf der Menge des im Cache verfügbaren Speicherplatzes basiert. Die Bereinigungsrichtlinien berücksichtigen nicht die Kosten der Neuerstellung der Daten, wenn sie angefordert werden, nachdem sie bereinigt worden sind. Oft ist es wünschenswert, bei erwarteten oder tatsächlichen erhöhten Verkehrsvolumina durch einen Bereitstellungsprozess vorübergehend die Größe des Caches und des Bereinigungsrichtlinienfensters zu erhöhen.
-
Es gibt auch Anwendungsfälle, in denen die Kosten der Neuerstellung der Daten im Cache die Kosten des Lesens veralteter Daten übersteigen. Wenn zum Beispiel die Datenbank unerreichbar ist oder die Verbindung zur Datenbank überlastet ist, ist die vorübergehende Deaktivierung oder Erhöhung der Bereinigungsrichtlinie vorteilhafter, als wenn man den Benutzer endlos warten oder ein Verbindungszeitlimit überschreiten lässt, wodurch sich das Datenbankproblem auf die Front-End-Systeme niederschlagen kann.
-
KURZBESCHREIBUNG
-
Nach einer Ausführungsform der vorliegenden Erfindung wird ein TTL-Wert für ein Datenobjekt, das speicherintern in einem Datengitter gespeichert wird, dynamisch angepasst. Eine Toleranzrichtlinie für veraltete Daten wird eingestellt. Messwerte zum Berichten der Kosten der Neuerstellung und Neuspeicherung des Datenobjekts werden berechnet, und der TTL-Wert wird auf der Basis der berechneten Messwerte angepasst.
-
Nach einer Ausführungsform der vorliegenden Erfindung passt ein Computersystem einen TTL-Wert für ein Datenobjekt, das speicherintern in einem Datengitter gespeichert wird, dynamisch an. Das Computersystem umfasst einen Prozessor und Speicher, der mit dem Prozessor verbunden ist. Der Speicher ist mit Anweisungen codiert, die, wenn sie ausgeführt werden, Anweisungen zur Einstellung einer Toleranzrichtlinie für veraltete Daten umfassen. Die Anweisungen umfassen auch Anweisungen zur Berechnung von Messwerten, um die Kosten der Neuerstellung und Neuspeicherung des Datenobjekts zu berichten und den TTL-Wert auf der Basis der Messwerte anzupassen.
-
Nach einer Ausführungsform der vorliegenden Erfindung passt ein Computerprogrammerzeugnis einen TTL-Wert für ein Datenobjekt, das speicherintern in einem Datengitter gespeichert wird, dynamisch an. Das Computerprogrammerzeugnis umfasst ein computerlesbares Speichermedium mit computerlesbarem Programmcode, der darauf enthalten ist. Der computerlesbare Programmcode umfasst computerlesbaren Programmcode, der dafür konfiguriert ist, eine Toleranzrichtlinie für veraltete Daten einzustellen. Der computerlesbare Programmcode ist auch dafür konfiguriert, Messwerte zu berechnen, um die Kosten der Neuerstellung und Neuspeicherung des Datenobjekts zu berichten und den TTL-Wert auf der Basis der Messwerte anzupassen.
-
KURZE BESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN IN DEN ZEICHNUNGEN
-
1 ist eine Veranschaulichung der Computer-Hardware, in welcher eine Ausführungsform der vorliegenden Erfindung implementiert werden kann;
-
2 ist ein speicherinternes Datenspeichersystem, wie es im Stand der Technik bekannt ist;
-
3 ist ein Flussdiagramm nach einer Ausführungsform der vorliegenden Erfindung und
-
4 veranschaulicht das Variieren der Abrufzeiten und Replikationen eines speicherinternen Datenspeichersystems nach einer Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Wie der Fachmann erkennen wird, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammerzeugnis ausgeführt werden. Daher können Aspekte der vorliegenden Erfindung die Form einer gänzlich hardwaremäßigen Ausführungsform, einer gänzlich softwaremäßigen Ausführungsform (einschließlich Firmware, speicherresidente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die hierin alle allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammerzeugnisses annehmen, das in einem computerlesbaren Medium oder in mehreren computerlesbaren Medien mit einem darauf enthaltenen computerlesbaren Programmcode ausgeführt ist.
-
Es kann jede beliebige Kombination eines computerlesbaren Mediums oder mehrerer computerlesbaren Medien (Speicher oder Einheit) verwendet werden. Das computerlesbare Medium kann ein computerlesbarer Signalträger oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne aber darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, eine entsprechende Vorrichtung oder Einheit oder jede geeignete Kombination des Vorstehenden sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium schließen Folgendes ein: eine elektrische Verbindung mit einem Draht oder mehreren Drähten, eine Computerdiskette, eine Festplatte, einen Arbeitsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flashspeicher), eine Glasfaser, eine CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorstehenden. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem oder einer entsprechenden Vorrichtung oder Einheit enthalten oder speichern kann.
-
Ein computerlesbarer Signalträger kann ein verbreitetes Datensignal mit einem computerlesbaren Programmcode sein, der zum Beispiel im Basisband oder als Teil einer Trägerwelle darin enthalten ist. Ein derartiges verbreitetes Signal kann verschiedene Formen annehmen, einschließlich, ohne aber darauf beschränkt zu sein, elektromagnetisch, optisch oder jede geeignete Kombination daraus. Ein computerlesbarer Signalträger kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem oder einer entsprechenden Vorrichtung oder Einheit übertragen, verbreiten oder transportieren kann.
-
Der Programmcode, der auf einem computerlesbaren Medium enthalten ist, kann durch jedes geeignete Medium übertragen werden, einschließlich, ohne aber darauf beschränkt zu sein, drahtlos, festnetzgebunden, Glasfaserkabel, HF usw., oder jede geeignete Kombination des Vorstehenden.
-
Der Computerprogrammcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehrerer Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und konventioneller prozeduraler Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann gänzlich auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder gänzlich auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer durch jede Art von Netz einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) mit dem Computer eines Benutzers verbunden sein, oder die Verbindung kann (zum Beispiel über das Internet durch einen Internet-Service-Provider) zu einem externen Computer hergestellt werden.
-
Aspekte der vorliegenden Erfindung werden im Folgenden in Bezug auf die Fluss- und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammerzeugnissen nach Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Fluss- und/oder Blockdiagramme und Kombinationen von Blöcken in den Fluss- und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine zugeführt werden, sodass die Anweisungen, die über den Prozessor des Computers oder der sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der Funktionen/Vorgänge ergeben, die im Block oder in den Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, sodass die Anweisungen, die im computerlesbaren Medium gespeichert sind, ein Erzeugnis mit Anweisungen ergeben, die die Funktionen/Vorgänge implementieren, die im Block oder in den Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
-
Die Computerprogrammanweisungen können auch in einen Computer, in eine andere programmierbare Datenverarbeitungsvorrichtung oder in sonstige Einheiten geladen werden, um die Durchführung einer Reihe von Arbeitsgängen auf dem Computer, der anderen programmierbaren Vorrichtung oder sonstigen Einheiten zu bewirken, um einen computergestützten Prozess zu ergeben, sodass die Anweisungen, die auf dem Computer oder der sonstigen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Implementierung der Funktionen/Vorgänge ergeben, die im Block oder in den Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
-
Die Fluss- und Blockdiagramme in den Figuren veranschaulichen die Architektur, die Funktionalität und die Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten nach verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Fluss- oder Blockdiagrammen ein Codemodul, ein Codesegment oder einen Codeteil darstellen, die eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) umfassen. Es ist auch anzumerken, dass in einigen alternativen Implementierungen die in den Blöcken genannten Funktionen in einer anderen Reihenfolge als der in der Figur genannten auftreten können. Zum Beispiel können zwei Blöcke, die aufeinanderfolgend dargestellt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der beteiligten Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Es ist auch anzumerken, dass jeder Block der Block- und/oder Flussdiagramme und Kombinationen von Blöcken in den Block- und/oder Flussdiagrammen durch Systeme auf der Basis von Spezialhardware, die die angegebenen Funktionen oder Vorgänge durchführen, oder durch Kombinationen von Spezialhardware und Computeranweisungen ausgeführt werden können.
-
Die hierin verwendete Terminologie dient nur der Beschreibung spezieller Ausführungsformen und soll die Erfindung in keiner Weise einschränken. Die Singularformen „ein, eine” und „der, die, das”, wie sie hierin verwendet werden, schließen auch die Pluralformen ein, sofern der Kontext nicht eindeutig etwas anderes besagt. Ferner versteht es sich, dass die Ausdrücke „umfasst” und/oder „umfassend”, wenn sie in dieser Patentschrift verwendet werden, das Vorhandensein der genannten Funktionen, Unterpunkte, Schritte, Operationen, Elemente und/oder Komponenten angibt, aber das Vorhandensein oder den Zusatz einer oder mehrerer anderer Funktionen, Unterpunkte, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließt.
-
1 ist ein Beispiel eines Computersystems 10, das zur Ausführung von Computersoftware zur dynamischen Änderung von TTL-Werten in einem Datencache geeignet ist. Andere Verarbeitungseinheiten, die zur Ausführung der Software geeignet sind, können ein drahtloses Telefon, ein Personal Digital Assistant (PDA), ein tragbarer Computer, eine intelligente Fernsteuerung oder jede andere Verarbeitungseinheit sein, die solch eine Software ausführen kann.
-
Das Computersystem 10 ist eines Typs, der unter einem geeigneten Betriebssystem läuft, das auf dem Computersystem 10 installiert ist. Die Komponenten des Computersystems 10 umfassen einen Computer 12, eine Tastatur 22, eine Maus 24 und einen Bildschirm 20. Der Computer 12 umfasst einen Prozessor 26, einen Speicher 28, Eingabe/Ausgabe(E/A)-Schnittstellen 30 und 32, eine Videoschnittstelle 34 und eine Speichereinheit 36.
-
Der Prozessor 26 ist eine zentrale Verarbeitungseinheit (CPU), die das Betriebssystem und die unter dem Betriebssystem laufende Computersoftware ausführt. Der Speicher 28 umfasst Arbeitsspeicher (RAM) und Nur-Lese-Speicher (ROM) und wird unter der Leitung des Prozessors 26 genutzt.
-
Die Videoschnittstelle 34 ist mit einem Bildschirm 20 verbunden und führt diesem Videosignale zu, die darauf angezeigt werden. Die Benutzereingabe zur Bedienung des Computers 12 wird von der Tastatur 22 und der Maus 24 zugeführt. Die Speichereinheit 36 kann ein Plattenlaufwerk oder jedes andere geeignete Speichermedium einschließen, wie oben beschrieben. Jede der Komponenten des Computers 12 ist mit einem internen Bus 40 verbunden, der Daten-, Adress- und Steuerbusse einschließt, um den Komponenten des Computers 12 den Datenaustausch miteinander über den Bus 40 zu ermöglichen. Das Computersystem 10 kann über eine Eingabe/Ausgabe(E/A)-Schnittstelle 32 mit einem Übertragungskanal 38 zu einem Netz, das als das Internet 18 dargestellt ist, mit einem oder mehreren anderen entsprechenden Computern verbunden sein. Über ein Netz wie das Internet 18 können ein oder mehrere Server 19 mit dem Computer 12 verbunden sein. Die Server 19 können dieselbe physische Anordnung wie der Computer 12 aufweisen und können benachbart zum Computer 12 oder Teil davon sein.
-
Die Computersoftware kann auf einem computerlesbaren Speichermedium gespeichert sein, wobei der Zugriff auf das Computersoftwareprogramm durch das Computersystem 10 in diesem Fall von der Speichereinheit 36 aus erfolgt. Alternativ dazu kann der Computer 12 über das Internet 18 direkt auf die Computersoftware zugreifen. In beiden Fällen kann ein Benutzer unter Verwendung der Tastatur 22 und der Maus 24 mit dem Computersystem 10 interagieren, um die programmierte Computersoftware, die auf dem Computer 12 ausgeführt wird, zu bedienen.
-
Nun auf 2 Bezug nehmend, wird eine Client/Server-Umgebung 200 nach dem Stand der Technik veranschaulicht. Eine Vielzahl von Clients 202 ist mit einem Hostsystem 204 vernetzt. Das Hostsystem 204 kann eine Vielzahl von Anwendungsservern 206 auf einer Vielzahl von Hostservern 208, 210, und 212 umfassen.
-
Jeder Anwendungsserver 206 ist mit einem Cache 214 versehen. Jeder Anwendungsserver 206 kann selbst ein Client sein und kann mit einer Gruppe von Java Virtual Machines (JVMs) vernetzt sein, die zusammen ein Datengitter 216 bilden (eine JVM stellt einen Adressraum, eine Art Container bereit, um Objekte zu speichern, weshalb der Zweck eines speicherinternen Datengitters (IMDG), das an einem Datengitter beteiligt ist, darin liegt, einen Container zum Speichern von Java-Objekten bereitzustellen). Der Anwendungsserver 206 verbindet sich wie ein Client mit dem Gitter 216 und sucht Datenobjekte, die sich im Gitter 216 befinden. Zu diesen Datenobjekten im Gitter 216 wird ein Zeitgeber (als Lebensdauer oder TTL bekannt) geführt. Der Zeitgeber wird geführt, um zu verhindern, dass Datenobjekte ungenutzt liegen bleiben und ständig Speicherplatz belegen (obwohl sie nicht benötigt werden) und begrenzte speicherinterne Speicherressourcen verbrauchen. Wenn ein Datenobjekt häufig angefordert wird oder die Kosten des Abrufens der Daten zuzüglich der Kosten des Replizierens/Kopierens der Daten hoch sind (was auf einen übermäßigen Ressourcenverbrauch schließen lässt), kann es kostengünstiger sein, die TTL zu erhöhen, damit eine Anwendung weiter auf die Datenobjekte im Gitter 216 zugreifen kann.
-
Eine Hostdatenbank 218 stellt persistenten Speicher für die von den Anwendungsservern 206 benutzten Daten bereit. Wie dem Fachmann bekannt ist, werden die Caches 214 und somit das Datengitter 216 verwendet, um Daten zu speichern, die für die Rechenleistung der Anwendungsserver 206 vorteilhaft sind, d. h. auf Daten, die in den Caches 214 gespeichert sind, wird schneller zugegriffen als auf Daten in der Datenbank 218. Es wird eine Spiegeldatenbank 220 als Backup der Datenbank 218 (eine Kopie davon) verwendet, und um Daten für die Verwaltungsfunktion wie zum Beispiel Berichte zu erhalten.
-
Jedes Mal, wenn ein Objekt aktualisiert/bereinigt/ungültig gemacht wird, ist jede synchrone oder asynchrone Kopie des Objekts davon betroffen, und es kann erforderlich sein, den ganzen Weg bis zu einer Back-End-Datenbank (218) zu gehen, um diese Daten abzurufen, mit den Daten Berechnungen anzustellen und Kopien (zur Speicherung in einer Vielzahl der Caches 214 im Datengitter 216 und in der Backup-Datenbank 220) zu erstellen, was die Leistungskosten für den Betrieb des Gitters 216 erhöht. Ein Geschäft kann entscheiden, wie viele synchrone und asynchrone Kopien in einem Datengitter oder über mehrere Datengitter hinweg notwendig sind, um eine hohe Verfügbarkeit und Datengitterkonsistenz zu gewährleisten. Die IMDG-Standardimplementierungen stellen eine TTL jedoch nur auf der Basis der Zeit ein, die benötigt wird, um die Daten aus der Back-End-Datenbank abzurufen, ohne die Zusatzkosten für die Erstellung von Kopien im Datengitter oder in der Backup/Spiegeldatenbank zu berücksichtigen. Demnach ist die TTL die Lebensdauer eines Objekts im Gitter, wie es vom Geschäft definiert wird, welche die Zeit berücksichtigen kann, die für den Abruf aus einer einzelnen Back-End-Datenbank benötigt wird.
-
Eine Ausführungsform der vorliegenden Erfindung verwendet nicht nur die Zeit für den Abruf aus einer Back-End-Datenbank, sondern berücksichtigt auch die Kosten des Replizierens oder Erstellens von Kopien und der Bereinigung. Das unterschiedliche Ausmaß der Kosten (zum Beispiel ist das synchrone Replizieren oder Kopieren kostenintensiver als das asynchrone Replizieren/Kopieren) und die Kosten, keine Kopie verfügbar zu haben, beziehen sich nicht nur auf die Kosten des Abrufs der Daten aus einer Datenbank. Eine Entscheidung, die TTL des Objekts in einem Cache dynamisch zu erhöhen (oder zu verringern oder unverändert zu lassen), basiert auf den Gesamtkosten der Neuübertragung der Daten in das Gitter.
-
Im Vorliegenden werden die Gesamtkosten als die Kosten des Abrufens der Daten aus der Back-End-Datenbank zuzüglich der Kosten einer asynchronen/synchronen Replikation zuzüglich der Kosten der Bereinigung (Zeit für die Datenbereinigung (DEv) + Zeit für die Entfernung von Repliken (DRr) (Async oder Sync)) definiert. Wenn die Gesamtkosten der Rehydrierung oder der Neuübertragung der Daten in das Gitter einen bestimmten Wert erreichen (je nach Richtlinie, siehe Tabelle 1, d. h. wenn die Datenabrufzeit X ist, wird die TTL auf Y erhöht), wird die TTL angepasst, um den Gesamtprozess des Abrufens und der Cachefüllung effizienter zu machen und effizient zu rechnen. Um die Leistungsfähigkeit des Datengitterbetriebs zu gewährleisten, erhöht eine Ausführungsform der vorliegenden Erfindung die TTL auf dynamische Weise, wenn die Kosten der Gitter-Hydrierung rechenintensiv sind. Die Toleranzrichtlinie für veraltete Daten, wie sie definiert wurde, steuert die Wirkungsweise der dynamischen Änderungen der TTL.
-
3 veranschaulicht ein Beispiel des Flusses der vorliegenden Erfindung. Eine Anwendung wie z. B. eine, die auf den Anwendungsservern 206 läuft, verwendet ein Datengitter (216, 2) als Seitencache, um wiedergegebene Portlets zu speichern, die von mehreren verschiedenen Diensten (Datenbank, Web-Service, CICS usw.) kommen. Die Portlets werden mit einer Methode „generatePage()” generiert und in einem verteilten Abbild namens „genPagesCache” gespeichert. Bezug nehmend auf
-
3 legt der Kunde in Block
300 eine Toleranzrichtlinie für veraltete Daten fest und ordnet sie dem Abbild „genPagesCache” zu. Zum Beispiel wird eine Richtlinie wie in Tabelle 1 gezeigt eingestellt:
Datenabrufzeit in Millisekunden (ms) | TTL-Toleranzrichtlinie für veraltete Daten |
Weniger als 500 Millisekunden | 30 Sekunden |
> 500 ms < 5000 ms | 300 Sekunden |
> 5000 ms | endlos |
Tabelle 1
-
In Block 302 werden Messwerte zum Berichten der Kosten der Neuerstellung des Datenelements instrumentiert. Zum Beispiel wird die Methode „generatePage()” des Kunden instrumentiert, um die Zeit zu berichten, die benötigt wird, um die Portletseite zu generieren und sie im Cache (das Datenelement) zu speichern. Dies kann durch aspektorientierte Programmierung (AOP) oder andere gängige Instrumentierungsmethoden erfolgen.
-
In Block 304 wird die Datenerstellungszeitstatistik (die instrumentierten Messwerte) zum Beispiel durch einen Überwachungsagenten überwacht. Das TTL-Zeitlimit, das für die Datenbereinigung (einige gängige Bereinigungstools sind Least-Recently-Used(LRU)- oder Least-Frequently-Used(LFU)-Werte) verwendet wird, wird auf der Basis der verfügbaren Messwerte, der administrativen Eingabe, der Toleranzrichtlinie für veraltete Daten automatisch angepasst, und optional werden zusätzliche Server bereitgestellt, um potenzielle Datenzunahmen zu handhaben, die auf eine erhöhte Menge der im Cache behaltenen Daten zurückzuführen sind. Dementsprechend können weniger Server/speicherinterner Speicherplatz bereitgestellt werden, wenn aufgrund niedrigerer Kosten der Neuerstellung, wie sie durch die instrumentierten Messwerte bestimmt wurden, geringere Mengen an Daten behalten werden.
-
Eine Ausführungsform der vorliegenden Erfindung ist eine Voraussageanalyse, die durchgeführt wird, um die Bereinigung eines Cacheeintrags zu verhindern, dessen Neuerstellung kostenintensiv ist und weitere Leistungseinbußen des Caches oder Gitters zur Folgen haben kann. Dies ist wichtig in einem IMDG, da Gitteroperationen wie die Bereinigung und Replikation eine Hauptursache von Gitterinstabilität sein können.
-
In einer Ausführungsform der vorliegenden Erfindung ist Cr der Gesamtwert oder die Gesamtkosten des Abrufens der Daten aus einer Datenbank in ein verteiltes Cache-Gitter. Das Cache-Überwachungssystem überwacht die periodische Datenabrufzeit aus der Datenquelle (Rt). Wenn mehrere Datenquellen/Datenbanken (für ein zusammengesetztes Objekt) vorhanden sind, wird ein Mittelwert der Gesamtsumme aller Datenabrufzeiten (dRt) genommen. Die periodische Replikationszeit basiert auf einer Replikationsrichtlinie, die z. B. synchron (SRp) und/oder asynchron (AsRp) ist. Daher werden die Datenabrufkosten anhand der folgenden Formel bestimmt: Cr = (Rt oder dRt) + SRp* + AsRp* (*Wenn keine Replikationsrichtlinie definiert ist, weder synchron noch asynchron, ist der Wert von SRp (und/oder) AsRp = 1, sodass die Replikationskosten nicht 0 sind.)
-
Ein anderer Faktor, der zu berücksichtigen ist, sind die Bereinigungskosten. Die Bereinigungskosten (Cc) sind die Zeit, um Daten aus einem Speicherort zu entfernen (DEv), und die Zeit, um Repliken zu entfernen (DRr): Cc = DEv + DRr
-
Die Gesamtkosten sind daher: Ct = Cr + Cc
-
Ein Anfangswert TTLi wird entweder durch Konfiguration (statisch) oder durch Verwendung eines Mittelwerts der periodischen Datenabrufzeit eines Prozentsatzes von Objekten eingestellt, die während einer Gitter-Einlaufzeit im Gitter erstellt wurden, zum Beispiel 40% der Gesamtcache(Tc)-Ladezeit. Der Anfangswert TTLi ist dann: TTLi = Cr × (Tc) × (40/100)
-
Eine Toleranz für veraltete Cacheeinträge wird eingestellt (keine/hoch) (siehe Tabelle 1). Eine niedrige Toleranz für Veraltung bedeutet, dass die Bereinigung ungeachtet der Kosten gewiss ist, und eine hohe Toleranz bedeutet, dass die TTL auf der Basis der Werte von Cr, TTL und der Veraltungstoleranz eingestellt wird.
-
Der TTL-Wert wird geändert (erhöht), wenn die Gesamtkosten (Ct) einen Schwellenwert erreichen, zum Beispiel 20% mehr als der Anfangswert, da dies auf eine Leistungseinbuße des Caches schließen lässt (die auf die Berücksichtigung der Neuerstellung von Cacheeinträgen und Replikationen zurückzuführen ist).
-
Nach einer Ausführungsform der vorliegenden Erfindung kann das Cache-Überwachungssystem diese Berechnung ständig für alle Cacheeinträge durchführen, deren Bereinigung nahe bevorsteht. Das IMDG gewährleistet eine hohe Verfügbarkeit, indem es sicherstellt, dass redundante Kopien von Daten/Objekten im Gitter vorhanden sind. Daher ist im Falle eines JVM/Prozessfehlers eine Zweitkopie der Daten/Objekte verfügbar. Dies wird durch die auf Richtlinien basierende Replikation und die vorliegende Erfindung erzwungen.
-
Bezug nehmend auf 4 wird eine Ausführungsform der vorliegenden Erfindung veranschaulicht. Ein IMDG-Client 400 fügt in einer Vielzahl von JVMs/Caches/Datengittern/speicherinternen Speicherplätzen 402, 404, 406, und 408 Daten hinzu oder macht diese ungültig. Jeder Cache 402–408 umfasst einen Schlüsselwert (K) zur Kennzeichnung eines Objektswerts V, der einen TTL-Wert für die Lebenszeit aufweist. Zur Veranschaulichung ist der Objektwert V ein zusammengesetztes Objekt, das aus der Datenbank 410 und der Datenbank 412 erhalten wird.
-
Die Zeit, die benötigt wird, um den ersten Teil (zum Beispiel einen Benutzernamen und Bankkontostand) des zusammengesetzten Objektwerts V für den Cache 402 aus Db 410 (Bank 1) zu erhalten, wird durch den Pfeil 414 angezeigt und kann zum Beispiel 500 ms betragen. Die Zeit, die benötigt wird, um den zweiten Teil (zum Beispiel den Benutzernamen und Bankkontostand) des zusammengesetzten Objektwerts V für den Cache 402 aus Db 412 (Bank 2) zu erhalten, wird durch den Pfeil 416 angezeigt und kann zum Beispiel 700 ms betragen. Die Abrufkosten dRt betragen also 500 ms + 700 ms = 1200 ms.
-
Nach dem Erhalt dieses zusammengesetzten Werts V wird es je nach Geschäftsrichtlinie notwendig sein, Kopien zu erstellen.
-
Zum Beispiel erfordert das Geschäft die Erstellung eines synchronen Replikats im Cache 404, was 40 ms (SRp) in Anspruch nimmt. Zusätzlich erfordert das Geschäft zwei asynchrone Replikate, die jeweils 20 ms (AsRp) in Anspruch nehmen, jeweils eines im Cache 406 und eines im Cache 408, was Datenabrufkosten (Cr = dRt + SRp + AsRp) von 1280 ms ergibt. Wenn es möglich ist, die TTL für das Datenobjekt V einfach zu erhöhen, können somit 1280 ms eingespart werden. Wenn eine Million solcher Objekte vorhanden sind, ist es möglich, Rechenleistung einzusparen. Auch wenn dies im Beispiel nicht gezeigt wird, könnten die Bereinigungskosten diese Einsparung sogar noch vergrößern.
-
Die vorliegende Erfindung bietet dem Stand der Technik gegenüber Vorteile durch den Zusatz dynamischer Anpassungen der TTL auf der Basis einer Veraltungsrichtlinie, die die aktuelle Replikationsrichtlinie berücksichtigt, um sicherzustellen, dass ein Objekt sich einen berechneten Zeitraum lang in einem Gitter befindet, und die dadurch eine optimale Gitterleistung gewährleistet.
-
Die entsprechenden Strukturen, Ausrüstungen, Vorgänge und Äquivalente aller Elemente in den folgenden Ansprüchen schließen alle Strukturen, Ausrüstungen und Vorgänge zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen ein, wie sie spezifisch beansprucht werden. Die Beschreibung der vorliegenden Erfindung soll der Veranschaulichung und Beschreibung dienen, ohne aber erschöpfend oder auf die Erfindung in der offenbarten Form beschränkt zu sein. Dem Durchschnittsfachmann werden viele Modifikationen und Varianten einfallen, ohne vom Umfang und Geist der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Prinzipien der Erfindung und die praktische Anwendung am besten zu erklären und um anderen Durchschnittsfachleuten das Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifikationen, wie sie für die vorgesehene spezifische Anwendung geeignet sind, zu ermöglichen.
-
Nachdem die Erfindung der vorliegenden Anmeldung ausführlich und in Bezug auf Ausführungsformen davon beschrieben wurde, ist offensichtlich, dass Modifikationen und Variationen möglich sind, ohne vom Umfang der Erfindung abzuweichen, der in den beiliegenden Ansprüchen definiert wird.