DE112018000456T5 - Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen - Google Patents

Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen Download PDF

Info

Publication number
DE112018000456T5
DE112018000456T5 DE112018000456.2T DE112018000456T DE112018000456T5 DE 112018000456 T5 DE112018000456 T5 DE 112018000456T5 DE 112018000456 T DE112018000456 T DE 112018000456T DE 112018000456 T5 DE112018000456 T5 DE 112018000456T5
Authority
DE
Germany
Prior art keywords
entity
group
segment
segments
entities
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112018000456.2T
Other languages
English (en)
Inventor
Roger Raphael
Rajesh Desai
Gabriel Valencia
Justo Luis Perez
Magesh JAYAPANDIAN
Iun Veng Leong
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018000456T5 publication Critical patent/DE112018000456T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Abstract

Ein Verarbeiten einer Datenbankabfrage von Gruppen von Daten enthält ein Zuweisen einer eindeutigen Kennung aus einem Ganzzahlenraum zu jeder Entität in Daten und ein Erstellen von einer oder mehreren Gruppen von Entitäten, die jeweils zu einer entsprechenden Entität in den Daten gehören. Anschließend wird eine Darstellung auf einem Datenträger für jede Gruppe von Entitäten generiert, wobei jede Darstellung einen Bereich der eindeutigen Kennungen in einer entsprechenden Gruppe umfasst und dafür geeignet ist, und ein Vorhandensein einer Entität in dieser entsprechenden Gruppe angibt. Abschließend wird eine Abfrage auf Grundlage der Darstellung für jede Gruppe von Entitäten verarbeitet, um Daten abzurufen, die die Abfrage erfüllen, wobei die Darstellung eine konstante Zeit für Operationen zur Zuordnung und Zuordnungsaufhebung bereitstellt, die Operationen nur zum Anfügen mit verzögertem Zusammenführen und automatischem Filtern von gelöschten und doppelten Entitäten zum Abfragezeitpunkt sind.

