JP5727258B2 - 分散型データベースシステム - Google Patents

分散型データベースシステム Download PDF

Info

Publication number
JP5727258B2
JP5727258B2 JP2011040257A JP2011040257A JP5727258B2 JP 5727258 B2 JP5727258 B2 JP 5727258B2 JP 2011040257 A JP2011040257 A JP 2011040257A JP 2011040257 A JP2011040257 A JP 2011040257A JP 5727258 B2 JP5727258 B2 JP 5727258B2
Authority
JP
Japan
Prior art keywords
data
unit
dsn
registration request
crx
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.)
Active
Application number
JP2011040257A
Other languages
English (en)
Other versions
JP2012178025A (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.)
Wingarc1st Inc
Original Assignee
Wingarc1st 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 Wingarc1st Inc filed Critical Wingarc1st Inc
Priority to JP2011040257A priority Critical patent/JP5727258B2/ja
Priority to EP12749629.7A priority patent/EP2680151A4/en
Priority to CN2012800097453A priority patent/CN103384878A/zh
Priority to PCT/JP2012/054432 priority patent/WO2012115194A1/ja
Priority to US14/001,284 priority patent/US20140074774A1/en
Publication of JP2012178025A publication Critical patent/JP2012178025A/ja
Application granted granted Critical
Publication of JP5727258B2 publication Critical patent/JP5727258B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/21Design, administration or maintenance of databases
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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

Description

