(57)【特許請求の範囲】
【請求項１】
効率的残留値管理を容易にするためのコンピュータ実施方法であって、
物品またはサービスの合計量に対応する合計値を計算システム内に格納する工程と、
前記合計値を多数の副値に分割する工程と、
副値に関連付けられた残留値が閾値以下であることを判断する工程と、
前記残留値をマージ残留値にマージする工程と、
関連値による減算演算を示すトランザクションを受信する工程と、
前記減算演算を処理するために前記マージ残留値が考慮され得るようにし、それにより残留値断片化を低減する工程と
を含む、方法。
【請求項２】
前記閾値は前記減算演算に関連付けられた最小値以上である、請求項１に記載の方法。
【請求項３】
前記減算演算を行うために、前記閾値以上の前記残留値と、前記マージ残留値とから１つを選択する工程をさらに含む、請求項１に記載の方法。
【請求項４】
副値を、前記副値に関連付けられた残留値が零である場合に使用不能として示す工程をさらに含む、請求項１に記載の方法。
【請求項５】
前記残留値およびマージ残留値を格納する記録のスナップショットを取得する工程と、
適格副値または前記マージ残留値を選択する工程であって、適格副値の前記スナップショットは前記閾値以上の残留値を示す、工程と、
適格副値が選択されることに応答して、前記選択された副値に関連付けられた残留値を格納する前記記録をロックし、および前記選択された副値に関連付けられた残留値に対して前記減算演算を行う工程と
をさらに含む、請求項１に記載の方法。
【請求項６】
前記残留値およびマージ残留値を格納する記録のスナップショットのバージョン情報を維持する工程と、
残留値またはマージ残留値が更新されると前記対応するスナップショットの前記バージョン情報を更新する工程と
をさらに含む、請求項１に記載の方法。
【請求項７】
前記合計値は商品の在庫に対応し、
前記トランザクションは前記商品の注文書であり、
前記トランザクションに対応する前記減算演算は、前記注文書の結果としての前記在庫に対する差し引きを表す、請求項１に記載の方法。
【請求項８】
前記合計値は利用可能ストレージスペースの合計量に対応し、
前記トランザクションはストレージスペースをユーザへ割り振る要求であり、
前記トランザクションに対応する前記減算演算は、前記割り振りの結果としての利用可能ストレージスペースの前記合計量に対する差し引きを表す、請求項１に記載の方法。
【請求項９】
効率的残留値管理を容易にするためのシステムであって、
プロセッサと、
前記プロセッサに結合され、かつ命令を格納する記憶装置であって、前記命令は、前記プロセッサにより実行されると前記プロセッサに方法を実行させる、記憶装置と
を含み、前記方法は、
物品またはサービスの合計量に対応する合計値を計算システム内に格納する工程と、
前記合計値を多数の副値に分割する工程と、 
副値に関連付けられた残留値が閾値以下であることを判断する工程と、
前記残留値をマージ残留値にマージする工程と、
関連値による減算演算を示すトランザクションを受信する工程と、
前記受信された減算演算を処理するために前記マージ残留値が考慮され得るようにし、それにより残留値断片化を低減する工程と
を含む、システム。
【請求項１０】
前記閾値は前記減算演算に関連付けられた最小値以上である、請求項９に記載のシステム。
【請求項１１】
前記方法は、前記減算演算を行うために、前記閾値以上の前記残留値と、前記マージ残留値とから１つを選択する工程をさらに含む、請求項９に記載のシステム。
【請求項１２】
前記方法は、副値を、前記副値に関連付けられた残留値が零である場合に使用不能として示す工程をさらに含む、請求項９に記載のシステム。
【請求項１３】
前記方法は、
前記残留値およびマージ残留値を格納する記録のスナップショットを取得する工程と、
適格副値または前記マージ残留値を選択する工程であって、適格副値の前記スナップショットは前記閾値以上の残留値を示す、工程と、
適格副値が選択されることに応答して、前記選択された副値に関連付けられた残留値を格納する前記記録をロックし、および前記選択された副値に関連付けられた残留値に対して前記減算演算を行う工程と
をさらに含む、請求項９に記載のシステム。
【請求項１４】
前記方法は、
前記残留値およびマージ残留値を格納する記録のスナップショットのバージョン情報を維持する工程と、
残留値またはマージ残留値が更新されると前記対応するスナップショットの前記バージョン情報を更新する工程と
をさらに含む、請求項９に記載のシステム。
【請求項１５】
前記合計値は商品の在庫に対応し、
前記トランザクションは前記商品の注文書であり、
前記トランザクションに対応する前記減算演算は、前記注文書の結果としての前記在庫に対する差し引きを表す、請求項９に記載のシステム。
【請求項１６】
前記合計値は利用可能ストレージスペースの合計量に対応し、
前記トランザクションはストレージスペースをユーザへ割り振る要求であり、
前記トランザクションに対応する前記減算演算は、前記割り振りの結果としての利用可能ストレージスペースの前記合計量に対する差し引きを表す、請求項９に記載のシステム。
【請求項１７】
命令を格納する非一時的記憶媒体であって、前記命令は、プロセッサにより実行されると前記プロセッサに方法を実行させる、媒体であって、前記方法は、
物品またはサービスの合計量に対応する合計値を計算システム内に格納する工程と、
前記合計値を多数の副値に分割する工程と、
副値に関連付けられた残留値が閾値以下であることを判断する工程と、
前記残留値をマージ残留値にマージする工程と、
関連値による減算演算を示すトランザクションを受信する工程と、
前記受信された減算演算を処理するために前記マージ残留値が考慮され得るようにし、それにより残留値断片化を低減する工程と 
を含む、非一時的記憶媒体。
【請求項１８】
前記閾値は前記減算演算に関連付けられた最小値以上である、請求項１７に記載の非一時的記憶媒体。
【請求項１９】
前記方法は、前記減算演算を行うために、前記閾値以上の前記残留値と、前記マージ残留値とから１つを選択する工程をさらに含む、請求項１７に記載の非一時的記憶媒体。
【請求項２０】
前記方法は、副値を、前記副値に関連付けられた残留値が零である場合に使用不能として示す工程をさらに含む、請求項１７に記載の非一時的記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
分野
本出願は、コンピュータ技術の分野に関し、特に、トランザクションの分散処理における残留値を管理するための方法およびシステムに関する。
【背景技術】
【０００２】
関連技術
コンピュータおよびネットワーク技術の進歩により、ますます多くのトランザクションがオンラインで行われ、データベースにより処理されている。このような演算においては、とりわけ物品の合計量、スペースの合計量、または基金の合計量を表し得る合計値がしばしば存在する。しばしば、このような合計値は短期間内に多数の減算演算を受け得る。例えば、複数のユーザが、制限時間ウインドウ内にのみ提供される促進販売中に電子商取引（ｅ−ｃｏｍｍｅｒｃｅ）ウェブサイト上で同時に買い物をし得る。それぞれの商品のアイテムの合計数は、しばしば様々な源から開始された同時トランザクションに基づき急速に低減され得る。別の例では、多数のユーザがクラウドサービスのための特別促進中にオンラインストレージスペースを申し込み得る。合計利用可能ストレージスペースは受信された申し込みに基づき低下するであろう。それぞれの成功した申し込みは、すべてのストレージスペースが使い果たされるまで合計利用可能ストレージスペースの低減をもたらし得る。一般的に、データベースが、このようなトランザクションを処理するために使用され、通常、トランザクションの処理は以下の２つの方法で実施され得る。
【０００３】
（１）集中管理：単一データベース記録が、合計値（アイテムの合計数、基金の合計量、スペースの合計量、またはオンライントランザクションからの減算の標的である任意のタイプの合計量に対応し得る）を格納するために使用される。この合計値に対する減算などの演算および残り値の判断は例えば単一データベース内のＳＱＬ命令を実行することにより行われる。
【０００４】
（２）分散管理：合計値は多くの副値に分割される。各副値は、任意選択的に異なるデータベースまたはサーバにおいて、別個の記録内に格納される。入力トランザクションに対応する減算演算は通常、ロードバランサ（ｌｏａｄ−ｂａｌａｎｃｅｒ）サーバを通り、これらの異なる記録内に分散される。例えば、１０００ＧＢの利用可能ストレージスペース合計量が存在し、各ユーザは３ＧＢの無料ストレージスペースを申し込み得ると仮定する。それに応じて、合計値は１０００であり得、各トランザクション（すなわち、３ＧＢのストレージスペースのユーザ申し込み）は３による減算の演算を生じる。１０００の合計値は、それぞれが１００である１０個の副値に分割され、１０個のデータベースの記録内に格納され得る。各３減算演算はロードバランサにより１０個のデータ記録のうちの１つに送られる。例えば、入力減算演算が副値記録番号２へ転送されれば、このデータ記録の対応残留値は９７になり、一方、副値データ記録の残りの値は１００のままである。本開示では、副値データ記録の残り値を示す値は残留値と呼ばれ得ることに留意されたい。
【０００５】
上述の第１の方法（集中管理）では、データベース命令およびＩ／Ｏ操作の集中実行はホットスポット問題を生じ得る。すなわち、短期間中の多数の演算がデータベースシステムに負担をかけ、待ち時間の拡張と処理効率の低減とを生じ得る。さらに、合計値の残留値を格納する単一データベース記録の集中処理は、このデータ記録を更新する際にボトルネックを引き起こし、本システムを更新エラーにさらされ易くし得る。
【０００６】
上述の第２の方法（分散管理）では、入力演算は複数のデータ記録に分散される。しかし、各データ記録は独立に更新されるため、合計残留値はこれらのデータ記録間に分断化され得る。同じ上記例を使用すると、各副値データ記録の残留値が１であれば、合計残留値（すべての副値データ記録の残留値の合計）は１０であるが、いずれの副値記録も別の減算演算を受容し得ない。減算演算をもはや受容し得ないこれらの残留値は、残留値断片（ｒｅｓｉｄｕａｌ−ｖａｌｕｅ  ｆｒａｇｍｅｎｔ）と呼ばれ得る。このような断片化は減算値が変化するとより顕著になり得る。例えば、ユーザが３ＧＢ、５ＧＢまたは１５ＧＢのストレージスペースを申し込むことができれば、各トランザクションの減算の量は予測不能であるため、各副値記録は最終的に零まで減算され得ることを保証し得ない。その結果、多数の残留値断片が生成され得る。したがって、複数の副値記録内の残留値は利用され得ず、合計残留値は最小化され得ず、システム資源およびデータベースストレージスペースに無駄を生じ得る。
【発明の概要】
【０００７】
概要
本発明の一実施形態は、残留値管理を容易にするためのシステムを提供する。動作中、本システムは、物品またはサービスの合計量に対応する合計値を計算システム内に格納する。本システムは、合計値を多くの副値に分割し、および副値が閾値以下であることを判断する。それに応じて、本システムは副値をマージ残留値にマージする。さらに、本システムは、関連値による減算演算を示すトランザクションを受信する。その後、本システムは、減算演算を処理するためにマージ残留値が考慮され得るようにし、それにより残留値断片化を低減する。
【０００８】
この実施形態の変形形態では、閾値は減算演算に関連付けられた最小値以上である。
【０００９】
この実施形態の変形形態では、本システムは、減算演算を行うために、閾値以上の副値と、マージ残留値とから１つを選択する。
【００１０】
この実施形態の変形形態では、本システムは、副値を、その残留値が零である場合に使用不能として示す。
【００１１】
この実施形態の変形形態では、本システムは、副値およびマージ残留値を格納する記録のスナップショットを取得する。次に、本システムは、適格（ｑｕａｌｉｆｉｅｄ）副値またはマージ残留値を選択する。適格副値のスナップショットは閾値以上の残留値を示す。適格副値が選択されることに応答して、本システムは、選択された副値を格納する記録をロックし、および選択された副値に対して減算演算を行う。
【００１２】
この実施形態の変形形態では、本システムは、副値およびマージ残留値を格納する記録のスナップショットのバージョン情報を維持する。加えて、本システムは、副値またはマージ残留値が更新されると対応するスナップショットのバージョン情報を更新する。
【００１３】
この実施形態の変形形態では、合計値は商品の在庫に対応する。トランザクションは商品の注文書である。さらに、トランザクションに対応する減算演算は、注文書の結果としての在庫に対する差し引き（ｄｅｄｕｃｔｉｏｎ）を表す。
【００１４】
この実施形態の変形形態では、合計値は利用可能ストレージスペースの合計量に対応する。トランザクションはストレージスペースをユーザへ割り振る要求である。さらに、トランザクションに対応する減算演算は、割り振りの結果としての利用可能ストレージスペースの合計量に対する差し引きを表す。
【００１５】
図の簡単な説明
本明細書に援用され本明細書の一部を構成する添付図面は、本出願のいくつかの例示的実施形態を示し、本明細書と共に本出願を説明する役割を果たし、本出願に対するいかなる限定も意味するものではない。
【図面の簡単な説明】
【００１６】
【図１Ａ】本出願の実施形態による、副値データ記録に基づく例示的分散残留値管理システムを示す。
【図１Ｂ】本出願の実施形態による、分散残留値管理のための例示的なマージ副値データ記録（ｍｅｒｇｅｄ  ｓｕｂ−ｖａｌｕｅ  ｄａｔａ  ｒｅｃｏｒｄ）を示す。
【図２Ａ】本出願の実施形態による、副値データ記録を生成する工程を示す。
【図２Ｂ】本出願の実施形態による、副値データ記録を管理する工程を示す。
【図２Ｃ】本出願の実施形態による、副値データ記録の非同期マージ工程を示す。
【図３Ａ】本出願の実施形態による、例示的残留値管理システムの概略構造図である。
【図３Ｂ】本出願の実施形態による、残留値管理システムの例示的残留値マージモジュールの概略構造図である。
【図３Ｃ】本出願の実施形態による、残留値管理システムの別の例示的残留値マージモジュールの概略構造図である。
【図３Ｄ】本出願の実施形態による、残留値管理システムの例示的割り振りモジュールの概略構造図である。
【発明を実施するための形態】
【００１７】
添付図面では、同様の参照符号は同じ要素を指す。
【００１８】
詳細な説明
本発明の実施形態は、合計値を多くの副値に分割し、副値が閾値未満まで低減される場合にこのような副値をマージ副値データ記録にマージすることにより、分散トランザクション処理における残留値断片化を管理する問題を解決し、マージ副値データ記録がより多くの減算演算を受容できるようにする。このような方法は、電子商取引を処理するおよびストレージスペースを割り振るなど、様々な用途において使用され得る。動作中、トランザクションが到着すると、対応する減算演算が副値データ記録のうちの１つへ転送される。トランザクション量は、対応する副値データ記録内の残留値（例えば、残り在庫またはストレージスペース）を示すために、対応する副値から差し引かれ得る。
【００１９】
副値データ記録の残留値が閾値未満に（または閾値と等しく）なれば、対応する副値データ記録の残留値はマージ副値データ記録とマージされ、副値データ記録の残留値は零に設定される。一実施形態では、副値データ記録の状態は、副値データ記録の残留値が零であると「使用不能」として設定される。マージ副値データ記録は副値データ記録とは別個のデータ記録であり得る。副値データ記録のうちの１つはまた、マージ副値データ記録としての役割を果たすように選択され得る。次に、副値データ記録の残留値は、マージに起因したマージ副値データ記録の増加利用可能量を示すために、マージ副値データ記録の残留値へ加算される。マージ副値データ記録の残留値を示す値（すなわち加算後残留値）はマージ残留値と呼ばれ得る。
【００２０】
本出願の目的、技術的解決策、および利点をより明確にするために、本出願の技術的解決策は、本出願の特定の実施形態と対応する添付図面とを十分に参照して以下に詳細に説明される。明らかに、本明細書に記載される実施形態は単に例示的であり、本出願のすべての実施形態ではない。本出願の実施形態に基づき、創造的努力なしに当業者により導出されるすべての他の実施形態は、本出願の保護範囲内に入るものとする。
【００２１】
図１Ａは、本出願の実施形態による、副値データ記録に基づく例示的分散残留値管理を示す。この例では、計算システム１０１は、合計値１３０をデータベーステーブル１２０に格納するデータベース１０２を含む。合計値１３０は、１つまたは複数の商品の在庫、合計ストレージスペース、基金の合計額、またはトランザクションに付随する減算対象の任意のタイプの量を示し得る。多数のトランザクションが短期間に到着すると合計値１３０はそれに応じて差し引かれる。
【００２２】
合計値１３０が集中的方法を使用することにより管理されれば、合計値１３０は単一データベース記録内に格納され得る。この記録の残留値はトランザクションに応答して計算される（例えば、ＳＱＬステートメントの実行を通じて）。しかし、集中管理は上に説明したようにホットスポット問題を生じ得る。
【００２３】
一方、合計値１３０が分散的方法を使用することにより管理されれば、合計値１３０は様々な副値に分割され得、各副値は別個の記録内に格納される。分散的方法を使用することでホットスポット問題を低減し得る。しかし、これは残留値断片化問題を生じ得る。残留値断片化問題を解決するために、合計値１３０は副値１３２、１３４、１３６、および１３８に分割され、それぞれ副値データ記録１２２、１２４、１２６、および１２８内に格納される。いくつかの実施形態では、副値データ記録１２２、１２４、１２６、および１２８はデータベース１０２、１０４、１０６、および１０８内にそれぞれ格納され得る。これらのデータベースは、個別コンピュータ装置上に存在してもよく、１つまたは複数のコンピュータ装置上にホストされた様々なデータベースインスタンス内に存在してもよい。
【００２４】
これらの副値の数は、合計値１３０とトランザクションに関連付けられた最大減算値（例えば、ユーザが申し込み得る最大ストレージスペース、またはユーザが購入し得るアイテムの最大数）とに基づき決定され得る。副値の数は、ユーザトランザクションに関連付けられた最大値により合計値１３０を除算することにより得られる除数より小さくなり得る。これにより副値の数を制限し、ひいては、過剰非集中化に起因する格納オーバヘッド（例えば、副値、残留値などの構成データを格納するための）を節約し、小さい副値に起因するデータ記録の著しい断片化を防止する。さらに、各副値がトランザクションに関連付けられた最大値未満となるような方法で副値が一様に分散されれば、最大値を有するトランザクションは処理されなくてもよい。一方、副値が一様に分散されなければ、少数の副値は最大値より著しく大きくなり得る。その結果、多数の空白データ記録が発生し得る。
【００２５】
いくつかの実施形態では、副値の数は、副値がほぼ一様に分散され、各副値がトランザクションに関連付けられた最大値の倍数（例えば、２倍）より大きくなるような方法で決定される。したがって、副値１３２、１３４、１３６、および１３８は合計値１３０に基づき一様に分散され得、これらの副値のそれぞれは最大値の倍数（例えば、整数倍）より大きい。この構成により、本システムはトランザクションをそれぞれの副値データ記録へ割り当て、対応するデータ記録を複数の要求に使用できるようになる。このようにして、本システムはホットスポット問題を回避するだけでなく、多数の副値データ記録の処理を回避する。これはまた、各副値の差し引き時間を互いに近くなるようにし得、したがって副値データ記録の処理は簡潔なままである。副値の数はまた、副値が一様に分散されないがそれぞれの副値は最大値の倍数より大きくなるような方法で選択され得ることに注意すべきである。
【００２６】
動作中、トランザクションが受信されると、対応する減算演算は副値データ記録のうちの１つ（副値データ記録１２２など）から割り振られる。関連トランザクション値は、副値データ記録１２２内の残留値１４４（例えば、残り在庫、残りストレージスペース、または任意の他のタイプの量）を示すように副値１３２から減じられ得る。換言すれば、副値１３２は、副値データ記録１２２の残留値を示し得、同様に残留値１３２と呼ばれ得る。副値データ記録１２２の残留値はまた残留値１４０などの別個の記録として維持され得ることに注意すべきである。本開示では、合計値と副値とは、特定の単位に関連付けられず、任意の好適な単位系（例えば、アイテムの数、貨幣の量、ストレージスペースの単位等）を使用して表され得る。
【００２７】
図１Ｂは、本出願の実施形態による、分散残留値管理のための例示的マージ副値データ記録を示す。副値データ記録１２２の副値１３２が閾値未満になったと仮定する。閾値の範囲は、トランザクション値の最小値（例えば、ユーザが購入し得るアイテムの最小数、ユーザが要求し得る最小ストレージスペース、またはトランザクションに関わる基金の最小額）と合計値１３０との間であり得る。理想的には、閾値はトランザクションに関連付けられた最大値以上であり得る。いくつかの実施形態では、閾値は、トランザクションに関連付けられた最大値より大きく、最大値の２倍未満である。これは、最大値を有するトランザクションが本システムに到着すれば、副値データ記録の少なくとも１つの残留値が要求に応えるのに十分であることを保証する。
【００２８】
副値１３２が、副値データ記録１２２へ送られた以前のトランザクションのために閾値未満となれば、副値１３２はマージ副値データ記録１５０内にマージされ得る。次に、副値１３２は零に設定され得る。副値データ記録１２２の状態は、副値１３２の残留値が零であれば「使用不能」として設定される。副値１３２はまた、副値１３２がトランザクションに関連付けられた値未満であれば、副値データ記録１５０内にマージされ得る。例えば、副値が合計値１３０に基づき無作為に分散されれば、１つまたは複数の副値は比較的小さくなり得、一方で他のものは大きくなり得る。その結果、副値１３２はトランザクションに関連付けられた値未満であり得る。それに応じて、副値１３２はマージ副値データ記録１５０とマージされ得る。
【００２９】
マージ副値データ記録１５０は、零の初期残留値を有する追加データ記録（すなわち、副値データ記録とは別個の）または副値データ記録１２４などの予め選択された副値データ記録であり得る。マージ副値データ記録１５０としての役割を果たすために、本システムは、無作為に、または副値データ記録１２４が副値データ記録中の最小残留値を有するため、副値データ記録１２４を選択し得る。マージ副値データ記録１５０はトランザクションの割り当て前に一回判断され得る。副値データ記録１２２がマージ副値データ記録１５０とマージされると、副値１３２の残留値はマージ副値データ記録１５０の残留値へ加算される。マージ副値データ記録１５０の残留値はマージ残留値１５２と呼ばれ得る。加算後、マージ残留値１５２は副値１３２と副値１３４との合計を示す。
【００３０】
いくつかの実施形態では、副値１３２、１３４、１３６、および１３８が計算および格納された後、本システムは、閾値未満の残留値を有する副値データ記録を識別するためにそれぞれの副値データ記録を走査し、識別された副値データ記録をマージ副値データ記録１５０内にマージする。このマージは、副値データ記録によりトランザクションを処理する前に発生し得る。様々なアプリケーションがしばしばトランザクションを同時に開始する（例えば、複数ユーザが急いで商品を同時に購入する）ため、トランザクション処理およびマージは同時に行われ得る（例えば、異なるスレッドにより）。次に、本システムは副値データ記録の残留値が閾値未満かどうかを判断し、そうであれば、副値データ記録の残留値はマージ副値データ記録１５０とマージされる。
【００３１】
副値データ記録１２２および１２４がマージされてマージ副値データ記録１５０を生成すると仮定する。トランザクションが受信されると、本システムはトランザクションを処理するためにマージ副値データ記録１５０だけでなく副値データ記録１２６および１２８も考慮する。これにより、合計残留値断片化と残留値断片化とを低減する。本システムは最初に、トランザクションを割り当てるために副値データ記録１２６および１２８のうちの１つを考慮する。本システムがトランザクションをこれらの副値データ記録へ割り当てることができない（例えば、不十分な副値のために）または副値データ記録の残留値が零であれば（すなわち、すべての副値データ記録がすでにマージ済みであれば）、本システムは、トランザクションをマージ副値データ記録１５０へ割り当てることができる。しかし、これはマージ副値データ記録１５０からの集中的割り振りのためにホットスポット問題に繋がり得る。
【００３２】
この潜在的問題を回避するために、いくつかの実施形態では、本システムは、トランザクションを割り当てるために、十分な残留値を有する（すなわち、閾値より大きい残留値を有する）副値データ記録とマージ副値データ記録１５０との間から無作為に選択し得る。割り当て中、本システムは、割り当てのために、閾値より大きい残留値を有する副値記録１２６および１２８のうちの１つを選択する。副値データ記録１２８が選択されたと仮定する。選択工程（例えば、無作為抽出）に基づき、本システムは、割り振りのために、副値データ記録１２８またはマージ副値データ記録１５０のいずれかを選択する。割り当て後、副値データ記録１２８の残留値が閾値未満に（または閾値に等しく）なれば、副値データ記録１２８の残留値はマージ副値データ記録１５０とマージされる。
【００３３】
副値データ記録１２８とマージ副値データ記録１５０とは使用可能状態にあるべきであることに注意すべきである。通常、使用可能状態はデータ記録のデフォルト状態である。副値データ記録１２６および１２８が使用不能状態であれば、それぞれの副値データ記録の利用可能残留値がすでに使用またはマージされている。その結果、マージ副値データ記録１５０のみが選択され得る。マージ残留値１５２がトランザクションの最大値未満になると、最大値を有するこのようなトランザクションは割り当てられ得ない。最後に、マージ残留値１５２がトランザクションの最小値未満になれば、トランザクション割り当ては終了され得る。この時、合計残留値は最小になり得る。
【００３４】
いくつかの実施形態では、トランザクション割り当て中、データ記録を選択する間、本システムは、残留値を判断するために副値データ記録１２８およびマージ副値データ記録１５０のそれぞれのスナップショットを取得する。副値データ記録のスナップショットは、対応する副値データ記録の残留値を示し得る。スナップショットはデータベーススナップショット機能により生成され得る。この例は副値データ記録１２８とマージ副値データ記録１５０とのそれぞれのスナップショットに基づき説明されることに注意すべきである。しかし、本システムは、それぞれの副値データ記録のスナップショットを生成および維持し得る。
【００３５】
いくつかの実施形態では、それぞれの副値データ記録およびマージ副値データ記録１５０はデータ記録の現バージョンを示すバージョン番号に関連付けられ得る。さらに、スナップショットはまたバージョン番号を含み得る。バージョン番号の例は、限定するものではないが、タイムスタンプまたは単調増加整数を含む。ホットスポット問題を回避するために、スナップショットと対応するデータ記録とは通常、異なるデータベース内に格納される。その結果、スナップショットの更新シーケンスは、対応するデータ記録の更新シーケンスに一致しないことがあり得る。スナップショットのバージョン番号と対応する副値データ記録のバージョン番号（またはマージ副値データ記録）とを比較することにより、本システムはスナップショットの一貫性を保証する。
【００３６】
いくつかの実施形態では、本システムは、トランザクション（例えば、残留値に対する変更）またはデータ記録のマージに応答して副値データ記録１２８などの副値データ記録またはマージ副値データ記録１５０のスナップショットを更新する。スナップショット更新工程はバージョン番号を更新する（例えば、最新タイムスタンプを追加するまたは整数値をインクリメントする）工程を含み得る。例えば、トランザクションが副値データ記録１２８により処理された場合、本システムは副値データ記録１２８のバージョン番号を更新する。スナップショット更新工程はさらに、副値データ記録１２８のスナップショットを更新する工程を含み得る。スナップショットのバージョン番号が副値データ記録１２８のバージョン番号未満であれば、本システムは副値データ記録１２８の新しいスナップショットを生成し、スナップショットのバージョン番号を更新する。
【００３７】
トランザクションが、対応する副値データ記録１２８により処理されるたびに、副値データ記録１２８のスナップショットが更新されれば、スナップショットをホストするデータベースはホットスポット問題に直面し得る。トランザクションは、副値データ記録１２８の残留値が閾値以上であれば副値データ記録１２８により処理され得るため、スナップショットは残留値の特定の数値を有しなくてもよい。スナップショットは、残留値が「閾値以上」かどうかを示す指標（例えば、２進値）を含み得る。換言すれば、指標は副値データ記録１２８が「トランザクション割り当てに利用可能」かどうかを示す。副値データ記録１２８の残留値が閾値未満であれば、副値データ記録１２８はマージ副値データ記録１５０とマージされ、残留値は零に設定される。したがって、指標が、副値データ記録１２８は「トランザクション割り当てに利用可能ではない」ことを示せば、副値データ記録１２８の残留値は実際には零である。したがって、指標はスナップショットが更新されるべきかどうかを判断するために十分である。したがって、いくつかの実施形態では、副値データ記録１２８およびマージ副値データ記録１５０のそれぞれのスナップショットは、副値データ記録１２８がマージ副値データ記録１５０とマージされると更新される。本システムはスナップショットが更新されるべきかどうかを判断するために、スナップショットのバージョン番号と対応する副値データ記録とを依然として比較することに注意すべきである。
【００３８】
以下の例はさらに、副値データ記録に基づく残留値管理を示す。副値データ記録１２２、１２４、１２６、および１２８の残留値がそれぞれ０、２２、１５、および１７であり、閾値が１０であると仮定する。したがって、副値データ記録１２２の状態は使用不能である。動作中、アプリケーションからの６の値を有するトランザクション（例えば、ユーザが６つのアイテムを注文するまたは６ＧＢのストレージスペースを申し込む）が本システムに到着する。本システムは、副値データ記録のスナップショットを照会し、副値データ記録１２４、１２６、および１２８が使用可能であることを判断する。次に、本システムはトランザクションのために副値データ記録１２６を無作為に選択する。副値データ記録１２６のデータベース１０６上のいかなるトランザクションも開始する前に、本システムは、副値データ記録１２６の残留値記録（副値１３６であり得る）をロックする（例えば、分散セマフォを使用することにより）。このロックは、いかなる他のエンティティもロックが解除されるまで記録を更新することができないことを保証する。
【００３９】
副値データ記録１２６の残留値は１５であるため、本システムは残留値から６の要求値を差し引き、残留値を９に更新する。次に、本システムは、９の現在残留値が１０の閾値未満であることを判断する。次に、本システムは、９のマージ値によりマージサービスを開始し、マージサービスの状態を、初期状態を示すＩＮＩＴとして設定する。本システムは、副値データ記録１２６の残留値を０に設定し、副値データ記録１２６の状態を使用不能に設定する。次に、任意選択的に、本システムは、対応するトランザクションをデータベース１０６へ指示し得る。このデータベーストランザクションは従来のデータベース操作であり得、データベース処理の基本プログラム要素である。したがって、データベーストランザクションが工程中に表されるか否かは本出願の原理および用途に影響を及ぼさない。
【００４０】
この時点で、副値データ記録の残留値の合計は０＋０＋１７＋２２＝３９であり、５４の合計残留値から６の要求値を差し引いた後の結果合計残留値は４８であるべきである。合計値の差５４−４８＝９はマージサービスのパラメータとして記録される。本システムは、副値データ記録１２６の残留値とマージ副値データ記録１５０とをマージする非同期マージ工程を開始し得る。本システムはまた、図１Ｂに関連して説明したようにスナップショット更新工程を開始し得る。非同期マージ工程中、本システムは、９の格納能力が、副値データ記録１３４であるマージ副値データ記録１５０へ加算されるべきであることを示すパラメータを取得する。本システムは、副値データ記録１３４のデータベース１０４上の対応するトランザクションを任意選択的に開始し得る。
【００４１】
マージ中、本システムは、得られた９の値（すなわち副値データ記録１２４の残留値）をマージ副値データ記録１５０の残留値２２へ加算する。したがって、マージ副値データ記録１５０の残留値は３１になる。次に、本システムは、マージサービスの状態を、マージの正常な完了を示すＳＵＳＳへ変更し得る。マージサービスがＳＵＳＳ状態に達すると、副値データ記録１２８とマージ副値データ記録１５０の残留値との合計は４８になる。
【００４２】
図２Ａは、本出願の実施形態による、副値データ記録を生成する工程を示す。動作中、残留値管理のためのシステムは、トランザクションの合計値と最大値とに基づき副値の数を判断し（工程Ｓ２０１）、図１Ａに関連して説明したように合計値を複数の副値に分割する（工程Ｓ２０２）。次に、本システムは、データ記録をそれぞれの副値に対応する副値データ記録に分割する（工程Ｓ２０３）。本システムは、対応する副値データ記録にそれぞれの副値を格納する（工程Ｓ２０４）。いくつかの実施形態では、本システムは、マージ副値データ記録としての役割を果たす副値データ記録のうちの１つを選択する（工程Ｓ２０５）。本システムはまた、マージ副値データ記録としての役割を果たす別のデータ記録を有し得る。
【００４３】
図２Ｂは、本出願の実施形態による、副値データ記録を管理する工程を示す。動作中、効率的残留値管理のためのシステムは、オンライントランザクションの要求（商品の量を規定する電子商取引注文書など）を受信する（工程Ｓ２１１）。本システムは、副値データ記録のスナップショットを照会し、使用可能状態を有する副値データ記録のうちの１つを選択する（工程Ｓ２１２）。閾値は通常、トランザクションの最大値より大きいため、使用可能状態を有する副値データ記録は通常、トランザクションを処理するために十分な値を有する。本システムは、限定するものではないが無作為抽出、最大（または最小）残留値ベース選択、およびラウンドロビン選択をその例として含む選択方針に基づき副値データ記録を選択し得る。本システムは、マージ副値データ記録と、選択された副値データ記録とから１つのデータ記録を選択する（工程Ｓ２１３）。本システムは、限定するものではないが、無作為抽出およびマージ副値データ記録最終選択（すなわち、いかなる副値データ記録も十分な値を有しなければマージ副値データ記録を選択する）をその例として含む選択方針に基づきデータ記録を選択し得る。
【００４４】
次に、本システムは、マージ副値データ記録が選択されたかどうかを判断する（工程Ｓ２１４）。マージ副値データ記録が選択された場合、本システムはトランザクションをマージ副値データ記録へ割り当てるために割り当てサービスを開始する（工程Ｓ２１５）。マージ副値データ記録が選択されなかった（すなわち、副値データ記録のうちの１つが選択された）場合、本システムは、副値データ記録を有するデータベース上で、選択された副値データ記録の残留値記録をロックする（工程Ｓ２１６）。次に、本システムは、トランザクションを選択副値データ記録へ割り当てるために割り当てサービスを開始する（工程Ｓ２１７）。
【００４５】
本システムは、副値データ記録の残留値が閾値以上であるかどうかを判断する（工程Ｓ２１８）。残留値が閾値以上であれば、本システムは、副値データ記録を有するデータベース上で、選択された副値データ記録の残留値記録をロック解除する（工程Ｓ２１９）。残留値が閾値未満であれば、本システムは、初期状態のマージサービスを開始し、選択された副値データ記録とマージ副値データ記録とをマージし、選択された副値データ記録の残留値をマージ値として判断する（工程Ｓ２２０）。次に、本システムは、図１Ｂに関連して説明したように、選択された副値データ記録の残留値を零に設定し、選択された副値データ記録の状態を使用不能として設定する（工程Ｓ２２１）。次に、本システムは、選択された副値データ記録の残留値とマージ副値データ記録とをマージするために非同期マージ工程を開始する（工程Ｓ２２２）。
【００４６】
図２Ｃは、本出願の実施形態による、副値データ記録の非同期マージ工程を示す。動作中、システムは、マージサービスに関連付けられたマージ値などのパラメータを取得する（工程Ｓ２３１）。本システムは、マージ値を、マージ副値データ記録の残留値に加算する（工程Ｓ２３２）。本システムは、図２Ｂに関連して説明したように、選択された副値データ記録の残留値をマージ副値データ記録の残留値へ加算する、マージ副値データ記録の加算サービスを開始する（工程Ｓ２３３）。次に、本システムは、マージサービスの状態を「成功裡に完了した」として設定する（工程Ｓ２３４）。
【００４７】
図３Ａは、本出願の実施形態による、例示的残留値管理システムの概略構造図である。残留値管理システム３００は、プロセッサ３０２、メモリ３０４、および記憶装置３２０を含む。記憶装置３２０は通常、上記方法を行うためにメモリ３０４内にロードされプロセッサ３０２により行われ得る命令を格納する。一実施形態では、記憶装置３２０内の命令は、すべてが様々な手段と互いに通信し得る合計値分割モジュール３２２、割り当てモジュール３２４、残留値マージモジュール３２６、およびマージ副値データ記録生成モジュール３２８を実装し得る。
【００４８】
いくつかの実施形態では、モジュール３２２、３２４、３２６、および３２８は、部分的にまたは完全にハードウェアで実現され得、プロセッサ３０２の一部であり得る。さらに、いくつかの実施形態では、本システムは別個のプロセッサ、メモリを含まないことがあり得る。その代りに、それらの特定のタスクを行うことに加えて、モジュール３２２、３２４、３２６、および３２８は、別個にまたは協働してのいずれかで、専用計算エンジンの一部であり得る。
【００４９】
記憶装置３２０はプロセッサ３０２により行われるプログラムを格納する。具体的には、記憶装置３２０は、効率的残留値管理のためのシステム（アプリケーション）を実現するプログラムを格納する。動作中、アプリケーションプログラムは記憶装置３２０からメモリ３０４内にロードされ、プロセッサ３０２により行われ得る。その結果、システム３００は上記機能を行い得る。システム３００はさらに、任意選択的ディスプレイ３１２、キーボード３１４、およびポインティング装置３１６へ結合され得、１つまたは複数のネットワークインタフェースを介しネットワーク３１０へ結合され得る。
【００５０】
動作中、合計値分割モジュール３２２は合計値を多くの副値に分割し、それぞれの副値に対応する副値データ記録を生成し、対応する副値データ記録にそれぞれの副値を格納する。マージ副値データ記録生成モジュール３２８は副値データ記録のうちの１つをマージ副値データ記録として選択する。マージ副値データ記録生成モジュール３２８はまた、副値データ記録から分離したマージ副値データ記録を生成し得る。残留値マージモジュール３２６は、副値データ記録の残留値が閾値以下であれば、副値データ記録の残留値とマージ副値データ記録とをマージし、副値データ記録の残留値を零に設定する。割り当てモジュール３２４は閾値以上の残留値を有する副値データ記録のうちの１つを選択する。次に、割り振りモジュール３２４は、トランザクションの割り当てのために、選択された副値データ記録とマージ副値データ記録との間から選択する。
【００５１】
図３Ｂは、本出願の実施形態による、残留値管理システムの例示的残留値マージモジュールの概略構造図である。図３Ａの残留値マージモジュール３２６は、調停モジュール３３１、マージサービスモジュール３３２、零設定モジュール３３３、および非同期マージモジュール３３４を含み得る。調停モジュール３３１は副値データ記録の残留値が閾値未満（または閾値に等しい）かどうかを判断する。マージサービスモジュール３３２は、副値データ記録の残留値が閾値未満であれば（または閾値に等しければ）マージサービスを開始する。零設定モジュール３３３は副値データ記録の残留値を零に設定する。
【００５２】
非同期マージモジュール３３４は非同期マージ工程を開始し実行する。非同期マージモジュール３３４は、パラメータモジュール３３５、残留値マージモジュール３３６、およびマージサービス状態設定モジュール３３７を含む。パラメータモジュール３３５はマージサービスに関連付けられたマージ値などのパラメータを取得する。残留値マージモジュール３３６はマージ値をマージ副値データ記録の残留値へ加算する。マージサービス状態設定モジュール３３７は、マージサービスが完了したことを示すためにマージサービスの状態を設定する。
【００５３】
図３Ｃは、本出願の実施形態による、残留値管理システムの別の例示的残留値マージモジュールの概略構造図である。この例では、図３Ａの残留値マージモジュール３２６はさらに、副値データ記録の残留値が零であれば副値データ記録の状態を使用不能として設定するデータ記録状態設定モジュール３４２を含む。非同期マージモジュール３３４はさらに、マージ値がマージ副値データ記録の残留値へ加算されるときに加算サービスを開始する加算サービスモジュール３４４を含む。この加算サービスは、マージ値により示された値をマージ副値データ記録の残留値へ加算する（すなわち、マージ副値データ記録の残留値能力をマージ値だけ拡大する）。
【００５４】
図３Ｄは、本出願の実施形態による、残留値管理システムの例示的割り振りモジュールの概略構造図である。図３Ａの割り振りモジュール３２４は、スナップショット照会モジュール３５１、データ記録選択モジュール３５２、データ記録ロックモジュール３５３、残留値モジュール３５４、および割り当てサービスモジュール３５５を含み得る。スナップショット照会モジュール３５１は、トランザクションの割り当て中に、副値データ記録とマージ副値データ記録のそれぞれのスナップショットを照会する。データ記録選択モジュール３５２は、トランザクション割り当てのために、マージ副値データ記録と、使用可能状態を有する副値データ記録とから選択する。データ記録ロックモジュール３５３は、副値データ記録が選択されれば、選択された副値データ記録の残留値記録をロックする。残留値モジュール３５４は、トランザクションを、選択された副値データ記録またはマージ副値データ記録へ当てる。割り当てサービスモジュール３５５は割り当てサービスを開始する。
【００５５】
図３Ａに戻って参照すると、いくつかの実施形態では、記憶装置３２０内の命令はさらに、すべてが様々な手段と互いに通信し得るデータベース管理モジュール３６２、バージョン管理モジュール３６４、およびスナップショット管理モジュール３６６のうちの１つまたは複数を実装し得る。データベース管理モジュール３６２は、データベースに基づき、データ制御システムに関連付けられた操作を容易にする。バージョン管理モジュール３６４は、それぞれの副値データ記録およびマージ副値データ記録に関連付けられたバージョン（例えば、バージョン番号）、およびその対応するスナップショットを維持し更新する。スナップショット管理モジュール３６６は、副値データ記録およびマージ副値データ記録のそれぞれのスナップショットを生成し更新する。
【００５６】
この詳細な説明において説明されたデータ構造およびコンピュータ命令は通常、コンピュータシステムによる使用のためのコードおよび／またはデータを格納し得る任意の装置または媒体であり得るコンピュータ可読記憶媒体上に格納される。コンピュータ可読記憶媒体は、限定しないが揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタルバーサタイルディスクまたはデジタルビデオディスク）などの磁気および光学的記憶装置、または現在知られているかもしくは将来開発されるコンピュータ可読媒体を格納することができる他の媒体を含む。
【００５７】
詳細な説明セクションにおいて説明された方法および工程は、上に説明したようにコンピュータ可読記憶媒体に格納され得るコードおよび／またはデータとして具現化され得る。コンピュータシステムがコンピュータ可読記憶媒体上に格納されたコードおよび／またはデータを読み実行する場合、コンピュータシステムは、データ構造およびコードとして具現化されコンピュータ可読記憶媒体内に格納される方法および工程を実行する。
【００５８】
さらに、本明細書において説明される方法および工程はハードウェアモジュールまたは装置内に含まれ得る。これらのモジュールまたは装置は、限定するものではないが特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定のソフトウェアモジュールまたは１つのコードを特定時間に実行する専用または共用プロセッサ、および／または現在知られているかもしくは将来開発される他のプログラマブルロジックデバイスを含み得る。ハードウェアモジュールまたは装置が活性化されると、これらはその中に含まれる方法および工程を実行する。
【００５９】
上の説明は、当業者が本実施形態をなし得るようにかつ使用できるようにするために提示され、特定の用途およびその要件に関連して提供された。開示される実施形態に対する様々な修正形態は当業者に容易に明らかになり、本明細書で定義された一般的原理は、本開示の趣旨または範囲から逸脱することなく他の実施形態および用途へ適用され得る。したがって、本発明は、示された実施形態に限定されるように意図されていないが、本明細書に開示された原理および特徴に整合する最も広い範囲を与えられるものとする。
【図１Ａ】
0006386097.tif 000002
【図１Ｂ】
0006386097.tif 000003
【図２Ａ】
0006386097.tif 000004
【図２Ｂ】
0006386097.tif 000005
【図２Ｃ】
0006386097.tif 000006
【図３Ａ】
0006386097.tif 000007
【図３Ｂ】
0006386097.tif 000008
【図３Ｃ】
0006386097.tif 000009
【図３Ｄ】
0006386097.tif 000010