Description

  • HINTERGRUND
  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft Zuordnung und Zuordnungsaufhebung von Datengruppen, und insbesondere die Verwaltung von Zuordnung und Zuordnungsaufhebung von Datengruppen mit Bitmap-Darstellungen.
  • Erörterung des einschlägigen Stands der Technik
  • Ein allgemeines Problem bei der Inhaltsverwaltung auf Unternehmensebene besteht darin, große Gruppen von Entitäten eines ersten Typs Entitäten zu einem oder mehreren zweiten Typen zuzuordnen. Zum Beispiel müssen Firmen oder Organisationen im rechtlichen Bereich oft große Gruppen von Dokumenten (z.B. eMails, Berichte, Notizen, Mitteilungen usw.) großen Gruppen von Personen (z.B. Mitarbeiter, Auftragnehmer, Manager usw.) oder einer oder mehreren anderen Entitäten zuordnen (z.B. Rechtsangelegenheiten, Audits, Organisationseinheiten usw.).
  • Eine Zuordnungsgruppe entspricht einer 1:n- oder einer n:n-Beziehung zwischen zwei Entitäten. Zum Beispiel versenden und empfangen Mitarbeiter eMails, die als eine Zuordnung zwischen Mitarbeitern und Dokumenten modelliert werden können. Hier kann die Gruppe aller einem Mitarbeiter zugehörigen Dokumente als eine Zuordnungsgruppe betrachtet werden. Die Gruppe aller Absender und Empfänger einer eMail kann ebenfalls als eine Zuordnungsgruppe betrachtet werden. Wenn eine Firma in eine Art von Rechtsstreitigkeit verwickelt ist und alle Dokumente vorlegen muss, die einer Gruppe von Mitarbeitern (oder „Personen von Interesse“ im Hinblick auf den Rechtsstreit) zugehörig sind, erfordert die Vorlage der erforderlichen Gruppe von Dokumenten, dass die Zuordnungen modelliert und auf eine Weise beibehalten werden, die ein schnelles und genaues Abrufen der gewünschten Dokumente ermöglicht.
  • Zuordnungsgruppen können mühsam zu verwalten sein, wenn sie sehr groß werden, was oft bei großen Firmen mit Hunderttausenden von Mitarbeitern und hunderten Millionen von Dokumenten der Fall ist. Daher kann bei großen Firmen die Anzahl von Dokumenten, Rechtsangelegenheiten, Verwaltern, Notizen usw. sehr groß sein, und die Anzahl von Zuordnungen zwischen ihnen kann sogar noch größer sein. Speichern und Abrufen dieser Zuordnungsgruppen sind schwierige Herausforderungen in modernen Unternehmen und erfordern Lösungen, die in großem Maßstab korrekt und effizient ausgeführt werden können.
  • In typischen Lösungen wird eine erste Identifizierungsnummer zum Darstellen einer Entität verwendet, während eine zweite Identifizierungsnummer zum Verfolgen jeder ihrer Zuordnungen zu anderen Entitäten verwendet werden kann. Zum Beispiel kann eine Zuordnung zwischen einer eMail und einem Mitarbeiter als eine Beziehung zwischen der ID der eMail und der ID des Mitarbeiters modelliert werden. Dies kann aber zu einer sehr großen Anzahl von Beziehungen führen, was wiederum zu einer sehr großen Anzahl von Beziehungsobjekten führt, die während der verschiedenen Phasen eines Ermittlungsprozesses gespeichert, verwaltet, abgerufen und abgefragt werden müssen. Das Verwalten, Speichern, Abrufen und Abfragen dieser großen Beziehungsobjekte kann sehr kostenintensiv sein. Bei großen Firmen oder Organisationen mit Zehntausenden von Mitarbeitern und Millionen von Dokumenten kann der Umfang von Zuordnungsgruppen sehr groß werden. Der Fortbestand dieser großen Zuordnungsgruppen könnte riesige Speichermengen in Anspruch nehmen, wenn herkömmliche Mittel eingesetzt werden.
  • Zu den Speicherkosten kommen auch Kosten hinsichtlich der Zeit hinzu, die zum Erstellen und Verwalten dieser Zuordnungen aufgewendet wird. Wenn die Erstellung von Zuordnungen mithilfe von Transaktionen erfolgt, würden die Sperren, die während der Materialisierung aufrecht erhalten werden müssten, das System für andere Operationen unbenutzbar machen, die möglicherweise gleichzeitig ausgeführt werden müssen (z.B. hinzufügen oder entfernen von Entitäten zu oder aus einer Zuordnungsgruppe).
  • Außerdem steht das Problem des Abrufens von interessanten Zuordnungen aus zahlreichen anderen in direktem Zusammenhang mit dem Problem einer Speicherung von großen Zuordnungsgruppen. Zum Abfragen von n-stelligen Zuordnungen kann eine n-fache Verknüpfung von binären Zuordnungsgruppen erforderlich sein. Dafür ist eine schnelle, flexible und skalierbare Lösung erforderlich.
  • Ein herkömmlicher Datenbankspeicher verwendet Verknüpfungstabellen zum Darstellen und Abfragen von Zuordnungen zwischen Entitäten. Speichern, Indexieren und Abfragen von Zuordnungen auf diese Weise ist nicht optimal und kann zu langen Antwortzeiten bei Benutzerabfragen in Bezug auf Zuordnungen führen, insbesondere, wenn Zuordnungen zur selben Zeit erstellt und verwaltet werden. Wenn transaktionale Garantien bereitgestellt werden, kann ein großer Teil der Datenbank nicht benutzbar sein, während eine Erstellungs- oder Löschoperation stattfindet, wodurch das gesamte System für Stunden, wenn nicht Tage weitgehend unbenutzbar wird, selbst für schreibgeschützte Abfragen.
  • Zum Beispiel muss eine Firma, die mit einem Rechtsstreit konfrontiert ist, typischerweise für den Fall relevante Daten sammeln. Dies erfordert oft die Erstellung eines Falls, ein Zuordnen einer großen Anzahl von (relevanten) Dokumenten und ein Sperren von möglicherweise Millionen von Dokumenten. In derselben Transaktion muss dem Fall möglicherweise auch eine große Anzahl von Verwaltern zugeordnet werden. Eine derartige Transaktion so zu verwalten, dass das System im Fall eines Fehlers zurückgesetzt werden kann, kann äußerst anspruchsvoll sein. Wenn ein Fall gelöscht werden muss, könnte dieselbe Transaktion auf ähnliche Weise eine Aufhebung der Zuordnung einer großen Anzahl von Dokumenten und Verwaltern zu dem Fall und ein Aufheben aller Sperren erfordern. Dies effizient auszuführen und gleichzeitig Transaktionssemantik zu garantieren ist schwierig.
  • Zuordnungen können erstellt, im Lauf der Zeit modifiziert und sogar entfernt werden, wenn die Lebensdauer eines Dokuments seine Verjährungsfrist überschritten hat (z.B. abhängig von Bundesgesetzen, Staatsrecht, örtlichem Kommunalrecht, Firmenrichtlinien usw.). Ein Verwalten dieser Zuordnungsgruppen muss daher derartige Änderungen im Lauf der Zeit ohne signifikante Verringerung der Abfrageleistung bearbeiten können.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einer Ausführungsform der vorliegenden Erfindung enthält ein Verarbeiten einer Datenbankabfrage von Gruppen von Daten ein Zuweisen einer eindeutigen Kennung aus einem Ganzzahlenraum zu jeder Entität in Daten und ein Erstellen von einer oder mehreren Gruppen von Entitäten, die jeweils zu einer entsprechenden Entität in den Daten gehören. Ferner wird auf einem Datenträger eine Darstellung für jede Gruppe von Entitäten generiert, wobei jede Darstellung einen Bereich der eindeutigen Kennungen von Entitäten in einer entsprechenden Gruppe umfasst und dafür geeignet ist und ein Vorhandensein einer Entität in dieser entsprechenden Gruppe angibt. Eine Abfrage wird auf Grundlage der Darstellung für jede Gruppe von Entitäten verarbeitet, um Daten abzurufen, die die Abfrage erfüllen, wobei die Darstellung eine konstante Zeit für Operationen zur Zuordnung und Zuordnungsaufhebung bereitstellt, die Operationen nur zum Anfügen mit verzögertem Zusammenführen und automatischem Filtern von gelöschten und doppelten Entitäten zum Abfragezeitpunkt sind. Ausführungsformen der vorliegenden Erfindung enthalten ferner ein System und ein Computerprogrammprodukt zum Verarbeiten der Datenbankabfrage für Gruppen von Daten in der im Wesentlichen gleichen Weise wie oben beschrieben.
  • Gemäß Ausführungsformen der vorliegenden Erfindung stellt eine Entität ein oder mehrere Beispiele aus einer Gruppe von einer Person, einem Dokument, einem Ereignis und einem Objekt dar. Die mindestens eine Gruppe von Entitäten der Ausführungsformen der vorliegenden Erfindung kann Entitäten, die einer bestimmten Entität zugeordnet sind und/oder Entitäten enthalten, deren Zuordnung zu einer bestimmten Entität aufgehoben ist. Außerdem kann eine Entitätengruppe der Ausführungsformen der vorliegenden Erfindung eine Multimenge enthalten, die nicht eindeutige Entitäten mit doppelten Entitätskennungen enthält, die in einer physischen Darstellung der Entitätengruppe beibehalten werden, und wobei die Abfrage die Gruppen- oder Multimengendarstellung anfordert. Ausführungsformen der vorliegenden Erfindung sehen vor, dass die Metadaten für jede Entitätskennung eines Segments einer Entitätengruppe als Nutzdaten in das Segment integriert gespeichert werden können.
  • Ausführungsformen der vorliegenden Erfindung partitionieren eine durch Entitätskennungen dargestellte Gruppe von Entitäten in eine Mehrzahl von Segmenten, wobei Inhalt von jedem Segment und Metadaten jedes Segments in separaten Datenobjekten gespeichert werden. Des Weiteren ist jedes Segment entweder von einem Einfügetyp zum Angeben von Zuordnung oder einem Löschtyp zum Angeben von Zuordnungsaufhebung, und eine Segmentgröße beruht auf Optimierungen von Anforderungsgröße, Komprimierungstyp und Laufzeit. Außerdem ist die Mehrzahl von Segmenten chronologisch geordnet und wird verwendet, um Inhalt der Entitätengruppe durch Zusammenführen, Einfügen und Löschen von Segmenten zu generieren. Die Ausführungsformen der vorliegenden Erfindung führen Operationen an der Mehrzahl von Segmenten gleichzeitig aus. Des Weiteren werten die Ausführungsformen der vorliegenden Erfindung die Abfrage beim Verarbeiten der Abfrage für die Mehrzahl von Segmenten aus und kombinieren Ergebnisse aus jedem der ausgewerteten Segmente.
  • Figurenliste
  • Im Allgemeinen werden gleiche Bezugszeichen in den verschiedenen Figuren zum Bezeichnen gleicher Komponenten verwendet.
    • 1 veranschaulicht eine beispielhafte Umgebung, in der das vorliegende allgemeine erfinderische Konzept verkörpert werden kann.
    • 2 ist eine schematische Darstellung, die eine Zuordnungsgruppe von Daten gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
    • 3A ist ein Verfahrensablaufplan für die Erstellung eines neuen Segments, wobei zugehörige Entitäten in einer Zuordnungsgruppe gemäß einer Ausführungsform der vorliegenden Erfindung hinzufügt werden.
    • 3B ist ein Verfahrensablaufplan für die Erstellung eines neuen Segments, wobei Entitäten mit aufgehobener Zuordnung in einer Zuordnungsgruppe gemäß einer Ausführungsform der vorliegenden Erfindung hinzufügt werden.
    • 4 ist ein Verfahrensablaufplan einer im Hintergrund ausgeführten Zusammenführungsfunktion zum Zusammenführen von Segmenten einer Zuordnungsgruppe gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 5A ist ein Verfahrensablaufplan einer Abruf- oder Abfragefunktion zum Abrufen der Entitäten einer Zuordnungsgruppe gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 5B ist ein Verfahrensablaufplan einer Abruf- oder Abfragefunktion zum Abrufen einer bestimmten Entität einer Zuordnungsgruppe gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6A bis 6M sind eine Reihe von schematischen Darstellungen, die das Abrufen einer Zuordnungsgruppe gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulichen.
  • Gleiche Bezugszeichen wurden in dieser Offenbarung durchgehend zum Identifizieren gleicher Elemente verwendet.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Hierin werden Techniken zum Verarbeiten einer Datenbankabfrage für Gruppen von Daten vorgestellt, einschließlich Zuordnung und Aufhebung der Zuordnung von Gruppen von Daten. Im Allgemeinen weisen die hierin bereitgestellten Techniken jeder Entität einer Datengruppe eine eindeutige Ganzzahl zu und stellen sie mit dieser dar. Gemäß den hierin bereitgestellten Techniken wird jede Entität einer Reihe von Zuordnungsgruppen zugewiesen, wobei jede Zuordnungsgruppe als eine Bitmap über einen Ganzzahlenraum dargestellt wird, der den Bereich von Entitätskennungen abdeckt, die möglicherweise zu der Zuordnungsgruppe gehören könnten. Für jede Zuordnungsgruppe wird eine Sperrstruktur verwendet, um die Zuordnungsgruppe in eine Reihe von Blöcken oder Segmenten zu partitionieren, wobei jedes Segment auf Grundlage dessen gespeichert wird, wie die Kennungen der Entitäten des Segments in dem Ganzzahlenraum verteilt sind. Segmente mit einer großen Anzahl von zugehörigen Entitäten (d.h. dichte Segmente) können unter Verwendung von physischen Bitmaps gespeichert werden, wogegen Segmente mit einer niedrigen Anzahl von zugehörigen Entitäten (d.h. Segmente mit geringerer Dichte und weniger Kennungen) auf andere Weise gespeichert werden können (z.B. durch Speichern der tatsächlichen Entitätskennungen).
  • Diese Techniken sind effizienter und weniger zeitaufwendig beim Navigieren und Abrufen von Entitäten einer Zuordnungsgruppe einer Datengruppe eines Systems. Außerdem schaffen die hierin bereitgestellten Techniken einen Speicher für große Zuordnungsgruppen, der skalierbar ist. Die hierin bereitgestellten Techniken bieten ein kostengünstigeres Verfahren zum Speichern und Abrufen von Zuordnungsgruppen im Vergleich mit demjenigen eines herkömmlichen Datenbankspeichers von Verknüpfungstabellen. Ferner ermöglichen die hierin bereitgestellten Techniken ein schnelles Abrufen von Zuordnungsgruppen. Schließlich ermöglichen die hierin bereitgestellten Techniken Operationen (z.B. Erstellen, Löschen, Verschieben, Zusammenführen, Abfragen usw.) an Segmenten, die gleichzeitig erfolgen können, ohne dass ganze Zuordnungsgruppen gesperrt werden müssen, wodurch sich Gesamtdurchsatz, Leistung und Funktionalität des Speichersystems verbessern.
  • Eine beispielhafte Datenverarbeitungsumgebung zur Verwendung mit Ausführungsformen der vorliegenden Erfindung wird in 1 veranschaulicht. Insbesondere enthält die Datenverarbeitungsumgebung ein oder mehrere Serversysteme 10 und ein oder mehrere Clientsysteme 20. Die Serversysteme 10 und die Clientsysteme 20 können entfernt voneinander angeordnet sein und über ein Netzwerk 30 miteinander kommunizieren. Das Netzwerk kann durch eine beliebige Anzahl aller geeigneten Kommunikationsmedien umgesetzt werden (z.B. Weitverkehrsnetzwerk (WAN), lokales Netzwerk (LAN), Internet, Intranet usw.). Alternativ können die Serversysteme 10 und die Clientsysteme 20 lokal zueinander angeordnet sein und über jedes entsprechende lokale Kommunikationsmedium kommunizieren (z.B. lokales Netzwerk (LAN), Festanschluss, drahtlose Verbindung, Intranet usw.).
  • Die Serversysteme 10 können durch jedes herkömmliche oder andere Computersysteme umgesetzt werden, die bevorzugt mit einer Anzeige oder einem Monitor, einer Basis (z.B. einschließlich mindestens einer CPU oder einem Prozessor 12, einem oder mehreren Arbeitsspeichern 16 und/oder internen oder externen Netzwerkschnittstellen oder Kommunikationseinheiten 14 (z.B. Modem, Netzwerkkarten usw.)), optionalen Eingabeeinheiten (z.B. eine Tastatur, eine Maus oder andere Eingabeeinheit) und jeder im Handel erhältlichen und benutzerdefinierten Software ausgestattet sind (z.B. Server-/Kommunikationssoftware, Datenbankverwaltungsmodul 18 usw.).
  • Die Clientsysteme 20 können bevorzugt mit mindestens einer CPU oder einem Prozessor 12, einem oder mehreren Arbeitsspeichern 16, internen oder externen Netzwerkschnittstellen oder Kommunikationseinheiten 14 (z.B. Senderempfänger, Netzwerkkarten usw.) und/oder optionalen Eingabe- oder Ausgabeeinheiten ausgestattet sein (z.B. eine Tastatur, eine Maus oder andere Eingabeeinheit, eine Anzeige usw.). Die Clientsysteme 20 können ferner jede im Handel erhältliche oder benutzerdefinierte Software und/oder Hardware-Module für die bestimmte Einheit enthalten, um Einheitenoperationen auszuführen (z.B. Anwendungen, Browser, Kommunikationssoftware, Datenbankabfragemodul 22 usw.). Die Clientsysteme 20 können mit den Serversystemen 10 kommunizieren, um eine Datenbankabfrage für Gruppen von Daten zu verarbeiten.
  • Das Datenbankabfragemodul 22 ermöglicht es Benutzern der Clientsysteme 20, Anforderungen oder Abfragen von Gruppen von Daten zu übermitteln, die von den Serversystemen 10 auf den Datenbanken 17 gespeichert wurden. Die Serversysteme 10 enthalten ein Datenbankverwaltungsmodul 18 zum Aufbauen und Verwalten einer Datenbank 17 von Zuordnungsgruppen für die Datengruppe eines Systems. Eine oder mehrere Datenbanken 17 können verschiedene Typen von Informationen speichern (z.B. Zuordnungsgruppen, Entitätsidentifikation oder Kennungen für jede Entität einer Datengruppe, Metadaten der Zuordnungsgruppen usw.). Die Datenbank 17 kann durch jede herkömmliche Speichereinheit umgesetzt werden, kann in Bezug auf die Serversysteme 10 und die Clientsysteme 20 lokal oder entfernt davon angeordnet sein, und kann über jedes geeignete Kommunikationsmedium kommunizieren (z.B. lokales Netzwerk (LAN), Weitverkehrsnetzwerk (WAN), Internet, Festanschluss, drahtlose Verbindung, Intranet usw.). Die Clientsysteme 20 können eine grafische Benutzeroberfläche (z.B. GUI usw.) oder einen anderen Typ von Schnittstelle (z.B. Eingabeaufforderungen, Menübildschirme usw.) aufweisen, um Datenbankabfragen an die Serversysteme 10 zu senden, und können verschiedene Typen von Informationen bereitstellen, einschließlich die Entitäten einer Zuordnungsgruppe.
  • Das Datenbankverwaltungsmodul 18 ist so konfiguriert, dass Zuordnungsgruppen modelliert und verfolgt werden (z.B. sowohl Zuordnungen als auch Aufhebungen von Zuordnungen von Entitäten eines Systems). Das Datenbankverwaltungsmodul 18 kann jeder Entität eines Systems eine eindeutige Ganzzahl zuweisen, wobei die eindeutige Ganzzahl als Identifizierungsschlüssel, Kennung oder Identität dient. Von dem Datenbankverwaltungsmodul 18 kann eine Ganzzahl beliebiger Größe verwendet werden. In einer beispielhaften Ausführungsform der vorliegenden Erfindung kann jeder Entität der Datengruppe eines Systems jedoch eine eindeutige 64-Bit-Ganzzahl zugewiesen werden. Die Entitäten einer Datengruppe enthalten Dokumente, Personen, Objekte eines Systems und Themen eines Systems, sie sind jedoch nicht darauf beschränkt. Zum Beispiel enthalten Dokumente eMails, Berichte, Notizen, Mitteilungen usw. von einem System, sie sind jedoch nicht darauf beschränkt. Zu Personen eines Systems zählen Mitarbeiter, Auftragnehmer und Manager einer Firma, der das System gehört und die es betreibt, sie sind aber nicht darauf beschränkt. Zu Themen eines Systems zählen Rechtsangelegenheiten, Audits und Organisationseinheiten einer Firma, der das System gehört und die es betreibt, sie sind aber nicht darauf beschränkt.
  • Wenn das Datenbankverwaltungsmodul 18 jeder Entität eines Systems eine Kennung zugewiesen hat, baut das Datenbankverwaltungsmodul 18 Zuordnungsgruppen auf, die Gruppen von Entitäten sind, die denselben Typ von Beziehung oder Zuordnung zueinander gemeinsam haben. Zum Beispiel versenden und empfangen Mitarbeiter eMails, die als eine Zuordnung zwischen Mitarbeitern und Dokumenten modelliert werden können. Gemäß diesem Beispiel können alle einem bestimmten Mitarbeiter zugehörigen Dokumente in einer Gruppe zusammengefasst werden und als eine Zuordnungsgruppe dienen. Ferner können auch die Absender und Empfänger der eMails in einer Gruppe zusammengefasst werden und als eine weitere Zuordnungsgruppe dienen. Das Datenbankverwaltungsmodul 18 kann jede Zuordnungsgruppe als eine Bitmap über einen Ganzzahlenraum darstellen, der den Bereich von Entitätskennungen abdeckt, die zu der Zuordnungsgruppe gehören könnten. Zum Beispiel kann die Gruppe von Personen des Systems, die einem Rechtsstreit der Organisation zugehörig ist, der das System gehört und die es betreibt, als eine Beziehung zwischen einer Rechtsstreitkennung und einer Personen-Bitmap dargestellt werden, wobei für jede dem Rechtsstreit zugehörige Person Bits gesetzt werden. In einer Ausführungsform der vorliegenden Erfindung und wie im Folgenden weiter veranschaulicht und erläutert, können die Zuordnungsgruppen durch eine Sperrstruktur partitioniert werden, wobei eine Zuordnungsgruppe in eine Mehrzahl von Blöcken oder Segmenten partitioniert oder aufgeteilt wird. Damit kann ein schnellerer Zugriff und Skalierbarkeit für jede Zuordnungsgruppe durch das Datenbankverwaltungsmodul 18 der Serversysteme 10 bereitgestellt werden, wenn die Serversysteme 10 eine Datenbankabfrage von den Clientsystemen 20 erhalten.
  • Die Module 18, 22 können ein oder mehrere Module oder Einheiten enthalten, um die verschiedenen Funktionen der im Folgenden beschriebenen Ausführungsformen der vorliegenden Erfindung auszuführen. Die verschiedenen Module (z.B. das Datenbankverwaltungsmodul 18, das Datenbankabfragemodul 22 usw.) können durch jede Kombination einer beliebigen Menge von Software und/oder Hardware-Modulen oder - Einheiten umgesetzt werden und können sich im Arbeitsspeicher 30 des Serversystems 10 und/oder der Clientsysteme 20 zur Ausführung durch den Prozessor 12 befinden.
  • Unter folgender Bezugnahme auf 2 wird eine schematische Darstellung eines Beispiels für eine Zuordnungsgruppe 100 gezeigt, die in einer Datenbank 17 gespeichert ist. Wie veranschaulicht, weist jede Zuordnungsgruppe 100 eine Gruppe von Tabellen auf. Die Darstellung der veranschaulichten Zuordnungsgruppe 100 enthält drei Segmente 110, 120, 130. Zwar wird die in 2 veranschaulichte Ausführungsform mit drei Segmenten veranschaulicht, doch können andere Ausführungsformen der Zuordnungsgruppe 100 mit einer beliebigen Anzahl von Segmenten gespeichert werden. Jedes der Segmente 110, 120, 130 enthält jeweils fünf Entitäten 112(1) bis 112(5), 122(1) bis 122(5), 132(1) bis 132(5). Wie veranschaulicht, enthält das Segment 110 die erste Entität 112(1), der die Kennung 1 zugewiesen ist, die zweite Entität 112(2), der die Kennung 4 zugewiesen ist, die dritte Entität 112(3), der die Kennung 6 zugewiesen ist, die vierte Entität 112(4), der die Kennung 7 zugewiesen ist, und die fünfte Entität 112(5), der die Kennung 10 zugewiesen ist. Das Segment 120 enthält die erste Entität 122(1), der die Kennung 13 zugewiesen ist, die zweite Entität 122(2), der die Kennung 24 zugewiesen ist, die dritte Entität 122(3), der die Kennung 26 zugewiesen ist, die vierte Entität 122(4), der die Kennung 29 zugewiesen ist, und die fünfte Entität 122(5), der die Kennung 40 zugewiesen ist. Das Segment 130 enthält schließlich die erste Entität 132(1), der die Kennung 47 zugewiesen ist, die zweite Entität 132(2), der die Kennung 62 zugewiesen ist, die dritte Entität 132(3), der die Kennung 71 zugewiesen ist, die vierte Entität 132(4), der die Kennung 80 zugewiesen ist, und die fünfte Entität 132(5), der die Kennung 92 zugewiesen ist. Zwar enthält jedes Segment 110, 120, 130 der Zuordnungsgruppe fünf Entitäten, doch können andere Ausführungsformen von anderen Zuordnungsgruppen Segmente enthalten, die mehr oder weniger als fünf Entitäten enthalten.
  • Die beispielhafte Ausführungsform der Zuordnungsgruppe 100 von 2 veranschaulicht, dass die Zuordnungsgruppe 100 eine Segment-Kopfdatentabelle 140 und eine Segmentdatentabelle 150 enthält. Die Segmentdatentabelle 150 speichert den Inhalt jedes Segments 110, 120, 130 (d.h. die Entitäten jedes Segments). Die Segment-Kopfdatentabelle 140 speichert Metadaten über die Segmente 110, 120, 130. In einigen Ausführungsformen enthält die Segment-Kopfdatentabelle 140 für jedes Segment 110, 120, 130 die Start-ID der Entitäten, die Ende-ID der Entitäten, den Komprimierungstyp, die Kardinalität und den Zustand des Segments. In der Segment-Kopfdatentabelle 140 wird jedes Segment 110, 120, 130 jeweils als eine andere Zeile 114, 124, 134 dargestellt. Ferner können die Zeilen 114, 124, 134 der Segment-Kopfdatentabelle 140 auf ihre jeweilige Zeile 116, 126, 136 der Segmentdatentabelle 150 ausgerichtet sein. Die erste Zeile 116 der Segmentdatentabelle 150 speichert die Kennungen der Entitäten 112(1) bis 112(5) des ersten Segments 110. Die zweite Zeile 126 der Segmentdatentabelle 150 speichert die Kennungen der Entitäten 122(1) bis 122(5) des zweiten Segments 120, und die dritte Zeile 136 der Segmentdatentabelle 150 speichert die Kennungen der Entitäten 132(1) bis 132(5).
  • In anderen Ausführungsformen können die Zuordnungsgruppen 100 weitere Metadaten zusätzlich zu den Kennungen der beteiligten Entitäten 112(1) bis 112(5), 122(1) bis 122(5), 132(1) und 132(5) enthalten, wobei ein Bedarf besteht, diese zusätzlichen Metadaten zu speichern. In Fällen, in denen die Metadaten eine kleine Größe haben (d.h. das Datum der Zuordnung einer Entität zu der Zuordnungsgruppe 100, der Zeitpunkt, an dem Entitäten einander zugeordnet werden usw.), können die Metadaten unter Verwendung von in die Zuordnungsgruppe integrierten Nutzdaten gespeichert werden. Integrierte Metadaten werden mit den Daten zusammengelegt, um den zusätzlichen Mehraufwand bei ihrem Abruf von einer anderen Stelle auf dem Datenträger zu vermeiden (z.B. Eingabe/Ausgabe). Wenn zum Beispiel Dokumente Ordnern in einer Anwendung zugehörig sind, und die Anwendung aufzeichnen möchte, wann jedes Dokument einem Ordner zugeordnet wurde, können das Datum und/oder die Uhrzeit der Zuordnung jedes Dokuments zu einem Ordner in Nutzdaten in der Zuordnungsgruppe 100 gespeichert werden. Dies ermöglicht, dass Abfragen schnell nach dem Zuordnungsdatum ausgewertet werden können, da kein zusätzliches Durchsuchen von Datenträgern erforderlich ist.
  • Wenn die zusätzlichen Metadaten im Gegensatz dazu umfangreich sind, können die zusätzlichen Metadaten insgesamt in einem parallelen Segment der Zuordnung 100 gespeichert werden. Ein Beispiel für umfangreiche Metadaten ist, wenn eine Anwendung mit Rechtsstreitigkeiten befasst ist und Verwalter gestatten, dass ein Kommentar oder eine Beschreibung zusammen mit jeder Zuordnung zwischen dem Rechtsstreit und einem Verwalter gespeichert wird. In diesem Beispiel würde ein Speichern eines großen Textfelds als Nutzdaten die Zuordnungsgruppe zu aufwendig und kostspielig machen. Daher können die zusätzlichen umfangreichen Metadaten als separates paralleles Segment gespeichert werden.
  • Wenn außerdem eine Zuordnungsgruppe 100 relativ klein ist, ist für die Zuordnungsgruppe 100 möglicherweise keine separate Tabelle zum Speichern der zugehörigen Entitäten erforderlich. Somit können sowohl die Entität als auch ihre gesamte Zuordnungsgruppe, die alle kleinen Metadaten enthält, in einer einzigen Tabelle gespeichert werden. Ein Beispiel für eine kleine Zuordnungsgruppe 100 können die jeder eMail zugehörigen Absender und Empfänger sein, da diese Zuordnungsgruppen 100 typischerweise klein und unveränderlich sind.
  • Ein zusätzlicher Typ einer Zuordnungsgruppe 100 kann auftreten, wenn ein Bedarf besteht, mehrere Instanzen derselben Entitätskennung in einer einzigen Zuordnungsgruppe 100 zu speichern. Typischerweise enthält eine Zuordnungsgruppe 100 Gruppen von verschiedenen Entitäten 112(1) bis 112(5), 122(1) bis 122(5), 132(1) bis 132(5) (d.h. keine Entität kommt mehr als einmal vor). Mehrere Instanzen mit derselben Entitätskennung können in einer Zuordnungsgruppe 100 gespeichert werden, wenn eine Entität mehrmals an einer Beziehung beteiligt ist, und die Kardinalität ihrer Beteiligung von Bedeutung ist und erfasst werden muss. Zum Beispiel können ein oder mehrere Dokumente einer Zuordnungsgruppe gesperrt werden, wobei ein Dokument nicht gelöscht werden kann, wenn dafür mindestens eine Sperranforderung vorliegt. Eine Zuordnungsgruppe 100, die die Gruppe von gesperrten Dokumenten darstellt, könnte mehrere Instanzen eines einzelnen Dokuments haben (d.h. mehrere Instanzen einer Kennung einer Entität), wenn sie in mehr als einer Sperranforderung enthalten ist. In einer anderen Ausführungsform kann statt eines Speicherns von mehreren Vorkommen einer einzelnen Kennung in der Zuordnungsgruppe 100 jeder Kennung, für die mehrere Instanzen gespeichert werden müssen, eine Referenzzählung zugehörig sein. Für das Beispiel einer Zuordnungsgruppe 100 für gesperrte Dokumente kann die Referenzzählung für eine Kennung in dieser Sperren-Zuordnungsgruppe für jede angeforderte Sperre schrittweise erhöht und auf einem bestimmten Dokument abgelegt werden, dem die Kennung zugewiesen wurde. Wenn eine Sperre aufgehoben wird, kann die Referenzzählung des Weiteren schrittweise verringert werden. Die Entitätskennung darf nur entfernt werden, wenn die Referenzzählung einen Wert von null erreicht.
  • Unter folgender Bezugnahme auf 3A und 3B stellen Verfahrensablaufpläne 200, 300 Operationen (z.B. des Datenbankverwaltungsmoduls 18) zum Aufbauen oder Verwalten einer Zuordnungsgruppe 100 dar. Jedes Segment 110, 120, 130 einer Zuordnungsgruppe 100 kann eine Reihe von Entitäten darstellen, die einer Zuordnungsgruppe 100 zugeordnet oder deren Zuordnungen aufgehoben werden müssen. Während Zuordnungssegmente als Liste von Entitätskennungen dienen, die einer Entität zugehörig sind (z.B. zu der Zuordnungsgruppe hinzugefügt sind), erfassen Zuordnungsaufhebungsgruppen die Entitätskennungen, deren Zuordnung zu einer Entität aufgehoben worden ist (d.h. Entitätskennungen, die einer Entität zugehörig waren und deren Zuordnung anschließend aufgehoben worden ist; Entitätskennungen, die aus der Zuordnungsgruppe zu entfernen sind). Wenn Entitäten zum Beispiel aus dem System gelöscht werden, müssen auch sämtliche ihrer Zuordnungen gelöscht werden (d.h. die Zuordnung der jeweiligen Entitäten zu einer Zuordnungsgruppe muss aufgehoben werden). Die Zuordnungssegmente können als Zuordnungen „INSERT“(EINFÜGEN) oder „NEW“ (NEU) bezeichnet werden, während Zuordnungsaufhebungssegmente als Zuordnungsaufhebungen oder „DELETE“ (LÖSCHEN) bezeichnet werden können. Somit besteht keine Notwendigkeit, irgendein Segment in einer Zuordnungsgruppe 100 zu entfernen, und jedes Segment 110, 120, 130 einer Zuordnungsgruppe 100 arbeitet als eine Liste oder ein Register für die Entitäten, die auf Grundlage dessen, wie die Segmente 110, 120, 130 bezeichnet worden sind, der Zuordnungsgruppe 100 hinzugefügt oder aus dieser gelöscht worden sind. In einer beispielhaften Ausführungsform können die Zuordnungsaufhebungssegmente unter Verwendung einer Bitmaske oder eines Bloom-Filters dargestellt werden. In einer weiteren beispielhaften Ausführungsform, wie im Folgenden ausführlich erläutert, können Zuordnungsaufhebungssemente unter Verwendung von Prioritätswarteschlangen umgesetzt werden, wobei die Priorität der Segmente 110, 120, 130 einer Zuordnungsgruppe 100 durch eine umgekehrte Chronologie bestimmt wird (d.h. je neuer ein Segment ist, gleichgültig, ob ein Zuordnungs- oder Zuordnungsaufhebungssegment, desto höher ist die Priorität dieses Segments).
  • Des Weiteren können die Segmente 110, 120, 130 einer Zuordnungsgruppe 100 fest an eine bestimmte Menge von Entitäten gebunden sein. In der beispielhaften Ausführungsform der in 1 veranschaulichten Zuordnungsgruppe 100 sind die Segmente 110, 120, 130 auf fünf Entitäten begrenzt. Andere Zuordnungsgruppen 100 können jedoch Segmente enthalten, die eine beliebige Anzahl von Gruppenentitäten enthalten. Ferner kann den Segmenten 110, 120, 130 ein Zustand zugewiesen werden. Zu Zuständen der Segmente 110, 120, 130 gehören „NEW“, „DELETE“, „MERGED“ (ZUSAMMENGEFÜHRT), „IN PROGRESS“ (IN BEARBEITUNG) und „LOCK“ (SPERRE). Diese Zustände können im Folgenden näher erläutert werden.
  • Wie in 3A veranschaulicht, sammelt das Datenbankverwaltungsmodul 18 in Schritt 210 zuerst die Entitätskennungen von Entitäten, die einer Zuordnungsgruppe zugeordnet werden müssen, und gibt sie ein. In Schritt 220 erstellt das Datenbankverwaltungsmodul 18 ein neues Segment für die Zuordnungsgruppe 100 und fügt die Entitätskennungen zu dem neuen Segment hinzu, bis die maximale Menge von Entitätskennungen dem Segment hinzugefügt worden ist. Ferner kann das Datenbankverwaltungsmodul 18 die Entitätskennungen, die der Zuordnungsgruppe hinzugefügt werden sollen, vor dem Hinzufügen der Entitätskennungen zu den Segmenten sortieren (d.h. in chronologischer Reihenfolge). Ferner wird jedem neuen Segment, dem Entitätskennungen hinzugefügt werden, ein Zustand „NEW“ zugewiesen. Wenn einem Segment die maximale Menge von Entitätskennungen hinzugefügt worden ist, bestimmt das Datenbankverwaltungsmodul 18 in Schritt 230, ob alle der in Schritt 210 erhaltenen Entitätskennungen der Zuordnungsgruppe zugeordnet worden sind. Wenn das Datenbankverwaltungsmodul 18 in Schritt 230 bestimmt, dass nicht alle der in Schritt 210 erhaltenen Entitätskennungen der Zuordnungsgruppe hinzugefügt worden sind, kehrt das Datenbankverwaltungsmodul 18 zu Schritt 220 zurück, um ein zusätzliches Segment zu erstellen und die restlichen Entitätskennungen zu dem Segment hinzuzufügen. Wenn das Datenbankverwaltungsmodul 18 in Schritt 230 jedoch bestimmt, dass alle der in Schritt 210 erhaltenen Entitätskennungen der Zuordnungsgruppe hinzugefügt worden sind, hört das Datenbankverwaltungsmodul 18 in Schritt 240 damit auf, Entitätskennungen zu Zuordnungssegmenten hinzuzufügen, und hört damit auf, Zuordnungssegmente zu der Zuordnungsgruppe hinzuzufügen.
  • Wie in 3B veranschaulicht, sammelt das Datenbankverwaltungsmodul 18 in Schritt 310 zuerst die Entitätskennungen von Entitäten, deren Zuordnung zu einer Zuordnungsgruppe aufgehoben werden muss, und gibt sie ein. In Schritt 320 erstellt das Datenbankverwaltungsmodul 18 ein neues Segment für die Zuordnungsgruppe und fügt die Entitätskennungen zu dem neuen Segment hinzu, bis die maximale Menge von Entitätskennungen dem Segment hinzugefügt worden ist. Ferner kann das Datenbankverwaltungsmodul 18 die Entitätskennungen, die der Zuordnungsgruppe hinzugefügt werden sollen, vor dem Hinzufügen der Entitätskennungen zu den Segmenten sortieren (d.h. in numerischer Reihenfolge). Ferner wird jedem neuen Segment, dem Entitätskennungen hinzugefügt werden, ein Zustand „DELETE“ zugewiesen. Nachdem einem Segment die maximale Menge von Entitätskennungen hinzugefügt worden ist, bestimmt das Datenbankverwaltungsmodul 18 in Schritt 330, ob für alle der in Schritt 310 erhaltenen Entitätskennungen die Zuordnung zu der Zuordnungsgruppe aufgehoben worden ist. Wenn das Datenbankverwaltungsmodul 18 in Schritt 330 bestimmt, dass nicht für alle der in Schritt 310 erhaltenen Entitätskennungen die Zuordnung zu der Zuordnungsgruppe aufgehoben worden ist, kehrt das Datenbankverwaltungsmodul 18 zu Schritt 320 zurück, um ein neues Segment zu erstellen und die restlichen Entitätskennungen zu dem Segment hinzuzufügen. Wenn das Datenbankverwaltungsmodul 18 in Schritt 330 jedoch bestimmt, dass für alle der in Schritt 310 erhaltenen Entitätskennungen die Zuordnung zu der Zuordnungsgruppe aufgehoben worden ist, hört das Datenbankverwaltungsmodul 18 in Schritt 340 damit auf, Entitätskennungen zu Zuordnungsaufhebungssegmenten hinzuzufügen, und hört damit auf, Zuordnungsaufhebungssegmente zu der Zuordnungsgruppe hinzuzufügen.
  • In einigen beispielhaften Ausführungsformen können aus dem System gelöschte Entitäten möglicherweise Teil von zahlreichen Zuordnungen gewesen sein, was ein Löschen zu einer sehr kostspieligen Operation (d.h. mehrfaches Löschen) für herkömmliche Strukturen von Zuordnungsgruppen macht. Die Ausführungsformen der vorliegenden Erfindung ermöglichen es, gelöschte Entitätskennungen als eine globale Löschgruppe zu einer einzigen Gruppe hinzuzufügen, statt jede gelöschte Entitätskennung einzeln von jeder Zuordnungsgruppe anzufordern. Wenn Zuordnungen abgefragt oder anderweitig abgerufen werden, werden die Ergebnisse oder Ausgaben mit den Entitäten der globalen Löschgruppe nachgefiltert, sodass sie korrekt aus den Abfrageergebnissen ausgeschlossen werden. Damit ist es möglich, Zuordnungsaufhebungen wesentlich effizienter als mit herkömmlichen Ansätzen zu skalieren.
  • Während die einem Zuordnungssegment oder Zuordnungsaufhebungssegment hinzufügten Entitäten sich nicht in chronologischer Reihenfolge befinden müssen (die Entitätskennungen in dem Zuordnungs- oder Zuordnungsaufhebungssegment müssen sich jedoch in numerischer Reihenfolge befinden), sind die Zuordnungs- oder Zuordnungsaufhebungssegmente in der Zuordnungsgruppe 100 chronologisch geordnet. In bestimmten Zeitabständen können Zuordnungsaufhebungssegmente von dem Datenbankverwaltungsmodul 18 unter Verwendung eines Hintergrundprozesses, das als Hintergrundzusammenführungs-Thread bezeichnet wird, asynchron auf eine Zuordnungsgruppe 100 angewendet werden. Ein Hintergrundzusammenführungs-Thread richtet die Segmente 110, 120, 130 einer Zuordnungsgruppe 100 auf eine Weise aus, die die Speicher- und Abfrageleistung optimiert. Ein Hintergrundzusammenführungs-Thread ermöglicht es dem Datenbankverwaltungsmodul 18, mehrere Aufgaben auszuführen (d.h. Datenverarbeitung und Zwischenspeicherung von Segmentgrößen), während die Segmente 110, 120, 130 zusammengeführt werden, um Kosten zu amortisieren und die Systemleistung zu verbessern.
  • 4 veranschaulicht einen Verfahrensablaufplan der Schritte des Datenbankverwaltungsmoduls 18 zum Ausführen einer Zusammenführung 400 von mehreren Segmenten einer Zuordnungsgruppe im Hintergrund. Der Zusammenführungsprozess 400 im Hintergrund führt Segmente einer Zuordnungsgruppe zusammen, die mit den Zuständen „NEW“, „DELETE“ und „MERGED“ bezeichnet sind. Beim Ausführen des Zusammenführungsprozesses 400 im Hintergrund werden Segmente mit dem Zustand „IN PROGRESS“ bezeichnet, wie im Folgenden erläutert. Der Zusammenführungsprozess 400 im Hintergrund optimiert die Segmente einer Zuordnungsgruppe, indem doppelte Entitätskennungen entfernt werden und die globale Löschgruppe auf Segmente bei der Zusammenführung angewendet wird, wie vorher erläutert. Der Zusammenführungsprozess 400 im Hintergrund ist sperrenfrei, was bedeutet, dass die Zuordnungsgruppe immer noch abgefragt werden kann, während das Datenbankverwaltungsmodul 18 den Zusammenführungsprozess 400 im Hintergrund an allen oder einem Abschnitt der Segmente einer Zuordnungsgruppe ausführt.
  • Wie in 4 veranschaulicht, ruft das Datenbankverwaltungsmodul 18 zuerst alle Zuordnungsgruppen ab, die in der Datenbank 17 gespeichert sind. In Schritt 410 liest oder analysiert das Datenbankverwaltungsmodul 18 die nächste Zuordnungsgruppe in der Liste von Zuordnungsgruppen, die in Schritt 405 erhalten wurde. Beim ersten Lesen der Liste von Zuordnungsgruppen wäre die nächste Zuordnungsgruppe die erste Zuordnungsgruppe, die in Schritt 405 abgerufen wurde. In Schritt 415 bestimmt das Datenbankverwaltungsmodul 18, ob die in Schritt 410 gelesene Zuordnungsgruppe zusammengeführt werden muss. Eine Zuordnungsgruppe muss möglicherweise zusammengeführt werden, wenn die Zuordnungsgruppe Segmente mit der Bezeichnung „NEW“ oder „DELETE“ für die Zustände enthält.
  • Wenn das Datenbankverwaltungsmodul 18 in Schritt 415 bestimmt, dass die Zuordnungsgruppe zusammengeführt werden muss, ruft das Datenbankverwaltungsmodul 18 in Schritt 420 alle Segmente in der Zuordnungsgruppe ab, die mit den Zuständen „NEW“, „DELETE“ und „MERGED“ bezeichnet sind. In Schritt 425 erstellt das Datenbankverwaltungsmodul 18 anschließend ein neues Segment für die Zuordnungsgruppe, wobei das neue Segment mit dem Zustand „IN PROGRESS“ bezeichnet wird. In Schritt 430 fügt das Datenbankverwaltungsmodul 18 Entitätskennungen von den in Schritt 420 abgerufenen Segmenten zu dem in Schritt 425 erstellten neuen Segment „IN PROGRESS“ hinzu. Alle Entitätskennungen, die Teil sowohl eines Zuordnungssegments als auch eines Zuordnungsaufhebungssegment waren, wobei das Zuordnungsaufhebungssegment zu einem späteren Zeitpunkt zu der Zuordnungsgruppe hinzugefügt wurde, werden nicht zu dem Segment „IN PROGRESS“ hinzugefügt. In Schritt 430 werden Entitätskennungen zu dem Segment „IN PROGRESS“ hinzugefügt, bis das Segment „IN PROGRESS“ die maximale Anzahl von Kennungen erreicht hat. In Schritt 435 bestimmt das Datenverarbeitungsmodul 18, ob noch weitere Entitätskennungen aus den zusammenzuführenden Segmenten von Schritt 420 übrig sind. Wenn das Datenbankverwaltungsmodul 18 in Schritt 435 bestimmt, dass immer noch Entitätskennungen vorhanden sind, die zusammengeführt werden müssen, kehrt das Datenbankverwaltungsmodul 18 zu Schritt 425 zurück, um ein neues Segment „IN PROGRESS“ zu erstellen, dem die restlichen Entitätskennungen hinzugefügt werden.
  • Wenn das Datenbankverwaltungsmodul 18 in Schritt 435 jedoch bestimmt, dass alle Entitätskennungen zusammengeführt worden sind, ändert das Datenbankverwaltungsmodul 18 in Schritt 440 anschließend den Zustand aller „IN PROGRESS“-Segmente von „IN PROGRESS“ in „MERGED“. In Schritt 440 löscht oder entfernt das Datenbankverwaltungsmodul 18 anschließend alle Segmente, die vorher mit dem Zustand „NEW“, „DELETE“ und „MERGED“ bezeichnet wurden, aus der Zuordnungsgruppe.
  • Das Datenbankverwaltungsmodul 18 bestimmt anschließend in Schritt 450, ob noch weitere Zuordnungsgruppen zusammengeführt werden müssen. Wenn das Datenbankverwaltungsmodul 18 in Schritt 450 bestimmt, dass noch weitere Zuordnungsgruppen zusammengeführt werden müssen, kehrt das Datenbankverwaltungsmodul 18 zu Schritt 410 zurück, um die nächste Zuordnungsgruppe in der Liste von abgerufenen Zuordnungsgruppen zu lesen. Wenn das Datenbankverwaltungsmodul 18 in Schritt 450 jedoch bestimmt, dass keine weiteren Zuordnungsgruppen zusammengeführt werden müssen, beendet das Datenbankverwaltungsmodul 18 den Zusammenführungsprozess 400 im Hintergrund.
  • Unter folgender Bezugnahme auf 5A und 5B sind Verfahrensablaufpläne der Schritte 500 veranschaulicht, die von dem Datenbankverwaltungsmodul 18 zum Abfragen der Datenbank 17 für eine Zuordnungsgruppe ausgeführt werden. Wie vorher erläutert und veranschaulicht, ist jedes Segment 110, 120, 130 einer Zuordnungsgruppe 100 eine sortierte Liste von Ganzzahlen, die als die Entitätskennungen von Entitäten dienen. In einigen Ausführungsformen können die Clientsysteme 20 über das Datenbankabfragemodul 22 dem Serversystem 10 eine Abfrage für eine Zuordnungsgruppe senden. In anderen Ausführungsformen kann das Serversystem 10 die Datenbank 17 abfragen, ohne eine Abfrageanforderung von den Clientsystemen 20 zu erhalten. In jeder dieser Ausführungsformen fragt das Serversystem 10 die Datenbank 17 über das Datenbankverwaltungsmodul 18 ab.
  • Wie in 5A veranschaulicht, gibt das Datenbankverwaltungsmodul 18 in Schritt 510 zuerst die Kennung oder Identifizierung der von der Datenbank 17 abzurufenden Zuordnungsgruppe ein oder erhält diese von den Clientsystemen 20. In Schritt 520 ruft das Datenbankverwaltungsmodul 18 die nächste Entitätskennung in der Zuordnungsgruppe ab, die in Schritt 510 identifiziert wurde. Wenn das Datenbankverwaltungsmodul 18 erstmals versucht, eine Entitätskennung einer Zuordnungsgruppe abzurufen, ist die erhaltene Entitätskennung die erste Entitätskennung der Zuordnungsgruppe. Anschließende Versuche, eine Entitätskennung aus einer Zuordnungsgruppe durch das Datenbankverwaltungsmodul 18 abzurufen, geben jedoch die nächste Entitätskennung zurück. In Schritt 530 bestimmt das Datenverarbeitungsmodul 18, ob noch weitere Entitätskennungen aus der in Schritt 510 identifizierten und abgerufenen Zuordnungsgruppe abgerufen werden müssen. Wenn das Datenbankverwaltungsmodul 18 bestimmt, dass noch weitere Entitätskennungen abgerufen werden müssen, kehrt das Datenbankverwaltungsmodul 18 zu Schritt 520 zurück, um die nächste Entitätskennung aus der Zuordnungsgruppe abzurufen. Wenn das Datenbankverwaltungsmodul 18 in Schritt 530 jedoch bestimmt, dass alle Entitätskennungen aus der Zuordnungsgruppe abgerufen worden sind, werden die Abfrageschritte 500 durch das Datenbankverwaltungsmodul 18 beendet. Wenn die Abfrage von den Clientsystemen 20 erhalten wurde, kann das Datenbankverwaltungsmodul 18 die abgerufenen Entitätskennungen an das Clientsystem senden, von dem die Abfrage stammte.
  • 5B stellt einen detaillierteren Verfahrensablaufplan von Schritt 520 des in 5A dargestellten Abfrageprozesses 500 dar. Insbesondere stellt 5B den Verfahrensablaufplan zum Abrufen der nächsten Entitätskennung aus einer Zuordnungsgruppe dar. In Schritt 550 ordnet das Datenbankverwaltungsmodul 18 alle Segmente (d.h. die Segmente, die mit dem Zustand „NEW“, „DELETE“ und „MERGED“ bezeichnet wurden) der Zuordnungsgruppe in einer umgekehrten chronologischen Reihenfolge an. Wie vorher erläutert, werden die Segmente der Zuordnungsgruppe in der Reihenfolge des zuletzt zu der Zuordnungsgruppe hinzugefügten Segments bis zum ältesten des zu der Zuordnungsgruppe hinzugefügten Segments geordnet. In Schritt 555 setzt das Datenbankverwaltungsmodul 18 eine Prioritätswarteschlange unter Verwendung der ersten Entitätskennung jedes Segments der Zuordnungsgruppe um. Insbesondere baut das Datenbankverwaltungsmodul 18 einen Heap (Stapel) ab der ersten Entitätskennung jedes Segments auf, wobei Chronologie Priorität hat. In Schritt 560 entfernt das Datenbankverwaltungsmodul 18 die an oberster Stelle des Heap angeordnete Entitätskennung aus dem Segment. Diese entfernte Entitätskennung an der obersten Stelle des Heap ist die „oberste“ Entitätskennung. In Schritt 565 führt das Datenbankverwaltungsmodul 18 einen Heap-Aufbauprozess an den Segmenten aus, wobei das Datenbankverwaltungsmodul 18 den Heap unter Verwendung der ersten Entitätskennung jedes Segments wiederherstellt, nachdem die oberste Entitätskennung aus dem Heap und dem zugehörigen Segment entfernt worden ist.
  • In Schritt 570 bestimmt das Datenbankverwaltungsmodul 18, ob die entfernte „oberste“ Entitätskennung aus einem Zuordnungsaufhebungssegment stammt (z.B. einem mit einem Zustand „DELETE“ bezeichneten Segment). Wenn das Datenbankverwaltungsmodul 18 in Schritt 570 bestimmt, dass die „oberste“ Entitätskennung aus einem gelöschten oder Zuordnungsaufhebungssegment stammt, entfernt das Datenbankverwaltungsmodul 18 in Schritt 575 die „nächste“ Entitätskennung in dem Heap aus ihrem Segment. Diese „nächste“ Entitätskennung kann aus demselben Segment wie die „oberste“ Entitätskennung stammen oder aus einem anderen Segment der Zuordnungsgruppe kommen. Wenn die „nächste“ Entitätskennung aus ihrem Segment entfernt worden ist, führt das Datenbankverwaltungsmodul 18 in Schritt 580 einen weiteren Heap-Aufbauprozess an den Segmenten der Zuordnungsgruppe aus. Somit stellt das Datenbankverwaltungsmodul 18 den Heap unter Verwendung der ersten Entitätskennung jedes Segments wieder her. In Schritt 585 stellt das Datenbankverwaltungsmodul 18 sicher, dass die „nächste“ Entitätskennung nicht der „obersten“ Entitätskennung entspricht. Wenn das Datenbankverwaltungsmodul 18 in Schritt 585 bestimmt, dass die „nächste“ Entitätskennung der „obersten“ Entitätskennung entspricht, kehrt das Datenbankverwaltungsmodul 18 zu Schritt 575 zurück, um die nächste Entitätskennung aus dem Heap zu entfernen. Dies erfolgt aus dem Grund, dass, wenn die „oberste“ Entitätskennung der „nächsten“ Entitätskennung entspricht, und die „oberste“ Entitätskennung aus einem Zuordnungsaufhebungssegment stammt, das der Zuordnungsgruppe 100 später hinzugefügt wurde als das Segment, aus dem die „nächste“ Entitätskennung hinzugefügt wurde, die Zuordnung der durch die nächste Entitätskennung dargestellten Entität zu der Zuordnungsgruppe aufgehoben wurde. Somit sollte die nächste Entitätskennung nicht aus der Zuordnungsgruppe ausgegeben werden.
  • Wenn das Datenbankverwaltungsmodul 18 in Schritt 585 jedoch bestimmt, dass die „nächste“ Entitätskennung nicht der „obersten“ Entitätskennung entspricht, stellt das Datenbankverwaltungsmodul 18 in Schritt 590 die „nächste“ Entitätskennung als die „oberste“ Entitätskennung ein. Danach kehrt das Datenbankverwaltungsmodul 18 zu Schritt 570 zurück, um zu bestimmen, ob die neue „oberste“ Entitätskennung aus einem Zuordnungsaufhebungssegment stammt (d.h. einem mit einem Zustand „DELETE“ bezeichneten Segment).
  • Wenn das Datenbankverwaltungsmodul 18 in Schritt 570 bestimmt, dass die „oberste“ Entitätskennung nicht aus einem gelöschten Segment stammt, gibt das Datenbankverwaltungsmodul 18 in Schritt 595 den Wert des „obersten“ Entitätssegments aus.
  • Unter folgender Bezugnahme auf 6A bis 6M wird eine beispielhafte Ausführungsform des Prozesses zum Abfragen der Datenbank 17 für eine Zuordnungsgruppe 100 gezeigt, wie durch die Verfahrensablaufpläne von 5A und 5B veranschaulicht. In der beispielhaften Ausführungsform enthält die Zuordnungsgruppe 600 sechs Segmente 610, 620, 630, 640, 650, 660. Das erste Segment 610 enthält Segment-Kopfdateninformationen 612 und Segmentdateninformationen 614. Wie durch die Segment-Kopfdateninformationen 612 und die Segmentdateninformationen 614 bereitgestellt, enthält das erste Segment 610 Entitätskennungen 2, 4, 10, 23 und 30, die der Zuordnungsgruppe 600 zugehörig sind. Das zweite Segment 620 enthält Segment-Kopfdateninformationen 622 und Segmentdateninformationen 624. Wie durch die Segment-Kopfdateninformationen 622 und die Segmentdateninformationen 624 bereitgestellt, enthält das zweite Segment 620 Entitätskennungen 1, 34 und 50, die der Zuordnungsgruppe 600 zugehörig sind. Das dritte Segment 630 enthält Segment-Kopfdateninformationen 632 und Segmentdateninformationen 634. Wie durch die Segment-Kopfdateninformationen 632 und die Segmentdateninformationen 634 bereitgestellt, enthält das dritte Segment 630 Entitätskennungen 4, 11, 34 und 56, die der Zuordnungsgruppe 600 zugehörig sind. Das vierte Segment 640 enthält Segment-Kopfdateninformationen 642 und Segmentdateninformationen 644. Wie durch die Segment-Kopfdateninformationen 642 und die Segmentdateninformationen 644 bereitgestellt, enthält das vierte Segment 640 Entitätskennungen 2, 11 und 35, deren Zuordnung zu der Zuordnungsgruppe 600 aufgehoben ist. Das fünfte Segment 650 enthält Segment-Kopfdateninformationen 652 und Segmentdateninformationen 654. Das fünfte Segment 650 enthält jedoch keine Entitätskennungen, sondern hebt die Zuordnung der Entitätskennungen 10 und 11 zu der Zuordnungsgruppe 600 auf, da die Segment-Kopfdateninformationen 652 die enthaltenen Entitätskennungen erfassen. Das sechste Segment 660 enthält schließlich Segment-Kopfdateninformationen 662 und Segmentdateninformationen 664. Das sechste Segment 660 enthält jedoch keine Entitätskennungen, sondern ordnet die Entitätskennung 10 zu der Zuordnungsgruppe 600 zu, da die Segment-Kopfdateninformationen 662 die enthaltenen Entitätskennungen erfassen.
  • Wie ferner in 6A bis 6M veranschaulicht, war das sechste Segment 660 das zuletzt zu der Zuordnungsgruppe 600 hinzugefügte Segment, während das erste Segment 610 das erste Segment war, das zu der Zuordnungsgruppe 600 hinzugefügt werden sollte. Ferner enthält jedes Segment 610, 620, 630, 640, 650, 660 auch jeweils eine oberste Entitätskennung 618, 628, 638, 648, 658, 668. Die oberste Entitätskennung 618, 628, 638, 648, 658, 668 für jedes Segment 610, 620, 630, 640, 650, 660 der Zuordnungsgruppe 600 ist die erste Entitätskennung des jeweiligen Segments 610, 620, 630, 640, 650, 660, wobei die Chronologie der Entitätskennungen Priorität hat. Mit anderen Worten, die oberste Entitätskennung 618, 628, 638, 648, 658, 668 für jedes Segment 610, 620, 630, 640, 650, 660 der Zuordnungsgruppe 600 ist der niedrigste Wert der Entitätskennungen jedes Segments 610, 620, 630, 640, 650, 660.
  • Wie in 6B in Bezug auf die Zuordnungsgruppe 600 veranschaulicht, wenn das Datenbankverwaltungsmodul 18 die Schritte 560, 565, 570 und 595 ausführt, wie in 5B veranschaulicht, wird die Entitätskennung „1“ des zweiten Segments 620 als die erste Entitätskennung der Zuordnungsgruppe 600 ausgegeben, 670. Da die Entitätskennung „1“ die niedrigste Entitätskennung von jedem der Segmente 610, 620, 630, 640, 650 ist, ist die Entitätskennung „1“ die „oberste“ Entitätskennung des Heap (d.h. der Gruppe von obersten Entitätskennungen von jeder der 618, 628, 638, 648, 658, 668 für jedes Segment 610, 620, 630, 640, 650, 660). Ferner würde das Datenbankverwaltungsmodul 18 bestimmen, dass die Entitätskennung „1“ nicht aus einem Zuordnungsaufhebungs- oder DELETE-Segment stammt (d.h. den Segmenten 640, 650), und somit die Entitätskennung „1“ ausgeben würde.
  • Wie in 6C veranschaulicht, dient die Entitätskennung „34“, nachdem das Datenbankverwaltungsmodul 18 nach dem Entfernen und Ausgeben, 670, der Entitätskennung „1“ einen Heap-Aufbauprozess ausgeführt hat, als die oberste Entitätskennung 628 des zweiten Segments 620, da sie die nächste chronologische Entitätskennung des zweiten Segments 620 ist.
  • Wenn das Datenbankverwaltungsmodul 18 des Weiteren die Entitätskennung an der obersten Stelle des Heap entfernt, sind zwei Entitätskennungen „2“ vorhanden; eine von dem vierten Segment 640 und eine von dem ersten Segment 610. Da das vierte Segment 640 zu einem späteren Zeitpunkt als das erste Segment 610 hinzugefügt wurde, erhält die Entitätskennung „2“ des vierten Segments 650 Vorrang oder Priorität gegenüber der Entitätskennung „2“ des ersten Segments 610. Wenn das Datenbankverwaltungsmodul 18 die Entitätskennung „2“ des vierten Segments 640 auswertet, bestimmt das Datenbankverwaltungsmodul 18, dass die Entitätskennung „2“ des vierten Segments 640 aus einem DELETE-Segment stammt (d.h. Schritt 570 von 5B). In den folgenden Schritten 575, 580 und 585 des in 5B veranschaulichten Prozesses würde das Datenbankverwaltungsmodul 18 bestimmen, dass die nächste Entitätskennung die Entitätskennung „2“ des ersten Segments 610 ist. Da die Entitätskennung „2“ des ersten Segments 610 gleich der Entitätskennung „2“ des vierten Segments 640 ist, und da die Entitätskennung „2“ des vierten Segments 640 aus einem DELETE-Segment 640 stammt, das später aufgetreten ist als das erste Segment 610, wie in 6C veranschaulicht, würde das Datenbankverwaltungsmodul 18 bestimmen, dass die Entitätskennung „2“ nicht ausgegeben würde, 670.
  • Wie in 6D veranschaulicht, wenn das Datenbankverwaltungsmodul 18 die dritte Iteration ausführt und die nächste Entitätskennung aus dem Heap entfernt (Schritt 575 von 5B), würde das Datenbankverwaltungsmodul 18 jedoch die Entitätskennung „4“ sowohl des ersten als auch des dritten Segments 610, 630 ausgeben. Wie in 6D bei der dritten Iteration veranschaulicht, dient die Entitätskennung „4“ als die oberste Entitätskennung 618, 638 des ersten und des dritten Segments 610, 630. Da die Entitätskennungen „4“ von dem ersten und dem dritten Segment 610, 630 stammen, und da beide, das erste und das dritte Segment 610, 630 Zuordnungssegmente sind, gibt das Datenbankverwaltungsmodul 18 bei Iteration 3 die Entitätskennung „4“ aus, 670.
  • Unter Bezugnahme auf 6E, wenn das Datenbankverwaltungsmodul 18 die vierte Iteration des Prozesses von 5B an der Zuordnungsgruppe 600 ausführt und die Entitätskennung an der obersten Stelle des Heap entfernt, sind drei Entitätskennungen „10“ vorhanden; eine von dem ersten Segment 610, eine von dem fünften Segment 650 und eine von dem sechsten Segment 660. Wie veranschaulicht, ist das fünfte Segment 650 ein DELETE-Segment, aber das erste und das sechste Segment 610, 660 sind Zuordnungssegmente (INSERT-Segmente). Da das sechste Segment 660 zu einem späteren Zeitpunkt als das erste Segment 610 und das fünfte Segment hinzugefügt wurde, erhält die Entitätskennung „10“ des sechsten Segments 660 Vorrang oder Priorität gegenüber der Entitätskennung „10“ des ersten Segments 610 oder des fünften Segments 650. Wenn das Datenbankverwaltungsmodul 18 die Entitätskennung „10“ des sechsten Segments 660 auswertet, bestimmt das Datenbankverwaltungsmodul 18, dass die Entitätskennung „10“ des sechsten Segments 660 nicht aus einem DELETE-Segment stammt (d.h. Schritt 570 von 5B). Da das sechste Segment 660 kein DELETE-Segment ist, würde das Datenbankverwaltungsmodul 18 bei Iteration 4 die Entitätskennung „10“ ausgeben, 670.
  • Unter Bezugnahme auf 6F, wenn das Datenbankverwaltungsmodul 18 die fünfte Iteration des Prozesses von 5B an der Zuordnungsgruppe 600 ausführt und die Entitätskennung an der obersten Stelle des Heap entfernt, sind drei Entitätskennungen „11“ vorhanden; eine von dem dritten Segment 630, eine von dem vierten Segment 640 und eine von dem fünften Segment 650. Wie veranschaulicht, sind das vierte und das fünfte Segment 640, 650 DELETE-Segmente, und das dritte Segment 630 ist ein Zuordnungssegment. Da sowohl das fünfte Segment 650 als auch das vierte Segment 640 zu einem späteren Zeitpunkt als das dritte Segment 630 zur der Zuordnungsgruppe 600 hinzugefügt wurden, erhält die Entitätskennung „11“ des fünften Segments 650 Vorrang oder Priorität gegenüber der Entitätskennung „11“ des vierten Segments 640 oder des dritten Segments 630. Wenn das Datenbankverwaltungsmodul 18 daher die Entitätskennung „11“ des fünften Segments 650 auswertet, bestimmt das Datenbankverwaltungsmodul 18, dass die Entitätskennung „11“ des fünften Segments 650 aus einem DELETE-Segment stammt (d.h. Schritt 570 von 5B). Da das fünfte Segment 650 ein DELETE-Segment ist, würde das Datenbankverwaltungsmodul 18 bei Iteration 5 den Schritten 575, 580 und 585 des in 5B veranschaulichten Prozesses folgen und bestimmen, dass die nächsten Entitätskennungen die Entitätskennungen „11“ des vierten Segments 640 und des dritten Segments 630 sind. Da die Entitätskennungen „11“ des dritten und des vierten Segments 630, 640 gleich der Entitätskennung „11“ des fünften Segments 650 sind, und da die Entitätskennung „11“ des fünften Segments 650 aus einem DELETE-Segment 640 stammt, das später aufgetreten ist als das dritte oder das vierte Segment 630, 640, wie in 6F veranschaulicht, würde das Datenbankverwaltungsmodul 18 bestimmen, dass die Entitätskennung „11“ nicht ausgegeben würde, 670.
  • Das Datenbankverwaltungsmodul 18 würde damit fortfahren, die Schritte 575, 580 und 585 des in 5B veranschaulichten Prozesses zu wiederholen (d.h. die nächste Entitätskennung aus dem Heap entfernen, für die „nächste“ Entitätskennung einen Heap aufbauen und mit der der „obersten“ Entitätskennung vergleichen usw.), bis das Datenbankverwaltungsmodul 18 feststellt, dass die nächste Entitätskennung nicht der Entitätskennung „11“ des fünften Segments 650 entspricht. Wie in 6G veranschaulicht, bestimmt das Datenbankverwaltungsmodul 18 in Schritt 575 von 5B, nach dem Auswerten, dass die Entitätskennung „11“ nicht ausgegeben werden sollte und nach dem Ausführen eines Heap-Aufbaus (z.B. Schritt 580 von 5B), dass die nächste Entitätskennung in dem Heap die Entitätskennung „23“ des ersten Segments 610 wäre. Da die Entitätskennung „23“ nur in dem ersten Segment 610 zu finden ist, und da das erste Segment 610 nicht aus einem DELETE-Segment stammt, würde das Datenbankverwaltungsmodul 18 als Nächstes die Entitätskennung „23“ ausgeben, 670.
  • Unter Bezugnahme auf 6H, wenn das Datenbankverwaltungsmodul 18 die siebte Iteration des Prozesses von 5B an der Zuordnungsgruppe 600 ausführt und die Entitätskennung an der obersten Stelle des Heap entfernt, würde das Datenbankverwaltungsmodul 18 die Entitätskennung „30“ des ersten Segments 610 ausgeben, 670. Wie veranschaulicht und vorher erläutert, ist das erste Segment 610 kein DELETE-Segment, und wenn das Datenbankverwaltungsmodul 18 daher die Entitätskennung „30“ des ersten Segments 610 auswertet, bestimmt das Datenbankverwaltungsmodul 18, dass die Entitätskennung „30“ des ersten Segments 610 nicht aus einem DELETE-Segment stammt (d.h. Schritt 570 von 5B) und gibt die Entitätskennung „30“ aus, 670.
  • Desgleichen, wie in 6I veranschaulicht, wenn das Datenbankverwaltungsmodul 18 die achte Iteration des Prozesses von 5B an der Zuordnungsgruppe 600 ausführt und die Entitätskennung an der obersten Stelle des Heap entfernt, würde das Datenbankverwaltungsmodul 18 feststellen, dass beide, das zweite und das dritte Segment 620, 630 die Entitätskennung „34“ enthalten. Wie veranschaulicht, wurde das dritte Segment 630 zu der Zuordnungsgruppe 600 später hinzufügt als das zweite Segment 620 und erhält Vorrang oder Priorität gegenüber dem zweiten Segment 620. Ferner sind beide, das zweite und das dritte Segment 620, 630 Zuordnungssegmente. Wenn das Datenbankverwaltungsmodul 18 daher die Entitätskennung „34“ des dritten Segments 630 auswertet, bestimmt das Datenbankverwaltungsmodul 18, dass die Entitätskennung „34“ des dritten Segments 630 nicht aus einem DELETE-Segment stammt (d.h. Schritt 570 von 5B) und gibt die Entitätskennung „34“ aus, 670.
  • Unter folgender Bezugnahme auf 6J sind die Entitätskennungen „50“, „56“ und „35“ jeweils aus dem zweiten, dem dritten und dem vierten Segment 620, 630, 640 die in dem Heap verbliebenen Entitätskennungen, wenn das Datenbankverwaltungsmodul 18 einen Heap-Aufbauprozess ausgeführt hat, nachdem die Entitätskennung „34“ entfernt und ausgegeben wurde. Da die Entitätskennung „35“ des vierten Segments 640 sich an oberster Stelle des Heap befinden würde, entfernt das Datenbankverwaltungsmodul 18 die Entitätskennung „35“ aus dem vierten Segment 640 des auszuwertenden Heap. Wenn das Datenbankverwaltungsmodul 18 die Entitätskennung „35“ des vierten Segments 640 auswertet, bestimmt das Datenbankverwaltungsmodul 18, dass die Entitätskennung „35“ des vierten Segments 640 aus einem DELETE-Segment stammt (d.h. Schritt 570 von 5B) und daher nicht ausgegeben werden kann, 670.
  • In den folgenden Schritten 575, 580 und 585 des in 5B veranschaulichten Prozesses würde das Datenbankverwaltungsmodul 18 bestimmen, dass die nächste Entitätskennung die Entitätskennung „50“ des zweiten Segments 620 ist, wie in 6K veranschaulicht. Da die Entitätskennung „50“ des zweiten Segments 620 nicht der Entitätskennung „35“ des vierten Segments 640 entspricht, würde das Datenbankverwaltungsmodul 18 die „oberste“ Entitätskennung auf die Entitätskennung „50“ des zweiten Segments 620 setzen. Anschließend wertet das Datenbankverwaltungsmodul 18 in Schritt 570 des in 5B veranschaulichten Prozesses aus, ob die Entitätskennung „50“ des zweiten Segments 620 aus einem DELETE-Segment stammt. Da das zweite Segment 620 ein Zuordnungssegment und kein DELETE-Segment ist, gibt das Datenbankverwaltungsmodul 18 die Entitätskennung „50“ aus, 670.
  • Wie in 6L veranschaulicht, wenn das Datenbankverwaltungsmodul 18 die elfte Iteration des Prozesses von 5B an der Zuordnungsgruppe 600 ausführt und die Entitätskennung an der obersten Stelle des Heap entfernt, würde das Datenbankverwaltungsmodul 18 schließlich die Entitätskennung „56“ des dritten Segments 630 ausgeben, 670. Wie veranschaulicht, ist die Entitätskennung „56“ die einzige Entitätskennung, die noch zum Auswerten übrig ist. Ferner ist das dritte Segment 630 kein DELETE-Segment, und wenn das Datenbankverwaltungsmodul 18 daher die Entitätskennung „56“ des dritten Segments 630 auswertet, bestimmt das Datenbankverwaltungsmodul 18, dass die Entitätskennung „56“ des dritten Segments 630 nicht aus einem DELETE-Segment stammt (d.h. Schritt 570 von 5B) und gibt die Entitätskennung „56“ aus, 670.
  • 6M veranschaulicht die abschließende Ausgabe 670, wenn das Datenbankverwaltungsmodul 18 die in 6A bis 6M veranschaulichte Zuordnungsgruppe 600 abfragt. Die Entitätskennungsausgabe 670 ist bei Abfrage der Zuordnungsgruppe 6001“, „4“, „10“, „23“, „30“, „34“, „50“ und „56“.
  • Die Clientsysteme 20 können über das Datenbankabfragemodul 22 das Datenbankverwaltungsmodul 18 der Serversysteme 10 aus vielerlei Gründen auffordern, die Datenbank 17 abzufragen. Zum Beispiel kann die Datenbank 17 eine Zuordnungsgruppe der Dokumente enthalten, die für einen Rechtsstreit gesperrt sind, und somit kann die Zuordnungsgruppe, wenn ermittelt wird, ob ein bestimmtes Dokument gesperrt ist, abgefragt werden, um zu prüfen ob sich das bestimmte Dokument darin befindet. In einem weiteren Beispiel kann eine Zuordnungsgruppe abgefragt werden, um zu bestimmen, wie viele Dokumente für einen bestimmten Fall, ein bestimmtes Thema oder Projekt relevant sind. Für dieses Beispiel, wenn alle Zuordnungs- und Zuordnungsaufhebungssegmente für eine Zuordnungsgruppe zusammengeführt worden sind, stellt eine einfache Zählung der Anzahl von Entitäten in der Gruppe die Antwort auf die Abfrage bereit, wobei ein Multiplizieren der Anzahl von vollständigen Segmenten mit der Segmentgröße die Berechnung beschleunigt. In einem weiteren Beispiel kann eine Zuordnungsgruppe abgefragt werden, um zu bestimmen, welche Dokumente zu einem bestimmten Fall vor einem bestimmten Datum hinzugefügt wurden. Wenn das Zuordnungsdatum in der Zuordnungstabelle als Nutzdaten statt als separate Tabelle gespeichert ist, kann die Abfrage für dieses Beispiel schnell und effizient beantwortet werden. Die Abfrage kann zuerst alle Dokumente in einer Zuordnungsgruppe abrufen, und anschließend können diese Dokumente auf Grundlage des Datums nachgefiltert werden, an dem die Dokumente hinzugefügt wurden. In noch einem weiteren Beispiel kann eine Zuordnungsgruppe abgefragt werden, um zu bestimmen, welche Dokumente unter die Verantwortung von einem oder mehreren einer Gruppe von Verwaltern fallen. Wenn die Daten als ein Dokument modelliert sind, das eine Zuordnungsgruppe aller seiner Verantwortlichen (z.B. Verwalter) enthält, kann die Abfrage in diesem Beispiel durch Scannen jedes Dokuments und Ausführen einer Zuordnungsgruppen-Schnittmengenoperation zwischen den Zuordnungsgruppen aller Verantwortlichen für das Dokument und die Gruppe von Verwaltern in der Abfrage abgeschlossen werden.
  • Aufgrund dessen, dass Zuordnungsgruppen sowohl mit Zuordnungssegmenten als auch Zuordnungsaufhebungssegmenten vorliegen, muss kein Segment in irgendeiner Zuordnungsgruppe modifiziert werden. Jedes der Segmente einer Zuordnungsgruppe ist unveränderlich, was ein gleichzeitiges Ausführen von Operationen wie Erstellen, Löschen, Verschieben, Zusammenführen und Abfragen von Segmenten ermöglicht, ohne dass die gesamte Zuordnungsgruppe für eine der Operationen gesperrt werden muss. Da jede Zeile in der in 2 veranschaulichten Segmentdatentabelle 150 ein Segment der Zuordnungsgruppe 100 angibt, beträgt der Umfang einer transaktionalen Sperre oft nur eine Zeile, und nicht die gesamte Tabelle. Zum Beispiel würde bei Verwendung eines Verknüpfungstabellen-Ansatzes eine Zuordnungsgruppe der Größe 100.000 erfordern, dass die gesamte Verknüpfungstabelle (d.h. 100.000 Zeilen) für jede Operation gesperrt wird, an der Zuordnungen beteiligt sind. Wenn jedoch die Ausführungsformen der vorliegenden Erfindung verwendet werden, muss in dem Fall, dass ein Segment einer Zuordnungsgruppe nur 5.000 Entitätskennungen darstellt, nur eine Zeile (z.B. ungefähr 5.000 Entitätskennungen) gesperrt werden, wenn sie an der Operation beteiligt ist. Somit können andere Operationen, an denen Zuordnungen von Entitätskennungen in anderen Segmenten beteiligt sind, zur selben Zeit stattfinden, ohne bei gleichzeitigem Zugriff Probleme zu verursachen.
  • Wenn ferner in einigen Ausführungsformen der vorliegenden Erfindung ein Segment einer Zuordnungsgruppe gelesen werden muss, wird es vom Datenträger heruntergeladen, dekomprimiert und in einem Arbeitsspeicher zwischengespeichert, um einen anschließenden Zugriff zu beschleunigen. Schwache Referenzen werden zum Speichern dieser Segmente im Arbeitsspeicher verwendet, sodass diese Segmente bei hoher Arbeitsspeicherauslastung verworfen werden können (z.B. durch einen Garbage-Collector (Datenmüllsammler)), um Arbeitsspeicher für andere Threads frei zu machen. Zwar kann dies dazu führen, dass das Segment neu geladen werden muss (z.B. vom Datenträger), wenn das Segment das nächste Mal benötigt wird, dieser Ansatz kann aber die Gesamtskalierbarkeit des Systems verbessern.
  • Die hierin bereitgestellten Techniken haben eine Reihe von Vorteilen. Zum Beispiel ermöglichen die Techniken eine schnelle, effiziente und kostengünstige Abfrage der Zuordnungsgruppen. Des Weiteren stellen die hierin bereitgestellten Techniken ein System bereit, das eine effiziente und schnelle Modellierung und Verfolgung von großen Zuordnungsgruppen ermöglicht. Dieses neue System beseitigt die Kosten, die mit anderen herkömmlichen Zuordnungsgruppen, wie beispielsweise Verknüpfungstabellen-Zuordnungsgruppen, verbunden sind. Das System ist ferner fähig, die Entitäten einer Zuordnungsgruppe zu modifizieren, ohne zu erfordern, dass ganze Zuordnungsgruppen gesperrt werden und während der Modifizierung unbenutzbar werden. Allgemein ausgedrückt lösen die hierin bereitgestellten Techniken technische und wirtschaftliche Probleme, die ihren Ursprung zwangsläufig in der Computertechnologie und insbesondere der Speicherung von Zuordnungsgruppen in einer Datenbank haben.
  • Es sollte klar sein, dass die oben beschriebenen und in den Zeichnungen veranschaulichten Ausführungsformen nur einige der vielen Möglichkeiten einer Umsetzung von Ausführungsformen zum Verarbeiten einer Datenbankabfrage für Gruppen von Daten und insbesondere Zuordnungsgruppen von Daten darstellen.
  • Die Umgebung der Ausführungsformen der vorliegenden Erfindung kann jede Anzahl von Computer- oder anderen Verarbeitungssystemen (z.B. Client- oder Endbenutzer-Systeme, Serversysteme usw.) und Datenbanken oder anderen, in jeder gewünschten Weise angeordneten Datenspeicher enthalten, wobei Ausführungsformen der vorliegenden Erfindung auf jeden gewünschten Typ von Datenverarbeitungsumgebung angewendet werden können (z.B. Cloud Computing, Client-Server, Netzwerk-Datenverarbeitung, Großrechner, eigenständige Systeme usw.). Die Computer- oder anderen Verarbeitungssysteme, die von Ausführungsformen der vorliegenden Erfindung verwendet werden, können durch jede Anzahl von beliebigem PC- oder anderem Computertyp oder Verarbeitungssystem umgesetzt werden (z.B. Desktop, Laptop, PDA, Mobilgeräte usw.) und können jedes im Handel erhältliche Betriebssystem und jede Kombination von im Handel erhältlicher und benutzerdefinierter Software enthalten (z.B. Browser-Software, Kommunikations-Software, Server-Software, Datenbankverwaltungsmodul 18, Datenbankabfragemodul 22 usw.). Diese Systeme können jeden Typ von Monitor und Eingabeeinheiten enthalten (z.B. Tastatur, Maus, Spracherkennung usw.), um Informationen einzugeben und/oder anzuzeigen.
  • Es sollte klar sein, dass die Software (z.B. Datenbankverwaltungsmodul 18, Datenbankabfragemodul 22 usw.) der Ausführungsformen der vorliegenden Erfindung in jeder gewünschten Computersprache umgesetzt werden kann und von einem Fachmann der Computerbranche auf Grundlage der in der Patentschrift enthaltenen Funktionsbeschreibungen und in den Zeichnungen veranschaulichten Ablaufplänen entwickelt werden könnte. Ferner betreffen alle Verweise hierin auf Software, die verschiedene Funktionen ausführt, im Allgemeinen Computersysteme oder Prozessoren, die diese Funktionen unter Software-Steuerung ausführen. Die Computersysteme der Ausführungsformen der vorliegenden Erfindung können alternativ durch jeden Typ von Hardware und/oder andere Verarbeitungsschaltungen umgesetzt werden.
  • Die verschiedenen Funktionen der Computer- oder anderen Verarbeitungssysteme können auf jede Weise auf jede Anzahl von Software- und/oder Hardware-Module oder -Einheiten, Verarbeitungs- oder Computersysteme und/oder -schaltungen verteilt werden, wobei die Computer- oder Verarbeitungssysteme lokal oder entfernt voneinander angeordnet sein können und über jedes geeignete Kommunikationsmedium kommunizieren können (z.B. LAN, WAN. Intranet, Internet, Festanschluss, Modemverbindung, drahtlos usw.). Zum Beispiel können die Funktionen der Ausführungsformen der vorliegenden Erfindung auf jede Weise auf die verschiedenen Endbenutzer-/Client- und Server-Systeme und/oder andere zwischengeschaltete Verarbeitungseinheiten verteilt werden. Die oben beschriebene und in den Ablaufplänen veranschaulichte Software und/oder die Algorithmen können auf jede Weise modifiziert werden, die die hierin beschriebenen Funktionen erfüllt. Außerdem können die Funktionen in den Ablaufplänen oder Beschreibungen in jeder Reihenfolge ausgeführt werden, die eine gewünschte Operation ausführen.
  • Die Software von Ausführungsformen der vorliegenden Erfindung (z.B. Datenbankverwaltungsmodul 18, Datenbankabfragemodul 22 usw.) kann auf einem nicht flüchtigen, durch einen Computer verwendbaren Datenträger zur Verfügung stehen (z.B. magnetische oder optische Datenträger, magneto-optische Datenträger, Disketten, CD-ROM, DVD, Arbeitsspeichereinheiten usw.) einer ortsfesten oder tragbaren Programmproduktvorrichtung oder -einheit zur Verwendung mit eigenständigen Systemen oder Systemen, durch ein Netzwerk oder ein anderes Kommunikationsmedium verbunden sind.
  • Das Kommunikationsnetzwerk kann durch jeden Typ von Kommunikationsnetzwerk umgesetzt werden (z.B. LAN, WAN, Internet, Intranet, VPN usw.). Die Computer- oder anderen Verarbeitungssysteme der Ausführungsformen der vorliegenden Erfindung können alle herkömmlichen oder andere Kommunikationseinheiten zum Kommunizieren über das Netzwerk über alle herkömmlichen oder anderen Protokolle enthalten. Die Computer- oder anderen Verarbeitungssysteme können jeden Typ von Verbindung nutzen (z.B. drahtgebunden, drahtlos usw.), um auf das Netzwerk zuzugreifen. Lokale Kommunikationsmedien können durch alle geeigneten Kommunikationsmedien umgesetzt werden (z.B. lokales Netzwerk (LAN), Festanschluss, drahtlose Verbindung, Intranet usw.).
  • Das System kann eine beliebige Anzahl aller herkömmlichen oder anderen Datenbanken, Datenspeicher oder Speicherstrukturen verwenden (z.B. Dateien, Datenbanken, Datenstrukturen, Daten- oder andere Speicher usw.), um Informationen zu speichern (z.B. Zuordnungsgruppen, Zuordnungssegmente, Zuordnungsaufhebungssegmente. Entitätskennungen, Metadaten usw.). Das Datenbanksystem kann durch eine beliebige Anzahl aller herkömmlichen oder anderen Datenbanken, Datenspeicher oder Speicherstrukturen umgesetzt werden (z.B. Dateien, Datenbanken, Datenstrukturen, Daten- oder andere Speicher usw.), um Informationen zu speichern (z.B. Zuordnungsgruppen, Zuordnungssegmente, Zuordnungsaufhebungssegmente. Entitätskennungen, Metadaten usw.). Das Datenbanksystem kann in den Server- und/oder Clientsystemen enthalten oder mit diesen verbunden sein. Die Datenbanksysteme und/oder Speicherstrukturen können entfernt von oder lokal zu den Computer- oder anderen Verarbeitungssystemen angeordnet sein und können alle gewünschten Daten speichern (z.B. Zuordnungsgruppen, Zuordnungssegmente, Zuordnungsaufhebungssegmente, Entitätskennungen, Metadaten usw.).
  • Die Ausführungsformen der vorliegenden Erfindung können eine beliebige Anzahl jedes Typs von Benutzeroberfläche verwenden (z.B. grafische Benutzeroberfläche (GUI), Eingabeaufforderung, Prompt usw.), um Informationen zu erhalten oder bereitzustellen (z.B. Entitätskennungen einer Zuordnungsgruppe, das Datum, an dem die Entitätskennungen zu der Zuordnungsgruppe hinzugefügt wurden usw.), wobei die Oberfläche Informationen enthalten kann, die auf beliebige Weise angeordnet sind. Die Oberfläche kann eine beliebige Anzahl aller Typen von Eingabe- oder Betätigungsmechanismen enthalten (z.B. Schaltflächen, Symbole, Felder, Kästchen, Verknüpfungen usw.), die an beliebigen Stellen angeordnet sind, um Informationen einzugeben/anzuzeigen und gewünschte Aktionen über alle geeigneten Eingabeeinheiten zu initiieren (z.B. Maus, Tastatur, Berührungsbildschirm usw.). Die Bildschirmanzeigen der Benutzeroberfläche können alle geeigneten Betätigungselemente enthalten (z.B. Verknüpfungen, Registerkarten usw.), um beliebig zwischen den Bildschirmanzeigen zu navigieren.
  • Die hierin verwendete Terminologie dient nur zum Zweck der Beschreibung von besonderen Ausführungsformen und soll die Erfindung keinesfalls einschränken. Die hierin verwendeten Singularformen „ein“, „eine“ und „der/die/das“ sollen auch die Pluralformen mit einschließen, es sei denn, der Kontext gibt eindeutig anderes vor. Es versteht sich des Weiteren, dass die Begriffe „weist auf“, „aufweisend“, „enthält“, „enthaltend“, „hat“, „haben“, „habend“, „mit“ und dergleichen bei Verwendung in dieser Patentschrift das Vorhandensein ausgewiesener Funktionen, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Funktionen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon aber nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die Beschreibung der vorliegenden Erfindung wurde zum Zweck der Veranschaulichung und Beschreibung erstellt, sie soll aber keineswegs erschöpfend sein oder auf die Erfindung in der offenbarten Form eingeschränkt werden. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht vom Schutzumfang und dem Erfindungsgedanken der Erfindung abweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erklären und es anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und dem Erfindungsgedanken der beschrieben Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplandarstellungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.

