DE202012013427U1 - Verknüpfung von Tabellen in einem MapReduce-Verfahren - Google Patents

Verknüpfung von Tabellen in einem MapReduce-Verfahren Download PDF

Info

Publication number
DE202012013427U1
DE202012013427U1 DE202012013427.2U DE202012013427U DE202012013427U1 DE 202012013427 U1 DE202012013427 U1 DE 202012013427U1 DE 202012013427 U DE202012013427 U DE 202012013427U DE 202012013427 U1 DE202012013427 U1 DE 202012013427U1
Authority
DE
Germany
Prior art keywords
partitions
data
hash
key
mapreduce
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.)
Expired - Lifetime
Application number
DE202012013427.2U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202012013427U1 publication Critical patent/DE202012013427U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • 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/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • 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/24558Binary matching operations
    • G06F16/2456Join operations
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Abstract

Ein Computerprogrammprodukt, das greifbar in einem computerlesbaren Speichermedium verankert ist und Anweisungen enthält, die bei Ausführung durch einen Prozessor eine Methode für die Vorbereitung der ersten und zweiten Tabelle auf ein MapReduce-Verfahren umsetzen, wobei die Methode das Folgende umfasst: Erhalt einer ersten Tabelle mit Erstdaten; Bereichspartitionierung der Erstdaten in Bereichspartitionen im Verlauf des Erhalts der ersten Tabelle auf der Grundlage von Bereichen eines ersten Schlüssels in den Erstdaten; Hash-Partitionierung der Erstdaten innerhalb jeder Bereichspartition in eine erste Anzahl von Hash-Partitionen auf der Grundlage eines zweiten Schlüssels; Erhalt einer zweiten Tabelle mit Zweitdaten; Hash-Partitionierung der Zweitdaten im Verlauf des Erhalts der zweiten Tabelle in eine zweite Anzahl von Hash-Partitionen auf der Grundlage des zweiten Schlüssels, wobei eine der ersten und zweiten Anzahl ein integres Vielfaches der anderen darstellt, und Bereitstellung von Metadaten zu den Bereichspartitionen sowie der verfügbaren ersten und zweiten Anzahlen von Hash-Partitionen für eine MapReduce-Maschine.

