(57)【特許請求の範囲】
【請求項１】
サイズＮのデータブロックを再構築する方法であって、前記データブロックは、消失符号を用いて符号化されて、Ｎs個の組織的シンボルベクトルの集合と、前記データブロックの２次元凸台の上への写像からのＮp個のパリティ射影ベクトルの集合とを生成したものであり、前記組織的シンボルベクトルは前記台の上に写像された前記データブロックのシンボルに対応し、前記パリティ射影ベクトルは、それぞれの符号化射影方向を用いて前記台の上に写像された前記データブロックのシンボルのＮp個の射影にそれぞれ対応し、前記データブロックは、前記Ｎp個のパリティ射影ベクトルの集合を用いて、Ｎs個の入力ベクトルの集合から再構築され、前記方法は、
少なくとも１つの消失を含む入力ベクトルの各々に関し、各消失されたシンボルの値を所定の値に更新することと、
前記更新された値を有する前記Ｎs個の入力ベクトルを前記２次元凸台の上に写像することと、
符号化射影方向を使用した、前記更新された値を有する前記Ｎs個の入力ベクトルの前記２次元凸台の上への写像から、再構築射影ベクトルを生成することと、
前記再構築射影ベクトルと、前記符号化射影方向を使用して生成された前記パリティ射影ベクトルと、から、更新されたパリティ射影ベクトルを生成することと、
を有する方法。
【請求項２】
前記所定の値はゼロであり、前記更新されたパリティ射影ベクトルを生成することは、前記符号化射影方向を使用して生成された前記パリティ射影ベクトルの対応する値から、前記再構築射影ベクトルの対応する値を減算することによって、前記更新されたパリティ射影ベクトルの各々の値を得ることを有する、請求項１に記載の方法。
【請求項３】
前記更新されたパリティ射影ベクトルの値を前記２次元凸台の上に反復して逆射影することと、前記逆射影から計算された値に基づいて、前記更新されたパリティ射影ベクトルをさらに更新することと、をさらに有する、請求項１または２に記載の方法。
【請求項４】
前記それぞれの符号化射影方向を用いて前記台の上に写像された前記データブロックのシンボルの前記Ｎp個の射影は、それぞれの射影方向（ｐi，ｑi）にしたがう、前記写像されたデータブロックの前記シンボルｆ（ｋ；ｌ）の射影であり、ここで射影ベクトル
【数１】
0006487931.tif 000023
の位置ｂnにおけるその値は、
【数２】
0006487931.tif 000024
であり、ここでΔ（・）は、Δ（０）＝１かつΔ（ｈ≠０）＝０である、請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記２次元凸台は、サイズがＰ×Ｑの長方形の形状であり、ここでＰ×Ｑ≧Ｎであって、
【数３】
0006487931.tif 000025
と定義される、請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
射影ベクトル
【数４】
0006487931.tif 000026
の位置ｂnにおけるその値は、
【数５】
0006487931.tif 000027
である、請求項５に記載の方法。
【請求項７】
プロセッサと、前記プロセッサに作動的に接続されたメモリと、を備え、請求項１乃至６のいずれか１項に記載された方法を実行するように構成された装置。
【請求項８】
コンピュータ可読媒体中に固定されて埋め込まれたコンピュータプログラムコードを有するコンピュータプログラム製品であって、前記コンピュータプログラムコードは、コンピュータシステムに提供されて実行されたときに、サイズＮのデータブロックを再構築する方法を前記コンピュータに実行させる命令を有しており、
前記データブロックは、消失符号を用いて符号化されて、Ｎs個の組織的シンボルベクトルの集合と、前記データブロックの２次元凸台の上への写像からのＮp個のパリティ射影ベクトルの集合とを生成したものであり、前記組織的シンボルベクトルは前記台の上に写像された前記データブロックのシンボルに対応し、前記パリティ射影ベクトルは、それぞれの符号化射影方向を用いて前記台の上に写像された前記データブロックのシンボルのＮp個の射影にそれぞれ対応し、前記データブロックは、前記Ｎp個のパリティ射影ベクトルの集合を用いて、Ｎs個の入力ベクトルの集合から再構築され、前記方法は、
少なくとも１つの消失を含む入力ベクトルの各々に関し、各消失されたシンボルの値を所定の値に更新することと、
前記更新された値を有する前記Ｎs個の入力ベクトルを前記２次元凸台の上に写像することと、
符号化射影方向を使用した、前記更新された値を有する前記Ｎs個の入力ベクトルの前記２次元凸台の上への写像から、再構築射影ベクトルを生成することと、
前記再構築射影ベクトルと、前記符号化射影方向を使用して生成された前記パリティ射影ベクトルと、から、更新されたパリティ射影ベクトルを生成することと、
を有する、コンピュータプログラム製品。
【請求項９】
コンピュータプログラムを格納した非一過性コンピュータ可読記録媒体であって、前記コンピュータプログラムは、実行されたときに、メモリに作動的に接続されたプロセッサを有する装置にサイズＮのデータブロックを再構築する方法を実行させ、
前記データブロックは、消失符号を用いて符号化されて、Ｎs個の組織的シンボルベクトルの集合と、前記データブロックの２次元凸台の上への写像からのＮp個のパリティ射影ベクトルの集合とを生成したものであり、前記組織的シンボルベクトルは前記台の上に写像された前記データブロックのシンボルに対応し、前記パリティ射影ベクトルは、それぞれの符号化射影方向を用いて前記台の上に写像された前記データブロックのシンボルのＮp個の射影にそれぞれ対応し、前記データブロックは、前記Ｎp個のパリティ射影ベクトルの集合を用いて、Ｎs個の入力ベクトルの集合から再構築され、前記方法は、
少なくとも１つの消失を含む入力ベクトルの各々に関し、各消失されたシンボルの値を所定の値に更新することと、
前記更新された値を有する前記Ｎs個の入力ベクトルを前記２次元凸台の上に写像することと、
符号化射影方向を使用した、前記更新された値を有する前記Ｎs個の入力ベクトルの前記２次元凸台の上への写像から、再構築射影ベクトルを生成することと、
前記再構築射影ベクトルと、前記符号化射影方向を使用して生成された前記パリティ射影ベクトルと、から、更新されたパリティ射影ベクトルを生成することと、
を有する、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データブロックを再構築する方法と、この方法を用いるのに適した装置とに関する。
【背景技術】
【０００２】
非常に大きい量のデータを格納することができるデータサーバーは、特に、増加の一途をたどるソーシャルネットワークユーザによって生成される、急速に増大する量のデータを格納するために、あるいは、いわゆる「クラウド(cloud)」に格納される顧客データの管理のためのクラウドネットワーク運営者の必要に答えるために、種々のネットワークで使用されている。このようなデータセンターは、典型的には、データが格納される１またはいくつかのデータ記憶ノードを含んでおり、これらのデータ記憶ノードは、データは常に利用可能であるべきである、言い換えればデータは常に取り出し可能であるべきであるという要件を有する。このような要件は、データの損失やデータの破損が受け入れられないことを暗示する。このことは、格納されたデータの複製がその大部分の要素であるセキュリティーソリューションをもたらしてきており、それらのセキュリティーソリューションでは、一般に３に等しい複製係数（複製の組の数）、時には７に達するまでの複製係数を有している。
【０００３】
複製係数が大きいデータ複製ソリューションは、それらに伴うカーボンフットプリント（二酸化炭素排出量）に言い及ぶまでもなく、要求されるデータ記憶スペースとハードウェアに関連するコストとを著しく増加させる点で、とりわけ準最適なものである。このエネルギー及びハードウェアコストの問題、結果としての記憶装置のトータルコストの問題が深刻さは、リード−ソロモン(Reed-Solomon)符号化のような消失符号化(erasure coding)技術を使用することによって低減されてきている。
【０００４】
消失符号化は、符号化されたデータの冗長符号を生成する。冗長符号のサイズは、データの厳密な複製に比べて小さい。
【０００５】
データ記憶アプリケーションに対するリード−ソロモン符号化の使用は、非特許文献１において議論されている。
【０００６】
消失符号化及び復号のアルゴリズムの実行は、それぞれデータを格納し、読出すときに、データ記憶または読出しにおけるレイテンシ（待ち時間）を発生させる。レイテンシは、データ記憶ソリューションにおける消失符号化の使用の利点の全てを活用するためには、最小化されなければならない。このレイテンシは、記憶したデータの完全な読出しのために消失済みデータを再構築しなければならないデータ消失の場合に、復号段階においてさらに増加する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】H. Weatherspoon and J. D. Kubiatowicz, "Erasure Coding vs. Replication: A Quantitative Comparison," in Proceedings of the first International Workshop on Peer-to-Peer Systems (IPTP), 2002.
【非特許文献２】Guedon (Ed.) et al., "The Mojette transform: theory and applications", Wiley-ISTE, 2009.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、アルゴリズムの複雑さ及びレイテンシ性能に関し、特に復号段階におけるそれらに関し、依然として、改良された消失符号化及び復号アルゴリズムに対する必要性がある。
【０００９】
本発明の主題の開示の目的は、データブロックを再構築するためのシステム及び方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の主題の開示の一態様に従えば、サイズＮのデータブロックを再構築する方法であって、データブロックは、消失符号を用いて符号化されて、Ｎs個の組織的(systematic)シンボルベクトルの集合と、データブロックの２次元凸台の上への写像からのＮp個のパリティ射影ベクトルの集合とを生成したものであり、組織的シンボルベクトルは台の上に写像されたデータブロックのシンボルに対応し、パリティ射影ベクトルは、それぞれの符号化射影方向を用いて台の上に写像されたデータブロックのシンボルのＮp個の射影にそれぞれ対応し、データブロックは、Ｎp個のパリティ射影ベクトルの集合を用いて、Ｎs個の入力ベクトルの集合から再構築される方法は、少なくとも１つの消失を含む入力ベクトルの各々に関し、各消失されたシンボルの値を所定の値に更新することと、更新された値を有するＮs個の入力ベクトルを２次元凸台の上に写像することと、符号化射影方向を使用した、更新された値を有するＮs個の入力ベクトルの２次元凸台の上への写像から、再構築射影ベクトルを生成することと、再構築射影ベクトルと、符号化射影方向を使用して生成されたパリティ射影ベクトルと、から、更新されたパリティ射影ベクトルを生成することと、を有する。
【００１１】
再構築されたデータブロックの提案された方式は、Mojette（モジェット）変換符号化方式に有利に基づいている。書籍である非特許文献２に説明されるMojette変換は、リード−ソロモン符号化方式と同程度には最適というわけではないが、復号段階に対する低減された複雑さ及びレイテンシの利点を有する符号化方式を与える。Mojette変換は、符号化されるべきデータの２次元台（two-dimensional support；ここで、2D supportあるいは2D-supportとも呼ばれる）の上への写像に基づいて計算される射影ベクトルを生成する。
【００１２】
提案された方式は、Mojette変換を用いるデータの組織的符号化にも有利に基づいている。リード−ソロモン符号化方式は、最大距離分離（Maximum Distance Separable；ＭＤＳ）符号化方式であるのに対し、ここで提案された方式は、この場合、（１＋ε）ＭＤＳ符号化方式を与える。この観点からすると、上述したように、Mojette変換は準最適符号化方式である。しかしながら、再構築可能性の適切な判断基準が満たされるとき、生成された射影（または射影ベクトル）の各々は２次元台の失われた線(line)を回復することが可能であることを示すことができる。失われた線の再構築は、ここで規定されている初期化プロセスとともに、逆Mojette変換を使用して実行することができる。したがって、再構築プロセスは、符号化段階で計算された利用可能な射影の数と同数の失われた線を再構築することができるであろう。
【００１３】
一態様において、所定の値はゼロであり、更新されたパリティ射影ベクトルを生成することは、符号化射影方向を使用して生成されたパリティ射影ベクトルの対応する値から、再構築射影ベクトルの対応する値を減算することによって、更新されたパリティ射影ベクトルの各々の値を得ることを有する。
【００１４】
別の態様において、方法は、さらに、更新されたパリティ射影ベクトルの値を２次元凸台の上に反復して逆射影することと、逆射影から計算された値に基づいて、更新されたパリティ射影ベクトルをさらに更新することと、を有する。
【００１５】
さらに別の態様において、それぞれの符号化射影方向を用いて台の上に写像されたデータブロックのシンボルのＮp個の射影は、それぞれの射影方向（ｐi，ｑi）にしたがう、写像されたデータブロックの前記シンボルｆ（ｋ；ｌ）の射影であり、ここで射影ベクトル
【００１６】
【数１】
0006487931.tif 000002
【００１７】
の位置ｂnにおけるその値は、
【００１８】
【数２】
0006487931.tif 000003
【００１９】
であり、ここでΔ（・）は、Δ（０）＝１かつΔ（ｈ≠０）＝０である。
【００２０】
さらに別の態様において、２次元凸台は、サイズがＰ×Ｑの長方形の形状であり、ここでＰ×Ｑ≧Ｎであって、
【００２１】
【数３】
0006487931.tif 000004
【００２２】
と定義される。
【００２３】
さらに別の態様において、
射影ベクトル
【００２４】
【数４】
0006487931.tif 000005
【００２５】
の位置ｂnにおけるその値は、
【００２６】
【数５】
0006487931.tif 000006
【００２７】
である。
【００２８】
本開示のまたさらなる様相において、非一過性コンピュータ可読記録媒体が開示される。コンピュータ可読記録媒体は、実行されたときに、メモリに作動的に接続されたプロセッサを有する装置に、データブロックを再構築するためのここで開示された方法のいずれかを実行させるコンピュータプログラムを格納することができる。
【００２９】
１またはそれ以上の追加の様相に基づけば、装置が開示される。装置は、プロセッサと、プロセッサに作動的に接続されたメモリと、を備えていてよく、データブロックを再構築するためのここで開示された方法のいずれかを実行するように構成されていてもよい。
【００３０】
またさらに別の様相に従えば、コンピュータ可読媒体中に固定されて埋め込まれたコンピュータプログラムコードを有するコンピュータプログラム製品が開示される。コンピュータプログラムコードは、コンピュータシステムに提供されて実行されたときに、データブロックを再構築するためのここで開示された方法のいずれかをコンピュータに実行させる。
【００３１】
なお、プロセスとして、装置として、システムとして、デバイスとして、また、現在知られていて今後発展される応用のための方法として、またこれらに限定されることなく、種々のやり方で本発明を実行し利用することができるを理解すべきである。
【００３２】
本明細書とともに図面を参照することにより、本発明の主題の開示がよりよく理解され、本発明の種々の目的及び利点が当業者に対しより明らかになるであろう。
【図面の簡単な説明】
【００３３】
【図１】Mojette変換を用いたサイズＮのデータブロックの例示的な符号化を示す図である。
【図２ａ】その上でMojette変換射影を計算できる例示的なデータブロックを示す図である。
【図２ｂ】直角台(rectangular support)の上への射影の計算を示す図である。
【図２ｃ】直角台の上への複数の射影の計算を示す図である。
【図３】例である実施形態に基づくデータブロックの再構築の例示的な方法を示す図である。
【図４ａ】別の例の実施形態に基づくデータブロックの再構築の例示的な方法を示す図である。
【図４ｂ】別の例の実施形態に基づくデータブロックの再構築の例示的な方法を示す図である。
【図４ｃ】別の例の実施形態に基づくデータブロックの再構築の例示的な方法を示す図である。
【図５】本発明を適用可能な凸台(convex support)を示す図である。
【図６】例示実施形態に基づくデータ記憶／読出しシステムの例を示す図である。
【発明を実施するための形態】
【００３４】
ここで開示される要素の利点及び他の特徴は、この技術形式における当業者により容易に明らかになるであろう。いくつかの好ましい実施形態についての以下の詳細な説明は、図面を併用して、主題技術の代表的な実施形態を説明する。ここで同様の参照番号は、同様の構造要素を示している。
【００３５】
さらに、ここでの教示は、幅広い種々の形態で具体化でき、ここで開示されるいずれかの特定の構造及び／または機能は単なる見本であることが明らかであるべきである。特に、当業者は、ここに開示される様相は他のいずれの様相とは独立に実装することができ、いくつかの様相を種々のやり方で組み合わせることができることを理解するであろう。
【００３６】
本発明の開示は、以下に、１またはそれ以上の例示実施形態に基づく方法、システム及びコンピュータプログラムについての機能、エンジン、ブロック図、およびフローチャート表現を参照して説明される。説明された機能、エンジン、ブロック図のブロック及びフローチャート表現の各々は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはこれらの任意の適切な組み合わせによって実装されることができる。ソフトウェアにより実装された場合、機能、エンジン、ブロック図のブロック、及び／またはフローチャート表現は、コンピュータプログラム命令またはソフトウェアコードで実装することができる。コンピュータ上あるいは他のプログラム可能データ処理装置上で実行されて本明細書で説明される機能を実現する手段を生成するように、それらのコンピュータプログラム命令またはソフトウェアコードは、コンピュータ可読媒体によって格納されたり送信されたり、あるいは、汎用コンピュータ、特殊用途コンピュータ、他のプログラム可能データ処理装置上にロードされて機械を生成してもよい。
【００３７】
コンピュータ可読媒体の実施形態は、それらに限定されるものではないが、コンピュータ記憶媒体と、１つの場所から他の場所へのコンピュータプログラムの移送を容易にする任意の媒体を含む通信媒体との両方を含んでいる。ここで使用されるように、「コンピュータ記憶媒体」はコンピュータがアクセスすることができる任意の物理媒体を含んでいる。コンピュータ記憶媒体の例は、それらに限定されるものではないが、フラッシュドライブまたは他のフラッシュメモリデバイス（例えば、メモリキー、メモリスティック、キードライブ）、ＣＤ−ＲＯＭまたは他の光学記憶装置、ＤＶＤ、磁気ディスク記憶装置または他の磁気記憶装置、メモリチップ、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、スマートカード、あるいは、コンピュータプロセッサが読むことができる命令またはデータ構造の形態でのプログラムコードを運搬しあるいは格納するために用いることができる他の任意の適切な形態を含んでいる。同様に、ルータ、ゲートウェイ、サーバ、または他の伝送装置、有線（同軸ケーブル、ファイバ、ツイストペア、ＤＳＬケーブル）あるいは無線（赤外線、無線周波数、セルラ、マイクロ波）を含む種々の形態のコンピュータ媒体が、コンピュータに命令を送信あるいは搬送してもよい。命令は、それらに限定されるものではないが、アセンブリ言語、Ｃ、Ｃ＋＋、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、ＨＴＭＬ、ＰＨＰ、Ｊａｖａ（登録商標）、Ｊａｖａｓｃｒｉｐｔ（登録商標）及びＰｙｔｈｏｎを含む任意のコンピュータプログラミング言語からのコードからなっていてもよい。
【００３８】
さらに、本明細書で使用されるように用語「例示」及び「例示的な」は、例、事例または説明としての機能を果たしていることを意味する。ここで「例示」及び「例示的な」として説明されるあらちゆる様相または設計は、必ずしも他の様相または設計に対して好ましいあるいは有利であると解釈されるべきものではない。
【００３９】
提案されたデータブロック再構築方式は、バイナリ（二進）データのようなデジタルデータに対してふさわしいものである。しかしながら、いずれかのデータ書式（フォーマット）あるいはデータ表現に限定されるものではない。特に、ここで説明される例示実施形態は、整数値の上で総和(summation)を行う射影とMojette（正及び逆）変換とを使用するが、本発明の開示は、これらに限定されるものではなく、位数ｑのガロア体ＧＦ（ｑ）において値を有する元の上で実行される射影とMojette（正及び逆）変換に対して等しく適用な可能なものである。ここでｑは２以上の整数である。このような場合、整数の総和は、それぞれのガロア体ＧＦ（ｑ）での対応する演算に置き換えられなければならない。例えば、ＧＦ（２）の元すなわちバイナリデータの上で射影とMojette変換とが計算されるとき、整数の総和は論理ＸＯＲ演算に置き換えられることができる。
【００４０】
図面を参照すると、図１は、Mojette変換を用いたサイズ（大きさ）Ｎのデータブロックの例示的な符号化を示している。
【００４１】
入力データブロックは、所定のサイズのバイナリシンボルであってよいＮ個の入力シンボルを有する。入力データブロックは、まず、２次元の幾何学的凸台(geometrical convex support)の上に写像され、次に、写像に基づいてメモリに格納される。２次元幾何学的凸台は、入力データブロックによって台を完全に埋めつくすことができるように選択される。与えられた台を埋めつくすこと関して入力データブロックのサイズが不十分であれば、上記の条件が満足されるように、ダミーデータも入力データブロックに挿入されてもよい。
【００４２】
例えば、幾何学的凸台は、サイズＰ×Ｑの長方形の形状であってもよい。そのような場合、入力データブロックは、サイズＰ×Ｑのエントリのメモリアレイ内に格納されるであろう。このメモリアレイは、Ｐ行Ｑ列を有する入力データブロックの行列表現に対応する。メモリアレイの大きさは、その中に入力データブロックの全体を格納できるように、すなわち、条件Ｐ×Ｑ≧Ｎが満足されるように選ばれる。以下では、メモリアレイでのそこに格納されたシンボルの位置は、ｋ＝０，…，Ｐ−１、ｌ＝０，…，Ｑ−１として、ｆ（ｋ；ｌ）で表されるであろう。
【００４３】
Ｎp個のパリティシンボルベクトル（または射影ベクトル）が、以下の式
【００４４】
【数６】
0006487931.tif 000007
【００４５】
にしたがうＮp個の射影方向(projection direction)に基づいて、メモリアレイ内に格納されたシンボルｆ（ｋ；ｌ）の射影を用いて生成される。ここでｂnは、射影ベクトル
【００４６】
【数７】
0006487931.tif 000008
【００４７】
のシンボルのインデックス（指標）であり、Δ（ｍ）は、クロネッカー(Kronecker)関数（Δ（０）＝１及びΔ（ｍ≠０）＝０）を示している。個々の線ｎ＝−ｑi・ｋ＋ｐi・ｌに所属しメモリアレイに格納された各シンボルｆ（ｋ；ｌ）は、射影（ｐi，ｑi）のビン(bin)に寄与する。
【００４８】
Ｎp個の方向射影の集合は、計算された射影から入力データブロックが再構築することができることを保障するために、いわゆるカッツ(Katz)の判定基準を満足するように選択されてもよい。長方形の形状とされた台の場合、カッツの判定基準は、以下のように述べることができる：
サイズＰ×Ｑの長方形アレイ上のピクセル(pixel)の集合を仮定し、また、｜ｑi｜＞０として、Ｎp個の射影方向の集合
【００４９】
【数８】
0006487931.tif 000009
【００５０】
であるならば、（Ｐ×Ｑ）上で定義されるユニークな像が、方向
【００５１】
【数９】
0006487931.tif 000010
【００５２】
での射影の集合によって再構築されることができる。カッツの判定基準についてのさらなる詳細は、非特許文献２で見ることができる。
【００５３】
例えば、Ｎp個の方向射影の集合は、以下の条件を考慮して選択することができる：
０，…，Ｎp−１に対し、
【００５４】
【数１０】
0006487931.tif 000011
【００５５】
射影方向パラメータｐiの各々は整数である。この場合、Ｎp個のパリティシンボルベクトル（または射影ベクトル）は、以下の式
【００５６】
【数１１】
0006487931.tif 000012
【００５７】
にしたがうＮp個の方向ｐiに基づいて、メモリアレイ内に格納されたシンボルｆ（ｋ；ｌ）の射影を用いて生成されることができる。ここでｂnは、射影ベクトル
【００５８】
【数１２】
0006487931.tif 000013
【００５９】
のシンボルのインデックス（指標）であり、Δ（ｍ）は、クロネッカー関数（Δ（０）＝１及びΔ（ｍ≠０）＝０）を示している。
【００６０】
入力データブロック及びパリティベクトルは、次に、多重化されて、組織的データ（すなわち、入力データブロックのデータ）のほかにパリティデータ（すなわち、パリティベクトルすなわち計算された射影のシンボル）とを有する符号化されたデータの集合を生成する。符号化されたデータのこの集合は、符号化の出力を構成し、これは記憶のために使用することができ、この場合、組織的データとパリティデータの両方が、場合によっては分散型である記憶装置に格納される。これにより、データ複製のコストなしに冗長性を与えることができる。
【００６１】
分散型の記憶装置は、異なるメモリユニット内に格納された組織的データ及びパリティデータによって使用されることができ、あるいは異なる記憶装置パラメータによって使用されることができる。例えば、パリティデータを格納するために複製を用いることができ、その一方で、組織的データには複製が用いられないようにすることもできる。さらに、組織的データとパリティデータのそれら自身が分散形態で格納されていてもよい。各々の場合、分散型記憶装置は、記憶ユニットの障害に対する格納データの保護が最適化されるような形態で格納データを分散させるために使用されてもよい。
【００６２】
図２ａ、図２ｂ及び図２ｃは、Mojette変換射影を用いる、例示データブロックの符号化を示している。
【００６３】
図２ａに示されたものは、符号化されるべき、サイズが１５のデータブロックである。
【００６４】
図２ｂにおいて、同じデータブロックのデータが、３つの行と５つの列を有するサイズ３×５の行列表現で示されている。１番目のパリティベクトル
【００６５】
【数１３】
0006487931.tif 000014
【００６６】
が、水平方向パラメータｐ0によって定義される方向を有する射影を用いて生成される。ここでｐ0＝０である。上述したように、この水平方向パラメータ値を有する方向は、垂直方向、すなわち行列表現の列によって定義される方向に対応する。これにより、パリティベクトルの各々の元（ここではシンボルとも称される）
【００６７】
【数１４】
0006487931.tif 000015
【００６８】
は、行列表現のそれぞれの列要素の和の計算によって決定される。
【００６９】
この例において、生成されたパリティベクトルは、
【００７０】
【数１５】
0006487931.tif 000016
【００７１】
図２ｃにおいて、データブロックのデータが、サイズ３×５の同じ行列表現で示されている。２番目のパリティベクトル
【００７２】
【数１６】
0006487931.tif 000017
【００７３】
が、水平方向パラメータｐ1によって定義される方向を有する射影を用いて生成される。ここでｐ1＝０である。この水平方向パラメータ値を有する方向は、行列表現の対角線によって定義される方向に対応する。これにより、パリティベクトルの各々の元（ここではシンボルとも称される）
【００７４】
【数１７】
0006487931.tif 000018
【００７５】
は、図に示されるように、行列表現のそれぞれの対角線方向の線の上の元の和の計算によって決定される。
【００７６】
この例において、生成されたパリティベクトルは、
【００７７】
【数１８】
0006487931.tif 000019
【００７８】
したがって、サイズ１５のデータブロックの符号化は、符号化されたデータに対応する組織的データブロックと、符号化されたデータの行列表現の元の射影を計算することによってそのシンボルが決定される２つのパリティベクトルとを生成する。この例において、組織的データとパリティデータとの全体のサイズは２７である。言い換えれば、図示された符号化の符号化率は１．８である。
【００７９】
図３に示されているものは、図２ａに示されているデータブロックの、一実施形態にしたがう再構築である。
【００８０】
この例では、組織的ベクトルの１つが失われ、その結果、利用できる組織的ベクトルでは、３つの組織的ベクトルのうちの２つの組織的ベクトルについての長方形台（図３のサイズ３×５の行列表現）の上への写像のみが可能である。写像の最初の２つの線に対応する利用可能なベクトル（３；０；１；４；７）及び（２；４；８；２；１）を用いて写像は再構成される。消失のために欠けている最後の線の値は、所定の値で初期化される（図示される例では、そのような所定の値は０に等しい）。
【００８１】
図３にさらに示されたものは、利用可能なパリティベクトルであり、これは、符号化の際に、射影方向（ｐ＝０；ｑ＝１）にしたがった符号化写像の値の射影を用いて生成されたものである。
【００８２】
消失を置き換える初期化値を用いてひとたび写像が再構成されると、パリティ射影ベクトルが利用可能な射影方向、この例では射影方向（ｐ＝０，ｑ＝１）、と同じ射影方向にしたがって、再構成された写像上の射影ベクトルを計算することにより、再構築射影ベクトルが生成される。
【００８３】
この例では、生成された再構築射影ベクトルは、
【００８４】
【数１９】
0006487931.tif 000020
【００８５】
次に、更新されたパリティ射影ベクトルが、再構築された射影ベクトル（５；４；９；６；８）と、射影方向（ｐ＝０；ｑ＝１）を用いて生成されたパリティ射影ベクトル、すなわちベクトル（５；５；１５；９；１２）と、から生成される。この例では、更新されたパリティ射影ベクトルは、再構築射影ベクトルの値を、パリティ射影ベクトルの対応する値から差し引くことによって生成され、結果として、更新されたパリティ射影ベクトル（０；１；６；３；４）がもたらされる。
【００８６】
いくつかの実施形態において、更新されたパリティ射影ベクトルの値は、再構築された値によって初期化値を置き換えるために、再構成された写像の上に逆射影される。ここに示される例では、（３×５）長方形台の上への更新されたパリティ射影ベクトル（０；１；６；３；４）の逆射影は、最初の長方形台写像を導き、したがって、利用可能な組織的データと利用可能なパリティデータとを使用して、失われたデータが回復したことになる。
【００８７】
逆射影の演算については、非特許文献２の第４章("Reconstructability with the Inverse Mojette Transform")に詳細に説明されている。
【００８８】
図４ａ及び図４ｂに示されているものは、他の実施形態に基づく、図２ａに示されるデータブロックの再構築である。
【００８９】
この例では、２個の組織的ベクトルが失われており、その結果、利用できる組織的ベクトルでは、３つの組織的ベクトルのうちの１つの組織的ベクトルについての長方形台（図４ａのサイズ３×５の行列表現）の上への写像のみが可能である。写像の２番目の線に対応する唯一の利用可能なベクトル（２；４；８；２；１）を用いて写像は再構成され、消失のために欠けている１番目と最後の線の値は、所定の値に初期化される（図示される例では、そのような所定の値は０に等しい）。
【００９０】
図４ａにさらに示されているものは、利用可能な複数のパリティベクトルであり、これは、符号化の際に、射影方向（ｐ＝０；ｑ＝１）及び（ｐ＝１；ｑ＝１）にそれぞれしたがった符号化写像の値の射影を用いて生成されたものである。
【００９１】
消失を置き換える初期化値を用いてひとたび写像が再構成されると、パリティ射影ベクトルが利用可能な射影方向、この例では射影方向（ｐ＝０，ｑ＝１）及び（ｐ＝１，ｑ＝１）、と同じ射影方向にしたがって、再構成された写像上の複数の射影ベクトルを計算することにより、複数の再構築射影ベクトルが生成される。
【００９２】
この例では、生成された１番目の再構築射影ベクトルは、
【００９３】
【数２０】
0006487931.tif 000021
【００９４】
生成された２番目の再構築射影ベクトルは、
【００９５】
【数２１】
0006487931.tif 000022
【００９６】
次に、更新されたパリティ射影ベクトルが、一方の側として再構築射影ベクトル（２；４；８；２；１）及び（０；２；４；８；２；１；０）と、射影方向（ｐ＝０；ｑ＝１）及び（ｐ＝１；ｑ＝１）を用いて生成されたパリティ射影ベクトル、すなわちベクトル（５；５；１５；９；１２）及び（３；２；５；１３；１５；４；４）とから生成される。この例では、更新されたパリティ射影ベクトルは、再構築射影ベクトルの値を、再構築射影ベクトルと同じ射影方向を用いて生成されたパリティ射影ベクトルの対応する値から差し引くことによって生成され、結果として、更新されたパリティ射影ベクトル（３；１；７；７；１１）及び（３；０；１；５；１３；３；４）がもたらされる。
【００９７】
いくつかの実施形態において、逆射影を用いる反復Mojette再構築アルゴリズムが実行されて、初期データブロックの再構築を完成する。
【００９８】
Mojette再構築アルゴリズムは反復を実行し、各反復は、逆射影が可能である利用可能な射影（それらの値はビンとも呼ばれる）における値、すなわち、２次元台のたった１つの値が射影のその対応する線に関して未知であるビンの特定を含んでいる。反復はまた、逆射影されることができるビンがひとたび特定されたときに、２次元台内であってその射影の線ｂ＝ｋ・ｑi−ｌ・ｐiにある値ｆ（ｋ；ｌ）のうちのどれが未だに再構築されていないかの判定を含んでいる。
【００９９】
これらの演算は、２次元台上の射影角の同じ集合を用いて計算された射影の２つの集合を使用することができる。一方の例として２次元台はすべて１に等しい値を有し（２次元台はこのときユニタリ像(image)と呼ばれる）、また、２次元台は、ｆ（ｋ；ｌ）＝ｋ＋ｌ・Ｐに等しい値を有する（このとき２次元台はインデックス像と呼ばれる）。ここでＰは台の幅である。
【０１００】
再構築可能なビンは、ユニタリ像において、１（２次元台でのこのビンに対する１つの値）に等しいビン値によって特定される。再構築可能なビンの各々に対し、インデックス像の変換での対応するビンは、直接、２次元台での再構築する値の位置を与える。
【０１０１】
２次元台での値の再構築ののち、再構築された値の寄与を取り除くために、利用可能な射影が更新される。
【０１０２】
図４ｂは、各ビン値に対応する２次元台での値の個数とともに、図４ａに示される上述した例示実施形態の再構築射影と利用可能なパリティ射影とに基づいて得られた２つの更新されたパリティ射影を例として示している。
【０１０３】
例えば、２番目の更新されたパリティ射影において、ビン値３は、２次元台上の単一の値に対応し、ビン値０は、２次元台上の２つの値に対応し、ビン値１，５，１３の各々は、２次元台上の３つの値に対応し、ビン値３は２次元台上の２つの値に対応し、ビン値４は２次元台上の単一の値に対応する。
【０１０４】
１番目の更新されたパリティ射影に関し、射影方向が与えられると、すべてのビン値は、２次元台に存在する線と同数の値に対応し、すなわちこの例では３個の値に対応する。
【０１０５】
２次元台の１つの値に対応する２つのビンは、２番目の更新されたパリティ射影に対応する射影方向にしたがって逆射影されることができる。
【０１０６】
逆射影は、失われている値のうちの２つが挿入された２次元台を与え、次に、２次元台における更新された値に基づいて、２番目の更新されたパリティ射影を再度更新することができる。
【０１０７】
２次元台内のさらに２つの失われている値もまた、２次元台内の２つの値に対応する２番目の更新されたパリティ射影内のビンの値に基づいて、再構築することができる。
【０１０８】
図４ｂに示されているものは、２次元台内の２つの値に対応する２番目の更新されたパリティ射影内の２つのビン、すなわち、２番目と６番目のビンであり、これらはそれぞれ、値０及び３に対応する。これらの２つの値も２次元台内で逆射影される。
【０１０９】
再構築アルゴリズムの例示する以下のステップが図４ｃに示されている。図４ｃを参照すると、１番目の更新されたパリティ射影内のビンの値に基づいて、２次元台内の４つの依然として失われている値も再構築することができる。上述したように、１番目の更新されたパリティ射影のビンの値は、２次元台内の３つの値に対応する。しかしながら、再構築のこの段階において、４個の再構築された値の各々に対し、２つの値が利用可能である。なぜならば、それらは初期の２次元台での失われていないデータの中にあったか、あるいは、それらは既に再構築されているからである。
【０１１０】
それら４個の値の各々の再構築が図４ｃに示されており、ここでは各再構築された値が灰色によって強調されている。
【０１１１】
最後に、２番目の更新されたパリティ射影のビンの値を使用して、最後の２つの失われた値が再構築される。１番目の更新されたパリティ射影の場合と同様に、再構築のこの段階で、２次元台の３つの値に対応する２番目の更新されたパリティ射影のビンの値を使用することができ、それらの値のうちの２つがこの段階で利用可能である。
【０１１２】
例を単純化する目的で、再構築ループの各反復でのパリティ射影の更新は示されていないが、再構築アルゴリズムは、２次元台の上に逆射影されるべき値を計算するために、このような反復する更新を使用することができる。
【０１１３】
（３×５）長方形台の上への更新されたパリティ射影値の逆射影は、次に、最初の長方形台写像をもたらすことができ、その結果、利用可能な組織的データ及び利用可能なパリティデータを使用して、失われたデータを回復することができる。
【０１１４】
２次元台の上に写像された消失データの再構築を初期化するための提案されたプロセスは、長方形でない凸台にも適用することができる。図５は、提案されたプロセスを適用することができるそのような上凸２次元台の例を示している。図５に示される例において、台の線の数で定義される、台の深さ(depth)は、５に等しい。
【０１１５】
このような凸台の上に写像される符号化済みデータの再構築のための異なる判断基準を上述の非特許文献２に見ることができる。
【０１１６】
図面を参照すると、図６は、本明細書の開示に基づく再構築方式を使用するように構成された例示のデータ記憶／読出しシステム１００を示している。データ記憶／読出しシステム１００は、データ記憶メモリ１０１、データ記憶エンジン１０２、データ読出しエンジン１０３、制御エンジン１０４及びデータメモリ１０５を含むコンピュータシステムである。図１に示されるアーキテクチャにおいて、データ記憶メモリ１０１、データ記憶エンジン１０２、データ読出しエンジン１０３及びデータメモリ１０５の全てが、制御エンジン１０４を介して、相互に作動的に接続している。
【０１１７】
一実施形態において、データ記憶メモリ１０１は、場合によっては分散形態で、組織的データとこの組織的データから生成されたパリティデータとを含むデータを記憶するデータベースである。すなわち、データ記憶メモリ１０１は、データが分散形態で格納される複数のメモリバンクあるいはメモリモジュールを有している。上述したように、組織的データは、パリティデータと一緒に格納されることはできない。
【０１１８】
一実施形態において、制御エンジン１０４は、任意の適切なマイクロプロセッサ、ＡＳＩＣ及び／または状態機械であってよいプロセッサを含んでいる。種々の実施形態に基づいて、コンピュータのうちの１以上が、パラレルコンピューティングを提供する複数のプロセッサを有するマルチプロセッサコンピュータとして構成されることができる。制御エンジン１０４はまた、コンピュータによって実行されたときに本明細書に記載された要素をそのコンピュータに実行させるコンピュータプログラム命令またはソフトウェアコードを格納することが可能な、限定をするものではないがデータメモリ１０５のようなコンピュータ記憶媒体を有していても、あるいはそのコンピュータ記憶媒体と通信してもよい。データ記憶メモリ１０１と他のデータメモリ１０５は、制御エンジン１０４に接続されたコンピュータ記憶媒体であって、それぞれのデータベース及び関連するハードウェアに格納されたデータの管理を容易にするために、関連する１または２以上のデータベース管理システムとともに動作可能であっててもよい。
【０１１９】
図６を参照して示され説明されたデータ記憶／読出しシステム１００は、ほんの一例として与えられていることが理解される。数多くの他のアーキテクチャ、動作環境及び構成が可能である。システムの他の実施形態は、より少数のあるいはより多数の要素を含むことができ、図６に示されたシステム要素に関して説明された機能性のいくつかあるいはすべてを組み込まれていてもよい。したがって、データ記憶／読出しシステム１００の部分としてデータ記憶メモリ１０１、データ記憶エンジン１０２、データ読出しエンジン１０３、制御エンジン１０４及びデータメモリ１０５が示されているが、要素１０１−１０５の位置と制御には何らの限定も置かれない。特に、他の実施形態において、要素１０１−１０５は。異なるエンティティまたは演算システムの部分であってもよい。
【０１２０】
なおさらに、データ記憶エンジン１０２及び／またはデータ検索エンジン１０３は、プロセッサ駆動型(processor-driven)デバイスを含んでいてもよく、プロセッサとプロセッサに作動的に接続されたメモリとを含んでいてもよく、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組み合わせによって実装されて本明細書に記載された能力を実現し機能を実行してもよい。
【０１２１】
いくつかの実施形態において、データ記憶エンジン１０２は、データ記憶メモリ１０１内に格納されるべきデータの組織的符号化を管理するように構成されている。データ記憶エンジンは、符号化されている格納された組織的データに関連付けられている格納されたパリティデータに含まれるであろう１またはいくつかのパリティ射影ベクトルを、Mojette変換を介して生成するように構成されている。
【０１２２】
いくつかの実施形態において、データ読出しエンジン１０３は、データ記憶メモリ１０１から読出された利用可能な組織的データ及びパリティデータに基づいて、本明細書で開示した再構築方式を実行するように、構成されている。
【０１２３】
好ましい実施形態について本発明を説明してきたが、当業者は、添付の特許請求の範囲によって規定された本発明の範囲から逸脱することなく、種々の変更及び／または改良をなすことができることを容易に理解するであろう。特に、本発明は、開示されたシステムアーキテクチャに関する特定の実施形態に限定されるものではなく、添付の特許請求の範囲によって規定された本発明の範囲から逸脱することなく種々のシステムアーキテクチャや要素を用いて実現できる。
【０１２４】
特定の好ましい実施形態の文脈で本発明を説明してきたが、いろいろな他の実施形態において、システム、装置及び方法の特定の効果、特徴及び様相が実現できることが理解されるべきである。さらに、ここで説明した種々の様相及び特徴を別々に、または組み合わせて、または相互に置き換えて実践できることと、特徴及び様相のいろいろな組み合わせ及びサブコンビネーションが実現できてしかもなお本発明の範囲内にあることとが意図される。さらにまた、上述したシステム及び装置は、好ましい実施形態で説明したモジュール及び機能の全てを含んでいる必要はない。
【０１２５】
特に、データ記憶／読出しシステムの文脈で本発明を説明してきたが、例えば無線伝送チャネルである伝送チャネルを介するデータ伝送の文脈においても本発明を適用することができる。そのような文脈において、本明細書で開示した再構築方式は、受信データの復号と失われたあるいはエラーを含む受信データの再構築とを実行する装置によって使用されるであろう。
【０１２６】
本明細書で説明される情報及び信号は、いろいろな異なる技術及び技法のいずれかを用いて表現することができる。例えば、データ、命令、コマンド、情報、信号、ビット、シンボル及びチップは、電圧、電流、電磁波、磁場または磁性粒子、光学場または光学粒子、あるいはこれらの組み合わせによって表すことができる。
【０１２７】
実施形態に応じ、本明細書で説明される方法のいずれかにおける特定の行為、事象または機能は、異なるシーケンスで実行されることができ、加えられたり、混ぜられたり、すべていっしょ除外されたりしてもよい（例えば、本方法の実行には説明した行為または事象の全てが必要というわけではない）。さらに、ある実施形態において、行為または事象は、逐次的というよりもむしろ同時に実行されてもよい。
【図１】
0006487931.tif 000028
【図２ａ】
0006487931.tif 000029
【図２ｂ】
0006487931.tif 000030
【図２ｃ】
0006487931.tif 000031
【図３】
0006487931.tif 000032
【図４ａ】
0006487931.tif 000033
【図４ｂ】
0006487931.tif 000034
【図４ｃ】
0006487931.tif 000035
【図５】
0006487931.tif 000036
【図６】
0006487931.tif 000037