Claims (24)

  1. Verfahren zum Verarbeiten einer Datenbankabfrage für Gruppen von Daten, aufweisend: ein Zuweisen einer eindeutigen Kennung aus einem Ganzzahlenraum zu jeder Entität in Daten und ein Erstellen von einer oder mehreren Gruppen von Entitäten, die jeweils zu einer entsprechenden Entität in den Daten gehören; ein Generieren einer Darstellung auf einem Datenträger für jede Gruppe von Entitäten, wobei jede Darstellung einen Bereich der eindeutigen Kennungen in einer entsprechenden Gruppe umfasst und dafür geeignet ist, und ein Vorhandensein einer Entität in dieser entsprechenden Gruppe angibt, und ein Verarbeiten einer Abfrage auf Grundlage der Darstellung für jede Gruppe von Entitäten, um Daten abzurufen, die die Abfrage erfüllen, wobei die Darstellung eine konstante Zeit für Operationen zur Zuordnung und Zuordnungsaufhebung bereitstellt, die Operationen nur zum Anfügen mit verzögertem Zusammenführen und automatischem Filtern von gelöschten und doppelten Entitäten zum Abfragezeitpunkt sind.
  2. Verfahren nach Anspruch 1, wobei mindestens eine Entitätengruppe Entitäten enthält, die einer speziellen Entität zugehörig sind.
  3. Verfahren nach Anspruch 1, wobei mindestens eine Entitätengruppe Entitäten enthält, deren Zuordnung zu einer speziellen Entität aufgehoben ist.
  4. Verfahren nach Anspruch 1, wobei eine Entität ein oder mehrere Beispiele aus einer Gruppe von einer Person, einem Dokument, einem Ereignis und einem Objekt darstellt.
  5. Verfahren nach Anspruch 1, wobei jede aus der Entitätengruppe in eine Mehrzahl von Segmenten von Entitätskennungen partitioniert ist, und Metadaten für eine Entitätskennung eines Segments einer Entitätengruppe als Nutzdaten in das Segment integriert gespeichert sind.
  6. Verfahren nach Anspruch 1, des Weiteren aufweisend: ein Partitionieren einer Gruppe von Entitäten, die durch Entitätskennungen dargestellt werden, in eine Mehrzahl von Segmenten, wobei ein Inhalt von jedem Segment und Metadaten für jedes Segment in separaten Datenobjekten gespeichert werden, wobei jedes Segment entweder von einem Einfügetyp zum Angeben von Zuordnung oder einem Löschtyp zum Angeben von Zuordnungsaufhebung ist, und eine Segmentgröße auf Optimierungen von Anforderungsgröße, Komprimierungstyp und Laufzeit beruht, und wobei die Mehrzahl von Segmenten chronologisch geordnet ist und verwendet wird, um Inhalt der Entitätengruppe durch Zusammenführen, Einfügen und Löschen von Segmenten zu generieren; und ein gleichzeitiges Ausführen von Operationen an der Mehrzahl von Segmenten.
  7. Verfahren nach Anspruch 6, wobei ein Verarbeiten der Abfrage ferner aufweist: ein Auswerten der Abfrage für die Mehrzahl von Segmenten und ein Kombinieren von Ergebnissen von jedem der ausgewerteten Segmente.
  8. Verfahren nach Anspruch 1, wobei eine Entitätengruppe eine Multimenge enthält, die nicht eindeutige Entitäten mit doppelten Entitätskennungen enthält, die in einer physischen Darstellung der Entitätengruppe beibehalten werden, und wobei die Anfrage die Gruppen- oder Multimengendarstellung anfordert.
  9. System zum Verarbeiten einer Datenbankabfrage für Gruppen von Daten, aufweisend: einen Prozessor, der konfiguriert ist zum: Zuweisen einer eindeutigen Kennung aus einem Ganzzahlenraum zu jeder Entität in Daten und ein Erstellen von einer oder mehreren Gruppen von Entitäten, die jeweils zu einer entsprechenden Entität in den Daten gehören; Generieren einer Darstellung auf einem Datenträger für jede Gruppe von Entitäten, wobei jede Darstellung einen Bereich der eindeutigen Kennungen in einer entsprechenden Gruppe umfasst und dafür geeignet ist, und ein Vorhandensein einer Entität in dieser entsprechenden Gruppe angibt, und Verarbeiten einer Abfrage auf Grundlage der Darstellung für jede Gruppe von Entitäten, um Daten abzurufen, die die Abfrage erfüllen, wobei die Darstellung eine konstante Zeit für Operationen zur Zuordnung und Zuordnungsaufhebung bereitstellt, die Operationen nur zum Anfügen mit verzögertem Zusammenführen und automatischem Filtern von gelöschten und doppelten Entitäten zum Abfragezeitpunkt sind.
  10. System nach Anspruch 9, wobei mindestens eine Entitätengruppe Entitäten enthält, die einer speziellen Entität zugehörig sind.
  11. System nach Anspruch 9, wobei mindestens eine Entitätengruppe Entitäten enthält, deren Zuordnung zu einer speziellen Entität aufgehoben ist.
  12. System nach Anspruch 9, wobei eine Entität ein oder mehrere Beispiele aus einer Gruppe von einer Person, einem Dokument, einem Ereignis und einem Objekt darstellt.
  13. System nach Anspruch 9, wobei jede aus der Entitätengruppe in eine Mehrzahl von Segmenten von Entitätskennungen partitioniert ist, und Metadaten für eine Entitätskennung eines Segments einer Entitätengruppe als Nutzdaten in das Segment integriert gespeichert sind.
  14. System nach Anspruch 9, wobei der Prozessor ferner konfiguriert ist zum: Partitionieren einer Gruppe von Entitäten, die durch Entitätskennungen dargestellt werden, in eine Mehrzahl von Segmenten, wobei Inhalt von jedem Segment und Metadaten für jedes Segment in separaten Datenobjekten gespeichert werden, wobei jedes Segment entweder von einem Einfügetyp zum Angeben von Zuordnung oder einem Löschtyp zum Angeben von Zuordnungsaufhebung ist, und eine Segmentgröße auf Optimierungen von Anforderungsgröße, Komprimierungstyp und Laufzeit beruht, und wobei die Mehrzahl von Segmenten chronologisch geordnet ist und verwendet wird, um Inhalt der Entitätengruppe durch Zusammenführen, Einfügen und Löschen von Segmenten zu generieren; und gleichzeitigen Ausführen von Operationen an der Mehrzahl von Segmenten.
  15. System nach Anspruch 14, wobei ein Verarbeiten der Abfrage ferner aufweist: ein Auswerten der Abfrage für die Mehrzahl von Segmenten und ein Kombinieren von Ergebnissen von jedem der ausgewerteten Segmente.
  16. System nach Anspruch 9, wobei eine Entitätengruppe eine Multimenge enthält, die nicht eindeutige Entitäten mit doppelten Entitätskennungen enthält, die in einer physischen Darstellung der Entitätengruppe beibehalten werden, und wobei die Anfrage die Gruppen- oder Multimengendarstellung anfordert.
  17. Computerprogrammprodukt zum Verarbeiten einer Datenbankabfrage für Gruppen von Daten, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin ausgeführten Programmanweisungen aufweist, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen zum: Zuweisen einer eindeutigen Kennung aus einem Ganzzahlenraum zu jeder Entität in Daten und ein Erstellen von einer oder mehreren Gruppen von Entitäten, die jeweils zu einer entsprechenden Entität in den Daten gehören; Generieren einer Darstellung auf einem Datenträger für jede Gruppe von Entitäten, wobei jede Darstellung einen Bereich der eindeutigen Kennungen in einer entsprechenden Gruppe umfasst und dafür geeignet ist, und ein Vorhandensein einer Entität in dieser entsprechenden Gruppe angibt, und Verarbeiten einer Abfrage auf Grundlage der Darstellung für jede Gruppe von Entitäten, um Daten abzurufen, die die Abfrage erfüllen, wobei die Darstellung eine konstante Zeit für Operationen zur Zuordnung und Zuordnungsaufhebung bereitstellt, die Operationen nur zum Anfügen mit verzögertem Zusammenführen und automatischem Filtern von gelöschten und doppelten Entitäten zum Abfragezeitpunkt sind.
  18. Computerprogrammprodukt nach Anspruch 17, wobei mindestens eine Entitätengruppe Entitäten enthält, die einer speziellen Entität zugehörig sind.
  19. Computerprogrammprodukt nach Anspruch 17, wobei mindestens eine Entitätengruppe Entitäten enthält, deren Zuordnung zu einer speziellen Entität aufgehoben ist.
  20. Computerprogrammprodukt nach Anspruch 17, wobei eine Entität ein oder mehrere Beispiele aus einer Gruppe von einer Person, einem Dokument, einem Ereignis und einem Objekt darstellt.
  21. Computerprogrammprodukt nach Anspruch 17, wobei jede aus der Entitätengruppe in eine Mehrzahl von Segmenten von Entitätskennungen partitioniert ist, und Metadaten für eine Entitätskennung eines Segments einer Entitätengruppe als Nutzdaten in das Segment integriert gespeichert sind.
  22. Computerprogrammprodukt nach Anspruch 17, ferner aufweisend: ein Partitionieren einer Gruppe von Entitäten, die durch Entitätskennungen dargestellt werden, in eine Mehrzahl von Segmenten, wobei Inhalt von jedem Segment und Metadaten für jedes Segment in separaten Datenobjekten gespeichert werden, wobei jedes Segment entweder von einem Einfügetyp zum Angeben von Zuordnung oder einem Löschtyp zum Angeben von Zuordnungsaufhebung ist, und eine Segmentgröße auf Optimierungen von Anforderungsgröße, Komprimierungstyp und Laufzeit beruht, und wobei die Mehrzahl von Segmenten chronologisch geordnet ist und verwendet wird, um Inhalt der Entitätengruppe durch Zusammenführen, Einfügen und Löschen von Segmenten zu generieren; und ein gleichzeitiges Ausführen von Operationen an der Mehrzahl von Segmenten.
  23. Computerprogrammprodukt nach Anspruch 22, wobei ein Verarbeiten der Abfrage des Weiteren aufweist: ein Auswerten der Abfrage für die Mehrzahl von Segmenten und ein Kombinieren von Ergebnissen von jedem der ausgewerteten Segmente.
  24. Computerprogrammprodukt nach Anspruch 17, wobei eine Entitätengruppe eine Multimenge enthält, die nicht eindeutige Entitäten mit doppelten Entitätskennungen enthält, die in einer physischen Darstellung der Entitätengruppe beibehalten werden, und wobei die Anfrage die Gruppen- oder Multimengendarstellung anfordert.