Description

  • VERWEIS
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • TECHNISCHES GEBIET
  • Diese Offenbarung bezieht sich auf die Verknüpfung von Tabellen in einem MapReduce-Verfahren.
  • HINTERGRUND
  • Das MapReduce-Modell wurde von Google Inc. als Weg zur Vereinfachung umfangreicher Datenverarbeitung entwickelt. Implementierungen eines MapReduce-Verfahrens erfolgen im Einklang mit dem MapReduce-Modell.
  • ZUSAMMENFASSUNG
  • Implementierungen können einen jeglichen oder alle der nachstehend aufgeführten bieten. Die Datenverarbeitung kann in einem MapReduce-Rahmen schneller erfolgen. Die für ein MapReduce-Verfahren zu ladende Datenmenge kann reduziert werden. Die Verknüpfung von Tabellen in einem MapReduce-Verfahren kann ohne weitere Partitionierung der Daten erfolgen. Es können weniger MapReduce-Operationen erforderlich sein, was zu einem geringeren Einsatz von Ressourcen führt. Ein Verknüpfungsverfahren in einem MapReduce-Rahmen kann entweder mit allen in einen Speicher geladenen Daten oder als Merge-Join für zwei sortierte Datensätzen ausgeführt werden.
  • Die Details einer oder mehrerer Ausführungsformen werden in den beigefügten Zeichnungen und der Beschreibung unten dargelegt. Andere Eigenschaften und Vorteile werden aus der Beschreibung und den Zeichnungen sowie den Ansprüchen ersichtlich.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm mit der schematischen Ansicht des Beispiels einer Partitionierung für ein MapReduce-Verfahren.
  • 2 ist die schematische Illustration eines Beispiels für die vorherige Organisation von Daten aus einer ersten und zweiten Tabelle.
  • 3 ist das Flussdiagramm eines Beispiels für die Durchführung einer MapReduce-Operation.
  • 4 ist das Blockdiagramm eines Rechnersystems, das in Verbindung mit in diesem Dokument beschriebenen computer-implementierten Methoden eingesetzt werden kann.
  • Gleiche Bezugszeichen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Dieses Dokument beschreibt Systeme und Techniken, mit denen Tabellen in einem MapReduce-Verfahren verknüpft werden können. Wenn eine umfangreiche Tabelle mit Geschäftsdaten (die z. B. eine Milliarde Transaktionseinträge oder mehr enthält) mit einer umfangreichen Tabelle von Kundendaten (die z. B. hunderte Millionen von Kundendaten umfasst) verknüpft werden soll, dann können diese Tabellen bei einigen Implementierungen vor dem MapReduce-Verfahren organisiert werden, um die Verknüpfung der Tabellen zu beschleunigen. Die Geschäftsdaten und Kundendaten können zum Beispiel auf der Grundlage desselben Schlüssels jeweils einer Hash-Partitionierung in Fragmente von Geschäftsdaten bzw. Kundendaten unterzogen werden. Die Anzahl der Fragmente in diesen beiden Gruppen unterhält eine integre Beziehung miteinander: zum Beispiel solcherart, dass es zwei Geschäftsdatenfragmente für jedes Kundendatenfragment gibt oder umgekehrt. Diese Vororganisation kann die Datenmengen reduzieren, die in den Speicher geladen werden und ebenso einen Teil der Partitionierung innerhalb des MapReduce-Verfahrens vermeiden.
  • 1 zeigt das Beispiel eines Systems 100 mit einem MapReduce-Rahmen 102. Der MapReduce-Rahmen 102 kann eingesetzt werden, um im Einklang mit dem MapReduce-Modell Datenverarbeitung vorzunehmen, zum Beispiel zur Durchführung bestimmter Arten von Analysen für große Datenmengen. Wie in diesem Dokument benutzt, bezieht sich der Begriff „MapReduce-Rahmen” auf ein System, das konfiguriert ist, um (i) mindestens eine Map-Operation auszuführen, die ein oder mehrere intermediäre Schlüssel-/Wertepaare generiert und (ii) mindestens eine Reduzierungsoperation auszuführen, die einen oder mehrere Ausgangswerte aus den intermediären Schlüssel-/Wertepaaren generiert.
  • Der MapReduce-Rahmen teilt die Map-Operation unter multiplen Programmkomponenten auf (die gelegentlich als „Arbeiter” bezeichnet werden) und ordnet jedem Arbeiter eine oder mehrere Map-Aufgaben zu. Der MapReduce-Rahmen teilt die Reduce-Operation in Reduce-Aufgaben ein und ordnet sie Arbeitern zu. Bei einigen Implementierungen wird der MapReduce-Rahmen auf einem Cluster von Verarbeitungsgeräten betrieben, wie etwa das Netzwerk standardmäßiger PCs. Es kann zum Beispiel ein Datenzentrum eingerichtet werden, das Datenschränke mit zehntausenden von Verarbeitungsmodulen besitzt (z. B. kann ein Verarbeitungsmodul ein standardmäßiger PC oder ein Teil desselben sein) und das MapReduce-Verfahren kann als massiver Job ausgeführt werden, der unter den tausenden (oder mehr) von Verarbeitungseinheiten aufgeteilt wird. Ein MapReduce-Job kann Mapping und Reduzierung mehrerer Terabytes von Daten oder mehr involvieren, um nur ein Beispiel zu nennen.
  • Hier kann ein Benutzer ein Computer-Gerät 104 einsetzen, um auf den MapReduce-Rahmen 102 über jede Art von Netzwerk 106 zuzugreifen, wie etwa das Internet oder ein Netzwerk für mobile Geräte (z. B. ein Mobilfunknetz). Die MapReduce-Verarbeitung kann durch ein Benutzerprogramm 108 auf dem Computer-Gerät initiiert werden. Bei einigen Implementierungen kann eine Organisation das Programm 108 nutzen, um große Mengen von Geschäftsdaten zu analysieren. Eine Telekommunikationsfirma (wie etwa ein Mobilfunkdienstleister) kann zum Beispiel hunderte von Millionen Kunden haben, die zahlreiche Transaktionen mit der Firma vornehmen (zum Beispiel kann jede Nutzung des Mobilfunkdienstes als Transaktion registriert werden). In solchen Situationen können die kumulativen Geschäftsdaten für einen bestimmten Zeitraum (z. B. eine Woche, einen Monat, ein Jahr) eine Milliarde Einträge oder mehr erreichen. Das MapReduce-Verfahren kann dann für die Analyse der Geschäftsdaten eingesetzt werden, zum Beispiel für die Zählung der Anzahl von Transaktionen, die ihren Ursprung in einem bestimmten Land haben oder der Anzahl erfolgloser Transaktionen. In einer solchen Situation identifiziert das Benutzerprogramm 108 den Umfang der zu nutzenden Geschäftsdaten und definiert das Kriterium oder Merkmal, nach dem gesucht wird.
  • Bei einigen Implementierungen ist das Benutzerprogramm 108 so konfiguriert, dass der Benutzer eine oder mehrere Abfragen formulieren kann (z. B. unter Einsatz von Structured Query Language, SQL), die für einige oder alle gesammelten Informationen erfolgen sollen, die als Eingabedaten 110 gespeichert sind. Die Eingabedaten umfassen jegliche geeigneten Informationen, die im MapReduce-Rahmen 102 verarbeitet werden können. Bei einigen Implementierungen korrespondieren einige oder alle Eingabedaten 110 mit Daten, die von einer Werbedienstleistungsorganisation gesammelt wurden, wie etwa durch die Erfassung von Online-Abfragen durch assoziierte Benutzer, durch die Registrierung von in Suchmaschinen eingegebenen Abfragen und/oder durch automatische Crawling-Seiten, die im Internet verfügbar sind. Zum Beispiel können die Eingabedaten 110 uneingeschränkt mit Netzwerkdaten, Verkaufsdaten, Beobachtungsdaten, wissenschaftlichen Daten, Zufallsdaten, Bevölkerungsdaten, künstlerischen Daten, statistischen Daten und Kombinationen daraus korrespondieren. Nachstehend werden Beispiele für die Erlangung der Eingabedaten 110 durch die Vororganisation anderer Informationen beschrieben, wie etwa Rohdaten 111.
  • Für Situationen, in denen die hier besprochenen Systeme sich auf persönliche Informationen (z. B. die Abfrage-Historie) über Benutzer verlassen, können die Benutzer die Gelegenheit für Opt-ins/Opt-outs für Programme oder Funktionen erhalten, welche die persönlichen Informationen sammeln können. Zusätzlich können gewisse Daten auf einem oder mehreren Wegen anonymisiert werden, bevor sie gespeichert oder verwendet werden, so dass personenbezogene Informationen entfernt werden. Zum Beispiel kann die Identität eines Benutzers anonymisiert werden, sodass personenbezogene Informationen über den Benutzer nicht festgestellt werden können und jegliche identifizierten Präferenzen oder Interaktionen des Benutzers generalisiert (zum Beispiel auf Grundlage der demographischen Benutzerdaten) und nicht mit einem bestimmten Benutzer assoziiert werden. Als weiteres Beispiel können in Abfrageprotokollen gespeicherte Benutzerabfragen nach einem vorbestimmten Zeitraum gelöscht werden.
  • Die Eingabedaten 110 und die Rohdaten 111 können jegliches Datenformat aufweisen, das für die MapReduce-Operationen geeignet ist, darunter auch, jedoch nicht darauf beschränkt, ein binäres Datenformat, ein Klartextformat, ein Markup-Language-Format (z. B. XML) oder ein Bildformat.
  • Der MapReduce-Rahmen 102 umfasst eine Map-Operation 112 und eine Reduce-Operation 114. Bei einigen Implementierungen ist die Map-Operation 112 für die Verarbeitung von einigen oder allen Eingabedaten 110 konfiguriert und generiert mindestens ein intermediäres Schlüssel-/Wertepaar daraus. Bei einigen Implementierungen ist die Reduce-Operation 114 für die Verarbeitung von mindestens einem Teil des/der intermediären Schlüssel-/Wertepaar/e/s konfiguriert und generiert mindestens einen Ausgangswert daraus. Im Allgemeinen kann die Map-Operation 112 das Vorkommen eines jeden von multiplen Schlüsseln in den Eingabedaten 110 entdecken und die Reduce-Operation 114 kann Daten aus solchen Entdeckungen in nützliche Ausgabeinformationen zusammenfassen oder anderweitig bündeln (z. B. Häufigkeitstabelle).
  • Die Map-Operation 112 und/oder die Reduce-Operation 114 können als Aufgaben ausgeführt werden, die auf einen oder mehrere Prozessoren verteilt sind. Bei einigen Implementierungen umfasst der MapReduce-Rahmen 102 ein Cluster 116 von Verarbeitungseinheiten, wie etwa Maschinen 118 oder arbeitet anderweitig mit diesen zusammen. Jede Maschine 118 zum Beispiel kann ein standradmäßiges Gerät sein (z. B. ein PC) und diese Maschinen können mit Hilfe eines jeden geeigneten Kommunikationsprotokolls (z. B. Ethernet) miteinander als Netzwerk eingerichtet werden. Jede der Maschinen 118 hat mindestens einen Speicher 120, der entweder in das Gerät integriert oder kommunikativ mit diesem durch eine angemessene Verbindung gekoppelt (z. B. mit einem System-Bus). Der Speicher 120 wird zum Beispiel bei der Entdeckung des Vorkommens von Schlüsseln in den Eingabedaten 110 und/oder für die Zusammenfassung von Daten zur Generierung der Ausgabeinformationen genutzt.
  • Das System 100 hier umfasst ein Vororganisationsmodul 122, das eine oder mehrere vororganisierende Aktionen ausführt, um Daten vorab zu organisieren, wie etwa für darauffolgende MapReduce-Operationen. Bei einigen Implementierungen kann es allgemein vorkommen, dass bestimmte Arten großer Tabellen als Teil einer MapReduce-Operation verknüpft werden. Solche Tabellen können Teil der Rohdaten 111 sein oder anderswo gespeichert werden. In einem besonderen Beispiel soll als Teil der MapReduce-Operationen eine Transaktionstabelle mit mehr als einer Milliarde Einträgen (manchmal als „Faktentabelle” bezeichnet) mit einer Kundentabelle von hunderten Millionen Einträgen (manchmal als Dimensionstabelle bezeichnet) verknüpft werden. Kurz gesagt können einige oder alle der Rohdaten 111 dem vororganisierenden Modul 122 zur Verfügung gestellt werden, das seinerseits einige oder alle der Eingabedaten 110 im Ergebnis der Vororganisation generiert. Der Begriff Eingabedaten hier bedeutet, dass die Daten als Eingabe für ein MapReduce-Verfahren eingesetzt werden können.
  • Ein Beispiel für eine solche Vororganisation wird nun mit Verweis auf 2 beschrieben, die ein Beispiel 200 für die Vororganisation von Daten aus einer ersten Tabelle 202 und einer zweiten Tabelle 204 schematisch illustriert. Hier ist die erste Tabelle 202 als Faktentabelle gekennzeichnet und kann die eine Milliarde oder mehr Transaktionseinträge enthalten. Auf ähnliche Weise ist hier die zweite Tabelle 204 als Dimensionsdaten gekennzeichnet und kann zum Beispiel die Hunderten von Millionen oder mehr Kundeneinträge enthalten. Die Verknüpfung dieser Tabellen soll mit einem spezifischen Schlüssel erfolgen (z. B. Kunden-ID), der in beiden Tabellen auftritt. An diesem Punkt des Beispiels 200 jedoch sind die erste Tabelle 202 und die zweite Tabelle 204 nicht vororganisiert worden.
  • Die Vororganisation kann durch das Vororganisationsmodul 122 (1) erfolgen, wie zum Beispiel hier nachstehend dargestellt. Die Faktentabelle 202 wird auf der Grundlage eines anderen Schlüssels als der Verknüpfungsschlüssel in verschiedene Bereiche partitioniert. Bei einigen Implementierungen kann diese Partitionierung mit einem Datenschlüssel oder jedem anderen zeitbezogenen Schlüssel vorgenommen werden. Im Verlauf eines Jahres kumulierte Transaktionsdaten können in zwölf Bereichspartitionen aufgeteilt werden, eine für jeden Monat. Hier wird die Tabelle in der Tat in eine Zahl von M von Bereichspartitionen 206 partitioniert. Das bedeutet, dass in dem Beispiel mit der monatlichen Partitionierung jede der Bereichspartitionen 206 Transaktionseinträge im Zusammenhang mit einem bestimmten Monat umfassen würde.
  • Die Dimensionstabelle 204 wird mit dem Verknüpfungsschlüssel einer Hash-Partitionierung unterzogen. Bei einigen Implementierungen wird der Verknüpfungsschlüssel als der Partitionierungsschlüssel gewählt, weil erwartet wird, dass eine Verknüpfung der Faktentabelle und der Dimensionstabelle vorgenommen wird. Kundeneinträge können zum Beispiel unter Einsatz eines Kunden-ID-Schlüssels in Situationen einer Hash-Partitionierung unterzogen werden, in denen erwartet wird, dass der Schlüssel später bei der Verknüpfung der Tabellen eingesetzt wird. Hier ist die Dimensionstabelle 204 in eine Zahl von K von Hash-Fragmenten 208 aufgeteilt. Das bedeutet, dass in dem Beispiel mit den Kundenaufträgen jedes der Hash-Fragmente 208 sich auf eine bestimmte Gruppe von Kunden-IDs beziehen würde.
  • Bei einigen Implementierungen kann ein Modulo bei der Hash-Partitionierung eingesetzt werden (d. h. a Mod b, wobei a und b positive Zahlen sind). Nehmen wir einmal an, dass gewünscht wird, 250 Hash-Partitionen in den Dimensionsdaten zu haben (d. h., K = 1000). Dann wird ein einzigartiger Wert aus jedem Dimensionsdateneintrag gewählt (z. B. die Kunden-ID) und in diesem Beispiel wird ein Modulo für die Kunden-ID im Hinblick auf 250 erstellt. Das Ergebnis für jeden Dimensionsdateneintrag (d. h. der Rest, nachdem die Kunden-ID durch 250 geteilt wird) kann für die Zuordnung dieses spezifischen Dimensionsdateneintrags zu einer der 250 Hash-Partitionen genutzt werden.
  • Jede der Bereichspartitionen 206 wird auch im Hinblick auf den Verknüpfungsschlüssel einer Hash-Partitionierung unterzogen. Das generiert eine Anzahl von M von fragmentierten Bereichspartitionen 210. In diesem Beispiel werden die Fragmente für die erste fragmentierte Bereichspartition gezeigt (d. h. für „Bereich” 1). Das heißt, die Faktendaten der ersten Bereichspartition der Bereichspartitionen 206 wird unter einer Anzahl von N Hash-Fragmenten 212 aufgeteilt und so weiter für alle der M fragmentierten Bereichspartitionen 210.
  • Die Zahlen K, M und N sind Ganzzahlen (Integerzahlen). Darüber hinaus werden die Zahlen K und N so gewählt, dass eine von K und N ein integres Vielfaches der anderen ist. Das heißt, wenn die Dimensionsdaten (z. B. Kundeneinträge) auf K Wegen mit einem bestimmten Schlüssel fragmentiert werden, dann können die Faktendaten auf N = I·K Wegen fragmentiert werden, wobei I = 1, 2, ... ist. Weil die Hash-Fragmente 208 und die Hash-Fragmente 212 sich auf denselben Schlüssel gründen (z. B. Kunden-ID) etabliert das integre vielfache Verhältnis eine Korrespondenz zwischen den Hash-Fragmenten 208 und 212. Wenn es zum Beispiel 500 der Hash-Fragmente 212 in den Faktendaten und 250 der Hash-Fragmente 208 in den Dimensionsdaten gibt, dann besteht eine Korrespondenz von 2:1. Das bedeutet, es ist für jedes beliebige der 250 Hash-Fragmente 208 aufgrund des „Common-Key-Hashing” und des Verhältnisses zwischen den integren Zahlen bekannt, dass die korrespondierenden Fakteneinträge (z. B. die Fakteneinträge, für die die Kunden-IDs in diesem bestimmten Hash-Fragment 208 vorhanden sind) sich genau in zwei der 500 Hash-Fragmente 212 befinden.
  • In einer etwas anderen Formulierung ist für jedes beliebige der 500 Hash-Fragmente 212 bekannt, dass die korrespondierenden Dimensionsdateneinträge sich genau in einem der 250 Hash-Fragmente 208 befinden. Aus diesem Grund muss eine Verknüpfung, die die Transaktionseinträge des spezifischen Hash-Fragmentes 212 involviert, keinen Zugriff auf alle 250 Hash-Fragmente 208 haben. Eine solche Verknüpfung kann vielmehr durchgeführt werden, so lange mindestens das einzelne korrespondierende Hash-Fragment 212 zur Verfügung steht. Mit anderen Worten erfordert die Verknüpfungsoperation für dieses Transaktions-Hash-Fragment lediglich das Laden eines Bruchteils der Einträge aus der Dimensionstabelle und es ist bekannt, dass dieser Bruchteil an Dimensionsdaten sich in einem bestimmten der Hash-Fragmente 208 befindet.
  • In einer oder mehreren Operationen 214 werden Metadaten über die fragmentieren Bereichspartitionen 210 und über die Hash-Partitionen 208 an den MapReduce-Rahmen 102 geliefert. Das bedeutet, dass solche Metadaten verfügbar sind, wenn nachfolgende MapReduce-Operationen durchgeführt werden sollen. Zum Beispiel können die Metadaten die Information erhalten, dass die Faktentabelle 202 mit einem ersten Schlüssel in eine Anzahl von M von Bereichspartitionen 206 bereichsbezogen fragmentiert ist, dass jede der Bereichspartitionen 206 mit einem zweiten Schlüssel in eine Anzahl von N von Hash-Fragmenten 212 hash-partitioniert ist und dass die Dimensionstabelle 204 mit einem zweiten Schlüssel in eine Anzahl von K von Hash-Fragmenten 208 hash-partitioniert ist.
  • 3 ist ein Flussdiagramm 300 mit einem Beispiel der Durchführung einer MapReduce-Operation. Operationen können als computerlesbarer Code implementiert werden, der auf einem greifbaren computer-lesbaren Medium zur Umsetzung durch einen oder mehrere Prozessoren gespeichert ist, zum Beispiel in dem System 100 (1).
  • Bei 310 wird eine Map-Reduce-Anfrage empfangen. Eine solche Abfrage kann zum Beispiel generiert werden, um einen groß angelegten Datenverarbeitungsjob zu initiieren. Korrespondierende Daten – z. B. die Faktentabelle 202 (2) und/oder die Dimensionstabelle 204 (2) – werden ebenfalls empfangen oder können geladen oder früher gespeichert worden sein.
  • Bei 320 wird die Faktentabelle auf einer Wertbandbreite auf einen ersten Schlüssel gefiltert. Zum Beispiel kann die Bereichspartition, die alle Transaktionen für April umfasst, auf der Grundlage der MapReduce-Abfrage geladen werden und die anderen Bereichspartitionen können im Hinblick auf die Zwecke dieser MapReduce-Abfrage ignoriert werden.
  • Bei 330350 werden Operationen für jedes Hash-Fragment in der/den relevanten Bereichspartition/en vorgenommen. Bei 330 befindet sich ein korrespondierendes Hash-Fragment in den Dimensionsdaten. Zum Beispiel wird ein Hash-Fragment auf Grundlage der Kenntnis identifiziert, dass die Anzahl der Faktdaten-Hash-Fragmente ein bestimmtes integres Vielfaches der Anzahl der Dimensionsdaten-Hash-Fragmente ist.
  • Bei 340 wird das identifizierte Dimensionsdaten-Fragment in den Speicher geladen. In der Verteilung von Map-Operationen unter Maschinen im Cluster 116 (1) zum Beispiel kann das identifizierte Datenfragment einer bestimmten Map-Operation auf einer der Maschinen zugeordnet werden, die das Dimensionsdaten-Fragment in ihren Lokalspeicher lädt. Dadurch kann eine Filteroperation vorgenommen werden. Wenn die Dimensionsdaten zum Beispiel Kundeneinträge umfassen und nur Kunden, die in einem bestimmten Land angesiedelt sind, für die Abfrage relevant sind, dann sieht die Filterung vor, dass nur die Kundeneinträge aus diesem spezifischen Land aus dem identifizierten Dimensionsdaten-Fragment in den Speicher geladen werden. Eine solcher Filterung kann das Laden beschleunigen und/oder den Bedarf an Speicherkapazität reduzieren.
  • Bei 350 wird die Verknüpfung vorgenommen. Wenn die Dimensionsdaten in den verfügbaren Speicher passen (d. h. unter Inbetrachtnahme des gesamten verfügbaren freien Speicherraums), dann werden die Daten in den Speicher in einer Hash-Tabelle geladen und die Verknüpfung wird durch Streaming der Faktdaten und das Nachlesen eines jeden Eintrags durchgeführt. Wenn auf der anderen Seite das Faktdaten-Fragment nicht ganz auf einmal in den Speicher passt, wird die Verknüpfung auf andere Weise vorgenommen. Wenn zum Beispiel sowohl die Fakt- und Dimensionsfragmente mit dem Verknüpfungsschlüssel sortiert werden, können zwei Pointer für Datensätze der Eingabe und Verknüpfung eröffnet werden und eine Fusionsverknüpfung kann vorgenommen werden. Andernfalls kann mit den Dimensionsdaten eine On-Disk-Struktur geschaffen werden (wie etwa ein B-Baum) und im Verlauf des Streaming der Faktdaten können an diese Struktur Lookups ausgegeben werden. In diesem Fall wird oft ein LRU-Cache eingesetzt, um den Disk-Zugriff zu reduzieren.
  • Bei 360 werden eine oder mehrere MapReduce-Operationen vorgenommen. Bei einigen Implementierungen kann jeder lokale Mapper die aus der Verknüpfung verfügbaren Daten verarbeiten und ein oder mehrere intermediäre Schlüssel-/Wertepaare aus den Daten generieren und in darauffolgenden Reduce-Operationen können die Werte dieser Paare fusioniert, kumuliert oder anderweitig miteinander assoziiert werden, um einen oder mehrere aussagekräftige Ausgabewerte zu generieren. Wenn die Map-Operation zum Beispiel den Kundennamen mit dem Verkaufsumfang für jede Transaktion paart, der für die MapReduce-Abfrage relevant ist, kann die Reduce-Operation diese Verkaufsbeträge Kunde um Kunde zusammenfassen und eine übergreifende Verkaufsliste erstellen.
  • Bei 370 wird eine Response auf die MapReduce-Abfrage generiert. Bei einigen Implementierungen werden eine oder mehrere relevante Ausgaben des MapReduce-Verfahrens identifiziert und gespeichert. Ein Bericht kann zum Beispiel angezeigt, gedruckt, hörbar vorgelesen und/oder gespeichert werden.
  • Bei einigen Implementierungen können einige Operation in dem Flussdiagram 300 in einer anderen Reihenfolge ausgeführt werden.
  • 4 ist das schematische Diagramm eines generischen Computersystems 400. Im Einklang mit einer Implementierung kann das System 400 für die beschriebenen Operationen in Zusammenhang mit jeder der zuvor dargestellten computer-implementierten Methoden eingesetzt werden. Das System 400 umfasst einen Prozessor 410, einen Speicher 420, ein Speichergerät 430 und ein Eingabe-/Ausgabegerät 440. Alle der Komponenten 410, 420, 430 und 440 sind unter Einsatz eines Systembuses 450 miteinander verbunden. Der Prozessor 410 ist fähig, Anweisungen zur Umsetzung innerhalb des Systems 400 zu verarbeiten. Bei einer Implementierung ist der Prozessor 410 ein Single-Thread-Prozessor. Bei einer anderen Implementierung ist der Prozessor 410 ein Multi-Thread-Prozessor. Der Prozessor 410 ist fähig, Anweisungen zu verarbeiten, die in dem Speicher 420 oder im Speichergerät 430 gespeichert sind, um graphische Informationen für eine Benutzeroberfläche auf dem Eingabe-/Ausgabegerät 440 anzuzeigen.
  • Der Speicher 420 speichert Informationen innerhalb des Systems 400. Bei einigen Implementierungen ist der Speicher 420 ein computerlesbares Medium. Der Speicher 420 ist eine flüchtige Speichereinheit bei einigen Implementierungen und bei anderen Implementierungen eine nicht flüchtige Speichereinheit.
  • Das Speichergerät 430 ist in der Lage, Massenspeicher für das System 400 bereitzustellen. Bei einer Implementierung ist das Speichergerät 430 ein computerlesbares Medium. Bei verschiedenen anderen Implementierungen kann das Speichergerät 430 ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk oder ein Bandgerät sein.
  • Das Eingabe-/Ausgabegerät 440 liefert Eingabe-/Ausgabeoperationen für das System 400. Bei einer Implementierung umfasst das Eingabe-/Ausgabegerät 440 eine Tastatur und/oder ein Zeigegerät. Bei einer anderen Implementierung umfasst das Eingabe-/Ausgabegerät 440 eine Anzeige zur Darstellung graphischer Benutzeroberflächen.
  • Die beschriebenen Funktionen können in eine digitale Elektronikschaltung, Computerhardware, Firmware, Software oder Kombinationen derselben implementiert werden. Der Apparat kann in ein Computerprogrammprodukt implementiert werden, das greifbar ein einem Informationsträger verankert ist, z. B. in einem maschinenlesbaren Speichergerät, zur Umsetzung durch einen programmierbaren Prozessor und es können methodische Schritte von einem programmierbaren Prozessor unternommen werden, der ein Programm von Anweisungen zur Erfüllung von Funktionen der beschriebenen Implementierungen durch die Arbeit an Eingabedaten und die Generierung von Ausgabedaten umsetzt. Die beschriebenen Merkmale können vorteilhaft in einem oder mehreren Computerprogrammen implementiert werden, die auf einem programmierbaren System umsetzbar sind und die mindestens einen für den Empfang von Daten und Informationen von und die Übertragung von Daten und Informationen an einem Datenspeichersystem gekoppelten programmierbaren Prozessor, mindestens ein Eingabegerät und mindestens ein Ausgabegerät aufweisen. Ein Computerprogramm ist ein Satz von Anweisungen, die direkt oder indirekt in einem Computer zur Durchführung einer bestimmten Aktivität oder Herbeiführung eines bestimmten Ergebnisses eingesetzt werden können. Ein Computerprogramm kann in jeder beliebigen Art der Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen und kann in jeder beliebigen Form eingesetzt werden, darunter auch als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine oder andere Einheit, die für den Einsatz in einer Rechnerumgebung geeignet ist.
  • Für die Umsetzung eines Computerprogramms geeignete Prozessoren schließen beispielsweise sowohl allgemeine und als auch zweckbestimmte Mikroprozessoren sowie einen einzigen oder einen von multiplen Prozessoren einer jeglichen Art von Computer ein. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für die Umsetzung von Anweisungen und ein oder mehrere Speicher für das Speichern von Anweisungen und Daten. Im Allgemeinen wird ein Computer auch eine oder mehrere Massenspeichergeräte zur Speicherung von Datenbeständen umfassen oder mit diesen zu Kommunikationszwecken operativ gekoppelt sein; solche Geräte umfassen Magnetplatten wie etwa interne Festplatten und Wechselplatten, magnetooptische und optische Laufwerke. Speichergeräte, die für die greifbare Verankerung von Computerprogrammanweisungen und Daten geeignet sind, umfassen alle Arten von nicht flüchtigen Speichern, darunter beispielsweise auch Halbleiterspeicher wie EPROM, EEPROM und Flash-Speichergeräte, Magnetplatten wie etwa interne Festplatten und Wechselplatten, magnetooptische Laufwerke sowie CD-ROM- und DVD-ROM-Laufwerke. Der Prozessor und der Speicher können durch ASICs (application-specific integrated circuits, anwendungsspezifische integrierte Schaltkreise) ergänzt oder in diese mit einbezogen werden.
  • Um die Interaktion mit einem Benutzer zu ermöglichen, können die Funktionen auf einem Computer implementiert werden, der eine Anzeige wie etwa einen CRT-(cathode ray tube, Kathodenstrahlröhre) oder LCD-Monitor (liquid crystal display, Flüssigkristallanzeige) für die Anzeige von Informationen gegenüber dem Benutzer sowie eine Tastatur und ein Zeigegerät wie etwa eine Maus oder einen Trackball aufweist, womit der Benutzer Eingaben in den Computer vornehmen kann.
  • Die Funktionen können in einem Computersystem implementiert werden, das eine Backend-Komponente umfasst, wie etwa einen Datenserver oder eine Middleware-Komponente, wie etwa einen Anwendungsserver oder Internetserver oder das eine Frontend-Komponente beinhaltet, wie etwa einen Clientcomputer mit einer graphischen Benutzeroberfläche oder einem Internet-Browser oder mit einer beliebigen Kombination derselben. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, wie etwa ein Kommunikationsnetzwerk. Beispiele für Kommunikationsnetze umfassen z. B. LAN, WAN und die Computer und Netzwerke, die das Internet bilden.
  • Das Computersystem kann Clients und Server umfassen. Ein Client und Server befinden sich im Allgemeinen in Entfernung voneinander und interagieren typischerweise über ein Netzwerk wie das beschriebene. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.
  • Eine Anzahl von Ausführungsformen der Erfindung wurde beschrieben.
  • Trotzdem wird davon ausgegangen, dass verschiedene Modifikationen durchgeführt werden können, ohne vom Geist und Umfang der Erfindung abzuweichen. Dementsprechend liegen andere Ausführungsformen im Umfang der folgenden Ansprüche.

