DE112018004222T5 - Datenbankaufteilung - Google Patents

Datenbankaufteilung Download PDF

Info

Publication number
DE112018004222T5
DE112018004222T5 DE112018004222.7T DE112018004222T DE112018004222T5 DE 112018004222 T5 DE112018004222 T5 DE 112018004222T5 DE 112018004222 T DE112018004222 T DE 112018004222T DE 112018004222 T5 DE112018004222 T5 DE 112018004222T5
Authority
DE
Germany
Prior art keywords
database
split
record
key
bloom filter
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
DE112018004222.7T
Other languages
English (en)
Inventor
Claude Nelson Jr. Warren
Michael Ryan
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 DE112018004222T5 publication Critical patent/DE112018004222T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/212Schema design and management with details for data modelling support
    • 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
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Vorliegend werden computerimplementierte Verfahren, Computerprogrammprodukte und Systeme zum Speichern von Datensätzen in bzw. Abrufen von Datensätzen aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank bereitgestellt. Die aufgeteilte Datenbank weist mehrere Datenbankteile auf. Die Datenbankteile sind jeweils so konfiguriert, dass sie eine Teilmenge von Datensätzen der aufgeteilten Tabelle speichern. Die Datenbankteile sind zudem jeweils einem jeweiligen Bloom-Filter zugehörig. Datensätze werden durch Erzeugen einer jeweiligen zur Verwendung mit jedem von mehreren der jeweiligen Bloom-Filter vorgesehenen Darstellung des Aufteilungsschlüssels des zu speichernden Datensatzes in die aufgeteilte Tabelle eingefügt. Anschließend werden Hamming-Abstände zwischen aktuellen Werten jedes der mehreren Bloom-Filter und der jeweiligen zur Verwendung mit diesem Bloom-Filter vorgesehenen Darstellung des Aufteilungsschlüssels berechnet und ein Datenbankteil zum Speichern des Datensatzes unter den Datenbankteilen auf Grundlage der berechneten Hamming-Abstände ausgewählt.