DE112018000456.2T 2017-03-15 2018-02-20 Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen Pending DE112018000456T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/459,372 2017-03-15
US15/459,372 US10452631B2 (en) 2017-03-15 2017-03-15 Managing large scale association sets using optimized bit map representations
PCT/IB2018/051028 WO2018167584A1 (en) 2017-03-15 2018-02-20 Managing large scale association sets using optimized bit map representations

Publications (1)

Publication Number Publication Date
DE112018000456T5 true DE112018000456T5 (de) 2019-10-02

Family

ID=63519295

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018000456.2T Pending DE112018000456T5 (de) 2017-03-15 2018-02-20 Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen

Country Status (6)

Country Link
US (2) US10452631B2 (de)
JP (1) JP7030831B2 (de)
CN (1) CN110178128B (de)
DE (1) DE112018000456T5 (de)
GB (1) GB2574537A (de)
WO (1) WO2018167584A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452631B2 (en) 2017-03-15 2019-10-22 International Business Machines Corporation Managing large scale association sets using optimized bit map representations
US11050766B2 (en) * 2018-10-31 2021-06-29 EMC IP Holding Company LLC Generating unique virtual process identifiers for use in network security mechanisms
CN111488340B (zh) * 2019-01-29 2023-09-12 菜鸟智能物流控股有限公司 数据处理方法、装置及电子设备
CN110162543A (zh) * 2019-05-29 2019-08-23 北京奇艺世纪科技有限公司 一种信息查询方法及装置
US11429611B2 (en) * 2019-09-24 2022-08-30 International Business Machines Corporation Processing data of a database system
KR102177064B1 (ko) * 2019-11-18 2020-11-10 재단법인대구경북과학기술원 다항 조인 연산자를 이용한 쿼리 처리 방법 및 그 장치
US20230196882A1 (en) * 2021-12-17 2023-06-22 Amtote International, Inc. Virtual sports league

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790848A (en) * 1995-02-03 1998-08-04 Dex Information Systems, Inc. Method and apparatus for data access and update in a shared file environment
EP1101176A1 (de) 1998-08-04 2001-05-23 Enfish Technology, Inc. Verfahren und gerät für eine speicherarchitektur mit einem verbesserten informationsspeicher- und wiederauffindungssystem in einer gemeinsam genutzten dateiumgebung
JP2002157227A (ja) 2000-11-20 2002-05-31 Sony Corp 情報処理装置、コンテンツ情報更新方法、およびコンテンツ情報更新プログラムを記録した記録媒体
EP1349081A1 (de) * 2002-03-28 2003-10-01 LION Bioscience AG Methode und Gerät zum Befragen von relationalen Datenbanken
US8577908B2 (en) 2003-03-20 2013-11-05 International Business Machines Corporation Automatic lock management in an abstract database
US20070150489A1 (en) 2005-12-22 2007-06-28 International Business Machines Corporation Method of representing continuum of data as a rolling column within a relational model
US9275129B2 (en) 2006-01-23 2016-03-01 Symantec Corporation Methods and systems to efficiently find similar and near-duplicate emails and files
US7840575B2 (en) * 2006-05-19 2010-11-23 Oracle International Corporation Evaluating event-generated data using append-only tables
US7765215B2 (en) * 2006-08-22 2010-07-27 International Business Machines Corporation System and method for providing a trustworthy inverted index to enable searching of records
US8396838B2 (en) 2007-10-17 2013-03-12 Commvault Systems, Inc. Legal compliance, electronic discovery and electronic document handling of online and offline copies of data
US8620880B2 (en) 2008-05-30 2013-12-31 Nec Corporation Database system, method of managing database, and computer-readable storage medium
GB2472358A (en) 2008-07-02 2011-02-02 Lexisnexis Risk & Information Analytics Group Inc Database system and methods
US8762333B2 (en) * 2009-07-08 2014-06-24 Pivotal Software, Inc. Apparatus and method for read optimized bulk data storage
EP2625655A4 (de) 2010-10-06 2014-04-16 Planet Data Solutions System und verfahren zur indexierung elektronischer erkennungsdaten
US9189549B2 (en) * 2010-11-08 2015-11-17 Microsoft Technology Licensing, Llc Presenting actions and providers associated with entities
EP2840501A4 (de) 2012-04-18 2015-12-09 Murakumo Corp Datenbankverwaltungsverfahren, datenbanksystem und programm
US9244977B2 (en) * 2012-12-31 2016-01-26 Google Inc. Using content identification as context for search
US10095807B2 (en) * 2015-04-28 2018-10-09 Microsoft Technology Licensing, Llc Linked data processor for database storage
US10621388B2 (en) * 2016-07-20 2020-04-14 Sap Se Automatic delta query support for backend databases
US10452631B2 (en) 2017-03-15 2019-10-22 International Business Machines Corporation Managing large scale association sets using optimized bit map representations