Claims (11)

  1. Ein Computerprogrammprodukt, das greifbar in einem computerlesbaren Speichermedium verankert ist und Anweisungen enthält, die bei Ausführung durch einen Prozessor eine Methode für die Vorbereitung der ersten und zweiten Tabelle auf ein MapReduce-Verfahren umsetzen, wobei die Methode das Folgende umfasst: Erhalt einer ersten Tabelle mit Erstdaten; Bereichspartitionierung der Erstdaten in Bereichspartitionen im Verlauf des Erhalts der ersten Tabelle auf der Grundlage von Bereichen eines ersten Schlüssels in den Erstdaten; Hash-Partitionierung der Erstdaten innerhalb jeder Bereichspartition in eine erste Anzahl von Hash-Partitionen auf der Grundlage eines zweiten Schlüssels; Erhalt einer zweiten Tabelle mit Zweitdaten; Hash-Partitionierung der Zweitdaten im Verlauf des Erhalts der zweiten Tabelle in eine zweite Anzahl von Hash-Partitionen auf der Grundlage des zweiten Schlüssels, wobei eine der ersten und zweiten Anzahl ein integres Vielfaches der anderen darstellt, und Bereitstellung von Metadaten zu den Bereichspartitionen sowie der verfügbaren ersten und zweiten Anzahlen von Hash-Partitionen für eine MapReduce-Maschine.
  2. Das Computerprogrammprodukt aus Anspruch 1, wobei der erste Schlüssel der Parameter eines Datums oder einer Uhrzeit ist, während die Methode im Weiteren die Assoziation jeder der Bereichspartitionen mit einem Datumsbereich oder einer Zeitspanne umfasst.
  3. Das Computerprogrammprodukt aus Anspruch 1, wobei die Erstdaten mit Geschäftstransaktionen korrespondieren und die Zweitdaten Dateieinträge über Teilnehmer an den Geschäftstransaktionen sind.
  4. Das Computerprogrammprodukt aus Anspruch 3, wobei der zweite Schlüssel ein Kundenidentitätsmerkmal ist.
  5. Ein Computersystem, welches das Folgende umfasst: einen Prozessor; und Ein computerlesbares Speichermedium, in dem Anweisungen gespeichert sind, die bei Ausführung durch einen Prozessor eine Methode der Verknüpfung der ersten und zweiten Tabelle für ein MapReduce-Verfahren umsetzen, wobei die Methode das Folgende umfasst: Erhalt einer ersten Tabelle mit Erstdaten; Bereichspartitionierung der Erstdaten in Bereichspartitionen im Verlauf des Erhalts der ersten Tabelle auf der Grundlage von Bereichen eines ersten Schlüssels in den Erstdaten; Hash-Partitionierung der Erstdaten innerhalb jeder Bereichspartition in eine erste Anzahl von Hash-Partitionen auf der Grundlage eines zweiten Schlüssels; Erhalt einer zweiten Tabelle mit Zweitdaten; Hash-Partitionierung der Zweitdaten im Verlauf des Erhalts der zweiten Tabelle in eine zweite Anzahl von Hash-Partitionen auf der Grundlage des zweiten Schlüssels, wobei eine der ersten und zweiten Anzahl ein integres Vielfaches der anderen darstellt, und Bereitstellung von Metadaten zu den Bereichspartitionen sowie der verfügbaren ersten und zweiten Anzahlen von Hash-Partitionen für eine MapReduce-Maschine.
  6. Ein Computerprogrammprodukt, das greifbar in einem computerlesbaren Speichermedium verankert ist und Anweisungen enthält, die bei Ausführung durch einen Prozessor eine Methode für ein MapReduce-Verfahren umsetzen, wobei die Methode das Folgende umfasst: Empfang einer MapReduce-Abfrage, die die Verknüpfung der ersten und zweiten Tabelle verlangt, wobei die erste Tabelle Bereichspartitionen auf der Grundlage eines ersten Schlüssels aufweist; Identifizierung von mindestens einer der Bereichspartitionen als relevant für die MapReduce-Abfrage, wobei die Bereichspartition eine erste Anzahl von Hash-Partitionen auf der Grundlage eines zweiten Schlüssels aufweist, während die zweite Tabelle eine zweite Anzahl von Hash-Partitionen auf der Grundlage des zweiten Schlüssels besitzt, wobei eine der ersten oder zweiten Anzahl ein integres Vielfaches der anderen darstellt; für jede der ersten Anzahl von Hash-Partitionen: Identifizierung von mindestens einer korrespondierenden Hash-Partition aus der zweiten Anzahl von Hash-Partitionen auf der Grundlage der ersten und zweiten Anzahl; Laden von mindestens einem Teil der identifizierten korrespondierenden Hash-Partitionen in den Speicher, und Verknüpfung der ersten Anzahl von Hash-Partitionen und der identifizierten korrespondierenden Hash-Partition, und Generierung einer Response auf die MapReduce-Abfrage unter Einsatz der verknüpften Hash-Partitionen.
  7. Das Computerprogrammprodukt aus Anspruch 6, wobei die MapReduce-Abfrage mindestens eine Einschränkung für Daten in der zweiten Tabelle spezifiziert, wobei die Methode im Weiteren die Anwendung eines Filters umfasst, so dass nur ein Teil der identifizierten korrespondierenden Hash-Partitionen in den Speicher geladen wird.
  8. Das Computerprogrammprodukt aus Anspruch 6, wobei der erste Schlüssel der Parameter eines Datums oder einer Uhrzeit ist, während die Methode im Weiteren die Assoziation jeder der Bereichspartitionen mit einem Datumsbereich oder einer Zeitspanne umfasst.
  9. Das Computerprogrammprodukt aus Anspruch 6, wobei die Erstdaten mit Geschäftstransaktionen korrespondieren und die Zweitdaten Dateieinträge über Teilnehmer an den Geschäftstransaktionen sind.
  10. Das Computerprogrammprodukt aus Anspruch 9, wobei der zweite Schlüssel ein Kundenidentitätsmerkmal ist.
  11. Ein Computersystem, welches das Folgende umfasst: einen Prozessor; und Ein computerlesbares Speichermedium, in dem Anweisungen gespeichert sind, die bei Ausführung durch einen Prozessor eine Methode der Verknüpfung der ersten und zweiten Tabelle für ein MapReduce-Verfahren umsetzen, wobei die Methode das Folgende umfasst: Empfang einer MapReduce-Abfrage, die die Verknüpfung der ersten und zweiten Tabelle verlangt, wobei die erste Tabelle Bereichspartitionen auf der Grundlage eines ersten Schlüssels aufweist; Identifizierung von mindestens einer der Bereichspartitionen als relevant für die MapReduce-Abfrage, wobei die Bereichspartition eine erste Anzahl von Hash-Partitionen auf der Grundlage eines zweiten Schlüssels aufweist, während die zweite Tabelle eine zweite Anzahl von Hash-Partitionen auf der Grundlage des zweiten Schlüssels besitzt, wobei eine der ersten oder zweiten Anzahl ein integres Vielfaches der anderen darstellt; für jede der ersten Anzahl von Hash-Partitionen: Identifizierung von mindestens einer korrespondierenden Hash-Partition aus der zweiten Anzahl von Hash-Partitionen auf der Grundlage der ersten und zweiten Anzahl; Laden von mindestens einem Teil der identifizierten korrespondierenden Hash-Partitionen in den Speicher, und Verknüpfung der ersten Anzahl von Hash-Partitionen und der identifizierten korrespondierenden Hash-Partition, und Generierung einer Response auf die MapReduce-Abfrage unter Einsatz der verknüpften Hash-Partitionen.