Description

  • HINTERGRUND
  • Gebiet
  • Die vorliegende Erfindung betrifft aufgeteilte („sharded“) Datenbanken. Insbesondere betrifft sie Verfahren, Systeme und Computerprogrammprodukte zum Speichern und Abrufen von Datensätzen in einer aufgeteilten Tabelle einer aufgeteilten Datenbank.
  • BESCHREIBUNG DES VERWANDTEN STANDES DER TECHNIK
  • Bei Datenbankaufteilung („database sharding“, bestimmte Form der Fragmentierung oder Partitionierung) handelt es sich um eine bekannte Methode zum Teilen einer Datenbank in mehrere kleinere Teile, die als Datenbankteile oder -fragmente („shards“) bezeichnet werden. Diese Methode kann auch als horizontale Partitionierung bezeichnet werden.
  • Wenn Aufteilung auf eine Datenbank angewendet wird, ist grundsätzlich jeder der Datenbankteile so konfiguriert, dass er dasselbe Schema beinhaltet wie alle anderen Datenbankteile (dabei kann es sich um das Schema für die gesamte Datenbank oder für eine Teilgruppe davon handeln). Mit anderen Worten, jeder der Datenbankteile beinhaltet dieselben Tabellendefinitionen wie jeder der anderen Datenbankteile. Während der Anwendung der Datenbankaufteilungsmethode können bestimmte Tabellen als aufgeteilte Tabellen konfiguriert werden. Dies bedeutet, dass die Datensätze für diese Tabellen derart auf die Datenbankteile verteilt werden, dass sich die Datensätze (oder Daten), die in diesen Tabellen auf jedem Datenbankteil gespeichert sind, für jeden Datenbankteil unterscheiden. Die Verteilung der Datensätze einer aufgeteilten Tabelle auf die Datenbankteile wird üblicherweise auf Grundlage des Werts eines Aufteilungsschlüssels bestimmt, der aus einem oder mehreren Feldern der aufgeteilten Tabelle abgeleitet ist. Beispielsweise kann der Aufteilungsschlüssel als ein ‚id‘-Feld der aufgeteilten Tabelle definiert sein, und Datensätze mit einer ‚id‘, die in einen ersten Bereich fällt, könnten in der Tabelle auf einem ersten Datenbankteil gespeichert werden, während Datensätze mit einer ‚id‘, die in einen zweiten Bereich fällt, in der Tabelle auf dem zweiten Datenbankteil gespeichert werden könnten. Auch wenn die Datenbankteile untereinander dasselbe Schema aufweisen, beinhalten diese daher für jede aufgeteilte Tabelle innerhalb des Schemas nur eine Teilmenge der Datensätze. Um einen Datensatz aus der aufgeteilten Tabelle abzurufen, muss zunächst ermittelt werden, welcher Datenbankteil den interessierenden Datensatz enthält. Dies kann beispielsweise erreicht werden durch Ermitteln, ob der Aufteilungsschlüssel in einen ersten Bereich oder einen zweiten Bereich fällt, um zu ermitteln, ob der Datensatz auf einem ersten bzw. einem zweiten Datenbankteil gespeichert sein müsste.
  • Zusätzlich zu aufgeteilten Tabellen kann eine aufgeteilte Datenbank zudem replizierte Tabellen beinhalten, welche auf jedem der Datenbankteile repliziert sind. Dies bedeutet, dass jeder der Datenbankteile alle Datensätze dieser replizierten Tabellen enthält. Durch Einbeziehen einiger der Tabellen der aufgeteilten Datenbank als replizierte Tabellen kann die Anzahl auf unterschiedlichen Datenbankteilen vorzunehmender Suchen verringert werden, wodurch die Leistungseffizienz der aufgeteilten Datenbank verbessert wird.
  • Datenbankaufteilung kann verwendet werden, um die Leistung einer Datenbank zu verbessern. Wenn beispielsweise eine Datenbank eine sehr große Anzahl an Datensätzen enthält oder eine sehr große Anzahl an Suchanfragen empfängt, kann Datenbankaufteilung verwendet werden, um mehrere Datenbankteile zu erstellen, die auf getrennten Datenverarbeitungseinheiten arbeiten können, wodurch die Fähigkeit eines Datenbanksystems verbessert wird, große Mengen an Datensätzen zu speichern oder eine große Anzahl an Suchanfragen zu beantworten. Der Grund hierfür liegt darin, dass die Datenverarbeitungseinheit, auf der jeder Datenbankanteil gespeichert ist, unabhängig Suchanfragen bezüglich der auf diesem Datenbankteil gespeicherten Teilmenge von Daten bearbeiten kann.
  • Um den mit der Datenbankaufteilung realisierten Vorteil zu maximieren, ist es wünschenswert, dass die Datensätze der aufgeteilten Tabellen derart gleichmäßig auf jeden der Datenbankteile verteilt werden, dass die Speicheranforderungen und die für jeden der Datenbankteile erforderliche Rechenleistung grob ausgeglichen sind. Des Weiteren ist es zudem wünschenswert, ein dynamisches Hinzufügen weiterer Datenbankteile zu der aufgeteilten Datenbank zu ermöglichen, um steigende Rechenleistungs- und Speicheranforderungen bewältigen zu können.
  • Üblicherweise erfolgt im Rahmen von Verfahren zum Zuteilen von Datensätzen an aufgeteilte Tabellen in einer aufgeteilten Datenbank keine zufällige Verteilung der Datensätze derart, dass die Speicheranforderungen und die erforderliche Rechenleistung für jeden der Datenbankteile ausgeglichen ist. Beispielsweise bedeutet ein Verfahren zum Verteilen von Datensätzen auf Teile danach, ob eine ‚id‘ in einen ersten Bereich oder einen zweiten Bereich fällt, dass die Datensätze mit einer niedrigeren ‚id‘ auf demselben Datenbankteil gruppiert werden könnten. Falls die ‚id‘ derart inkrementell zugewiesen wird, dass ältere Datensätze niedrigere ‚id‘s aufweisen, kann dies zu einem Ungleichgewicht der Rechenlast zwischen den Datenbankteilen führen, wenn die neueren Datensätze häufiger abgefragt werden.
  • Zudem gestatten übliche Verfahren zum Zuteilen von Datensätzen an aufgeteilte Tabellen in einer aufgeteilten Datenbank entweder kein dynamisches Hinzufügen weiterer Datenbankteile oder sie führen zu erhöhter Komplexität, wenn Datenbankteile hinzugefügt werden, was beim Abrufen von Datensätzen aus der aufgeteilten Datenbank zu verringerter Leistung führt.
  • KU RZDARSTELLU NG
  • Gemäß einem Aspekt der Erfindung wird ein computerimplementiertes Verfahren zum Speichern eines Datensatzes in einer aufgeteilten Tabelle einer aufgeteilten Datenbank bereitgestellt. Die aufgeteilte Datenbank weist mehrere Datenbankteile auf. Die Datenbankteile sind jeweils so konfiguriert, dass sie eine Teilmenge von Datensätzen der aufgeteilten Tabelle speichern. Die Datenbankteile sind zudem jeweils einem jeweiligen Bloom-Filter zugehörig. Das Bloom-Filter ist so konfiguriert, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in dem Datenbankteil gespeichert worden sein könnte, dem es zugehörig ist. Das Verfahren umfasst Beziehen eines Aufteilungsschlüssels für den zu speichernden Datensatz. Der Aufteilungsschlüssel beruht auf einem oder mehreren Feldern des Datensatzes. Das Verfahren umfasst ferner Erzeugen einer jeweiligen Darstellung des Aufteilungsschlüssels zur Verwendung mit jedem von mehreren der jeweiligen Bloom-Filter. Die Darstellung für ein bestimmtes Bloom-Filter wird durch Anwenden einer oder mehrerer von dem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel erzeugt. Das Verfahren umfasst ferner Berechnen von Hamming-Abständen zwischen aktuellen Werten jedes der mehreren Bloom-Filter und der jeweiligen zur Verwendung mit diesem Bloom-Filter vorgesehenen Darstellung des Aufteilungsschlüssels. Das Verfahren umfasst ferner Auswählen eines Datenbankteils auf Grundlage der berechneten Hamming-Abstände und Speichern des Datensatzes in dem ausgewählten Datenbankteil.
  • Bei einem Bloom-Filter handelt es sich um eine bekannte Datenstruktur, die verwendet werden kann, um zu prüfen, ob ein Element einer Menge angehört. Beim Bloom-Filter handelt es sich um eine probabilistische Datenstruktur, welche die Zugehörigkeit zu der Menge in einem Bitvektor (oder Array) fester Länge darstellt. Zu Anfang, wenn die von dem Bloom-Filter dargestellte Menge leer ist, beträgt jedes der Bits in dem Vektor ‚0‘. Zusätzlich zu dem Bitvektor fester Länge besitzt jedes Bloom-Filter eine vorab bestimmte Anzahl verschiedener diesem zugehörigen Hashalgorithmen. Jeder dieser Hashalgorithmen bildet ein gegebenes Element auf einem bestimmten Bit in dem Vektor ab. Wenn der durch das Bloom-Filter dargestellten Menge Elemente hinzugefügt werden, wendet das Bloom-Filter jeden der Hashalgorithmen auf jedes hinzugefügte Element an und setzt die entsprechenden Bits des Bitvektors, auf denen das hinzugefügte Element durch die Hashalgorithmen abgebildet wird, auf ‚1‘.
  • Um zu prüfen, ob ein bestimmtes Element einer durch das Bloom-Filter dargestellten Menge angehört, werden die Hashalgorithmen auf dieses Element angewendet und die Bits des Bitvektors überprüft, auf denen dieses Element durch die Hashalgorithmen abgebildet wird. Falls eines der Bits, auf denen das Element abgebildet wird, ‚0‘ ist, gehört das Element nicht der durch das Bloom-Filter dargestellten Menge an. Falls jedoch die Bits, auf denen das Element abgebildet wird, alle ‚1‘ sind, könnte das Element der durch das Bloom-Filter dargestellten Menge angehören.
  • Während ein Bloom-Filter verwendet werden kann, um definitiv festzustellen, dass ein bestimmtes Element nicht der Menge angehört, kann es falsch positive Ergebnisse liefern, die fälschlicherweise anzeigen, dass ein bestimmtes Element der Menge angehört, obwohl dies tatsächlich nicht der Fall ist. Der Grund hierfür liegt darin, dass die Bits, auf denen das Element abgebildet wird, durch Einfügen weiterer Elemente in die Menge, die ebenfalls auf diesen Bits abgebildet werden, auf ‚1‘ gesetzt worden sein könnten. Mit anderen Worten, das Bloom-Filter kann für ein gegebenes Element zwei Ergebnisse liefern, nämlich: (1) dass das Element nicht der durch das Bloom-Filter dargestellten Menge angehört, oder (2) dass das Element der durch das Bloom-Filter dargestellten Menge angehören könnte. Die Wahrscheinlichkeit, dass ein Bloom-Filter ein falsch positives Ergebnis liefert, wird durch die Anzahl der Bits in dem von dem Bloom-Filter verwendeten Bitvektor und die Anzahl der verschiedenen von dem Filter verwendeten Hashalgorithmen bestimmt. Diese Parameter können daher beim Implementieren eines Bloom-Filters herangezogen werden, um eine gewünschte Wahrscheinlichkeit zu gewährleisten, mit der falsch positive Ergebnisse von dem Bloom-Filter erhalten werden.
  • Aufgrund der Art und Weise, in der ein Bloom-Filter die Zugehörigkeit zu der Gruppe darstellt, ist es nicht möglich, Elemente aus der durch das Bloom-Filter dargestellten Menge zu löschen. Es sind jedoch Varianten des Bloom-Filters bekannt, die ein Löschen von Elementen aus der dargestellten Menge ermöglichen. Insbesondere handelt es sich bei einem Counting-Filter (oder Zählfilter) um einen Typ des Bloom-Filters, der jedes Bit in dem Vektor zu einem n-Bit-Zähler erweitert, mit dem aufgezeichnet werden kann, wie oft jedes Bit durch ein eingefügtes Element zur Abbildung verwendet wurde. Dies ermöglicht ein Löschen von Elementen aus der durch das Counting-Filter dargestellten Menge durch Ermitteln der Positionen auf dem Vektor, auf denen das zu löschende Element durch die Hashalgorithmen abgebildet wird, und Herabsetzen der n-Bit-Zähler an diesen Positionen.
  • Beim Hamming-Abstand handelt es sich um ein Maß für den Unterschied zwischen zwei Zeichenfolgen gleicher Länge. Der Hamming-Abstand misst die Mindestanzahl an Ersetzungen, die erforderlich sind, um eine Zeichenfolge in die andere umzuwandeln (d.h. die Anzahl an Stellen, an denen sich zwei Zeichenfolgen voneinander unterscheiden). Der Hamming-Abstand zwischen den 4-Bit-Zeichenfolgen 1001 und 1010 beträgt beispielsweise 2, da sich die letzten beiden Bits voneinander unterscheiden, während die ersten beiden Bits gleich sind.
  • Die Erfinder haben entdeckt, dass Bloom-Filter in einer aufgeteilten Datenbank zusammen mit Hamming-Abständen verwendet werden können, um die Verteilung von Datensätzen in der aufgeteilten Datenbank zu verbessern. Insbesondere können dadurch, dass der Auswahl eines Datenbankteils, in welchem der Datensatz gespeichert werden soll, der Hamming-Abstand zwischen dem jedem Datenbankteil zugehörigen Bloom-Filter und der zur Verwendung mit diesem Filter vorgesehenen Darstellung des Aufteilungsschlüssels zugrunde gelegt wird, die vorgeschlagenen Ausführungsformen die Datensätze gleichmäßiger auf die Datenbankteile der aufgeteilten Datenbank verteilen. Dies kann die Leistung der aufgeteilten Datenbank verbessern.
  • Des Weiteren kann das Verteilen (oder Zuweisen) von Datensätzen auf die Datenbankteile auf Grundlage solcher Hamming-Abstände zudem ein verbessertes Abrufen von Datensätzen aus den Datenbankteilen ermöglichen. Beispielsweise können sich durch die Verwendung der Hamming-Abstände zum Zuweisen von Datensätzen zu den Datenbankteilen ähnliche Daten mit größerer Wahrscheinlichkeit am selben Ort befinden. Die Bloom-Filter können dann einen sehr schnellen Weg zum Eliminieren von Datenbankteilen bereitstellen, die einen bestimmten Datensatz nicht speichern.
  • Jedes der jeweils den Datenbankteilen zugehörige Bloom-Filter kann wahlweise dieselbe Anzahl an Bits und dieselben Hashfunktionen verwenden. Indem die Bloom-Filter hinsichtlich der Anzahl an Bits und der Hashfunktionen, die diese verwenden, gleich erstellt werden, ist es möglich, dass nur eine einzige Darstellung des Aufteilungsschlüssels erzeugt werden muss. Diese Darstellung kann sich zur Verwendung mit jedem der Bloom-Filter eignen.
  • Bei jedem der jeweiligen Bloom-Filter kann es sich wahlweise um ein Zählfilter handeln. Die Verwendung von Zählfiltern kann ein Löschen von Datensätzen und ein Darstellen ihres Löschens durch die Zählfilter ermöglichen, wodurch verhindert wird, dass aufgrund einer Übereinstimmung des Filters mit der Darstellung des Aufteilungsschlüssels für einen gelöschten Datensatz ein falsch positives Ergebnis geliefert wird.
  • Bei dem Datenbankteil, der ausgewählt wird, kann es sich um einen Datenbankteil handeln, der einem jeweiligen Bloom-Filter zugehörig ist, für das der berechnete Hamming-Abstand unter den berechneten Hamming-Abständen einen Minimalwert aufweist. Es wird davon ausgegangen, dass durch Speichern von Datensätzen in einem Datenbankteil, dessen Bloom-Filter einen minimalen Hamming-Abstand von der Darstellung des mit dem Bloom-Filter verwendeten Datensatzes aufweist, jedes der Bloom-Filter in deutlicherer Abgrenzung zueinander gehalten werden kann. Daraus kann sich ergeben, dass im Mittel weniger Bloom-Filter für einen bestimmten Datensatz eine Übereinstimmung anzeigen, was zu einer verringerten Anzahl an Datenbankteilen führt, die durchsucht werden müssen, um den Datensatz abzurufen. Diese Methode kann auch dazu dienen, die Zuweisung von Datensätzen zu jedem der Datenbankteile im Gleichgewicht zu halten, wodurch verhindert wird, dass diese zu stark voneinander abweichen.
  • Vorgeschlagene Ansätze zum Verteilen der Datensätze auf die Datenbankteile können zudem eine Menge an falsch positiven Ergebnissen für die jedem Datenbankteil zugehörigen Bloom-Filter verringern. Der Grund hierfür liegt darin, dass die Datensätze, die einander hinsichtlich ihrer zur Verwendung mit den Bloom-Filtern vorgesehenen Darstellungen am ähnlichsten sind, mit größerer Wahrscheinlichkeit auf denselben Datenbankteilen gespeichert sein können und somit mit größerer Wahrscheinlichkeit durch dasselbe Bloom-Filter in der aufgeteilten Datenbank dargestellt sein können. Eine Verringerung der Menge falsch positiver Ergebnisse kann im Mittel die Anzahl an Datenbankteilen verringern, die durchsucht werden müssen, um einen bestimmten Datensatz abzurufen.
  • Die Auswahl des Datenbankteils, der einem jeweiligen Bloom-Filter zugehörig ist, dessen berechneter Hamming-Abstand unter den berechneten Hamming-Abständen einen Minimalwert aufweist, kann zufälliges Auswählen des Datenbankteils unter den Datenbankteilen umfassen, die jeweiligen Bloom-Filtern zugehörig sind, deren berechneter Hamming-Abstand einen Minimalwert aufweist. Dies kann einen wirksamen Weg zum Auswählen eines Datenbankteils bereitstellen, wenn mehrere Bloom-Filter denselben minimalen Hamming-Abstand zu ihren jeweiligen Darstellungen des Aufteilungsschlüssels aufweisen.
  • Die aufgeteilte Datenbank kann wahlweise ferner eine Anzeige dahingehend umfassen, ob jeder Datenbankteil zum Speichern neuer Datensätze zur Verfügung steht oder nicht. In diesem Fall umfassen gegebenenfalls die mehreren Bloom-Filter, für die jeweilige Darstellungen des Aufteilungsfilters erzeugt werden, keine Bloom-Filter, die Datenbankteilen zugehörig sind, die als nicht verfügbar angezeigt werden. Dies bedeutet, dass Datenbankteile, die zu voll oder überladen werden, für das Speichern weiterer Datensätze nicht mehr in Betracht gezogen werden, was dabei hilft, die Leistung jedes Datenbankteils oberhalb eines Mindestniveaus zu halten.
  • Ausführungsformen können wahlweise Darstellungen des Aufteilungsschlüssels zur Verwendung mit den jeweiligen Bloom-Filtern erzeugen, die allen als verfügbar angezeigten Datenbankteilen zugehörig sind. Auf diese Weise können die vorgeschlagenen Ausführungsformen eine bessere Verteilung von Datensätzen auf die verfügbaren Datenbankteile sicherstellen.
  • Die aufgeteilte Datenbank kann wahlweise einen jeweiligen Einfügungszähler zum Zählen einer jeweiligen Anzahl in jeden der Datenbankteile eingefügter Datensätze aufweisen. Vorgeschlagene Ausführungsformen können den Einfügungszähler für den zum Speichern des Datensatzes ausgewählten Datenbankteil heraufsetzen. Dieser Einfügungszähler kann daher eine Zählung der Anzahl in jeden der Datenbankteile eingefügter Datensätze bereitstellen.
  • Vorgeschlagene Ausführungsformen können wahlweise ferner Ermitteln umfassen, ob die Anzahl in den ausgewählten Datenbankteil eingefügter Datensätze einen vorab bestimmten Grenzwert überschreitet, und, falls dies der Fall ist, den ausgewählten Datenbankteil als nicht zum Speichern neuer Datensätze verfügbar kennzeichnen. Auf diese Weise können Ausführungsformen verhindern, dass die Datenbankteile in einer Weise, welche die Leistung der aufgeteilten Datenbank verschlechtern könnte, übermäßig genutzt werden.
  • Ausführungsformen können wahlweise ferner Hinzufügen eines neuen Datenbankteils und eines zugehörigen Bloom-Filters zu der aufgeteilten Datenbank umfassen. Vorgeschlagene Konzepte zum Speichern der Datensätze in der aufgeteilten Datenbank können somit die Flexibilität bereitstellen, neue Datenbankteile in die aufgeteilte Datenbank einzufügen. Durch dynamisches Einfügen neuer Datenbankteile in die aufgeteilte Datenbank können die Kapazität und die Leistung der aufgeteilten Datenbank einem steigenden Bedarf angepasst werden. Zudem kann die Verwendung des Hamming-Abstands zum Auswählen von Datenbankteilen, auf welchen eingefügte Datensätze gespeichert werden sollen, ermöglichen, dass die über die Datenbankteile hinweg erfolgende Zuteilung von Datensätzen automatisch dahingehend neu ausgeglichen wird, dass der neu eingefügte Datenbankteil mit einbezogen wird.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein computerimplementiertes Verfahren zum Abrufen eines Datensatzes aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank bereitgestellt. Die aufgeteilte Datenbank weist mehrere Datenbankteile auf. Die Datenbankteile sind jeweils so konfiguriert, dass sie eine Teilmenge von Datensätzen der aufgeteilten Tabelle speichern. Die Datenbankteile sind zudem jeweils einem jeweiligen Bloom-Filter zugehörig. Das Bloom-Filter ist so konfiguriert, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in dem Datenbankteil gespeichert worden sein könnte, dem es zugehörig ist. Das Verfahren umfasst Beziehen eines Aufteilungsschlüssels für den abzurufenden Datensatz. Der Aufteilungsschlüssel beruht auf einem oder mehreren Feldern des Datensatzes. Das Verfahren umfasst ferner Erzeugen einer jeweiligen Darstellung des Aufteilungsschlüssels zur Verwendung mit jedem der den mehreren Datenbankteilen zugehörigen Bloom-Filter. Die Darstellung für ein bestimmtes Bloom-Filter wird durch Anwenden einer oder mehrerer von dem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel erzeugt. Das Verfahren umfasst ferner Identifizieren, welche der jeweiligen Bloom-Filter mit ihrer jeweiligen Darstellung des Aufteilungsschlüssels übereinstimmen. Das Verfahren umfasst ferner Durchsuchen der diesen identifizierten Bloom-Filtern zugehörigen Datenbankteile, um den Datensatz aufzufinden und bereitzustellen.
  • Durch die Verwendung jedem der Datenbankteile zugehöriger Bloom-Filter ist es wahrscheinlich, dass sehr schnell und effizient eine große Anzahl an Datenbankteilen von der Betrachtung ausgeschlossen werden kann, bevor eine vertiefte Durchsuchung der verbleibenden Datenbankteile durchgeführt werden muss. Dies kann die Effizienz des Abrufens von Datensätzen aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank verbessern.
  • Jedes der jeweils den Datenbankteilen zugehörigen Bloom-Filter kann wahlweise dieselbe Anzahl an Bits und dieselben Hashfunktionen verwenden. Indem die Bloom-Filter hinsichtlich der Anzahl an Bits und der Hashfunktionen, die diese verwenden, gleich erstellt werden, ist es möglich, dass nur eine einzige Darstellung des Aufteilungsschlüssels erzeugt werden muss. Eine solche Darstellung kann sich dann zur Verwendung mit jedem der Bloom-Filter eignen.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein System zum Speichern einer aufgeteilten Datenbank bereitgestellt. Die aufgeteilte Datenbank weist mehrere Datenbankteile auf. Die Datenbankteile sind jeweils so konfiguriert, dass sie eine Teilmenge von Datensätzen der aufgeteilten Tabelle speichern. Die Datenbankteile sind zudem jeweils einem jeweiligen Bloom-Filter zugehörig. Das Bloom-Filter ist so konfiguriert, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in dem Datenbankteil gespeichert worden sein könnte, dem es zugehörig ist. Das System weist mehrere Datenverarbeitungssysteme auf. Jedes Datenverarbeitungssystem ist so konfiguriert, dass es einen oder mehrere der mehreren Datenbankteile speichert. Das System weist ferner eine Steuereinrichtung auf, die so konfiguriert ist, dass sie einen Datensatz aus einer aufgeteilten Tabelle der aufgeteilten Datenbank gemäß dem vorstehend beschriebenen Verfahren zum Abrufen eines Datensatzes aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank abruft.
  • Die Steuereinrichtung kann wahlweise so konfiguriert sein, dass sie einen Datensatz in einer aufgeteilten Tabelle der aufgeteilten Datenbank gemäß dem vorstehend beschriebenen Verfahren zum Speichern eines Datensatzes in einer aufgeteilten Tabelle einer aufgeteilten Datenbank speichert.
  • Die aufgeteilte Datenbank kann wahlweise ferner einen jeweiligen Löschungszähler aufweisen. Die Löschungszähler können eine Zählung der Anzahl an Datensätzen unterhalten, die aus ihren jeweiligen Datenbankteilen gelöscht wurden. Die Steuereinrichtung kann wahlweise ferner so konfiguriert sein, dass sie ermittelt, ob die Anzahl an Datensätzen, die aus einem bestimmten Datenbankteil gelöscht wurden, einen jeweiligen vorab bestimmten Grenzwert für diesen Datenbankteil überschreitet. Falls die Anzahl gelöschter Datensätze den jeweiligen vorab bestimmten Grenzwert überschreitet, kann die Steuereinrichtung das Bloom-Filter für diesen Datenbankteil auf Grundlage der aktuell in diesem Datenbankteil gespeicherten Datensätze neu erstellen. Durch Neuerstellen des Bloom-Filters für einen Datenbankteil, sobald die Anzahl an Löschvorgängen einen vorab bestimmten Grenzwert überschreitet, kann die Steuereinrichtung die Anzahl falsch positiver Ergebnisse verringern, die mit hoher Wahrscheinlichkeit durch die Anzeige einer Übereinstimmung auf Grundlage eines gelöschten Datensatzes durch das Bloom-Filter verursacht werden.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Computerprogrammprodukt zum Speichern eines Datensatzes in einer aufgeteilten Tabelle einer aufgeteilten Datenbank bereitgestellt. Das Computerprogrammprodukt weist ein computerlesbares Speichermedium auf. Das computerlesbare Speichermedium weist auf diesem gespeicherte, durch einen Prozessor ausführbare Programmanweisungen auf. Die Programmanweisungen sind durch einen Prozessor ausführbar, um den Prozessor zu veranlassen, die Schritte des vorstehend genannten Verfahrens zum Speichern eines Datensatzes in einer aufgeteilten Tabelle einer aufgeteilten Datenbank durchzuführen.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Computerprogrammprodukt zum Abrufen eines Datensatzes aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank bereitgestellt. Das Computerprogrammprodukt weist ein computerlesbares Speichermedium auf. Das computerlesbare Speichermedium weist auf diesem gespeicherte, durch einen Prozessor ausführbare Programmanweisungen auf. Die Programmanweisungen sind durch einen Prozessor ausführbar, um den Prozessor zu veranlassen, die Schritte des vorstehend genannten Verfahrens zum Abrufen eines Datensatzes aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank durchzuführen.
  • Gemäß einem weiteren Aspekt wird ein System zum Speichern eines Datensatzes in einer aufgeteilten Tabelle einer aufgeteilten Datenbank bereitgestellt, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge von Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in diesem Datenbankteil gespeichert worden sein könnte, wobei das System so konfigurierbar ist, dass es: für den zu speichernden Datensatz einen Aufteilungsschlüssel bezieht, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht; für jedes von mehreren der jeweiligen Bloom-Filter eine jeweilige Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel erzeugt; Hamming-Abstände zwischen aktuellen Werten jedes der mehreren Bloom-Filter und der jeweiligen Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter berechnet; auf Grundlage der berechneten Hamming-Abstände einen Datenbankteil auswählt; und den Datensatz in dem ausgewählten Datenbankteil speichert.
  • Gemäß einem weiteren Aspekt wird ein System zum Abrufen eines Datensatzes aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank bereitgestellt, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge von Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in diesem Datenbankteil gespeichert worden sein könnte, wobei das System so konfigurierbar ist, dass es: für den abzurufenden Datensatz einen Aufteilungsschlüssel bezieht, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht; für jedes der jeweiligen Bloom-Filter, die jedem der Datenbankteile zugehörig sind, eine jeweilige Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel erzeugt; identifiziert, welche der jeweiligen Bloom-Filter mit ihrer jeweiligen Darstellung des Aufteilungsschlüssels übereinstimmen; die den identifizierten Bloom-Filtern zugehörigen Datenbankteile durchsucht, um den Datensatz zu finden; und den Datensatz bereitstellt.
  • Figurenliste
  • Ausführungsformen der Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, wobei:
    • 1 schematisch ein beispielhaftes Computersystem veranschaulicht, auf dem Ausführungsformen der Erfindung laufen können;
    • 2 schematisch eine beispielhafte aufgeteilte Datenbank gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 3 ein Schaubild ist, das schematisch ein computerimplementiertes Verfahren zum Speichern eines Datensatzes in einer aufgeteilten Tabelle der aufgeteilten Datenbank gemäß Ausführungsformen der Erfindung veranschaulicht; und
    • 4 ein Schaubild ist, das schematisch ein computerimplementiertes Verfahren zum Abrufen eines Datensatzes aus der aufgeteilten Tabelle der aufgeteilten Datenbank gemäß Ausführungsformen der Erfindung veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der nachfolgenden Beschreibung und den Figuren werden bestimmte Ausführungsformen der Erfindung beschrieben. Es versteht sich jedoch, dass die Erfindung nicht auf die beschriebenen Ausführungsformen beschränkt ist und dass einige Ausführungsformen möglicherweise nicht alle der nachstehend beschriebenen Merkmale beinhalten. Es ist jedoch offensichtlich, dass vorliegend verschiedene Modifikationen und Änderungen vorgenommen werden können, ohne vom allgemeinen Grundgedanken und Umfang der Erfindung wie in den beiliegenden Ansprüchen angegeben abzuweichen. Zudem ist zu beachten, dass in Ausführungsformen der vorliegenden Erfindungen, die ein Verfahren darstellen, es sich im Rahmen der vorliegenden Erfindung bei einem solchen Verfahren um einen Prozess zur Ausführung durch einen Computer (d.h. ein durch einen Computer implementierbares Verfahren) handelt. Die verschiedenen Schritte des Verfahrens spiegeln somit verschiedene Teile eines Computerprogramms (z.B. verschiedene Teile eines oder mehrerer Algorithmen) wider.
  • 1 der beiliegenden Zeichnungen veranschaulicht schematisch ein beispielhaftes Computersystem 100, auf dem Ausführungsformen der vorliegenden Erfindung laufen können. Das beispielhafte Computersystem 100 weist ein computerlesbares Speichermedium 102, einen Arbeitsspeicher 104, einen Prozessor 106 und eine oder mehrere Schnittstellen 108 auf, die alle über einen oder mehrere Kommunikationsbusse 110 miteinander verbunden sind. Das beispielhafte Computersystem 100 kann die Form eines herkömmlichen Computersystems besitzen, beispielsweise ein Desktop-Computer, ein Personal Computer, ein Laptop, ein Tablet, ein Smartphone, eine Smartwatch, ein Virtual-Reality-Headset, ein Server, ein Großrechner usw.
  • Das computerlesbare Speichermedium 102 und/oder der Arbeitsspeicher 104 können ein oder mehrere Computerprogramme (oder Software oder Code) und/oder Daten speichern. Zu den in dem computerlesbaren Speichermedium 102 gespeicherten Computerprogrammen kann ein Betriebssystem zählen, das durch den Prozessor 106 ausgeführt werden kann, damit das Computersystem 100 funktioniert. Zu den in dem computerlesbaren Speichermedium 102 und/oder dem Arbeitsspeicher 104 gespeicherten Computerprogrammen können Computerprogramme gemäß Ausführungsformen der Erfindung oder solche Computerprogramme zählen, die bei Ausführung durch den Prozessor 106 den Prozessor 106 veranlassen, ein Verfahren gemäß einer Ausführungsform der Erfindung durchzuführen.
  • Bei dem Prozessor 106 kann es sich um eine beliebige Datenverarbeitungseinheit handeln, die sich zum Ausführen einer oder mehrerer computerlesbarer Programmanweisungen eignet, etwa solcher, die zu in dem computerlesbaren Speichermedium 102 und/oder dem Arbeitsspeicher 104 gespeicherten Computerprogrammen gehören. Im Rahmen der Ausführung einer oder mehrerer computerlesbarer Programmanweisungen kann der Prozessor 106 Daten in dem computerlesbaren Speichermedium 102 und/oder dem Arbeitsspeicher 104 speichern und/oder Daten aus diesen lesen. Der Prozessor 106 kann eine einzige Datenverarbeitungseinheit oder mehrere Datenverarbeitungseinheiten aufweisen, die parallel oder gemeinsam miteinander arbeiten. Im Rahmen der Ausführung einer oder mehrerer computerlesbarer Programmanweisungen kann der Prozessor 106 Daten in dem computerlesbaren Speichermedium 102 und/oder dem Arbeitsspeicher 104 speichern und/oder Daten aus diesen lesen.
  • Die eine oder die mehreren Schnittstellen 108 können eine Netzwerkschnittstelle aufweisen, die dem Computersystem 100 Datenaustausch mit anderen Computersystemen in einem Netzwerk ermöglicht. Bei dem Netzwerk kann es sich um eine beliebige Art von Netzwerk handeln, die sich zum Übertragen oder Austauschen von Daten von einem Computersystem zu einem anderen eignet. Beispielsweise könnte das Netzwerk eines oder mehrere eines lokalen Netzwerks, eines Weitverkehrsnetzes, eines stadtweiten Netzwerks, des Internets, eines drahtlosen Kommunikationsnetzes usw. aufweisen. Das Computersystem 100 kann mit anderen Computersystemen über das Netzwerk über einen geeigneten Datenaustauschmechanismus bzw. ein entsprechendes Protokoll Daten austauschen. Der Prozessor 106 kann mit der Netzwerkschnittstelle über den einen oder die mehreren Kommunikationsbusse 110 Daten austauschen, um die Netzwerkschnittstelle zu veranlassen, Daten und/oder Befehle über das Netzwerk an ein anderes Computersystem zu senden. Ebenso ermöglichen es der eine oder die mehreren Kommunikationsbusse 110 dem Prozessor 106, mit durch das Computersystem 100 über die Netzwerkschnittstelle von anderen Computersystemen über das Netzwerk empfangenen Daten und/oder Befehlen zu arbeiten.
  • Die Schnittstelle 108 kann alternativ oder zusätzlich eine Nutzereingabeschnittstelle und/oder eine Nutzerausgabeschnittstelle aufweisen. Die Nutzereingabeschnittstelle kann so eingerichtet sein, dass sie Eingaben von einem Nutzer oder Bediener des Systems 100 empfängt. Der Nutzer kann diese Eingaben über eine oder mehrere Nutzereingabeeinheiten (nicht gezeigt) bereitstellen, beispielsweise eine Maus oder eine andere Zeigeeinheit, einen Track-Ball oder eine Tastatur. Die Nutzerausgabeschnittstelle kann so eingerichtet sein, dass sie einem Nutzer oder Bediener des Systems 100 auf einer Anzeige, einem Monitor oder einem Bildschirm (nicht gezeigt) eine grafische/optische Ausgabe bereitstellt. Der Prozessor 106 kann die Nutzerausgabeschnittstelle anweisen, ein Bild-/Videosignal zu bilden, welches bewirkt, dass die Anzeige eine gewünschte grafische Ausgabe zeigt. Die Anzeige kann berührungsempfindlich sein, sodass der Nutzer durch Berühren oder Drücken der Anzeige eine Eingabe bereitstellen kann.
  • Es versteht sich, dass die Architektur des in 1 veranschaulichten und vorstehend beschriebenen Computersystems 100 lediglich beispielhaft ist und dass stattdessen Systeme mit anderen Architekturen verwendet werden können, die alternative Komponenten verwenden oder mehr oder weniger Komponenten verwenden.
  • 2 der beiliegenden Zeichnungen veranschaulicht schematisch eine beispielhafte aufgeteilte Datenbank 200 gemäß Ausführungsformen der Erfindung. Die aufgeteilte Datenbank 200 weist mehrere Datenbankteile 210 auf. Beispielsweise weist die in 2 veranschaulichte aufgeteilte Datenbank 200 einen ersten Datenbankteil 210(1) und einen zweiten Datenbankteil 210(2) auf. Es versteht sich jedoch, dass auch weitere Datenbankteile 210 verwendet werden können. Jeder der Datenbankteile 210 weist eine gemeinsame Menge aus einer oder mehreren Tabellen 220 auf, die dem Schema der aufgeteilten Datenbank 200 angehören. Es versteht sich, dass einzelne Datenbankteile, sofern erforderlich, auch weitere Tabellen enthalten können (z.B. als Teil einer separaten vertikalen Partitionierung der Datenbank).
  • Die gemeinsame Menge aus einer oder mehreren Tabellen 220 beinhaltet eine aufgeteilte Tabelle 220(1). Während das Schema für die aufgeteilte Tabelle 220(1) in den mehreren Datenbankteilen 210 gleich ist, unterscheidet sich die Menge aus in den Kopien der aufgeteilten Tabelle 220(1) auf jedem der Datenbankteile 210 gespeicherten Datensätzen 230. Insbesondere speichert jeder der Datenbankteile 210 eine Teilmenge der aufgeteilten Tabelle 220(1) angehörender Datensätze. Beispielsweise besitzt die in 2 veranschaulichte aufgeteilte Datenbank 200 eine erste Teilmenge von Datensätzen 230(1), die der auf dem ersten Datenbankteil 210(1) gespeicherten aufgeteilten Tabelle 220(1) angehören, und eine zweite Teilmenge von Datensätzen 230(2), die auf dem zweiten Datenbankteil 210(2) gespeichert ist. Es versteht sich jedoch, dass, falls in der aufgeteilten Datenbank 200 mehr Datenbankteile 210 verwendet werden, die Menge aus Datensätzen 230 für die aufgeteilte Tabelle 220 in mehr Teilmengen unterteilt und entsprechend auf die Datenbankteile 210 verteilt werden kann.
  • Bei einigen der der gemeinsamen Menge aus Tabellen 220 angehörenden Tabellen 220(2) und 220(3) kann es sich um replizierte Tabellen handeln. Dies bedeutet, dass die Kopien der replizierten Tabellen 220(2) und 220(3) auf jedem der Datenbankteile 210 identisch sind und die gleiche Menge aus Datensätzen enthalten. Es versteht sich jedoch, dass die gemeinsame Menge aus Tabellen 220 nicht notwendigerweise replizierte Tabellen beinhalten muss.
  • Die aufgeteilte Datenbank 200 weist ferner ein oder mehrere Bloom-Filter 240 auf, eines für jeden der mehreren Datenbankteile 210. Jedes der Bloom-Filter 240 ist so konfiguriert, dass es eine Anzeige dahingehend bereitstellt, ob ein bestimmter Datensatz der aufgeteilten Tabelle 220(1) in dem Datenbankteil 210 gespeichert wurde, dem es zugehörig ist. Hierfür unterhalten die Bloom-Filter 240 einen Bitvektor fester Größe, der die Teilmenge 230(1) oder 230(2) aus Datensätzen darstellt, die in ihre jeweiligen Datenbankteile 210 eingefügt wurden. Beispielsweise besitzt die in 2 veranschaulichte aufgeteilte Datenbank 200 ein dem ersten Datenbankteil 210(1) zugehöriges erstes Bloom-Filter 240(1) und ein dem zweiten Datenbankteil 210(2) zugehöriges zweites Bloom-Filter 240(2), wobei die Bitvektoren jedes der Bloom-Filter 240 einige Bits enthalten, die aufgrund von Datensätzen, die bereits in ihren jeweiligen Datenbankteilen 210 gespeichert wurden, auf ‚1‘ gesetzt wurden (in der in 2 veranschaulichten Tabellendarstellung der Bitvektoren durch Schwarzfärbung dargestellt). Es versteht sich, dass, wenn die aufgeteilte Datenbank 200 weitere Datenbankteile 210 aufweist, jeder weitere Datenbankteil 210 einem eigenen Bloom-Filter 240 zugehörig ist, das die in diesem Datenbankteil 210 gespeicherte Teilmenge aus Datensätzen darstellt. Die Darstellung der Teilmenge 230(1) und 230(2) aus Datensätzen, die von jedem der Bloom-Filter unterhalten wird, beruht auf einem Aufteilungsschlüssel 260 jedes Datensatzes, wie nachstehend näher behandelt wird.
  • Die in 2 veranschaulichte aufgeteilte Datenbank 200 wird nun unter Bezugnahme auf 3 näher behandelt, bei der es sich um ein Schaubild handelt, das schematisch ein computerimplementiertes Verfahren 300 zum Speichern eines Datensatzes 250 in der aufgeteilten Tabelle 220(1) der aufgeteilten Datenbank 200 gemäß Ausführungsformen der Erfindung veranschaulicht.
  • In einem Schritt 310 bezieht das Verfahren 300 einen Aufteilungsschlüssel 260 für den zu speichernden Datensatz 250. Der Aufteilungsschlüssel 260 beruht auf einem oder mehreren Feldern der Datensätze, die in die aufgeteilte Tabelle 220(1) eingefügt werden. In seiner einfachsten Form kann der Aufteilungsschlüssel 260 aus einem einzigen Feld, beispielsweise einem „id“-Feld, abgeleitet werden. Es können jedoch stattdessen auch andere, komplexere, zusammengesetzte Aufteilungsschlüssel 260 verwendet werden, darunter beispielsweise ein zusammengesetzter Schlüssel, der aus einigen oder allen Feldern jedes Datensatzes abgeleitet wird. Der Aufteilungsschlüssel 260 kann zusammen mit dem zu speichernden Datensatz bereitgestellt werden oder aus einem oder mehreren Feldern des zu speichernden Datensatzes erzeugt werden. Der Aufteilungsschlüssel 260 kann dazu dienen, jeden Datensatz der aufgeteilten Tabelle 220(1) aus der der aufgeteilten Tabelle 220(1) angehörenden Menge aus Datensätzen 230 eindeutig zu identifizieren. Dies muss jedoch nicht zwingend der Fall sein. Stattdessen kann der Aufteilungsschlüssel derart gebildet werden, dass mehrere unterschiedliche Datensätze demselben Aufteilungsschlüssel zugeordnet werden können.
  • In einem Schritt 320 erzeugt das Verfahren 300 eine oder mehrere Darstellungen 270 des Aufteilungsschlüssels 260 zur Verwendung mit den den Datenbankteilen 210 zugehörigen Bloom-Filtern 240. Diese Darstellung 270 des Aufteilungsschlüssels 260 wird durch Anwenden der von jedem der Bloom-Filter 240 verwendeten Hashfunktionen auf den Aufteilungsschlüssel 260 erzeugt, was in der Erzeugung einer Bitvektordarstellung 270 des Aufteilungsschlüssels 260 resultiert, welche dieselbe Länge wie die Bitvektordarstellung der Teilmenge aus Datensätzen 230(1) und 230(2) aufweist, die von jedem der Bloom-Filter 240 gehalten wird. Die für jeden Datenbankteil 210 verwendeten Bloom-Filter 240 können hinsichtlich der Länge des Bitvektors und der von ihnen verwendeten Hashfunktionen einander gleichen (auch wenn sich die Werte jedes Bloom-Filters 240 natürlich abhängig von den in jeden zugehörigen Datenbankteil 210 eingefügten Datensätzen unterscheiden). In diesem Fall muss nur eine einzige Darstellung 270 des Aufteilungsschlüssels 260 erzeugt werden, da die Darstellung 270 für alle Bloom-Filter 240 gleich ist. Es versteht sich jedoch, dass sich einige (oder alle) der Bloom-Filter 240 im Aufbau unterscheiden können und entweder einen unterschiedlich langen Bitvektor aufweisen oder unterschiedliche (oder eine unterschiedliche Anzahl an) Hashalgorithmen verwenden können. In diesem Fall muss für jeden anderen Aufbau des Bloom-Filters 240 eine Darstellung 270 des Aufteilungsschlüssels 260 erzeugt werden. In der in 2 veranschaulichten beispielhaften aufgeteilten Datenbank 200 kann beispielsweise eine einzige Darstellung 270 des Aufteilungsschlüssels 260 für den zu speichernden Datensatz 250 zur Verwendung mit beiden Bloom-Filtern 240 erzeugt werden, da diese gleich sind. In diesem Beispiel wird durch das Anwenden der Hashalgorithmen für die Bloom-Filter 240 auf den Aufteilungsschlüssel 260 des einzufügenden Datensatzes 250 eine Bitvektordarstellung ‚100100000‘ erzeugt. Es versteht sich jedoch, dass sich bei anderen Datensätzen die Erzeugung anderer Bitvektordarstellungen ergibt.
  • In einem Schritt 330 berechnet das Verfahren 300 den Hamming-Abstand zwischen der für jedes der Bloom-Filter 240 erzeugten Bitvektordarstellung 270 des Aufteilungsschlüssels 260 und dem Wert des Bloom-Filters 240 (welcher die Teilmenge 230(1) und 230(2) aus bereits auf jedem der Datenbankteile 210 gespeicherten Datensätzen darstellt). Unter erneuter Bezugnahme auf die in 2 veranschaulichte beispielhafte aufgeteilte Datenbank 200 lautet die vom ersten Bloom-Filter 240(1) gehaltene Bitvektordarstellung der im ersten Datenbankteil 210(1) gespeicherten ersten Teilmenge aus Elementen 230(1) ‚101000100‘, während die vom zweiten Bloom-Filter 240(2) gehaltene Bitvektordarstellung der im zweiten Datenbankteil 210(2) gespeicherten zweiten Teilmenge aus Elementen 230(2) ‚000001010‘ lautet. In diesem Beispiel beträgt somit der Hamming-Abstand zwischen der Darstellung 270 des Aufteilungsschlüssels 260 für den zu speichernden Datensatz 250 und dem ersten Bloom-Filter 240(1) ‚3‘ (da sie sich an 3 verschiedenen Stellen unterscheiden), während der Hamming-Abstand zum zweiten Bloom-Filter 240(2) ‚4‘ beträgt (da sie sich an 4 Stellen unterscheiden).
  • In einem Schritt 340 wählt das Verfahren 300 auf Grundlage der Hamming-Abstände einen Datenbankteil 210 aus. Das heißt, die Auswahl eines Datenbankteils 210 erfolgt abhängig von den Hamming-Abständen. Beispielhaft handelt es sich bei dem ausgewählten Datenbankteil 210 um einen Datenbankteil 210, der einem Bloom-Filter 240 zugehörig ist, das einen minimalen Hamming-Abstand von der Darstellung 270 des Aufteilungsschlüssels 260 für den zu speichernden Datensatz 250 aufweist. Es versteht sich, dass in einigen Fällen nur ein einziger Datenbankteil 210 einem Bloom-Filter zugehörig ist, das einen minimalen Hamming-Abstand aufweist. In solchen Fällen kann die Auswahl des Datenbankteils 210 automatisch erfolgen (d.h. der besagte einzige Datenbankteil 210, der einem Bloom-Filter zugehörig ist, das den minimalen Hamming-Abstand aufweist). In anderen Fällen jedoch kann der minimale Hamming-Abstand von mehreren Bloom-Filtern 240 bereitgestellt werden. Beispielsweise könnten mehrere Bloom-Filter denselben Hamming-Abstand besitzen, bei welchem es sich unter den berechneten Hamming-Abständen um einen minimalen Abstand handelt. In solchen Fällen kann der Datenbankteil 210 unter den Datenbankteilen ausgewählt werden, deren Bloom-Filter die Kriterien des minimalen Hamming-Abstands erfüllen. Beispielsweise kann der Datenbankteil 210 nach dem Zufallsprinzip unter den Datenbankteilen ausgewählt werden, die denselben Hamming-Abstand besitzen, bei welchem es sich unter den berechneten Hamming-Abständen um einen minimalen Abstand handelt. Es können jedoch stattdessen auch andere Mittel zum Auswählen des Datenbankteils 210 verwendet werden. Beispielsweise kann unter den Datenbankteilen 210, welche die Kriterien des minimalen Hamming-Abstands erfüllen, der Datenbankteil 210 ausgewählt werden, auf dem die wenigsten Datensätze gespeichert sind. Für einen Fachmann sind ohne Weiteres verschiedene weitere Faktoren oder Verfahren zum Vornehmen der Auswahl auf Grundlage des Hamming-Abstands denkbar. Unter erneuter Bezugnahme auf das in 2 veranschaulichte Beispiel wird als Speicherort für den Datensatz 250 der erste Datenbankteil 210(1) ausgewählt, da von den für das erste bzw. zweite Bloom-Filter 240(1) bzw. 240(2) berechneten Hamming-Abständen ‚3‘ bzw. ‚4‘ der Hamming-Abstand zwischen der Darstellung 270 des Aufteilungsschlüssels 260 und dem ersten Bloom-Filter 240(1) den minimalen Wert ‚3‘ aufweist.
  • In einem Schritt 350 speichert das Verfahren 300 den Datensatz 250 in dem ausgewählten Datenbankteil 210. Wenn der Datensatz 250 in dem Datenbankteil 210 gespeichert ist, wird das dem Datenbankteil 210 zugehörige Bloom-Filter 240 aktualisiert, um wiederzugeben, dass dieser Datensatz 250 nun Teil der durch dieses Bloom-Filter 240 dargestellten Teilmenge aus Elementen ist. In dem in 2 veranschaulichten Beispiel würde daher das erste Bloom-Filter 240(1) aktualisiert, um die Bitvektordarstellung 270 des Aufteilungsschlüssels 260 für den Datensatz 250 so zu ergänzen, dass sich die vom Bloom-Filter 240(1) gehaltene Bitvektordarstellung in ‚101100100‘ ändert. Durch Aktualisieren der Bloom-Filter 240 bei jedem Speichern von Datensätzen in den ihnen zugehörigen Datenbankteilen 210 gibt die von diesen gehaltene Darstellung der Teilmenge von Datensätzen die auf jedem Datenbankteil 210 gespeicherten Datensätze genau wieder.
  • Mit zunehmender Anzahl gespeicherter Datensätze auf den Datenbankteilen 210 der aufgeteilten Datenbank 200 können einige der Datenbankteile 210 ein Niveau erreichen, auf dem es wünschenswert ist, zu verhindern, dass auf diesen Datenbankteilen 210 weitere Datensätze gespeichert werden, um zu verhindern, dass die Leistung dieser Datenbankteile 210 (und damit der aufgeteilten Datenbank 200 insgesamt) unter ein bestimmtes Niveau abfällt. Um dies zu erleichtern, kann die aufgeteilte Datenbank 200 ferner eine Anzeige (oder Kennzeichnung) dahingehend umfassen, ob jeder Datenbankteil zum Speichern neuer Datensätze zur Verfügung steht. Beispielsweise kann die aufgeteilte Datenbank 200 ein jedem Datenbankteil 210 zugehöriges binäres Flag enthalten, um wiederzugeben, ob der Datenbankteil 210 verfügbar ist oder nicht (wobei jedoch stattdessen auch andere Methoden zum Anzeigen der Verfügbarkeit der Datenbankteile 210 zum Speichern neuer Datensätze verwendet werden können). Wenn eine solche Anzeige der Verfügbarkeit jedes Datenbankteils 210 zum Speichern neuer Datensätze vorliegt, kann das Verfahren 300 die Datenbankteile 210 von der Betrachtung ausschließen, die als zum Speichern neuer Datensätze nicht verfügbar angezeigt werden. Das heißt, beim Erzeugen der einen oder der mehreren Darstellungen 270 des Aufteilungsschlüssels 260 in Schritt 320 erzeugt das Verfahren gegebenenfalls keine Darstellungen zur Verwendung mit Bloom-Filtern 240, die als nicht verfügbar angezeigten Datenbankteilen 210 zugehörig sind. Stattdessen erzeugt das Verfahren 300 gegebenenfalls nur Darstellungen 270 zur Verwendung mit jedem der Bloom-Filter 240 (oder einer Teilmenge davon), die als zum Speichern neuer Datensätze verfügbar angezeigt werden. Das Verfahren 300 kann dann dazu übergehen, die Hamming-Abstände mit jedem der Bloom-Filter zu berechnen, für welche die Darstellungen 270 erzeugt wurden, so dass beim Auswählen eines Datenbankteils auf Grundlage des Hamming-Abstands nur die zum Speichern neuer Datensätze verfügbaren Datenbankteile 210 in Betracht gezogen werden.
  • Um zu ermitteln, wann die Anzahl in einem Datenbankteil 210 gespeicherter Datensätze ein Niveau erreicht hat, auf dem dieser als zum Speichern neuer Datensätze nicht verfügbar markiert werden sollte, kann die aufgeteilte Datenbank 200 einen jedem der Datenbankteile 210 zugehörigen Einfügungszähler aufweisen. Durch Heraufsetzen des Einfügungszählers bei jedem Speichern eines Datensatzes auf dem diesem zugehörigen Datenbankteil 210 kann der Einfügungszähler verwendet werden, um zu jedem gegebenen Zeitpunkt die aktuelle Anzahl in jeden der Datenbankteile 210 eingefügter Datensätze zu ermitteln. Es kann ein vorab bestimmter Grenzwert für die Anzahl an Datensätzen eingestellt werden, die jeder der Datenbankteile 210 speichern kann. Dieser vorab eingestellte Grenzwert kann für alle Datenbankteile 210 in der aufgeteilten Datenbank 200 gleich sein oder für jeden Datenbankteil 210 unterschiedlich eingestellt werden, um Unterschiede bezüglich für diesen Datenbankteil 210 verfügbarer Ressourcen zu berücksichtigen. Das Verfahren 300 kann somit ermitteln, ob die Anzahl in jeden der Datenbankteile 210 eingefügter Datensätze den vorab bestimmten Grenzwert für diesen Datenbankteil 210 überschreitet, und, falls dies der Fall ist, den Datenbankteil 210 als zum Speichern neuer Datensätze nicht verfügbar markieren. Diese Ermittlung kann bei jedem Speichern eines Datensatzes durch das Verfahren 300 vorgenommen werden, indem betrachtet wird, ob die Anzahl an Datensätzen, die in dem in Schritt 340 ausgewählten Datenbankteil 210 gespeichert ist, den vorab bestimmten Grenzwert für diesen Datenbankteil 210 überschreitet. Diese Ermittlung kann jedoch auch unabhängig von dem Verfahren 300 zum Speichern neuer Datensätze erfolgen, beispielsweise kann sie periodisch durch ein Datenbankverwaltungssystem erfolgen, das für die Verwaltung der aufgeteilten Datenbank 200 zuständig ist.
  • Um die Kapazität oder die Leistung der aufgeteilten Datenbank 200 zu erhöhen, können der aufgeteilten Datenbank 200 dynamisch weitere Datenbankteile 210 hinzugefügt werden.
  • Dies kann beispielsweise im Rahmen des Verfahrens 300 immer dann erfolgen, wenn ein Datenbankteil 210 als zum Speichern neuer Datensätze nicht verfügbar markiert wird, um eine vorab bestimmte Anzahl zum Speichern neuer Datensätze verfügbarer Datenbankteile 210 aufrechtzuerhalten. Die Einfügung eines neuen Datenbankteils 210 kann jedoch auch unabhängig vom Verfahren 300 erfolgen, beispielsweise durch ein für die Verwaltung der aufgeteilten Datenbank 200 zuständiges Datenbankverwaltungssystem. Ein solches Datenbankverwaltungssystem kann beispielsweise die aufgeteilte Datenbank 200 kontinuierlich überwachen und der aufgeteilten Datenbank 200 bei Bedarf einen neuen Datenbankteil 210 hinzufügen, um ein vorab bestimmtes Leistungsniveau aufrechtzuerhalten.
  • Wenn der aufgeteilten Datenbank 200 ein neuer Datenbankteil 210 hinzugefügt wird, wird zudem ein dem neuen Datenbankteil 210 zugehöriges neues leeres Bloom-Filter 240 hinzugefügt. Bedingt durch die Arbeitsweise der Bloom-Filter 240 in der aufgeteilten Datenbank 200 werden fortan neue Datensätze in solcher Weise in dem neuen Datenbankteil 210 gespeichert, dass eine ausgeglichene Verteilung der gespeicherten Datensätze auf die zum Speichern neuer Datensätze verfügbaren Datenbankteile 210 erfolgt. Der Grund hierfür liegt darin, dass die Bloom-Filter für die Datenbankteile 210, auf denen mehr Datensätze gespeichert sind, mit hoher Wahrscheinlichkeit eine größere Anzahl auf ‚1‘ gesetzter Bits enthalten. Je mehr Datensätze auf den bereits existierenden Datenbankteilen 210 gespeichert sind, desto wahrscheinlicher ist es daher, dass die Darstellung 270 des Aufteilungsschlüssels 260 für neue Datensätze hinsichtlich des Hamming-Abstands näher an dem leeren Bloom-Filter 240 für den neu hinzugefügten Datenbankteil 210 liegt (bei dem anfangs alle Bits seines Bitvektors auf ‚0‘ gesetzt sind) als an den bereits existierenden Bloom-Filtern 240. Dies bedeutet, dass neue Datensätze zunächst mit größerer Wahrscheinlichkeit auf dem neuen Datenbankteil gespeichert werden als auf den bereits existierenden.
  • 4 ein Schaubild ist, das schematisch ein computerimplementiertes Verfahren 400 zum Abrufen eines Datensatzes aus der aufgeteilten Tabelle 220(1) der aufgeteilten Datenbank 200 veranschaulicht.
  • In einem Schritt 410 bezieht das Verfahren 400 den Aufteilungsschlüssel 260 für den abzurufenden Datensatz. Wie vorstehend in Bezug auf Schritt 310 des Verfahrens 300 zum Speichern eines Datensatzes in der aufgeteilten Datenbank 200 beschrieben, beruht der Aufteilungsschlüssel 260 auf einem oder mehreren Feldern des Datensatzes. Der Aufteilungsschlüssel 260 für den abzurufenden Datensatz kann dem Verfahren 400 als Eingabe bereitgestellt werden, beispielsweise im Rahmen einer Anfrage 280 zum Abrufen des oder der diesem Aufteilungsschlüssel 260 zugehörigen Datensätze. Alternativ kann der Aufteilungsschlüssel 260 aus im Rahmen der Anfrage 280 bereitgestellten Daten über den oder die abzurufenden Datensätze abgeleitet werden.
  • In einem Schritt 420 erzeugt das Verfahren 400 Darstellungen 270 des Aufteilungsschlüssels 260 zur Verwendung mit den Bloom-Filtern 240. Wie vorstehend in Bezug auf Schritt 320 des Verfahrens 300 zum Speichern eines Datensatzes in der aufgeteilten Datenbank 200 beschrieben, wird eine Darstellung des Aufteilungsschlüssels 260 zur Verwendung mit einem bestimmten Bloom-Filter 240 durch Anwenden der Hashfunktionen für dieses Bloom-Filter 240 auf den Aufteilungsschlüssel 260 erzeugt. Da beim Abrufen von Datensätzen jeder der Datenbankteile 210 in Betracht gezogen werden muss (einschließlich solcher, die als zum Speichern neuer Datensätze inaktiv markiert sind), wird eine Darstellung 270 des Aufteilungsschlüssels 260 zur Verwendung mit jedem der Bloom-Filter erzeugt. Auch hier muss jedoch, wenn die für jeden Datenbankteil 210 verwendeten Bloom-Filter 240 in der Form einander gleichen (d.h. die Länge der Bitvektoren und die Hashfunktionen, die für jedes Bloom-Filter verwendet werden, gleich sind), nur eine einzige Darstellung 270 des Aufteilungsschlüssels 260 erzeugt werden, da die Darstellung 270 für alle diese Bloom-Filter 240 gleich ist.
  • In einem Schritt 430 identifiziert das Verfahren 400, welche der jeweiligen Bloom-Filter 240 mit ihrer jeweiligen Darstellung 270 des Aufteilungsschlüssels 260 übereinstimmen. Um zu ermitteln, ob eine Darstellung 270 des Aufteilungsschlüssels 260 mit ihrem jeweiligen Bloom-Filter 240 übereinstimmt, wird der Bitvektor des Bloom-Filters 240 analysiert, um zu ermitteln, ob Bits auf den Positionen, auf denen der Aufteilungsschlüssel 260 von den Hashalgorithmen abgebildet wird, ‚0‘ sind. Falls Bits, auf denen der Aufteilungsschlüssel 260 abgebildet wird, ‚0‘ sind, stimmt die Darstellung 270 des Aufteilungsschlüssels 270 nicht mit dem Bloom-Filter 240 überein, was anzeigt, dass der Datensatz, auf den sich der Aufteilungsschlüssel 270 bezieht, nicht in dem diesem Bloom-Filter 240 zugehörigen Datenbankteil 210 gespeichert wurde. Falls jedoch alle Bits ‚1‘ sind, stimmt die Darstellung 270 des Aufteilungsschlüssels 270 mit dem Bloom-Filter 240 überein, was anzeigt, dass der Datensatz, auf den sich der Aufteilungsschlüssel 270 bezieht, in dem diesem Bloom-Filter 240 zugehörigen Datenbankteil 210 gespeichert sein könnte.
  • Es versteht sich, dass die Erzeugung der Darstellungen 270 in Schritt 420 des Verfahrens 400 auch implizit im Rahmen des in Schritt 430 des Verfahrens 400 erfolgenden Ermittelns von mit dem Aufteilungsschlüssel 260 übereinstimmenden Bloom-Filtern erfolgen kann. Das heißt, anstatt explizit eine Bitvektordarstellung 270 des Aufteilungsschlüssels 260 zu berechnen, kann das Verfahren 400 die Darstellung 270 implizit berechnen, und zwar dadurch, dass durch Anwenden der Hashalgorithmen jedes Bloom-Filters auf den Aufteilungsschlüssel 260 bestimmt wird, auf welchen Positionen der Bitvektoren jedes der Bloomfilter der Aufteilungsschlüssel 260 abgebildet wird.
  • In einem Schritt 440 durchsucht das Verfahren 400 die den identifizierten Bloom-Filtern 240 zugehörigen Datenbankteile 210, um den Datensatz aufzufinden. Aufgrund der probabilistischen Natur der Bloom-Filter 240 ist es möglich, dass mehr als eines der Bloom-Filter 240 eine Übereinstimmung mit der Darstellung 270 des Aufteilungsschlüssels 260 anzeigen kann. Dies geschieht, wenn eines oder mehrere der Bloom-Filter 240 ein falsch positives Ergebnis liefern. Das Verfahren 400 durchsucht daher jeden der Datenbankteile 210, die Bloom-Filtern 240 zugehörig sind, die eine Übereinstimmung mit der Darstellung 270 des Aufteilungsschlüssels 260 angezeigt haben, um den Datensatz aufzufinden.
  • In einem Schritt 450 stellt das Verfahren 400 den Datensatz bereit. Der Datensatz kann in unmittelbarer Reaktion auf eine Anfrage von einem externen System bereitgestellt werden oder auch in Reaktion auf eine interne Anfrage im Rahmen eines größeren Abfragevorgangs.
  • Um die Erfindung klarer zu beschreiben, erfolgte die Beschreibung und in 2 die Darstellung der vorstehend beschriebenen aufgeteilten Datenbank 200 und der zugehörigen Verfahren 300 und 400 mittels einer aufgeteilten Datenbank 200, die eine einzige aufgeteilte Tabelle 220(1) besitzt. Es versteht sich jedoch, dass die aufgeteilte Datenbank 200 mehrere aufgeteilte Tabellen 220 beinhalten kann, deren Datensätze auf die Datenbankteile 210 verteilt werden. In diesem Fall können jedem Datenbankteil 210 mehrere Bloom-Filter 240 zugehörig sein, und zwar eines für jede der aufgeteilten Tabellen 220. Die Verfahren 300 und 400 zum Speichern und Abrufen von Datensätzen aus den aufgeteilten Tabellen können sich dann auf die relevanten Bloom-Filter 240 für die aufgeteilte Tabelle 220 beziehen, auf welche die Verfahren angewendet werden.
  • Die vorstehend beschriebene aufgeteilte Datenbank 200 kann auf einem System gespeichert sein, das mehrere Computersysteme (oder Einheiten) 100 aufweist. Jeder der Datenbankteile 210 der aufgeteilten Datenbank 200 kann auf einem jeweiligen Computersystem 100 des Systems gespeichert sein, so dass jedes der Computersysteme 100 einen oder mehrere der mehreren Datenbankteile 210 enthält. Das System weist ferner eine Steuereinrichtung 290 auf, die so konfiguriert ist, dass sie das vorstehend beschriebene Verfahren 400 zum Abrufen von Datensätzen aus der aufgeteilten Tabelle 220(1) der aufgeteilten Datenbank 200 durchführt. Wie in 2 veranschaulicht, kann die Steuereinrichtung 290 von den Datenbankteilen 210 logisch getrennt sein und könnte auf einem separaten Computersystem 100 implementiert sein. Alternativ könnte die Steuereinrichtung 290 auf einem einzigen Computersystem 100 implementiert sein, das auch zum Speichern eines oder mehrerer der Datenbankteile 210 verwendet wird. Anfragen 280 zum Abrufen eines Datensatzes aus der aufgeteilten Tabelle 220(1) der aufgeteilten Datenbank 200 können dann an die eine Steuereinrichtung 290 gerichtet werden. Alternativ kann die Steuereinrichtung 290 auf mehrere (oder alle) Computersysteme 100 verteilt sein, die zum Speichern eines oder mehrerer der Datenbankteile 210 verwendet werden. In diesem Fall können Anfragen 280 zum Abrufen eines Datensatzes aus der aufgeteilten Tabelle 220(1) der aufgeteilten Datenbank 220 an die Steuereinrichtung auf jedem der Computersysteme 100 gerichtet werden, auf denen sich diese befindet.
  • Die Steuereinrichtung 290 kann zudem so konfiguriert sein, dass sie einen Datensatz 250 in der aufgeteilten Tabelle 220(1) der aufgeteilten Datenbank 200 mittels des vorstehend beschriebenen Verfahrens 300 speichert. Entsprechend können Anfragen zum Speichern eines Datensatzes 250 ebenfalls an jedes der Computersysteme 100 gerichtet werden, auf denen sich die Steuereinrichtung 290 befindet.
  • Die Steuereinrichtung 290 kann zudem so konfiguriert sein, dass sie ein Löschen von Datensätzen aus der aufgeteilten Tabelle 220(1) der aufgeteilten Datenbank 200 ermöglicht. Dies kann erfolgen durch Lokalisieren des Datenbankteils 210, auf dem sich der Datensatz befindet, und Entfernen des Datensatzes aus der Teilmenge 230 aus Datensätzen der aufgeteilten Tabelle 220(1), die auf diesem Datenbankteil 210 gespeichert sind. Aufgrund der Einschränkungen von Bloom-Filtern ist es jedoch nicht möglich, das diesem Datenbankteil 210 zugehörige Bloom-Filter 240 so zu aktualisieren, dass es die Entfernung des Datensatzes aus der Menge aus Datensätzen, die es darstellt, wiedergibt. Mit steigender Anzahl aus einem Datenbankteil 210 gelöschter Datensätze steigt daher die Wahrscheinlichkeit, dass das Bloom-Filter 240 für diesen Datenbankteil 210 beim Versuch, Datensätze aus der aufgeteilten Tabelle 220(1) abzurufen, ein falsch positives Ergebnis liefert. Um diesem Problem zu begegnen, kann die aufgeteilte Datenbank 200 einen jedem der Datenbankteile 210 zugehörigen Löschungszähler aufweisen. Durch Heraufsetzen des Löschungszählers bei jedem Löschen eines Datensatzes aus dem Datenbankteil 210, dem dieser zugehörig ist, kann der Löschungszähler verwendet werden, um zu ermitteln, wie viele Datensätze in der Darstellung der Menge aus Datensätzen jedes Bloom-Filters enthalten sind, die nicht mehr auf ihrem zugehörigen Datenbankteil 210 gespeichert sind. Die Steuereinrichtung 290 kann dann ermitteln, ob die Anzahl an Datensätzen, die aus einem bestimmten Datenbankteil 210 gelöscht wurden, einen vorab bestimmten Grenzwert für diesen Teil überschreitet, und, falls dies der Fall ist, das Bloom-Filter 240 aus den aktuell in diesem Datenbankteil 210 gespeicherten Datensätzen neu erstellen. Der Löschungszähler für den Datenbankteil 210, dem das neu erstellte Bloom-Filter zugehörig ist, kann dann zurückgesetzt werden.
  • Die Neuerstellung des Bloom-Filters 240 beinhaltet im Wesentlichen Zurücksetzen seines Bitvektors derart, dass jedes Bit auf ‚0‘ gesetzt wird, und erneutes Hinzufügen jedes der Datensätze für die aufgeteilte Tabelle 220(1), die in diesem Datenbankteil 210 gespeichert sind, zu dem Bitvektor durch erneutes Anwenden der Hashalgorithmen für das Bloom-Filter 240 auf die Aufteilungsschlüssel 260 der gespeicherten Datensätze und Setzen der entsprechenden Bits des Bloom-Filters auf ‚1‘. Während der Neuerstellung des Bloom-Filters 240 kann der Datenbankteil 210 vorübergehend als zum Speichern neuer Datensätze nicht verfügbar markiert werden, wodurch ermöglicht wird, dass die aufgeteilte Datenbank 200 selbst während einer möglichen Neuerstellung der einem oder mehreren der Datenbankteile 210 zugehörigen Bloom-Filter 240 weiterhin neue Datensätze zur Speicherung annimmt. Ebenso kann vor der Neuerstellung des Bloom-Filters 240 der aktuelle Wert seines Bitvektors (oder Arrays) zwischengespeichert werden, wodurch ermöglicht wird, dass die aufgeteilte Datenbank 200 selbst während einer möglichen Neuerstellung des einem oder mehreren der Datenbankteile 210 zugehörigen Bloom-Filters 240 weiterhin Datensätze aus der aufgeteilten Tabelle 220(1) abruft.
  • In einer alternativen Ausführungsform kann die vorstehend beschriebene aufgeteilte Datenbank 200 anstelle der Bloom-Filter Zählfilter aufweisen. Wie vorstehend beschrieben, ermöglichen Zählfilter ein Entfernen von Datensätzen aus der von dem Zählfilter unterhaltenen Darstellung der Menge aus Datensätzen. Wenn ein Datensatz aus der aufgeteilten Tabelle 220(1) gelöscht wird, kann daher in dieser alternativen Ausführungsform die Steuereinrichtung 290 das Zählfilter aktualisieren, das dem Datenbankteil 210 zugehörig ist, aus dem der Datensatz gelöscht wurden, ohne dass das Filter neu erstellt werden muss. Um den Hamming-Abstand zu einem Zählfilter zu berechnen, können die Werte des Zählfilters auf eine Bitvektordarstellung reduziert werden. Mit anderen Worten, der n-Bit-Zähler auf jeder Position in dem von dem Zählfilter unterhaltenen Vektor kann in eine Ein-Bit-Darstellung umgewandelt werden, die ‚0‘ ist, falls der Wert des n-Bit-Zählers ‚0‘ ist, oder ‚1‘ ist, falls der Wert des n-Bit-Zählers größer als ‚0‘ ist. Falls beispielsweise der aktuelle Wert eines Zählfilters „01023002“ ist, kann dieser für die Zwecke der Berechnung des Hamming-Abstands auf eine Bitvektordarstellung „01011001“ reduziert werden.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt jedes möglichen technisch detaillierten Integrationsgrads handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/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 behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbarer 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, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.

