-
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 330–350 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.