JP2014535107A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2014535107A5 JP2014535107A5 JP2014538772A JP2014538772A JP2014535107A5 JP 2014535107 A5 JP2014535107 A5 JP 2014535107A5 JP 2014538772 A JP2014538772 A JP 2014538772A JP 2014538772 A JP2014538772 A JP 2014538772A JP 2014535107 A5 JP2014535107 A5 JP 2014535107A5
- Authority
- JP
- Japan
- Prior art keywords
- key
- data
- data center
- value store
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003860 storage Methods 0.000 claims description 91
- 230000015654 memory Effects 0.000 claims description 27
- 230000003362 replicative Effects 0.000 claims description 14
- 239000000284 extract Substances 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 26
- 238000009826 distribution Methods 0.000 description 14
- 238000000034 method Methods 0.000 description 14
- 239000000203 mixture Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 8
- 241000282376 Panthera tigris Species 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 230000002093 peripheral Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006011 modification reaction Methods 0.000 description 2
- 230000000051 modifying Effects 0.000 description 2
- 230000003287 optical Effects 0.000 description 2
- 229940116821 SSD Drugs 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000003153 chemical reaction reagent Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- -1 complex Substances 0.000 description 1
- 230000003111 delayed Effects 0.000 description 1
- 230000001809 detectable Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Description
本明細書に別に規定されていないかぎり、本章に述べる題材は、本出願の請求項に関する従来技術でなく、本章に含めることによって従来技術であると認めるものでもない。
クラウドサービスは、通常、従来のデータベース管理システム(DBMS)をサポートしない、むしろ、それらDBMSは、アプリケーションプログラミングインターフェース(API:Application Programming Interface)コマンドを介して、ユーザがアクセスすることができるキー・バリューストアサービスを提供する。このアプローチに関する理由は、DBMSが容易にスケーリングされず、そして失敗またはネットワークの不確かさ、すなわちサービス指向のアーキテクチャア(SOA:service oriented architecture)に対する両方の要となるインフラの前提にうまく対処していないからである。一度ユーザがそのデータをデータセンタに送ると、データセンタの間でデータを移動させた後で、複雑なツリー構造および最初のデータセンタが長期の動作監視を使用して生成している可能性があるデータの繰り返し(複写)を含む、データベースの性能を維持するには、キー・バリューストアの複製が伴う。そのような構造を宛先データセンタで複製するためには、ユーザテーブルのためのストレージ分割の境界および複写のレコードが使用されている場所を知る必要がある場合がある。これは、データセンタ中でのユーザのアクセスから取り去られる情報である。
キー・バリューストアは、通常、隠れ層を含む。ユーザのデータテーブルは、多くのマシンにわたって分割されることがあり、各キー・バリューの位置を探し出すために、各テーブル上に複数のレベルのメタデータツリーを有する場合がある。キー・バリューストアは、通常、各データセンタのサービスプロバイダーに専有のものであり、API呼び出しを介してユーザにはアクセス可能であり得、そこではユーザは、キーまたは照合用の用語を提示して、その値を検索することができる。メタデータテーブルまたはユーザのデータテーブルの実際の構造は、ユーザが見ることができず、とはいえ、データベースの性能を維持すべき場合、いくつかの細部は、宛先データセンタにおいて複製する必要がある場合がある。
従来のシステムでは、ユーザは、キー・バリューストアが物理的に格納されている実際のファイルに対するアクセス権を有していない。キー・バリューのファイルは、データセンタのサービス構造の一部であり、顧客を新しいデータセンタに移すことが望まれる場合、専有の方法でマシンの間に広げられ、カレントのデータセンタによって開発された最適化を含み、専有のファイルフォーマットを使用する、これらの大いに統合されたデータの記憶を検索するという行為に、カレントのデータセンタが技術者を割り当てる可能性がありそうもない。
本開示は、一般にデータセンタでキー・バリューストアをマッピングし、データストレージ構造を複製するための技術を述べる。
いくつかの実施例によれば、キー・バリューストアをマッピングし複製するための方法は、対象のデータセンタのキー・バリューストアからのデータのクエリキャッシュを用いて相対的なデータのストレージ位置を抽出することによって、対象のデータセンタ内で物理的なストレージ分散をマッピングすることと、対象のデータセンタ内でデータ分割およびデータ複写をマッピングすることとを含むことができる。また、本方法は、対象のデータセンタ内のデータを新しいデータセンタ中で同様の構造に複製することを含む。
他の実施例によれば、キー・バリューストアのマッピングおよび複製を実施するように適合されたコンピューティングデバイスは、メモリと、メモリに結合されるプロセッサとを含むことができる。プロセッサは、データ転送アプリケーションを実行することができ、それは、対象のデータセンタのキー・バリューストアからのデータのクエリキャッシュを用いて相対的なデータのストレージ位置を抽出することによって、対象のデータセンタ内で物理的なストレージ分散をマッピングし、対象のデータセンタ内でデータ分割およびデータ複写をマッピングし、そして対象のデータセンタ内のデータを新しいデータセンタ中で同様の構造に複製することができる。
さらなる実施例によれば、コンピュータ可読記憶媒体は、キー・バリューストアのマッピングおよび複製のための命令をその上に格納することができる。命令は、対象のデータセンタのキー・バリューストアからのデータのクエリキャッシュを用いて相対的なデータのストレージ位置を抽出することによって、対象のデータセンタ内で物理的なストレージ分散をマッピングすることと;対象のデータセンタ内でデータ分割およびデータ複写をマッピングすることと;対象のデータセンタ内のデータを新しいデータセンタ中で同様の構造に複製することとを含むことができる。
また他の実施例によれば、キー・バリューストアのマッピングおよび複製を実施するように適合されたサーバは、メモリと、メモリに結合されるプロセッサとを含むことができる。プロセッサは、データ転送アプリケーションを実行することができ、それは、対象のデータセンタのキー・バリューストアに対して所定数の結果および位置のキャッシュ要素を要求するクエリを反復して提出することによって、対象のデータセンタの既存のキー・バリューストア中のファイル区切りを抽出し;物理的なストレージ容量にわたるアドレス範囲内の戻り値を受け取り;そして対象のデータセンタにおいて物理的にグループ化されているキー・バリューのセットおよびレコード複写物を回収するように構成することができる。
前述の要約は、例示的であるだけであり、決して限定するものと意図しない。上記に述べた例示的な態様、実施形態および特徴に加えて、さらなる態様、実施形態および特徴は、図面および次の詳細な記述を参照すると、明らかになるはずである。
本開示の前述および他の特徴は、次の記述および添付の請求項から、添付の図面と併せて検討すると、より完全に明らかになるはずである。これらの図面が、本開示によるいくつかの実施形態だけを描いており、したがって、その範囲を限定するものと見なすべきでなく、本開示は、添付図面を使用して、さらなる具体性および詳細さを備えて述べることを理解されたい。
次の詳細な記述では、その一部を形成する添付図面を参照されたい。図面では、同様のシンボルが、文脈が他に指示しないかぎり、通常、同様の構成要素を識別する。詳細な記述で述べる例示的な実施形態、図面および請求項は、限定するものと意味しない。本明細書に提示する主題の趣旨または範囲を逸脱せずに、他の実施形態を利用することができ、他の変更を実施することができる。本開示の態様は、本明細書に一般に述べ図で例示するように、広範囲のさまざまな異なる構成で構成する、置き換える、組み合わす、分離する、かつ設計することができ、それらのすべては、明らかに、本明細書で期待されることを容易に理解されるはずである。
本開示は、とりわけ、データセンタにわたってキャッシュベースのキー・バリューストアをマッピングし、データ構造を複製することに関連する方法、機器、システム、装置および/またはコンピュータプログラム製品について一般に描く。
簡単に述べると、キー・バリューストアは、格納を反復し、アドレス値中のジャンプを検出するようにキャッシュアドレスの変化を調べることによって既存のキー・バリューストア中のファイル区切りを抽出することを介して、データ構造を複製するためにマッピングすることができる。具体的に策定されるクエリは、レコード複写物を含むカレントのデータセンタにおいて物理的にグループ化されるキー・バリューセットを完全に回収するために、物理的なストレージ容量にわたるアドレス範囲内の値を戻すように実行することができる。そのようなセットは、新しい位置で、または新しいキー・バリューストア中にキー・バリューセットを複製する、または通知し、それによって、テーブルが時間とともに最適化されるのにつれて展開するレコード複写物を完全に備えるデータベースのツリー構造を複製して構築することを可能にするために使用することができる。
図1は、本明細書に述べる少なくともいくつかの実施形態によって構成される、複数のデータ記憶およびサーバにわたってユーザデータを格納するクラウドベースのデータセンタを概念的に例示する。
データセンタは、データおよび情報を格納し、管理し、そして広めるための集中型の保存場所である。データセンタは、組織体の施設内に存在することがある、または専門の施設として維持されていることがある。いくつかのデータセンタは、サーバ活動、ウェブのトラフィック、管理データおよびネットワーク性能をモニタリングする自動化システムを含むネットワーク操作センタ(NOC:network operations center)と同じ意味である場合がある。他のデータセンタは、収集されるデータを管理することに専門化されている場合がある。データセンタが、通常、物理的な実体(たとえばサーバルーム、サーバファームなど)と関連付けられているが、データセンタは、仮想データセンタ(VDC:Virtual Datacenter)としてもまた構成することができ、そこでは、管理されるデータが、仮想サーバおよびデータ記憶を介して、サイズ、オーナまたは他の面に基づき区切られる。
図1の略図100を参照すると、データセンタ104は、ユーザ102など、複数のユーザ(クライアント)のためにデータを格納することができる。ユーザ102は、1つまたは複数のネットワーク106上で(たとえばクラウドベースの相互関係で)データセンタ104と情報をやり取りすることができる。ユーザデータは、分散した形で、データ記憶112および114など、複数のデータ記憶上に格納することができる。ユーザデータの物理的な分散は、キー・バリューストア108によって管理される。キー・バリューストア108は、隠れ層を含むことができる。ユーザのデータテーブルは、多くのマシンにわたって分割される場合があり、各キー・バリューの位置を探し出すために、各テーブル上に複数のレベルのメタデータツリーを有することができる。さらにまた、キー・バリューストア108は、ユーザ102がAPI呼び出しを介してアクセス可能であり得て、そこでは、一人または複数のユーザが実行するアプリケーションによって、キーまたは照合用の用語を提示して、その値を検索することができる。
メタデータツリーおよび物理的なファイル領域は、サービスベースのキー・バリューストアのユーザには明かされていない、というのは、これらの記憶ファイルは、通常、複写物、分散されたファイルのブロックおよびもう使われていないデータが在るために複雑であるからである。複写物は、サービスのロバスト性および性能を可能にするつもりのためである場合がしばしばであり、一方もう使われていないデータは、ガーベジコレクション(garbage collection)およびクリーンアップ(負荷のバランシングのために)が遅れることによる。クラウドサービスは、APIを介して値を要求することだけによるアクセス権をユーザ102に与えることによって、これらの問題を取り除くことができる。しかし、照合用のデータベースの性能のために、ツリー構造の高度に知的な複製、および使用に基づき時間とともに最適化されてきた、すなわち物理的なデータのグループ化の複製と関連付けられるレコードの複写が、求められる場合がある。一度新しいデータセンタが物理的なデータのグループ化のコピーを有すると、そのセンタは、形状最適化を含む、それ自体のツリー、および前のデータセンタにおいて時間とともに展開してきた複写物を構築することができる。
図2は、本明細書に述べる少なくともいくつかの実施形態によって構成される、キー・バリューストア中に格納されるデータの位置情報を保存するための抽出されるデータテーブルおよびルート表の使用を例示する。
図2の略図200は、隠れ層を示す実施例のキー・バリューストアを示す。ユーザのデータテーブル230、234は、多くのマシン/記憶228、232にわたって分割することができ、それらに対して、複数のレベルのメタデータツリー(メタデータテーブル224、226およびルート表222)を有することができる。ユーザのデータテーブル230、234、メタデータテーブル224、226およびルート表222は、各キー・バリューの位置を探し出すために使用することができる。キー・バリューストアは、通常、専有のものであって、ユーザがAPI呼び出しを介してユーザがアクセスし、その呼び出しでは、ユーザが、キーまたは照合用の用語を提示して値を検索することができる。メタデータテーブル224、226またはユーザのデータテーブル230、234の実際の構造は、ユーザには見えない、とはいえ、データベース性能を維持すべき場合、その構造は、好ましくは複写レコードおよび他の隠されたプロパティを含んで、宛先データセンタにおいて複製することが必要である。
いくつかの実施形態は、キャッシュを使用するキー・バリューシステム中の真のユーザテーブル(これは、通常、データセンタのインターフェースによって取り除かれる)を抽出することを対象とする。キー・バリューが呼び出されたとき、システムは、それが再び呼び出される可能性を考慮して、その位置のキャッシュを維持する。これらのキャッシュは、通例、APIを介してユーザには示されない(それらは、分離されたサービス内に保持される)。しかし、呼び出しによって、サービスが一度に送ることができるより多くのレコードが戻される場合、2つのキャッシュ、つまり戻されたデータのためのキャッシュ、およびクエリをもっと多くのデータについて継続させることができるように、次のレコードの位置を提示するキャッシュが存在し、後者のキャッシュの位置は、ユーザが検出可能であり、したがってユーザは、クエリを中止したところから、ユーザのクエリを継続することができる。
実施形態によるシステムは、最大の戻されるアイテムリストを所定の短いサンプル長さの長さ(たとえば1)に設定し、そして次のアイテムのキャッシュ値を保存しながら、一連のクエリを発行することによって、「NextToken」としても呼ばれる、この「次のアイテムのキャッシュ」を用いる。そのような値は、通常、監視なしに使用され、コンテンツは、クエリを継続させること以上の意味を持たないはずである。通常のクエリは、プリセット数の値および次のアイテムのキャッシュ(たとえば「NextToken」)を返すように設計することができる。そのような状況では、トークン(token)は、トークンがファイルおよびディスクの境界をしばしば横切るので、実際、ランダムに現れることができる。
ストレージアドレスとしての次のアイテムのキャッシュの性質は、次のようにその性質を明らかにする、すなわち、次のアイテムのキャッシュを使用するクエリは、単一のクエリ内の複写物を移すが、しかし次のアイテムのキャッシュを使用する複数のクエリの戻りの間ではそうしない、というのは、各そのようなクエリが別個のストレージセグメント上に在り(それは、物理的な境界を横切ることがある)、そしてそれらの間で複写物を移すことは、性能に影響を及ぼす恐れがあるからである。
図3は、本明細書に述べる少なくともいくつかの実施形態によって構成される、物理的なデータストレージの分散が、データのクエリキャッシュを使用して、どのようにしてマッピングすることができるのかを例示する。
データ位置を提示する点での次のアイテムのキャッシュの性質は、次のアイテムのキャッシュ値(たとえば、単一値の戻り)とともに限定されたデータ要求を有する連続的なクエリを提出するアルゴリズムまたは技術によって、用いることができる。一度相対的なデータのストレージ位置が抽出されると、対象のデータセンタ内のデータ分割およびデータ複写は、マッピングすることができ、したがって、データは、新しいデータセンタ中で同様の構造に複製することができる。
図3の略図300を参照すると、キー・バリューストア340上のデータのクエリキャッシュを介して物理的なストレージ分散をマッピングすることが示されている。サービスプロバイダーのキー・バリューストア340は、ユーザが直接アクセス可能でない、サービスプロバイダーの抽出されるデータテーブル342および344と、やはり不明であるが、しかしユーザが新しいデータセンタにおいてそれを複製することができるように知ることが必要である、物理的なストレージ分散346とを含むことができる。クエリを介して物理的なストレージ分散を決定するプロセス350は、データ348についてある数(N)の結果を有して設定されるクエリを発行することから始めることができる。Nは、レコード毎にマッピングし、最も詳細なものを提示することを可能にするように、1ほど小さくすることができる。他の実施形態では、Nは、100または1,000など、より大きくしてもよく、平均のアドレス増分の差は、N個のどのグループが隣接する物理的なストレージ中に区切りを含んでいるのかを推定するために、調べることができ、次いで、それらの領域をより詳細に調べることができる。
検索設計にかかわらず、アルゴリズムは、352で位置のキャッシュ要素を含む結果を受け取り、354でその位置のキャッシュデータをデータマップに加えることができる。次いで、データマップは、356で複製のために必要な細部と比べることができる。さらなるデータが必要な場合、次に続くクエリは、350で次の位置から開始して発行することができる。マップが十分に詳細なものである場合、隣接するブロックレベルのクエリは、358で実行する、または前の結果から合成することができ、それによって複写物が物理的なストレージブロックの間で暴露される。
クエリを設計するために、いくつかのアプローチを使用することができる。クエリがより大きいと、確かな結果がより少なく生じる可能性があるが、しかし多くの場合、ストレージ境界がどこに在るのかをなお検出することができる。たとえば、何百万ものレコードを検索する場合、千のレコード粒度での解析は、ストレージ中の1ダースぐらいの境界を探し出すのに十分であり得る、というのは、それらの境界にわたるクエリが、戻される次のアイテムのキャッシュ値の間のアドレス空間中でより大きく飛ぶことがあるからである。次いで、千のレコードのクエリは、それぞれ、ストレージ境界を含み、ますますより細かい粒度でクエリを行うことができ、それによって境界の位置がユーザテーブルのストレージ中で絞り込まれる。これらの不連続の位置の確実性は、時間とともにより優れたものになることができ(たとえば、まず1,000のレコードの範囲内まで、次いで100、次いで10、次いで的確なレコードに)、そしてデータマップは、所定の正確さの測定基準に対して比較することができる。
たとえば、次のクエリのために開始点として次のアイテムのキャッシュを使用することによって、クエリを複数のストレージクエリに分解した場合、複写物は、各クエリ内には見られないが、しかし反復するレコードは、クエリの間に検出することができる。これは、物理的なストレージ分散346の分散される性質のかなり基本的な特性である。この特性は、システムが、頻繁に使用されるデータなど、最適化のために時間とともに複写されてきたレコードをマッピングするために使用することができる。ユーザが、どの物理的なストレージ要素が各レコードのコピーを有しているのかだけ知ることが必要である場合、物理的なストレージブロックを開始させるように、前にマッピングされた次のアイテム値に開始位置を設定し、かつマッピングされた物理的なストレージのサイズに一致させるようにレコードカウントを設定して、「*」(すべて)タイプの動作に一致する「select response」を使用することができる。一度そのような「select response」が各ストレージブロックに対して完了すると、複数のストレージブロック上にカレントに現れるレコードの複数のインスタンスが存在する各物理的なストレージブロックについてのレコードのリストを得ることができる。これによって、ユーザ値の複数のテーブルにわたって頻繁に使用されるレコードが繰り返して発生することなど、最適化を検出することが可能になる。
隣接するブロックレベルのクエリを実行しても、すべての複写レコードを捉えられない場合(たとえば、ストレージブロック内に複写が存在することがある)、最も詳細なデータを集めるために、レコード毎のクエリの戻りを使用することができる。この方法が望ましい場合、そのとき、Nを1に設定することができ、データベースを完全に横断するまで、動作350〜356をループさせる。隣接するブロックレベルのクエリは、そのループの間に集められたレコードから合成して構成することができ、その結果は、すべての死領域(恐らく、再構築されるまで明らかにすることができない無効にされたレコードから)および何回もコピーされたレコードを含む、カレントのデータストレージの配置の詳細なマップとすることができる。
一度データストレージ配置が既存のデータセンタで決定されると、その配置は、宛先データセンタで使用されるキー・バリューシステム内で同様にレコードを配置することによって、宛先データセンタで複製することができる。ツリー(ハッシュツリー(hash tree)、マークルツリー(Merkle tree)、タイガーツリー(Tiger tree)、Bツリーなど)が、これらのレコードをマッピングするために構築されたとき、ツリーは、複製されているデータセンタと同様のブランチおよびリーフ、および何倍もカバレッジを有することができる。これによって、出どころのデータセンタにおいて動作監視に基づき実施されてきた可能性がある複雑な最適化を含む、データ記憶性能の相似性を高めることができる。
図1〜3の具体的な実施例、構成要素および構成を使用して、実施形態を上記で議論してきたが、それら実施例は、キャッシュベースのキー・バリューストアのマッピングおよび複製をできるようにするために使用される一般的なガイドラインを提示するように意図している。これらの実施例は、実施形態に対する限定を成すものでなく、それら実施例は、本明細書に述べる原理を使用して他の構成要素、モジュールおよび構成を使用することによって、実施することができる。たとえば、いずれもの適切な専用または汎用のコンピューティングデバイスは、データストレージ構造をマッピングするために、データセンタのキー・バリューストアにクエリを提出するのに使用することができる。さらにまた、上記で議論した動作は、さまざまな順序で、特にインターレース方式で実施することができる。
図4は、汎用のコンピューティングデバイスを例示し、それは、本明細書に述べる少なくともいくつかの実施形態によって構成される、キャッシュベースのキー・バリューストアをマッピングするために使用することができる。極めて基本的な構成402では、コンピューティングデバイス400は、通常、1つまたは複数のプロセッサ404と、システムメモリ406とを含む。メモリバス408は、プロセッサ404とシステムメモリ406の間で通信するために使用することができる。
所望の構成に依存して、プロセッサ404は、ただしこれらに限定されないが、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、またはそのいずれもの組み合わせを含む、いずれものタイプのものとすることができる。プロセッサ404は、あるレベルのキャッシュメモリ412など、1つまたは複数のレベルのキャッシングと、プロセッサコア414と、レジスタ416とを含むことができる。実施例のプロセッサコア414は、数値演算ユニット(ALU:arithmetic logic unit)、浮動小数点演算ユニット(FPU:floating point unit)、デジタル信号処理コア(DSP Core:digital signal processing core)、またはそれらのいずれもの組み合わせを含むことができる。また、実施例のメモリコントローラ418は、プロセッサ404とともに使用することができる、あるいはいくつかの実施態様では、メモリコントローラ418は、プロセッサ404の内部の一部とすることができる。
所望の構成に依存して、システムメモリ406は、ただしこれらに限定されないが、揮発性メモリ(RAMなど)、不揮発性メモリ(ROM、フラッシュメモリなど)、またはそれらのいずれもの組み合わせを含む、いずれものタイプのものとすることができる。システムメモリ406は、オペレーティングシステム420と、1つまたは複数のアプリケーション422と、プログラムデータ424とを含むことができる。アプリケーション422は、クエリモジュール423と、データマッピングモジュール425とを含むことができ、それらは、不正な形式のクエリをデータセンタのキー・バリューストアに提出することができ得、本明細書に述べるように別のデータセンタにデータを複製するために、データセンタでデータストレージ構造を戻り値に基づきマッピングすることができる。プログラムデータ424は、他のデータの間で、データ使用のクライアントへの解析結果の送達を限定することに関連する制御パラメータ428を含むことができる。基本構成402について述べたことは、図4に、内側の点線内のそれら構成要素によって例示している。
コンピューティングデバイス400は、追加の特徴または機能性、および基本構成402といずれもの必要な装置およびインターフェースの間で通信を容易にする追加のインターフェースを有することができる。たとえば、バス/インターフェースコントローラ430は、ストレージインターフェースバス434を介して基本構成402と1つまたは複数のデータ記憶装置432の間での通信を容易にするために使用することができる。データ記憶装置432は、取外し式記憶装置436、非取外し式記憶装置438、またはその組み合わせとすることができる。取外し式記憶装置および非取外し式記憶装置の実施例は、いくつか例を挙げると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)など、磁気ディスク装置、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなど、光ディスクドライブ、半導体ドライブ(SSD)、およびテープドライブを含む。実施例のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなど、情報を格納するためのいずれかの方法または技術によって実現される揮発性および不揮発性、取外し式および非取外し式の媒体を含むことができる。
システムメモリ406、取外し式記憶装置436および非取外し式記憶装置438は、コンピュータ記憶媒体の実施例である。コンピュータ記憶媒体は、ただしこれらに限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、コンピューティングデバイス400によってアクセスすることができる、いずれもの他の媒体を含む。いずれものそのようなコンピュータ記憶媒体は、コンピューティングデバイス400の一部とすることができる。
コンピューティングデバイス400は、また、さまざまなインターフェース装置(たとえば、出力装置442、周辺インターフェース444および通信装置446)から基本構成402へバス/インターフェースコントローラ430を介して通信することを容易にするために、インターフェースバス440を含むことができる。いくつかの実施例の出力装置442は、グラフィック処理ユニット448およびオーディオ処理ユニット450を含み、それらは、ディスプレイまたはスピーカなど、さまざまな外部装置と1つまたは複数のA/Vポート452を介して通信するように構成することができる。実施例の周辺インターフェース444は、シリアルインターフェースコントローラ454またはパラレルインターフェースコントローラ456を含み、それらは、入力装置(たとえば、キーボード、マウス、ペン、音声入力装置、タッチ入力装置など)または他の周辺装置(たとえば、プリンタ、スキャナなど)など、外部装置と1つまたは複数のI/Oポート458を介して通信するように構成することができる。実施例の通信装置446は、ネットワークコントローラ460を含み、それは、1つまたは複数の他のコンピューティングデバイス462とネットワーク通信リンクで1つまたは複数の通信ポート464を介して通信することを容易にするように構成することができる。
ネットワーク通信リンクは、通信媒体の一実施例とすることができる。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波または他の転送メカニズムなど、「変調されたデータ信号」の形の他のデータによって実行させることができ、そしていずれもの情報伝達媒体を含むことができる。「変調されたデータ信号」は、その特性の1つまたは複数が、信号中に情報をエンコードするようにして設定される、または変化させられる信号とすることができる。例としてだけで限定せずに、通信媒体は、有線のネットワークまたは直接配線の接続部など、有線の媒体、および音響、無線周波(RF)、マイクロウェーブ、赤外線(IR)および他の無線媒体など、無線の媒体を含むことができる。用語「コンピュータ可読媒体」は、本明細書で使用する際、記憶媒体と通信媒体の両方を含むことができる。
コンピューティングデバイス400は、汎用または専用のサーバ、メインフレーム、または上記の機能のいずれかを含む同様のコンピュータの一部として実現することができる。また、コンピューティングデバイス400は、ラップトップコンピュータと非ラップトップコンピュータの構成の両方を含む、パーソナルコンピュータとして実現することができる。
実施例の実施形態は、また、方法を含むことができる。本明細書に述べる構造を含む、これらの方法は、いずれもの数のやり方で実施することができる。1つのそのようなやり方は、本開示で述べたタイプの装置の機械的な動作によるものである。別の任意選択のやり方は、動作のあるものを実施する一人または複数の人の操作員と関連して実施され、一方他の動作はマシンによって実施される、方法のそれぞれの動作の1つまたは複数に関するものである。これらの操作員は、互いに一緒に配置する必要はないが、しかしそれぞれは、プログラムの一部を実行するマシンとだけ連結させることができる。他の実施例では、人の相互関係は、マシンによって自動化される事前に選択される基準などによって、自動化することができる。
図5は、本明細書に述べる少なくともいくつかの実施形態によって構成される、図4の装置など、コンピューティングデバイスによって実施することができる、キャッシュベースのキー・バリューストアをマッピングし複製するための実施例の方法を例示するフローチャートである。実施例の方法は、ブロック522、524、526および/または528の1つまたは複数によって例示されるような1つまたは複数の動作、機能または行為を含むことができる。また、ブロック522〜528で述べる動作は、コンピューティングデバイス510のコンピュータ可読媒体520など、コンピュータ可読媒体中にコンピュータ実行可能な命令として格納することができる。
キャッシュベースのキー・バリューストアをマッピングし複製するためのプロセスは、ブロック522「次のアイテムのキャッシュを用いる不正な形式のクエリを提出する」から開始することができる。ブロック522で、図1のユーザ102のためのコンピューティングデバイスなど、クライアントデバイスが、位置のキャッシュ要素を有する所定数の結果を要求してデータセンタのキー・バリューストアにクエリを提出することができる(NextToken)。また、不正形式は、広範なクエリ、全データ記憶を戻すクエリ、またはエラーを発生するクエリについて、異常に少ない数の結果を伴う形式を取ることができる。
ブロック522は、ブロック524「戻り値および次のアイテムのキャッシュを受け取る」がその後に続くことができる。ブロック524で、提出したクエリの結果が、位置のキャッシュ要素とともに、ユーザ102のためのクライアントデバイスで受け取られる。ブロック524は、ブロック526「次のアイテムのキャッシュ中でジャンプをモニタリングする」がその後に続くことができる。ブロック526で、クライアントデバイスのデータマッピングモジュール425が、アドレス値中のジャンプを検出するために、キャッシュアドレスの変化をモニタリングし調べることができる。
ブロック526は、ブロック528「次のアイテムのキャッシュ値に基づきデータマップを生成する」がその後に続くことができる。ブロック528で、クライアントデバイスのデータマッピングモジュール425が、対象のデータセンタ内でデータ分割およびデータ複写をマッピングするために、位置のキャッシュ要素をデータマップに加えることができる。たとえば、データマップは、物理的なストレージのグループ化の変化を示す可能性がある異常に長い次のアイテムのキャッシュのステップに基づき、エントリーを複数の列にグループ化することによって、生成することができる。マップが十分に詳細なものになった場合、データマッピングモジュール425は、物理的なストレージブロックの間の複写を暴露するために、隣接するブロックレベルのクエリを発行する、または前の結果から隣接するブロックレベルのクエリを合成することができる。プロセスは、データストレージ構造が全部マッピングされるまで、反復して繰り返すことができる。ブロック528は、ブロック530「新しいデータセンタのためにデータマップを複製する」がその後に続くことができる。ブロック530で、クライアントデバイスにおけるアプリケーション422または別のアプリケーションが、対象のデータセンタでデータストレージ構造を別のデータセンタに複製することができ、そこにデータが、移動されている。
上記で述べたプロセスでブロックにおいて実施される機能は、例示するためである。クエリのキャッシュに基づく、キー・バリューストアのマッピングおよびデータストレージ構造の複製は、より少ない、または追加の機能を備える同様のプロセスによって実施することができる。いくつかの実施例では、機能は、異なる順序で実施することができる。いくつかの他の実施例では、さまざまな機能は、無くすことができる。また他の実施例では、さまざまな機能は、追加の機能に分割することができる、または互いに組み合わせて機能をより少なくすることができる。
図6は、本明細書に述べる少なくともいくつかの実施形態によって構成される、実施例のコンピュータプログラム製品のブロック図を例示する。いくつかの実施例では、図6に示すように、コンピュータプログラム製品600は、信号保持媒体602を含むことができ、その媒体は、また、たとえばプロセッサによって実行されたとき、図4に関して上記に述べた機能性をもたらすことができるマシン可読命令604を含むことができる。それゆえ、たとえばプロセッサ404を参照すると、データマッピングモジュール425が、命令604に応答して図6に示すタスクの1つまたは複数を引き受けることができ、その命令604は、次のアイテムのキャッシュを有する不正の形式のクエリを提出することと、結果および次のアイテムのキャッシュ値を受け取ることと、次のアイテムのキャッシュ値のジャンプをモニタリングすることと、次のアイテムのキャッシュ値に基づきデータストレージ構造をマッピングすることとに関連する動作を実施するために、媒体602によってプロセッサ504に伝達される。
いくつかの実施態様では、図6に描く信号保持媒体602は、ただしこれらに限定されないが、ハードディスクドライブ、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、デジタルテープ、メモリなど、コンピュータ可読媒体606を包含することができる。いくつかの実施態様では、信号保持媒体602は、ただしこれらに限定されないが、メモリ、リード/ライト(R/W)CD、R/W DVDなど、記録可能な媒体608を包含することができる。いくつかの実施態様では、信号保持媒体602は、ただしこれらに限定されないが、デジタルおよび/またはアナログの通信媒体(たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど)など、通信媒体610を包含することができる。それゆえ、たとえば、プログラム製品600は、RF信号保持媒体によって、プロセッサ604の1つまたは複数のモジュールに運ぶことができ、信号保持媒体602は、無線通信媒体610(たとえば、IEEE802.11スタンダードに適合する無線通信媒体)によって伝達される。
いくつかの実施例によれば、キー・バリューストアをマッピングし複製するための方法は、対象のデータセンタのキー・バリューストアからのデータのクエリキャッシュを用いて相対的なデータのストレージ位置を抽出することによって、対象のデータセンタ内で物理的なストレージ分散をマッピングすることと、対象のデータセンタ内でデータ分割およびデータ複写をマッピングすることとを含むことができる。本方法は、また、対象のデータセンタ内のデータを新しいデータセンタ中で同様の構造に複製することを含むことができる。
キー・バリューストアは、ユーザが直接アクセス可能でない、抽出されるデータテーブルを含むことができる。他の実施例によれば、本方法は、所定数の結果を有して設定されるクエリを発行することと、位置のキャッシュ要素を含む結果を受け取ることと、位置のキャッシュ要素をデータマップに加えることと、複製のために必要な細部とデータマップを比較することとをさらに含むことができる。マップが十分に詳細なものである場合、物理的なストレージブロックの間の複写を暴露するために、隣接するブロックレベルのクエリは、発行することができる、あるいは隣接するブロックレベルのクエリは、前の結果から合成することができる。マップが十分に詳細なものでない場合、新しいクエリは、発行することができる。
所定数は、格納されるデータのサイズによって決めることができる。所定数は、最も詳細になることを可能にするために1とすることができる。順次的な要求アドレスの間のステップが、約1つのストレージブロックまたは約1つのページの1つより大きい場合、平均のアドレス増分の差は、どのグループが隣接する物理的なストレージ中に区切りを含んでいるのかを推定するために走査することができ、隣接する物理的なストレージ中に区切りを含んでいるグループは、より詳細に物理的なデータストレージ構造を決定するために調べることができる。新しいデータセンタ中でデータを同様の構造に複製することは、新しいデータセンタで使用されるキー・バリューシステム内でレコードを同様に配置することを含むことができる。また、本方法は、1つまたは複数のツリー構造が、複製されているデータセンタと実質的に同様のブランチおよびリーフ、および何倍もカバレッジを有するようにデータをマッピングするために、1つまたは複数のツリー構造を構築することを含むことができる。ツリー構造は、ハッシュツリー、マークルツリー、タイガーツリーおよびBツリーの1つまたは複数を含むことができる。
さらなる実施例によると、キー・バリューストアのマッピングおよび複製を実施するように適合されたコンピューティングデバイスは、メモリと、メモリに結合されるプロセッサとを含むことができる。プロセッサは、データ転送アプリケーションを実行することができ、それは、対象のデータセンタのキー・バリューストアからのデータのクエリキャッシュを用いて相対的なデータのストレージ位置を抽出することによって、対象のデータセンタ内で物理的なストレージ分散をマッピングし、対象のデータセンタ内でデータ分割およびデータ複写をマッピングし、そして対象のデータセンタ内のデータを新しいデータセンタ中で同様の構造に複製することができる。
キー・バリューストアは、ユーザが直接アクセス可能でない、抽出されるデータテーブルを含むことができる。他の実施例によれば、データ転送アプリケーションは、さらに、所定数の結果を有して設定されるクエリを発行することと、位置のキャッシュ要素を含む結果を受け取ることと、位置のキャッシュ要素をデータマップに加えることと、複製のために必要な細部とデータマップを比較することとの1つまたは複数を実施することができる。マップが十分に詳細なものである場合、物理的なストレージブロックの間の複写を暴露するために、隣接するブロックレベルのクエリは、発行することができる、あるいは隣接するブロックレベルのクエリは、前の結果から合成することができる。マップが十分に詳細なものでない場合、新しいクエリは、発行することができる。
所定数は、格納されるデータのサイズによって決めることができる。所定数は、最も詳細であることを可能にするために1とすることができる。順次的な要求アドレスの間のステップが、約1つのストレージブロックまたは約1つのページの1つより大きい場合、平均のアドレス増分の差は、どのグループが隣接する物理的なストレージ中に区切りを含んでいるのかを推定するために走査することができ、隣接する物理的なストレージ中に区切りを含んでいるグループは、より詳細に物理的なデータストレージ構造を決定するために調べることができる。新しいデータセンタ中で同様の構造にデータを複製することは、新しいデータセンタで使用されるキー・バリューシステム内でレコードを同様に配置することを含むことができる。データ転送アプリケーションは、また、1つまたは複数のツリー構造が、複製されているデータセンタと実質的に同様のブランチおよびリーフ、および何倍もカバレッジを有するようにデータをマッピングするために、1つまたは複数のツリー構造を構築することができる。ツリー構造は、ハッシュツリー、マークルツリー、タイガーツリーおよびBツリーの1つまたは複数を含むことができる。
また他の実施例によれば、コンピュータ可読記憶媒体は、キー・バリューストアをマッピングし複製するための命令をその上に格納することができる。命令は、対象のデータセンタのキー・バリューストアからのデータのクエリキャッシュを用いて相対的なデータのストレージ位置を抽出することによって、対象のデータセンタ内で物理的なストレージ分散をマッピングすることと;対象のデータセンタ内でデータ分割およびデータ複写をマッピングすることと;対象のデータセンタ内のデータを新しいデータセンタ中で同様の構造に複製することとを含むことができる。
キー・バリューストアは、ユーザが直接アクセス可能でない、抽出されるデータテーブルを含むことができる。他の実施例によれば、命令は、所定数の結果を有して設定されるクエリを発行することと、位置のキャッシュ要素を含む結果を受け取ることと、位置のキャッシュ要素をデータマップに加えることと、複製のために必要な細部とデータマップを比較することとをさらに含むことができる。マップが十分に詳細なものである場合、物理的なストレージブロックの間の複写を暴露するために、隣接するブロックレベルのクエリは、発行することができる、あるいは隣接するブロックレベルのクエリは、前の結果から合成することができる。マップが十分に詳細なものでない場合、新しいクエリは、発行することができる。
所定数は、格納されるデータのサイズによって決めることができる。所定数は、最も詳細であることを可能にするために1とすることができる。順次的な要求アドレスの間のステップが、約1つのストレージブロックまたは約1つのページの1つより大きい場合、平均のアドレス増分の差は、どのグループが隣接する物理的なストレージ中に区切りを含んでいるのかを推定するために走査することができ、隣接する物理的なストレージ中に区切りを含んでいるグループは、より詳細に物理的なデータストレージ構造を決定するために調べることができる。より詳細に調べることは、所定数を変化させることを含むことができる。新しいデータセンタ中で同様の構造にデータを複製することは、新しいデータセンタで使用されるキー・バリューシステム内でレコードを同様に配置することを含むことができる。命令は、また、1つまたは複数のツリー構造が、複製されているデータセンタと実質的に同様のブランチおよびリーフ、および何倍もカバレッジを有するようにデータをマッピングするために、1つまたは複数のツリー構造を構築することを含むことできる。ツリー構造は、ハッシュツリー、マークルツリー、タイガーツリーおよびBツリーの1つまたは複数を含むことができる。
いくつかの実施例によれば、キー・バリューストアのマッピングおよび複製を実施するように適合されたサーバは、メモリとメモリに結合されるプロセッサとを含むことができる。プロセッサは、データ転送アプリケーションを実行することができ、それは、所定数の結果および位置のキャッシュ要素を対象のデータセンタのキー・バリューストアに対して要求するクエリを反復して提出することによって、対象のデータセンタの既存のキー・バリューストア中のファイル区切りを抽出し;物理的なストレージ容量にわたるアドレス範囲内の戻り値を受け取り;対象のデータセンタで物理的にグループ化されるキー・バリューのセットおよびレコード複写物を回収するように構成することができる。
他の実施例によれば、データ転送アプリケーションは、さらに、新しいデータセンタのキー・バリューストアでキー・バリューのセットを複製することができる。位置のキャッシュ要素は、「NextToken」とすることができ、所定数は、最も詳細になることが可能なように1である。
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に(いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で)コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび/またはシステムおよび/または他の技術をもたらすことができるさまざまな達成手段があり(たとえば、ハードウェア、ソフトウェア、および/またはファームウェア)、好ましい達成手段は、プロセスおよび/またはシステムおよび/または他の技術が導入される状況によって異なる。たとえば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび/またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および/またはファームウェアのなんらかの組み合わせを選択することができる。
前述の詳細な説明では、ブロック図、フローチャート、および/または例の使用によって、装置および/またはプロセスのさまざまな実施形態を説明してきた。そのようなブロック図、フローチャート、および/または例が1つまたは複数の機能および/または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および/または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組み合わせにより、個別におよび/または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、1つまたは複数のコンピュータ上で動作する1つまたは複数のコンピュータプログラムとして(たとえば、1つまたは複数のコンピュータシステム上で動作する1つまたは複数のプログラムとして)、1つまたは複数のプロセッサ上で動作する1つまたは複数のプログラムとして(たとえば、1つまたは複数のマイクロプロセッサ上で動作する1つまたは複数のプログラムとして)、ファームウェアとして、あるいは実質上それらの任意の組み合わせとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに/またはソフトウェアおよび/もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。
本開示は、本出願で述べる具体的な実施形態の観点から限定されるべきでなく、本開示は、さまざまな態様を例示するものと意図する。当業者に明らかになるはずであるように、その趣旨および範囲を逸脱せずに、多くの修正および変形を実施することができる。本開示の範囲内の機能的に同等の方法および機器類は、本明細書に列挙したものに加えて、前述の記述から当業者に明らかになるはずである。そのような修正および変形は、添付の請求項の範囲内に含まれると意図する。本開示は、添付の請求項がその資格を得られる同等物の全範囲とともに、そのような請求項の条項によってのみ限定されるべきである。本開示は、特定の方法、試薬、複合物、合成物または生物学システムに限定されず、それらは、もちろん、変わることができることを理解すべきである。また、本明細書に使用する用語は、具体的な実施形態を述べる目的のためだけであり、限定するものと意図しないことを理解すべきである。
さらに、本明細書に記載された主題のメカニズムをさまざまな形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピーディスク、ハードディスクドライブ、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および/またはアナログ通信媒体(たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど)の通信タイプの媒体が含まれるが、それらには限定されない。
本明細書で説明したやり方で装置および/またはプロセスを記載し、その後そのように記載された装置および/またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および/またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムのうちの1つもしくは複数、タッチパッドもしくはスクリーンなどの1つもしくは複数の相互作用装置、ならびに/またはフィードバックループおよびコントロールモータを含むコントロールシステム(たとえば、ガントリーシステムの位置検知用および/もしくは速度検知用フィードバック、コンポーネントの移動用および/もしくは数量の調整用コントロールモータ)を含むことを、当業者は理解するであろう。
通常のデータ処理システムは、データコンピューティング/通信システムおよび/またはネットワークコンピューティング/通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。本明細書に記載された主題は、さまざまなコンポーネントをしばしば例示しており、これらのコンポーネントは、他のさまざまなコンポーネントに包含されるか、または他のさまざまなコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例示にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の2つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的に接続可能な、および/もしくは物理的に相互作用するコンポーネント、ならびに/またはワイヤレスに相互作用可能な、および/もしくはワイヤレスに相互作用するコンポーネント、ならびに/または論理的に相互作用する、および/もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。さまざまな単数形/複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
通常、本明細書において、特に添付の特許請求の範囲(たとえば、添付の特許請求の範囲の本体部)において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう(たとえば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである、など)。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない(たとえば、「a」および/または「an」は、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう(たとえば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、少なくとも2つの記載、または2つ以上の記載を意味する)。
さらに、「A、BおよびC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、およびCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
さらに、本開示の特徴または態様が、マーカッシュグループの観点から述べられている場合、当業者は、本開示が、また、それによって、マーカッシュグループのいずれものそれぞれのメンバまたはメンバのサブグループの観点から述べられていることを認識されるはずである。
当業者が理解されるはずのように、いずれかおよびすべての目的で、書面の記述を提示することに関してなど、本明細書に開示するすべての範囲は、また、いずれかおよびすべてのあり得る部分的な範囲およびその部分的な範囲の組み合わせを包含する。いずれもの列挙した範囲は、十分に述べており、同じ範囲が少なくとも等しい半分に、1/3に、1/4に、1/5に,1/10になどに分解できるものとして容易に理解することができる。非限定の例として、本明細書で議論した各範囲は、下側3分の1、中間の3分の1および上側3分の1などに容易に分解することができる。また、当業者が理解されるはずであるように、「まで(up to)」、「少なくとも(at least)」、「より大きい(greater than)」、「より小さい(less than)」など、すべての言葉は、列挙される数を含み、上記で議論したように、その以降で部分的な範囲に分解することができる範囲を言う。最後に、当業者が理解されるはずであるように、範囲は、各それぞれのメンバを含む。それゆえ、たとえば、1〜3のセルを有するグループは、1つ、2つ、または3つのセルを有するグループを言う。同様に、1〜5のセルを有するグループは、1つ、2つ、3つ、4つまたは5つのセルを有するグループを言い、その他も同様である。
さまざまな態様および実施形態を本明細書に開示してきたが、他の態様および実施形態は、当業者に明らかになるはずである。本明細書に開示したさまざまな態様および実施形態は、例示する目的のためであり、限定するものと意図せず、その真の範囲および趣旨は、次の請求項によって示されている。
Claims (6)
- キー・バリューストアをマッピングし複製するための方法であって、
所定数の結果および位置のキャッシュ要素を対象のデータセンタのキー・バリューストアに要求するクエリを反復して提出することによって、前記対象のデータセンタの既存のキー・バリューストア中のファイル区切りを抽出することと、
所定数の結果および位置のキャッシュ要素を対象のデータセンタのキー・バリューストアに要求するクエリを反復して提出することによって、前記対象のデータセンタの既存のキー・バリューストア中のファイル区切りを抽出することと、
物理的なストレージ容量にわたるアドレス範囲内の戻り値を受け取ることと、
前記位置のキャッシュ要素をデータマップに加え、前記複製のために必要な細部と前記データマップを比較することにより、前記対象のデータセンタで物理的にグループ化されるキー・バリューのセットおよびレコード複写物を回収することと、
を含む、方法。 - 前記キー・バリューストアは、ユーザが直接アクセス可能でない、抽出されるデータテーブルを含む、請求項1に記載の方法。
- 前記所定数は、格納されるデータのサイズによって決まる、請求項1に記載の方法。
- キー・バリューストアのマッピングおよび複製を実施するように適合されたコンピューティングデバイスであって、
メモリと
前記メモリに結合され、データ転送アプリケーションを実行するプロセッサと、
を含み、
前記データ転送アプリケーションは、
所定数の結果および位置のキャッシュ要素を対象のデータセンタのキー・バリューストアに要求するクエリを反復して提出することによって、前記対象のデータセンタの既存のキー・バリューストア中のファイル区切りを抽出し、
物理的なストレージ容量にわたるアドレス範囲内の戻り値を受け取り、かつ
前記位置のキャッシュ要素をデータマップに加え、前記複製のために必要な細部と前記データマップを比較することにより、前記対象のデータセンタで物理的にグループ化されるキー・バリューのセットおよびレコード複写物を回収するように構成される、コンピューティングデバイス。 - 前記データ転送アプリケーションは、さらに、
新しいデータセンタのキー・バリューストアにおいて前記キー・バリューのセットを複製するように構成される、請求項4に記載のコンピューティングデバイス。 - 前記位置のキャッシュ要素は、「NextToken」である、請求項4に記載のコンピューティングデバイス。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/059553 WO2013070185A1 (en) | 2011-11-07 | 2011-11-07 | Cache based key-value store mapping and replication |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2014535107A JP2014535107A (ja) | 2014-12-25 |
JP2014535107A5 true JP2014535107A5 (ja) | 2017-01-26 |
JP6093773B2 JP6093773B2 (ja) | 2017-03-08 |
Family
ID=48224419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014538772A Active JP6093773B2 (ja) | 2011-11-07 | 2011-11-07 | キャッシュベースのキー・バリューストアのマッピングおよび複製 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9836514B2 (ja) |
JP (1) | JP6093773B2 (ja) |
CN (1) | CN103890709B (ja) |
WO (1) | WO2013070185A1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9147213B2 (en) | 2007-10-26 | 2015-09-29 | Zazzle Inc. | Visualizing a custom product in situ |
EP3678054A1 (en) * | 2011-08-31 | 2020-07-08 | Zazzle Inc. | Product options framework and accessories |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9519647B2 (en) | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
EP2693349A1 (en) * | 2012-08-03 | 2014-02-05 | Tata Consultancy Services Limited | A system and method for massive call data storage and retrieval |
US9275123B2 (en) * | 2013-04-09 | 2016-03-01 | International Business Machines Corporation | Replicating a source storage system |
CN103309815B (zh) * | 2013-05-23 | 2015-09-23 | 华中科技大学 | 一种提高固态盘有效容量和寿命的方法和系统 |
US10599674B1 (en) * | 2013-05-30 | 2020-03-24 | West Corporation | Apparatus and method for replicating data |
US11301457B2 (en) | 2015-06-29 | 2022-04-12 | Microsoft Technology Licensing, Llc | Transactional database layer above a distributed key/value store |
US11467971B2 (en) * | 2017-08-29 | 2022-10-11 | Workday, Inc. | Systems and methods for accelerating data computation |
CN108121757A (zh) * | 2017-11-10 | 2018-06-05 | 广州优视网络科技有限公司 | 一种数据同步方法、装置、系统、计算设备及存储介质 |
EP3759865B1 (en) * | 2018-02-27 | 2024-04-03 | Visa International Service Association | High-throughput data integrity via trusted computing |
MX2020010009A (es) | 2018-03-27 | 2021-01-15 | Netflix Inc | Técnicas para el diseño de reparación de antientropía programada. |
CN110263047B (zh) * | 2019-06-28 | 2023-12-22 | 深圳前海微众银行股份有限公司 | 一种数据中心节点分配方法、装置、系统及计算机设备 |
US11392458B2 (en) * | 2019-10-25 | 2022-07-19 | EMC IP Holding Company LLC | Reconstructing lost data objects by generating virtual user files from available nodes within a cluster |
CN111259003B (zh) * | 2020-01-07 | 2023-07-21 | 广州虎牙科技有限公司 | 一种数据库建立方法及装置 |
CN113836177B (zh) * | 2020-06-23 | 2023-05-05 | 易保网络技术(上海)有限公司 | 消耗型业务数据的缓存管理 |
CN113282854A (zh) * | 2021-06-01 | 2021-08-20 | 平安国际智慧城市科技股份有限公司 | 数据请求响应方法、装置、电子设备及存储介质 |
US11373000B1 (en) | 2021-10-22 | 2022-06-28 | Akoya LLC | Systems and methods for managing tokens and filtering data to control data access |
US11379614B1 (en) | 2021-10-22 | 2022-07-05 | Akoya LLC | Systems and methods for managing tokens and filtering data to control data access |
US11641357B1 (en) | 2021-10-22 | 2023-05-02 | Akoya LLC | Systems and methods for managing tokens and filtering data to control data access |
US11496483B1 (en) | 2021-10-22 | 2022-11-08 | Akoya LLC | Systems and methods for managing tokens and filtering data to control data access |
US11379617B1 (en) * | 2021-10-22 | 2022-07-05 | Akoya LLC | Systems and methods for managing tokens and filtering data to control data access |
CN114357337A (zh) * | 2022-01-11 | 2022-04-15 | 平安普惠企业管理有限公司 | 缓存管理方法、装置、设备及存储介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5146578A (en) * | 1989-05-01 | 1992-09-08 | Zenith Data Systems Corporation | Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests |
US5319395A (en) * | 1990-05-16 | 1994-06-07 | International Business Machines Corporation | Pixel depth converter for a computer video display |
US6256635B1 (en) * | 1998-05-08 | 2001-07-03 | Apple Computer, Inc. | Method and apparatus for configuring a computer using scripting |
US7620665B1 (en) | 2000-11-21 | 2009-11-17 | International Business Machines Corporation | Method and system for a generic metadata-based mechanism to migrate relational data between databases |
US6715050B2 (en) * | 2001-05-31 | 2004-03-30 | Oracle International Corporation | Storage access keys |
US7269665B2 (en) * | 2002-08-29 | 2007-09-11 | Sap Ag | Isolated mapping point |
WO2007087363A2 (en) * | 2006-01-24 | 2007-08-02 | Brown University | Efficient content authentication in peer-to-peer networks |
US20080065590A1 (en) * | 2006-09-07 | 2008-03-13 | Microsoft Corporation | Lightweight query processing over in-memory data structures |
US8978155B2 (en) * | 2008-07-25 | 2015-03-10 | Brown University | Apparatus, methods, and computer program products providing dynamic provable data possession |
CN101593202B (zh) | 2009-01-14 | 2013-05-01 | 中国人民解放军国防科学技术大学 | 基于共享Cache多核处理器的数据库哈希连接方法 |
US20100332401A1 (en) | 2009-06-30 | 2010-12-30 | Anand Prahlad | Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites |
US8392403B2 (en) * | 2009-09-18 | 2013-03-05 | Microsoft Corporation | Management of data and computation in data centers |
US8458144B2 (en) * | 2009-10-22 | 2013-06-04 | Oracle America, Inc. | Data deduplication method using file system constructs |
AU2010328326B2 (en) * | 2009-12-07 | 2016-12-01 | Robert Buffone | System and method for website performance optimization and internet traffic processing |
US8214355B2 (en) | 2010-02-09 | 2012-07-03 | Yahoo! Inc. | Small table: multitenancy for lots of small tables on a cloud database |
CN102117338B (zh) | 2011-04-02 | 2013-03-13 | 天脉聚源(北京)传媒科技有限公司 | 一种数据库缓存的方法 |
-
2011
- 2011-11-07 CN CN201180074338.6A patent/CN103890709B/zh not_active Expired - Fee Related
- 2011-11-07 JP JP2014538772A patent/JP6093773B2/ja active Active
- 2011-11-07 US US13/502,312 patent/US9836514B2/en active Active
- 2011-11-07 WO PCT/US2011/059553 patent/WO2013070185A1/en active Application Filing
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6093773B2 (ja) | キャッシュベースのキー・バリューストアのマッピングおよび複製 | |
JP2014535107A5 (ja) | ||
US11061786B1 (en) | Cloud-based disaster recovery of a storage system | |
US8972405B1 (en) | Storage resource management information modeling in a cloud processing environment | |
US11093466B2 (en) | Incremental out-of-place updates for index structures | |
US10761758B2 (en) | Data aware deduplication object storage (DADOS) | |
JP6697392B2 (ja) | 半構造データスキーマのトランスペアレントディスカバリ | |
Liao et al. | Multi-dimensional index on hadoop distributed file system | |
Qader et al. | A comparative study of secondary indexing techniques in LSM-based NoSQL databases | |
US10528262B1 (en) | Replication-based federation of scalable data across multiple sites | |
KR101617987B1 (ko) | 데이터베이스 마이그레이션 소스를 위한 머신 학습 | |
US9069780B2 (en) | Propagating a snapshot attribute in a distributed file system | |
US10642837B2 (en) | Relocating derived cache during data rebalance to maintain application performance | |
Meister et al. | Block locality caching for data deduplication | |
US20130339605A1 (en) | Uniform storage collaboration and access | |
JP2016522484A (ja) | オブジェクト情報の複数の次元を用いたオブジェクトストレージ | |
US9569477B1 (en) | Managing scanning of databases in data storage systems | |
Liu et al. | Cfs: A distributed file system for large scale container platforms | |
Merceedi et al. | A comprehensive survey for hadoop distributed file system | |
Lu et al. | Hybrid storage architecture and efficient MapReduce processing for unstructured data | |
Gu et al. | Processing massive sized graphs using sector/sphere | |
Gupta et al. | An extended HDFS with an AVATAR NODE to handle both small files and to eliminate single point of failure | |
Tang et al. | Tuning object-centric data management systems for large scale scientific applications | |
Kim et al. | Semi-stream similarity join processing in a distributed environment | |
Hartmann et al. | Database and Expert Systems Applications: 30th International Conference, DEXA 2019, Linz, Austria, August 26–29, 2019, Proceedings, Part II |