本発明は、複数のスレーブノードを統括管理するマスターノードを備え、複数のスレーブノードにキー値を分散格納する構成の分散型データベースシステムに関する。
データベースとしては、データ処理を行うノードの物理的な配置の観点から、集中型データベースと分散型データベースとが知られている。このうち、データを分散格納する分散型データベースでは、複数のスレーブノードを統括管理するマスターノードを備え、キー値のデータを複数のスレーブノードに分散格納するものが知られている。
こうした分散型データベースの一例として、引用文献1には、水平垂直分散を組みあわせてデータを分散格納するデータベース管理装置が開示されている。このデータベース管理装置は、ハッシュ関数演算部および分散関数演算部を有する複数のデータベース装置と、負荷情報収集部およびアクセス権管理部を有する大域サーバとを備える。大域サーバは、負荷情報を統計的にデータ処理することで、最も負荷の低いデータベース装置とそのデータベース装置へのアクセス期間を含むアクセス権を決定する。複数のデータベース装置へのアクセスは、大域サーバが決定するアクセス権に基づいて許可される。
特開2006−350741号公報
しかしながら、水平垂直分散を組み合わせてキー値を複数のノードに分散格納する特許文献1に係る分散型データベース装置では、同一の値を有するキー値か否かを考慮することなしに、それぞれのキー値は複数のノード間にわたって無作為に分散格納される。こうした無作為な分散格納下においてデータ操作を実行した場合、複数のノードに分散格納された同一の値を有するキー値を相互に参照するために複数のノード間で生じる通信に係る時間遅延がボトルネックとなって、システム全体としての処理能力を効率的に向上させることは難しい。
本発明は、上述した課題を解決するためになされたものであり、分散型データシステム全体としての処理能力を効率的に向上させることができるようにすることを目的とする。
上述した課題を解決するために、本発明では、実値であるキー値と、分散型データベースの全体においてキー値が有するデータ型の範囲内で一意の値をとるキー値識別子(NID)との対応関係に係る分散共有NID(DSN)のデータを、複数のスレーブノードの各々に分散格納する。
DSNのデータを複数のスレーブノードの各々に分散格納するに際しては、格納先となる一のスレーブノードを、複数のスレーブノードのなかから、登録要求に係るキー値に基づいて決定する。
上記のように構成した本発明によれば、複数のスレーブノードの各々は、マスターノードからの指令に基づく結合演算などのデータ操作を並列に実行する際、実値であるキー値に代えて、自ノードに分散格納されたDSNを参照して得られるキー値識別子(NID)を用いるように動作する。
ここで、キー値識別子(NID)は、分散型データベースの全体においてキー値が有するデータ型の範囲内で一意の値をとる。つまり、同一のキー値であれば同一のキー値識別子(NID)の値をとる。一方、キー値に関する情報としての分散共有NID(DSN)のデータの格納先は、そのキー値に基づいて決定される。そうすると、同一のキー値に関する情報は、同一のスレーブノードに集約されることになる。
要するに、本発明では、同一のキー値に関する情報は同一のスレーブノードに集約するように作為的に分散格納される。このため、複数のスレーブノード間にまたがって同一の値を有するキー値が無作為に分散格納される従来例とは対照的に、例えばあるスレーブノードが結合演算などのデータ操作を実行した場合に、同一の値を有するキー値を相互に参照するためのスレーブノード間の通信はまったく生じず、システム全体としての処理のオーバーヘッドが抑制される。
従って、本発明によれば、分散型データベースシステム全体としての処理能力を効率的に向上させることができる。
本発明の実施形態に係る分散型データベースシステムの概要を示す構成図である。 第1〜第3のスレーブノードにおける売上管理表のトランザクションの一例を示す図である。 第1〜第3のスレーブノードにおける売上管理表のトランザクションの一例を示す図である。 分散共有NID(DSN)の一例を示す図である。 分散圧縮復元インデックス(D−CRX)の一例を示す図である。 分散圧縮結果セットキャッシュ(D−CRS)の一例を示す図である。 分散行識別インデックス(D−RIX)の一例を示す図である。 マスターノードと第1のスレーブノードの内部構成を示す機能ブロック図である。 DSNのデータの登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作を示すフロー図である。 D−CRX/D−RIXのデータの登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作を示すフロー図である。 D−CRSのデータの登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作を示すフロー図である。 本実施形態に係る分散型データベースシステムで実行される分散クエリー処理の流れを示す工程図である。 複数のローカルノードに分散格納される地域別顧客数(内部表)を示す図である。 図7に示す内部表のD−RIXの一例を示す図である。 外部表RIDと内部表RIDとの対応関係を示すRID対照表を示す図である。
以下、本発明の実施形態に係る分散型データベースシステムについて、図面を参照して詳細に説明する。
(本発明の実施形態に係る分散型データベースシステムの概要)
まず、本発明の実施形態に係る分散型データベースシステムの概要について説明する。図1は、本発明の実施形態に係る分散型データベースシステムの概要を示す構成図である。本実施形態に係る分散型リレーショナルデータベース(以下では、原則として、“リレーショナルデータベース”を“RDB”と省略し、“データベース”を“DB”と省略する。)のシステム11は、ひとつのマスターノード13と、第1〜第3のスレーブノード15,17,19との間を、第1通信網21を介して接続して構成されている。マスターノード13は、複数のスレーブノード15,17,19を統括管理する。なお、ノード13,15,17,19とは、情報処理機能を有するコンピューターである。
分散型RDBシステム11外の構成要素として、マスターノード13には、第2通信網23を介して、複数のクライアント端末25a,25b,25cが接続されている。マスターノード13は、複数のクライアント端末25a,25b,25cのうちいずれか一つより発行されたキー値登録要求、または、表結合操作などのデータ操作要求を受付けると、その要求に従う処理を第1〜第3のスレーブノード15,17,19と連携して実行し、得られた処理結果を応答として要求のあったクライアント端末に返す。
マスターノード13は、マスターデータを記憶するマスターデータ記憶部13aを有する。マスターデータは、DBメタデータおよびDB管理データを含んで構成される。DBメタデータは、複数のスレーブノード15,17,19がどこに何台設置されているのかに関する物理構成表や、テーブル属性の構成表などを含む。DB管理データは、後述する最新共有NIDなどの共有管理データを含む。ここで、本発明の主要な特徴として、マスターノード13は、本来の管理対象であるキー値を含む、キー値を特定するためのキー値に関する情報を、第1〜第3のスレーブノード15,17,19に分散格納するための管理を行うのみで、キー値またはキー値に関する情報を、マスターノード13それ自体またはマスターデータ記憶部13aのいずれも保持していない。
第1〜第3のスレーブノード15,17,19の各々は、第1〜第3のローカルデータを記憶する第1〜第3のローカルデータ記憶部15a,17a,19aをそれぞれ有する。なお、第1〜第3のスレーブノード15,17,19および第1〜第3のローカルデータ記憶部15a,17a,19aの構成は横並びに等しい。そこで、説明の重複を避けるため、以下では、第1のスレーブノード15、第1のローカルデータおよび第1のローカルデータ記憶部15aについて代表的に説明することで、その他の第2,第3のスレーブノード17,19、第2,第3のローカルデータおよび第2,第3のローカルデータ記憶部17a,19aについての説明に代えることとする。第1〜第3のローカルデータ記憶部15a,17a,19aのそれぞれは、DSN格納部、D−CRX格納部、D−CRS格納部およびD−RIX格納部に相当する。
第1のローカルデータは、4種類のインデックスデータを含んで構成される。すなわち、第1の分散共有NID(以下、「DSN」という)、第1の分散圧縮復元インデックス(以下、「D−CRX」という)、第1の分散圧縮結果セットキャッシュ(以下、「D−CRS」という)および第1の分散行識別インデックス(以下、「D−RIX」という)がそれである。これらについて、詳しくは後述する。
(複数のスレーブノードにおける売上管理表のトランザクションの一例)
本発明の実施形態に係る分散型RDBシステム11で生成される、複数のスレーブノード15,17,19における売上管理表のトランザクションの一例について説明する。図2A,図2Bは、複数のスレーブノード15,17,19における売上管理表のトランザクションの一例を示すテーブルである。
図2A,図2Bに示すような、タプル(行)とカラム(列)を二次元に配置したテーブルデータが入力されると、分散型RDBシステム11は、分散リレーショナル・データ・モデルの4種類のインデックスデータを作成する。図2A,図2Bに示す入力行番号は、入力行を一意に識別するための標識であり、1番から昇順に連番で割り振られるものとする。この入力行番号は、マスターノード13により付される標識であり、実際の入力データには付与されていない。
図2A,図2Bに示すテーブルの第1行目にはカラムの項目名が、同テーブルの第2行目にはデータ型の種別(例えば、文字列型か、数値型か、日付型か等)がそれぞれ記入してある。図2A,図2Bに示すテーブルでは、それぞれのタプルに入力行番号として1〜15が割り振られている。なお、図2A,図2Bに示すテーブルでは、特許請求の範囲に記載の“分散型データベースを構成するテーブル内のカラム毎に一意の値をとる分散行識別子(以下、「RID」という)”は、入力行番号と等しい値になっている。
図2A,図2Bに示すテーブルにおいて、それぞれのタプルの下段の欄には、各タプルの属性値が記入してある。ただし、各タプルの属性値は、説明の便宜上記入したものであり、実際の入力データには含まれていない。この属性値としては、例えば、キー値を入力としてDSNのデータを参照することにより払い出されたキー値識別子(以下、「NID」という)、コンシステント・ハッシュ法によって決定されたDSNのデータの格納先ノード番号(以下、「DSN−CNN」という)、同じくコンシステント・ハッシュ法によって決定されたD−CRXのデータの格納先ノード番号(以下、「D−CRX−CNN」という)、および、D−CRX−CNNの決定に使用したD−CRXのブロック番号(以下、「D−CRX−BN」という)がある。D−CRX−BNを決定する際には、ブロック化係数(以下、「D−CRX−BF」という)を使用する。なお、NID、DSN、DSN−CNN、D−CRX−CNN、D−CRX−BNおよびD−CRX−BFについて、詳しくは後述する。
図2A,図2Bに示すテーブルにおいて、D−CRX−BNの決定に用いるD−CRX−BFの値を“7”とし、格納先ノードの数は、第1〜第3のスレーブノード15,17,19の数に対応して3分散とした。第1〜第3のスレーブノード15,17,19には、それぞれにCNNの識別子としてa〜cを付した。つまり、第1のスレーブノード15がCNN=aの格納先ノードに相当し、第2のスレーブノード17がCNN=bの格納先ノードに相当し、第3のスレーブノード19がCNN=cの格納先ノードに相当するものとして、以降の説明を進める。なお、以下の説明において、中括弧{}により要素を囲んだ記号{i,j,k}は、i,j,kを要素とする集合を示す。
管理対象となる値の集合(以下、「値集合」という)の元をキー値と呼ぶ。NIDとは、キー値を一意に識別するための標識である。このNIDは、分散型データベースの全体において登録要求に係るキー値が有するデータ型の範囲内で一意の値をとるように、それぞれのキー値に対して割り当てられる。
要するに、同一の値を有するキー値には、同一のNIDが割り当てられる。このことを、図2A,図2Bに示すテーブルにおいて検証してみる。図2Aのうち入力行番号が“1”であるタプルでは、カラムの地域名として記入されたキー値である“北海道東北”に対し、NIDとして“2”が割り当てられている。また、図2Aのうち入力行番号が“5”であるタプルでは、カラムの地域名として記入されたキー値である“北海道東北”に対し、入力行番号が“1”であるタプルの例と同様に、NIDとして“2”が割り当てられている。なお、図2A,図2Bに示すテーブルにおいて、後に同じ値が現れるキー値と、先に同じ値が現れるキー値と、これらに相当しないキー値とを一見して識別できるように、上記の前二者の記入枠に対し、相互に異なる網掛け修飾を付与してある。
NIDは、自然数の値をとるのが好ましい。キー値に代えてNIDを用いて表結合操作などのデータ操作を行う際に、その演算に係る処理負荷を低く抑え、演算処理の高速化を図れるからである。その理由の詳細については後述する。また、NIDは、順序数の値をとるのが好ましい。最新共有NIDの値をインクリメントするといったきわめて簡素な手順で、登録要求に係るキー値に対してユニークなNIDの払い出しを行うことができるからである。なお、図2A,図2Bに示すテーブルでは、NID=0は無効値、NID=1はNULL値、NID=2以上が有効値と定義してある。
キー値に関する情報(DSN、D−CRX、D−CRS、D−RIX)を複数のスレーブノード15,17,19に分散するための分散方式としては、例えば公知のコンシステント・ハッシュ法を採用することができる。ただし、スレーブノード(格納先ノード)の増減が生じた際に、キー値に関する情報を充分に小さいコストで再分散可能な方式であれば、コンシステント・ハッシュ法に限定されない。
(DSNの一例)
次に、本発明の実施形態に係る分散型RDBシステム11で生成されるDSNの一例について説明する。図3Aは、DSNの一例を示すインデックスデータである。DSNとは、キー値を分散キーとして用いたコンシステント・ハッシュ法によって、NIDを複数のスレーブノード15,17,19に分散格納したインデックスであり、キー値を入力として対応するNIDを得る際に参照される。
詳しく述べると、DSNは、登録要求に係るキー値と、そのキー値に割り当てられたNIDとの対応関係に係るインデックスである。このDSNは、登録要求に係るキー値が有するデータ型毎に分けて格納される。DSNのインデックスによれば、キー値を入力として対応するNIDを得ることができる。
DSNは、図3Aに示すように、次の規則に従って生成される。
(1)分散型データベース全体の範囲内において、同一のデータ型の同一のキー値の集合に対して共通のNIDを与える。
(2)キー値を分散キーとして用いたコンシステント・ハッシュ法によって、キー値とNIDの対を複数のスレーブノード15,17,19(DSN−CNNの値がa〜c)に分散格納する。
(3)DSNの管理単位は、分散型データベースである。
(D−CRXの一例)
次に、本発明の実施形態に係る分散型RDBシステム11で生成されるD−CRXの一例について説明する。図3Bは、地域名、価格、および受注日の3つのカラムを抜粋した場合のD−CRXの一例を示す。D−CRXとは、NIDの関数(NIDそれ自体を含む)を分散キーとして用いたコンシスタント・ハッシュ法によって、複数のスレーブノード15,17,19にNIDを分散格納したインデックスであり、キー値の検索時に対応するNIDを調べる際、または、NIDをキー値へ逆変換する際に用いられる。
詳しく述べると、D−CRXは、登録要求に係るキー値と、そのキー値に割り当てられたNIDとの1対1の対応関係に係るインデックスである。このD−CRXは、登録要求に係るキー値が属するカラム毎に分けて格納される。D−CRXのインデックスによれば、NIDを入力として対応するキー値を得ること、および、キー値を入力として対応するNIDを得ることができる。DNSとD−CRXとの相違点は、DNSではキー値をNIDに一方向に変換するのに対し、D−CRXではキー値とNIDとを双方向に変換する点である。また、D−CRXのインデックスによれば、キー値の値範囲(始値と終値)を入力として対応するNID集合を得ることができる(値範囲検索)。この値範囲検索については後述する。
D−CRXは、図3Bに示すように、次の規則に従って生成される。
(1)分散型データベース内における同一テーブルの同一カラムを管理単位として、キー値とNIDとの1対1の対応関係を与える。
(2)ブロック番号(D−CRX−BN)は、NIDをブロック化係数(D−CRX−BF)で割った商である。上記式より、D−CRX−BNはNIDの関数であるといえる。
(3)D−CRX−BFは定数であり、任意の正の整数(本例では“7”)の値をとる。このため、D−CRX−BNは正の整数の値をとる。
(4)D−CRX−BN(NIDの関数)を分散キーとするコンシステント・ハッシュ法によって、NIDとキー値との対(1対1対応)を複数のスレーブノード15,17,19(格納先ノード;D−CRX−CNNの値がa〜c)に分散格納する。
(5)D−CRXの管理単位は、カラムである。
(D−CRSの一例)
次に、本発明の実施形態に係る分散型RDBシステム11で生成されるD−CRSの一例について説明する。図3Cは、地域名、価格、および受注日の3つのカラムを抜粋した場合のD−CRSの一例を示す。D−CRSとは、RIDの関数(RIDそれ自体を含む)を分散キーとして用いたコンシスタント・ハッシュ法によって、複数のスレーブノード15,17,19にNIDを分散格納したインデックスであり、検索結果としてのRID集合を作成する際、または、結合結果としてのタプルを作成する際に用いられる。
詳しく述べると、D−CRSは、分散型データベースを構成するテーブル内のカラム毎に一意の値をとるRIDとNIDとの対応関係に係るインデックスである。このD−CRSは、登録要求に係るキー値が属するカラム毎に分けて格納される。D−CRSでは、RIDとNIDとの対応関係が1対1で記述されており、同一のカラム内においてNIDの重複した出現を許すデータ構造となっている。D−CRSによれば、RIDを入力として対応するNIDを得ることができる。また、NID集合({NID}と表記する)を入力として対応するRID集合({RID}と表記する)を得ることができる。つまり、検索対象となるNIDと、カラムに属する全てのNIDとを逐一照合してゆくフルスキャンを、NID集合の元の数だけ繰り返し行うことにより、NID集合に対応するRID集合を得ることができる。
D−CRSは、図3Cに示すように、次の規則に従って生成される。
(1)分散型データベース内における同一のカラム単位にRIDに対応するNIDを格納する。これを列単位NID配列と呼ぶ。
(2)ブロック番号(D−CRS−BN)は、RIDをブロック化係数(D−CRS-BF)で割った商である。上記式より、D−CRS−BNはRIDの関数であるといえる。
(3)D−CRS−BFは定数であり、任意の正の整数(本例では“7”)の値をとる。このため、D−CRS−BNは正の整数の値をとる。
(4)D−CRS−BN(RIDの関数)を分散キーとするコンシステント・ハッシュ法によって、列単位NID配列を複数のスレーブノード15,17,19(D−CRSのデータの格納先ノード;D−CRS−CNNの値がa〜c)に分散格納する。
(5)D−CRSの管理単位は、カラムである。
(D−RIXの一例)
次に、本発明の実施形態に係る分散型RDBシステム11で生成されるRIXの一例について説明する。図3Dは、地域名、価格、および受注日の3つのカラムを抜粋した場合のD−RIXの一例を示す。D−RIXとは、NIDの関数(NIDそれ自体を含む)を分散キーとして用いたコンシスタント・ハッシュ法によって、複数のスレーブノード15,17,19にNIDを分散格納したインデックスであり、表結合操作でのキー値の検索時に対応するRIDを調べる際に用いられる。
詳しく述べると、D−RIXは、NIDとRID集合との1対Nの対応関係に係るインデックスである。このD−RIXは、登録要求に係るキー値が属するカラム毎に分けて格納される。D−CRSとD−RIXとの相違点は、D−CRSでは同一のカラム内においてNIDの重複した出現が起こり得るのに対し、D−RIXでは同一のカラム内においてNIDの重複した出現が起こり得ない点である。この相違点は、D−CRSではRIDを分散キーとして用いるのに対し、D−RIXではNIDを分散キーとして用いることに由来して生じている。D−RIXのインデックスによれば、NIDを入力として対応するRID集合を得ること、およびNID集合を入力として対応するRID集合を得ることができる。また、D−RIXを用いて表結合操作などのデータ操作を行うことにより、複数のスレーブノード15,17,19(格納先ノード;DSN−CNNの値がa〜c)間でのデータの移動を抑止すること、並びに、表結合操作での検索時のフルスキャンを抑止することができる。その理由については後述する。
D−RIXは、図3Dに示すように、次の規則に従って生成される。
(1)分散型データベース内における同一テーブルの同一カラムを管理単位として、NIDとRID集合の対応関係を与える。
(2)ブロック番号(D−RIX−BN)は、NIDをブロック化係数(D−RIX-BF)で割った商である。上記式より、D−RIX−BNはNIDの関数であるといえる。
(3)D−RIX−BFは定数であり、任意の正の整数(本例では“7”)の値をとる。このため、D−RIX−BNは正の整数の値をとる。
(4)D−RIX−BN(NIDの関数)を分散キーとするコンシステント・ハッシュ法によって、NIDとRID集合の対(1対N対応)を複数のスレーブノード15,17,19(格納先ノード;DSN−CNNの値がa〜c)に分散格納する。
(5)D−RIXの管理単位は、カラムである。
(マスターノードと第1のスレーブノードの内部構成)
次に、本実施形態に係る分散型RDBシステム11において重要な役割を果たすマスターノード13と第1のスレーブノード15の内部構成について説明する。図4は、マスターノード13と第1のスレーブノード15の内部構成を示す機能ブロック図である。
はじめに、マスターノード13の内部構成について説明する。マスターノード13は、マスター受付部31、NID割当部33、インデックス生成部35、ノード決定部37、要求発行部41と処理結果統合部43とを有する分散統括管理部39、および、更新管理部45を備えて構成される。
登録要求受付部に相当するマスター受付部31は、登録要求に係るキー値およびそのデータ型の情報を受け付ける。キー値登録要求は、実際には、複数のカラム毎にそれぞれのキー値およびそのデータ型の情報が関連付られたタプル単位でマスター受付部31に入力されるのが一般的である。ただし、キー値登録要求は、複数のタプルの組からなるテーブルデータの形態で入力される場合もある。いずれの場合でも、タプル単位の入力データを受け付けたマスター受付部31は、タプルに含まれる複数のカラムのうちいずれか一つのカラムに関連付けられたキー値(以下、「処理対象キー値」と呼ぶ場合がある。)およびそのデータ型の情報を最小単位として逐次処理を進める。このため、本実施形態では、最小単位である一組の処理対象キー値およびそのデータ型の情報をマスター受付部31が受け付けたものとして説明を進めるものとする。
タプル単位の入力データを受け付けたマスター受付部31は、そのタプルに属する全てのキー値に対し、テーブル内のカラム毎に一意の値をとる共通のRIDを付与する。RIDとしては、NIDと同様に、自然数かつ順序数の値を採るのが好ましい。RIDの最新値をインクリメントするといったきわめて簡素な手順で、テーブル内のカラム毎にユニークなRIDの付与を行うことができるからである。
マスター受付部31は、複数のクライアント端末25a,25b,25cのうちいずれか一つより発行されたキー値登録要求(そのデータ型の情報を含む)、または、表結合操作などのデータ操作要求を受付ける。また、マスター受付部31は、いずれかのスレーブノードから送信されてくる後述の既存確認結果を受付ける。マスター受付部31は、キー値登録要求が生じた場合、その要求をNID割当部33へ渡す一方、データ操作要求が生じた場合、その要求をノード決定部37へ渡す。
NID割当部33は、キー値登録要求が生じた場合、マスターデータ記憶部13aに記憶されたDB管理データのうち最新共有NIDを参照して、登録要求に係るキー値に対してユニークなNIDを割当てる。また、NID割当部33は、マスター受付部31が既存確認結果(登録要求に係るキー値がその格納先ノードに既に存在するか否かを示す情報)を受け付けた場合、その既存確認結果に基づいて、最新共有NIDを更新すべか否かに係る最新共有NID更新制御信号を生成し、これを更新管理部45に送る。
インデックス生成部35は、NID割当部33により登録要求に係るキー値に対してNIDが割り当てられた場合、登録要求に係るキー値、そのキー値が有するデータ型、そのキー値に割り当てられたNID、およびマスターノード13により付与されたRIDに基づいて、DSN、D−CRX、D−CRS、および、D−RIXのデータをそれぞれ生成する。ここで、DSNのデータとは、DSNの構成要素となる少なくとも最小単位のデータ(ひとつのキー値とひとつのNIDとの対データ)を意味する。同様に、D−CRXのデータとは、D−CRXの構成要素となる少なくとも最小単位のデータ(ひとつのキー値とひとつのNIDとの対データ)を意味し、D−CRSのデータとは、D−CRSの構成要素となる少なくとも最小単位のデータ(ひとつのRIDとひとつのNIDとの対データ)を意味し、D−RIXのデータとは、D−RIXの構成要素となる少なくとも最小単位のデータ(ひとつのNIDと一群のRID集合との対データ)を意味する。こうして生成された4種類のインデックスデータは、例えば、次述するノード決定の際や、表結合操作等のデータ操作要求が生じた際などに参照される。インデックス生成部35は、DSN生成部、D−CRX生成部、D−CRS生成部およびD−RIX生成部に相当する。
ノード決定部37は、キー値登録要求が生じた場合、インデックス生成部35で生成されたDSN、D−CRX、D−CRSおよびD−RIXのデータの分散格納先となるスレーブノードを、キー値、NIDの関数またはRIDの関数のうちいずれか一つを分散キーとするコンシステント・ハッシュ法によって決定する。ノード決定部37は、DSN格納ノード決定部、D−CRX格納ノード決定部、D−CRS格納ノード決定部およびD−RIX格納ノード決定部に相当する。
ノード決定部37は、表結合操作などのデータ操作要求が生じた場合、マスターノード13の支配下にある第1〜第3のスレーブノード15,17,19の全てを、データ操作要求を分散処理するノードとして決定する。これを受けて第1〜第3のスレーブノード15,17,19では、与えられたデータ操作要求を並列に実行する。第1〜第3のスレーブノード15,17,19がデータ操作要求を分散処理する手順について、詳しくは後述する。
分散統括管理部39に属する要求発行部41は、キー値登録要求が生じた場合、マスターノード13の支配下にある第1〜第3のスレーブノード15,17,19のうち、ノード決定部37で決定されたスレーブノードに対し、DSN、D−CRX、D−CRSおよびD−RIXのデータをそれぞれ送ってデータ登録要求を発行する。また、要求発行部41は、データ操作要求が生じた場合、第1〜第3のスレーブノード15,17,19のうち、ノード決定部37で決定されたノードに対し、処理要求を発行する。要求発行部41は、DSN登録要求発行部、D−CRX登録要求発行部、D−CRS登録要求発行部およびD−RIX登録要求発行部に相当する。
分散統括管理部39に属する処理結果統合部43は、第1〜第3のスレーブノード15,17,19のそれぞれで分散処理されたデータ操作結果を受けて、これらの処理結果を統合する。
更新管理部45は、NID割当部33から送信されてきた最新共有NID更新制御信号に従って、DB管理データのうち最新共有NIDの更新を制御する。具体的には、更新管理部45は、登録要求に係るキー値がその格納先ノードのDSN格納部に未だ存在しない旨の既存確認結果を受けた場合に、最新共有NIDを次共有NIDに更新するように制御を行う。
次に、第1のスレーブノード15の内部構成について説明する。第1のスレーブノード15は、第1の受付部51、既存判定部53、登録管理部55、第1の分散処理部57および第1の応答部59を備えて構成される。
第1の受付部51は、マスターノード13の要求発行部41から送られてきたDSN、D−CRX、D−CRSおよびD−RIXのデータ(以下、「インデックスデータ」という)の登録要求、または、表結合操作などのデータ操作要求を受付ける。第1の受付部51は、インデックスデータの登録要求が生じた場合、その要求を既存判定部53へ渡す一方、データ操作要求が生じた場合、その要求を第1の分散処理部57へ渡す。
既存判定部53は、インデックスデータの登録要求が生じた場合、第1のローカルデータ記憶部15aの第1のDSNを参照して、登録要求に係るDSNのデータに含まれる処理対象キー値と同じ値のデータが第1のDSNに既に存在するか否かを確認し、その既存確認結果を第1の応答部59に送る。また、既存判定部53は、既存確認結果に基づいて、登録要求に係るDSNのデータに含まれる処理対象キー値と、そのキー値に対してユニークなNIDとの組み合わせに係るDSNのデータの登録指令を登録管理部55に送る。
登録管理部55は、既存判定部53から送られてきた登録指令に従って、登録要求に係るDSNのデータを第1のローカルデータ記憶部15a(DSN格納部に相当)に追加格納させる登録管理を行う。また、登録管理部55は、マスターノード13から送られてきた登録指令に従って、登録要求に係るD−CRX、D−CRSおよびD−RIXのデータを第1のローカルデータ記憶部15a(D−CRX格納部、D−CRS格納部およびD−RIX格納部に相当)に格納させる登録管理を行う。これにより、登録要求に係る全てのインデックスデータの登録が完了する。登録管理部55は、DSN登録管理部、D−CRX登録管理部、D−CRS登録管理部およびD−RIX登録管理部に相当する。
データ操作実行部に相当する第1の分散処理部57は、自ノードに関連するデータ操作要求が生じた場合、第1のローカルデータ記憶部15aに格納された第1のDSN、第1のD−CRX、第1のD−CRS、第1のD−RIXを適宜参照して、要求に係る分散処理を他ノードに対し並列に実行する。第1の分散処理部57は、得られた分散処理結果を第1の応答部59へ渡す。
第1の応答部59は、既存判定部53から送られてきた既存確認結果を、マスターノード13のマスター受付部31へ応答する。マスターノード13では、前述したように、マスター受付部31は、受け付けた既存確認結果をNID割当部33に渡す。NID割当部33は、その既存確認結果に基づいて最新共有NID更新制御信号を生成し、これを更新管理部45に送る。更新管理部45は、NID割当部33から送信されてきた最新共有NID更新制御信号に従って、DB管理データのうち最新共有NIDの更新を制御する。また、第1の応答部59は、第1の分散処理部57から送られてきた分散処理結果を、マスターノード13の処理結果統合部43へ応答する。
(キー値登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作)
次に、キー値登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作について説明する。まず、DSNのデータの登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作について、図5Aを参照して説明する。図5Aは、キー値登録要求に基づくDSNのデータの登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作を示すフロー図である。なお、キー値登録要求は、前述したとおり、タプル単位でマスター受付部31に入力されるのが一般的であるが、タプル単位の入力データを受け付けたマスター受付部31は、タプルに含まれる複数のカラムのうちいずれか一つのカラムに関連付けられたキー値およびそのデータ型の情報を単位として処理を進めるものとする。
ステップS11において、マスターノード13のマスター受付部31は、複数のクライアント端末25a,25b,25cのうちいずれか一つより発行されたキー値登録要求を受付けて、その要求をNID割当部33へ渡す。
ステップS12において、キー値登録要求を受け付けたNID割当部33は、マスターデータ記憶部13aに記憶されたDB管理データのうち最新共有NIDを参照して、登録要求に係るキー値に対してふさわしい次共有NID(例えば、次共有NIDは最新共有NIDの値を“1”だけインクリメントした値である)を割当てる。NID割当部33で登録要求に係るキー値に対して割り当てられた次共有NIDの情報はインデックス生成部35へと送られる。
ステップS13において、マスターノード13のインデックス生成部35は、登録要求に係るキー値と、そのキー値が有するデータ型と、そのキー値に対してNID割当部33で割り当てられた次共有NIDとに基づいて、DSNのデータを生成する。
ステップS14において、マスターノード13のノード決定部37は、インデックス生成部35で生成されたDSNのデータの分散格納先となるスレーブノードを、キー値を分散キーとするコンシステント・ハッシュ法によって決定し、その決定内容を分散統括管理部39へ送る。ここでは、CNN=x(ただし、xはa〜cのいずれか)の値をもつノードが、DSNの分散格納先となるスレーブノードとして決定されたとする。また、CNN=xの値をもつノードは、第1のスレーブノード15であるとして以降の説明を進める。
ステップS15において、マスターノード13の分散統括管理部39に属する要求発行部41は、マスターノード13の支配下にある第1〜第3のスレーブノード15,17,19のうち、ノード決定部37で決定されたCNN=xの値をもつ第1のスレーブノード15に対し、ステップS13で生成したDSNのデータを送ってデータ登録要求を発行する。
ここで、マスターノード13での処理の流れの説明が途中であるが、マスターノード13と第1のスレーブノード15との間の協調動作を円滑に説明する便宜上、以下では、CNN=xの値をもつ第1のスレーブノード15での処理内容について説明する。ステップS21において、CNN=xの値をもつ第1のスレーブノード15の第1の受付部51は、マスターノード13の要求発行部41から送られてきたDSNのデータ登録要求を受付けて、その要求を既存判定部53に渡す。
ステップS22において、CNN=xの値をもつ第1のスレーブノード15の既存判定部53は、第1のローカルデータ記憶部15aの第1のDSNを参照して、登録要求に係るDSNのデータに含まれる処理対象キー値と同じ値のデータが第1のDSNに既に存在するか否かを確認し、この既存確認結果に基づいて、ステップS23において、登録要求に係る処理対象キー値が既に登録済みか否かに係る既存判定を行う。そして、既存判定部53は、既存判定結果に基づいて、登録要求に係る処理対象キー値と、そのキー値に対してユニークなNIDとの組み合わせに係るDSNのデータの登録指令を登録管理部55に対して行う。
ステップS23の既存判定の結果、登録要求に係る処理対象キー値が既に登録済みであると判定された場合、ステップS24において、登録管理部55は、既存判定部53から送られてきた登録指令に従わずに、登録要求に係る処理対象キー値と登録済みのNIDとの対応関係に係るDSNのデータをそのまま維持する。これにより、同一のキー値に対するユニークなNIDの割り当てを担保する。この場合、登録管理部55は、DSNのデータの登録要求をキャンセルする。登録要求に係る処理対象キー値と登録済みのNIDとの対応関係に係るDSNのデータは既に登録済みであり、DSNのデータを追加登録する必要もないからである。
一方、ステップS23の既存判定の結果、登録要求に係る処理対象キー値が未登録の値であると判定された場合、ステップS25において、登録管理部55は、既存判定部53から送られてきた登録指令に従って、登録要求に係る処理対象キー値にふさわしいものとして次共有NIDが割り当てられたDSNのデータを第1のローカルデータ記憶部15aに追加格納する。ここで、次共有NIDが割り当てられたDSNのデータを追加格納するとは、既に蓄積されているDSNのデータを書き換えることなく、次共有NIDが割り当てられたDSNのデータを追加するように格納することをいう。
ステップS26において、第1のスレーブノード15の第1の応答部59は、ステップS24またはS25の処理後に、登録要求に係る処理対象キー値に対して現実に割り当てられたNIDを、既存確認結果と共にマスターノード13のマスター受付部31へ返し、一連の処理の流れを終了させる。
ここで、マスターノード13での処理の流れの説明に戻る。ステップS16において、マスターノード13のマスター受付部31は、第1のスレーブノード15から送信されてきた既存確認結果、および登録要求に係る処理対象キー値に対して現実に割り当てられたNIDを受付けて、その結果をNID割当部33へ渡す。ステップS17において、NID割当部33は、登録要求に係る処理対象キー値が既に登録済みか否かに係る既存判定を行う。
ステップS17の既存判定の結果、登録要求に係る処理対象キー値が既に登録済みであると判定された場合、ステップS18において、登録要求に係る処理対象キー値がその格納先である第1のスレーブノード15に既に存在する旨の既存確認結果を受けたNID割当部33は、最新共有NIDの更新を禁止する制御信号を生成し、これを更新管理部45に送る。更新管理部45は、NID割当部33から送信されてきた最新共有NID更新制御信号に従って、最新共有NIDの更新を禁止する。これにより、ステップS12で登録要求に係る処理対象キー値に対して割り当てられた次共有NIDはキャンセルされ、最新共有NIDの値は更新されることなくそのまま維持される。
一方、ステップS17の既存判定の結果、登録要求に係るキー値が未登録の値であると判定された場合、ステップS19において、登録要求に係る処理対象キー値がその格納先である第1のスレーブノード15にまだ存在しない旨の既存確認結果を受けたNID割当部33は、最新共有NIDを更新させる制御信号を生成し、これを更新管理部45に送る。更新管理部45は、NID割当部33から送信されてきた最新共有NID更新制御信号に従って、最新共有NIDの値を、ステップS12で登録要求に係るキー値に対して割り当てられた次共有NIDの値に更新する。この更新後に、NID割当部33は、処理の流れを図5BのステップS31へと進ませる。
次に、DSNのデータ登録が完了した後に、D−CRX/D−RIXのデータ登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作について、図5Bを参照して説明する。図5Bは、キー値登録要求に基づくD−CRX/D−RIXのデータ登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作を示すフロー図である。
ステップS31において、マスターノード13のNID割当部33は、登録要求に係る処理対象キー値に対して現実に割り当てられたNIDを参照して、そのNIDの関数であるブロック番号(D−CRX−BNおよびD−RIX−BN)を演算する。具体的には、「D−CRX−BNは、NIDをD−CRX−BFで割った商」と、「D−RIX−BNは、NIDをD−RIX-BFで割った商」をそれぞれ演算により求める。
ステップS32において、マスターノード13のインデックス生成部35は、登録要求に係る処理対象キー値と、そのキー値に対して現実に割り当てられたNIDと、登録要求に係る処理対象キー値が属するカラム名とに基づいて、D−CRXのデータを生成する。
ステップS33において、マスターノード13のインデックス生成部35は、登録要求に係る処理対象キー値に対して現実に割り当てられたNIDと、そのNIDに対応するRID集合と、登録要求に係る処理対象キー値が属するカラム名とに基づいて、D−RIXのデータを生成する。
ステップS34において、マスターノード13のノード決定部37は、インデックス生成部35で生成されたD−CRXおよびD−RIXのデータの分散格納先となるスレーブノードを、ステップS31で求めたNIDの関数であるブロック番号(D−CRX−BNおよびD−RIX−BN)を分散キーとするコンシステント・ハッシュ法によって決定し、その決定内容を分散統括管理部39へ送る。ここでは、CNN=y(ただし、yはa〜cのいずれか)の値をもつノードが、D−CRXおよびD−RIXのデータの分散格納先となるスレーブノードとして決定されたとする。また、CNN=yの値をもつノードは、第1のスレーブノード15であるとして以降の説明を進める。
ステップS35において、マスターノード13の分散統括管理部39に属する要求発行部41は、マスターノード13の支配下にある第1〜第3のスレーブノード15,17,19のうち、ノード決定部37で決定されたCNN=yの値をもつ第1のスレーブノード15に対し、ステップS32で生成したD−CRXのデータ、および、ステップS33で生成したD−RIXのデータを送ってデータ登録要求を発行する。このデータ登録要求の発行後に、マスターノード13の分散統括管理部39は、処理の流れを図5CのステップS51へと進ませる。
ここで、マスターノード13での処理の流れの説明が途中であるが、マスターノード13と第1のスレーブノード15との間の協調動作を円滑に説明する便宜上、以下では、CNN=yの値をもつ第1のスレーブノード15での処理内容について説明する。ステップS41において、CNN=yの値をもつ第1のスレーブノード15の第1の受付部51は、マスターノード13の要求発行部41から送られてきたD−CRXおよびD−RIXのデータの登録要求を受付けて、その要求を既存判定部53を介して登録管理部55に渡す。
ステップS42〜S43において、CNN=yの値をもつ第1のスレーブノード15の登録管理部55は、マスターノード13の要求発行部41から送られてきた登録要求に応じて、D−CRXおよびD−RIXのデータをカラム毎に分けて第1のローカルデータ記憶部15aにそれぞれ格納させる。ステップS42〜S43においてD−CRXおよびD−RIXのデータの格納後に、第1のスレーブノード15の登録管理部55は、一連の処理の流れを終了させる。
次に、D−CRXおよびD−RIXのデータ登録が完了した後に、D−CRSのデータ登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作について、図5Cを参照して説明する。図5Cは、キー値登録要求に基づくD−CRSのデータ登録要求が生じた場合のマスターノード13とスレーブノード15,17,19との協調動作を示すフロー図である。
ステップS51において、マスターノード13のNID割当部33は、登録要求に係る処理対象キー値に対して現実に割り当てられたNIDに対応するRIDを参照して、そのRIDの関数であるブロック番号(D−CRS−BN)を演算する。具体的には、「D−CRS−BNは、RIDをD−CRS−BFで割った商」を演算により求める。
ステップS52において、マスターノード13のインデックス生成部35は、登録要求に係る処理対象キー値に対して現実に割り当てられたNIDと、登録要求に係る処理対象キー値が属するRIDと、登録要求に係る処理対象キー値が属するカラム名とに基づいて、D−CRSのデータを生成する。
ステップS53において、マスターノード13のノード決定部37は、インデックス生成部35で生成されたD−CRSのデータの分散格納先となるスレーブノードを、ステップS51で求めたRIDの関数であるブロック番号(D−CRS−BN)を分散キーとするコンシステント・ハッシュ法によって決定し、その決定内容を分散統括管理部39へ送る。ここでは、CNN=z(ただし、zはa〜cのいずれか)の値をもつノードが、D−CRSの分散格納先となるスレーブノードとして決定されたとする。また、CNN=zの値をもつノードは、第1のスレーブノード15であるとして以降の説明を進める。
ステップS54において、マスターノード13の分散統括管理部39に属する要求発行部41は、マスターノード13の支配下にある第1〜第3のスレーブノード15,17,19のうち、ノード決定部37で決定されたCNN=zの値をもつ第1のスレーブノード15に対し、ステップS52で生成したD−CRSのデータを送ってデータ登録要求を発行する。このデータ登録要求の発行後に、マスターノード13の分散統括管理部39は、一連の処理の流れを終了させる。
次に、ステップS61において、CNN=zの値をもつ第1のスレーブノード15の第1の受付部51は、マスターノード13の要求発行部41から送られてきたD−CRSのデータの登録要求を受付けて、その要求を既存判定部53を介して登録管理部55に渡す。
ステップS62において、CNN=zの値をもつ第1のスレーブノード15の登録管理部55は、マスターノード13の要求発行部41から送られてきた登録要求に応じて、D−CRSのデータをカラム毎に分けて第1のローカルデータ記憶部15aに格納させる。ステップS62のD−CRSのデータの格納後に、第1のスレーブノード15の登録管理部55は、一連の処理の流れを終了させる。
上述のようにして登録された4種類のインデックスデータは、膨大な量のデータからなる分散型RDBを対象として、第1〜第3のスレーブノード15,17,19が表結合操作などの処理を並列に分散して実行する際に、その威力を発揮する。特に、本実施形態に係る分散型RDBシステム11は、例えばWWW(World Wide Web)経由で分散型RDBサービスを提供するに際し、急激な需要増大への柔軟な対応を狙ってシステム内のノードの台数を増設し、増設後の複数の各ノードに分散格納されたデータに対して表結合操作などのデータ操作を実行した場合であっても、増設前後でのシステム全体としての処理能力を線形に向上させ得る線形スケールアウト性を実現することができる。以下では、4種類のインデックスデータを導入することによって、どのようにしてシステム全体としての処理能力を効率的に向上させ、また、線形スケールアウト性を実現することができるのかについて、分散クエリー処理を例示して説明する。
図6は、分散クエリー処理の流れを示す工程図である。図6に示す分散クエリー処理は、ステップS71の分散検索処理と、ステップS72の分散表結合処理と、ステップS73の集計用としての分散結果タプル作成処理となどから構成される。
ステップS71の分散検索処理と、ステップS72の分散表結合処理と、ステップS73の集計用としての分散結果タプル作成処理とは、第1〜第3のスレーブノード15,17,19で並列に実行可能である。上流側フェーズの結果を用いて処理を実行するステップS72の工程では、上流側工程(ステップS71)の処理が全てのノードで完了するまでその処理を実行することができない。
ここで、分散クエリー処理の流れを説明するに先立って、説明に用いることばの意味を定義しておく。
検索式は、検索項と、論理演算子と、演算の優先順位を制御する括弧とからなる。これらの任意の組合せによって検索式が構成される。
検索項は、左辺項と、比較演算子と、右辺項とからなる。左辺項は、列名もしくはリテラル(実値)からなる。右辺項は、列名もしくはリテラル(実値)からなる。比較演算子は、等しい「=」、等しくない「≠」、大なり「>」、大なりイコール「≧」、小なり「<」、小なりイコール「≦」からなる。
論理演算子は、AND「&」、OR「|」、NOT「¬」からなる。ANDは積演算、ORは和演算、NOTは否定演算を行う。括弧は、開き括弧「(」および閉じ括弧「)」からなる。
検索では、全スレーブノードにおいてキー値それ自体を検索キーとするD−CRXの検索を行った後、この検索により抽出されたNID集合を検索キーとするD−CRSの検索を行い、検索結果としてのRID集合を取得する。範囲検索(例えば、数値型のデータを対象として、始値と終値による指定範囲に属するキー値を抽出する検索)では、全スレーブノードにおいてキー値の指定範囲を与えてD−CRXの検索を行った後、この検索により抽出されたNID集合を検索キーとするD−CRSの検索を行い、検索結果としてのRID集合を取得する。部分一致検索(例えば、文字列型のデータを対象として、指定文字列を少なくとも一部に有するキー値を抽出する検索)では、全スレーブノードにおいてキー値の指定文字列を与えてD−CRXの検索を行った後、この検索により抽出されたNID集合を検索キーとするD−CRSの検索を行い、検索結果としてのRID集合を取得する。
表結合とは、外部表と内部表との表結合操作を意味する。外部表は、表結合の基準となる表である。内部表は、外部表に対する表結合の相手となる表である。外部表と内部表は、結合カラムの値によって結合される。結合カラムとは、外部表と内部表とに共通して存在するカラムであって、そのカラムを介して外部表と内部表との結合を行わせる役割をもつカラムである。外部表の結合カラムを外部表外部キーカラム、内部表の結合カラムを内部表主キーカラムと呼ぶ。表結合操作を繰り返すことによって、複数の表を結合することができる。
次に、図6に示すステップS71の分散検索処理の内容について、図2A,図2Bを参照しながら、具体例をあげて説明する。単一項での完全一致検索の実施例1として、“地域名”が“関東”であるキー値をRID集合として抽出する例を挙げる。この実施例1では、まず、マスターノード13からの検索要求を受けた第1〜第3のスレーブノード15,17,19の分散処理部は、検索式から検索項を抽出し、検索項集合{地域名=“関東”}を求める。そして、カラム名が“地域名”のD−CRX(CNN=a〜c)を対象として、検索項集合の元{地域名=“関東”}を用いて第1〜第3のスレーブノード15,17,19の分散処理部で一斉に検索を実行する。この検索により、元{地域名=“関東”}からNID集合={6}を得る。
ここで、D−CRX(CNN=a〜c)を対象とする一斉検索では、フルスキャン照合を要することなく、検索条件に合致したキー値がヒットした時点において検索をやめることができる。D−CRXは、あるカラム内でのキー値の重複を許さないデータ構造を採用しているからである。従って、D−CRXのデータ構造によれば、検索時間の短縮化に寄与することができる(以下、同様)。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、カラム名が“地域名”のD−CRS(CNN=a〜c)を対象として、元単位にNID集合={6}でフルスキャン照合することにより、そのNID集合の値に合致したRID集合を求める。この処理を第1〜第3のスレーブノード15,17,19の分散処理部で一斉に行うことにより、RID集合={2,3,7,9}を取得する。RID集合={2,3,7,9}が求める答えとなる。
ここで、D−CRSを対象とするNID集合の値検索は、フルスキャン照合を要するにも関わらず、比較的短時間で完遂することができる。これは、前段のD−CRXを用いた検索により、実値であるキー値をNID(例えば自然数)に代替し、代替したNIDの値を用いてフルスキャン照合を行っているからである。第1〜第3のスレーブノード15,17,19の分散処理部では、NIDは固定幅のバイナリー整数値で表現されるため、実値であるキー値に比べて検索や参照において格段に効率が良い。従って、D−CRXおよびD−CRSの組み合わせに係るデータ検索によれば、検索時間の短縮化に寄与することができる(以下、同様)。
複数項(単一項の組み合わせ)での完全一致検索としては、例えば、“地域名”が“関東”であるキー値、または、“地域名”が“関西”であるキー値をRID集合として抽出する実施例2を挙げる。この実施例2では、各単一項での検索条件をそれぞれ用いて、実施例1の手順により単一項での完全一致検索を各々実行し、得られたRID集合同士の論理和(OR)演算を行うことにより、目的とするRID集合を得ることができる。
単一項での範囲検索の実施例3として、“価格”が500000以上かつ800000以下であるRID集合を抽出する例を挙げる。この実施例3では、まず、マスターノード13からの検索要求を受けた第1〜第3のスレーブノード15,17,19の分散処理部は、検索式から検索項を抽出し、検索項集合{[価格≧500000,価格≦800000]}を求める。そして、カラム名が“価格”のD−CRX(CNN=a〜c)を対象として、検索項集合の元{[価格≧500000,価格≦800000]}を用いて第1〜第3のスレーブノード15,17,19の分散処理部で一斉に検索を実行する。この検索により、第1の元{[価格≧500000]}からNID集合={5,8,11,14,22,30}を得る。第2の元{[価格≦800000]}からNID集合={2,8,11,17,22,30}を得る。次に、第1〜第3のスレーブノード15,17,19の分散処理部は、第1および第2の元毎のNID集合を検索式に当てはめてNID集合同士の論理積(AND)演算を求め、検索結果としてのNID集合={8,11,22,30}を求める。そして、カラム名が“価格”のD−CRS(CNN=a〜c)を対象として、元単位にNID集合={8,11,22,30}でフルスキャン照合することにより、そのNID集合の値に合致したRID集合を求める。
単一項での部分一致検索の実施例4として、「“地域名”=LIKE”%関%“」(SQL表記法に従うと、LIKEは曖昧検索指示のキーワード、%はワイルドカード記号を表わす。この例の場合、“地域名”が”関“の文字列を含むキー値を検索する。)の検索条件に合致するキー値をRID集合として抽出する例を挙げる。この実施例4では、まず、マスターノード13からの検索要求を受けた第1〜第3のスレーブノード15,17,19の分散処理部は、検索式から検索項を抽出し、検索項集合{“地域名”=LIKE”%関%“}を求める。そして、カラム名が“地域名”のD−CRX(CNN=a〜c)を対象として、検索項集合の元{“地域名”=LIKE”%関%“}を用いて第1〜第3のスレーブノード15,17,19の分散処理部で一斉に検索を実行する。この検索により、元{“地域名”=LIKE”%関%“}からNID集合={6,33}を得る。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、カラム名が“地域名”のD−CRS(CNN=a〜c)を対象として、元単位にNID集合={6,33}でフルスキャン照合することにより、そのNID集合の値に合致したRID集合を求める。この処理を第1〜第3のスレーブノード15,17,19の分散処理部で一斉に行うことにより、RID集合={2,3,7,9,12,15}を取得する。このRID集合={2,3,7,9,12,15}が求める答えとなる。
複数項(単一項の組み合わせ)での部分一致検索としては、例えば、“地域名”が”関“の文字列を含むキー値、または、“地域名”が”東“の文字列を含むキー値をRID集合として抽出する実施例5を挙げる。この実施例5では、各単一項での検索条件をそれぞれ用いて、実施例4の手順により単一項での部分一致検索を各々実行し、得られたRID集合同士の論理和(OR)演算を行うことにより、検索結果としてのRID集合を得ることができる。
次に、図6に示すステップS72の分散表結合処理の手順について、図2A,図2B、図7および図8を参照しながら、具体例をあげて説明する。図7は、複数のスレーブノード15,17,19に分散格納される地域別顧客数の内部表を示す図である。図8は、図7に示す内部表のD−RIXの一例を示す図である。実施例6では、第1〜第3のスレーブノード15,17,19の分散処理部において、結合カラムのD−RIXを参照して外部表と内部表との結合結果を求める。実施例6において、複数のスレーブノード15,17,19に分散格納された売上管理表(トランザクション)を示す図2A,図2Bは、外部表として位置づけられる。複数のスレーブノード15,17,19に分散格納された地域別顧客数を示す図7は、内部表として位置づけられる。実施例6において、結合カラムは“地域名”である。
この実施例6では、まず、マスターノード13からの表結合操作要求を受けた第1〜第3のスレーブノード15,17,19の分散処理部は、外部表のD−RIX(以下、「OTFK−D−RIX」と省略する)から、外部表外部キーカラムのNID(以下、「OTFK−NID」と省略する)集合をそれぞれ取得する。具体的には、例えば第1のスレーブノード(CNN=a)15では、図3Dに示す“地域名”のカラムからOTFK−NID集合{2,6,25}を取得する。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、OTFK−NID集合の元(NID)を検索条件として用いて、内部表主キーカラムのD−RIX(以下、「ITPK−D−RIX」と省略する)をそれぞれ検索する。具体的には、例えば第1のスレーブノード(CNN=a)15では、OTFK−NID集合の元{2,6,25}を検索条件として用いて、図8に示す“地域名”のカラムから、OTFK−NID集合の元{2,6,25}に合致する内部表主キーカラムのNID(以下、「ITPK−NID」と省略する)集合を検索する。この検索により、ITPK−NID集合{2,6,25}が得られる。
ITPK−NID集合の検索が成功した場合、第1〜第3のスレーブノード15,17,19の分散処理部は、OTFK−D−RIXの目標カラム(外部表外部キーカラム)から、OTFK−NID集合に対応する外部表RID(以下「OTRID」と省略する)集合をそれぞれ取得する。具体的には、例えば第1のスレーブノード(CNN=a)15では、図3Dに示す“地域名”のカラムから、OTFK−NID集合{2,6,25}に対応するOTRID集合{1,2,3,5,7,8,9,10,14}を取得する。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、ITPK−D−RIXの目標カラム(内部表主キーカラム)から、ITPK−NID集合に対応する内部表RID(以下「ITRID」と省略する)集合をそれぞれ取得する。具体的には、例えば第1のスレーブノード(CNN=a)15では、図8に示す“地域名”のカラムから、ITPK−NID集合{2,6,25}に対応するITRID集合{1,2,7}を取得する。
そして、第1〜第3のスレーブノード15,17,19の分散処理部は、外部表RIDに対応する内部表RIDの対照表(以下、「REF−OTRID−ITRID」と省略する)をそれぞれ作成する。REF−OTRID−ITRIDは、相互に共通のOTFK−NIDおよびITPK−NIDを間にはさんで、外部表RIDとこれに対応する内部表RIDとを結びつける役割を果たす。これにより、図9に示すようなRID対照表が得られる。
結合条件が複数ある場合には、第1〜第3のスレーブノード15,17,19の分散処理部は、複数の結合条件のそれぞれ毎に、実施例6の手順に従ってREF−OTRID−ITRIDをそれぞれ作成し、得られたREF−OTRID−ITRID同士に論理演算を施すことにより、結合結果としてのREF−OTRID−ITRID(RID対照表)を、複数のスレーブノード15,17,19のそれぞれ毎に得ることができる。
実施例6に係る結合結果としてのRID対照表は、複数のスレーブノード15,17,19のそれぞれ毎に分散格納されたREF−OTRID−ITRIDによって表現される。この結合結果としてのRID対照表のデータ構造は、RDBにおけるデータの格納効率および処理効率に多大な影響を与える。巨大になりがちな結合表を実値ベースで作成することなしに、結合表と同等の機能を果たすことができるからである。第1〜第3のスレーブノード15,17,19の分散処理部では、外部表を基準としてREF−OTRID−ITRIDを順に辿ることによって、外部表における目標カラム(外部表外部キーカラム)のRIDをポインタとして用いて、内部表における目標カラム(内部表主キーカラム)のRIDを効率的に参照することができる。目標カラム(外部表外部キーカラムまたは内部表主キーカラム)に属する実表(外部表または内部表)のRIDが得られれば、そのRIDをポインタとしてD−CRSを参照することにより、対応するNIDを取得することができる。NIDが得られれば、そのNIDをポインタとしてD−CRXを参照することにより、対応するキー値を取得することができる。
検索結果のデータ構造は、外部表のRID集合として表現される。これに対し、結合結果のデータ構造は、外部表を基準としたREF−OTRID−ITRID(RID対照表)の連鎖として表現される。これらの共通点は、両者共に外部表のRID集合を持つことである。従って、検索結果と結合結果とのそれぞれの外部表のRID集合同士で論理演算を行わせることにより、検索結果と結合結果との組み合わせに係る論理演算を効率的に実現することができる。
実施例6によれば、表結合操作のための複雑な演算を、簡素な集合演算に置き換えることができる。そのため、演算処理時間の大幅の短縮を実現することができる。また、実施例6によれば、表結合操作を行う際に、外部表の結合カラムと、内部表の結合カラムとの間でのキー値の突き合わせを不要とすることができる。これは、DSNの採用によって同一のキー値に対して同一のNIDを割り当てることが担保されていること、並びに、共通のNIDを間にはさんで外部表RIDとこれに対応する内部表RIDとを結びつけるRID対照表が存在すること等に基づく。
また、実施例6では、同一のキー値に関する情報(NID)は同一のスレーブノードに集約するように作為的に分散格納される。このため、複数のスレーブノード間にまたがって同一の値を有するキー値が無作為に分散格納される従来例とは対照的に、例えばあるスレーブノードが結合演算などのデータ操作を実行した場合に、同一の値を有するキー値を相互に参照するためのスレーブノード間の通信はまったく生じない。従って、実施例6によれば、システム全体としての処理のオーバーヘッドを抑制することができるため、分散型RDBシステム11全体としての処理能力を効率的に向上させることができる。
要するに、実施例6によれば、例えばWWW(World Wide Web)経由で分散型RDBサービスを提供するに際し、急激な需要増大への柔軟な対応を狙ってシステム内のスレーブノードの台数を増設し、増設後の複数の各スレーブノードに分散格納されたデータに対して表結合操作などのデータ操作を実行した場合であっても、増設前後でのシステム全体としての処理能力を線形に向上させ得る線形スケールアウト性を実現することができる。
次に、図6に示すステップS73の集計用としての分散結果タプル作成処理の概要について、表結合操作がない場合とある場合とに分けて説明する。ステップS73の処理は、第1〜第3のスレーブノード15,17,19のそれぞれにおいて並列に実行される。表結合操作がない場合の集計用としての分散結果タプル作成処理において、第1〜第3のスレーブノード15,17,19の分散処理部は、それぞれの検索結果としてのRID集合から、そのRID集合の元となるRIDをそれぞれ取得する。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、取得したRIDに基づいて、取得したRIDに対応するNIDのデータをどのノードが保持しているのかを特定する。具体的には、第1〜第3のスレーブノード15,17,19の分散処理部が以下の計算を行うことにより、データの格納先ノード番号D−CRS−CNNを特定する。すなわち、分散処理部は、RIDに基づいて、D−CRSのブロック番号D−CRS−BNを決定する。そして、当該決定したD−CRS−BNを用いてコンシステント・ハッシュ法によるハッシュ演算を行うことにより、D−CRS−CNNを決定する。ここで、自ノード以外のノードが、取得したRIDに対応するNIDのデータを保持している場合、自ノードは、そのデータを自ノード以外のノードから取得する。次いで、自ノードは、取得したRIDをポインタとして用いて、タプルを構成する目標カラムのD−CRSを参照してNIDを取得する。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、取得したNIDに基づいて、取得したNIDに対応するキー値のデータをどのノードが保持しているのかを特定する。具体的には、第1〜第3のスレーブノード15,17,19の分散処理部が以下の計算を行うことにより、データの格納先ノード番号D−CRX−CNNを特定する。すなわち、分散処理部は、NIDに基づいて、D−CRXのブロック番号D−CRX−BNを決定する。さらに、当該決定したD−CRX−BNを用いてコンシステント・ハッシュ法によるハッシュ演算を行うことにより、D−CRX−CNNを決定する。ここで、自ノード以外のノードが、取得したNIDに対応するキー値のデータを保持している場合、自ノードは、そのデータを自ノード以外のノードから取得する。次いで、自ノードは、取得したNIDをポインタとして用いて、タプルを構成する目標カラムのD−CRXを参照して実値であるキー値を取得する。
次に、表結合操作がある場合の集計用としての分散結果タプル作成処理において、第1〜第3のスレーブノード15,17,19の分散処理部は、それぞれの検索結果としてのRID集合から、外部表のRIDをそれぞれ取得する。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、取得した外部表のRIDに基づいて、取得した外部表のRIDに対応するNIDのデータをどのノードが保持しているのかを特定する。具体的には、第1〜第3のスレーブノード15,17,19の分散処理部が以下の計算を行うことにより、データの格納先ノード番号D−CRS−CNNを特定する。すなわち、分散処理部は、外部表のRIDに基づいて、D−CRSのブロック番号D−CRS−BNを決定する。そして、当該決定したD−CRS−BNを用いてコンシステント・ハッシュ法によるハッシュ演算を行うことにより、D−CRS−CNNを決定する。ここで、自ノード以外のノードが、取得した外部表のRIDに対応するNIDのデータを保持している場合、自ノードは、そのデータを自ノード以外のノードから取得する。次いで、自ノードは、取得した外部表のRIDをポインタとして用い、REF−OTRID−ITRIDの連鎖を参照して、タプルを構成する目標カラムのREF−OTRID−ITRIDから目標となる内部表のRIDを取得する。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、取得した内部表のRIDに基づいて、取得した内部表のRIDに対応するNIDのデータをどのノードが保持しているのかを特定する。具体的には、第1〜第3のスレーブノード15,17,19の分散処理部が以下の計算を行うことにより、データの格納先ノード番号D−CRS−CNNを特定する。すなわち、分散処理部は、内部表のRIDに基づいて、D−CRSのブロック番号D−CRS−BNを決定する。そして、当該決定したD−CRS−BNを用いてコンシステント・ハッシュ法によるハッシュ演算を行うことにより、D−CRS−CNNを決定する。ここで、自ノード以外のノードが、取得した内部表のRIDに対応するNIDのデータを保持している場合、自ノードは、そのデータを自ノード以外のノードから取得する。次いで、自ノードは、取得した内部表のRIDをポインタとして用いて、タプルを構成する目標カラムのD−CRSを参照してNIDを取得する。
次に、第1〜第3のスレーブノード15,17,19の分散処理部は、取得したNIDに基づいて、取得したNIDに対応するキー値のデータをどのノードが保持しているのかを特定する。具体的には、第1〜第3のスレーブノード15,17,19の分散処理部が以下の計算を行うことにより、データの格納先ノード番号D−CRX−CNNを特定する。すなわち、分散処理部は、NIDに基づいて、D−CRXのブロック番号D−CRX−BNを決定する。さらに、当該決定したD−CRX−BNを用いてコンシステント・ハッシュ法によるハッシュ演算を行うことにより、D−CRX−CNNを決定する。ここで、自ノード以外のノードが、取得したNIDに対応するキー値のデータを保持している場合、自ノードは、そのデータを自ノード以外のノードから取得する。次いで、自ノードは、取得したNIDをポインタとして用いて、タプルを構成する目標カラムのD−CRXを参照して実値であるキー値を取得する。
なお、本実施形態では、第1〜第3のスレーブノード15,17,19の分散処理部が自身でコンシステント・ハッシュ法によるハッシュ演算を行うことにより、D−CRX−CNNやD−CRS−CNNを決定する例について説明したが、本発明はこれに限定されない。例えば、D−CRX−CNNやD−CRS−CNNをマスターノード13がマスターデータ13aとして保持し、第1〜第3のスレーブノード15,17,19の分散処理部がマスターノード13に問い合わせるようにしてもよい。ただし、マスターノード13に問い合わせるよりも、各スレーブノードが自身で演算する方が効率的で好ましい。
以上説明したように、マスターノード13のインデックス生成部35は、第1〜第3のスレーブノード15,17,19に分散して格納させるためのインデックスデータ(DSN、D−CRX、D−CRS、D−RIX)をそれぞれ作成した後、作成したインデックスデータを、ノード決定部37による決定ノードに一括送信し、それぞれの決定ノード上でインデックスデータを一括処理する。
コンシステント・ハッシュ法によりインデックスデータの格納先ノードを決定するに際しては、DSNではキー値、D−CRXおよびD−RIXではNIDの関数、D−CRSではRIDの関数を分散キーとしてそれぞれ用いる。これにより、例えばあるスレーブノードが結合演算などのデータ操作を実行した場合に、同一の値を有するキー値を相互に参照するためのスレーブノード間の通信はまったく生じないため、インデックスデータの処理の効率化を実現することができる。
また、DSNによってNIDとキー値とは1対1で対応するように規制されるため、意味のある値としてキー値が必要になる以前の処理では、キー値に代えてNID(自然数かつ順序数の値をとる)を用いるのが好ましい。これにより、全ての演算を数値演算に還元することができる。計算機内においてNIDは固定幅のバイナリー整数値で表現されるため、実値であるキー値に比べて検索や参照の場面で効率が良い。従って、演算処理時間の短縮化に貢献することができる。
以上説明した実施形態は、本発明の具現化の例を示したものである。従って、これらによって本発明の技術的範囲が限定的に解釈されることがあってはならない。本発明はその要旨またはその主要な特徴から逸脱することなく、様々な形態で実施することができるからである。
例えば、本実施形態において、複数のスレーブノードとして第1〜第3のスレーブノード15,17,19を例示して説明したが、本発明はこの例に限定されない。スレーブノードの数は、処理対象となるデータ量の増減にあわせて、適宜の数に調整すればよい。
また、本実施形態において、マスターノードとしてひとつのマスターノード13を例示して説明したが、本発明はこの例に限定されない。負荷分散や耐障害性の向上を図る目的で、マスターノードの複製を設けてもよい。複製を設けてもよいのは、スレーブノードについても同様である。
また、本実施形態において、D−RIXのインデックスデータを、DSN、D−CRX、D−CRSと横並びで説明したが、本発明において、D−RIXは必須のデータ構造でない。D−RIXは、表結合操作時における処理の効率化を実現することができるものの、これがなくてもD−CRSを参照したフルスキャン照合によって、その機能を代替することができるからである。
また、上記実施形態では、インデックス生成部35、ノード決定部37および更新管理部45をマスターノード13に設ける例について説明したが、本発明はこれに限定されない。例えば、これらの各機能構成をスレーブノード15,17,19に設けてもよい。大量のデータを登録する際は、複数のスレーブノード15,17,19でインデックス生成部35、ノード決定部37および更新管理部45に関する処理を並列に実行することにより、処理の効率を上げることができる。
11 分散型リレーショナルデータベースシステム(分散型データベースシステム)
13 マスターノード
15〜19 第1〜第3のスレーブノード
15a〜19a 第1〜第3のローカルデータ記憶部(DSN格納部、D−CRX格納部、D−CRS格納部およびD−RIX格納部)
31 マスター受付部(登録要求受付部)
33 NID割当部
35 インデックス生成部(DSN生成部、D−CRX生成部、D−CRS生成部およびD−RIX生成部)
37 ノード決定部(DSN格納ノード決定部、D−CRX格納ノード決定部、D−CRS格納ノード決定部およびD−RIX格納ノード決定部)
39 分散統括管理部
41 要求発行部(DSN登録要求発行部、D−CRX登録要求発行部、D−CRS登録要求発行部およびD−RIX登録要求発行部)
43 処理結果統合部
45 更新管理部
51 第1の受付部
53 既存判定部
55 登録管理部(DSN登録管理部、D−CRX登録管理部、D−CRS登録管理部およびD−RIX登録管理部)
57 第1の分散処理部(データ操作実行部)
59 第1の応答部

