DE60022802T2 - System und Verfahren zum Übertragen verteilter Datensätze über mehrere Fäden - Google Patents

System und Verfahren zum Übertragen verteilter Datensätze über mehrere Fäden Download PDF

Info

Publication number
DE60022802T2
DE60022802T2 DE60022802T DE60022802T DE60022802T2 DE 60022802 T2 DE60022802 T2 DE 60022802T2 DE 60022802 T DE60022802 T DE 60022802T DE 60022802 T DE60022802 T DE 60022802T DE 60022802 T2 DE60022802 T2 DE 60022802T2
Authority
DE
Germany
Prior art keywords
record
data
communication
section
sections
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 - Fee Related
Application number
DE60022802T
Other languages
English (en)
Other versions
DE60022802D1 (de
Inventor
Wojciech Gasior
Aaron Hughes
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE60022802D1 publication Critical patent/DE60022802D1/de
Application granted granted Critical
Publication of DE60022802T2 publication Critical patent/DE60022802T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf Datenbankabrufsysteme und genauer gesagt auf das Aufteilen großer Datensätze für die Übertragung über mehrsträngige Pfade durch paralleles Laden.
  • Datenbanken stellen in vielen Anwendungen ein wichtiges Datenverarbeitungsgebiet dar. Sie werden oft verwendet, um große Mengen an Information zu speichern und dann in effizienter Weise ausgewählte Bereiche der Information aufzurufen. Viele derzeitige Systeme verwenden einen Datenbankansatz von Client/Server, bei welchem Anwendungsprogramme, die auf Clients laufen, auf ein zentrales Datenbankverwaltungssystem (DBMS) zugreifen, das in einem Datenbankserver liegt. Um in effizienter Weise auf die Information in der Datenbank zuzugreifen, bilden die Clients Anfragen, die Informationen mit ausgewählten Eigenschaften anfordern. Diese Anfragen werden an den DBMS-Server übermittelt, der die gewünschte Information aufruft, welche die in der Anfrage spezifizierten Eigenschaften erfüllt. Die Ergebnisse (üblicherweise als „Ergebnissatz" bezeichnet, werden an die Clients zurückgeliefert.
  • Die Fähigkeit, Anfragen für das Anfordern von Information in der Datenbank zu bilden, ermöglicht es einem individuellen Benutzer, die Datenbank nach der gewünschten Information zu befragen. In anderen Fällen ist es jedoch wünschenswert, in der Lage zu sein, große Blöcke an Daten in der Datenbank an einen gegebenen Client oder von einem Client zu einem gegebenen Server zu übertragen. Die Übertragung großer Blöcke von Daten innerhalb eines Datenbankverwaltungssystems von einem Client zu einem Server kann typischerweise über mehrere verschiedene Arten von Verbindungssystemen durchgeführt werden. Ein Typ eines solchen Systems ist ein einfaches Verbinden über eine Telefonleitung, wie z. B. ein Einwählen unter Verwendung eines Modems, wobei der Server den Client anwählt und damit fortfährt, den Client nach dem Datenblock zu fragen und dann die Daten über die Modemverbindung auf den Server übertragen lässt. Dieses System sieht einen seriellen Datenübertragungsansatz vor und kann in Anbetracht der begrenzten Übertragungsraten, die derzeit bei Datenverbindungen über Telefon verfügbar sind, ziemlich langsam sein. Ein zweiter Typ an Übertragung kann ausgeführt werden über ein Netzwerksystem mit einem privaten Netzwerk, welches auch als Intranet bekannt ist, wobei der Client und der Server über das Netzwerk miteinander verbunden sind, um eine relativ augenblickliche Kommunikation zwischen den Mitgliedern des Netzwerks zu ermöglichen. Ein Kommunikationsknoten verbindet den Client mit dem Server innerhalb des Netzwerksystems, um einen Strang, bzw. Verbindungspfad (A. d. Ü.: wörtlich: Faden) zu bilden. Das System ist typischerweise viel schneller als die Modemleitung der Telefonverbindung, wegen der hohen Übertragungsraten, die innerhalb von Netzwerksystemen erhältlich sind. Dieser Ansatz einer „einsträngigen" (einfädigen) oder seriellen Übertragung für das Übertragen großer Blöcke von Daten an einen anfordernden Server können bei der derzeitigen Datenübertragung immer noch ziemlich zeitraubend sein wegen der seriellen Natur der Übertragung.
  • Ein weiteres System, welches eine Datenbank und Zugriff auf die Datenbank für eine Mehrzahl von Benutzern bereitstellt, ist ein weiträumiges Netzwerk (Wide Area Network – WAN), welches auch innerhalb eines Intranetsystems liegt. Ein WAN enthält typischerweise mehrere Verbindungsknoten, welche mehrere Verbindungen von einer Quelle zu einer anderen ermöglichen. Es werden jedoch selten durch Anwendungen mehrere Verbindungen verwendet, um zwischen einem Client und einem Server innerhalb eines WAN zu kommunizieren. Da die vollständige Kapazität des Netzwerkes durch die Anwendung nicht vollständig ausgenutzt wird, ist die Übertragungsrate immer noch langsam. Es gibt kein bekanntes Verfahren oder System, welches ermöglicht, daß ein großer Datensatz, wie z. B. ein großer Bereich der Datenbank, wenn nicht die gesamte Datenbank, über die Mehrzahl von Knoten in paralleler Weise übertragen wird.
  • Daher besteht ein Bedarf daran, in der Lage zu sein, große Datensätze über ein Kommunikationssystem, welches mehrere Knoten hat, über die mehreren Knoten zu übertragen. Was dann benötigt wird, ist ein System oder eine Verfahren, welches ermöglicht, daß Daten über mehrere Knoten in paralleler Weise übertragen werden.
  • In „The Parallel I/O Architecture of the High-Performance Storage System (HPSS)" von Watson und Coyne, in Proceedings of the Fourteenth IEEE Symposium on Mass Storage Systems, 11. bis 14. September 1995, Monterey, California, USA, wird die Verwendung paralleler Datenübertragungstechniken für den Clientzugriff auf Speicher, Übertragungen von Peripherie zu Peripherie und Übertragungen entfernt gelegener Dateien beschrieben.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Besondere und bevorzugte Aspekte der Erfindung werden in den beigefügten unabhängigen und abhängigen Ansprüchen dargelegt. Merkmale der abhängigen Ansprüche können mit denen der unabhängigen Ansprüche in geeigneter Weise kombiniert werden und auch in anderen Kombinationen, als denjenigen, die in den Ansprüchen ausdrücklich dargelegt sind.
  • Gemäß der vorliegenden Erfindung werden ein Verfahren und ein System zum Aufbrechen eines Datensatzes in eine Mehrzahl von Abschnitten bzw. Bruchstücken für die parallele Übertragung über eine Mehrzahl von Kommunikationsknoten bereitgestellt. Das System weist eine Mehrzahl von Kommunikationsknoten auf, die mit den ersten und zweiten Computerspeicherorten verbunden sind. Jeder aus der Mehrzahl von Kommunikationsknoten dient als ein Kommunikationsstrang bzw. -faden. Eine Datenübertragungssteuerung wird mit dem ersten Computerspeicherort und der Mehrzahl von Kommunikationsknoten verbunden. Die Datenübertragungssteuerung wählt eine Anzahl von Kommunikationssträngen aus, damit sie als Datenübertragungsglieder zwischen der ersten und der zweiten Computerspeicherstelle dienen. Ein Datenaufteiler ist ebenfalls vorgesehen, welcher mit dem ersten Computerspeicherort verbunden ist. Der Datenaufteiler reagiert auf eine Datensatzübertragungsanforderung, dadurch, daß er den Datensatz in übertragbare Datensatzabschnitte aufteilt. Der Datensatz besteht aus Datenzeilen, die einen Gesamtbereich haben, so daß eine Abschnittsspalte für die Markierung jedes Datensatzabschnittes bereitgestellt wird, wobei ein Teilbereich von Datenreihen für die Definition jedes Datensatzabschnittes ausgewählt wird und der Teilbereich von Datenreihen einem gegebenen Datensatzabschnitt zugeordnet wird. Die Datenübertragungssteuerung überträgt die Datensatzabschnitte über die Kommunikationsstränge parallel, sobald die Abschnitte bereit sind.
  • In einer ersten Ausführungsform wird der Datensatz in eine Anzahl von Datensatzabschnitten aufgeteilt, welche gleich der Anzahl ausgewählter Kommunikationsstränge ist. Dies ermöglicht, daß die Datensatzabschnitte mit den Kommunikationssträngen 1:1 korrespondieren.
  • In einer zweiten Ausführungsform wird der Datensatz in einer Anzahl von Datensatzabschnitten aufgeteilt, die größer ist als die Anzahl der ausgewählten Kommunikationsstränge, und sie werden nicht nur parallel über die mehreren Stränge, sondern auch seriell hintereinander verarbeitet, wobei die schnelleren Kommunikationsstränge in der Lage sind, die zusätzlichen Datenabschnitte zu handhaben.
  • Ein zusätzliches Merkmal der verteilten Computerumgebung ist die Fähigkeit der Datenübertragungssteuerung bzw. des Datenübertragungscontrollers, Zugriff auf einen übertragenen Datensatzabschnitt zu gewähren, bevor die übrigen Datensatzabschnitte vollständig übertragen und dann zu dem ursprünglichen Datensatz wieder zusammengesetzt sind. Dies ermöglicht es einem Benutzer, auf die Daten innerhalb irgendeines Datensatzabschnittes, der vollständig übertragen worden ist, vor dem eigentlichen Zusammensetzen des ursprünglichen Datensatzes zuzugreifen. Während der Datenaufteilung definiert der Datenaufteiler jeden Abschnitt auf der Basis der Anzahl der Datenzeilen, die innerhalb des Datensatzes verwendet werden. Der Datenaufteiler teilt auch die Datenzeilen zwischen den Abschnitten so gleichmäßig wie möglich auf, ohne irgendwelche der Datenzeilen zwischen getrennten Abschnitten aufzuteilen bzw. zu fragmentieren.
  • Das Verfahren wird verwendet innerhalb einer verteilten Computerumgebung, welche einen ersten Computerspeicherort, einen zweiten Computerspeicherort und eine Mehrzahl von Kommunikationsknoten aufweist, die die ersten und zweiten Computerspeicherorte miteinander verbinden. Das Verfahren sieht das Übertragen eines Datensatzes zwischen den ersten und zweiten Computerspeicherorten vor und läuft folgendermaßen ab. Es wird eine Anfrage nach einem Datensatz oder einem Teil eines Datensatzes gemacht, der zwischen den ersten und zweiten Computerspeicheror ten übertragen werden soll. Der Datensatz besteht aus Datenzeilen bzw. -reihen, welche einen Gesamtbereich haben bzw. umfassen, so daß eine Aufteilungsspalte für das Markieren jedes Datensatzabschnittes bereitgestellt wird, wobei ein Teilbereich von Datenzeilen, der jeden Datensatzabschnitt definieren soll, ausgewählt wird, und wobei der Teilbereich von Datenzeilen einem gegebenen Datensatzabschnitt zugeordnet wird. Wenn der Datensatz festgelegt ist, teilt der Prozess den Datensatz in übertragbare Datensatzabschnitte auf. Der Prozess bildet eine Mehrzahl von gleichzeitigen Kommunikationssträngen, die aus der Mehrzahl von Kommunikationsknoten ausgewählt werden. Sobald die Abschnitte gebildet worden und die Kommunikationsstränge bereitgestellt sind, überträgt der Prozess die Datensatzabschnitte parallel über die Mehrzahl von Kommunikationssträngen zwischen den ersten und zweiten Computerspeicherorten. Wenn die Kommunikationsstränge gebildet werden, kann die Anzahl der Kommunikationsstränge gleich der Anzahl von Datensatzabschnitten gewählt werden. In ähnlicher Weise kann die Anzahl von Datensatzabschnitten die tatsächliche Anzahl von verfügbaren Kommunikationssträngen übersteigen.
  • Wenn die Anzahl von Datensatzabschnitten die Anzahl von Kommunikationssträngen übersteigt, wird über jeden Kommunikationsstrang jeweils ein Abschnitt parallel übertragen. Nur wenn die Datensatzübertragung innerhalb eines Abschnittes abgeschlossen ist und der übertragende Strang verfügbar wird, wird eine weitere Übertragung eines Datensatzabschnittes über den nun verfügbaren Kommunikationsstrang ausgeführt. Die Fähigkeit, sowohl parallele als auch serielle Übertragungen von Datensatzabschnitten durchzuführen, ermöglicht es dem Verfahren, die Übertragungsrate des aufgeteilten Datensatzes auf der Basis der Anzahl von verfügbaren Kommunikationssträngen und der unterschiedlichen Übertragungsgeschwindigkeiten für jeden Kommunikationsstrang zu optimieren.
  • Das Verfahren ermöglicht einem Benutzer oder System auch, Zugriff auf vollständige übertragene Datensatzabschnitte zu erlangen, bevor die vollständige Übertragung aller Datensatzabschnitte und ihre Wiederzusammensetzung zu dem ursprünglichen Datensatz erfolgt ist. Der Teilbereich von Datenzeilen für jeden Datensatzabschnitt wird so definiert, daß er keinen anderen Teilbereich von Datenzeilen für irgendeinen anderen Datensatz überlappt. Dies verhindert eine Fragmentierung von Datenzeilen zwischen den Abschnitten, die anderenfalls die Daten beschädigen würde. Der Teilbereich wird in einer solchen Weise ausgewählt, daß er im wesentlichen gleichmäßig verteilte Größen bereitstellt, jedoch ohne exakt identische Größen zwischen den Abschnitten. Weiterhin sieht das Verfahren die Wiederzusammensetzung der Datensatzabschnitte zu dem ursprünglichen Datensatz vor, nachdem die Übertragung abgeschlossen worden ist. Die vorliegende Erfindung enthält weiterhin ein Computerprogrammprodukt für die Verwendung in einem verteilten Computersystem, wie es zuvor beschrieben wurde. Das Computerprogrammprodukt enthält einen Computerprogrammcode, der in einer Art und Weise ähnlich dem Verfahren der vorliegenden Erfindung arbeitet. Das Computerprogrammprodukt ermöglicht, daß eine Softwareimplementierung der Erfindung auf einem verteilten Computersystem, wie z. B. einem LAN oder WAN oder dem Internet ausgeführt wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Nachstehend werden beispielhafte Ausführungsformen der Erfindung lediglich in Form von Beispielen beschrieben, und zwar unter Bezug auf die beigefügten Figuren, von denen:
  • 1 ein schematisches Blockdiagramm eines Client-Server-Systems ist, auf welchem die vorliegende Erfindung ausgeführt werden kann,
  • 2 ein schematisches Blockdiagramm ist, welches die Wechselwirkung zwischen Clientobjekt, Geschäftsobjekten und Anfrageobjekten in einem dreistufigen System veranschaulicht,
  • 3 ein schematisches Diagramm ist, welches eine Zuordnungstabelle für das Zuordnen von sortierten Datenzeilen innerhalb eines Datensatzes zu ausgewählten Abschnitten für die nachfolgende Übertragung veranschaulicht,
  • 4 ein Flussdiagramm der Schritte zeigt, die beim Bereitstellen der Anzahl von Abschnitten innerhalb eines Datensatzes verwendet werden, der übertragen werden soll, ebenso wie die Anzahl von Kommunikationssträngen, die verwendet werden, um die Übertragung von Datensatzabschnitten gemäß der vorliegenden Erfindung durchzuführen.
  • GENAUE BESCHREIBUNG DER SPEZIELLEN AUSFÜHRUNGSFORM
  • 1 ist ein Blockdiagramm eines Systems 100, auf welchem ein Datensatzverteilungswerkzeug, welches gemäß der vorliegenden Erfindung aufgebaut ist, ablaufen kann. Wie dargestellt, ist das System 100 eine verteilte Rechnerumgebung, welche eine Mehrzahl einzelner Computerknoten 102, 104, 106 und 108 aufweist. Die Knoten sind funktionell organisiert als Clients 102, 104 und 106 und zumindest ein Server 108, welche über das Netzwerk 105 miteinander verbunden sind. Jeder Knoten, sei es ein Client 102, 104, 106 oder ein Server 108, ist ein konventionell programmierter, digitaler Computer, der jeweils eine zentrale Verarbeitungseinheit (CPU) 118, 122 und einen Hauptspeicher 112, 124 enthält, welcher mit der CPU 118, 122 verbunden ist. Zusätzlich kann jeder Client 102106 vom Server 108 Benutzerschnittstelleneinrichtungen, wie z. B. einen Monitor 114, eine Tastatur 116, eine Maus 117 und eine Speichereinrichtung 112 (in 1 beispielhaft nur für einen Client 102 dargestellt) enthalten. Der Server 108 enthält eine Datenbank 110, wie z. B. eine relationale Datenbank, ein Dateisystem oder ein anderes organisiertes Datenspeichersystem. Der zentrale Systembus 105 enthält eine Mehrzahl von Kommunikationsknoten 126, 128 und 130, welche Kommunikationswege zwischen einem Client 102106 und dem Server 108 oder zwischen einem ersten und einem zweiten Client 102106 bereitstellen. Schließlich kann das System 100 Einrichtungen enthalten, um computerlesbare Speichermedien (nicht dargestellt) anzunehmen, und kann mit dem Netzwerk 105 verbunden sein, kann mit dem Netzwerk 105 verbunden sein, um Daten- und Steuersignale auszutauschen, welche als ein Computerdatensignal in einer Trägerwelle übermittelt werden.
  • In der beschriebenen Ausführungsform ist jeder Knoten 102108 ein mit einem Netzwerk verbindbarer Computer, wie z. B. eine Sun SparcStationTM5 workstation, die unter dem SolarisTM-Betriebssystem läuft, eine Version des UNIX®-Betriebssystems, oder ein IBM-kompatibler Computer, der unter dem Windows NTTM-Betriebssystem läuft. Die Verwendung der Systeme und Prozesse, die hier beschrieben und vorgeschlagen werden, sind jedoch nicht auf eine bestimmte Computerkonfiguration beschränkt. SparcStationTM und SolarisTM sind Marken von Sun Microsystems, Inc., Mountain View, Kalifornien. UNIX® ist eine registrierte Marke von Santa Cruz Operation, Santa Cruz, Kalifornien, Windows NTTM ist eine Marke von der Microsoft Corporation in Redmond, Washington.
  • Jeder Kommunikationsknoten 126130 ist ein Netzwerkübertrager, welcher Datenpakete, die von einem Knoten 102108 an einen anderen ähnlichen Knoten gesendet werden, empfängt. Das Netzwerksystem leitet typischerweise Datenpakete auf der Basis des zeitlich schnellsten Pfades zwischen dem anfordernden Knoten und dem empfangenden Knoten 102108. Da eine Mehrzahl von Kommunikationsknoten 126130 bereitgestellt ist, ist es möglich, mehrere Knoten zu verwenden, wobei jeder Knoten einen einzelnen Kommunikationsstrang repräsentiert, um ein mehrsträngiges Übertragungssystem gemäß der vorliegenden Erfindung zu bilden. Das System 100 kann ein großräumiges Netzwerk (WAN) sein, in welchem der Anwendungsclient und der Datenbankserver durch viele Knoten 126130 oder hops getrennt sein können, die eine hohe Netzwerklatenz haben.
  • Weiterhin kann jeder Knoten 102108 als eine Datenübertragungssteuerung 132 und als ein Datenaufteiler 134 arbeiten. Die Datenübertragungssteuerung 132 stellt die Gesamtzahl von Kommunikationssträngen bereit, die verwendet werden können, um eine parallele Übertragung eines aufgeteilten Datensatzes zwischen ausgewählten Knoten bereitzustellen, ebenso wie die eigentliche Übertragung der Abschnitte über die Stränge. Der Knoten, der entweder der übertragende oder der empfangende Knoten ist, kann entweder als Datenübertragungssteuerer 132, als Datenaufteiler 134 oder als beides dienen. Der Datenaufteiler 134 zerschneidet den zu übertragenden Datensatz und stellt auch die Wiederzusammensetzung des Datensatzes bereit, nachdem alle aufgeteilten Abschnitte des Datensatzes erfolgreich an den gewünschten Knoten übertragen wurden.
  • Verteilte Rechnerumgebungen können logisch als ein Satz von zusammenwirkenden Softwarekomponenten betrachtet werden, die als „Objekte" bezeichnet werden, und die auf einem oder mehreren Computern ausgeführt werden, welche durch ein Netzwerk verbunden sind. Die individuellen Anwendungen, die auf jedem Computer laufen, können einen Satz von standardmäßigen oder anwendungsspezifischen Objekten gemeinsam verwenden und das Ausführen einer Anwendung kann dazu führen, daß sie mit anderen Softwareobjekten, die lokal und über das Netzwerk verfügbar sind, in Wechselwirkung tritt und diese verwendet. Jedes derartige Objekt kann seinerseits andere Softwareobjekte verwenden. Demnach kann eine Anwendung in einer verteilten Rechnerumgebung aus der Kombination von anwendungsspezifischen Objekten und den kombinierten lokalen und entfernten Objekten bestehen, die sie verwendet. Wenn ein Objekt einen Vorgang bzw. eine Operation auf einem anderen Objekt aufruft, wird das aufrufende Objekt als der „Client" bezeichnet, während das angerufene Objekt als der „Server" bezeichnet wird. 2 ist ein schematisches Blockdiagramm einer Client/Server-Umgebung 200 einer Datenbank, welche Datenanforderungsobjekte 208 und 214 verwendet, wie sie möglicherweise in dem System 100 nach 1 implementiert sein könnten. Die Umgebung 200 ist funktionell in drei Stufen aufgebaut. In der obersten Stufe 203 führt ein Client 102 (dargestellt in 1) eine Anwendung 202 aus. Die Anwendung 202 steht in Wechselwirkung mit der Geschäftslogik in der mittleren Stufe 205, wie es durch den Pfeil 204 schematisch angedeutet wird. Die Geschäftslogik ist in Form eines oder mehrere Geschäftsobjekte 206 implementiert (nur ein Geschäftsobjekt 206 ist dargestellt) und sie bildet ihrerseits eine Schnittstelle mit Datenanforderungsobjekten 208 und 214. Sowohl das Geschäftsobjekt 206 als auch die Datenanforderungsobjekte 208 und 214 können entweder auf einem Client 102 oder einem Server 108 (dargestellt in 1) ausgeführt werden. Andere Kombinationen und Konfigurationen von Objekten, einschließlich eines Geschäftsobjektes 206 oder von Datenanforderungsobjekten 208 und 214 sind vorstellbar.
  • In der untersten Stufe 207 enthalten ein Server 108 und eine zugehörige Datenbank 110 (dargestellt in 1) Datenbankverwaltungssysteme (DBMS-Systeme) 218 und 222 (welche auf dem Server 108 ausgeführt werden können), und zwar zusammen mit zugehöigen Datenbanken 224 bzw. 226. Die Datenanforderungsobjekte 208, 214 ermöglichen es der in dem Geschäftsobjekt 206 implementierten Geschäftslogik, auf die DBMS-Systeme 218, 222, zuzugreifen.
  • Auch wenn die derzeitigen Systeme in der Lage sind, große Datensätze unbeschädigt über die in dem Client/Server-System bereitgestellten Verbindungen zu übertragen, tun sie dies nur unter Verwendung eines einzelnen Stranges, um den Datensatz in serieller Weise zu übertragen. Was nunmehr präsentiert wird, ist ein Verfahren und ein System, welches ein sehr umfangreiches und schnelles Laden von Datensätzen aus Servern ermöglicht, wie z. B. (ohne jedoch speziell darauf beschränkt zu sein) einem SQL-Server, der eine Mehrzahl von Zeilen aus einer Datenbank heranholt. Die vorliegende Erfindung kann auch auf Anwendungen auf Webbasis anwendbar sein, um einen großen Datensatz über mehrere Knoten heranzuholen.
  • In einer Ausführungsform verwendet das System 100 mehrere Stränge, um die Daten aus irgendeinem ferngelegenen DBMS-Ort über eine standardmäßige ANSI SQL-Schnittstelle zu laden. Das System 100 erzielt eine verminderte Gesamtladezeit für das Übertragen dieser großen Datensätze, in dem es die Daten in der Datenbank aufteilt, mehrere Verbindungen mit dem Datenbankserver erzeugt, und jeden Abschnitt parallel über eine Mehrzahl gleichzeitiger Verbindungen lädt, was von dem erhöhten Durchsatz, der durch eine parallele Übertragung geboten wird, profitiert.
  • Jede gleichzeitige Verbindung wird durch die Mehrzahl von Knoten 126130 bereitgestellt, welche in dem WAN-System 100 vorgesehen sind. In einem Test erzeugten 10 gleichzeitige Übertragungsverbindungen eine Übertragungsgeschwindigkeit, die zumindest sechs- bis siebenmal so groß wie die Geschwindigkeit einer einzelnen Verbindung war.
  • Der ideale Vervielfachungsfaktor der Übertragungsgeschwindigkeit würde n-mal die Geschwindigkeit einer Einzelverbindung betragen, wobei n die tatsächliche Anzahl gleichzeitig bereitgestellter Verbindungen ist; es gibt jedoch eine zusätzliche inhärente Verzögerung beim Öffnen von mehreren Verbindungen. Die Verzögerung der Übertragungsgeschwindigkeit in jedem Strang, der in einer mehrsträngigen Verbindung verwendet wird, resultiert aus einer zusätzlichen Sendeüberlast, die für den Server benötigt wird, um jede Verbindung bereitzustellen, den Strang aufrecht zu erhalten und die übertragenen Daten zu empfangen. Die Übertragungsgeschwindigkeit in einer mehrsträngigen Übertragung ist dennoch schneller als die eines einzelnen Stranges, auch wenn jedem einzelnen Strang die Verzögerung hinzuaddiert wird.
  • Weiterhin kann das System eine größere Anzahl von Abschnitten erzeugen, als es Übertragungsstränge gibt. Ein erster Satz von Abschnitten, welcher gleich der Anzahl von bereitgestellten Übertragungssträngen ist, wird parallel über die Übertragungsstränge übertragen. Als nächstes werden, da einige Stränge eine Übertragungsgeschwindigkeit haben, die schneller ist als die anderer Stränge, diejenigen Stränge, die die Übertragung eines ersten Abschnittes beendet haben, dann verwendet, um die verbleibenden Datenabschnitte je nach der Verfügbarkeit der Stränge zu übertragen. Die Tatsache, daß man in der Lage ist, sowohl eine parallele Übertragung des Datensatzes als auch eine serielle Übertragung einer größeren Anzahl von Abschnitten bereitzustellen, ermöglicht eine schnellere Übertragungsgeschwindigkeit in einem System, welches eine begrenzte Anzahl verfügbarer Kommunikationsknoten hat. Zusätzlich optimiert das Mischen von sowohl paralleler als auch serieller Übertragung der Datenabschnitte über die mehreren Kommunikationsstränge, die Übertragungsstränge, welche in dem System am schnellsten arbeiten, um die Übertragungsgeschwindigkeit gegenüber derjenigen eines einzelnen Knotens zu verbessern. Das Verfahren und das System ist in der Lage, die Daten in der Datenbank automatisch und unabhängig von der Anwendungslogik aufzuteilen. Dies ermöglicht es dem System, den Datensatz über die mehreren Stränge parallel zu laden und zu übertragen, und die Ergebnisse zu einem einzelnen Datensatz zusammenzusetzen, was den Eindruck einer schnellen Einzelverbindung hervorruft. Zusätzlich ist ein Wiederzusammensetzen des ursprünglichen Datensatzes vor dem Zugreifen auf irgendwelche Daten in einem der vollständig übertragenen Datenabschnitte bei einer mehrsträngigen Anwendung, die dafür ausgelegt ist, die Daten in größeren Stücken zu übertragen, wohlmöglich nicht notwendig. Insbesondere haben solche Anwendungen zusätzliche Vorteile, indem sie parallele mehrsträngige Übertragungen verwenden, da dieses ermöglicht, daß auf die Daten zugegriffen wird, sobald die Übertragung eines Abschnittes abgeschlossen ist. Wenn also ein gegebener Abschnitt vollständig übertragen worden ist, kann das System auf die Daten in dem Abschnitt zugreifen, ohne darauf warten zu müssen, daß die übrigen Abschnitte die Übertragung beendet haben und dann alle gesendeten Abschnitte als der ursprüngliche Datensatz wieder zusammengesetzt ist.
  • Das System und das Verfahren stellen eine Erweiterung 312 für die Anwendungsdatenbank 300 bereit, welche in 3 dargestellt ist. Die Erweiterung 312 ist unabhängig von der Anwendungslogik und wird für die automatische Aufteilung von Daten in Tabellen verwendet. Die Datenbank 300 enthält gemäß der vorliegenden Erfindung einen Datensatz 310, der die gesamte Datenbank oder einen großen Ausschnitt der Datenbank 300 enthalten kann, der in der Datenbank 110 oder einem Client 102106 nach 1 gespeichert sein kann. Jeder Datensatz 310 besteht aus einer Mehrzahl von Datenzeilen 316. Die Erweiterung 312 umfasst das Hinzufügen einer neuen Spalte 318, welche eine „Aufteilungsspalte" genannt wird. Die Aufteilungsspalte 318 wird verwendet, um die speziellen Datenzeilen 318 in einem definierten Datensatz 310 mit ganzzahligen Werten zuzuordnen. Der ganzzahlige Wert wird in der Aufteilungsspalte 318 gespeichert, um die speziellen Datenzeilen 316 für den definierten Abschnitt 314 zu verfolgen. Jede Aufteilungsspalte 318 hat einen Wertebereich <0, PARTITION_MAX_VAL-1>, wobei PARTITION_MAX_VAL eine Zahl ist, die während der Anwendungsinstallation zugeordnet wird. PARTITION_MAX_VAL repräsentiert die maximale Anzahl von Abschnitten, die beim Auseinanderschneiden der Datenbank für eine Übertragung über das WAN-System 100 erlaubt wären. Diese Anzahl wird festgelegt auf Basis der Anzahl der Knoten, welche als unabhängige Kommunikationsstränge für die parallele Übertragung der Abschnitte zu dem Ziel der aufgeteilten Datenbank verwendet werden können. Man kann sich eine alternative Ausführungsform vorstellen, welche die Abschnittsnummern in einer getrennten Tabelle anordnet. Wenn der Datensatz 310 das Ergebnis einer SQL-Verbindungsoperation ist, welche mehrere Datentabellen umfasst, so ist alles, was zur Aufteilung des Satzes erforderlich ist, die Anwesenheit der Aufteilungsspalte 312 in irgendeiner der teilnehmenden Tabellen, die angeschlossen sind.
  • Das Verfahren zum Bereitstellen der Abschnitte 314 der 3 ist in dem Blockdiagramm nach 4 dargestellt. Das Verfahren beginnt mit Schritt 400 und geht weiter zu Schritt 410, wo die Anforderung nach einer Übertragung eines Datensatzes 310 empfangen wird und dann Vorbereitungen getroffen werden, um die Anforderung der Datensatzübertragung zu erfüllen. In Schritt 412 bestimmt das System die Anzahl von Aufteilungen, die benötigt wird, um den Datensatz 310 über das WAN-System 100 zu übertragen. Die Entscheidung über die Auswahl der Anzahl von Abschnitten hängt ab von der Größe des zu übertragenden Datensatzes, des aktuell durch das WAN-System 100 getragenen Verkehrs, der für die Übertragung des Satzes in der maximal zulässigen Zeit und der Eile, mit welcher die Daten benötigt werden. Als nächstes sieht in Block 414 eine Erweiterung 312 vor, welche die Aufteilungsspalte 318 bereitstellt.
  • Dann erzeugt in Block 416 ein Zufallszahlengenerator gleichmäßig verteilte Werte in dem Bereich <0 bis PARTITION_MAX_VAL-1>. Der Zufallszahlengenerator kann in den Speicherproze duren der Datenbank oder in dem Java-Code der Anmeldung implementiert sein. Die Zufallszahlen sind in dem Modul verfügbar, welches Zeilen in einer Datenbanktabelle mit Aufteilungsspalten erzeugt. In Block 408 werden die Zufallswerte aus dem gegebenen Bereich der Aufteilungsspalte 318 der neu erzeugten Reihen zugeordnet. Die gleichmäßig verteilten Werte müssen nicht exakt gleich sein, da die Datenzeilen 316 nicht immer die gleiche Länge haben und da es gewünscht ist, daß keine fragmentierten Datenzeilen 316 während des Aufteilens auftreten. Auch wenn die Aufteilungsnummern hier während des Ladevorganges zugeordnet werden, können sie alternativ stattdessen auch während des Schreibvorganges zugeordnet werden.
  • Unter Verwendung der Zufalls()methode in der Math-Klasse von Java wird der ganzzahlige Bereich folgendermaßen bestimmt:
  • Figure 00100001
  • Das System ordnet die Zufallswerte der Aufteilungsspalte zu, sobald eine Zeilen in der Zieltabelle erzeugt wird. Der Java- oder SQL-Code der Anwendung, welcher verwendet wird, um Reihen in die Aufteilungstabellen einzufügen, wird modifiziert, um die Zuordnung von Zufallswerten zum Aufteilen jeder Spalte in neue Reihen zu umfassen. Die Zufallszahlen sind insofern zweckmäßig, als daß sie mit hoher Wahrscheinlichkeit sicherstellen, daß die Abschnitte in gleichgroß bemessene Einheiten aufgeteilt werden, wenn sich die Population der Zeilen verändert. Die Zeilenpopulation verändert sich während der Hinzufügung oder Löschung oder während anderer Modifikationen der verschiedenen Zeilen während des Anwendungszugriffes und der Manipulation während des beabsichtigten Gebrauchs des aufgeteilten Datensatzes 310.
  • In Schritt 420 teilt das System Zeilen in den Zieltabellen auf, indem es die Abschnittsspaltenwerte berechnet, die zu denselben Abschnitten gehören, und zwar unter Verwendung der PARTITION_MAX_VAL-Methode und der Anzahl der gewünschten Abschnitte. Dies kann in einem beliebigen SQL-Server folgendermaßen implementiert werden:
  • Figure 00100002
  • Figure 00110001
  • Bei diesem Vorgang sind, falls K > 0, die ersten K Abschnitte größer und jeder enthält einen zusätzlichen Zufallszahlenwert in dem Bereich. Dies hat nur wenig Einfluß auf die Zeilenzahl in den Abschnitten, wenn PARTITION_MAX_VAL ausreichend groß ist. Ein Beispiel wird folgendermaßen gegeben:
  • Figure 00110002
  • Jeder Knoten 102108 kann als eine Mehrstrangsteuerung dienen, die verwendet wird, um mehrere gleichzeitige Verbindungen mit der Datenbank zu verwalten, und damit als die Datenübertragungssteuerung 132 dient. Jeder Knoten 102108 ist in der Lage, dynamisch Abschnitte auf der Basis der Anzahl von verfügbaren Verbindungen zu berechnen und, in Block 422, den parallelen Ladevorgang von Datenabschnitten 314 für die Übertragung von dem Client zu dem Server oder umgekehrt auszuführen. Demnach dient jeder Knoten 102108 als Datenaufteiler. Da die Abschnitte 314 gleichzeitig geladen werden, können sie, falls notwenig, wieder zu einem Datensatz 10 zusammengesetzt werden und für die weitere Verarbeitung in der Anwendung übergeben werden, sobald sie von dem anfordernden Server empfangen wurden. Wenn ein gegebener Abschnitt geladen worden ist, kann er für den Benutzer verfügbar gemacht werden, wie es in Schritt 424 dargestellt ist. In Schritt 426 sind die Abschnitte wieder zu dem ursprünglichen Datensatz zusammengesetzt worden, nachdem auf den gegebenen Abschnitt zugegriffen worden ist, falls dies angefordert wurde und nachdem alle verbleibenden Abschnitte geladen worden sind. Jeder Knoten 102108 ist in der Lage, jeglichen gewünschten Wert einer Abschnittsgröße zu handhaben. Für kleine Abschnittswerte verwendet das System eine erste Implementierung. Für größere Abschnittswerte verwendet das System eine alternative Implementierung. Die erste Implementierung für sehr kleine Abschnitte, mit einem Wert von 32 und darunter, wobei jedoch jede zweiziffrige Zahl in den sehr kleinen Abschnittswertebereich fällt, wird nachstehend wiedergegeben:
  • Figure 00120001
  • Das alternative Verfahren zum Durchführen eines Aufteilungsvorganges wird folgendermaßen bereitsgestellt:
  • Figure 00120002
  • Die Implementierung mit dem sehr keinen Abschnitts- bzw. Aufteilungswert verwendet eine Indexierung an der abgetrennten Spalte und kann effizienter sein als die alternative Implementierung.
  • Es wurde ein Übertragungstest durchgeführt, bei welchem die Knoten 102108 verwendet wurden, um einen parallelen Ladevorgang durchzuführen. Der Ladevorgang erreichte eine Übertragungsrate, die zwischen 60 und 70% der maximalen theoretischen Geschwindigkeit der verwendeten Verbindungen betrug. Wenn beispielsweise zehn gleichzeitige Verbindungen existieren, ist die Übertragungsrate etwa siebenmal schneller als es über eine einzige Verbindung möglich wäre. Die Ergebnisse des Übertragungstests, eine Aufteilung, welche drei gleichzeitige Verbindungen verwendete, werden nachstehend wiedergegeben:
  • Figure 00130001
  • Figure 00140001
  • Wie in dem obrigen Beispiel dargestellt, ergibt sich für die Übertragung von 4000 Zeilen innerhalb eines Datensatzes, der in 3 Abschnitte aufgeteilt worden ist, eine insgesamt verstrichene Zeit von 101665ms. Diese verstrichene Zeit ist schneller als die Übertragung über einen einzelnen Strang und wird nachstehend dargestellt. Die Übertragung über einen einzelnen Strang, die unten wiedergegeben ist, hatte eine insgesamt verstrichene Übertragungszeit von 282348ms. Nach dem Beispiel eines einzelnen Strangs, der verwendet wurde, um den gewünschten Datensatz zu übertragen, werden Testbeispiele von Abschnitten wiedergegeben, die von zwei Abschnitten bis zehn Abschnitten reichen, wobei ihre gesamten Übertragungszeiten angegeben sind. Man erkennt, daß die Übertragung mit dem einzelnen Strang am langsamsten ist, während die Übertragung mit zehn Aufteilungssträngen die kürzeste insgesamt verstrichene Zeit hat.
  • Figure 00140002
  • Figure 00150001
  • Figure 00160001
  • Figure 00170001
  • Figure 00180001
  • Figure 00190001
  • Figure 00200001
  • Die vorstehenden Beispiele listen elf Tests verschiedener Aufteilungen auf. Das erste Beispiel war das einer Übertragung mit drei Abschnitten über drei Stränge. Die nächsten 10 Beispiele waren aufeinanderfolgende Beispiele mit eins bis zehn Abschnitten für jede Aufteilung. Bei jeder Aufteilung wurden 4000 Datenzeilen verwendet. Jedes Beispiel verwendete auch eine unterschiedliche Anzahl von Knotenverbindungen je nach der Anzahl der bei der Durchführung erforderlichen Aufteilungen.
  • Eine Softwareimplementierung der oben beschriebenen Ausführungsform weist eventuell eine Reihe von Computeranweisungen auf, die entweder auf einem konkret fassbaren Gegenstand fixiert sind, wie z. B. einem computerlesbaren Medium, z. B. einer Diskette, einer CD-ROM, einem ROM-Speicher oder auf einer Festplatte, oder die über ein Computersystem übertragbar sind, und zwar über ein Modem oder eine andere Schnittstelleneinrichtung über ein Medium. Das Medium kann entweder ein konkret fassbares Medium sein, einschließlich optischer oder analoger Kommunikationsleitungen, ohne darauf beschränkt zu sein, oder kann mit drahtlosen Techniken implementiert sein, einschließlich von Mikrowellen, Infrarot- oder anderen Übertragungstechniken, ohne hierauf beschränkt zu sein. Es kann auch das Internet sein. Die Serie von Computeranweisungen verkörpert alle oder einen Teil der Funktionen, die hier unter Bezug auf die Erfindung vorstehend beschrieben wurden. Fachleute auf diesem Gebiet erkennen, daß solche Computeranweisungen in einer Anzahl von Programmiersprachen für die Verwendung mit vielen Computerarchitekturen oder Betriebssystemen geschrieben werden können. Weiterhin können solche Anweisungen unter Verwendung irgendeiner derzeitigen oder künftigen Speichertechnologie gespeichert werden, was Halbleiter-, magnetische, optische oder sonstige Speichereinrichtungen einschließt, ohne hierauf beschränkt zu sein, oder sie können unter Verwendung irgendeiner derzeitigen oder künftigen Kommunikationstechnologie übertragen werden, einschließlich optischer, infraroter, Mikrowellen- oder anderer Übertragungstechnologien, ohne jedoch hierauf beschränkt zu sein. Man kann sich vorstellen, daß solch ein Computerprogrammprodukt als getrenntes Medium mit einer zugehörigen gedruckten oder elektronischen Dokumentation, z. B. einer komprimierten, verpackten Software, vorinstalliert in einem Computersystem, beispielsweise auf einem System ROM oder einer Festplatte verteilt werden kann, oder von einem Server oder einem elektronischen schwarzen Brett über ein Netzwerk, beispielsweise das Internet oder das World Wide Web verteilt werden kann.
  • Auch wenn eine beispielhafte Ausführungsform der Erfindung offenbart worden ist, liegt es für Fachleute auf der Hand, daß verschiedene Veränderungen und Modifikationen vorgenommen werden können, die einige der Vorteile der Erfindung erreichen, ohne vom Schutzumfang der Erfindung abzuweichen. Es ist beispielsweise für einigermaßen erfahrene Fachleute offensichtlich, daß, auch wenn die Beschreibung auf ein bestimmtes Hardwaresystem und Betriebssystem gerichtet war, andere Hardware- und andere Betriebssystemsoftware auf dieselbe Weise wie beschrieben verwendet werden könnte. Andere Aspekte, wie z. B. die speziellen Anweisungen, die verwendet wurden, um eine bestimmte Funktion zu erfüllen, ebenso wie andere Modifikationen des erfinderischen Konzepts sollen durch den Schutzumfang der Erfindung abgedeckt sein.

Claims (33)

  1. Verteiltes Computersystem (100) für das Übertragen eines Datensatzes (310) zwischen einem ersten Computerspeicherort und einem zweiten Computerspeicherort, wobei das System aufweist: eine Mehrzahl von Kommunikationsknoten (126, 128), welche die ersten und zweiten Computerspeicherorte miteinander verbinden, wobei jeder aus der Mehrzahl von Kommunikationsknoten als ein Kommunikationsstrang dient, einen Datenübertragungscontroller (132), der mit dem ersten oder zweiten Computerspeicherort und der Mehrzahl von Kommunikationsknoten verbunden ist, um eine Anzahl von Kommunikationssträngen bzw. -pfaden auszuwählen, die als Datenübertragungsglieder zwischen dem ersten und zweiten Computerspeicherort dienen, einen Datenaufteiler (134), der mit dem ersten Computerspeicherort verbunden ist, wobei der Datenaufteiler auf die Übertragungsanforderung für einen Datensatz in der Weise reagiert, daß er den Datensatz in übertragbare Datensatzabschnitte aufteilt, wobei der Datensatz Datenzeilen aufweist, die einen Gesamtbereich haben, und wobei das Aufteilen des Datensatzes aufweist: Definieren einer Aufteilungsspalte, um jeden Datensatzabschnitt zu markieren, Auswählen eines Teilbereiches von Datenzeilen, um jeden Datensatzabschnitt zu definieren, und Zuordnen des Bereiches von Datenzeilen zu einem gegebenen Datensatzabschnitt, und wobei der Datenübertragungscontroller die Datensatzabschnitte parallel über die Kommunikationsstränge überträgt.
  2. Verteiltes Computersystem nach Anspruch 1, wobei der Datensatz in eine Anzahl von Datensatzabschnitten aufgeteilt ist, die gleich der Anzahl der ausgewählten Kommunikationsstränge bzw. -pfade ist.
  3. Verteiltes Computersystem nach Anspruch 1, wobei der Datensatz in eine Anzahl von Datensatzabschnitten aufgeteilt ist, die größer ist als die Anzahl der ausgewählten Kommunikationsstränge.
  4. Verteiltes Computersystem nach Anspruch 3, wobei ein erster Satz der Datensatzabschnitte, welcher gleich der Anzahl der ausgewählten Kommunikationsstränge ist, parallel über die Kommunikationsstränge übertragen wird, und wobei etwaige verbleibende Datensatzabschnitte über Kommunikationsstränge übertragen werden, die die Übertragung eines entsprechenden Abschnittes des ersten Satzes von Datensatzabschnitten abgeschlossen haben, so daß einige der Datensatzabschnitte seriell über die parallelen Kommunikationsstränge übertragen werden.
  5. Verteiltes Computersystem nach einem der vorstehenden Ansprüche, wobei der Datenübertragungscontroller einen Zugriff auf einen übertragenen Datensatzabschnitt vor dem Abschluß der Übertragung aller Datensatzabschnitte erlaubt.
  6. Verteiltes Computersystem nach einem der vorstehenden Ansprüche, wobei der Datenaufteiler eine Aufteilung auf der Basis von Datenzeilen definiert, die verwendet werden, um den Datensatz zu definieren.
  7. Verteiltes Computersystem nach einem der vorstehenden Ansprüche, wobei die Aufteilungsspalte verwendet wird, um eine Abschnittsnummer für jede der Datenzeilen zu speichern.
  8. Verteiltes Computersystem nach Anspruch 7, wobei die Abschnittsnummern auf Zufallsbasis erzeugt werden.
  9. Verteiltes Computersystem nach Anspruch 7 oder 8, wobei die Datenzeilen für einen Abschnitt durch Auswahl eines Bereiches von Abschnittsnummern bestimmt werden.
  10. Verteiltes Computersystem nach einem der vorstehenden Ansprüche, wobei das verteilte Computersystem ein Fernnetz (wide area network) aufweist.
  11. Verteiltes Computersystem nach einem der vorstehenden Anspruche, wobei das verteilte Computersystem ein Internetsystem aufweist.
  12. Verfahren zur Übertragung eines Datensatzes (310) zwischen ersten und zweiten Computerspeicherorten in einem verteilten Computersystem (100), welches einen ersten Computerspeicherort, einen zweiten Computerspeicherort und eine Mehrzahl von Kommunikationsknoten (126, 128) aufweist, welche die ersten und zweiten Speicherorte miteinander verbinden, wobei das Verfahren aufweist: Aufteilen des Datensatzes in übertragbare Datensatzabschnitte, wobei der Datensatz Datenzeilen aufweist, die einen Gesamtbereich haben, und wobei das Aufteilen des Datensatzes aufweist: Definieren einer Abschnittsspalte, um jeden Datensatzabschnitt zu markieren, Auswählen eines Teilbereichs von Datenzeilen, um jeden Datensatzabschnitt zu definieren, und Zuordnen des Bereiches von Datenzeilen zu einem gegebenen Datensatzabschnitt, Ausbilden einer Mehrzahl von gleichzeitigen Kommunikationssträngen, die aus der Mehrzahl von Kommunikationsknoten ausgewählt werden und Übertragen der Datensatzabschnitte parallel über die Mehrzahl von Kommunikationssträngen zwischen den ersten und zweiten Computerspeicherorten.
  13. Verfahren nach Anspruch 12, wobei der Schritt des Ausbildens von Kommunikationssträngen das Auswählen von N Kommunikationssträngen aufweist, wobei N die Zahl der Datensatzabschnitte ist.
  14. Verfahren nach Anspruch 12, wobei der Schritt des Ausbildens von Kommunikationssträngen das Auswählen von N Kommunikationssträngen aufweist, wobei N kleiner ist als die Anzahl der Datensatzabschnitte.
  15. Verfahren nach Anspruch 14, wobei der Schritt des Übertragens aufweist: Übertragen von N Datensatzabschnitten über die N Kommunikationsstränge in einer parallelen Übertragung, wobei jeweils ein Datensatzabschnitt einem Kommunikationsstrang zugewiesen ist, sobald jeweils einer der N Kommunikationsstränge verfügbar wird, Zuordnen der verbleibenden Datensatzabschnitte zu den verfügbaren Kommunikationssträngen für eine Übertragung, um auf diese Weise die Übertragungsgeschwindigkeit des aufgeteilten Datensatzes zu optimieren.
  16. Verfahren nach einem der Ansprüche 12 bis 15, welches weiterhin das Gewähren eines Zugriffs auf einen vollständig übertragenen Datensatzabschnitt vor der vollständigen Übertragung aller Datensatzabschnitte aufweist.
  17. Verfahren nach einem der Ansprüche 12 bis 16, wobei jeder Teilbereich von Datenzeilen für jeden Datensatzabschnitt nicht mit irgendeinem anderen Teilbereich von Datenzeilen für irgendeinen anderen Datensatzabschnitt überlappt.
  18. Verfahren nach einem der Ansprüche 12 bis 17, wobei der Schritt des Auswählens eines Teilbereiches das Erzeugen von im wesentlichen gleichmäßig verteilten Werten aufweist, um jeden Teilbereich innerhalb des Gesamtbereiches zu definieren.
  19. Verfahren nach einem der Ansprüche 12 bis 18, welches weiterhin das Wiederzusammensetzen der Datensatzabschnitte zu dem Datensatz aufweist.
  20. Verfahren nach einem der Ansprüche 12 bis 19, wobei die Abschnittsspalte verwendet wird, um eine Abschnittsnummer für jede der Datenzeilen zu speichern.
  21. Verfahren nach Anspruch 20, wobei die Abschnittsnummem auf Zufallsbasis erzeugt werden.
  22. Verfahren nach Anspruch 20 oder 21, wobei die Datenzeilen für einen Abschnitt durch Auswählen auf einem Bereich von Abschnittsnummem bestimmt werden.
  23. Computerprogrammprodukt für die Verwendung in einem verteilten Computersystem (100), welches einen ersten Computerspeicherort, einen zweiten Computerspeicherort und eine Mehrzahl von Kommunikationsknoten (126, 128) aufweist, welche die ersten und zweiten Speicherorte mitein ander verbinden, wobei das Computerprogrammprodukt Programmcode für das Übertragen eines Datensatzes zwischen den ersten und zweiten Computerspeicherorten bereitstellt, und aufweist: Computerprogrammcode zum Aufteilen des Datensatzes in übertragbare Datensatzabschnitte, wobei der Datensatz Datenzeilen aufweist, welche einen Gesamtbereich haben und wobei das Aufteilen des Datensatzes aufweist: Definieren einer Abschnittsspalte, um jeden Datensatzabschnitt zu markieren, Auswählen eines Teilbereiches von Datenzeilen, um jeden Datensatzabschnitt zu definieren, und Zuordnen des Bereiches von Datenzeilen zu einem gegebenen Datensatzabschnitt, Computerprogrammcode zum Ausbilden einer Mehrzahl von gleichzeitigen Kommunikationssträngen, welche aus der Mehrzahl von Kommunikationsknoten ausgewählt werden, und Computerprogrammcode zum Übertragen der Datensatzabschnitte parallel über die Mehrzahl von Kommunikationssträngen zwischen den ersten und zweiten Computerspeicherorten.
  24. Computerprogrammprodukt nach Anspruch 23, wobei der Computerprogrammcode zum Ausbilden einer Mehrzahl von Kommunikationssträngen N Kommunikationsstränge auswählt, wobei N die Anzahl von Datensatzabschnitten ist.
  25. Computerprogrammprodukt nach Anspruch 23, wobei der Computerprogrammcode zum Ausbilden der Mehrzahl von Kommunikationssträngen N Kommunikationspfade auswählt, wobei N kleiner als die Anzahl von Datensatzabschnitten ist.
  26. Computerprogrammprodukt nach Anspruch 25, wobei der übertragende Computerprogrammcode aufweist: Computerprogrammcode zum Übertragen von N Datensatzabschnitten über die N Kommunikationsstränge in einer parallelen Übertragung, wobei jeweils ein Datensatzabschnitt jeweils einem Kommunikationsstrang zugeordnet wird, Computerprogrammcode zum Zuordnen der verbleibenden Datensatzabschnitte zu den verfügbaren Kommunikationssträngen zur Übertragung, um so die Übertragungsgeschwindigkeit des aufgeteilten Datensatzes zu optimieren, sobald jeweils einer der N Kommunikationsstränge verfügbar wird.
  27. Computerprogrammprodukt nach einem der Ansprüche 23 bis 26, welches weiterhin das Gewähren von Zugriff auf einen vollständig übertragenen Datensatzabschnitt vor dem Abschluß der Übertragung aller Datensatzabschnitte aufweist.
  28. Computerprogrammprodukt nach einem der Ansprüche 23 bis 27, wobei jeder Teilbereich von Datenzeilen für jeden Datensatzabschnitt nicht mit irgendeinem anderen Teilbereich von Datenzeilen für irgendeinen anderen Datensatzabschnitt überlappt.
  29. Computerprogrammprodukt nach einem der Ansprüche 23 bis 28, wobei der den Teilbereich auswählende Computerprogrammcode Computerprogrammcode zum Erzeugen im wesentlichen gleichmäßig verteilter Werte aufweist, um jeweils einen Teilbereich innerhalb des Gesamtbereiches zu definieren.
  30. Computerprogrammprodukt nach einem der Ansprüche 23 bis 29, welches weiterhin Computerprogrammcode zum Wiederzusammensetzen der Datensatzabschnitte zu dem Datensatz aufweist.
  31. Computerprogrammprodukt nach einem der Ansprüche 23 bis 30, wobei die Abschnittsspalte verwendet wird, um eine Abschnittsnummer für jede der Datenzeilen zu speichern.
  32. Computerprogrammprodukt nach Anspruch 31, wobei die Abschnittsnummern auf Zufallsbasis erzeugt werden.
  33. Computerprogrammprodukt nach Anspruch 31 oder 32, wobei die Datenzeilen für einen Abschnitt durch Auswählen auf einem Bereich von Abschnittsnummern bestimmt werden.
DE60022802T 1999-01-07 2000-01-05 System und Verfahren zum Übertragen verteilter Datensätze über mehrere Fäden Expired - Fee Related DE60022802T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/226,864 US6691166B1 (en) 1999-01-07 1999-01-07 System and method for transferring partitioned data sets over multiple threads
US226864 1999-01-07

Publications (2)

Publication Number Publication Date
DE60022802D1 DE60022802D1 (de) 2005-11-03
DE60022802T2 true DE60022802T2 (de) 2006-07-13

Family

ID=22850725

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60022802T Expired - Fee Related DE60022802T2 (de) 1999-01-07 2000-01-05 System und Verfahren zum Übertragen verteilter Datensätze über mehrere Fäden

Country Status (4)

Country Link
US (1) US6691166B1 (de)
EP (1) EP1032175B1 (de)
JP (1) JP2000235537A (de)
DE (1) DE60022802T2 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7324228B2 (en) * 2000-02-25 2008-01-29 Hewlett-Packard Development Company, L.P. System and method for downloading and for printing data from an external content source
US6947952B1 (en) * 2000-05-11 2005-09-20 Unisys Corporation Method for generating unique object indentifiers in a data abstraction layer disposed between first and second DBMS software in response to parent thread performing client application
US6941291B1 (en) * 2000-12-07 2005-09-06 Cisco Technology, Inc. Method and device for a user profile repository
MXPA03009188A (es) * 2001-04-11 2004-11-22 Orell Fussli Sicherheitsdruck Metodo para imprimir documentos de seguridad usando hojas con identificadores.
US20020188728A1 (en) * 2001-06-07 2002-12-12 Acceleration Softwave International Corporation Adaptive file transfer acceleration
US7003508B1 (en) * 2003-03-06 2006-02-21 Ncr Corp. Partitioning data in a parallel database system
US20050131893A1 (en) * 2003-12-15 2005-06-16 Sap Aktiengesellschaft Database early parallelism method and system
US8171480B2 (en) * 2004-01-27 2012-05-01 Network Appliance, Inc. Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor
US8156490B2 (en) * 2004-05-08 2012-04-10 International Business Machines Corporation Dynamic migration of virtual machine computer programs upon satisfaction of conditions
US8335807B1 (en) 2004-08-30 2012-12-18 Sprint Communications Company, L.P. File distribution system and method
US8347293B2 (en) * 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
US7707138B2 (en) * 2006-04-05 2010-04-27 International Business Machines Corporation Identifying columns for row based operations
US7512570B2 (en) * 2006-05-30 2009-03-31 Zaracom Technologies Inc. Artificial intelligence analyzer and generator
US20070288604A1 (en) * 2006-06-08 2007-12-13 Jeffrey Mark Achtermann Method for determining optimal number of connections in multi-connection download configuration
US7689565B1 (en) * 2006-06-28 2010-03-30 Emc Corporation Methods and apparatus for synchronizing network management data
DE102007001390A1 (de) * 2007-01-09 2008-07-10 Siemens Ag Verfahren zur Bereitstellung von Datenobjekten in einem digitalen Bildinformationssystem
US7941414B2 (en) * 2007-03-28 2011-05-10 Microsoft Corporation Executing non-blocking parallel scans
US8051091B2 (en) * 2008-02-19 2011-11-01 Sap Ag Parallelizing data manipulation by data set abstraction
US8290917B2 (en) * 2008-06-02 2012-10-16 Microsoft Corporation Reordering of data elements in a data parallel system
US9424287B2 (en) * 2008-12-16 2016-08-23 Hewlett Packard Enterprise Development Lp Continuous, automated database-table partitioning and database-schema evolution
US20110029376A1 (en) * 2009-07-29 2011-02-03 Google Inc. Impression forecasting and reservation analysis
US9104674B1 (en) 2010-04-14 2015-08-11 Inmar, Inc. System, method and computer program product for time sharing access control to data
US8627331B1 (en) 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US8442993B2 (en) 2010-11-16 2013-05-14 International Business Machines Corporation Ruleset implementation for memory starved systems
US9553817B1 (en) 2011-07-14 2017-01-24 Sprint Communications Company L.P. Diverse transmission of packet content
US9928287B2 (en) 2013-02-24 2018-03-27 Technion Research & Development Foundation Limited Processing query to graph database
US20140324928A1 (en) * 2013-04-29 2014-10-30 Hewlett-Packard Development Company, L.P. Large-scale data transfer
US10042910B2 (en) 2014-02-24 2018-08-07 Sap Se Database table re-partitioning using two active partition specifications
CN104484456A (zh) * 2014-12-29 2015-04-01 哈尔滨工业大学 一种基于多线程并行的SQLite数据库快速加载方法
CN105095384B (zh) * 2015-07-01 2018-09-14 北京京东尚科信息技术有限公司 数据结转的方法和装置
CN107315752B (zh) * 2016-04-27 2020-07-31 北京京东尚科信息技术有限公司 数据结转方法及系统
CN107608773B (zh) * 2017-08-24 2020-08-04 阿里巴巴集团控股有限公司 任务并发处理方法、装置及计算设备
US11341104B1 (en) * 2019-03-21 2022-05-24 Amazon Technologies, Inc. In place resize of a distributed database

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2041992A1 (en) * 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
EP0512174B1 (de) 1991-05-08 1997-02-26 Semaphore, Inc. Gerät und Verfahren zur parallelen und regelgestützten Datenübertragung
US5765146A (en) * 1993-11-04 1998-06-09 International Business Machines Corporation Method of performing a parallel relational database query in a multiprocessor environment
US5659544A (en) * 1994-10-17 1997-08-19 Lucent Technologies Inc. Method and system for distributed control in wireless cellular and personal communication systems
US5680400A (en) 1995-05-31 1997-10-21 Unisys Corporation System for high-speed transfer of a continuous data stream between hosts using multiple parallel communication links
CA2159269C (en) * 1995-09-27 2000-11-21 Chaitanya K. Baru Method and apparatus for achieving uniform data distribution in a parallel database system
US5694602A (en) * 1996-10-01 1997-12-02 The United States Of America As Represented By The Secretary Of The Air Force Weighted system and method for spatial allocation of a parallel load
US6151632A (en) * 1997-03-14 2000-11-21 Microsoft Corporation Method and apparatus for distributed transmission of real-time multimedia information
US6115705A (en) * 1997-05-19 2000-09-05 Microsoft Corporation Relational database system and method for query processing using early aggregation
US6105029A (en) * 1997-09-17 2000-08-15 International Business Machines Corporation Retrieving network files through parallel channels
US5974416A (en) * 1997-11-10 1999-10-26 Microsoft Corporation Method of creating a tabular data stream for sending rows of data between client and server
US6289012B1 (en) * 1998-08-03 2001-09-11 Instanton Corporation High concurrency data download apparatus and method

Also Published As

Publication number Publication date
EP1032175B1 (de) 2005-09-28
EP1032175A3 (de) 2003-08-13
DE60022802D1 (de) 2005-11-03
JP2000235537A (ja) 2000-08-29
US6691166B1 (en) 2004-02-10
EP1032175A2 (de) 2000-08-30

Similar Documents

Publication Publication Date Title
DE60022802T2 (de) System und Verfahren zum Übertragen verteilter Datensätze über mehrere Fäden
DE60125989T2 (de) Verfahren und apparat für eine verbesserte dateiverwaltung
EP0703534B1 (de) Speicherverwaltungssystem eines Rechnersystems
DE69832406T2 (de) Kombiniertes internet-und datenzugangssystem
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE60302876T2 (de) Master-knotenauswahl in geclusterten knotenkonfigurationen
DE69916928T2 (de) Zugriffsverfahren und Server für Netzwerkverzeichnis
DE60103088T2 (de) Verfahren zur Herstellung von Weiterleitungslisten für Netzwerkgruppe
DE60317925T2 (de) Steuerung von netzwerkverkehr in einer peer-to-peer umgebung
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
DE60313371T2 (de) Verwendung von baumartigen &#34;Bitmap&#34; Datenstrukturen
EP0825524B1 (de) Verfahren zur Verwaltung der Benennung von Objekten
DE60302045T2 (de) Verfahren und System zur geordneten dynamischen Verteilung von Paketströmen zwischen Netzwerkprozessoren
DE69832946T2 (de) Verteiltes System und Verfahren zur Steuerung des Zugriffs auf Netzmittel und Ereignismeldungen
DE19511770B4 (de) Datensuchsystem sowie Verfahren zum Nachrüsten eines solchen
EP0010195B1 (de) Vorrichtung zur Adressumwandlung in einer Datenverarbeitungsanlage
DE69829442T2 (de) System und Verfahren für transparenten, globalen Zugang zu physikalischen Geräten in einem Rechnersystem
DE69814900T2 (de) Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software
DE69815819T2 (de) Adaptives verteiltes informationsnetzwerk
DE69734432T2 (de) Verfahren und Vorrichtung zur Absendung von Clientverfahrenanrufen in einem Server Rechnersystem
DE10205108A1 (de) System und Verfahren zum Zugreifen auf Softwarekomponenten in einer verteilten Netzwerkumgebung
EP0959407A2 (de) Verfahren zum Zuteilen von Aufträgen Datenverarbeitungssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium
DE102004060757A1 (de) Effiziente Handhabung von Download-Anfragen
DE19954534A1 (de) Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee