説明

分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラム

【課題】通信量および処理量を削減して、合計などの集合関数に対する処理を高速に行うことを可能とする分散メモリデータベースシステム等を提供する。
【解決手段】フロントデータベースサーバ10が、外部から入力される表データを分割して複数の値ID表を生成してこれらを各データノードに分散して記憶させるデータ構造変換部113と、外部のクライアントマシンから発行された集合関数を含むクエリーに基づいて各データノードに表データの中の特定の値IDの出現数を問い合わせると共に、これに応じて各データノードから返された特定の値IDの出現数からクエリーに対応する集合関数の値を計算してクライアントマシンに返送する問い合わせ処理部111とを有し、データ構造変換部が、表データの中で集計軸になり得る列としてあらかじめ指定された複数のデータ項目の各々について個別に複数の値ID表を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラムに関し、特に集合関数に対する処理を迅速に実施することの可能な分散メモリデータベースシステム等に関する。
【背景技術】
【0002】
ある程度以上の規模のコンピュータ装置を利用したシステム、たとえばウェブサービスや業務システム等では、大量のデータを扱うためにデータベース管理システム(DBMS: DataBase Management System)の利用が不可欠である。また近年は、ネットワークによって接続された多数のコンピュータを連携させて、1つの巨大なコンピュータとして処理を行わせる、いわゆるクラウドコンピューティングの技術が確立されてきている。
【0003】
DBMSの中でも特に、データベースに係る処理をネットワークによって接続された多数のコンピュータに分担させるものを、分散メモリデータベースシステムという。分散メモリデータベースシステムは、大量のデータを一括で処理するバッチ用途や、企業の扱う大量のデータから特定の部署が必要とするものを抽出するデータマートの作成などで、特に処理の高速化の効果が発揮される。
【0004】
以下、これについて説明する。なお、本明細書では説明を平易なものとするために、ごく少ないデータ個数および項目数について例示するが、実際には膨大な個数および項目数のデータに対して例示したような処理を行うものである。
【0005】
図14は、一般的な分散メモリデータベースシステム901の構成を示す説明図である。分散メモリデータベースシステム1は、フロントメモリデータベースサーバ910(以後フロントDBサーバ910という)と、複数台のデータノード921〜923とが内部ネットワーク930を介して相互に接続されて構成される。図1では3台のデータノード921〜923を示しているが、もちろんこの台数は2台以上何台でもよい。また、フロントDBサーバ10は、外部ネットワーク940を介して、クライアントマシン950と接続されている。
【0006】
クライアントマシン950はフロントDBサーバ910に対してクエリー(処理要求)を発行するコンピュータである。このクエリーに基づくデータ処理をフロントDBサーバ910とデータノード921〜923とが連携して行い、フロントDBサーバ910はその検索結果をクライアントマシン50に返す。その際、フロントDBサーバ910は、クライアントマシン950から発行されたクエリーの各データノード921〜923に向けての分割と、各データノード921〜923からの結果の集約とを行う。
【0007】
フロントDBサーバ910では、問い合わせ処理部911、データ配置情報管理部912、およびデータ構造変換部913が、各々コンピュータプログラムとして後述するそれぞれの機能を実行されるように構成されている。
【0008】
問い合わせ処理部911は、クライアントマシン950が発行したクエリーを受け付け、このクエリーで処理対象となるデータ項目の所在をデータ配置情報管理部912に対して照会し、この照会に応じてデータ配置情報管理部112から得られた回答を元にしてクライアントマシン950からのクエリーを各データノード921〜923ごとに分割して、分割されたクエリーを各データノード921〜923に送信する。そして、送信した各クエリーに対する各データノード921〜923からの回答を集約してクライアントマシン950に返す。
【0009】
データ配置情報管理部912は、問い合わせ処理部911から照会のあったデータ項目のデータが各データノード921〜923のうちのいずれに存在するかを、問い合わせ処理部911に返答する。データ構造変換部913は、入力された表構造データを分割して、各データノード921〜923に記憶させる。
【0010】
各データノード921〜923では、問い合わせ処理部914がコンピュータプログラムとして、問い合わせ処理部911で分割されたクエリーに基づいて検索などの処理を行ってその結果をフロントDBサーバ910に返す機能を実行されるように構成されている。
【0011】
図15は、図14に示した分散メモリデータベースシステム901に対して入力される表データ960の一例を示す説明図である。図15で示した表データ960は、日付960a、店ID960b、売上960cという3つの項目のデータを持つ。このうちの日付960aは「8月10日」「8月11日」の2種類の値が使われている。
【0012】
データ構造変換部913は、このうちの店ID910bの値「A1」「D3」「E1」を基準として表データ960を分割して、店ID別の表データ961〜963を生成し、これらを各々各データノード921〜923に送付して記憶させる。図16は、図15に示した表データ910をデータ構造変換部913が分割して生成した店ID別の表データ961〜963を示す説明図である。
【0013】
図16に示した店ID別の表データ961〜963が各々データノード921〜923に記憶された状態で、問い合わせ処理部911はクライアントマシン950が発行したクエリーを受け付ける。たとえば、以下の数1に示すクエリーを受け付けた場合、問い合わせ処理部911は各データノード921〜923に対して、各々が記憶している店ID別の表データ961〜963から店IDごとの合計売上額を算出させ、返信されてきた店IDごとの合計売上額をまとめてクライアントマシン950に返信する。
【数1】