Claims (27)

  1. Computerimplementiertes Verfahren zum Speichern eines Datensatzes in einer aufgeteilten Tabelle einer aufgeteilten Datenbank, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge aus Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in diesen Datenbankteil gespeichert worden sein könnte, wobei das computerimplementierte Verfahren Folgendes umfasst: Beziehen eines Aufteilungsschlüssels für den zu speichernden Datensatz, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht, für jedes von mehreren der jeweiligen Bloom-Filter erfolgendes Erzeugen einer jeweiligen Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel, Berechnen von Hamming-Abständen zwischen aktuellen Werten jedes der mehreren Bloom-Filter und der jeweiligen zur Verwendung mit diesem Bloom-Filter vorgesehenen Darstellung des Aufteilungsschlüssels, Auswählen eines Datenbankteils auf Grundlage der berechneten Hamming-Abstände und Speichern des Datensatzes in dem ausgewählten Datenbankteil.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei jedes der jeweiligen Bloom-Filter die gleiche Anzahl an Bits und dieselben Hashfunktionen verwendet.
  3. Computerimplementiertes Verfahren nach Anspruch 1, wobei es sich bei jedem der jeweiligen Bloom-Filter um ein Zählfilter handelt.
  4. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Auswählen eines Datenbankteils Auswählen eines Datenbankteils umfasst, der einem jeweiligen Bloom-Filter zugehörig ist, für das der berechnete Hamming-Abstand unter den berechneten Hamming-Abständen einen Minimalwert aufweist.
  5. Computerimplementiertes Verfahren nach Anspruch 4, wobei das Auswählen des Datenbankteils, der einem jeweiligen Bloom-Filter zugehörig ist, dessen berechneter Hamming-Abstand unter den berechneten Hamming-Abständen einen Minimalwert aufweist, zufälliges Auswählen des Datenbankteils unter den Datenbankteilen umfasst, die jeweiligen Bloom-Filtern zugehörig sind, deren berechneter Hamming-Abstand einen Minimalwert aufweist.
  6. Computerimplementiertes Verfahren nach Anspruch 1, wobei die aufgeteilte Datenbank ferner eine Anzeige dahingehend aufweist, ob jeder Datenbankteil zum Speichern neuer Datensätze verfügbar oder nicht verfügbar ist, und wobei die mehreren Bloom-Filter, für die jeweilige Darstellungen des Aufteilungsschlüssels erzeugt werden, keine Bloom-Filter beinhalten, die Datenbankteilen zugehörig sind, die als nicht verfügbar angezeigt werden.
  7. Computerimplementiertes Verfahren nach Anspruch 6, wobei die mehreren Bloom-Filter, für die jeweilige Darstellungen des Aufteilungsschlüssels erzeugt werden, die jeweiligen Bloom-Filter beinhalten, die allen Datenbankteilen zugehörig sind, die als verfügbar angezeigt werden.
  8. Computerimplementiertes Verfahren nach Anspruch 1, wobei die aufgeteilte Datenbank ferner einen jeweiligen Einfügungszähler zum Zählen einer jeweiligen Anzahl an Datensätzen aufweist, die in jeden der Datenbankteile eingefügt wurden, und wobei das computerimplementierte Verfahren ferner Folgendes umfasst: Heraufsetzen des Einfügungszählers für den ausgewählten Datenbankteil.
  9. Computerimplementiertes Verfahren nach Anspruch 8, wobei das computerimplementierte Verfahren ferner Folgendes umfasst: Ermitteln, ob die Anzahl an Datensätzen, die in den ausgewählten Datenbankteil eingefügt wurden, einen vorab bestimmten Grenzwert überschreitet, und in Reaktion auf Feststellen, dass die Anzahl an Datensätzen, die in den ausgewählten Datenbankteil eingefügt wurden, den vorab bestimmten Grenzwert überschreitet, Markieren des ausgewählten Datenbankteils als zum Speichern neuer Datensätze nicht verfügbar.
  10. Computerimplementiertes Verfahren nach Anspruch 1, wobei das computerimplementierte Verfahren ferner Folgendes umfasst: Hinzufügen eines neuen Datenbankteils und eines zugehörigen Bloom-Filters zu der aufgeteilten Datenbank.
  11. Computerimplementiertes Verfahren zum Abrufen eines Datensatzes aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge aus Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in diesen Datenbankteil gespeichert worden sein könnte, wobei das computerimplementierte Verfahren Folgendes umfasst: Beziehen eines Aufteilungsschlüssels für den abzurufenden Datensatz, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht, für jedes der jeweiligen Bloom-Filter, die jedem der Datenbankteile zugehörig sind, erfolgendes Erzeugen einer jeweiligen Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel, Identifizieren, welche der jeweiligen Bloom-Filter mit ihrer jeweiligen Darstellung des Aufteilungsschlüssels übereinstimmen, Durchsuchen der den identifizierten Bloom-Filtern zugehörigen Datenbankteile, um den Datensatz aufzufinden, und Bereitstellen des Datensatzes.
  12. Computerimplementiertes Verfahren nach Anspruch 11, wobei jedes der jeweiligen Bloom-Filter die gleiche Anzahl an Bits und dieselben Hashfunktionen verwendet.
  13. System zum Speichern einer aufgeteilten Datenbank, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge aus Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in diesen Datenbankteil gespeichert worden sein könnte, wobei das System Folgendes umfasst: mehrere Datenverarbeitungssysteme, wobei jedes Datenverarbeitungssystem so konfiguriert ist, dass es einen oder mehrere der mehreren Datenbankteile speichert, und eine Steuereinrichtung, wobei die Steuereinrichtung so konfiguriert ist, dass sie einen Datensatz aus einer aufgeteilten Tabelle der aufgeteilten Datenbank aufruft durch: Beziehen eines Aufteilungsschlüssels für den abzurufenden Datensatz, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht, für jedes der jeweiligen Bloom-Filter, die jedem der Datenbankteile zugehörig sind, erfolgendes Erzeugen einer jeweiligen Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel, Identifizieren, welche der jeweiligen Bloom-Filter mit ihrer jeweiligen Darstellung des Aufteilungsschlüssels übereinstimmen, Durchsuchen der den identifizierten Bloom-Filtern zugehörigen Datenbankteile, um den Datensatz aufzufinden, und Bereitstellen des Datensatzes.
  14. System nach Anspruch 13, wobei jedes der jeweiligen Bloom-Filter die gleiche Anzahl an Bits und dieselben Hashfunktionen verwendet.
  15. System nach Anspruch 13, wobei es sich bei jedem der jeweiligen Bloom-Filter um ein Zählfilter handelt.
  16. System nach Anspruch 13, wobei die Steuereinrichtung ferner so konfiguriert ist, dass sie einen Datensatz in der aufgeteilten Tabelle der aufgeteilten Datenbank speichert durch: Beziehen eines Aufteilungsschlüssels für den zu speichernden Datensatz, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht, für jedes von mehreren der jeweiligen Bloom-Filter erfolgendes Erzeugen einer jeweiligen Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel, Berechnen von Hamming-Abständen zwischen aktuellen Werten jedes der mehreren Bloom-Filter und der jeweiligen zur Verwendung mit diesem Bloom-Filter vorgesehenen Darstellung des Aufteilungsschlüssels, Auswählen eines Datenbankteils auf Grundlage der berechneten Hamming-Abstände und Speichern des Datensatzes in dem ausgewählten Datenbankteil.
  17. System nach Anspruch 16, wobei das Auswählen eines Datenbankteils Auswählen eines Datenbankteils umfasst, der einem jeweiligen Bloom-Filter zugehörig ist, für das der berechnete Hamming-Abstand unter den berechneten Hamming-Abständen einen Minimalwert aufweist.
  18. System nach Anspruch 16, wobei die aufgeteilte Datenbank ferner eine Anzeige dahingehend aufweist, ob jeder Datenbankteil zum Speichern neuer Datensätze verfügbar oder nicht verfügbar ist, und wobei die mehreren Bloom-Filter, für die beim Speichern des Datensatzes jeweilige Darstellungen des Aufteilungsschlüssels erzeugt werden, keine Bloom-Filter beinhalten, die Datenbankteilen zugehörig sind, die als nicht verfügbar angezeigt werden.
  19. System nach Anspruch 16, wobei die aufgeteilte Datenbank ferner einen jeweiligen Einfügungszähler zum Zählen einer jeweiligen Anzahl von Datensätzen aufweist, die in jeden der Datenbankteile eingefügt wurden, und wobei die Steuereinrichtung ferner so konfiguriert ist, dass sie den Einfügungszähler für den ausgewählten Datenbankteil heraufsetzt, wenn der Datensatz gespeichert wird.
  20. System nach Anspruch 19, wobei die Steuereinrichtung ferner konfiguriert ist, um: zu ermitteln, ob die Anzahl an Datensätzen, die in den ausgewählten Datenbankteil eingefügt wurden, einen vorab bestimmten Grenzwert überschreitet, und in Reaktion auf Feststellen, dass die Anzahl an Datensätzen, die in den ausgewählten Datenbankteil eingefügt wurden, den vorab bestimmten Grenzwert überschreitet, den ausgewählten Datenbankteil als zum Speichern neuer Datensätze nicht verfügbar zu markieren.
  21. System nach Anspruch 16, wobei die Steuereinrichtung ferner konfiguriert ist, um: einen neuen Datenbankteil und ein zugehöriges Bloom-Filter zu der aufgeteilten Datenbank hinzuzufügen.
  22. System nach Anspruch 16, wobei die aufgeteilte Datenbank ferner einen jeweiligen Löschungszähler zum Zählen einer jeweiligen Anzahl an Datensätzen aufweist, die aus jedem der Datenbankteile gelöscht wurden.
  23. System nach Anspruch 22, wobei die Steuereinrichtung ferner konfiguriert ist, um: zu ermitteln, ob die Anzahl an Datensätzen, die aus einem bestimmten Datenbankteil gelöscht wurden, einen jeweiligen vorab bestimmten Grenzwert für diesen Datenbankteil überschreitet, und in Reaktion auf Feststellen, dass die Anzahl an Datensätzen, die aus dem bestimmten Datenbankteil gelöscht wurden, den jeweiligen vorab bestimmten Grenzwert für diesen Datenbankteil überschreitet, das Bloom-Filter für diesen Datenbankteil auf Grundlage der aktuell in diesem Datenbankteil gespeicherten Datensätze neu zu erstellen.
  24. Computerprogrammprodukt zum Speichern eines Datensatzes in einer aufgeteilten Tabelle einer aufgeteilten Datenbank, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge aus Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in diesen Datenbankteil gespeichert worden sein könnte, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, auf dem Folgendes codiert ist: erste Programmanweisungen, die durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, einen Aufteilungsschlüssel für den zu speichernden Datensatz zu beziehen, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht, zweite Programmanweisungen, die durch den Prozessor ausführbar sind, um den Prozessor zu veranlassen, für jedes von mehreren der jeweiligen Bloom-Filter eine jeweilige Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel zu erzeugen, dritte Programmanweisungen, die durch den Prozessor ausführbar sind, um den Prozessor zu veranlassen, Hamming-Abstände zwischen aktuellen Werten jedes der mehreren Bloom-Filter und der jeweiligen zur Verwendung mit diesem Bloom-Filter vorgesehenen Darstellung des Aufteilungsschlüssels zu berechnen, vierte Programmanweisungen, die durch den Prozessor ausführbar sind, um den Prozessor zu veranlassen, einen Datenbankteil auf Grundlage der berechneten Hamming-Abstände auszuwählen, und fünfte Programmanweisungen, die durch den Prozessor ausführbar sind, um den Prozessor zu veranlassen, den Datensatz in dem ausgewählten Datenbankteil zu speichern.
  25. Computerprogrammprodukt zum Abrufen eines Datensatzes aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge aus Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in diesen Datenbankteil gespeichert worden sein könnte, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, auf dem Folgendes codiert ist: erste Programmanweisungen, die durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, einen Aufteilungsschlüssel für den abzurufenden Datensatz zu beziehen, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht, zweite Programmanweisungen, die durch den Prozessor ausführbar sind, um den Prozessor zu veranlassen, für jedes der jeweiligen Bloom-Filter, die jedem der Datenbankteile zugehörig sind, eine jeweilige Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel zu erzeugen, dritte Programmanweisungen, die durch den Prozessor ausführbar sind, um den Prozessor zu veranlassen, zu identifizieren, welche der jeweiligen Bloom-Filter mit ihrer jeweiligen Darstellung des Aufteilungsschlüssels übereinstimmen, vierte Programmanweisungen, die durch den Prozessor ausführbar sind, um den Prozessor zu veranlassen, die den identifizierten Bloom-Filtern zugehörigen Datenbankteile zu durchsuchen, um den Datensatz aufzufinden, und fünfte Programmanweisungen, die durch den Prozessor ausführbar sind, um den Prozessor zu veranlassen, den Datensatz bereitzustellen.
  26. System zum Speichern eines Datensatzes in einer aufgeteilten Tabelle einer aufgeteilten Datenbank, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge aus Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehörigen Datensatz in diesen Datenbankteil gespeichert worden sein könnte, wobei das System konfigurierbar ist, um: einen Aufteilungsschlüssel für den zu speichernden Datensatz zu beziehen, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht, für jedes von mehreren der jeweiligen Bloom-Filter eine jeweilige Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel zu erzeugen, Hamming-Abstände zwischen aktuellen Werten jedes der mehreren Bloom-Filter und der jeweiligen zur Verwendung mit diesem Bloom-Filter vorgesehenen Darstellung des Aufteilungsschlüssels zu berechnen, einen Datenbankteil auf Grundlage der berechneten Hamming-Abstände auszuwählen und den Datensatz in dem ausgewählten Datenbankteil zu speichern.
  27. System zum Abrufen eines Datensatzes aus einer aufgeteilten Tabelle einer aufgeteilten Datenbank, wobei die aufgeteilte Datenbank mehrere Datenbankteile aufweist, wobei jeder der Datenbankteile so konfiguriert ist, dass er eine Teilmenge aus Datensätzen der aufgeteilten Tabelle speichert, und einem jeweiligen Bloom-Filter zugehörig ist, das so konfiguriert ist, dass es eine Anzeige dahingehend bereitstellt, ob ein einem bestimmten Aufteilungsschlüssel zugehöriger Datensatz in diesen Datenbankteil gespeichert worden sein könnte, wobei das System konfigurierbar ist, um: einen Aufteilungsschlüssel für den abzurufenden Datensatz zu beziehen, wobei der Aufteilungsschlüssel auf einem oder mehreren Feldern des Datensatzes beruht, für jedes der jeweiligen Bloom-Filter, die jedem der Datenbankteile zugehörig sind, eine jeweilige Darstellung des Aufteilungsschlüssels zur Verwendung mit diesem Bloom-Filter durch Anwenden einer oder mehrerer von diesem Bloom-Filter verwendeter Hashfunktionen auf den Aufteilungsschlüssel zu erzeugen, zu identifizieren, welche der jeweiligen Bloom-Filter mit ihrer jeweiligen Darstellung des Aufteilungsschlüssels übereinstimmen, die den identifizierten Bloom-Filtern zugehörigen Datenbankteile zu durchsuchen, um den Datensatz aufzufinden, und den Datensatz bereitzustellen.
