(57)【要約】  ネットワークデータをデータストアにオフロードするためのシステム、方法、及びデバイスを提供する。システムは、ネットワークコンピューティング環境内にパブリッシャデバイスを含む。システムは、ネットワークコンピューティング環境内にサブスクライバデバイスを含む。システムは、パブリッシャデバイス及びサブスクライバデバイスから独立したデータストアであって、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な処理プラットフォーム内の１以上のプロセッサを含むデータストアを含む。命令は、パブリッシャデバイスからデータを受信することを含む。命令は、複数の共有ストレージデバイスのうちの１以上のデバイスに亘ってデータを保存することを含む。命令は、サブスクライバデバイスにデータを提供することを含む。【選択図】  図８
2021535694.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークコンピューティング環境におけるパブリッシャデバイスと、
ネットワークコンピューティング環境におけるサブスクライバデバイスと、
前記パブリッシャデバイス及び前記サブスクライバデバイスから独立したデータストアであって、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な処理プラットフォーム内の１以上のプロセッサを含む前記データストアと、
を有するシステムであって、
前記命令は、
前記パブリッシャデバイスからデータを受信することと、
複数の共有ストレージデバイスのうちの１以上に亘ってデータを保存することと、
前記サブスクライバデバイスに前記データを提供することと、
を含むことを特徴とするシステム。
【請求項２】
前記データストアは、更に、
複数のサブスクライバデバイスからデータ処理要求を受信するためのインデックスサーバと、
前記インデックスサーバがアクセス可能なメタデータと、
前記処理プラットフォームと通信するホストサーバと、
接続された複数のパブリッシャデバイスから受信した複数のデータポイントをまとめて保存する複数の共有ストレージデバイスと、
を備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記命令は、更に、データベーススキーマに従って前記データを１以上のデータベースパーティションに分割することを含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記パブリッシャデバイスは、スイッチ又はルータであり、及び／又は、
前記データは、前記パブリッシャデバイスのための１以上の状態情報又は前記パブリッシャデバイスによって判定される最適パス情報を含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記命令は、更に、前記データをクラウドベースのストレージにオフロードすることを含み、前記データストア自体は、クラウドベースのデータベースインスタンスであることを特徴とする請求項１に記載のシステム。
【請求項６】
前記データストアによって保存される複数のデータポイントの少なくとも一部のコピーが、前記パブリッシャデバイス又は前記サブスクライバデバイスの１以上に保存されることを特徴とする請求項１に記載のシステム。
【請求項７】
前記命令は、更に、前記データが前記データストアに取り込まれるときに、前記データのメタデータを生成することを含むことを特徴とする請求項１に記載のシステム。
【請求項８】
前記命令は、更に、アプリケーションプログラムインタフェース（ＡＰＩ）を介して、前記パブリッシャデバイス又は前記サブスクライバデバイスの少なくとも一方から指示情報を受信することを含み、前記ＡＰＩ用の命令は、前記データストアに保存されることを特徴とする請求項１に記載のシステム。
【請求項９】
前記データは、最適パス判定であり、前記データストアは、前記パブリッシャデバイス自体が前記最適パス判定を１以上のサブスクライバデバイスにパブリッシュする代わりに、前記最適パス判定を処理することを特徴とする請求項１に記載のシステム。
【請求項１０】
前記命令は、更に、前記データストアによって管理されるデータをパブリッシュ又はサブスクライブするために、前記データストアに接続された全てのデバイスを識別することを含むことを特徴とする請求項１に記載のシステム。
【請求項１１】
非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な１以上のプロセッサであって、
前記命令は、
ネットワークコンピューティング環境内のデータストアによって、パブリッシャデバイスからデータを受信することであって、前記データストアは、前記パブリッシャデバイスから独立していることと、
データベーススキーマに従って前記データを１以上のデータベースパーティションに分割することと、
前記データを保存することと、
サブスクライバデバイスから前記データの要求を受信することであって、前記データストアは、前記サブスクライバデバイスから独立していることと、
前記データを前記サブスクライバデバイスに提供することと、
を含むことを特徴とする１以上のプロセッサ。
【請求項１２】
前記パブリッシャデバイスは、スイッチ又はルータであり、及び／又は、
前記データは、前記パブリッシャデバイスのための１以上の状態情報又は前記パブリッシャデバイスによって判定される最適パス情報を含むことを特徴とする請求項１１に記載の１以上のプロセッサ。
【請求項１３】
前記命令は、更に、前記データをクラウドベースのストレージにオフロードすることを含み、前記データストア自体は、クラウドベースのデータベースインスタンスであることを特徴とする請求項１１に記載の１以上のプロセッサ。
【請求項１４】
前記命令は、更に、前記データが前記データストアに取り込まれるときに、前記データのメタデータを生成することを含むことを特徴とする請求項１１に記載の１以上のプロセッサ。
【請求項１５】
前記命令は、更に、アプリケーションプログラムインタフェース（ＡＰＩ）を介して、前記パブリッシャデバイス又は前記サブスクライバデバイスの少なくとも一方から指示情報を受信することを含み、前記ＡＰＩ用の命令は、前記データストアに保存されることを特徴とする請求項１１に記載の１以上のプロセッサ。
【請求項１６】
ネットワーク環境内のデータストレージをオフロードする方法であって、
ネットワークコンピューティング環境内のデータストアによって、パブリッシャデバイスからデータを受信することであって、前記データストアは、前記パブリッシャデバイスから独立していることと、
データベーススキーマに従って前記データを１以上のデータベースパーティションに分割することと、
前記データを保存することと、
サブスクライバデバイスから前記データの要求を受信することであって、前記データストアは、前記サブスクライバデバイスから独立していることと、
前記データを前記サブスクライバデバイスに提供することと、
を含むことを特徴とする方法。
【請求項１７】
前記パブリッシャデバイスは、スイッチ又はルータであり、及び／又は、
前記データは、前記パブリッシャデバイスのための１以上の状態情報又は前記パブリッシャデバイスによって判定される最適パス情報を含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記データストアは、
複数のサブスクライバデバイスからデータ処理要求を受信するためのインデックスサーバと、
前記インデックスサーバがアクセス可能なメタデータと、
処理プラットフォームと通信するホストサーバと、
接続された複数のパブリッシャデバイスから受信した複数のデータポイントをまとめて保存する複数の共有ストレージデバイスと、
を備えることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記データは、最適パス判定であり、前記データストアは、前記パブリッシャデバイス自体が前記最適パス判定を１以上のサブスクライバデバイスにパブリッシュする代わりに、前記最適パス判定を処理することを特徴とする請求項１６に記載の方法。
【請求項２０】
更に、前記データストアによって管理されるデータをパブリッシュ又はサブスクライブするために、前記データストアに接続された全てのデバイスを識別することを含むことを特徴とする請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本出願は、２０１８年８月２３日に出願された米国仮特許出願第６２／７２２，００３号「DATABASE SYSTEMS METHODS AND DEVICES」に対する優先権を主張するものであり、この文献は、次の例外を除き、これに限定されるものではないが、以下に具体的に記載される部分を含む全体が参照により本明細書に援用される。前記出願の何れかの部分が本出願と矛盾する場合、本出願の内容が前記出願に優先される。
【０００２】
本開示は、コンピューティングネットワークに関し、特にネットワークルーティングアプリケーションのためのデータストレージに関する。
【背景技術】
【０００３】
ネットワークコンピューティングとは、複数のコンピュータ又はノードが連携し、ネットワークを介して相互に通信するための手段である。これには、ワイドエリアネットワーク（wide area network：ＷＡＮ）とローカルエリアネットワーク（local area network：ＬＡＮ）とがある。ワイドエリアネットワークとローカルエリアネットワークは、何れも、コンピュータ間の相互接続を可能にする。ローカルエリアネットワークは、通常、家庭、ビジネス、学校等、より小規模でローカライズされたネットワークに使用される。ワイドエリアネットワークは、都市等の広域をカバーし、異なる国のコンピュータを接続することもできる。通常、ローカルエリアネットワークは、ワイドエリアネットワークよりも高速で安全であるが、ワイドエリアネットワークを使用すると広範囲の接続が可能になる。通常、ローカルエリアネットワークは、展開されている組織内で所有、制御、及び管理され、一方、ワイドエリアネットワークでは、通常、パブリックインターネット経由又は電気通信プロバイダによって確立されたプライベート接続を介して、構成要素である２以上のローカルエリアネットワークを接続する必要がある。
【０００４】
ローカルエリアネットワークとワイドエリアネットワークによって、コンピュータを相互に接続し、データやその他の情報を転送できる。ローカルエリアネットワーク及びワイドエリアネットワークの何れにおいても、ある演算インスタンスから別の演算インスタンスにデータを渡すパスを判定する手段が必要である。これは、ルーティングとも呼ばれる。ルーティングとは、ネットワーク内で、複数のネットワーク間で、又は複数のネットワークに亘って、トラフィックのパスを選択するプロセスである。ルーティングプロセスは、通常、様々なネットワーク宛先へのルートの記録を保持するルーティングテーブルに基づいて、転送を指示する。ルーティングテーブルは、管理者が指定してもよく、ネットワークトラフィックを監視して学習してもよく、ルーティングプロトコルの支援を受けて構築してもよい。
【０００５】
小規模ネットワークでは、手動で構成されたルーティングテーブルを使用して、あるコンピュータから別のコンピュータへの情報の転送方法を判定できる。ルーティングテーブルは、開始コンピュータと最終宛先コンピュータとの間の最も効率的又は最も望ましいパスを示す「最適パス」のリストを含むことができる。公衆インターネットに接続されたネットワークを含む大規模なネットワークは、複雑なトポロジに依存していることがあり、トポロジは、急速に変化する可能性があるため、ルーティングテーブルを手動で構築することは、不可能である。動的ルーティングは、ルーティングプロトコルによって伝送される情報に基づいてルーティングテーブルを自動的に構築することによって、この問題を解決しようとするものである。動的ルーティングにより、ネットワークは、略自律的に動作して、ネットワークの障害やブロックを回避できる。ネットワークデバイス間の最適パスを判定するための規則又は命令を提供する複数のルーティングプロトコルが存在する。動的ルーティングプロトコル及びアルゴリズムには、ルーティング情報プロトコル（Routing Information Protocol：ＲＩＰ）、オープンショーテストパスファースト（Open Shortest Path First：ＯＳＰＦ）、エンハンスドインテリアゲートウェイルーティングプロトコル（Enhanced Interior Gateway routing Protocol：ＥＩＧＲＰ）、及びボーダゲートウェイプロトコル（Border Gateway Protocol：ＢＧＰ）等がある。
【０００６】
幾つかの具体例では、パス選択は、複数のルートにルーティングメトリックを適用して、最適ルートを選択又は予測することを含む。殆どのルーティングアルゴリズムは、一度に１つのネットワークパスのみを使用する。マルチパスルーティング技術は、複数の代替パスの使用を可能にする。コンピュータネットワークでは、ルーティングアルゴリズムを使用して、２つの演算インスタンス間の最適パスを予測できる。ルーティングアルゴリズムは、帯域幅、ネットワーク遅延、ホップカウント、パスコスト、負荷、最大転送単位、信頼性、及び通信コスト等の複数の要因に基づくものであってもよい。ルーティングテーブルには、最適パスのリストが格納される。トポロジデータベースは、最適パスのリストを格納でき、更に追加情報を格納できる。
【０００７】
一部のネットワークでは、最適パスの選択を担当するエンティティが単一のエンティティではないという事実のために、ルーティングが複雑になる。代わりに、複数のエンティティが最適パス又は単一パスのイベント部分の選択に関与する。インターネット上のコンピュータネットワーキングのコンテキストにおいて、インターネットは、インターネットサービスプロバイダ（ＩＳＰ）のような自律システム（ＡＳ）に分割される。各自律システムは、そのネットワークを含むルートを制御する。自律システムレベルのパスは、ボーダゲートウェイプロトコル（Border Gateway Protocol：ＢＧＰ）に基づいて選択される。各自律システムレベルのパスには、一連の自律システムが含まれており、この自律システムを経由して、ある演算インスタンスから別の演算インスタンスに情報パケットが送信される。各自律システムは、複数のパスを有することができ、この複数のパスから、隣接する自律システムによって提供される複数のパスを選択できる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のネットワークコンピューティング環境では、最適パス判定及び他のデータは、パブリッシャデバイスによって複数のサブスクライバデバイスにパブリッシュされる。しかしながら、これによって、パブリッシャデバイスの演算コストが高くなる可能性がある。更に、このシステムには、システムクラッシュやシステム障害に対する防御策が殆どない。したがって、ネットワーク情報の保存を改善することが望ましい。
【課題を解決するための手段】
【０００９】
以上の観点から、ここでは、独立したデータストアにネットワークデータをオフロードするためのシステム、方法、及びデバイスを開示する。
【００１０】
本開示の非限定的及び非包括的な実施形態は、以下の図を参照して説明され、これらの図において、同一の参照符号は、特段の指定がない限り、全ての図を通して同一の部分を指す。以下の説明及び添付の図面を参照することにより、本開示の利点がより明瞭に理解される。
【図面の簡単な説明】
【００１１】
【図１】インターネットを介して通信するネットワーク化されたデバイスのシステムの概略図である。
【図２】データストアに階層的にデータを格納する方法を示す概略図である。
【図３】単一のデバイス上の様々なアプリケーションからネットワーク情報をオフロードし、データストアに格納する方法を示す概略図である。
【図４】ネットワークデバイス上のネットワーク情報を、同じデバイス上にローカルに実装されたデータストアに格納する方法を示す概略図である。
【図５】ネットワーク情報のストレージを、リモートデバイス上の別の場所に実装されたデータストアにオフロードする方法を示す概略図である。
【図６】プロデューサ、プロデューサコンシューマ、及びコンシューマと、データストアとの間の通信の概略図である。
【図７】単一のネットワーキングデバイスのマルチノードに亘ってデータストアを実装する方法を示す概略図である。
【図８】クラウドコンピューティングネットワークにオフロードされたリモートコントローラによって制御される複数のデバイスを示す概略図である。
【図９】クラウドベースのデータストアの実施形態の概略図である。
【図１０】デバイスのコントローラロジックをクラウドネットワークにオフロードするためのシステムの概略図である。
【図１１】マルチノードデバイスのコントローラロジックをクラウドベースのコントローラにオフロードするためのシステムの概略図である。
【図１２】プロセス間通信（ＩＰＣ）ベースのデータストアの概略図である。
【図１３】データストアのインデックスサーバの概略図である。
【図１４】データストアのホストサーバの概略図である。
【図１５】データストアにデータをパブリッシュし、パブリッシュされたデータをサブスクライバデバイスに提供するためのプロセスフローの概略図である。
【図１６】データストア内に格納されるデータの格納構造の概略図である。
【図１７】データストアによるデータの受信及びパブリッシングのためのプロセスフローの概略的フローチャートである。
【図１８】例示的な演算デバイスの構成要素を示す概略図である。
【発明を実施するための形態】
【００１２】
データ伝送のための改善されたルーティングのためのシステム、方法、及びデバイスを開示する。ネットワークルーティングの幾つかの例では、一度に複数のロケーションに情報を迅速にパブリッシュできるデータストアにルーティング情報を格納することが望ましい。ここでは、ルータ又はスイッチ等のボックスに並列な、ネットワーク及びルーティング情報を格納するためのデータストアを提供するシステム、方法、及びデバイスを開示する。一実施形態では、ネットワーク状態は、ボックス内にローカルに格納されるのではなく、データストアにオフロードされる。
【００１３】
一実施形態では、データストアは、単一のパブリッシュ／サブスクライブ（publish-subscribe：ＰＵＢＳＵＢ）エンティティによって提供される単一のデータベースである。データストアは、複数のコンピューティングノードに実装及び格納してもよい。各コンピューティングノードは、それ自体の独立したコンピューティング処理エンティティ及びリソースを有する処理エンティティとして機能できる。マルチノードが相互動作し、単一のコンピューティングエンティティ又はデバイス（例えば、複数のラインカードを有するネットワークデバイス）として機能してもよい。単一の演算デバイス内のマルチノードは、単一のデータストアを実装してもよいが、各ノード上でデータストアコンポーネントの個々のコピーを実行し、内部で相互動作してもよく、これにより、データストアは、いかなるクライアントにとっても、複数のコンピューティングノードの何れかで実行されているデータストアのように見える。
【００１４】
本開示の実施形態は、データストアにネットワークルーティング情報を格納するために展開してもよい。データストアは、ルータやスイッチ等のネットワーキングデバイス上でローカルにデータをホストするのではなく、リモートでデータをホストするための柔軟性を提供する。一実施形態では、データストアは、ネットワーク化されたデバイスのための１以上のルーティングテーブルを保存するように構成される。データストアは、ネットワーキングデバイスの外部でアプリケーションを実行するための処理リソースとストレージリソースを提供できる。データストアは、ネットワークルーティング環境でストレージ及び処理リソースを追加するために、垂直方向及び水平方向にスケーリング可能な能力を有する。一実施形態では、データストアは、ネットワーキングデバイスの外部でデータをホストし、データを複数のパーティションに分割するように構成される。パーティションは、互いに通信可能な複数のストレージデバイス上でホストできる。
【００１５】
一実施形態では、データストアは、ルータ及びスイッチ等の複数のネットワーキングデバイスによってアクセス可能である。ここで説明するように、ネットワークデバイスがボーダゲートウェイプロトコル（Border Gateway Protocol：ＢＧＰ）によって判定されるパスを実行又は格納する場合、そのネットワークデバイスは、ＢＧＰインスタンスとも呼ばれる。ＢＧＰは、開始ポイントから宛先ポイントにデータを送信するための最適パスを判定するために使用される。一実施形態では、各ネットワーキングデバイスは、データストア内の情報を読み取り、データを送信するための最適パスを識別し、データをその最終宛先に送達することができる。一実施形態では、各ネットワーキングデバイスは、実行時に自身の状態を記憶し、その状態を送信してデータストア内で複製させる。データストアは、複数のネットワーキングデバイスに接続され、複数のネットワーキングデバイスのそれぞれの全ての状態を保存できる。これにより、各ネットワーキングデバイスの状態を、任意の適切なフォーマットでデータストアにオフロードできる。一実施形態では、データストアは、実行時にリアルタイムで複数のネットワーキングデバイスから状態情報を受信する。データストアは、更に、複数のネットワーキングデバイスから、保存された状態情報のスナップショットを受信するように構成できる。
【００１６】
一実施形態では、データストアは、ユーザ定義の格納構造（storage structure）で組織化される。格納構造には、ＪＳＯＮ（JavaScript Object Notation）ベースのスキーマで定義された階層と組織を含めることができる。データストアは、様々なデータ構造型をサポートし、必要に応じて新しいデータ構造型をサポートする。
【００１７】
一実施形態では、データストアは、パブリッシュ／サブスクライブインフラストラクチャを利用することによって、メモリ診断のサポートを提供する。ソフトウェアアーキテクチャにおいて、パブリッシュ／サブスクライブとは、パブリッシャが、サブスクライバに直接メッセージを送信することなく、サブスクライバに間接的にメッセージを送信するメッセージングパターンである。パブリッシャは、サブスクライバの知識を用いることなくメッセージをクラスに分類する。同様に、サブスクライバは、１以上のクラスに関心を示し、関心があるメッセージのみを受信する。パブリッシュ／サブスクライブメッセージングパターンでは、メッセージは、パブリッシャによって「パブリッシュ」された後、該当する全てのサブスクライバによって受信される。データストアは、これ自体又は他のアプリケーションによってホストされるパブリッシングサービスを必要とする任意のアプリケーションのパブリッシュ／サブスクライブインフラストラクチャを利用できる。
【００１８】
一実施形態では、データストアは、接続されたクライアントアカウント又はネットワーキングデバイスによって検索又は照会できる。データストアは、テーブルインデックスを使用して、カスタマイズされた検索の応答を返すことができる。データストアは、複数のデータパーティションに亘るデータの格納をサポートする。データは、データストア上にローカルに格納されたメタデータに基づいて、複数のデータパーティションに亘って配置できる。
【００１９】
ＢＧＰインスタンスは、ネットワーク内で情報をルーティングするためのデバイスである。ＢＧＰインスタンスは、ルートリフレクタ機器（route reflector appliance）の形式で実現してもよい。ＢＧＰインスタンスは、スイッチ、ルータ、又はスイッチ上のＢＧＰスピーカで実行してもよい。高レベルでは、ＢＧＰインスタンスは、プレフィックスについて学習した全てのパスを最適パスコントローラ（best path controller）に送信する。最適パスコントローラは、これらのパスの中から最適パスのセットを応答する。最適パスコントローラは、任意のパスのネクストホップ及び属性を変更することが許可されている。最適パスを受信すると、ＢＧＰインスタンスは、ローカルルーティング情報ベース（Routing Information Base：ＲＩＢ）を更新し、最適パスをネイバ（neighbors）にアドバタイズ（advertise）する。
【００２０】
一実施形態では、ネットワーク環境においてデータストレージをオフロードするための方法を提供する。方法は、ネットワークコンピューティング環境内のデータストアによって、パブリッシャデバイスからデータを受信することを含み、データストアは、パブリッシャデバイスから独立している。方法は、データベーススキーマに従ってデータを１以上のデータベースパーティションに分割することを含む。方法は、データを保存することを含む。方法は、サブスクライバデバイスからデータの要求を受信することを含み、データストアは、サブスクライバデバイスから独立している。方法は、データをサブスクライバデバイスに提供することを含む。
【００２１】
本開示の理解を深めるために、多数のネットワーキング演算デバイス及びプロトコルの幾つかを説明する。
【００２２】
スイッチ（スイッチングハブ、ブリッジングハブ、又はＭＡＣブリッジとも呼ばれる。）は、ネットワークを作成する。殆どの内部ネットワークは、建物又はキャンパス内のコンピュータ、プリンタ、電話機、カメラ、照明、及びサーバを接続するためにスイッチを使用する。スイッチは、ネットワークに接続されたデバイスが相互に効率的に通信できるようにするコントローラとして機能する。スイッチは、パケットスイッチングを使用してコンピュータネットワーク上のデバイスを接続し、これによりデータが受信され、処理され、宛先デバイスに転送される。ネットワークスイッチは、ハードウェアアドレスを使用して、開放型システム間相互接続（Open Systems Interconnection：ＯＳＩ）モデルのデータリンクレイヤ（レイヤ２）でデータを処理及び転送するマルチポートネットワークブリッジである。一部のスイッチは、ルーティング機能を追加で組み込むことにより、ネットワークレイヤ（レイヤ３）でデータを処理することもできる。このようなスイッチは、一般にレイヤ３スイッチ又はマルチレイヤスイッチと呼ばれている。
【００２３】
ルータは、ネットワークを接続する。スイッチ及びルータは、類似する機能を実行するが、ネットワーク上で実行する機能はそれぞれ異なる。ルータは、コンピュータネットワーク間でデータパケットを転送するネットワークデバイスである。ルータは、インターネット上でトラフィックダイレクティング機能（traffic directing function）を実行する。ウェブページ、電子メール、又はその他の形式の情報等、インターネットを介して送信されるデータは、データパケットの形式で送信される。パケットは、通常、インターネットワーク（例えばインターネット）を構成するネットワークを介してあるルータから別のルータに転送されて、最終的に宛先ノードに到達する。ルータは、異なるネットワークからの複数のデータラインに接続されている。データパケットがラインの１つに到着すると、ルータは、パケット内のネットワークアドレス情報を読み取り、最終的な宛先を判定する。次に、ルータは、ルータのルーティングテーブル又はルーティングポリシの情報を使用して、行程上の次のネットワークに向けてパケットを送信する。ＢＧＰスピーカは、ボーダゲートウェイプロトコル（Border Gateway Protocol：ＢＧＰ）が有効にされたルータである。
【００２４】
ルーティングテーブル又はルーティング情報ベース（ＲＩＢ）は、ルータ又はネットワークコンピュータに格納されているデータテーブルであり、特定のネットワーク宛先へのルートをリストにしているものである。ルーティングテーブルには、距離、重み等のルートのメトリックが含まれる場合がある。ルーティングテーブルには、それが格納されているルータの直近のネットワークのトポロジに関する情報が含まれる。ルーティングテーブルの構築は、ルーティングプロトコルの主要な目的である。スタティックルートは、非自動手段によってルーティングテーブルに作成されるエントリであり、何らかのネットワークトポロジディスカバリ手順の結果ではなく、固定されている。ルーティングテーブルは、ネットワークＩＤ、メトリック、及びネクストホップのフィールドを含む、少なくとも３つの情報フィールドを含むことができる。ネットワークＩＤは、宛先サブネットである。メトリックは、パケットが送信されるパスのルーティングメトリックである。ルートは、メトリックが最小のゲートウェイの方向に進む。ネクストホップとは、パケットが最終宛先に送信されるまでの過程における次のステーションのアドレスである。ルーティングテーブルは、更に、ルートに関連付けられたサービス品質、ルートに関連付けられたフィルタリング基準リストへのリンク、イーサネットカードのインタフェース等を含むことができる。
【００２５】
ルーティングテーブルの概念を説明する目的のために、ルーティングテーブルは、パッケージを送達するために使用される地図に見立てることができる。ルーティングテーブルは、パッケージを最終的な宛先に配信するために使用される地図に似ている。ノードがネットワーク上の別のノードにデータを送信する必要がある場合、ノードはまずデータの送信先を認識する必要がある。ノードが宛先ノードに直接接続できない場合、ノードは、宛先ノードへの適切なルートに沿って他のノードにデータを送信する必要がある。殆どのノードは、どのルートが機能するかを判断することを試みることはない。これに代えて、ノードは、ＬＡＮ内のゲートウェイにＩＰパケットを送信し、ゲートウェイが、データを正しい宛先にどのようにルーティングするかを決定する。各ゲートウェイは、様々なデータパッケージを配信する方法を追跡する必要があり、そのためにルーティングテーブルを使用する。ルーティングテーブルは、地図のようにパスを追跡し、これらのパスを使用してトラフィックをどのように転送するかを判定するためのデータベースである。ゲートウェイは、情報を要求する他のノードとルーティングテーブルの内容を共有することもできる。
【００２６】
ホップバイホップ（hop-by-hop）ルーティングの場合、各ルーティングテーブルには、全ての到達可能な宛先について、その宛先へのパスに沿った次のデバイスのアドレス、すなわち、ネクストホップがリストされる。ルーティングテーブルが一貫していると仮定すれば、パケットを宛先のネクストホップにリレーするアルゴリズムは、ネットワーク内の任意の場所にデータを配信するのに十分である。ホップバイホップは、ＩＰインターネットワークレイヤ及び開放型システム間相互接続（ＯＳＩ）モデルの特徴の一つである。
【００２７】
開放型システム間相互接続（ＯＳＩ）モデルは、基礎となる内部構造及び技術に関係なく、コンピューティングシステムの通信機能を特徴付け、標準化する概念モデルである。ＯＳＩモデルの目標は、多様な通信システムと標準通信プロトコルとの相互運用性である。ＯＳＩモデルは、通信システムを複数の抽象レイヤに分割する。レイヤは、上位のレイヤにサービスを提供し、下位のレイヤからサービスを提供される。例えば、ネットワークに亘って無エラー通信（error-free communication）を提供するレイヤは、上位のアプリケーションが必要とするパスを提供すると共に、次の下位レイヤを呼び出して、そのパスの内容を構成するパケットを送受信する。同じレイヤにある２つのインスタンスは、そのレイヤで水平接続によって接続されているものとして可視化される。通信プロトコルは、あるホストのエンティティが、別のホストの同じレイヤの対応するエンティティとインタラクションすることを可能にする。ＯＳＩモデルのようなサービス定義は、（Ｎ−１）レイヤによって（Ｎ）レイヤに提供される機能を抽象的に記述し、ここで、Ｎは、ローカルホストで動作するプロトコルレイヤの１つである。
【００２８】
ルート制御は、インターネット接続性の向上、帯域幅コストの削減、及びネットワーク間の全体的な動作の削減を目的としたネットワーク管理の一種である。一部のルート制御サービスは、ハードウェアベース及びソフトウェアベースの一連の製品及びサービスを含み、これらは、連携して全体的なインターネットパフォーマンスを向上させ、利用可能なインターネット帯域幅を最小限のコストで微調整（finetune）する。ネットワーク又は自律システムが複数のプロバイダからインターネット帯域幅を調達するシナリオでは、ルート制御を成功させることができる。ルート制御は、データ伝送のための最適なルートの選択を援助できる。
【００２９】
一部のネットワーク通信システムは、数千の処理ノードを有する大規模な企業レベルのネットワークである。数千もの処理ノードが複数のインターネットサービスプロバイダ（Internet Service Provider：ＩＳＰ）からの帯域幅を共有し、大量のインターネットトラフィックを処理できる。このようなシステムは、非常に複雑になる可能性があり、許容できるインターネットパフォーマンスを得るために適切に構成する必要がある。システムが最適なデータ伝送のために適切に構成されていないと、インターネットアクセスの速度が低下し、システムの帯域幅消費及びトラフィックが増大する可能性がある。この問題に対し、一連のサービスを実装することによって、これらの懸念を排除又は軽減できる。この一連のサービスは、ルーティング制御とも呼ばれる。
【００３０】
ルーティング制御メカニズムの一実施形態は、ハードウェアとソフトウェアとから構成される。ルーティング制御メカニズムは、インターネットサービスプロバイダ（ＩＳＰ）との接続を介して全ての発信トラフィック（outgoing traffic）を監視する。ルーティング制御メカニズムは、データの効率的な伝送のための最適パスの選択を支援する。ルーティング制御メカニズムは、全てのＩＳＰの性能及び効率を計算し、適用可能な領域において最適に動作したＩＳＰのみを選択できる。ルート制御デバイスは、コスト、パフォーマンス、及び帯域幅に関する定義済みのパラメータに従って構成できる。
【００３１】
データ伝送のための最適パスを判定するための公知のアルゴリズムは、ボーダゲートウェイプロトコル（Border Gateway Protocol：ＢＧＰ）と呼ばれる。ＢＧＰは、インターネット上の自律システムのルーティング情報を提供するパスベクトル（path-vector）プロトコルである。ＢＧＰが正しく構成されていないと、サーバの利用可能性及び安全性に問題が発生する可能性がある。更に、攻撃者は、ＢＧＰルート情報を変更することにより、トラフィックの大規模なブロックをリダイレクトして、トラフィックが目的の宛先に到達する前に、トラフィックを特定のルータに到達させることができる。ＢＧＰ最適パスアルゴリズムを実装することによって、トラフィック転送用のインターネットプロトコル（Internet Protocol：ＩＰ）ルーティングテーブルにインストールする最適パスを判定できる。ＢＧＰルータは、同じ宛先への複数のパスを受信するように構成できる。
【００３２】
ＢＧＰ最適パスアルゴリズムは、最初の有効なパスを現在の最適パスとして割り当てる。ＢＧＰ最適パスアルゴリズムは、ＢＧＰが有効パスのリストの最後に到達するまで、リスト内の次のパスと最適パスを比較する。このリストは、最適パスを判定するために使用される規則を提供する。例えば、リストは、重みが最も高いパスの優先、ローカル優先度がないパスの優先、ネットワーク又はアグリゲーションＢＧＰによってローカルに発生したパスの優先、最短パスの優先、最小のマルチエグジットディスクリミネータ（multi-exit discriminator）を有するパスの優先等の指示情報を含むことができる。ＢＧＰ最適パス選択プロセスは、カスタマイズできる。
【００３３】
ＢＧＰルーティングのコンテキストでは、各ルーティングドメインは、自律システム（autonomous system：ＡＳ）と呼ばれる。ＢＧＰは、２つのルーティングドメインを接続するためのインターネット経由のパスの選択を支援する。ＢＧＰは、通常、最短ＡＳパスと呼ばれる、最小数の自律システムを通過するルートを選択する。一実施形態では、一旦ＢＧＰが有効にされると、ルータは、ＢＧＰネイバからインターネットルートのリストをプルし、ここで、ＢＧＰネイバは、ＩＳＰであってもよい。次に、ＢＧＰは、リストを精査して、最も短いＡＳパスを有するルートを発見する。これらのルートは、ルータのルーティングテーブルに入力してもよい。通常、ルータは、ＡＳへの最短パスを選択する。ＢＧＰは、パス属性を使用して、トラフィックを特定のネットワークにどのようにルーティングするかを判定する。
【００３４】
本開示に基づく原理の理解を深めるために、以下では、図示の実施形態を参照し、特定の表現を用いてこれを説明する。但し、これは、本開示の範囲を限定することを意図するものではない。ここに例示する本開示の特徴の任意の変更及び更なる修正、並びにここに例示する本開示の原理の任意の追加的な適用は、当業者が本開示に基づいて容易に想到できるものであり、特許請求の範囲に含まれる。
【００３５】
ネットワークコンピューティング環境にデータストアを提供するための構造、システム、及び方法を開示及び説明する前に、この開示は、ここに開示される特定の構造、構成、プロセスステップ、及び材料に限定されず、そのような構造、構成、プロセスステップ、及び材料を変更してもよいことを明記する。また、本開示の範囲は、特許請求の範囲及びその均等物によってのみ制限されるものであるため、ここで使用される用語は、特定の実施形態を説明する目的でのみ使用され、限定を意図しないことは当然である。
【００３６】
本開示の主題を記述し特許請求する際には、以下に記載する定義に従って、以下の用語を使用する。
【００３７】
本明細書及び特許請求の範囲において使用する、単数形（冠詞「ａ」、「ａｎ」、及び「ｔｈｅ」）は、文脈における特段の指定がない限り、複数の指示対象を含む。
【００３８】
ここで使用する語句「備える」、「有する」、「含む」、「特徴とする」、及びこれらの文法的等価物は、記載されていない追加的な要素又は方法工程を除外しない非排他的又はオープンな用語である。
【００３９】
ここで使用する語句「〜からなる」及びその文法的等価物は、請求項に記載されていない任意の要素又は工程を除外する。
【００４０】
ここで使用される語句「実質的に〜からなる」及びその文法的等価物は、特許請求の範囲を、特定された材料又は工程、並びに特許請求された開示の基本的かつ新規な特性又は特徴に実質的に影響しない材料又は工程に限定する。
【００４１】
以下の説明は、図面を参照し、図１は、デバイスをインターネットに接続するためのシステム１００の概略図である。システム１００は、スイッチ１０６によって接続された複数のローカルエリアネットワーク１１０を含む。複数のローカルエリアネットワーク１１０のそれぞれは、ルータ１１２によって、公衆インターネットを介して互いに接続可能である。図１に示す例示的なシステム１００は、２つのローカルエリアネットワーク１１０を有する。但し、公衆インターネットを介して、より多くのローカルエリアネットワーク１１０を互いに接続してもよい。各ローカルエリアネットワーク１１０は、スイッチ１０６によって互いに接続された複数の演算デバイス１０８を含む。複数の演算デバイス１０８は、例えば、デスクトップコンピュータ、ラップトップ、プリンタ、サーバ等を含むことができる。ローカルエリアネットワーク１１０は、ルータ１１２によって、公衆インターネットを介して他のネットワークと通信できる。ルータ１１２は、複数のネットワークを互いに接続する。ルータ１１２は、インターネットサービスプロバイダ１０２に接続されている。インターネットサービスプロバイダ１０２は、１以上のネットワークサービスプロバイダ１０４に接続されている。ネットワークサービスプロバイダ１０４は、図１に示すように、他のローカルネットワークサービスプロバイダ１０４と通信を行う。
【００４２】
スイッチ１０６は、パケットスイッチング（packet switching）を使用してローカルエリアネットワーク１１０内のデバイスを接続し、これによりデータが受信され、処理され、宛先デバイスに転送される。スイッチ１０６は、例えば、プリンタを宛先として、コンピュータからデータを受信するように構成できる。スイッチ１０６は、データを受信し、データを処理し、データをプリンタに送信できる。スイッチ１０６は、レイヤ１スイッチ、レイヤ２スイッチ、レイヤ３スイッチ、レイヤ４スイッチ、レイヤ７スイッチ等であってもよい。レイヤ１ネットワークデバイスは、データを転送するが、デバイスを通過するトラフィックは管理しない。レイヤ１ネットワークデバイスの例は、イーサネットハブである。レイヤ２ネットワークデバイスは、ハードウェアアドレスを使用してデータリンクレイヤ（レイヤ２）でデータを処理及び転送するマルチポートデバイスである。レイヤ３スイッチは、通常ルータによって実行される機能の一部又は全てを実行できる。但し、一部のネットワークスイッチは、単一タイプの物理ネットワーク、通常は、イーサネットをサポートするように制限されており、一方、ルータは、異なるポート上の異なる種類の物理ネットワークをサポートする場合がある。
【００４３】
ルータ１１２は、コンピュータネットワーク間でデータパケットを転送するネットワーキングデバイスである。図１に示す例示的なシステム１００において、ルータ１１２は、ローカルエリアネットワーク１１０間でデータパケットを転送する。但し、ルータ１１２は、必ずしもローカルエリアネットワーク１１０間のデータパケットの転送に適用される必要はなく、ワイドエリアネットワーク等の間のデータパケットの転送に使用してもよい。ルータ１１２は、インターネット上でトラフィックダイレクション機能（traffic direction function）を実行する。ルータ１１２は、銅ケーブル、光ファイバ、又は無線伝送等の異なるタイプの物理レイヤ接続のためのインタフェースを有してもよい。ルータ１１２は、異なるネットワークレイヤ伝送規格をサポートできる。各ネットワークインタフェースを使用することによって、データパケットをある伝送システムから別の伝送システムに転送できる。また、ルータ１１２は、それぞれが異なるネットワークプレフィックスを有する、サブネットと呼ばれるコンピュータデバイスの２以上の論理グループを接続するために使用してもよい。図１に示すように、ルータ１１２は、企業内、企業とインターネットとの間、又はインターネットサービスプロバイダのネットワーク間の接続を提供できる。幾つかのルータ１１２は、様々なインターネットサービスプロバイダを相互接続するように構成してもよく、大規模な企業ネットワーク内で使用してもよい。より小さいルータ１１２は、一般に、ホームネットワーク及びオフィスネットワークのインターネットへの接続を提供する。図１に示すルータ１１２は、エッジルータ、サブスクライバエッジルータ、プロバイダ間ボーダルータ、コアルータ、インターネットバックボーン、ポート転送、音声／データ／ファックス／ビデオ処理ルータ等のネットワーク伝送に適した任意のルータを表すことができる。
【００４４】
インターネットサービスプロバイダ（ＩＳＰ）１０２は、インターネットへのアクセス、利用、又は参加のためのサービスを提供する組織である。ＩＳＰ１０２は、商用、コミュニティ所有、非営利、又は個人所有等の様々な形態で組織化できる。ＩＳＰ１０２によって一般的に提供されるインターネットサービスは、インターネットアクセス、インターネット中継、ドメイン名登録、ウェブホスティング、ユースネットサービス、及びコロケーションを含む。図１に示すＩＳＰ１０２は、ホスティングＩＳＰ、中継ＩＳＰ、仮想ＩＳＰ、無料ＩＳＰ、無線ＩＳＰ等の任意の適切なＩＳＰを表すことができる。
【００４５】
ネットワークサービスプロバイダ（ＮＳＰ）１０４は、インターネットサービスプロバイダへの直接のインターネットバックボーンアクセスを提供することによって、帯域幅又はネットワークアクセスを提供する組織である。ネットワークサービスプロバイダは、ネットワークアクセスポイント（network access point：ＮＡＰ）へのアクセスを提供できる。ネットワークサービスプロバイダ１０４は、バックボーンプロバイダ又はインターネットプロバイダとも呼ばれる。ネットワークサービスプロバイダ１０４は、電気通信業者、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、及び高速インターネットアクセスを提供するケーブルテレビ運営業者を含むことができる。また、ネットワークサービスプロバイダ１０４は、情報技術業者を含むこともできる。
【００４６】
図１に示すシステム１００は、単なる例示であり、ネットワークと演算デバイスとの間でデータを伝送するために多くの異なる構成及びシステムを構築できる。ネットワーク形成は、カスタマイズ可能性（customizability）が高いため、コンピュータ間又はネットワーク間でデータを伝送するための最適パスを判定する際にも、カスタマイズ可能性をより高めることが望まれている。以上の観点から、ここでは、コンピュータ又は特定の企業の特定のグループ化に良好に適合する最適パスアルゴリズムを判定する際に、カスタマイズ可能性をより高めるために、最適パス計算を外部デバイスにオフロードするためのシステム、方法、及びデバイスを開示する。
【００４７】
図２は、データストア２００に格納されたデータの論理レイアウトと、データストア２００内のデータにアクセスするためのアドレス指定メカニズムとを示している。アドレス指定メカニズムは、データベースＵＲＬ２１２、テーブルＵＲＬ２１４、及びオブジェクトＵＲＬ２１６を含む。データストア２００は、柔軟性が向上されたパブリッシュ／サブスクライブ（「ＰＵＢＳＵＢ」又は「Ｐｕｂ／Ｓｕｂ」）データベースのクライアント／サーバベースのモデルとして実装できる。データストア２００は、データベースホストサーバにより、プロデューサと、サブスクライバとの間の２ホップデータパスを提供できる。ホストサーバ３１０は、プロデューサとサブスクライバとの間に挿入できる。
【００４８】
データストア２００は、中間ノード２０４及びリーフノード２０６を含むデータベースディレクトリツリー２０２を含む。リーフノード２０６は、データベースコンテンツツリー２０８に格納されたテーブル２１０と通信する。テーブル２１０は、図２に示すように、オブジェクト１、オブジェクト２、オブジェクト３等の複数のオブジェクトに関する情報を格納する。リーフノード２０６は、データベースＵＲＬ２１２を介してアクセス可能である。データベースＵＲＬ２１２は、リーフノード２０６へのアクセスのために、クライアントアカウントに提供できる。同様に、テーブル２１０は、テーブルＵＲＬ２１４を介してアクセス可能であり、オブジェクトは、オブジェクトＵＲＬ２１６を介してアクセス可能である。
【００４９】
一実施形態では、データストア２００は、更に、アプリケーションがアプリケーションによって生成されたデータのデータストアホストサーバ３１０として振る舞うことを可能にするホストライブラリを含む。データセットがホストサーバ上でホストされて組み込まれ、ホスティングアプリケーションによって生成される場合、プロデューサとホストサーバの間の追加のプロセス間通信（Inter Process Communication：ＩＰＣ）ホップを省略できる。一実施形態では、データストア２１０は、データベースホストとプロデューサデバイスを組み合わせることによって、プロデューサからサブスクライバへの１ホップダイレクトデータパスを提供できる。
【００５０】
データは、階層データベースディレクトリツリー２０２に格納してもよい。データベースディレクトリツリー２０２により、データのワイルドカードサブスクリプションが可能になる。ワイルドカードサブスクリプションは、例えば、特定目的（ad hoc）、予期しない（unexpected）、単発（one-off）、又はサブスクライバがパブリッシャにデータを要求するその他の特異なイベントであってもよい。データのワイルドカードサブスクリプションは、複数のプロデューサデバイスによって生成されたデータセットにまたがることがある。あるいは、ワイルドカードサブスクリプションが、複数のプロデューサデバイスによって生成されたデータセットにまたがることがある。あるいは、ワイルドカードサブスクリプションは、複数のデータベースホストサーバ３１０に亘ってホストしてもよい。プロデューサデバイスがデータベースホストを含む場合、ワイルドカードサブスクリプションは、適切に分割されると、プロデューサとサブスクライバの間に複数の並列データパスを提供することによって、効果的な水平スケーリングを提供する。
【００５１】
ここで説明するデータストアの１つの利点は、プロデューサ自体が各サブスクライバにサービスを提供するオーバーヘッドを維持しなくてもよいという点である。これに代えて、１つの又は可能性として複数のホストサーバ３１０にオーバーヘッドをオフロードできる。
【００５２】
ここで説明するデータストアの更なる利点は、単一のプロデューサによって生成されたデータセット全体を、適切なデータパーティションを使用してサブセットに分割できることである。データパーティションは、必要に応じて異なるデータベースホストサーバ３１０に割り当てることができる。この分割により、プロデューサとサブスクライバの間に並列データパスを作成しながら、水平スケーリングが可能になる。例えば、複数のデータベースホストサーバ３１０は、それぞれ、プロデューサとサブスクライバとの間に並列データパスを作成できる。更に、データストア２００サーバコンポーネントを別のサーバクラスタ上にホストすることによって、処理オーバーヘッドの他のデバイスへのオフロードを補助できる。
【００５３】
一実施形態では、ここで説明するデータストアは、ランタイム診断及びシステム監視のサポートを提供する。例えば、データストアは、データストアのパブリッシュ／サブスクライブインフラストラクチャを使用して、全てのデータストアクライアントから診断情報を収集できる。
【００５４】
図３は、最適パス計算とルートの保存をデータストア３０２にオフロードするためのシステム３００の概略図である。このシステムは、複数のアプリケーションＲ１、Ｒ２、Ｒ３、Ｒｎと通信するデータストア３０２を含む。データストア３０２は、メタデータ３０６と通信するインデックスサーバ３０４を含む。メタデータ３０６は、あるデータが共有ディスクストレージ３１２内のどこに位置しているかを示す指示情報を提供する。共有ディスクストレージ３１２は、複数のデータストレージ３１２ａ、３１２ｂ、３１２ｃ、３１２ｎを含む。インデックスサーバ３０４は、処理プラットフォーム３０８と通信し、処理プラットフォーム３０８は、共有ディスクストレージ３１２にアクセスする。インデックスサーバ３０４は、特定のデータが共有ディスクストレージ３１２内のどこにあるかを示す指示情報を処理プラットフォーム３０８に提供するように構成されている。インデックスサーバ３０４は、メタデータ３０６に基づいて、この判定を行う。データストア３０２は、処理プラットフォーム３０８と通信するホストサーバ３１０を含む。ホストサーバ３１０により、処理プラットフォーム３０８は、共有ディスクストレージ３１２内の情報を更新、追加、又は削除することによって、共有ディスクストレージ３１２に書き込みを行うことができる。処理プラットフォーム３０８は、それぞれがプロセッサ及びキャッシュストレージを含む複数のホストを含むことができる。各ホストは、共有ディスクストレージ３１２内の情報に対する読出及び書込を行うように構成できる。
【００５５】
図４は、情報がデータストア３０２にオフロードされ、データストア３０２がスイッチ又はルータに対してローカルである実施形態を示す。スイッチ又はルータは、更に、ハードウェア４１６及びソフトウェアスタック４１４を含む。ハードウェア４１６は、コンピュータ又はネットワーク間のデータパケットの伝送を可能にする物理接続を提供する。ソフトウェアスタック４１４は、最適パスを判定し、その宛先デバイスの最適パスに沿ってデータパケットを転送するために、プロセッサ又はハードウェア４１６によって実装される命令を含む。
【００５６】
図５は、情報がデータストア３０２にオフロードされ、データストア３０２がクラウドネットワーク５１４を介してアクセス可能なシステム５００の実施形態を示す。一実施形態では、データストア３０２は、複数のネットワーキングデバイスＲ１、Ｒ２、Ｒ３、Ｒｎによってアクセス可能なクラウドベースのデータベースである。
【００５７】
図６は、データストア内のプロデューサ、プロデューサコンシューマ及びコンシューマ間の通信の概略図である。一実施形態では、システムに関連する情報を格納するネットワーキングデバイスに対してローカルなデータストア６０２がある。データストア６０２は、１以上のルータ又はスイッチの最適パス情報を格納するデータベースであってもよい。データストア６０２は、更に、ＣＰＵ使用率、温度、ファン速度等のシステム状態情報、及びＬＥＤ又は他のデバイス等の周辺機器の状態情報を格納してもよい。データストア６０２は、監視エージェントにとって有用な様々な情報を格納してもよい。データストア６０２内の情報は、そのような情報を必要とする可能性がある別のコントローラ又はデバイスにストリーミングできる。データストア６０２は、データベースインデックスを含むことができ、複数のホストを含むことができる。複数のホストのそれぞれは、プロセッサ及びキャッシュメモリを含むことができる。図６に示す実施形態では、データストア６０２は、データベースホスト１、データベースホスト２、データベースホスト３、…データベースホストｎを含む。
【００５８】
データストア６０２は、プロデューサ６０４、プロデューサコンシューマ６０６及びコンシューマ６０８と通信する。プロデューサ６０４は、データを生成し、データストア６０２に追加するエンティティである。コンシューマ６０８は、データストア６０２内のデータを読み出すエンティティである。プロデューサコンシューマ６０６は、データセットを生成し、データストア内のデータセットを読み取ることができるエンティティである。一実施形態では、プロデューサコンシューマ６０６は、データストア６０２内に第１のデータセットを生成し、データストア６０２内の第２のデータセットを読み取ることができる。データは、例えば、ステータス更新、計算結果、状態情報等を含む。
【００５９】
図７は、データストアの実施形態の概略図である。図７に示すデータストアは、データストアの単一デバイス内のマルチノードのためのデータベースクラスタを示す。データストアは、パブリッシュ／サブスクライブ型のデータストアとして実装できる。データストアは、個別のブロックとして示される２つのノードを含む。図７に示す例では、データストアは、ＮｏｄｅＡ及びＮｏｄｅＮを含む。各ノードは、内部ファブリック７２６によって接続された同じコンポーネントを含む。各ノードは、データストアクライアントと通信するプロデューサ７０４ａ、７０４ｎと、データストアクライアントと通信するプロデューサコンシューマ７０６ａ、７０６ｎと、データストアクライアントと通信するコンシューマ７０８ａ、７０８ｎとを含む。各ノードは、状態情報を記憶するローカルデータストア７０２ａ、７０２ｎを含む。ローカルデータストア７０２ａ、７０２ｎは、ＤＢホスト１、ＤＢホスト２、ＤＢホスト３、ＤＢホストｎ等の複数のデータベースホストと共にデータベースインデックスを含む。ローカルデータストア７０２ａ、７０２ｎは、レプリケータエージェント７１２ａ、７１２ｎと通信する。レプリケータエージェント７１２ａ、７１２ｎは、データストアクライアント７１４ａ、７１４ｎと通信し、レプリケータロジック７１６ａ、７１６ｎを含む。永続的ストレージエージェント７１８ａ、７１８ｎは、データストアクライアント７２０ａ、７２０ｎと通信し、データを格納するための永続的ストレージ７２２ａ、７２２ｎを有する。永続的ストレージエージェント７１８ａ、７１８ｎは、データを格納するディスクストレージ７２４ａ、７２４ｎと通信する。レプリケータエージェント７１２ａ、７１２ｎは、ＮｏｄｅＡとＮｏｄｅＮとの間でデータストア情報を共有するための内部ファブリック７２６、及びこの内部ファブリック７２６に接続可能な他のノードと通信する。
【００６０】
図７に示すシングルノードアーキテクチャを使用する場合、１以上の別個のデータベースホストサーバを実装して、プロデューサとコンシューマとの間のデータフローを提供し、分散データストアをホストできる。データベース全体を独立したデータセットに分割してもよい。ホスティングサーバプロセスは、１以上の独立したセットに専用のものであってもよい。単一のデータベースインデックスサーバを導入して、ホストサーバとこれらがホストする対応するデータセットのマッピングを維持してもよい。
【００６１】
一実施形態では、コンシューマ７０８ａ、７０８ｎは、データストアクライアントによってデータベースインデックスサーバ（３０４）に接続できる。データベースクライアントは、データベースインデックスサーバ３０４に接続して、特定のデータセットに関心を登録し、サブスクライブできる。プロデューサ７０４ａ、７０４ｎは、データストアクライアントによってデータベースインデックスサーバ３０４に接続し、使用するホスティングサーバに関する情報を受信し、更にデータベースに関する更新を受信できる。プロデューサ７０４ａ、７０４ｎは、特定のホスティングサーバに接続し、追加、変更、削除、及びデータオブジェクトをパブリッシュできる。コンシューマ７０８ａ、７０８ｎは、新しいオブジェクト、変更されたオブジェクト、及び／又は削除されたオブジェクトがデータベースインデックスサーバ３０４から通知され、適切なホスティングサーバに接続されて、プロデューサ７０４ａ、７０４ｎによって生成されたデータセットをダウンロードできる。
【００６２】
独立したデータストアレプリケータエージェント７１２ａ、７１２ｎは、コンシューマ及びプロデューサの両方として動作するデータストアクライアントとして、データストア７０２ａ、７０２ｎに接続できる。レプリケータエージェント７１２ａ、７１２ｎは、同一デバイス内の他のノードとの間でのデータベースの複製を支援するために使用される。レプリケータエージェント７１２ａ、７１２ｎは、ローカルノード上で生成された全てのデータオブジェクトのコンシューマとして動作し、リモートノード上で生成された全てのデータオブジェクトのプロデューサとして動作できる。
【００６３】
独立した永続的ストレージエージェント７１８ａ、７１８ｎは、プロデューサ及びコンシューマの両方としてデータストア７０２ａ、７０２ｎに接続し、永続的ストレージ７２２ａ、７２２ｎ又はディスク７２４ａ、７２４ｎ等の永続的メモリストレージデバイスへのデータオブジェクトの格納及び復元を支援できる。
【００６４】
データベースのサイズが大きくなることに応じて、より多くのサーバを配置して、負荷分散のバランスをとってもよい。データベースを独立したパーティションに分割して、各サーバがパーティションのサブセットをホストできるようにしてもよい。
【００６５】
図８は、クラウドコンピューティングネットワークにオフロードされたリモートコントローラロジック８１２によって制御される複数のデバイスを示す概略図である。ＤｅｖｉｃｅＡ、ＤｅｖｉｃｅＢ、及びＤｅｖｉｃｅＮを含む各デバイスには、ＮｏｄｅＡ、ＮｏｄｅＢ、及びＮｏｄｅＮである１以上のノードが含まれている。図８に示す実施形態では、３つの別個のデバイスを示しているが、本開示の範囲から逸脱することなく、任意の数のデバイス及びノードが存在し得ることは当然である。各デバイスは、クラウドネットワーク８１４を介してコントローラロジック８１２からの通信を受信する構成エージェント８０６を含む。各デバイスは、クラウドネットワーク８１４を介してコントローラロジック８１２にデータを提供する監視／遠隔測定エージェント８０８を含む。各デバイスは、データストア８０２と、このデータストア８０２と通信する１以上のアプリケーションとを含む。
【００６６】
デバイスとノードは、独立しており、それぞれが独自のデータストアを有している。デバイスとノードの間にデータストアレプリケーションはない。デバイス及びノードは、それぞれの監視／遠隔測定エージェント８０８から個別にデータを送信する。コントローラロジック８１２は、複数のデバイス及びノードからの結合されたデータに基づいて処理を実行し、処理の結果に基づいて各ノード構成更新を送信する。
【００６７】
図９は、クラウド内にホストされるデータストアのためのマルチノードアーキテクチャのデータベースクラスタの実施形態の概略図である。データストア９０２は、複数のデバイスのプロデューサ９０４ａ、９０４ｎ、プロデューサコンシューマ９０６ａ、９０６ｎ、及びコンシューマ９０８ａ、９０８ｎと通信する。図９に示す例では、データストア９０２は、２つの別個のデバイスのプロデューサ、プロデューサコンシューマ及びコンシューマと通信する。図示のように、データストア９０２は、データベースインデックスと、データベースホスト１、データベースホスト２、データベースホスト３、…データベースホストｎの複数のデータベースホストとを含む。データストア９０２は、様々な実施形態において、任意の数のデータベースホストを有することができる。データストア９０２は、永続的ストレージエージェント９１８と通信する。永続的ストレージエージェント９１８は、データストアクライアント９２０と通信し、永続的ストレージ９２２を含む。永続的ストレージエージェント９１８は、情報をディスクストレージ９２４に格納する。プロデューサ９０４ａ、９０４ｎとデータベースインデックス、データベースホストＮまでとの間の全ての通信チャネルは、ＳＳＬ又は同様のメカニズムを介して保護（認証及び暗号化）できる。これにより、コンポーネント間で交換されるデータのプライバシーが維持される。
【００６８】
データストア９０２及び永続的ストレージエージェント９１８は、クラウドベースのストレージに格納されるように、クラウドネットワーク９２８にオフロードしてもよい。データストア９０２及びディスクストレージ９２４に格納されたデータは、複数の異なるデバイスがアクセスできる。データストア９０２は、データストアＵＲＬを介してクライアントアカウントがアクセスできるようにしてもよい。データストア９０２は、１以上のクラウドネットワーク９２８に亘るクラウドベースストレージの１以上の配置に亘って格納してもよい。データストア９０２は、複数の地理的位置からアクセス可能である。また、データストア９０２は、ネットワーキングデバイスにローカルに格納してもよく、クラウドベースのストレージに単独で格納してもよい。
【００６９】
図１０は、デバイス１０１０のノード１００４と、クラウドネットワーク１０２８に格納されたコントローラロジック１０１２との間で通信を行うためのシステム１０００の概略図である。デバイス１０１０は、ここに説明するように、スイッチ１０６又はルータ１１２であってもよい。ノード１００４は、構成エージェント１００６及び監視／遠隔測定エージェント１００８を含む。デバイス１０１０は、データストア１００２を含む。データストア１００２は、ノード１００４と共にローカルに格納してもよく、デバイス１０１０に格納し、マルチノードがアクセスできるようにしてもよく、クラウドストレージにオフロードしてもよく、外部に格納し、複数のデバイス１０１０がアクセスできるようにしてもよい。構成エージェント１００６は、コントローラロジック１０１２の形式で命令を受信する。コントローラロジック１０１２は、クラウドネットワーク上のクラウドベースのストレージに格納され、ネットワークを介してデバイス１０１０がアクセス可能である。構成エージェント１００６は、監視／遠隔測定エージェント１００８に命令を提供する。監視／遠隔測定エージェント１００８は、データストア１００２から情報を受信する。データストア１００２は、図に示すように、アプリケーション１、アプリケーション２、…アプリケーションＮの複数のアプリケーションに関する情報を含むことができる。構成エージェント１００６とコントローラロジック１０１２との間、及び監視／遠隔測定エージェント１００８とコントローラロジック１０１２との間の全ての通信チャネルは、ＳＳＬ又は同様のメカニズムを使用して保護（認証及び暗号化）され、コンポーネント間で交換されるデータのプライバシーを維持できる。
【００７０】
構成エージェント１００６は、ネットワーキングデバイス上の構成を管理する役割を担う。構成エージェント１１０５は、通常、ネットワーキングデバイスを構成及びプロビジョニングするために、コマンドラインインタフェース（command-line interface）、ＮＥＴＣＯＮＦ、ＲＥＳＴＣＯＮＦ、又は他のインタフェースを提供する。ＢＧＰ又はルーティング情報ベース（ＲＩＢ）等のネットワーキングデバイス上で実行される特定のアプリケーションは、構成エージェント１００６から構成変更の通知を受けることができる。構成エージェント１００６は、これらのアプリケーションが構成を読み取り、これに従って動作できるメカニズムを提供する。
【００７１】
監視／遠隔測定エージェント１００８は、データストア内の変更にサブスクライブし、接続を介してコントローラのような外部エンティティにこれらの変更を送信する。コントローラは、複数のデバイスから遠隔測定データ（telemetry data）を受信し、デバイス間に亘る幾つかの分析を実行し、構成の更新をプッシュバックして、デバイス間に亘る動作を最適化できる。遠隔測定は、一例として、簡易ネットワーク管理プロトコル（simple network management protocol：ＳＮＭＰ）と同様であってもよいが、周期的ポーリングの代わりに、監視／遠隔測定エージェント１００８は、更新を外部監視デバイスにプッシュする。
【００７２】
コントローラロジック１０１２は、コントローラと呼ぶこともできる。コントローラロジック１０１２は、複数のデバイスを管理する。コントローラロジック１０１２は、構成更新を複数のデバイスにプッシュし、監視／遠隔測定エージェント１１０８から受信した更新を介して複数のデバイスからステータス情報を受信する。コントローラロジック１０１２は、複数のデバイスからのルートデータに亘って最適パス計算（Best Path calculation）等の分析を実行し、適切な結果を各デバイスにプッシュバックできる。これにより、各デバイスが自身の最適パス計算をローカルで実行する場合と比較して、ネットワーク全体のパフォーマンスが向上する。
【００７３】
アプリケーションは、データストア１００２内のデータに基づいて動作を実行するプログラム又はサービスである。アプリケーションの例としては、ボーダゲートウェイプロトコル（Border Gateway Protocol：ＢＧＰ）、インターミディエイトシステムトゥインターミディエイトシステム（intermediate system to intermediate system：ＩＳＩＳ）、ルーティング情報ベース（routing information base：ＲＩＢ）、オープンショーテストパスファースト（Open Shortest Path First：ＯＳＰＦ）等がある。
【００７４】
図１１は、マルチノードデバイスのためのコントローラロジックをクラウドベースのコントローラにオフロードするシステムの概略図である。例示的アーキテクチャ１１００は、別個のブロックＮｏｄｅ１、ＮｏｄｅＮとして示される２つのノードを含む。なお、本開示の異なる実施形態及び具体例に適した任意の数のノードが存在し得ることは当然である。Ｎｏｄｅ１は、内部ファブリック１１２６と通信するレプリケータエージェント１１０４を含み、内部ファブリック１１２６は、ＮｏｄｅＮのレプリケータエージェント１１０４との通信を提供する。レプリケータエージェント１１０４は、データストアの異なるインスタンス間でデータの一貫性を保つ役割を果たす。レプリケータエージェント１１０４は、冗長性又はクラスタリングの目的で、あるデータストアの変更を別のデータストアに複製する。Ｎｏｄｅ１の構成エージェント１１０６は、クラウド１１２８ネットワークと通信し、このネットワークは、データストア１１０２のためのコントローラロジック１１１２を含む。各ノードは、データストア１１０２のコピーを含む。データストア１１０２内の情報は、アプリケーション１、アプリケーション２、…アプリケーションＮの複数のアプリケーションによってアクセス及び使用できる。ＮｏｄｅＮの監視／遠隔測定エージェント１１０８は、データストア１１０２及びクラウド１１２８ネットワークと通信する。Ｎｏｄｅ１の構成エージェント１１０６は、クラウド１１２８ネットワークを介してＮｏｄｅＮの監視／遠隔測定エージェント１１０８と通信できる。
【００７５】
図１２は、データストア１２０２の直接プロセス間通信（inter-process communication：ＩＰＣ）モデルの概略図である。プロセス間通信チャネルは、点線で示されている。点線（ＩＰＣ）と実線の違いは、ＩＰＣ接続がデータストアをバイパスすることである。ＩＰＣ接続は、データストアクライアントを互いに直接接続するため、データストアを経由する実線よりもホップが１つ少なくなる。ＩＰＣチャネルは、図に示すように、プロデューサ１２０４、プロデューサコンシューマ１２０６及びコンシューマ１２０８のデータストアクライアントと、レプリケータエージェント１２１４のデータストアクライアント１２１０及び永続的ストレージエージェント１２１８のデータストアクライアント１２２０とのそれぞれの間に存在する。Ｎｏｄｅ１及びＮｏｄｅＮを含む各ノードは、自らのデータストア１２０２を維持する。各ノードは、１以上のプロデューサ１２０４、プロデューサコンシューマ１２０６、及びコンシューマ１２０８を含む。各ノードは、データストアクライアント１２１０及びレプリケータロジック１２１６を含むレプリケータエージェント１２１４を有する。各ノードは、永続的ストレージエージェント１２１８を含み、永続的ストレージエージェント１２１８は、データストアクライアント１２２０と、ストレージをディスク１２２４ストレージにオフロードする永続的ストレージ１２２２を含む。
【００７６】
図１３は、データストアのインデックスサーバ３０４の概略図である。データストアの実施形態は、インデックスサーバ３０４及びホストサーバ３１０を含むことができる。インデックスサーバ３０４は、シングルノード及びマルチノードの実施形態においてデータストアと共に使用できる。インデックスサーバ３０４は、ホストサーバ情報１３０６を格納するホストサーバデータベース１３０４を含む。インデックスサーバ３０４は、データベース１３０８へのクライアントサーバ接続を含み、これによりクライアントサーバ接続１３１０を実現する。インデックスサーバ３０４は、データパーティション情報１３１４を含むデータパーティションデータベース１３１２を含む。インデックスサーバ１２０は、データサブスクリプション情報１３１８を含むデータサブスクリプションデータベース１３１６を含む。
【００７７】
インデックスサーバ３０４は、データストア動作及びクエリを管理する。インデックスサーバ３０４は、データストア内のどのホストデバイスにどの情報がアンカーされているかを知っている。データストアは、それぞれが実行プラットフォームにおける実行ノードとして機能する複数のホストデバイスを含む。各ホストデバイスは、１以上のプロセッサ及びキャッシュメモリを含むことができる。インデックスサーバ３０４は、メタデータを読み出して、複数のホストの各キャッシュメモリにローカルに既に格納されている情報を判定できる。インデックスサーバ３０４は、データストア内の複数のホストインスタンスのそれぞれに対して負荷分散動作を実行するように構成されている。
【００７８】
図１４は、データストアのホストサーバ３１０の概略図である。ホストサーバは、シングルノードアーキテクチャ又はマルチノードアーキテクチャでデータストアと共に使用できる。ホストサーバ３１０は、クライアントサーバ接続１４１０へのインデックスサーバ接続１４０４を実現し、これにより、クライアントは、データストアにアクセスし、データストアを照会できる。ホストサーバ３１０は、クライアントデータベース接続１４０６を実現し、これにより、データストア１４０８へのクライアントサーバ接続を実現する。ホストサーバ３１０は、データサブスクライブデータベース１４１２を含み、これにより、サブスクライバ接続１４１４がデータパーティション情報１４１６にアクセスできる。ホストサーバ３１０は、データパーティションデータベース１４１８を含み、データパーティションデータベース１４１８は、データサブスクライブ情報１４２０を含む。
【００７９】
ホストサーバ３１０は、ネットワーキングデバイスとデータストアとの間で初期接続が確立された後、データストア内のデータへの接続を提供する。初期接続は、インデックスサーバ３０４によって確立してもよい。ホストサーバ３１０は、データがデータサーバ内のどこにあるかを示す指示情報を提供する。ホストサーバ３１０は、データストアに格納されたデータへの書き込みを可能にする。
【００８０】
図１５は、パブリッシュ／サブスクライブデータストアにおけるデータ操作のためのプロセスフロー１５００の概略図である。プロセスフロー１５００は、データストア１５０２、パブリッシャデバイス１５０４、及びサブスクライバデバイス１５０６によって実施してもよい。パブリッシャデバイス１５０４及びサブスクライバデバイス１５０６のそれぞれは、ＢＧＰインスタンス及び／又はルータ、スイッチ等のネットワーキングデバイスであってもよい。パブリッシャデバイス１５０４及びサブスクライバデバイス１５０６は、幾つかのローカルストレージを含むことができ、データストア１５０２に大量のデータをオフロードするように構成できる。データストア１５０２の少なくとも一部のコピーは、パブリッシャデバイス１５０４及び／又はサブスクライバデバイス１５０６にローカルに格納してもよい。データストア１５０２は、クラウドベースのストレージに格納でき、ネットワーク接続を介して、パブリッシャデバイス１５０４及び／又はサブスクライバデバイス１５０６がアクセスできるようにしてもよい。
【００８１】
処理フロー１５００において、パブリッシャデバイス１５０４は、格納すべきデータを判定し、１５０８において、そのデータをローカルに格納する。データは、例えば、ＣＰＵ使用率、温度、ファン速度、周辺機器の状態等のデバイスの状態情報を含むことができる。デバイスの状態情報は、監視エージェントにとって有用である可能性があり、そのような情報を必要とする他のコントローラ又はデバイスにストリーミングしてもよい。データは、第１の場所から最終的な宛先へデータを送信するために必要なホップを示す最適パス情報を含むことができる。最適パス情報は、ＢＧＰに従ってデバイスによってローカルに判定される。最適パス情報は、最適パスコントローラによって判定してもよい。全てのサブスクライバデバイスが取得できるように、最適パス情報をデータストアにパブリッシュしてもよい。
【００８２】
プロセスフローにおいて、パブリッシャデバイス１５０４は、１５１０において、データをデータストア１５０２にパブリッシュする。データストア１５０２は、１５１２において、データを格納し、データを利用可能にする。サブスクライバデバイス１５０６は、データが利用可能であることを示す通知をデータストア１５０２から受信できる。サブスクライバデバイス１５０６は、１５１４において、データを要求する。データストア１５０２は、データストア１５０２内に格納されたデータを照会し、サブスクライバデバイス１５０６に応答を提供する。サブスクライバデバイス１５０６は、１５１６において、データを受信する。
【００８３】
一実施形態では、データは、パブリッシャデバイス１５０４及び／又はデータストア１５０２及び／又はサブスクライバデバイス１５０６によって暗号化される。データストア１５０２は、データを暗号化し、暗号化されたデータをサブスクライバデバイス１５０６に提供してもよい。データストア１５０２は、サブスクライバデバイス１５０６がデータを読み取ることが許可されていることを保証するために認証を実行してもよい。
【００８４】
プロセスフロー１５００及びネットワークコンピューティング環境におけるデータストア１５０２の使用は、多くの利点を有する。データストア１５０２は、デバイスの複製データを格納する外部データベースとして機能する。データストア１５０２は、デバイスの外部に配置できる。データストア１５０２は、データストア１５０２に接続され、データストア１５０２との通信を受信及び要求できる全てのデバイスを示す指示情報を受信できる。これにより、様々な利益が得られる。データストア１５０２は、データストア１５０２に接続された全てのデバイスの状態を認識する中央エージェントとして機能できる。データストア１５０２は、更に、データストア１５０２と通信する各デバイス上で実行されているソフトウェアのタイプ及びそのソフトウェアのバージョンを知る中央エージェントとして機能できる。
【００８５】
データストア１５０２に格納されたデータは、クラッシュ時に動作を再開するために使用できる。断続的な失敗又は回帰のために１以上のデバイスに障害が発生した場合、データストア１５０２内のデータを取り出して、障害が発生しなかったかのように動作を再開できる。データストア１５０２は、データストア１５０２のネットワーク内の各デバイスのバックアップとして機能する。
【００８６】
データストア１５０２内の情報は、一度に複数のサブスクライバデバイス１５０６に提供できる。これにより、多数の利点が得られ、サブスクライバデバイス１５０６からの情報要求をサービスすることによってパブリッシャデバイス１５０４がバックログに記録されることが防止される。例えば、コンピュータネットワークは、多数のデバイスを含むことができ、これらのデバイスは、最適パス情報を共有することができる。この例では、コンピュータネットワークには、ｄｅｖｉｃｅ１、ｄｅｖｉｃｅ２、ｄｅｖｉｃｅ３の３つのデバイスがある。ある具体例では、ｄｅｖｉｃｅ１とｄｅｖｉｃｅ２が、それぞれｄｅｖｉｃｅ３からの情報を必要とする。ｄｅｖｉｃｅ３がこれらの要求に応答する必要がある場合は、ｄｅｖｉｃｅ３の処理及びストレージリソースをサービス要求と共にログダウンできる。ここで、コンピュータネットワークがデータストア１５０２を含む場合、ｄｅｖｉｃｅ３は、代わりにデータストア１５０２に情報を公開でき、データストア１５０２は、情報を保存でき、データストア１５０２は、他のデバイスからのデータに対する要求を処理できる。これにより、各デバイス内の処理及びメモリリソースが解放され、より高い優先度の動作が実行され、コンピュータネットワーク全体及び外部コンピュータネットワークへのデータ伝送の円滑な動作が保証される。
【００８７】
図１６は、データベースコンテンツにメタデータを格納する格納構造１６００の概略図である。格納構造１６００は、ここで説明するデータストアにおけるデータストレージの例示的な実施形態を提供する。データストアでは、ＪＳＯＮ（JavaScript Object Notation）データスキーマ定義標準によるユーザ定義のデータモデルを使用できる。データモデルは、階層システム内のテーブル、オブジェクト、及び属性の構造を提供できる。例えば、データストアにより、サードパーティのアプリケーションを含む任意のアプリケーションが、ＪＳＯＮベースのデータモデルを定義し、及びＡＰＩ（アプリケーションプログラムインタフェース）を使用して、同じＪＳＯＮベースのデータモデルに従うデータを生成し、これにサブスクライブすることができる。
【００８８】
図１６に示す格納構造１６００は、データベース内の全てのテーブルタイプ１６０６及びデータベース内の全てのオブジェクトタイプ１６０４に対するデータベースメタデータ１６０２を含む。全てのテーブルタイプ１６０６のデータベースメタデータ１６０２は、図１６に示すように、テーブル定義１、テーブル定義２、…テーブル定義ｎのテーブル定義を含む。テーブル定義は、テーブルインデックス１６０８によって定義できる。データベースメタデータ１６０２は、テーブルインデックス１、テーブルインデックス２、…テーブルインデックスｎの各テーブル定義に対するテーブルインデックスを含むことができる。各テーブルインデックスは、属性定義１、属性定義２、…属性定義ｎの属性定義を含むことができる。全てのオブジェクトタイプ１６０４に対するデータベースメタデータ１６０２は、オブジェクト定義１、オブジェクト定義２、…オブジェクト定義ｎ等、データベース内の各オブジェクトに対するオブジェクト定義を含むことができる。オブジェクト定義は、更に、全ての属性タイプ１６１０について、データベースメタデータ１６０２に関連付けることができる。
【００８９】
一実施形態では、データストア格納構造は、ユーザ定義スキーマによって指定される。ユーザ定義スキーマは、ＪＳＯＮ又はその他の適切な言語で指定できる。このような実施形態では、データストアを完全にカスタマイズして、アレイ及びサブオブジェクトを含む属性のための多数のデータタイプに対する組み込み型サポートを提供できる。更に、この実施形態は、インデクスメカニズムを使用してテーブル下のオブジェクトにインデクスを付すためのサポートを提供する。一実施形態では、データストアは、データを表現可能状態転送（Representational State Transfer：ＲＥＳＴ）及び遠隔測定インタフェースにカプセル化できるＪＳＯＮ／ＸＭＬフォーマットでデータを格納できる。ＲＥＳＴ及び遠隔測定インタフェースは、データベースの効率を判定するために、リモートコンピューティングエンティティによる分析の監視を実現できる。データストアのデータスキーマ定義では、データに対して既に定義されているデータモードに準拠する手法で、ＲＥＳＴ／ＮＥＴＣＯＮＦインタフェースからデータを提供できる。
【００９０】
図１７は、ネットワークデバイスからデータストアにデータのストレージをオフロードする方法１７００の概略的ブロック図である。方法１７００は、ここで説明するデータストア又は任意の適切な演算デバイスによって実行できる。方法１７００は、ここで説明するように、データストアのインデックスサーバ３０４及び／又はホストサーバ３１０によって実行できる。
【００９１】
方法１７００は、１７０２において、ネットワークコンピューティング環境内のデータストアによって、パブリッシャデバイスからデータを受信することを含み、データストアは、パブリッシャデバイスから独立している。方法１７００は、１７０４において、データベーススキーマに従ってデータを１以上のデータベースパーティションに分割することを含む。方法１７００は、１７０６において、処理プラットフォーム内の複数のホストによってアクセス可能な複数の共有ストレージデバイスの１以上に亘ってデータを保存することを含む。方法１７００は、１７０８において、サブスクライバデバイスからデータの要求を受信することを含み、データストアは、サブスクライバデバイスから独立している。方法１７００は、１７１０において、データをサブスクライバデバイスに提供することを含む。
【００９２】
図１８は、例示的な演算デバイス１８００のブロック図である。演算デバイス１８００を使用して、ここで説明する様々な手順を実行できる。一実施形態では、演算デバイス１８００は、インデックスサーバ３０４及び／又はホストサーバ３１０を含むデータストアとして機能できる。演算デバイス１８００は、ここに記載の様々な監視機能を実行でき、ここに記載のアプリケーションプログラム又は機能等の１以上のアプリケーションプログラムを実行できる。演算デバイス１８００は、デスクトップコンピュータ、インダッシュコンピュータ、車両制御システム、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ等の多種多様な演算デバイスの何れであってもよい。
【００９３】
演算デバイス１８００は、１以上のプロセッサ１８０２と、１以上のメモリデバイス１８０４と、１以上のインタフェース１８０６と、１以上の大容量ストレージデバイス１８０８と、１以上の入出力（Ｉ／Ｏ）デバイス１８１０と、表示デバイス１８３０とを含み、これらは、全てバス１８１２に接続されている。プロセッサ１８０２は、メモリデバイス１８０４及び／又は大容量ストレージデバイス１８０８に格納された命令を実行する１以上のプロセッサ又はコントローラを含む。また、プロセッサ１８０２は、キャッシュメモリ等の種々のタイプのコンピュータ可読媒体を含むことができる。
【００９４】
メモリデバイス１８０４は、揮発性メモリ（例えば、ランダムアクセスメモリ（random access memory：ＲＡＭ）１８１４）及び／又は不揮発性メモリ（例えば、読出専用メモリ（read-only memory：ＲＯＭ）１８１６）等の種々のコンピュータ可読媒体を含む。また、メモリデバイス１８０４は、フラッシュメモリ等の書換可能ＲＯＭを含むことができる。
【００９５】
大容量ストレージデバイス１８０８は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ（フラッシュメモリ等）等の種々のコンピュータ可読媒体を含む。図１８に示すように、具体的な大容量ストレージデバイスは、ハードディスクドライブ１８２４である。大容量ストレージデバイス１８０８には、種々のコンピュータ可読媒体からの読出及び／又は種々のコンピュータ可読媒体への書込を可能にするために、種々のドライブを含めることもできる。大容量ストレージデバイス１８０８は、リムーバブルメディア１８２６及び／又は非リムーバブルメディアを含む。
【００９６】
入出力（Ｉ／Ｏ）デバイス１８１０は、データ及び／又は他の情報を演算デバイスに入力し又は演算デバイス１８００から取り出すことを可能にする様々なデバイスを含む。Ｉ／Ｏデバイス１８１０には、カーソル制御デバイス、キーボード、キーパッド、マイクロホン、モニタ又は他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム等が含まれる。
【００９７】
表示デバイス１８３０は、演算デバイス１８００の１人以上のユーザに情報を表示できる任意のタイプのデバイスを含む。表示デバイス１８３０としては、例えば、モニタ、表示端末、映像投影デバイス等が挙げられる。
【００９８】
インタフェース１８０６は、演算デバイス１８００が他のシステム、デバイス、又はコンピューティング環境とインタラクションすることを可能にする様々なインタフェースを含む。インタフェース１８０６は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ネットワーク、及びインターネットへのインタフェース等、任意の数の異なるネットワークインタフェース１８２０を含むことができる。他のインタフェースは、ユーザインタフェース１８１８及び周辺デバイスインタフェース１８２２を含む。また、インタフェース１８０６は、１以上のユーザインタフェース要素１８１８を含むことができる。更に、インタフェース１８０６は、プリンタ、ポインティングデバイス（マウス、トラックパッド、又は当業者に現在知られている任意の適切なユーザインタフェース、又は今後開発される任意の適切なユーザインタフェース）、キーボード等のためのインタフェース等、１以上の周辺インタフェースを含んでもよい。
【００９９】
バス１８１２は、プロセッサ１８０２、メモリデバイス１８０４、インタフェース１８０６、大容量ストレージデバイス１８０８、及びＩ／Ｏデバイス１８１０が互いに、及びバス１８１２に接続された他のデバイス又はコンポーネントと通信することを可能にする。バス１８１２は、システムバス、ＰＣＩバス、ＩＥＥＥバス、ＵＳＢバス等の幾つかのタイプのバス構造のうちの１以上を表す。
【０１００】
ここでは、説明のため、プログラム及び他の実行可能プログラム構成要素を個別のブロックとして示しているが、このようなプログラム及び構成要素は、演算デバイス１８００の異なる記憶構成要素内に様々な時点で存在してもよく、プロセッサ１８０２によって実行される。これに代えて、ここに記載のシステム及び手順は、ハードウェアで実現してもよく、ハードウェア、ソフトウェア、及び／又はファームウェアの組み合わせで実現してもよい。例えば、ここに記載のシステム及び手順の１以上を実行するように１以上の特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）をプログラムできる。
【０１０１】
上記の記述は、例示及び説明を目的としている。これは、本発明を開示された詳細な形式に排他的に限定することを意図するものではない。上記の教示を参照することにより、多くの変更及び変形が可能である。更に、前述の変形例の何れか又は全ては、任意に組み合わせることができ、本開示の更なる組み合わせ例を形成できる。
【０１０２】
更に、本開示の具体的な実施例を説明及び図示しているが、本開示は、そのように説明及び図示された部分の具体的な形態又は配置に限定されるものではない。本開示の範囲は、本願の特許請求の範囲によって定義され、あるいは、将来に提出される特許請求の範囲、本願に基づく別出願、及びこれらの均等物があれば、これらによって定義される。
【実施例】
【０１０３】
以下の実施例は、更なる実施形態に関する。
【０１０４】
実施例１は、システムである。システムは、ネットワークコンピューティング環境内のパブリッシャデバイスを含む。システムは、ネットワークコンピューティング環境内のサブスクライバデバイスを含む。システムは、パブリッシャデバイス及びサブスクライバデバイスから独立したデータストアであって、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な処理プラットフォーム内の１以上のプロセッサを含むデータストアを含む。命令は、パブリッシャデバイスからデータを受信することを含む。命令は、複数の共有ストレージデバイスのうちの１以上のデバイスに亘ってデータを保存することを含む。命令は、サブスクライバデバイスにデータを提供することを含む。
【０１０５】
実施例２は、データストアは、更に、複数のサブスクライバデバイスからデータ処理要求を受信するためのインデックスサーバと、インデックスサーバがアクセス可能なメタデータと、処理プラットフォームと通信するホストサーバと、接続された複数のパブリッシャデバイスから受信した複数のデータポイントをまとめて保存する複数の共有ストレージデバイスとを備える、実施例１に記載のシステムである。
【０１０６】
実施例３は、命令は、更に、データベーススキーマに従ってデータを１以上のデータベースパーティションに分割することを含む、実施例１又は２に記載のシステムである。
【０１０７】
実施例４は、パブリッシャデバイスは、スイッチ又はルータであり、及び／又は、データは、パブリッシャデバイスのための１以上の状態情報又はパブリッシャデバイスによって判定される最適パス情報を含む、実施例１〜３の何れかに記載のシステムである。
【０１０８】
実施例５は、命令は、更に、データをクラウドベースのストレージデバイスにオフロードすることを含み、データストア自体は、クラウドベースのデータベースインスタンスである、実施例１〜４の何れかに記載のシステムである。
【０１０９】
実施例６は、データストアによって保存される複数のデータポイントの少なくとも一部のコピーが、パブリッシャデバイス又はサブスクライバデバイスの１以上に保存される、実施例１〜５の何れかに記載のシステムである。
【０１１０】
実施例７は、命令は、更に、データがデータストアに取り込まれるときに、データのメタデータを生成することを含む、実施例１〜６の何れかに記載のシステムである。
【０１１１】
実施例８は、命令は、更に、アプリケーションプログラムインタフェース（ＡＰＩ）を介して、パブリッシャデバイス又はサブスクライバデバイスの少なくとも一方から指示情報を受信することを含み、ＡＰＩ用の命令は、データストアに保存される、実施例１〜７の何れかに記載のシステムである。
【０１１２】
実施例９は、データは、最適パス判定であり、データストアは、パブリッシャデバイス自体が最適パス判定を１以上のサブスクライバデバイスにパブリッシュする代わりに、最適パス判定を処理する、実施例１〜８の何れかに記載のシステムである。
【０１１３】
実施例１０は、命令は、更に、データストアによって管理されるデータをパブリッシュ又はサブスクライブするために、データストアに接続された全てのデバイスを識別することを含む、実施例１〜９の何れかに記載のシステムである。
【０１１４】
実施例１１は、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な１以上のプロセッサである。命令は、ネットワークコンピューティング環境内のデータストアによって、パブリッシャデバイスからデータを受信することを含み、データストアは、パブリッシャデバイスから独立している。命令は、データベーススキーマに従ってデータを１以上のデータベースパーティションに分割することを含む。命令は、データを保存することを含む。命令は、サブスクライバデバイスからデータの要求を受信することを含み、データストアは、サブスクライバデバイスから独立している。命令は、データをサブスクライバデバイスに提供することを含む。
【０１１５】
実施例１２は、パブリッシャデバイスは、スイッチ又はルータであり、及び／又は、データは、パブリッシャデバイスのための１以上の状態情報又はパブリッシャデバイスによって判定される最適パス情報を含む、実施例１１に記載の１以上のプロセッサである。
【０１１６】
実施例１３は、命令は、更に、データをクラウドベースのストレージデバイスにオフロードすることを含み、データストア自体は、クラウドベースのデータベースインスタンスである、実施例１１又は１２に記載の１以上のプロセッサである。
【０１１７】
実施例１４は、命令は、更に、データがデータストアに取り込まれるときに、データのメタデータを生成することを含む、実施例１１〜１３の何れかに記載の１以上のプロセッサである。
【０１１８】
実施例１５は、命令は、更に、アプリケーションプログラムインタフェース（ＡＰＩ）を介して、パブリッシャデバイス又はサブスクライバデバイスの少なくとも一方から指示情報を受信することを含み、ＡＰＩ用の命令は、データストアに保存される、実施例１１〜１４の何れかに記載の１以上のプロセッサである。
【０１１９】
実施例１６は、方法である。方法は、ネットワークコンピューティング環境内のデータストアによって、パブリッシャデバイスからデータを受信することを含み、データストアは、パブリッシャデバイスから独立している。方法は、データベーススキーマに従ってデータを１以上のデータベースパーティションに分割することを含む。方法は、データを保存することを含む。方法は、サブスクライバデバイスからデータの要求を受信することを含み、データストアは、サブスクライバデバイスから独立している。方法は、データをサブスクライバデバイスに提供することを含む。
【０１２０】
実施例１７は、パブリッシャデバイスは、スイッチ又はルータであり、及び／又は、データは、パブリッシャデバイスのための１以上の状態情報又はパブリッシャデバイスによって判定される最適パス情報を含む、実施例１６に記載の方法である。
【０１２１】
実施例１８は、データストアは、複数のサブスクライバデバイスからデータ処理要求を受信するためのインデックスサーバと、インデックスサーバがアクセス可能なメタデータと、処理プラットフォームと通信するホストサーバと、接続された複数のパブリッシャデバイスから受信した複数のデータポイントをまとめて保存する複数の共有ストレージデバイスとを備える、実施例１６〜１７の何れかに記載の方法である。
【０１２２】
実施例１９は、データは、最適パス判定であり、データストアは、パブリッシャデバイス自体が最適パス判定を１以上のサブスクライバデバイスにパブリッシュする代わりに、最適パス判定を処理する、実施例１６〜１８の何れかに記載の方法である。
【０１２３】
実施例２０は、更に、データストアによって管理されるデータをパブリッシュ又はサブスクライブするために、データストアに接続されている全てのデバイスを識別することを含む、実施例１６〜１９の何れかに記載の方法である。
【０１２４】
なお、上述の構成、実施例、及び実施形態の任意の特徴は、ここに開示する構成、実施例、及び実施形態の何れかから得られる特徴の組み合わせを含む単一の実施形態において組み合わせることができる。
【０１２５】
ここに開示する種々の特徴は、当技術分野における重要な利点及び進歩を提供する。以下の特許請求の範囲は、これらの特徴の幾つかの例示である。
【０１２６】
本開示の前述の詳細な説明では、開示を合理化する目的で、開示の様々な特徴を１つの実施形態にまとめている。この開示方法は、特許請求された開示が各請求項において明示的に記載されているよりも多くの特徴を必要とするという意図を反映していると解釈されるべきではない。すなわち、本発明の態様の特徴は、先に開示した単一の実施形態の全ての特徴よりも少ない。
【０１２７】
上記の構成は、本開示の原理の適用の単なる例示である。当業者は、本開示の思想及び範囲から逸脱することなく、多くの変更及び代替の構成を想到でき、特許請求の範囲は、このような修正及び構成を網羅することを意図している。
【０１２８】
したがって、本開示を図面に示し、上に詳細に説明しているが、ここに記載されている原理及び概念から逸脱することなく、サイズ、材料、形状、形態、機能、動作、組み立て、及び使用の方法のバリエーションを含むと共に、これらに限定されない多数の変更を想到できることは、当業者にとって明らかである。
【０１２９】
更に、ここに記載される機能は、適切な場合、ハードウェア、ソフトウェア、ファームウェア、デジタルコンポーネント、又はアナログコンポーネントのうちの１以上において実行できる。例えば、１以上の特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）をプログラムして、ここに記載のシステム及び手順の１以上を実行できる。説明及び特許請求の範囲を通して、特定のシステム構成要素を指すために、特定の用語を使用している。構成要素は、異なる名称で呼ぶことができることは、当業者にとって明らかである。本文書は、名称が異なるが機能が同じコンポーネントを区別することを意図していない。
【０１３０】
上記の記述は、例示及び説明を目的としている。これは、本発明を開示された詳細な形式に排他的に限定することを意図するものではない。上記の教示を参照することにより、多くの変更及び変形が可能である。更に、前述の変形例の何れか又は全ては、任意に組み合わせることができ、本開示の更なる組み合わせ例を形成できる。
【０１３１】
更に、本開示の具体的な実施例を説明及び図示しているが、本開示は、そのように説明及び図示された部分の具体的な形態又は配置に限定されるものではない。本開示の範囲は、本願の特許請求の範囲によって定義され、あるいは、将来に提出される特許請求の範囲、本願に基づく別出願、及びこれらの均等物があれば、これらによって定義される。
【図１】
2021535694.tif 000003
【図２】
2021535694.tif 000004
【図３】
2021535694.tif 000005
【図４】
2021535694.tif 000006
【図５】
2021535694.tif 000007
【図６】
2021535694.tif 000008
【図７】
2021535694.tif 000009
【図８】
2021535694.tif 000010
【図９】
2021535694.tif 000011
【図１０】
2021535694.tif 000012
【図１１】
2021535694.tif 000013
【図１２】
2021535694.tif 000014
【図１３】
2021535694.tif 000015
【図１４】
2021535694.tif 000016
【図１５】
2021535694.tif 000017
【図１６】
2021535694.tif 000018
【図１７】
2021535694.tif 000019
【図１８】
2021535694.tif 000020
【国際調査報告】
2021535694.tif 000021