【0014】
これに関連する技術として、以下の各々がある。その中でも特許文献1には、並列コンピュータの複数の処理モジュールで処理されるデータに共通のグローバル次元値番号を付与することによって、プロセッサ間通信の発生を少なくしてデータのソートや集計などを実現するという情報処理システムが記載されている。特許文献2には、ハッシュ値を利用して1つ以上の列の値が共通する行をグループ化する処理を高速化するというグループ化方法が記載されている。
【0015】
特許文献3には、複数の分析問題を含むデータをレイヤに分割することによって、複数の計算機でのデータ分析を高速化するというデータ分析システムが記載されている。特許文献4には、複数の装置にデータを分散させて処理する際にシステムの終了処理時間を短縮するというデータベース処理方法が記載されている。
【0016】
特許文献5には、データにラベルコードを付与して、複数の装置によるデータの加工処理を高速化するというデータ加工システムが記載されている。非特許文献1には、データベースとして多く利用されているオラクル(登録商標)データベースで、完全一致検索を高速化することが可能である「ビットマップインデックス」について記載されている。
【先行技術文献】
【特許文献】
【0017】
【特許文献1】再特WO2005/041067号公報
【特許文献2】特開2000−187668号公報
【特許文献3】特開2006−107129号公報
【特許文献4】特開2010−134583号公報
【特許文献5】特開平07−182368号公報
【非特許文献】
【0018】
【非特許文献1】Paul Lane、「データ・ウェアハウスでのビットマップ索引の使用」、Oracle Databaseデータ・ウェアハウス・ガイド11gリリース1より、2007年、日本オラクル株式会社、[平成22年11月8日検索]、インターネット<URL:http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05763-01/indexes.htm>
【発明の概要】
【発明が解決しようとする課題】
【0019】
分散メモリデータベースシステムでは特に、処理にかかるコストおよび処理時間を低減するため、ノード間で発生する通信を可能な限り少なくすることが重要である。図14〜16に示した分散メモリデータベースシステム901の例は、説明を平易なものとするために、ごく少ないデータ個数について例示したものであるが、実際には膨大な量のデータについて処理を行う必要がある。
【0020】
図14〜16に示した分散メモリデータベースシステム901では、「店ID」ごとにデータを分割して各データノード921〜923に記憶させているので、数1に示したように店IDごとの集計であればデータノード921〜923の各々の単体のみで合計などの集合関数の計算ができる。従って、問い合わせ処理部911での処理は単純に各データノード921〜923から受信した合計などの数値をまとめるだけでよく、高速に集計処理を行うことができる。
【0021】
しかしながら、データの分割の基準とした列(この場合は「店ID」)以外で集計を行おうとすると、各データノード921〜923相互間、およびそれらとフロントDBサーバ910との間でデータの交換が必要になる。そのため、集計処理に時間がかかり、またデータの交換に伴う通信コストが発生する。
【0022】
図14〜16に示した分散メモリデータベースシステム901の例でいうなら、以下の数2に示すクエリーを受け付けた場合には、データノード921〜923の各々の単体のみで合計などの集合関数の計算ができないので、全データについて「日付」を基準として再分割を行う(第1の方法)か、もしくは「店ID」ごとにデータを保持している各データノード921〜923で「日付」ごとの集計を行い、その結果をフロントDBサーバ910に送付して「日付」ごとの合計を算出する(第2の方法)かのいずれかの方法で算出することとなる。
【数2】

【0023】
この第1の方法では、一度表データ961〜963の全てをフロントDBサーバ910に送付して、元の表データ960に戻してから「日付」を基準として再分割を行った表データを改めて各データノード921〜923に送付する必要がある。例えばm台のデータノードがあり、ここに一行あたりlバイトのデータが1台のノードに1日分n件、s(m,n,s,lは各々自然数、簡単のためにs=mとする)店舗分のデータが均等に存在するとした場合、この表データを再分割するには、以下の数3に示す通りのデータ容量の通信が発生することとなる。
【数3】

