(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-28
(54)【発明の名称】分散メッセージキューを介したキャッシュの更新
(51)【国際特許分類】
G06F 16/182 20190101AFI20230821BHJP
G06F 16/172 20190101ALI20230821BHJP
G06F 16/23 20190101ALI20230821BHJP
【FI】
G06F16/182
G06F16/172
G06F16/23
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023507346
(86)(22)【出願日】2020-08-03
(85)【翻訳文提出日】2023-03-01
(86)【国際出願番号】 US2020044705
(87)【国際公開番号】W WO2022031259
(87)【国際公開日】2022-02-10
(81)【指定国・地域】
(71)【出願人】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】ギブソン, ロバート
(72)【発明者】
【氏名】グリマルディ,ケビン カヌエッテ
(72)【発明者】
【氏名】ラッシュ, デイビッド, ジュニア.
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175CA09
(57)【要約】
いくつかの例では、第1計算装置は、第2計算装置から第1要求を受信してもよい。例えば第1計算装置は複数のデータベースノードと通信可能としてもよく、各データベースノードは複数のデータベースノードにわたって分散されるデータベースの一部を維持する。更に第1計算装置は、データベース内に維持される情報のサブセットのローカルキャッシュを維持してもよい。第1計算装置は、データベース内のデータを第1データベースノードに変更させるために、第1要求に基づく第の要求を第1データベースノードに送信してもよい。加えて第1計算装置は、複数の分散メッセージキューのメッセージキューから、データベース内のデータの変更に基づくキャッシュ更新メッセージを受信する。第1計算装置は、キャッシュ更新メッセージに基づいてローカルキャッシュを更新してもよい。
【特許請求の範囲】
【請求項1】
複数のデータベースノードと通信可能な第1計算装置を含むシステムであって、
各データベースノードは前記複数のデータベースノードにわたってデータベースを分散するために、前記データベースを区分化することに基づく前記データベースの部分を維持し、前記第1計算装置は、前記データベース内に維持される情報のサブセットのローカルキャッシュを維持し、
前記第1計算装置は、
前記第1計算装置により、第1要求を第2計算装置から受信することであって、前記第1要求は前記データベース内のデータに影響を及ぼす、受信すること、
前記第1計算装置により、前記第1要求に基づく第2要求を、前記複数のデータベースノードの第1データベースノードに送信することであって、前記第2要求は、前記第1データベースノードに前記データベース内の前記データを変更させる、送信すること、
前記第1計算装置により、複数の分散メッセージキューのメッセージキューから、前記データベース内の前記データの前記変更に基づくキャッシュ更新メッセージを受信すること、及び
前記第1計算装置により、前記キャッシュ更新メッセージに基づいて前記ローカルキャッシュを更新すること
を含む操作を実行するように実行可能命令によって構成されている、
システム。
【請求項2】
前記キャッシュ更新メッセージを受信することは、前記データベース内の前記データの前記変更として前記データベースに追加された更新されたメタデータを受信することを含み、
前記キャッシュ更新メッセージに基づいて前記ローカルキャッシュを更新することは、前記更新されたメタデータを含むように前記ローカルキャッシュを更新することを含む、
請求項1に記載のシステム。
【請求項3】
前記キャッシュ更新メッセージに基づいて前記ローカルキャッシュを更新することは、前記ローカルキャッシュの少なくとも一部を無効化することを含む、請求項1に記載のシステム。
【請求項4】
前記操作は、アドバンスメッセージキューイングプロトコルに従って前記キャッシュ更新メッセージを受信することを更に含む、請求項1に記載のシステム。
【請求項5】
前記システムは、複数のメッセージングノードを含み、前記複数の分散メッセージキューは前記複数のメッセージングノードによってそれぞれ提供される、請求項1に記載のシステム。
【請求項6】
前記第1データベースノードは、前記データベース内の前記データの前記変更のデータタイプを含むように構成され、
前記複数の分散メッセージキューの前記メッセージキューは、前記ローカルキャッシュが前記データタイプを含むと判定することに少なくとも基づき、前記第1計算装置に前記キャッシュ更新メッセージをルートするように構成されている、
請求項1に記載のシステム。
【請求項7】
前記第1計算装置は、前記第1計算装置上で第1サービスを実行し、前記第1サービスは前記ローカルキャッシュを維持し、そこにおいて、前記第1サービスは、第2計算装置が前記データベースに対応するストレージシステム内に記憶されたデータにアクセスすることを可能にする、請求項1に記載のシステム。
【請求項8】
前記第1サービスは、
ユーザウェブアプリケーション、又は
管理ウェブアプリケーション
のうちの1つである、請求項7に記載のシステム。
【請求項9】
前記第1要求は前記データベースに関連するストレージシステムにおいてデータを記憶するためのデータ書き込み要求である、請求項1に記載のシステム。
【請求項10】
前記キャッシュ更新メッセージに基づいて前記ローカルキャッシュを更新することは、前記ローカルキャッシュの少なくとも一部を無効化することを含み、前記操作は、
前記第2計算装置から第3要求を受信すること、
前記ローカルキャッシュの前記少なくとも一部が無効化されると決定すること、及び
前記第3要求に関係する前記データベースからの情報を決定するために、前記複数のデータベースノードの少なくとも1つのデータベースノードにクエリを送信すること
を更に含む、請求項1に記載のシステム。
【請求項11】
前記少なくとも1つのデータベースノードから応答を受信することに基づき、リモートストレージシステムからネットワークを介してデータを得るために別の計算装置にメタデータ情報を送信することを更に含む、請求項10に記載のシステム。
【請求項12】
方法であって、
第1計算装置により、第2計算装置から第1要求を受信することであって、前記第1計算装置は複数のデータベースノードと通信することができ、各データベースノードは、前記複数のデータベースノードにわたってデータベースを分散するために前記データベースを区分化することに基づく前記データベースの一部を維持し、前記第1計算装置は、前記データベース内に維持される情報のサブセットのローカルキャッシュを保持する、受信すること、
前記第1計算装置により、前記第1要求に基づく第2要求を、前記複数のデータベースノードの第1データベースノードに送信することであって、前記第2要求は、前記第1データベースノードに前記データベース内の前記データを変更させる、送信すること、
前記第1計算装置により、複数の分散メッセージキューのメッセージキューから、前記データベース内の前記データの前記変更に基づくキャッシュ更新メッセージを受信すること、及び
前記第1計算装置により、前記キャッシュ更新メッセージに基づいて前記ローカルキャッシュを更新すること
を含む、方法。
【請求項13】
前記キャッシュ更新メッセージを受信することは、前記データベース内の前記データの前記変更として前記データベースに追加される更新されたメタデータを受信することを含み、
前記キャッシュ更新メッセージに基づいて前記ローカルキャッシュを更新することは、前記更新されたメタデータを含むように前記ローカルキャッシュを更新することを含む、
請求項12に記載の方法。
【請求項14】
1又は複数のプロセッサによって実行されるとき、前記1又は複数のプロセッサを、
第1計算装置により、第1要求を第2計算装置から受信することであって、前記第1計算装置は複数のデータベースノードと通信することができ、各データベースノードは前記複数のデータベースノードにわたってデータベースを分散するために前記データベースを区分化することに基づく前記データベースの一部を保持し、前記第1計算装置は前記データベース内に保持される情報のサブセットのローカルキャッシュを保持する、受信すること、
前記第1計算装置により、前記複数のデータベースノードの第1データベースノードに、前記第1要求に基づく第2要求を送信することであって、前記第2要求は前記データベース内の前記データを前記第1データベースノードに変更させる、送信すること、
前記第1計算装置により、前記データベース内の前記データの前記変更に基づくキャッシュ更新メッセージを複数の分散メッセージキューのメッセージキューから受信すること、及び
前記第1計算装置により、前記キャッシュ更新メッセージに基づいて前記ローカルキャッシュを更新すること
を含む操作を実行するように構成する命令を記憶する、1又は複数の非一時的コンピュータ可読媒体。
【請求項15】
前記キャッシュ更新メッセージを受信することは、前記データベース内の前記データの前記変更として前記データベースに追加される更新されたメタデータを受信することを含み、
前記キャッシュ更新メッセージに基づいて前記ローカルキャッシュを更新することは、前記更新されたメタデータを含むように前記ローカルキャッシュを更新することを含む、
請求項14に記載の1又は複数の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データストレージの技術分野に関する。
【背景技術】
【0002】
マルチパーティションデータベースは、「ノード」とも呼ばれる複数の計算装置間でデータサービスを分けることによって水平拡張性をもたらしてもよい。例えば、データベース内のデータの高可用性及び耐故障性は、増加したデータ量及び/又は作業負荷を取り扱うためにデータベースを複数のノードにわたって複製し、必要に応じてノードの数を増やすことにより可能にされてもよい。クライアントサービスは、データベースに対応するデータを読み書きするためにデータベースノードにアクセスしてもよい。いくつかのケースでは、クライアントノードは、クライアントが正しいデータベースノードに読み取り要求及び書き込み要求をルートすることを可能にするために、データベースからのデータのサブセットであるローカルキャッシュを維持してもよい。しかし、データベースのルーティングは動的に変化したり、又はクライアントが自らのローカルキャッシュ内に古くなった情報を有することを引き起こし得る他のイベントが生じたりする可能性があり、それらはシステム資源間の一様でないタイミングの問題、遅いシステム応答時間等を引き起こし得る。
【発明の概要】
【課題を解決するための手段】
【0003】
いくつかの実装形態は、第2計算装置から第1要求を受信してもよい第1計算装置を含む。更に、第1計算装置は複数のデータベースノードと通信可能としてもよく、各データベースノードは複数のデータベースノードにわたって分散されたデータベースの一部を維持する。加えて第1計算装置は、データベースに維持される情報のサブセットのローカルキャッシュを維持してもよい。第1計算装置は、第1データベースノードにデータベース内のデータを変更させるために、第1要求に基づく第2要求を第1データベースノードに送信してもよい。加えて第1計算装置は、複数の分散メッセージキューのメッセージキューから、データベース内のデータの変更に基づくキャッシュ更新メッセージを受信する。第1計算装置は、キャッシュ更新メッセージに基づいてローカルキャッシュを更新してもよい。
【図面の簡単な説明】
【0004】
添付図面に関して詳細な説明を記載する。図中、参照番号の左端の数字はその参照番号が初めて登場する図面を識別する。異なる図面内で同じ参照番号を使用することは同様の又は同一のアイテム又は特徴を示す。
【0005】
【
図1】
図1は、いくつかの実装形態に係るローカルキャッシュの更新のためのメッセージングを採用するシステムのアーキテクチャ例を示す。
【0006】
【
図2】
図2は、いくつかの実装形態に係るシステムの論理構成例を示すブロック図である。
【0007】
【
図3】
図3は、いくつかの実装形態に係る新たなバケットを作成する一例を示すブロック図である。
【0008】
【
図4】
図4は、いくつかの実装形態に係る分散メッセージングキューを使用したローカルキャッシュの無効化の一例を示すブロック図である。
【0009】
【
図5】
図5は、いくつかの実装形態に係るローカルキャッシュの更新の一例を示すブロック図である。
【0010】
【
図6】
図6は、いくつかの実装形態に係る分散メッセージングキューを使用したローカルキャッシュの更新のためのプロセスの一例を示す流れ図である。
【0011】
【
図7】
図7は、本明細書に記載するシステムの機能の少なくとも一部を実装するために使用されてもよいサービス計算装置の選択コンポーネント例を示す。
【発明を実施するための形態】
【0012】
本明細書のいくつかの実装形態は、キャッシュ無効化メッセージを集約し、関連するターゲットに届けるために分散メッセージングキューシステムが使用される分散計算システムのための技術及び配置を対象とする。例えばこのシステムは、性能を高めスケーリング特性を改善することに有利であるように、いくつかの操作に関してクライアントサービスが僅かに古くなったデータを使用することを許容してもよい分散データベースを含んでもよい。このことは、以下で更に論じるように、とりわけ1又は複数の追加の最適化が含まれる場合、システムが、読み取り集中型の作業負荷、更には書き込み集中型の作業負荷に関するデータベース負荷を大幅に減らすことを可能にする。
【0013】
いくつかの例は、異種クラウド(及び/又は又はマルチクラウド)環境内で動作可能な革新的な分散キャッシュを含む。例えば異種クラウド環境では、様々な資源特性、例えば計算、メモリ、ネットワーク等を有する多岐にわたる分散ノードが一緒に機能してもよい。しかし、キャッシュを同期するためのchattyパブリッシャ/サブスクライバプロトコル等の標準的な同期技術はかかる環境では上手く機能することができない。従って本明細書のいくつかの実装形態は、システムのためのクライアントサービスを実装する個々のクライアントノード上の複数のローカルメモリ内キャッシュを採用する。例えばローカルキャッシュは、クライアントサービスによって使用される特定のデータベースの値をミラーリングしてもよい。加えて本明細書のシステムは、ローカルキャッシュを周期的に無効化及び/又は同期するためにアドバンストメッセージキューイングプロトコル(AMQP)を使用することによって等、メッセージブローカキューを採用してもよい。
【0014】
いくつかのケースでは、それぞれのキャッシュされたデータ要素は、データ要素が過度に古くならないように、設定可能な時間の後に失効されるように構成されてもよい。新たな値がデータベースに書き込まれるとき、各クライアントは、対応するデータアイテムが無効化されていることを無効化メッセージによって通知されてもよい。更なる最適化のために、無効化メッセージは新たなデータ値に関する情報を含んでもよい。従って本明細書のいくつかのケースでは、データベースの読み取りは、クライアントのローカルキャッシュが指定のデータアイテムのレコードを有さない場合にのみ、又はそのデータアイテムが如何なる更新値もなしに無効化された場合にのみクライアントノードによって実行される。
【0015】
本明細書のいくつかの例は、ローカルキャッシュを無効化し、分散されたローカルキャッシュの組にわたるローカルキャッシュ同期を実現するためにメッセージブローカプロトコルを使用する。更にいくつかの実装形態は、メッセージブローカキューベースの分散システム内の性能及び拡張性を改善するために、メッセージの遅延発行を採用する。例えばメッセージキューは、メッセージを届ける前のより長い期間にわたってメッセージを持続する能力によって他の一部の技術よりも本質的に損失が少ない。
【0016】
本明細書のいくつかの例では、クライアントノードは、各要求に適切なデータベースノードの個々のサブセットに自らの個々の読み取り要求及び書き込み要求をルートする。更に、データベースのルーティングは動的に変化する場合があり、そのため、たとえデータベースノード及び/又はクライアントノード上の計算資源、ネットワーク資源、及びストレージ資源が異なる可能性があってもクライアント装置は本明細書に記載の実装形態に基づいて現在のルーティング情報を保持することがあり、そのことは例えばシステム内の参加エンティティ間の一様でないタイミングの問題を引き起こし得る。従って本明細書のいくつかの例は、ローカルシステム又は固有システムに接続されたパブリッククラウドストレージ装置を含んでもよい複数の異種システムを接続する。
【0017】
本明細書の実装形態は、効率的なアクセスのためにデータベース内に記憶される情報のサブセットをローカルに記憶する複数のクライアントノードと共に、情報を記憶し供給する複数の分散データベースノードを有する拡張性のあるクラウドストレージ構成により直面されるキャッシングの問題を解決する。更に本明細書のいくつかの例は、1組のデータベースノード(いくつかの例ではメタデータゲートウェイ装置)、及びデータベースノードによって提供される分散データベースのクライアントであるクライアントノードによって実行される1組のクライアントサービスで構成される分散システムを含んでもよい。例えば、データベースノードは情報を記憶し供給してもよく、クライアントノードはデータベース内の情報にアクセスし又はかかる情報をミラーリングしてもよい。
【0018】
解説目的で、いくつかの実装例は、分散メタデータデータベースを使用してデータに対する記憶及びアクセスを管理するためのクラウドストレージシステムと通信する1又は複数のサービス計算装置の環境において記載されている。但し、本明細書の開示に照らして当業者に明らかであるように、本明細書の実装形態は提供する特定の例に限定されず、他の種類の計算システムアーキテクチャ、他の種類のデータベース、他の種類のストレージ環境、他の種類のクライアント構成、他の種類のデータ等に拡張されてもよい。
【0019】
図1は、いくつかの実装形態に係るローカルキャッシュ更新のためのメッセージングを採用するシステム100のアーキテクチャ例を示す。システム100は、1又は複数のネットワーク106等を介し、少なくとも1のネットワークストレージシステム104と通信可能な、或いはそれらに接続される複数のサービス計算装置102を含む。更にサービス計算装置102は、以下で更に論じるように様々な種類の計算装置の何れかとしてもよい1又は複数のユーザ装置108及び1つ又は複数の管理者装置110とネットワーク106上で通信することができる。
【0020】
いくつかの例では、サービス計算装置102は任意の数のやり方で具体化されてもよい1又は複数のサーバを含んでもよい。例えばサービス計算装置102のプログラム、他の機能コンポーネント、及びデータストレージの少なくとも一部は、サーバのクラスタ、サーバファーム、データセンタ、クラウドによってホストされる計算サービス等の中の少なくとも1つのサーバ上に実装されてもよいが、他のコンピュータアーキテクチャが追加で又は代替的に使用されてもよい。サービス計算装置102の更なる詳細は
図7に関して以下で論じられる。
【0021】
サービス計算装置102は、ストレージ及びデータ管理サービスをユーザ112に提供するように構成されてもよい。幾つかの非限定的な例として、ユーザ112は会社、企業、組織、政府事業体、学術的事業体等のための機能を実行し、また、いくつかの例では非常に大量のデータを記憶することを含んでもよいユーザを含んでもよい。それでもなお本明細書の実装形態は、システム100並びに本明細書に記載の他のシステム及び構成のための或る特定の使用法又は応用に限定されない。
【0022】
ネットワークストレージシステム104は、いくつかの例では「クラウドストレージ」又は「クラウドベースストレージ」と呼ぶことができ、いくつかのケースでは、サービス計算装置102において利用可能であってもよいローカルストレージよりも安価なメガバイト/ギガバイト当たりのストレージソリューションを可能にしてもよい。更にいくつかの例では、ネットワークストレージシステム104は本技術分野で知られている市販のクラウドストレージを含んでもよい一方、他の例では、ネットワークストレージシステム104は、サービス計算装置102に関連するエンティティによってのみアクセス可能なプライベート又はエンタープライズストレージシステム、又はこれらの組み合わせを含んでもよい。
【0023】
1又は複数のネットワーク106は、インターネット等の広域ネットワーク、イントラネット等のローカルエリアネットワーク(LAN)、セルラネットワーク等の無線ネットワーク、Wi-Fi等のローカル無線ネットワーク、及び/又はBLUETOOTH(登録商標)等の短距離無線通信、ファイバチャネル、光ファイバ、イーサネット、又は他の任意のかかるネットワークを含む有線ネットワーク、直接の有線接続、又はそれらのものの任意の組み合わせを含む任意の適切なネットワークを含んでもよい。従って、1又は複数のネットワーク106は有線通信技術及び/又は無線通信技術の両方を含んでもよい。そのような通信に使用されるコンポーネントはネットワークの種類、選択された環境、又はその両方に少なくとも部分的に依存し得る。かかるネットワーク上で通信するためのプロトコルはよく知られており、本明細書では詳しくは論じない。従って、サービス計算装置102、ネットワークストレージシステム104、ユーザ装置108、及び管理装置110は有線接続又は無線接続及びその組み合わせを使用する1又は複数のネットワーク106上で通信することができる。
【0024】
加えて、サービス計算装置102は1又は複数のネットワーク107上で互いに通信することが可能であってもよい。いくつかの事例では、1又は複数のネットワーク107は、LAN、プライベートネットワーク等であってもよい一方、他のケースでは、1又は複数のネットワーク107は上記で論じたネットワーク106の何れかを含んでもよい。
【0025】
各ユーザ装置108は、デスクトップ、ラップトップ、タブレット計算装置、モバイル装置、スマートフォン、ウェアラブル装置、端末、及び/又はネットワーク上でデータを送信可能な他の任意の種類の計算装置等の任意の適切な種類の計算装置であってもよい。ユーザ112は、個々のユーザアカウント、ユーザログイン資格情報等によってユーザ装置108に関連付けられてもよい。更にユーザ装置108は、1又は複数のネットワーク106によって、別個のネットワークによって、又は他の任意の適切な種類の通信接続によってサービス計算装置102と通信することができてもよい。本明細書の開示の利益を得る当業者に数多くの他の改変形態が明らかになる。
【0026】
更に各ユーザ装置108は、ネットワークストレージシステム104上に記憶するためのユーザデータを送信するために及び/又はデータ要求118によってネットワークストレージシステム104から記憶済みデータを受信するために等、1つ又は複数のサービス計算装置102上でサービスとして実行可能なユーザウェブアプリケーション116と通信する等のために、ユーザ装置108上で実行され得るユーザアプリケーション114の個々のインスタンスを含んでもよい。いくつかのケースではアプリケーション114はブラウザを含んでもよく又はブラウザを介して動作してもよい一方、他のケースではアプリケーション114は1又は複数のネットワーク106上でのユーザウェブアプリケーション116との通信を可能にする通信機能を有する他の任意の種類のアプリケーションを含んでもよい。
【0027】
システム100内で、ユーザ112は、自らの個々のユーザ装置108により通信しているサービス計算装置102にデータを記憶し、及びサービス計算装置102からデータを受信してもよい。従って、サービス計算装置102はユーザ112及び個々のユーザ装置108にストレージサービスを提供してもよい。定常状態運用中、データを読み書きするためなど、サービス計算装置102と周期的に通信するユーザ108がいる場合がある。
【0028】
加えて管理者装置110は、デスクトップ、ラップトップ、タブレット計算装置、モバイル装置、スマートフォン、ウェアラブル装置、端末、及び/又はネットワーク上でデータを送信可能な他の任意の種類の計算装置等の任意の適切な種類の計算装置としてもよい。管理者120は、個々の管理者アカウント、管理者ログイン資格情報等によって管理者装置110に関連付けられてもよい。更に管理者装置110は、1つ又は複数のネットワーク106、107によって、別個のネットワークによって、又は他の任意の適切な種類の通信接続を介してサービス計算装置102と通信可能であってもよい。
【0029】
更に各管理者装置110は、1又は複数のサービス計算装置102の上のサービスとして実行可能な管理ウェブアプリケーション124と通信するために等、管理者装置110上で実行されてもよい管理者アプリケーション122の個々のインスタンスを含んでもよい。例えば管理者120は、システム100を管理するための管理命令を送信するために、並びに管理要求126等によってネットワークストレージシステム104上に記憶するための管理データを送信するために及び/又はネットワークストレージシステム104から記憶済み管理データを取り出すために等、管理者アプリケーションを使用してもよい。いくつかのケースでは、管理者アプリケーション122はブラウザを含んでもよく又はブラウザによって動作してもよい一方、他のケースでは管理者アプリケーション122は1又は複数のネットワーク106上での管理ウェブアプリケーション124との通信を可能にする通信機能を有する他の任意の種類のアプリケーションを含んでもよい。
【0030】
サービス計算装置102は、ネットワークストレージシステム104に記憶されるデータを送信するために及びネットワークストレージシステム104から要求されたデータを取り出すために等、ネットワークストレージシステム104へのゲートウェイを提供してもよいストレージプログラム130を実行してもよい。加えてストレージプログラム130は、データ保持期間、データ保護レベル、データ複製等を管理するために等、システム100によって記憶されるデータを管理してもよい。
【0031】
サービス計算装置102は、複数のメタデータデータベース(DB)パーティション134(1)~134(N)に分割されてもよく、及び複数のサービス計算装置102にわたって分散されてもよいメタデータデータベース(DB)132を更に含んでもよい。例えば、メタデータDB132はネットワークストレージシステム104に記憶されるオブジェクトデータ136を管理するために使用されてもよい。メタデータDB132は、個々のオブジェクトに関する情報、個々のオブジェクトにどのようにアクセスするのか、オブジェクトのためのストレージ保護レベル、ストレージ保持期間、オブジェクト所有者情報、オブジェクトサイズ、オブジェクトタイプ等、オブジェクトデータ136に関する多数のメタデータを記憶してもよく、或いは含んでもよい。更にDB管理プログラム138は、新たなオブジェクトが記憶されるとき、古いオブジェクトが削除されるとき、オブジェクトが移行されるとき等にメタデータDB132を更新するために等、メタデータDB132を管理し維持してもよい。データベースパーティション134を含むサービス計算装置102はデータベースノード140と呼んでもよく、パーティション134の1又は複数に対応するデータベース132の一部をそれぞれ維持してもよい。
【0032】
加えて、サービス(
図1に示すサービスの例はユーザウェブアプリケーション116及び管理ウェブアプリケーション124を含む)をその上で実行するサービス計算装置102はクライアントノード142と呼んでもよい。各クライアントノード142は、図示の例の第1ローカルキャッシュ146(1)及び第2ローカルキャッシュ146(2)等の個々のローカルキャッシュ146(いくつかのケースでは「ニアキャッシュ」又は「ローカルビュー」とも呼ばれる)を維持してもよい。クライアントノード142は、メタデータデータベース132に対してクライアントとして動作してもよい。いくつかのケースでは、クライアントノード142はクライアントノード142上で維持されてもよいローカルキャッシュ146を更新してもよい。例えばローカルキャッシュ146はデータベース132の更新に基づいて、及び/又は以下で更に論じる他の技術によって周期的に更新されてもよい。従って一例として、ユーザウェブアプリケーション116がユーザ装置108からデータ要求118を受信すると、ユーザウェブアプリケーション116はローカルキャッシュ146(1)にアクセスしてデータ要求118を実行するために通信するためのデータベースノード140を決定してもよい。ローカルキャッシュ146(1)を使用することにより、ユーザウェブアプリケーション116はデータ要求118を実行するためにメタデータDB132から所望の情報を得るためのクエリの数を減らすことができる。
【0033】
更に、サービス計算装置102の一部又は全ては、システム100の一部として個々のサービス計算装置102を管理するために、及び本明細書のサービス計算装置102による他の機能を実行するために個々のサービス計算装置102によって実行されるノード管理プログラム148の個々のインスタンスを含んでもよい。サービス計算装置102がデータベースノード140である場合、ノード管理プログラムはデータベースノード140をパーティショングループに構成すること及びパーティショングループの操作を制御すること等のアクションを実行するために、データベースノード140の構成を更に管理してもよい。
【0034】
1つの非限定的な例として、データベースノード140は、分散メタデータデータベースのデータベースパーティション134のデータの冗長性及び一貫性を確実にするために、Raft合意アルゴリズムに従うRaftグループ内に構成されてもよい。Raftアルゴリズムに従い、各パーティショングループの1つのデータベースノード140はリーダとして選ばれてもよく、そのデータベースパーティション134に関する全ての読み取り操作及び書き込み操作をサービスすることを担ってもよい。従って、リーダノードはクライアントノード142のためのメタデータゲートウェイとして機能してもよい。他のデータベースノード140は、自らのメタデータデータベース情報を更新することを可能にするために全てのトランザクションのコピーを受信するフォロワノードである。リーダノードが故障し又はタイムアウトした場合、フォロワノードの1つはリーダとして選ばれてもよく、読み取り及び書き込みトランザクションの処理を引き継いでもよい。本明細書のメタデータシステムのクライアントノードはどのデータベースノード140が各パーティション134のリーダかを(例えば個々のローカルキャッシュ146にアクセスすること又は問い合わせを送信することによって)発見し、要求をそのデータベースノード140に導くことができる。
【0035】
従って本明細書の例は、拡張性のある高可用な分散メタデータデータベース132のための要求をルート可能なシステムを含む。本明細書のメタデータデータベース132は、別個のメタデータノード140上にメタデータの一貫性の強いコピーを維持することによって高可用性を提供してもよい。更に、分散メタデータデータベース132はメタデータを区分化し、ことなるメタデータノード140にわたってメタデータを分散させることによって、拡張性を提供する。更に本明細書の解決策は、クライアントアプリケーションが所与の要求に関するパーティションリーダを見つける能力を最適化する。
【0036】
効率的なやり方でローカルキャッシュの更新を可能にするために、サービス計算装置102の少なくとも部がメッセージングプログラム150を実行してもよい。例えばメッセージングプログラム150は、データベースデータ、データベース構成等の変化後にローカルキュー146を更新するためのキャッシュ更新メッセージ152の作成を可能にしてもよい。いくつかの例では、本明細書で採用されたメッセージングプログラムは、アドバンストメッセージキューイングプロトコル(AMQP)、ストリーミングテキスト指向メッセージングプロトコル(STOMP)、メッセージキューイングテレメトリトランスポート(MQTT)、及び/又は他の適切なメッセージングプロトコルのうちの1又は複数を実装するメッセージブローカプログラムを含んでもよい。いくつかの実装形態で使用されてもよいソフトウェアの幾つかの非限定的な例は、APACHE QPID、JORAM、APACHE ACTIVEMQ、及びRABBITMQを含む。例えばAMQPは異なるプラットフォーム上のアプリケーションを接続可能な標準プロトコルである。
【0037】
いくつかの状況では、ローカルキャッシュ146内のアイテムは、タイムアウトによる失効により、或いは値が更新されていることを示すメッセージの受信時に無効になり得る。無効なアイテムはクライアントノード142によって、例えば個々のクライアントノード142上で実行される個々のサービスによって、ローカルキャッシュ146から効果的に除去されてもよい。例えばクライアントノード上で実行される各サービスは、個々のサービスによって使用され得る及び受信されたキャッシュ更新メッセージ152に基づいてサービスによって更新され得る自らのローカルキャッシュ146を維持してもよい。
【0038】
いくつかの例では、データベース132内でデータのアイテムの値が変更されるとき、その変更に関する情報を有するメタデータノード140からの命令に基づいて等、AMQPメッセージングプロトコルを使用して変更の通知を提供するキャッシュ無効化メッセージ152は即座に発行されてもよい。データベース132の更新及びキャッシュ更新メッセージ152の生成はインラインで実行されてもよく、例えばキャッシュ更新メッセージ152はデータベースに更新が行われた直後に生成してもよいが、データベースの更新及びキャッシュ更新メッセージ152の生成は互いに対して非同期的に行われてもよい。
【0039】
クライアントノード142は、自らの個々のローカルキャッシュ146のキャッシュの種類に関連するデータ変更イベントを示すキャッシュ更新メッセージ152を聞くように構成されてもよい。例えばクライアントノード142によって実行される様々な種類のサービスに関して等、異なるデータタイプの様々な種類のローカルキャッシュ146があってもよい。キャッシュ更新メッセージ152は異なるキャッシュの種類ごとに別々にルートされてもよく、そのため特定のキャッシュ更新メッセージ152が関係するキャッシュの種類と異なるキャッシュの種類を有するクライアントノード142は自らが使用することのないデータを処理する必要がない。加えて(適切な種類の)全てのローカルキャッシュインスタンスは、データアイテムが無効であることを示す、そのデータタイプに関するキャッシュ更新メッセージ152を受信する。
【0040】
いくつかの例では、データベースノード140、クライアントノード142、又は本明細書の他の計算ノード等のノードは、本明細書に記載のプログラム、サービス、又はデータの1又は複数を維持してもよい単一の物理マシン又は仮想マシンであってもよい。例えばメタデータゲートウェイ並びにクライアントサービスの論理コンポーネントの全ては、システム100内の任意の物理サービス計算装置102上で実行されてもよい。分散メタデータデータベース132は動的パーティショニングを使用してもよく、動的パーティショニングでは、個々のメタデータノード140によって記憶されるデータはデータベース132のデータを複数のメタデータノード140にわたって分散させるために1組の管理可能なチャンク(パーティション134)に区分化されてもよい。パーティション134が大きくなるにつれ、システムはパーティション134を動的に分割して2つ以上の新たなパーティションを形成してもよく、新たなパーティションを受信するのに十分な記憶容量を有するメタデータノード140に、及び/又は新たに追加されたメタデータノード140に新たなパーティションを移行することができる。
【0041】
データの増大に対処するために等、新たなメタデータノード140がシステム100に追加されるとき、システム100内の通信は遅くなり得る。例えばローカルキャッシュ146内に含まれる情報の少なくとも一部は無効になり得る。同様に、クライアントサービスノードは、新たなクライアントノード142を追加することにより、入ってくる作業負荷と一致するようにスケーリングしてもよい。上記で述べたように、クライアントノード142は、メタデータデータベースノード内に記憶された情報のサブセットをミラーリングするメモリ内キャッシュである1又は複数のローカルキャッシュ146をそれぞれ維持してもよい。ローカルキャッシュ146は、データベースクエリの必要性及び頻度を大幅に減らすことによってシステム効率を高めてもよい。例えば高度に分散されたシステムでは、(例えば要求されるデータがハードディスク等の永続的媒体内に記憶される場合)データベースクエリを直接もたらすクライアントノードからの不断のアクセスは高価である場合があり、システムレイテンシを高め得る。
【0042】
いくつかのケースでは、分散データベース132内のデータはユーザ要求によって更新されてもよく、更新は特定のデータベースノード140上でのみ行われ得る。その結果、更新されたデータのミラーが1又は複数のクライアントノード142のローカルキャッシュ146内に存在する場合、そのデータは陳腐化し又は無効になる。従って本明細書のいくつかの例は、分散無効化スキームを使用してローカルキャッシュ146内のデータを非同期的にリフレッシュし続けてもよい。一例として、サービスはローカルキャッシュ146内のデータを無効として周期的にマーク付けしてもよい。そのデータに関する新たな要求が到着すると、サービスはデータベース132内の最新の値についてデータベース132をクエリを実行することによってローカルキャッシュ146を更新してもよい。
【0043】
ローカルキャッシュ146を無効化し更新するためのアルゴリズムの一例は以下を含む。(1)各クライアントノード142は、クライアントノード142がデータベース132から必要に応じて過去に取り出したデータのローカルキャッシュ146を維持する。(2)クライアントノード142は、クライアントノード142上で実行される1又は複数のサービスによって使用するため等、それぞれが異なる種類のデータを保ち異なる最適化されたパラメータを用いて構成された複数のローカルキャッシュ146を有してもよい。(3)ローカルキャッシュ146内のそれぞれのデータのアイテムは設定可能な時間の後で失効してもよい。例えば失効時間は、データベースアクセスを最小化する一方で、更にはローカルキャッシュ146内のデータが古くなり過ぎるのを防ぐように選んでもよい。(4)データベース132内でデータのアイテムの値が変更されるとき、AMQP等のメッセージングプロトコルを使用してその変更を公示するキャッシュ更新メッセージ152は、直ちに生成され発行されてもよい。データベース132内の更新及びメッセージの生成は、インラインで実行されてもよい。(5)各サービスは、サービスによって使用されるキャッシュの個々の種類に関するデータ変更イベントを示すキャッシュ更新メッセージ152を聞く。いくつかの例では、キャッシュ更新メッセージ152はキャッシュの種類ごとに別々にルートされてもよく、そのためクライアントノード142及びローカルキャッシュを管理するサービスは、自らが使用することのないデータを処理する必要がない。(6)(指定された種類の)全てのローカルキャッシュインスタンスは、データアイテムが無効であることを示す、そのデータタイプに関するキャッシュ更新メッセージ152を受信する。(7)アイテムはタイムアウトの失効、又はアイテムの値が更新されていることを示すキャッシュ更新メッセージ152の受信時の少なくとも1つによって無効になってもよい。無効なアイテムは、削除されているものとしてアイテムにマーク付けすることによって、或いはアイテムの記憶位置がそのうち上書きされることを許容することによって等、ローカルキャッシュから効果的に除去される。(8)クライアントがデータアイテムにアクセスする必要がある場合、キャッシュは自らが記憶した任意の値を直ちに返す。記憶済みの値がない場合、又はその値が無効化されている場合、ローカルキャッシュ146を管理するプログラムはデータベース132に現在の値を要求してもよい。(9)キャッシュ更新メッセージ152は「生存時間」の値を用いて構成されてもよく、そのためその有用寿命を過ぎて存続することはない。例えばローカルキャッシュ146内のアイテムは一定時間後に自動で失効されてもよい。(10)更なる最適化として、いくつかの例ではキャッシュ更新メッセージ152は、更新された値に関する部分的な又は完全な値を含んでもよい。このことは複数のクライアントノードが値を同時に更新し得る可能性を高める。その場合、分散ティックカウンタは、どの値が最新かを識別するために個々のローカルキャッシュ146を管理するプログラムによって使用されてもよい。この最適化は、書き込みの激しい作業負荷についてデータベースの負荷を一層減らすことができる。
【0044】
上記で論じたアーキテクチャ及びアルゴリズムによりクライアントノード142によるデータベース132へのアクセス量は、読み取りの激しい作業負荷について大幅に減らされ得る。更にシステム100は、ローカルキャッシュ146が閾値を超えて古くなることを防ぐ失効閾値を用いて構成されてもよい。別個の失効閾値は、異なる種類のローカルキャッシュ146ごとに、及び/又は異なるクライアントノード142上の同種の個々のローカルキャッシュについて設定されてもよい。例えばローカルキャッシュ146は、メモリ使用の制限を強制するために最も長い間参照されていない(least-recently-used)データを失効させるように構成されてもよい。
【0045】
更に、ローカルキャッシュ146は内部イベントによって更新されてもよい。例えばローカルキャッシュ146は、何兆個ものメタデータ片へと増大し得るユーザオブジェクトメタデータを除き、全てのシステムメタデータを記憶するように構成されてもよい。この場合、ローカルキャッシュ146内にミラーリングされるシステムメタデータは、メタデータパーティションマップ等のユーザ主導型又は内部システムメタデータであってもよい。メタデータパーティションマップは、パーティション識別子(ID)及び個々のパーティションがあるデータベースノード140のIDを含むテーブル又は他のデータ構造である。putObject要求及びgetObject要求等のオブジェクト管理に関係する全てのユーザ要求は、サービス(例えばユーザウェブアプリケーション116)に、ユーザ情報、バケット情報、パーティション情報、及びオブジェクト情報等の少なくとも4つの異なるメタデータの種類を探索させてもよい。従っていくつかのケースでは、単一のユーザ要求によって全4種類のメタデータがリフレッシュされ得ることが可能である。かかる状況を回避するために、本明細書のいくつかの例は全てのメタデータの種類及びテーブルをパーティション134に分割することを含む動的メタデータパーティショニング技術を採用してもよい。均一な負荷の管理を提供するために、パーティション134はデータベースノード140にわたって分散される。メタデータパーティションが2つ以上のパーティションに分割される場合、パーティションマップの無効化が起こってもよい。パーティションの分割はユーザ要求によって駆動されない可能性があるが、無効化及び更なるリフレッシュ手続きは上記で論じたputObject要求及びgetObject要求等のユーザ操作から生じるリフレッシュと同様であってもよい。
【0046】
更に、エンドユーザのためのより優れた応答時間を実現するために、本明細書のキャッシュの更新はユーザの書き込み要求に対して非同期的に行われてもよい。従って、小さな遅延であって、その前にクライアントノード上でシステム100にわたって分散されるサービスのローカルキャッシュ146が無効化され或いは更新される、小さな遅延があってもよい。例えばローカルキャッシュ146を無効化し或いは更新するための実際の時間は、ネットワーク及びシステムの活動に基づいて不定であってもよい。キャッシュ更新メッセージ152を配信前にキューに並べられるので、本明細書で使用されてもよいAMQPメッセージングプロトコルは本質的にロバストである。従って、キャッシュ更新メッセージ152は複数のデータベースの更新にわたって集約されてもよい。例えば、バケット、ユーザ、及びパーティションマップの更新が全て発生し、同時にキューに並べられると仮定すると、クライアントノード142上の個々のサービスにキャッシュ更新メッセージ152が1つしか実際に送信されない可能性がある。それでもなお、一時的なネットワーク障害によって等、AMQPを介してのキャッシュ更新メッセージ152はいくつかの状況で依然として失われることがある。従って、本明細書の実装形態は特定の試行閾値までメッセージの配信を再試行するためのメカニズムを含んでもよい。
【0047】
更に、キューからのキャッシュ更新メッセージ152の配信が失敗する場合、ローカルキャッシュ146は時間閾値が超過することに基づいて無効化又は他のキャッシュの更新を行ってもよい。例えば所与のキャッシュ値に関する前回の更新が一定のタイムアウト値を超える場合、ローカルキャッシュ146はそのエントリを自動で無効化するように構成されてもよい。本明細書の無効化に採用されたタイムアウト閾値は、システム作業負荷のダイナミクス等に基づいて調節されてもよいように構成されてもよい。
【0048】
いくつかのケースでは、サービス計算装置102はサイト154において1又は複数のグループ、クラスタ、システム等に配置されてもよい。いくつかのケースでは、データの複製、災害回復保護等を提供するために、複数のサイト154は互いに地理的に分散されてもよい。更にいくつかのケースでは、複数のサイト154の連合を提供するために等、複数の異なるサイト154のサービス計算装置102は互いに安全に通信するように構成されてもよい。
【0049】
図2は、いくつかの実装形態に係るシステム200の論理構成例を示すブロック図である。いくつかの例では、本明細書の開示の利益を得る当業者に明らかであるように、システム200は、上記で論じたシステム100又は他の様々な可能な計算システムアーキテクチャの何れかに対応してもよい。システム200は、分散オブジェクトストレージを可能にしてもよく、ユーザ及び管理者用のフロントエンドサービスとしてウェブアプリケーションを使用することを含んでもよい。いくつかのケースでは、システム200はエンドユーザ112、120によって作成されてもよいバケット内にネットワークストレージ(
図2には不図示)上のオブジェクトを記憶してもよい。システム200は、オンプレミス及びクラウドシステムにわたって分散される資源を使用してデータの複雑な管理及び記憶を可能にしてもよい。システム200内で、拡張性は、分散データベース132内に記憶される記憶されたメタデータを論理的に区分化することによって提供されてもよい。
【0050】
図2のシステム200は、システムの性能及び拡張特性を改善することができる、いくつかの操作に関してクライアントノード142が古くなったキャッシュデータを使用することを許容し得るクライアントノード142及びデータベースノード140の分散システムを含んでもよい。これは、読み取り集中型のデータベースの負荷、いくつかの例では書き込み集中型のデータベースの作業負荷も減らすことをもたらす。例えば分散データベース132に新たな値が書き込まれたとき、個々のローカルキャッシュ146を有する個々のクライアントノード142は、対応するデータアイテムが無効化されていることを示すキャッシュ更新メッセージ152を受信してもよい。更なる最適化のために、キャッシュ更新メッセージ152は新たなデータ値に関する情報を含んでもよい。更に、データベースの読み取りは、ローカルキャッシュ146がデータアイテムのレコードを有さない場合、又はそのデータアイテムが如何なる更新値もなしに無効になった場合、実行されてもよい。
【0051】
この例では、システム200は、キャッシュ更新メッセージ152をキューに並べ、クライアントノード142上で実行するサービスにルートするためのメッセージングキューグリッド202を組み込む。例えばメッセージングキューグリッド202は
図1に関して上記で論じられたメッセージングプログラム150によって提供されてもよく、1又は複数のメッセージングノード204上にホストされてもよい。メッセージングノード204は、上記で論じたサービス計算装置102の1又は複数に対応してもよく、メッセージングプログラム150を実行してもよい。いくつかのケースでは、メッセージングプログラム150はデータベースノード140として機能する同じサービス計算装置102上で、及び/又はクライアントノード142として機能するサービス計算装置102上で、及び/又は
図1に関して上記で論じられたシステム100内の他のサービス計算装置102上で実行されてもよい。メッセージングキューグリッド202は、メッセージキュー208(1)、メッセージキュー208(2)、及びメッセージキュー208(3)等の複数のメッセージキューを含んでもよく、それらのそれぞれはDOCKERコンテナ等の別個の仮想コンテナ内に維持されてもよい。いくつかの例では、メッセージキュー208(1)~208(3)は別個の物理マシン又は仮想マシン上に維持されてもよい。
【0052】
この例では、分散データベース132は複数のメタデータゲートウェイ210を含んでもよく、それらはデータベースノード140に対応してもよい。例えば上記で論じたように、いくつかの例では各データベースパーティション134は2以上のデータベースノード140のパーティショングループによって維持されてもよい。各パーティショングループは、その個々のパーティション134に対するユーザの読み取り要求及び書き込み要求に応答するリーダノードを有してもよい。従って各パーティショングループのパーティションリーダは、そのパーティション134のためのメタデータゲートウェイ210として機能してもよい。この例では。4つのメタデータゲートウェイ210(1)~210(4)は説明目的で示されるが、実際の実装では本明細書のシステムのいくつかの例はデータベースパーティション134の数に応じてはるかに多い数のメタデータゲートウェイ210を含んでもよい。
【0053】
メッセージキュー208は、クライアントノード142上で実行するサービスにキャッシュ更新メッセージ152を届けるように構成される。この例では、第1サービスプログラム212は、ユーザ装置108にデータアクセスサービスを提供してもよい上記で論じたユーザウェブアプリケーション116に対応してもよい。例えば第1サービスプログラム212は、メタデータゲートウェイ210にアクセスするために使用されてもよい情報を含むローカルキャッシュ146(1)を維持してもよい。例えば第1サービスプログラム212は、メタデータを取り出すためにクライアントノード142(1)がメタデータゲートウェイ210と対話することを可能にするためのクライアント機能を提供してもよい。加えて第1サービスプログラム212は、関連するローカルキャッシュ146(1)を更新するためにキャッシュ更新メッセージ152を受信するための機能を提供してもよい。更に第1サービスプログラム212は、
図1に関して上記で論じたように取り出したメタデータ及び/又はローカルキャッシュ146(1)内に維持されたメタデータに基づいてオブジェクトデータ136を取り出すために等、ストレージプログラム130(
図2には不図示)と対話してもよい。更に第1サービスプログラム212は、ユーザデータを送信し又は受信するため等に、ユーザ装置108と通信214を交換してもよい。
【0054】
この例では、第2クライアントノード142(2)も第1サービスプログラム212のインスタンスを実行してもよく、ローカルキャッシュ146(2)を維持してもよく、別のユーザ装置108と通信216を交換してもよい。加えてこの例では、第3クライアントノード142(3)は2つのサービス、つまり第2サービスプログラム218及び第3サービスプログラム220を実行する。例えば第2サービスプログラムは、管理者に管理サービスを提供する
図1に関して上記で論じられた管理ウェブアプリケーション124に対応してもよい。例えば第2サービスプログラム218は、クライアントノード142、メッセージングノード204、及び/又はデータベースノード140を含むシステム200内の他のノードと対話するためのクライアント機能を含んでもよい。第2サービスプログラム218は、管理命令を受信するため、状態の更新を提供するため等に、管理者装置110と通信222を交換してもよい。第2サービスプログラム218は、一部の例ではローカルキャッシュ146(1)及び146(2)内に保持されるデータタイプと異なる1又は複数のデータタイプを含むローカルキャッシュ146(3)を維持してもよく、又はその逆もまた同様である。
【0055】
加えて第3サービスプログラム220は、第1サービスドプログラム212及び第2サービスプログラム218によって提供されるサービスと異なる別の種類のサービスを提供してもよい。幾つかの非限定的な例として、第3サービスはガベージコレクション、オブジェクトデータ管理等を含んでもよい。第3サービスプログラム220は、管理命令を受信するために、状態の更新を提供するために等、管理者装置110と通信224を交換してもよい。第3サービスプログラム220は、一部の例ではローカルキャッシュ146(1)、146(2)、及び146(3)によって保持されるデータタイプと異なる1つ又は複数のデータタイプを含んでもよいローカルキャッシュ146(4)を維持してもよく、又はその逆もまた同様である。
【0056】
メタデータゲートウェイ210が分散データベース132内のデータのアイテムの値を変更するとき、或いはデータベース132に変更を加えるとき、メタデータゲートウェイ210はエンキュー命令230を送信してもよく、エンキュー命令は、メッセージキュー208の1つへの変更された値に関する情報を含んでもよい。いくつかの例では、メッセージキュー208はランダムに選択されてもよいが、代わりに他の選択技術が使用されてもよい。
【0057】
エンキュー命令を受信することは、個々のメッセージングノード204におけるメッセージングプログラム150を、キャッシュ更新メッセージ152を生成し、キャッシュ更新メッセージ152を個々のメッセージキュー208に追加するようにしてもよい。例えばキャッシュ更新メッセージ152はAMQPメッセージングプロトコルに従って、生成され、キューに並べられ、分散されてもよい。上記で述べたように、キャッシュ更新メッセージ152はクライアントノード142上で実行する個々のサービスプログラム212、218、220に知らせ或いはルートされてもよい。
【0058】
一例としてキャッシュ更新メッセージ152は、異なる種類のローカルキャッシュ146ごとに、そこに含まれるデータタイプ及びデータベース132の更新の影響を受けるデータタイプに応じて別々にルートされてもよい。例えばローカルキャッシュ146(1)及び146(2)は更新に対応する1又は複数のデータタイプを有し、ローカルキャッシュ146(3)及び146(4)がそれらの1又は複数のデータタイプを含まない場合、第1サービスプログラム112に宛てられるキャッシュ更新メッセージ152は、変更の影響を受けるデータタイプの識別に基づいて第2サービスプログラム218又は第3サービスプログラム220にルートされず、かかる識別の指示は例えばデータベース132の変更を行ったメタデータゲートウェイ210によって提供されてもよい。従って、そのキャッシュがデータベース132の変更によって影響されないサービスプログラムは、自らの個々のローカルキャッシュ146に関連しないキャッシュ更新メッセージ152を受信しない又は処理しなくてもよい。
【0059】
図3~
図5は、データベース132内に新たなバケットを作成すること、自らのローカルキャッシュ内にバケット情報を含む幾つかのサービスの既存のローカルキャッシュ146をデータベースの変更によって無効化すること、及び更新されたデータベース情報を含むように幾つかのローカルキャッシュを後に更新することの一例を示す。
図3~
図5の例は、上記で論じた
図2のシステム200の例に部分的に対応してもよいが、解説図を明瞭にするためにクライアントノード142(2)は省かれている。関与していない他のコンポーネントも除外されている。
【0060】
図3は、いくつかの実装形態に係る新たなバケットを作成する一例300を示すブロック図である。この例では、ネットワークストレージシステム104(
図3には不図示)において新たなバケットの作成を引き起こすために、ユーザ装置108のユーザ112は書き込み要求302を送信すると仮定する。第1サービスプログラム212は書き込み要求302を受信してもよく、それに応答してローカルキャッシュ146(1)内に現在含まれているルーティング情報に基づいて等、書き込み要求303をメタデータゲートウェイ210(3)に送信してもよい。それに応答し、メタデータゲートウェイ210(3)は新たなバケットのための新たなレコード304を作成することによって等、データベース132内のメタデータを更新してもよい。この例では、レコード304はバケットの名前306(即ち「バケット1」)、並びに30日の保存期間及び同期設定を含むバケットの設定308を含むと仮定する。バケットは、ネットワークストレージシステム104(
図3には不図示)において作成されてもよい。メタデータゲートウェイ210(3)は、第1サービスプログラム212に書き込み応答310を返す。それを受けて、第1サービスプログラム212はバケットが作成されていることを示す書き込み応答312をユーザ装置108に返す。
【0061】
図4は、いくつかの実装形態に係る分散メッセージングキューを使用してローカルキャッシュを無効化する一例400を示すブロック図である。この例では、
図3に関して上記で論じたような新たなバケットの作成に関連し、メタデータゲートウェイ210(3)はメッセージキューの1つ、即ちこの例ではメッセージキュー208(2)を含むメッセージングノード204の1つにエンキュー命令402を送信してもよい。上記で述べたように、いくつかの例ではメッセージキュー208(2)及び/又はメッセージングノード204はメタデータゲートウェイ210(3)によってランダムに選択されてもよい。他の例では、メタデータゲートウェイ210(3)は、エンキュー命令402を受信するためのメッセージキュー208(2)/メッセージングノード204の1つを選択するための他の任意の適切な技術を採用してもよい。いくつかの例では、メタデータゲートウェイ210(3)はエンキュー命令402と共にデータベース内で作成されたレコード304を含んでもよいが、この例では、メタデータゲートウェイ210(3)はデータベースに加えられた変更の影響を受けるメタデータレコードのデータタイプ(即ちバケット)を単に識別すると仮定する。
【0062】
エンキュー命令402を受信することに基づき、メッセージングノード204は、バケット情報を有するローカルキャッシュを維持するサービスに送信するためのキャッシュ更新メッセージ152を作成してもよい。この例では、第1サービスプログラム212、第2サービスプログラム218、及び第3サービスプログラム220の全ては自らのローカルキャッシュ146(1)、146(3)、及び146(4)の中にバケット情報をそれぞれ含むと仮定する。メッセージングノード204はメッセージキュー208にキャッシュ更新メッセージ152を追加してもよく、2つ、サービスにキャッシュ更新メッセージ152を分散する。例えばメッセージングノードは、キャッシュ更新メッセージ152を正しくルートするために、サービスのそれぞれによって維持されるローカルキャッシュの種類を決定してもよい。従ってメッセージングノード204は、メッセージキュー208-2を使用して第1サービスプログラム212、第2サービスプログラム218、及び第3サービスプログラム220にキャッシュ更新メッセージ152を届けてもよい。それに応答し、第1サービスプログラム212はローカルキャッシュ146(1)のバケット部分を無効化し或いは更新してもよく、第2サービスプログラム218はローカルキャッシュ146(3)のバケット部分を無効化し或いは更新してもよく、第3サービスプログラム220はローカルキャッシュ146(4)のバケット部分を無効化し或いは更新してもよい。
【0063】
図5は、いくつかの実装形態に係るローカルキャッシュを更新する一例500を示すブロック図である。この例では、ユーザ112はユーザ装置を使用して第1サービスプログラム212にget bucket要求502を提出すると仮定する。それに応答し、第1サービスプログラム212はローカルキャッシュ146のバケット部分が無効化されていると判定し、バケット情報のためのget bucket要求504を送信する。それに応答し、メタデータゲートウェイ210(3)は、第1サービスプログラム212によってローカルキャッシュ146(1)に追加されてもよいデータベース132からのレコード304のコピーを含むget bucket応答506を提供してもよい。
【0064】
同様に、管理者120は管理者装置110を使用して第3サービスプログラム220にget object要求508を送信すると仮定する。第3サービスプログラム220は、要求されたオブジェクトを含むバケット(バケット1)に関係する情報を要求するためにメタデータゲートウェイ210(3)をクエリするためのget bucket要求510を送信してもよい。それに応答し、メタデータゲートウェイ210(3)は第3サービスプログラム220にget bucket応答512を送信することができる、第3サービスプログラム220はローカルキャッシュ146(4)のバケット部分をリフレッシュするためにローカルキャッシュ146(4)に追加することができるメタデータレコード304のコピーを含んでもよい。
【0065】
更に、この例ではサービスがクエリされる、データベース132から新たなバケットの更新された情報を得るための要求されたメタデータゲートウェイだが、他の例では、上記で述べたように、レコード304は、関連するローカルキャッシュ146を無効化するためにサービスに前に送信されたキャッシュ更新メッセージ152内に含められていてもよい。従ってこの代替例では、バケットレコード304のために第1サービス212及び第3サービス220がメタデータゲートウェイ210をクエリする必要はなく、それはその情報は個々のローカルキャッシュ146(1)及び146(4)内に既に含まれているからである。
【0066】
図6は、いくつかの実装形態に係る分散メッセージングキューを使用してローカルキャッシュを更新するためのプロセス例を示す流れ図である。このプロセスは論理流れ図の中のブロックの集合として示すことができ、流れ図は、一連の操作を表し、その一部又は全てはハードウェア、ソフトウェア、又はその組み合わせによって実装されてもよい。ソフトウェアの文脈において、ブロックは、1又は複数のプロセッサによって実行されるとき、列挙される操作を実行するようにプロセッサをプログラムする1又は複数のコンピュータ可読媒体上に記憶されるコンピュータ実行可能命令を表してもよい。概してコンピュータ実行可能命令は、特定の機能を実行し又は特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。ブロックが記載された順序は限定として解釈すべきではない。記載するブロックの任意の個数は、このプロセス又は代替的プロセスを実装するために任意の順序で及び/又は並列に組み合わせることができ、ブロックの全てを実行しなければならないわけではない。本明細書の例の中で記載される環境、枠組み、及びシステムに関してプロセスを解説目的で説明するが、このプロセスは多岐にわたる他の環境、枠組み、及びシステム内で実装されてもよい。
図6では、プロセス600はサービスプログラム212、218、又は220の1又は複数を実行しているクライアントノードによって少なくとも部分的に実行されてもよい。
【0067】
602で、サービス計算装置は、複数のデータベースノードにわたって分散される複数のパーティションを提供するために、複数のデータベースノードにわたってデータベースを区分化してもよい。
【0068】
604で、クライアントノードはサービスを実行してもよく、サービスはデータベース内に維持される情報のサブセットのローカルキャッシュを維持する。
【0069】
606で、クライアントノードは第1要求をユーザ計算装置から受信してもよく、第1要求はデータベース内のデータに影響を及ぼす。例えばクライアントノードは、データベース内のデータを変更する書き込み要求又は他の要求を受信してもよい。
【0070】
608で、クライアントノードは複数のデータベースノードの第1データベースノードに、第1要求に基づく第2要求を送信してもよく、第2要求は第1データベースノードにデータベース内のデータを変更させる。
【0071】
610で、クライアントノードは、複数の分散メッセージキューのメッセージキューから、データベース内のデータの変更に基づくキャッシュ更新メッセージを受信してもよい。
【0072】
612で、クライアントノードは、受信したキャッシュ更新メッセージが更新されたデータを含んでいたかどうかを判定してもよい。含んでいた場合、このプロセスは614に進む。含んでいなかった場合、このプロセスは616に進む。
【0073】
614で、クライアントノードは、キャッシュ更新メッセージ内に含まれる更新されたデータを含むようにローカルキャッシュを更新してもよい。
【0074】
616で、クライアントノードは、キャッシュ更新メッセージに応答してローカルキャッシュの少なくとも一部を無効化してもよい。
【0075】
618で、クライアントノードは、データベース内のデータに対応するデータにアクセスするための第3要求をユーザ計算装置から受信してもよい。
【0076】
620で、クライアントノードは、第3要求に関係するデータベースからの情報を決定するために、複数のデータベースノードの少なくとも1つのデータベースノードにクエリを送信してもよい。
【0077】
622で、クライアントノードは、データベースノードから受信されたクエリに対する応答に少なくとも部分的に基づいてローカルキャッシュを更新してもよい。
【0078】
本明細書に記載したプロセスの例は解説目的で示したプロセスの例に過ぎない。本明細書の開示に照らして数多くの他の改変形態が当業者に明らかになる。更に、本明細書の開示はプロセスを実行するのに適した枠組み、アーキテクチャ、及び環境のいくつかの例を記載したが、本明細書の実装形態は図示し解説した具体例に限定されない。更に、本開示は記載し図中に示した様々な実装例を提供する。但し本開示は、本明細書に記載し示した実装形態に限定されず、当業者に知られる又は当業者に知られることになる他の実装形態に及び得る。
【0079】
図7は、本明細書に記載したシステムの機能の少なくとも一部を実装するために使用されてもよいサービス計算装置102の選択されたコンポーネント例を示す。サービス計算装置102は、任意の数のやり方で具体化され得る1若しくは複数のサーバ又は他の種類の計算装置を含んでもよい。例えばサーバの場合、プログラム、他の機能コンポーネント、及びデータは単一のサーバ、サーバのクラスタ、サーバファーム、又はデータセンタ、クラウドによってホストされる計算サービス等の上に実装されてもよいが、他のコンピュータアーキテクチャを追加で又は代わりに使用してもよい。複数のサービス計算装置102は一緒に又は別々に位置し、例えば仮想サーバ、サーババンク、及び/又はサーバファームとして組織化されてもよい。記載した機能は単一のエンティティ若しくは企業のサーバによって提供されてもよく、又は複数の異なるエンティティ若しくは企業のサーバ及び/又はサービスによって提供されてもよい。
【0080】
図示の例では、サービス計算装置102は、1又は複数のプロセッサ702、1又は複数のコンピュータ可読媒体704、及び1又は複数の通信インタフェース706を含み又はそれらに関連付けられてもよい。各プロセッサ702は単一の処理ユニット又はいくつかの処理ユニットであってもよく、単一の若しくは複数の計算ユニット又は複数の処理コアを含んでもよい。プロセッサ702は、1又は複数の中央処理装置、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシーン、論理回路、及び/又は動作命令に基づいて信号を操作する任意の装置として実装することができる。一例としてプロセッサ702は、本明細書に記載したアルゴリズム及びプロセスを実行するように特にプログラムされ又は構成された任意の適切な種類の1又は複数のハードウェアプロセッサ及び/又は論理回路を含んでもよい。プロセッサ702は、コンピュータ可読媒体704内に記憶されるコンピュータ可読命令を取り出して実行するように構成してもよく、それは、本明細書に記載した機能を実行するようにプロセッサ702をプログラムしてもよい。
【0081】
コンピュータ可読媒体704は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータ等の情報を記憶するための任意の種類の技術に実装された揮発性メモリ及び不揮発性メモリ、及び/又は取外し可能媒体及び取外し不能媒体を含んでもよい。例えばコンピュータ可読媒体704は、これだけに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、光学ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、ストレージアレイ、ネットワーク接続ストレージ、ストレージエリアネットワーク、クラウドストレージ、又は所望の情報を記憶するために使用することができ計算装置によってアクセス可能な他の任意の媒体を含んでもよい。サービス計算装置102の構成にもよるが、コンピュータ可読媒体704は、言及するとき非一時的コンピュータ可読媒体がエネルギ、搬送波信号、電磁波、及び/又は信号自体等の媒体を除外する限りにおいて、有形の非一時的媒体であってもよい。いくつかのケースでは、コンピュータ可読媒体704はサービス計算装置102と同じ位置にあってもよい一方、他の例ではコンピュータ可読媒体704はサービス計算装置102と部分的に離れていてもよい。例えばいくつかのケースでは、コンピュータ可読媒体704は
図1に関して上記で論じたネットワークストレージシステム104内のストレージの一部を含んでもよい。
【0082】
コンピュータ可読媒体704は、プロセッサ702によって実行可能な任意の数の機能コンポーネントを記憶するために使用されてもよい。多くの実装形態においてこれらの機能コンポーネントは、プロセッサ702によって実行可能であり、実行時に本明細書ではサービス計算装置102によるものとする動作を実行するようにプロセッサ702をとりわけプログラムする命令又はプログラムを含む。コンピュータ可読媒体704内に記憶される機能コンポーネントは、ユーザウェブアプリケーション116、管理ウェブアプリケーション124、ストレージプログラム130、データベース管理プログラム138、ノード管理プログラム148、及びメッセージングプログラム150を含んでもよく、それらのそれぞれは1又は複数のコンピュータプログラム、アプリケーション、実行コード、又はその一部を含んでもよい。更に、この例ではこれらのプログラムは一緒に示されているが、使用中、これらのプログラムの一部又は全ては別個のサービス計算装置102上で実行されてもよい。
【0083】
加えてコンピュータ可読媒体704は、本明細書に記載の機能及びサービスを実行するために使用されるデータ、データ構造、及び他の情報を記憶してもよい。例えばコンピュータ可読媒体704は、データベースパーティション134を含んでいるメタデータデータベース132を記憶してもよい。加えて、コンピュータ可読媒体はローカルキャッシュ146を記憶してもよい。更に、この例ではこれらのデータ構造は一緒に示されているが、使用中、これらのデータ構造の一部又は全てが別個のサービス計算装置102上に記憶されてもよい。サービス計算装置102は他の機能コンポーネント及びデータも含み又は維持してもよく、かかる機能コンポーネント及びデータは、プログラム、ドライバ等、及び機能コンポーネントによって使用され又は生成されるデータを含んでもよい。更に、サービス計算装置102は他の多くの論理的、プログラム的、及び物理的なコンポーネントを含んでもよく、そのうち上記で記載したものは本明細書の解説に関係する例に過ぎない。
【0084】
1又は複数の通信インタフェース706は、1又は複数のネットワーク106等による他の様々な装置との通信を可能にするための1又は複数のソフトウェア及びハードウェアコンポーネントを含んでもよい。例えば通信インタフェース706は、本明細書の他の箇所で更に挙げるようにLAN、インターネット、ケーブルネットワーク、セルラネットワーク、無線ネットワーク(例えばWi-Fi)及び有線ネットワーク(例えばファイバチャネル、光ファイバ、イーサネット)、直接接続、並びにBLUETOOTH(登録商標)等の近距離通信等のうちの1又は複数を介しての通信を可能にしてもよい。
【0085】
本明細書に記載した様々な命令、方法、及び技術は、コンピュータ可読媒体上に記憶され、本明細書のプロセッサによって実行されるコンピュータプログラム及びアプリケーション等のコンピュータ実行可能命令の全般的な脈絡で検討されてもよい。概して、プログラム及びアプリケーションという用語は交換可能に使用されてもよく、特定のタスクを実行するための又は特定のデータ型を実装するための命令、ルーチン、モジュール、オブジェクト、コンポーネント、データ構造、実行コード等を含んでもよい。これらのプログラム、アプリケーション等はネイティブコードとして実行されてもよく、又は仮想マシン若しくは他のジャストインタイムコンパイル実行環境等においてダウンロードされ実行されてもよい。典型的には、プログラム及びアプリケーションの機能は様々な実装形態において所望の通りに組み合わされ又は分散されてもよい。これらのプログラム、アプリケーション、及び技術の実装はコンピュータ記憶媒体上に記憶されてもよく、又は何らかの形の通信媒体を介して伝送されてもよい。
【0086】
本主題は、構造上の特徴及び/又は方法論的な行為に固有の言語によって説明されてきたが、添付の特許請求の範囲に定める本主題は記載した特定の特徴又は動作に必ずしも限定されないことを理解すべきである。むしろ特定の特徴及び行為は、特許請求の範囲を実装する形態の例として開示されている。
【国際調査報告】