DE112018004222.7T 2017-10-25 2018-10-18 Datenbankaufteilung Pending DE112018004222T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/793,100 US10585915B2 (en) 2017-10-25 2017-10-25 Database sharding
US15/793,100 2017-10-25
US15/813,577 2017-11-15
US15/813,577 US10592532B2 (en) 2017-10-25 2017-11-15 Database sharding
PCT/EP2018/078495 WO2019081322A1 (en) 2017-10-25 2018-10-18 BASIC PARTITIONING OF DATA

Publications (1)

Publication Number Publication Date
DE112018004222T5 true DE112018004222T5 (de) 2020-05-14

Family

ID=66169387

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004222.7T Pending DE112018004222T5 (de) 2017-10-25 2018-10-18 Datenbankaufteilung

Country Status (6)

Country Link
US (2) US10585915B2 (de)
JP (1) JP7046172B2 (de)
CN (1) CN111247518B (de)
DE (1) DE112018004222T5 (de)
GB (1) GB2581738A (de)
WO (1) WO2019081322A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3052832C (en) * 2017-02-27 2021-11-16 Timescale, Inc. Scalable database system for querying time-series data
US11126625B2 (en) 2019-05-31 2021-09-21 Salesforce.Com, Inc. Caching techniques for a database change stream
US10936562B2 (en) 2019-08-02 2021-03-02 Timescale, Inc. Type-specific compression in database systems
US11194773B2 (en) * 2019-09-12 2021-12-07 Oracle International Corporation Integration of existing databases into a sharding environment
CN110968265B (zh) * 2019-11-05 2023-08-08 北京字节跳动网络技术有限公司 分片扩容方法、装置及电子设备
CA3165438A1 (en) * 2019-12-20 2021-06-24 Niantic, Inc. Sharded storage of geolocated data with predictable query response times
US11531666B1 (en) 2020-08-20 2022-12-20 Amazon Technologies, Inc. Indexing partitions using distributed bloom filters
CN112162981A (zh) * 2020-09-08 2021-01-01 杭州涂鸦信息技术有限公司 一种自适应的路由分库分表方法及系统
CN112417276A (zh) * 2020-11-18 2021-02-26 北京字节跳动网络技术有限公司 分页数据获取方法、装置、电子设备及计算机可读存储介质
US11568065B2 (en) * 2021-01-15 2023-01-31 Bank Of America Corporation System for securing electronic data by aggregation of distributed electronic database entries
US11829394B2 (en) * 2021-03-11 2023-11-28 International Business Machines Corporation Soft deletion of data in sharded databases
US11995084B1 (en) 2023-10-05 2024-05-28 Timescale, Inc. Database system for querying time-series data stored in a tiered storage using a cloud platform

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4722620B2 (ja) 2005-08-19 2011-07-13 Kddi株式会社 暗号化文書検索方法および暗号化文書検索システム
US9275129B2 (en) 2006-01-23 2016-03-01 Symantec Corporation Methods and systems to efficiently find similar and near-duplicate emails and files
US8209178B1 (en) 2008-01-10 2012-06-26 Google Inc. Randomized language models
JP5353231B2 (ja) 2008-12-25 2013-11-27 日本電気株式会社 情報転送装置、情報転送方法およびプログラム
US20100312749A1 (en) 2009-06-04 2010-12-09 Microsoft Corporation Scalable lookup service for distributed database
EP2665002A3 (de) 2009-06-19 2014-04-02 Blekko, Inc. Skalierbare Cluster-Datenbank
US8996568B2 (en) * 2009-07-14 2015-03-31 Qualcomm Incorporated Methods and apparatus for efficiently processing multiple keyword queries on a distributed network
CN101916261B (zh) 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US8924426B2 (en) 2011-04-29 2014-12-30 Google Inc. Joining tables in a mapreduce procedure
US9165074B2 (en) 2011-05-10 2015-10-20 Uber Technologies, Inc. Systems and methods for performing geo-search and retrieval of electronic point-of-interest records using a big index
EP2629212A1 (de) * 2012-02-14 2013-08-21 Alcatel Lucent Verfahren zum Speichern und Suchen von getaggten Inhaltselementen in einem verteilten System
US8856234B2 (en) 2013-02-28 2014-10-07 Workiva Llc System and method for performing distributed asynchronous calculations in a networked environment
US9507824B2 (en) * 2014-08-22 2016-11-29 Attivio Inc. Automated creation of join graphs for unrelated data sets among relational databases
US9875263B2 (en) 2014-10-21 2018-01-23 Microsoft Technology Licensing, Llc Composite partition functions
US9727275B2 (en) 2014-12-02 2017-08-08 International Business Machines Corporation Coordinating storage of data in dispersed storage networks
US20160328429A1 (en) 2015-03-17 2016-11-10 Cloudera, Inc. Mutations in a column store
US9886441B2 (en) 2015-04-06 2018-02-06 Sap Se Shard aware near real time indexing
US11210279B2 (en) 2016-04-15 2021-12-28 Apple Inc. Distributed offline indexing
US10430598B2 (en) * 2017-06-08 2019-10-01 The Government Of The United States, As Represented By The Secretary Of The Army Secure generalized bloom filter