【0024】
また、発生する通信量だけでなく、個々のデータを読み取り、その各々をどのデータノードに移動するかを判定する処理も必要となるので、フロントDBサーバ910および各データノードで必要な処理量も増大する。
【0025】
第2の方法では、各データノード921〜923から「店ID・日付」ごとに求められた合計データがフロントDBサーバ910に送信される。このため、フロントDBサーバ910への通信量が多くなる。また、フロントDBサーバ910では(数1に示したクエリの場合と違って)単純な差し替えだけでなく、改めて「日付」ごとの合計を求める必要があるので、ここでの処理量も増大する。
【0026】
この問題に対して、インデックス(索引)を用意して異なる集計軸による集計に対応するという方法が既に知られている。しかしながら、この場合であっても、集計操作のために計算対象のデータを他のコンピュータに対して送信する必要は発生する。このため、発生する通信量を削減する効果は小さい。
【0027】
また、特許文献1および4〜5には、同一列の中で同一の値にID(もしくはラベル)を付与して、これに基づいてグループ分け(いわゆるレンジパーティショニング)を行ったデータを各データノードに保存するという技術が記載されている。これを利用すれば、生のデータそのものを通信するよりも、多少の通信量の削減にはなる。しかしながら、フロントDBサーバ910の側での処理量は軽減されないどころか、IDを実際の値に置換する処理を伴うので、処理量はむしろ増大する。残る特許文献2〜4および非特許文献1にも、この問題点について解決しうる技術は記載されていない。
【0028】
本発明の目的は、通信量および処理量を削減して、合計などの集合関数に対する処理を高速に行うことを可能とする分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0029】
上記目的を達成するため、本発明に係る分散メモリデータベースシステムは、フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムであって、フロントデータベースサーバが、外部から入力される表データを分割して各々の実際のデータを値IDに置換した複数の値ID表を生成してこれらを各データノードに分散して記憶させるデータ構造変換部と、外部のクライアントマシンから発行された集合関数を含むクエリーに基づいて各データノードに対して表データの中の特定の値IDの出現数を問い合わせると共に、これに応じて各データノードから返された特定の値IDの出現数からクエリーに対応する集合関数の値を計算してクライアントマシンに返送する問い合わせ処理部とを有し、データ構造変換部が、複数の値ID表を生成する際に、表データの中で集計軸になり得る列としてあらかじめ指定された複数のデータ項目の各々について個別に複数の値ID表を生成することを特徴とする。
【0030】
上記目的を達成するため、本発明に係るフロントデータベースサーバは、複数台のデータノードと相互に接続されて分散メモリデータベースシステムを構成するフロントデータベースサーバであって、外部から入力される表データを分割して各々の実際のデータを値IDに置換した複数の値ID表を生成してこれらを各データノードに分散して記憶させるデータ構造変換部と、外部のクライアントマシンから発行された集合関数を含むクエリーに基づいて各データノードに対して表データの中の特定の値IDの出現数を問い合わせると共に、これに応じて各データノードから返された特定の値IDの出現数からクエリーに対応する集合関数の値を計算してクライアントマシンに返送する問い合わせ処理部とを有し、データ構造変換部が、複数の値ID表を生成する際に、表データの中で集計軸になり得る列としてあらかじめ指定された複数のデータ項目の各々について個別に複数の値ID表を生成することを特徴とする。
【0031】
上記目的を達成するため、本発明に係るデータ処理方法は、フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムにあって、外部からの表データの入力をフロントデータベースサーバのデータ構造変換部が受け付け、入力された表データを、集計軸になり得る列としてあらかじめ指定されたデータ項目の各々についてフロントデータベースサーバのデータ構造変換部が個別に分割して実際のデータを値IDに置換した複数の値ID表を生成し、生成された複数の値ID表をフロントデータベースサーバのデータ構造変換部が各データノードに分散して記憶させ、外部のクライアントマシンから発行された集合関数を含むクエリーをフロントデータベースサーバの問い合わせ処理部が受け付け、受け付けられたクエリーに基づいて表データの中の特定の値IDの出現数をフロントデータベースサーバの問い合わせ処理部が各データノードに問い合わせ、各データノードから返された特定の値IDの出現数からフロントデータベースサーバの問い合わせ処理部がクエリーに対応する集合関数の値を計算してクライアントマシンに返送することを特徴とする。
【0032】
上記目的を達成するため、本発明に係るデータ処理プログラムは、フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムにあって、フロントデータベースサーバが備えるコンピュータに、外部からの表データの入力を受け付ける手順、入力された表データを、集計軸になり得る列としてあらかじめ指定されたデータ項目の各々について個別に分割して実際のデータを値IDに置換した複数の値ID表を生成する手順、生成された複数の値ID表を各データノードに分散して記憶させる手順、外部のクライアントマシンから発行された集合関数を含むクエリーを受け付ける手順、受け付けられたクエリーに基づいて表データの中の特定の値IDの出現数を各データノードに問い合わせる手順、および各データノードから返された特定の値IDの出現数からクエリーに対応する集合関数の値を計算してクライアントマシンに返送する手順を実行させることを特徴とする。
【発明の効果】
【0033】
本発明は、上述した通り、集計軸になり得る列としてあらかじめ指定されたデータ項目の各々について表データを個別に分割するように構成したので、集計軸になり得るどの列に対しても、他の装置との通信の発生を抑制して、各データノードの内部だけで集合関数に関する処理を行うことが可能となる。これによって、通信量および処理量を削減して、合計などの集合関数に対する処理を高速に行うことを可能であるという優れた特徴を持つ分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラムを提供することが可能となる。
【図面の簡単な説明】
【0034】
【図1】本発明の第1の実施形態に係る分散メモリデータベースシステムの構成を示す説明図である。
【図2】図1で説明した分散メモリデータベースシステムに対して入力される表データの一例を示す説明図である。
【図3】図2で示した表データからデータ構造変換部が作成する値リストおよび値ID表を示す説明図である。
【図4】図1に示したデータ構造変換部が、図2に示すデータを図3に示すように分割して各データノードに分配して記憶させる処理を示すフローチャートである。
【図5】図1に示したデータ配置情報の、図2および図3に示した各データに対応する例について示す説明図である。
【図6】数4に示したクエリーに対して、図1で説明した分散メモリデータベースシステムで行われる処理を示すフローチャートである。
【図7】図6のステップS403(数4)に示す処理で、データノードからフロントDBサーバに返却される「値ID」ごとの出現数の表を示す説明図である。
【図8】図6のステップS406(数5)に示した処理の結果、クライアントマシンに返却される日付ごとの売上の合計を示す結果データについて示す説明図である。
【図9】図6のステップS403(数6)に示す処理で、データノードからフロントDBサーバに返却される「値ID」ごとの出現数の表を示す説明図である。
【図10】図6のステップS406(数7)に示した処理の結果、クライアントマシンに返却される店IDごとの売上の合計を示す結果データについて示す説明図である。
【図11】本発明の第2の実施形態に係る分散メモリデータベースシステムの構成を示す説明図である。
【図12】図11で説明した分散メモリデータベースシステムに対して入力される表データの一例を示す説明図である。
【図13】図12に示した表データからデータ構造変換部が作成する値ID表の例を示す説明図である。
【図14】一般的な分散メモリデータベースシステムの構成を示す説明図である。
【図15】図14に示した分散メモリデータベースシステムに対して入力される表データの一例を示す説明図である。
【図16】図15に示した表データをデータ構造変換部が分割して生成した店ID別の表データを示す説明図である。
【発明を実施するための形態】
【0035】
(第1の実施形態)
以下、本発明の第1の実施形態の構成について添付図1〜3に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る分散メモリデータベースシステム1は、フロントデータベースサーバ(フロントDBサーバ10)と複数台のデータノード21〜23とが相互に接続されて構成される分散メモリデータベースシステムである。フロントデータベースサーバ10は、外部から入力される表データを分割して各々の実際のデータを値IDに置換した複数の値ID表221〜222,231〜233を生成してこれらを各データノードに分散して記憶させるデータ構造変換部113と、外部のクライアントマシン50から発行された集合関数を含むクエリーに基づいて各データノードに表データの中の特定の値IDの出現数を問い合わせると共にこれに応じて各データノードから返された特定の値IDの出現数からクエリーに対応する集合関数の値を計算してクライアントマシンに返送する問い合わせ処理部111とを有する。そして、データ構造変換部113は、これら複数の値ID表を生成する際に、表データの中で集計軸になり得る列としてあらかじめ指定されたデータ項目の各々について個別に複数の値ID表を生成する。
【0036】
また、フロントデータベースサーバ10のデータ構造変換部113は、複数の値ID表221〜222,231〜233を生成する際に、表データの中で集計軸および集計対象になり得る列としてあらかじめ指定されたデータ項目の各々について実際の値を値IDに置換すると共に、値IDと実際の値との対応を示す値リスト211〜213を生成する機能を有し、フロントデータベースサーバ10が、値リストおよび値ID表が各データノードの中のいずれに分散されたかをあらかじめ備えられた記憶手段に記憶するデータ配置情報管理部112を有する。
【0037】
さらに、フロントデータベースサーバ10のデータ構造変換部113が、値ID表221〜222,231〜233を生成する際、実際の値を大小順にソートしてから値IDに置換する。
【0038】
以上の構成を備えることにより、分散メモリデータベースシステム1は、通信量および処理量を削減して、合計などの集合関数に対する処理を高速に行うことが可能となる。
以下、これをより詳細に説明する。
【0039】
図1は、本発明の第1の実施形態に係る分散メモリデータベースシステム1の構成を示す説明図である。分散メモリデータベースシステム1は、フロントデータベースサーバ10(以後フロントDBサーバ10という)と、複数台のデータノード21〜23とが内部ネットワーク30を介して相互に接続されて構成される。図1では3台のデータノード21〜23を示しているが、もちろんこの台数は2台以上何台でもよい。
【0040】
また、内部ネットワーク30は、外部ネットワーク40を介して、外部のコンピュータ装置であるクライアントマシン50と接続されている。内部ネットワーク30および外部ネットワーク40の、ネットワーク方式やプロトコルなどは任意のものを利用できる。フロントDBサーバ10は、内部ネットワーク30および外部ネットワーク40を通じて、クライアントマシン50からの操作を受け付けることができる。
【0041】
クライアントマシン50はフロントDBサーバ10に対してクエリー(処理要求)を発行し、このクエリーに基づくデータ処理をフロントDBサーバ10とデータノード21〜23とが連携して行い、フロントDBサーバ10はその検索結果をクライアントマシン50に返す。その際、フロントDBサーバ10は、クライアントマシン50から発行されたクエリーの各データノード21〜23に向けての分割と、各データノード21〜23からの結果の集約とを行う。
【0042】
フロントDBサーバ10は、主演算制御手段101、記憶手段102、および通信手段103を備えるコンピュータ装置である。主演算制御手段101はコンピュータプログラムの動作主体となるCPU(Central Processing Unit)であり、記憶手段102は主演算制御手段101が作業中のデータを記憶するRAM(Random Access Memory)などのような主記憶装置である。通信手段103は内部ネットワーク30および外部ネットワーク40を介して、他のコンピュータとのデータ通信を行う。
【0043】
主演算制御手段101では、問い合わせ処理部111、データ配置情報管理部112、およびデータ構造変換部113が、各々コンピュータプログラムとして後述するそれぞれの機能を実行されるように構成されている。また、記憶手段102には、後述するデータ配置情報121が記憶されている。
【0044】
問い合わせ処理部111は、クライアントマシン50が発行したクエリーを受け付け、このクエリーで処理対象となるデータ項目の所在をデータ配置情報管理部112に対して照会し、この照会に応じてデータ配置情報管理部112から得られた回答を元にしてクライアントマシン50からのクエリーを各データノード21〜23ごとに分割して、分割されたクエリーを各データノード21〜23に送信する。そして、送信した各クエリーに対する各データノード21〜23からの回答を集約してクライアントマシン50に返す。
【0045】
データ配置情報管理部112は、問い合わせ処理部111から照会のあったデータ項目のデータが各データノード21〜23のうちのいずれに存在するかを、データ配置情報121を参照して、問い合わせ処理部111に返答する。
【0046】
データ構造変換部113は、この後説明するように、表構造データを本システムに入力する際に、後述する本実施形態に独特のデータ構造に変換して分割し、各データノード21〜23に記憶させる。
【0047】
各データノード21〜23も、フロントDBサーバ10と同じく一般的なコンピュータ装置としての構成を備えるが、ハードウェアおよびソフトウェアとしては全て同一の構成を有し、ただ各々の記憶している内容が異なっているのみである。従って、図1ではデータノード21についてのみ詳しい構成を示す。データノード21は、フロントDBサーバ10と同様に、主演算制御手段201、記憶手段202、および通信手段203を備えるコンピュータ装置である。
【0048】
主演算制御手段201では、問い合わせ処理部204が、各々コンピュータプログラムとして後述するそれぞれの機能を実行されるように構成されている。また、記憶手段202には、後述する値リスト211〜213、および値ID表221〜222,231〜233が記憶されている。問い合わせ処理部204は、フロントDBサーバ10で分割生成された値リスト211〜213、および値ID表221〜222,231〜233のうち、自身に割り当てられたものを記憶手段202に記憶し、これらの値リストおよび値ID表に対して検索などの処理を行い、その結果をフロントDBサーバ10に返す。
【0049】
図2は、図1で説明した分散メモリデータベースシステム1に対して入力される表データ210の一例を示す説明図である。このデータ入力はクライアントマシン50から行われてもよいし、フロントDBサーバ10から直接行われてもよい。データ構造変換部113は、この入力された表データ210を、以下で説明する形式に変換して、複数のデータノード21〜23に分配して記憶させる。
【0050】
図2で示した表データ210は、日付210a、店ID210b、売上210cという3つの項目のデータを持つ。このうちの「日付210a」および「店ID210b」が「集計軸になり得る列(以後基準列という)」、売上210cが「集計対象になり得る列(以後対象列という)」としてあらかじめ指定されている。なお、表データ210の内容は図15の表データ910と同一である。
【0051】
図3は、図2で示した表データ210からデータ構造変換部113が作成する値リスト211〜213、および値ID表221〜222,231〜233を示す説明図である。図2で示した表データ210で、基準列として指定された項目のうち、日付210aは「8月10日」「8月11日」の2種類、店ID210bは「A1」「D3」「E1」の3種類の値が使われている。
【0052】
そこで、データ構造変換部113は、各列に存在するユニークな値を小さいものから順に整列して並べ、先頭から順にそれぞれの値を特定する番号(値ID)を付与し、「日付」値リスト211、「店ID」値リスト212、「売上」値リスト213という3通りの値リストを作成する。
【0053】
「日付」値リスト211は、「日付」値IDと日付との対応を示す。「日付」値ID=「0」の場合には日付=「8月10日」、「日付」値ID=「1」の場合には日付=「8月11日」となる。
【0054】
「店ID」値リスト212は、「店ID」値IDと店IDの値との対応を示す。「店ID」値ID=「0」の場合には店ID=「A1」、「店ID」値ID=「1」の場合には店ID=「D3」、「店ID」値ID=「2」の場合には店ID=「E1」となる。
【0055】
「売上」値リスト213は、「売上」値IDと売上の値との対応を示す。「売上」値ID=「0」〜「4」の場合で、売上は各々「800」「1000」「1200」「4800」「12000」となる。
【0056】
そしてデータ構造変換部113は、各々の値IDで表データ210を置き換え、さらに日付210aと店ID210bの値ごとに表データ210を分割して、値ID表221〜222,231〜233を作成する。値ID表221は、「日付」値ID=「0」の場合の「店ID」値IDと「売上」値IDの対応を示す。値ID表222は、「日付」値ID=「1」の場合の「店ID」値IDと「売上」値IDの対応を示す。
【0057】
値ID表231は、「店ID」値ID=「0」の場合の「日付」値IDと「売上」値IDの対応を示す。値ID表232は、「店ID」値ID=「1」の場合の「日付」値IDと「売上」値IDの対応を示す。値ID表233は、「店ID」値ID=「2」の場合の「日付」値IDと「売上」値IDの対応を示す。
【0058】
データ構造変換部113は、以上で作成した値リスト211〜213、および値ID表221〜222,231〜233を、各データノード21〜23に分配して記憶させる。図3に示した例では、データ構造変換部113は、値ID表222、値ID表231、および値リスト211をデータノード21の記憶手段202に記憶させている。また、値ID表221、値ID表232、および値リスト212をデータノード22の記憶手段202に記憶させている。さらに値ID表233、および値リスト213をデータノード23の記憶手段202に記憶させている。
【0059】
ここでデータ構造変換部113が行う処理については、データノード21〜23のうちの特定の1つのデータノードに、データの容量および処理量が大きく偏ることがなければ、任意の分割方法を使用することができる。また、図2で示した表データ210のデータ構造を設計する際に、基準列および対象列といった各列の属性について、あらかじめ操作者が入力しているものとする。データ構造変換部113は、「基準列」および「対象列」であると設定されたデータ列の全てについて値リストを作成し、かつ「基準列」であると設定されたデータ列の全てについて上記で示したように表データ210を分割する。
【0060】
図4は、図1に示したデータ構造変換部113が、図2に示すデータを図3に示すように分割して各データノード21〜23に分配して記憶させる処理を示すフローチャートである。まず、表データ210のデータ構造について、ユーザによる入力を受け付ける(ステップS301)。この際に、どのデータ項目が「基準列」や「対象列」であるかについての入力も同時に行われる。
【0061】
その次に、ユーザから表データ210の入力を受け付け(ステップS302)、これが完了すると基準列のうちの1つについて(ステップS303〜304)、まずデータ列の値を値IDに置き換えて(ステップS305)、同時にこの基準列の値ごとに表を分割する(ステップS306)。データ構造変換部113は、このステップS305〜306の処理を全ての基準列について繰り返すと共に、置き換えた値と値IDの対応を示す値リスト211〜213も同時に作成する。
【0062】
全ての基準列についてこの処理が完了したら、出来上がった値リストおよび値ID表を、各データノード21〜23に送信して記憶させる(ステップS307)。
【0063】
図5は、図1に示したデータ配置情報121の、図2および図3に示した各データに対応する例について示す説明図である。データ配置情報121は、各データノード21〜23のコンピュータ名を示すデータノード名121aと、当該コンピュータに記憶される値リスト211〜213、および値ID表221〜222,231〜233のデータ種類を示す記憶内容121bとの対応を示す。
【0064】
データ配置情報121は、図5で示した例のような形に限られるものではなく、計算で使用されるデータ、および値IDに対応する実際の値が、各データノード21〜23のうちのいずれに記憶されているかを特定できさえすれば、どのようなデータ形式でもよい。
【0065】
(日付別の売上集計処理)
このように各データノード21〜23に分配して記憶されたデータに対して、クライアントマシン50からフロントDBサーバ10に対してクエリー(SQL文)が発行された際の、フロントDBサーバ10および各データノード21〜23で行われる処理について以下に説明する。
【0066】
以下に示す数4は、図2〜3に示した内容のデータ例に対して、クライアントマシン50がフロントDBサーバ10に対して発行するクエリーの一例である。これは、表データ210から日付ごとの売上の合計を求めるクエリーである。
【数4】

