(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-04
(45)【発行日】2024-03-12
(54)【発明の名称】ネットワークルーティング環境におけるシングルノード及びマルチノードデータストアアーキテクチャ
(51)【国際特許分類】
H04L 45/44 20220101AFI20240305BHJP
【FI】
H04L45/44
(21)【出願番号】P 2021533397
(86)(22)【出願日】2019-08-23
(86)【国際出願番号】 US2019047873
(87)【国際公開番号】W WO2020041681
(87)【国際公開日】2020-02-27
【審査請求日】2022-08-04
(32)【優先日】2018-08-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521076948
【氏名又は名称】アルカス インコーポレイテッド
(74)【代理人】
【識別番号】100067736
【氏名又は名称】小池 晃
(74)【代理人】
【識別番号】100192212
【氏名又は名称】河野 貴明
(74)【代理人】
【識別番号】100200001
【氏名又は名称】北原 明彦
(72)【発明者】
【氏名】サルカール,プシュパシス
(72)【発明者】
【氏名】パテル,ケユル
(72)【発明者】
【氏名】ヤン,デレク マン-キット
(72)【発明者】
【氏名】パテル,アルペシュ
(72)【発明者】
【氏名】クリーガー,ローレンス ロルフ
(72)【発明者】
【氏名】パイ,ナリナクシュ
【審査官】和田 財太
(56)【参考文献】
【文献】特開2016-213544(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/00
(57)【特許請求の範囲】
【請求項1】
単一のネットワーキングデバイス内のデータストアノードの複数のインスタンスを含む
、ネットワークデータをオフロードする為のシステムであって、
前記データストアノードの前記複数のインスタンスのそれぞれ
のインスタンスが、
データストアと、
前記データストアにデータをパブリッシュするための前記データストアとは独立したパブリッシャと、
前記データストアから情報を受信するための前記データストアとは独立したサブスクライバと、
パブリッシャ又はサブスクライバとして前記データストアに接続するように構成されたレプリケータエージェントと、
パブリッシャ又はサブスクライバとして前記データストアに接続するように構成された永続的ストレージエージェントと、
を有
し、
前記パブリッシャが、スイッチ又はルータであり、前記データストアに前記データをオフロードするように構成されたボーダゲートウェイプロトコルインスタンスを実行し、前記データが、前記パブリッシャの為の1以上のネットワーク状態情報又は前記パブリッシャにより判定された最適パス情報を含むルーティング情報を含むことを特徴とするシステム。
【請求項2】
前記データストアノードの前記複数のインスタンスの前記それぞれのインスタンスにおいて、
前記それぞれのインスタンスの前記レプリケータエージェントが、
前記それぞれのインスタンスの前記データストアに接続して
前記それぞれのインスタンス上に生成されたデータオブジェクトのパブリッシャとして動作し、そして、
前記それぞれのインスタンスの前記データストアに接続して前記データストアノードの
前記複数のインスタンスの他のインスタンス上に生成されたデータオブジェクトのコンシューマとして動作することにより、
同じ前記単一のネットワーキングデバイス内の前記データストアノードの
前記複数のインスタンスの他のインスタンスからデータベースデータを複製するように構成されていることを特徴とする請求項1に記載のシステム。
【請求項3】
前記永続的ストレージエージェントが、永続的データストレージデバイスにデータオブジェクトを格納するように構成されていることを特徴とする請求項1に記載のシステム。
【請求項4】
前記永続的データストレージデバイスが、複数のデータセットをまとめて保存する複数の共有ストレージデバイスを有し、前記複数の共有ストレージデバイスのそれぞれが、ホストサーバの各インスタンスによりアクセス可能であることを特徴とする請求項3に記載のシステム。
【請求項5】
さらに、前記データストアノードの前記複数のインスタンスを管理するインデックスサーバの単一のインスタンスを有し、
前記インデックスサーバが、
前記データストア内のデータセットのマッピングを含むデータベースインデックスを維持し、そして、
前記データストアノードの前記複数のインスタンスの前記データストア内の前記データセットのそれぞれのパブリッシャ及びサブスクライバのリストを維持するように構成されていることを特徴とする請求項1に記載のシステム。
【請求項6】
前記インデックスサーバが、特定のデータセットにサブスクライブする通知をサブスクライバから受信するように構成されていることを特徴とする請求項5に記載のシステム。
【請求項7】
前記インデックスサーバが、
前記データストアノードの前記複数のインスタンスの前記データストア内の1以上の前記データセットへの更新を反映するために前記データベースインデックスを更新する通知をパブリッシャから受信するように構成されていることを特徴とする請求項5に記載のシステム。
【請求項8】
前記データストアノードの前記複数のインスタンスのそれぞれがさらに、
複数のサブスクライバデバイスからデータ処理要求を受信するためのインデックスサーバと、
前記インデックスサーバにアクセス可能なメタデータと、
前記データストアと通信するホストサーバと、
前記データストア内の複数のデータセットをまとめて保存する複数の共有ストレージデバイスと、
を有することを特徴とする請求項1に記載のシステム。
【請求項9】
さらに、クラウドベースのストレージにオフロードされたコントローラロジックを含み、前記コントローラロジックが、前記データストアノードの前記複数のインスタンスのそれぞれにアクセス可能であることを特徴とする請求項1に記載のシステム。
【請求項10】
前記単一のネットワーキングデバイスがスイッチ又はルータであることを特徴とする請求項1に記載のシステム。
【請求項11】
データストアのインデックスサーバであって、前記インデックスサーバが、非一時的コンピュータ可読
記憶媒体内に格納された命令を実行するように構成可能な1以上のプロセッサを有し、
前記命令が、
前記データストア内のデータセットのマッピングを含むデータベースインデックスを維持し、
前記データストア内の前記データセットのそれぞれのパブリッシャ及びサブスクライバのリストを維持し、
前記パブリッシャのリスト内のパブリッシャにより前記データストア内の1以上の前記データセットが変更された旨の通知の受信に応答して前記データベースインデックスを更新し、そして、
特定のデータセットをサブスクライブしたいことを示すサブスクライバからの通知の受信に応答してパブリッシャ及びサブスクライバの前記リストを更新する、
ことを実行し、
前記パブリッシャが、スイッチ又はルータであり、1以上の前記データセットをオフロードするように構成されたボーダゲートウェイプロトコルインスタンスを実行し、1以上の前記データセットが、前記パブリッシャの為の1以上のネットワーク状態情報又は前記パブリッシャにより判定された最適パス情報を含むルーティング情報を含むことを特徴とするインデックスサーバ。
【請求項12】
前記インデックスサーバが、単一のネットワーキングデバイス内の前記データストアの複数のインスタンスを管理する単一の
インデックスサーバインスタンスであることを特徴とする請求項11に記載のインデックスサーバ。
【請求項13】
前記命令がさらに、クラウドベースのストレージからコントローラロジックを取り出すことを
実行することを特徴とする請求項11に記載のインデックスサーバ。
【請求項14】
前記命令がさらに、単一のネットワーキングデバイス内に配置された前記データストアの他のインスタンスへ/から前記データストア内の
前記データセットを複製するように構成されたレプリケータエージェントからメッセージを受信することを
実行し、前記レプリケータエージェントが、パブリッシャ又はサブスクライバとして前記インデックスサーバと相互動作することができることを特徴とする請求項11に記載のインデックスサーバ。
【請求項15】
前記命令がさらに、永続的データストレージデバイス内にデータオブジェクトを格納するように構成された永続的ストレージエージェントからメッセージを受信することを
実行し、前記永続的ストレージエージェントが、パブリッシャ又はサブスクライバとして前記インデックスサーバと相互動作することができることを特徴とする請求項11に記載のインデックスサーバ。
【請求項16】
インデックスサーバを使用してデータストアのマルチノードアーキテクチャを管理する方法であって、
前記方法が、
前記データストア内のデータセットのマッピングを含むデータベースインデックスを維持し、
前記データストア内の前記データセットのそれぞれのパブリッシャ及びサブスクライバのリストを維持し、
前記パブリッシャのリスト内のパブリッシャからの前記データストア内の1以上の前記データセットが変更された旨の通知の受信に応答して前記データベースインデックスを更新し、そして、
特定のデータセットをサブスクライブしたいことを示すサブスクライバからの通知の受信に応答してパブリッシャ及びサブスクライバの前記リストを更新する、
ことを含
み、
前記パブリッシャが、1以上の前記データセットをオフロードするように構成され、1以上の前記データセットが、前記パブリッシャの為の1以上のネットワーク状態情報又は前記パブリッシャにより判定された最適パス情報を含むルーティング情報を含むことを特徴とする方法。
【請求項17】
前記インデックスサーバが、単一のネットワーキングデバイス内の前記データストアの複数のインスタンスを管理する単一の
インデックスサーバインスタンスであることを特徴とする請求項16に記載の方法。
【請求項18】
さらに、クラウドベースのストレージからコントローラロジックを取り出すことを含むことを特徴とする請求項16に記載の方法。
【請求項19】
さらに、
前記単一のネットワーキングデバイス内に配置された前記データストアの他のインスタンスへ/から前記データストア内の
前記データセットを複製するように構成されたレプリケータエージェントからメッセージを受信することを含み、前記レプリケータエージェントが、パブリッシャ又はサブスクライバとして前記インデックスサーバと相互動作することができることを特徴とする請求項
17に記載の方法。
【請求項20】
さらに、永続的データストレージデバイス内にデータオブジェクトを格納するように構成された永続的ストレージエージェントからメッセージを受信することを含み、前記永続的ストレージエージェントが、パブリッシャ又はサブスクライバとして前記インデックスサーバと相互動作することができることを特徴とする請求項
17に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本出願は、2018年8月23日に出願された米国仮特許出願第62/722,003号「DATABASE SYSTEMS METHODS AND DEVICES」に対する優先権を主張するものであり、この文献は、次の例外を除き、これに限定されるものではないが、以下に具体的に記載される部分を含む全体が参照により本明細書に援用される。前記出願の何れかの部分が本出願と矛盾する場合、本出願の内容が前記出願に優先される。
【0002】
本開示は、コンピューティングネットワークに関し、特にネットワークルーティングアプリケーションのためのデータストレージに関する。
【背景技術】
【0003】
ネットワークコンピューティングとは、複数のコンピュータ又はノードが連携し、ネットワークを介して相互に通信するための手段である。これには、ワイドエリアネットワーク(wide area network:WAN)とローカルエリアネットワーク(local area network:LAN)とがある。ワイドエリアネットワークとローカルエリアネットワークは、何れも、コンピュータ間の相互接続を可能にする。ローカルエリアネットワークは、通常、家庭、ビジネス、学校等、より小規模でローカライズされたネットワークに使用される。ワイドエリアネットワークは、都市等の広域をカバーし、異なる国のコンピュータを接続することもできる。通常、ローカルエリアネットワークは、ワイドエリアネットワークよりも高速で安全であるが、ワイドエリアネットワークを使用すると広範囲の接続が可能になる。通常、ローカルエリアネットワークは、展開されている組織内で所有、制御、及び管理され、一方、ワイドエリアネットワークでは、通常、パブリックインターネット経由又は電気通信プロバイダによって確立されたプライベート接続を介して、構成要素である2以上のローカルエリアネットワークを接続する必要がある。
【0004】
ローカルエリアネットワークとワイドエリアネットワークによって、コンピュータを相互に接続し、データやその他の情報を転送できる。ローカルエリアネットワーク及びワイドエリアネットワークの何れにおいても、ある演算インスタンスから別の演算インスタンスにデータを渡すパスを判定する手段が必要である。これは、ルーティングとも呼ばれる。ルーティングとは、ネットワーク内で、複数のネットワーク間で、又は複数のネットワークに亘って、トラフィックのパスを選択するプロセスである。ルーティングプロセスは、通常、様々なネットワーク宛先へのルートの記録を保持するルーティングテーブルに基づいて、転送を指示する。ルーティングテーブルは、管理者が指定してもよく、ネットワークトラフィックを監視して学習してもよく、ルーティングプロトコルの支援を受けて構築してもよい。
【0005】
小規模ネットワークでは、手動で構成されたルーティングテーブルを使用して、あるコンピュータから別のコンピュータへの情報の転送方法を判定できる。ルーティングテーブルは、開始コンピュータと最終宛先コンピュータとの間の最も効率的又は最も望ましいパスを示す「最適パス」のリストを含むことができる。公衆インターネットに接続されたネットワークを含む大規模なネットワークは、複雑なトポロジに依存していることがあり、トポロジは、急速に変化する可能性があるため、ルーティングテーブルを手動で構築することは、不可能である。動的ルーティングは、ルーティングプロトコルによって伝送される情報に基づいてルーティングテーブルを自動的に構築することによって、この問題を解決しようとするものである。動的ルーティングにより、ネットワークは、略自律的に動作して、ネットワークの障害やブロックを回避できる。ネットワークデバイス間の最適パスを判定するための規則又は命令を提供する複数のルーティングプロトコルが存在する。動的ルーティングプロトコル及びアルゴリズムには、ルーティング情報プロトコル(Routing Information Protocol:RIP)、オープンショーテストパスファースト(Open Shortest Path First:OSPF)、エンハンスドインテリアゲートウェイルーティングプロトコル(Enhanced Interior Gateway routing Protocol:EIGRP)、及びボーダゲートウェイプロトコル(Border Gateway Protocol:BGP)等がある。
【0006】
幾つかの具体例では、パス選択は、複数のルートにルーティングメトリックを適用して、最適ルートを選択又は予測することを含む。殆どのルーティングアルゴリズムは、一度に1つのネットワークパスのみを使用する。マルチパスルーティング技術は、複数の代替パスの使用を可能にする。コンピュータネットワークでは、ルーティングアルゴリズムを使用して、2つの演算インスタンス間の最適パスを予測できる。ルーティングアルゴリズムは、帯域幅、ネットワーク遅延、ホップカウント、パスコスト、負荷、最大転送単位、信頼性、及び通信コスト等の複数の要因に基づくものであってもよい。ルーティングテーブルには、最適パスのリストが格納される。トポロジデータベースは、最適パスのリストを格納でき、更に追加情報を格納できる。
【0007】
一部のネットワークでは、最適パスの選択を担当するエンティティが単一のエンティティではないという事実のために、ルーティングが複雑になる。代わりに、複数のエンティティが最適パス又は単一パスのイベント部分の選択に関与する。インターネット上のコンピュータネットワーキングのコンテキストにおいて、インターネットは、インターネットサービスプロバイダ(ISP)のような自律システム(AS)に分割される。各自律システムは、そのネットワークを含むルートを制御する。自律システムレベルのパスは、ボーダゲートウェイプロトコル(Border Gateway Protocol:BGP)に基づいて選択される。各自律システムレベルのパスには、一連の自律システムが含まれており、この自律システムを経由して、ある演算インスタンスから別の演算インスタンスに情報パケットが送信される。各自律システムは、複数のパスを有することができ、この複数のパスから、隣接する自律システムによって提供される複数のパスを選択できる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
従来のネットワークコンピューティング環境では、最適パス判定及び他のデータは、パブリッシャデバイスによって複数のサブスクライバデバイスにパブリッシュされる。しかしながら、これによって、パブリッシャデバイスの演算コストが高くなる可能性がある。更に、このシステムには、システムクラッシュやシステム障害に対する防御策が殆どない。したがって、ネットワーク情報の保存を改善することが望ましい。
【課題を解決するための手段】
【0009】
以上の観点から、ここでは、独立したデータストアにネットワークデータをオフロードするためのシステム、方法、及びデバイスを開示する。
【0010】
本開示の非限定的及び非包括的な実施形態は、以下の図を参照して説明され、これらの図において、同一の参照符号は、特段の指定がない限り、全ての図を通して同一の部分を指す。以下の説明及び添付の図面を参照することにより、本開示の利点がより明瞭に理解される。
【図面の簡単な説明】
【0011】
【
図1】インターネットを介して通信するネットワーク化されたデバイスのシステムの概略図である。
【
図2】データストアに階層的にデータを格納する方法を示す概略図である。
【
図3】単一のデバイス上の様々なアプリケーションからネットワーク情報をオフロードし、データストアに格納する方法を示す概略図である。
【
図4】ネットワークデバイス上のネットワーク情報を、同じデバイス上にローカルに実装されたデータストアに格納する方法を示す概略図である。
【
図5】ネットワーク情報のストレージを、リモートデバイス上の別の場所に実装されたデータストアにオフロードする方法を示す概略図である。
【
図6】プロデューサ、プロデューサコンシューマ、及びコンシューマと、データストアとの間の通信の概略図である。
【
図7】単一のネットワーキングデバイスのマルチノードに亘ってデータストアを実装する方法を示す概略図である。
【
図8】クラウドコンピューティングネットワークにオフロードされたリモートコントローラによって制御される複数のデバイスを示す概略図である。
【
図9】クラウドベースのデータストアの実施形態の概略図である。
【
図10】デバイスのコントローラロジックをクラウドネットワークにオフロードするためのシステムの概略図である。
【
図11】マルチノードデバイスのコントローラロジックをクラウドベースのコントローラにオフロードするためのシステムの概略図である。
【
図12】プロセス間通信(IPC)ベースのデータストアの概略図である。
【
図13】データストアのインデックスサーバの概略図である。
【
図14】データストアのホストサーバの概略図である。
【
図15】データストアにデータをパブリッシュし、パブリッシュされたデータをサブスクライバデバイスに提供するためのプロセスフローの概略図である。
【
図16】データストア内に格納されるデータの格納構造の概略図である。
【
図17】データストアによるデータの受信及びパブリッシングのための方法の概略的フローチャートである。
【
図18】マルチノードデータストアを管理するための方法の概略的フローチャートである。
【
図19】例示的な演算デバイスの構成要素を示す概略図である。
【発明を実施するための形態】
【0012】
ネットワークルーティング環境内に展開されるシングルノード及びマルチノードデータストアアーキテクチャのためのシステム、方法、及びデバイスを開示する。ネットワークルーティングの幾つかの例では、一度に複数のロケーションに情報を迅速にパブリッシュできるデータストアにルーティング情報を格納することが望ましい。ここでは、ルータ又はスイッチ等のボックスに並列な、ネットワーク及びルーティング情報を格納するためのデータストアを提供するシステム、方法、及びデバイスを開示する。一実施形態では、ネットワーク状態は、ボックス内にローカルに格納されるのではなく、データストアにオフロードされる。
【0013】
一実施形態では、データストアは、単一のパブリッシュ/サブスクライブ(publish-subscribe:PUBSUB)エンティティによって提供される単一のデータベースである。データストアは、複数のコンピューティングノードに実装及び格納してもよい。各コンピューティングノードは、それ自体の独立したコンピューティング処理エンティティ及びリソースを有する処理エンティティとして機能できる。マルチノードが相互動作し、単一のコンピューティングエンティティ又はデバイス(例えば、複数のラインカードを有するネットワークデバイス)として機能してもよい。単一の演算デバイス内のマルチノードは、単一のデータストアを実装してもよいが、各ノード上でデータストアコンポーネントの個々のコピーを実行し、内部で相互動作してもよく、これにより、データストアは、いかなるクライアントにとっても、複数のコンピューティングノードの何れかで実行されているデータストアのように見える。
【0014】
本開示の実施形態は、シングルノード及びマルチノードデータストアアーキテクチャを含む。データストアアーキテクチャは、ネットワークルーティング環境のネットワーキングデバイス内に展開することができる。実施形態において、シングルノードデータストアアーキテクチャは、ネットワーキングデバイス内で使用される。シングルノードデータストアアーキテクチャは、データストアノードの1つのインスタンスを含む。シングルノードデータストアアーキテクチャにおいて、プロデューサ及びコンシューマ間のデータフローを提供し、分散データストアをホストするために1以上の別個のサーバを実装することができる。シングルノードデータベース全体を独立した複数のデータセットに分割することができる。ホストサーバ処理は、独立した複数のデータセットの1以上の専用にすることができる。実施形態において、シングルデータベースインデックスサーバは、複数のホストサーバのマッピング及び複数のホストサーバのそれぞれによりホストされる対応するデータセットを維持するために展開される。
【0015】
代替実施形態において、マルチノードデータスタアーキテクチャは、ネットワークルーティング環境のネットワーキングデバイス内に展開することができる。マルチノードデータスタアーキテクチャは、データストアノードの複数のインスタンスを含む。実施形態において、マルチノードデータスタアーキテクチャは、データベースの全てのデータストアノードにわたるプロデューサ及びコンシューマの対応するリスト及びデータセットのマッピングを維持するために実装されたネットワーキングデバイスの全てのノードを含むことができる。コンシューマは、データストアクライアントにより、データベースインデックスサーバに接続し、特定のデータセットに関心を登録し、サブスクライブすることができる。プロデューサは、データストアクライアントにより、データベースインデックスサーバに接続し、新しいものを通知するためにデータベースインデックスを更新し、その後、特定のデータセットを変更又は消去することができる。データベースインデックスサーバは、特定のデータセットを記憶し、プロデューサに通知するために適切なデータベースホストサーバを割り当てることができる。プロデューサは、さらに特定のホストサーバに接続し、データオブジェクトの追加、変更、及び/又は削除をパブリッシュすることができる。データベースインデックスサーバは、コンシューマに追加、変更、及び/又は削除を通知することができる。実施形態において、データベースインデックスサーバは、特定のプロデューサに接続し、プロデューサにより生成されて変更された適切なデータセットをダウンロードすることができる。
【0016】
データストア及びデータベースは両方とも、情報を記憶するために使用される。しかしながら、2つの種類の記憶アーキテクチャの間にはいくつかの相違点がある。データストアは構造化データと非構造化データの両方を記憶することができるが、データベースは構造化データしか記憶することができない。例えば、データストアは、表等の構造化データを記憶することができ、さらに、画像、映像、電子メール、様々な書類形式等の非構造化データを記憶することができる。データベースは、多数のセルが複数の横列及び複数の縦列に整理されている表形式に一般的に整理された構造化データを記憶する。データベースは、データベース内の情報を分析して照会するように構成されたデータベース管理システム(DBMS)により一般的に管理される。ここで説明されているデータストアの実施形態は、情報を記憶するためにシングルノードデータベース又はマルチノードデータベースを使用する。データストアの実施形態は、照会を行い、データベースのデータを更新するデータベースインデックスサーバ及びデータベースホストサーバ310を含む。
【0017】
ここで説明されているシングルノードデータストアアーキテクチャは、データストアを有するシングルノードを含む。マルチノードデータストアアーキテクチャは、ネットワークデバイス内の全てのノードにわたる単一のデータストアを実装するために相互動作する様々なデータストアサーバの個別コピーを各々が実装するマルチノードを含む。マルチノードデータストアアーキテクチャ内の全てのノード上で実行されているデータストアサーバのマルチコピーは、互いに通信することができ、ノード上で生成されたデータは、プロデューサアプリケーションが実行され、対応する元データが保存されているノード上で実行されているデータベースサーバから毎回フェッチする必要なく、ローカルデータベースホストサーバからの別のノード上で実行されているコンシューマアプリケーションで利用可能にすることができる。このことは、より速いデータ転送を促進する。単一デバイス内のマルチ演算ノードは、データストアの別個のインスタンスを実装することができるが、デバイスが単一のデータストアを有するかのように、相互動作するデータストアサーバのセットを各々が展開することもできる。プロデューサがコンシューマと同一のノード上にいる場合、プロデューサからのデータは、他の演算ノードにデータをまず送信することなく、直接コンシューマに送信される。
【0018】
本開示の実施形態は、シングルノードデータストアアーキテクチャ又はマルチノードデータストアアーキテクチャを有するネットワーキングデバイス内のネットワークルーティング情報を格納するために展開してもよい。シングルノードデータストアアーキテクチャは、単一のデータストアを含む。マルチノードデータストアアーキテクチャは、マルチノードにわたるマルチデータストアを含む。データストアは、ルータやスイッチ等のネットワーキングデバイス上でローカルにデータをホストするのではなく、リモートでデータをホストするための柔軟性を提供する。一実施形態では、データストアは、ネットワーク化されたデバイスのための1以上のルーティングテーブルを保存するように構成される。データストアは、ネットワーキングデバイスの外部でアプリケーションを実行するための処理リソースとストレージリソースを提供できる。データストアは、ネットワークルーティング環境でストレージ及び処理リソースを追加するために、垂直方向及び水平方向にスケーリング可能な能力を有する。一実施形態では、データストアは、ネットワーキングデバイスの外部でデータをホストし、データを複数のパーティションに分割するように構成される。パーティションは、互いに通信可能な複数のストレージデバイス上でホストできる。
【0019】
一実施形態では、データストアは、ルータ及びスイッチ等の複数のネットワーキングデバイスによってアクセス可能である。ここで説明するように、ネットワークデバイスがボーダゲートウェイプロトコル(Border Gateway Protocol:BGP)によって判定されるパスを実行又は格納する場合、そのネットワークデバイスは、BGPインスタンスとも呼ばれる。BGPは、開始ポイントから宛先ポイントにデータを送信するための最適パスを判定するために使用される。一実施形態では、各ネットワーキングデバイスは、データストア内の情報を読み取り、データを送信するための最適パスを識別し、データをその最終宛先に送達することができる。一実施形態では、各ネットワーキングデバイスは、実行時に自身の状態を記憶し、その状態を送信してデータストア内で複製させる。データストアは、複数のネットワーキングデバイスに接続され、複数のネットワーキングデバイスのそれぞれの全ての状態を保存できる。これにより、各ネットワーキングデバイスの状態を、任意の適切なフォーマットでデータストアにオフロードできる。一実施形態では、データストアは、実行時にリアルタイムで複数のネットワーキングデバイスから状態情報を受信する。データストアは、更に、複数のネットワーキングデバイスから、保存された状態情報のスナップショットを受信するように構成できる。
【0020】
一実施形態では、データストアは、ユーザ定義の格納構造(storage structure)で組織化される。格納構造には、JSON(JavaScript Object Notation)ベースのスキーマで定義された階層と組織を含めることができる。データストアは、様々なデータ構造型をサポートし、必要に応じて新しいデータ構造型をサポートする。
【0021】
一実施形態では、データストアは、パブリッシュ/サブスクライブインフラストラクチャを利用することによって、メモリ診断のサポートを提供する。ソフトウェアアーキテクチャにおいて、パブリッシュ/サブスクライブとは、パブリッシャ(ここで説明されているコンテキストにおいては「プロデューサ」と呼ぶことができる)が、サブスクライバに直接メッセージを送信することなく、サブスクライバに間接的にメッセージを送信するメッセージングパターンである。パブリッシャは、サブスクライバの知識を用いることなくメッセージをクラスに分類する。同様に、サブスクライバは、1以上のクラスに関心を示し、関心があるメッセージのみを受信することができる。パブリッシュ/サブスクライブメッセージングパターンでは、メッセージは、パブリッシャによって「パブリッシュ」された後、該当する全てのサブスクライバによって受信される。データストアは、これ自体又は他のアプリケーションによってホストされるパブリッシングサービスを必要とする任意のアプリケーションのパブリッシュ/サブスクライブインフラストラクチャを利用できる。
【0022】
一実施形態では、データストアは、接続されたクライアントアカウント又はネットワーキングデバイスによって検索又は照会できる。データストアは、テーブルインデックスを使用して、カスタマイズされた検索の応答を返すことができる。データストアは、複数のデータパーティションに亘るデータの格納をサポートする。データは、データストア上にローカルに格納されたメタデータに基づいて、複数のデータパーティションに亘って配置できる。
【0023】
本開示の理解を深めるために、多数のネットワーキング演算デバイス及びプロトコルの幾つかを説明する。
【0024】
BGPインスタンスは、ネットワーク内で情報をルーティングするためのデバイスである。BGPインスタンスは、ルートリフレクタ機器(route reflector appliance)の形式で実現してもよい。BGPインスタンスは、スイッチ、ルータ、又はスイッチ上のBGPスピーカで実行してもよい。一実施形態において、BGPインスタンスは、プレフィックスについて学習した全てのパスを最適パスコントローラ(best path controller)に送信する。最適パスコントローラは、これらのパスの中から最適パスのセットを応答する。最適パスコントローラは、任意のパスのネクストホップ及び属性を変更することが許可されている。最適パスを受信すると、BGPインスタンスは、ローカルルーティング情報ベース(Routing Information Base:RIB)を更新し、最適パスをネイバ(neighbors)にアドバタイズ(advertise)する。
【0025】
スイッチ(スイッチングハブ、ブリッジングハブ、又はMACブリッジとも呼ばれる。)は、ネットワークを作成する。殆どの内部ネットワークは、建物又はキャンパス内のコンピュータ、プリンタ、電話機、カメラ、照明、及びサーバを接続するためにスイッチを使用する。スイッチは、ネットワークに接続されたデバイスが相互に効率的に通信できるようにするコントローラとして機能する。スイッチは、パケットスイッチングを使用してコンピュータネットワーク上のデバイスを接続し、これによりデータが受信され、処理され、宛先デバイスに転送される。ネットワークスイッチは、ハードウェアアドレスを使用して、開放型システム間相互接続(Open Systems Interconnection:OSI)モデルのデータリンクレイヤ(レイヤ2)でデータを処理及び転送するマルチポートネットワークブリッジである。一部のスイッチは、ルーティング機能を追加で組み込むことにより、ネットワークレイヤ(レイヤ3)でデータを処理することもできる。このようなスイッチは、一般にレイヤ3スイッチ又はマルチレイヤスイッチと呼ばれている。
【0026】
ルータは、ネットワークを接続する。スイッチ及びルータは、類似する機能を実行するが、ネットワーク上で実行する機能はそれぞれ異なる。ルータは、コンピュータネットワーク間でデータパケットを転送するネットワークデバイスである。ルータは、インターネット上でトラフィックダイレクティング機能(traffic directing function)を実行する。ウェブページ、電子メール、又はその他の形式の情報等、インターネットを介して送信されるデータは、データパケットの形式で送信される。パケットは、通常、インターネットワーク(例えばインターネット)を構成するネットワークを介してあるルータから別のルータに転送されて、最終的に宛先ノードに到達する。ルータは、異なるネットワークからの複数のデータラインに接続されている。データパケットがラインの1つに到着すると、ルータは、パケット内のネットワークアドレス情報を読み取り、最終的な宛先を判定する。次に、ルータは、ルータのルーティングテーブル又はルーティングポリシの情報を使用して、行程上の次のネットワークに向けてパケットを送信する。BGPスピーカは、ボーダゲートウェイプロトコル(Border Gateway Protocol:BGP)が有効にされたルータである。
【0027】
ルーティングテーブル又はルーティング情報ベース(RIB)は、ルータ又はネットワークコンピュータに格納されているデータテーブルであり、特定のネットワーク宛先へのルートをリストにしているものである。ルーティングテーブルには、距離、重み等のルートのメトリックが含まれる場合がある。ルーティングテーブルには、それが格納されているルータの直近のネットワークのトポロジに関する情報が含まれる。ルーティングテーブルの構築は、ルーティングプロトコルの主要な目的である。スタティックルートは、非自動手段によってルーティングテーブルに作成されるエントリであり、何らかのネットワークトポロジディスカバリ手順の結果ではなく、固定されている。ルーティングテーブルは、ネットワークID、メトリック、及びネクストホップのフィールドを含む、少なくとも3つの情報フィールドを含むことができる。ネットワークIDは、宛先サブネットである。メトリックは、パケットが送信されるパスのルーティングメトリックである。ルートは、メトリックが最小のゲートウェイの方向に進む。ネクストホップとは、パケットが最終宛先に送信されるまでの過程における次のステーションのアドレスである。ルーティングテーブルは、更に、ルートに関連付けられたサービス品質、ルートに関連付けられたフィルタリング基準リストへのリンク、イーサネットカードのインタフェース等を含むことができる。
【0028】
ルーティングテーブルの概念を説明する目的のために、ルーティングテーブルは、パッケージを送達するために使用される地図に見立てることができる。ルーティングテーブルは、パッケージを最終的な宛先に配信するために使用される地図に似ている。ノードがネットワーク上の別のノードにデータを送信する必要がある場合、ノードはまずデータの送信先を認識する必要がある。ノードが宛先ノードに直接接続できない場合、ノードは、宛先ノードへの適切なルートに沿って他のノードにデータを送信する必要がある。殆どのノードは、どのルートが機能するかを判断することを試みることはない。これに代えて、ノードは、LAN内のゲートウェイにIPパケットを送信し、ゲートウェイが、データを正しい宛先にどのようにルーティングするかを決定する。各ゲートウェイは、様々なデータパッケージを配信する方法を追跡する必要があり、そのためにルーティングテーブルを使用する。ルーティングテーブルは、地図のようにパスを追跡し、これらのパスを使用してトラフィックをどのように転送するかを判定するためのデータベースである。ゲートウェイは、情報を要求する他のノードとルーティングテーブルの内容を共有することもできる。
【0029】
ホップバイホップ(hop-by-hop)ルーティングの場合、各ルーティングテーブルには、全ての到達可能な宛先について、その宛先へのパスに沿った次のデバイスのアドレス、すなわち、ネクストホップがリストされる。ルーティングテーブルが一貫していると仮定すれば、パケットを宛先のネクストホップにリレーするアルゴリズムは、ネットワーク内の任意の場所にデータを配信するのに十分である。ホップバイホップは、IPインターネットワークレイヤ及び開放型システム間相互接続(OSI)モデルの特徴の一つである。
【0030】
開放型システム間相互接続(OSI)モデルは、基礎となる内部構造及び技術に関係なく、コンピューティングシステムの通信機能を特徴付け、標準化する概念モデルである。OSIモデルの目標は、多様な通信システムと標準通信プロトコルとの相互運用性である。OSIモデルは、通信システムを複数の抽象レイヤに分割する。レイヤは、上位のレイヤにサービスを提供し、下位のレイヤからサービスを提供される。例えば、ネットワークに亘って無エラー通信(error-free communication)を提供するレイヤは、上位のアプリケーションが必要とするパスを提供すると共に、次の下位レイヤを呼び出して、そのパスの内容を構成するパケットを送受信する。同じレイヤにある2つのインスタンスは、そのレイヤで水平接続によって接続されているものとして可視化される。通信プロトコルは、あるホストのエンティティが、別のホストの同じレイヤの対応するエンティティとインタラクションすることを可能にする。OSIモデルのようなサービス定義は、(N-1)レイヤによって(N)レイヤに提供される機能を抽象的に記述し、ここで、Nは、ローカルホストで動作するプロトコルレイヤの1つである。
【0031】
ルート制御は、インターネット接続性の向上、帯域幅コストの削減、及びネットワーク間の全体的な動作の削減を目的としたネットワーク管理の一種である。一部のルート制御サービスは、ハードウェアベース及びソフトウェアベースの一連の製品及びサービスを含み、これらは、連携して全体的なインターネットパフォーマンスを向上させ、利用可能なインターネット帯域幅を最小限のコストで微調整(finetune)する。ネットワーク又は自律システムが複数のプロバイダからインターネット帯域幅を調達するシナリオでは、ルート制御を成功させることができる。ルート制御は、データ伝送のための最適なルートの選択を援助できる。
【0032】
一部のネットワーク通信システムは、数千の処理ノードを有する大規模な企業レベルのネットワークである。数千もの処理ノードが複数のインターネットサービスプロバイダ(Internet Service Provider:ISP)からの帯域幅を共有し、大量のインターネットトラフィックを処理できる。このようなシステムは、非常に複雑になる可能性があり、許容できるインターネットパフォーマンスを得るために適切に構成する必要がある。システムが最適なデータ伝送のために適切に構成されていないと、インターネットアクセスの速度が低下し、システムの帯域幅消費及びトラフィックが増大する可能性がある。この問題に対し、一連のサービスを実装することによって、これらの懸念を排除又は軽減できる。この一連のサービスは、ルーティング制御とも呼ばれる。
【0033】
ルーティング制御メカニズムの一実施形態は、ハードウェアとソフトウェアとから構成される。ルーティング制御メカニズムは、インターネットサービスプロバイダ(ISP)との接続を介して全ての発信トラフィック(outgoing traffic)を監視する。ルーティング制御メカニズムは、データの効率的な伝送のための最適パスの選択を支援する。ルーティング制御メカニズムは、全てのISPの性能及び効率を計算し、適用可能な領域において最適に動作したISPのみを選択できる。ルート制御デバイスは、コスト、パフォーマンス、及び帯域幅に関する定義済みのパラメータに従って構成できる。
【0034】
データ伝送のための最適パスを判定するための公知のアルゴリズムは、ボーダゲートウェイプロトコル(Border Gateway Protocol:BGP)と呼ばれる。BGPは、インターネット上の自律システムのルーティング情報を提供するパスベクトル(path-vector)プロトコルである。BGPが正しく構成されていないと、サーバの利用可能性及び安全性に問題が発生する可能性がある。更に、攻撃者は、BGPルート情報を変更することにより、トラフィックの大規模なブロックをリダイレクトして、トラフィックが目的の宛先に到達する前に、トラフィックを特定のルータに到達させることができる。BGP最適パスアルゴリズムを実装することによって、トラフィック転送用のインターネットプロトコル(Internet Protocol:IP)ルーティングテーブルにインストールする最適パスを判定できる。BGPルータは、同じ宛先への複数のパスを受信するように構成できる。
【0035】
BGP最適パスアルゴリズムは、最初の有効なパスを現在の最適パスとして割り当てる。BGP最適パスアルゴリズムは、BGPが有効パスのリストの最後に到達するまで、リスト内の次のパスと最適パスを比較する。このリストは、最適パスを判定するために使用される規則を提供する。例えば、リストは、重みが最も高いパスの優先、ローカル優先度がないパスの優先、ネットワーク又はアグリゲーションBGPによってローカルに発生したパスの優先、最短パスの優先、最小のマルチエグジットディスクリミネータ(multi-exit discriminator)を有するパスの優先等の指示情報を含むことができる。BGP最適パス選択プロセスは、カスタマイズできる。
【0036】
BGPルーティングのコンテキストでは、各ルーティングドメインは、自律システム(autonomous system:AS)と呼ばれる。BGPは、2つのルーティングドメインを接続するためのインターネット経由のパスの選択を支援する。BGPは、通常、最短ASパスと呼ばれる、最小数の自律システムを通過するルートを選択する。一実施形態では、一旦BGPが有効にされると、ルータは、BGPネイバからインターネットルートのリストをプルし、ここで、BGPネイバは、ISPであってもよい。次に、BGPは、リストを精査して、最も短いASパスを有するルートを発見する。これらのルートは、ルータのルーティングテーブルに入力してもよい。通常、ルータは、ASへの最短パスを選択する。BGPは、パス属性を使用して、トラフィックを特定のネットワークにどのようにルーティングするかを判定する。
【0037】
本開示に基づく原理の理解を深めるために、以下では、図示の実施形態を参照し、特定の表現を用いてこれを説明する。但し、これは、本開示の範囲を限定することを意図するものではない。ここに例示する本開示の特徴の任意の変更及び更なる修正、並びにここに例示する本開示の原理の任意の追加的な適用は、当業者が本開示に基づいて容易に想到できるものであり、特許請求の範囲に含まれる。
【0038】
ネットワークコンピューティング環境にデータストアを提供するための構造、システム、及び方法を開示及び説明する前に、この開示は、ここに開示される特定の構造、構成、プロセスステップ、及び材料に限定されず、そのような構造、構成、プロセスステップ、及び材料を変更してもよいことを明記する。また、本開示の範囲は、特許請求の範囲及びその均等物によってのみ制限されるものであるため、ここで使用される用語は、特定の実施形態を説明する目的でのみ使用され、限定を意図しないことは当然である。
【0039】
本開示の主題を記述し特許請求する際には、以下に記載する定義に従って、以下の用語を使用する。
【0040】
本明細書及び特許請求の範囲において使用する、単数形(冠詞「a」、「an」、及び「the」)は、コンテキストにおける特段の指定がない限り、複数の指示対象を含む。
【0041】
ここで使用する語句「備える」、「有する」、「含む」、「特徴とする」、及びこれらの文法的等価物は、記載されていない追加的な要素又は方法工程を除外しない非排他的又はオープンな用語である。
【0042】
ここで使用する語句「~からなる」及びその文法的等価物は、請求項に記載されていない任意の要素又は工程を除外する。
【0043】
ここで使用される語句「実質的に~からなる」及びその文法的等価物は、特許請求の範囲を、特定された材料又は工程、並びに特許請求された開示の基本的かつ新規な特性又は特徴に実質的に影響しない材料又は工程に限定する。
【0044】
以下の説明は、図面を参照し、
図1は、デバイスをインターネットに接続するためのシステム100の概略図である。システム100は、スイッチ106によって接続された複数のローカルエリアネットワーク110を含む。複数のローカルエリアネットワーク110のそれぞれは、ルータ112によって、公衆インターネットを介して互いに接続可能である。
図1に示す例示的なシステム100は、2つのローカルエリアネットワーク110を有する。但し、公衆インターネットを介して、より多くのローカルエリアネットワーク110を互いに接続してもよい。各ローカルエリアネットワーク110は、スイッチ106によって互いに接続された複数の演算デバイス108を含む。複数の演算デバイス108は、例えば、デスクトップコンピュータ、ラップトップ、プリンタ、サーバ等を含むことができる。ローカルエリアネットワーク110は、ルータ112によって、公衆インターネットを介して他のネットワークと通信できる。ルータ112は、複数のネットワークを互いに接続する。ルータ112は、インターネットサービスプロバイダ102に接続されている。インターネットサービスプロバイダ102は、1以上のネットワークサービスプロバイダ104に接続されている。ネットワークサービスプロバイダ104は、
図1に示すように、他のローカルネットワークサービスプロバイダ104と通信を行う。
【0045】
スイッチ106は、パケットスイッチング(packet switching)を使用してローカルエリアネットワーク110内のデバイスを接続し、これによりデータが受信され、処理され、宛先デバイスに転送される。スイッチ106は、例えば、プリンタを宛先として、コンピュータからデータを受信するように構成できる。スイッチ106は、データを受信し、データを処理し、データをプリンタに送信できる。スイッチ106は、レイヤ1スイッチ、レイヤ2スイッチ、レイヤ3スイッチ、レイヤ4スイッチ、レイヤ7スイッチ等であってもよい。レイヤ1ネットワークデバイスは、データを転送するが、デバイスを通過するトラフィックは管理しない。レイヤ1ネットワークデバイスの例は、イーサネットハブである。レイヤ2ネットワークデバイスは、ハードウェアアドレスを使用してデータリンクレイヤ(レイヤ2)でデータを処理及び転送するマルチポートデバイスである。レイヤ3スイッチは、通常ルータによって実行される機能の一部又は全てを実行できる。但し、一部のネットワークスイッチは、単一タイプの物理ネットワーク、通常は、イーサネットをサポートするように制限されており、一方、ルータは、異なるポート上の異なる種類の物理ネットワークをサポートする場合がある。
【0046】
ルータ112は、コンピュータネットワーク間でデータパケットを転送するネットワーキングデバイスである。
図1に示す例示的なシステム100において、ルータ112は、ローカルエリアネットワーク110間でデータパケットを転送する。但し、ルータ112は、必ずしもローカルエリアネットワーク110間のデータパケットの転送に適用される必要はなく、ワイドエリアネットワーク等の間のデータパケットの転送に使用してもよい。ルータ112は、インターネット上でトラフィックダイレクション機能(traffic direction function)を実行する。ルータ112は、銅ケーブル、光ファイバ、又は無線伝送等の異なるタイプの物理レイヤ接続のためのインタフェースを有してもよい。ルータ112は、異なるネットワークレイヤ伝送規格をサポートできる。各ネットワークインタフェースを使用することによって、データパケットをある伝送システムから別の伝送システムに転送できる。また、ルータ112は、それぞれが異なるネットワークプレフィックスを有する、サブネットと呼ばれるコンピュータデバイスの2以上の論理グループを接続するために使用してもよい。
図1に示すように、ルータ112は、企業内、企業とインターネットとの間、又はインターネットサービスプロバイダのネットワーク間の接続を提供できる。幾つかのルータ112は、様々なインターネットサービスプロバイダを相互接続するように構成してもよく、大規模な企業ネットワーク内で使用してもよい。より小さいルータ112は、一般に、ホームネットワーク及びオフィスネットワークのインターネットへの接続を提供する。
図1に示すルータ112は、エッジルータ、サブスクライバエッジルータ、プロバイダ間ボーダルータ、コアルータ、インターネットバックボーン、ポート転送、音声/データ/ファックス/ビデオ処理ルータ等のネットワーク伝送に適した任意のルータを表すことができる。
【0047】
インターネットサービスプロバイダ(ISP)102は、インターネットへのアクセス、利用、又は参加のためのサービスを提供する組織である。ISP102は、商用、コミュニティ所有、非営利、又は個人所有等の様々な形態で組織化できる。ISP102によって一般的に提供されるインターネットサービスは、インターネットアクセス、インターネット中継、ドメイン名登録、ウェブホスティング、ユースネットサービス、及びコロケーションを含む。
図1に示すISP102は、ホスティングISP、中継ISP、仮想ISP、無料ISP、無線ISP等の任意の適切なISPを表すことができる。
【0048】
ネットワークサービスプロバイダ(NSP)104は、インターネットサービスプロバイダへの直接のインターネットバックボーンアクセスを提供することによって、帯域幅又はネットワークアクセスを提供する組織である。ネットワークサービスプロバイダは、ネットワークアクセスポイント(network access point:NAP)へのアクセスを提供できる。ネットワークサービスプロバイダ104は、バックボーンプロバイダ又はインターネットプロバイダとも呼ばれる。ネットワークサービスプロバイダ104は、電気通信業者、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、及び高速インターネットアクセスを提供するケーブルテレビ運営業者を含むことができる。また、ネットワークサービスプロバイダ104は、情報技術業者を含むこともできる。
【0049】
図1に示すシステム100は、単なる例示であり、ネットワークと演算デバイスとの間でデータを伝送するために多くの異なる構成及びシステムを構築できる。ネットワーク形成は、カスタマイズ可能性(customizability)が高いため、コンピュータ間又はネットワーク間でデータを伝送するための最適パスを判定する際にも、カスタマイズ可能性をより高めることが望まれている。以上の観点から、ここでは、コンピュータ又は特定の企業の特定のグループ化に良好に適合する最適パスアルゴリズムを判定する際に、カスタマイズ可能性をより高めるために、最適パス計算を外部デバイスにオフロードするためのシステム、方法、及びデバイスを開示する。
【0050】
図2は、データストア200に格納されたデータの論理レイアウトと、データストア200内のデータにアクセスするためのアドレス指定メカニズムとを示している。アドレス指定メカニズムは、データベースURL212、テーブルURL214、及びオブジェクトURL216を含む。データストア200は、柔軟性が向上されたパブリッシュ/サブスクライブ(「PUBSUB」又は「Pub/Sub」)データベースのクライアント/サーバベースのモデルとして実装できる。データストア200は、データベースホストサーバにより、プロデューサと、サブスクライバとの間の2ホップデータパスを提供できる。ホストサーバ310は、プロデューサとサブスクライバとの間に挿入できる。
【0051】
データストア200は、中間ノード204及びリーフノード206を含むデータベースディレクトリツリー202を含む。リーフノード206は、データベースコンテンツツリー208に格納されたテーブル210と通信する。テーブル210は、
図2に示すように、オブジェクト1、オブジェクト2、オブジェクト3等の複数のオブジェクトに関する情報を格納する。リーフノード206は、データベースURL212を介してアクセス可能である。データベースURL212は、リーフノード206へのアクセスのために、クライアントアカウントに提供できる。同様に、テーブル210は、テーブルURL214を介してアクセス可能であり、オブジェクトは、オブジェクトURL216を介してアクセス可能である。
【0052】
一実施形態では、データストア200は、更に、アプリケーションがアプリケーションによって生成されたデータのデータストアホストサーバ310として振る舞うことを可能にするホストライブラリを含む。データセットがホストサーバ上でホストされて組み込まれ、ホスティングアプリケーションによって生成される場合、プロデューサとホストサーバの間の追加のプロセス間通信(Inter Process Communication:IPC)ホップを省略できる。一実施形態では、データストア210は、データベースホストとプロデューサデバイスを組み合わせることによって、プロデューサからサブスクライバへの1ホップダイレクトデータパスを提供できる。
【0053】
データは、階層データベースディレクトリツリー202に格納してもよい。データベースディレクトリツリー202により、データのワイルドカードサブスクリプションが可能になる。ワイルドカードサブスクリプションは、例えば、特定目的(ad hoc)、予期しない(unexpected)、単発(one-off)、又はサブスクライバがパブリッシャにデータを要求するその他の特異なイベントであってもよい。データのワイルドカードサブスクリプションは、複数のプロデューサデバイスによって生成されたデータセットにまたがることがある。あるいは、ワイルドカードサブスクリプションが、複数のプロデューサデバイスによって生成されたデータセットにまたがることがある。あるいは、ワイルドカードサブスクリプションは、複数のデータベースホストサーバ310に亘ってホストしてもよい。プロデューサデバイスがデータベースホストを含む場合、ワイルドカードサブスクリプションは、適切に分割されると、プロデューサとサブスクライバの間に複数の並列データパスを提供することによって、効果的な水平スケーリングを提供する。
【0054】
ここで説明するデータストアの1つの利点は、プロデューサ自体が各サブスクライバにサービスを提供するオーバーヘッドを維持しなくてもよいという点である。これに代えて、1つの又は可能性として複数のホストサーバ310にオーバーヘッドをオフロードできる。
【0055】
ここで説明するデータストアの更なる利点は、単一のプロデューサによって生成されたデータセット全体を、適切なデータパーティションを使用してサブセットに分割できることである。データパーティションは、必要に応じて異なるデータベースホストサーバ310に割り当てることができる。この分割により、プロデューサとサブスクライバの間に並列データパスを作成しながら、水平スケーリングが可能になる。例えば、複数のデータベースホストサーバ310は、それぞれ、プロデューサとサブスクライバとの間に並列データパスを作成できる。更に、データストア200サーバコンポーネントを別のサーバクラスタ上にホストすることによって、処理オーバーヘッドの他のデバイスへのオフロードを補助できる。
【0056】
一実施形態では、ここで説明するデータストアは、ランタイム診断及びシステム監視のサポートを提供する。例えば、データストアは、データストアのパブリッシュ/サブスクライブインフラストラクチャを使用して、全てのデータストアクライアントから診断情報を収集できる。
【0057】
図3は、最適パス計算とルートの保存をデータストア302にオフロードするためのシステム300の概略図である。このシステムは、複数のアプリケーションR1、R2、R3、Rnと通信するデータストア302を含む。データストア302は、メタデータ306と通信するインデックスサーバ304を含む。メタデータ306は、あるデータが共有ディスクストレージ312内のどこに位置しているかを示す指示情報を提供する。共有ディスクストレージ312は、複数のデータストレージ312a、312b、312c、312nを含む。インデックスサーバ304は、処理プラットフォーム308と通信し、処理プラットフォーム308は、共有ディスクストレージ312にアクセスする。インデックスサーバ304は、特定のデータが共有ディスクストレージ312内のどこにあるかを示す指示情報を処理プラットフォーム308に提供するように構成されている。インデックスサーバ304は、メタデータ306に基づいて、この判定を行う。データストア302は、処理プラットフォーム308と通信するホストサーバ310を含む。ホストサーバ310により、処理プラットフォーム308は、共有ディスクストレージ312内の情報を更新、追加、又は削除することによって、共有ディスクストレージ312に書き込みを行うことができる。処理プラットフォーム308は、それぞれがプロセッサ及びキャッシュストレージを含む複数のホストを含むことができる。各ホストは、共有ディスクストレージ312内の情報に対する読出及び書込を行うように構成できる。
【0058】
図4は、情報がデータストア302にオフロードされ、データストア302がスイッチ又はルータに対してローカルである実施形態を示す。スイッチ又はルータは、更に、ハードウェア416及びソフトウェアスタック414を含む。ハードウェア416は、コンピュータ又はネットワーク間のデータパケットの伝送を可能にする物理接続を提供する。ソフトウェアスタック414は、最適パスを判定し、その宛先デバイスの最適パスに沿ってデータパケットを転送するために、プロセッサ又はハードウェア416によって実装される命令を含む。
【0059】
図5は、情報がデータストア302にオフロードされ、データストア302がクラウドネットワーク514を介してアクセス可能なシステム500の実施形態を示す。一実施形態では、データストア302は、複数のネットワーキングデバイスR1、R2、R3、Rnによってアクセス可能なクラウドベースのデータベースである。
【0060】
図6は、データストア内のプロデューサ、プロデューサコンシューマ及びコンシューマ間の通信の概略図である。一実施形態では、システムに関連する情報を格納するネットワーキングデバイスに対してローカルなデータストア602がある。データストア602は、1以上のルータ又はスイッチの最適パス情報を格納するデータベースであってもよい。データストア602は、更に、CPU使用率、温度、ファン速度等のシステム状態情報、及びLED又は他のデバイス等の周辺機器の状態情報を格納してもよい。データストア602は、監視エージェントにとって有用な様々な情報を格納してもよい。データストア602内の情報は、そのような情報を必要とする可能性がある別のコントローラ又はデバイスにストリーミングできる。データストア602は、データベースインデックスを含むことができ、複数のホストを含むことができる。複数のホストのそれぞれは、プロセッサ及びキャッシュメモリを含むことができる。
図6に示す実施形態では、データストア602は、データベースホスト1、データベースホスト2、データベースホスト3、…データベースホストnを含む。
【0061】
データストア602は、プロデューサ604、プロデューサコンシューマ606及びコンシューマ608と通信する。プロデューサ604は、データを生成し、データストア602に追加するエンティティである。コンシューマ608は、データストア602内のデータを読み出すエンティティである。プロデューサコンシューマ606は、データセットを生成し、データストア内のデータセットを読み取ることができるエンティティである。一実施形態では、プロデューサコンシューマ606は、データストア602内に第1のデータセットを生成し、データストア602内の第2のデータセットを読み取ることができる。データは、例えば、ステータス更新、計算結果、状態情報等を含む。
【0062】
図7は、データストアの実施形態の概略図である。
図7に示すデータストアは、データストアの単一デバイス内のマルチノードのためのデータベースクラスタを示す。データストアは、パブリッシュ/サブスクライブ型のデータストアとして実装できる。データストアは、個別のブロックとして示される2つのノードを含む。
図7に示す例では、データストアは、NodeA及びNodeNを含む。各ノードは、内部ファブリック726によって接続された同じコンポーネントを含む。各ノードは、データストアクライアントと通信するプロデューサ704a、704nと、データストアクライアントと通信するプロデューサコンシューマ706a、706nと、データストアクライアントと通信するコンシューマ708a、708nとを含む。各ノードは、状態情報を記憶するローカルデータストア702a、702nを含む。ローカルデータストア702a、702nは、DBホスト1、DBホスト2、DBホスト3、DBホストn等の複数のデータベースホストと共にデータベースインデックスを含む。ローカルデータストア702a、702nは、レプリケータエージェント712a、712nと通信する。レプリケータエージェント712a、712nは、データストアクライアント714a、714nと通信し、レプリケータロジック716a、716nを含む。永続的ストレージエージェント718a、718nは、データストアクライアント720a、720nと通信し、データを格納するための永続的ストレージ722a、722nを有する。永続的ストレージエージェント718a、718nは、データを格納するディスクストレージ724a、724nと通信する。レプリケータエージェント712a、712nは、NodeAとNodeNとの間でデータストア情報を共有するための内部ファブリック726、及びこの内部ファブリック726に接続可能な他のノードと通信する。
【0063】
図7に示すシングルノードアーキテクチャを使用する場合、1以上の別個のデータベースホストサーバを実装して、プロデューサとコンシューマとの間のデータフローを提供し、分散データストアをホストできる。データベース全体を独立したデータセットに分割してもよい。ホスティングサーバプロセスは、1以上の独立したセットに専用のものであってもよい。単一のデータベースインデックスサーバを導入して、ホストサーバとこれらがホストする対応するデータセットのマッピングを維持してもよい。
【0064】
一実施形態では、コンシューマ708a、708nは、データストアクライアントによってデータベースインデックスサーバ(304)に接続できる。データベースクライアントは、データベースインデックスサーバ304に接続して、特定のデータセットに関心を登録し、サブスクライブできる。プロデューサ704a、704nは、データストアクライアントによってデータベースインデックスサーバ304に接続し、使用するホスティングサーバに関する情報を受信し、更にデータベースに関する更新を受信できる。プロデューサ704a、704nは、特定のホスティングサーバに接続し、追加、変更、削除、及びデータオブジェクトをパブリッシュできる。コンシューマ708a、708nは、新しいオブジェクト、変更されたオブジェクト、及び/又は削除されたオブジェクトがデータベースインデックスサーバ304から通知され、適切なホスティングサーバに接続されて、プロデューサ704a、704nによって生成されたデータセットをダウンロードできる。
【0065】
独立したデータストアレプリケータエージェント712a、712nは、コンシューマ及びプロデューサの両方として動作するデータストアクライアントとして、データストア702a、702nに接続できる。レプリケータエージェント712a、712nは、同一デバイス内の他のノードとの間でのデータベースの複製を支援するために使用される。レプリケータエージェント712a、712nは、ローカルノード上で生成された全てのデータオブジェクトのコンシューマとして動作し、リモートノード上で生成された全てのデータオブジェクトのプロデューサとして動作できる。
【0066】
独立した永続的ストレージエージェント718a、718nは、プロデューサ及びコンシューマの両方としてデータストア702a、702nに接続し、永続的ストレージ722a、722n又はディスク724a、724n等の永続的メモリストレージデバイスへのデータオブジェクトの格納及び復元を支援できる。
【0067】
データベースのサイズが大きくなることに応じて、より多くのサーバを配置して、負荷分散のバランスをとってもよい。データベースを独立したパーティションに分割して、各サーバがパーティションのサブセットをホストできるようにしてもよい。
【0068】
図8は、クラウドコンピューティングネットワークにオフロードされたリモートコントローラロジック812によって制御される複数のデバイスを示す概略図である。DeviceA、DeviceB、及びDeviceNを含む各デバイスには、NodeA、NodeB、及びNodeNである1以上のノードが含まれている。
図8に示す実施形態では、3つの別個のデバイスを示しているが、本開示の範囲から逸脱することなく、任意の数のデバイス及びノードが存在し得ることは当然である。各デバイスは、クラウドネットワーク814を介してコントローラロジック812からの通信を受信する構成エージェント806を含む。各デバイスは、クラウドネットワーク814を介してコントローラロジック812にデータを提供する監視/遠隔測定エージェント808を含む。各デバイスは、データストア802と、このデータストア802と通信する1以上のアプリケーションとを含む。
【0069】
デバイスとノードは、独立しており、それぞれが独自のデータストアを有している。デバイスとノードの間にデータストアレプリケーションはない。デバイス及びノードは、それぞれの監視/遠隔測定エージェント808から個別にデータを送信する。コントローラロジック812は、複数のデバイス及びノードからの結合されたデータに基づいて処理を実行し、処理の結果に基づいて各ノード構成更新を送信する。
【0070】
図9は、クラウド内にホストされるデータストアのためのマルチノードアーキテクチャのデータベースクラスタの実施形態の概略図である。データストア902は、複数のデバイスのプロデューサ904a、904n、プロデューサコンシューマ906a、906n、及びコンシューマ908a、908nと通信する。
図9に示す例では、データストア902は、2つの別個のデバイスのプロデューサ、プロデューサコンシューマ及びコンシューマと通信する。図示のように、データストア902は、データベースインデックスと、データベースホスト1、データベースホスト2、データベースホスト3、…データベースホストnの複数のデータベースホストとを含む。データストア902は、様々な実施形態において、任意の数のデータベースホストを有することができる。データストア902は、永続的ストレージエージェント918と通信する。永続的ストレージエージェント918は、データストアクライアント920と通信し、永続的ストレージ922を含む。永続的ストレージエージェント918は、情報をディスクストレージ924に格納する。プロデューサ904a、904nとデータベースインデックス、データベースホストNまでとの間の全ての通信チャネルは、SSL又は同様のメカニズムを介して保護(認証及び暗号化)できる。これにより、コンポーネント間で交換されるデータのプライバシーが維持される。
【0071】
データストア902及び永続的ストレージエージェント918は、クラウドベースのストレージに格納されるように、クラウドネットワーク928にオフロードしてもよい。データストア902及びディスクストレージ924に格納されたデータは、複数の異なるデバイスがアクセスできる。データストア902は、データストアURLを介してクライアントアカウントがアクセスできるようにしてもよい。データストア902は、1以上のクラウドネットワーク928に亘るクラウドベースストレージの1以上の配置に亘って格納してもよい。データストア902は、複数の地理的位置からアクセス可能である。また、データストア902は、ネットワーキングデバイスにローカルに格納してもよく、クラウドベースのストレージに単独で格納してもよい。
【0072】
図10は、デバイス1010のノード1004と、クラウドネットワーク1028に格納されたコントローラロジック1012との間で通信を行うためのシステム1000の概略図である。デバイス1010は、ここに説明するように、スイッチ106又はルータ112であってもよい。ノード1004は、構成エージェント1006及び監視/遠隔測定エージェント1008を含む。デバイス1010は、データストア1002を含む。データストア1002は、ノード1004と共にローカルに格納してもよく、デバイス1010に格納し、マルチノードがアクセスできるようにしてもよく、クラウドストレージにオフロードしてもよく、外部に格納し、複数のデバイス1010がアクセスできるようにしてもよい。構成エージェント1006は、コントローラロジック1012の形式で命令を受信する。コントローラロジック1012は、クラウドネットワーク上のクラウドベースのストレージに格納され、ネットワークを介してデバイス1010がアクセス可能である。構成エージェント1006は、監視/遠隔測定エージェント1008に命令を提供する。監視/遠隔測定エージェント1008は、データストア1002から情報を受信する。データストア1002は、図に示すように、アプリケーション1、アプリケーション2、…アプリケーションNの複数のアプリケーションに関する情報を含むことができる。構成エージェント1006とコントローラロジック1012との間、及び監視/遠隔測定エージェント1008とコントローラロジック1012との間の全ての通信チャネルは、SSL又は同様のメカニズムを使用して保護(認証及び暗号化)され、コンポーネント間で交換されるデータのプライバシーを維持できる。
【0073】
構成エージェント1006は、ネットワーキングデバイス上の構成を管理する役割を担う。構成エージェント1105は、通常、ネットワーキングデバイスを構成及びプロビジョニングするために、コマンドラインインタフェース(command-line interface)、NETCONF、RESTCONF、又は他のインタフェースを提供する。BGP又はルーティング情報ベース(RIB)等のネットワーキングデバイス上で実行される特定のアプリケーションは、構成エージェント1006から構成変更の通知を受けることができる。構成エージェント1006は、これらのアプリケーションが構成を読み取り、これに従って動作できるメカニズムを提供する。
【0074】
監視/遠隔測定エージェント1008は、データストア内の変更にサブスクライブし、接続を介してコントローラのような外部エンティティにこれらの変更を送信する。コントローラは、複数のデバイスから遠隔測定データ(telemetry data)を受信し、デバイス間に亘る幾つかの分析を実行し、構成の更新をプッシュバックして、デバイス間に亘る動作を最適化できる。遠隔測定は、一例として、簡易ネットワーク管理プロトコル(simple network management protocol:SNMP)と同様であってもよいが、周期的ポーリングの代わりに、監視/遠隔測定エージェント1008は、更新を外部監視デバイスにプッシュする。
【0075】
コントローラロジック1012は、コントローラと呼ぶこともできる。コントローラロジック1012は、複数のデバイスを管理する。コントローラロジック1012は、構成更新を複数のデバイスにプッシュし、監視/遠隔測定エージェント1108から受信した更新を介して複数のデバイスからステータス情報を受信する。コントローラロジック1012は、複数のデバイスからのルートデータに亘って最適パス計算(Best Path calculation)等の分析を実行し、適切な結果を各デバイスにプッシュバックできる。これにより、各デバイスが自身の最適パス計算をローカルで実行する場合と比較して、ネットワーク全体のパフォーマンスが向上する。
【0076】
アプリケーションは、データストア1002内のデータに基づいて動作を実行するプログラム又はサービスである。アプリケーションの例としては、ボーダゲートウェイプロトコル(Border Gateway Protocol:BGP)、インターミディエイトシステムトゥインターミディエイトシステム(intermediate system to intermediate system:ISIS)、ルーティング情報ベース(routing information base:RIB)、オープンショーテストパスファースト(Open Shortest Path First:OSPF)等がある。
【0077】
図11は、マルチノードデバイスのためのコントローラロジックをクラウドベースのコントローラにオフロードするシステムの概略図である。例示的アーキテクチャ1100は、別個のブロックNode1、NodeNとして示される2つのノードを含む。なお、本開示の異なる実施形態及び具体例に適した任意の数のノードが存在し得ることは当然である。Node1は、内部ファブリック1126と通信するレプリケータエージェント1104を含み、内部ファブリック1126は、NodeNのレプリケータエージェント1104との通信を提供する。レプリケータエージェント1104は、データストアの異なるインスタンス間でデータの一貫性を保つ役割を果たす。レプリケータエージェント1104は、冗長性又はクラスタリングの目的で、あるデータストアの変更を別のデータストアに複製する。Node1の構成エージェント1106は、クラウド1128ネットワークと通信し、このネットワークは、データストア1102のためのコントローラロジック1112を含む。各ノードは、データストア1102のコピーを含む。データストア1102内の情報は、アプリケーション1、アプリケーション2、…アプリケーションNの複数のアプリケーションによってアクセス及び使用できる。NodeNの監視/遠隔測定エージェント1108は、データストア1102及びクラウド1128ネットワークと通信する。Node1の構成エージェント1106は、クラウド1128ネットワークを介してNodeNの監視/遠隔測定エージェント1108と通信できる。
【0078】
図12は、データストア1202の直接プロセス間通信(inter-process communication:IPC)モデルの概略図である。プロセス間通信チャネルは、点線で示されている。点線(IPC)と実線の違いは、IPC接続がデータストアをバイパスすることである。IPC接続は、データストアクライアントを互いに直接接続するため、データストアを経由する実線よりもホップが1つ少なくなる。IPCチャネルは、図に示すように、プロデューサ1204、プロデューサコンシューマ1206及びコンシューマ1208のデータストアクライアントと、レプリケータエージェント1214のデータストアクライアント1210及び永続的ストレージエージェント1218のデータストアクライアント1220とのそれぞれの間に存在する。Node1及びNodeNを含む各ノードは、自らのデータストア1202を維持する。各ノードは、1以上のプロデューサ1204、プロデューサコンシューマ1206、及びコンシューマ1208を含む。各ノードは、データストアクライアント1210及びレプリケータロジック1216を含むレプリケータエージェント1214を有する。各ノードは、永続的ストレージエージェント1218を含み、永続的ストレージエージェント1218は、データストアクライアント1220と、ストレージをディスク1224ストレージにオフロードする永続的ストレージ1222を含む。
【0079】
図13は、データストアのインデックスサーバ304の概略図である。データストアの実施形態は、インデックスサーバ304及びホストサーバ310を含むことができる。インデックスサーバ304は、シングルノード及びマルチノードの実施形態においてデータストアと共に使用できる。インデックスサーバ304は、ホストサーバ情報1306を格納するホストサーバデータベース1304を含む。インデックスサーバ304は、データベース1308へのクライアントサーバ接続を含み、これによりクライアントサーバ接続1310を実現する。インデックスサーバ304は、データパーティション情報1314を含むデータパーティションデータベース1312を含む。インデックスサーバ120は、データサブスクリプション情報1318を含むデータサブスクリプションデータベース1316を含む。
【0080】
インデックスサーバ304は、データストア動作及びクエリを管理する。インデックスサーバ304は、データストア内のどのホストデバイスにどの情報がアンカーされているかを知っている。データストアは、それぞれが実行プラットフォームにおける実行ノードとして機能する複数のホストデバイスを含む。各ホストデバイスは、1以上のプロセッサ及びキャッシュメモリを含むことができる。インデックスサーバ304は、メタデータを読み出して、複数のホストの各キャッシュメモリにローカルに既に格納されている情報を判定できる。インデックスサーバ304は、データストア内の複数のホストインスタンスのそれぞれに対して負荷分散動作を実行するように構成されている。
【0081】
図14は、データストアのホストサーバ310の概略図である。ホストサーバは、シングルノードアーキテクチャ又はマルチノードアーキテクチャでデータストアと共に使用できる。ホストサーバ310は、クライアントサーバ接続1410へのインデックスサーバ接続1404を実現し、これにより、クライアントは、データストアにアクセスし、データストアを照会できる。ホストサーバ310は、クライアントデータベース接続1406を実現し、これにより、データストア1408へのクライアントサーバ接続を実現する。ホストサーバ310は、データサブスクライブデータベース1412を含み、これにより、サブスクライバ接続1414がデータパーティション情報1416にアクセスできる。ホストサーバ310は、データパーティションデータベース1418を含み、データパーティションデータベース1418は、データサブスクライブ情報1420を含む。
【0082】
ホストサーバ310は、ネットワーキングデバイスとデータストアとの間で初期接続が確立された後、データストア内のデータへの接続を提供する。初期接続は、インデックスサーバ304によって確立してもよい。ホストサーバ310は、データがデータサーバ内のどこにあるかを示す指示情報を提供する。ホストサーバ310は、データストアに格納されたデータへの書き込みを可能にする。
【0083】
図15は、パブリッシュ/サブスクライブデータストアにおけるデータ操作のためのプロセスフロー1500の概略図である。プロセスフロー1500は、データストア1502、パブリッシャデバイス1504、及びサブスクライバデバイス1506によって実施してもよい。パブリッシャデバイス1504及びサブスクライバデバイス1506のそれぞれは、BGPインスタンス及び/又はルータ、スイッチ等のネットワーキングデバイスであってもよい。パブリッシャデバイス1504及びサブスクライバデバイス1506は、幾つかのローカルストレージを含むことができ、データストア1502に大量のデータをオフロードするように構成できる。データストア1502の少なくとも一部のコピーは、パブリッシャデバイス1504及び/又はサブスクライバデバイス1506にローカルに格納してもよい。データストア1502は、クラウドベースのストレージに格納でき、ネットワーク接続を介して、パブリッシャデバイス1504及び/又はサブスクライバデバイス1506がアクセスできるようにしてもよい。
【0084】
処理フロー1500において、パブリッシャデバイス1504は、格納すべきデータを判定し、1508において、そのデータをローカルに格納する。データは、例えば、CPU使用率、温度、ファン速度、周辺機器の状態等のデバイスの状態情報を含むことができる。デバイスの状態情報は、監視エージェントにとって有用である可能性があり、そのような情報を必要とする他のコントローラ又はデバイスにストリーミングしてもよい。データは、第1の場所から最終的な宛先へデータを送信するために必要なホップを示す最適パス情報を含むことができる。最適パス情報は、BGPに従ってデバイスによってローカルに判定される。最適パス情報は、最適パスコントローラによって判定してもよい。全てのサブスクライバデバイスが取得できるように、最適パス情報をデータストアにパブリッシュしてもよい。
【0085】
プロセスフローにおいて、パブリッシャデバイス1504は、1510において、データをデータストア1502にパブリッシュする。データストア1502は、1512において、データを格納し、データを利用可能にする。サブスクライバデバイス1506は、データが利用可能であることを示す通知をデータストア1502から受信できる。サブスクライバデバイス1506は、1514において、データを要求する。データストア1502は、データストア1502内に格納されたデータを照会し、サブスクライバデバイス1506に応答を提供する。サブスクライバデバイス1506は、1516において、データを受信する。
【0086】
一実施形態では、データは、パブリッシャデバイス1504及び/又はデータストア1502及び/又はサブスクライバデバイス1506によって暗号化される。データストア1502は、データを暗号化し、暗号化されたデータをサブスクライバデバイス1506に提供してもよい。データストア1502は、サブスクライバデバイス1506がデータを読み取ることが許可されていることを保証するために認証を実行してもよい。
【0087】
プロセスフロー1500及びネットワークコンピューティング環境におけるデータストア1502の使用は、多くの利点を有する。データストア1502は、デバイスの複製データを格納する外部データベースとして機能する。データストア1502は、デバイスの外部に配置できる。データストア1502は、データストア1502に接続され、データストア1502との通信を受信及び要求できる全てのデバイスを示す指示情報を受信できる。これにより、様々な利益が得られる。データストア1502は、データストア1502に接続された全てのデバイスの状態を認識する中央エージェントとして機能できる。データストア1502は、更に、データストア1502と通信する各デバイス上で実行されているソフトウェアのタイプ及びそのソフトウェアのバージョンを知る中央エージェントとして機能できる。
【0088】
データストア1502に格納されたデータは、クラッシュ時に動作を再開するために使用できる。断続的な失敗又は回帰のために1以上のデバイスに障害が発生した場合、データストア1502内のデータを取り出して、障害が発生しなかったかのように動作を再開できる。データストア1502は、データストア1502のネットワーク内の各デバイスのバックアップとして機能する。
【0089】
データストア1502内の情報は、一度に複数のサブスクライバデバイス1506に提供できる。これにより、多数の利点が得られ、サブスクライバデバイス1506からの情報要求をサービスすることによってパブリッシャデバイス1504がバックログに記録されることが防止される。例えば、コンピュータネットワークは、多数のデバイスを含むことができ、これらのデバイスは、最適パス情報を共有することができる。この例では、コンピュータネットワークには、device1、device2、device3の3つのデバイスがある。ある具体例では、device1とdevice2が、それぞれdevice3からの情報を必要とする。device3がこれらの要求に応答する必要がある場合は、device3の処理及びストレージリソースをサービス要求と共にログダウンできる。ここで、コンピュータネットワークがデータストア1502を含む場合、device3は、代わりにデータストア1502に情報を公開でき、データストア1502は、情報を保存でき、データストア1502は、他のデバイスからのデータに対する要求を処理できる。これにより、各デバイス内の処理及びメモリリソースが解放され、より高い優先度の動作が実行され、コンピュータネットワーク全体及び外部コンピュータネットワークへのデータ伝送の円滑な動作が保証される。
【0090】
図16は、データベースコンテンツにメタデータを格納する格納構造1600の概略図である。格納構造1600は、ここで説明するデータストアにおけるデータストレージの例示的な実施形態を提供する。データストアでは、JSON(JavaScript Object Notation)データスキーマ定義標準によるユーザ定義のデータモデルを使用できる。データモデルは、階層システム内のテーブル、オブジェクト、及び属性の構造を提供できる。例えば、データストアにより、サードパーティのアプリケーションを含む任意のアプリケーションが、JSONベースのデータモデルを定義し、及びAPI(アプリケーションプログラムインタフェース)を使用して、同じJSONベースのデータモデルに従うデータを生成し、これにサブスクライブすることができる。
【0091】
図16に示す格納構造1600は、データベース内の全てのテーブルタイプ1606及びデータベース内の全てのオブジェクトタイプ1604に対するデータベースメタデータ1602を含む。全てのテーブルタイプ1606のデータベースメタデータ1602は、
図16に示すように、テーブル定義1、テーブル定義2、…テーブル定義nのテーブル定義を含む。テーブル定義は、テーブルインデックス1608によって定義できる。データベースメタデータ1602は、テーブルインデックス1、テーブルインデックス2、…テーブルインデックスnの各テーブル定義に対するテーブルインデックスを含むことができる。各テーブルインデックスは、属性定義1、属性定義2、…属性定義nの属性定義を含むことができる。全てのオブジェクトタイプ1604に対するデータベースメタデータ1602は、オブジェクト定義1、オブジェクト定義2、…オブジェクト定義n等、データベース内の各オブジェクトに対するオブジェクト定義を含むことができる。オブジェクト定義は、更に、全ての属性タイプ1610について、データベースメタデータ1602に関連付けることができる。
【0092】
一実施形態では、データストア格納構造は、ユーザ定義スキーマによって指定される。ユーザ定義スキーマは、JSON又はその他の適切な言語で指定できる。このような実施形態では、データストアを完全にカスタマイズして、アレイ及びサブオブジェクトを含む属性のための多数のデータタイプに対する組み込み型サポートを提供できる。更に、この実施形態は、インデクスメカニズムを使用してテーブル下のオブジェクトにインデクスを付すためのサポートを提供する。一実施形態では、データストアは、データを表現可能状態転送(Representational State Transfer:REST)及び遠隔測定インタフェースにカプセル化できるJSON/XMLフォーマットでデータを格納できる。REST及び遠隔測定インタフェースは、データベースの効率を判定するために、リモートコンピューティングエンティティによる分析の監視を実現できる。データストアのデータスキーマ定義では、データに対して既に定義されているデータモードに準拠する手法で、REST/NETCONFインタフェースからデータを提供できる。
【0093】
図17は、ネットワークデバイスからデータストアにデータのストレージをオフロードする方法1700の概略的ブロック図である。方法1700は、ここで説明するデータストア又は任意の適切な演算デバイスによって実行できる。方法1700は、ここで説明するように、データストアのインデックスサーバ304及び/又はホストサーバ310によって実行できる。
【0094】
方法1700は、1702において、ネットワークコンピューティング環境内のデータストアによって、パブリッシャデバイスからデータを受信することを含み、データストアは、パブリッシャデバイスから独立している。方法1700は、1704において、データベーススキーマに従ってデータを1以上のデータベースパーティションに分割することを含む。方法1700は、1706において、処理プラットフォーム内の複数のホストによってアクセス可能な複数の共有ストレージデバイスの1以上に亘ってデータを保存することを含む。方法1700は、1708において、サブスクライバデバイスからデータの要求を受信することを含み、データストアは、サブスクライバデバイスから独立している。方法1700は、1710において、データをサブスクライバデバイスに提供することを含む。
【0095】
図18は、ネットワーキングデバイスの1以上のデータストアを管理する方法1800の概略的ブロック図である。方法1800は、ここで説明するインデックスサーバ304又は任意の適切な演算デバイスによって実行できる。
【0096】
方法1800が開始され、1802において、演算デバイスが、ネットワーキングデバイスのデータストア内のデータセットのマッピングを含むデータベースインデックスを維持する。方法1800は続いて、1804において、演算デバイスが、データストア内のデータセットのそれぞれのパブリッシャ及びサブスクライバのリストを維持する。方法1800は続いて、1806において、演算デバイスが、データストア内の1以上のデータセットが変更された旨の通知の受信に応答してデータベースインデックスを更新する。方法1800は続いて、1808において、演算デバイスが、特定のデータセットをサブスクライブしたいことを示すサブスクライバからの通知の受信に応答してパブリッシャ及びサブスクライバのリストを更新する。
【0097】
図19は、例示的な演算デバイス1900のブロック図である。演算デバイス1900を使用して、ここで説明する様々な手順を実行できる。一実施形態では、演算デバイス1900は、インデックスサーバ304及び/又はホストサーバ310を含むデータストアとして機能できる。演算デバイス1900は、ここに記載の様々な監視機能を実行でき、ここに記載のアプリケーションプログラム又は機能等の1以上のアプリケーションプログラムを実行できる。演算デバイス1900は、デスクトップコンピュータ、インダッシュコンピュータ、車両制御システム、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ等の多種多様な演算デバイスの何れであってもよい。
【0098】
演算デバイス1900は、1以上のプロセッサ1902と、1以上のメモリデバイス1904と、1以上のインタフェース1906と、1以上の大容量ストレージデバイス1908と、1以上の入出力(I/O)デバイス1910と、表示デバイス1930とを含み、これらは、全てバス1912に接続されている。プロセッサ1902は、メモリデバイス1904及び/又は大容量ストレージデバイス1908に格納された命令を実行する1以上のプロセッサ又はコントローラを含む。また、プロセッサ1902は、キャッシュメモリ等の種々のタイプのコンピュータ可読媒体を含むことができる。
【0099】
メモリデバイス1904は、揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory:RAM)1914)及び/又は不揮発性メモリ(例えば、読出専用メモリ(read-only memory:ROM)1916)等の種々のコンピュータ可読媒体を含む。また、メモリデバイス1904は、フラッシュメモリ等の書換可能ROMを含むことができる。
【0100】
大容量ストレージデバイス1908は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ(フラッシュメモリ等)等の種々のコンピュータ可読媒体を含む。
図19に示すように、具体的な大容量ストレージデバイスは、ハードディスクドライブ1924である。大容量ストレージデバイス1908には、種々のコンピュータ可読媒体からの読出及び/又は種々のコンピュータ可読媒体への書込を可能にするために、種々のドライブを含めることもできる。大容量ストレージデバイス1908は、リムーバブルメディア1926及び/又は非リムーバブルメディアを含む。
【0101】
入出力(I/O)デバイス1910は、データ及び/又は他の情報を演算デバイスに入力し又は演算デバイス1900から取り出すことを可能にする様々なデバイスを含む。I/Oデバイス1910には、カーソル制御デバイス、キーボード、キーパッド、マイクロホン、モニタ又は他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム等が含まれる。
【0102】
表示デバイス1930は、演算デバイス1900の1人以上のユーザに情報を表示できる任意のタイプのデバイスを含む。表示デバイス1930としては、例えば、モニタ、表示端末、映像投影デバイス等が挙げられる。
【0103】
インタフェース1906は、演算デバイス1900が他のシステム、デバイス、又はコンピューティング環境とインタラクションすることを可能にする様々なインタフェースを含む。インタフェース1906は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク、及びインターネットへのインタフェース等、任意の数の異なるネットワークインタフェース1920を含むことができる。他のインタフェースは、ユーザインタフェース1918及び周辺デバイスインタフェース1922を含む。また、インタフェース1906は、1以上のユーザインタフェース要素1918を含むことができる。更に、インタフェース1906は、プリンタ、ポインティングデバイス(マウス、トラックパッド、又は当業者に現在知られている任意の適切なユーザインタフェース、又は今後開発される任意の適切なユーザインタフェース)、キーボード等のためのインタフェース等、1以上の周辺インタフェースを含んでもよい。
【0104】
バス1912は、プロセッサ1902、メモリデバイス1904、インタフェース1906、大容量ストレージデバイス1908、及びI/Oデバイス1910が互いに、及びバス1912に接続された他のデバイス又はコンポーネントと通信することを可能にする。バス1912は、システムバス、PCIバス、IEEEバス、USBバス等の幾つかのタイプのバス構造のうちの1以上を表す。
【0105】
ここでは、説明のため、プログラム及び他の実行可能プログラム構成要素を個別のブロックとして示しているが、このようなプログラム及び構成要素は、演算デバイス1900の異なる記憶構成要素内に様々な時点で存在してもよく、プロセッサ1902によって実行される。これに代えて、ここに記載のシステム及び手順は、ハードウェアで実現してもよく、ハードウェア、ソフトウェア、及び/又はファームウェアの組み合わせで実現してもよい。例えば、ここに記載のシステム及び手順の1以上を実行するように1以上の特定用途向け集積回路(application specific integrated circuit:ASIC)をプログラムできる。
【0106】
上記の記述は、例示及び説明を目的としている。これは、本発明を開示された詳細な形式に排他的に限定することを意図するものではない。上記の教示を参照することにより、多くの変更及び変形が可能である。更に、前述の変形例の何れか又は全ては、任意に組み合わせることができ、本開示の更なる組み合わせ例を形成できる。
【0107】
更に、本開示の具体的な実施例を説明及び図示しているが、本開示は、そのように説明及び図示された部分の具体的な形態又は配置に限定されるものではない。本開示の範囲は、本願の特許請求の範囲によって定義され、あるいは、将来に提出される特許請求の範囲、本願に基づく別出願、及びこれらの均等物があれば、これらによって定義される。
【実施例】
【0108】
以下の実施例は、更なる実施形態に関する。
【0109】
実施例1は、単一のネットワーキングデバイス内のデータストアノードの複数のインスタンスを含むシステムであって、データストアノードの複数のインスタンスのそれぞれが、データストアと、データストアにデータをパブリッシュするためのデータストアとは独立したパブリッシャと、データストアから情報を受信するためのデータストアとは独立したサブスクライバと、パブリッシャ又はサブスクライバとしてデータストアに接続するように構成されたレプリケータエージェントと、パブリッシャ又はサブスクライバとしてデータストアに接続するように構成された永続的ストレージエージェントと、を有する、システムである。
【0110】
実施例2は、レプリケータエージェントが、データストアに接続してデータストアノードのローカルインスタンス上に生成されたデータオブジェクトのパブリッシャとして動作し、そして、データストアに接続してデータストアノードのリモートインスタンス上に生成されたデータオブジェクトのコンシューマとして動作することにより、同じ単一のネットワーキングデバイス内のデータストアノードの他のインスタンスからデータベースデータを複製するように構成されている、実施例1に記載のシステムである。
【0111】
実施例3は、永続的ストレージエージェントが、永続的データストレージデバイスにデータオブジェクトを格納するように構成されている、実施例1又は2に記載のシステムである。
【0112】
実施例4は、永続的データストレージデバイスが、複数のデータセットをまとめて保存する複数の共有ストレージデバイスを有し、複数の共有ストレージデバイスのそれぞれが、ホストサーバの各インスタンスによりアクセス可能である、実施例1~3の何れかに記載のシステムである。
【0113】
実施例5は、さらに、インデックスサーバの単一のインスタンスを有し、インデックスサーバが、データストア内のデータセットのマッピングを含むデータベースインデックスを維持し、そして、データストア内のデータセットのそれぞれのパブリッシャ及びサブスクライバのリストを維持するように構成されている、実施例1~4の何れかに記載のシステムである。
【0114】
実施例6は、インデックスサーバが、特定のデータセットにサブスクライブする通知をサブスクライバから受信するように構成されている、実施例1~5の何れかに記載のシステムである。
【0115】
実施例7は、インデックスサーバが、データストア内の1以上のデータセットへの更新を反映するためにデータベースインデックスを更新する通知をパブリッシャから受信するように構成されている、実施例1~6の何れかに記載のシステムである。
【0116】
実施例8は、データストアノードの複数のインスタンスのそれぞれがさらに、複数のサブスクライバデバイスからデータ処理要求を受信するためのインデックスサーバと、インデックスサーバにアクセス可能なメタデータと、データストアと通信するホストサーバと、データストア内の複数のデータセットをまとめて保存する複数の共有ストレージデバイスと、を有する、実施例1~7の何れかに記載のシステムである。
【0117】
実施例9は、さらに、クラウドベースのストレージにオフロードされたコントローラロジックを含み、コントローラロジックが、データストアノードの複数のインスタンスのそれぞれにアクセス可能である、実施例1~8の何れかに記載のシステムである。
【0118】
実施例10は、ネットワーキングデバイスがスイッチ又はルータである、実施例1~9の何れかに記載のシステムである。
【0119】
実施例11は、データストアのインデックスサーバであって、インデックスサーバが、非一時的コンピュータ可読媒体内に格納された命令を実行するように構成可能な1以上のプロセッサを有し、命令が、データストア内のデータセットのマッピングを含むデータベースインデックスを維持し、データストア内のデータセットのそれぞれのパブリッシャ及びサブスクライバのリストを維持し、データストア内の1以上のデータセットが変更された旨の通知の受信に応答してデータベースインデックスを更新し、そして、特定のデータセットをサブスクライブしたいことを示すサブスクライバからの通知の受信に応答してデータベースインデックスを更新する、インデックスサーバである。
【0120】
実施例12は、インデックスサーバが、単一のネットワーキングデバイス内のデータストアの複数のインスタンスを管理するインデックスサーバの単一のインスタンスである、実施例11に記載のインデックスサーバである。
【0121】
実施例13は、命令がさらに、クラウドベースのストレージからコントローラロジックを取り出すことを含む、実施例11又は12に記載のインデックスサーバである。
【0122】
実施例14は、命令がさらに、単一のネットワーキングデバイス内に配置されたデータストアの他のインスタンスへ/からデータストア内のデータセットを複製するように構成されたレプリケータエージェントからメッセージを受信することを含み、レプリケータエージェントが、パブリッシャ又はサブスクライバとしてインデックスサーバと相互動作することができる、実施例11~13の何れかに記載のインデックスサーバである。
【0123】
実施例15は、命令がさらに、永続的データストレージデバイス内にデータオブジェクトを格納するように構成された永続的ストレージエージェントからメッセージを受信することを含み、永続的ストレージエージェントが、パブリッシャ又はサブスクライバとしてインデックスサーバと相互動作することができる、実施例11~14の何れかに記載のインデックスサーバである。
【0124】
実施例16は、データストアのマルチノードアーキテクチャを管理する方法であって、方法が、データストア内のデータセットのマッピングを含むデータベースインデックスを維持し、データストア内のデータセットのそれぞれのパブリッシャ及びサブスクライバのリストを維持し、データストア内の1以上のデータセットが変更された旨の通知の受信に応答してデータベースインデックスを更新し、そして、特定のデータセットをサブスクライブしたいことを示すサブスクライバからの通知の受信に応答してデータベースインデックスを更新する、ことを含む、方法である。
【0125】
実施例17は、方法がインデックスサーバにより実行され、インデックスサーバが、単一のネットワーキングデバイス内のデータストアの複数のインスタンスを管理するインデックスサーバの単一のインスタンスである、実施例16に記載の方法である。
【0126】
実施例18は、さらに、クラウドベースのストレージからコントローラロジックを取り出すことを含む、実施例16又は17に記載の方法である。
【0127】
実施例19は、さらに、単一のネットワーキングデバイス内に配置されたデータストアの他のインスタンスへ/からデータストア内のデータセットを複製するように構成されたレプリケータエージェントからメッセージを受信することを含み、レプリケータエージェントが、パブリッシャ又はサブスクライバとしてインデックスサーバと相互動作することができる、実施例16~18の何れかに記載の方法である。
【0128】
実施例20は、さらに、永続的データストレージデバイス内にデータオブジェクトを格納するように構成された永続的ストレージエージェントからメッセージを受信することを含み、永続的ストレージエージェントが、パブリッシャ又はサブスクライバとしてインデックスサーバと相互動作することができる、実施例16~19の何れかに記載の方法である。
【0129】
なお、上述の構成、実施例、及び実施形態の任意の特徴は、ここに開示する構成、実施例、及び実施形態の何れかから得られる特徴の組み合わせを含む単一の実施形態において組み合わせることができる。
【0130】
ここに開示する種々の特徴は、当技術分野における重要な利点及び進歩を提供する。以下の特許請求の範囲は、これらの特徴の幾つかの例示である。
【0131】
本開示の前述の詳細な説明では、開示を合理化する目的で、開示の様々な特徴を1つの実施形態にまとめている。この開示方法は、特許請求された開示が各請求項において明示的に記載されているよりも多くの特徴を必要とするという意図を反映していると解釈されるべきではない。すなわち、本発明の態様の特徴は、先に開示した単一の実施形態の全ての特徴よりも少ない。
【0132】
上記の構成は、本開示の原理の適用の単なる例示である。当業者は、本開示の思想及び範囲から逸脱することなく、多くの変更及び代替の構成を想到でき、特許請求の範囲は、このような修正及び構成を網羅することを意図している。
【0133】
したがって、本開示を図面に示し、上に詳細に説明しているが、ここに記載されている原理及び概念から逸脱することなく、サイズ、材料、形状、形態、機能、動作、組み立て、及び使用の方法のバリエーションを含むと共に、これらに限定されない多数の変更を想到できることは、当業者にとって明らかである。
【0134】
更に、ここに記載される機能は、適切な場合、ハードウェア、ソフトウェア、ファームウェア、デジタルコンポーネント、又はアナログコンポーネントのうちの1以上において実行できる。例えば、1以上の特定用途向け集積回路(application specific integrated circuit:ASIC)又はフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)をプログラムして、ここに記載のシステム及び手順の1以上を実行できる。説明及び特許請求の範囲を通して、特定のシステム構成要素を指すために、特定の用語を使用している。構成要素は、異なる名称で呼ぶことができることは、当業者にとって明らかである。本文書は、名称が異なるが機能が同じコンポーネントを区別することを意図していない。
【0135】
上記の記述は、例示及び説明を目的としている。これは、本発明を開示された詳細な形式に排他的に限定することを意図するものではない。上記の教示を参照することにより、多くの変更及び変形が可能である。更に、前述の変形例の何れか又は全ては、任意に組み合わせることができ、本開示の更なる組み合わせ例を形成できる。
【0136】
更に、本開示の具体的な実施例を説明及び図示しているが、本開示は、そのように説明及び図示された部分の具体的な形態又は配置に限定されるものではない。本開示の範囲は、本願の特許請求の範囲によって定義され、あるいは、将来に提出される特許請求の範囲、本願に基づく別出願、及びこれらの均等物があれば、これらによって定義される。