Claims (13)

  1. 複数のスレーブノードを統括管理するマスターノードを備え、キー値を前記複数のスレーブノードに分散格納し、この分散格納されたキー値を用いて、前記マスターノードからの指令に基づくデータ操作を前記複数のスレーブノードが並列に実行する分散型データベースシステムであって、
    登録要求に係るキー値およびそのデータ型の情報を受け付ける登録要求受付部と、
    前記登録要求受付部で受け付けた登録要求に係るキー値に対し、前記分散型データベースシステムの全体において前記登録要求に係るキー値が有するデータ型の範囲内で一意の値をとるキー値識別子(以下、「NID」という)を割り当てるNID割当部と、
    前記登録要求に係るキー値と、前記NID割当部で割り当てられたNIDとの対応関係に係る分散共有NID(以下、「DSN」という)のデータを生成するDSN生成部と、
    前記DSN生成部で生成された前記DSNのデータの格納先となる一のスレーブノードを、前記複数のスレーブノードのなかから、前記登録要求に係るキー値に基づいて決定するDSN格納ノード決定部と、
    を備えたことを特徴とする分散型データベースシステム。
  2. 請求項1に記載の分散型データベースシステムであって、
    前記登録要求に係るキー値と、前記NID割当部で割り当てられたNIDとの対応関係に係る分散圧縮復元インデックス(以下、「D−CRX」という)のデータを生成するD−CRX生成部と、
    前記D−CRX生成部で生成された前記D−CRXのデータの格納先となる一のスレーブノードを、前記複数のスレーブノードのなかから、前記NIDの関数に基づいて決定するD−CRX格納ノード決定部と、
    前記分散型データベースシステムを構成するテーブル内のカラム毎に一意の値をとる分散行識別子(以下、「RID」という)と、前記NID割当部で割り当てられたNIDとの対応関係に係る分散圧縮結果セットキャッシュ(以下、「D−CRS」という)のデータを生成するD−CRS生成部と、
    前記D−CRS生成部で生成された前記D−CRSのデータの格納先となる一のスレーブノードを、前記複数のスレーブノードのなかから、前記RIDの関数に基づいて決定するD−CRS格納ノード決定部と、
    を更に備えたことを特徴とする分散型データベースシステム。
  3. 請求項2に記載の分散型データベースシステムであって、
    前記登録要求に係るキー値に対して割り当てられたNIDと前記RIDの集合との対応関係に係る分散行識別インデックス(以下、「D−RIX」という)のデータを生成するD−RIX生成部と、
    前記D−RIX生成部で生成された前記D−RIXの格納先となる一のスレーブノードを、前記複数のスレーブノードのなかから、前記NIDの関数に基づいて決定するD−RIX格納ノード決定部と、
    を更に備えたことを特徴とする分散型データベースシステム。
  4. 請求項1〜3のいずれか一項に記載の分散型データベースシステムであって、
    前記登録要求受付部、前記NID割当部、前記DSN生成部および前記DSN格納ノード決定部は前記マスターノードに備えられ、
    前記マスターノードは、前記DSN格納ノード決定部で決定された一のスレーブノード宛に前記DSNのデータおよび前記登録要求に係るキー値が有するデータ型の情報を送って前記DSNのデータの登録要求を発行するDSN登録要求発行部を更に備え、
    前記複数のスレーブノードの各々は、
    前記DSN登録要求発行部による前記DSNのデータの登録要求に応じて、前記DSNのデータを、前記登録要求に係るキー値が有するデータ型毎に分けてDSN格納部に格納させる登録管理を行うDSN登録管理部と、
    前記登録要求に係るキー値が前記DSN格納部に既に存在するか否かを判定する既存判定部とを備え、
    前記DSN登録管理部は、前記既存判定部により前記登録要求に係るキー値が前記DSN格納部に既に登録済みと判定された場合、前記登録要求に係るキー値に対して既に割り当てられているNIDが属する前記DSNの登録内容をそのまま維持する一方、前記既存判定部により前記登録要求に係るキー値が前記DSN格納部に未だ存在しないと判定された場合、前記登録要求に係るキー値と今回割り当てられたNIDとの対応関係に係る前記DSNのデータを前記DSN格納部に格納させる登録管理を行う、
    ことを特徴とする分散型データベースシステム。
  5. 請求項1〜3のいずれか一項に記載の分散型データベースシステムであって、
    前記DSN生成部および前記DSN格納ノード決定部は前記複数のスレーブノードに備えられていることを特徴とする分散型データベースシステム。
  6. 請求項2に記載の分散型データベースシステムであって、
    前記DSN生成部、前記DSN格納ノード決定部、前記D−CRX生成部、前記D−CRX格納ノード決定部、前記D−CRS生成部および前記D−CRS格納ノード決定部は前記マスターノードに備えられ、
    前記マスターノードは、
    前記DSN格納ノード決定部で決定された一のスレーブノード宛に前記DSNのデータおよび前記登録要求に係るキー値が有するデータ型の情報を送って前記DSNのデータの登録要求を発行するDSN登録要求発行部と、
    前記D−CRX格納ノード決定部で決定された一のスレーブノード宛に前記D−CRXのデータおよび前記登録要求に係るキー値が属するカラムの情報を送って前記D−CRXのデータの登録要求を発行するD−CRX登録要求発行部と、
    前記D−CRS格納ノード決定部で決定された一のスレーブノード宛に前記D−CRSのデータおよび前記カラムの情報を送って前記D−CRSのデータの登録要求を発行するD−CRS登録要求発行部とを更に備え、
    前記複数のスレーブノードの各々は、
    前記DSN登録要求発行部による前記DSNのデータの登録要求に応じて、前記DSNのデータを、前記登録要求に係るキー値が有するデータ型毎に分けてDSN格納部に格納させる登録管理を行うDSN登録管理部と、
    前記D−CRX登録要求発行部による前記D−CRXのデータの登録要求に応じて、前記D−CRXのデータを、前記登録要求に係るキー値が属するカラム毎に分けてD−CRX格納部に格納させる登録管理を行うD−CRX登録管理部と、
    前記D−CRS登録要求発行部による前記D−CRSのデータの登録要求に応じて、前記D−CRSのデータを、前記カラム毎に分けてD−CRS格納部に格納させる登録管理を行うD−CRS登録管理部と、
    前記マスターノードからの指令に基づくデータ操作を、前記DSN格納部、前記D−CRX格納部および前記D−CRS格納部に格納された情報を用いて並列に実行するデータ操作実行部とを更に備え、
    前記マスターノードは、前記複数のスレーブノードのデータ操作実行部で並列に実行された処理結果を統合する処理結果統合部を更に備えた、
    ことを特徴とする分散型データベースシステム。
  7. 請求項2に記載の分散型データベースシステムであって、
    前記DSN生成部、前記DSN格納ノード決定部、前記D−CRX生成部、前記D−CRX格納ノード決定部、前記D−CRS生成部および前記D−CRS格納ノード決定部は前記複数のスレーブノードに備えられていることを特徴とする分散型データベースシステム。
  8. 請求項3に記載の分散型データベースシステムであって、
    前記DSN生成部、前記DSN格納ノード決定部、前記D−CRX生成部、前記D−CRX格納ノード決定部、前記D−CRS生成部、前記D−CRS格納ノード決定部、前記D−RIX生成部および前記D−RIX格納ノード決定部は前記マスターノードに備えられ、
    前記マスターノードは、
    前記DSN格納ノード決定部で決定された一のスレーブノード宛に前記DSNのデータおよび前記登録要求に係るキー値が有するデータ型の情報を送って前記DSNのデータの登録要求を発行するDSN登録要求発行部と、
    前記D−CRX格納ノード決定部で決定された一のスレーブノード宛に前記D−CRXのデータおよび前記登録要求に係るキー値が属するカラムの情報を送って前記D−CRXのデータの登録要求を発行するD−CRX登録要求発行部と、
    前記D−CRS格納ノード決定部で決定された一のスレーブノード宛に前記D−CRSのデータおよび前記カラムの情報を送って前記D−CRSのデータの登録要求を発行するD−CRS登録要求発行部と、
    前記D−RIX格納ノード決定部で決定された一のスレーブノード宛に前記D−RIXのデータおよび前記カラムの情報を送って前記D−RIXのデータの登録要求を発行するD−RIX登録要求発行部とを更に備え、
    前記複数のスレーブノードの各々は、
    前記DSN登録要求発行部による前記DSNのデータの登録要求に応じて、前記DSNのデータを、前記登録要求に係るキー値が有するデータ型毎に分けてDSN格納部に格納させる登録管理を行うDSN登録管理部と、
    前記D−CRX登録要求発行部による前記D−CRXのデータの登録要求に応じて、前記D−CRXのデータを、前記登録要求に係るキー値が属するカラム毎に分けてD−CRX格納部に格納させる登録管理を行うD−CRX登録管理部と、
    前記D−CRS登録要求発行部による前記D−CRSのデータの登録要求に応じて、前記D−CRSのデータを、前記カラム毎に分けてD−CRS格納部に格納させる登録管理を行うD−CRS登録管理部と、
    前記D−RIX登録要求発行部による前記D−RIXのデータの登録要求に応じて、前記D−RIXのデータを、前記カラム毎に分けてD−RIX格納部に格納させる登録管理を行うD−RIX登録管理部と、
    前記マスターノードからの指令に基づくデータ操作を、前記DSN格納部、前記D−CRX格納部、前記D−CRS格納部および前記D−RIX格納部に格納された情報を用いて並列に実行するデータ操作実行部とを更に備え、
    前記マスターノードは、前記複数のスレーブノードのデータ操作実行部で並列に実行された処理結果を統合する処理結果統合部を更に備えた、
    ことを特徴とする分散型データベースシステム。
  9. 請求項3に記載の分散型データベースシステムであって、
    前記DSN生成部、前記DSN格納ノード決定部、前記D−CRX生成部、前記D−CRX格納ノード決定部、前記D−CRS生成部、前記D−CRS格納ノード決定部、前記D−RIX生成部および前記D−RIX格納ノード決定部は前記複数のスレーブノードに備えられていることを特徴とする分散型データベースシステム。
  10. 請求項1〜9のいずれか一項に記載の分散型データベースシステムであって、
    前記NID割当部は、前記登録要求に係るキー値に対し、自然数かつ順序数の値をとるNIDを割り当てる、
    ことを特徴とする分散型データベースシステム。
  11. 請求項1に記載の分散型データベースシステムであって、
    前記DSN格納ノード決定部は、前記登録要求に係るキー値を分散キーとして用いたコンシステント・ハッシュ法により前記DSNのデータの格納先となる一のスレーブノードを決定する、
    ことを特徴とする分散型データベースシステム。
  12. 請求項2に記載の分散型データベースシステムであって、
    前記D−CRX格納ノード決定部は、前記NIDの関数を分散キーとして用いたコンシステント・ハッシュ法により前記D−CRXのデータの格納先となる一のスレーブノードを決定し、
    前記D−CRS格納ノード決定部は、前記RIDの関数を分散キーとして用いたコンシステント・ハッシュ法により前記D−CRSのデータの格納先となる一のスレーブノードを決定する、
    ことを特徴とする分散型データベースシステム。
  13. 請求項3に記載の分散型データベースシステムであって、
    前記D−RIX格納ノード決定部は、前記NIDの関数を分散キーとして用いたコンシステント・ハッシュ法により前記D−RIXのデータの格納先となる一のスレーブノードを決定する、
    ことを特徴とする分散型データベースシステム。