【0067】
図6は、数4に示したクエリーに対して、図1で説明した分散メモリデータベースシステム1で行われる処理を示すフローチャートである。数4に示したクエリーを受けたフロントDBサーバ10の問い合わせ処理部111は、データ配置情報管理部112がデータ配置情報121を参照して、「売上表」に対し「日付」別の値ID表が各データノード21〜23上に存在することを確認し、分割された各表の存在するノードを特定する(ステップS401)。
【0068】
そして、フロントDBサーバ10の問い合わせ処理部111は、データノード21〜23の問い合わせ処理部204に対して、日付別の値ID表221〜222で、「値ID」によって表現された「売上」列の値を「値ID」ごとの出現数を数えるよう問い合わせを発行する(ステップS402)。データノード23は日付別の値ID表を記憶していないので、ここでは対象外となる。
【0069】
問い合わせを受け付けたデータノード21〜22の問い合わせ処理部204は、日付別の値ID表221〜222に対し、「売上」列の「値ID」ごとの出現数を計算して、これをフロントDBサーバ10に返却する(ステップS403)。図7は、図6のステップS403(数4)に示す処理で、データノード21〜22からフロントDBサーバ10に返却される「値ID」ごとの出現数の表241〜242を示す説明図である。
【0070】
これを受けたフロントDBサーバ10の問い合わせ処理部111は、「日付」と「売上」の各々の「値ID」に対応する値リスト211〜213を、各データノード21〜23から取得する(ステップS404〜405)。なお、このステップS404〜405の処理は、値リスト211〜213そのものを各データノード21〜23から取得するのではなく、値IDに対応する値を各データノード21〜23から取得するものでもよい。
【0071】
そして、フロントDBサーバ10の問い合わせ処理部111は、ステップS403で返却された「売上」列の「値ID」ごとの出現数に、実際の「売上」の数値を適用して、実際の売上金額を結果データ243として算出して、これをクライアントマシン50に返却する(ステップS406)。
【0072】
以下に示す数5は、図6のステップS406に示した処理で、図2〜3に示した内容のデータ例に対して数4のクエリーによって実際に行われる計算を示す。図8は、図6のステップS406(数5)に示した処理の結果、クライアントマシン50に返却される日付ごとの売上の合計を示す結果データ243について示す説明図である。
【数5】

