JP2000235537A - 区分されたデータ・セットを複数のスレッドを介して転送する方法およびシステム - Google Patents

区分されたデータ・セットを複数のスレッドを介して転送する方法およびシステム

Info

Publication number
JP2000235537A
JP2000235537A JP2000001436A JP2000001436A JP2000235537A JP 2000235537 A JP2000235537 A JP 2000235537A JP 2000001436 A JP2000001436 A JP 2000001436A JP 2000001436 A JP2000001436 A JP 2000001436A JP 2000235537 A JP2000235537 A JP 2000235537A
Authority
JP
Japan
Prior art keywords
data set
partition
data
partitions
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000001436A
Other languages
English (en)
Inventor
Gashoa Voitsuekku
ヴォイツェック・ガショア
Hughes Aaron
アーロン・ヒューズ
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 JP2000235537A publication Critical patent/JP2000235537A/ja
Pending 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 データを複数のノードを介して並列に転送す
ることを可能にするシステムまたは方法を提供する。 【解決手段】 第1と第2の記憶位置との間でデータ・
セットを転送する。データ・セットを複数のパーティシ
ョンに分割し、複数の通信ノードを介して並列に転送す
る。このシステムは、第1と第2のコンピュータ記憶位
置に結合された複数の通信ノードを備える。複数の通信
ノードはそれぞれ、通信スレッドとして働く。データ転
送コントローラは、第1のコンピュータ記憶位置と複数
の通信ノードに結合される。データ転送コントローラ
は、パーティションの準備が完了した後でデータ・セッ
ト・パーティションを通信スレッドを介して並列に転送
する。第1の実施形態では、データ・セットが、選択さ
れた通信スレッドの数に等しい数のデータ・セット・パ
ーティションに区分される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的にはデータ
ベース検索システムに関し、詳細には、マルチスレッド
・ストランドを介して並列ロード方式で転送される大き
なデータ・セットの区分に関する。
【0002】
【従来の技術】データベースは、多くの応用例で重要な
データ処理分野である。データベースは、大量の情報を
記憶し、次いでその情報の選択された部分を検索するの
に使用されることが多い。多くの現代のシステムは、ク
ライアント/サーバ・データベース手法を使用してお
り、この手法では、クライアントで実行されているアプ
リケーション・プログラムが、データベース・サーバに
位置する中央データベース管理システム(DBMS)に
アクセスする。クライアントは、データベース内の情報
にアクセスするために、選択された特性を有する情報を
要求する問合せを形成する。問合せはDBMSサーバに
伝送され、DBMSサーバは、問合せで指定された特性
を満たす所望の情報を検索する。その結果(一般には
「結果セット」と呼ばれる)はクラスに返される。
【0003】データベース内の情報を求める問合せを形
成する能力によって、個々のユーザはデータベースに所
望の情報を問い合わせることができる。しかし、一方で
は、データベース内の大きなデータ・ブロックを所与の
クライアントに転送するか、あるいはクライアントから
所与のサーバに転送できることが望ましい。データベー
ス管理システム内の大きなデータ・ブロックの、クライ
アントからサーバへの転送は通常、いくつかの接続シス
テムを介して行うことができる。1つの種類のシステム
は、モデムを使用するフックアップなど簡単な電話線フ
ックアップであり、この場合、サーバは、クライアント
にダイヤルし、データ・ブロックを問い合わせ、次いで
データをモデム接続を介してサーバに転送させる。この
システムは、直列データ転送手法であり、電話データ通
信で現在実現されている転送速度が限られていることに
鑑みて、かなり低速であってよい。
【0004】第2の種類の転送は、イントラネットとも
呼ばれる専用ネットワーク内のネットワーク化システム
を介して行うことができ、この場合、クライアントとサ
ーバがネットワーク化され、ネットワーク化されたメン
バー同士の間の比較的即時的な通信が可能になる。通信
ノードはネットワーク・システム内でクライアントとサ
ーバを接続し、スレッドを形成する。このシステムは通
常、ネットワーク化システム内で得られる転送速度が高
いために電話通信のモデム回線よりもずっと高速であ
る。それにもかかわらず、大きなデータ・ブロックを要
求側サーバに転送するこの「単一スレッド」手法または
直列転送手法は、転送を順次行うため、実際のデータ転
送時には時間がかかる可能性がある。
【0005】データベースを用意し、データベースへア
クセスする他のシステムはワイド・エリア・ネットワー
ク(WAN)であり、これもイントラネット内にある。
WANは通常、一つの送信元から他への複数の接続を可
能にする複数の接続ノードを含む。しかし、まれに、W
AN内のクライアントとサーバの間の通信のためにアプ
リケーションによって複数の接続が使用されることがあ
る。ネットの全容量がアプリケーションによって完全に
使用されるわけではないので、この場合も転送速度は低
い。データベース全体でない場合に、その大きな部分な
ど大きなデータ・セットを複数のノードを介して並列に
伝送することができる既知の方法やシステムはない。
【0006】
【発明が解決しようとする課題】したがって、複数のノ
ードを有する通信システムを横切りこの複数のノードを
介して大きなデータ・セットを転送できるようにする必
要がある。また、データを複数のノードを介して並列に
転送することができるシステムまたは方法が必要であ
る。
【0007】
【課題を解決するための手段】本発明によれば、データ
・セットを複数のパーティションに分割し、複数の通信
ノードを介して並列に転送する方法およびシステムが提
供される。このシステムは、第1および第2のコンピュ
ータ記憶位置に結合された複数の通信ノードを備える。
複数の通信ノードはそれぞれ、通信スレッドとして働
く。データ転送コントローラは、第1の記憶位置および
複数の通信ノードに結合される。データ転送コントロー
ラは、第1のコンピュータ記憶位置と第2のコンピュー
タ記憶位置との間のデータ転送リンクとして働くいくつ
かの通信スレッドを選択する。第1のコンピュータ記憶
位置に結合されたデータ・パーティショナも設けられ
る。データ・パーティショナは、データ・セット転送要
求に応答して、データ・セットを転送可能なデータ・セ
ット・パーティションに区分する。データ転送コントロ
ーラは、パーティションの準備が完了した後でデータ・
セット・パーティションを通信スレッドを介して並列に
転送する。
【0008】第1の実施態様では、データ・セットが、
選択された通信スレッドの数に等しい数のデータ・セッ
ト・パーティションに区分される。このため、データ・
セット・パーティションと通信スレッドとの1対1の対
応が可能になる。
【0009】第2の実施態様では、データ・セットが、
選択された通信スレッドの数よりも多いデータ・セット
・パーティションに区分され、複数のスレッドを介して
並列に処理されるだけでなく、直列にも処理される。こ
の場合、より高速の通信スレッドが、追加されたデータ
・パーティションを処理することができる。
【0010】この分散コンピュータ環境の他の特徴は、
残りのデータ・セット・パーティションが完全に転送さ
れ、次いで元のデータ・セットに再アセンブルされる前
に、転送されたデータ・セット・パーティションへのア
クセスできるデータ転送コントローラの能力である。こ
れによって、ユーザは、元のデータ・セットが実際にア
センブルされる前に完全に転送された任意のデータ・セ
ット・パーティション内のデータにアクセスすることが
できる。データ区分中に、データ・パーティショナは、
データ・セット内で使用されるデータ列の数に基づいて
各パーティションを決める。データ・パーティショナは
また、離散パーティション同士の間で任意のデータ列を
断片化することなしにパーティション同士の間でデータ
列をできるだけ均等に分割する。
【0011】この方法は、第1のコンピュータ記憶位置
と、第2のコンピュータ記憶位置と、第1のコンピュー
タ記憶位置と第2のコンピュータ記憶位置を結合する複
数の通信ノードとを備える分散コンピュータ環境内で使
用される。この方法は、第1のコンピュータ記憶位置と
第2のコンピュータ記憶位置との間でデータ・セットを
転送し、以下のように進行する。第1のコンピュータ記
憶位置と第2のコンピュータ記憶位置との間でデータ・
セットまたはその一部を転送することが要求される。デ
ータ・セットが決定された後、このプロセスは、データ
・セットを転送可能なデータ・セット・パーティション
に区分する。プロセスは、複数の通信ノードから選択さ
れた複数の並行通信スレッドを形成する。パーティショ
ンが形成され通信スレッドが確立された後、プロセス
は、データ・セット・パーティションを複数の通信スレ
ッドを介して第1のコンピュータ記憶位置と第2のコン
ピュータ記憶位置との間で並列に転送する。通信スレッ
ドを形成する際、通信スレッドの数はデータ・セット・
パーティションの数に等しく設定することができる。同
様に、データ・セット・パーティションの数は、利用可
能な通信スレッドの実際の数よりも多くすることができ
る。
【0012】データ・セット・パーティションの数が通
信スレッドの数よりも多いとき、並行転送において各通
信スレッドを介して1つのパーティションが転送され
る。あるパーティション内のデータ・セット転送が完了
し、転送スレッドが利用可能になると、この利用可能な
通信スレッドを介して次のデータ・セット・パーティシ
ョン転送が行われる。データ・セット・パーティション
の並列転送と直列転送の両方を行うこの能力によって、
この方法は、利用可能な通信スレッドの数と各通信スレ
ッドごとの可変転送速度とに基づいて、区分されたデー
タ・セットの転送速度を最適化することができる。
【0013】この方法では、ユーザまたはシステムは、
すべてのデータ・セット・パーティションの転送が完了
し、かつすべてのデータ・セット・パーティションが最
初のデータ・セットに再アセンブルされる前に、完全に
転送されたデータ・セット・パーティションにアクセス
することができる。データ・セットは、各データ・セッ
ト・パーティションにマーク付けするためのパーティシ
ョン列が確立され、各データ・セット・パーティション
を決めるデータ列のサブレンジが選択され、データ列サ
ブレンジが所与のデータ・セット・パーティションに割
り当てられるように全範囲を有するデータ列で構成され
る。各データ・セット・パーティションごとのデータ列
サブレンジは、他のデータ・セット・パーティションの
データ列の他のサブレンジと重なり合わないように決め
られる。これによって、他の場合にはデータを破壊する
恐れのあるパーティション同士の間のデータ列の断片化
が防止される。サブレンジは、パーティション同士の間
の厳密な同一サイズなしで、ほぼ均等に分散されたサイ
ズを形成するように選択される。さらに、この方法で
は、転送が完了した後にデータ・セット・パーティショ
ンを最初のデータ・セットに再アセンブルすることが可
能である。
【0014】本発明はさらに、前述のように、分散コン
ピュータ・システムで使用されるコンピュータ・プログ
ラム製品を含む。このコンピュータ・プログラム製品
は、本発明の方法と同様に動作するコンピュータ・プロ
グラム・コードを含む。このコンピュータ・プログラム
製品は、LANや、WANや、インタネットなどの分散
コンピュータ・システムで本発明のソフトウェアを実施
させることができる。
【0015】
【発明の実施の形態】本発明の上記およびその他の利点
は、以下の説明を添付の図面と共に参照することによっ
てよりよく理解することができる。
【0016】図1はシステム100のブロック図であ
り、このシステム上で、本発明によって構築されたデー
タ・セット分散ツールを実行することができる。図のよ
うに、システム100は、複数の個々のコンピュータ・
ノード102、104、106、および108を備える
分散コンピューティング環境である。ノードは機能的に
は、ネットワーク105を介して相互接続されたクライ
アント102、104、および106と少なくとも1つ
のサーバ108とで構成される。各ノードは、クライア
ント102、104、106であるか、それともサーバ
108であるかにかかわらず、従来どおりにプログラム
されたデジタル・コンピュータであり、それぞれ、中央
演算処理装置(CPU)118、122と、CPU11
8、122と相互接続されたメイン・メモリ112、1
24とを含む。また、各クライアント102ないし10
6およびサーバ108は、モニタ114、キーボード1
16、マウス117、記憶装置112などのユーザ・イ
ンタフェース装置を含むことができる(図1では、一例
として、1つのクライアント102のみについて示
す)。サーバ108は、リレーショナル・データベース
や、ファイル・システムや、その他の構成されたデータ
記憶システムなどのデータベース110を含む。中央シ
ステム・バス105は複数の通信ノード126、12
8、および130を含み、これらの通信ノードは、クラ
イアント102ないし106とサーバ108との間、ま
たは第1のクライアント102ないし106と第2のク
ライアント102ないし106との間に通信経路を形成
する。最後に、システム100は、コンピュータ可読記
憶媒体(図示せず)を受け入れる装置を含むことがで
き、搬送波中のコンピュータ・データ信号として伝送さ
れるデータおよび制御信号を交換するためにネットワー
ク105と相互接続することができる。
【0017】前述の実施形態では、各ノード102ない
し108は、SolarisTMオペレーティング・シス
テム、すなわち、UNIX(登録商標)オペレーティン
グ・システムのバージョンを実行するSun Spar
cStationTM5ワークステーションや、Wind
ows NTTMオペレーティング・システムを実行する
IBM互換コンピュータなどのネットワーク接続可能コ
ンピュータである。しかし、本明細書で説明し提案する
システムおよびプロセスの用途は、特定のコンピュータ
構成に限らない。SparcStationTMおよびS
olarisTMは、カリフォルニア州マウンテンビュー
のSun Microsystems,Inc.の商標
である。UNIX(R)は、カリフォルニア州サンタクル
ーズのSanta Cruz Operationの登
録商標である。WindowsNTTMは、ワシントン州
レッドモンドのMicrosoft Corporat
ionの商標である。
【0018】各通信ノード126ないし130は、ノー
ド102ないし108から他の同様なノードへ送信され
たデータ・パケットを受信するネットワーク送信機であ
る。ネットワーク・システムは通常、要求側ノード10
2ないし108と受信側ノード102ないし108との
間で、パス時間の最も短いパスにデータ・パケットを経
路指定する。複数の通信ノード126ないし130が設
けられているので、本発明では、各ノードが単一の通信
スレッドである複数のノードを使用してマルチスレッド
伝送システムを形成することができる。システム100
はワイド・エリア・ネットワーク(WAN)でよく、こ
の場合、アプリケーション・クライアントとデータベー
ス・サーバは高ネット待ち時間(high net latency)の多
数のノード126ないし130、またはホップによって
分離される。
【0019】さらに、各ノード102ないし108はデ
ータ転送コントローラ132およびデータ・パーティシ
ョナ134として機能することができる。データ転送コ
ントローラ132は、区分されたデータ・セットを選択
されたノードの間で並列に転送すると共に、スレッド間
でのパーティションの実際の転送に使用することのでき
る通信スレッドの総数を確定する。ノード、すなわち転
送側ノードまたは受信側ノードは、データ転送コントロ
ーラ132、データ・パーティショナ134、またはそ
の両方として働くことができる。データ・パーティショ
ナ134は、転送すべきデータ・セットをスライスし、
また、データ・セットの区分されたすべての部分が所望
のノードに首尾良く転送された後でデータ・セットを再
アセンブルする。
【0020】分散コンピューティング環境は、ネットワ
ークによって相互接続された1つまたは複数のコンピュ
ータ上で実行される、「オブジェクト」と呼ばれる1組
の協働するソフトウェア構成要素とみることができる。
各コンピュータ上で実行される個々のアプリケーション
は、1組の標準オブジェクトまたはアプリケーション特
有のオブジェクトを共用することができ、アプリケーシ
ョンを実行することによって、そのアプリケーション
は、ローカルにかつネットワーク全体で利用できる他の
ソフトウェア・オブジェクトと対話しこのようなソフト
ウェア・オブジェクトを使用することができる。このよ
うな各オブジェクトは他のソフトウェア・オブジェクト
を使用することができる。したがって、分散コンピュー
ティング環境でのアプリケーションは、アプリケーショ
ン特有のオブジェクトと、アプリケーションが使用する
組み合わされたローカル・オブジェクトおよびリモート
・オブジェクトとの組合せで構成することができる。あ
るオブジェクトが他のオブジェクトに対する動作を呼び
出すとき、呼出し側オブジェクトを「クライアント」と
呼び、それに対して呼び出される側のオブジェクトを
「サーバ」と呼ぶ。図2は、図1のシステム100に実
装することのできる、データ要求オブジェクト208お
よび214を使用するデータベース・クライアント/サ
ーバ環境200のブロック概略図である。環境200
は、機能的には3段に構成される。上段203では、ク
ライアント102(図1に示されている)がアプリケー
ション202を実行する。アプリケーション202は、
矢印204で概略的に示すように、中段205のビジネ
ス論理と対話する。ビジネス論理は、1つまたは複数の
ビジネス・オブジェクト206(1つのビジネス・オブ
ジェクト206のみが示されている)として実装され、
データ要求オブジェクト208および214とインタフ
ェースする。ビジネス・オブジェクト206とデータ要
求オブジェクト208および214は共に、クライアン
ト102またはサーバ108(図1に示されている)上
で実行することができる。ビジネス・オブジェクト20
6またはデータ要求オブジェクト208、214を含
め、オブジェクトの他の組合せおよび構成を用いること
ができる。
【0021】下段207で、サーバ108および関連す
るデータベース110(図1に示されている)は、(サ
ーバ108上で実行することのできる)データベース管
理システム(DBMSシステム)218および222
を、それぞれ関連するデータベース224および226
と共に含む。データ要求オブジェクト208、214
は、ビジネス・オブジェクト206に実装されたビジネ
ス論理がDBMSシステム218、222にアクセスす
ることができる
【0022】現行のシステムは、クライアント/サーバ
・システム内に設けられた接続を介して大きなデータ・
セットを破壊せずに転送することができる。その際、単
一のスレッドのみを使用してデータ・セットを順次転送
する。本発明では、データベースから複数の列を取り出
すSQLサーバなどであるが、特にこのサーバに限らな
いサーバからのデータ・セットの非常に大規模で高速の
ロードを可能にする方法およびシステムが提供される。
本発明をwebベースのアプリケーションに適用し、複
数のノードを介して大きなデータ・セットを取り出すこ
ともできる。
【0023】一実施形態では、システム100は、複数
のスレッドを使用して、標準ANSI SQLインタフ
ェースを介してリモートDBMS位置からデータをロー
ドする。システム100は、データベース内のデータを
区分し、データベース・サーバとの複数の接続を形成
し、各パーティションを複数の並行接続を介して並列に
ロードすることによって、このような大きなデータ・セ
ットを転送する全体的なロード時間を短縮する。すなわ
ち、並列転送によって実現されるスループットを増大で
きる効果を有する。
【0024】各並行接続は、WANシステム100内に
設けられた複数のノード126ないし130を介して確
立される。ある試験では、10個の並行転送接続が、単
一の接続の転送速度の少なくとも6倍ないし7倍の転送
速度を実現した。理想的な転送速度倍率は、単一の接続
の速度のn倍であり、この場合、nは、用いられた並行
接続の実際の数である。しかし、複数の接続を設けるう
えで固有の追加の遅延がある。マルチスレッド接続で使
用される各スレッドの転送速度遅延は、各接続を確立
し、スレッドを維持し、転送中のデータを受信するため
にサーバに必要とされる追加の伝送オーバヘッドによっ
て生じる。それにもかかわらず、個々の各スレッドに遅
延が加えられても、マルチスレッド転送の転送速度は単
一のスレッドの転送速度よりも高い。
【0025】さらに、システムは、転送スレッドよりも
多くのパーティションを生成することができる。第1の
1組のパーティションは、確立された転送スレッドの数
に等しく、転送スレッドを介して並列に転送される。次
に、いくつかのスレッドが他のスレッドよりも高い転送
速度を有するので、第1のパーティションの転送を終了
したスレッドを使用して、残りのデータ・パーティショ
ンが、最初に利用可能になったスレッドから順に転送さ
れる。データ・セットの並列転送とより多くのパーティ
ションの直列転送の両方を行うことができるので、限ら
れた数の利用可能な通信ノードを有するシステムでより
高い転送速度が可能になる。また、複数の通信スレッド
を介したデータ・パーティションの並列転送と直列転送
を混合すると、システム内で最も高速に働く転送スレッ
ドが最適化され、転送速度が単一のノードの速度よりも
高くなる。
【0026】この方法およびシステムは、データベース
内のデータを自動的に、かつアプリケーション論理とは
独立に区分することができる。このため、システムは、
データ・セットを複数のスレッドを介して並列にロード
または転送し、この結果を単一のデータ・セットに再ア
センブルすることができ、したがって、高速の単一接続
であるかのような印象を与える。また、データをチャン
クとして処理するように設計されたマルチスレッド・ア
プリケーションでは、完全に転送されたデータ・パーテ
ィションのうちの1つのデータにアクセスする前に最初
のデータ・セットに再アセンブルしておく必要がなくな
る可能性がある。具体的には、パーティションの転送が
完了した直後にデータにアクセスできるので、このよう
なアプリケーションは、並列マルチスレッド転送を使用
することによって追加の利点を有する。したがって、所
与のパーティションが完全に転送された後、システム
は、残りのパーティションの転送が終了し、送信された
すべてのパーティションが元のデータ・セットとして再
アセンブルされるのを待たずに上記のパーティション内
のデータにアクセスすることができる。
【0027】このシステムおよび方法では、図3に示
す、アプリケーション・データベース300への拡張部
312を用いる。拡張部312は、アプリケーション論
理には依存せず、データを自動的にテーブルに区分する
ために使用される。データベース300は、本発明によ
れば、データ・セット310を含む。このデータ・セッ
ト310は、図1のデータベース110またはクライア
ント102ないし106に記憶されたデータベース30
0のデータベース全体またはその大きなセクションを含
むことができる。各データ・セット310は複数のデー
タ列316で構成される。拡張部312では、「パーテ
ィション列」と呼ばれる新しい列318が追加される。
パーティション列318は、定義済みのデータ・セット
310内の特定のデータ列318を整数値と関連付ける
ために使用される。この整数値は、定義済みパーティシ
ョン314ごとに特定のデータ列316を追跡するため
にパーティション列318内に記憶される。各パーティ
ション列318は値範囲<0、PARTITION_M
AX_VAL−1>を有し、この場合、PARTITI
ON_MAX_VALは、アプリケーション・インスト
ール中に割り当てられる数である。PARTITION
_MAX_VALは、データベースをWANシステム1
00を介して転送するためにパーティションにスライス
する際のパーティションの最大許容値を表わす。この数
は、パーティションを、区分されたデータベースの宛先
に並列に転送するために独立の通信スレッドとして使用
できるノードの数に基づいて決定される。パーティショ
ン番号を独立のテーブル内に配置する代替実施形態が企
図される。複数のデータ・テーブルを使用するSQLジ
ョイン動作の結果としてデータ・セット310が得られ
たとき、このデータ・セットを区分するのには、ジョイ
ンに関与するテーブルのうちの1つにパーティション列
312が存在するだけでよい。
【0028】図3のパーティション314を確立する方
法を図4のブロック図に示す。この方法は、ステップ4
00から始まり、ステップ410に進み、データ・セッ
ト310の転送を求める要求を受け取り、次いでデータ
・セット転送要求を満たす準備が行われる。ステップ4
12で、システムは、WANシステム100を介してデ
ータ・セット310を転送するために必要なパーティシ
ョンの数を求める。パーティションの数を選択するため
の決定は、転送すべきデータ・セットのサイズ、現在W
ANシステム100によって処理されているトラフィッ
ク、このデータ・セットを転送する際の最大許容時間、
およびデータが必要とされる緊急性に基づいて下され
る。次に論理ブロック414で、システムはパーティシ
ョン列318を確立する拡張部312を設ける。
【0029】次に論理ブロック416で、乱数発生器
が、範囲<0からPARTITION_MAX_VAL
_−1>の均等に分散された値を生成する。乱数発生器
は、データベース・ストア手続きまたはアプリケーショ
ンJavaコード内で実装することができる。乱数は、
パーティション列を含むデータベース・テーブル内に列
を作成するモジュールで使用することができる。論理ブ
ロック418で、所与の範囲の乱数が、新たに作成され
た行のパーティション列318に割り当てられる。デー
タ列316の長さが常に等しいわけではなく、かつ区分
中にデータ列316が断片化されないことが望ましいの
で、均等に分散されたこれらの値を厳密に等しくする必
要はない。この場合、ロード動作中にパーティション番
号が割り当てられるが、別法として、書込み動作中にパ
ーティション番号を割り当てることができる。
【0030】Javaのランダム()メソッドをMat
hクラスで使用する場合、整数範囲は次式のように求め
られる。 Int m=(int)(java.lang.Math.random()*(double)PARTIT
ION_MAX_VAL); 上式で、mは、必要な範囲<0、PARTITION_
MAX_VAL−1>である。
【0031】システムは、対象となるテーブルで行が作
成されるときはいつでも乱数をパーティション列に割り
当てる。パーティション・テーブルに行を挿入するため
に使用されるアプリケーションJavaまたはSQLコ
ードは、各列を新しい行に区分するための乱数値の割当
てを含むように修正される。乱数は、行の母集団が変化
するときに、パーティションが、高い確率で、均等なサ
イズの単位に分割されるようにするという点で有用であ
る。行母集団は、区分されたデータ・セット310の所
期の使用中のアプリケーション・アクセスおよび操作時
に様々な行を追加または削除するか、あるいは様々な行
にその他の修正を加える際に変化する。
【0032】ステップ420で、システムは、PART
ITION_MAX_VALメソッドおよび所望のパー
ティションの数を使用して同じパーティションに属する
パーティション列値を算出することによって、対象とな
るテーブル内の行を区分する。これは、任意のSQLサ
ーバで以下のように実現することができる。 <0, PARTITION_MAX_VAL−1> −乱数値の範囲 N −所望のパーテ ィションの数 P、E、Kを、次式のように定義された整数とする。 P=PARTITION_MAX_VAL/N;
(注:整数分数) E=P+1 K=PARTITION_MAX_VAL−P*N; <rl、rM>をパーティション範囲とする。この場
合、パーティションl=0、1、...、K−1につい
ては、値の範囲は以下のとおりである。 <l*E,l*E+P> rl=l*E rM=l*E+P 残りのパーティションl+K、K+1、...、N−1
については、値の範囲は以下のとおりである。 <l*P+K,l*P+K+P−1> rl=l*P+K rM=l*P+K+P−1
【0033】この手続き内で、K>0である場合、最初
のK個のパーティションの方が大きく、それぞれ、範囲
内の1つの追加の乱数値を含む。このことは、PART
ITION_MAX_VALが十分に大きい場合は、パ
ーティションの行カウントにほとんど影響を与えない。
以下に例を与える。 PARTITION_MAX_VAL=1000000とN=7について <0, 999999> −乱数セット全体 <0 142857> −パーティション0 <142858, 285714> −パーティション1 <285715, 428571> −パーティション2 <428572, 571428> −パーティション3 <571429, 714285> −パーティション4 <714286, 857142> −パーティション5 <857143, 999999> −パーティション6
【0034】各ノード102ないし108はマルチスレ
ッド・コントローラとして働くことができ、このコント
ローラは、データベースとの複数の並行接続を管理する
ために使用され、したがって、データ転送コントローラ
132として働く。各ノード102ないし108は、利
用可能な接続の数に基づいてパーティションを動的に算
出することができ、論理ブロック422で、データ・パ
ーティション314の並列ロード動作を実行し、パーテ
ィションをクライアントからサーバに転送するか、ある
いはサーバからクライアントに転送する。したがって、
各ノード102ないし108はデータ・パーティショナ
として働く。パーティション314は、並行にロードさ
れると、受信側サーバによって受信された後、必要に応
じて1つのデータ・セット310に再アセンブルし、さ
らに処理するためにアプリケーションに渡すことができ
る。所与のパーティションがロードされた後、ステップ
424に示すようにユーザからこのパーティションにア
クセスできるようにすることができる。ステップ426
で、要求された場合は所与のパーティションがアクセス
され、残りのすべてのパーティションがロードされた後
で、各パーティションを最初のデータ・セットに再アセ
ンブルすることができる。各ノード102ないし108
は、必要とされる任意のサイズのパーティション値を処
理することができる。小さなパーティション値の場合、
システムは第1のインプリメンテーションを使用する。
大きなパーティション値の場合、システムは代替処理系
を使用する。値が32以下である任意の2桁の数が非常
に小さなパーティション値の範囲に入る、非常に小さな
パーティション用の第1のインプリメンテーションを以
下に示す。非常に小さなPARTITION_MAX_
VAL値について select...... from...... Where...... (パーティション=r1またはパーティション=r
2、...またはパーティション=rM) −は、アプリケーション特有のコードを示す。この場
合、<r1、rM>はパーティション範囲であり、r
1、r2、...、rMはこの範囲内の連続整数であ
る。
【0035】区分動作を実行する代替方法を以下に示
す。 任意のPARTITION_MAX_VAL値について select...... from...... Where...... (パーティション>=r1およびパーティション<+r
M)−は、アプリケーション特有のコードを示す。この
場合、<r1、rM>はパーティション範囲である。r
1およびrMは次式のように算出される。 rl=l*P+K rM=l*P+K+P−1
【0036】非常に小さなパーティション値の処理系
は、区分された列のインデックス付けを使用し、代替処
理系よりも効率的である可能性がある。
【0037】転送試験を実施し、ノード102ないし1
08を使用して並列ロード動作を実行した。このロード
動作では、使用した接続の数の最大理論速度の60%な
いし70%の転送速度が達成された。たとえば、10個
の並行接続がある場合、転送速度は単一の接続を介して
可能な速度よりも約7倍高くなる。3つの並行接続を使
用するパーティションの転送試験の結果を以下に示す。 tanda:wgasior[119]%java P
Load 3 並列ロード試験:3つのパーティション _3つのパーティションが要求された。 タイマ開始 スレッド作成 経過時間:2ms _パーティション・スレッドの作成に2msかかった。 スレッド開始 スレッド・ジョイン _メイン・スレッドは、パーティション・スレッドがデ
ータベースからのデータのロードを終了し結果を返すの
を待つ。 パーティション0−開始:開始値=0、終了値=333
333 パーティション1−開始:開始値=333334、終了
値=666666 パーティション2−開始:開始値=666667、終了
値=999999 _各パーティションは、範囲<開始値、終了値>のパー
ティション列値を有するデータベース内のすべての行を
選択する。 パーティション1−終了:遅延=3313ms、問合せ
=278ms、ロード=89861ms;行数=127
3 パーティション2−終了:遅延=4096ms、問合せ
=280ms、ロード=93512ms;行数=132
4 パーティション0−終了:遅延=2376ms、問合せ
=434ms、ロード=98853ms;行数=140
3 _遅延は主として、(実際の作業の前の)jdbc接続
を得る時間である。問合せは、選択文を実行する(jd
bc execute())時間である。ロードは、所
与のパーティション内のすべての行をロードする時間で
ある。行数は、所与のパーティション内の行の数であ
る。 総行数:4000 _すべてのパーティション内の総行数 総経過時間:101665ms _プログラム全体を実行するための全時間
【0038】上記の例に示すように、3つのパーティシ
ョンに区分されたデータ・セット内の4000の行を転
送する場合、総経過時間は101665msになる。こ
の経過時間は単一スレッド転送にかかる時間よりも短
く、このことを以下に示す。以下に示す単一スレッド転
送の総経過転送時間は282348msであった。所望
のデータ・セットを転送するために使用された単一スレ
ッドの例の後に、2個ないし10個のパーティションの
パーティション試験例をその全体的な転送時間と共に示
す。単一スレッド転送が最も時間がかかり、それに対し
て10個のパーティションのスレッド転送の総経過時間
が最も短いことが理解されよう。
【0039】1個のパーティション tanda:wgasior[117]%java P
Load 1 並列ロード試験:1個のパーティション タイマ開始 スレッド作成 経過時間:1ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=999
999 パーティション0−終了:遅延=1253ms、問合せ
=430ms、ロード= 280661ms;行数=4000 総行数:4000 総経過時間:282348ms
【0040】2個のパーティション tanda:wgasior[118]%java P
Load 2 並列ロード試験:2個のパーティション タイマ開始 スレッド作成 経過時間:1ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=499
999 パーティション1−開始:開始値=500000、終了
値=999999 パーティション1−終了:遅延=2074ms、問合せ
=281ms、ロード=137183ms;行数=19
51 パーティション0−終了:遅延=1109ms、問合せ
=440ms、ロード=143795ms;行数=20
49 総行数:4000 総経過時間:145346ms
【0041】3個のパーティション tanda:wgasior[119]% tanda:wgasior[119]%java P
Load 3 並列ロード試験:3個のパーティション タイマ開始 スレッド作成 経過時間:2ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=333
333 パーティション1−開始:開始値=333334、終了
値=666666 パーティション2−開始:開始値=666667、終了
値=999999 パーティション1−終了:遅延=3313ms、問合せ
=278ms、ロード=89861ms;行数=127
3 パーティション2−終了:遅延=4096ms、問合せ
=280ms、ロード=93512ms;行数=132
4 パーティション0−終了:遅延=2376ms、問合せ
=434ms、ロード= 98853ms;行数=1403 総行数:4000 総経過時間:101665ms
【0042】4個のパーティション tanda:wgasior[120]%java P
Load 4 並列ロード試験:4個のパーティション タイマ開始 スレッド作成 経過時間:1ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=249
999 パーティション1−開始:開始値=250000、終了
値=499999 パーティション2−開始:開始値=500000、終了
値=749999 パーティション3−開始:開始値=750000、終了
値=999999 パーティション2−終了:遅延=3230ms、問合せ
=279ms、ロード=68986ms;行数=977 パーティション3−終了:遅延=4053ms、問合せ
=402ms、ロード=68849ms;行数=974 パーティション1−終了:遅延=2268ms、問合せ
=278ms、ロード=71166ms;行数=100
3 パーティション0−終了:遅延=1398ms、問合せ
=436ms、ロード=73751ms;行数=104
6 総行数:4000 総経過時間:75588ms
【0043】5個のパーティション tanda:wgasior[121]%java P
Load 5 並列ロード試験:5個のパーティション タイマ開始 スレッド作成 経過時間:1ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=199
999 パーティション1−開始:開始値=200000、終了
値=399999 パーティション2−開始:開始値=400000、終了
値=599999 パーティション3−開始:開始値=600000、終了
値=799999 パーティション4−開始:開始値=800000、終了
値=999999 パーティション2−終了:遅延=2869ms、問合せ
=279ms、ロード=53344ms;行数=747 パーティション3−終了:遅延=3874ms、問合せ
=280ms、ロード=55950ms;行数=786 パーティション1−終了:遅延=1996ms、問合せ
=280ms、ロード=58800ms;行数=827 パーティション0−終了:遅延=1119ms、問合せ
=442ms、ロード=59976ms;行数=842 パーティション4−終了:遅延=4640ms、問合せ
=281ms、ロード=56906ms;行数=798 総行数:4000 総経過時間:61829ms
【0044】6個のパーティション tanda:wgasior[122]%java P
Load 6 並列ロード試験:6個のパーティション タイマ開始 スレッド作成 経過時間:1ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=166
666 パーティション1−開始:開始値=166667、終了
値=333333 パーティション2−開始:開始値=333334、終了
値=500000 パーティション3−開始:開始値=500001、終了
値=666667 パーティション4−開始:開始値=666668、終了
値=833333 パーティション5−開始:開始値=833334、終了
値=999999 パーティション3−終了:遅延=3804ms、問合せ
=277ms、ロード=44795ms;行数=627 パーティション2−終了:遅延=3018ms、問合せ
=286ms、ロード=46287ms;行数=646 パーティション0−終了:遅延=1308ms、問合せ
=437ms、ロード=49973ms;行数=701 パーティション4−終了:遅延=4594ms、問合せ
=279ms、ロード=47290ms;行数=662 パーティション1−終了:遅延=2234ms、問合せ
=279ms、ロード=50069ms;行数=702 パーティション5−終了:遅延=5375ms、問合せ
=281ms、ロード=47479ms;行数=662 総行数:4000 総経過時間:53138ms
【0045】7個のパーティション tanda:wgasior[123]%java P
Load 7 並列ロード試験:7個のパーティション タイマ開始 スレッド作成 経過時間:2ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=142
857 パーティション1−開始:開始値=142858、終了
値=285714 パーティション2−開始:開始値=285715、終了
値=428571 パーティション3−開始:開始値=428572、終了
値=571428 パーティション4−開始:開始値=571429、終了
値=714285 パーティション5−開始:開始値=714286、終了
値=857142 パーティション6−開始:開始値=857143、終了
値=999999 パーティション3−終了:遅延=3568ms、問合せ
=282ms、ロード=37341ms;行数=517 パーティション1−終了:遅延=1957ms、問合せ
=277ms、ロード=42125ms;行数=586 パーティション0−終了:遅延=1117ms、問合せ
=439ms、ロード=43081ms;行数=599 パーティション2−終了:遅延=2781ms、問合せ
=278ms、ロード=42408ms;行数=589 パーティション6−終了:遅延=5998ms、問合せ
=283ms、ロード=39964ms;行数=554 パーティション4−終了:遅延=4341ms、問合せ
=278ms、ロード=41839ms;行数=581 パーティション5−終了:遅延=5128ms、問合せ
=282ms、ロード=41499ms;行数=574 総行数:4000 総経過時間:46912ms
【0046】8個のパーティション tanda:wgasior[124]%java P
Load 8 並列ロード試験:8個のパーティション タイマ開始 スレッド作成 経過時間:2ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=124
999 パーティション1−開始:開始値=125000、終了
値=249999 パーティション2−開始:開始値=250000、終了
値=374999 パーティション3−開始:開始値=375000、終了
値=499999 パーティション4−開始:開始値=500000、終了
値=624999 パーティション5−開始:開始値=625000、終了
値=749999 パーティション6−開始:開始値=750000、終了
値=874999 パーティション7−開始:開始値=875000、終了
値=999999 パーティション3−終了:遅延=3718ms、問合せ
=281ms、ロード=33849ms;行数=466 パーティション4−終了:遅延=4486ms、問合せ
=278ms、ロード=33419ms;行数=460 パーティション0−終了:遅延=1290ms、問合せ
=434ms、ロード=37526ms;行数=518 パーティション1−終了:遅延=2158ms、問合せ
=280ms、ロード=38303ms;行数=528 パーティション7−終了:遅延=6921ms、問合せ
=277ms、ロード=34587ms;行数=477 パーティション2−終了:遅延=2943ms、問合せ
=276ms、ロード=38879ms;行数=537 パーティション6−終了:遅延=6145ms、問合せ
=294ms、ロード=35982ms;行数=497 パーティション5−終了:遅延=5274ms、問合せ
=285ms、ロード=37516ms;行数=517 総行数:4000 総経過時間:43078ms
【0047】9個のパーティション tanda:wgasior[125]%java P
Load 9 並列ロード試験:9個のパーティション タイマ開始 スレッド作成 経過時間:2ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=111
111 パーティション1−開始:開始値=111112、終了
値=222222 パーティション2−開始:開始値=222223、終了
値=333333 パーティション3−開始:開始値=333334、終了
値=444444 パーティション4−開始:開始値=444445、終了
値=555555 パーティション5−開始:開始値=555556、終了
値=666666 パーティション6−開始:開始値=666667、終了
値=777777 パーティション7−開始:開始値=777778、終了
値=888888 パーティション8−開始:開始値=888889、終了
値=999999 パーティション4−終了:遅延=4282ms、問合せ
=284ms、ロード=30014ms;行数=406 パーティション3−終了:遅延=3524ms、問合せ
=277ms、ロード=31543ms;行数=428 パーティション0−終了:遅延=1117ms、問合せ
=446ms、ロード=34725ms;行数=471 パーティション1−終了:遅延=1932ms、問合せ
=281ms、ロード=34593ms;行数=470 パーティション2−終了:遅延=2757ms、問合せ
=280ms、ロード=34124ms;行数=462 パーティション5−終了:遅延=5172ms、問合せ
=289ms、ロード=32478ms;行数=439 パーティション8−終了:遅延=7635ms、問合せ
=281ms、ロード=31267ms;行数=422 パーティション7−終了:遅延=6865ms、問合せ
=279ms、ロード=32822ms;行数=443 パーティション6−終了:遅延=6034ms、問合せ
=283ms、ロード=33880ms;行数=459 総行数:4000 総経過時間:40199ms
【0048】10個のパーティション tanda:wgasior[126]%java P
Load 10 並列ロード試験:10個のパーティション タイマ開始 スレッド作成 経過時間:3ms スレッド開始 スレッド・ジョイン パーティション0−開始:開始値=0、終了値=999
99 パーティション1−開始:開始値=100000、終了
値=199999 パーティション2−開始:開始値=200000、終了
値=299999 パーティション3−開始:開始値=300000、終了
値=399999 パーティション4−開始:開始値=400000、終了
値=499999 パーティション5−開始:開始値=500000、終了
値=599999 パーティション6−開始:開始値=600000、終了
値=699999 パーティション7−開始:開始値=700000、終了
値=799999 パーティション8−開始:開始値=800000、終了
値=899999 パーティション9−開始:開始値=900000、終了
値=999999 パーティション1−終了:遅延=2054ms、問合せ
=281ms、ロード=30277ms;行数=408 パーティション4−終了:遅延=4544ms、問合せ
=284ms、ロード=28206ms;行数=380 パーティション5−終了:遅延=5452ms、問合せ
=281ms、ロード=27309ms;行数=367 パーティション2−終了:遅延=2818ms、問合せ
=277ms、ロード=29958ms;行数=404 パーティション0−終了:遅延=1176ms、問合せ
=441ms、ロード=32200ms;行数=434 パーティション3−終了:遅延=3681ms、問合せ
=278ms、ロード=31292ms;行数=423 パーティション6−終了:遅延=6243ms、問合せ
=287ms、ロード=28825ms;行数=386 パーティション7−終了:遅延=7088ms、問合せ
=284ms、ロード=29758ms;行数=400 パーティション9−終了:遅延=8736ms、問合せ
=314ms、ロード=28869ms;行数=389 パーティション8−終了:遅延=7915ms、問合せ
=285ms、ロード=30348ms;行数=409 総行数:4000 総経過時間:38550ms
【0049】上記の例には、様々なパーティションの1
1個の試験がリストされている。第1の例は、3つのス
レッドを介した3パーティション転送の例である。次の
10個の例は、各分割ごとに1個ないし10個のパーテ
ィションからなる第1の例の後に続く連続する例であ
る。各パーティションでは、4000個のデータ列を使
用した。各例ではまた、実行する必要のあるパーティシ
ョンの数に応じてそれぞれの異なる数のノード接続が使
用される。
【0050】上記の実施形態のソフトウェア処理系は、
コンピュータ可読媒体、たとえば、ディスケット、CD
−ROM、ROMメモリ、固定ディスクなどの有形媒体
上に固定された一連のコンピュータ命令、またはモデム
またはその他のインタフェース装置を介し媒体を介して
コンピュータ・システムに伝送することのできる一連の
コンピュータ命令を備えることができる。この媒体は、
光学通信回線またはアナログ通信回線を含むがこれらに
限らない有形媒体でよく、あるいはマイクロ波伝送技
法、赤外線伝送技法、またはその他の伝送技法を含むが
これらに限らない無線技法を用いて実現することができ
る。媒体はインタネットでもよい。一連のコンピュータ
命令は、上記で本発明に関して説明した機能のすべてま
たは一部を実現する。当業者には、このようなコンピュ
ータ命令が、多数のコンピュータ・アーキテクチャまた
はオペレーティング・システムと共に使用されるいくつ
かのプログラミング言語で書ける命令であることが理解
されよう。さらに、このような命令は、半導体デバイ
ス、磁気装置、光学装置、またはその他のメモリ装置を
含むがこれらに限らない現行または将来の任意のメモリ
技法を使用して記憶するか、あるいは光学伝送技法、赤
外線伝送技法、マイクロ波伝送技法、またはその他の伝
送技法を含むがこれらに限らない現行または将来の任意
の通信技法を使用して伝送することができる。添付の印
刷された文書または電子ドキュメンテーション、たとえ
ば、コンピュータ・システムに事前にロードされ、たと
えばシステムROMや固定ディスク上にロードされたシ
リンク・ラップされたソフトウェアと共に着脱可能媒体
としてこのようなコンピュータ・プログラム製品を配布
するか、あるいはネットワーク、たとえばインタネット
やWWWを介してサーバまたは電子掲示板からこのよう
なコンピュータ・プログラム製品を配布することが企図
される。
【0051】本発明の例示的な実施形態を開示したが、
当業者には、本発明の趣旨および範囲から逸脱せずに本
発明のいくつかの利点を実現する様々な変更および修正
を加えられることが明らかになろう。たとえば、当業者
には、上記の説明は特定のハードウェア・システムおよ
びオペレーティング・システムを対象とした説明である
が、他のハードウェアおよびオペレーティング・システ
ム・ソフトウェアを前述と同様に使用できることが自明
であろう。特定の機能を実現するために使用される特定
の命令など他の態様と、本発明の概念に対するその他の
修正は、添付の特許請求の範囲によってカバーされる。
【図面の簡単な説明】
【図1】本発明を操作することができるクライアント・
サーバ・システムのブロック概略図である。
【図2】3段システムにおけるクライアント・オブジェ
クトとビジネス・オブジェクトと問合せオブジェクトと
の間の対話を示すブロック概略図である。
【図3】データ・セット内の分類されたデータ列を、後
で転送される選択された部分にマップするためのマッピ
ング・テーブルを示す概略図である。
【図4】本発明によって、転送すべきデータ・セット内
のパーティションの数と、データ・セット・パーティシ
ョンの転送を実行するために使用される通信スレッドの
数とを決定する際に使用されるステップの流れ図であ
る。
【符号の説明】
100 システム 102、104、106、108 ノード 105 中央システム・バス 110 連想データベース 118、122 中央演算処理装置 112、124 メイン・メモリ 114 モニタ 116 キーボード 117 マウス 126、128、130 通信ノード 132 データ転送コントローラ 134 データ・パーティショナ 202 アプリケーション 203 上段 205 中段 206 ビジネス・オブジェクト 207 下段 208、214 データ要求オブジェクト
フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 ヴォイツェック・ガショア アメリカ合衆国・02030・マサチューセッ ツ州・ドーバー・ウォルポール ストリー ト・58 (72)発明者 アーロン・ヒューズ アメリカ合衆国・94544・カリフォルニア 州・ヘイワード・ウェブスター ストリー ト・309番・823

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 第1のコンピュータ記憶位置と第2のコ
    ンピュータ記憶位置との間でデータ・セットを転送する
    分散コンピュータ・システムであって、 第1のコンピュータ記憶位置と第2のコンピュータ記憶
    位置を結合し、それぞれが通信スレッドとして働く、複
    数の通信ノードと、 第1のコンピュータ記憶位置と第2のコンピュータ記憶
    位置との間のデータ転送リンクとして働くいくつかの通
    信スレッドを選択するために第1または第2のコンピュ
    ータ記憶位置および複数の通信ノードに結合されたデー
    タ転送コントローラと、 第1のコンピュータ記憶位置に結合されたデータ・パー
    ティショナとを備え、データ・パーティショナが、デー
    タ・セット転送要求に応答して、データ・セットを転送
    可能なデータ・セット・パーティションに区分し、デー
    タ転送コントローラが、データ・セット・パーティショ
    ンを通信スレッドを介して並列に転送することを特徴と
    する分散コンピュータ・システム。
  2. 【請求項2】 データ・セットが、選択された通信スレ
    ッドの数に等しい数のデータ・セット・パーティション
    に区分されることを特徴とする請求項1に記載の分散コ
    ンピュータ・システム。
  3. 【請求項3】 データ・セットが、選択された通信スレ
    ッドの数よりも多くのデータ・セット・パーティション
    に区分されることを特徴とする請求項1に記載の分散コ
    ンピュータ・システム。
  4. 【請求項4】 選択された通信スレッドの数に等しい数
    の、第1の1組のデータ・セット・パーティションが通
    信スレッドを介して並列に転送され、残りのデータ・セ
    ット・パーティションが、いくつかのデータ・セット・
    パーティションが並列通信スレッドを介して順次転送さ
    れるように第1の1組のデータ・セット・パーティショ
    ンの対応する部分の転送を完了した通信スレッドを介し
    て転送されることを特徴とする請求項3に記載の分散コ
    ンピュータ・システム。
  5. 【請求項5】 データ転送コントローラが、すべてのデ
    ータ・セット・パーティションを完全に転送する前に、
    転送されたデータ・セット・パーティションへのアクセ
    スを可能にすることを特徴とする請求項1に記載の分散
    コンピュータ・システム。
  6. 【請求項6】 データ・パーティショナが、データ・セ
    ットを定義するために使用されるデータ列に基づいてパ
    ーティションを決めることを特徴とする請求項1に記載
    の分散コンピュータ・システム。
  7. 【請求項7】 分散コンピュータ・システムがワイド・
    エリア・ネットワークを備えることを特徴とする請求項
    1に記載の分散コンピュータ・システム。
  8. 【請求項8】 分散コンピュータ・システムがインタネ
    ット・システムを備えることを特徴とする請求項1に記
    載の分散コンピュータ・システム。
  9. 【請求項9】 第1のコンピュータ記憶位置と、第2の
    コンピュータ記憶位置と、第1のコンピュータ記憶位置
    と第2のコンピュータ記憶位置を結合する複数の通信ノ
    ードとを備える分散コンピュータ・システムにおいて、
    第1のコンピュータ記憶位置と第2のコンピュータ記憶
    位置との間でデータ・セットを転送する方法であって、 データ・セットを転送可能なデータ・セット・パーティ
    ションに区分するステップと、 複数の通信ノードから選択された複数の並行通信スレッ
    ドを形成するステップと、およびデータ・セット・パー
    ティションを複数の通信スレッドを介して第1のコンピ
    ュータ記憶位置と第2のコンピュータ記憶位置との間で
    並列に転送するステップとを含むことを特徴とする方
    法。
  10. 【請求項10】 通信スレッド形成ステップが、N個の
    通信スレッドを選択するステップを含み、Nがデータ・
    セット・パーティションの数であることを特徴とする請
    求項9に記載の方法。
  11. 【請求項11】 通信スレッド形成ステップが、N個の
    通信スレッドを選択するステップを含み、Nがデータ・
    セット・パーティションの数よりも小さいことを特徴と
    する請求項9に記載の方法。
  12. 【請求項12】 転送ステップが、 1つのデータ・セット・パーティションが1つの通信ス
    レッドに割り当てられる、N個のデータ・セット・パー
    ティションをN個の通信スレッドを介して並列転送で転
    送するステップと、 N個の通信スレッドのそれぞれが利用可能になったとき
    に、区分されたデータ・セットの転送速度を最適化する
    ように残りのデータ・セット・パーティションを転送す
    べき利用可能な通信スレッドに割り当てるステップとを
    含むことを特徴とする請求項11に記載の方法。
  13. 【請求項13】 さらに、すべてのデータ・セット・パ
    ーティションを完全に転送する前に、完全に転送された
    データ・セット・パーティションへのアクセスを許可す
    るステップを含むことを特徴とする請求項9に記載の方
    法。
  14. 【請求項14】 データ・セットが、全範囲を有するデ
    ータ列を備え、区分ステップがさらに、 パーティション列を決め各データ・セット・パーティシ
    ョンにマーク付けするステップと、 各データ・セット・パーティションを決めるデータ列の
    サブレンジを選択するステップと、およびこのデータ列
    の範囲を所与のデータ・セット・パーティションに割り
    当てるステップとを含むことを特徴とする請求項9に記
    載の方法。
  15. 【請求項15】 各データ・セット・パーティションご
    との各データ列サブレンジが、他のデータ・セット・パ
    ーティションの他のデータ列サブレンジと重なり合わな
    いことを特徴とする請求項14に記載の方法。
  16. 【請求項16】 サブレンジ選択ステップが、ほぼ均等
    に分散された値を生成し、全範囲内に各サブレンジを決
    めることを含むことを特徴とする請求項14に記載の方
    法。
  17. 【請求項17】 さらに、データ・セット・パーティシ
    ョンをデータ・セットに再アセンブルすることを含むこ
    とを特徴とする請求項9に記載の方法。
  18. 【請求項18】 第1のコンピュータ記憶位置と、第2
    のコンピュータ記憶位置と、第1のコンピュータ記憶位
    置と第2のコンピュータ記憶位置を結合する複数の通信
    ノードとを備える分散コンピュータ・システムで使用さ
    れ、第1のコンピュータ記憶位置と第2のコンピュータ
    記憶位置との間でデータ・セットを転送するプログラム
    ・コードを備えるコンピュータ・プログラム製品であっ
    て、 データ・セットを転送可能なデータ・セット・パーティ
    ションに区分するコンピュータ・プログラム・コード
    と、 複数の通信ノードから選択された複数の並行通信スレッ
    ドを形成するコンピュータ・プログラム・コードと、 データ・セット・パーティションを複数の通信スレッド
    を介して第1のコンピュータ記憶位置と第2のコンピュ
    ータ記憶位置との間で並列に転送するコンピュータ・プ
    ログラム・コードとを含むことを特徴とするコンピュー
    タ・プログラム製品。
  19. 【請求項19】 複数の通信スレッドを形成するコンピ
    ュータ・プログラム・コードが、N個の通信スレッドを
    選択することを含み、Nがデータ・セット・パーティシ
    ョンの数であることを特徴とする請求項18に記載のコ
    ンピュータ・プログラム製品。
  20. 【請求項20】 複数の通信スレッドを形成するコンピ
    ュータ・プログラム・コードが、N個の通信スレッドを
    選択することを含み、Nがデータ・セット・パーティシ
    ョンの数よりも小さいことを特徴とする請求項18に記
    載のコンピュータ・プログラム製品。
  21. 【請求項21】 転送コンピュータ・プログラム・コー
    ドが、 1つのデータ・セット・パーティションが1つの通信ス
    レッドに割り当てられる、N個のデータ・セット・パー
    ティションをN個の通信スレッドを介して並列転送で転
    送するコンピュータ・プログラム・コードと、 N個の通信スレッドのそれぞれが利用可能になったとき
    に、区分されたデータ・セットの転送速度を最適化する
    ように残りのデータ・セット・パーティションを転送す
    べき利用可能な通信スレッドに割り当てるコンピュータ
    ・プログラム・コードとを含むことを特徴とする請求項
    20に記載のコンピュータ・プログラム製品。
  22. 【請求項22】 さらに、すべてのデータ・セット・パ
    ーティションを完全に転送する前に、完全に転送された
    データ・セット・パーティションへのアクセスを許可す
    ることを含むことを特徴とする請求項18に記載のコン
    ピュータ・プログラム製品。
  23. 【請求項23】 データ・セットが、全範囲を有するデ
    ータ列を備え、区分コンピュータ・プログラム・コード
    がさらに、 パーティション列を決め、各データ・セット・パーティ
    ションにマーク付けするコンピュータ・プログラム・コ
    ードと、 各データ・セット・パーティションを決めるデータ列の
    サブレンジを選択するコンピュータ・プログラム・コー
    ドと、 このデータ列範囲を所与のデータ・セット・パーティシ
    ョンに割り当てるコンピュータ・プログラム・コードと
    を含むことを特徴とする請求項18に記載のコンピュー
    タ・プログラム製品。
  24. 【請求項24】 各データ・セット・パーティションご
    との各データ列サブレンジが、他のデータ・セット・パ
    ーティションの他のデータ列サブレンジと重なり合わな
    いことを特徴とする請求項23に記載のコンピュータ・
    プログラム製品。
  25. 【請求項25】 サブレンジ選択コンピュータ・プログ
    ラム・コードが、ほぼ均等に分散された値を生成し、全
    範囲内に各サブレンジを決めるコンピュータ・プログラ
    ム・コードを含むことを特徴とする請求項23に記載の
    コンピュータ・プログラム製品。
  26. 【請求項26】 さらに、データ・セット・パーティシ
    ョンをデータ・セットに再アセンブルするコンピュータ
    ・プログラム・コードを含むことを特徴とする請求項1
    8に記載のコンピュータ・プログラム製品。