JP2011040257A 2011-02-25 2011-02-25 分散型データベースシステム Active JP5727258B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2011040257A JP5727258B2 (ja) 2011-02-25 2011-02-25 分散型データベースシステム
EP12749629.7A EP2680151A4 (en) 2011-02-25 2012-02-23 DISTRIBUTED DATABASE SYSTEM AND DATA STRUCTURE FOR A DISTRIBUTED DATABASE
CN2012800097453A CN103384878A (zh) 2011-02-25 2012-02-23 分布式数据库系统和分布式数据库的数据结构
PCT/JP2012/054432 WO2012115194A1 (ja) 2011-02-25 2012-02-23 分散型データベースシステムおよび分散型データベースのデータ構造
US14/001,284 US20140074774A1 (en) 2011-02-25 2012-02-23 Distributed data base system and data structure for distributed data base

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011040257A JP5727258B2 (ja) 2011-02-25 2011-02-25 分散型データベースシステム

Publications (2)

Publication Number Publication Date
JP2012178025A JP2012178025A (ja) 2012-09-13
JP5727258B2 true JP5727258B2 (ja) 2015-06-03

Family

ID=46720968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011040257A Active JP5727258B2 (ja) 2011-02-25 2011-02-25 分散型データベースシステム

Country Status (5)