【0073】
(店ID別の売上集計処理)
上記で示した処理は、たとえば以下の数6に示すクエリーをクライアントマシン50が発行した場合においても、図6で示した動作によって同様に処理することができる。これは、表データ210から店IDごとの売上の合計を求めるクエリーである。
【数6】

【0074】
この場合、問い合わせ処理部111は、データ配置情報管理部112がデータ配置情報121を参照して、「売上表」に対し「店ID」別の値ID表が各データノード21〜23上に存在することを確認し、分割された各表の存在するノードを特定する(ステップS401)。
【0075】
そして、フロントDBサーバ10の問い合わせ処理部111は、データノード21〜23の問い合わせ処理部204に対して、店ID別の値ID表231〜233で、「値ID」によって表現された「売上」列の値を「値ID」ごとの出現数を数えるよう問い合わせを発行する(ステップS402)。
【0076】
問い合わせを受け付けたデータノード21〜23の問い合わせ処理部204は、店ID別の値ID表231〜233に対し、「売上」列の「値ID」ごとの出現数を計算して、これをフロントDBサーバ10に返却する(ステップS403)。図9は、図6のステップS403(数6)に示す処理で、データノード21〜23からフロントDBサーバ10に返却される「値ID」ごとの出現数の表251〜253を示す説明図である。
【0077】
これを受けたフロントDBサーバ10の問い合わせ処理部111は、「店ID」と「売上」の各々の「値ID」に対応する値リスト211〜213を、各データノード21〜23から取得する(ステップS404〜405)。なお、このステップS404〜405の処理は、値リスト211〜213そのものを各データノード21〜23から取得するのではなく、値IDに対応する値を各データノード21〜23から取得するものでもよい。
【0078】
そして、フロントDBサーバ10の問い合わせ処理部111は、ステップS403で返却された「売上」列の「値ID」ごとの出現数に、実際の「売上」の数値を適用して、実際の売上金額を結果データ254として算出して、算出して、これをクライアントマシン50に返却する(ステップS406)。
【0079】
以下に示す数7は、図6のステップS406に示した処理で、図2〜3に示した内容のデータ例に対して数6のクエリーによって実際に行われる計算を示す。図10は、図6のステップS406(数7)に示した処理の結果、クライアントマシン50に返却される店IDごとの売上の合計を示す結果データ254について示す説明図である。
【数7】