Also Published As

Publication number Publication date
US10585915B2 (en) 2020-03-10
CN111247518A (zh) 2020-06-05
US10592532B2 (en) 2020-03-17
GB2581738A (en) 2020-08-26
CN111247518B (zh) 2024-05-14
GB202007157D0 (en) 2020-07-01
JP2021500649A (ja) 2021-01-07
US20190121902A1 (en) 2019-04-25
US20190121901A1 (en) 2019-04-25
WO2019081322A1 (en) 2019-05-02
JP7046172B2 (ja) 2022-04-01

Similar Documents

Publication Publication Date Title
DE112018004222T5 (de) Datenbankaufteilung
DE112012005533B4 (de) Unterstützende Abfrage und ein Abfragen
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112019001480B4 (de) Automatisches Optimieren der Ressourcennutzung in einemZieldatenbankverwaltungssystem zum Erhöhen der Arbeitslastleistung
DE202015009874U1 (de) Implementierung semistrukturierter Daten als ein Datenbankelement erster Klasse
DE102013206281A1 (de) Optimieren von zerstreuten schemalosen Daten in relationalen Speichern
DE202011110873U1 (de) Skalierbare Wiedergabe von großen räumlichen Datenbanken
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE102016216843A1 (de) Verteiltes Zusammenführen von Dateien
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE112011100618T5 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE202011110895U1 (de) Echtzeitsynchronisierte Bearbeitung von Dokumenten durch mehrere Benutzer für das Bloggen
DE102017207686A1 (de) Einblicke in die belegschaftsstrategie
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
DE112013003205T5 (de) Verfahren und Vorrichtung zum Verarbeiten von Datenbankdaten in einem verteilten Datenbanksystem
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten
DE112018000456T5 (de) Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen
DE202015104128U1 (de) Datenzugriffssystem
DE112013001751T5 (de) Hybride Adressumsetzung
DE112019000206T5 (de) Dynamisches Erstellen und Konfigurieren eines Lernmodells für Dialogagenten
DE112018004462T5 (de) Abfrageverarbeitung
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE112021000338B4 (de) Auslagern der statistikerfassung
DE112013006646T5 (de) Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation

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: G06F0016220000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0016220000

Ipc: G06F0016270000

R016 Response to examination communication
R084 Declaration of willingness to licence