(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-28
(45)【発行日】2024-04-05
(54)【発明の名称】メタデータ記憶方法およびデバイス
(51)【国際特許分類】
G06F 3/06 20060101AFI20240329BHJP
G06F 16/901 20190101ALI20240329BHJP
【FI】
G06F3/06 301Z
G06F16/901
(21)【出願番号】P 2022560503
(86)(22)【出願日】2021-04-30
(86)【国際出願番号】 CN2021091294
(87)【国際公開番号】W WO2021223669
(87)【国際公開日】2021-11-11
【審査請求日】2022-10-04
(31)【優先権主張番号】202010374530.8
(32)【優先日】2020-05-06
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202010615013.5
(32)【優先日】2020-06-30
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【氏名又は名称】野村 進
(72)【発明者】
【氏名】任 仁
(72)【発明者】
【氏名】王 晨
【審査官】松平 英
(56)【参考文献】
【文献】米国特許出願公開第2020/0004852(US,A1)
【文献】特開2010-204970(JP,A)
【文献】特開2015-194973(JP,A)
【文献】米国特許出願公開第2020/0012619(US,A1)
【文献】中国特許出願公開第109726145(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
16/00-16/958
(57)【特許請求の範囲】
【請求項1】
記憶デバイスによって実行されるメタデータ記憶方法であって、
第1のメタデータ記憶ユニットおよび第2のメタデータ記憶ユニットを提供するステップであって、前記第1のメタデータ記憶ユニットのサイズが、前記第2のメタデータ記憶ユニットのサイズよりも大きい、ステップと、
対象データのサイズが指定された閾値に達した場合、前記第1のメタデータ記憶ユニットに基づいて前記対象データのメタデータを記憶するステップと、または
前記対象データの前記サイズが前記指定された閾値未満である場合、前記第2のメタデータ記憶ユニットに基づいて前記対象データの前記メタデータを記憶するステップと
を含
み、
前記対象データの前記サイズが前記指定された閾値未満である場合、前記方法が、
前記対象データの前記サイズが前記指定された閾値よりも大きく更新された場合、前記第2のメタデータ記憶ユニット内の前記対象データの前記メタデータを削除するステップと、
更新された対象データのメタデータを前記第1のメタデータ記憶ユニット内に記憶するステップと
をさらに含む、方法。
【請求項2】
前記方法が、
メタデータ記憶ユニットのサイズの最大値および最小値を設定するステップであって、前記第1のメタデータ記憶ユニットの前記サイズが前記最小値と前記最大値との間であり、前記第2のメタデータ記憶ユニットの前記サイズが前記最小値と前記最大値との間である、ステップ
をさらに含む、請求項1に記載の方法。
【請求項3】
前記対象データの前記サイズが前記指定された閾値よりも大きい場合、前記方法が、
前記対象データの前記サイズが前記指定された閾値未満に更新された場合、前記第1のメタデータ記憶ユニット内の前記対象データの前記メタデータの差分メタデータを削除するステップであって、前記差分メタデータが、更新された対象データのメタデータと前記対象データの前記メタデータとの間の差分を示す、ステップと、
前記差分メタデータを前記第2のメタデータ記憶ユニット内に記憶するステップと
をさらに含む、請求項2に記載の方法。
【請求項4】
前記方法が、複数の第2のメタデータ記憶ユニットが存在し、前記複数の第2のメタデータ記憶ユニットがそれぞれ異なる対象データのメタデータを記憶し、前記複数の第2のメタデータ記憶ユニットの重畳サイズが前記第1のメタデータ記憶ユニットの前記サイズ以下である場合、前記複数の第2のメタデータ記憶ユニット内の前記メタデータを削除するステップと、
前記異なる対象データの前記メタデータを前記第1のメタデータ記憶ユニット内に記憶するステップと
をさらに含む、請求項1から
3のいずれか一項に記載の方法。
【請求項5】
第1のメタデータ記憶ユニットおよび第2のメタデータ記憶ユニットであって、前記第1のメタデータ記憶ユニットのサイズが、前記第2のメタデータ記憶ユニットのサイズよりも大きい、第1のメタデータ記憶ユニットおよび第2のメタデータ記憶ユニットと、
対象データのサイズが指定された閾値に達した場合、前記第1のメタデータ記憶ユニットに基づいて前記対象データのメタデータを記憶し、または
前記対象データの前記サイズが前記指定された閾値未満である場合、前記第2のメタデータ記憶ユニットに基づいて前記対象データの前記メタデータを記憶するように構成された処理ユニットと
を備え
、
前記対象データの前記サイズが前記指定された閾値未満である場合、削除ユニットをさらに備え、
前記削除ユニットが、前記対象データの前記サイズが前記指定された閾値よりも大きく更新された場合、前記第2のメタデータ記憶ユニット内の前記対象データの前記メタデータを削除するように構成され、
前記処理ユニットが、更新された対象データのメタデータを前記第1のメタデータ記憶ユニット内に記憶するようにさらに構成される、記憶デバイス。
【請求項6】
前記記憶デバイスが、
メタデータ記憶ユニットのサイズの最大値および最小値を設定するように構成された設定ユニットであって、前記第1のメタデータ記憶ユニットの前記サイズが前記最小値と前記最大値との間であり、前記第2のメタデータ記憶ユニットの前記サイズが前記最小値と前記最大値との間である、設定ユニット
をさらに備える、請求項
5に記載の記憶デバイス。
【請求項7】
前記対象データの前記サイズが前記指定された閾値よりも大きい場合、前記記憶デバイスが、削除ユニットをさらに備え、
前記削除ユニットが、前記対象データの前記サイズが前記指定された閾値未満に更新された場合、前記第1の
メタデータ記憶ユニット内の前記対象データの前記メタデータの差分メタデータを削除するようにさらに構成され、前記差分メタデータが、更新された対象データのメタデータと前記対象データの前記メタデータとの間の差分を示し、
前記処理ユニットが、前記差分メタデータを前記第2のメタデータ記憶ユニット内に記憶するようにさらに構成される、
請求項
6に記載の記憶デバイス。
【請求項8】
複数の第2のメタデータ記憶ユニットが存在し、前記複数の第2のメタデータ記憶ユニットがそれぞれ異なる対象データのメタデータを記憶し、前記複数の第2のメタデータ記憶ユニットの重畳サイズが前記第1のメタデータ記憶ユニットの前記サイズ以下である場合、前記削除ユニットが、前記複数の第2のメタデータ記憶ユニット内の前記メタデータを削除するようにさらに構成され、
前記処理ユニットが、前記異なる対象データの前記メタデータを前記第1のメタデータ記憶ユニット内に記憶するようにさらに構成される、
請求項
5から
7のいずれか一項に記載の記憶デバイス。
【請求項9】
コンピュータ記憶媒体であって、前記コンピュータ記憶媒体が命令を記憶し、前記命令がコンピュータ上で実行されたときに、前記コンピュータが請求項1から
4のいずれか一項に記載の方法を実行できるようになる、コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0002】
本出願の実施形態は、コンピュータ技術の分野に関し、具体的には、メタデータ記憶方法およびデバイスに関する。
【背景技術】
【0003】
性能およびコストは、記憶システムが追求する重要な指標である。豊富な記憶機能を提供するために、データ記憶中にインデックス関係が確立される。インデックス関係を使用して、ユーザの論理データ空間と基礎を成す記憶プールまたは記憶ディスクの物理データ空間との間のマッピング関係を管理する。
【0004】
マッピング関係の確立中、物理データ空間はいくつかの固定サイズユニットに分割され、そのユニットは粒度とも呼ばれる。論理アドレスから各粒度の物理アドレスへのマッピングは、記憶システムではインデックスメタデータとも呼ばれる。
【0005】
既存の記憶システムでは、同じ期間に大量のデータを読み出す必要がある場合、サーバは、読み出す必要がある大量のデータを、照会または読み出しのための固定サイズ粒度の複数のピースのデータに分割する。これに対応して、複数のピースのインデックスメタデータが生成される。大量のインデックスメタデータは、過剰な記憶リソースを消費し、データ照会または読み出し効率に影響を及ぼす。
【発明の概要】
【0006】
本出願の実施形態は、メタデータ記憶方法およびデバイスを提供する。したがって、メタデータアクセス時には、対象データのサイズに基づいて対象データのメタデータが対応するメタデータ記憶ユニット内に記憶され、対象データを複数のピースのメタデータに分割して記憶する必要がない。これにより、記憶リソースが節約される。
【課題を解決するための手段】
【0007】
本出願の実施形態の第1の態様は、メタデータ記憶方法を提供する。本方法は、以下を含む。
【0008】
記憶デバイスは、第1のメタデータ記憶ユニットと、第2のメタデータ記憶ユニットと、を提供する。第1のメタデータ記憶ユニットのサイズは、第2のメタデータ記憶ユニットのサイズよりも大きい。これに対応して、サイズはデータ粒度であってもよい。
【0009】
対象データのサイズが指定された閾値に達した場合、記憶デバイスは、対象データのメタデータを第1のメタデータ記憶ユニット内に記憶する。対象データは、記憶デバイス内に記憶する必要があるデータを示す。
【0010】
あるいは、対象データのサイズが指定された閾値未満である場合、記憶デバイスは、対象データのメタデータを第2のメタデータ記憶ユニット内に記憶する。
【0011】
本出願の本実施形態では、対象データのサイズに基づいて対象データのメタデータが対応する記憶ユニット内に記憶され、対象データを複数のピースのメタデータに分割して記憶する必要がない。これにより、記憶リソースが節約される。
【0012】
場合により、可能な実装形態では、記憶デバイスは、メタデータ記憶ユニットのサイズの最大値および最小値を設定する。第1のメタデータ記憶ユニットのサイズは、最小値と最大値との間であり、第2のメタデータ記憶ユニットのサイズもまた、最小値と最大値との間である。
【0013】
本出願の本実施形態では、メタデータ記憶ユニットのサイズの最大値および最小値が設定される。これにより、解決策の実現性が向上する。
【0014】
場合により、可能な実装形態では、対象データが初めて記憶されるとき、対象データのサイズは、指定された閾値未満である。次いで、対象データが更新され、これに対応して対象データのサイズが指定された閾値よりも大きくなるように更新される。この場合、記憶デバイスは、第2のデータ記憶ユニット内の対象データのメタデータを削除し、更新された対象データのメタデータを第1のメタデータ記憶ユニット内に記憶する。
【0015】
本出願の本実施形態では、対象データのサイズが増加すると、対象データのメタデータは、より大きなサイズの第1のメタデータ記憶ユニット内に記憶される。これにより、メタデータ記憶の柔軟性が向上する。
【0016】
場合により、可能な実装形態では、対象データが初めて記憶されるとき、対象データのサイズは、指定された閾値よりも大きい。次いで、対象データが更新され、これに対応して対象データのサイズが指定された閾値未満になるように更新される。この場合、記憶デバイスは、第1のデータ記憶ユニット内の対象データのメタデータの差分メタデータを削除する。差分メタデータは、更新された対象データのメタデータと対象データのメタデータとの間の差分を示す。加えて、記憶デバイスは、差分メタデータを第2のメタデータ記憶ユニット内に記憶する。
【0017】
本出願の本実施形態では、対象データのサイズが減少すると、対象データのメタデータの差分メタデータは第2のメタデータ記憶ユニット内に記憶され、異なるメタデータはカテゴリによって管理される。これにより、メタデータ記憶の柔軟性が向上する。
【0018】
場合により、可能な実装形態では、複数の第2のメタデータ記憶ユニットが記憶デバイス内に存在し、複数の第2のメタデータ記憶ユニットがそれぞれ異なる対象データのメタデータを記憶し、複数の第2のメタデータ記憶ユニットの重畳サイズが第1のメタデータ記憶ユニットのサイズ以下である場合、記憶デバイスは、複数の第2のメタデータ記憶ユニット内のメタデータを削除し、異なる対象データのメタデータを第1のメタデータ記憶ユニット内に記憶する。
【0019】
本出願の本実施形態では、複数の記憶ユニットが比較的小さなサイズの対象データのピースのメタデータをそれぞれ記憶する場合、比較的小さなサイズの対象データのピースのメタデータは、大きなメタデータ記憶ユニットに組み合わされてもよい。これにより、メタデータ記憶の柔軟性が向上し、メタデータ記憶リソースが節約される。
【0020】
本出願の実施形態の第2の態様は、記憶デバイスを提供する。記憶デバイスは、
第1のメタデータ記憶ユニットのサイズが、第2のメタデータ記憶ユニットのサイズよりも大きい、第1のメタデータ記憶ユニットおよび第2のメタデータ記憶ユニットと、
対象データのサイズが指定された閾値に達した場合、第1のメタデータ記憶ユニットに基づいて対象データのメタデータを記憶し、または
対象データのサイズが指定された閾値未満である場合、第2のメタデータ記憶ユニットに基づいて対象データのメタデータを記憶するように構成された処理ユニットと、を含む。
【0021】
場合により、記憶デバイスは、
メタデータ記憶ユニットのサイズの最大値および最小値を設定するように構成された設定ユニットであって、第1のメタデータ記憶ユニットのサイズが最小値と最大値との間であり、第2のメタデータ記憶ユニットのサイズが最小値と最大値との間である、設定ユニットをさらに含む。
【0022】
場合により、対象データのサイズが指定された閾値未満である場合、記憶デバイスは、削除ユニットをさらに含む。
【0023】
削除ユニットは、対象データのサイズが指定された閾値よりも大きく更新された場合、第2のデータ記憶ユニット内の対象データのメタデータを削除するように構成される。
【0024】
処理ユニットは、更新された対象データのメタデータを第1のメタデータ記憶ユニット内に記憶するようにさらに構成される。
【0025】
場合により、対象データのサイズが指定された閾値よりも大きい場合、記憶デバイスは、削除ユニットをさらに含む。
【0026】
削除ユニットは、対象データのサイズが指定された閾値未満になるように更新された場合、第1のデータ記憶ユニット内の対象データのメタデータの差分メタデータを削除するようにさらに構成される。差分メタデータは、更新された対象データのメタデータと対象データのメタデータとの間の差分を示す。
【0027】
処理ユニットは、差分メタデータを第2のメタデータ記憶ユニット内に記憶するようにさらに構成される。
【0028】
場合により、複数の第2のメタデータ記憶ユニットが存在し、複数の第2のメタデータ記憶ユニットがそれぞれ異なる対象データのメタデータを記憶し、複数の第2のメタデータ記憶ユニットの重畳サイズが第1のメタデータ記憶ユニットのサイズ以下である場合、削除ユニットは、複数の第2のメタデータ記憶ユニット内のメタデータを削除するようにさらに構成される。
【0029】
処理ユニットは、異なる対象データのメタデータを第1のメタデータ記憶ユニット内に記憶するようにさらに構成される。
【0030】
本出願の実施形態の第3の態様は、記憶システムを提供する。記憶システムは、
本出願の第1の態様の実装形態において第1のメタデータ記憶ユニットによって実行されるステップを実行するように構成された、第1のメタデータ記憶ユニットと、
本出願の第1の態様の実装形態において第2のメタデータ記憶ユニットによって実行されるステップを実行するように構成された、第2のメタデータ記憶ユニットと、を含む。
【0031】
本出願の実施形態の第4の態様は、記憶デバイスを提供する。記憶デバイスは、
プロセッサ、メモリ、および入出力インターフェースを含み、プロセッサおよびメモリは、入出力インターフェースに接続され、メモリは、プログラムコードを記憶するように構成され、プロセッサは、メモリ内のプログラムコードを呼び出して、本出願の第1の態様の実装形態において提供される方法を実行する。
【0032】
本出願の実施形態の第5の態様は、記憶媒体を提供する。本発明の技術的解決策を本質的に、または従来技術に寄与する部分を、または技術的解決策のすべてもしくは一部を、ソフトウェア製品の形態で実現することができることに留意されたい。コンピュータソフトウェア製品は、記憶媒体内に記憶され、前述のデバイスによって使用されるコンピュータソフトウェア命令を記憶するように構成される。コンピュータソフトウェア製品は、第1の態様におけるメタデータ記憶方法を実行するように設計されたプログラムを含む。
【0033】
記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読み出し専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスクなどの、プログラムコードを記憶し得る任意の媒体を含む。
【0034】
本出願の実施形態の第6の態様は、命令を含むコンピュータプログラム製品を提供する。コンピュータプログラム製品がコンピュータ上で動作するとき、コンピュータは本出願の第1の態様の実装形態における方法を実行することが可能である。
【0035】
上述のプロセッサは、汎用中央処理装置(Central Processing Unit、CPU)、マイクロプロセッサ、特定用途向け集積回路(application-specific integrated circuit、ASIC)、または第1の態様のメタデータ記憶方法のプログラム実行を制御するように構成された1つまたは複数の集積回路であってよい。
【0036】
前述の技術的解決策から、本出願の実施形態が以下の利点を有することが知られ得る。
【0037】
本出願の実施形態では、対象データのサイズに基づいて対象データのメタデータが対応する記憶ユニット内に記憶され、対象データを複数のピースのメタデータに分割して記憶する必要がない。これにより、記憶リソースが節約される。
【図面の簡単な説明】
【0038】
【
図1】本出願の一実施形態によるメタデータ記憶システムのフレームワークの概略図である。
【
図2】本出願の一実施形態によるメタデータ記憶方法の概略的な流れ図である。
【
図3】本出願の一実施形態によるメタデータ記憶方法の一シナリオの概略図である。
【
図4A】本出願の一実施形態によるメタデータ記憶方法の別のシナリオの概略図である。
【
図4B】本出願の一実施形態によるメタデータ記憶方法の別のシナリオの概略図である。
【
図5】本出願の一実施形態によるメタデータ記憶方法の別のシナリオの概略図である。
【
図6】本出願の一実施形態によるメタデータ記憶方法の別のシナリオの概略図である。
【
図7】本出願の一実施形態によるメタデータ記憶方法の別の概略的な流れ図である。
【
図8】本出願の一実施形態によるメタデータ記憶方法の別のシナリオの概略図である。
【
図9】本出願の一実施形態によるメタデータ記憶方法の別のシナリオの概略図である。
【
図10】本出願の一実施形態によるメタデータ記憶方法の別のシナリオの概略図である。
【
図11】本出願の一実施形態によるメタデータ記憶方法の別のシナリオの概略図である。
【
図12】本出願の一実施形態による記憶デバイスの構造の概略図である。
【
図13】本出願の一実施形態による記憶デバイスの別の構造の概略図である。
【発明を実施するための形態】
【0039】
本出願の実施形態は、データ記憶方法およびデバイスを提供する。したがって、データアクセス中に、対応する第1のインデックスノードは、第1のデータに基づいて生成され、第1のインデックスノードのデータ粒度は、最小データ粒度よりも大きいので、最小粒度に対応する複数のインデックスノードをこれに対応して生成する必要はない。これにより、記憶リソースが節約され、データの読み出し/書き込み効率が向上する。
【0040】
図1は、本出願の一実施形態によるメタデータ記憶システムのフレームワークの概略図である。
【0041】
本出願の一実施形態は、メタデータ記憶インデックスフレームワークを提供する。データ記憶インデックスフレームワークは複数のインデックスノードを含み、異なるインデックスノード間の対応関係はインデックスツリーフレームワークを構成する。図のMGTreeの場合、ルートインデックスノードは最大データ粒度に対応し、1つのルートインデックスノードは複数のサブインデックスノードに対応し、異なるサブインデックスノードはさらなるサブインデックスノードに対応する。同じ層のインデックスノードは、異なるデータ粒度に対応してもよく、または同じデータ粒度に対応してもよい。これは、本出願の本実施形態では特に限定されない。上位層インデックスノードと下位層インデックスノードとの間の対応関係において、下位層インデックスノードに対応するデータ粒度は、上位層インデックスノードに対応するデータ粒度よりも小さく、言い換えると、下位層インデックスノードは、上位層インデックスノードに付属している。
【0042】
可能な実装形態では、最下位層インデックスノードは最小データ粒度に対応し、最小データ粒度は記憶システムに事前設定される。最上位層インデックスノードは、最大データ粒度に対応するインデックスノードを示すMax Grainと命名することができる。言い換えると、最上位層インデックスノードは、メタデータ記憶ユニットのサイズの最大値に対応する。最下位層インデックスノードは、最小データ粒度に対応するインデックスノードを示すMin Grainと命名することができる。言い換えると、最下位層インデックスノードは、メタデータ記憶ユニットのサイズの最小値に対応する。
【0043】
MGTreeは、インデックス記憶システムに独立して設定されてもよく、または既存のインデックス記憶システムにグラフトされてもよいことに留意されたい。例えば、MGTreeは、ARTreeにグラフトされてもよい。より具体的には、MGTree内のルートインデックスノードは、ARTree内の最下位層インデックスノードに対応する。ARTreeの場合、固定データブロックをインデックスする本来の機能は、MGTree内のルートインデックスノードをインデックスする機能に変更される。1つのMGTreeサブインデックスインスタンスは全体としてARTreeプライマリインデックスの1つのレコードに対応し、固定サイズのデータ粒度を依然として記述するが、データ粒度のサイズは、例えば1MBまたは2MBなど、対応して設定されてもよい。実際の応用時には、MGTreeは、代替的に、別のインデックス記憶システム、例えば、B+ツリーインデックス記憶システムにグラフトされてもよいことが理解されよう。これは、本明細書では特に限定されない。
【0044】
インデックス記憶フレームワークは、記憶デバイス、例えば、記憶機能を有する記憶サーバまたは端末デバイスに適用されてもよい。これは、本明細書では特に限定されない。
【0045】
実際の応用時には、記憶デバイスは、少なくとも1つの第1のメタデータ記憶ユニットと、少なくとも1つの第2のメタデータ記憶ユニットと、を含み得る。メタデータ記憶ユニットのサイズは、データ粒度を示す。メタデータ記憶ユニットは、対象データのメタデータを記憶し、メタデータは、インデックスノード内に記憶されたインデックス情報を示す。したがって、記憶ユニットは、インデックスノードに対応する。
【0046】
以下、
図1の記憶システムフレームワークを参照して、本出願の実施形態におけるデータ記憶方法を説明する。
【0047】
本出願の実施形態では、データに対応するインデックス情報を記憶デバイスに書き込む2つの方式がある。1つの方式は、重複モードである。具体的には、複写データに対応するインデックス情報が書き込まれると、対応するインデックスノードが書き込みシーケンスにおいて確立され、以前のインデックスノード内の既存のインデックス情報は変更されない。このようにして、データを書き込むときに、関連するインデックス情報を迅速に書き込むことができる。これにより、データの書き込み効率が向上する。他の方式は、線形モードである。具体的には、複写データに対応するインデックス情報が書き込まれると、以前のインデックスノード内の既存のインデックス情報が最初に変更され、次いで、現在変更されているデータの対応するサブインデックスノードが確立され、現在変更されているデータのインデックス情報が新しく確立されたサブインデックスノード内に記憶される。線形モードでは、データ読み出し中に、インデックス情報が繰り返されるかどうかを再判定することなく、インデックス情報に基づいて対応するデータを直接読み出すことができる。これにより、データの読み出し効率が向上する。具体的には、本出願の実施形態は、2つの異なるインデックス情報確立方式を別々に説明する。
【0048】
1.重複モード
図2は、本出願の一実施形態によるデータ記憶方法の概略的な流れ図である。
【0049】
ステップ201において、記憶デバイスは、第1の書き込み要求を受信する。
【0050】
端末デバイスまたは別のネットワークデバイスが記憶デバイスにデータを書き込む必要があるとき、記憶デバイスは、第1の書き込み要求を受信する。第1の書き込み要求を使用して、第1のデータを書き込む。言い換えると、第1のデータは、対象データである。
【0051】
具体的には、可能な実装形態では、第1の書き込み要求は、書き込まれるべき第1のデータのデータ長および関連情報を含む。記憶デバイスは、第1の書き込み要求に含まれる第1のデータのデータ長および関連情報に基づいて記憶アドレスを割り当てる。
【0052】
本出願の本実施形態は、複数のシナリオに適用される。例えば、帯域幅シナリオでは、端末デバイスまたは別のネットワークデバイスは、単位時間に大量のデータを書き込み、例えば、1msに256kbまたは1mbのデータを書き込む。この場合、第1の書き込み要求が書き込む必要があるデータのサイズは、256kbまたは1mbである。
【0053】
ステップ202において、記憶デバイスは、第1の書き込み要求に基づいて、サブインデックスツリーを生成する。
【0054】
第1の書き込み要求を取得した後、記憶デバイスは、第1の書き込み要求で搬送された関連情報に基づいてサブインデックスツリーを生成する。サブインデックスツリーは、プライマリインデックスツリーにおけるサブインデックスツリーである。プライマリインデックスツリーを使用して、記憶デバイスによって記憶されたデータを照会する。
【0055】
具体的には、プライマリインデックスツリーは、記憶デバイス内のメインインデックスフレームワークである。第1の書き込み要求内の書き込まれるべき第1のデータのデータ長および関連情報を取得した後、記憶デバイスは、第1のデータを書き込む必要がある対応するアドレスを割り当てる。記憶デバイスは、対応するアドレスに基づいてプライマリインデックスツリーを探索して、プライマリインデックスツリー内の対応するインデックスノードを見つけ、インデックスノードのサブインデックスツリーを生成する。サブインデックスツリーは少なくともルートノードを含み、ルートノードはMaxGrainである。
【0056】
異なるサブインデックスツリー内のルートノードのデータ粒度は異なっていてもよく、または同じであってもよいことに留意されたい。これは、実際の応用時には必要に応じて具体的に設定され、本明細書では具体的に限定されない。
【0057】
実際の応用時には、第1の書き込み要求が書き込みを要求する第1のデータのデータ粒度がサブインデックスツリー内のルートノードの事前設定されたデータ粒度よりも大きい場合、複数のサブインデックスツリーがプライマリインデックスツリーに別々に確立され、第1のデータがルートノードのデータ粒度のサイズの複数のピースのデータに分解され、次いで、分解された第1のデータが異なるサブインデックスツリー内に対応して記憶される。
【0058】
ステップ203において、記憶デバイスは、サブインデックスツリーおよび第1の書き込み要求に基づいて、第1のインデックスノードを生成する。
【0059】
サブインデックスツリーを生成した後、記憶デバイスは、サブインデックスツリーと第1の書き込み要求内の関連情報とに基づいて、第1のインデックスノードを生成する。第1のインデックスノードは、サブインデックスツリー内の子ノードである。第1のインデックスノードは、第1のデータのインデックス情報を記録する。第1のデータのインデックス情報を使用して、第1のデータを照会する。
【0060】
具体的には、サブインデックスツリーを生成した後、記憶デバイスは、第1のデータのデータ長に基づいて、第1のデータのインデックス情報をサブインデックスツリー内のルートノード内に記録するかどうかを判定する。言い換えると、対象データのサイズが指定された閾値に達した場合、第1のメタデータ記憶ユニットに基づいて、対象データのメタデータが記憶される。この場合、第1のメタデータ記憶ユニットは、ルートノードである。第1のデータのデータ長がMaxGrainデータ粒度と等しい場合、記憶デバイスは、ルートノード内に第1のデータのインデックス情報を記録し、言い換えれば、ルートノードは、第1のインデックスノードである。第1のデータのデータ長がMaxGrainデータ粒度未満である場合、言い換えると、対象データのサイズが指定された閾値未満である場合、第2のメタデータ記憶ユニットに基づいて、対象データのメタデータが記憶される。この場合、第2のメタデータ記憶ユニットは、ルートノードの下位のサブインデックスノードである。サブインデックスノードは、ルートノードの下位に生成され、第1のデータのインデックス情報は、サブインデックスノードに記録される。この場合、サブインデックスノードは、第1のインデックスノードである。
【0061】
好ましくは、可能な実装形態では、第1のデータのデータ長がルートノードのデータ粒度の半分よりも大きく、ルートノードのデータ粒度未満である場合、記憶デバイスは、第1のデータのインデックス情報をサブインデックスツリー内のルートノード内に記録する。第1のデータのデータ長がルートノードのデータ粒度の半分以下である場合、記憶デバイスは、ルートインデックスノードの下位に新しいサブインデックスノードを生成し、第1のデータのインデックス情報を新しいサブインデックスノード内に記録する。
【0062】
記憶デバイスは、第1のデータを最小データ粒度のいくつかのピースのデータに分割し、これに対応して最小データ粒度のインデックス情報を生成する必要なく、第1のデータのデータ長に基づいて、対応するインデックス情報を生成し、インデックス情報を対応するインデックスノード内に記憶することに留意されたい。これにより、インデックス情報を記憶するために記憶デバイスによって使用される記憶リソースが節約される。
【0063】
例えば、第1の書き込み要求が2MBのデータの書き込みを要求する場合、記憶デバイスは、インデックスツリー内の対応するインデックスノードのサブインデックスツリーを生成し、データのインデックス情報をルートノード内に記録する。言い換えると、ルートノードに対応するデータ粒度は、2MBである。
【0064】
ステップ204において、記憶デバイスは、第2の書き込み要求を受信する。
【0065】
第1の書き込み要求のインデックス情報を記憶した後、記憶デバイスは、第2の書き込み要求を受信する。第2の書き込み要求を使用して、第2のデータを書き込む。第2のデータが書き込まれる論理アドレスは、第1のデータのインデックス情報が位置するサブインデックスツリーの論理アドレス範囲に属する。
【0066】
ステップ205において、記憶デバイスは、第2の書き込み要求およびサブインデックスツリーに基づいて、第2のインデックスノードを生成する。
【0067】
第2の書き込み要求を受信した後、記憶デバイスは、第2の書き込み要求およびサブインデックスツリーに基づいて、第2のインデックスノードを生成する。第2のインデックスノード内のインデックス情報を使用して、第2のデータを照会する。
【0068】
可能な実装形態では、第2のデータが第1のデータを変更することによって取得されたデータであり、第2のデータのデータ長が第1のデータのデータ長未満である場合、記憶デバイスは、第2の書き込み要求で搬送された関連情報、サブインデックスツリーに記録されたインデックス情報、および第1のインデックスノードに基づいて、第2のインデックスノードを生成する。第2のインデックスノードは、第1のインデックスノードの子ノードである。
図3に示すように、
図3の左側の棒のうち旧から新の方向に向かって、最下位層の棒は、最初に書き込まれた第1のデータに対応するインデックス情報を示し、最上位層の棒は、最後に書き込まれ、かつ第1のデータを変更することによって取得されるデータに対応するインデックス情報を示す。最下位から最上位の棒は、異なる書き込み要求に基づいて、第1のデータを変更することによって取得されたデータに対応するインデックス情報を順に示す。異なるグリッド棒は、変更によって取得された異なるデータに対応する異なるインデックス情報を示す。
図3の右側のデンドログラムでは、最上位層ノードがルートノードであり、ルートノードの下位のノードがサブインデックスツリー内のサブインデックスノードである。
【0069】
具体的には、可能な実装形態では、第2の書き込み要求で搬送された第2のデータの論理アドレス情報は、第1のデータが位置するサブインデックスツリーに第2のデータを書き込むことを示す。加えて、第2のデータのデータ長は、第1のデータのデータ長未満である。言い換えると、第2のデータが第1のデータを変更することによって取得されたデータであることを示す。記憶デバイスは、第1のデータに対応する第1のインデックスノードの下位に、新たなインデックスノード、すなわち、第2のインデックスノードを確立し、第2のデータに対応するインデックス情報を第2のインデックスノード内に記憶する。実際の応用時には、第1のデータは対象データであり、第2のデータは更新された対象データであり、指定された閾値は、第1のデータに対応するデータ粒度であり、差分メタデータは、第1のデータを変更することによって取得されたデータに対応するインデックス情報を示す。この場合、更新された対象データのサイズが指定された閾値未満である場合、差分メタデータは第2のメタデータ記憶ユニット内に記憶され、第2のメタデータ記憶ユニットは第2のインデックスノードである。
【0070】
可能な実装形態では、第2のデータのデータ長が第1のデータのデータ長以上である場合、第2のデータが第1のデータをカバーすることを示す。記憶デバイスは、第2のデータの論理アドレス情報および第2のデータの論理アドレス情報に対応する見つかったサブインデックスツリーを使用することによって、第2のデータが第1のデータを変更することによって取得されたデータであると判定する。対応する第1のインデックスノードを見つけた後、記憶デバイスは、第1のインデックスノードを削除する。
【0071】
第2のデータのデータ長が第1のデータのデータ長と等しい場合、記憶デバイスは、第1のインデックスノードと同じ位置に第2のインデックスノードを生成する、または記憶デバイスは、第1のインデックスノードと平行な位置に第2のインデックスノードを生成する。これは、本明細書では特に限定されない。
【0072】
第2のデータのデータ長が第1のデータのデータ長よりも長い場合、記憶デバイスは、第1のインデックスノードの親ノードの位置に第2のインデックスノードを生成する。可能な実装形態では、第2のインデックスノードが生成される位置は、第2のデータのデータ長に基づいて判定されてもよい。例えば、ルートノードから開始して、サブインデックスツリーが1層だけ下に進むたびに、データ粒度が半分に減少し、サブインデックスツリーの層の高さがlog2(最大データ粒度/最小データ粒度)であることを示す。第1のデータのデータ長がルートノードのデータ粒度の4分の1である場合、第1のデータに対応するインデックスノードは、ルートノードよりも2層下位の層に位置する。第2のデータのデータ長が第1のデータのデータ長よりも長く、第1のデータのデータ長の2倍未満である場合、第2のサブインデックスノードは、サブインデックスツリーの第2の層、すなわち、第1のサブインデックスノードの親ノードの位置に生成される。第2のデータのデータ長が第1のデータのデータ長の2倍よりも大きい場合、第2のデータのインデックス情報は、ルートノードに書き込まれる。この場合、第2のサブインデックスノードは、ルートノードである。実際の応用時には、第1のデータは対象データであり、第2のデータは更新された対象データであり、指定された閾値は第1のデータに対応するデータ粒度であり、第1のメタデータ記憶ユニットはルートノードであり、第2のメタデータ記憶ユニットはサブインデックスノードである。この場合、更新された対象データのサイズが指定された閾値よりも大きい場合、第2のメタデータ記憶ユニット内の対象データのメタデータは削除され、更新された対象データのメタデータは第1のメタデータ記憶ユニット内に記憶される。
【0073】
例えば、
図4Aおよび
図4Bは、重複モードにおいてデータに対応するインデックス情報を書き込む手順を示す。
図4Aの左図は、既存のARTreeの構造を示す。
図4Aの右図は、1つの第1の書き込み要求が受信された場合、対応するサブインデックスツリーが対応するARTree内の最下位層インデックスノードの上位に生成され、第1のサブインデックスノードがルートノードよりも2層下位の層に生成されることを示す。
図4Bの右図は、1つの第2の書き込み要求が受信され、第2の書き込み要求が書き込みを要求するデータのデータ長が、第1の書き込み要求が書き込みを要求するデータのデータ長未満である場合、サブインデックスノードは、第1のインデックスノードよりも下位の層に生成されることを示す。
図4Bの左図は、1つの第2の書き込み要求が受信され、第2の書き込み要求が書き込みを要求するデータのデータ長が、第1の書き込み要求が書き込みを要求するデータのデータ長以上である場合、第2のインデックスノードは、第1の書き込み要求に基づいて、親ノード上に生成され、第2のインデックスノードの下位のサブインデックスノードは削除されることを示す。
【0074】
これに対応して、第2のサブインデックスノードを生成した後、記憶デバイスは、第2の書き込み要求に基づいて、記憶デバイス内に記憶された第1のデータを更新して、第3のデータを取得する。
【0075】
ステップ206において、記憶デバイスは、第1の読み出し要求を取得する。
【0076】
記憶デバイスは、第1の読み出し要求を取得する。第1の読み出し要求を使用して、第4のデータを読み出す。第4のデータは第1のデータに属し、第4のデータのデータ長は第1のデータのデータ長未満である。言い換えると、第4のデータは、第1のデータの一部である。第1の読み出し要求は、第4のデータの論理アドレス情報および第4のデータのデータ長に関する情報を搬送する。
【0077】
ステップ207において、記憶デバイスは、第4のデータの論理アドレス情報および第4のデータのデータ長に基づいて、第1のデータから第4のデータを読み出す。
【0078】
第1の読み出し要求を取得した後、記憶デバイスは、第1の読み出し要求で搬送された第4のデータの論理アドレス情報および第4のデータのデータ長に基づいて、第1のデータから第4のデータを読み出す。
【0079】
具体的には、
図5に示すように、記憶デバイスは、第1の読み出し要求から第4のデータの論理アドレス情報を判定し、論理アドレス情報に基づいて、第4のデータに対応するサブインデックスツリーを判定する。対応するサブインデックスツリーを見つけた後、記憶デバイスは、対応するサブインデックスノードを求めてサブインデックスツリーを探索し続ける。第4のデータのインデックス情報が第1のデータのインデックス情報に対応する第1のサブインデックスノードのサブインデックスノードに存在する場合、記憶デバイスは、第1のサブインデックスノードのサブインデックスノードに基づいて、第4のデータを抽出する。対応する第1のサブインデックスノードを読み出すと、記憶デバイスは、第1のサブインデックスノードが対応するサブインデックスノードを有するかどうかを判定する。
図6に示すように、対応するサブインデックスノードが存在する場合、記憶デバイスはまた、第1のサブインデックスノードのサブインデックスノードに対応するデータを読み出す必要があり、次いで、データスティッチングを実行する。
【0080】
第4のデータのインデックス情報が、第1のデータのインデックス情報に対応する第1のサブインデックスノードのサブインデックスノードに存在しない場合、
図10に示すように、記憶デバイスは、第1のサブインデックスノードに対応するインデックス情報を取得し、第1の読み出し要求における論理アドレスおよびデータ長に基づいて、第1のサブインデックスノードの論理アドレスに対するオフセットを計算し、第1のサブインデックスノードの論理アドレスに対するオフセットに基づいて、物理オフセットを取得し、物理オフセットに基づいて、第4のデータに対応するデータブロックを第1のデータに対応するデータブロックから読み出す。
【0081】
したがって、この方法でデータを読み出す場合、データ粒度の小さいデータを読み出す場合には、読み出し増幅は存在しない。
【0082】
ステップ208において、記憶デバイスは、第2の読み出し要求を取得する。
【0083】
記憶デバイスは、第2の読み出し要求を取得する。第2の読み出し要求を使用して、第2のデータおよび第3のデータを読み出す。第2のデータは、第2の書き込み要求が書き込みを要求するデータであり、第3のデータは、第2の書き込み要求に基づいて、第1のデータを更新することによって取得されたデータである。
【0084】
ステップ209において、記憶デバイスは、第2の読み出し要求に基づいて、第1のインデックスノードおよび第2のインデックスノードを探索する。
【0085】
第2の読み出し要求を取得した後、記憶デバイスは、第2の読み出し要求に基づいて、第1のインデックスノードおよび第2のインデックスノードを探索する。
【0086】
具体的には、記憶デバイスは、第2の読み出し要求における第2のデータおよび第3のデータの論理アドレス情報に基づいて、プライマリインデックスツリーからの第2のデータおよび第3のデータの論理アドレス情報に対応するサブインデックスツリーを判定する。対応するサブインデックスツリーを見つけた後、記憶デバイスは、第3のデータおよび第4のデータに対応するサブインデックスノードを求めてサブインデックスツリーを探索し続ける。
【0087】
ステップ210において、記憶デバイスは、第2のインデックスノードに基づいて、第1のインデックスノードを更新して、第3のインデックスノードを取得する。
【0088】
第1のインデックスノードおよび第2のインデックスノードを見つけた後、記憶デバイスは、第2のインデックスノード内のインデックス情報に基づいて、第1のインデックスノードを更新して、第3のインデックスノードを取得する。第3のインデックスノードを使用して、第3のデータを照会する。
【0089】
具体的には、第2のインデックスノード内のインデックス情報に対応する論理アドレス範囲が第1のインデックスノード内のインデックス情報に対応する論理アドレス範囲と重複すると記憶デバイスが判定した場合、記憶デバイスは、第1のインデックスノード内のインデックス情報に対応する論理アドレス範囲と第2のインデックスノード内のインデックス情報に対応する論理アドレス範囲との間の重複部分を削除して、新しいインデックス情報を取得し、第3のインデックスノードは、第1のインデックスノードがインデックス情報を更新した後に取得されたインデックスノードである。新しいインデックス情報は、第3のデータに対応する。実際の応用時には、第1のインデックスノードが第1のメタデータ記憶ユニットに対応する場合、第1のメタデータ記憶ユニット内の対象データのメタデータの差分メタデータは削除される。差分メタデータは、更新された対象データのメタデータと対象データのメタデータとの間の差分、すなわち、第1のインデックスノード内のインデックス情報に対応する論理アドレス範囲と第2のインデックスノード内のインデックス情報に対応する論理アドレス範囲との間の重複部分を示す。
【0090】
ステップ211において、記憶デバイスは、第2のインデックスノードおよび第3のインデックスノードに基づいて、第2のデータおよび第3のデータを読み出す。
【0091】
第3のインデックスノードを取得した後、記憶デバイスは、第3のインデックスノードおよび第2のインデックスノードに基づいて、記憶デバイスから第2のデータおよび第3のデータを読み出す。
【0092】
具体的には、記憶デバイスは、第2のインデックスノード内のインデックス情報における論理アドレス情報と物理アドレス情報との間の対応関係に基づいて、対応する第2のデータを記憶デバイスから取得する。同様に、記憶デバイスは、第3のインデックスノード内のインデックス情報における論理アドレス情報と物理アドレス情報との間の対応関係に基づいて、対応する第3のデータを記憶デバイスから取得する。
【0093】
実際の応用時には、同じデータが繰り返し書き込まれる場合、対応するサブインデックスツリー内に大量のサブインデックスノードが存在し、インデックスデータの冗長性が増加する。したがって、記憶デバイスは、サブインデックスツリーに対応するデータに対してデフラグメンテーションをさらに実行してもよい。
【0094】
具体的には、記憶デバイスは、サブインデックスツリーからすべての不連続データを抽出し、これに対応して不連続データを完全データとして書き込む。したがって、不連続データに対応する複数のサブインデックスノードは、後で書き込まれる1ピースの完全データに対応する新しいサブインデックスノードによって上書きされる。これにより、サブインデックスツリー内のサブインデックスノードの数が減少し、記憶リソースが節約される。
【0095】
可能な実装形態では、複数の第2のメタデータ記憶ユニットが大量のサブインデックスノードに対応し、複数の第2のメタデータ記憶ユニットがそれぞれ異なる対象データのメタデータを記憶するとき、複数の第2のメタデータ記憶ユニットの重畳サイズが第1のメタデータ記憶ユニットのサイズ以下である場合、複数の第2のメタデータ記憶ユニット内のメタデータは削除され、異なる対象データのメタデータは第1のメタデータ記憶ユニット内に記憶される。この場合、第1のメタデータ記憶ユニットは、ルートノードに対応してもよく、または上位層サブインデックスノードに対応していてもよい。
【0096】
デフラグメンテーション機会については、表1を参照されたい。
【0097】
【0098】
「読み出し」が「ホット」である場合、サブインデックスツリーにおけるデータ読み出し頻度が相対的に高いことを示す。「読み出し」が「コールド」である場合、サブインデックスツリーにおけるデータ読み出し頻度が相対的に低いことを示す。「書き込み」が「ホット」である場合、サブインデックスツリーにおけるデータ書き込み頻度が相対的に高いことを示す。「書き込み」が「コールド」である場合、サブインデックスツリーにおけるデータ書き込み頻度が相対的に低いことを示す。
【0099】
サブインデックスツリーが、「読み出し」が「ホット」かつ「書き込み」が「コールド」に対応する状態にある場合、サブインデックスツリーに対してデフラグメンテーションを実行することが強く推奨される。「読み出し」が「ホット」かつ「書き込み」が「コールド」である場合、サブインデックスノードに基づいて、対応するデータを見つける必要があることが多く、サブインデックスノードを生成または更新する頻度が比較的低いことを示す。したがって、過剰なサブインデックスノードが存在すると、データを探索する効率が影響を受ける。
【0100】
サブインデックスツリーが、「読み出し」が「コールド」かつ「書き込み」が「コールド」に対応する状態にある場合、サブインデックスツリーに対してデフラグメンテーションを実行することもまた推奨される。「読み出し」が「コールド」かつ「書き込み」が「コールド」である場合、データの読み出し頻度およびデータの書き込み頻度が比較的低いことを示す。したがって、システムリソース消費が低く、対応するデフラグメンテーションが実行され得る。
【0101】
サブインデックスツリーが、「読み出し」が「ホット」かつ「書き込み」が「ホット」に対応する状態にある場合、サブインデックスツリーに対してデフラグメンテーションを実行することは推奨されない。「読み出し」が「ホット」かつ「書き込み」が「ホット」である場合、データを頻繁に書き込む必要があることを示し、その結果、サブインデックスノードが頻繁に生成または更新される。したがって、デフラグメンテーションが完了していても、より多くのサブインデックスノードが迅速に生成される。
【0102】
サブインデックスツリーが、「読み出し」が「コールド」かつ「書き込み」が「ホット」に対応する状態にある場合、「読み出し」が「ホット」かつ「書き込み」が「ホット」の状態と同じ理由で、サブインデックスツリーに対してデフラグメンテーションを実行することも推奨されない。
【0103】
実際の応用時には、ステップ204からステップ211は、任意選択のステップである。ステップ204からステップ211が実行されない場合、記憶デバイスは、第1の書き込み要求のみを受信し、第1の書き込み要求に対応するサブインデックスツリーおよび対応するサブインデックスノードを生成する。
【0104】
本実施形態では、ステップ204および205ならびにステップ206および207を実行する順序はない。具体的には、第1の読み出し要求は、第2の書き込み要求が受信される前に取得されてもよく、または第1の読み出し要求は、第2の書き込み要求が受信された後に取得されてもよい。これは、本明細書では特に限定されない。
【0105】
本出願の本実施形態では、記憶デバイスは、第1のデータに基づいて、対応する第1のインデックスノードを生成し、第1のインデックスノードに対応するデータ粒度は、最小データ粒度よりも大きいため、最小粒度に対応する複数のインデックスノードをこれに対応して生成する必要はない。これにより、記憶リソースが節約され、データの読み出し/書き込み効率が向上する。
【0106】
2.線形モード
図7は、本出願の一実施形態によるメタデータ記憶方法の別の概略的な流れ図である。
【0107】
ステップ701において、記憶デバイスは、第1の書き込み要求を受信する。
【0108】
ステップ702において、記憶デバイスは、第1の書き込み要求に基づいて、サブインデックスツリーを生成する。
【0109】
ステップ703において、記憶デバイスは、サブインデックスツリーおよび第1の書き込み要求に基づいて、第1のインデックスノードを生成する。
【0110】
ステップ704において、記憶デバイスは、第2の書き込み要求を受信する。
【0111】
本実施形態では、ステップ701からステップ704は、
図2に示される実施形態におけるステップ201からステップ204と同様である。ここでは詳細を繰り返さない。
【0112】
ステップ705において、記憶デバイスは、第2の書き込み要求およびサブインデックスツリーに基づいて、第2のインデックスノードを生成する。
【0113】
第2の書き込み要求を受信した後、記憶デバイスは、第2の書き込み要求およびサブインデックスツリーに基づいて、第2のインデックスノードを生成する。第2のインデックスノード内のインデックス情報を使用して、第2のデータを照会する。
【0114】
可能な実装形態では、第2のデータが第1のデータを変更することによって取得されたデータであり、第2のデータのデータ長が第1のデータのデータ長未満である場合、記憶デバイスは、第2の書き込み要求で搬送された関連情報、サブインデックスツリーに記録されたインデックス情報、および第1のインデックスノードに基づいて、第2のインデックスノードを生成する。第2のインデックスノードは、第1のインデックスノードの子ノードである。
図8に示すように、
図8の左側の棒は、サブインデックスツリー内のルートノードに対応するインデックス情報を記録し、棒内の異なるグリッドは、異なる変更されたデータに対応する異なるインデックス情報を示し、上から下に向かって、最初にルートノードに書き込まれたメタデータから最後にルートノードに書き込まれたメタデータまでを示す。言い換えると、メタデータが書き込まれるたびに、元のメタデータが直接変更される。
【0115】
具体的には、可能な実装形態では、第2の書き込み要求で搬送された第2のデータの論理アドレス情報は、第1のデータが位置するサブインデックスツリーに第2のデータを書き込むことを示す。加えて、第2のデータのデータ長は、第1のデータのデータ長未満である。言い換えると、第2のデータが第1のデータを変更することによって取得されたデータであることを示す。
図8の右側のサブインデックスツリーに示すように、記憶デバイスは、第1のデータに対応する第1のインデックスノードを更新して、第3のインデックスノードを取得する。具体的には、第1のインデックスノードは、2つの下位層サブインデックスノード、すなわち、第2のインデックスノードと第3のインデックスノードとに分割される。第2のインデックスノードは第2のデータに対応し、第3のインデックスノードは第1のデータ内の未変更データに対応する。実際の応用時には、第1のデータは対象データであり、第2のデータは更新された対象データであり、指定された閾値は、第1のデータに対応するデータ粒度であり、差分メタデータは、第1のデータを変更することによって取得されたデータに対応するインデックス情報を示す。この場合、更新された対象データのサイズが指定された閾値未満である場合、差分メタデータは第2のメタデータ記憶ユニット内に記憶され、第2のメタデータ記憶ユニットは第2のインデックスノードである。
【0116】
線形モードでは、
図8の左側のリンクリストを使用することによってメタデータを書き込んでもよく、または
図8の右側の二分木モードを使用することによってメタデータを書き込んでもよいことに留意されたい。実際の応用時には、メタデータは、例えば、アレイを使用することによって別の方式で書き込まれてもよいことが理解されよう。これは、本明細書では特に限定されない。
【0117】
可能な実装形態では、第2のデータのデータ長が第1のデータのデータ長以上である場合、第2のデータが第1のデータをカバーすることを示す。記憶デバイスは、第2のデータの論理アドレス情報および第2のデータの論理アドレス情報に対応する見つかったサブインデックスツリーを使用することによって、第2のデータが第1のデータを変更することによって取得されたデータであると判定する。対応する第1のインデックスノードを見つけた後、記憶デバイスは、第1のインデックスノードを削除する。
【0118】
第2のデータのデータ長が第1のデータのデータ長と等しい場合、記憶デバイスは、第1のインデックスノードと同じ位置に第2のインデックスノードを生成する、または記憶デバイスは、第1のインデックスノードと平行な位置に第2のインデックスノードを生成する。これは、本明細書では特に限定されない。
【0119】
第2のデータのデータ長が第1のデータのデータ長よりも長い場合、記憶デバイスは、第1のインデックスノードの親ノードの位置に第2のインデックスノードを生成する。可能な実装形態では、第2のインデックスノードが生成される位置は、第2のデータのデータ長に基づいて判定されてもよい。例えば、サブインデックスツリーがルートノードから開始する場合、サブインデックスツリーが1層だけ減少するたびに、データ粒度が半分に減少し、サブインデックスツリーの層の高さがlog2(最大データ粒度/最小データ粒度)であることを示す。第1のデータのデータ長がルートノードのデータ粒度の4分の1である場合、第1のデータに対応するインデックスノードは、ルートノードよりも2層下位の層に位置する。第2のデータのデータ長が第1のデータのデータ長よりも長く、第1のデータのデータ長の2倍未満である場合、第2のサブインデックスノードは、サブインデックスツリーの第2の層、すなわち、第1のサブインデックスノードの親ノードの位置に生成される。第2のデータのデータ長が第1のデータのデータ長の2倍よりも大きい場合、第2のデータのインデックス情報は、ルートノードに書き込まれる。この場合、第2のサブインデックスノードは、ルートノードである。実際の応用時には、第1のデータは対象データであり、第2のデータは更新された対象データであり、指定された閾値は第1のデータに対応するデータ粒度であり、第1のメタデータ記憶ユニットはルートノードであり、第2のメタデータ記憶ユニットはサブインデックスノードである。この場合、更新された対象データのサイズが指定された閾値よりも大きい場合、第2のメタデータ記憶ユニット内の対象データのメタデータは削除され、更新された対象データのメタデータは第1のメタデータ記憶ユニット内に記憶される。
【0120】
例えば、
図9は、線形モードにおいてデータに対応するインデックス情報を書き込む手順を示す。
図9では、最上位層の棒はブランクメタデータを示し、ブランクメタデータは1つのサブインデックスツリーに対応し、データ粒度の小さい棒は1つのサブインデックスノードに対応する。1つの第1の書き込み要求が受信されると、メタデータにおける2つのデータ粒度のメタデータは、第1の書き込み要求に対応するメタデータに更新される。1つの第2の書き込み要求が受信され、第2の書き込み要求が書き込みを要求するデータのデータ長が、第1の書き込み要求が書き込みを要求するデータのデータ長未満である場合、2つのデータ粒度のメタデータの一方のデータ粒度は、第2の書き込み要求に対応するメタデータに更新される。1つの第2の書き込み要求が受信され、第2の書き込み要求が書き込みを要求するデータのデータ長が、第1の書き込み要求が書き込みを要求するデータのデータ長以上である場合、以前の2つのデータ粒度のメタデータは、第2の書き込み要求で搬送された第2のデータに対応するメタデータで上書きされる。この場合、上書きされたメタデータは、第2のインデックスノードに対応する。
【0121】
これに対応して、第2のインデックスノードを取得した後、記憶デバイスは、第2の書き込み要求に基づいて、記憶デバイス内に記憶された第1のデータを更新して、第3のデータを取得する。
【0122】
ステップ706において、記憶デバイスは、第1の読み出し要求を取得する。
【0123】
ステップ707において、記憶デバイスは、第3のデータの論理アドレス情報および第3のデータのデータ長に基づいて、第1のデータから第3のデータを読み出す。
【0124】
ステップ708において、記憶デバイスは、第2の読み出し要求を取得する。
【0125】
本実施形態では、ステップ706からステップ708は、
図2に示される実施形態におけるステップ206からステップ208と同様である。ここでは詳細を繰り返さない。
【0126】
ステップ709において、記憶デバイスは、第2の読み出し要求に基づいて、第2のデータおよび第3のデータを読み出す。
【0127】
第2の読み出し要求を取得した後、記憶デバイスは、第2の読み出し要求に基づいて、第1のインデックスノードおよび第2のインデックスノードを探索する。
【0128】
具体的には、記憶デバイスは、第2の読み出し要求における第2のデータおよび第3のデータの論理アドレス情報に基づいて、プライマリインデックスツリーからの第2のデータおよび第3のデータの論理アドレス情報に対応するサブインデックスツリーを判定する。対応するサブインデックスツリーを見つけた後、記憶デバイスは、第2のデータおよび第3のデータに対応する第2のサブインデックスノードおよび第3のサブインデックスノードを求めてサブインデックスツリーを探索し続ける。
【0129】
記憶デバイスは、第3のインデックスノードおよび第2のインデックスノードに基づいて、記憶デバイスから第2のデータおよび第3のデータを読み出す。
【0130】
具体的には、記憶デバイスは、第2のインデックスノード内のインデックス情報における論理アドレス情報と物理アドレス情報との間の対応関係に基づいて、対応する第2のデータを記憶デバイスから取得する。同様に、記憶デバイスは、第3のインデックスノード内のインデックス情報における論理アドレス情報と物理アドレス情報との間の対応関係に基づいて、対応する第3のデータを記憶デバイスから取得する。
【0131】
実際の応用時には、同じデータが繰り返し書き込まれる場合、対応するサブインデックスツリー内に大量のサブインデックスノードが存在し、インデックスデータの冗長性が増加する。したがって、記憶デバイスは、サブインデックスツリーに対応するデータに対してデフラグメンテーションをさらに実行してもよい。
【0132】
具体的には、
図11に示すように、記憶デバイスは、サブインデックスツリーからすべての不連続データを抽出し、これに対応して不連続データを完全データとして書き込む。したがって、不連続データに対応する複数のサブインデックスノードは、後で書き込まれる1ピースの完全データに対応する新しいサブインデックスノードによって上書きされる。これにより、サブインデックスツリー内のサブインデックスノードの数が減少し、記憶リソースが節約される。
【0133】
可能な実装形態では、複数の第2のメタデータ記憶ユニットが大量のサブインデックスノードに対応し、複数の第2のメタデータ記憶ユニットがそれぞれ異なる対象データのメタデータを記憶するとき、複数の第2のメタデータ記憶ユニットの重畳サイズが第1のメタデータ記憶ユニットのサイズ以下である場合、複数の第2のメタデータ記憶ユニット内のメタデータは削除され、異なる対象データのメタデータは第1のメタデータ記憶ユニット内に記憶される。この場合、第1のメタデータ記憶ユニットは、ルートノードに対応してもよく、または上位層サブインデックスノードに対応していてもよい。
【0134】
デフラグメンテーション機会については、表1を参照されたい。
【0135】
【0136】
「読み出し」が「ホット」である場合、サブインデックスツリーにおけるデータ読み出し頻度が相対的に高いことを示す。「読み出し」が「コールド」である場合、サブインデックスツリーにおけるデータ読み出し頻度が相対的に低いことを示す。「書き込み」が「ホット」である場合、サブインデックスツリーにおけるデータ書き込み頻度が相対的に高いことを示す。「書き込み」が「コールド」である場合、サブインデックスツリーにおけるデータ書き込み頻度が相対的に低いことを示す。
【0137】
サブインデックスツリーが、「読み出し」が「ホット」かつ「書き込み」が「コールド」に対応する状態にある場合、サブインデックスツリーに対してデフラグメンテーションを実行することが強く推奨される。「読み出し」が「ホット」かつ「書き込み」が「コールド」である場合、サブインデックスノードに基づいて、対応するデータを見つける必要があることが多く、サブインデックスノードを生成または更新する頻度が比較的低いことを示す。したがって、過剰なサブインデックスノードが存在すると、データを探索する効率が影響を受ける。
【0138】
サブインデックスツリーが、「読み出し」が「コールド」かつ「書き込み」が「コールド」に対応する状態にある場合、サブインデックスツリーに対してデフラグメンテーションを実行することもまた推奨される。「読み出し」が「コールド」かつ「書き込み」が「コールド」である場合、データの読み出し頻度およびデータの書き込み頻度が比較的低いことを示す。したがって、システムリソース消費が低く、対応するデフラグメンテーションが実行され得る。
【0139】
サブインデックスツリーが、「読み出し」が「ホット」かつ「書き込み」が「ホット」に対応する状態にある場合、サブインデックスツリーに対してデフラグメンテーションを実行することは推奨されない。「読み出し」が「ホット」かつ「書き込み」が「ホット」である場合、データを頻繁に書き込む必要があることを示し、その結果、サブインデックスノードが頻繁に生成または更新される。したがって、デフラグメンテーションが完了していても、より多くのサブインデックスノードが迅速に生成される。
【0140】
サブインデックスツリーが、「読み出し」が「コールド」かつ「書き込み」が「ホット」に対応する状態にある場合、「読み出し」が「ホット」かつ「書き込み」が「ホット」の状態と同じ理由で、サブインデックスツリーに対してデフラグメンテーションを実行することも推奨されない。
【0141】
実際の応用時には、ステップ704からステップ709は、任意選択のステップである。ステップ704からステップ709が実行されない場合、記憶デバイスは、第1の書き込み要求のみを受信し、第1の書き込み要求に対応するサブインデックスツリーおよび対応するサブインデックスノードを生成する。
【0142】
本実施形態では、ステップ704および705ならびにステップ706および707を実行する順序はない。具体的には、第1の読み出し要求は、第2の書き込み要求が受信される前に取得されてもよく、または第1の読み出し要求は、第2の書き込み要求が受信された後に取得されてもよい。これは、本明細書では特に限定されない。
【0143】
本実施形態では、記憶デバイスは、線形モードに従って対応するメタデータにアクセスする。これにより、メタデータの冗長性が低減され、記憶リソースが節約される。
【0144】
上記は、本出願の実施形態におけるメタデータ記憶方法を説明し、下記は、本出願の実施形態における記憶デバイスを説明する。
【0145】
図12は、本出願の一実施形態による記憶デバイスの構造の概略図である。
【0146】
記憶デバイスは、
第1のメタデータ記憶ユニット1202のサイズが、第2のメタデータ記憶ユニット1203のサイズよりも大きい、第1のメタデータ記憶ユニット1202および第2のメタデータ記憶ユニット1203と、
対象データのサイズが指定された閾値に達した場合、第1のメタデータ記憶ユニット1202に基づいて対象データのメタデータを記憶し、または
対象データのサイズが指定された閾値未満である場合、第2のメタデータ記憶ユニット1203に基づいて対象データのメタデータを記憶するように構成された処理ユニット1201と、を含む。
【0147】
本実施形態では、記憶デバイス内のユニットによって実行される動作は、
図2および
図7に示される実施形態で説明したものと同様である。ここでは詳細を繰り返さない。
【0148】
図13は、本出願の一実施形態による記憶デバイスの別の構造の概略図である。
【0149】
記憶デバイスは、
第1のメタデータ記憶ユニット1302のサイズが、第2のメタデータ記憶ユニット1303のサイズよりも大きい、第1のメタデータ記憶ユニット1302および第2のメタデータ記憶ユニット1303と、
対象データのサイズが指定された閾値に達した場合、第1のメタデータ記憶ユニット1302に基づいて対象データのメタデータを記憶し、または
対象データのサイズが指定された閾値未満である場合、第2のメタデータ記憶ユニット1303に基づいて対象データのメタデータを記憶するように構成された処理ユニット1301と、を含む。
【0150】
場合により、記憶デバイスは、
メタデータ記憶ユニットのサイズの最大値および最小値を設定するように構成された設定ユニット1304であって、第1のメタデータ記憶ユニット1302のサイズが最小値と最大値との間であり、第2のメタデータ記憶ユニット1303のサイズが最小値と最大値との間である、設定ユニット1304をさらに含む。
【0151】
場合により、対象データのサイズが指定された閾値未満である場合、記憶デバイスは、削除ユニット1305をさらに含む。
【0152】
削除ユニット1305は、対象データのサイズが指定された閾値よりも大きく更新された場合、第2のデータ記憶ユニット1303内の対象データのメタデータを削除するように構成される。
【0153】
処理ユニット1301は、更新された対象データのメタデータを第1のメタデータ記憶ユニット1302内に記憶するようにさらに構成される。
【0154】
場合により、対象データのサイズが指定された閾値よりも大きい場合、記憶デバイスは、削除ユニット1305をさらに含む。
【0155】
削除ユニット1305は、対象データのサイズが指定された閾値未満になるように更新された場合、第1のデータ記憶ユニット1302内の対象データのメタデータの差分メタデータを削除するようにさらに構成される。差分メタデータは、更新された対象データのメタデータと対象データのメタデータとの間の差分を示す。
【0156】
処理ユニット1301は、差分メタデータを第2のメタデータ記憶ユニット1303内に記憶するようにさらに構成される。
【0157】
場合により、複数の第2のメタデータ記憶ユニット1303が存在し、複数の第2のメタデータ記憶ユニット1303がそれぞれ異なる対象データのメタデータを記憶し、複数の第2のメタデータ記憶ユニット1303の重畳サイズが第1のメタデータ記憶ユニット1302のサイズ以下である場合、削除ユニット1305は、複数の第2のメタデータ記憶ユニット1303内のメタデータを削除するようにさらに構成される。
【0158】
処理ユニット1301は、異なる対象データのメタデータを第1のメタデータ記憶ユニット1302内に記憶するようにさらに構成される。
【0159】
本実施形態では、記憶デバイス内のユニットによって実行される動作は、
図2および
図7に示される実施形態で説明したものと同様である。ここでは詳細を繰り返さない。
【0160】
本出願の一実施形態は、コンピュータ可読記憶媒体をさらに提供する。コンピュータ可読記憶媒体は、コンピュータプログラムを記憶する。コンピュータプログラムは、前述の方法実施形態のいずれか1つにおいて記憶デバイスによって実行される方法手順を実施するために、コンピュータによって実行される。これに対応して、コンピュータは、前述の記憶デバイスであってもよい。
【0161】
本出願の実施形態で述べるコントローラまたはプロセッサは、中央処理ユニット(central processing unit、CPU)であってもよく、または別の汎用プロセッサ、デジタル信号プロセッサ(digital signal processor、DSP)、特定用途向け集積回路(application specific integrated circuit、ASIC)、FPGA(field programmable gate array)、あるいは別のプログラム可能論理デバイス、個別のゲートもしくはトランジスタ論理デバイス、個別のハードウェア構成要素などのうちの1つまたは複数の組み合わせであってもよいことを理解されたい。汎用プロセッサはマイクロプロセッサであってよく、またはプロセッサは従来のいずれかのプロセッサなどであってよい。
【0162】
本出願の実施形態では、記憶デバイス内に1つまたは複数のプロセッサまたはコントローラが存在してもよく、実際の適用シナリオに基づいて調整されてもよいことをさらに理解されたい。これは、本明細書における説明のための単なる例であり、限定を構成するものではない。本出願の実施形態では、1つまたは複数のメモリが存在してもよく、実際の適用シナリオに基づいて調整されてもよい。これは、本明細書における説明のための単なる例であり、限定を構成するものではない。
【0163】
本出願の実施形態で言及される記憶デバイスなどのメモリ、可読記憶媒体などは、揮発性メモリもしくは不揮発性メモリであってもよく、または揮発性メモリおよび不揮発性メモリを含んでもよいことをさらに理解されたい。不揮発性メモリは、読み出し専用メモリ(read-only memory、ROM)、プログラマブル読み出し専用メモリ(programmable ROM、PROM)、消去可能プログラマブル読み出し専用メモリ(erasable PROM、EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(electrically EPROM、EEPROM)、またはフラッシュメモリであってもよい。揮発性メモリは、外部キャッシュとして使用されるランダムアクセスメモリ(random access memory、RAM)であってよい。限定ではなく例として、多くの形態のRAM、例えば、スタティックランダムアクセスメモリ(static RAM、SRAM)、ダイナミックランダムアクセスメモリ(dynamic RAM、DRAM)、同期式ダイナミックランダムアクセスメモリ(synchronous DRAM、SDRAM)、ダブルデータレート同期式ダイナミックランダムアクセスメモリ(double data rate SDRAM、DDR SDRAM)、拡張同期式ダイナミックランダムアクセスメモリ(enhanced SDRAM、ESDRAM)、シンクリンクダイナミックランダムアクセスメモリ(synchlink DRAM、SLDRAM)、およびダイレクトラムバスランダムアクセスメモリ(direct rambus RAM、DR RAM)が使用されてもよい。
【0164】
当業者は、実施形態において記憶デバイスまたはプロセッサによって実行されるステップのうちのすべてまたはいくつかが、ハードウェアまたは関連するハードウェアに命令するプログラムによって実装されてもよいことを理解することができる。プログラムは、コンピュータ可読記憶媒体に記憶されてもよい。上記の記憶媒体は、読み出し専用メモリ、ランダムアクセスメモリなどであってもよい。具体的には、例えば、前述の処理ユニットまたはプロセッサは、中央処理装置、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは別のプログラム可能論理デバイス、トランジスタ論理デバイス、ハードウェアコンポーネント、またはこれらの任意の組み合わせであってよい。これらの機能がハードウェアまたはソフトウェアのどちらによって実行されるかは、技術的解決策の特定の用途および設計上の制約に依存する。当業者は、それぞれの特定の用途ごとに説明された機能を実装するために異なる方法を使用し得るが、その実装がこの出願の範囲を超えると考えられるべきではない。
【0165】
実装にソフトウェアが使用される場合、実施形態のすべてまたは一部の方法ステップは、コンピュータプログラム製品の形態で実装されてよい。コンピュータプログラム製品は、1つまたは複数のコンピュータ命令を含む。コンピュータプログラム命令がコンピュータにロードされて実行されると、本出願の実施形態による手順または機能のすべてまたは一部が生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または別のプログラム可能な装置であってもよい。コンピュータ命令は、コンピュータ可読記憶媒体に記憶されてもよいし、あるコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に伝送されてもよい。例えば、コンピュータ命令は、ウェブサイト、コンピュータ、サーバ、またはデータセンタから別のウェブサイト、コンピュータ、サーバ、またはデータセンタに、有線(例えば、同軸ケーブル、光ファイバ、もしくはデジタル加入者線(DSL))または無線(例えば、赤外線、電波、もしくはマイクロ波)方式で伝送され得る。コンピュータ可読記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体、または1つもしくは複数の使用可能な媒体を統合した、サーバやデータセンタなどのデータ記憶デバイスであり得る。使用可能媒体は、磁気媒体(例えば、フロッピーディスク、ハードディスク、もしくは磁気テープ)、光学媒体(例えば、DVD)、半導体媒体などであってもよい。
【0166】
本出願の明細書、請求項、および添付の図面において、用語「第1」、「第2」などは、同様の物を区別することを意図しているが、特定の順序または連続することを必ずしも示さない。そのように使用される用語は適切な状況において交換可能であり、これは、本出願の実施形態において同じ属性を有する対象を説明するための単なる区別方式であることを理解されたい。加えて、「含む」、「有する」という用語、および他の何らかの異形は非排他的包含をカバーすることを意味し、一連のユニットを含むプロセス、方法、システム、製品、またはデバイスは、必ずしもそれらのユニットに限定されず、明示的に列挙されていない他のユニットを、またはそのようなプロセス、方法、製品、もしくはデバイスに固有の他のユニットを含み得る。
【0167】
本出願の実施形態で使用されている用語は、特定の実施形態を示すためのものに過ぎず、本発明を限定することを意図されていない。本出願の実施形態で使用される単数形の「a」、「the」、および「this」という用語は、文脈において明確に特に指定されない限り、複数形を含むことも意図されている。本出願の説明では、「/」は、別段の指定がない限り、関連付けられた対象間の「または」関係を表すことをさらに理解されたい。例えば、A/Bは、AまたはBを表し得る。本出願において「および/または」という用語は、単に関連する物体間の関連関係であり、3つの関係が存在し得ることを表す。例えば、Aおよび/またはBは、以下の3つの場合を、すなわち、Aのみが存在する場合、AおよびBの両方が存在する場合、およびBのみが存在する場合を表してもよく、その場合、AおよびBは、各々、単数または複数であり得る。
【0168】
文脈に応じて、例えば、本明細書で使用される「~の場合(if)」または「~と仮定すると(assuming that)」という語が、「~の間(while)」または「~の時(when)」または「決定に応答して(in response to determining)」または「検出に応答して(in response to detecting)」などとして説明され得る。同様に、文脈に応じて、「と判断される場合(if it is determined that)」または「(記載されている条件もしくは事象)が検出される場合(if(a stated condition or event)is detected)」という表現は、「と判断されるとき(when it is determined that)」、「との判断に応じて(in response to determining)」、「(記載されている条件もしくは事象)が検出されるとき(when(a stated condition or event)is detected)」または「(記載されている条件もしくは事象)の検出に応じて(in response to detecting(a stated condition or event))」という意味に解釈される場合がある。
【0169】
結論として、実施形態は、本出願を限定するためのものではなく、本出願の技術的解決策を説明するためのものに過ぎない。本出願は、実施形態を参照して詳細に説明されているが、当業者は、本出願の実施形態の技術的解決策の範囲から逸脱することなく、実施形態で説明された技術的解決策にさらに修正を加え得る、またはその一部の技術的特徴の同等の置き換えを行い得ることを理解するはずである。
【符号の説明】
【0170】
1201 処理ユニット
1202 メタデータ記憶ユニット
1203 メタデータ記憶ユニット
1301 処理ユニット
1302 メタデータ記憶ユニット
1303 メタデータ記憶ユニット
1304 設定ユニット
1305 削除ユニット