[go: up one dir, main page]

JP5607059B2 - パーティション化した拡張可能で可用性の高い構造化ストレージにおけるパーティション管理 - Google Patents

パーティション化した拡張可能で可用性の高い構造化ストレージにおけるパーティション管理 Download PDF

Info

Publication number
JP5607059B2
JP5607059B2 JP2011533395A JP2011533395A JP5607059B2 JP 5607059 B2 JP5607059 B2 JP 5607059B2 JP 2011533395 A JP2011533395 A JP 2011533395A JP 2011533395 A JP2011533395 A JP 2011533395A JP 5607059 B2 JP5607059 B2 JP 5607059B2
Authority
JP
Japan
Prior art keywords
partition
partitions
server
master
child
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.)
Active
Application number
JP2011533395A
Other languages
English (en)
Other versions
JP2012507086A (ja
JP2012507086A5 (ja
Inventor
ジーン カルダー ブラッドリー
ワン ジュ
イー.スクジョルスボルド アリルド
スリヴァスタヴ シャーシュワット
ニラカンタン ニランジャン
バードワジ ディーパリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2012507086A publication Critical patent/JP2012507086A/ja
Publication of JP2012507086A5 publication Critical patent/JP2012507086A5/ja
Application granted granted Critical
Publication of JP5607059B2 publication Critical patent/JP5607059B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

サーバファーム、ウェブサービスなどを含む分散システムは、大量のコンピューティングリソース及びストレージリソースを提供するためにますます普及してきた。例えば、分散ストレージシステムは、様々なアプリケーションについての大量のデータを格納し、取り出すために利用されてきた。場合によっては、ストレージシステムは、データをより効率的に格納し、取り出し、クエリを行うために構造化ストレージを利用する。構造化ストレージシステムは、ネットワークを通じて複数のノードにわたってデータを格納することができる。かかるストレージを提供するために所望されるコンピューティングリソースの量が増加するにつれて、かかるストレージシステムは、追加のコンピュータデバイスを追加することにより追加のリソースを必要に応じて追加することができる柔軟なトポロジを与えることで、「拡大する」ことができる。従って、構造化ストレージシステムは、格納されるデータを例えばペタバイトからエクサバイトまで拡張可能であるかもしれない。結果として、データが常にアクセス可能であってデータ損失を防ぐのに耐久性があるように、かかる構造化ストレージシステム内のデータを管理するのは複雑なことが多い。
この概要は、詳細な説明において更に後述される単純化された形式の概念の抜粋を紹介するために提供される。この概要は、請求された内容の重要な特徴または基本的特徴を特定することを意図していないし、請求された内容の範囲を決定する際の助けとして用いられることも意図していない。
本発明の実施形態は、構造化データストレージシステムにおけるパーティション管理に関する。ストアにおいて、構造化データは、いくつかのパーティションに分割され、異なるサーバがサービスを提供することができる。パーティションマップは、これらのパーティションの位置を追跡するために用いられる。より具体的には、パーティションマップを用いて、クライアントは、どのサーバが特定のデータを扱っているかを知ることができる。詳細な負荷情報が、パーティションについて追跡される。パーティションは、サーバにわたる負荷分散を実現するためにサーバの間で移動することができる。いくつかの実施形態において、より良い負荷分散を実現するために、高負荷を有するパーティションが、分割のために特定される。パーティションを分割する位置が決定されて、パーティションは子パーティションを作成するために分割される。子パーティションは、いくつかの実施形態において別のサーバにアンロードすることができる。パーティションマップは、パーティションが子パーティションに分割されたことを示すために更新される。いくつかの実施形態において、2つ以上のパーティションが、マージするために特定される。パーティションはマージされて、パーティションマップはマージされたパーティションを示すために更新される。
構造化ストレージはストリームシステムの上部に構築される。ストリームシステムは、アペンド専用のファイルシステムのインタフェースを示す。ストリームは、アペンド専用ファイルに類似している。各パーティションは、パーティションに付随するストリームのセットを有する。パーティションの全ての持続的状態は、パーティションが付随するストリームのセットにおいて保たれる。ストリームのセットの中に、パーティションについてのメタデータストリームが存在する。メタデータストリームは、パーティションの全ての他のストリームに対するポインタを、パーティションに含まれる全ての行についてのパーティションのキーの範囲などのそのパーティションの基本的情報と同様に含む。
本発明は、添付の図面を参照して以下に詳述される。
本発明の実施形態を実施する際に使用するのに適した例示的なコンピュータ環境のブロック図である。 本発明の実施形態に基づくテーブル構造を表す図である。 本発明の実施形態を実施することができる例示的なシステムを示すブロック図である。 本発明の実施形態に基づくパーティションを示すブロック図である。 本発明の実施形態に基づくパーティションを分割する方法を示すフロー図である。 本発明の実施形態に基づく2つの子パーティションに分割されている親パーティションの例を表す図である。 本発明の別の実施形態に基づくパーティションを分割する方法を示すフロー図である。 本発明の実施形態に基づくマージされたパーティションにパーティションをマージする方法を示すフロー図である。 本発明の実施形態に基づくこわれたパーティションを修復する方法を示すフロー図である。 本発明の実施形態に基づくパーティションのバージョン管理及び更新の方法を示すフロー図である。
本発明の内容は、法定の要件を満たすために本明細書において具体性を持って説明されている。しかしながら、この説明自体は、本特許の範囲を限定することを意図していない。むしろ、本発明者は、請求された発明がまた、他の現在の技術または将来の技術と関連して、本明細書において説明されているステップと異なるステップまたは同様のステップの組合せを含むような他の方法で具現化されてもよいと考える。更に、用語「ステップ」及び/または「ブロック」は、用いられる方法の異なる要素を暗示するために本明細書において用いることができるが、当該用語は、本明細書において開示される様々なステップの中でまたは様々なステップ同士の間のいかなる特定の順序も意味すると解釈すべきでない。但し、個々のステップの順序が明示的に説明されている場合は除く。
本発明の実施形態は、拡張可能で可用性が高くかつ耐久性のある構造化ストレージを提供する。構造化ストレージは多数のテーブルで表され、テーブルの各々は複数の行を含み、各行はデータエンティティを表す。テーブルは複数のパーティションに分割され、各パーティションはテーブルからの所定範囲の行を含む。パーティションは、テーブルサーバに格納されて、テーブルマスタを用いて管理される。
いくつかの実施形態において、パーティションは、負荷分散目的のために分割される。負荷分散情報は、テーブルサーバ及びパーティションについて追跡される。負荷分散情報に基づいて、テーブルマスタは、パーティションの負荷分散することを決定して、負荷を分散するために異なるノードにパーティションを再割り当てすることができる。さらに、いくつかのパーティションについて、テーブルマスタは、現在の負荷を分散するためにパーティションを分割することを決定することができる。テーブルマスタは、分割比を決定して、分割の位置決めをするためのキー情報について、パーティションにサービスを提供しているテーブルサーバにクエリを行う。テーブルサーバから受信されるキー情報に基づいて、テーブルマスタは、テーブルサーバにパーティションを分割するよう命令する。分割要求を受信すると、テーブルサーバは、対象パーティションをアンロードして、子パーティションを作成し、子パーティションへのサービスの提供を開始する。いくつかの実施形態において、子パーティションは、別のテーブルサーバに割り当てることができる。パーティションマップは、子パーティションにサービスを提供しているテーブルサーバ(または複数のテーブルサーバ)を示すために更新される。
いくつかの実施形態において、パーティションはマージされる。この場合もやはり、負荷分散情報は、テーブルサーバ及びパーティションについて追跡される。負荷分散情報に基づいて、2又はそれ以上のパーティションがマージするために特定される。パーティションにサービスを提供しているテーブルサーバ(または複数のテーブルサーバ)は、パーティションにサービスを提供するのを止めるように命令される。パーティションは、マージされてテーブルサーバにロードされるが、テーブルサーバは、マージされたパーティションへのサービス提供を開始する。パーティションマップは、マージされたパーティションにサービスを提供しているテーブルサーバを示すために更新される。
従って、1つの態様において、本発明の実施形態は、構造化ストレージシステム内の1つまたは複数のコンピュータデバイスによって実施される方法を対象とする。構造化ストレージシステム内の構造化ストレージは1つまたは複数のテーブルで表され、各テーブルは複数の行を含み、各行は構造化ストレージシステムによって格納されるデータエンティティを表しており、行を特定するための1つまたは複数のキーを含んでおり、複数の行は複数のパーティションの間で分割され、各パーティションはテーブル内の複数の行からのある範囲の行を含んでおり、複数のパーティションは複数のテーブルサーバに格納され、テーブルマスタは複数のテーブルサーバへのパーティションの割り当てを制御する。本方法はパーティションを子パーティションに分割するためのものであって、パーティションについての負荷情報に基づいて分割するためのパーティションを特定することを含み、負荷情報はパーティションの2又はそれ以上の部分の各々の負荷を特定する情報を含む。本方法はまた、テーブルマスタによって、パーティションの2つ以上の部分の各々の負荷に基づいてパーティションを分割するための分割比が決定されることを含む。本方法は、分割比に対応するパーティション内の実際の位置を示すキー情報についてテーブルサーバにクエリを行うことをさらに含む。本方法はまた、テーブルサーバからテーブルマスタにおけるキー情報を受信することを含み、キー情報は、分割比に対応するパーティション内の実際の位置を示す。本方法は、テーブルマスタからテーブルサーバに分割要求を送信することをさらに含み、分割要求は、キー情報に基づいてパーティションを分割することを示す。本方法はまた、キー情報に対応する位置でパーティションを分割して子パーティションを作成することを含む。本方法は、テーブルマスタに分割の完了を通知することをさらに含む。本方法は、子パーティションに分割されているパーティションに基づいてパーティションマップを更新することをさらに含み、パーティションマップは、複数のパーティションと複数のパーティションにサービスを提供する複数テーブルサーバとの間のマッピングを格納する。
本発明の別の実施形態において、態様は、1つまたは複数のテーブルで表される構造化ストレージシステムを管理する方法を実行するためのコンピュータ使用可能命令を格納する1つまたは複数のコンピュータ記憶媒体を対象とする。各テーブルは複数の行を含み、各行は構造化ストレージシステムによって格納されるデータエンティティを表しており、行を特定するための1つまたは複数のキーを含んでおり、複数の行は複数のパーティションの間で分割され、各パーティションはテーブル内の複数の行からの所定範囲の行を含み、複数のパーティションは複数のテーブルサーバに格納され、テーブルマスタは複数のテーブルサーバへのパーティションの割り当てを制御する。本方法は、テーブルのうちの少なくとも2つのパーティションを、マージされたパーティションにマージするためのものであって、複数のテーブルサーバの複数のパーティションについての負荷情報を追跡することを含む。本方法はまた、テーブルマスタによって、負荷情報に基づいてマージするための少なくとも2つのパーティションを特定することを含む。本方法は、テーブルマスタによって、マージされたパーティションについてのメタデータストリームを作成することをさらに含む。本方法はまた、少なくとも2つのパーティションにサービスを提供している少なくとも1つのテーブルサーバから少なくとも2つのパーティションをアンロードすることを含む。本方法は、テーブルマスタによって、複数のテーブルサーバから選択されたテーブルサーバにマージされたパーティションを割り当てることをさらに含む。本方法は、選択されたテーブルサーバにおいてマージされたパーティションをロードしてサービスを提供することをさらに含む。
本発明のさらなる実施形態は、1つまたは複数のテーブルで表される構造化ストレージシステムを管理する方法を実行するためのコンピュータ使用可能命令を格納する1つまたは複数のコンピュータ記憶媒体を対象とする。各テーブルは複数の行を含み、各行は構造化ストレージシステムによって格納されるデータエンティティを表しておりかつ行を特定するための1つまたは複数のキーを含み、複数の行は複数のパーティションの間で分割され、各パーティションはテーブル内の複数の行からの所定範囲の行を含み、複数のパーティションは複数のテーブルサーバに格納され、テーブルマスタは複数のテーブルサーバへのパーティション割り当てを制御することを特徴とする。本方法は、少なくとも2つの子パーティションにテーブルのパーティションを分割するためのものであって、複数のテーブルサーバの複数のパーティションについての負荷情報を追跡することを含む。本方法はまた、テーブルマスタによって、負荷情報に基づいて分割するためのパーティションを特定することを含み、パーティションについての負荷情報はパーティションの異なる部分の異なる負荷を特定することを特徴とする。本方法は、テーブルマスタにおいて、パーティションを分割するための分割比を決定することをさらに含み、分割比はロード情報に基づいて特定されかつパーティション内のポイントを表しており、パーティションにおいてパーティションの第1の部分が第1の負荷の量を含みかつパーティションの第2の部分が第2の負荷の量を含むことを特徴とする。本方法はまた、テーブルマスタからテーブルサーバに要求を送信することをさらに含み、キー情報のための要求は、分割比に対応するパーティション内の実際の位置を特定する。本方法はまた、テーブルサーバによって、分割比に対応するパーティション内の実際の位置を特定するキー情報を決定することと、テーブルサーバからテーブルマスタへキー情報を伝えることとを含む。本方法は、テーブルマスタにおいて、子パーティションの各々についてのメタデータストリームを構築することをさらに含む。本方法はまた、テーブルマスタからテーブルサーバに分割要求を送信することと、テーブルサーバにおいてパーティションから子パーティションを作ることとをさらに含む。本方法はまた、テーブルサーバにおいてパーティションにサービスを提供するのを止めることと、テーブルサーバにおいて子パーティションをロードしてサービスを提供することとを含む。本方法は、テーブルサーバからテーブルマスタに分割の完了通知を送信することをさらに含む。本方法はまた、子パーティションに分割されているパーティションに基づいてパーティションマップを更新することをさらに含み、パーティションマップは、複数のパーティションと複数のパーティションにサービスを提供している複数のテーブルサーバとの間のマッピングを格納する。
本発明の実施形態の概要を簡単に説明したが、本発明の実施形態を実施することができる例示的な動作環境は、本発明の様々な態様についての一般的な内容を提供するために以下に説明されている。最初に特に図1を参照すると、本発明の実施形態を実施するための例示的な動作環境が示されていて、コンピュータデバイス100と概して表されている。コンピュータデバイス100は、適切なコンピュータ環境のうちのほんの1つの例であって、本発明の使用の範囲または機能の範囲に関していかなる限定も示唆することを意図していない。コンピュータデバイス100は、示されるコンポーネントのうちのいずれか1つまたは組合せに関していかなる従属性も要件も有すると解釈されてはならない。
本発明は、コンピュータもしくはパーソナルデータアシスタントまたは他の携帯端末などの他のマシンによって実行される、プログラムモジュールなどのコンピュータ実行可能命令を含む、コンピュータコードまたはマシン使用可能命令についての一般的な文脈で説明することができる。通常、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含むプログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実施するコードを言う。本発明は、携帯端末、家庭用電化製品、汎用コンピュータ、より専門的なコンピュータデバイス等を含む様々なシステム構成において実施することができる。本発明はまた、通信ネットワークを介して接続されたリモート処理デバイスがタスクを実行する分散コンピュータ環境において実施することができる。
図1を参照すると、コンピュータデバイス100は、以下のデバイスを直接または間接的に接続するバス110を含む。以下のデバイスは、メモリ112、1つまたは複数のプロセッサ114、1つまたは複数のプレゼンテーションコンポーネント116、入力/出力ポート118、入力/出力コンポーネント120及び例示的な電力供給装置122である。バス110は、(アドレスバス、データバスまたはこれらの組合せなどの)1つまたは複数のバスであってもよいものを表す。図1の様々なブロックは明確にするために線で示されているが、実際には、様々なコンポーネントを図で表現することはそれほど明らかでなく、比喩的には、これらの線はより正確にははっきりとせずあいまいである。例えば、ディスプレイデバイスなどのプレゼンテーションコンポーネントは、I/Oコンポーネントであると考えられるかもしれない。また、プロセッサはメモリを有している。技術の性質はこのようなものであると認められ、図1の図は単に本発明の1つまたは複数の実施形態と関連して用いることができる例示的なコンピュータデバイスを示すだけであるとあらためて表明される。全てが図1の範囲内と考えられて「コンピュータデバイス」と称されるので、「ワークステーション」、「サーバ」、「ラップトップ」、「携帯端末」等のようなかかるカテゴリの間で区別はされない。
コンピュータデバイス100は通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータデバイス100がアクセスすることができかつ揮発性及び不揮発性の媒体、着脱自在及び固定式の媒体を含むいずれかの利用可能な媒体とすることができる。一例であってこの例に限定されないが、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報を記憶するためのいずれかの方法または技術で実施される揮発性及び不揮発性、着脱自在及び固定式の媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を格納するために用いることができかつコンピュータデバイス100がアクセスすることができるあらゆる他の媒体を含むが、これらに限定されるものではない。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを搬送波もしくは他のトランスポートメカニズムなどの変調されたデータ信号に具現化し、任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号の特徴のうちの1つまたは複数をその信号内に情報をコード化するような方式に設定又は変更した信号を意味する。例であって限定ではないが、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体並びに音響、RF、赤外線及び他の無線媒体などの無線媒体を含む。上記のうちのいずれかの組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
メモリ112は、揮発性及び/または不揮発性のメモリの形のコンピュータ記憶媒体を含む。メモリは、着脱自在、固定式、またはこれらの組合せであってもよい。例示的なハードウェアデバイスは、ソリッドステートメモリ、ハードドライブ、光ディスクドライブ等を含む。コンピュータデバイス100は、メモリ112またはI/Oコンポーネント120などの様々なエンティティからデータを読み出す1つまたは複数のプロセッサを含む。プレゼンテーションコンポーネント(または複数のプレゼンテーションコンポーネント)116は、ユーザまたは他のデバイスにデータ指示を示す。例示的なプレゼンテーションコンポーネントは、ディスプレイデバイス、スピーカ、印刷コンポーネント、振動コンポーネント等を含む。
I/Oポート118は、コンピュータデバイス100がI/Oコンポーネント120を含む他のデバイスに論理的に接続できるようにする。他のデバイスのうちのいくつかは、内蔵されていてもよい。例示的なコンポーネントは、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、プリンタ、無線デバイス、ネットワークデバイス等を含む。
高レベルのデータモデル
本発明の実施形態に基づき、構造化ストレージはテーブルで表され、そこでテーブルは行のセットを含む。例として、図2は、本発明の実施形態に基づくテーブル200の一部を示す。行202などのテーブル200の各行は、データエンティティを表し、プロパティのセットを含む。プロパティのセットは、一連の列おいて特定され、プロパティ204、206及び208を含む(列208のデータ値は、簡略化するためにかつ明確化するために空のままである)。プロパティ/列は、例えば、名前、型を持つ値対または複数の型を持つ値のマッピングに対する名前であってもよい。行及び/または各個々のプロパティは、バージョン管理されていてもよいしバージョン管理されていなくてもよい。テーブル自体は、テーブル内のどの行も同じ型を備えた同じプロパティを有する固定スキーマを有することができるかまたは、どの行も格納されたプロパティ及び型の異なるセットを有することができる強制されたスキーマを有しないことができる。
構造化ストアで行なわれるオペレーションの標準セットは、テーブル、行及びプロパティを挿入し、更新し、削除する能力を含む。更に、テーブル、行及びプロパティを介して走査及びクエリを行って特定された走査/クエリに一致するテーブル、行またはプロパティのセットを見つける機能が提供される。
パーティション分割
テーブルは数十億又は数兆の行及びテラバイト/ペタバイトのデータまで大きくなることができ、テーブルは、テーブルの異なる部分へのトラフィック/負荷を処理するために何千ものサーバに分散されることを必要とするかもしれない。構造化ストレージについてのこの拡張性を実現するために、実施形態では、サーバを介してテーブル及び行を分散するためにパーティション分割することが採用される。パーティション分割することはテーブル内の行をパーティションにグループ化し/分け、次に、パーティションは、異なるサーバに割り当てられて、異なるサーバからサービスを提供される(異なるサーバに対する読み出し及び書き込みを提供する)。
テーブルを拡張可能にするために、テーブルは、パーティションキーを形成するプロパティと称される1つから多数のキーを有する。例えば、図2のテーブル200を参照すると、テーブル200の第1の列204は、各行/エンティティについてのパーティションキーを含む。所定のテーブルについての1より多くのパーティションキーのプロパティ/列がある場合、結合されたプロパティ/列はそのテーブルについての複合パーティションキーを形成する。行についてのパーティションキーの値は、エンティティ/行が属するパーティションを特定するために用いられる。同じパーティションキー値を有する行は、同じパーティションにグループ化されると考えられる。
パーティションキーに加えて、各行は、ゼロから多数の追加の行キーのプロパティ/列を有していてもよい。例えば、図2のテーブル200を再び参照すると、テーブル200の第2の列206は、各行/エンティティについての行キーを含む。行キーは、パーティション内の行の一意のIDを表す。行キーと組み合わせられたパーティションキーは、テーブル内の行/エンティティについての主キー(一意のID)を表す。主キーは、テーブル内のパーティションについての主ソート順序を表す。行キーが存在しない場合、パーティションキーは主キーであって、テーブル内の各エンティティを一意に特定しなければならない。下記の説明は単一のパーティションキー及び単一の行キーに関して本発明の実施形態を検討するが、同じ事は、複数のパーティションキー及び/または行キーが用いられる場合にも当てはまる。
パーティションキーは同じパーティションキー「値」を有する行をグループ化するために用いられ、一方、行キーは、パーティション内の行の一意のIDを表す。パーティションキー値に基づいてテーブル行を分割することは、本明細書においてテーブルをパーティション分割することと称される。これは、テーブルの行をパーティションにグループ化する/分割する。パーティションは同じパーティションキー値を有する行のセットであり、よって同じパーティションキーを有する行の全ては常に同じパーティションに格納される。従って、同じパーティションキー値を有する2つの行は、同じパーティション内にあって、2つのパーティションにわたって分割されない。更に、いくつかの実施形態において、異なるパーティションキー値を有する複数の行を、これらのキー値がパーティションキー名前空間において隣接しているように見える限り、同じパーティションにグループ化できるまで、パーティションの定義は拡張される。図2のテーブル200を参照する例として、第1のパーティション(P1 210)、第2パーティション(P2 212)、第3のパーティション(P3 214)及び第4のパーティション(P4 216)を含む4つのパーティションが示される。図2に示すように、いくつかのパーティションは、単一のパーティションキー値の行を含み、一方、他のパーティションは複数のパーティションキー値の行を含む。前者の例として、P1 210は1というパーティションキー値を有する全ての行を含み、P2 212は2というパーティションキー値を有する全ての行を含む。後者の例として、P3 214は、パーティションキー値3、4または5を有する全ての行を含み、P4 216は、6または7のパーティションキー値を有する全ての行を含む。
パーティション分割することの利点は、以下のことを含むがこれらに限定されるものではない。以下のことは、(1)テーブルをパーティションに分割しかつデータのアクセスパターン及びトラフィックの必要性に基づいてサーバを介してパーティションを分散することによってテーブルへのアクセスを拡張する能力、及び(2)同じパーティションの行はグループ化されて、同じテーブルサーバからアクセスされ、同じテーブルサーバは、オペレーションがパーティション内でスコープされると、より効果的なクエリ、走査及びキャッシングを可能にすることである。たかだかパーティション内のこれらの行がスキャンされる必要があるだけなので、パーティションのスキャンはより効率的である。クエリを行うときにパーティションキーを特定しなければテーブル全体にわたって詳しく検討しなければならない可能性がある代わりに、パーティションのスキャンは、パーティションについての単一のテーブルサーバからアクセスされるからである。
高レベルのアーキテクチャ
本発明の実施形態に基づいて、本明細書において「テーブルサーバ」と称されるサーバのセットは、構造化ストレージシステムを格納して構造化ストレージシステムへのアクセスを提供する。更に、本明細書において「テーブルマスタ」と称されるサーバのセットは、テーブルサーバを管理する。「テーブルクライアント」は、構造化ストレージにアクセスできるアプリケーションを提供する。
ここで図3を参照すると、本発明の実施形態に基づくシステム300の高レベルのアーキテクチャを示すブロック図が提供される。本明細書において説明されるこの配列及び他の配列は、例としてだけ記載されていると理解されなければならない。他の配列及び要素(例えば、マシン、インタフェース、機能、順序及び機能のグループ化等)は、示されたこれらものに加えてまたはこれらのものの代わりに用いることができ、いくつかの要素は完全に省略することができる。更に、本明細書において説明される要素の多くは、機能エンティティである。機能エンティティは、個別のコンポーネントもしくは分散コンポーネントとしてまたは他のコンポーネントとともに、かつあらゆる適切な組合せ及び位置において実装することができる。1つまたは複数のエンティティによって実行されると本明細書において説明される様々な機能は、ハードウェア、ファームウェア及び/またはソフトウェアによって実行されてもよい。例えば、様々な機能は、メモリに格納されたプロセッサ実行命令によって実行されてもよい。
図示されていない他のコンポーネントの中で、システム300は通常、テーブルマスタ302、テーブルサーバ304、306、308、310及びテーブルクライアント312を含む。各々は、例えば、図1を参照して説明されるコンピュータデバイス100などのコンピュータデバイスのいずれのタイプにも存在することができる。システム300のコンポーネントはネットワークを介して互いに通信することができる。ネットワークは、1つまたは複数のローカルリアネットワーク(LAN)及び/またはワイドエリアネットワーク(WAN)を含むがこれらに限定されなくてもよい。単一のテーブルマスタ、4つのテーブルサーバ及び単一のテーブルクライアントだけが図3に示されているが、テーブルマスタ、テーブルサーバ及びテーブルクライアントの任意の数を、本発明の実施形態の範囲内のシステム300内で用いることができると理解されるべきである。
テーブルマスタ302は、以下のことに関与する。以下のことは、(1)パーティションをテーブルサーバ304、306、308、310に割り当てること、(2)パーティションが障害によりサービスを提供されない場合を素早く判断してパーティションを異なるテーブルサーバに再割り当てすること、(3)テーブルサーバ304、306、308、310の間のパーティションの負荷分散を制御すること、及び(4)テーブルサーバ304、306、308、310のヘルスをモニタすること、である。
テーブルサーバ304、306、308、310の各々は、テーブルマスタによってこれらに割り当てられたパーティションへの読み出しアクセス及び書き込みアクセスを提供することに関与する。テーブルサーバ304、306、308、310の各々は、ゼロから多数のパーティションをホストすることができる。図3の例において、TS1 304は、パーティションP1及びP4をホストし、TS2 306はパーティションP2及びP7をホストし、TS3 308はパーティションP3をホストし、TS4 310はパーティションP5及びP6をホストする。
テーブルクライアント312は、アプリケーションにリンクされて、テーブルサーバ304、306、308、310によって維持されるパーティションにコマンドを発行するために用いられる。テーブルクライアント312は、パーティションマップを用いてパーティションにサービスを提供しているテーブルサーバを決定し、そのテーブルサーバにコマンドを送信する。テーブルクライアント312はまた、テーブルサーバから戻る結果を受信して、アプリケーションに結果を渡す。パーティションマップは、特別なテーブルであり、これはパーティションとパーティションにサービスを提供しているテーブルサーバとの間のマッピングを格納し、テーブルマスタ302によって維持される。
図4に表されるように、内部で、テーブルサーバにおいてサービスを提供されるパーティション400は、3つの主要部分を含む。更新ログ402、1つから多数のメモリテーブル404、及びゼロから多数のファイルテーブル406である。更新ログ402は、永続ストレージ内のパーティションに対する最近の変化を記録する。メモリテーブル404は、更新ログの最近の(差分)更新のメモリ内バージョンである。これらは、パーティション400に対する最近の差分変更である。メモリテーブル404が十分に大きくなるかまたはその中で十分な変化がある場合、メモリテーブル404は、チェックポイントが付されてストレージに対して持続されるファイルテーブル406になる。このことが生じると、チェックポイントが付されたメモリテーブル404までの更新ログ402内の要求の全ては、更新ログ402から除去することができる。以前に説明したように、パーティションは、ストリームのセットを有してパーティションの持続的な状態を格納する。更新ログ402は、これらのストリームのうちの1つに格納されるが、これらは更新ログストリームと称される。全てのファイルテーブル406は、これらのストリームのうちの1つに格納されるが、これらは、ファイルテーブルストリームと称される。
テーブルサーバがパーティションをロードすると、テーブルサーバは、パーティションが最後にアンロードされた直前の状態に戻るメモリテーブルを再構築するために、最新のチェックポイント以後の更新ログ内の全ての要求を再現する。
テーブルサーバにおいてパーティションにアクセスすると、テーブルサーバは、全ての最近の変更を見るためにメモリテーブル内に一致する行があるかどうかを最初によくチェックし、一致がない場合、テーブルサーバはデータについてのそのページのキャッシュ及びファイルテーブルを調べる。
パーティション及び複数のファイルテーブルについての複数のメモリテーブルが存在してもよい。1つのメモリテーブルがいっぱいになると、チェックポイントが付されてファイルテーブルになる必要があるので、複数のメモリテーブルが存在してもよい。このことが生じている間に、現在のメモリテーブルはリードオンリであるよう設定されるがチェックポイントが行われ、新しいメモリテーブルが書き込みのためにパーティションについて作成される。従って、パーティションは常に最近の(差分)更新のために用いられている1つのメモリテーブルを有し、パーティションはゆっくりとチェックポイントが付される1つまたは複数のメモリテーブルを有することができる。一旦メモリテーブルはチェックポイントが付されてファイルテーブルになると、メモリテーブルは削除されてもよいしまたは不要なデータとして集められてもよい。
パーティションに対して行われたチェックポインティングの全てにより、パーティションについての複数のファイルテーブルのチェックポイントが存在してもよい。これによって、データがファイルテーブルから読み出され必要があるときに、複数のファイルテーブルが見られる必要がありかつ最近のものから最も古いものまで調べられる可能性がある。これは、書き込まれた最近のファイルテーブルがパーティションについての最近の変更を含むからである。十分なファイルテーブルをパーティションについてチェックポイントを行うと、パーティションについて調べられているデータを見つけるためにサーチされる必要があるファイルテーブルの数を減らすために、テーブルサーバは、ファイルテーブルを新しくマージされたファイルテーブルにゆっくりと圧縮する/マージする。
拡張可能で可用性の高い耐久性のある構造化ストレージ
本発明の実施形態は、パーティション分割、負荷分散及びスロットリングを用いて、拡張可能な構造化ストレージシステムを提供する。拡張可能性は、以下のことによって提供される。以下のことは、(1)テーブルをパーティションに分割して、パーティションをデータセンタ内の多数のサーバに分散させること、(2)負荷分散を用いて、高負荷のテーブルサーバからより軽負荷のテーブルサーバへパーティションを移動すること、及び(3)送信されている過剰なトラフィックを有するパーティションに要求を入れることを調整するかまたは、送信されている過剰なトラフィックを有するテーブルサーバに要求を入れること、である。
拡張可能性は、パーティションの異なる部分への負荷に基づいてテーブルをパーティションに自動的に分割してテーブルサーバにわたって負荷分散することによって提供される。負荷分散はシステムを作業負荷に動的に適応させ、多数のマシンにわたって負荷を分散し、これによって全ての物理的なリソースを効率的に利用してより良い拡張可能性を実現する。更に、スロットリングはシステムを高負荷から保護し、効率的な型/最適化された型でシステムを動作させ続ける。
可用性はテーブルマスタによってサービスを提供されていないパーティションを特定し、パーティションを異なるテーブルサーバに割り当てて、パーティションマップを更新することにより提供するが、パーティションマップによって、テーブルクライアントはそこにアクセスするためのパーティションの新しい位置を見つけられるようになる。ノード/ネットワークの障害の場合にパーティションを素早く再割当てすることによって、全てのパーティションはアクセス可能に保持され、高いシステム可用性が生み出される。
耐久性は、パーティションのデータの全てを複製されたスリーム層に格納することによって提供される。ストリーム層は、ストリーム(ファイルに類似している)にデータを書き込みかつそこから読み出すためのインタフェースのようなファイルシステムを提供し、ストリーム層は、システム内のテーブルサーバのうちのいずれからでも常に耐久性があって可用性があるデータが複製されることを確実にするための完全な機能を提供する。従って、パーティションマップを含むパーティション情報はログを更新し、ファイルテーブルはストリーム層に格納される。
効率的なストリームレベルのオペレーション
ストリーム層は、ストリームの領域を別のストリームに効率的にハードリンクする機能を提供する。ストリーム層の各ストリームは、エクステントと称されるデータブロックのリストを構成する。ストリーム内のデータは実際に、これらのエクステント内に格納される。ストリームは、エクステントの順序付けられたリストである。所定のエクステントは複数のストリーム内に存在することができるかまたは、同じストリームの順序付けられたエクステントのリストにおいて複数回現われることさえできる。ストリーム層は、インタフェースを提供して、別のストリーム内に存在する既存のエクステントのセットをリンクすることによってストリームを構成する。実際のデータのコピーはこのプロセス内に含まれていないので、非常に効率的である。ストリーム層は、各エクステントの参照数を維持する。一旦エクステントがエクステントを示しているストリームを有しなくなると、ストリーム層はシステムから不要なデータを集める/このエクステントを削除する。
ストリーム層はまた、1つのアトミックトランザクションにおいて、作成、削除、ストリーム名の変更及びストリームへのエクステントのハードリンクなどの複数のストリームレベルのオペレーションを有する能力をサポートする。
構造化ストレージシステムは、これらの特徴を広く利用して、パーティションのストリームのもはやサポートされない部分について効率的に不要データ収集する。1つの例が、一旦パーティションのチェックポイントが作成されると、チェックポイントより前の更新ログ内の全てのメッセージがもはや用いられないことである。これらの特徴は、更新ログストリームと同じ名前の新しいストリームをアトミックに作成することによって更新ログを効率的に切り捨てるために用いられ、まだ使用中のエクステントを元のストリームから新しいストリームへハードリンクし、元のストリームを削除する。全てのこれらのことは1つのアトミックトランザクションにおいて行われる。これは、障害処理論理を著しく単純化する。同様のスキームも、パーティションのファイルテーブルストリーム及びメタデータストリームなどの他のストリームに用いられる。
構造化ストレージシステムはまた、後の方のセクションにおいて説明したように、これらの特徴を広く利用してパーティションの分割及びマージを効率的に実施する。より具体的には、これらの特徴は、あらゆるビットを物理的にコピーまたは移動する必要なしに、元のパーティション(または複数の元のパーティション)から分割/マージで作成された子パーティション(または複数の子パーティション)へデータを効率的に参照するために用いられる。
パーティションの分割、マージ、負荷分散
本発明のいくつかの実施形態は、ストレージシステム内のテーブルサーバの間で負荷分散のバランスを取る。通常、テーブルサーバは、各パーティションの負荷を追跡し、この情報をテーブルマスタに周期的に報告する。テーブルマスタは、テーブルサーバの中でパーティションを移動することによって負荷分散を決定する。これは、元のテーブルサーバから対象パーティションをアンロードして、パーティションを他のテーブルサーバに割り当てることによって実現される。
最適化として、本発明のいくつかの実施形態は、パーティションがアンロードされる前にまたはアンロードされるときに、テーブルマスタにテーブルサーバに対する「アンロードする準備をせよ」という要求を送信させることができる。テーブルサーバは、この要求を受信すると、パーティションが再びロードされるときにリプレイされる必要があるログの量を減らすために、パーティションでチェックポイントを付す。このことは、パーティションにサービスを提供するための利用可能なSLAを満足するように提供される。
単一のパーティションが相対的により高負荷を有する場合、パーティションを2又はそれ以上のパーティションに分割することが望ましくなり、これは、パーティションが1より多くのパーティションキー値を含む場合にだけ可能である。その後、子パーティションのうちの1つまたは複数は、異なるテーブルサーバにアンロードされて負荷分散を実現することができる。
負荷分散追跡のために、サンプリングメカニズムが各テーブルサーバによって用いられて、メモリを多量に消費することなしに各パーティション内のきめ細かい負荷情報を追跡する。負荷情報を追跡するために、パーティションは、本明細書において「バケット」と称される、複数のパーティションキー範囲へ分割され、各バケットに対応する負荷が追跡される。より具体的には、テーブルサーバは、これらのバケットに分類される要求を確率的にサンプリングし、複数のバケットにわたる負荷分散を追跡する。例えば、図2のテーブル200内のパーティションP3 214を参照すると、パーティションは負荷追跡目的のために2つのバケットに分割することができる。第1のバケットは3のパーティションキー値を有する行を含み、第2のバケットは4というパーティションキー値及び5というパーティションキー値を有する行を含む。実施形態において、バケットの境界は常に、パーティションキー値上に存在しなければならない。即ち、同じパーティションキー値を有する行は、常に同じバケット内に存在する。例えば、3というパーティションキー値を有する行は、負荷追跡目的及び分割目的のために2つのバケットに分割することができない。
いくつかの実施形態において、集められたトラフィックサンプルに基づいて、バケットの境界を、パーティション内のキーにわたってトラフィック分散をより正確に追跡するために動的に調整することができる。即ち、2つの既存のバケットが他のバケットと比較して多くの負荷を有していない場合、バケットは単一のバケットにマージされる。逆に、1つのバケットが全ての他のバケットよりかなり多くの負荷を含む場合、そのバケットは可能ならば2つに分割することができる。例えば、以前の例において、第2のバケットが第1のバケットと比較して過剰な負荷を含む場合、第2のバケットはより小さい2つのバケットに分割されることができ、そのうちの1つはパーティションキー値4を有する行を含み、そのうちのもう1つはパーティションキー値5を有する行を含む。更に、パーティションキー値3を含む第1のバケットがほとんど負荷を有していない場合、第1のバケットはパーティションキー値4を含んでいるバケットとマージすることができる。このバケットサイズのモニタ及び調整は、オンザフライで動的にすべて行われる。1つのパーティション内でパーティションキーにわたって負荷分散を追跡するために用いられるバケットレベルのサンプリングスキームの他に、テーブルサーバはまた、全パーティションの作業負荷の総量を追跡する。全パーティションの作業負荷の総量は、テーブルマスタに伝えられる。従って、パーティションが負荷に基づいて分割される必要がある場合、どこでパーティションが分割されなければならないかを決定するためのかなり正確な負荷分散情報が、テーブルサーバ及びテーブルマスタの両方に利用可能である。
ここで図5を参照すると、本発明の実施形態に基づくパーティションの分割方法500を示すフロー図が提供される。図5の実施形態において、親パーティションP1は、2つの子パーティションであるP1’(行のサブセットだけを含むよう修正される元のパーティション)及びP2(残りの行を含む新しいパーティション)に分割される。図5は、パーティションを2つの子パーティションに分割することを検討するが、パーティションは本発明の実施形態に基づいて2つ以上の子パーティションに分割することができると理解されるべきである。
最初に、ブロック502に示すように、負荷分散情報が、テーブルサーバ、パーティション及び/またはパーティションの一部(即ち、「バケット」)について追跡される。上記のようにパーティションの部分レベルできめ細かい負荷情報を追跡することによって、どこでパーティションを分割するかについての決定することができる。負荷情報は、テーブルサーバによって追跡されて、テーブルマスタに周期的に提供される。現在の実施形態において、テーブルマスタに送信された負荷情報は、各パーティションの総負荷及び各テーブルサーバの負荷を含む。いくつかの他の実施形態は、バケットレベルの情報を含む全ての負荷追跡情報をテーブルマスタに提供することができる。パーティションが負荷分散及び分割を決定する際に役立つ追加の情報、制約事項及びヒントが、テーブルサーバからテーブルマスタに提供される。例えば、バケット情報の分散に基づいて、テーブルサーバは、深刻さの度合を用いてパーティションが「分割するのを認めたがらない」ことを分類する。高い度合では、テーブルマスタはテーブルサーバがパーティションを分割しようとしないのでパーティションについての分割を要求するべきでないことを意味し、中間の度合では、テーブルサーバがパーティションを分割しないことを選択することができる特定の状況が存在しかつテーブルマスタがその決定を無効にすることができることを意味し、低い度合では、テーブルサーバがテーブルマスタに従ってテーブルマスタからの指示を聞いて受け取ることを意味する。
テーブルマスタは、負荷情報を用いて、負荷分散の決定を行う。負荷分散の決定は、パーティションを分割するかどうか、パーティションをマージするかどうか、及び/またはテーブルサーバの中でパーティションを移動するかどうかを含む。図5の本実施形態では、テーブルマスタは、ブロック504に示すように、負荷分散情報に基づいてパーティション(P1)を分割すること決定する。
ブロック506において、テーブルマスタは、パーティションを分割するための分割比を決定する。 分割比は、パーティションが分割されるべき位置を決定するための負荷比を表す。例えば、テーブルマスタは、30%/70%の負荷ポイントでパーティションを分割することを決定することができる。換言すれば、パーティションは、パーティションの第1の部分に対する負荷が30%でありかつパーティションの残り部分に対する負荷が70%であるポイントにおいて分割されなければならない。ブロック508において、テーブルマスタは、分割のために特定されたパーティションをホストしているテーブルサーバに要求を送信する。特に、テーブルマスタは、パーティションにおける分割比に対応する位置を特定しているキー情報を要求する。要求に応じて、テーブルサーバは、ブロック510で示されるように、分割比に基づいてパーティションを分割するための実際のパーティションキー位置を特定する。実際の位置は、分割比によって特定される負荷分散との一致を実現しようとする。但し、実際の負荷分散は変化することができる。例えば、テーブルマスタによって要求される分割比は、30%/70%の負荷分散であってもよいが、提供することができる一番近い一致が、35%/65%の負荷分散であってもよい。
いくつかの実施形態では、分割のための実際の位置は、パーティションキー情報を用いて特定される。例えば、図2のパーティションP3 214が3というパーティションキー値と4というパーティションキー値との間で分割されることになっていた場合、分割を特定しているキー情報は、3というパーティションキー値及び/または4というパーティションキー値であってもよい。いずれかのかつ全てのかかる変化形は、本発明の実施形態の範囲内であるべきであると考えられる。ブロック512に示すように、テーブルサーバは、分割比についてのキー情報をテーブルマスタに返す。
ブロック514に示すように、テーブルマスタは、子パーティションのうちの1つとして新しいパーティション(P2)についてのストリームを構築する。パーティションの全ての永続的状態は、そのパーティションについての「ストリーム」に保持される。パーティションについてのメタデータストリームが存在し、メタデータストリームは、パーティションの全ての他のストリームに対するポインタを、パーティションに含まれる全ての行のパーティションキー範囲などの、そのパーティションの基本的情報と同様に含む。このステップにおいて、テーブルマスタは、分割比に対応する正しいパーティションキー範囲の情報を有する新しいパーティション(P2)についてのメタデータストリームを作成することに関与する。更に、ブロック516において、テーブルマスタは、テーブルサーバに分割要求を送信する。分割要求は、テーブルマスタからテーブルサーバへの次のわずかな時間において提供されてもよい。
いくつかの実施形態において、適切なマスタログが障害を処理するために書かれる。対応するステップが完了した後に、テーブルマスタは各ステップのログを取り、その結果、マスタ障害の場合には、ログをリプレイすることができ、テーブルマスタは、中止されたところから分割を再開することができる。
分割要求を受信した後に、ブロック518に示すように、テーブルサーバは、元のパーティション(P1)にサービスを提供するのを止めてアンロードする。ブロック520に示すように、テーブルサーバはまた、元のパーティションから2つの子パーティション(P1’及びP2)を構築する。テーブルサーバは、元のパーティション(P1)内の情報に基づいて、新しいパーティション(P2)についてのストリーム(メタデータストリームを除く)を構築する。より具体的には、P2のキー範囲に属するデータの一部は、下層のストリーム層の特徴を用いて、パーティションP1からパーティションP2のストリームに効率的にコピーされる/ハードリンクされる。子パーティションP1’は、P1のキー範囲を調整することによって「作成」される。子パーティションP1’は、元のパーティションP1と同じストリームのセットを用いる。P1’のメタデータは、減少したキー範囲に適応するよう変更される。
ブロック522に示すように、テーブルサーバは両方の子パーティション(P1’及びP2)をロードし、これらのパーティションへのサービスの提供を開始する。更に、ブロック524に示すように、テーブルサーバは、分割の完了についてテーブルマスタに通知する。この通知は、テーブルサーバからテーブルマスタへの次のわずかな時間において提供されてもよい。ブロック526に示すように、テーブルサーバからの分割完了通知に応じて、テーブルマスタは、パーティションマップを更新して新しいパーティションを示す。この時点で、テーブルマスタは、分割が完了したと見なすことができる。ブロック528に示すように、テーブルマスタは、それがパーティションマップに一致するため、新しく作成された子パーティション(P2)を含む新しい割り当てをテーブルサーバに送信する。
いくつかの実施形態において、パーティションが分割された後に、テーブルマスタは、元のパーティションが存在しているテーブルサーバから別のテーブルサーバに子パーティションを移動することを決定できる。これによって、テーブルマスタはネットワークを介して負荷を効果的に分散できるようになる。パーティションの移動は、1つのテーブルサーバからパーティションをアンロードしてパーティションを別のテーブルサーバに割り当てることによって実現される。
本発明の他の実施形態において、図5を参照して上記した分割プロトコルのパフォーマンスは、ブロック518において、元のパーティションがアンロードされる前に、新しい子パーティションを作成することによって改善することができる。上記の方法500に対する他の変化形も、当業者に明らかになり、本発明の実施形態の範囲内である。
図6は、本発明の実施形態に基づいて図2のP3 214を分割する例を示す。特に、図6は、TS3 308に存在するP3 214の分割を行なうために図3のテーブルマスタ302とTS3 308との間の相互作用を示す。最初に、符号602に示すように、テーブルマスタ302は、TS3 308に要求を送信して、P3 214を分割するための位置を特定するキー情報についてクエリを行う。要求は0.3の分割比を特定し、分割比は、テーブルマスタがP3 214の負荷の30%を受信したP3 214のうちの1つの部分と負荷の70%を受信した残りの部分との間の位置でP3 214を分割することを所望していることを示す。
テーブルマスタ302からの要求に応じて、TS3 308は、テーブルマスタ302によって特定される分割比に対応するキー情報を決定する。キー情報は、分割比としてテーブルマスタ302によって特定される30%/70%の負荷分散に基づいて、P3 214の2つの部分同士の間の位置を表す。この例では、TS3 308は、3というパーティションキー値を有する行の負荷は負荷の約30%を有し、一方残りの行の負荷は負荷の約70%を有すると決定する。このように、この例におけるTS3 308によって決定されるキー情報は、4というパーティションキー値である。様々な実施形態において、他のキー情報が、P3 214が分割されなければならない位置を特定するために提供されてもよいと理解されるべきである。
符号606において、TS3 214はキー情報(即ち、4というパーティションキー値)をテーブルマスタ302に伝える。符号608において、テーブルマスタ302は、新規なパーティションであるPNについてのストリームを構築する。更に、符号610に示すように、テーブルマスタ302は、テーブルマスタに分割要求を送信する。この例の分割要求は、子パーティションの各々についての所定の範囲を特定する。特に、1つの子パーティションであるP3’について、分割要求は、3という低パーティションキー値及び4という高いパーティションキーを示し、P3’は3というパーティションキー値を有する行を含むことを示す。他の子パーティションであるPNについて、分割要求は、4という低パーティションキー値及び6という高パーティションキー値を示し、PNは4というパーティションキー値を有する行を、5というパーティションキー値を有する行と同様に含むことを示す。
符号612において、分割要求に基づいて、TS3は元のパーティションであるP3 214にサービスを提供するのを止める。更に、TS3 308は、符号614に示すように、P3をP3’及びPNに分割し、符号616に示すように、P3’及びPNへのサービスの提供を開始する。符号618に示すように、次に、TS3 308はテーブルマスタ302に分割の完了通知を送信する。テーブルマスタ302は、符号620においてパーティションマップを更新して子パーティションを示す。
ここで図7を参照すると、本発明の別の実施形態に基づいてパーティションを分割する方法700を示すフロー図が提供される。図7の実施形態において、親パーティションP1は、2つの新しい子パーティションP2及びP3に分割され、これらの各々は親パーティションP1からの行の一部を含む。図7はパーティションを2つの子パーティションに分割することを検討しているが、パーティションは、本発明の実施形態に基づいて2つより多くの子パーティションに分割することができると理解されるべきである。
図5の方法500と同様に、ブロック702に示すように、負荷分散情報が最初に追跡される。負荷分散情報によって、テーブルマスタは、パーティションを分割するかどうか、パーティションをマージするかどうか、及び/またはテーブルサーバの中でパーティションを移動するかどうかを含む負荷分散の決定を行えるようになる。図7の本実施形態において、ブロック704に示すように、テーブルマスタは、負荷分散情報に基づいてパーティション(P1)を分割することを決定する。
ブロック706において、テーブルマスタは、パーティションを分割するための分割比を決定する。前述のように、分割比は、パーティションが分割されるべき位置を決定するための負荷比を表す。例えば、テーブルマスタは、30%/70%の負荷ポイントでパーティションを分割することを決定できる。ブロック708において、テーブルマスタは、分割のために特定されるパーティションをホストしているテーブルサーバに要求を送信する。特に、テーブルマスタは、パーティションにおける分割比に対応する位置を特定するキー情報を要求する。ブロック710に示すように、要求に応じて、テーブルサーバは、分割比に基づいてパーティションを分割するための実際の位置を特定する。ブロック712に示すように、テーブルサーバは、分割比についてのキー情報をテーブルマスタに返す。
ブロック714に示すように、テーブルマスタは、新規なパーティション(P2及びP3)についてのメタデータストリームを構築する。いくつかの実施形態において、適切なマスタログが、障害を処理するために書き込まれる。テーブルマスタは、対応するステップが完了した後に各ステップのログを取り、その結果、マスタの障害の場合には、ログをリプレイすることができ、テーブルマスタは、中止されたところから分割を再開することができる。更に、ブロック716において、テーブルマスタは、分割要求をテーブルサーバに送信する。分割要求は、テーブルマスタからテーブルサーバへの次のわずかな時間において提供されてもよい。
ブロック718に示すように、分割要求に応じて、テーブルサーバは、元のパーティション(P1)から2つの子パーティション(P2及びP3)を構築する。テーブルサーバは、元のパーティション(P1)に基づいて(メタデータストリーム以外の)新規なパーティション(P2及びP3)についてのストリームを構築する。より具体的には、P2のキー範囲に属するデータ部分は、下層のストリーム層の特徴を用いてパーティションP1からパーティションP2のストリームに効率的にコピーされる/ハードリンクされる。同様に、P3のキー範囲に属するデータ部分は、下層のストリーム層の同じ特徴を用いてパーティションP1からパーティションP3のストリームに効率的にコピーされる/ハードリンクされる。
ブロック720に示すように、テーブルサーバは、元のパーティションにサービスを提供するのをやめてアンロードする。更に、ブロック722に示すように、テーブルサーバは、両方の子パーティション(P2及びP3)をロードして、これらのパーティションへのサービスの提供を開始する。ブロック724に示すように、テーブルサーバは、分割の完了についてテーブルマスタに通知する。この通知は、テーブルサーバからテーブルマスタへの次のわずかな時間において提供されてもよい。ブロック726に示すように、テーブルサーバからの分割の完了通知に応じて、テーブルマスタは、パーティションマップを更新して新規なパーティションを示す。この時点で、テーブルマスタは、分割が完了したと見なすことができる。ブロック728に示すように、新規な割り当てがパーティションマップに一致するように、テーブルマスタは新しく作成した子パーティション(P2及びP3)を含む新規な割り当てをテーブルサーバに送信する。
いくつかの例では、テーブルマスタは、例えば負荷分散情報に基づいて、2又はそれ以上のパーティションを単一のパーティションにマージすることを決定できる。1つの実施形態において、マージは、2つの隣接する(即ち、テーブル内の連続する行において隣接する)パーティションが相対的に低い負荷を有する場合に行なわれる。パーティションを単一のパーティションにマージすることは、システム内のパーティションの数を減じるために有利であるかもしれない。
従って、図8は、本発明の実施形態に基づいてパーティションをマージする方法800を示すフロー図を示す。ブロック802に示すように、負荷分散情報が、最初に追跡される。ブロック804に示すように、テーブルマスタは、負荷分散情報に基づいて、2つのパーティション(P1及びP2)が新規なパーティション(P3)にマージされるべきと判断することができる。実施形態において、連続していてばらばらでないパーティションキー範囲を形成するパーティションだけが、マージされ得る。
ブロック806に示すように、テーブルマスタが2つのパーティションをマージすることを決定する場合、テーブルマスタは、2つのパーティションにサービスを提供するテーブルサーバ(または複数のテーブルサーバ)に、「マージを準備せよ」というメッセージ(または複数のメッセージ)を送信する。いくつかの例では、両方のパーティションが単一のテーブルサーバに存在することができるが、他の例では、パーティションは異なるテーブルサーバに存在する。「マージを準備せよ」というメッセージは、マージされたパーティションについてのロード時間を減少するために、マージに先立ってパーティションを圧縮する機会をテーブルサーバ(または複数のテーブルサーバ)に与える。
テーブルマスタは、ブロック808においてマージされたパーティション(P3)についてメタデータストリームを作成し、ブロック810において親パーティションが存在するテーブルサーバ(または複数のテーブルサーバ)から2つの親パーティション(P1及びP2)をアンロードする。ブロック812に示すように、次に、テーブルマスタは、パーティションマップを更新する(古いパーティションエントリをアトミックに除去して、新規なパーティションエントリを挿入する)。テーブルマスタの全体像から、マージトランザクションは、この時点で完了している。テーブルマスタのフェールオーバの場合、新規なマージされたパーティションは、ブートストラップの間持続されるパーティションマップにおいて見出されるからである。
ブロック814に示すように、テーブルマスタは、マージされたパーティション(P3)をテーブルサーバに割り当てる。マージされたパーティションを割り当てるテーブルサーバは、システム内のいかなるテーブルサーバであってもよい。例えば、割り当てられたテーブルサーバは、親パーティションのうちの1つまたは両方が存在したテーブルサーバであってもよいしまたは、システム内の異なるテーブルサーバであってもよい。
ブロック816に示すように、割り当てが行われると、テーブルサーバはマージされたパーティションをロードする。マージされたパーティションのメタデータストリームから、テーブルサーバは、これがマージされたパーティションであると知って、テーブルサーバは、下層のストリーム層からの特徴を用いて親パーティションからのデータを効率的にコピーする/ハードリンクすることによって親パーティションからマージされたパーティションのストリームを構築する。構築が行われた後に、テーブルサーバは、このイベントをマージされたパーティションのメタデータストリームへ記録して(この次このパーティションをロードするときに、ストリームが再び構築されないように)、親パーティションのストリームを削除する。
こわれたパーティション分割の状態からの回復
耐久性のある構造化ストレージシステムは、システム状態のバグから回復することが可能でなければならない。この能力を実現するために、本発明の実施形態における構造化ストレージシステムは、アペンド専用のストアに構築され、全ての削除されたデータは、システム内のあらゆるデータ破損を発見するのに十分長いとみなされる最小限の時間にわたって保持される。
ここで図9を参照すると、本発明の実施形態に基づいてこわれたパーティション状態からパーティションを回復する方法900を示すフロー図が提供される。最初に、ブロック902に示すように、こわれたパーティションが特定される。パーティションがこわれてサービスが提供されない場合、サービスを提供されていないとしてパーティションを示す警告が行われる。これによって、そのパーティションのデータに対する可用性の一時的な損失が生じるかもしれない。
ブロック904で示すように、こわれたパーティションは、一貫性のあるパーティション状態に回復される。システムは、以下のいずれかを行うことができる。(a)パーティションを修理する。パーティションに対する全ての以前の変更はアペンド専用のストアに格納されており、アペンド専用ストアは、あらゆるデータを失うことなくパーティションを修復できるからである。または(b)パーティションを時間内に以前のポイントにロールバックする。以前のポイントは、ロールバック時間と障害の時間との間に生じた変更の損失を潜在的にもたらす。一旦パーティションが修理されると、パーティションは構造化データの読み出し及び書き込みのためのサービスを再び提供されるために利用できる。
パーティションのロールバックの間、システムは、まだ有効な状態にある最近のチェックポイントを見つけ、最近のチェックポイントがまだ存在するならば、対応するログとともにチェックポイントを使用してパーティション状態を再構築する。
パーティションのロールバックの間、一部の例では、パーティションの現在のメタデータ及びデータコンテンツは、パーティション状態を回復するために不十分である。そのような場合、システムは、対象パーティションを含む最近の分割及びマージの間の、対象パーティションの親(または複数の親)を含む、他の関連するパーティションからのデータを使用する。より具体的には、システムは、親パーティション及び対象パーティションから最近の有効なチェックポイントの状態をマージすることによってパーティションの状態を再構築する。
ブロック906に示すように、全てのパーティションが回復するかまたは再構築された後に、パーティションマップは、再構築されたシステムの全てのパーティションのキー範囲を一致させるために修正される。このことは、システムをグローバルな一貫性のある状態へ戻す。
パーティションのバージョン管理及びアップグレード
テーブルサーバコードのアップグレードを行うと、アップグレードは、一度にテーブルサーバのサブセットだけで実行される。このように、テーブルサーバはN個のアップグレード領域に分解され、各アップグレード領域は1つずつアップグレードすることができる。
図10を参照すると、本発明の実施形態に基づくアップグレードの間、パーティションをバージョン管理する方法1000を示すフロー図が提供される。ブロック1002に示すように、パーティションは、アップグレードプロセスの間、次にアップグレードされることになっている対象アップグレード領域内のテーブルサーバから移動することができる。ブロック1004に示すように、新しいテーブルサーバコードのバージョンは、対象アップグレード領域内でテーブルサーバに配置される。
ブロック1006に示すように、アップグレードプロセスの間、パーティションは、新規のテーブルサーバコードのバージョンを有するテーブルサーバに割り当てられて、潜在的に新規なデータフォーマットを用いて修正が開始することができる。この修正の後、パーティションは、より新規なアップグレードされたテーブルサーバによってだけサービスが提供されて、より古いバージョンのテーブルサーバによってはサービスが提供されない。このように、一旦パーティションがバージョンNのテーブルサーバによってサービスを提供されると、ブロック1008に示すように、システムによって、パーティションがバージョンN又はそれより後の(またはそうでなければ互換性を持つテーブルサーバのバージョン)テーブルサーバによってだけサービスを提供されることが確実にされる。
このことは、本発明の実施形態の範囲内の多くの異なるやり方で実現することができる。例えば、1つの実施形態において、バージョン番号は、各パーティション、テーブルサーバ及びテーブルマスタについて追跡される。アップグレードが生じると、パーティションにサービスを提供しているテーブルサーバがより大きいバージョン番号であるならば、パーティションは、そのバージョン番号を引き受ける。そのポイントが存在する位置から、パーティションはそのバージョンまたはより大きいバージョンのテーブルサーバによってだけサービスを提供されることができる。
別の実施形態において、各テーブルサーバがアップグレードされるとすぐに、テーブルサーバは、そのバージョンを示すためにテーブルマスタに通信する。テーブルマスタは、最新のテーブルサーババージョンを追跡し、割り当てられることになっているパーティションを最新バージョン(またはそうでなければ互換性を持つバージョン)を有するテーブルサーバに割り当てることだけができる。
また別の実施形態において、パーティションのバージョンは、パーティションメタデータとともに持続される。テーブルサーバは、テーブルマスタに割り当てられたパーティションのバージョンをテーブルマスタに通知する。テーブルサーバはまた、テーブルサーバ自身のバージョン番号をテーブルマスタに報告する。これによってテーブルマスタは、パーティションのバージョンをテーブルサーバのバージョンと同様に追跡する。このように、テーブルマスタによって、パーティションが互換性を持つバージョンのテーブルサーバに割り当てることができることが確実になる。
結論
本発明は、限定的であるよりはむしろ説明的であるようあらゆる点で意図された特定の実施形態に関して説明されてきた。本発明がその範囲から逸脱することなく関係している代替実施形態が当業者に明らかになるだろう。
前述のことから、本発明は、システム及び方法に明らかであってかつ特有である他の利点とともに、上記の全ての目的及びオブジェクトを実現することにうまく適合している。特定の特徴及びサブコンビネーションは有用であって、他の特徴及びサブコンビネーションを参照することなしに用いることができると理解される。これは、特許請求の範囲内にあると意図されておりかつ実際に特許請求の範囲内にある。

Claims (15)

  1. 構造化ストレージが1つまたは複数のテーブルによって表される、構造化ストレージシステム内の1つまたは複数のコンピュータデバイスによって実施される方法であって、各テーブルは複数の行を含み、各行は前記構造化ストレージシステムによって格納されているデータエンティティを表し、前記行を特定するための1つまたは複数のキーを含んでおり、前記複数の行は複数のパーティションの間で分割され、各パーティションは前記テーブル内の前記複数の行からのある範囲の行を含み、前記複数のパーティションは複数のテーブルサーバに格納され、テーブルマスタが前記複数のテーブルサーバへのパーティションの割り当てを制御し、前記方法はパーティションを子パーティションに分割し、
    前記パーティションについての負荷情報に基づいて分割するための前記パーティションを特定することであって、前記負荷情報は、前記パーティションのうちの2又はそれ以上の部分の各々の読み込み及び書き出しの要求を特定する情報を含むことと、
    前記テーブルマスタによって、前記パーティションの前記2又はそれ以上の部分の各々の負荷に基づいて前記パーティションを分割するための分割比を決定することと、
    前記分割比に対応する前記パーティション内の実際の位置を示しているキー情報についてテーブルサーバにクエリを行うことと、
    前記テーブルサーバから前記テーブルマスタにおいてキー情報を受信することであって、前記キー情報は、前記分割比に対応する前記パーティション内の前記実際の位置を示すことと、
    前記テーブルマスタから前記テーブルサーバに分割要求を送信することであって、前記分割要求は、前記キー情報に基づいて前記パーティションを分割するよう指示することと、
    前記キー情報に対応する位置で前記パーティションを分割して前記子パーティションを作成することと、
    前記テーブルマスタに分割の完了を通知することと、
    前記子パーティションに分割されている前記パーティションに基づいてパーティションマップを更新することであって、前記パーティションマップは、前記複数のパーティションと前記複数のパーティションにサービスを提供している前記複数のテーブルサーバとの間のマッピングを格納することと、
    を含むことを特徴とする方法。
  2. 前記テーブルマスタにおいて、前記子パーティションのうちの少なくとも1つについてのストリームを構築することをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記パーティションを分割することは、
    前記テーブルサーバから前記パーティションにサービスを提供するのを止めることと、
    前記パーティションから前記子パーティションを構築することと、
    前記テーブルサーバから前記子パーティションをロードしてサービスを提供することを含み、
    前記パーティションにサービスを提供するのを止めることは、前記パーティションのチェックポイントを作成してパーティションの再ロードの間にリプレイされるべきログの量を減らすことであって、前記パーティションの前記チェックポイントを作成することは、アトミックに、新しいログストリームを作成し、前記チェックポイントの後に古いログストリームから新しいログストリームへエクステントをハードリンクし、前記古いログストリームを削除し、前記新しいログストリームの名前を前記古いログストリームの名前に変えることにより、チェックポイントの間にログストリームを効率的に打ち切ること、を含むこと、
    を特徴とする請求項1に記載の方法。
  4. 前記パーティションから前記子パーティションを構築することは、費用のかかるデータコピーを行うことなしに、前記パーティションのストリームから、エクステントをアトミックにハードリンクすることによって、前記子パーティションのストリームを効率的に構築することを含むことを特徴とする請求項3に記載の方法。
  5. 第2のテーブルサーバに前記子パーティションのうちの少なくとも1つを割り当てることと、パーティションマップを更新して前記子パーティションのうちの少なくとも1つが前記第2のテーブルサーバに位置することを示すことと、
    をさらに含むことを特徴とする請求項1に記載の方法。
  6. マージすることによって前記負荷情報に基づく前記パーティションのうちの2つ以上の部分の境界を調整すること、または負荷監視目的のために前記パーティションのうちの2つ以上の部分のうちの少なくとも1つのサブセットを分割すること、をさらに含むことを特徴とする請求項1記載の方法。
  7. 1つまたは複数のテーブルにより表された構造化ストレージシステムを管理する方法を実行するためのコンピュータ使用可能命令を格納する1つまたは複数のコンピュータ記憶媒体であって、各テーブルは複数の行を含み、各行は前記構造化ストレージシステムによって格納されるデータエンティティを表し、前記行を特定するための1つまたは複数のキーを含んでおり、前記複数の行は複数のパーティションの間で分けられ、各パーティションは前記テーブル内の前記複数の行からの所定の範囲の行を含み、前記複数のパーティションは複数のテーブルサーバに格納され、テーブルマスタは前記複数のテーブルサーバへのパーティション割り当てを制御し、前記方法は、前記テーブルのうちの少なくとも2つのパーティションをマージされたパーティションへとマージする方法であって、
    前記複数のテーブルサーバの前記複数のパーティションについての負荷情報を追跡することであって、前記負荷情報は前記テーブルサーバにおける前記パーティションのそれぞれに対する読み込み及び書き出しの要求を示すことと、
    前記テーブルマスタによって、前記負荷情報に基づいてマージするための前記少なくとも2つのパーティションを特定することと、
    前記テーブルマスタによって、前記マージされたパーティションについてのメタデータストリームを作成するステップと、
    前記少なくとも2つのパーティションにサービスを提供している少なくとも1つのテーブルサーバから前記少なくとも2つのパーティションをアンロードすることと、
    前記テーブルマスタによって、前記マージされたパーティションを前記複数のテーブルサーバから選択されたテーブルサーバに割り当てることと、
    前記選択されたテーブルサーバにおいて前記マージされたパーティションをロードしてサービスを提供することと、
    を含むことを特徴とする1つまたは複数のコンピュータ記憶媒体。
  8. 前記少なくとも2つのパーティションは、同じテーブルサーバに格納されることを特徴とする請求項7に記載の1つまたは複数のコンピュータ記憶媒体。
  9. 前記選択されたテーブルサーバは、前記少なくとも2つのパーティションのうちの少なくとも1つが、前記マージされたパーティションへとマージされる前に存在していたテーブルサーバを備えることを特徴とする請求項7に記載の1つまたは複数のコンピュータ記憶媒体。
  10. 前記マージされたパーティションにマージされている少なくとも2つのパーティションに基づいてパーティションマップを更新することであって、前記パーティションマップは、前記複数のパーティションと前記複数のパーティションにサービスを提供している前記複数のテーブルサーバとの間のマッピングを格納すること、をさらに含むことを特徴とする請求項7に記載の1つまたは複数のコンピュータ記憶媒体。
  11. 前記テーブルマスタから前記少なくとも2つのパーティションにサービスを提供している前記少なくとも1つのテーブルサーバにマージを準備せよというメッセージを送信するステップであって、前記マージを準備せよというメッセージは、前記マージされたパーティションについてのロード時間を減らすために、マージする前に、前記少なくとも1つのテーブルサーバに、前記少なくとも2つのパーティションを圧縮させることをさらに含むことを特徴とする請求項7に記載の1つまたは複数のコンピュータ記憶媒体。
  12. 1つまたは複数のテーブルにより表された構造化ストレージシステムを管理する方法を実行するためのコンピュータ使用可能命令を格納する1つまたは複数のコンピュータ記憶媒体であって、各テーブルは複数の行を含み、各行は前記構造化ストレージシステムによって格納されるデータエンティティを表し、前記行を特定するための1つまたは複数のキーを含んでおり、前記複数の行は複数のパーティションの間で分割され、各パーティションは前記テーブル内の前記複数の行からの行の連続的な範囲を含んでいて、前記複数のパーティションは複数のテーブルサーバに格納され、テーブルマスタが前記複数のテーブルサーバへのパーティションの割り当てを制御し、前記方法は、前記テーブルのパーティションを少なくとも2つの子パーティションに分割し、
    前記複数のテーブルサーバの前記複数のパーティションについての負荷情報を追跡することであって、前記負荷情報は、パーティションの読み込み及び書き出しの要求を含むことと、
    前記テーブルマスタによって、前記負荷情報に基づいて前記パーティションを分割するために特定することであって、前記パーティションについての前記負荷情報は、前記パーティションの異なる部分の異なる負荷を特定することと、
    前記テーブルマスタにおいて、前記パーティションを分割するための分割比を決定することであって、前記分割比は負荷情報に基づいて特定され、前記パーティション内のポイントを表し、前記パーティションにおいて、前記パーティションの第1の部分は第1の負荷の量を含み、前記パーティションの第2の部分は第2の負荷の量を含むことと、
    前記テーブルマスタから前記テーブルサーバに、前記分割比に対応して、前記パーティション内の実際の位置を特定するキー情報の要求を送信することと、
    前記テーブルサーバによって、前記分割比に対応する前記パーティションの前記実際の場所を特定している前記キー情報を決定することと、
    前記テーブルサーバから前記テーブルマスタへ前記キー情報を伝えることと、
    前記テーブルマスタにおいて、前記子パーティションの各々についてのメタデータストリームを構築することと、
    前記テーブルマスタから前記テーブルサーバに分割要求を送信することと、
    前記テーブルサーバにおいて、前記パーティションから前記子パーティションを構築することと、
    前記テーブルサーバにおいて、前記パーティションにサービスを提供するのを止めることと、
    前記テーブルサーバにおいて、前記子パーティションをロードしてサービスを提供することと、
    前記テーブルサーバから前記テーブルマスタへ分割の完了通知を送信することと、
    前記子パーティションに分割されている前記パーティションに基づいてパーティションマップを更新することであって、前記パーティションマップは、前記複数のパーティションと前記複数のパーティションにサービスを提供する前記複数のテーブルサーバとの間のマッピングを格納することと、
    を含むことを特徴とする1つまたは複数のコンピュータ記憶媒体。
  13. 前記子パーティションのうちの少なくとも1つを第2のテーブルサーバに割り当てることと、前記パーティションマップを更新して前記子パーティションのうちの少なくとも1つが前記第2のテーブルサーバに位置することを示すことと、をさらに含むことを特徴とする請求項12に記載の1つまたは複数のコンピュータ記憶媒体。
  14. 前記パーティションにサービスを提供するのを止めることは、前記パーティションのチェックポイントを作成してパーティションの再ロードの間にリプレイされるべきログの前記量を減らすことを備え、前記パーティションの前記チェックポイントを作成することは、アトミックに、新しいログストリームを作成し、前記チェックポイントの後に古いログストリームから前記新しいログストリームへエクステントをハードリンクし、前記古いログストリームを削除し、前記新しいログストリームの名前を前記古いログストリームの名前に変えることにより、チェックポイントの間にログストリームを効果的に打ち切ることを含むことを特徴とする請求項12に記載の1つまたは複数のコンピュータ記憶媒体。
  15. 前記パーティションから前記子パーティションを構築することは、費用のかかるデータコピーを行うことなしに、前記パーティションのストリームからエクステントをアトミックにハードリンクすることによって、前記子パーティションのストリームを効率的に構築することを含むことを特徴とする請求項12に記載の1つまたは複数のコンピュータ記憶媒体。
JP2011533395A 2008-10-24 2009-10-23 パーティション化した拡張可能で可用性の高い構造化ストレージにおけるパーティション管理 Active JP5607059B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/258,050 US9996572B2 (en) 2008-10-24 2008-10-24 Partition management in a partitioned, scalable, and available structured storage
US12/258,050 2008-10-24
PCT/US2009/061972 WO2010048595A2 (en) 2008-10-24 2009-10-23 Partition management in a partitioned, scalable, and available structured storage

Publications (3)

Publication Number Publication Date
JP2012507086A JP2012507086A (ja) 2012-03-22
JP2012507086A5 JP2012507086A5 (ja) 2012-11-29
JP5607059B2 true JP5607059B2 (ja) 2014-10-15

Family

ID=42118620

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011533395A Active JP5607059B2 (ja) 2008-10-24 2009-10-23 パーティション化した拡張可能で可用性の高い構造化ストレージにおけるパーティション管理

Country Status (15)

Country Link
US (1) US9996572B2 (ja)
EP (1) EP2342634B1 (ja)
JP (1) JP5607059B2 (ja)
KR (1) KR101597384B1 (ja)
CN (1) CN102197372B (ja)
AU (1) AU2009308176B2 (ja)
BR (1) BRPI0914183A2 (ja)
CA (1) CA2736586A1 (ja)
IL (1) IL211627A (ja)
MX (1) MX2011003883A (ja)
MY (1) MY165932A (ja)
RU (1) RU2011116167A (ja)
TW (1) TW201022953A (ja)
WO (1) WO2010048595A2 (ja)
ZA (1) ZA201101659B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289603B2 (en) 2012-10-12 2019-05-14 Amazon Technologies, Inc. Dynamic search partitioning

Families Citing this family (208)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991910B2 (en) 2008-11-17 2011-08-02 Amazon Technologies, Inc. Updating routing information based on client location
US8028090B2 (en) 2008-11-17 2011-09-27 Amazon Technologies, Inc. Request routing utilizing client location information
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US8447831B1 (en) 2008-03-31 2013-05-21 Amazon Technologies, Inc. Incentive driven content delivery
US7970820B1 (en) 2008-03-31 2011-06-28 Amazon Technologies, Inc. Locality based content distribution
US8321568B2 (en) 2008-03-31 2012-11-27 Amazon Technologies, Inc. Content management
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US7962597B2 (en) 2008-03-31 2011-06-14 Amazon Technologies, Inc. Request routing based on class
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US8886796B2 (en) * 2008-10-24 2014-11-11 Microsoft Corporation Load balancing when replicating account data
US9996572B2 (en) 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
KR101207510B1 (ko) * 2008-12-18 2012-12-03 한국전자통신연구원 클러스터 데이터 관리시스템 및 클러스터 데이터 관리 시스템에서 공유 재수행 로그를 이용한 데이터 재구축 방법
US8688837B1 (en) 2009-03-27 2014-04-01 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US8412823B1 (en) 2009-03-27 2013-04-02 Amazon Technologies, Inc. Managing tracking information entries in resource cache components
US10127295B2 (en) * 2009-06-05 2018-11-13 Microsoft Technolofy Licensing, Llc Geographic co-location service for cloud computing
US8782236B1 (en) 2009-06-16 2014-07-15 Amazon Technologies, Inc. Managing resources using resource expiration data
US8224787B2 (en) * 2009-07-23 2012-07-17 Applied Minds, Llc Redundant, multi-dimensional data partitioning: methods, program product and system
US8397073B1 (en) 2009-09-04 2013-03-12 Amazon Technologies, Inc. Managing secure content in a content delivery network
US8433771B1 (en) * 2009-10-02 2013-04-30 Amazon Technologies, Inc. Distribution network with forward resource propagation
US9177004B2 (en) * 2009-11-25 2015-11-03 Bmc Software, Inc. Balancing data across partitions of a table space during load processing
US8156304B2 (en) * 2009-12-04 2012-04-10 Oracle International Corporation Dynamic data storage repartitioning
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US8484243B2 (en) * 2010-05-05 2013-07-09 Cisco Technology, Inc. Order-independent stream query processing
US11726955B2 (en) 2010-06-19 2023-08-15 Hewlett Packard Enterprise Development Lp Methods and apparatus for efficient container location database snapshot operation
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
JP5661355B2 (ja) * 2010-07-09 2015-01-28 株式会社野村総合研究所 分散キャッシュシステム
EP2599182A1 (en) * 2010-07-29 2013-06-05 Spirae Inc. Dynamic distributed power grid control system
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US8468247B1 (en) 2010-09-28 2013-06-18 Amazon Technologies, Inc. Point of presence management in request routing
US8805784B2 (en) * 2010-10-28 2014-08-12 Microsoft Corporation Partitioning online databases
US8452874B2 (en) 2010-11-22 2013-05-28 Amazon Technologies, Inc. Request routing processing
US8577885B2 (en) 2010-12-09 2013-11-05 International Business Machines Corporation Partitioning management of system resources across multiple users
US10698775B2 (en) 2016-05-31 2020-06-30 Mongodb, Inc. Method and apparatus for reading and writing committed data
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US9881034B2 (en) 2015-12-15 2018-01-30 Mongodb, Inc. Systems and methods for automating management of distributed databases
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US9740762B2 (en) * 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US10366100B2 (en) 2012-07-26 2019-07-30 Mongodb, Inc. Aggregation framework system architecture and method
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10262050B2 (en) 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10467042B1 (en) 2011-04-27 2019-11-05 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US9251021B2 (en) * 2011-05-23 2016-02-02 Bradley Gene Calder Asynchronous replication in a distributed storage environment
US9519555B2 (en) 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US8572091B1 (en) * 2011-06-27 2013-10-29 Amazon Technologies, Inc. System and method for partitioning and indexing table data using a composite primary key
US9052831B1 (en) * 2011-06-30 2015-06-09 Amazon Technologies, Inc. System and method for performing live partitioning in a data store
US8676951B2 (en) * 2011-07-27 2014-03-18 Hitachi, Ltd. Traffic reduction method for distributed key-value store
US8645316B2 (en) 2011-08-16 2014-02-04 International Business Machines Corporation Storing records in databases in a randomized manner to effectively utilize database servers
KR101301607B1 (ko) * 2011-10-31 2013-09-10 삼성에스디에스 주식회사 분산 데이터 저장소를 위한 데이터 파티셔닝 장치 및 방법
US9575990B2 (en) * 2011-11-07 2017-02-21 Sap Se Partitioning data within a distributed data storage system using virtual file links
US10372688B2 (en) 2011-11-07 2019-08-06 Sap Se Moving data within a distributed data storage system using virtual file links
US8880565B2 (en) * 2011-12-23 2014-11-04 Sap Se Table creation for partitioned tables
US20130311488A1 (en) * 2012-01-06 2013-11-21 Citus Data Bilgi Islemleri Ticaret A.S. Time Stamp Bounded Addition of Data to an Append-Only Distributed Database Table
US10860563B2 (en) 2012-01-06 2020-12-08 Microsoft Technology Licensing, Llc Distributed database with modular blocks and associated log files
US9753999B2 (en) * 2012-01-06 2017-09-05 Citus Data Bilgi Islemieri Ticaret A.S. Distributed database with mappings between append-only files and repartitioned files
US20130311421A1 (en) * 2012-01-06 2013-11-21 Citus Data Bilgi Islemleri Ticaret A.S. Logical Representation of Distributed Database Table Updates in an Append-Only Log File
US10860384B2 (en) 2012-02-03 2020-12-08 Microsoft Technology Licensing, Llc Managing partitions in a scalable environment
US8868711B2 (en) * 2012-02-03 2014-10-21 Microsoft Corporation Dynamic load balancing in a scalable environment
US9852010B2 (en) 2012-02-03 2017-12-26 Microsoft Technology Licensing, Llc Decoupling partitioning for scalability
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US9154551B1 (en) 2012-06-11 2015-10-06 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US11403317B2 (en) 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
US9501483B2 (en) * 2012-09-18 2016-11-22 Mapr Technologies, Inc. Table format for map reduce system
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US9507837B2 (en) * 2012-10-01 2016-11-29 Oracle International Corporation Reference data segmentation from single to multiple tables
KR101737246B1 (ko) * 2012-10-12 2017-05-17 에이나인.컴, 인크. 네트워크에서의 검색가능 데이터에 대한 인덱스 구성
US9374276B2 (en) 2012-11-01 2016-06-21 Microsoft Technology Licensing, Llc CDN traffic management in the cloud
US9537973B2 (en) * 2012-11-01 2017-01-03 Microsoft Technology Licensing, Llc CDN load balancing in the cloud
EP2926270A4 (en) * 2012-11-27 2016-07-13 Nokia Solutions & Networks Oy PARALLEL QUERY PROCEDURE WITH MULTIPLE FIELDS AND CORRESPONDING STORAGE ORGANIZATION
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
KR101677946B1 (ko) * 2012-12-27 2016-11-21 후아웨이 테크놀러지 컴퍼니 리미티드 파티션 확장 방법 및 장치
US9485309B2 (en) * 2013-03-14 2016-11-01 Red Hat, Inc. Optimal fair distribution among buckets of different capacities
US11030055B2 (en) 2013-03-15 2021-06-08 Amazon Technologies, Inc. Fast crash recovery for distributed database systems
US9514007B2 (en) * 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9330158B1 (en) * 2013-05-20 2016-05-03 Amazon Technologies, Inc. Range query capacity allocation
US9471657B1 (en) 2013-05-20 2016-10-18 Amazon Technologies, Inc. Range query capacity allocation
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
CN104376025B (zh) * 2013-08-16 2017-10-10 华为技术有限公司 分布式数据库的数据存储方法和装置
US9720989B2 (en) 2013-11-11 2017-08-01 Amazon Technologies, Inc. Dynamic partitioning techniques for data streams
US10635644B2 (en) 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
US9858322B2 (en) 2013-11-11 2018-01-02 Amazon Technologies, Inc. Data stream ingestion and persistence techniques
US9794135B2 (en) 2013-11-11 2017-10-17 Amazon Technologies, Inc. Managed service for acquisition, storage and consumption of large-scale data streams
US9639589B1 (en) 2013-12-20 2017-05-02 Amazon Technologies, Inc. Chained replication techniques for large-scale data streams
US10042910B2 (en) 2014-02-24 2018-08-07 Sap Se Database table re-partitioning using two active partition specifications
US9740724B2 (en) 2014-04-29 2017-08-22 International Business Machines Corporation Data partitioning for high-efficiency data retrieval
US9779121B2 (en) * 2014-06-27 2017-10-03 Sap Se Transparent access to multi-temperature data
US9286001B2 (en) * 2014-06-30 2016-03-15 Microsoft Licensing Technology Llc Effective range partition splitting in scalable storage
US9800575B1 (en) * 2014-09-24 2017-10-24 Ebay Inc. Assigning storage responsibility in a distributed data storage system with replication
US11095715B2 (en) 2014-09-24 2021-08-17 Ebay Inc. Assigning storage responsibility in a distributed data storage system with replication
JP6288596B2 (ja) 2014-11-05 2018-03-07 華為技術有限公司Huawei Technologies Co.,Ltd. データ処理方法および装置
US10356150B1 (en) * 2014-12-15 2019-07-16 Amazon Technologies, Inc. Automated repartitioning of streaming data
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10169395B2 (en) * 2015-02-12 2019-01-01 International Business Machines Corporation Database identifier generation in transaction processing systems
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US10496669B2 (en) 2015-07-02 2019-12-03 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US10650024B2 (en) 2015-07-30 2020-05-12 Google Llc System and method of replicating data in a distributed system
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10423626B2 (en) 2015-09-25 2019-09-24 Mongodb, Inc. Systems and methods for data conversion and comparison
US10394822B2 (en) 2015-09-25 2019-08-27 Mongodb, Inc. Systems and methods for data conversion and comparison
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10108632B2 (en) * 2016-05-02 2018-10-23 Google Llc Splitting and moving ranges in a distributed system
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10621050B2 (en) 2016-06-27 2020-04-14 Mongodb, Inc. Method and apparatus for restoring data from snapshots
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11562023B1 (en) * 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US12013895B2 (en) 2016-09-26 2024-06-18 Splunk Inc. Processing data using containerized nodes in a containerized scalable environment
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
CN107329692B (zh) * 2017-06-07 2020-02-28 杭州宏杉科技股份有限公司 一种数据重删的方法及存储设备
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
US10248562B2 (en) 2017-06-30 2019-04-02 Microsoft Technology Licensing, Llc Cost-based garbage collection scheduling in a distributed storage environment
US10241716B2 (en) 2017-06-30 2019-03-26 Microsoft Technology Licensing, Llc Global occupancy aggregator for global garbage collection scheduling
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US12118009B2 (en) 2017-07-31 2024-10-15 Splunk Inc. Supporting query languages through distributed execution of query engines
US12248484B2 (en) 2017-07-31 2025-03-11 Splunk Inc. Reassigning processing tasks to an external storage system
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US10742593B1 (en) 2017-09-25 2020-08-11 Amazon Technologies, Inc. Hybrid content request routing system
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
CN107943421B (zh) * 2017-11-30 2021-04-20 成都华为技术有限公司 一种基于分布式存储系统的分区划分方法及装置
CN108108434A (zh) * 2017-12-19 2018-06-01 福建中金在线信息科技有限公司 一种管理数据库的方法及装置
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
US11030185B2 (en) 2018-05-07 2021-06-08 Microsoft Technology Licensing, Llc Schema-agnostic indexing of distributed databases
CN109218385B (zh) * 2018-06-28 2021-08-03 西安华为技术有限公司 处理数据的方法和装置
US11075984B1 (en) 2018-07-16 2021-07-27 Amazon Technologies, Inc. Workload management at streaming data service supporting persistent connections for reads
US10956246B1 (en) 2018-07-16 2021-03-23 Amazon Technologies, Inc. Isolated read channel management interfaces at streaming data service
US10768830B1 (en) 2018-07-16 2020-09-08 Amazon Technologies, Inc. Streaming data service with isolated read channels
US10855754B1 (en) 2018-07-16 2020-12-01 Amazon Technologies, Inc. Isolated read channel categories at streaming data service
US11070600B1 (en) 2018-07-16 2021-07-20 Amazon Technologies, Inc. Optimization techniques to support lagging readers at streaming data service
US10798140B1 (en) 2018-07-16 2020-10-06 Amazon Technologies, Inc. Stream data record reads using push-mode persistent connections
US10884820B1 (en) * 2018-08-31 2021-01-05 Veritas Technologies Llc Intelligent and automatic replication load score based load balancing and resiliency of replication appliances
CN111104057B (zh) * 2018-10-25 2022-03-29 华为技术有限公司 存储系统中的节点扩容方法和存储系统
CN111221857B (zh) * 2018-11-08 2023-04-18 华为云计算技术有限公司 从分布式系统中读数据记录的方法和装置
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11086840B2 (en) 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US10979496B2 (en) * 2019-04-08 2021-04-13 Microsoft Technology Licensing, Llc IoT partition management and load balancing
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
CN110147944B (zh) * 2019-04-30 2023-08-01 创新先进技术有限公司 排名方法及装置
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11481391B1 (en) * 2019-11-25 2022-10-25 Amazon Technologies, Inc. Query language operations using a scalable key-item data store
CN111126589B (zh) * 2019-12-31 2022-05-20 昆仑芯(北京)科技有限公司 神经网络数据处理装置、方法和电子设备
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11599516B1 (en) * 2020-06-24 2023-03-07 Amazon Technologies, Inc. Scalable metadata index for a time-series database
KR20230025019A (ko) 2020-06-28 2023-02-21 지티이 코포레이션 데이터 재배포 방법 및 장치
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
US11403023B2 (en) * 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11308066B1 (en) 2021-02-24 2022-04-19 International Business Machines Corporation Optimized database partitioning
US20220318227A1 (en) * 2021-03-30 2022-10-06 Dropbox, Inc. Content management system for a distributed key-value database
CN113297432B (zh) * 2021-06-01 2023-11-07 阿里巴巴新加坡控股有限公司 用于分区拆分与合并的方法、处理器可读介质和系统
US12072939B1 (en) 2021-07-30 2024-08-27 Splunk Inc. Federated data enrichment objects
US12093272B1 (en) 2022-04-29 2024-09-17 Splunk Inc. Retrieving data identifiers from queue for search of external data system
US12141137B1 (en) 2022-06-10 2024-11-12 Cisco Technology, Inc. Query translation for an external data system
US12229134B2 (en) 2023-04-27 2025-02-18 International Business Machines Corporation System and method for efficient query processing
US12184723B1 (en) 2023-07-26 2024-12-31 Crowdstrike, Inc. Nodal work assignments in cloud computing

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313629A (en) * 1989-10-23 1994-05-17 International Business Machines Corporation Unit of work for preserving data integrity of a data-base by creating in memory a copy of all objects which are to be processed together
US5341308A (en) * 1991-05-17 1994-08-23 Altera Corporation Methods for allocating circuit elements between circuit groups
CA2159269C (en) 1995-09-27 2000-11-21 Chaitanya K. Baru Method and apparatus for achieving uniform data distribution in a parallel database system
US5909681A (en) * 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US5761500A (en) * 1996-04-18 1998-06-02 Mci Communications Corp. Multi-site data communications network database partitioned by network elements
US5765166A (en) * 1996-04-23 1998-06-09 Raytheon Company Use of symmetric multiprocessors for multiple hypothesis tracking
US5995904A (en) * 1996-06-13 1999-11-30 Exxon Production Research Company Method for frequency domain seismic data processing on a massively parallel computer
US6014656A (en) * 1996-06-21 2000-01-11 Oracle Corporation Using overlapping partitions of data for query optimization
US5946685A (en) * 1997-06-27 1999-08-31 Sun Microsystems, Inc. Global mount mechanism used in maintaining a global name space utilizing a distributed locking mechanism
US5933834A (en) * 1997-10-16 1999-08-03 International Business Machines Incorporated System and method for re-striping a set of objects onto an exploded array of storage units in a computer system
US5987468A (en) * 1997-12-12 1999-11-16 Hitachi America Ltd. Structure and method for efficient parallel high-dimensional similarity join
US6240413B1 (en) * 1997-12-22 2001-05-29 Sun Microsystems, Inc. Fine-grained consistency mechanism for optimistic concurrency control using lock groups
US6173293B1 (en) * 1998-03-13 2001-01-09 Digital Equipment Corporation Scalable distributed file system
US6697846B1 (en) * 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6230151B1 (en) * 1998-04-16 2001-05-08 International Business Machines Corporation Parallel classification for data mining in a shared-memory multiprocessor system
US6163856A (en) * 1998-05-29 2000-12-19 Sun Microsystems, Inc. Method and apparatus for file system disaster recovery
JP4286857B2 (ja) 1998-11-18 2009-07-01 富士通株式会社 ノード間共用ファイル制御方法
US6523078B1 (en) * 1999-11-23 2003-02-18 Steeleye Technology, Inc. Distributed locking system and method for a clustered system having a distributed system for storing cluster configuration information
US7281031B1 (en) * 2000-03-22 2007-10-09 Emc Corporation Method and apparatus for providing additional resources for a host computer
US6536024B1 (en) * 2000-07-14 2003-03-18 International Business Machines Corporation Method for making integrated circuits having gated clock trees
AU2002312508B2 (en) * 2000-09-11 2008-01-17 Agami Systems, Inc. Storage system having partitioned migratable metadata
US7082102B1 (en) * 2000-10-19 2006-07-25 Bellsouth Intellectual Property Corp. Systems and methods for policy-enabled communications networks
US7165096B2 (en) * 2000-12-22 2007-01-16 Data Plow, Inc. Storage area network file system
US8195760B2 (en) * 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
US7788335B2 (en) * 2001-01-11 2010-08-31 F5 Networks, Inc. Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US20070169336A1 (en) * 2001-03-26 2007-07-26 Daniel Luch Electrically conductive patterns, antennas and methods of manufacture
US7062490B2 (en) * 2001-03-26 2006-06-13 Microsoft Corporation Serverless distributed file system
US20020184327A1 (en) * 2001-05-11 2002-12-05 Major Robert Drew System and method for partitioning address space in a proxy cache server cluster
US20030041097A1 (en) * 2001-07-11 2003-02-27 Alexander Tormasov Distributed transactional network storage system
US6687701B2 (en) * 2001-09-25 2004-02-03 Hewlett-Packard Development Company, L.P. Namespace management in a distributed file system
US7299463B2 (en) 2001-09-28 2007-11-20 Intel Corporation Method for atomically updating a plurality of files
US7035851B1 (en) * 2001-12-07 2006-04-25 Ncr Corp. Reorganization of database records using partition merging
US7406473B1 (en) * 2002-01-30 2008-07-29 Red Hat, Inc. Distributed file system using disk servers, lock servers and file servers
KR100453228B1 (ko) * 2002-03-21 2004-10-15 한국전자통신연구원 공유 디스크 파일 시스템의 저널링 및 회복 방법
US8037181B2 (en) * 2002-06-28 2011-10-11 Microsoft Corporation Re-partitioning directories
US7299239B1 (en) * 2002-12-02 2007-11-20 Oracle International Corporation Methods for partitioning an object
US7146365B2 (en) * 2003-01-27 2006-12-05 International Business Machines Corporation Method, system, and program for optimizing database query execution
US7197490B1 (en) * 2003-02-10 2007-03-27 Network Appliance, Inc. System and method for lazy-copy sub-volume load balancing in a network attached storage pool
US7222119B1 (en) * 2003-02-14 2007-05-22 Google Inc. Namespace locking scheme
CA2422161C (en) * 2003-03-14 2009-10-06 Ibm Canada Limited - Ibm Canada Limitee Decoupled object identification for object switching in database systems
EP1625510A4 (en) 2003-05-17 2008-03-12 Microsoft Corp TRANSFORMATION MECHANISM FOR MULTIPLE FILES
US7243089B2 (en) * 2003-11-25 2007-07-10 International Business Machines Corporation System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data
US7349926B2 (en) * 2004-03-30 2008-03-25 International Business Machines Corporation Atomic renaming and moving of data files while permitting lock-free look-ups
US7428588B2 (en) * 2004-04-08 2008-09-23 International Business Machines Corporation Method for distributing and geographically load balancing location aware communication device client-proxy applications
US7319997B1 (en) * 2004-06-07 2008-01-15 Ncr Corp. Dynamic partition enhanced joining
US7685128B2 (en) * 2004-06-10 2010-03-23 International Business Machines Corporation Remote access agent for caching in a SAN file system
US20050289143A1 (en) * 2004-06-23 2005-12-29 Exanet Ltd. Method for managing lock resources in a distributed storage system
US7359923B2 (en) * 2004-08-20 2008-04-15 International Business Machines Corporation Online incremental deferred integrity processing and maintenance of rolled in and rolled out data
US7650336B1 (en) * 2004-12-02 2010-01-19 Adobe Systems Incorporated File system atomic lock
KR100695395B1 (ko) 2004-12-07 2007-03-15 에스케이 텔레콤주식회사 다수개의 대용량 저장장치를 갖는 시스템에서의 컨텐츠관리 시스템
US8126870B2 (en) * 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US20060277221A1 (en) * 2005-06-01 2006-12-07 Green Hills Software, Inc. Transactional file system with client partitioning
US8661459B2 (en) 2005-06-21 2014-02-25 Microsoft Corporation Content syndication platform
US7870353B2 (en) 2005-08-15 2011-01-11 International Business Machines Corporation Copying storage units and related metadata to storage
US8166020B2 (en) * 2005-12-22 2012-04-24 Oracle International Corporation Query generator
US7801912B2 (en) 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US8554758B1 (en) * 2005-12-29 2013-10-08 Amazon Technologies, Inc. Method and apparatus for monitoring and maintaining health in a searchable data service
US7650514B2 (en) * 2005-12-30 2010-01-19 Microsoft Corporation Scalable leases
US7392335B2 (en) * 2006-02-10 2008-06-24 Oracle International Corporation Anticipatory changes to resources managed by locks
US8117153B2 (en) * 2006-03-28 2012-02-14 Oracle America, Inc. Systems and methods for a distributed cache
KR20070111263A (ko) * 2006-05-17 2007-11-21 삼성전자주식회사 재부팅 없이 영역 분할을 수행하는 장치 및 그 방법
US8255420B2 (en) * 2006-05-23 2012-08-28 Noryan Holding Corporation Distributed storage
US7512597B2 (en) * 2006-05-31 2009-03-31 International Business Machines Corporation Relational database architecture with dynamic load capability
US7624118B2 (en) * 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US7844851B2 (en) * 2006-12-13 2010-11-30 Oracle International Corporation System and method for protecting against failure through geo-redundancy in a SIP server
US7756889B2 (en) * 2007-02-16 2010-07-13 Oracle International Corporation Partitioning of nested tables
US7792822B2 (en) * 2007-03-02 2010-09-07 Microsoft Corporation Systems and methods for modeling partitioned tables as logical indexes
CN101276364B (zh) 2007-03-30 2010-12-22 阿里巴巴集团控股有限公司 一种分布式计算数据合并方法、系统及其装置
WO2008130983A1 (en) * 2007-04-16 2008-10-30 Attune Systems, Inc. File aggregation in a switched file system
CN101145158A (zh) * 2007-06-06 2008-03-19 中兴通讯股份有限公司 一种数据库表分区的方法
US8812333B2 (en) * 2007-09-17 2014-08-19 Amadeus S.A.S. Automated split ticketing
US7870174B2 (en) * 2007-10-11 2011-01-11 Oracle International Corporation Reference partitioned tables
US8392482B1 (en) * 2008-03-31 2013-03-05 Amazon Technologies, Inc. Versioning of database partition maps
US8250130B2 (en) * 2008-05-30 2012-08-21 International Business Machines Corporation Reducing bandwidth requirements for matrix multiplication
US20100082551A1 (en) * 2008-09-26 2010-04-01 Microsoft Corporation Data placement transparency for high availability and load balancing
US9996572B2 (en) 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
US8850013B2 (en) * 2010-05-10 2014-09-30 Jaron Waldman Server load balancing using geodata
US20120011176A1 (en) * 2010-07-07 2012-01-12 Nexenta Systems, Inc. Location independent scalable file and block storage

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289603B2 (en) 2012-10-12 2019-05-14 Amazon Technologies, Inc. Dynamic search partitioning

Also Published As

Publication number Publication date
WO2010048595A3 (en) 2010-07-29
JP2012507086A (ja) 2012-03-22
ZA201101659B (en) 2012-05-30
AU2009308176B2 (en) 2014-05-15
MY165932A (en) 2018-05-18
US9996572B2 (en) 2018-06-12
EP2342634A2 (en) 2011-07-13
BRPI0914183A2 (pt) 2015-10-20
RU2011116167A (ru) 2012-10-27
MX2011003883A (es) 2011-05-03
EP2342634B1 (en) 2019-12-11
KR101597384B1 (ko) 2016-02-24
CA2736586A1 (en) 2010-04-29
IL211627A (en) 2017-02-28
CN102197372A (zh) 2011-09-21
AU2009308176A1 (en) 2010-04-29
WO2010048595A2 (en) 2010-04-29
CN102197372B (zh) 2013-11-20
TW201022953A (en) 2010-06-16
EP2342634A4 (en) 2016-05-11
KR20110082529A (ko) 2011-07-19
US20100106934A1 (en) 2010-04-29
IL211627A0 (en) 2011-05-31

Similar Documents

Publication Publication Date Title
JP5607059B2 (ja) パーティション化した拡張可能で可用性の高い構造化ストレージにおけるパーティション管理
US11120152B2 (en) Dynamic quorum membership changes
US11755415B2 (en) Variable data replication for storage implementing data backup
US10229011B2 (en) Log-structured distributed storage using a single log sequence number space
US7257690B1 (en) Log-structured temporal shadow store
US9965203B1 (en) Systems and methods for implementing an enterprise-class converged compute-network-storage appliance
US10534768B2 (en) Optimized log storage for asynchronous log updates
CN109074306B (zh) 分布式存储系统中的混合垃圾收集
JP5068081B2 (ja) 管理装置および管理方法
US9460008B1 (en) Efficient garbage collection for a log-structured data store
US8108634B1 (en) Replicating a thin logical unit
CN103098015B (zh) 存储系统
US20100023564A1 (en) Synchronous replication for fault tolerance
US20240256486A1 (en) Storing a point in time coherently for a distributed storage system
AU2017203631A1 (en) Database system with database engine and separate distributed storage service
US20110252192A1 (en) Efficient flash memory-based object store
CN111078121A (zh) 一种分布式存储系统数据迁移方法、系统、及相关组件
US9031906B2 (en) Method of managing data in asymmetric cluster file system
CN113722275A (zh) 对象存储空间管理方法、装置、服务器及存储介质
CN112256204B (zh) 存储资源分配方法、装置、存储节点及存储介质
US11281396B2 (en) Storage system with a partial replica
CN119739348A (zh) 一种数据存储方法、装置、设备及存储介质
Alapati et al. Cassandra Architecture

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121015

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130712

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130719

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140729

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140827

R150 Certificate of patent or registration of utility model

Ref document number: 5607059

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250