DE202012013427.2U 2011-04-29 2012-03-28 Verknüpfung von Tabellen in einem MapReduce-Verfahren Expired - Lifetime DE202012013427U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161480563P 2011-04-29 2011-04-29
US201161480563P 2011-04-29
US13/209,567 US8924426B2 (en) 2011-04-29 2011-08-15 Joining tables in a mapreduce procedure
US201113209567 2011-08-15

Publications (1)

Publication Number Publication Date
DE202012013427U1 true DE202012013427U1 (de) 2017-01-13

Family

ID=47068764

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202012013427.2U Expired - Lifetime DE202012013427U1 (de) 2011-04-29 2012-03-28 Verknüpfung von Tabellen in einem MapReduce-Verfahren

Country Status (6)

Country Link
US (1) US8924426B2 (de)
EP (1) EP2702510B1 (de)
CN (1) CN103620601B (de)
AU (1) AU2012250238B2 (de)
DE (1) DE202012013427U1 (de)
WO (1) WO2012148616A1 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9805101B2 (en) 2010-02-26 2017-10-31 Ebay Inc. Parallel data stream processing system
US9501483B2 (en) * 2012-09-18 2016-11-22 Mapr Technologies, Inc. Table format for map reduce system
US9336024B1 (en) 2012-12-27 2016-05-10 Google Inc. Clustering for parallel processing
US9372942B1 (en) 2013-03-15 2016-06-21 Dell Software Inc. System and method for facilitating data visualization via a map-reduce framework
US10235649B1 (en) 2014-03-14 2019-03-19 Walmart Apollo, Llc Customer analytics data model
US9311380B2 (en) 2013-03-29 2016-04-12 International Business Machines Corporation Processing spatial joins using a mapreduce framework
KR101480867B1 (ko) * 2013-05-31 2015-01-09 삼성에스디에스 주식회사 맵리듀스 연산 가속 시스템 및 방법
JP6069503B2 (ja) * 2013-07-01 2017-02-01 株式会社日立製作所 系列データ並列分析基盤およびその並列分散処理方法
US20150127649A1 (en) * 2013-11-01 2015-05-07 Cognitive Electronics, Inc. Efficient implementations for mapreduce systems
US9465653B2 (en) 2013-12-11 2016-10-11 Dropbox, Inc. Automated invalidation of job output data in a job-processing system
US10372492B2 (en) * 2013-12-11 2019-08-06 Dropbox, Inc. Job-processing systems and methods with inferred dependencies between jobs
US9563697B1 (en) 2014-02-24 2017-02-07 Amazon Technologies, Inc. Calculating differences between datasets having differing numbers of partitions
US10565538B1 (en) 2014-03-14 2020-02-18 Walmart Apollo, Llc Customer attribute exemption
US10733555B1 (en) 2014-03-14 2020-08-04 Walmart Apollo, Llc Workflow coordinator
US10235687B1 (en) 2014-03-14 2019-03-19 Walmart Apollo, Llc Shortest distance to store
US10346769B1 (en) 2014-03-14 2019-07-09 Walmart Apollo, Llc System and method for dynamic attribute table
US20150326644A1 (en) * 2014-05-07 2015-11-12 Microsoft Corporation Traveling map-reduce architecture
US20150347555A1 (en) * 2014-05-31 2015-12-03 Linkedin Corporation Waterwheel sharding
US10042876B2 (en) * 2014-09-17 2018-08-07 International Business Machines Corporation Sort-merge-join on a large architected register file
US10089357B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for generating partition-based splits in a massively parallel or distributed database environment
US10387421B2 (en) 2014-09-26 2019-08-20 Oracle International Corporation System and method for generating size-based splits in a massively parallel or distributed database environment
US10528596B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation System and method for consistent reads between tasks in a massively parallel or distributed database environment
US10394818B2 (en) 2014-09-26 2019-08-27 Oracle International Corporation System and method for dynamic database split generation in a massively parallel or distributed database environment
US10380114B2 (en) 2014-09-26 2019-08-13 Oracle International Corporation System and method for generating rowid range-based splits in a massively parallel or distributed database environment
US10078684B2 (en) 2014-09-26 2018-09-18 Oracle International Corporation System and method for query processing with table-level predicate pushdown in a massively parallel or distributed database environment
US10089377B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment
US9898348B2 (en) 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US9858303B2 (en) 2015-01-12 2018-01-02 International Business Machines Corporation In-memory latch-free index structure
EP3262818B1 (de) * 2015-02-23 2023-04-19 Siemens Aktiengesellschaft Verteiltes datenverarbeitungssystem für eingebettete steuergeräte und korrespondierendes verfahren
KR101928529B1 (ko) 2015-06-10 2018-12-13 울산과학기술원 코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법
US10482076B2 (en) * 2015-08-14 2019-11-19 Sap Se Single level, multi-dimension, hash-based table partitioning
US10331645B2 (en) 2015-08-17 2019-06-25 International Business Machines Corporation Data-partitioning for processing loosely ordered relations
US10430408B2 (en) 2015-09-24 2019-10-01 International Business Machines Corporation Technology to reduce cost of concatenation for hash array
US10268710B2 (en) 2015-10-07 2019-04-23 Oracle International Corporation Relational database organization for sharding
US10726015B1 (en) * 2015-11-01 2020-07-28 Yellowbrick Data, Inc. Cache-aware system and method for identifying matching portions of two sets of data in a multiprocessor system
CN105468740B (zh) * 2015-11-24 2019-03-08 网易(杭州)网络有限公司 一种游戏玩家数据的存储、分析方法及装置
CN106096877A (zh) * 2016-05-31 2016-11-09 乐视控股(北京)有限公司 一种数据生成方法及生成系统
KR101951999B1 (ko) 2016-08-31 2019-05-10 재단법인대구경북과학기술원 낮은 데이터 중복으로 빠른 쿼리 처리를 지원하는 관계형 데이터베이스 저장 시스템, 저장 방법 및 관계형 데이터베이스 저장 방법에 기초한 쿼리를 처리하는 방법
US10585915B2 (en) 2017-10-25 2020-03-10 International Business Machines Corporation Database sharding
US11194773B2 (en) 2019-09-12 2021-12-07 Oracle International Corporation Integration of existing databases into a sharding environment
CN112364030B (zh) * 2021-01-12 2021-04-06 支付宝(杭州)信息技术有限公司 一种基于可信账本数据库的业务衍生记录存储方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765146A (en) * 1993-11-04 1998-06-09 International Business Machines Corporation Method of performing a parallel relational database query in a multiprocessor environment
US6609131B1 (en) 1999-09-27 2003-08-19 Oracle International Corporation Parallel partition-wise joins
US6931390B1 (en) * 2001-02-27 2005-08-16 Oracle International Corporation Method and mechanism for database partitioning
MXPA06009355A (es) 2004-02-21 2007-03-01 Datallegro Inc Base de datos paralela ultra - nada compartida.
US7590620B1 (en) 2004-06-18 2009-09-15 Google Inc. System and method for analyzing data records
US7650331B1 (en) 2004-06-18 2010-01-19 Google Inc. System and method for efficient large-scale data processing
US7756919B1 (en) 2004-06-18 2010-07-13 Google Inc. Large-scale data processing in a distributed and parallel processing enviornment
US8126870B2 (en) * 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US8935232B2 (en) * 2010-06-04 2015-01-13 Yale University Query execution systems and methods
US9495427B2 (en) 2010-06-04 2016-11-15 Yale University Processing of data using a database system in communication with a data processing framework

