-
Die Erfindung betrifft ein computerimplementiertes Verfahren zur Analyse von Ereignisprotokollen (im Folgenden auch als Log oder Logdatei bezeichnet) gemäß dem Oberbegriff des Anspruchs 1.
-
Ereignisprotokolle umfassen Logeinträge, die vorzugsweise zeitlich sortiert und/oder mit einem Zeitstempel versehen sind. In einem Logeintrag sind Betriebs- und/oder Zustandsparameter eines technischen Systems, beispielsweise einer Maschine oder eines Fahrzeugs, erfasst. Derartige Parameter werden als Variablenwerte erfasst und in dem Ereignisprotokoll abgelegt, wobei ein Variablenwert einer (beispielsweise über einen Namen und/oder einen Index) identifizierbaren Variablen zugeordnet ist. Jeder Variablenwert kann digital als Bitmuster abgelegt werden, indem der zugeordneten Variablen über einen Variablentyp eine Kodierungsvorschrift zugewiesen wird.
-
Beispielsweise kann ein Betriebsparameter eines Fahrzeugs als Variable „Öltemperatur“ erfasst werden, der der Variablentyp „vorzeichenbehaftete Ganzzahl mit 16 Bit Bitbreite“ (signed short) zugewiesen ist. Ein anderer Betriebsparameter kann als Variable „Öldruck“ erfasst werden, der der Variablentyp „vorzeichenlose Ganzzahl mit 16 Bit Bitbreite“ (unsigned short) zugewiesen ist. Ein weiterer Betriebsparameter kann als Variable „Lenkwinkel“ erfasst werden, der der Variablentyp „Gleitkommazahl mit 32 Bit Bitbreite“ (float) zugewiesen ist. Ein Zustandsparameter kann als Variable „Fehlercode Motorsteuerung“ erfasst werden, der der Variablentyp „Bitfeld mit 14 Bit Bitbreite“ zugewiesen ist.
-
In einem Ereignisprotokoll werden verschiedene Betriebs- und Zustandsparameter mit verschiedenen zeitlichen Abständen oder ereignisbezogen erfasst. Mit anderen Worten: in einem Logeintrag kann allen Variablen oder auch nur einer einzigen Variablen ein konkreter Variablenwert zugeordnet sein.
-
Bei der Auswertung derartiger Ereignisprotokolle werden typischerweise Logeinträge gesucht, die ein gewisses Suchkriterium hinsichtlich einer oder mehrerer Variablen erfüllen. Beispielhaft werden alle Logeinträge gesucht, bei denen die Öltemperatur höher als 110 Grad Celsius ist. Alternativ können, als weiteres Beispiel, alle Logeinträge gesucht werden, bei denen die Öltemperatur höher als 120 Grad Celsius und der Öldruck geringer als 3 Bar ist. Da derartige Ereignisprotokolle sehr viele Logeinträge und/oder sehr viele Parameter (das heißt: Variablen) umfassen können, kann die Ausführung einer solchen Suche mit hohem Aufwand an Rechenzeit und/oder Rechenressourcen verbunden sein.
-
Das Dokument
WO 2016/161381 A1 beschreibt ein System, ein Verfahren und ein Computerprogrammprodukt zur Implementierung eines Verfahrens zur Auswertung von Ereignisprotokollen sowie ein System, das zur effizienten Konfiguration, Erfassung und Analyse von Logeinträgen eingerichtet ist. Ferner wird dort ein verbessertes Verfahren zur automatischen Generierung eines Parsers durch Auswertung der Logeinträge eines Ereignisprotokolls beschrieben. Ferner wird ein Verfahren zur Extraktion von Schlüssel - Wert - Paaren aus dem Inhalt des Ereignisprotokolls beschrieben.
-
Der Erfindung liegt die Aufgabe zu Grunde, ein verbessertes computerimplementiertes Verfahren zur Analyse von Ereignisprotokollen bereitzustellen.
-
Die Aufgabe wird erfindungsgemäß gelöst durch ein computerimplementiertes Verfahren mit den Merkmalen des Anspruchs 1.
-
Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche.
-
Ein Ereignisprotokoll umfasst mindestens einen Logeintrag. Jeder Logeintrag ist durch einen Logindex identifizierbar, der beispielsweise als Zeitstempel ausgebildet oder einem Zeitstempel zugeordnet sein kann. Beispielsweise kann ein Logindex durch die Durchnummerierung zeitlich aufeinanderfolgender Logeinträge gebildet werden. Die Anzahl der im Ereignisprotokoll umfassten Logeinträge wird mit N bezeichnet.
-
Ein Logeintrag umfasst jeweils mindestens einen Variablenwert einer Variablen, die über einen Namen und/oder einen Variablenindex identifizierbar und von anderen Variablen unterscheidbar ist. Jeder Variablen ist ein Variablentyp und mit dem Variablentyp auch ein Bitmuster zugeordnet, in dem Variablenwerte dieser Variablen in einer vorbestimmten Bitbreite dargestellt werden können.
-
Die Anzahl der im Ereignisprotokoll insgesamt erfassten Variablen wird mit M bezeichnet. Ein einzelner Logeintrag umfasst mindestens einen und höchsten M Variablenwerte. Somit umfasst das Ereignisprotokoll in seinen N Logeinträgen insgesamt mindestens einen und höchstens M x N Variablenwerte.
-
Bei einem computerimplementierten Verfahren zur Analyse eines derartigen Ereignisprotokolls wird das Ereignisprotokoll eingelesen. Beim Einlesen werden für jedes Bit einer jeden Variablen jeweils ein nicht-negierter Bitindex und ein negierter Bitindex aufgebaut.
-
Ein nicht-negierter Bitindex ist die Menge aller Logindizes derjenigen Logeinträge, in denen ein Variablenwert der jeweiligen (dem nicht-negierten Bitindex zugeordneten) Variablen enthalten ist und in denen in der Darstellung dieses Variablenwertes als Bitmuster gemäß dem Variablentyp die dem nicht-negierten Bitindex zugeordnete Bitstelle mit dem Wert 1 belegt ist.
-
Ein negierter Bitindex ist die Menge aller Logindizes derjenigen Logeinträge, in denen ein Variablenwert der jeweiligen (dem negierten Bitindex zugeordneten) Variablen enthalten ist und in denen in der Darstellung dieses Variablenwertes als Bitmuster gemäß dem Variablentyp die dem negierten Bitindex zugeordnete Bitstelle mit dem Wert 0 belegt ist.
-
Mit anderen Worten: jeder Bitindex umfasst, beispielsweise in der Art einer Liste, eine Menge von Logindizes entsprechend der Zuordnung der Variablen, der Zuordnung der Bitstelle und der Ausprägung als negierter oder nicht-negierter Bitindex. Diese Menge kann leer sein und bis zu N Logindizes umfassen.
-
Die Logindizes eines jeden Bitindex werden sortiert. Die Sortierung kann in aufsteigender oder in abfallender Folge der Logindizes erfolgen. Die Sortierung kann während des Einlesens erfolgen (das heißt: während die Bitindizes aufgebaut werden). Alternativ kann die Sortierung erfolgen, wenn das Einlesen abgeschlossen wurde (das heißt: nachdem die Bitindizes vollständig, aber unsortiert aufgebaut wurden).
-
Nach dem Einlesen kann ein Suchkriterium oder auch eine Folge von Suchkriterien präsentiert werden, gemäß dem jeweils alle Logeinträge ermittelt werden sollen, die das jeweilige Suchkriterium erfüllen. Ein Suchkriterium wird dabei als logischer Ausdruck präsentiert, der von mindestens einer Variablen abhängt.
-
Für jedes der Suchkriterien wird ein Suchergebnis als eine Liste von Logindizes ermittelt, indem das Suchkriterium in eine Normalform von Elementarbedingungen überführt wird. Als Elementarbedingung wird hier und im Folgenden ein logischer Ausdruck verstanden, der von nur einer einzigen Variablen abhängt.
-
Das Suchkriterium wird in eine Normalform derartiger Elementarbedingungen überführt. Beispielsweise wird das Suchkriterium in eine Disjunktive Normalform überführt, die als Disjunktion von Konjunktionen von Elementarbedingungen formuliert ist. Alternativ kann das Suchkriterium auch in eine Konjunktive Normalform überführt werden, die als Konjunktion von Disjunktionen von Elementarbedingungen formuliert ist.
-
Zu jeder der Elementarbedingungen eines in Normalform überführten Suchkriteriums werden diejenigen Bitindizes ausgewählt, die diese Elementarbedingung erfüllen. Mit anderen Worten: es werden diejenigen Bitindizes der Variablen dieser Elementarbedingung ausgewählt, deren zugeordnete Bitbelegung kompatibel zu der Elementarbedingung ist. Das heißt: ein nicht-negierter Bitindex wird dann ausgewählt, wenn die zugeordnete Bitstelle für mindestens einen Variablenwert, der der Elementarbedingung genügt, mit 1 belegt ist und ein negierter Bitindex wird dann ausgewählt, wenn die zugeordnete Bitstelle für mindestens einen Variablenwert, der der Elementarbedingung genügt, mit 0 belegt ist.
-
Die ausgewählten Bitindizes aller Variablen aller in dem Suchkriterium in Normalform enthaltenen Elementarbedingungen werden gemäß der Normalform mengenarithmetisch verbunden. Beispielsweise werden für ein in Disjunktiver Normalform vorliegendes Suchkriterium alle Bitindizes zur Vereinigungsmenge verbunden. Für ein in Konjunktiver Normalform vorliegendes Suchkriterium werden alle Bitindizes zur Schnittmenge verbunden.
-
Während das Durchsuchen aller bis zu M x N Variablenwerte des Ereignisprotokolls bei der Suche nach Logeinträgen mit Verfahren nach dem Stand der Technik mit einem Aufwand skaliert, der proportional zum Produkt M × N log N wächst, ermöglicht das erfindungsgemäße Verfahren einen Suchaufwand, der nur proportional zur Anzahl der Variablen (das heißt: zu M) oder proportional zur Anzahl der Logeinträge (das heißt: zu N) wächst. Aufgrund dieses nur linearen Wachstums wird eine effiziente Suche insbesondere bei sehr langen (das heißt: viele Logeinträge umfassenden) und/oder sehr detaillierten (das heißt: sehr viele Parameter beziehungsweise Variablen umfassenden) Ereignisprotokollen ermöglicht.
-
Zwar steht dem ein erhöhter Aufwand beim Einlesen des Ereignisprotokolls gegenüber, der durch den Aufbau der Bitindizes verursacht wird. Dieser Aufwand muss jedoch nur einmalig investiert werden. Insbesondere kann der Aufbau der Bitindizes vor der Präsentierung einer Suchanfrage erfolgen. Dadurch ist eine besonders schnelle Reaktion (das heißt: eine besonders schnelle Bereitstellung eines Suchergebnisses) möglich. Insbesondere bei mehreren, auf das gleiche Ereignisprotokoll bezogenen Suchanfragen kann zudem der Gesamtaufwand für die Suchen verringert werden.
-
Ausführungsbeispiele der Erfindung werden im Folgenden anhand einer Zeichnung näher erläutert.
-
Dabei zeigt:
- 1 schematisch ein Ereignisprotokoll.
-
1 zeigt schematisch ein Ereignisprotokoll 1, im Folgenden auch als Logdatei oder Log bezeichnet, zur Erfassung von Parametern eines nicht näher dargestellten Fahrzeugs. In dem Ereignisprotokoll 1 sind zeitlich sortiert Protokolldaten x11 xNM erfasst, die im Folgenden auch als Variablenwerte bezeichnet werden.
-
Jeder Variablenwert x11 bis xNM kodiert den numerischen oder logischen Wert einer Variablen X1 bis XM, der zu einem über einen zugeordneten Zeitstempel t1 bis tN identifizierten Zeitpunkt erfasst wurde und der einen der jeweiligen Variablen X1 bis XM fest zugeordneten Parameter, beispielsweise einen Betriebsparameter (beispielhaft eine Temperatur, eine Drehzahl oder eine Geschwindigkeit) oder einen Fehlerzustand des Fahrzeugs oder einer Komponente des Fahrzeugs quantifiziert. Jede dieser Variablen X1 bis XM ist, beispielsweise über einen Namen, identifizierbar und von anderen Variablen X1 bis XM unterscheidbar.
-
Ein Logeintrag 21 bis 2N umfasst einen Zeitstempel t1 bis tN sowie mindestens einen Variablenwert x11 bis xNM. Der Zeitstempel t1 bis tN kodiert in einem nicht näher bezeichneten Format den Zeitpunkt, zu dem der mindestens eine Variablenwert x11 bis xNM des Logeintrags 21 bis 2N erfasst wurde. In einem Logeintrag 21 bis 2N können ein einziger Variablenwert x11 bis xNM, mehrere Variablenwerte x11 bis xNM oder sogar Variablenwerte x11 bis xNM für jede in der Logdatei 1 protokollierte Variable X1 bis XM erfasst sein.
-
Die Logeinträge 21 bis 2N sind über den Zeitstempel t1 bis tN und/oder über einen anderen, dem Zeitstempel t1 bis tN eindeutig zugeordneten Logindex identifizierbar. Im einfachsten Fall kann ein Logindex n = 1, 2, ... N durch Durchnummerierung der Zeitstempel t1 bis tN in ihrer zeitlichen Reihenfolge gebildet sein.
-
Ein Ereignisprotokoll oder Log 1 mit mindestens einem derartigen Logeintrag 21 bis 2N kann auf einem Einzelrechner (PC) oder auf einem Server oder einer Mehrzahl von Servern (beispielsweise in einer Daten - und/oder Software as a Service (SaaS) - Cloud) abgelegt sein.
-
Beispielhaft können die Variablenwerte x11 bis xNM als vorzeichenbehaftete oder vorzeichenlose Ganzzahl mit einer Bitbreite von 8, 16, 32, 64 oder mehr Bits kodiert sein. Die Kodierung kann auch als Gleitkommazahl nach dem IEEE 754 Standard „Standard for Binary Floating-Point Arithmetic“ in einfacher oder in höherer Genauigkeit erfolgen. Auch eine Kodierung als Einzelzeichen (character) oder als Zeichenkette (string) ist möglich. Ein Variablenwert x11 bis xNM ist somit als Bitmuster abgelegt, dessen Länge (Bitbreite) und Kodierungsvorschrift der zugeordneten Variablen X1 bis XM zugewiesen ist.
-
Zur möglichst einfachen Illustration eines Ausführungsbeispiels sind die Variablen X1 bis XM als vorzeichenlose, 4 Bit breite Ganzzahl dargestellt, die jeweils als Folge von Bitwerten
kodiert sind, wobei b3 das höchstwertige (most significand) Bit und b0 das niedrigstwertige (least significand) Bit darstellt. Beispielhaft entspricht somit ein Bitmuster, das heißt: eine binäre Darstellung
einem dezimalem Zahlenwert von 1 · 2
3 + 0 · 2
2 + 1 · 2
1 + 1 · 2
0 = {11}
10.
-
Selbstverständlich können den verschiedenen Variablen X1 bis XM aber auch verschiedene Kodierungsformate mit voneinander verschiedenen Bitbreiten zugeordnet sein.
-
Gemäß der schematischen Darstellung nach 1 sind in dem Logeintrag 21, der dem ersten Zeitstempel t1 zugeordnet ist, Variablenwerte x11 und x13 für die erste Variable X1 beziehungsweise für die dritte Variable X3 erfasst. Für die übrigen Variablen X2, XM sind keine Werte erfasst.
-
Jeder Logeintrag 21 bis 2N kann somit bis zu M Variablenwerte x11 bis xNM, das Ereignisprotokoll 1 insgesamt somit bis zu N x M Variablenwerte x11 bis xNM umfassen. In 1 sind die Variablenwerte x11 bis xNM der besseren Übersichtlichkeit halber matrixartig in einem zweidimensionalen Feld angeordnet, bei dem die vertikale Dimension die zeitliche Reihenfolge und die horizontale Dimension die Zuordnung der Variablen X1 bis XM angibt. Jedoch kann die Repräsentation der Variablenwerte x11 bis xNM auch in technisch anderer Weise, beispielsweise als verkettete Liste, erfolgen. So kann bei einer verketteten Liste einem Listeneintrag ein Zeitstempel t1 bis tN, ein Name zur Beschreibung der Variablen X1 bis XM sowie der dem Zeitstempel t1 bis tN und der Variablen X1 bis XM jeweils zugeordnete Variablenwert x11 bis xNM zugewiesen sein.
-
Bei der Auswertung eines Ereignisprotokolls 1 wird eine typische Suchanfrage als Kriterium bezüglich einer oder mehrerer Variablen X1 bis XM formuliert. Beispielsweise kann eine Suchanfrage so formuliert sein, dass die Indizes n aller Logeinträge 21 bis 2N gesucht sind, für die die Bedingung (das Suchkriterium)
-
„Der Wert der Variablen X1 liegt zwischen 0 und 100“ logisch wahr wird:
-
Eine andere Suchanfrage kann so formuliert sein, dass die Indizes n aller Logeinträge 21 bis 2N gesucht sind, für die die Bedingung (das Suchkriterium)
-
„Der Wert der Variablen X2 ist genau 42“ logisch wahr wird:
-
Derartige, auf einzelne Variablen X1 bis XM bezogenen Suchanfragen können auch über logische Operationen in neue Suchanfragen kombiniert werden. Beispielsweise kann eine Suchanfrage so formuliert sein, dass die Indizes n aller Logeinträge 21 bis 2N gesucht sind, für die die Bedingung (das Suchkriterium)
-
„Der Wert der Variablen X1 liegt zwischen 0 und 100
ODER
der Wert der Variablen X2 ist genau 42“
logisch wahr wird:
-
Jedes denkbare Suchkriterium kann als logischer Ausdruck formuliert werden, der von höchstens M Variablen X1 bis XM abhängt. Bei der Anwendung des Suchkriteriums werden für jeden Logeintrag 21 bis 2N an Stelle der Variablen X1 bis XM die in diesem Logeintrag 21 bis 2N der Variablen X1 bis XM jeweils zugeordneten Variablenwerte x11 bis xNM eingesetzt.
-
Wie jeder logische Ausdruck kann auch jedes denkbare Suchkriterium als Disjunktive Normalform (Disjunktion von Konjunktionstermen) formuliert werden, wobei in den Konjunktionstermen eine oder mehrere Elementarbedingungen logisch UND - verknüpft sind. Unter einer Elementarbedingung soll hier und im Folgenden eine Bedingung in Bezug auf nur eine einzige Variable X1 bis XM verstanden werden. Beispielhaft sind die Bedingungen (X1 > 0), (X1 > 0)Λ(X1 < 100) sowie (X2 == 42) Elementarbedingungen, nicht dagegen die Bedingung ((X1 > 0)Λ(X1 < 100)) V (X2 == 42) oder die Bedingung ((X1 > 0)Λ(X3 < 100)).
-
Alternativ zur Disjunktiven Normalform kann jedes Suchkriterium auch als Konjunktive Normalform (Konjunktion von Disjunktionstermen) formuliert werden, wobei in den Disjunktionstermen verschiedene Elementarbedingungen logisch ODER - verknüpft sind.
-
Es ist möglich, dass eine oder mehrere Variablen X1 bis XM zwar in dem logischen Ausdruck des Suchkriteriums auftreten, dass ihnen jedoch in einem gewissen Logeintrag 21 bis 2N kein Variablenwert x11 bis xNM zugeordnet wurde, weil zum Zeitstempel t1 bis tN dieses gewissen Logeintrags 21 bis 2N die betreffende Variable X1 bis XM nicht erfasst (gemessen oder beobachtet) wurde. Bei der Auswertung des Suchkriteriums für einen solchen Logeintrag 21 bis 2N werden alle Elementarbedingungen in Bezug auf jede solche Variable X1 bis XM, der kein Variablenwert x11 bis xNM zugeordnet ist, als logisch FALSCH bewertet.
-
Auf diese Weise kann jeder Logeintrag 21 bis 2N einer Auswertung durch das Suchkriterium unterzogen werden, die entweder das Resultat logisch WAHR (Suchkriterium ist erfüllt) oder logisch FALSCH (Suchkriterium ist nicht erfüllt) ergibt. Das Suchergebnis ist die Menge aller Logeinträge 21 bis 2N, für die das Suchkriterium (angewendet auf die zugeordneten Variablenwerte x11 bis xNM) das Resultat logisch WAHR ergibt.
-
Eine einfache Umsetzung einer solchen Suchanfrage erzeugt einen Aufwand, der abhängig von der Anzahl M der Variablen X1 bis XM und von der Anzahl N der Logeinträge 21 bis 2N ist. Bei einer solchen einfachen Umsetzung müssen für die M Variablen X1 bis XM jeweils O(N log(N)) Schritte zu deren Sortierung ausgeführt werden, insgesamt also O(M × N log(N)) Schritte. Zudem müssen bei einer solchen einfachen Umsetzung in den dann sortierten Listen von Werten einer jeden Variablen X1 bis XM die zu der Suchanfrage passenden Einträge mit einem Aufwand von jeweils O(log(N)) gesucht werden, für alle Variablen bedarf es somit O(M × log(N)) Schritte. Eine derartige einfache Umsetzung ist somit mit einem Suchaufwand für alle Variablen X1 bis XM von O(M × (N + 1) · log(N)) = O(M × N · log(N)) verbunden.
-
Bei Suchanfragen, die Kriterien bezüglich mehrerer Variablen X1 bis XM kombinieren (das heißt: die Elementarbedingungen in Bezug auf unterschiedliche Variablen X1 bis XM umfassen), kommt noch der Aufwand für das Zusammenführen der auf die einzelnen Variablen X1 bis XM bezogenen Suchergebnisse hinzu.
-
Da für die Auswertung derartiger Ereignisprotokolle 1 von typischen technischen Systemen, beispielsweise von Kraftfahrzeugen, nur hinsichtlich Rechenleistung und Speicherplatz beschränkte Ressourcen verfügbar sind, besteht ein Bedarf an einem effizienteren Verfahren zur Suche nach Logeinträgen 21 bis 2N, um die Wartezeit eines Nutzers bei der Beantwortung einer Suchanfrage zu verringern.
-
Der Erfindung liegt die Erkenntnis zugrunde, dass sich die Wartezeit für die Beantwortung einer Suchanfrage dadurch reduzieren lässt, dass bereits beim Einlesen eines Logs 1 - also noch vor der Formulierung einer Suchanfrage - ein Binärindex generiert wird.
-
Hier und im Folgenden wird unter einem Binärindex eine beispielsweise als geordnete Liste gegebene Menge von Logindizes verstanden, die jeweils einem Bitwert einer Variablen X1 bis XM zugeordnet ist. Ein Logindex ist die Nummer n = 1, 2,... N eines Logeintrags 21 bis 2N (oder, gleichbedeutend, eines diesem Logeintrag 21 bis 2N zugewiesenen Zeitstempels t1 bis tN).
-
Dabei soll der nicht-negierte Binärindex
die Liste der Logindizes all derjenigen Logeinträge 21 bis 2N notieren, in denen das i-te Bit der Variablen Xk den Wert 1 hat. Analog dazu soll der negierte Binärindex
die Liste der Logindizes all derjenigen Logeinträge 21 bis 2N notieren, in denen das i-te Bit der Variablen Xk den Wert 0 hat. Für eine Variable X1 bis XM mit einer Bitbreite von B Bit werden somit 2 x B Binärindizes (jeweils ein negierter und ein nicht-negierter Binärindex) gebildet.
-
Beispielhaft wird beim Einlesen des zweiten Logeintrags 22, in dem der ersten Variable X1 der Variablenwert x21 = (9)
10 = (1001)
2 zugewiesen ist (in dezimaler beziehungsweise binärer Kodierung), den folgenden Binärindizes der Wert „2“ (als Index oder Nummer des zweiten Logeintrags 22) neu zugeordnet:
-
Die übrigen, der ersten Variable X1 zugeordneten Binärindizes
bleiben unverändert.
-
In gleicher Weise werden weitere Binärindizes für alle weiteren, im zweiten Logeintrag 22 erfassten Variablenwerte (im vorliegenden Beispiel gemäß 1 der Variablenwert x22) ergänzt.
-
In dieser Weise werden sämtliche Variablenwerte x11 bis xNM sämtlicher Logeinträge 21 bis 2N untersucht und die zugeordneten Binärindizes schrittweise (das heißt: Variablenwert um Variablenwert) beim Einlesen des Logs 1 aufgebaut.
-
Die Binärindizes können dabei beim Aufbauen sortiert werden, indem jeder hinzuzufügende Logindex für einen Logeintrag 21 bis 2N an der Position eingefügt wird, die seinem Wert in der Folge der bereits vorhandenen Logindizes entspricht. Alternativ können die Binärindizes auch sortiert werden, wenn das Log 1 vollständig eingelesen ist, das heißt: wenn alle Binärindizes zwar vollständig, aber im Allgemeinen noch unsortiert sind. Dabei ist es gleichgültig, ob die Binärindizes nach aufsteigender oder abfallender Folge der Indexwerte sortiert werden.
-
Jede Elementarbedingung eines Suchkriteriums kann nun auf eine Teilmenge der Vereinigungsmenge aller Binärindizes abgebildet werden. Beispielsweise wird der Elementarausdruck X1==5 (Bedingung: der der Variablen X1 zugeordnete Variablenwert eines Logeintrags 21 bis 2N ist genau (5)
10 = (0101)
2) auf die Menge
abgebildet.
-
In analoger Weise wird die Konjunktion der Elementarausdrücke (X1 < 5) Λ (X1 > 0) auf die Menge
abgebildet. Irrelevante Bits können hierbei unberücksichtigt bleiben, indem der dem Suchkriterium zugeordnete logische Ausdruck in eine Normalform überführt wird:
-
Liegt der Suchausdruck beispielsweise als Disjunktive Normalform vor (das heißt: als Disjunktion von Konjunktionen von Elementarausdrücken), so wird die Ergebnismenge als Vereinigungsmenge derjenigen Teilmengen gebildet, die jeweils den einzelnen Konjunktionen der Elementarausdrücke zugeordnet sind. In dieser Weise lässt sich für jeden Suchausdruck eine Ergebnismenge bestimmen.
-
Diese Mengenoperationen (das heißt: das Bilden einer Vereinigungsmenge oder einer Schnittmenge von mehreren Binärindizes) sind besonders effizient durchführbar, wenn die Binärindizes als geordnete Mengen (das heißt: als aufsteigend oder abfallend sortierte Listen von Logindizes) geformt sind.
-
Die derart gebildete Ergebnismenge gibt die Logindizes aller Logeinträge 21 bis 2N an, die das Suchkriterium erfüllen (das heißt: bei denen durch Einsetzen der jeweils zugeordneten Variablenwerte x11 bis xNM das Resultat logisch WAHR entsteht).
-
In einer Ausführungsform können besonders komplexe Suchkriterien vereinfacht werden, beispielsweise, indem einzelne Elementarausdrücke in Konjunktionen einer Disjunktiven Normalform unterdrückt werden. In diesem Fall kann die so gebildete Ergebnismenge auch vereinzelt Logindizes von Logeinträgen 21 bis 2N umfassen, welche das ursprüngliche (nicht vereinfachte) komplexe Suchkriterium nicht erfüllen (nicht logisch WAHR machen). Jedoch reicht es in diesem Fall, das komplexe Suchkriterium auf die in der Ergebnismenge umfassten (das heißt: über die Logindizes des Suchergebnisses indizierten) Logeinträge 21 bis 2N anzuwenden, die gegenüber der Gesamtzahl der Logeinträge 21 bis 2N drastisch reduziert ist.
-
Die Laufzeit für die Auswertung eines Suchkriteriums kann durch die vorgeschlagene Bildung von Binärindizes beim Einlesen des Logs 1 im günstigsten Fall auf die Ordnung O(M) reduziert werden (das heißt: auf eine proportional zur Anzahl der Variablen X1 bis XM zunehmende Laufzeit). Im ungünstigsten Fall kann die Laufzeit dadurch auf die Ordnung O(W) reduziert werden (das heißt: auf eine proportional zur Anzahl der Logeinträge 21 bis 2N zunehmende Laufzeit). Die Wartezeit für die Auswertung eines Suchkriteriums kann somit gegenüber dem Stand der Technik wesentlich verringert werden, indem die Vorbereitung der Binärindizes bereits beim Einlesen des Logs 1, also vor einer Suchanfrage, vorgenommen wird.
-
Bezugszeichenliste
-
- 1
- Ereignisprotokoll, Logdatei, Log
- 21 bis 2N
- Logeintrag
- t1 bis tN
- erster bis N-ter Zeitstempel
- x11 bis xNM
- Protokolldaten, Variablenwert
- X1 bis XM
- erste bis M-te Variable
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-