JP2000001436A 1999-01-07 2000-01-07 区分されたデータ・セットを複数のスレッドを介して転送する方法およびシステム Pending JP2000235537A (ja)

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
US09/226864 1999-01-07

Publications (1)

Publication Number Publication Date
JP2000235537A true JP2000235537A (ja) 2000-08-29

Family

ID=22850725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000001436A Pending JP2000235537A (ja) 1999-01-07 2000-01-07 区分されたデータ・セットを複数のスレッドを介して転送する方法およびシステム

Country Status (4)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009512948A (ja) * 2005-10-20 2009-03-26 ネットアップ,インコーポレイテッド ストレージサーバにおけるスループットを増加させる方法および装置

Families Citing this family (32)

* 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
ES2291304T3 (es) * 2001-04-11 2008-03-01 Orell Fussli Sicherheitsdruck Ag Un procedimiento para imprimir documentos de seguridad que utiliza 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
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
DE69124794D1 (de) 1991-05-08 1997-04-03 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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009512948A (ja) * 2005-10-20 2009-03-26 ネットアップ,インコーポレイテッド ストレージサーバにおけるスループットを増加させる方法および装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2000235537A (ja) 区分されたデータ・セットを複数のスレッドを介して転送する方法およびシステム
US6826753B1 (en) Managing parallel execution of work granules according to their affinity
US7937377B2 (en) Dynamic cluster database architecture
US7139747B1 (en) System and method for distributed web crawling
AU770875B2 (en) Object hashing with incremental changes
US8655877B2 (en) System and program for joining source table rows with target table rows
JPH06350648A (ja) データ・パケットを貯蔵する方法及び装置
US20020065870A1 (en) Method and apparatus for heterogeneous distributed computation
JPH03158959A (ja) 多重プロセッサコンピュータ・システムおよびコンピュータネットワークを動作させる方法
JP3510042B2 (ja) データベース管理方法及びシステム
CN112765262B (zh) 一种数据重分布方法、电子设备及存储介质
US20110022585A1 (en) Multi-partition query governor in a computer database system
JPH04216158A (ja) 分散データ処理システム内でユーザ・アクセス制御を実現する方法および装置
JPH05197578A (ja) ユーザ要求の延期実行制御方法及び装置
US7890758B2 (en) Apparatus and method for generating keys in a network computing environment
US6549931B1 (en) Distributing workload between resources used to access data
JPH06274394A (ja) 分散データベース制御方法
EP1611523B1 (en) Controlling usage of system resources by a network manager
CA2425048C (en) Method and system for resource access
Liu Sheng et al. Data allocation design in computer networks: LAN versus MAN versus WAN
JP2008509467A (ja) 複数のデータベース内に位置する属性によりデータベース・レコードを管理する方法、システム及びコンピュータ・プログラム
WO2022038933A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
Kaufmann et al. Towards practical permutation routing on meshes
JPS61848A (ja) 分散制御システムのバス選択方式
JPH0730587A (ja) フレーム中継制御方法、及びその装置