【0080】
(和以外の集計処理)
以上、各データノード21〜23に分配して記憶されたデータに対して、クライアントマシン50からフロントDBサーバ10に対して対象列の和(SUM)を求めるクエリーが発行された際の処理について説明したが、これ以外のたとえば最小値(MIN)、最大値(MAX)、出現数(COUNT)、平均値(AVG)を求める動作についても、同一のシステムで可能である。
【0081】
このうち最小値(MIN)もしくは最大値(MAX)を求めるクエリーを受けた場合は、各データノード21〜23に記憶されている値ID表221〜222,231〜233から、問い合わせ処理部204が各々の値IDが最大もしくは最小となるものを選択してフロントDBサーバ10の問い合わせ処理部111に返却する。そしてフロントDBサーバ10の問い合わせ処理部111は、図6のステップS406と同様にして、値リスト211〜213から返却された値IDに対応する値をクライアントマシン50に返却する。
【0082】
値リスト211〜213は、前述したように値の小さいものから順に整列して並べて、その順番に値IDを割り振るものであるので、各データノード21〜23の問い合わせ処理部204は、値リスト211〜213で実際の値を参照しなくても、値IDが最大もしくは最小となるものを最大値もしくは最小値であると判断することができる。
【0083】
出現数(COUNT)を求めるクエリーを受けた場合は、各データノード21〜23に値ID表221〜222,231〜233に各値IDごとの出現数が記憶されているので、フロントDBサーバ10の問い合わせ処理部111は各データノード21〜23側でその出現数を計算させる。そして、フロントDBサーバ10の問い合わせ処理部111は各データノード21〜23から返却された出現数を受けて、図6のステップS406と同様にして、その値IDを実際の値に変換してクライアントマシン50に返却する。
【0084】
平均値(AVG)を求めるクエリーを受けた場合は、図6のステップS401〜406と同様の処理で、ただステップS406でフロントDBサーバ10の問い合わせ処理部111で各々の値IDを実際の値に変換してから平均値を求めてクライアントマシン50に返却する点のみが図6で示した処理と異なる。
【0085】
(第1の実施形態の全体的な動作)
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係るデータ処理方法は、フロントデータベースサーバ(フロントDBサーバ10)と複数台のデータノード21〜23とが相互に接続されて構成される分散メモリデータベースシステム1にあって、外部からの表データの入力をフロントデータベースサーバのデータ構造変換部が受け付け(図4・ステップS301〜302)、入力された表データを、集計軸になり得る列としてあらかじめ指定されたデータ項目の各々についてフロントデータベースサーバのデータ構造変換部が個別に分割して実際のデータを値IDに置換した複数の値ID表を生成し(図4・ステップS304〜306)、生成された複数の値ID表をフロントデータベースサーバのデータ構造変換部が各データノードに分散して記憶させ(図4・ステップS307)、外部のクライアントマシンから発行された集合関数を含むクエリーをフロントデータベースサーバの問い合わせ処理部が受け付け、受け付けられたクエリーに基づいて表データの中の特定の値IDの出現数をフロントデータベースサーバの問い合わせ処理部が各データノードに問い合わせ(図6・ステップS401〜402)、各データノードから返された特定の値IDの出現数からフロントデータベースサーバの問い合わせ処理部がクエリーに対応する集合関数の値を計算してクライアントマシンに返送する(図6・ステップS404〜406)。
【0086】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータであるフロントDBサーバ10に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、DVD、CD、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
【0087】
本実施形態では、全ての基準列、即ち集計軸になり得る列について、表データ210を分割して各データノード21〜23に分配して記憶させている。これによって、どの基準列についてクエリーが発行されたとしても、他の装置とのデータの交換を発生させずにデータノード21〜23のうちの1台だけで集合関数に対する集計の処理を行って、その集計結果だけをフロントDBサーバ10に送信するようにできる。さらに、フロントDBサーバ10での処理も、単純に値IDを実際の値に差し替えるだけでよいので、高速に行うことができる。
【0088】
その際、各データノード21〜23が記憶するデータは、値リストと値IDによる表現に変換した上で記憶されるので、各データノード21〜23に記憶されるデータの容量を削減することができる。特に重複する値が多い場合に、そのデータの容量の削減の効果はより顕著なものとなる。さらに、複数の基準列について表データ210を分割する際のデータ容量の増大も、最低限に抑制することができる。
【0089】
(第2の実施形態)
本発明の第2の実施形態では、フロントデータベースサーバ(フロントDBサーバ510)のデータ構造変換部が、表データの中で集計軸および集計対象のいずれにもなり得ない列としてあらかじめ指定されたデータ項目の各々について、集計軸になり得る列についての値ID表のいずれか1種類に付随して記憶させる構成とした。
【0090】
この構成によれば、集計軸および集計対象のいずれにもなり得ないデータ項目を含むデータに対しても、第1の実施形態と同一の効果を得ることができる。
以下、これをより詳細に説明する。
【0091】
図11は、本発明の第2の実施形態に係る分散メモリデータベースシステム501の構成を示す説明図である。分散メモリデータベースシステム501は、フロントDBサーバ510と複数台のデータノード521〜523とが、第1の実施形態と同一の内部ネットワーク30を介して相互に接続されて構成される。外部ネットワーク40、およびクライアントマシン50も、第1の実施形態と同一である。
【0092】
フロントDBサーバ510およびデータノード521〜523は、第1の実施形態のフロントDBサーバ10およびデータノード21〜23と、ハードウェア的には同一の構成を有する。フロントDBサーバ510の主演算制御手段101で動作する問い合わせ処理部111およびデータ構造変換部113が、各々問い合わせ処理部511およびデータ構造変換部513に置換されている。また、データノード521〜523については、各々が記憶している値ID表621〜622,631〜632が第1の実施形態と異なる。
【0093】
図12は、図11で説明した分散メモリデータベースシステム501に対して入力される表データ610の一例を示す説明図である。表データ610は、項目A610a、項目B610b、項目C610c、項目D610dといったデータ項目を持つが、このうち基準列として項目A610aおよび項目B610b、対象列として項目D610dが指定されているが、項目C610cは基準列および対象列のいずれにも該当しない。なお、項目A610aは同時に主キーにも指定されている。
【0094】
図13は、図12に示した表データ610からデータ構造変換部513が作成する値ID表621〜622,631〜632の例を示す説明図である。前述のように基準列でも対象列でもない項目C610cが表データ610に含まれる場合、データ構造変換部513は、項目A610aの値ID別の値ID表621〜622にのみ項目C610cの値IDを同時に保持し、項目B610bの値ID別の値ID表631〜632には項目C610cの値IDを含めないようにする。値リストは、項目A〜Dの全てについて、第1の実施形態と同様に作成され、各データノード521〜523に分散して記憶される。
【0095】
たとえば、項目B610bの特定の値もしくは値IDから、これに対応する項目C610cの値もしくは値IDを知りたい場合には、まず項目B610bの値ID別の値ID表631〜632から、項目B610bの特定の値IDに対応する項目A610aの値IDを特定し、そこから項目A610aの値ID別の値ID表621〜622を参照してこれに対応する項目C610cの値IDを特定することができる。
【0096】
項目C610cは基準列でも対象列でもなく、従って集合関数による処理の対象とはならないので、全ての値ID表でその対応関係を保持する必要はなく、ただ他のデータ項目の値との対応がわかるようにしておけばよいものである。従って、いずれか1つの基準列(必ずしも主キーである必要はない)についてのみ項目C610cとの対応がわかるようにしておけば、他の値との対応を辿ることが可能となる。
【0097】
(実施形態の拡張)
以上で説明した第1および第2の実施形態は、その趣旨を改変しない範囲で、様々な拡張が考えられる。
たとえば、作成された値ID表および値リストについて、1つの表を必ず1つのデータノードに記憶する必要はない。1つの値ID表もしくは値リストを、各データノードの記憶容量などのような制約に応じて、複数のデータノードに適宜分割して記憶してもよい。この場合には、データ配置情報管理部112が、どの値ID表もしくは値リストが、どのデータノードに分割して記憶されているかを把握してデータ配置情報121にその旨を記憶するようにすればよい。
【0098】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【0099】
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【0100】
(付記1) フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムであって、
前記フロントデータベースサーバが、
外部から入力される表データを分割して各々の実際のデータを値IDに置換した複数の値ID表を生成してこれらを前記各データノードに分散して記憶させるデータ構造変換部と、
外部のクライアントマシンから発行された集合関数を含むクエリーに基づいて前記各データノードに対して前記表データの中の特定の値IDの出現数を問い合わせると共に、これに応じて前記各データノードから返された特定の値IDの出現数から前記クエリーに対応する集合関数の値を計算して前記クライアントマシンに返送する問い合わせ処理部と
を有し、
前記データ構造変換部が、前記複数の値ID表を生成する際に、前記表データの中で集計軸になり得る列としてあらかじめ指定された複数のデータ項目の各々について個別に前記複数の値ID表を生成することを特徴とする分散メモリデータベースシステム。
【0101】
(付記2) 前記フロントデータベースサーバの前記データ構造変換部が、前記複数の値ID表を生成する際に、前記表データの中で集計軸および集計対象になり得る列としてあらかじめ指定されたデータ項目の各々について実際の値を値IDに置換すると共に、前記値IDと前記実際の値との対応を示す値リストを生成する機能を有し、
前記フロントデータベースサーバが、前記値リストおよび前記値ID表が前記各データノードの中のいずれに分散されたかを記憶するデータ配置情報管理部を有することを特徴とする、付記1に記載の分散メモリデータベースシステム。
【0102】
(付記3) 前記フロントデータベースサーバの前記データ構造変換部が、前記複数の値ID表を生成する際に、前記実際の値を大小順にソートしてから前記値IDに置換することを特徴とする、付記2に記載の分散メモリデータベースシステム。
【0103】
(付記4) 前記フロントデータベースサーバの前記データ構造変換部が、前記表データの中で集計軸および集計対象のいずれにもなり得ない列としてあらかじめ指定されたデータ項目の各々について、前記集計軸になり得る列についての前記値ID表のいずれか1種類に付随して記憶させることを特徴とする、付記2に記載の分散メモリデータベースシステム。
【0104】
(付記5) 複数台のデータノードと相互に接続されて分散メモリデータベースシステムを構成するフロントデータベースサーバであって、
外部から入力される表データを分割して各々の実際のデータを値IDに置換した複数の値ID表を生成してこれらを前記各データノードに分散して記憶させるデータ構造変換部と、
外部のクライアントマシンから発行された集合関数を含むクエリーに基づいて前記各データノードに対して前記表データの中の特定の値IDの出現数を問い合わせると共に、これに応じて前記各データノードから返された特定の値IDの出現数から前記クエリーに対応する集合関数の値を計算して前記クライアントマシンに返送する問い合わせ処理部と
を有し、
前記データ構造変換部が、前記複数の値ID表を生成する際に、前記表データの中で集計軸になり得る列としてあらかじめ指定された複数のデータ項目の各々について個別に前記複数の値ID表を生成することを特徴とするフロントデータベースサーバ。
【0105】
(付記6) フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムにあって、
外部からの表データの入力を前記フロントデータベースサーバのデータ構造変換部が受け付け、
入力された前記表データを、集計軸になり得る列としてあらかじめ指定されたデータ項目の各々について前記フロントデータベースサーバのデータ構造変換部が個別に分割して実際のデータを値IDに置換した複数の値ID表を生成し、
生成された前記複数の値ID表を前記フロントデータベースサーバのデータ構造変換部が前記各データノードに分散して記憶させ、
外部のクライアントマシンから発行された集合関数を含むクエリーを前記フロントデータベースサーバの問い合わせ処理部が受け付け、
受け付けられた前記クエリーに基づいて前記表データの中の特定の値IDの出現数を前記フロントデータベースサーバの問い合わせ処理部が前記各データノードに問い合わせ、
前記各データノードから返された特定の値IDの出現数から前記フロントデータベースサーバの問い合わせ処理部が前記クエリーに対応する集合関数の値を計算して前記クライアントマシンに返送する
ことを特徴とするデータ処理方法。
【0106】
(付記7) フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムにあって、
前記フロントデータベースサーバが備えるコンピュータに、
外部からの表データの入力を受け付ける手順、
入力された前記表データを、集計軸になり得る列としてあらかじめ指定されたデータ項目の各々について個別に分割して実際のデータを値IDに置換した複数の値ID表を生成する手順、
生成された前記複数の値ID表を前記各データノードに分散して記憶させる手順、
外部のクライアントマシンから発行された集合関数を含むクエリーを受け付ける手順、
受け付けられた前記クエリーに基づいて前記表データの中の特定の値IDの出現数を前記各データノードに問い合わせる手順、
および前記各データノードから返された特定の値IDの出現数から前記クエリーに対応する集合関数の値を計算して前記クライアントマシンに返送する手順
を実行させることを特徴とするデータ処理プログラム。
【産業上の利用可能性】
【0107】
本発明はデータベースを利用するコンピュータシステム、特に分散メモリを使用するデータベースシステムに幅広く適用できる。
【符号の説明】
【0108】
1、501 分散メモリデータベースシステム
10、510 フロントDBサーバ
21〜23、521〜523 データノード
30 内部ネットワーク
40 外部ネットワーク
50 クライアントマシン
101、201 主演算制御手段
102、202 記憶手段
103、203 通信手段
111、204、511 問い合わせ処理部
112、513 データ配置情報管理部
113 データ構造変換部
121 データ配置情報
210、610 表データ
211〜213 値リスト
221〜222、231〜33、621〜622、631〜632 値ID表

