(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022155521
(43)【公開日】2022-10-13
(54)【発明の名称】階層的マルチテナント環境においてテナントデータを構造化しアクセスするためのシステムおよび方法
(51)【国際特許分類】
G06F 16/13 20190101AFI20221005BHJP
【FI】
G06F16/13
【審査請求】未請求
【請求項の数】6
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022044091
(22)【出願日】2022-03-18
(31)【優先権主張番号】17/301,277
(32)【優先日】2021-03-30
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】313015247
【氏名又は名称】アクロニス・インターナショナル・ゲーエムベーハー
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】セルゲイ ベロウソフ
(72)【発明者】
【氏名】スタニスラフ プロタソフ
(72)【発明者】
【氏名】イワン リド
(72)【発明者】
【氏名】イリヤ コンパニエツ
(57)【要約】 (修正有)
【課題】階層的マルチテナント環境におけるストレージデータのシャーディングの問題を解決するシステム及び方法を提供する
【解決手段】階層的マルチテナントシステム100は、シャードに構成可能なコンピュータ可読記憶媒体104A~104Cと、記憶媒体に格納された複数のテナントノードと、テナントノードからアクセス可能な複数の子ノードと、テナントノードと子ノードが配置される複数のシャードと、子ノードを格納するための少なくとも1つの仮想シャードと、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
階層的マルチテナントストレージシステムであって、
シャードに構成可能なコンピュータ可読記憶媒体と、
前記記憶媒体に格納された複数のテナントノードと、
前記テナントノードからアクセス可能な複数の子ノードと、
テナントノードと子ノードが配置される複数のシャードと、
子ノードを格納するための少なくとも1つの仮想シャードと、を備えるシステム。
【請求項2】
テナントデータは、子データにアクセスさせる、さらに、移行されたテナントデータを含んでいるツリーに割り当てられる、請求項1記載のシステム。
【請求項3】
少なくとも1つのテナントのデータは、単一のシャードに割り当てられる、請求項1記載のシステム。
【請求項4】
再構築されたテナントアクセスツリーをさらに含むことを特徴とする、請求項2記載のシステム。
【請求項5】
コンピュータが実施する、階層的マルチテナント分散データストレージ環境におけるテナントノードへの並列アクセス要求を処理する方法であって、
各シャードには単一のテナントのデータが格納される、データストレージをシャードで分割するステップと、
階層的データアクセス構造の各レベルが階層の後続のすべてのレベルへのアクセスレベルに対応する、ストレージサービスのマルチテナント構造に相当する階層的データアクセス構造を作成するステップと、
階層的データアクセス構造の下位レベルは、単一のシャードへのアクセスレベルに対応しており、
並列データアクセス要求を処理するステップと、を含み、各データアクセス要求は、階層構造に従ってターゲットシャードにルーティングされ、第1のテナントのデータ要求は、他のテナントのシャードをロードしない、方法。
【請求項6】
テナントノードが仮想シャード上に格納される階層的マルチテナントデータストレージ環境において、テナントノードへの並列アクセスを構成する方法であって、
ビンパッキングアルゴリズムを用いて、テナントノードのストレージ割り当て構成を計算するステップと、
計算された割り当て構成と一致するテナントノードのストレージのために、少なくとも1つのシャードを仮想化するステップと、
仮想シャード上の1つまたは複数のテナントノードへのアクセスの同時処理要求を受け取るステップと、を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチテナント環境に関わるコンピュータシステムにおけるデータの保存とアクセスに関するものである。
【背景技術】
【0002】
データストレージの需要の増加により、規模の問題が発生するのである。高度な一貫性のデータの膨大な量を単一のストレージソリューションの枠組みで管理することで、システムのパフォーマンス、操作性、セキュリティに関わる問題が生じる可能性がある。
【0003】
垂直スケーリングとは、CPU、メモリ、ディスクの処理能力を追加することである。これにより、生産性は直線的に向上するが、ある時点でこの方法は機能しなくなる。
水平スケーリングとは、データを複数に分割し、異なるストレージに分解することである。分割することは、パーティショニングのことである。分解は、シャーディングのことである。ストレージは、1つのディスクまたは複数のディスクに分解することができる。
【0004】
階層的マルチテナントシステムには、ユニークな挑戦がある。階層型マルチテナント環境では、異なるテナントに関連するデータを異なるデータベース分散させるため、システムを構成するツリーやサブツリー内にデータがどのように格納されているかに関連するアクセス上の問題が発生する。
【0005】
サブツリーを使用しない場合、テナントまたはテナントのグループごとに、重複しない個別のリソースプールを選択することでスケーリングが行われる。但し、子サブツリーでは、子データへの生産的なアクセスを整理する明確な方法はない。
【0006】
数千のテナントを抱えるマルチテナントシステムでは、並列するデータ要求を高速に処理する必要がある。テナントユーザーは、データの読み込みや検索、統計情報の集計、レポートの作成、複雑なフィルタリングパラメータによるデータ要求など、データの操作に必要な作業を行う。この操作では、何百万もの並列データ要求のキューを作る可能性がある。もし、ストレージシステムがその要求を遅い速度で処理すれば、テナントユーザーはサービスの低下を経験することになる。また、複数のテナントのデータが共通のシャードに保存されている場合、1人のユーザー(1テナント)がシステムオーバーロードすると、他のテナントの体験に影響を与える可能性があります。
【発明の概要】
【0007】
本発明は、階層的マルチテナント環境におけるストレージデータのシャーディングの問題を解決するものである。この環境では、テナントの固有データはシャード上に保存されている。テナントツリーはリンクしたコンポーネントでセグメント化され、データベースシャードはテナントのデータが別々のシャードに保存されるように割り当てられている。
【0008】
階層的テーブルは、通常、限られた範囲のネスティングを含む。本発明の目的は、最適化されたシャーディング技術を階層的構造に適用し、並列処理要求の性能を向上させることである。
【0009】
シャーディングは、個々のテナントのアクセスエリアを最小限のシャード数でカバーするように最適化されている。セグメント化のアルゴリズムには、階層的トポロジーにより接続され、1つのシャードには、テナントデータしか存在できないという制限がある。
【0010】
一実施形態では、階層的マルチテナントストレージシステムは、シャードに構成可能なコンピュータ可読記憶媒体と、記憶媒体に格納された複数のテナントノードと、テナントノードからアクセス可能な複数の子ノードと、テナントノード及び子ノードが配置された複数のシャードと、子ノードを格納するための少なくとも一つの仮想シャードとを具備する。
【0011】
一実施形態では、テナントデータは、子データにアクセスさせる、さらに、移行されたテナントデータを含んでいるツリーに割り当てられる。
別の実施形態では、階層的マルチテナントストレージシステムは、再構築されたテナントアクセスツリーを包含する。
【0012】
別の実施形態では、少なくとも1つのテナントのデータは、単一のシャードに格納される。
代替の実施形態では、テナントノードへの並列アクセス要求は、階層的マルチテナント分散型データストレージ環境において、各シャードが単一のテナントのデータを含む、データストレージをシャードでパーティショニングすること、階層的データアクセス構造の各レベルが階層の後続のすべてのレベルへのアクセスレベルに対応する、ストレージサービスのマルチテナント構造に等しい階層的データアクセス構造を作成すること、階層的データアクセス構造の下位レベルが単一のシャードへのアクセスレベルに対応しており、並列データアクセス要求を処理すること、によって処理され、各データアクセス要求は階層的構造に従ってターゲットシャードにルートされ、第一テナントのデータ要求は他のテナントのシャードをロードしない。
【0013】
代替の実施形態では、テナントノードは仮想シャードに格納される、階層的マルチテナントデータストレージ環境におけるテナントノードへの並列アクセスは、ビンパッキングアルゴリズムを用いて、テナントノードのストレージ割り当て構成を計算すること、計算された割り当て構成と一致するテナントノードのストレージのための少なくとも一つのシャードを仮想化すること、仮想シャード上の1つまたは複数のテナントノードへのアクセスの同時処理要求を受け取ることによって構成される。
【図面の簡単な説明】
【0014】
【
図1】階層的マルチテナントシステムにおけるデータシャーディングの実装を示す。
【
図2】データフュージョンとデータフィッションの例を示す。
【
図3】線形クラスタリングを含む階層的テナントシステムを示す。
【
図4】線形なデータ割り当てを含む階層的テナントシステムを示す。
【
図5】テナントのクラスタリングを含む階層的テナントシステムを示す。
【
図6】テナントツリー内の大規模ノードのクラスタリングを示す。
【
図7】テナントツリーを連結したコンポーネントにクラスタリングしたものを示す。
【
図8】複数のテナントを含む再構築されたシャードツリーを示す。
【
図9】テナントの移動に合わせた、再構築したシャードツリーを示す。
【
図10】物理シャード上に仮想シャードを割り当てる様子を示す。
【0015】
図11は、負荷テストにおけるテナントデータの分布を示す。
図12は、パーティションまたはシャードによるデータの分布を示す。
【発明を実施するための形態】
【0016】
階層的マルチテナントシステムにおけるシャーディング
マルチテナンシーとは、独立したサービスクライアントであるテナントが、単一の資源プールを共有することである。階層とは、システムのテナントが各テナントが自分自身のデータとその子サブツリーのデータにアクセスできるツリー状に配置されることを意味する。
【0017】
性能要件とは、処理時間、並列負荷条件下での要求に対する応答時間、システムが処理できる要求数のことである。性能は、スケーラビリティと密接な関係がある。スケーラビリティとは、システムの、リソースの追加に比例して性能を向上させる能力である。
【0018】
垂直スケーリングは、システムのコンピューティングリソースを追加または削除することで実施される。リソースの例としては、CPUサイズ、メモリサイズ、ネットワーク帯域幅などがある。アプリケーションプログラムの変更は不要であり、追加したリソース量に対して効率がリニアになる可能性がある。
【0019】
水平スケーリングは、アプリケーションのプログラムのインスタンスを追加また削除することで実現される。通常、新しいコピーにはそれぞれリソースが割り当てられるが、元の共有リソースプールで十分な場合もある。
【0020】
クラウドシステムでは、システムのスケーラビリティのことを「弾力性」と呼ぶ。データを多用するクラウドアプリケーションでは、データストアがボトルネックになることがある。データウェアハウスの弾力性は、パーティショニングやシャーディングにより向上させることができる。
【0021】
パーティショニングとシャーディングは、データを複数に分割するプロセスである。パーティションされたデータは、ストレージの1つのコピーに配置される。シャード化されたデータは、ストレージの異なるコピーに配置される。データは、テーブルの範囲キー、キーのハッシュ、タイムスタンプ、地理的データ、カラムで区切ることができる。
【0022】
図1は、クラウド型環境における階層的マルチテナントシステム100を示す。クラウドインスタンス102は、データベース104A、104B、104Cと、プラットフォームコア106を含む。プラットフォームコア106は、タスクマネージャインスタンス108A、108B、108C、108Dと、APIゲートウェイ110から構成される。タスクマネージャインスタンス108A、108B、108C、108Dは、データベース104A~Cと通信する。APIゲートウェイ110は、オペレーティングシステム122A上にREST API122とエージェント116、オペレーティングシステム122B上にAPIクライアント118、オペレーティングシステム122C上にユーザーインターフェース120を通して、顧客114と通信する。オペレーティングシステム122A~Cは、どのようなオペレーティングシステムであってもよい。
【0023】
データベース104A、104B、104Cは、テナント126A~Nに分割される。テナント126A~Dは、データベース104Aに対応し、テナント126E~Hは、データベース104Bに対応し、テナント126I~Nは、データベース104Cに対応する。
【0024】
マルチテナントシステムでデータをシャーディングする際に、データのシャード間での共有は、分裂(フィッション)または融合(フュージョン)のどちらかで行われることができる。
【0025】
図2は、テナントAデータ202、テナントBデータ204、テナントCデータ206に関わる、2つの可能なデータ割り当て方法200を示したものである。データ融合208は、インスタンス210と212に表示される。データ分裂214は、インスタンス216と218に表示される。
【0026】
データ融合は、データをセマンティックグループに結合する。各グループは、1つのリポジトリにのみ配置される。この配置により、グループ間のデータの一貫性が高いため、必要な時にグループ操作の高い性能が実現される。データ分裂は、異なるストレージに均等にセマンティックグループからデータを分離し、グループ操作を並行して実行する。
【0027】
データ融合は、テナントの分離がより良く、集約されたリクエストによるパフォーマンスコストを削減できるため、ストレージの割り当てに使用するのが望ましいとされている。
【0028】
テナント間の絶縁は、マルチテナントシステムの安全性と性能の重要な側面である。ストレージは、各テナント専用であるかのように動作する必要がある。各テナントのデータが1つのシャードにのみ格納されている場合、異常な負荷によるパフォーマンスの低下は、シャードネイバーにのみ影響することになる。各テナントのデータが複数のシャードに格納されている場合、異常な負荷はアプリケーション全体のパフォーマンスに影響する。シャードが離れた場所に配置される場合、シャードが遠く離れているテナントの処理時間が非常に長くなる可能性がある。
【0029】
ここでいうテナントやテナントノードとは、アプリケーション、仮想マシン、コンテナ、仮想サーバー、データベース、その他ホスト可能なプロセスを指す場合がある。
マルチテナントシステムでは、各テナントからの負荷力は、そのテナントのデータベースのデータ量に比例する。テナント数が多い場合、データ量に対する負荷力の比率は正規分布になることが予想される。テナント間の差は、基本的にサービスの利用度になる。全テナントのデータをシャードの数で割り、シャードが概ね均一になるようにすれば、これらのシャードに対する並列負荷も均一になる。
【0030】
テナントのデータは、限られたサイズの最小数のシャードに比較的均等に分配され、リバランスが可能である。どのデータを移行させるか、この分配方式に則って、どのように移行を実行するか、システムが決定する。ビンパッキングアルゴリズムは、最適な分配を実現するための好ましいツールである。
【0031】
この場合、各クライアント・テナントが自分自身の仮想アプリケーション・インスタンスを操作し、その子アプリケーション・インスタンスにアクセスできるアプリケーションに焦点が当てられる。テナントノードにはデータが格納され、また他のノードにリンクすることもある。
【0032】
図3は、テナントノード305、306、307を有する階層的システム300を示す。テナントノード305は、自ノード305と下流ノード307、308、309のデータにアクセスできる。テナントノード306は、ノード306、310、312、314にアクセスできる。テナント313は、ノード313、316、317にアクセスできる。
【0033】
同じデータベースにデータが格納されている場合、各テナント識別子を格納するカラムが存在する。各行には、格納されたデータの所有者が明示されている。素早くアクセスするには、各テナントのストレージをすぐに利用できるようにする必要がある。
【0034】
図4は、テナント401~417を有する階層的マルチテナントシステム400を示す。システム400では、テナントデータを割り当てられたシャードに均等に分割し、クライアントからのリクエストがテナントデータを持つシャードに行き、対応するフィルタが適用されるように整理できる。シャード間のデータの散乱が激しいと、パフォーマンスの問題が発生する。ルートテナントから離れたアクセスエリアには、多数のシャードのテナントデータが含まれることがある。また、シャードの数が増えるとパフォーマンスが低下することもある。
【0035】
図5は、テナント501~517がデータの散乱を避けるためにクラスタ化されている階層的マルチテナントシステム500を示す。
好ましくは、最適化手法を適用する前に、すべてのノードが許容されるコンテナサイズに収まる。許容コンテナサイズVより大きいノードがある場合、最適化の前にテナントツリーを修正することが望ましい。
図6は、ノード604、606、608を有するテナントツリー上にV以上のノードサイズの大ノード602が存在する場合のノード分割600の例を示す。新しいテナントツリーは、ノード602を必要なだけ多くのノード610、612に分割し、元の大きなノード602をアップデートし、そのサイズがVの数分の1になるようにすることによって作成されるのが望ましい。
【0036】
テナントノードは、サブツリーノードを含むシャードにアクセスできる。
図7は、シャード720、722、724、726、728に分割された、テナントノード701~717から構成された階層的テナントシャードツリー700を示す。
図7は、アクセスツリーが必ずしも一般的なシャードツリーのサブツリーであるとは限らないことを示している。例えば、
図7では、ルートノード702を含むシャード722は、ルート703を有するシャード720と、ルート708を有するシャード724の2つの子を持つ様子が示される。ツリーアクセステナント705は、ルートノード702を有するシャード722と、ルートノード708を有する子シャード724の2つの要素のみを有する。
図7が示す通り、シャードツリーのルートノードのすべての子が、アクセスツリーのルートノードの子になれるわけではない。
【0037】
コンテナをパッキングするアルゴリズムと2つの追加パラメータを組み合わせ、再配置のサポートに使用することができる。再利用が発生した場合や、いずれかのコンテナの利用率が低い場合、割り当てアルゴリズムがツリー全体に適用され、その結果に基づいて、移動を計算できる。しかし、このアルゴリズムでは、以前のコンテナへの分割を完全に無視するため、移行が非常に大規模になる可能性もある。
【0038】
図8は、テナントノード801~817を有する再構築されたシャードツリー800を示し、階層によるテナント移動の4つの可能なシナリオを示す。
図8では、ノード801’~817’は、シャード820、822、824、826上のノード801~817の移行後の位置を表している。
【0039】
シナリオ1では、非ルートテナント817は、元のセグメント内を817’に移動する。この移動は、既知のパーティショニング分割方式で実装できるため、クライアントが置換に気づくことはない。
【0040】
シナリオ2では、ルートテナント811は811’になる。この場合、システムが正しく動作するには、シャードツリーを再構築する必要がある。
シナリオ3では、非ルートテナント809が809’となり、このテナントのアクセスツリーが1つの要素を有する別のセグメントに移動する。この場合、選択肢は3つある。データは新しいセグメントで新しいシャードに移行されることが可能である。あるいは、新しいシャードが割り当てられ、そこにデータが移行されることも可能である。あるいは、古いシャードでデータを使い続けることもできる。
【0041】
最初の2つの選択肢では、このテナントのデータを別のシャードに移動する意味があるかどうかを判断するためにアルゴリズムが使用される。データが別のシャードに移動される場合は、シャードツリーをアップデートする必要がある。
【0042】
選択肢3では、仮想シャードを実装する必要がある。そして、仮想シャードはツリーシャードも定義する。テナント自身の仮想シャードおよび一部の仮想シャードのみが、同じ物理シャード上に存在できる。仮想シャードは、物理シャードを形成するセグメントを分割することで得られる。
図8では、ルート808と同じシャード上に、ルート808’と809’を有する2つの仮想シャードが存在することになる。これは、1つの物理ストレージに配置されたパーティションとして見られる可能性もある。
【0043】
移行シナリオ3は実現がより困難であるが、テナントのシームレスな移動が可能になる。
シナリオ4では、非ルートテナント815が、このテナントのアクセスツリーが1つ以上の要素を有する別のセグメント815’に移動する。このシナリオは、シナリオ3をより一般化したものである。子シャードのデータと同様に、元のシャードのデータにアクセスできる必要があるため、シャードツリーの再構築を行う必要がある。
【0044】
ツリー内のテナントの配置の変更、クライアントのデータへのアクセスを可能にするアルゴリズムが選ばれる。
物理ストレージ間でデータ移行を行い、後からテナントツリーを構築する方法もある。
【0045】
また、ツリーの再構築をプロセスに組み込み、ツリーの再構築と同時に移行を行うという方法もある。
さらに、物理シャードとの対応を考慮した仮想シャードツリーを導入し、テナントツリーの再構築とは別に実際の移行を行うという方法もある。
【0046】
転送ができるだけ高速に行われる必要がある場合に、一つ目の方法が使用できる。ホットデータを先に移行させ、その後コールドデータを移行させることが可能である。この方法では、クライアントがそのデータをしばらく見ることができないという欠点がある。
【0047】
移行を即座に行う必要はないが、移行後のデータの完全な一貫性が重要である場合は、2つ目の方法を適用できる。まず、必要に応じて別のストレージが配置される。その後、テナントが利用可能なすべてのデータの、現在のシャードからターゲットデータストアにホットマイグレーションが行われる。移行中に、新しいシャードが追加されるとシャードツリーが再構築され、論理的に転送が終了する。この時点で、古いストレージのデータを削除してもよい。古いストレージにあるデータは、アクセス制限により、この時点ではとにかくテナントが見ることができないため、削除することができる。ユーザーはデータの一貫性が失われることに伴う副作用に気がつくことがないが、操作の終了を待つ必要がある。
【0048】
図9は、新しいシャードを追加してシャードツリーを再構築した移行を示す。
図9では、ノード901’~917’は、ノード901~917の移行後の位置を表している。シャード920、922、924、926から構成されるツリーは、新しいシャード928、930、932、934及び元のシャード924として再構築される。
【0049】
仮想シャードによる第3のアプローチを示すのは、
図10である。
図10では、ノード1001’~1017’は、シャード1020、1022、1024、1026上のノード1001~1017の移行後の位置を表している。この方法では、物理シャードツリーと仮想シャードツリーが別々に存在することにより可能である。まず、元のテナントデータ用に仮想シャードが割り当てられる。それと同時に、仮想シャードツリーが再構築され、テナント移転作業が論理的に完了する。仮想シャードから物理シャードへの両対称マッピングが復元されるように、必要な移行は非同期に実行される。
【0050】
このプロセスは、ユーザーにはシームレスに見える。テナントの移転は瞬時に行われ、データの一貫性を失うことはない。
コンテナへの階層的なパッキングは、NP困難な問題である。目的は、限られた数の容器に、決められた形状のものを、最も少ない数の容器で収めるというものである。厳密なアルゴリズムの使用は、小さな次元でのみ可能である。多項式アルゴリズムは、発見的な近似として使用される。これらのアルゴリズムは、オブジェクトのサイズが既知であるかどうかにより、オンラインまたはオフラインのいずれかになる。オンライン方法は、オブジェクトに関する情報を取得し、その場でパックを行う。オフラインの方法は、オブジェクトのサイズを完全に把握した上でパッキング問題を解決する。オブジェクトのサイズが既知であるため、好ましくはオフラインの方法が使用される。
【0051】
簡単な多項式オフラインパッキングアルゴリズムとして、Best Fit Decreasing(BFD)と First Fit Decreasing(FFD)がある。
【0052】
実際のシステムでは、テナントツリーでの重みとノードの分布が時間の経過とともに変化し、最初のパーティションが効かなくなることがある。シャード間の分布を均一に保つには、リポジトリは最終的にリバランスが必要になる。
【0053】
サブツリー全体を1つのコンテナに収めることができれば、HFFD(Hierarchical First Fit Decreasing)アルゴリズムは、通常のFFDと同じ結果を得る。サブツリーがコンテナ全体に収まらない場合、すべての子サブツリーは、ルートノートとともにそのノードサイズによって降順にソートされる。
【0054】
HGD(Hierarchical Greedy Decreasing)アルゴリズムは、コンテナ内のサブツリーを異なる方法で配置する。サブツリーは新しいコンテナに配置され、コンテナのリストに追加される。HGDアルゴリズムは、HFFDよりも多くのコンテナにツリーを分割するため、移行の回数とサイズを最小にする。
【0055】
上記のアルゴリズムはノードサイズVのノードでうまく機能するが、許容コンテナサイズより大きなノードを有するツリーが存在する可能性がある。この場合、アルゴリズムを適用する前に、ツリーを修正する必要がある。一例として、
図6に示し、前述したノード分割方法がある。
【0056】
階層的ビンパッキングアルゴリズムは、過負荷または低負荷のコンテナからのツリーセグメントに対してのみアルゴリズムを実行することにより、動的環境に最適化されている。好ましくは、過負荷または低負荷のコンテナに含まれるノードのリストが生成される。リストは、すべての過負荷または過少負荷のコンテナを削除することによりフィルタリングされる。そして、アルゴリズムを適用できる。この動的拡張はコンテナのパッキングに関する全てのアルゴリズムに適用可能であり、その動的変形をdHFFD(dynamic Hierarchical First Fist Decreasing)とdHGD(dynamic Hierarchical Greedy Decreasing)アルゴリズムと呼ぶことにする。
【0057】
実際のアプリケーションの多くでは、コンテナの数を最小限に抑えることで運用コストを削減できるため、dHFFDがより適したアルゴリズムである。性能要件が運用コストに勝る場合は、割り当てストレージの数を増やすことで移行回数を減らすことができるdHGDが望ましい。
【0058】
このシステムと方法は、データベースやファイルストレージなど、同様のスケーリング問題を抱える他のストレージシステムにも適用可能である。
【外国語明細書】