Also Published As

Publication number Publication date
AU2012250238A1 (en) 2013-11-14
CN103620601A (zh) 2014-03-05
EP2702510B1 (de) 2019-09-18
AU2012250238B2 (en) 2016-07-28
EP2702510A1 (de) 2014-03-05
US20120278323A1 (en) 2012-11-01
US8924426B2 (en) 2014-12-30
CN103620601B (zh) 2017-04-12
WO2012148616A1 (en) 2012-11-01

Similar Documents

Publication Publication Date Title
DE202012013427U1 (de) Verknüpfung von Tabellen in einem MapReduce-Verfahren
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE112015005728B4 (de) Automatisches Auffinden von Konfigurationselementen
DE60121231T2 (de) Datenverarbeitungsverfahren
DE202016005239U1 (de) Graph-basierte Abfragen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112013001308T5 (de) Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung
DE202011110873U1 (de) Skalierbare Wiedergabe von großen räumlichen Datenbanken
DE112015000347T5 (de) Verarbeiten von Datensätzen in einer Ablage für große Datenmengen
DE112012005037T5 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112018004222T5 (de) Datenbankaufteilung
DE102013216273A1 (de) Umwandlung von Datenbanktabellenformaten auf der Grundlage von Benutzerdatenzugriffsmustern in einer vernetzten Datenverarbeitungsumgebung
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE102014204842A1 (de) Clustering von Daten
DE10113577A1 (de) Verfahren, Computerprogrammprodukt und Computersystem zur Unterstützung mehrerer Anwendungssysteme mittels eines einzelnen Datenbank-Systems
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102013222384A1 (de) Sicherheits-Screening auf Kontextgrundlage für Zugriff auf Daten
DE102013208930A1 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
EP3520014B1 (de) Verfahren und system zum anonymisieren von datenbeständen
DE112019006667T5 (de) Nutzen von blockchaintechnologie zum prüfen eines cloud-dienstes für die datenschutzkonformität
DE102011101791A1 (de) Verfahren, vorrichtungen und herstellungsgegenstände zumbewerten des einflusses von websites
DE102013200355A1 (de) Zusammenfügen von Dokumenten aud der Grundlage der Kenntnis eines Dokumentenschemas
DE112013003205T5 (de) Verfahren und Vorrichtung zum Verarbeiten von Datenbankdaten in einem verteilten Datenbanksystem
DE112015001914T5 (de) Dauerhaftes Speichern und Verwalten von Anwendungsnachrichten
DE202015104128U1 (de) Datenzugriffssystem

Legal Events

Date Code Title Description
R150 Utility model maintained after payment of first maintenance fee after three years
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R071 Expiry of right