(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6127206
(24)【登録日】2017年4月14日
(45)【発行日】2017年5月10日
(54)【発明の名称】分散記憶システムにおけるセカンダリインデックスを確立するための方法、装置及びシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20170424BHJP
G06F 17/30 20060101ALI20170424BHJP
【FI】
G06F12/00 520A
G06F12/00 513J
G06F17/30 110C
【請求項の数】17
【全頁数】17
(21)【出願番号】特願2016-510919(P2016-510919)
(86)(22)【出願日】2014年2月13日
(65)【公表番号】特表2016-522928(P2016-522928A)
(43)【公表日】2016年8月4日
(86)【国際出願番号】CN2014072044
(87)【国際公開番号】WO2014180178
(87)【国際公開日】20141113
【審査請求日】2015年10月28日
(31)【優先権主張番号】IN521/KOL/2013
(32)【優先日】2013年5月7日
(33)【優先権主張国】IN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ジョン,アヌープ サム
(72)【発明者】
【氏名】ヴァスデヴァン,ラムクリシュナ エス.
(72)【発明者】
【氏名】ビ,ジエシャン
(72)【発明者】
【氏名】ラストギ,プリヤンク アショク
(72)【発明者】
【氏名】チンタグントラ,ラジェシュバブ
【審査官】
月野 洋一郎
(56)【参考文献】
【文献】
米国特許出願公開第2013/0086353(US,A1)
【文献】
特開平05−334165(JP,A)
【文献】
特開平07−129450(JP,A)
【文献】
米国特許出願公開第2013/0103694(US,A1)
【文献】
米国特許第08396862(US,B1)
【文献】
米国特許出願公開第2010/0106734(US,A1)
【文献】
米国特許出願公開第2004/0167927(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
分散記憶システムにおけるセカンダリインデックスを確立するためコンピュータによって実行される方法であって、
ユーザクライアントにより送信されたユーザデータを受信するステップであって、前記ユーザデータはキー部分及び値部分を含む、受信するステップと、
前記ユーザデータに従ってユーザテーブルを決定するステップであって、前記ユーザテーブルは複数のユーザチャイルドテーブルを含む、決定するステップと、
前記ユーザデータを前記ユーザテーブルに書き込むステップと、
前記ユーザデータに従ってインデックスデータを生成するステップと、
前記ユーザテーブルに対応するインデックステーブルに前記インデックスデータを書き込むステップであって、前記ユーザテーブル及び前記インデックステーブルは、前記分散記憶システムの1つのノードにおいて確立され、一対一方式により結合される、書き込むステップと、
を有し、
前記ユーザデータに従ってインデックスデータを生成するステップは、
前記インデックスデータの範囲キー及び前記インデックスデータの特定のキーを決定するステップであって、前記インデックスデータの範囲キーは、前記ユーザデータの範囲キー、前記ユーザチャイルドテーブルのスタートキー又は前記ユーザチャイルドテーブルのエンドキーを有し、前記インデックスデータの特定のキーは、前記ユーザデータの値部分及び前記ユーザデータのキー部分を有する、決定するステップと、
前記インデックスデータの範囲キー及び前記インデックスデータの特定のキーに従って前記インデックスデータを生成するステップと、
を有する方法。
【請求項2】
前記ユーザテーブルのキー範囲と前記インデックステーブルのキー範囲とは同じである、請求項1記載の方法。
【請求項3】
前記インデックステーブルは、複数のインデックスチャイルドテーブルを有し、
前記複数のユーザチャイルドテーブルの数は前記複数のインデックスチャイルドテーブルの数と同じであり、
各ユーザチャイルドテーブルのキー範囲は対応するインデックスチャイルドテーブルのキー範囲と同じである、請求項2記載の方法。
【請求項4】
前記ユーザデータを前記ユーザテーブルに書き込むステップは、
前記ユーザデータに従ってユーザチャイルドテーブルを決定するステップと、
前記ユーザデータを前記ユーザチャイルドテーブルに書き込むステップと、
を有し、
前記インデックステーブルに前記インデックスデータを書き込むステップは、
前記インデックスデータを前記ユーザチャイルドテーブルに対応するインデックスチャイルドテーブルに書き込むステップを有する、請求項3記載の方法。
【請求項5】
前記インデックスデータに採用される前記ユーザデータの値部分は、インデックスカラムの値に関連する、請求項1乃至4何れか一項記載の方法。
【請求項6】
前記インデックスデータは更に、前記ユーザチャイルドテーブルにおいて前記インデックスカラムの名前を有する、請求項5記載の方法。
【請求項7】
前記インデックスカラムの名前、前記インデックスカラムの値及び前記ユーザデータのキー部分は、前記インデックスデータにおいて順次配置される、請求項6記載の方法。
【請求項8】
前記インデックスデータの範囲キーを決定するステップは、
前記ユーザデータの範囲キー、前記ユーザチャイルドテーブルのスタートキー又は前記ユーザチャイルドテーブルのエンドキーを抽出するステップを有する、請求項1乃至7何れか一項記載の方法。
【請求項9】
セカンダリインデックス確立装置であって、
ユーザクライアントにより送信されたユーザデータを受信するよう構成される受信ユニットであって、前記ユーザデータはキー部分及び値部分を含む、受信ユニットと、
前記ユーザデータに従ってユーザテーブルを決定するよう構成される決定ユニットであって、前記ユーザテーブルは複数のユーザチャイルドテーブルを含む、決定ユニットと、
前記ユーザデータを前記ユーザテーブルに書き込むよう構成される第1書き込みユニットと、
前記ユーザデータに従ってインデックスデータを生成するよう構成される生成ユニットと、
前記ユーザテーブルに対応するインデックステーブルに前記インデックスデータを書き込むよう構成される第2書き込みユニットであって、前記ユーザテーブル及び前記インデックステーブルは、分散記憶システムの1つのノードにおいて確立され、一対一方式で結合される、第2書き込みユニットと、
を有し、
前記生成ユニットは、
前記インデックスデータの範囲キー及び前記インデックスデータの特定のキーを決定するよう構成される第2決定モジュールであって、前記インデックスデータの範囲キーは、前記ユーザデータの範囲キー、前記ユーザチャイルドテーブルのスタートキー又は前記ユーザチャイルドテーブルのエンドキーを有し、前記インデックスデータの特定のキーは、前記ユーザデータの値部分及び前記ユーザデータのキー部分を有する、第2決定モジュールと、
前記インデックスデータの範囲キー及び前記インデックスデータの特定のキーに従って前記インデックスデータを生成するよう構成される生成モジュールと、
を有するセカンダリインデックス確立装置。
【請求項10】
前記ユーザテーブルのキー範囲及び前記インデックステーブルのキー範囲は同じである、請求項9記載の装置。
【請求項11】
前記インデックステーブルは複数のインデックスチャイルドテーブルを有し、
前記複数のユーザチャイルドテーブルの数は、前記複数のインデックスチャイルドテーブルの数と同一であり、各ユーザチャイルドテーブルのキー範囲は、対応するインデックスチャイルドテーブルのキー範囲と同一である、請求項10記載の装置。
【請求項12】
前記第1書き込みユニットは、
前記ユーザデータに従ってユーザチャイルドテーブルを決定するよう構成される第1決定モジュールと、
前記ユーザデータを前記ユーザチャイルドテーブルに書き込むよう構成される第1書き込みモジュールと、
を有し、
前記第2書き込みユニットは、前記ユーザチャイルドテーブルに対応するインデックスチャイルドテーブルに前記インデックスデータを書き込むよう構成される第2書き込みモジュールを有する、請求項11記載の装置。
【請求項13】
前記インデックスデータにおいて採用される前記ユーザデータの値部分は、インデックスカラムの値に関連する、請求項9乃至12何れか一項記載の装置。
【請求項14】
前記インデックスデータは更に、前記ユーザチャイルドテーブルにおけるインデックスカラムの名前を有する、請求項13記載の装置。
【請求項15】
前記インデックスカラムの名前、前記インデックスカラムの値及び前記ユーザデータのキー部分は、前記インデックスデータにおいて順次配置される、請求項14記載の装置。
【請求項16】
前記第2決定モジュールは、
前記ユーザデータの範囲キー、前記ユーザチャイルドテーブルのスタートキー又は前記ユーザチャイルドテーブルのエンドキーを抽出するよう構成される、請求項9乃至15何れか一項記載の装置。
【請求項17】
分散記憶システムであって、
少なくとも1つの領域サーバであって、前記領域サーバのそれぞれは、少なくとも1つのユーザテーブル及び前記少なくとも1つのユーザテーブルに対応する少なくとも1つのインデックステーブルを記憶し、前記ユーザテーブルのそれぞれの範囲キーは、前記ユーザテーブルに対応するインデックステーブルの範囲キーと同一である、領域サーバと、
請求項9乃至16何れか一項記載のセカンダリインデックス確立装置と、
を有する分散記憶システム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、分散記憶システムに関し、特に分散記憶システムにおいてセカンダリインデックスを確立するための方法、装置及びシステムに関する。
【背景技術】
【0002】
分散記憶システムの大多数において、Key−Valueタイプの記憶方法が受け入れられてきており、すなわち、記憶対象の実ユーザデータは値部分に記憶され、それから、Keyは対応するValueをサーチするのに構成される。
【0003】
例えば、分散記憶システムがオンライン取引システムにデータを記憶するのに利用され、Key及びValueが以下のように設計できると仮定する。
【0004】
Key:ユーザコード+取引時間
Value:取引のための詳細情報
実ユーザデータは、分散記憶システムに記憶されるとき、同一のユーザコードのデータが隣接して記憶されるように辞書の順序に自然に順序づけされる。“xxxx”としてのユーザコード及びある期間としての取引時間を有する全てのレコードを取得するため、分散記憶システムにおけるインデックス方式は、所望のデータを迅速にサーチするのに利用可能である。
【0005】
分散記憶システムでは、テーブルのコンセプトが提供される。ユーザがデータを分散記憶システムに書き込むことを所望する場合、彼/彼女は、最初に彼/彼女の自らの要求に従ってデータテーブルを構築すべきである。しかしながら、大量のデータが1つのデータテーブルに含まれる可能性がある。分散記憶システムにおいて分散化された記憶を実現するため、主要な方法は、データテーブルを横方向に切断することによって複数のチャイルドテーブルを生成し、複数のチャイルドテーブルを管理及び維持することである。チャイルドテーブルは以下のように定義できる。
1.チャイルドテーブルは、複数の連続する行のクラスタであり、各チャイルドテーブルは、キー値範囲を有する。
2.データベーステーブルは、通常は1以上のチャイルドテーブルから構成される。
3.チャイルドテーブルは、分散化された記憶及びロードバランシングの最小単位である。
4.ある程度まで増加すると、チャイルドテーブルは2つのチャイルドテーブルに自動的に分割する。
【0006】
図1はデータテーブルの概略図であり、
図1に示されるように、データテーブルはM個のチャイルドテーブルから構成され、各チャイルドテーブルはキー値範囲を占める。ユーザにより生成される各キー値が対応するキーは、1つのチャイルドテーブルのキー値範囲のみに属しうる。異なるチャイルドテーブルのキー値範囲は共通部分を有さない。
【0007】
各チャイルドテーブルについて、それが割り当てられる必要があり、管理対象の1つの領域サーバのみに一意的に割り当てることができる。領域サーバは、分散記憶システムのクラスタのノードであり、それは通常は物理的なサーバである。
【0008】
図2は分散記憶システムのクラスタの概略図であり、
図2に示されるように、分散記憶システムのクラスタは、3つの領域サーバ、第1領域サーバに記憶される3つのチャイルドテーブル(チャイルドテーブル1、チャイルドテーブル4及びチャイルドテーブル9)、第2領域サーバに記憶される3つのチャイルドテーブル(チャイルドテーブル2、チャイルドテーブル6及びチャイルドテーブル7)、及び第3領域サーバに記憶される3つのチャイルドテーブル(チャイルドテーブル3、チャイルドテーブル5及びチャイルドテーブル8)を有する。
【0009】
分散記憶システムでは、ユーザデータの全てはキー値の形態によって基礎となるファイルシステムに記憶される。ユーザデータを読み出すため、1つの方法はサーチを正確に実行するため正確なキーを指定することであり、他の方法はデータスキャンを曖昧に実行するためキーの前の部分を指定することである。しかしながら、これら2つの方法は共に、キーの値に基づき、ユーザが値の状態に基づきユーザデータをサーチすることを所望するとき、レコードを検出するのにデータテーブル全体をサーチすることが必要とされ、パフォーマンスは大変不良である。
【0010】
この問題を解決するため、セカンダリインデックス方式が提供される。
図3は従来のセカンダリインデックス方式の方式の概略図であり、
図3に示されるように、セカンダリインデックス方式は、分散記憶システムのクライアントAPI(Application Programming Interface)パッケージに基づく。セカンダリインデックス方式では、別のインデックステーブルがインデックス値を記憶するのに利用され、ユーザがデータを書き込むとき、2つのタイプのデータがパッケージングされたクライアントAPIを利用することによって生成可能であり、一方はユーザテーブルに書き込まれるユーザデータであり、他方はインデックステーブルに書き込まれるインデックスデータである。
【0011】
本発明の実現形態では、発明者は、従来のセカンダリインデックス方式がクライアントAPIにパッケージングされているため、不良なパフォーマンスを導くことを発見した。他のいくつかの改良された方式が存在するが、データを書き込むため、2つのリモートライト処理がクライアントとリモート分散記憶システムとの間で送信される必要があり、ユーザテーブルとインデックステーブルとを書き込むことが必要とされ、ライトデータのパフォーマンスを向上させることは基本的にはできない。
【発明の概要】
【0012】
背景技術で指摘された問題点に鑑み、本発明が提案される。
【0013】
本発明の実施例の主要な課題は、ネットワークリクエストの数を減少させるため、分散記憶システムにおいてセカンダリインデックスを確立するための方法、装置及びシステムを提供することである。
【0014】
本発明の実施例の態様によると、分散記憶システムにおけるセカンダリインデックスを確立する方法であって、
ユーザクライアントにより送信されたユーザデータを受信するステップであって、前記ユーザデータはキー部分及び値部分を含む、受信するステップと、
前記ユーザデータに従ってユーザテーブルを決定するステップと、
前記ユーザデータを前記ユーザテーブルに書き込むステップと、
前記ユーザデータに従ってインデックスデータを生成するステップと、
前記ユーザテーブルに対応するインデックステーブルに前記インデックスデータを書き込むステップであって、前記ユーザテーブル及び前記インデックステーブルは、前記分散記憶システムの1つのノードにおいて確立され、一対一方式により結合される、書き込むステップと、
を有する方法が提供される。
【0015】
本発明の実施例の他の態様によると、分散記憶システムにおいてセカンダリインデックスを確立する装置であって、
ユーザクライアントにより送信されたユーザデータを受信するよう構成される受信ユニットであって、前記ユーザデータはキー部分及び値部分を含む、受信ユニットと、
前記ユーザデータに従ってユーザテーブルを決定するよう構成される決定ユニットと、
前記ユーザデータを前記ユーザテーブルに書き込むよう構成される第1書き込みユニットと、
前記ユーザデータに従ってインデックスデータを生成するよう構成される生成ユニットと、
前記ユーザテーブルに対応するインデックステーブルに前記インデックスデータを書き込むよう構成される第2書き込みユニットであって、前記ユーザテーブル及び前記インデックステーブルは、分散記憶システムの1つのノードにおいて確立され、一対一方式で結合される、第2書き込みユニットと、
を有する装置が提供される。
【0016】
本発明の実施例の更なる他の態様によると、分散記憶システムであって、少なくとも1つの領域サーバであって、前記領域サーバのそれぞれは、少なくとも1つのユーザテーブル及び前記少なくとも1つのユーザテーブルに対応する少なくとも1つのインデックステーブルを記憶し、前記ユーザテーブルのそれぞれの範囲キーは、前記ユーザテーブルに対応するインデックステーブルのものと同一である、領域サーバと、
上述されたセカンダリインデックス確立装置と、
を有する分散記憶システムが提供される。
【0017】
本発明の実施例の効果は、ユーザチャイルドテーブル及びインデックスチャイルドテーブルを結合することによって、ノードにわたる2つのリモート書き込み処理が1つに低減され、ネットワークリクエストの数が大きく低減し、これに従ってパフォーマンスが向上する点に存在する。
【0018】
本発明の特定の実施例は、以下の説明及び添付された図面を参照して以下において詳細に説明され、本発明の原理を利用する方式が指摘される。本発明の実現形態は範囲においてそれに限定されないことが理解されるべきである。むしろ、本発明は、添付した請求項の精神及び条件の範囲内に属する全ての変更、修正及び等価を含む。
【0019】
一実施例に関して説明及び/又は図示される特徴は、1以上の他の実施例において同じ方法又は同様の方法で、及び/又は他の実施例の特徴に関連して若しくは代わりに利用されてもよい。
【0020】
本明細書において利用される際の“有する”という用語は、述べられた特徴、整数、ステップ又はコンポーネントの存在を示すのに用いられるが、1以上の他の特徴、整数、ステップ、コンポーネント又はこれらのグループの存在又は追加を排除するものでないことが強調されるべきである。
【図面の簡単な説明】
【0021】
本発明の更なる理解を提供するため図面が含まれ、それは明細書の一部を構成し、本発明の好適な実施例を示し、説明と共に本発明の原理を説明するのに利用される。同一の要素は図面を通じて同一の参照番号により表される。
【
図2】
図2は、分散記憶システムのクラスタの概略図である。
【
図3】
図3は、従来のセカンダリインデックス方式の方式の概略図である。
【
図4】
図4は、本発明の実施例による分散記憶システムの概略図である。
【
図5】
図5は、本発明の実施例によるセカンダリインデックスを確立するための方法のフローチャートである。
【
図6a】
図6aは、ユーザチャイルドテーブルの実施例の概略図である。
【
図6b】
図6bは、インデックスデータテーブルの実施例の概略図である。
【
図6c】
図6cは、インデックスデータテーブルの他の実施例の概略図である。
【
図7】
図7は、1つの領域サーバに記憶されたユーザチャイルドテーブル及びそれの対応するインデックスチャイルドテーブルの概略図である。
【
図8】
図8は、セカンダリインデックス確立装置の概略図である。
【発明を実施するための形態】
【0022】
本発明の実施例の上記及び他の特徴は、図面を参照して以下の説明を通じて明らかになる。これらの実施例は、単なる例示であり、本発明を限定することを意図するものでない。当業者による本発明の原理及び実施例の容易な理解のため、本発明の実施例の説明は、具体例としてオンライン取引システムを取り上げて提供されるが、本発明の実施例はこのようなシステムに限定されないことが理解されるべきである。
【0023】
図4は本発明の実施例による分散記憶システムの概略図であり、
図4に示されるように、分散記憶システムは2つの領域サーバ、すなわち、領域サーバ41及び領域サーバ42を有する。各領域サーバは、ユーザテーブル及びインデックステーブルを有する。1つの領域サーバにおいて確立されるユーザテーブル及びインデックステーブルは、一対一の方式により結合され、すなわち、ユーザテーブルのキー範囲とインデックステーブルのものとは同じである。各ユーザテーブルは、複数のユーザチャイルドテーブルに分割されてもよく、各インデックステーブルは、複数のインデックスチャイルドテーブルに分割されてもよい。そして、複数のインデックスチャイルドテーブルの1つは、複数のユーザチャイルドテーブルの1つに対応し、1つの領域サーバにおける複数のユーザチャイルドテーブルの数は、同じ領域サーバにおける複数のインデックスチャイルドテーブルの数と同一である。1つの領域サーバにおいて確立されるユーザチャイルドテーブル及びインデックスチャイルドテーブルは一対一の方式で結合され、すなわち、各ユーザチャイルドテーブルのキー範囲は、それの対応するインデックスチャイルドテーブルのものと同一である。本発明の実施例では、ユーザテーブル411及びインデックステーブル412は領域サーバ41において確立され、ユーザテーブル421及びインデックステーブル422は領域サーバ42において確立される。
【0024】
ユーザテーブル411がユーザチャイルドテーブル4111及びユーザチャイルドテーブル4112を有し、インデックステーブル412がインデックスチャイルドテーブル4121及びインデックスチャイルドテーブル4122を有する場合、本発明の実施例では、ユーザチャイルドテーブル4111及びインデックスチャイルドテーブル4121が一対一方式により結合され、すなわち、ユーザチャイルドテーブル4111のキー範囲とインデックスチャイルドテーブル4121のものとは同じである。同様に、ユーザチャイルドテーブル4112及びインデックスチャイルドテーブル4122は一対一方式により結合される。
【0025】
他方、ユーザテーブル412はユーザチャイルドテーブル4211及びユーザチャイルドテーブル4212を有し、インデックステーブル422はインデックスチャイルドテーブル4221及びインデックスチャイルドテーブル4222を有し、同様に、本発明の実施例では、ユーザチャイルドテーブル4211及びインデックスチャイルドテーブル4221は一対一方式により結合され、ユーザチャイルドテーブル4212及びインデックスチャイルドテーブル4222は一対一方式により結合される。
【0026】
本発明の実施例では、ユーザテーブル及びインデックステーブルは、同じノード(領域サーバ)において確立され、一対一方式により結合され、ユーザデータがユーザにより書き込まれると、ユーザサイドは、ユーザテーブルに関連するデータのみを送信する必要があり、インデックステーブルに関連するデータを送信する必要はなく、すなわち、ユーザテーブルを書き込む一方の処理しか必要でなく、インデックステーブルを書き込む他方の処理は回避され、インデックステーブルのデータはプロセス内の呼び出しにより書き込み可能であり、データ書き込み段階のパフォーマンスを向上させることが可能であり、データ書き込みパフォーマンスの要求が高いユーザシーンにとって特に適している。
【0027】
本発明の好適な実施例は、図面を参照して以下に説明される。
【0028】
実施例1
本発明の実施例は、分散記憶システムにおけるセカンダリインデックスを確立する方法を提供する。
図5は当該方法のフローチャートであり、
図5を参照して、当該方法は、
ステップ501:ユーザクライアントにより送信されたユーザデータを受信するステップであって、ユーザデータはキー部分及び値部分を含む、受信するステップと、
ステップ502:ユーザデータに従ってユーザテーブルを決定するステップと、
ステップ503:ユーザデータをユーザテーブルに書き込むステップと、
ステップ504:ユーザデータに従ってインデックスデータを生成するステップと、
ステップ505:ユーザテーブルに対応するインデックステーブルにインデックスデータを書き込むステップであって、ユーザテーブル及びインデックステーブルは、分散記憶システムの1つのノードにおいて確立され、一対一方式により結合される、書き込むステップと、
を有する。
【0029】
ステップ501において、各テーブルは、スタートキーからエンドキーまでのキー範囲を有し、ユーザデータの範囲キーは、通常はテーブルのスタートキーからエンドキーまでの範囲内にある。一般に、本発明の実施例では、ユーザデータはキー部分及び値部分を含み、ユーザデータのキー部分は2つの部分に分割されてもよく、一方は範囲キーであり、他方は特定のキーであり、範囲キーはスタートキーからエンドキーまでの何れかのキーに対応し、ユーザデータが何れのユーザテーブルに属するか示すのに利用され、特定のキーは、ユーザデータを一意的に示すのに利用される。従って、ユーザデータのキー部分の範囲キーによると、分散記憶システムは、何れのユーザテーブルがユーザデータを記憶するのに必要とされるか決定できる。
【0030】
ステップ503において、ユーザテーブルを決定した後、分散記憶システムは、ユーザデータを書き込む処理を実行可能であり、ユーザデータを書き込む方法は従来技術と同じであり、さらには説明されない。
【0031】
ステップ504において、分散記憶システムは、プロセス内呼び出しによって達成可能なユーザデータを利用することによってインデックスデータを生成可能であり、従って、ユーザクライアントからのインデックスデータに対する分散記憶システムの他の処理リクエストが回避可能であり、分散記憶システムによるインデックスデータを生成する方法は、ネットワークリソースを節約することが可能であり、従来のユーザクライアントAPIパッケージング方式と比較してより効率的にできる。
【0032】
生成されたインデックスデータはキー部分を有し、インデックスデータのキー部分は2つの部分、範囲キー及び特定のキーを有し、インデックスデータの範囲キーは、インデックスデータが属するインデックステーブルを示すのに利用され、インデックスデータの特定のキーは、インデックスデータを一意的に示すのに利用される。本発明の実施例では、ユーザテーブルのキー範囲とインデックステーブルのものとが同じであるため、インデックスデータの範囲キーはユーザデータの範囲キーに対応するか、インデックスデータの範囲キーはユーザテーブルのスタートキーを採用してもよく、又はインデックスデータの範囲キーはユーザテーブルのエンドキーを採用してもよい。
【0033】
ステップ504の具体的な実施例では、分散記憶システムは、インデックスデータのキー部分の範囲キーとしてユーザデータのキー部分の範囲キーを抽出する。詳細が以下に説明される。
【0034】
ステップ505において、ユーザテーブル及びインデックステーブルは一対一の関係を有するため、分散記憶システムは、ユーザテーブルに対応するインデックステーブルにインデックスデータを書き込むことができる。
【0035】
各ユーザテーブルは複数のユーザチャイルドテーブルに分割されてもよく、各インデックステーブルは複数のインデックスチャイルドテーブルに分割されてもよい。ステップ502において、分散記憶システムは更に、ユーザデータに従ってユーザチャイルドテーブルを決定し、ステップ504において、ユーザデータをユーザチャイルドテーブルに書き込み、ステップ505において、ユーザチャイルドテーブルに対応するインデックスチャイルドテーブルにインデックスデータを書き込む。
【0036】
図6aはユーザチャイルドテーブルの実施例の概略図であり、実施例では、あるユーザデータがユーザチャイルドテーブルに記憶され、ユーザデータと同様に、ユーザチャイルドテーブルもまたキー部分及び値部分を有し、ユーザチャイルドテーブルのキー部分はユーザデータのキー部分を記憶するのに利用され、ユーザチャイルドテーブルの値部分はユーザデータの値部分を記憶するのに利用される。
図6aに示されるように、ユーザチャイルドテーブルのキー部分は“キー”と名付けられた1つのカラムを有し、ユーザチャイルドテーブルの値部分は、“売り手コード”と名付けられた1つのカラムを有し、実施例はこれに限定されず、他の実施例では、ユーザチャイルドテーブルの値部分はまた複数のカラムを有することが可能であることが理解されるべきである。
図6aに示されるように、ユーザデータはキー部分及び値部分を含み、実施例では、ユーザデータのキー部分は“buyera1201207011000”であり、ユーザデータの値部分は“sellerc1”である。ユーザデータのキー部分は2つの部分を有し、一方は範囲キーであり、他方は特定のキーであり、
図6aに示される実施例では、範囲キーは“buyera”であり、特定のキーは“201207011000”である。
図6bは、インデックスチャイルドテーブルの実施例の概略図であり、実施例では、インデックスチャイルドテーブルは
図6aに示されるユーザチャイルドテーブルに対応し、それは、インデックスチャイルドテーブルのキー範囲がユーザチャイルドテーブルのものに同一であることを意味する。
図6bに示されるように、インデックスデータは、
図6aに示されるようなユーザチャイルドテーブルに記憶されるユーザデータに従って生成される。
図6bに示されるように、インデックスデータもまたキー部分及び値部分を含み、値部分はヌルであり、インデックスデータのキー部分は範囲キー及び特定のキーを有する。インデックスデータの範囲キーは“buyera”であり、それは、
図6aにおけるユーザテーブルのスタートキーであるか、又は
図6aにおけるユーザデータの範囲キーである。さらに、インデックスデータの特定のキーは“sellerc1 buyera1201207011000”であり、ここで、“sellerc1”はユーザデータの値部分におけるインデックスカラムの値であり、“buyera1201207011000”はユーザデータのキー部分である。
図6bに示されるように、本実施例におけるインデックスデータのキー部分は、“buyera sellerc1 buyera1201207011000”である。
【0037】
他の実施例では、ユーザチャイルドテーブルのインデックスカラムのカラム名もまた、
図6cに示されるように、インデックスデータに含めることが可能であり、
図6bの実施例と異なって、カラムの名前は、“buyera”と“sellerc1”との間に配置されるインデックスデータに含まれ、本実施例におけるインデックスデータのキー部分は、“buyera sellercode sellerc1 buyera1201207011000”である。
【0038】
本発明の一実施例では、ユーザデータの範囲キー(又はユーザチャイルドテーブルのスタートキー若しくはユーザチャイルドテーブルのエンドキー)、ユーザデータの値部分及びユーザデータのキー部分は、インデックスデータにおいて順次配置される。本発明の他の実施例では、ユーザデータの値部分はインデックスカラムの値を含む。
【0039】
図6b及び6cに示される実施例では、インデックスチャイルドテーブルの値部分はエンプティであり、すなわち、インデックスデータはキー部分しか含まないが、実施例はこれに限定されず、他の実施例では、インデックスデータの値部分が実際の要求に従って他の有用な情報により充填可能であることが理解されるべきである。
【0040】
本発明の一実施例では、
図4に示されるように、ユーザチャイルドテーブル及びユーザチャイルドテーブルに対応するインデックスチャイルドテーブルは、同じ領域サーバに記憶される。
【0041】
本発明の実施例の容易な理解のため、図面を参照した詳細な説明が以下に与えられる。
【0042】
ユーザテーブルにおいて3つのユーザチャイルドテーブルがあり、各ユーザチャイルドテーブルのキー範囲が、
ユーザチャイルドテーブル1:[a,b);
ユーザチャイルドテーブル2:[b,c);
ユーザチャイルドテーブル3:[c,d)
であると仮定する。
【0043】
従って、インデックステーブルには3つのインデックスチャイルドテーブルがあり、各インデックスチャイルドテーブルのキー範囲は、インデックスチャイルドテーブルが対応するユーザチャイルドテーブルのものと同じである。
インデックスチャイルドテーブル1:[a,b);
インデックスチャイルドテーブル2:[b,c);
インデックスチャイルドテーブル3:[c,d)
すなわち、ユーザチャイルドテーブル1はインデックスチャイルドテーブル1に対応し、ユーザチャイルドテーブル2はインデックスチャイルドテーブル2に対応し、ユーザチャイルドテーブル3はインデックスチャイルドテーブル3に対応する。
【0044】
上述されるように、全てのデータは辞書の順序により分散記憶システムに記憶されているため、キー“a0001”のユーザデータがユーザにより書き込まれた場合、ユーザデータはユーザチャイルドテーブル1の[a,b)のキー範囲に属するため、明らかに、ユーザデータはユーザチャイルドテーブル1に書き込まれるべきである。本発明の実施例によると、ステップ501〜503に説明されるように、ユーザデータはユーザチャイルドテーブル1に書き込まれた。
【0045】
実施例では、ステップ504〜505に説明されるように、対応するインデックスデータが生成され、インデックスチャイルドテーブル1に格納される。すなわち、対応するインデックスデータもまた、インデックスチャイルドテーブル1の[a,b)のキー範囲に属する。
【0046】
本発明の実施例によると、生成されたインデックスデータが対応するインデックスチャイルドテーブルに属することを保証するため、ユーザデータの範囲キー“a”はインデックスチャイルドテーブルのキー部分のスタート部分に置かれる。
【0047】
実施例では、インデックスデータの構造は、対応するユーザデータの範囲キー+ユーザデータの値部分(インデックスカラムの名前又はインデックスカラムの名前及び値)+ユーザデータのキー部分として定義される。これは単なる具体例であり、本発明はこれに限定されるものでない。例えば、対応するユーザデータの範囲キーを除いて、インデックスカラムの名前のポジション、インデックスカラムの値及びユーザデータのキー部分は、これらの何れかの組み合わせとすることができる。
【0048】
図7は、1つの領域サーバに記憶されるユーザチャイルドテーブル及びそれの対応するインデックスチャイルドテーブルの概略図である。
図7に示されるように、ユーザチャイルドテーブル1のキー範囲は[buyera,buyerb)であり、従って、対応するインデックスチャイルドテーブル1のキー範囲もまた[buyera,buyerb)である。本発明の実施例によると、ユーザデータの3つのレコードがユーザチャイルドテーブル1に書き込まれ、従って、インデックスデータの3つのレコードが生成され、インデックスチャイルドテーブル1に書き込まれる。3番目のレコードについて、ユーザデータのキー部分は“buyera1201208101100”であり、ユーザデータの値部分は“sellerc3”であり、従って、インデックスデータのキー部分は“buyera sellercode sellerc3 buyera1201208101100”であり、従って、ユーザデータの範囲キーはインデックスデータのキー部分に書き込まれ、ユーザが売り手コード“sellerc3”の全ての取引レコードを取得することを所望するとき、これらのレコードはインデックスチャイルドテーブルに隣接して記憶されているため、これらのレコードを読み出しことは容易であり、データを復号化することによって、ユーザは、ユーザデータに従ってユーザチャイルドテーブルをサーチすることによって所望のデータを取得するため、ユーザデータ“buyera1201208101100”を取得可能である。
【0049】
本発明の実施例によると、ユーザチャイルドテーブル及びインデックスチャイルドテーブルを結合することによって、ノードにわたる2つのリモート書き込み処理が1つに低減され、データ読み込みはもはやノード間のデータが必要とされる処理でなくなり、ネットワークリクエストの数は大きく低減され、これに従ってパフォーマンスが向上する。
【0050】
本発明の実施例は更に、セカンダリインデックス確立装置を提供し、以下の実施例2に説明されるように、問題を解決するための装置の原理は実施例1におけるセカンダリインデックスを確立する方法のものと同じであるため、それの具体的な実現形態は実施例1の方法の実現形態を参照可能であり。類似点はさらには説明されない。
【0051】
実施例2
本発明の実施例は更に、セカンダリインデックス確立装置を提供する。
図8は当該装置の概略図であり、
図8を参照して、当該装置は、
ユーザクライアントにより送信されたユーザデータを受信するよう構成される受信ユニット81であって、ユーザデータはキー部分及び値部分を含む、受信ユニット81と、
ユーザデータに従ってユーザテーブルを決定するよう構成される決定ユニット82と、
ユーザデータをユーザテーブルに書き込むよう構成される第1書き込みユニット83と、
ユーザデータに従ってインデックスデータを生成するよう構成される生成ユニット84と、
ユーザテーブルに対応するインデックステーブルにインデックスデータを書き込むよう構成される第2書き込みユニット85であって、ユーザテーブル及びインデックステーブルは、分散記憶システムの1つのノードにおいて確立され、一対一方式で結合される、第2書き込みユニット85と、
を有する。
【0052】
実施例では、ユーザテーブルのキー範囲及びインデックステーブルのものは同じである。
【0053】
実施例では、ユーザテーブルは複数のユーザチャイルドテーブルを有し、インデックステーブルは複数のインデックスチャイルドテーブルを有し、複数のユーザチャイルドテーブルの数は、複数のインデックスチャイルドテーブルの数と同一であり、各ユーザチャイルドテーブルのキー範囲は、それの対応するインデックスチャイルドテーブルのものと同一である。
【0054】
実施例では、第1書き込みユニット83は、第1決定モジュール831及び第1書き込みモジュール832を有し、第1決定モジュール831は、ユーザデータに従ってユーザチャイルドテーブルを決定するよう構成され、第1書き込みモジュール832は、ユーザデータをユーザチャイルドテーブルに書き込むよう構成される。
【0055】
実施例では、第2書き込みユニット85は第2書き込みモジュール851を有し、第2書き込みモジュールは、ユーザチャイルドテーブルに対応するインデックスチャイルドテーブルにインデックスデータを書き込むよう構成される。
【0056】
実施例では、生成ユニット84は第2決定モジュール841及び生成モジュール842を有し、第2決定モジュール841は、インデックスデータの範囲キー及びインデックスデータの特定のキーを決定するよう構成され、インデックスデータの範囲キーは、ユーザデータの範囲キー、ユーザチャイルドテーブルのスタートキー又はユーザチャイルドテーブルのエンドキーを有し、インデックスデータの特定のキーは、ユーザデータの値部分及びユーザデータのキー部分を有し、生成モジュール842は、インデックスデータの範囲キー及びインデックスデータの特定のキーに従ってインデックスデータを生成するよう構成される。ここで、第2決定モジュール841は、ユーザデータの範囲キー、ユーザチャイルドテーブルのスタートキー又はユーザチャイルドテーブルのエンドキーを抽出することによって、インデックスデータの範囲キーを決定できる。ここで、インデックスデータにおいて採用されるユーザデータの値部分はインデックスカラムの値に関連し、インデックスデータは更にユーザチャイルドテーブルにおけるインデックスカラムの名前を有する。
【0057】
実施例では、インデックスカラムの名前、インデックスカラムの値及びユーザデータのキー部分は、インデックスデータにおいて順次配置される。
【0058】
本発明の実施例によると、ユーザチャイルドテーブル及びインデックスチャイルドテーブルを結合することによって、ノードにわたる2つのリモート書き込み処理が1つに低減され、データ読み込みはもはやノード間のデータを必要とする処理でなく、ネットワークリクエストの数は大きく低減され、これに従ってパフォーマンスが向上する。
【0059】
実施例3
本発明の実施例は更に分散記憶システムを提供する。
図9は当該システムの概略図であり、
図9を参照して、当該システムは少なくとも1つの領域サーバ91及びセカンダリインデックス確立装置92を有し、
領域サーバのそれぞれは、少なくとも1つのユーザテーブル及び少なくとも1つのユーザテーブルに対応する少なくとも1つのインデックステーブルを記憶し、ユーザテーブルのそれぞれの範囲キーは、ユーザテーブルに対応するインデックステーブルのものと同一であり、
セカンダリインデックス確立装置92は、実施例において説明されるような装置により実現可能であり、実施例2における内容がここに含まれ、さらには説明されない。
【0060】
ここで、同一の領域サーバ91に記憶されるユーザテーブル及びそれの対応するインデックステーブルの記憶形態は
図4において説明されるものと同じであり、その内容がここに含まれ、さらには説明されない。
【0061】
分散記憶システムでは、領域サーバの動作又は損傷中のロードバランシングを考慮して、チャイルドテーブルのマイグレーションが通常行われ、チャイルドテーブルが他の領域サーバにマイグレートしているとき、ユーザチャイルドテーブル及びインデックスチャイルドテーブルが一緒にマイグレートされる。
【0062】
本発明の実施例によると、ユーザチャイルドテーブル及びインデックスチャイルドテーブルを結合することによって、ノードにわたる2つのリモート書き込み処理が1つに低減され、データ読み込みはもはやノード間のデータを必要とする処理でなく、ネットワークリクエストの数は大きく低減され、これに従ってパフォーマンスが向上する。
【0063】
本発明の好適な実施例は、図面を参照して上述された。実施例の多くの特徴及び効果は詳細な明細書から明らかであり、従って、それの真の精神及び範囲内に属する実施例のこのような全ての特徴及び効果をカバーすることは添付した請求項により意図される。さらに、多数の修正及び変更が当業者に容易に想到するため、図示及び説明された正確な構成及び処理に本発明の実施例を限定することは所望されず、従って、全ての適した修正及び等価がそれの範囲内に属すると主張されてもよい。
【0064】
本発明の各部分はハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせにより実現されてもよいことが理解されるべきである。上記の実施例では、複数のステップ又は方法は、メモリに記憶され、適切な命令実行システムにより実行されるソフトウェア又はファームウェアにより実現されてもよい。例えば、それがハードウェアにより実現される場合、それは、他の実施例と同様に、当該技術において知られている以下の技術、すなわち、データ信号の論理機能を実現するための論理ゲート回路を有する離散的な論理回路、適切な合成された論理ゲート回路を有する特定用途向け集積回路、プログラマブル・ゲート・アレイ(PGA)及びフィールド・プログラマブル・ゲート・アレイ(FPGA)などの何れか1つ又はそれらの組み合わせにより実現されてもよい。
【0065】
フローチャート又は他の方式における何れかの処理又は方法の説明又はブロックは、特定の論理機能又は処理におけるステップの実行可能な命令のコードを実現するための1以上のモジュール、セグメント又はパーツを有することを示すものとして理解されてもよく、本発明の好適な実施例の範囲は他の実現形態を有し、当該機能は、実質的に同時の方式又は反対の順序により関連する機能に従って機能を実行することを含む、図示又は説明されるものと異なる方式により実行されてもよく、本発明が属する当業者により理解されるべきである。
【0066】
フローチャートに示され、又は他の方式により説明されるロジック及び/又はステップは、ここでは例えば、命令実行システム、デバイス又は装置(コンピュータを有するシステム、プロセッサを有するシステム、又は命令実行システム、デバイス又は装置から命令を抽出し、当該命令を実行可能な他のシステムなど)による利用のため、又は、命令実行システム、デバイス又は装置と共に利用するため、何れかのコンピュータ可読媒体に実現されてもよい、ロジック機能を実現するための実行可能な命令のシーケンス化リストとして理解されてもよい。ここで用いられるように、“コンピュータ可読媒体”は、命令実行システム、デバイス又は装置により利用のため、プログラムを内蔵、記憶、通信、伝搬又は送信可能な何れかの装置とすることが可能であり、又は命令実行システム、デバイス又は装置と共に利用可能である。コンピュータ可読媒体は、例えば、限定することなく、電子、磁気、光、電磁気、赤外線又は半導体システム、デバイス、装置又は伝搬媒体であってもよい。コンピュータ可読媒体のより詳細な具体例(非包括的なリスト)は、以下、すなわち、1以上の配線を有する電気接続部分(電子デバイス)、ポータブルコンピュータハードウェアボックス(磁気デバイス)、ランダム・アクセス・メモリ(RAM)(電子デバイス)、読み出し専用メモリ(ROM)(電子デバイス)、消去可能なプログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)(電子デバイス)、光ファイバ(光デバイス)及びポータブルコンパクトディスク読み出し専用メモリ(CDROM)(光デバイス)を有してもよい。さらに、プログラムが紙又は他の適切な媒体を光学的にスキャンし、その後に、必要に応じて他の適切な方式によりコンパイル、インタープリット又は処理することを通じて電子的に取得されるとき、コンピュータ記憶媒体は、プログラムが印刷可能な紙や他の適切な媒体であってもよく、その後、当該プログラムはコンピュータメモリに記憶される。
【0067】
上記の文字による説明及び図面は本発明の各種特徴を示す。当業者が上述され、図面に図示されたステップ及び処理のそれぞれを実行するのに適したコンピュータコードを準備してもよいことが理解されるべきである。上述した端末、コンピュータ、サーバ及びネットワークなどは何れかのタイプであってもよく、コンピュータコードはデバイスを利用することにより本発明を実行するためここに含まれる開示に従って準備されてもよいことがまた理解されるべきである。
【0068】
本発明の特定の実施例がここに開示された。当業者は、本発明が他の環境において適用可能であることを容易に認識するであろう。実際、多くの実施例及び実現形態が存在する。添付した請求項は、本発明の範囲を上記の特定の実施例に限定すること意図していない。さらに、“〜するためのデバイス”の何れかの参照は、要素及び請求項を説明するためのデバイス・プラス・ファンクションの説明であり、“〜するためのデバイス”の参照を用いない何れかの要素は、“デバイス”の単語が当該請求項に含まれたとしても、デバイス・プラス・ファンクションの要素として理解されることは所望されない。
【0069】
特定の好適な実施例が示され、本発明が説明されたが、当該説明及び図面を読み理解した当業者には等価な修正及び変更が想到可能であることは明らかである。特に、上記の要素(部分、アセンブリ、装置及び構成など)により実行される各種機能について、特段の断りがない場合、要素が構成に関して本発明において示される一例となる実施例の機能を実行することと異なっていても、これらの要素を説明する用語(“デバイス”の参照を含む)はこれらの要素の特定の機能を実行する何れかの要素に対応することが望ましい。さらに、本発明の特定の特徴が図示された実施例の1以上のみに関して説明されているが、このような特徴は、何れか所与の又は特定の適用の効果的な態様を考慮して、所望されるような他の実施例の1以上の他の特徴と組み合わされてもよい。