Also Published As

Publication number Publication date
JP2020514899A (ja) 2020-05-21
CN110178128A (zh) 2019-08-27
GB201913189D0 (en) 2019-10-30
US10452631B2 (en) 2019-10-22
US11372831B2 (en) 2022-06-28
WO2018167584A1 (en) 2018-09-20
US20190354514A1 (en) 2019-11-21
JP7030831B2 (ja) 2022-03-07
GB2574537A (en) 2019-12-11
CN110178128B (zh) 2023-05-12
US20180268009A1 (en) 2018-09-20

Similar Documents

Publication Publication Date Title
DE112018000456T5 (de) Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen
DE112015000218B4 (de) Verfahren, System und Computerprogramm zum Abtasten einer Mehrzahl von Speicherbereichen in einem Arbeitsspeicher nach einer spezifizierten Anzahl von Ergebnissen
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112020003820T5 (de) Erkennung von Anomalien und Abweichungen unter Verwendung eines domänenindizierten Einschränkungs-Repository
DE112019002948T5 (de) Feststellen einer optimalen speicherumgebung für datensätze und für das migrieren von datensätzen
DE102016105526A1 (de) Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung
DE60315996T2 (de) Verfahren und vorrichtung zur datenbewegung mittels sperren
DE112015000347T5 (de) Verarbeiten von Datensätzen in einer Ablage für große Datenmengen
DE202015009874U1 (de) Implementierung semistrukturierter Daten als ein Datenbankelement erster Klasse
DE202009019149U1 (de) Asynchron verteilte Speicherbereinigung für replizierte Speichercluster
DE112013000725T5 (de) Überwachen von Inhaltsablagen, Identifizieren von falsch klassifizierten Inhaltsobjekten und Vorschlagen einer Neuklassifizierung
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE112018005725T5 (de) Daten-deidentifikation auf der grundlage eines erkennens von zulässigen konfigurationen für daten-deidentifikationsprozesse
DE102012223167A1 (de) Gemeinsame Nutzung von Artefakten zwischen kollaborativen Systemen
DE112018001290T5 (de) Verfahren zum Schätzen der Löschbarkeit von Datenobjekten
DE112019006530T5 (de) Markieren von betroffenen ähnlichkeitsgruppen in freispeichersammeloperationen in duplizierten speichersystemen
DE112020000554T5 (de) Verfahren zum zugreifen auf datensätze eines stammdatenverwaltungssystems
DE112015003926T5 (de) Publish/Subscribe-Messaging unter Verwendung einer Nachrichtenstruktur
DE112021000338T5 (de) Auslagern der statistikerfassung
DE112021000945T5 (de) Auf einem Dateisystem-Verzeichnisbaum oder Objekt-Speicherbucket beruhende Übernahme von benutzerspezifischen Metadatentags
DE112016000776T5 (de) Effiziente Durchführung von Einfüge- und Punktabfrage-Operationen in einem Spaltenspeicher
DE112022000878T5 (de) Datensatzmultiplexer für datenverarbeitungssystem
DE112021003031T5 (de) Archivieren von nur-beschleuniger-datenbanktabellen
DE112018005620T5 (de) Auftragsverwaltung in einem datenverarbeitungssystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0016000000

Ipc: G06F0016901000

R084 Declaration of willingness to licence