Country Link
US (1) US20140074774A1 (ja)
EP (1) EP2680151A4 (ja)
JP (1) JP5727258B2 (ja)
CN (1) CN103384878A (ja)
WO (1) WO2012115194A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2563678A1 (en) * 2004-04-19 2005-11-03 Strategic Science & Technologies, Llc Beneficial effects of increasing local blood flow
WO2013157099A1 (ja) * 2012-04-18 2013-10-24 株式会社Murakumo データベースの管理方法、データベースシステム、及び、プログラム
JP5907902B2 (ja) * 2013-01-21 2016-04-26 日本電信電話株式会社 秘密計算による表の等結合システム、方法
US9681003B1 (en) * 2013-03-14 2017-06-13 Aeris Communications, Inc. Method and system for managing device status and activity history using big data storage
WO2015027425A1 (zh) 2013-08-29 2015-03-05 华为技术有限公司 存储数据的方法和装置
KR101642072B1 (ko) * 2014-05-08 2016-07-22 주식회사 알티베이스 하이브리드스토리지장치 및 방법
GB2532469A (en) 2014-11-20 2016-05-25 Ibm Self-optimizing table distribution with transparent replica cache
CN104794162B (zh) * 2015-03-25 2018-02-23 中国人民大学 实时数据存储与查询方法
CN105282045B (zh) * 2015-11-17 2018-11-16 高新兴科技集团股份有限公司 一种基于一致性哈希算法的分布式计算和储存方法
JP6697158B2 (ja) 2016-06-10 2020-05-20 富士通株式会社 情報管理プログラム、情報管理方法、及び情報管理装置
JP6253725B1 (ja) * 2016-07-12 2017-12-27 株式会社東芝 データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラム
CN106294538B (zh) 2016-07-19 2019-07-16 浙江大华技术股份有限公司 一种从节点中的数据记录的迁移方法及装置
CN106940715B (zh) * 2017-03-09 2019-11-15 星环信息科技(上海)有限公司 一种基于索引表的查询的方法及设备
JP6397105B2 (ja) * 2017-10-05 2018-09-26 華為技術有限公司Huawei Technologies Co.,Ltd. データを記憶する方法及び装置
US11030204B2 (en) 2018-05-23 2021-06-08 Microsoft Technology Licensing, Llc Scale out data storage and query filtering using data pools

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471617A (en) * 1991-06-24 1995-11-28 Compaq Computer Corporation Computer management system and associated management information base
SE515344C2 (sv) * 1994-02-08 2001-07-16 Ericsson Telefon Ab L M Distribuerat databassystem
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US5757924A (en) * 1995-09-18 1998-05-26 Digital Secured Networks Techolognies, Inc. Network security device which performs MAC address translation without affecting the IP address
US5913217A (en) * 1997-06-30 1999-06-15 Microsoft Corporation Generating and compressing universally unique identifiers (UUIDs) using counter having high-order bit to low-order bit
US6167427A (en) * 1997-11-28 2000-12-26 Lucent Technologies Inc. Replication service system and method for directing the replication of information servers based on selected plurality of servers load
JP4081236B2 (ja) * 2000-12-26 2008-04-23 ディジタル・ワークス株式会社 データベースの処理方法
JP2003157249A (ja) * 2001-11-21 2003-05-30 Degital Works Kk 文書の圧縮格納方法
US7480658B2 (en) * 2003-07-16 2009-01-20 Joltid Ltd. Distributed database system and method having nodes co-ordinated in a decentralized manner
US20060036633A1 (en) * 2004-08-11 2006-02-16 Oracle International Corporation System for indexing ontology-based semantic matching operators in a relational database system
WO2006090367A2 (en) * 2005-02-24 2006-08-31 Xeround Systems Ltd. Method and apparatus for distributed data management in a switching network
JP4573710B2 (ja) 2005-06-16 2010-11-04 日本電信電話株式会社 データベース管理装置、データベース管理方法及びデータベース管理プログラム
US7840774B2 (en) * 2005-09-09 2010-11-23 International Business Machines Corporation Compressibility checking avoidance
JP4581962B2 (ja) * 2005-10-27 2010-11-17 株式会社日立製作所 情報検索システムとインデクス管理方法およびプログラム
US20070136476A1 (en) * 2005-12-12 2007-06-14 Isaac Rubinstein Controlled peer-to-peer network
US9325802B2 (en) * 2009-07-16 2016-04-26 Microsoft Technology Licensing, Llc Hierarchical scale unit values for storing instances of data among nodes of a distributed store
CN101916261B (zh) * 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
US9805108B2 (en) * 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US8843441B1 (en) * 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
US20150169656A1 (en) * 2012-08-23 2015-06-18 Digital Works, Inc. Distributed database system