【特許請求の範囲】
【請求項1】
フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムであって、
前記フロントデータベースサーバが、
外部から入力される表データを分割して各々の実際のデータを値IDに置換した複数の値ID表を生成してこれらを前記各データノードに分散して記憶させるデータ構造変換部と、
外部のクライアントマシンから発行された集合関数を含むクエリーに基づいて前記各データノードに対して前記表データの中の特定の値IDの出現数を問い合わせると共に、これに応じて前記各データノードから返された特定の値IDの出現数から前記クエリーに対応する集合関数の値を計算して前記クライアントマシンに返送する問い合わせ処理部と
を有し、
前記データ構造変換部が、前記複数の値ID表を生成する際に、前記表データの中で集計軸になり得る列としてあらかじめ指定された複数のデータ項目の各々について個別に前記複数の値ID表を生成することを特徴とする分散メモリデータベースシステム。
【請求項2】
前記フロントデータベースサーバの前記データ構造変換部が、前記複数の値ID表を生成する際に、前記表データの中で集計軸および集計対象になり得る列としてあらかじめ指定されたデータ項目の各々について実際の値を値IDに置換すると共に、前記値IDと前記実際の値との対応を示す値リストを生成する機能を有し、
前記フロントデータベースサーバが、前記値リストおよび前記値ID表が前記各データノードの中のいずれに分散されたかをあらかじめ備えられた記憶手段に記憶するデータ配置情報管理部を有することを特徴とする、請求項1に記載の分散メモリデータベースシステム。
【請求項3】
前記フロントデータベースサーバの前記データ構造変換部が、前記複数の値リストを生成する際に、前記実際の値を大小順にソートしてから前記値IDに置換することを特徴とする、請求項2に記載の分散メモリデータベースシステム。
【請求項4】
前記フロントデータベースサーバの前記データ構造変換部が、前記表データの中で集計軸および集計対象のいずれにもなり得ない列としてあらかじめ指定されたデータ項目の各々について、前記集計軸になり得る列についての前記値ID表のいずれか1種類に付随して記憶させることを特徴とする、請求項2に記載の分散メモリデータベースシステム。
【請求項5】
複数台のデータノードと相互に接続されて分散メモリデータベースシステムを構成するフロントデータベースサーバであって、
外部から入力される表データを分割して各々の実際のデータを値IDに置換した複数の値ID表を生成してこれらを前記各データノードに分散して記憶させるデータ構造変換部と、
外部のクライアントマシンから発行された集合関数を含むクエリーに基づいて前記各データノードに対して前記表データの中の特定の値IDの出現数を問い合わせると共に、これに応じて前記各データノードから返された特定の値IDの出現数から前記クエリーに対応する集合関数の値を計算して前記クライアントマシンに返送する問い合わせ処理部と
を有し、
前記データ構造変換部が、前記複数の値ID表を生成する際に、前記表データの中で集計軸になり得る列としてあらかじめ指定された複数のデータ項目の各々について個別に前記複数の値ID表を生成することを特徴とするフロントデータベースサーバ。
【請求項6】
フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムにあって、
外部からの表データの入力を前記フロントデータベースサーバのデータ構造変換部が受け付け、
入力された前記表データを、集計軸になり得る列としてあらかじめ指定されたデータ項目の各々について前記フロントデータベースサーバのデータ構造変換部が個別に分割して実際のデータを値IDに置換した複数の値ID表を生成し、
生成された前記複数の値ID表を前記フロントデータベースサーバのデータ構造変換部が前記各データノードに分散して記憶させ、
外部のクライアントマシンから発行された集合関数を含むクエリーを前記フロントデータベースサーバの問い合わせ処理部が受け付け、
受け付けられた前記クエリーに基づいて前記表データの中の特定の値IDの出現数を前記フロントデータベースサーバの問い合わせ処理部が前記各データノードに問い合わせ、
前記各データノードから返された特定の値IDの出現数から前記フロントデータベースサーバの問い合わせ処理部が前記クエリーに対応する集合関数の値を計算して前記クライアントマシンに返送する
ことを特徴とするデータ処理方法。
【請求項7】
フロントデータベースサーバと複数台のデータノードとが相互に接続されて構成される分散メモリデータベースシステムにあって、
前記フロントデータベースサーバが備えるコンピュータに、
外部からの表データの入力を受け付ける手順、
入力された前記表データを、集計軸になり得る列としてあらかじめ指定されたデータ項目の各々について個別に分割して実際のデータを値IDに置換した複数の値ID表を生成する手順、
生成された前記複数の値ID表を前記各データノードに分散して記憶させる手順、
外部のクライアントマシンから発行された集合関数を含むクエリーを受け付ける手順、
受け付けられた前記クエリーに基づいて前記表データの中の特定の値IDの出現数を前記各データノードに問い合わせる手順、
および前記各データノードから返された特定の値IDの出現数から前記クエリーに対応する集合関数の値を計算して前記クライアントマシンに返送する手順
を実行させることを特徴とするデータ処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−108635(P2012−108635A)
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願番号】特願2010−255654(P2010−255654)
【出願日】平成22年11月16日(2010.11.16)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】