[go: up one dir, main page]

JP4777972B2 - 無共有型並列データベースシステム及びデータベース管理方法 - Google Patents

無共有型並列データベースシステム及びデータベース管理方法 Download PDF

Info

Publication number
JP4777972B2
JP4777972B2 JP2007503912A JP2007503912A JP4777972B2 JP 4777972 B2 JP4777972 B2 JP 4777972B2 JP 2007503912 A JP2007503912 A JP 2007503912A JP 2007503912 A JP2007503912 A JP 2007503912A JP 4777972 B2 JP4777972 B2 JP 4777972B2
Authority
JP
Japan
Prior art keywords
slave
dimension
query
database system
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2007503912A
Other languages
English (en)
Other versions
JP2007531087A (ja
Inventor
フロスト,スチュアート
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.)
Microsoft Corp
Original Assignee
Datallegro 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=35125731&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP4777972(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Datallegro Inc filed Critical Datallegro Inc
Publication of JP2007531087A publication Critical patent/JP2007531087A/ja
Application granted granted Critical
Publication of JP4777972B2 publication Critical patent/JP4777972B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

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

Description

本発明は、並列データベースシステム(parallel database system)に関するものであり、特に、無共有型(shared−nothing)並列データベースシステムに関する。
無共有型のアーキテクチャを用いて設計される並列データベースシステムは、プロセッサ、メモリ及びディスク資源を各々有する複数ノードから構成される。これらのシステムでは、データベースのテーブルは、システムの全ノードに亘って分散される。また、データベースに対する問合せ(Query)は、同時に、複数ノードにおいて並列して実行される。無共有型並列データベースシステムは、システムにおけるノード数の増加によりパフォーマンスを向上させ、より大きなデータセットの処理を可能にするリニアスケーリング(linear scaling)を提供することを目的とするものである。
しかしながら、従来の設計では、例えば問合せスキューのような問題により、リニアスケーリングが提供できていない。問合せスキューは、同じデータベースに対する複雑さのレベルが類似した2つの異なる問合せが、全く異なる実行時間を要したときに発生する。
従来の無共有型並列データベースシステムにおいて、問合せスキューは、他の問合せがほとんど又は全くデータ伝送をしていない間に、特定の問合せの処理をするノード間で大量のデータを伝送しなければならないことが原因で発生する。従来のシステムにおいて、このデータ転送は、問合せ処理を減速させ、障害(ボトルネック)を発生させる原因となっている。
例えば、4つのノードを有する従来のシステムにおいて、データベーステーブルは多くの場合、各々のノードに各テーブルの4分の1ずつが格納されるようにして等しく分散される。そして、典型的なデータベースの問合せは、1つのテーブルの主キーと他のテーブルの外部キーとの整合性(マッチング)を検索してそれぞれのデータベーステーブルをスキャンする一つ以上の「結合」を含む。
2つのデータベーステーブルの結合を処理するために、各々のノードは、他のノードにデータベーステーブルのうちの1つの一部を伝送しなければならない。
このデータ伝送は、どのデータベーステーブルが結合されているか、また、問合せにどれ位の数の結合が含まれているかにより、相当な時間を要する可能性があり、よって問合せ処理を遅延させることになる。
データセットが大きくなり、問合せセッションの数が増えるにつれて、問合せスキューはますますシステムパフォーマンスを悪化させる。
この問題の本質に鑑みると、更なる追加ノードをこれらの従来システムに組み込んでも、問合せ処理におけるこの障害を解消することにはならない。
従って、問合せスキューを低減することが可能な、改良された無共有型の並列データベースシステムが求められている。
さらに、改良されたシステムは、システムを運用するのに必要な管理費用を最小限にしつつ、安全確実なフェールオーバ保護(failover protection)を提供しなければならない。
そこで、本発明は、超無共有型並列データベースシステム(ultra−shared−nothing parallel database system)を提供することで、前述した従来の無共有型のデータベースシステムにおける問題を解決することを目的とする。
本発明の超無共有型並列データベースシステムは、従来技術と同じ量のデータがノード間を伝送される必要なく、データベースの問合せが並列に処理されることを可能にする方法で、データベースのテーブルを、複数のスレーブノード(slave node)に分割し、分散する。データベースは、データベーススキーマの構造及びテーブルの相対的(relative)な大きさに関連したルールセットに従って分散される。
本発明は、ノード間におけるデータ伝送の必要性を大幅に減らすことにより、ネットワークトラフィック及び結果として生じる問合せスキューを減らすことで、システムパフォーマンスを大きく改善する。
具体的には、ある特定のデータベースに関し、ファクトテーブル(fact table)と、ディメンションテーブル(dimension table)のうちの1つと、が共通キーで分割され、複数のスレーブノードに分散される。ここで、該データベースにおける小さなディメンションテーブルは、システムのスレーブノード全てに複製される。さらに、残りのディメンションテーブルは、複数スレーブノードの全般に亘って分割され、且つ、全スレーブノードに複製される。これにより、スレーブノード間又はマスターノードとスレーブノードとの間に大きなネットワークトラフィックを生じさせずに、データベースシステムにおいて多数の問合せが実行可能となる。
本発明の一形態によれば、マスターノードおよび複数のスレーブノードを含んだ並列データベースシステムが提供される。
ファクトテーブルと複数のディメンションテーブルとを含んだデータベースは、データベースシステムのスレーブノードに分散される。データベースのテーブルを分散するために、ファクトテーブル及び第1ディメンションテーブル(first dimension table)がスレーブノードに分割される。さらに、残ったディメンションテーブルが、各々のスレーブノードに複製され、それらが最小サイズである場合には、さらに全スレーブノードに亘って分割される。
好ましくは、ファクトテーブル及び第1ディメンションテーブルは、共通キーで分割されることが望ましい。
また、残りのディメンジョンテーブルは、必要に応じて行分割又は列分割され、システムの複数スレーブノードに亘って分散される。
さらに、データベースに対する問合せは、並列データベースシステムのスレーブノードによって該スレーブノード間のデータ伝送なしで実行可能な、少なくとも1つの副問合せ(sub−query)に変換される。
本発明の別の態様では、並列データベースシステムは、データベースシステムにより生成された問合せ結果をキャッシュに格納する。
好ましくは、マスターノードは、該マスターノードにより生成された問合せ結果を格納するための問合せキャッシュを含み、スレーブノードはその各々が、夫々の該スレーブノードにより生成された副問合せ結果を格納するための問合せキャッシュを含むことが望ましい。
本発明の別の態様では、データベースシステムの各々のスレーブノードには少なくとも1つのフェールオーバパートナー(failover partner)が割り当てられる。また、各々のフェールオーバパートナーは、それ自身のテーブルに加え、そのフェールオーバパートナーのデータセットのうち、全て又は一部のデータセットを格納する。
さらに、スレーブノードに障害が発生した場合には、障害が発生したスレーブノードに向けられた副問合せが、障害が発生したスレーブノードの代わりにフェールオーバパートナーにより実行される。
以上に要約した本発明によれば、有用で信頼性の高い並列データベースシステムが提供される。
まず、問合せスキューがデータベースの問合せ処理から無くなることで、データベースシステムのリニアスケーリングに近い状態が可能になる。また、二層の問合せキャッシュにより、問合せにおける配下のテーブルに対する変更を介入させることなく、反復的な問合せ処理が低減される。さらに、スレーブノードにおけるフェールオーバパートナーの運用により、ノードに障害が発生したときにおいても継続した使用を可能とする、費用効率の良いソリューションを提供する。
前述した本発明の概要は、本発明の本質を迅速に理解可能にするべく提供されたものである。
本発明の好ましい実施態様に関しては、以下の発明の詳細な説明及び関連した図面を参照することにより、さらに詳細且つ完全に理解されるであろう。
本発明は、超無共有型並列データベースシステムと呼称される、改良された無共有型並列データベースシステムである。
超無共有型並列データベースシステムは、少なくとも1つのマスターノード及び複数のスレーブノードを用いた従来の無共有型並列データベースに準じた方法で構成される。
図1は、超無共有型データベースシステムの一実施形態のハードウェアアーキテクチャを表す概要図である。
図1はデータベースシステム10の構成を表し、マスターノード11、複数のスレーブノード12aから12nまで(図示を簡略化するためこのように記述する)を示す。なお、図1では、マスターノードを1つだけ含む。しかしながら、詳細に後述するように、本発明の他の実施形態では、複数のマスターノード11を、データベースシステム10に組み込む。マスターノード11及びスレーブノード12aから12nは、ネットワーク13を介して相互接続される。
好ましくは、ネットワーク13はデータベースシステム10の信頼性を改善するために用いられる冗長或は二重ネットワーク(redundant network)であることが望ましい。あるいは、重要でないアプリケーションであれば、非冗長なネットワーク(non−redundant network)が用いられても良い。
ネットワーク13は、当業者にとって周知の多数のネットワーク技術及びプロトコルのうちのいずれか用いて実装される。実施形態におけるネットワークは、イーサネット(Ethernet)(登録商標)で用いられるTCP/IP、及び、インフィニバンド(Infiniband)で用いられるMPI(Message Passing Interface)を含むが、これに限定されるものではない。
データベースシステム10の各ノードは、プロセッサ、メモリ及びディスク資源を含んで構成される。具体的には、マスターノード11は、中央演算処理装置(CPU)14、メモリ(RAM)15及びディスク16を含んで構成される。
スレーブノード12aからスレーブノード12nは、各々、CPU12aからCPU17n、RAM18aからRAM18n、及び、ディスク19aからディスク19nを含んで構成される。
各CPUは、各ディスクに格納されたソフトウェアモジュールのプログラム命令を実行する。各CPUは、命令シーケンスをロードし、また、データを格納して操作するためのワークスペースとしてRAMを使用する。
各々のノードは単一のCPU及び単一のディスクを含んで構成されたものとして表されているが、当業者であれば、各々のノードが、処理能力を改善するべく複数のCPU及び複数のディスクを含んで構成され得ることが理解できるはずである。例えば、本発明の1つの実施形態として、デュアル・プロセッサ及び12台のハードディスクを用いたノードを用いる。
基本ソフトウェアコンポーネント(例えばオペレーティングシステム及びデバイスドライバ)に加えて、データベースシステム10の各ノードは、本発明を履行するためのソフトウェアモジュールを格納し、実行する。
図2は、データベースシステム10のソフトウエア・アーキテクチャを表す概要図である。
マスターノード11は、ストリーム管理ソフトウェア20、問合せキャッシュソフトウェア21、SQL(Structured Query Language)解析ソフトウェア22、スレーブスキーマ生成ソフトウェア23、更新/登録ソフトウェア24、問合せ並列化/最適化ソフトウェア25、マルチステップ問合せ実行ソフトウェア26、結果セット解析ソフトウェア28、日付分割メンテナンスソフトウェア29、一括ローディングソフトウェア30、DBMS(Database Management System)31及びシステム管理ソフトウェア32を含んで構成される。
複数のマスターノードを用いる実施形態においては、各マスターノードが前述したソフトウェアモジュールを含んで構成される。
各スレーブノードは、DBMS33a〜33n及びスレーブ管理ソフトウェア34a〜34nを含んで構成される。
最後に、管理コンソールソフトウェア35は、少なくとも1つのマスターノードにインストールされ、マスターノードに接続された端末又はデータベースシステム10から分離したコンピュータシステムで実行されるクライアントプログラムを介してアクセスすることができる。
前述のソフトウェアモジュールは、データベースシステムのノードの各ディスクに格納され、それらのノードの各CPUによって実行される。
好ましい実施例では、全てのノードが同一のハードウェア構成を備え、各ノードの適切なソフトウェアモジュールをロードし実行することで、マスターノード又はスレーブノードのいずれかとして機能することができる。
本発明の一実施例によれば、ソフトウェアモジュールはJAVA(登録商標)プログラミング言語を用いて遂行される。しかしながら、当業者ならば1つ又は複数のソフトウェアモジュールを遂行するのに他のプログラミング言語を用いることが可能であることは、理解できるであろう。
これらのソフトウェアモジュールの処理については、以下の本発明の処理の説明において詳細に説明する。
従来の無共有型並列データベースに対する本発明の重要な改良点は、結合などのデータベース問い合せを実行するためにノード間でデータを伝送する必要性を大幅に低減することにある。この改良は、データベースシステム10の全スレーブノードに、データベースのテーブルを自動的に分割及び分散するルールセットを用いることで達成される。データベースのテーブルの分割及び分散は、生成されたスレーブスキーマに従って実行される。
外部のホストシステムは、データベースシステム10に対し、ホストスキーマを定義するメタデータを伝送する。
ストリーム管理ソフトウェア20は、メタデータを含んだストリームを受信し、受信したメタデータをDBMS31に伝送する。伝送されたホストスキーマに対するスレーブスキーマを生成するべく、DBMS31は、ホストスキーマのメタデータをスレーブスキーマ生成ソフト23に伝送する。
ホストスキーマを受信すると、スレーブスキーマ生成ソフト23は、スレーブスキーマを生成するルールセットを適用する。スレーブスキーマは、データベースのテーブルがスレーブノード12aから12nにどのように分割及び分散されるかについて定義する。
図3は、本発明の一実施例に従って、スレーブスキーマを生成するスレーブスキーマ生成ソフトウェア23によって実行される処理を表すフローチャートである。
図3に示すステップはスレーブスキーマを生成するのに用いられるルールセットを具体的に表す。
ステップ300(図ではS300と示す。以下同じ)では、スレーブスキーマ生成ソフトウェア23が、データベース10に接続された外部ホストシステムから出力されたホストスキーマを受信する。このホストスキーマは、正規化されたスキーマとして、スタースキーマやスノーフレークスキーマを含むことができるが、これに限定されるものではない。
図4は、トランザクション処理評議会(Transaction Processing Council)により作成された、データベースシステム用の標準的な指標(benchmark)として用いられるスノーフレークスキーマの一例である。
このスキーマは、1つのファクトテーブル(「LINEITEM」)及び複数のディメンションテーブル(「ORDERS」、「CUSTOMER」、「PART」、「PARTSUPP」、「SUPPLIER」、「NATION」及び「REGION」)を含んで構成される。
ファクトテーブルは、それが親である場合に、他のテーブルと親子関係を持たないテーブルとして定義される。ディメンジョンテーブルは、それが親である場合に、他のテーブルと親子関係を持つテーブルとして定義される。
図4において示されるスキーマは1つのファクトテーブルのみを含むが、データベースのスキーマは複数のファクトテーブルを含み得ることが理解できるであろう。
ステップ301では、ホストスキーマのテーブルが、スレーブスキーマの生成に備えて並び替えられる(ordered)。
図5は、ホストスキーマのテーブルを並び替えるための処理を表すフローチャートである。
ステップ500では、ホストスキーマ内の全てのファクトテーブルが識別される。
ステップ501では、各々の識別されたファクトテーブルについて、ホストスキーマにおいて定義されたテーブルのリレーションシップが、ファクトテーブルから第1ディメンジョンテーブルへと、内から外へ順に識別される。
ステップ502では、他の関連ディメンジョンテーブルを並び替える。なお、ディメンジョンテーブルは、ファクトテーブルに対する位置及び関係に基づいて並び替えられる。
図4で示されるホストスキーマを参照して説明すると、まず、「LINEITEM」テーブルは、ホストスキーマにおける唯一のファクトテーブルとして認識される。
次に、「LINEITEM」テーブルから順に外へ向かい、「ORDERS」、「PART」、「PARTSUPP」、「SUPPLIER」テーブルが、「LINEITEM」テーブルと直接の関係を持つテーブルとして認識される。
このテーブルの第1階層は、例えばサイズなどの指定された基準に基づいて並び替えられる。この第1階層において並べ替えられた1番目のテーブル(例えば「ORDER」テーブル)は、第1ディメンションテーブルとして認識される。
テーブルのリレーションシップ及び指定された並べ替え基準を用いて、残りのディメンションテーブルが並び替えられる。
ここで、並列データベースシステムを用いた問合せを効率的に処理するために、サイズが大きく、また、頻繁にアクセスされるテーブルであるほど、全スレーブノードに出来る限り均等且つ効率的に割り当てられなければならない。
この点に関し、本発明は従来の無共有型データベースシステムにおいて用いられた方法に順ずる方法を採用する。
具体的には、本発明は、ファクトテーブル及び第1ディメンションテーブルを、共通キーでハッシュ分割する。これらのテーブルにおける共通キーを用いたハッシュ分割により、所定のキー値が各々のノードに割り振られ、2つのテーブルを結合する問合せは、スレーブノード間におけるデータ伝送なしで処理され得る。
図3のステップ302では、対になったファクトテーブル及び第1ディメンションテーブルごとに、ハッシュキーを記録する。
ここで再び図4に示すホストスキーマを再度、参照すると、ORDERKEYが、ORDERSテーブル(第1ディメンションテーブル)のプライマリキーであり且つLINEITEMテーブル(ファクトテーブル)の外部キーであるため、ハッシュキーとして記録される。
一旦データベーステーブルが並び替えられ(ORDERED)、ハッシュキーが記録されると、スレーブスキーマ生成処理は、スレーブスキーマを生成可能な状態となる。そして、ホストスキーマの各テーブルが調査され(EXAMINED)、スレーブスキーマに、1つ又は複数の対応したテーブルが生成される。
図3のステップ303では、処理中のテーブルについて、それがファクトテーブルか、第1ディメンションテーブルかの判定が成される。
各々のファクトテーブル及びディメンションテーブルは、水平分割され(horizontally partitioned)、全スレーブノードに対して分散される。
このように、各々のスレーブノードは、ホストスキーマの各々のファクトテーブル及び各々の第1ディメンションテーブルの水平分割された一部分を割り当てられる。
ところで、通常のデータベースでは、テーブルは相当量のテキストを含む。このテキストは、通常はテーブルのコメントフィールドに存在する。
本発明の付加的な特徴は、これらの大きなコメントフィールドを削除してスレーブスキーマの分割テーブル内に移すために、テーブルを垂直分割することである。
2つのテーブルの行を正確に同じ順序に保つため、個々の行のコメントフィールドが、行識別子を用いることで識別される。
垂直分割機能は、デフォルトルールとして設定されるか、システム管理者からの入力によって設定される。
ステップ304では、テーブルを垂直分割するか否かが判定される。
ステップ305では、垂直分割しない場合に、スレーブスキーマに水平分割されたテーブルが生成される。
ステップ306では、垂直分割する場合に、スレーブスキーマに垂直分割されたテーブルのセットが生成される。なお、これらの垂直分割されたテーブルは、水平分割されたテーブルの垂直分割であり、ステップ305で生成された水平分割されたテーブルと同じセットとしてのものである。
本発明の好ましい実施例によれば、ファクトテーブル及び第1ディメンションテーブルの他の各々のテーブルが完全に複製され、各々のスレーブノードに格納される。
ステップ307では、調査されたテーブルがファクトテーブル又は第1ディメンションテーブルでない場合(以下、かかるテーブルを外部ディメンションテーブルという)に、完全な(FULL)テーブルが、スレーブスキーマに生成される。
各々のスレーブノードに、各々の外部ディメンションテーブルを完全に複製することで、外部ディメンションテーブルと、ファクトテーブル又は第1ディメンションテーブルと、の間の結合を含む問合せなどが、スレーブノード間におけるテーブルデータの伝送を必要とせずに、並列に実行される。
各々の外部ディメンションテーブルの完全な複製に加え、本発明の好ましい実施例では、必要に応じて、全スレーブノードに亘って、外部ディメンションテーブルを分割及び分散する。
該スレーブノードに、外部ディメンションテーブルの完全な複製及び外部ディメンションテーブルの分割された一部を有することで、問合せを最適化し、最高のシステムパフォーマンスを生むようにスレーブノードのテーブル参照を行うようにすることができる。
しかしながら、一部の(certain)データベーステーブルは、十分なパフォーマンスを産しないことから更なる処理や格納空間を必要することを正当化することもある。
例えば、比較的小さなデータベースを全スレーブノードに分割及び分散することは、に十分なパフォーマンスを供しない可能性もある。
従って、本発明の実施形態の1つは、例えばこのような所定のサイズより小さい一部の外部ディメンションテーブルについては、分割を行わないという分割オプションが、デフォルトルールとして又はシステム管理者による入力によって設定されるものである。
ステップ308では、処理中のテーブルを分割するか否かを判定する。
ステップ309では、分割オプションが設定されていない場合又はテーブルが分割基準を満たしていない場合に、テーブルを垂直分割するか否かを判定する。
ステップ310では、垂直分割しない場合に、水平分割されたテーブルが、スレーブスキーマに生成される。
ステップ311では、垂直分割する場合に、垂直分割されたテーブルが、スレーブスキーマに生成される。
なお、これらの垂直分割されたテーブルは、水平分割されたテーブルを垂直分割したものであり、セットとしては、ステップ310で生成された水平分割されたテーブルと同じものである。
ステップ312では、ひとたびホストスキーマの全てのテーブルが調査され、適切な関連テーブルがスレーブスキーマに生成されると、生成されたスレーブスキーマはDBMS31に格納され、各々のスレーブノードに伝送される。
スレーブスキーマは、マスターノード及びスレーブノードにより、データベーステーブルをデータベースシステムにロードし、分割するために用いられる。
個々のデータベースのデータは、マスターノードの中の1つ又は一括ローディング専用のノードのいずれかを介して、本発明のデータベースシステムに一括ローディングされる。
図6は、データベースシステムへのデータの一括ローディングの処理を表すフローチャートである。
ステップ601では、ロードされた各々のテーブルについて、関連するテーブルの適切なロックを設定することにより、スレーブノードがデータを受信する準備をする。
ステップ602では、全スレーブノードに対し、各々のテーブルのデータを伝送する。
好ましくは、データは、ノード間のネットワークによりマルチキャスティング機能を介してスレーブノードに伝送される。
ステップ603では、スレーブノードによって受信されたテーブルが、スレーブスキーマに基づいて分割される。
図7は、スレーブノードのテーブルをロード及び分割する処理を表すフローチャートである。
スレーブ管理ソフト34は、個々のスレーブノードのテーブルをロード及び分割するべく、テーブルの各行を調査する。
ステップ700では、テーブルが全てロードされるか否かが判定される。全てロードされる場合には、各行が適切なテーブルへロードされる。
ステップ702では、分割された構成(Form)を保持するか否かが判定される。
ステップ703では、分割された構成が保持される場合に、個々のスレーブノードの分割されたテーブルに行が含まれているか否かを判定するべく、各行が調査される。
ここで、各々のスレーブノードは、分割されたテーブルの行の一意な一部が割り当てられることに留意する。
テーブル分割は、テーブルの行を分割及び分散する周知のアルゴリズムのいずれかを用いて行われる。好ましくは、テーブルはスレーブノードに均等に分割されると良い。
テーブルの行を分割するのに用いるアルゴリズムに基づき、個々のスレーブノードに調査された列を割り当てるか否かが判定される。
本発明の付加的な特徴は、データを分割及び分散するのに、日付分割を用いることである。
日付分割では、データベーステーブルは、データに含まれる基準となる日付に基づいて分割され分散される。その日付は、予め設定されたルールを用いて設定されるか、又はシステム管理者による入力によってコントロールされる。例えば、個々の年、四半期又は月の間のデータが、異なるスレーブノードに格納されることができる。
これらの日付分割されたテーブルが格納され、日付に基づいたデータベース問合せに用いられる。日付分割されたテーブルは、基準となる日付の範囲に該当しないデータを除外するべく常に保持される。なお、好ましくは、日付分割されたテーブルは、日付分割専用のスレーブノードに格納されると良い。
しかしながら、日付分割されたテーブルは、他の分割された又は分割されていないテーブルとともに、通常のスレーブノードに格納されることも可能である。
ステップ704では、個々のスレーブノードが日付分割されたスレーブノードであるかを判定する。
ステップ705では、日付分割されたスレーブノードである場合に、調査された行がそのスレーブノードによって格納される日付範囲に該当するかどうかが判定される。
ステップ706では、スレーブノードが日付分割されたスレーブノードであり、且つ、行が基準となる日付の範囲に該当する場合、行がスレーブスキーマに基づいて垂直分割されるか否かが判定される。
ステップ707では、垂直分割された行について、行が垂直に分割されたテーブルの適切なセットに書き込まれる。
ステップ708では、行が垂直分割されない場合、行が適切な水平分割されたテーブルに書き込まれる。
本発明の付加的な特徴は、周知の分割アルゴリズムのいずれかを用いて、スレーブノードにおける更なるレベルのテーブル分割を行う方法である。
例えば、テーブルはハッシュ値または日付範囲によって分割されることができる。
本発明のデータベースシステムはまた、フェールオーバ保護を提供するように設計されている。
このプロテクトを実行するために、スレーブノードは、フェールオーバパートナーを割り当てられる。各々のスレーブノードは、それ自身が有する分割されたテーブルに加え、フェールオーバパートナーが有する分割されたテーブルをも格納し、関連したテーブルをアップデートするために、前述したような同じアルゴリズムを用いる。
このフェールオーバシステムを用いることにより、各々のノードにおいてミラーリング又はパリティに基づいたディスクアレイを運用しなくても、高い信頼性が提供される。
このことにより、RAID0のディスクシステムが高いパフォーマンスを提供するべく用いられることが可能であり、高いレベルのRAIDシステムに伴う大きなコストを必要としないことから、実装コストを低減させることができる。
ステップ709では、調査された行が、スレーブノードの日付分割されたテーブルの日付の範囲に該当しない場合、又は、スレーブノードが日付分割されたテーブルを格納していない場合、行がスレーブノードに垂直分割されるか否かが判定される。
ステップ710では、行が垂直分割される場合、それが垂直分割されたテーブルの適切なセットに書き込まれる。
ステップ711では、行がスレーブノードの水平分割されたテーブルの一部であるか否かが判定される。
ステップ712では、行が水平分割されたテーブルの一部である場合、その行がそのテーブルに書き込まれる。
ステップ713では、一旦個々のテーブルの行の全てがデータベースに追加されると、影響を受けるさまざまな物理テーブルのインデックスがアップデートされる。
本発明の他のパフォーマンスを高める特徴は、問合せキャッシュ及び一時テーブルキャッシュを用いることである。
問合せキャッシュは、各々のマスターノードのDBMS31及び各々のスレーブノードのDBMS33に格納され、保持される。問合せキャッシュは、個々のノードにおいて実行される問合せに対する問合せ結果を格納する。
一時テーブルキャッシュは、多重処理(multi−step)の問合せを実行するときにマスターノードによって生成される一時テーブルを格納するために、各々のマスターノードのDBMS31に格納され、保持される。
テーブルがデータベースシステムにロードされるときに、問合せキャッシュ、及び、テーブルの前のバージョン(版)に基づいて生成された結果を含む一時テーブルキャッシュは、初期化されなければならない。
ステップ604では、これに従い、関連した問合せキャッシュ及び一時テーブルキャッシュは存在しない。
これらのキャッシュの処理に関するより詳細な説明は、後述する。
以上、テーブルのソート及び分割により、データベースシステムにテーブルを一括ローディングするのに用いられる、様々な処理について詳述した。
データをデータベースシステムへロードするための付加的な処理は、生成されたスレーブスキーマ及びデータ分散に影響するシステム設定へアクセスする外部ホストシステムを用いて、データを、予めソートすることである。予めソートされたデータは、マスターノードを迂回し、直接スレーブノードにロードされることが可能である。
図8は、予めソートされたデータを一括ローディングする処理を表すフローチャートである。
図8に示すように、各々のテーブル及び各々の予めソートされたデータの分割データは、調査され、適切なスレーブノードにロードされる。
ステップ800では、スレーブノードに全て格納された各々のテーブルについて、全てのスレーブノードが、テーブルを一括ローディングできる状態にされる。
ステップ801では、全てのテーブル内容が、全てのスレーブノードに伝送される。
ステップ802では、ソートされたデータの各々の分割データについて、スレーブノードの割り当てられたフェールオーバセットは、分割データをロードできる状態にされる。
ステップ803では、分割データはフェールオーバセットに伝送される。
ステップ804では、最後に、適切な問合せキャッシュ及び一時テーブルキャッシュが初期化される。
本発明の一実施例によれば、外部のホストシステムは、SQLステートメントを用いてデータベースシステムと通信する。
SQLステートメントは一般的に、ホストシステムによって各々のストリームに分けられ、各々のストリームは個々のユーザ又はアプリケーションに対応する。SQLステートメントを編成するためにストリームを用いることにより、ステートメントが、データベースシステムによって正しい順序で実行されることが確実となる。
データベースシステムによって受信されるSQLステートメントのストリームは、各々のマスターノードのストリーム管理ソフトウェア20によって管理される。
図9は、外部のホストシステムから新規のステートメントを受信したときに、ストリーム管理ソフトウェア20によって実行される処理を表すフローチャートである。
前述のように、本発明のデータベースシステムは、1つ以上の個数のマスターノードを有する。
外部のホストシステムによって送信されるSQLステートメントは、各々のマスターノードによって受信され、図9に記載されている方法で処理される。
ステップ901では、各々のマスターノードのストリーム管理ソフトウェア20において、受信したステートメントが、新規のストリームの開始又は既にデータベースシステムによって処理されている既存のストリームの一部であるか否かを判定する。
ステップ902では、ステートメントが新規のストリームの開始である場合、ストリーム管理ソフトウェア20は、ストリームを当該マスターノードにおいて制御するべきか否かを判定する。
各々のストリームは、データベースシステムの1つのマスターノードによって制御される。各々のマスターノードのストリーム管理ソフトウェア20は、どのマスターノードが生成されたストリームを制御するかについて決定するべく、他のマスターノードと通信する。ストリーム制御は、多数ある周知のロード・バランシング・アルゴリズムのいずれかを用いて決定される。
ステップ903では、ステップ902において当該マスターノードがストリームを制御すると判定された場合、ストリーム管理ソフトウェア20は、当該マスターノードがストリームを制御することを、他のマスターノードに通知する。
ステップ904では、各々のステートメントがマスターノードによって受信されたとき、各々のマスターノードの問合せキャッシュソフトウェア21は、ステートメントとマスターノードの問合せキャッシュとを比較する。前述したように、各々のマスターノードは、問合せキャッシュに、以前の問合せの結果を格納している。
ステップ904において、同一のステートメントが、マスターノードにより配下のテーブルに対する更新において以前に処理されたかどうかを判定するべく、ステートメントが問合せキャッシュと比較される。
ステップ905では、同一のステートメントがすでに処理された場合、そのステートメントに対応する結果セットが問合せキャッシュから検索されて、問合せストリームを制御する外部のホストシステム又はマスターノードに送信される。そして、マスターノードによるステートメントの処理は終了する。
ステップ906では、ステートメントが問合せキャッシュで見つからない場合、受信したステートメントが当該マスターノードによって制御されるストリームの一部であるか否かが判定される。
ステップ907では、マスターノードがそのストリームを制御する場合、ステートメントがSQL解析ソフトウェア22よって処理される。
ステートメントが当該マスターノードによって制御されるストリームの一部でない場合、当該マスターノードによるステートメント処理は終了し、ストリーム管理ソフトウェア20は、次のステートメントが受信されるのを待機する。
図10は、新たな処理におけるステートメントを生成するSQL処理ソフトウェア22によって実行される処理を表すフローチャートである。
ステップ1001では、新たな処理における各々のステートメントを生成するべく、ステートメントがトークン化される。
ステップ1002では、トークンが解析される。
ステップ1003では、最後に、解析されたステートメントを処理する関連したサブルーチンがコールされる。
サブルーチンは、テーブルの改変(alter)、データの更新/登録、及び問合せ並列化(query parallelization)を含むことができるが、これに限られるものではない。
図11は、データベースを改変するために、SQL解析ソフトウェア22によってコールされるテーブル改変サブルーチンによって実行される処理を表すフローチャートである。
データベーステーブルの改変は、主にスレーブスキーマ生成ソフトウェア23によって実行される。
ステップ1100では、改変されるテーブルがファクトテーブ又は第1ディメンションテーブルであるか否かが判定される。
ステップ1101では、テーブルがファクトテーブル又は第1ディメンションテーブルである場合、改変するテーブルが垂直分割されているか否かが判定される。
ステップ1102では、テーブルが垂直分割されていない場合、テーブルの改変は、マスターノードのDBMS31に格納されたメタデータ及び各々のスレーブノードの、水平分割されたテーブルにおいて行われる。
ステップ1103では、改変されたテーブルが垂直分割されている場合、垂直分割されたテーブルのセットは、マスターノードのDBMS31に格納されたメタデータ及び各々のスレーブノードにおいて改変される。
ステップ1104では、改変されるテーブルがファクトテーブル又はディメンションテーブルでない場合、テーブルは、マスターノードのDBMS31に格納されたメタデータ及び各々のスレーブノードにおいて改変される。
ステップ1105では、改変されるテーブルが複数スレーブノードに対して分割されているか否かが判定される。
ステップ1106では、テーブルが分割されている場合、そのテーブルが垂直分割されているか否かが判定される。
ステップ1107では、テーブルが垂直分割されていない場合、当該水平分割されたテーブルのセットのメタデータ及び実テーブルの内容が改変される。
ステップ1108では、テーブルが垂直分割されている場合、当該垂直分割されたテーブルのセットのメタデータ及び実テーブルの内容が改変される。
ステップ1109では、最後に、改変されたテーブルに依存する問合せキャッシュエントリおよび一時テーブルキャッシュエントリが初期化される。
図12は、データベースに対しデータを更新又は登録するためにSQL解析ソフトウェア22によりコールされる更新/登録サブルーチンにより実行される処理を表すフローチャートである。
ステップ1200では、更新又は登録された各々の行について、行がスレーブノードに分割された形態でのみ保持される例えばファクトテーブルや第1ディメンションテーブルと言ったテーブルの一部であるか否かが判定される。
ステップ1201では、行がスレーブノードに分割された形態でのみ保持されるテーブルの一部ではない場合、その行はシステムの各々のスレーブノードに書き込まれる。
ステップ1202では、行が分割された形態でのみ保持されるテーブルの一部である場合には、その行は、適切なハッシュキー及び場合によっては基準となる日付に基づいて、分割される。
ステップ1203では、行が、関連するスレーブノードの分割されたテーブルに書き込まれる。
ステップ1204では、変更された全てのデータベースのインデックスが更新される。
ステップ1205では、データが更新/登録されたテーブルに依存する全ての問合せキャッシュおよび一時テーブルキャッシュエントリが初期化される。
問合せステートメントは、問合せ並列化ソフトウェア25によって処理され、最適化される。
図13は、問合せ並列化処理を表すフローチャートである。
ステップ1301では、問合せがデータベースシステムの日付分割設定に含まれる特定の日付範囲を調査するか否かを判定する。
ステップ1302では、問合せが日付分割に含まれる日付範囲を調査する場合、特定の日付範囲に用いられるスレーブノードのグループが指定される。
ステップ1303では、問合せが特定の日付範囲を調査しない場合、又は日付範囲がどの日付分割設定にも相当しない場合、全てのスレーブノードは問合せを実行するのに用いられるべく指定される。
ステップ1304、1305及び1306は、問合せの構造に基づいて、また、当業者なら周知の技術を用いて、スレーブノードの問合せをどのように処理するかを決定する。
ステップ1304では、夫々独立して実行する必要がある副問合せが、2つの別々の問合せに分割される。
副問合せは、マスターノードにおいて集められる中間結果を伴ってまず実行され、更なる処理のために、残りの問合せとともに、スレーブノードに返される。
ステップ1305では、外部結合が含まれる場合、問合せを成し遂げるべく、スレーブノード及びマスターノードにより提携して実行される複数の問合せに分割される。
ステップ1306では、問合せ最適化プログラムは、再び当業者に周知の技術を用いて、多重処理及び単一処理のストラテジー(strategies)のコストを評価し、最も低いコストの機能を選択する。多重処理が最適である場合は多重処理を、単一処理が最適である場合は単一処理を行なう。
ステップ1309では、問合せが、単一処理の問合せを行うステップ1307又は多重処理の問合せを行うステップ1308のいずれかを経て処理され、結果セットがホストに返される。
図14は、単一処理の問合せを実行するための処理を表すフローチャートである。
問合せは、ホストスキーマからテーブル名を運用しているテーブルを参照する外部のホストシステムから受け取られる。スレーブノードを用いて問合せを並列に処理するために、テーブル名は、スレーブスキーマに準ずるテーブル名に置き換えられなければならない。別の実施例においては、単一処理の問合せは直線的にスレーブノードを経由することができるため、ホストスキーマで用いられるテーブル名は、生成されたスレーブスキーマで用いることが可能であった。
ステップ1401では、問合せにおいて参照されるテーブル名が、スレーブスキーマに準ずるテーブル名に置き換えられる。
図15は、問合せにおいて用いられるテーブル名を置き換えるために用いられる処理を表すフローチャートである。
ステップ1500では、問合せからの結合及び/又はテーブルは、ファクトテーブルの外部における処理を再要求される。
ステップ1501では、要求された問合せが、その問合せにおいて実行されるべき結合を含むか否かを判定するべく調査される。
ステップ1502では、問合せが結合を含んでいない場合、問合せで用いられたテーブルが、スレーブノードに分割された形態でのみ保持されるものであるか否かが判定される。
テーブルがスレーブノードにおいて完全に保持される場合、テーブル名を置き換えることなく、処理を終了する。
ステップ1503では、テーブルが分割された形態でのみ保持される場合、スレーブスキーマにおいて、テーブルが垂直分割されているか否かが判定される。
ステップ1504では、テーブルが垂直分割されていない場合、テーブル名が、関連する水平分割されたテーブルの名称で置き換えられる。
ステップ1505では、テーブルがスレーブスキーマにおいて垂直分割されている場合、問合せにおいて、垂直分割によって削除された列(例えば大きいコメントフィールドなど)が用いられるか否かが判定される。
ステップ1506では、削除された列が問合せで用いられない場合、テーブル名が、関連した垂直分割されたテーブルの名称で置き換えられる。
ステップ1507では、問合せにおいて削除された列が用いられる場合、テーブル名が、関連した垂直分割されたテーブルで置き換えられる。また、削除された列を含むテーブルから対応する列を取得するように問合せが修正される。これは、当業者なら周知の技術を用い、行識別子を介して達成される。
ステップ1501において、問合せが結合を含むと判定された場合、各々の結合は順次に調査される。
ステップ1508では、処理中の問合せにおける各々のテーブルについて、テーブルがファクトテーブルか第1ディメンションテーブルかが判定される。
ステップ1509では、テーブルがファクトテーブル又は第1ディメンションテーブルである場合、テーブルがスレーブスキーマにおいて垂直分割されているか否かが判定される。
ステップ1510では、テーブルが垂直分割されていない場合、テーブル名が、対応する水平分割されたテーブルの名称で置き換えられる。
ステップ1511では、テーブルが垂直分割されている場合、問合せが垂直分割において削除された列を用いているか否かが判定される。
ステップ1512では、問合せが削除された列を用いない場合、テーブル名が、対応する垂直分割されたテーブルの名称で置き換えられる。
ステップ1513では、問合せが削除された列を用いる場合、テーブル名は、対応する垂直分割されたテーブルの名称で置き換えられる。また、削除された列を含むテーブルから対応する列を取得するように問合せが修正される。
これは、当業者なら周知の技術を用い、行識別子を介して成し遂げられる。
ステップ1508においてテーブルがファクトテーブル又は第1ディメンションテーブルでないと判定された場合、ステップ1514では、調査された問合せで用いたテーブル名が、対応する水平分割されたテーブル名で置き換えられる。
ステップ1509では、水平分割されたテーブル名が問合せに含まれていない場合、ステップ1509へ進む。
そのとき、ステップ1509からステップ1513が、既述した方法で繰り返される。
ステップ1515では、テーブル名が水平分割されたテーブル名で置き換えられなかった場合、テーブルが、既に用いられている水平分割されたテーブルと同じ分割キーを有するか否かが判定される。
テーブルが、同じ分割キーを有する場合、結合がテーブルにおける同じ位置の分割の間で実行され、処理がステップ1509から1513へと進み、前述したように実行される。
テーブルが同一の分割キーを有しない場合、テーブル名は置き換えられず、処理が終了する。
図14に戻り、ステップ1401で一旦テーブル名が置き換えられていると、ステップ1402において、問合せは、当業者なら周知の技術を用いて、スレーブノードで用いられたデータベースに対して最適化される。
例えば、問合せがより効率的に実行されるために、I/Oサイクルと関連するCPUサイクルのコスト設定が変更可能である。
ステップ1403では、最適化された問合せがスレーブノードに伝送される。
スレーブノードに障害が発生した場合は、詳しく後述するように、システムの他のスレーブノードに加え、障害が発生したスレーブノードに対応するフェールオーバパートナーに問合せが送信される。各々のスレーブノードのスレーブ管理ソフトウェア34は、依存するマスターノードから問合せを受信し、処理する。
図16は、新規の問合せが受信されたときに、スレーブ管理ソフトウェアによって実行される処理を表すフローチャートである。
ここで、場合によっては、スレーブ管理ソフトウェアの介入なしで、スレーブノードのDBMSによって直接問合せが実行可能であることに留意する。
ステップ1600では、マスターノードから新規の問合せを受信すると、スレーブ管理ソフトウェア34は、問合せがスレーブノードで用いられるDBMSにおいて解釈可能になるように変換される必要があるか否かが判定される。
本発明のシステム設計は、システムのスレーブレベルで専用のDBMSが用いられることを必要としない。この特徴は、既に使用しているDBMSをスレーブノードで用いることが可能であるため、システムコストを低減し、実装までの期間を短縮することができる。
ステップ1601では、変換が必要な場合、問合せは当該DBMSにおいて解釈可能になるように変換される。
ステップ1602では、当該DBMSで問合せを実行するのに最適化が必要であるか否かが判定される。
ステップ1603では、最適化が必要である場合、問合せが最適化される。
マスターレベルで処理が実行されるのと同様に、新規の問合せがその問合せにおいて参照されたテーブルに対する変更を介在させることなく、以前にデータベースに対して行われたか否かを調べるために、問合せキャッシュと照合される。
スレーブ管理ソフトウェア34は、スレーブノードに記録された、ファイルオーバテーブル及びローカルのテーブルの両方の問合せキャッシュを保持する。
ここで、一部のDBMS製品は、自分自身の問合せキャッシュを保持する。スレーブノードで実行されているDBMSが問合せキャッシュを保持している場合、スレーブ管理ソフトウェア34は、それ自身の問合せキャッシュをチェック及び保持する必要がない。
本発明は、マスターレベルで保持される問合せキャッシュと共に、問合せ処理の不必要な反復を防ぐことによってシステムパフォーマンスを改善する二層の問合せキャッシュを提供する。
ステップ1604では、受信された問合せが、問合せキャッシュと比較される。
ステップ1605では、問合せが問合せキャッシュに存在する場合、結果セットが問合せキャッシュから検索される。
ステップ1606では、問合せが問合せキャッシュに存在しない場合、問合せは実行されるDBMSに送信される。
ステップ1607では、一旦結果セットが取得されると、スレーブ管理ソフトウェア34は、結果セットがマスターノードに返される前に、後処理が必要であるか否かが判定される。
ステップ1608では、後処理が必要とされる場合、それが実行される。
ステップ1609では、結果セットが、問合せを発行したマスターノードへ返される。
再び図14に戻り、マスターノードの結果セット解析ソフトウェア28は、問合せ処理に用いられた各々のスレーブノードからの結果セットを受信する。
ステップ1404では、結果セット解析ソフトウェア28は、受信した結果セットの後処理を実行する。
後処理は、複数の結果セットを1つの結果セットに結合させ、結果セットのなかで結果を編成し、問合せを生成する外部ホストシステムと互換性のあるフォーマットに結果セットを変換することを含むが、この限りではない。
図17は、本発明の一実施例に基づく、問合せの多重処理を表すフローチャートである。
ステップ1701では、問合せは2つ以上のスレーブ問合せに分割される。
これらの問合せを、一連のスレーブノードにおいて実行される複数のスレーブ問合せに分割することは、元々の(分割前の)問合せを処理するためにスレーブノード間でデータを伝送する必要をなくし、また、これらの問合せを実行するシステムパフォーマンスを改善する。
問合せの多重処理は、問合せを実行するマスターノードの一時テーブル(テンポラリテーブル)を使用して遂行される。これらの一時テーブルは、個々のスレーブ問合せを実行することにより生成される中間結果セットを格納する。また、一時テーブルは、各々のスレーブ問合せによる結果セットを蓄積するために用いられる。なお、これに代えて、一時テーブルは、スレーブノードに送信されて、一時テーブルの或るものとスレーブノードのローカルテーブルとを結合させる次のスレーブ問合せを実行するようにしても良い。
各々のマスターノードは、データベースシステムのマスターノード及びスレーブノードで用いられる問合せキャッシュと同様に、マスターノードのDBMS31においてマスターノードにより実行されるスレーブ問合せに対して生成された一時テーブルの複製を格納している一時テーブルキャッシュを保持する。
ステップ1702では、スレーブ問合せを実行するときに、スレーブ問合せが、一時テーブルが依存する配下のテーブルに対する変更を介在させることなく既に実行されたか否かを判定するべく、スレーブ問合せが一時テーブルキャッシュと照合される。
ステップ1703では、一時テーブルキャッシュと一致しない場合、スレーブ問合せに対する一時テーブルが生成される。
ステップ1704から1707では、スレーブ問合せが実行され、結果が生成される。
これらのステップにおける処理は、図14のステップ1401から1404における処理と同様であることから、詳細な説明を省略する。
ステップ1708では、一旦スレーブ問合せが実行されるか、又はスレーブ問合せが一時テーブルキャッシュに存在している場合、マスターノードは、スレーブ問合せが残っているか否かを判定する。
ステップ1709では、更なるスレーブ問合せが実行される場合、次のスレーブ問合せが処理のために一時テーブルを必要とするか否かを判定する。
ステップ1710では、一時テーブルがスレーブにおいて必要とされる場合、一時テーブルがスレーブノードに送信され、ステップ1702の処理へ戻る。
なお、一時テーブルが必要とされない場合、次のスレーブ問合せのために、そのままステップ1702の処理へ戻る。
図13に示すように、一旦外部ホストシステムから受信した問い合わせが単一処理又は多重処理のいずれかで実行され処理されると、最終的な結果セットが外部ホストシステムに返される。
本発明のデータベースシステムの各々のマスターノードは、データベースシステムの他のノードの状態を監視するべく、システム管理ソフトウェア32と接続される。
適切なシステム管理ソフトウェアの一例は、IPMI(Intelligent Platform Management Interface)及びIntelのシステムマネージャを含んで構成される。
マスターノードに障害が発生した通知を受信すると、ストリーム管理ソフトウェア20は、管理コンソール35に対してマスターノードの障害を知らせるシステムステータスメッセージを送信する。管理コンソール35は、データベースシステムの状態を調査し、また、システム能力を維持するために修復を必要とする障害が発生したノードを特定するべく、システム管理者によって運用される。一旦管理コンソール35がマスターノードの障害の通知を受けると、ストリーム管理ソフトウェア20は、マスターノードのフェールオーバ処理を実行する。
図18は、データベースシステムのマスターノードで障害が発生したときに、ストリーム管理ソフトウェア20において実行されるフェールオーバ処理を表すフローチャートである。
図18で示される処理は、障害が発生したマスターノードによって制御されている各々のストリームに対して実行される。
ステップ1800では、マスターノードは、当該ストリームが、障害の発生しているマスターノードで制御すべきものか否かを判定する。
本発明の一実施例によれば、この判定は、データベースシステムにより受信された新規のストリームを操作するのに用いられるのと同様の負荷分散方法を用いたデータベースシステムの使用可能なマスターノードの間で行われる。
しかしながら、当業者なら周知の他の方法を、この判定をするのに用いることができる。
ステップ1801では、障害が発生したマスターノードで制御すべきものであると判定されたとき、マスターノードは自身がストリームを制御していることを他のマスターノードに通知する。
一旦マスターノードがストリームの制御を引き受けると、当該ストリームからの各々の不完全なステートメントが、マスターノードによって占有される。ステップ1802では、不完全なステートメントが、周知のトランザクション管理技術によってロールバックされる。
ステップ1803では、ステートメントが再実行される。
このように、障害が発生したマスターノードによって制御される各々のストリームは、データベースシステムの動作を維持するべく、使用可能なマスターノードによって引き継がれる。一旦障害が発生したマスターノードが復旧されるか又は交換されると、データベースシステムからの新規のストリームを処理可能となる。また、データベースシステムの他のマスターノードを監視することに加え、システム管理ソフトウェア32は、システムの各々のスレーブノードもまた監視する。
図19は、データベースシステムのスレーブノードに障害が発生したときの処理を表すフローチャートである。
ステップ1900では、スレーブノードに障害が発生した場合、ストリーム管理ソフトウェア20に障害が通知される。ストリーム管理ソフトウェアは、さらに、管理コンソール35を介して、ノード障害についてシステム管理者に通知する。
ステップ1901では、障害が発生したスレーブノードに関連する各々の不完全トランザクションについて、ストリーム管理ソフトウェア20は、不完全トランザクションをロールバックする。
ステップ1902では、障害が発生したスレーブノードの代わりに対応するフェールオーバパートナーを用いて、トランザクションを再実行する。
障害が発生したスレーブノードが復旧されているか又は交換されている間、マスターノードは、正規に使用されるスレーブノード及び対応するフェールオーバパートナーの両方において問合せを実行する。従って、データベースシステムの動作は、スレーブノードにおける障害発生にも関わらず、維持される。一旦スレーブノードが復旧又は交換されると、マスターノードは通常の問合せ実行に戻る。
本発明の別の実施例は、多数のスレーブノードを制御するための階層的なマスターノード構成を有するものである。
この構成では、マスターノードによって実行される処理が、パフォーマンスを向上するべく、複数のレイヤに分解される。さらに、スレーブノードレベルにおいて実行される一部の処理は、マスターノードレベルに移されることができる。
他の実施例では、前述したような直接取り付けられた記憶装置の変わりに、データベースのスレーブノードにおける共有の記憶システムを用いる。フェールオーバデータは、共有された記憶装置に格納されることができ、これにより、使用可能なスレーブノードが、障害が発生したノードに対するフェールオーバ動作責務を実現することができるようになる。
前述した超無共有型並列データベースシステムは、従来の無共有型並列データベースシステムに対し、有意義な利点を提供する。
まず、本発明のデータベースシステムは、データベースシステムのパフォーマンスにおける問合せスキュー及び不利益な影響を防ぐことができる。
次に、データベースシステムのスレーブノード全体におけるデータベースの分割及び分散が、自動的に行われる。
これは、システム管理を煩雑にすることなく、システムパフォーマンスを向上する。
また、二層のキャッシュが問合せキャッシュに用いられることにより、同じ問合せを複数回不必要に繰り返すことを防ぐことができる。さらに、ノードに障害が発生した場合であっても、データベースシステムのフェールオーバ処理により、システム動作を維持することができる。
前述の説明は、本発明の好ましい実施例を具体的に説明することを目的とする。しかしながら、記載される実施例は本発明の範囲を制限することを目的とせず、それは、特許請求の範囲からも明らかである。本発明の目的及び範囲から逸脱することなく、実施例に対し様々な変更をなし得ることは当然のことである。
無共有型並列データベースシステムのハードウェアアーキテクチャを表す概要図である。 本発明の一実施形態における超無共有型並列データベースシステムのソフトウエア・アーキテクチャを表す概要図である。 スレーブスキーマを生成するために用いる処理を表すフローチャートである。 ホストスキーマの一例を表す図である。 ホストスキーマのテーブルを順序付ける(ordering)ための処理を表すフローチャートである。 本発明の一実施形態において、データベースのテーブルをデータベースシステムに一括ローディング(bulk loading)する処理を表すフローチャートである。 データベーステーブルをデータベースシステムのスレーブノードへロードする処理を表すフローチャートである。 予めソートされたデータを直接スレーブノードへ一括ローディングする処理を表すフローチャートである。 外部のホストシステムから新規のステートメントを受信すると実行される処理を表すフローチャートである。 SQLステートメントを解析し実行する処理を表すフローチャートである。 データベーステーブルを改変するための処理を表すフローチャートである。 データベーステーブルにデータを更新/登録する処理を表すフローチャートである。 問合せ並列化処理を表すフローチャートである。 単一処理(single step)の問合せを実行するための処理を表すフローチャートである。 問合せのテーブル名を、スレーブスキーマにおいて用いられるテーブル名に置き換えるための処理を表すフローチャートである。 問合せを実行するスレーブノードで実行される処理を表すフローチャートである。 多重処理の問合せの処理を表すフローチャートである。 マスターノードに障害が発生した場合に実行されるフェールオーバ処理を表すフローチャートである。 スレーブノードに障害が発生した場合は実行されるフェールオーバ処理を表すフローチャートである。
符号の説明
10 データベースシステム
11 マスターノード
12 スレーブノード
13 ネットワーク
14 マスターノードの中央演算処理装置(CPU)
15 マスターノードのメモリ(RAM)
16 マスターノードのディスク
17 スレーブノードの中央演算処理装置(CPU)
18 スレーブノードのメモリ(RAM)
19 スレーブノードのディスク
20 ストリーム管理ソフトウェア
21 問合せキャッシュソフトウェア
22 SQL解析ソフトウェア
23 スレーブスキーマ生成ソフトウェア
24 更新/登録ソフトウェア
25 問合せ並列化ソフトウェア
26 マルチステップ問合せ実行ソフトウェア
28 結果セット解析ソフトウェア
29 日付分割メンテナンスソフトウェア
30 一括ローディングソフトウェア
31 マスターノードのDBMS
32 システム管理ソフトウェア
33 スレーブノードのDBMS
34 スレーブ管理ソフトウェア
35 管理コンソールソフトウェア

Claims (28)

  1. マスターノードと、
    複数のスレーブノードと、
    ファクトテーブル及び複数のディメンションテーブルを含データベースを前記複数のスレーブノードに分散させるための分散手段と
    備えた並列データベースシステムであって
    前記分散手段は、
    前記ファクトテーブルと、前記複数のディメンションテーブルのうちの第1ディメンションテーブルとを、前記ファクトテーブル及び前記第1ディメンションテーブルが共通に有する共通キーを使用して分割し、該分割されたファクトテーブルの一部と該分割された第1ディメンションテーブルの一部とを前記複数のスレーブノードに格納し
    前記複数のディメンションテーブルのうち前記第1のディメンションテーブル以外の全てのディメンションテーブルをそれぞれ複製して、該複製されたディメンションテーブルの各々を前記複数のスレーブノードの各々格納し
    前記複数のディメンションテーブルのうち、前記第1のディメンションテーブルおよび最小サイズを有するディメンションテーブル以外の他のディメンションテーブルを分割して、前記他のディメンションテーブルの分割された一部を前記複数のスレーブノードに格納することを特徴とする並列データベースシステム。
  2. 記他のディメンションテーブルは、行分割されることを特徴とする請求項1記載の並列データベースシステム。
  3. 記他のディメンションテーブルは、列分割されることを特徴とする請求項1記載の並列データベースシステム。
  4. 記他のディメンションテーブルは、行分割及び列分割の両方で分割されることを特徴とする請求項1記載の並列データベースシステム。
  5. 前記ファクトテーブル及び前記第1ディメンションテーブルは、行分割されることを特徴とする請求項1記載の並列データベースシステム。
  6. 前記ファクトテーブル及び前記第1ディメンションテーブルは、前記共通キーでハッシュ分割されることを特徴とする請求項5記載の並列データベースシステム。
  7. 前記ファクトテーブル及び前記第1ディメンションテーブルは、さらに列分割されることを特徴とする請求項5記載の並列データベースシステム。
  8. 前記ファクトテーブル及び前記複数のディメンションテーブルは各テーブル内のデータの日付に応じて分割され、前記複数のスレーブノードに格納されることを特徴とする請求項1記載の並列データベースシステム。
  9. 前記データベースに対する問合せを、前記複数のスレーブノード間のデータ伝送を必要とせずに前記並列データベースシステムによって実行可能な少なくとも1つの副問合せに変換するための変換手段をさらに備えたことを特徴とする請求項1記載の並列データベースシステム。
  10. 前記データベースシステムによって生成された問合せ結果をキャッシュするための手段をさらに備えたことを特徴とする請求項記載の並列データベースシステム。
  11. 前記マスターノードは、マスターノードにより生成された問合せ結果をキャッシュするための手段を含ことを特徴とする請求項10記載の並列データベースシステム。
  12. 前記複数のスレーブノードはそれぞれスレーブノードによって生成された副問合せ結果をキャッシュするための手段を含ことを特徴とする請求項11記載の並列データベースシステム。
  13. 各スレーブノードに格納された各テーブルの複製、前記複数のスレーブノードのうち、スレーブノードのフェルオーバパートナーとして指定された他のスレーブノードに格納されることを特徴とする請求項1記載の並列データベースシステム。
  14. 前記複数のスレーブノードのうち障害が発生したスレーブノードによって実行されるべき副問合せ前記障害が発生したスレーブノードの前記フェルオーバパートナーとして指定された前記他のスレーブノードで実行されることを特徴とする請求項13記載の並列データベースシステム。
  15. マスターノードと複数のスレーブノードとを含む並列データベースシステムにおいて、ファクトテーブル及び複数のディメンションテーブルを備えるデータベース管理するための方法であって、
    前記マスターノードが、前記データベース前記ファクトテーブルと前記複数のディメンションテーブルのうちの第1ディメンションテーブルとを識別するステップと、
    前記マスターノードが、前記ファクトテーブル前記第1ディメンションテーブル、前記ファクトテーブル及び前記第1ディメンションテーブルが共通に有する共通キーを使用して分割し、該分割されたファクトテーブルの一部と該分割された第1ディメンションテーブルの一部とを前記複数のスレーブノードに格納させるステップと、
    前記マスターノードが、前記複数のディメンションテーブルのうち前記第1ディメンションテーブル以外の全てのディメンションテーブルをそれぞれ複製して、該複製されたディメンションテーブルの各々を、前記複数のスレーブノードの各々格納させるステップと、
    前記マスターノードが、前記複数のディメンションテーブルのうち前記第1のディメンションテーブルおよび最小サイズを有するディメンションテーブル以外の他のディメンションテーブルを分割して、前記他のディメンションテーブルの分割された一部を前記複数のスレーブノードに格納させるステップと、
    を含むことを特徴とする方法。
  16. 前記のディメンションテーブル、行分割されることを特徴とする請求項15記載の方法。
  17. 記他のディメンションテーブル、列分割されることを特徴とする請求項15記載の方法。
  18. 記他のディメンションテーブル、行分割及び列分割の両方で分割されることを特徴とする請求項15記載の方法。
  19. 前記ファクトテーブル及び前記第1ディメンションテーブル、行分割されることを特徴とする請求項15記載の方法。
  20. 前記ファクトテーブル及び前記第1ディメンションテーブル前記共通キーでハッシュ分割されることを特徴とする請求項19記載の方法。
  21. 前記ファクトテーブル及び前記第1ディメンションテーブル、さらに列分割されることを特徴とする請求項19記載の方法。
  22. 前記ファクトテーブル及び前記第1ディメンションテーブルを各テーブル内のデータの日付に従って分割して、前記複数のスレーブノードに格納させるステップをさらに含むことを特徴とする請求項15記載の方法。
  23. 前記マスターノードが、前記データベースに対する問合せを、前記複数のスレーブノード間のデータ伝送を必要とせずに前記並行データベースシステムによって実行可能な少なくとも1つの副問合せに変換するステップをさらに含むことを特徴とする請求項15記載の方法。
  24. 前記マスターノード生成した問合せ結果を該マスターノード内にキャッシュするステップをさらに含むことを特徴とする請求項23記載の方法。
  25. 前記複数のスレーブノードの各々が、前記少なくとも1つの副問合せの結果をキャッシュするステップをさらに含むことを特徴とする請求項23記載の方法。
  26. スレーブノードに格納された各テーブルの複製、前記複数のスレーブノードのうち、該スレーブノードのフェルオーバパートナーとして指定された他のスレーブノードに格納さるステップをさらに含むことを特徴とする請求項15記載の方法。
  27. 前記複数のスレーブノードのうち障害が発生したスレーブノードによって実行される副問合せ該障害が発生したスレーブノード前記フェルオーバパートナーとして指定された前記他のスレーブノード実行るステップをさらに含むことを特徴とする請求項26記載の方法。
  28. 請求項15乃至27のいずれかに記載の方法を実行するためのプログラムを記録したことを特徴とするコンピュータ読取可能な記録媒体。
JP2007503912A 2004-02-21 2005-02-17 無共有型並列データベースシステム及びデータベース管理方法 Expired - Lifetime JP4777972B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US54642804P 2004-02-21 2004-02-21
US60/546,428 2004-02-21
PCT/US2005/005199 WO2005098655A2 (en) 2004-02-21 2005-02-17 Ultra-shared-nothing parallel database

Publications (2)

Publication Number Publication Date
JP2007531087A JP2007531087A (ja) 2007-11-01
JP4777972B2 true JP4777972B2 (ja) 2011-09-21

Family

ID=35125731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007503912A Expired - Lifetime JP4777972B2 (ja) 2004-02-21 2005-02-17 無共有型並列データベースシステム及びデータベース管理方法

Country Status (9)

Country Link
US (1) US7818349B2 (ja)
EP (1) EP1716505B1 (ja)
JP (1) JP4777972B2 (ja)
KR (1) KR101114149B1 (ja)
CN (1) CN101120340B (ja)
AU (1) AU2005231230B2 (ja)
CA (1) CA2556979A1 (ja)
MX (1) MXPA06009355A (ja)
WO (1) WO2005098655A2 (ja)

Families Citing this family (166)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010538B1 (en) * 2003-03-15 2006-03-07 Damian Black Method for distributed RDSMS
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7552437B2 (en) 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US7266547B2 (en) * 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7778997B1 (en) 2004-06-11 2010-08-17 Seisint, Inc. System and method for managing throughput in the processing of query requests in a database system
US7797333B1 (en) 2004-06-11 2010-09-14 Seisint, Inc. System and method for returning results of a query from one or more slave nodes to one or more master nodes of a database system
US7801911B1 (en) * 2004-06-11 2010-09-21 Seisint, Inc. System and method for using activity identifications in a database system
US7693826B1 (en) * 2004-06-11 2010-04-06 Seisint, Inc. System and method for pre-compiling a query and pre-keying a database system
US7739287B1 (en) 2004-06-11 2010-06-15 Seisint, Inc. System and method for dynamically creating keys in a database system
US7917495B1 (en) 2004-06-11 2011-03-29 Seisint, Inc. System and method for processing query requests in a database system
US8266234B1 (en) * 2004-06-11 2012-09-11 Seisint, Inc. System and method for enhancing system reliability using multiple channels and multicast
US7406461B1 (en) 2004-06-11 2008-07-29 Seisint, Inc. System and method for processing a request to perform an activity associated with a precompiled query
US7873650B1 (en) * 2004-06-11 2011-01-18 Seisint, Inc. System and method for distributing data in a parallel processing system
US7457796B2 (en) * 2004-07-08 2008-11-25 International Business Machines Corporation Method using virtual replicated tables in a cluster database management system
US7712100B2 (en) 2004-09-14 2010-05-04 International Business Machines Corporation Determining a capacity of a grid environment to handle a required workload for a virtual grid job request
US7707288B2 (en) 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7502850B2 (en) 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7590623B2 (en) 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7533170B2 (en) 2005-01-06 2009-05-12 International Business Machines Corporation Coordinating the monitoring, management, and prediction of unintended changes within a grid environment
US7793308B2 (en) 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US7761557B2 (en) 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US7472079B2 (en) 2005-01-12 2008-12-30 International Business Machines Corporation Computer implemented method for automatically controlling selection of a grid provider for a grid job
US7467196B2 (en) 2005-01-12 2008-12-16 International Business Machines Corporation Managing network errors communicated in a message transaction with error information using a troubleshooting agent
JP4675174B2 (ja) * 2005-07-12 2011-04-20 株式会社日立製作所 データベース処理方法、システム及びプログラム
US20070078809A1 (en) * 2005-09-30 2007-04-05 Rockwell Automation Technologies, Inc. Robust data availability system having decentralized storage and multiple access paths
US8688780B2 (en) * 2005-09-30 2014-04-01 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
US20070143248A1 (en) * 2005-12-19 2007-06-21 Yahoo! Inc. Method using query processing servers for query processing of column chunks in a distributed column chunk data store
US7921132B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. System for query processing of column chunks in a distributed column chunk data store
US8214388B2 (en) * 2005-12-19 2012-07-03 Yahoo! Inc System and method for adding a storage server in a distributed column chunk data store
US7860865B2 (en) * 2005-12-19 2010-12-28 Yahoo! Inc. System of a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US7921131B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method using a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US7921087B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method for query processing of column chunks in a distributed column chunk data store
US20100257135A1 (en) * 2006-07-25 2010-10-07 Mypoints.Com Inc. Method of Providing Multi-Source Data Pull and User Notification
US8086598B1 (en) 2006-08-02 2011-12-27 Hewlett-Packard Development Company, L.P. Query optimizer with schema conversion
US10007686B2 (en) * 2006-08-02 2018-06-26 Entit Software Llc Automatic vertical-database design
US8671091B2 (en) * 2006-08-02 2014-03-11 Hewlett-Packard Development Company, L.P. Optimizing snowflake schema queries
US20080288522A1 (en) * 2007-01-26 2008-11-20 Herbert Dennis Hunt Creating and storing a data field alteration datum using an analytic platform
US8160984B2 (en) 2007-01-26 2012-04-17 Symphonyiri Group, Inc. Similarity matching of a competitor's products
US9390158B2 (en) * 2007-01-26 2016-07-12 Information Resources, Inc. Dimensional compression using an analytic platform
US10621203B2 (en) * 2007-01-26 2020-04-14 Information Resources, Inc. Cross-category view of a dataset using an analytic platform
US9262503B2 (en) * 2007-01-26 2016-02-16 Information Resources, Inc. Similarity matching of products based on multiple classification schemes
US8504598B2 (en) 2007-01-26 2013-08-06 Information Resources, Inc. Data perturbation of non-unique values
US20080270363A1 (en) * 2007-01-26 2008-10-30 Herbert Dennis Hunt Cluster processing of a core information matrix
US20090006309A1 (en) * 2007-01-26 2009-01-01 Herbert Dennis Hunt Cluster processing of an aggregated dataset
US20080294996A1 (en) * 2007-01-31 2008-11-27 Herbert Dennis Hunt Customized retailer portal within an analytic platform
US8782075B2 (en) 2007-05-08 2014-07-15 Paraccel Llc Query handling in databases with replicated data
US9002827B2 (en) * 2007-07-11 2015-04-07 Teradata Us, Inc. Database query table substitution
US20090024570A1 (en) * 2007-07-20 2009-01-22 Oracle Internatonal Corporation User defined query rewrite mechanism
US7885969B2 (en) * 2007-09-17 2011-02-08 International Business Machines Corporation System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer
US9626421B2 (en) 2007-09-21 2017-04-18 Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh ETL-less zero-redundancy system and method for reporting OLTP data
US7917574B2 (en) * 2007-10-01 2011-03-29 Accenture Global Services Limited Infrastructure for parallel programming of clusters of machines
US8412548B2 (en) * 2007-11-27 2013-04-02 International Business Machines Corporation Linked decision nodes in a business process model
US20090198703A1 (en) * 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
US9177079B1 (en) * 2009-01-22 2015-11-03 Joviandata, Inc. Apparatus and method for processing multi-dimensional queries in a shared nothing system through tree reduction
US8893131B2 (en) * 2008-04-11 2014-11-18 Yahoo! Inc. System and/or method for bulk loading of records into an ordered distributed database
US8195712B1 (en) 2008-04-17 2012-06-05 Lattice Engines, Inc. Lattice data set-based methods and apparatus for information storage and retrieval
US8682853B2 (en) 2008-05-16 2014-03-25 Paraccel Llc System and method for enhancing storage performance in analytical database applications
JP5392254B2 (ja) * 2008-05-30 2014-01-22 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
US8099440B2 (en) * 2008-08-15 2012-01-17 International Business Machines Corporation Method for laying out fields in a database in a hybrid of row-wise and column-wise ordering
US20100088309A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
US9251212B2 (en) * 2009-03-27 2016-02-02 Business Objects Software Ltd. Profiling in a massive parallel processing environment
US8700674B2 (en) * 2009-07-14 2014-04-15 Hewlett-Packard Development Company, L.P. Database storage architecture
US8972346B2 (en) * 2009-12-11 2015-03-03 International Business Machines Corporation Method and system for minimizing synchronization efforts of parallel database systems
US8346714B1 (en) * 2009-12-17 2013-01-01 Teradota Us, Inc. Transactiontime and validtime timestamping in an enterprise active data warehouse
JP5353682B2 (ja) * 2009-12-22 2013-11-27 富士通株式会社 構成情報管理装置、分散情報管理システム、分散情報管理方法および分散情報管理プログラム
US8990185B2 (en) 2010-02-19 2015-03-24 International Business Machines Corporation Evaluating reference based operations in shared nothing parallelism systems
US8290931B2 (en) * 2010-02-22 2012-10-16 Hewlett-Packard Development Company, L.P. Database designer
US8375047B2 (en) * 2010-03-31 2013-02-12 Emc Corporation Apparatus and method for query prioritization in a shared nothing distributed database
US8935248B2 (en) 2010-05-17 2015-01-13 United States Postal Service Localized data affinity system and hybrid method
US8768973B2 (en) 2010-05-26 2014-07-01 Pivotal Software, Inc. Apparatus and method for expanding a shared-nothing system
CN101916261B (zh) * 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
CN101916280A (zh) * 2010-08-17 2010-12-15 上海云数信息科技有限公司 并行计算系统及按查询内容进行负载均衡的方法
JP5447679B2 (ja) 2010-09-17 2014-03-19 富士通株式会社 データ共有プログラム、端末、およびデータ共有方法
JP5276639B2 (ja) * 2010-10-01 2013-08-28 日本電信電話株式会社 分散データベース管理装置および分散データベース管理プログラム
US8442988B2 (en) 2010-11-04 2013-05-14 International Business Machines Corporation Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data
US9292523B1 (en) * 2011-03-23 2016-03-22 Emc Corporation Managing data storage
CN102737033B (zh) * 2011-03-31 2015-02-04 国际商业机器公司 数据处理设备及其数据处理方法
US9798831B2 (en) 2011-04-01 2017-10-24 Google Inc. Processing data in a MapReduce framework
US8924426B2 (en) * 2011-04-29 2014-12-30 Google Inc. Joining tables in a mapreduce procedure
US8793287B2 (en) 2011-05-27 2014-07-29 Sap Ag Equi-joins between split tables
US8965879B2 (en) 2011-06-03 2015-02-24 Microsoft Technology Licensing, Llc Unique join data caching method
CN102323946B (zh) * 2011-09-05 2013-03-27 天津神舟通用数据技术有限公司 并行数据库中算子复用的实现方法
US8862606B1 (en) * 2011-09-22 2014-10-14 Emc Corporation Executing correlated and multi-row subqueries in a MPP database
CN103092886B (zh) * 2011-11-07 2016-03-02 中国移动通信集团公司 一种数据查询操作的实现方法、装置及系统
US8892502B2 (en) * 2011-12-07 2014-11-18 Sap Se Parallel processing of semantically grouped data in data warehouse environments
US8914353B2 (en) 2011-12-20 2014-12-16 Sap Se Many-core algorithms for in-memory column store databases
US8676787B2 (en) 2011-12-22 2014-03-18 International Business Machines Corporation Distributed multi-step abstract queries
US8880565B2 (en) * 2011-12-23 2014-11-04 Sap Se Table creation for partitioned tables
US8868594B2 (en) * 2011-12-23 2014-10-21 Sap Ag Split processing paths for a database calculation engine
US8762378B2 (en) * 2011-12-23 2014-06-24 Sap Ag Independent table nodes in parallelized database environments
US9164864B1 (en) * 2011-12-28 2015-10-20 Emc Corporation Minimizing false negative and duplicate health monitoring alerts in a dual master shared nothing database appliance
US8938444B2 (en) * 2011-12-29 2015-01-20 Teradata Us, Inc. Techniques for external application-directed data partitioning in data exporting from a database management system
US9239851B1 (en) 2012-07-12 2016-01-19 Cross Commerce Media, Inc. Advanced database systems and methods
CN103748578B (zh) * 2012-07-26 2017-10-10 华为技术有限公司 数据分布的方法、装置及系统
US9015721B2 (en) * 2012-07-30 2015-04-21 Hewlett-Packard Development Company, L. P. Managing array computations during programmatic run-time in a distributed computing environment
CN103678368B (zh) * 2012-09-14 2017-02-08 华为技术有限公司 查询处理方法和装置
CN103714073B (zh) * 2012-09-29 2017-04-12 国际商业机器公司 数据查询的方法和装置
CN104871153B8 (zh) * 2012-10-29 2019-02-01 华为技术有限公司 用于分布式大规模并行处理数据库的方法和系统
US9195701B2 (en) 2012-10-29 2015-11-24 Futurewei Technologies, Inc. System and method for flexible distributed massively parallel processing (MPP) database
US8799284B2 (en) 2012-11-30 2014-08-05 Futurewei Technologies, Inc. Method for automated scaling of a massive parallel processing (MPP) database
US20140214886A1 (en) 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
US10585896B2 (en) * 2013-03-12 2020-03-10 Red Hat, Inc. Managing data in relational database management system
US10049159B2 (en) * 2013-03-15 2018-08-14 Sas Institute Inc. Techniques for data retrieval in a distributed computing environment
CN104252452B (zh) * 2013-06-25 2019-03-15 腾讯科技(深圳)有限公司 数据管理的方法及装置
JP6069503B2 (ja) * 2013-07-01 2017-02-01 株式会社日立製作所 系列データ並列分析基盤およびその並列分散処理方法
US20150113314A1 (en) * 2013-07-11 2015-04-23 Brian J. Bulkowski Method and system of implementing a distributed database with peripheral component interconnect express switch
CN103412897B (zh) * 2013-07-25 2017-03-01 中国科学院软件研究所 一种基于分布式结构的并行数据处理方法
US9600514B2 (en) 2013-09-09 2017-03-21 VoltDB, Inc. Methods and systems for detecting data divergence and inconsistency across replicas of data within a shared-nothing distributed database
US10176240B2 (en) 2013-09-12 2019-01-08 VoltDB, Inc. Methods and systems for real-time transactional database transformation
US9836519B2 (en) * 2013-09-20 2017-12-05 Oracle International Corporation Densely grouping dimensional data
US9378232B2 (en) * 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
US9684682B2 (en) 2013-09-21 2017-06-20 Oracle International Corporation Sharding of in-memory objects across NUMA nodes
US10061789B2 (en) * 2013-10-28 2018-08-28 Excalibur Ip, Llc Dynamic database indexes for entity attribute value stores
CN103559255B (zh) * 2013-11-01 2017-01-04 北京理工大学 一种分布式液压系统的可视化数据处理方法
US9898398B2 (en) 2013-12-30 2018-02-20 Microsoft Technology Licensing, Llc Re-use of invalidated data in buffers
US9723054B2 (en) 2013-12-30 2017-08-01 Microsoft Technology Licensing, Llc Hierarchical organization for scale-out cluster
US9639571B2 (en) 2013-12-30 2017-05-02 VoltDB, Inc. Methods and systems for increasing capacity and performing data rebalancing without downtime to a distributed shared-nothing database with serializable isolation
US9430508B2 (en) 2013-12-30 2016-08-30 Microsoft Technology Licensing, Llc Disk optimized paging for column oriented databases
US9569493B2 (en) 2013-12-31 2017-02-14 International Business Machines Corporatin Avoidance of intermediate data skew in a massive parallel processing environment
AU2014376253B2 (en) * 2014-01-09 2018-07-26 Dow Global Technologies Llc Composite polyamide membrane having preferred azo content
US11386085B2 (en) 2014-01-27 2022-07-12 Microstrategy Incorporated Deriving metrics from queries
US10635669B1 (en) 2014-01-27 2020-04-28 Microstrategy Incorporated Data engine integration and data refinement
US10255320B1 (en) 2014-01-27 2019-04-09 Microstrategy Incorporated Search integration
US11921715B2 (en) 2014-01-27 2024-03-05 Microstrategy Incorporated Search integration
US9952894B1 (en) * 2014-01-27 2018-04-24 Microstrategy Incorporated Parallel query processing
US10108686B2 (en) * 2014-02-19 2018-10-23 Snowflake Computing Inc. Implementation of semi-structured data as a first-class database element
US9824106B1 (en) 2014-02-20 2017-11-21 Amazon Technologies, Inc. Hash based data processing
US9684666B1 (en) * 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
US9679012B1 (en) * 2014-02-28 2017-06-13 Pivotal Software, Inc. Parallel streaming of external data
US9684671B1 (en) * 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
CN103927337B (zh) * 2014-03-26 2017-12-19 北京国双科技有限公司 用于联机分析处理中关联关系的数据处理方法和装置
US9552390B2 (en) 2014-04-29 2017-01-24 Futurewei Technologies, Inc. System and method for out of order multiple query execution within stored procedure
US10002148B2 (en) 2014-07-22 2018-06-19 Oracle International Corporation Memory-aware joins based in a database cluster
US9875259B2 (en) 2014-07-22 2018-01-23 Oracle International Corporation Distribution of an object in volatile memory across a multi-node cluster
KR101472257B1 (ko) * 2014-07-22 2014-12-11 (주)카디날정보기술 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치
CN105468651B (zh) * 2014-09-12 2020-03-27 阿里巴巴集团控股有限公司 一种关系数据库数据查询方法及系统
US10089357B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for generating partition-based splits in a massively parallel or distributed database environment
US10380114B2 (en) 2014-09-26 2019-08-13 Oracle International Corporation System and method for generating rowid range-based splits in a massively parallel or distributed database environment
US10387421B2 (en) 2014-09-26 2019-08-20 Oracle International Corporation System and method for generating size-based splits in a massively parallel or distributed database environment
US10528596B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation System and method for consistent reads between tasks in a massively parallel or distributed database environment
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment
US10089377B2 (en) * 2014-09-26 2018-10-02 Oracle International Corporation System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment
US10394818B2 (en) 2014-09-26 2019-08-27 Oracle International Corporation System and method for dynamic database split generation in a massively parallel or distributed database environment
US9767149B2 (en) 2014-10-10 2017-09-19 International Business Machines Corporation Joining data across a parallel database and a distributed processing system
CN106415534B (zh) * 2015-05-31 2019-09-20 华为技术有限公司 一种分布式数据库中关联表分区的方法和设备
CN106716400B (zh) 2015-06-26 2019-09-27 华为技术有限公司 一种数据表的分区管理方法及装置
US10482076B2 (en) * 2015-08-14 2019-11-19 Sap Se Single level, multi-dimension, hash-based table partitioning
US10198228B2 (en) 2016-03-03 2019-02-05 Ricoh Company, Ltd. Distributed data tables for print jobs in a print workflow system
WO2018028797A1 (en) * 2016-08-12 2018-02-15 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for bulk loading of data into a distributed database
CN106339432A (zh) * 2016-08-19 2017-01-18 上海巨数信息科技有限公司 一种按查询内容进行负载均衡的系统及其方法
KR101936273B1 (ko) * 2016-08-23 2019-01-08 주식회사 한컴시큐어 대용량 데이터베이스에 최적화된 암호화 스케줄링의 자동화가 가능한 데이터베이스 암호화 장치 및 그 동작 방법
US10846318B1 (en) 2017-04-18 2020-11-24 Microstrategy Incorporated Natural language visualizations
US11003662B2 (en) * 2017-10-30 2021-05-11 Salesforce.Com, Inc. Trigger-free asynchronous maintenance of custom indexes and skinny performance meta-structures
US10776229B2 (en) * 2017-12-22 2020-09-15 Teradata Us, Inc. Dedicated fallback processing for a distributed data warehouse
CN110019274B (zh) 2017-12-29 2023-09-26 阿里巴巴集团控股有限公司 一种数据库系统以及查询数据库的方法和装置
US11138230B2 (en) 2018-03-26 2021-10-05 Mcafee, Llc Methods, apparatus, and systems to aggregate partitioned computer database data
CN108664560A (zh) * 2018-04-09 2018-10-16 宁波诺信睿聚投资有限责任公司 数据查询方法、装置、计算机设备及计算机可读存储介质
US11195050B2 (en) 2019-02-05 2021-12-07 Microstrategy Incorporated Machine learning to generate and evaluate visualizations
US11614970B2 (en) 2019-12-06 2023-03-28 Microstrategy Incorporated High-throughput parallel data transmission
US11567965B2 (en) 2020-01-23 2023-01-31 Microstrategy Incorporated Enhanced preparation and integration of data sets
US11789969B2 (en) * 2020-02-10 2023-10-17 Choral Systems, Llc Data analysis and visualization using structured data tables and nodal networks
US12041396B2 (en) * 2020-07-16 2024-07-16 R9 Labs, Llc Systems and methods for processing data proximate to the point of collection
US20230361944A1 (en) * 2022-05-09 2023-11-09 Samsung Electronics Co., Ltd. Systems and methods for processing and distributing service requests to computational storage devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153232A (ja) * 1997-08-05 1999-02-26 Hitachi Software Eng Co Ltd データベース管理方法
JPH11110262A (ja) * 1997-10-01 1999-04-23 Toshiba Corp 情報管理システム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0562251A2 (en) * 1992-03-24 1993-09-29 Universities Research Association, Inc. Parallel data transfer network controlled by a dynamically reconfigurable serial network
US5737549A (en) * 1994-01-31 1998-04-07 Ecole Polytechnique Federale De Lausanne Method and apparatus for a parallel data storage and processing server
US5909681A (en) * 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
JP3952518B2 (ja) * 1996-03-29 2007-08-01 株式会社日立製作所 多次元データ処理方法
US5848408A (en) * 1997-02-28 1998-12-08 Oracle Corporation Method for executing star queries
US6092062A (en) 1997-06-30 2000-07-18 International Business Machines Corporation Relational database query optimization to perform query evaluation plan, pruning based on the partition properties
CA2345309A1 (en) 2000-09-18 2002-03-18 Linmor Technologies Inc. High performance relational database management system
US7668740B1 (en) * 2000-09-22 2010-02-23 Ita Software, Inc. Method, system, and computer program product for interfacing with information sources
US7085769B1 (en) 2001-04-26 2006-08-01 Ncr Corporation Method and apparatus for performing hash join
US6968335B2 (en) * 2002-11-14 2005-11-22 Sesint, Inc. Method and system for parallel processing of database queries

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153232A (ja) * 1997-08-05 1999-02-26 Hitachi Software Eng Co Ltd データベース管理方法
JPH11110262A (ja) * 1997-10-01 1999-04-23 Toshiba Corp 情報管理システム

Also Published As

Publication number Publication date
KR20070026421A (ko) 2007-03-08
JP2007531087A (ja) 2007-11-01
CN101120340B (zh) 2010-12-08
CA2556979A1 (en) 2005-10-20
AU2005231230A1 (en) 2005-10-20
AU2005231230B2 (en) 2010-05-27
CN101120340A (zh) 2008-02-06
EP1716505B1 (en) 2018-01-10
WO2005098655A3 (en) 2007-09-27
KR101114149B1 (ko) 2012-03-08
WO2005098655A2 (en) 2005-10-20
US7818349B2 (en) 2010-10-19
EP1716505A4 (en) 2009-10-21
MXPA06009355A (es) 2007-03-01
EP1716505A2 (en) 2006-11-02
US20050187977A1 (en) 2005-08-25

Similar Documents

Publication Publication Date Title
JP4777972B2 (ja) 無共有型並列データベースシステム及びデータベース管理方法
EP3903205B1 (en) Technique of comprehensively support autonomous json document object (ajd) cloud service
US10853343B2 (en) Runtime data persistency for in-memory database systems
US9251232B2 (en) Database controller, method, and system for storing encoded triples
US7240059B2 (en) System and method for configuring a parallel-processing database system
US8676843B2 (en) Failure recovery in a parallel-processing database system
US20070208694A1 (en) Query scheduling in a parallel-processing database system
US20040098359A1 (en) Method and system for parallel processing of database queries
Owens et al. Clustered TDB: A clustered triple store for Jena
Plattner et al. Extending DBMSs with satellite databases
US8880485B2 (en) Systems and methods to facilitate multi-threaded data retrieval
Mühlbauer et al. Scyper: A hybrid oltp&olap distributed main memory database system for scalable real-time analytics
Varga et al. Introducing Microsoft SQL Server 2016: Mission-Critical Applications, Deeper Insights, Hyperscale Cloud
Balmin et al. Clydesdale: structured data processing on Hadoop
Hu et al. ScalaRDF: a distributed, elastic and scalable in-memory RDF triple store
Khafagy Indexed map-reduce join algorithm
Blakeley et al. Microsoft sql server parallel data warehouse: Architecture overview
Kpekpassi et al. PREPRINT NoSQL databases: A survey
Nguyen et al. One-Hop Sub-Query Result Caches for Graph Database Systems
Hauglid et al. Efficient and robust database support for data-intensive applications in dynamic environments
Monteiro et al. An architecture for automated index tuning
Al-Saeedi Factors influencing the database selection for B2C web applications
Korotkevitch Temporary Tables
Nagamani INTERNATIONAL JOURNAL OF ENGINEERING SCIENCES & RESEARCH TECHNOLOGY ADVANTAGES OF DRUID DATA STORE OVER ONLINE ANALYTICAL PROCESSING-A COMPHRENSIVE STUDY
Runceanu et al. TECHNIQUES FOR DATA REPLICATION ON DISTRIBUTED DATABASES

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091009

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20091009

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20091015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110628

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110630

R150 Certificate of patent or registration of utility model

Ref document number: 4777972

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140708

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250