Also Published As

Publication number Publication date
CN103384878A (zh) 2013-11-06
US20140074774A1 (en) 2014-03-13
WO2012115194A1 (ja) 2012-08-30
JP2012178025A (ja) 2012-09-13
EP2680151A1 (en) 2014-01-01
EP2680151A4 (en) 2015-11-25

Similar Documents

Publication Publication Date Title
JP5727258B2 (ja) 分散型データベースシステム
JP5238915B1 (ja) 分散型データベースシステム
US8943059B2 (en) Systems and methods for merging source records in accordance with survivorship rules
JP5719323B2 (ja) 分散処理システム、ディスパッチャおよび分散処理管理装置
CN107004013A (zh) 用于使用基于硬件的处理来提供分布式树遍历的系统和方法
JPWO2010098034A1 (ja) 分散データベース管理システムおよび分散データベース管理方法
CN106372136A (zh) 分布式缓存系统、方法及存储介质
JP5825122B2 (ja) 生成プログラム、生成方法、および生成システム
CN103514229A (zh) 用于在分布式数据库系统中处理数据库数据的方法和装置
WO2016191995A1 (zh) 一种分布式数据库中关联表分区的方法和设备
JP2004110219A (ja) データ処理システム及びジョイン処理方法
CN104281980B (zh) 基于分布式计算的火力发电机组远程诊断方法及系统
US20200341965A1 (en) Data Tokenization System Maintaining Data Integrity
Chrysafis et al. Foundationdb record layer: A multi-tenant structured datastore
JP6111186B2 (ja) 分散情報連携システムとそのデータ操作方法及びプログラム
JP5608633B2 (ja) データ利用システム
JPWO2013136442A1 (ja) データ処理システム
CN103377236B (zh) 一种用于分布式数据库的连接查询方法及系统
JP5464017B2 (ja) 分散メモリデータベースシステム、データベースサーバ、データ処理方法およびそのプログラム
Cheng et al. FastMFDs: a fast, efficient algorithm for mining minimal functional dependencies from large-scale distributed data with Spark
JP6280270B1 (ja) 内部取引判定装置、内部取引判定方法および内部取引判定プログラム
JP2018190383A (ja) 内部取引判定装置、内部取引判定方法および内部取引判定プログラム
JP6600368B2 (ja) データ変換装置、データ変換方法およびデータ変換プログラム
JP6280271B1 (ja) データ変換装置、データ変換方法およびデータ変換プログラム
JP6801195B2 (ja) 検索処理方法、検索処理装置及び検索処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131206

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20140529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150218

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: 20150331

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150402

R150 Certificate of patent or registration of utility model

Ref document number: 5727258

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

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

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250