-
HINTERGRUND DER ERFINDUNG
-
Die vorliegende Offenbarung betrifft ein System zur Datenverwaltung. Speziell betrifft die Offenbarung ein medizinisches System zur Ermöglichung des Austauschs von Gesundheitsdaten zwischen mehreren Vorrichtungen.
-
Zur Verbesserung der Geschwindigkeit von Datenabrufvorgängen an einer Datenbanktabelle werden gewöhnlich auf Kosten von zusätzlichen Schreibvorgängen und Speicherraum Indizes zur Aufrechterhaltung der Indexdatenstruktur verwendet. Indizes werden zum schnellen Auffinden von Daten verwendet, ohne bei jedem Zugriff auf eine Datenbanktabelle jede Zeile in einer Datenbanktabelle durchsuchen zu müssen. In Systemen wie etwa medizinischen Systemen, die sensible Patientendaten pflegen, können die Indizes eine zusätzliche Quelle eines Eingriffs oder unberechtigten Zugriffs auf die Gesundheitsdaten sein. Daher besteht ein Bedarf für die Gewährleistung eines sicheren Zugriffs und einer sicheren Handhabung der Indizes.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Verschiedene Ausführungsformen sehen ein Computersystem zum Einfügen von Datenelementen in eine Relation, ein Serversystem und ein Client-System vor, wie vom Gegenstand der unabhängigen Ansprüche beschrieben. Vorteilhafte Ausführungsformen werden in den abhängigen Ansprüchen beschrieben. Ausführungsformen der vorliegenden Erfindung können frei miteinander kombiniert werden, wenn sie sich nicht gegenseitig ausschließen.
-
In einem weiteren Aspekt betrifft die Erfindung ein Computersystem zum Einfügen mehrerer Datenelemente in eine Relation, wobei die Relation in einem Servercomputer des Computersystems gespeichert wird, wobei die Relation Datenelemente aufweist, wobei die Datenelemente mit einem ersten Verschlüsselungsverfahren in der Relation verschlüsselt werden, wobei die Datenelemente eine partiell geordnete Menge in der Relation bilden, wobei die partielle Ordnung mit Bezug auf die Datenelemente in nichtverschlüsselter Form gebildet wird. Das Computersystem weist ferner ein Client-System auf, wobei zum Einfügen mehrerer verschlüsselter Datenelemente in die partiell geordnete Menge: das Client-System konfiguriert ist zum Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition in der partiell geordneten Menge haben; Sortieren der mehreren verschlüsselten Datenelemente gemäß einer linearen Ordnung, die der Ordnung entspricht, in der die verschlüsselten Datenelemente in der Relation mit Bezug auf die partiell geordnete Menge gespeichert werden, wobei das Sortieren je nach der Einfügungsposition in aufsteigender oder absteigender Ordnung durchgeführt wird; Verschlüsseln der mehreren Datenelemente unter Verwendung des ersten Verschlüsselungsverfahrens; und das Serversystem zum Einfügen der verschlüsselten Datenelemente in ihrer sortierten Ordnung nacheinander in die partiell geordnete Menge konfiguriert ist.
-
In einem weiteren Aspekt betrifft die Erfindung einen Servercomputer eines Computersystems vorhergehender Ausführungsformen, wobei das Computersystem eine Relation aufweist, wobei die Relation in einem Servercomputer des Computersystems gespeichert wird, wobei die Relation Datenelemente aufweist, wobei die Datenelemente mit einem ersten Verschlüsselungsverfahren in der Relation verschlüsselt sind, wobei die Datenelemente eine partiell geordnete Menge in der Relation bilden, wobei die partielle Ordnung mit Bezug auf die Datenelemente in nichtverschlüsselter Form gebildet ist, der Servercomputer konfiguriert ist zum: Einfügen verschlüsselter Datenelemente in ihrer sortierten Ordnung nacheinander in die partiell geordnete Menge.
-
In einem weiteren Aspekt betrifft die Erfindung einen Client-Computer eines Computersystems vorhergehender Ausführungsformen, wobei das Computersystem eine Relation aufweist, wobei die Relation in einem Servercomputer des Computersystems gespeichert wird, wobei die Relation Datenelemente aufweist, wobei die Datenelemente mit einem ersten Verschlüsselungsverfahren in der Relation verschlüsselt sind, wobei die Datenelemente eine partiell geordnete Menge in der Relation bilden, wobei die partielle Ordnung mit Bezug auf die Datenelemente in nichtverschlüsselter Form gebildet ist, wobei zum Einfügen von mehreren verschlüsselten Datenelementen in die partiell geordnete Menge: der Client-Computer konfiguriert ist zum: Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition in der partiell geordneten Menge haben; Sortieren der mehreren verschlüsselten Datenelemente gemäß einer linearen Ordnung, die der Ordnung entspricht, in der die verschlüsselten Datenelemente mit Bezug auf die partiell geordnete Menge in der Relation gespeichert werden, wobei das Sortieren je nach der Einfügungsposition in aufsteigender oder absteigender Ordnung durchgeführt wird; Verschlüsseln der mehreren Datenelemente unter Verwendung des ersten Verschlüsselungsverfahrens.
-
Des Weiteren wird ein Verfahren zum Einfügen mehrerer Datenelemente in eine Relation beschrieben, wobei die Relation in einem Servercomputer gespeichert wird, wobei die Relation Datenelemente aufweist, wobei die Datenelemente mit einem ersten Verschlüsselungsverfahren in der Relation verschlüsselt werden, wobei die Datenelemente eine partiell geordnete Menge in der Relation bilden, wobei die partielle Ordnung mit Bezug auf die Datenelemente in nichtverschlüsselter Form gebildet wird. Das Verfahren weist zum Einfügen mehrerer verschlüsselter Datenelemente in die partiell geordnete Menge Folgendes auf: Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition in der partiell geordneten Menge haben; Sortieren der mehreren verschlüsselten Datenelemente gemäß einer linearen Ordnung, die der Ordnung entspricht, in der die verschlüsselten Datenelemente in der Relation mit Bezug auf die partiell geordnete Menge gespeichert werden, wobei das Sortieren je nach der Einfügungsposition in aufsteigender oder absteigender Ordnung durchgeführt wird; Verschlüsseln der mehreren Datenelemente unter Verwendung des ersten Verschlüsselungsverfahrens; Einfügen der verschlüsselten Datenelemente in ihrer sortierten Ordnung nacheinander in die partiell geordnete Menge.
-
KURZE BESCHREIBUNG DER MEHREREN ANSICHTEN DER ZEICHNUNGEN
-
Im Folgenden werden Ausführungsformen der Erfindung nur beispielhaft unter Bezugnahme auf die Zeichnungen ausführlicher beschrieben, wobei:
-
1 ein schematisches Blockdiagramm eines Client-Serversystems zeigt,
-
2 ein schematisches Blockdiagramm eines Serversystems zeigt,
-
3 ein schematisches Blockdiagramm eines Client-Systems zeigt,
-
4 ein Flussdiagramm eines Verfahrens zum Einfügen von Datenelementen in eine Relation ist,
-
5 ein Flussdiagramm eines beispielhaften Verfahrens zum Einfügen von Datenelementen in die Relation ist,
-
6 ein Flussdiagramm eines weiteren beispielhaften Verfahrens zum Einfügen von Datenelementen in die Relation ist.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung werden zum Zweck der Veranschaulichung vorgelegt, es ist aber nicht vorgesehen, dass sie umfassend sind oder auf die offenbarten Ausführungsformen beschränkt sind. Für den Durchschnittsfachmann sind mehrere Modifikationen und Variationen offensichtlich, ohne vom Umfang und Sinn der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundlagen der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber im Markt angetroffenen Technologien am besten zu erläutern oder um andere Durchschnittsfachleute zu befähigen, die hierin offenbarten Ausführungsformen zu verstehen.
-
Der Begriff Relation betrifft eine Datenstruktur, die einer Datentabelle, wie etwa einer Datentabelle eines Datenbanksystems, äquivalent ist.
-
Eine partiell geordnete Menge versteht sich als eine Menge Dateneinheiten, die das Konzept eines Ordnens, Sequenzierens oder Anordnens der Elemente einer Menge formalisiert. Eine partiell geordnete Menge besteht aus einer Menge zusammen mit einer binären Relation, die anzeigt, dass bei gewissen Elementepaaren in der Menge eines der Elemente dem anderen vorangeht. Eine derartige Relation wird eine partielle Ordnung genannt, um die Tatsache zu reflektieren, dass nicht jedes Elementepaar miteinander in Beziehung stehen muss: bei einigen Paare kann es sein, dass keines der Elemente dem anderen in der partiell geordneten Menge direkt vorangeht. Die partiell geordnete Menge kann eine Datenstruktur betreffen, bei der Datenelemente in der Relation miteinander in Beziehung stehen. Die Datenstruktur kann eine Baumstruktur oder eine ähnliche indexierende Datenstruktur mit Zeigern oder Referenzen zu den Datensätzen aufweisen, die die entsprechenden Werte enthalten, die mit den Datenelementen assoziiert sind. Zum Beispiel kann die partiell geordnete Menge einen AVL-Baum oder einen binären Suchbaum (BST) aufweisen. Der Baum hält die Datenelemente in sortierter Ordnung, da dies den Baumdurchlauf beschleunigen kann.
-
Das erste Verschlüsselungsverfahren kann ein beliebiges Verschlüsselungsverfahren umfassen. Zum Beispiel kann das erste Verschlüsselungsverfahren ein nichtdeterministisches Verschlüsselungsverfahren, ein homomorphes Verschlüsselungsverfahren oder ein ordnungserhaltendes Verschlüsselungsverfahren umfassen. Das erste Verschlüsselungsverfahren verschlüsselt bei Ausführung für ein bestimmtes Datenelement das Datenelement unter Verwendung von beispielsweise einem kryptografischen Schlüssel. Gemäß einer Ausführungsform ist der kryptografische Schlüssel ein symmetrischer oder ein asymmetrischer Schlüssel. Ein zweites Verschlüsselungsverfahren, das das gleiche wie oder ein anderes als das erste Verschlüsselungsverfahren ist, kann zum Verschlüsseln der Datensätze verwendet werden, die die entsprechenden Werte enthalten, die den Datenelementen der partiell geordneten Menge zugeordnet sind.
-
Ein „kryptografischer Schlüssel”, wie hierin verwendet, umschließt einen symmetrischen Schlüssel, der sowohl zur Verschlüsselung und Entschlüsselung als auch als ein asymmetrisches kryptografisches Schlüsselpaar dient, wobei der öffentliche Schlüssel zur Verschlüsselung verwendet wird und der private Schlüssel zur Entschlüsselung verwendet wird.
-
Der Begriff „Datenelement”, wie hierin verwendet, bezieht sich auf einen Datenwert einer Dateneinheit eines Dateneinheitensatzes, wie z. B. ein Tupel, der eine oder mehr Dateneinheiten aufweist, wie etwa ein Datenwert eines Datenfelds eines Datensatzes, der mehrere Datenfelder hat, in einer Datenbank, wie etwa einer relationalen Datenbank, objektorientierten Datenbanken, objekt-relationalen Datenbanken, hierarchischen Datenbanken, noSQL-Datenbanken oder einer In-Memory-Datenbank. Zum Beispiel können die medizinischen Aufzeichnungen eines Patienten verschiedene Dateneinheiten, z. B. Datenfelder, wie etwa Namens, Adress-, Telefonnummer- und medizinische Datenfelder dieses Patienten, aufweisen, wobei Datenwerte für Namen, Adresse und Telefonnummer beispielhafte Datenelemente sind. Ein Datenelement kann eine Zeichenfolge aufweisen, die eine Vielzahl von Buchstaben, Zahlen oder beiden aufweisen kann. Das Datenelement kann eine Zahl mit einem ganzzahligen Wert oder Gleitkommazahlenwert usw. aufweisen.
-
Die obigen Merkmale können den Vorteil haben, dass sie die Beschleunigung des Prozesses der Aktualisierung oder Modifizierung der partiell geordneten Menge (z. B. einer Baumdatenstruktur) ermöglichen, während sie die Anzahl von Durchläufen der partiell geordneten Menge minimieren. Dies steht im Gegensatz zu konventionellen Verfahren, bei denen jede einzelne Knoteneinfügung eine(n) jeweiligen Neuausgleich und erneutes Traversieren des Baums erfordern, was zu einem verzögerten Zugriff auf Daten führt.
-
Ein weiterer Vorteil kann sein, dass das vorliegende Verfahren und System einen sicheren Zugriff auf die Daten über die partiell geordnete Menge ermöglichen können. Dies kann für sensible Daten eines Gesundheitssystems besonders wichtig sein. Die Manipulation der mehreren Datenelemente (und auch der Datenelemente der partiell geordneten Menge) auf der Serverseite kann durchgeführt werden, ohne die mehreren Datenelemente am Servercomputer entschlüsseln zu müssen, d. h. der Servercomputer kann keinen Zugriff auf den kryptografischen Schlüssel oder den unverschlüsselten Inhalt mehrerer Datenelemente haben. Das Risiko einer Beeinträchtigung der mehreren Datenelemente am Servercomputer kann daher abgemildert werden.
-
Das vorliegende Verfahren und System können ferner den Vorteil haben, dass sie einen (Fern-)Steuerungszugriff auf Daten über Client-Systeme ermöglichen. Dies kann für Daten mit medizinischem Bezug, für welche ein zentralisierter Steuerungszugriff auf Daten möglicherweise nicht geeignet ist, besonders vorteilhaft sein. Zum Beispiel kann die Vertraulichkeit von medizinischen Daten (z. B. Datenelemente und zugeordnete Datensätze) beeinträchtigt werden, wenn ein unberechtigter Benutzer Zugriff auf unverschlüsselten Inhalt der medizinischen Daten hat.
-
Gemäß einer Ausführungsform wird eine Anforderung zum Einfügen der mehreren Datenelemente an einem einzelnen Client-Computer erhalten, wobei das Sortieren von dem einzelnen Client-Computer unter Verwendung des unverschlüsselten Inhalts der mehreren einzufügenden Datenelemente durchgeführt wird. Diese Ausführungsform kann den Vorteil haben, dass sie einen sicheren Zugriff auf die Daten auf der Serverseite ermöglicht, da die Verschlüsselung auf der Client-Seite durchgeführt wird. Der Servercomputer kann keinen Zugriff auf den unverschlüsselten Inhalt der mehreren Datenelemente haben.
-
Gemäß einer Ausführungsform wird das Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition in der partiell geordneten Menge haben, am Client-Computer, der mit dem Servercomputer verbunden ist, parallel durchgeführt und vor Starten der Einfügung abgeschlossen. Zum Beispiel kann der Client-Computer die partiell geordnete Menge (z. B. einen gewurzelten Baum) durch den Computerserver traversieren, indem er eine oder mehr Anfragen an den Servercomputer sendet, um einen oder mehr Teile der partiell geordneten Menge zu erhalten. Der Client-Computer kann dann Datenelemente der erhaltenen Teile entschlüsseln, um die erhaltenen Teile zum Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition haben, zu traversieren. Das Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition in der partiell geordneten Menge haben, wird parallel durchgeführt, weist für jeden erhaltenen Teil das gleichzeitige Ausführen der Identifizierung der Position von jedem der mehreren Datenelemente auf. Dies kann den Vorteil haben, dass es den ganzen Prozess des Einfügens der mehreren Dateneinheiten am Servercomputer weiter beschleunigt.
-
Gemäß einer Ausführungsform wird das Sortieren in absteigender Ordnung durchgeführt, wenn die Einfügungsposition eine entsprechende Ordnung in der partiell geordneten Menge hat, die der Ordnung eines unmittelbar vorangehenden Datenelements der Einfügungsposition folgt, wobei das Sortieren in aufsteigender Ordnung durchgeführt wird, wenn die Einfügungsposition eine entsprechende Ordnung in der partiell geordneten Menge hat, die der Ordnung eines unmittelbar vorangehenden Datenelements der Einfügungsposition vorangeht. Dies kann ein genaues Verfahren zum Einfügen der Datenelemente vorsehen, indem die Notwendigkeit eines (erneuten) Traversierens der partiell geordneten Menge nach jeder Einfügung so wett wie möglich vermieden wird. Dies kann daher Verarbeitungsressourcen sparen, die ansonstens benötigt würden, wenn die mehreren Datenelemente verschieden sortiert oder überhaupt nicht sortiert werden.
-
Gemäß einer Ausführungsform weist die partiell geordnete Menge einen gewurzelten Baum auf, wobei die Einfügungsposition einen Blattknoten als ihren Elternknoten in dem gewurzelten Baum hat.
-
Gemäß einer Ausführungsform weist die partiell geordnete Menge einen gewurzelten Baum auf, wobei das Einfügen der mehreren Datenelemente für jedes Datenelement der mehreren Datenelemente Folgendes aufweist: als Reaktion auf das Bestimmen, dass die Einfügungsposition frei ist, Einfügen des Datenelements in die Einfügungsposition, die von dem Elternknoten der Einfügungsposition und Informationen, die anzeigen, ob die Einfügungsposition eine Ordnung hat, die dem Elternknoten vorangeht oder nachfolgt, beschrieben wird; als Reaktion auf das Bestimmen, dass die Einfügungsposition besetzt ist: falls das Sortieren in einer absteigenden Ordnung durchgeführt wird, Einfügen des Datenelements in eine Position, die das Datenelement zu dem am untersten angeordneten Element im Teilbaum des Elternknotens macht, der nur Datenelemente enthält, die höher als der Elternknoten angeordnet sind (das heißt, das Datenelement wird in eine Position des gewurzelten Baums eingefügt, die eine Ordnung hat, die dem untersten geordneten Knoten des rechten Teilbaums des Elternknotens vorangeht); falls das Sortieren in einer aufsteigenden Ordnung durchgeführt wird, Einfügen des Datenelements in eine Position, die das Datenelement zu dem am höchsten angeordneten Element im Teilbaum des Elternknotens macht, der nur Datenelemente enthält, die niedriger als der Elternknoten angeordnet sind (das heißt, das Datenelement wird in eine Position des gewurzelten Baums eingefügt, die eine Ordnung hat, die dem am höchsten angeordneten Knoten des linken Teilbaums des Elternknotens nachfolgt). Dies kann ein optimales und systematisches Verfahren zum Einfügen von Elementen mit derselben Einfügungsposition vorsehen. Durch Vorsehen dieses systematischen Verfahrens kann diese Ausführungsform besonders vorteilhaft sein, wenn eine große Menge der Datenelemente mit derselben Einfügungsposition einzufügen ist.
-
Gemäß einer Ausführungsform wird ferner offenbart, dass der gewurzelte Baum nach jedem Einfügungsschritt und als Reaktion auf das Bestimmen, dass der gewurzelte Baum ungleichmäßig ist, neu ausgeglichen wird. Dies kann ein Verfahren vorsehen, das nahtlos in bestehende ausgeglichene Bäume, wie etwa AVL-Bäume, integriert werden kann.
-
Gemäß einer Ausführungsform werden am Client-Computer gleichzeitig mehrere Anforderungen zum Einfügen der mehreren Datenelemente empfangen. Diese Ausführungsform kann den Vorteil haben, den Einfügungsprozess gegenüber einem Fall, bei dem die mehreren Datenelemente während einer langen Zeitspanne empfangen werden, weiter zu beschleunigen. Diese Ausführungsform kann besonders vorteilhaft sein, wenn eine große Menge der Datenelemente mit derselben Einfügungsposition einzufügen ist, da die zum Empfangen der mehreren Datenelemente, z. B. nacheinander, erforderliche Zeitspanne Verzögerungen in den Einfügungsprozess einführen kann.
-
Gemäß einer Ausführungsform werden während einer vorbestimmten Zeitspanne mehrere Anforderungen zum Einfügen der mehreren Datenelemente am Client-Computer erfasst. Diese Ausführungsform kann im Fall einer Masseneinfügung vorteilhaft sein, die das Verschieben und Einfügen von beispielsweise einer ganzen (fernen) Datenbank der Datenelemente in die partiell geordnete Menge beinhalten kann.
-
Gemäß einer Ausführungsform ist das erste Verschlüsselungsverfahren ein ordnungserhaltendes Verschlüsselungsverfahren, bei dem das Sortieren vom Servercomputer auf Basis des verschlüsselten Inhaltes der mehreren Datenelemente durchgeführt wird, wobei die mehreren Datenelemente unter Verwendung des ersten Verschlüsselungsverfahrens verschlüsselt werden. Dies kann den Vorteil haben, den Einfügungsprozess weiter zu beschleunigen; insbesondere, wenn mehrere Client-Computer die mehreren Datenelemente erhalten. Grund dafür ist zum Beispiel, dass die mehreren Datenelemente zu einem bestimmten Client-Computer kopiert oder verschoben werden müssten, bevor sie von diesem bestimmten Client-Computer sortiert würden, und vor dem Einfügen in die Datenbank wieder zum Server zurück übertragen werden müssten.
-
Gemäß einer Ausführungsform werden Anforderungen zum Einfügen der mehreren Datenelemente an mehreren Client-Computern erhalten, wobei das erste Verschlüsselungsverfahren ein nichtdeterministisches Verschlüsselungsverfahren ist, wobei das Sortieren Folgendes aufweist: Auswählen eines Client-Computers der mehreren Client-Computer zum Sortieren der mehreren Datenelemente. Die Auswahl des Client-Computers kann das zufällige Auswählen eines Client-Computers der mehreren Client-Computer umfassen.
-
Gemäß einer Ausführungsform weist die partiell geordnete Menge einen AVL-Baum oder einen binären Suchbaum auf. Diese Ausführungsform kann vorteilhaft sein, da sie nahtlos in diese Bäume verwendende bestehende Systeme integriert werden kann.
-
1 zeigt ein schematisches Blockdiagramm eines Client-Serversystems 100 gemäß der vorliegenden Offenbarung. Das Client-Serversystem 100 weist ein oder mehr Client-Systeme (oder Client-Computer) 102A–N und ein Serversystem (oder einen Servercomputer) 106 auf. Das Client-System 102A–N und das Serversystem 106 sind über eine Netzverbindung 104 miteinander verbunden. Das Client-System 102 kann als ein Computersystem betrachtet werden, das über die Netzverbindung 104, die zum Beispiel eine drahtlose Nahverkehrsnetz-(WLAN)-verbindung, eine WAN-(Weitverkehrsnetz)-Verbindung oder eine Kombination davon umfassen kann, mit dem Serversystem 106 kommunizieren kann. Das Serversystem 106 kann als ein Computersystem betrachtet werden, das Datenzugang zu dem Client-System 102 bereitstellen kann. Um auf im Server 106 gespeicherte Daten zuzugreifen, sendet das Client-System 102 eine Anforderung an den Server 106, wobei die Anforderung im Serversystem 106 aufgenommen und verarbeitet wird.
-
Das Client-Serversystem 100 kann zum Beispiel ein medizinisches System sein, bei dem das Client-System 102 Teil einer Arztpraxis oder eines Krankenhauses sein kann, und das Serversystem 106 kann sich in einem externen Datenbankzentrum wie etwa einem Cloud-Rechenzentrum befinden.
-
Zum Beispiel kann ein Client-System 102 eine tragbare elektronische Telekommunikationsvorrichtung aufweisen, wie etwa ein Mobilfunkgerät oder ein digitales Mobilfunktelefon, wie etwa ein Smartphone oder ein Tablet. Dies kann für Anwendungen, an denen terrestrische Benutzer in Fahrzeugen oder zu Fuß beteiligt sind, wie etwa Ersthelferorganisationen oder Organisationen für öffentliche Bauarbeiten, besonders nützlich sein. Auf dem Gebiet der Bereitstellung von Gesundheitsfürsorgediensten kann dies besonders nützlich sein, da es die Verwendung einer batteriebetriebenen mobilen tragbaren Client-Vorrichtung im Kontext medizinischer Notdienste und/oder Hausbesuche bei Patienten durch Ärzte unter Erhaltung hoher Datenvertraulichkeitsmaßstäbe ermöglichen kann.
-
Der Begriff „Server”, wie hierin verwendet, betrifft ein(e) computerisierte(s) Komponente (z. B. eine Softwarekomponente), System oder Entität, ungeachtet der Form, die/das zum Geben von Daten, Dateien, Anwendungen, Inhalt oder anderer Dienste an eine oder mehr andere Vorrichtungen oder Entitäten ausgeführt ist.
-
Im Folgenden werden die Begriffe „Relation”, „gewurzelter Baum”, „partiell geordnete Menge” und „Indexbaum„ austauschbar verwendet.
-
2 zeigt ein schematisches Blockdiagramm eines Client-Systems 102 gemäß der vorliegenden Offenbarung. Zu den Komponenten des Client-Systems 102 können unter anderem ein oder mehr Prozessoren oder Verarbeitungseinheiten 203, ein Speichersystem 211, eine Speichereinheit 205 und ein Bus 207, der verschiedene Systemkomponenten einschließlich der Speichereinheit 205 mit dem Prozessor 203 koppelt, zählen. Das Speichersystem 211 kann z. B. ein Festplattenlaufwerk (HDD) beinhalten. Die Speichereinheit 205 kann computersystemlesbare Medien in der Form von flüchtigem Speicher, wie etwa Direktzugriffsspeicher (RAM) und/oder Cache-Speicher, beinhalten. Das Client-System 102 beinhaltet gewöhnlich verschiedene computersystemlesbare Medien. Derartige Medien können jedwede Medien sein, auf die das Client-System 102 zugreifen kann, und zu ihnen zählen flüchtige und nichtflüchtige Medien, entfernbare und nichtentfernbare Medien.
-
Das Client-System 102 kann auch mit einer oder mehr externen Vorrichtungen wie einer Tastatur, einem Zeigegerät, einer Anzeige 213 usw.; einer oder mehr Vorrichtungen, die einem Benutzer die Interaktion mit dem Client-System 102 ermöglichen; und/oder jedweden Vorrichtungen (z. B. Netzwerkkarte, Modem usw.), die dem Client-System 102 die Kommunikation mit einer oder mehr anderen Rechenvorrichtungen ermöglichen, kommunizieren. Eine solche Kommunikation kann über die EIA-Schnittstelle(n) 219 stattfinden. Und das Client-System 102 kann über den Netzwerkadapter 209 auch noch mit einem oder mehr Netzen, wie etwa einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z. B. dem Internet), kommunizieren. Wie abgebildet, kommuniziert der Netzadapter 209 über den Bus 207 mit den anderen Komponenten des Client-Systems 102.
-
Die Speichereinheit 205 ist zum Speichern von Anwendungen konfiguriert, die im Prozessor 203 ausführbar sind. Zum Beispiel kann das Speichersystem 205 ein Betriebssystem sowie Anwendungsprogramme aufweisen. Die Anwendungsprogramme weisen eine Datenzugriffsanwendung 208 auf. Die Datenzugriffsanwendung 208 weist Anweisungen auf, die, wenn sie ausgeführt werden, es einem Benutzer des Client-Systems 102 ermöglichen, im Serversystem 106 befindliche Daten anzufordern. Zum Beispiel kann die Ausführung der Anweisungen den Prozessor 203 zum Anzeigen einer grafischen Benutzeroberfläche 220 veranlassen. Die grafische Benutzeroberfläche 220 weist Suchfelder 226 auf, die zur Aufnahme von Eingaben konfiguriert sind, die z. B. eine Bereichs- oder Intervallsuche erkennen lassen. Die Intervallsuche kann beispielsweise eine Präfixsuche nach Zeichenketten repräsentieren, wie etwa „Ped*”. Zum Beispiel kann der Benutzer eine Präfixsuche Ped* in ein Suchfeld 226 der grafischen Benutzeroberfläche 220 eingeben. Die Präfixsuche kann durch die Datenzugriffsanwendung 208 in eine Intervallsuche, z. B. [”Ped”; ”Pee”[, umgewandelt werden, die die angeforderten Daten abdecken würde, die Benutzern mit einem Namen, der mit „Ped” anfängt, zugeordnet sind.
-
Die Speichereinheit 205 ist ferner zum Speichern eines kryptografischen Schlüssels 222 konfiguriert. Der kryptografische Schlüssel 222 kann zum Verschlüsseln von Datenelementen verwendet werden, auf die das Client-System 102 zugreifen kann, z. B. kann es, da das Client-System 102 und das Serversystem 106 zur Handhabung medizinischer Aufzeichnungen verwendet werden können, entscheidend sein, dass alle Informationen, die das Client-System 102 und somit die Umgebung einer Arztpraxis verlassen, am Zielort, z. B. Serversystem 106, geheim gehalten werden. Es muss sichergestellt werden, dass kein unberechtigter Benutzer am Serversystem 106 Zugriff auf Patientendatensätze haben kann.
-
Das Client-System 102 kann ferner einen Cache 224 aufweisen. Der Begriff „Cache”, wie hierin verwendet, bezieht sich auf einen Zwischenspeicherbereich, der ein Schnellzugriffsbereich ist und entweder ein Hintergrundspeicher oder ein Disk-Cache sein kann. Der Cache kann zum Beispiel ein Speicherteil eines schnellen statischen RAM (SRAM) sein oder Teil des Hauptspeichers sein, z. B. aus dynamischem RAM (DRAM) bestehend.
-
3 zeigt ein schematisches Blockdiagramm eines Serversystems 106 gemäß der vorliegenden Offenbarung.
-
Zu den Komponenten des Serversystems 106 können unter anderem ein oder mehr Prozessoren oder Verarbeitungseinheiten 303, ein Speichersystem 311, eine Speichereinheit 305 und ein Bus 307, der verschiedene Systemkomponenten einschließlich Speichereinheit 305 mit dem Prozessor 303 koppelt, zählen. Das Speichersystem 311 kann z. B. ein Festplattenlaufwerk (HDD) beinhalten. Die Speichereinheit 305 kann ein computersystemlesbares Medium in der Form von flüchtigem Speicher, wie etwa Direkzugriffsspeicher (RAM) und/oder Cache-Speicher, beinhalten. Zum Serversystem 106 zählen gewöhnlich verschiedene computersystemlesbare Medien. Derartige Medien können jedwede Medien sein, auf die das Serversystem 106 zugreifen kann, und zu ihnen zählen flüchtige und nichtflüchtige Medien, entfernbare und nichtentfernbare Medien.
-
Das Serviersystem 106 kann auch mit einer oder mehr externen Vorrichtungen wie einer Tastatur, einem Zeigegerät, einer Anzeige 313 usw.; einer oder mehr Vorrichtungen, die einem Benutzer die Interaktion mit dem Serviersystem 106 ermöglichen; und/oder jedweden Vorrichtungen (z. B. Netzwerkkarte, Modem usw.), die dem Serviersystem 106 die Kommunikation mit einer oder mehr anderen Rechenvorrichtungen ermöglichen, kommunizieren. Eine solche Kommunikation kann über die E/A-Schnittstelle(n) 319 stattfinden. Das Serversystem 106 kann über einen Netzwerkadapter 309 auch noch mit einem oder mehr Netzen, wie etwa einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z. B. dem Internet) kommunizieren. Wie abgebildet, kommuniziert der Netzadapter 309 über den Bus 307 mit den anderen Komponenten des Serversystems 102.
-
Die Speichereinheit 305 ist zum Speichern von Anwendungen konfiguriert, die im Prozessor 303 ausführbar sind. Zum Beispiel kann das Speichersystem 305 ein Betriebssystem sowie Anwendungsprogramme aufweisen. Die Anwendungsprogramme weisen ein Datenbankmanagementsystem (DBMS) 308 auf, das Speichern, Modifizieren und Entnehmen von Daten aus dem Datenbankspeicher 320 des Serviersystems 106 ermöglicht. Anforderungen für Informationen aus dem Datenbankspeicher 320 werden zum Beispiel in der Form von Abfragen getätigt. Die Abfrage kann zum Beispiel eine SQL-Abfrage sein. Der Datenbankspeicher 320 kann eine Datenbank 322 aufweisen, die Daten, z. B. Patientendaten, aufweist. Der Inhalt der Datenbank 322 kann z. B. unter Verwendung des kryptografischen Schlüssels 222 am Client-System 102 verschlüsselt werden. Der Datenzugriff (z. B. Datenabruf) auf die Datenbank 322 kann unter Verwendung eines gewurzelten Baums 324 durchgeführt werden. Zum Beispiel kann der gewurzelte Baum 324 Patientennamen aufweisen, die zum Zugreifen auf Daten in der Datenbank 322, die zu jedem der Namen gehören, verwendet werden können. Der gewurzelte Baum 324 kann beispielsweise ein Index sein, wobei er dadurch hierin als Indexbaum 324 bezeichnet wird. Der Indexbaum 324 kann mehrere Datenelemente aufweisen, die von Knoten 326 repräsentiert werden. Der Einfachheit der Beschreibung halber werden Datenelemente und Knoten hierin austauschbar verwendet. Der Indexbaum 324 weist Datenelemente auf, die an Computersystemen 102 verschlüsselt werden. Die Verschlüsselung der Datenelemente des Indexbaums 324 kann unter Verwendung eines kryptografischen Schlüssels 222 durchgeführt werden, der in dem Client-System 102 gespeichert wird, wo die Verschlüsselung durchgeführt wird. Dies kann das Serversystem 106 am Zugriff auf den verschlüsselten Inhalt der Datenelemente 326 des Indexbaums 324 hindern.
-
Die Datenelemente 326 des Indexbaums 324 können in numerischer oder lexikografischer Ordnung oder einer Kombination davon sortiert werden. Das Sortieren kann unter Verwendung des unverschlüsselten Inhalts der Datenelemente des Indexbaums 324 durchgeführt werden. Dies kann am Client-System 102 durchgeführt werden, da das Client-System 102 berechtigten Zugriff auf den unverschlüsselten Inhalt der Datenelemente des Indexbaums 324 haben kann. In einem weiteren Beispiel kann das Serversystem 106 das Sortieren der Datenelemente 326 des Indexbaums 324 auf Basis ihres verschlüsselten Inhalts durchführen, wobei die Datenelemente unter Verwendung eines ordnungserhaltenden Verschlüsselungsverfahrens verschlüsselt werden. Dies ist besonders vorteilhaft, weil das Serversystem 106 möglicherweise keinen berechtigten Zugriff auf den unverschlüsselten Inhalt der Datenelemente 326 hat.
-
Zum Beispiel kann jedes Datenelement 326 des Indexbaums 324 einen Patientennamen in dem verschlüsselten Format und eine Referenz (oder referentielle Verbindung) auf mit diesem Patienten in Beziehung stehenden Daten in der Datenbank 322 aufweisen. Die Referenzen teilen jedes Datenelement 326 entsprechenden in der Datenbank 322 gespeicherten Daten c_data zu. Die Daten c_data können unter Verwendung desselben oder eines anderen Verschlüsselungsverfahren verschlüsselt werden, das zum Verschlüsseln der Datenelemente 326 verwendet wird. Der Einfachheit der Beschreibung halber werden die Datenelemente 326 in Klartext gezeigt, obwohl die Datenelemente 326 verschlüsselt sind und das Serversystem 106 keinen Zugriff auf den unverschlüsselten (d. h. Klartext-)Inhalt der Datenelemente 326 hat.
-
Zum Beispiel ist der Indexbaum 324 gemäß der lexikografischen Ordnung der Patientennamen in der unverschlusselten Form sortiert. Der Indexbaum 324 kann ein ausgeglichener Baum sein oder nicht. Zum Beispiel kann der Indexbaum 324 einen AVL-Baum oder einen binären Suchbaum umfassen.
-
Das Serversystem 106 kann ferner eine lineare Liste 330 aufweisen. Die lineare Liste weist den Datenelementen 326 zugeordnete Dateneinheiten auf. Die Einheiten linearer Ordnung werden in ganzzahligen Nummern, z. B. 2, 5, 11 usw. gezeigt. Die Dateneinheiten haben in der Liste eine lineare Ordnung, die der Ordnung entspricht, in der die verschlüsselten Datenelemente 326 im Indexbaum 324 gespeichert werden. Die lineare Liste 330 kann zum Identifizieren der Datenelemente verwendet werden, die zu einem bestimmten Bereich oder Suchintervall gehören. Jede Einheit der linearen Liste 330 kann eine Referenz auf Daten der Datenbank 322 aufweisen, die dem Datenelement 326 entsprechen, das von diesem Element repräsentiert wird. Die Nutzung der linearen Liste 330 kann vorteilhaft sein, da der Zugriff auf die lineare Liste 330 schneller als der Zugriff auf den Indexbaum 324 sein kann.
-
Das Serversystem 106 kann ferner einen Cache 324 aufweisen.
-
Das Client-Serversystem 100, das Client-System 102 und das Serversystem 106 werden mit Bezug auf die 2 bis 6 ausführlich beschrieben.
-
4 ist ein Flussdiagramm eines Verfahrens zum Einfügen von Datenelementen 423 in eine Relation, z. B. Indexbaum 324. In Schritt 401 kann ein Client-System 102 eine oder mehr Anforderungen zum Einfügen mehrerer unverschlüsselter Elemente, z. B. Patientennamen („Elias”, „Dana” und „Claire”) 423 und ihrer zugeordneten Daten in das Serversystem 106 erhalten.
-
Die Anforderungen können am Client-Computer 102 gleichzeitig erhalten werden. Zum Beispiel kann der Benutzer zwei Patientennamen in die grafische Benutzeroberfläche 220 eingeben und kann die Einfügungsanforderung auf einmal auslösen. Die Anforderungen können ferner Daten anzeigen, die den erhaltenen Elementen zuzuordnen sind und die in der Datenbank 322 gespeichert werden müssen.
-
In einer weiteren Ausführungsform können die Anforderungen während einer vordefinierten Zeitspanne erhalten werden. Zum Beispiel kann das Client-System 102 während dieser Zeitspanne die Einfügungsanforderungen pflegen, bevor es die Anforderungen auf einmal ausführt. Zum Beispiel können verschiedene Benutzer des Client-Systems 102 die Anforderungen zu verschiedenen Zeitpunkten während der vordefinierten Zeitspanne senden.
-
in Schritt 403 kann das Client-System 102 bei Erhalt der Anforderungen bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition im Indexbaum 324 haben. Dafür kann das Client-System 102 den Indexbaum 324 über das Serversystem 106 traversieren, d. h. das Client-System 102 kann das Serversystem 106 führen oder anweisen, den Indexbaum 324 zu traversieren und Datenelemente des Indexbaums 324 dem Client-System 102 bereitzustellen. Das Client-System 102 kann über das Netz 104 eine Verbindung mit dem Serversystems 106 herstellen und kann unter Verwendung eines Protokolls wie HTTP aufeinanderfolgende Anforderungen an das Serversystem 106 senden. Für jede der aufeinanderfolgenden Anforderungen kann das Client-System 102 einen Teil des Indexbaums 324 anfordern. Der Teil des Indexbaums 324 kann ein oder mehr Datenelemente 326 aufweisen. Falls der angeforderte Teil des Indexbaums 324 beispielsweise mehr als einen Knoten aufweist, kann die jeweilige Anforderung ferner die Höhe des angeforderten Teils anzeigen.
-
Die erste Anforderung der aufeinanderfolgenden Anforderungen kann einen ersten Teil des Indexbaums 324 anfordern, der den Wurzelknoten aufweist. Der erhaltene erste Teil wird vom Client-Computer 102, z. B. unter Verwendung des kryptografischen Schlüssels, mit dem die Datenelemente des Indexbaums 324 verschlüsselt sind, entschlüsselt. Unter Verwendung des erhaltenen Inhalts der unverschlüsselten Elemente kann der Client-Computer 102 bestimmen, ob jedes der erhaltenen Elemente 423 in den erhaltenen ersten Teil eingefügt werden kann, und wenn nicht, kann das Client-System 102 mit der folgenden zweiten Anforderung zum Anfordern eines zweiten Teils des Indexbaums 324 fortfahren. Nach Erhalt des zweiten Teils kann das Client-System 102 wiederholen, was mit dem ersten Teil durchgeführt wurde, um zu bestimmen, ob jedes der erhaltenen Elemente in den erhaltenen zweiten Teil eingefügt werden kann. Das Client-System 102 kann aber für die zweite Anforderung den zweiten Teil in Kombination mit den zuvor erhaltenen Teilen, d. h. dem ersten Teil, verarbeiten.
-
Nach einer oder mehr aufeinanderfolgenden Anforderungen kann das Client-System 102 in der Lage sein zu bestimmen, dass die mehreren Datenelemente 423 eine gleiche Einfügungsposition im Indexbaum 324 haben. Zum Beispiel können „Elias”, „Dana” und „Claire” an der Einfügungsposition 421 eingefügt werden.
-
Zum Beispiel können die erhaltenen Anforderungen anzeigen, dass mehrere Datenelemente 423 unter der Blattebene des Indexbaums 324 eingefügt werden können. In diesem Fall kann das Client-System 102 aufeinanderfolgende Anforderungen zum Anfordern von Teilen, die die Blattknoten des Indexbaums 324 enthalten, durchführen.
-
In Schritt 405 kann das Client-System 102 die mehreren Datenelemente 423 unter Verwendung ihres unverschlüsselten Inhalts sortieren. In Schritt 406 kann das Client-System 102 die mehreren Datenelemente 423 unter Verwendung desselben Verschlüsselungsverfahrens, das zum Verschlüsseln der Datenelemente 326 des Indexbaums 324 verwendet wird, verschlüsseln. Das Sortieren kann gemäß einer linearen Ordnung durchgeführt werden, die der Ordnung entspricht, in der die verschlüsselten Datenelemente im Indexbaum 324 gespeichert werden.
-
Zum Beispiel wird das Sortieren in absteigender Ordnung (d. h. „Elias” an erster Stelle, gefolgt von „Dana” und „Claire”) durchgeführt, wenn die Einfügungsposition 421 eine entsprechende Ordnung in der partiell geordneten Menge (Indexbaum 234) hat, die der Ordnung eines unmittelbar vorhergehenden Datenelements 425 der Einfügungsposition 421 nachfolgt. Das Sortieren kann aber in aufsteigender Ordnung durchgeführt werden, wenn die Einfügungsposition 421 eine entsprechende Ordnung in der partiell geordneten Menge hat, die der Ordnung eines unmittelbar vorhergehenden Datenelements der Einfügungsposition 421 vorhergeht. Das heißt, wenn die Einfügungsposition auf der rechten (linken) Seite des Elternknotens 425 ist, dann wird das Sortieren in absteigender (aufsteigender) Ordnung durchgeführt. So können die Datenelemente 423 effizient eingefügt werden, z. B. indem vermieden wird, dass ein zweitrangiges Datenelement eingefügt wird, bevor das erstrangige Datenelement eingefügt wird, das dann zu einem unnötigen erneuten Traversieren des Indexbaums 423 führen kann. Wenn zum Beispiel das zweitrangige Datenelement vor dem erstrangigen Element eingefügt wird, kann ein neuer Baumdurchlauf erforderlich sein, um die richtige Einfügungsposition zu finden, da es nach dem Einfügen des zweitrangigen Datenelements möglicherweise nicht leicht ist, den richtigen Einfügungspunkt zu finden.
-
In einer Ausführungsform kann das Sortieren der Datenelemente 423 von dem Serversystem 106 (z. B. durch das DBMS 308) durchgeführt werden, falls das Verschlüsselungsverfahren, das zum Verschlüsseln der Datenelemente 423 (und der Datenelemente des Indexbaums) verwendet wurde, ein ordnungserhaltendes Verfahren ist.
-
In Schritt 407 kann das Client-System 102 die verschlüsselten Datenelemente an das Serversystem 106 senden. Zum Beispiel kann das Client-System 102 ein Datenelement nach dem anderen gemäß ihrer Ordnung senden. In einem weiteren Beispiel können die Datenelemente vom Client-System 102 auf einmal zum Serversystem 106 gesendet werden. Das Absenden der Datenelemente kann ferner Anweisungen aufweisen, die vom Serversystem 106 ausgeführt werden können, um die gesendeten Datenelemente in den Indexbaum 324 einzufügen.
-
In Schritt 409 kann das Serversystem 106 die Datenelemente durch Ausführen der erhaltenen Anweisungen in ihrer sortierten Ordnung nacheinander in den Indexbaum 324 einfügen.
-
5 ist ein Flussdiagramm eines weiteren beispielhaften Verfahrens zum Einfügen von Datenelementen 423 in den Indexbaum 324.
-
In Schritt 501 können mehrere Client-Systeme 102A–C mehrere Anforderungen zum Einfügen unverschlüsselter Elemente 423 und ihrer zugeordneten Daten in das Serversystem 106 erhalten. Zum Beispiel kann jedes der mehreren Client-Systeme 102 ein jeweiliges Datenelement der Datenelemente 423 erhalten. Ein erster Benutzer kann den Namen „Elias” in ein Feld 226 der grafischen Benutzeroberfläche 220 des Client-Systems 102A eingeben. Ein zweiter Benutzer kann den Namen „Dana” in ein Feld 226 der grafischen Benutzeroberfläche 220 des Client-Systems 102B eingeben. Ein dritter Benutzer kann den Namen „Claire” in ein Feld 226 der grafischen Benutzeroberfläche 220 des Client-Systems 102C eingeben.
-
Der Begriff „Benutzer” kann sich auf eine Entität, z. B. eine Person, einen Rechner oder eine in einem Rechner ausgeführte Anwendung, beziehen, die Anforderungen zum Einfügen von Datenelementen oder zum Durchführen einer Datenbanksuche ausgibt.
-
Zum Beispiel kann das Client-Serversystem 100 eine Cloud-Umgebung bereitstellen, wo die mehreren Client-Systeme 102A–C eine Computergruppe bilden können, die Teil von mehreren Computergruppen oder Rechnerverbünden in der Cloud-Umgebung ist. Die mehreren Client-Systeme 102A–C können wie ein einzelnes System fungieren, das jeweiligen Benutzern der Cloud-Umgebung Dienste leistet. Zum Beispiel kann den mehreren Client-Systeme 102A–C ein gemeinsamer öffentlicher Gruppenschlüssel und ein privater Gruppenschlüssel zugewiesen werden, der zum (einheitlichen) Verschlüsseln der Daten an den mehreren Client-Systemen 102A–C verwendet werden kann.
-
Zum Beispiel können die mehreren Client-Systeme 102A–C zu einer organisatorischen Entität gehören, wie etwa einem Gesundheitsdienstleister, und können sich in einer jeweiligen Umgebung mit beschränktem Zugang, wie etwa einem Krankenhaus, befinden. Die Zugangsbeschränkung zu der Umgebung kann durch physikalische, wie etwa die Gestaltung betreffende, und/oder organisatorische Maßnahmen und/oder durch ein elektronisches System zur Zugriffsbeschränkung implementiert werden. Eine derartige eingeschränkte Umgebung ist eine verlässliche Umgebung, in der die Vertraulichkeit von Datenelementen, wie etwa die medizinischen Aufzeichnungen von Patienten, erhalten wird.
-
Da die Anforderungen an verschiedenen Client-Systemen 102A–C erhalten werden, kann in Schritt 503 eine Auswahl eines Client-Systems der mehreren Client-Systeme 102A–C durchgeführt werden, um die Schritte 403 bis 307 durchzuführen. Die Auswahl kann zum Beispiel an jedem der Client-Systeme 102A–C erhalten werden, wobei sie anzeigt, dass ein Client-System, z. B. 102A, zur Durchführung der Schritte 403 bis 407 ausgewählt wurde. Auf Basis der erhaltenen Anzeige können die Client-Systeme 102B und 102C die jeweiligen Datenelemente („Dana” und „Claire”) unter Verwendung des Paares der öffentlichen und/oder privaten Gruppenschlüssel verschlüsseln. Nach Erhalt der verschlüsselten Datenelemente 326 von den Client-Systemen 102B und 102C durch das ausgewählte Client-System 102A in Schritt 505 kann das ausgewählte System 102A in Schritt 507 die empfangenen verschlüsselten Elemente unter Verwendung der öffentlichen und/oder privaten Gruppenschlüssel entschlüsseln.
-
Die Auswahl kann von einem Benutzer des Client-Serversystems 100 oder durch das Serversystem 106 an jedes der Client-Systeme 102A–C gesendet werden. Die Auswahl kann eine Zufallsauswahl sein. In einem weiteren Beispiel kann die Auswahl das Beschaffen von Informationen über Verarbeitungsbelastungen für jedes der Client-Systeme 102A–C über eine Netzwerkkomponente (nicht gezeigt) des Client-Serversystems 100 und Auswählen eines Client-Systems 102A mit einer größten verfügbaren CPU-Verarbeitungsleistung aufweisen.
-
Nach dem Entschlüsselungsschritt 507 können die Schritte 403 bis 409 wie oben mit Bezug auf 4 beschrieben ausgeführt werden.
-
6 ist ein Flussdiagramm eines Verfahrens, das den Schritt 409 weiter ausführlicher darstellt. Zum Beispiel kann die Ausführung der von dem Client-System 102 erhaltenen Anweisungen am Serversystem 106 veranlassen, dass der Prozessor 303 die Schritte 601 bis 607 durchführt, um die Datenelemente „Elias”, „Dana” und „Claire” in den Indexbaum 324 einzufügen.
-
Zum Beispiel kann das Serversystem 106 mit dem an erster Stelle stehenden Datenelement „Elias” beginnen, um das Datenelement „Elias” einzufügen. Zu diesem Zweck kann das Serversystem 106 bestimmen (Anfrage 601), ob die Einfügungsposition 421 frei ist. Wenn die Einfügungsposition 421 frei ist, was für das an erster Stelle stehende Datenelement „Elias” der Fall ist, kann das Serversystem 106 in Schritt 603 das Datenelement „Elias” in die Einfügungsposition 421 einfügen. Dies führt zum Indexbaum 623.
-
Für das an zweiter Stelle stehende Datenelement „Dana” kann das Serversystem 106 aber bestimmen, dass die Einfügungsposition 421 besetzt ist (von „Elias„). Und als Reaktion darauf kann das Serversystem 106 bestimmen (Anfrage 605), ob die Datenelemente 423 in einer absteigenden oder aufsteigenden Ordnung sortiert werden.
-
In diesem Fall kann das Serversystem 106, da das Sortieren in einer absteigenden Ordnung (i. e. ”Elias” -> ”Dana” -> ”Claire”) durchgeführt wird, in Schritt 607 das Datenelement „Dana” in eine Position des gewurzelten Baums 623 einfügen, die eine Ordnung hat, die dem zuunterst eingeordneten Knoten, d. h. „Elias”, eines Teilbaums, der Datenelemente hat, die an höherer Stelle als der Elternknoten 425 stehen, vorangeht. Das Datenelement „Dana” kann daher an Position 621 eingefügt werden. Wenn der gewurzelte Baum 623 aber ein ausgeglichener Baum ist, kann das Serversystem 106 den verwurzelten Baum neu ausgleichen, um die neue Struktur des gewurzelten Baums 625 zu erhalten.
-
Vor Einfügen des Datenelements „Claire” kann das Serversystem 106 die Schritte 601 bis 607 wiederholen. Und das Datenelement „Claire” kann an Position 626 des gewurzelten Baums 265 eingefügt werden. Und es kann so den gewurzelten Baum 625 wieder ausgleichen, um die neue Struktur des gewurzelten Baums 627 zu erhalten.
-
Aspekte der vorliegenden Erfindung werden hierin mit Bezug auf Flussdiagrammdarstellungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammdarstellungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammdarstellungen und/oder Blockdiagrammen durch computerlesbare Programmanweisungen implementiert werden können.
-
Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit computerlesbaren Programmanweisungen darin zum Veranlassen eines Prozessors zur Durchführung von Aspekten der vorliegenden Erfindung beinhalten.
-
Das computerlesbare Speichermedium kann eine reale Vorrichtung sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungsvorrichtung behalten und speichern kann. Das computerlesbare Speichermedium kann zum Beispiel unter anderem eine elektronische Speichervorrichtung, eine magnetische Speichervorrichtung, eine optische Speichervorrichtung, eine elektromagnetische Speichervorrichtung, eine Halbleiterspeichervorrichtung oder ein geeignete Kombination der Vorangehenden sein. Eine nicht umfassende Liste spezifischerer Beispiel für das computerlesbare Speichermedium beinhaltet die Folgenden: eine portable Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen portablen Compact Disc-Festwertspeicher (CD-ROM), eine Digital Versatile Disk (DVD), einen Speicher-Stick, eine Diskette, eine mechanisch codierte Vorrichtung, wie etwa Lochkarten oder erhabene Strukturen in einer Rille mit daran aufgezeichneten Anweisungen, und jedwede geeignete Kombination der Vorangehenden. Ein computerlesbares Speichermedium, wie hierin verwendet, darf nicht als kurzzeitige Signale an sich, wie etwa Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die durch einen Lichtwellenleiter laufen), oder durch einen Draht übertragene elektrische Signale, ausgelegt werden.
-
Hierin beschriebene computerlesbare Programmanweisungen können über ein Netz, z. B. das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein drahtloses Netz, von einem computerlesbaren Speichermedium zu jeweiligen Rechen-/Verarbeitungsvorrichtungen oder zu einem externen Rechner oder einer externen Speichervorrichtung heruntergeladen werden. Das Netz kann Kupferübertragungskabel, Lichtleitfasern, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzschnittstelle in jeder Rechen-Verarbeitungsvorrichtung empfängt computerlesbare Programmanweisungen aus dem Netz und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb der jeweiligen Rechen-Verarbeitungsvorrichtung weiter.
-
Computerlesbare Programmanweisungen zur Durchführung von Operationen der vorliegenden Erfindung können Assembleranweisungen, ISA-Anweisungen (ISA: Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode sein, der in einer Kombination von einer oder mehr Programmiersprachen geschrieben ist, einschlißlich einer objektorientierten Programmiersprache wie Smalltalk C++ oder dergleichen und konventionellen Sprachen für die prozedurale Programmierung wie die Porgrammiersprache „C” oder ähnliche Programmiersprachen. Die computerlesbaren Programmanweisungen können vollkommen im Rechner des Benutzers, teilweise im Rechner des Benutzers, als separates Softwarepaket, teilweise im Rechner des Benutzers und teilweise in einem abgesetzten Rechner oder völlig in dem abgesetzten Rechner oder Server ausgeführt werden. In der letzteren Situation kann der abgesetzte Rechner durch irgendeinen Typ von Netz, einschließlich einem lokalen Netz (LAN) oder einem Weitverkehrsnetz (WAN), mit dem Rechner des Benutzers verbunden sein oder die Verbindung kann zu einem externen Rechner (z. B. unter Verwendung eines Internet Service Providers durch das Internet) hergestellt werden. In einigen Ausführungsformen können elektronische Schaltungsanordnungen, einschließlich z. B. programmierbare Logikschaltungen, Field Programmable Gate Arrays (FPGA) oder programmierbare logische Anordnungen (PLA), die computerlesbaren Programmanweisungen durch Nutzen von Zustandsinformationen der computerlesbaren Programmanweisungen zum Individualisieren der elektronischen Schaltung, um Aspekte der vorliegenden Erfindung durchzuführen, ausführen.
-
Aspekte der vorliegenden Erfindung werden hierin mit Bezug auf Flussdiagrammdarstellungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammdarstellungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammdarstellungen und/oder Blockdiagrammen durch computerlesbare Programmanweisungen implementiert werden können.
-
Diese computerlesbaren Programmanweisungen können einem Prozessor eines Universalrechners, eines Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zum Erzeugen einer Maschine bereitgestellt werden, so dass die Anweisungen, die über den Prozessor des Rechners oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen/Handlungen, die in dem/den Flussdiagramm- und/oder Blockdiagrammblock oder -blöcken angegeben sind, schaffen. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium, das einen Rechner, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einrichtungen zum Funktionieren auf eine bestimmte Art und Weise anleiten kann, gespeichert werden, so dass das computerlesbare Speichermedium mit darin gespeicherten Anweisungen einen Fertigungsartikel aufweist, der Anweisungen beinhaltet, die Aspekte der in dem/den Fluss- und/oder Blockdiagrammblock oder -blöcken vorgegebenen Funktion/Handlung implementieren.
-
Die computerlesbaren Programmanweisungen können auch in einen Rechner, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einrichtung geladen werden, um die Durchführung einer Reihe von Operationsschritten in dem Rechner, der anderen programmierbaren Vorrichtung oder der anderen Einrichtung zum Erzeugen eines computerimplementierten Prozesses zu veranlassen, so dass die Anweisungen, die in dem Rechner, der anderen programmierbaren Vorrichtung oder der anderen Einrichtung ausgeführt werden, die in dem/den Flussdiagramm- und/oder Blockdiagrammblock oder -blöcken vorgegebenen Funktionen/Handlungen implementieren.
-
Die Fluss- und Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise möglicher Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Fluss- oder Blockdiagrammen ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das/der eine oder mehr ausführbare Anweisungen zur Implementierung der vorgegebenen logischen Funktion(en) aufweist. In einigen alternativen Ausführungsformen können die in dem Block angegebenen Implementierungen außerhalb der in den Figuren angegebenen Ordnung stattfinden. Zum Beispiel können zwei nacheinander gezeigte Blöcke in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach der betreffenden Funktionalität. Es ist auch zu beachten, dass jeder Block der Blockdiagramme und/oder Flussdiagrammdarstellung und Kombinationen von Blöcken in den Blockdiagrammen und/oder der Flussdiagrammdarstellung von hardwaremäßigen Spezialsystemen implementiert werden können, die vorgegebene Funktionen oder Handlungen durchführen oder Kombinationen von Spezialhardware und Computeranweisungen ausführen.
-
Im Folgenden wird ein Pipelining-Beispielverfahren während Lese- und Schreibzugriff beschrieben.
-
Pipelining während Lesezugriff
-
Beim Verarbeiten einer Intervallsuche kann jede Intervallgrenze einen separaten Baumdurchlauf erfordern, wenn eine Abfrage also n Intervallbedingungen enthält, können bis zu 2n Baumdurchläufe notwendig sein, die jeweils H/h Server-Round-Trips erfordern, die sich wiederum als kostspielig erweisen können, wenn alle 2n.[H/h] Teilbaumabfragen konsekutiv ausgeführt wurden. H ist die Baumhöhe des Indexes 324. h ist die Höhe eines Teilbaums des Indexes 324.
-
Stattdessen können alle 2n Durchläufe von dem Client-Computer parallel verarbeitet werden, während der Servercomputer alle Teilbaumabfragen in einem einzelnen Worker-Thread durchführt; daher kann diese Prozedur anstelle einer parallelen eher eine Pipelining-Teilbaum-Abfrage sein.
-
Trotzdem kann der Servercomputer leicht all die Anforderungen mit wenig zusätzlicher Latenz für die gesamte Anfrageantwortzeit bedienen, weil der Servercomputer in einer Systemarchitektur wie Computerserversystem 100 nicht der Engpass sein kann. Daher dauert eine viele Bereichsbedingungen enthaltende Anfrage möglicherweise nicht beträchtlich länger als eine Anfrage mit nur einer einzigen.
-
Pipelining kann auch wie folgt auf Schreibzugriffe anwendbar sein.
-
Man erwäge, dass n > 1 Elemente von demselben Client-Computer zu dem Index, z. B. 324, hinzuzufügen sind und als neue Knoten zu der binären Baumdarstellung hinzugefügt werden müssen. Dann kann der Schritt des Bestimmens des designierten Elternknotens jedes Knotens parallel durchgeführt werden, da er ausschließlich aus Nur-Lese-Baumzugriffen besteht.
-
Wenn alle Elternknoten bestimmt worden sind, kann das Einfügen des neuen Indexknotens mit möglicherweise notwendigem nachfolgendem Neuausgleichen des Baums durchgeführt werden. Dies muss vom Servercomputer in einem Pipelining- anstelle von einem parallelen Modus erledigt werden, um Bauminkonsistenzen zu vermeiden.
-
Wenn alle neuen Knoten verschiedene designierte Elternknoten haben, wird eine einfache Knotenfolge an den Servercomputer gesendet, die alle nacheinander zu dem Baum 324 hinzugefügt werden. Wenn die bestimmte Einfügungsposition für m > 1 der n neuen Knoten aber dieselbe Kindposition desselben Elternknotens ist, wird ein neuer Knoten, der als das linke Kind eines bestimmten Elternknotens designiert ist, dann
- • entweder genau wie dieser eingefügt, wenn diese Stelle nicht aktuell von einem anderen Knoten besetzt ist,
- • oder als das rechte Kind des größten Elements im linken Teilbaum des designierten Elters eingefügt.
-
Alle anderen Baumnutzungsschritte (z. B. AVL-Nutzungsschritte) können dieselben bleiben, einschließlich Neuausgleichen des Baums. Wenn der Client-Computer jetzt alle m kollidierenden neuen Knoten auf geordnete Weise, angefangen mit dem kleinsten Wert und weiter bis zum größten, einfügt, beeinflusst die Beschaffenheit des Baums (z. B. AVL-Baum) die Einfügungsmenge möglicherweise nicht.
-
Es ist zu beachten, dass für den symmetrischen Fall, d. h. neue Knoten konkurrieren darum, das rechte Kind desselben Elternknotens zu sein, die obigen Schritte in ihre Gegensätze umgekehrt sein können: alle neuen Knoten werden vom größten zum kleinsten sortiert und ein neuer Knoten wird entweder als das rechte Kind seines Elternknotens eingefügt oder, wenn diese Stelle besetzt ist, als das linke Kind des kleinsten Werts im rechten Teilbaum des Elternknotens.
-
Die Erfindung kann mit den folgenden Merkmalskombinationen beschrieben werden.
- 1. Ein Verfahren zum Einfügen mehrerer Datenelemente in eine Relation, wobei die Relation in einem Servercomputer gespeichert wird, wobei die Relation Datenelemente aufweist, wobei die Datenelemente mit einem ersten Verschlüsselungsverfahren in der Relation verschlüsselt werden, wobei die Datenelemente eine partiell geordnete Menge in der Relation bilden, wobei die partielle Ordnung mit Bezug auf die Datenelemente in nichtverschlüsselter Form gebildet wird, wobei das Verfahren zum Einfügen mehrerer verschlüsselter Datenelemente in die partiell geordnete Menge Folgendes aufweist:
Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition in der partiell geordneten Menge haben;
Sortieren der mehreren verschlüsselten Datenelemente gemäß einer linearen Ordnung, die der Ordnung entspricht, in der die verschlüsselten Datenelemente in der Relation mit Bezug auf die partiell geordnete Menge gespeichert werden, wobei das Sortieren je nach der Einfügungsposition in aufsteigender oder absteigender Ordnung durchgeführt wird;
Verschlüsseln der mehreren Datenelemente unter Verwendung des ersten Verschlüsselungsverfahrens;
Einfügen der verschlüsselten Datenelemente in ihrer sortierten Ordnung nacheinander in die partiell geordnete Menge.
- 2. Ein Verfahren mit Merkmalskombination 1, wobei an einem einzelnen Client-Computer eine Anforderung zum Einfügen der mehreren Datenelemente erhalten wird, wobei das Sortieren von dem einzelnen Client-Computer unter Verwendung des unverschlüsselten Inhalts der mehreren einzufügenden Datenelemente durchgeführt wird.
- 3. Ein Verfahren mit Merkmalskombination 1, wobei das Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition in der partiell geordneten Menge haben, am Client-Computer, der mit dem Servercomputer verbunden ist, parallel durchgeführt und vor Starten der Einfügung abgeschlossen wird.
- 4. Ein Verfahren mit Merkmalskombination 1, wobei das Sortieren in absteigender Ordnung durchgeführt wird, wenn die Einfügungsposition eine entsprechende Ordnung in der partiell geordneten Menge hat, die der Ordnung eines unmittelbar vorangehenden Datenelements der Einfügungsposition folgt, wobei das Sortieren in aufsteigender Ordnung durchgeführt wird, wenn die Einfügungsposition eine entsprechende Ordnung in der partiell geordneten Menge hat, die der Ordnung eines unmittelbar vorangehenden Datenelements der Einfügungsposition vorangeht.
- 5. Ein Verfahren mit Merkmalskombination 1, wobei die partiell geordnete Menge einen gewurzelten Baum aufweist, wobei die Einfügungsposition einen Blattknoten als ihren Elternknoten in dem gewurzelten Baum hat.
- 6. Ein Verfahren mit Merkmalskombination 1, wobei die partiell geordnete Menge einen gewurzelten Baum aufweist, wobei das Einfügen der mehreren Datenelemente für jedes Datenelement der mehreren Datenelemente Folgendes aufweist:
als Reaktion auf das Bestimmen, dass die Einfügungsposition frei ist, Einfügen des Datenelements in die Einfügungsposition, die von dem Elternknoten der Einfügungsposition und Informationen, die anzeigen, ob die Einfügungsposition eine Ordnung hat, die dem Elternknoten vorangeht oder nachfolgt, beschrieben wird;
als Reaktion auf das Bestimmen, dass die Einfügungsposition besetzt ist:
falls das Sortieren in einer absteigenden Ordnung durchgeführt wird, Einfügen des Datenelements in eine Position, die das Datenelement zu dem am untersten angeordneten Element im Teilbaum des Elternknotens macht, der nur Datenelemente enthält, die höher als der Elternknoten angeordnet sind;
falls das Sortieren in einer aufsteigenden Ordnung durchgeführt wird, Einfügen des Datenelements in eine Position, die das Datenelement zu dem am höchsten angeordneten Element im Teilbaum des Elternknotens macht, der nur Datenelemente enthält, die niedriger als der Elternknoten angeordnet sind.
- 7. Ein Verfahren mit Merkmalskombination 6, das ferner Folgendes aufweist: Neuausgleichen des gewurzelten Baums nach jedem Einfügungsschritt und als Reaktion auf das Bestimmen, dass der gewurzelte Baum ungleichmäßig ist.
- 8. Ein Verfahren mit Merkmalskombination 1, wobei am Client-Computer gleichzeitig mehrere Anforderungen zum Einfügen der mehreren Datenelemente empfangen werden.
- 9. Ein Verfahren mit Merkmalskombination 1, wobei während einer vorbestimmten Zeitspanne mehrere Anforderungen zum Einfügen der mehreren Datenelemente am Client-Computer erfasst werden.
- 10. Ein Verfahren mit Merkmalskombination 3, wobei das erste Verschlüsselungsverfahren ein ordnungserhaltendes Verschlüsselungsverfahren ist, bei dem das Sortieren vom Servercomputer auf Basis des verschlüsselten Inhaltes der mehreren Datenelemente durchgeführt wird.
- 12. Ein Verfahren mit Merkmalskombination 1, wobei die partiell geordnete Menge einen AVL-Baum oder einen binären Suchbaum aufweist.
-
Ein Verfahren für einen Servercomputer, wobei der Servercomputer eine Relation aufweist, wobei die Relation Datenelemente aufweist, wobei die Datenelemente mit einem ersten Verschlüsselungsverfahren in der Relation verschlüsselt sind, wobei die Datenelemente eine partiell geordnete Menge in der Relation bilden, wobei die partielle Ordnung mit Bezug auf die Datenelemente in nichtverschlüsselter Form gebildet ist, wobei das Verfahren Folgendes aufweist: Einfügen verschlüsselter Datenelemente in einer sortierten Ordnung nacheinander in die partiell geordnete Menge, wobei das Sortieren gemäß einer linearen Ordnung ist, die der Ordnung entspricht, in der die verschlüsselten Datenelemente in der Relation mit Bezug auf die partiell geordnete Menge gespeichert werden, wobei das Sortieren je nach der Einfügungsposition in aufsteigender oder absteigender Ordnung ist.
-
Ein Verfahren für einen Client-Computer eines Computersystems, wobei das Computersystem eine Relation aufweist, wobei die Relation in einem Servercomputer des Computersystems gespeichert wird, wobei die Relation Datenelemente aufweist, wobei die Datenelemente mit einem ersten Verschlüsselungsverfahren in der Relation verschlüsselt sind, wobei die Datenelemente eine partiell geordnete Menge in der Relation bilden, wobei die partielle Ordnung mit Bezug auf die Datenelemente in nichtverschlüsselter Form gebildet ist, wobei zum Einfügen von mehreren verschlüsselten Datenelementen in die partiell geordnete Menge: das Verfahren Folgendes aufweist: Bestimmen, dass die mehreren Datenelemente eine gleiche Einfügungsposition in der partiell geordneten Menge haben; Sortieren der mehreren verschlüsselten Datenelemente gemäß einer linearen Ordnung, die der Ordnung entspricht, in der die verschlüsselten Datenelemente mit Bezug auf die partiell geordnete Menge in der Relation gespeichert sind, wobei das Sortieren je nach der Einfügungsposition in aufsteigender oder absteigender Ordnung durchgeführt wird; Verschlüsseln der mehreren Datenelemente unter Verwendung des ersten Verschlüsselungsverfahrens; Senden der verschlüsselten mehreren Datenelemente an den Servercomputer zum Einfügen der verschlüsselten Datenelemente in ihrer sortierten Ordnung nacheinander in die partiell geordnete Menge.
-
Ein Computerprogrammprodukt, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, das damit ausgestaltete Programmanweisungen hat, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, eine der vorhergehenden Merkmalskombinationen durchzuführen.