(57)【要約】システムは、サーバ、各種アプリケーションサーバ、各種データベースサーバ、及びシステムデータベースを含み得る。アプリケーションサーバは夫々がアプリケーションサーバを含むアプリケーションサーバグループに分割できる。サーバはデータソースからデータを受信し、データは、ソース識別子と、データソースに関連付けられたキー識別子とを含む。サーバは、データソースのソース識別子に基づいて、データソースに関連付けられた特定のアプリケーションサーバグループを決定し、データソースからのデータをアプリケーションサーバグループのアプリケーションサーバに送信する。アプリケーションサーバは、アプリケーションサーバグループに関連付けられた特定のデータベースサーバを決定して、前記データを前記データベースサーバに送信し、前記データベースサーバは、前記データソースのキー識別子に基づいて、前記データを格納するシステムデータベースの特定のパーティションを決定する。
2021518604.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
サーバと、
前記サーバに通信可能に結合された複数のアプリケーションサーバグループであって、各アプリケーションサーバグループは、アプリケーションサーバを備える、複数のアプリケーションサーバグループと、
前記複数のアプリケーションサーバグループに通信可能に結合された複数のデータベースサーバと、及び、
複数のパーティションに分割され、前記複数のデータベースサーバに通信可能に結合されたシステムデータベースと
を含み、
前記サーバは、
プロセッサと、及び、 
前記プロセッサと通信可能に結合された非一時性のコンピュータ読取可能の媒体と
を含み
前記プロセッサは、
データソースから、前記データソースに関連付けられたソース識別子を含むデータを受信するステップと、
前記データソースに関連付けられた前記ソース識別子に基づいて、前記複数のアプリケーションサーバグループのうち、前記データソースに関連付けられたアプリケーションサーバグループを決定するステップと、及び、
前記データソースから、前記アプリケーションサーバグループのアプリケーションサーバにデータを送信するステップと
を含む動作を実行するように構成されており、
前記アプリケーションサーバは、前記アプリケーションサーバグループに関連付けられた、前記複数のデータベースサーバのうちのデータベースサーバを決定し、前記データソースから前記データベースサーバにデータを送信するように構成されており、
前記データベースサーバは、前記データソースに関連付けられたキー識別子を決定するように構成されており、ここで前記キー識別子は前記データソースからのデータを前記システムデータベースに格納するために用い得るものである、
システム。
【請求項２】
更に、
前記サーバ及び前記複数のアプリケーションサーバグループに通信可能に結合された複数のロードバランサデバイスを含み、
前記プロセッサは、更に、
前記アプリケーションサーバグループに関連付けられる、前記複数のロードバランサデバイスのうちの、ロードバランサデバイスを決定するように構成されており、
前記ロードバランサデバイスは、
前記データソースからのデータを処理するための、前記アプリケーションサーバグループの前記アプリケーションサーバを決定し、及び、
前記データソースからのデータを前記アプリケーションサーバにデータを送信する
ように構成されている、
請求項１に記載のシステム。
【請求項３】
前記プロセッサは、更に、
複数のソース識別子に対応する複数のルーティング識別子を含むデータベースにアクセスするステップであって、各ルーティング識別子は前記複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを示す、アクセスするステップと、
前記データソースのソース識別子に対応するルーティング識別子を決定するステップと、及び、
前記ルーティング識別子に対応する、前記複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップと
により、
前記データソースに関連付けられた、前記複数のアプリケーションサーバグループのうちの前記アプリケーションサーバグループを決定するように構成されている、
請求項１に記載のシステム。
【請求項４】
前記データベースサーバが、
前記システムデータベースの前記複数のパーティションに対応する複数のキー識別子を含むデータベースにアクセスするステップと、
前記データソースの前記キー識別子に対応する前記システムデータベースの特定のパーティションを決定するステップと、及び、 
前記特定のパーティションに格納するために前記システムデータベースにデータを送信するステップと
により、
前記システムデータベースの前記複数のパーティションのうち、前記データソースに関連付けられ、前記データソースからのデータを格納するために用いられ得る、前記特定のパーティションを決定するように構成されている、
請求項１に記載のシステム。
【請求項５】
前記アプリケーションサーバグループの前記アプリケーションサーバは、更に、
前記アプリケーションサーバグループに関連付けられた前記データベースサーバのエラーを検出し、
前記データソースからデータを受信するための、前記複数のデータベースサーバのうちの別のデータベースサーバを特定し、及び、
前記データソースから、前記複数のデータベースサーバのうちの前記別のデータベースサーバに、データを送信する
ように構成されている、 
請求項１に記載のシステム。
【請求項６】
前記データソースが、資源の消費量を測定するためのメータデバイスを含む、
請求項１に記載のシステム。
【請求項７】
前記資源が、電機、ガス、若しくは水を含む、
請求項６に記載のシステム。
【請求項８】
サーバによって、データソースから、前記データソースに関連付けられたソース識別子を含むデータを取得するステップと、
前記サーバによって、前記データソースの前記ソース識別子に基づいて、前記データソースに関連付けられた、複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップと、
前記サーバによって、前記データソースからのデータを、前記アプリケーションサーバグループのアプリケーションサーバに送信するステップと、
前記アプリケーションサーバによって、前記アプリケーションサーバグループに関連付けられた、複数のデータベースサーバのうちのデータベースサーバを決定するステップと、
前記アプリケーションサーバによって、前記データソースからのデータを前記データベースサーバに送信するステップと、
前記データベースサーバによって、前記データソースの前記ソース識別子に基づいて、前記データソースに関連付けられたキー識別子を決定するステップと、及び、
前記データベースサーバによって、前記データソースの前記キー識別子に基づいて、前記データソースに関連付けられたシステムデータベースの複数のパーティションのうちの特定のパーティションを決定するステップであって、前記特定のパーティションは前記データソースからのデータを格納するために使用可能である、決定するステップと
を含む、方法。
【請求項９】
前記データソースからのデータを前記アプリケーションサーバグループの前記アプリケーションサーバに送信するステップは、
前記サーバによって、前記アプリケーションサーバグループに関連付けられている複数のロードバランサデバイスのうちのロードバランサデバイスを決定するステップと、
前記サーバによって、前記データソースからのデータを前記ロードバランサデバイスに送信するステップと、
前記ロードバランサデバイスによって、前記データソースからのデータを処理するための前記アプリケーションサーバグループの前記アプリケーションサーバを決定するステップと、及び、
前記ロードバランサデバイスが、前記データソースからのデータを前記アプリケーションサーバに送信するステップと
を含む、
請求項８に記載の方法。
【請求項１０】
前記データソースに関連付けられた、前記複数のアプリケーションサーバグループのうちの前記アプリケーションサーバグループを決定するステップは、
前記サーバによって、複数のソース識別子に対応する複数のルーティング識別子を含むデータベースにアクセスするステップであって、各ルーティング識別子は前記複数のアプリケーションサーバグループのアプリケーションサーバグループを示すものである、アクセスするステップと、
前記サーバによって、前記データソースの前記ソース識別子に対応するルーティング識別子を決定するステップと、及び、
前記サーバによって、前記ルーティング識別子に対応する前記複数のアプリケーションサーバグループのうちの前記アプリケーションサーバグループを決定するステップと 
を含む、
請求項８に記載の方法。
【請求項１１】
前記データソースに関連付けられた前記システムデータベースの前記複数のパーティションのうちの前記特定の パーティションを決定するステップは、
前記データベースサーバによって、前記システムデータベースの前記複数のパーティションに対応する複数のキー識別子を含むデータベースにアクセスするステップと、
前記データベースサーバによって、前記データソースの前記キー識別子に対応する前記システムデータベースの前記特定のパーティションを決定するステップと、及び、
前記データベースサーバによって、前記データソースからのデータを前記特定のパーティションに格納するための前記システムデータベースに送信するステップと
を含む、
請求項８に記載の方法。
【請求項１２】
更に、
前記アプリケーションサーバグループの前記アプリケーションサーバによって、前記アプリケーションサーバグループに関連付けられた前記データベースサーバのエラーを検出するステップと、
前記アプリケーションサーバによって、前記データソースからデータを受信するための、前記複数のデータベースサーバのうちの別のデータベースサーバを特定するステップと、及び、
前記アプリケーションサーバによって、前記データソースからのデータを前記複数のデータベースサーバの前記別のデータベースサーバに送信するステップと
を含む、請求項８に記載の方法。
【請求項１３】
前記データソースが、資源の消費量を測定するためのメータデバイスを含む、請求項８に記載の方法。
【請求項１４】
前記資源が、電気、ガス、又は水を含む、請求項１３に記載の方法。
【請求項１５】
サーバによって、データソースから、前記データソースに関連付けられたソース識別子を含むデータを取得するステップと、
前記サーバによって、前記データソースに関連付けられた前記ソース識別子に基づいて、前記データソースに関連付けられた、複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップと、
前記サーバによって、前記データソースからのデータを前記アプリケーションサーバグループのアプリケーションサーバに送信するステップと、
前記アプリケーションサーバによって、前記アプリケーションサーバグループに関連付けられた複数のデータベースサーバのうちの第１のデータベースサーバを決定するステップと、
前記アプリケーションサーバによって、前記アプリケーションサーバグループに関連付けられた第１のデータベースサーバのエラーを検出するステップと、
前記アプリケーションサーバによって、前記データソースからデータを受信するための、前記複数のデータベースサーバのうちの第２のデータベースサーバを特定するステップと、 
前記アプリケーションサーバによって、前記データソースからのデータを前記複数のデータベースサーバの第２のデータベースサーバに送信するステップと、及び、
前記第２のデータベースサーバによって、前記ソース識別子に基づいて前記データソースに関連付けられたキー識別子と、前記キー識別子に基づいて前記データソースに関連付けられたシステムデータベースの複数のパーティションのうちの特定のパーティションとを決定するステップと
を含み、
前記特定のパーティションは、前記データソースからのデータを格納するために使用可能である、
方法。
【請求項１６】
前記データソースからのデータを前記アプリケーションサーバグループの前記アプリケーションサーバにデータを送信するステップは、
前記サーバによって、前記アプリケーションサーバグループに関連付けられた、複数のロードバランサデバイスのうちのロードバランサデバイスを決定するステップと、 
前記サーバによって、前記データソースからのデータを前記ロードバランサデバイスに送信するステップと、
前記ロードバランサデバイスによって、前記データソースからのデータを処理するための、前記アプリケーションサーバグループの前記アプリケーションサーバを決定するステップと、及び、
前記ロードバランサデバイスによって、前記データソースからのデータを前記アプリケーションサーバに送信するステップと
を含む、請求項１５に記載の方法。
【請求項１７】
前記データソースからのデータを処理するための、前記アプリケーションサーバグループの前記アプリケーションサーバを決定するステップは、
前記ロードバランサデバイスによって、前記データソースからのデータを処理するための前記アプリケーションサーバの可用性に基づいて、前記データソースからのデータを処理するための前記アプリケーションサーバを決定するステップを含む、
請求項１６に記載の方法。
【請求項１８】
前記データソースに関連付けられた前記システムデータベースの前記複数のパーティションのうちの前記特定の パーティションを決定するステップは、
前記第２のデータベースサーバによって、前記システムデータベースの前記複数のパーティションに対応する複数のキー識別子を含むデータベースにアクセスするステップと、
前記第２のデータベースサーバによって、前記データソースの前記キー識別子に対応する前記システムデータベースの前記特定のパーティションを決定するステップと、及び、
前記第２のデータベースサーバによって、前記データソースからのデータを、前記特定のパーティションに格納するための、前記システムデータベースに送信するステップと
を含む、
請求項１５に記載の方法。
【請求項１９】
前記データソースに関連付けられた、前記複数のアプリケーションサーバグループのうちの前記アプリケーションサーバグループを決定するステップは、
前記サーバによって、複数のソース識別子に対応する複数のルーティング識別子を含むデータベースにアクセスするステップと、
前記サーバによって、前記データソースの前記ソース識別子に対応するルーティング識別子を決定するステップと、及び、
前記サーバによって、前記ルーティング識別子に対応する前記複数のアプリケーションサーバグループのうちの前記アプリケーションサーバグループを決定するステップと
を含む、請求項１５に記載の方法。
【請求項２０】
前記データソースが、資源の消費量を測定するためのメータデバイスを含む、
請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概略、データシャーディングに関する。より具体的には、本開示は、限定するものではないが、クラスタ化されたデータベース環境におけるデータのパーティショニングに関するものであり、これにより、クラスタ化されたデータベース環境における環境のスケーラビリティ及びクラスタ化されたデータベース環境におけるデバイスの性能を向上させることができる。
【背景技術】
【０００２】
クラスタ化されたデータベース環境では、様々なサーバ又は他のデバイスが、一つ又は複数のデータセットにアクセスすることがある。幾つかの既存のクラスタ化データベース環境では、サーバ又はデバイスがデータセットへのアクセスを共有することがあり、これは、環境内の一つ又は複数のサーバ又は他のデバイスが同時に同じデータセットにアクセスしようとしたときに発生し得る、クラスタ待ち若しくはサーバ競合イベントなどの、環境内の様々な技術的問題を引き起こす可能性がある。
【０００３】
いくつかの既存のクラスタ化されたデータベース環境では、クラスタ待ちイベント又はサーバ競合イベントは、他のサーバが同じデータセットにアクセス又は処理しているときに、サーバがデータセットにアクセス又は処理するのを阻止することによって等、環境内の一つ又は複数のサーバ又はデバイスが様々な操作を実行する能力を阻止、遅延、又はその他の方法で影響を与える可能性がある。一つ又は複数のサーバ又はデバイスが操作を実行することを阻止又は遅延させることは、サーバ又はデバイスが操作を実行することを阻止又は遅延させられている間に、ネットワークリソース、又はサーバ若しくはデバイスのコンピューティングリソースを浪費する可能性がある。更に、既存のクラスタ化されたデータベース環境におけるこのような技術的問題は、様々なサーバ若しくはデバイスが通信的に接続され、ランダムな方法で（例えば、ロードバランサデバイスから）データを受信し、同じデータに同時にアクセスしようとする可能性がある、高可用性クラスタ化データベース環境における相互接続トラフィック上で増幅される可能性がある。更に、既存のクラスタ化されたデータベース環境におけるこのような技術的問題は、環境のスケールアウトを妨げる（例えば、更なるデータベースサーバの追加を妨げる）可能性があり、又は、データベース環境がスケールアウトされる場合には、更に増幅される可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このように、既存のクラスタ化されたデータベースシステムおよび方法は、上述にて議論されたものなどの欠点を呈しており、大規模で複雑なデータセットを管理または分析することができない場合がある。したがって、これらの及び他の理由から、クラスタ化されたデータベース環境でデータを管理する改良された技術、及び、改良されたクラスタ化されたデータベースシステムが、望まれている。
【課題を解決するための手段】
【０００５】
本発明についてのカバーされる形態は、この要約ではなく、特許請求の範囲によって定義される。この要約は、本発明の様々な形態の高レベルの概要であり、以下の詳細な説明にて更に記載されている概念の幾つかを紹介する。この要約は、発明の主題の重要な特徴若しくは本質的な特徴を特定することを意図するものではなく、発明の主題の範囲を決定するために単独で用いることを意図するものでもない。主題は、明細書全体、任意の若しくは全ての図面、及び各請求項の適切な部分を参照して理解されるべきである。
【０００６】
本開示の様々な実施例は、クラスタ化されたデータベース環境でデータをパーティショニングするためのシステム及び方法を提供し、これにより、環境のスケーラビリティ及び環境内のデバイスのパフォーマンスを改善することができる。
【０００７】
一つの実施例では、システムは、サーバと、アプリケーションサーバを含む、サーバに通信上結合する複数のアプリケーションサーバグループと、複数のアプリケーションサーバグループに通信上結合する複数のデータベースサーバと、及び、複数のパーティションに分割されたシステムデータベースとを含む。サーバは、プロセッサと、プロセッサに通信上結合する非一時性コンピュータ読取可能媒体とを含む。サーバは、データソースからのデータを受信するように構成されており、データは、データソースに関連付けられたソース識別子及びキー識別子を含む。プロセッサはまた、データソースに関連付けられたソース識別子に基づいて、データソースに関連付けられた、複数のアプリケーションサーバグループのうちの、アプリケーションサーバグループを決定するように構成されている。プロセッサは更に、データソースからのデータをアプリケーションサーバグループのアプリケーションサーバに送信するように構成され、ここで、アプリケーションサーバは、アプリケーションサーバグループに関連付けられている複数のデータベースサーバのうちのデータベースサーバを決定し、データソースからのデータをデータベースサーバに送信するように構成され、ここで、データベースサーバは、データソースのキー識別子に基づいて、データソースに関連付けられているシステムデータベースの複数のパーティションのうちの特定のパーティションを決定するように構成され、特定のパーティションは、データソースからのデータを格納するために使用可能である。
【０００８】
別の実施例では、方法は、サーバによって、データソースからデータを取得するステップを含み、そのデータは、データソースに関連付けされたソース識別子とキー識別子とを含む。方法は更に、サーバによって、データソースのソース識別子に基づいて、データソースに関連付けられた、複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップを含む。方法はまた、サーバによって、データソースからのデータを、アプリケーションサーバグループのアプリケーションサーバに送信するステップを含む。方法はまた、アプリケーションサーバによって、アプリケーションサーバグループに関連付けられた複数のデータベースサーバのうちのデータベースサーバを決定するステップを含む。方法はまた、アプリケーションサーバによって、データソースからのデータをデータベースサーバに送信するステップを含む。方法はまた、データベースサーバによって、データソースのキー識別子に基づいて、データソースに関連付けられたシステムデータベースの複数のパーティションのうちの特定のパーティションを決定するステップを含み、ここで、特定のパーティションは、データソースからのデータを格納するために使用可能である。
【０００９】
別の実施例では、方法は、サーバによって、データソースからデータを取得するステップを含み、そのデータは、データソースに関連付けられたソース識別子とキー識別子とを含む。方法はまた、サーバによって、データソースに関連付けられたソース識別子に基づいて、データソースに関連付けられた、複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップを含む。方法は更に、サーバによって、データソースからのデータを、アプリケーションサーバグループのアプリケーションサーバに送信するステップを含む。方法はまた、アプリケーションサーバによって、アプリケーションサーバグループに関連付けられた、複数のデータベースサーバのうちの第１のデータベースサーバを決定するステップを含む。方法はまた、アプリケーションサーバによって、アプリケーションサーバグループに関連付けられた第１のデータベースサーバのエラーを検出するステップを含む。方法はまた、アプリケーションサーバによって、データソースからデータを受信するための、複数のデータベースサーバのうちの第２のデータベースサーバを特定するステップを含む。方法はまた、アプリケーションサーバによって、データソースからのデータを、複数のデータベースサーバの第２のデータベースサーバに送信するステップを含む。方法はまた、第２のデータベースサーバによって、データソースのキー識別子に基づいて、データソースに関連付けられた、システムデータベースの複数のパーティションのうちの特定のパーティションを決定するステップを含み、ここで、特定のパーティションは、データソースからのデータを格納するために使用可能である。
【００１０】
一つ若しくは複数の形態及び実施例の詳細は、添付の図面及び以下の説明に記載されている。他の特徴および形態は、明細書、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】図１は、本開示の一実施例によるデータ分割システムの例である。
【図２】図２は、本開示の別の実施例によるデータ分割システムの例である。
【図３】図３は、本開示の一実施例による、クラスタ化されたデータベース環境でデータを分割するためのプロセスの例を示すフローチャートである。
【図４】図４は、本開示の一実施例によるデータ分割システムの例である。
【発明を実施するための形態】
【００１２】
本開示の特定の形態及び特徴は、環境のスケーラビリティ及び環境内のデバイスのパフォーマンスを向上させることができる、クラスタ化されたデータベース環境におけるデータのパーティショニングに関する。上述したように、既存のクラスタ化されたデータベース環境及びシステムは、一つ若しくは複数のデータセットへのアクセスを共有する様々なデバイス（例えば、サーバ、データベースなど）を含むことがあり、このことは、一つ若しくは複数のデバイスが同時に同じデータセットにアクセスしようとするときに、クラスタ待ち又は競合イベントを発生させる可能性がある。本明細書に記載の特定の実施例は、データソースからのデータが、特定のデバイス（例えば、サーバやデータベース）若しくはデバイスのグループに、一貫して送信され、処理されるように、データソースの識別子に基づいてクラスタ化されたデータベース環境内のデータをパーティショニングすることにより、これらの問題に対処するが、このことは、環境のスケーラビリティ及び環境内のデバイスのパフォーマンスを向上させることができる。
【００１３】
一つの実施例では、クラスタ化されたデータベース環境若しくはシステムは、サーバと、様々なアプリケーションサーバと、様々なデータベースサーバと、及び、システムデータベースとを含む。 この実施例では、様々なアプリケーションサーバは、グループ（例えば、ファーム）に分割することができ、アプリケーションサーバの各グループは、特定のデータベースサーバに関連付けられる（例えば、通信的に接続される）ことができる。幾つかの実施例では、環境内のアプリケーションサーバグループの数は、環境内のデータベースサーバの数に基づくことができ、各グループ内のアプリケーションサーバの数は、アプリケーションサーバグループの数に基づくことができる。例えば、環境が、三つのデータベースサーバと２４個のアプリケーションサーバとを含むならば、アプリケーションサーバは、夫々８個のアプリケーションサーバを含む三つのアプリケーションサーバグループに分割することができる。別の実施例では、各アプリケーションサーバグループは、任意の数のアプリケーションサーバを含むことができる。例えば、各アプリケーションサーバグループは、異なる数のアプリケーションサーバを含むことができる。
【００１４】
この実施例により引き続き、サーバは、一つ若しくは複数のデータソースと通信的に結合され、データソースからデータを受信することができる。データソースの例としては、電気、ガス、水などの資源の消費量を測定するためのメータデバイスを含み得る。データソースは、データを測定又は受信（例えば、取得）し、任意にデータを保存し、データをサーバに通信してもよい。データは、データソースによって測定又は受信（例えば、取得）された情報を、データソースに関連付けられたソース識別子若しくはキー識別子と共に含むことができる。データソースに関連付けられたソース識別子は、データソースを識別し、データソースからのデータを特定のグループのアプリケーションサーバ、アプリケーションサーバ、又はデータベースサーバにルーティングするのに用い得る識別子であり得る。例として、メータデータソース若しくはデバイスに関連付けられたソース識別子は、メータ識別子とすることができる。データソースに関連付けられたキー識別子は、データソースからのデータをシステムデータベースの特定の部分若しくはパーティションにルーティングするのに用い得る識別子であり得る。例として、データソースがメータデバイスであるならば、メータデバイスに関連付けられたキー識別子は、システムデータベースの特定のパーティションに対応するメータデバイスのメータ識別子の一部であり得る。
【００１５】
サーバは、プロセッサと、及び、データベース（例えば、ルックアップテーブル）を含むメモリとを含むことができ、サーバは、様々なデータソースから受信するデータのための特定のルートを決定することができる。例えば、プロセッサは、一つ若しくは複数の式、アルゴリズム、方法などを用いて、データソースのソース識別子に基づいて、データソースに関連付けられたルーティング識別子を決定することができる。別の実施例では、プロセッサは、データベースにアクセスして、データソースに関連付けられたソース識別子に基づいて、データソースに関連付けられたルーティング識別子を決定することができる。ルーティング識別子は、データソースから受信するデータのための特定のルートを決定するのに用いることができる。例えば、データベースは、様々なデータソースに関連付けられたソース識別子を示すデータと、各ソース識別子に関連付けられたルーティング識別子とを含むことができる。ルーティング識別子は、データソースに関連付けられたアプリケーションサーバ、アプリケーションサーバ、又は、データベースサーバの、特定のグループを示すことができる。例えば、ルーティング識別子は、データソースからデータを受信若しくは処理することができる環境の、特定のグループのアプリケーションサーバ、又は特定のデータベースサーバを決定するのに用いることができる。この実施例では、サーバは、データソースからデータを、データソースに関連付けられたソース識別子と共に受信し、サーバのプロセッサは、データソースのソース識別子に関連付けられたルーティング識別子を決定することができる。この実施例では、サーバは、データソースに関連付けられたルーティング識別子を決定することに対応して、データソースからのデータを、データソースに関連付けられた特定のアプリケーションサーバグループに、送信することができる。
【００１６】
この実施例では、データソースに関連付けられたアプリケーションサーバグループのアプリケーションサーバは、サーバからデータを受信し、そのデータを処理又は分析することができる。次に、アプリケーションサーバは、処理されたデータを、アプリケーションサーバグループに関連付けられた特定のデータベースサーバに送信することができる。データベースサーバは、プロセッサと、データベースを含むメモリとを含むことができる。データベースサーバのプロセッサは、アプリケーションサーバから受信したデータをシステムデータベースの特定の部分またはパーティションにルーティングするように、データベースにアクセスすることができる。例えば、システムデータベースは、様々なデータソースに関連付けられたキー識別子に基づいてパーティショニング（例えば、分割）することができる。例として、システムデータベースの各部分またはパーティションは、特定のデータソースのキー識別子に関連付けられることができる。この実施例では、データベースサーバのデータベースは、様々なデータソースに関連付けられたキー識別子を示すデータと、各キー識別子に関連付けられたシステムデータベースの部分とを含むことができる。データベースサーバは、データベースを用いて、データソースから得られたデータを、データソースのキー識別子に対応するシステムデータベースの特定の部分にルーティングすることができる。
【００１７】
例示的な例として、ガスメータは、データを測定若しくは受信し、そのデータを、ガスメータのソース識別子（例えば、メータ識別子）およびキー識別子（例えば、メータ識別子の最後の２桁）と共に、サーバに送信する。サーバは、メータのソース識別子に基づいてメータに関連付けられたルーティング識別子を決定し、ルーティング識別子を用いて、ガスメータからのデータを処理できるアプリケーションサーバの特定のグループと、アプリケーションサーバのグループに関連付けられた特定のデータベースサーバとを決定できる。アプリケーションサーバのグループのアプリケーションサーバは、ガスメータデバイスからのデータを処理し、処理されたデータをデータベースサーバに送信できる。データベースサーバは、ガスメータデバイスのキー識別子を用いて、データを格納すべき、システムデータベースの一部若しくはパーティションを決定することができる。例えば、システムデータベースを様々な部分に分割し、システムデータベースの各部分を特定のガスメータデバイスのキー識別子に対応させる。この実施例では、データベースサーバは、ガスメータデバイスからのデータをシステムデータベースに送信し、ガスメータデバイスのキー識別子に対応するシステムデータベースの部分に格納する。
【００１８】
このようにして、データソースから得られたデータは、アプリケーションサーバ及びデータベースサーバの特定のグループにルーティングすることができ、これにより、クラスタ化されたデータベース環境において、データソースに関連付けられていない、若しくはデータソースに割り当てられていない他のアプリケーションサーバ若しくはデータベースサーバが、データソースからのデータにアクセスしたり、データソースからのデータを処理したりすることを防ぐことができる。さらに、データソースからのデータは、システムデータベースの特定の部分に格納することができる。幾つかの実施形態では、本明細書に記載のように、一つ若しくは複数のデータソースからのデータをルーティングすることにより、クラスタ化されたデータベース環境内の様々なデバイスが、同じデータセットへのアクセスを共有することを防ぐことができ、これにより、クラスタ化されたデータベース環境内のクラスタ待ち若しくは競合の問題を緩和若しくは排除することができ、環境のスケーラビリティ及び環境内のデバイスのパフォーマンスを向上させることができる。
【００１９】
これらの例示的な実施例は、本明細書で説明する一般的な主題を読者に紹介するべく示されるものであり、本開示の概念の範囲を限定することを意図するものではない。以下のセクションでは、同じ数字が同じ要素を示す図面を参照して様々な更なる特徴及び例を説明し、方向性の記載を用いて例示的な実施例を説明するが、例示的な実施例と同様に、本開示を制限するのに用いられるものではない。
【００２０】
図１は、本開示の一実施例に係る、データ分割システム１００の例である。システム１００は、データを分割またはシャード化することができる任意のタイプのシステム（例えば、サーバ、データベース、若しくはデバイスの間又は内部でデータをパーティショニング若しくは分割するためのシステム）であることができる。幾つかの実施例では、システム１００は、システム１００によって受信されたデータに対して様々な操作を実行することができる様々なサーバ（例えば、ノード）を含むシステムのような、クラスタ化されたデータベースシステムであればよい。
【００２１】
図１に示す例では、システム１００は、一つ若しくは複数のサーバ１０２ａ−ｄ、アプリケーションサーバグループ（例えば、ファーム）１０４ａ−ｃ、データベースサーバ１０６ａ−ｃ、及びシステムデータベース１０８を含む。この実施例では、アプリケーションサーバグループ１０４ａ−ｃは、各種アプリケーションサーバ１１０ａ−ｌを含む。各サーバ１０２ａ−ｄ、データベースサーバ１０６ａ−ｃ、若しくはアプリケーションサーバ１１０ａ−ｌは、任意のコンピューティングシステム（例えば、デバイス）若しくはストレージデバイスであればよく、一つ若しくは複数のコンポーネントを含み得る。例えば、各サーバ１０２ａ−ｄ、データベースサーバ１０６ａ−ｃ、若しくはアプリケーションサーバ１１０ａ−ｌは、プロセッサ、バス、データベース、メモリ、入出力インタフェースコンポーネント、ディスプレイデバイス、通信デバイスなどを含み得る。
【００２２】
幾つかの実施例では、システム１００内のアプリケーションサーバグループ１０４ａ−ｃの数は、システム１００内のデータベースサーバ１０６ａ−ｃの数に基づき得るものであり、各アプリケーションサーバグループ１０４ａ−ｃは、特定のデータベースサーバ１０６ａ−ｃに関連付けられ得る（例えば、通信的に結合され得る）。例えば、図１に描かれた例では、システム１００は、三つのデータベースサーバ１０６ａ−ｃと、特定のデータベースサーバ１０６ａ−ｃに関連付けられた三つの対応するアプリケーションサーバグループ１０４ａ−ｃとを含む。この実施例では、アプリケーションサーバグループ１０４ａは、データベースサーバ１０６ａに通信上結合し、アプリケーションサーバグループ１０４ｂは、データベースサーバ１０６ｂに通信上結合し、アプリケーションサーバグループ１０４ｃは、データベースサーバ１０６ｃに通信上結合する。幾つかの実施例では、各アプリケーションサーバグループ１０４ａ−ｃ内のアプリケーションサーバ１１０ａ−ｌの数は、システム１００内のアプリケーションサーバグループ１０４ａ−ｃの数に基づき得る。例えば、図１に描かれた例では、システム１００は、１２個のアプリケーションサーバ１１０ａ−ｌと、それぞれが４個のアプリケーションサーバを含む３つのアプリケーションサーバグループ１０４ａ−ｃとを含む。別の実施例では、各アプリケーションサーバグループ１０４ａ−ｃは、任意の数のアプリケーションサーバ１１０ａ−ｌを含み得る。例えば、各アプリケーションサーバグループ１０４ａ−ｃは、異なる数のアプリケーションサーバ１１０ａ−ｌを含み得る。
【００２３】
幾つかの実施例では、一つ若しくは複数のデータソース１０ａ−ｃは、システム１００の一つ若しくは複数のデバイス若しくはコンポーネント（例えば、サーバ１０２ａ−ｄ）に通信上結合し得る。別の実施例では、データソース１０ａ−ｃは、一つ若しくは複数のリモートデバイス若しくはサーバに通信上結合し得る。例えば、データソース１０ａ−ｃは、一つ若しくは複数の他のデータソース、メータデバイス、ネットワークデバイスなどに通信上結合し得る。幾つかの実施例では、データソース１０ａ−ｃは、無線メッシュネットワークを介して、一つ若しくは複数のデータソース、メータデバイス、若しくはネットワークデバイスと通信（例えば、データを送信及び受信）し得る。更に、幾つかの実施例では、コレクタデバイスなどのネットワークデバイスは、データソース１０ａ−ｃと一つ若しくは複数のサーバ（例えば、サーバ１０２ａ−ｄ）との間の通信を促進し得る。
【００２４】
幾つかの実施例では、各サーバ１０２ａ−ｄは、一つ若しくは複数のデータソース１０ａ−ｃと通信上結合し、データソースからデータを受信できる。データソース１０ａ−ｃの例は、電気、ガス、水などの資源の消費を測定するメータデバイスを含み得る。データソース１０ａ−ｃは、データを測定若しくは受信（例えば、取得）し、データを保存し、サーバ１０２ａ−ｄにデータを通信し得る。データは、データソース１０ａ−ｃによって測定若しくは受信（例えば、取得）された情報を、データソース１０ａ−ｃに関連付けられたソース識別子若しくはキー識別子と共に、含み得る。ソース識別子は、データソース１０ａ−ｃを識別してデータソース１０ａ−ｃからのデータをアプリケーションサーバグループ１０４ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、若しくはデータベースサーバ１０６ａ−ｃの、特定のグループにルーティングするのに用いられ得る、任意のデータ若しくは情報であり得る。一例として、メータデータソース若しくはデバイスのソース識別子は、メータ識別子とすることができる。データソース１０ａ−ｃのキー識別子は、データソース１０ａ−ｃからのデータをシステムデータベース１０８の特定の部分若しくはパーティションにルーティングするのに用い得る、任意のデータ若しくは情報であり得る。一例として、メータデバイスのキー識別子は、メータデバイスのメータ識別子のうち、システムデータベース１０８の特定の部分若しくはパーティションに対応する部分であってもよい。
【００２５】
各サーバ１０２ａ−ｄは、プロセッサと、データベース（例えば、ルックアップテーブル）を含むメモリとを、含むことができる。プロセッサは、メモリと（例えば、バスを介して）通信上結合し得る。サーバ１０２ａ−ｄのメモリは、電源オフ時に情報を保持する任意のタイプのメモリデバイスであり得る。幾つかの実施例では、サーバ１０２ａ−ｄは、データソースからデータを受信することができ、サーバ１０２ａ−ｄのプロセッサは、データソースから受信したデータのための特定のルートを決定することができる。一例として、サーバ１０２ａのプロセッサは、データベースにアクセスして、データソース１０ａ−ｃから受信したデータのための特定の経路を決定することができる。例えば、サーバ１０２ａのデータベースは、様々なデータソース１０ａ−ｃに関連付けられたソース識別子を示すデータと、（例えば、ルックアップテーブル１１２の）各ソース識別子に関連付けられたルーティング識別子を示すデータとを、含むことができる。いくつかの実施例では、サーバ１０２ａは、様々なソース識別子及びルーティング識別子を示すデータを（例えば、他のデバイスから、若しくはユーザ入力を介して）取得若しくは受信することができる。ルーティング識別子は、データソース１０ａ−ｃに関連付けられた（例えば、データソースからデータを受信若しくは処理するためにデータソースに割り当てられている）特定のアプリケーションサーバグループ１０４ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、若しくはデータベースサーバ１０６ａ−ｃを示すことができる。例えば、図１に描かれた例では、各サーバ１０２ａ−ｄは、様々なソース識別子１１４ａ−ｅ（例えば、様々なメータ識別子）と、各ソース識別子１１４ａ−ｅに関連付けられたルーティング識別子１１６ａ−ｅ（例えば、値若しくは任意の他の識別子）とを示す、データを含むルックアップテーブル１１２を含み得る。この例では、各ルーティング識別子１１６ａ−ｅは、各ソース識別子１１４ａ−ｅに関連付けられたデータソース１０ａ−ｃからデータを受信または処理するために、各ソース識別子１１４ａ−ｅに割り当てられた特定のアプリケーションサーバグループ１０４ａ−ｃ若しくはデータベースサーバ１０６ａ−ｃを示す。例えば、ルーティング識別子１１６ａ及び１１６ｄは、ソース識別子１１４ａ及び１１４ｄがアプリケーションサーバグループ１０４ａ及び／若しくはデータベースサーバ１０６ａに関連付けられている（例えば、割り当てられている）ことを示し、ルーティング識別子１１６ｂ及び１１６ｅは、ソース識別子１１４ｂ及び１１４ｅがアプリケーションサーバグループ１０４ｂ及び／若しくはデータベースサーバ１０６ｂに関連付けられていることを示し、ルーティング識別子１１６ｃは、ソース識別子１１４ｃがアプリケーションサーバグループ１０４ｃ及び／若しくはデータベースサーバ１０６ｃに関連付けられていることを示すことができる。この例に続けて、サーバ１０２ａは、データソース１０ａ−ｃから、データソース１０ａ−ｃに関連付けられたソース識別子１１４ａ−ｅと共に、データを受信することができ、サーバ１０２ａのプロセッサは、ルックアップテーブル１１２にアクセスして、ソース識別子に関連付けられたルーティング識別子１１６ａ−ｅを決定することができる。この実施例では、サーバ１０２ａは、データソースに関連付けられたルーティング識別子１１６ａ−ｅを決定することに対応して、データソースから、データソースに関連付けられた特定のアプリケーションサーバグループ１０４ａ−ｃに、データを送信することができる。
【００２６】
上述の実施例では、ルックアップテーブル１１２は、様々なソース識別子に関連付けられたルーティング識別子を示すデータを含み、サーバ１０２ａ−ｄのプロセッサは、データソース１０ａ−ｃのソース識別子に関連付けられたルーティング識別子を決定するためにルックアップテーブル１１２にアクセスすることができるが、本開示は、そのような構成に限定されない。むしろ、他の実施例では、サーバ１０２ａ−ｄのプロセッサは、ルックアップテーブル１１２にアクセスすることなく、データソース１０ａ−ｃのソース識別子に基づいて、データソース１０ａ−ｃに関連付けられたルーティング識別子を決定することができる。例えば、サーバ１０２ａは、データソース１０ａ−ｃから、データソース１０ａ−ｃに関連付けられたソース識別子１１４ａ−ｅと共に、データを受信することができ、サーバ１０２ａのプロセッサは、一つ若しくは複数の式、アルゴリズム、方法などを用いて、ソース識別子１１４ａ−ｅ及び／若しくはデータソース１０ａ−ｃに関連付けられたルーティング識別子１１６ａ−ｅを、計算若しくは決定することができる。さらに、上述した実施例では、サーバ１０２ａ−ｄはルックアップテーブル１１２を含むが、本開示はそのような構成に限定されない。寧ろ、他の例では、ルックアップテーブル１１２は、サーバ１０２ａ−ｄの一部であってもよく、又は、サーバ１０２ａ−ｄとは別個の若しくは遠隔のものであってもよく、サーバ１０２ａ−ｄは、ルックアップテーブル１１２にアクセスするために、ルックアップテーブル１１２と通信上結合していてもよい。
【００２７】
幾つかの実施例では、システム１００は、ロードバランサデバイス１１８ａ−ｃを含むことができる。各ロードバランサデバイス１１８ａ−ｃは、特定のアプリケーションサーバグループ１０４ａ−ｃに関連付けられ、特定のアプリケーションサーバグループ１０４ａ−ｃ及びサーバ１０２ａ−ｄに通信上結合し得る。ロードバランサデバイス１１８ａ−ｃは、アプリケーションサーバグループ１０４ａ−ｃに関連付けられたデータソース１０ａ−ｃからのデータを処理若しくは分析するために、アプリケーションサーバグループ１０４ａ−ｃ内の特定のアプリケーションサーバ１１０ａ−ｌを決定するように構成される任意のデバイスであればよい。
【００２８】
例えば、サーバ１０２ａ−ｄのプロセッサは、データソース１０ａ−ｃからデータを受信し、上述のルーティング識別子に基づいて、データソース１０ａ−ｃに関連付けられたアプリケーションサーバグループ１０４ａ−ｃを決定することができる。この実施例では、サーバ１０２ａ−ｄのメモリは、各アプリケーションサーバグループ１０４ａ−ｃに関連付けられたロードバランサデバイス１１８ａ−ｃを示すデータを含むことができ、サーバ１０２ａ−ｄのプロセッサは、メモリにアクセスして、アプリケーションサーバグループ１０４ａ−ｃに関連付けられた特定のロードバランサデバイス１１８ａ−ｃを決定し、データソース１０ａ−ｃから得られたデータを特定のロードバランサデバイス１１８ａ−ｄに送信することができる。一例として、サーバ１０２ａは、データソース１０ａからデータを取得し、ルーティング識別子１１６ａがデータソース１０ａのソース識別子１１４ａに関連付けられていると決定する。この例では、サーバ１０２ａは、ルーティング識別子１１６ａがアプリケーションサーバグループ１０４ａに関連付けられていると決定することができる。この実施例に続けて、サーバ１０２ａは、特定のロードバランサデバイス１１８ａがアプリケーションサーバグループ１０４ａに関連付けられていると決定し、データをロードバランサデバイス１１８ａに送信することができる。ロードバランサデバイス１１８ａは、アプリケーションサーバグループ１０４ａに関連付けられたデータソース１０ａからのデータを処理若しくは分析するために、アプリケーションサーバグループ１０４ａ内のアプリケーションサーバ１１０ａ−ｄを決定することができる。幾つかの実施例では、ロードバランサデバイス１１８ａ−ｃは、様々な方法若しくは技法を用いて（例えば、ランダムな方法で、データを処理するアプリケーションサーバ１１０ａ−ｌの可用性に基づいて、又は、他の適切な方法若しくは技法を用いて）、データソース１０ａ−ｃからのデータを処理若しくは分析するために、アプリケーションサーバグループ１０４ａ−ｃ内の特定のアプリケーションサーバ１１０ａ−ｌを決定することができる。例えば、ロードバランサデバイス１１８は、（例えば、アプリケーションサーバ１１０ａが動作を実行していない場合、）アプリケーションサーバ１１０ａがデータを処理するのに利用可能なコンピューティングリソース若しくはネットワークリソースを持っているとの決定に対応して、アプリケーションサーバ１１０ａがデータソース１０ａ−ｃからのデータを処理することができると決定することができる。別の例として、ロードバランサデバイス１１８は、（例えば、他のアプリケーションサーバ１１０ｂ−ｄがアプリケーションサーバ１１０ａと比較してより多くの操作を実行している場合、）アプリケーションサーバグループ１０４ａの他のアプリケーションサーバ１１０ｂ−ｄと比較して、アプリケーションサーバ１１０ａが、利用可能なコンピューティングリソース若しくはネットワークリソースをより多く有すると決定することに対応して、アプリケーションサーバ１１０ａがデータソース１０ａ−ｃからのデータを処理することができる、と決定し得る。
【００２９】
幾つかの実施例では、サーバ１０２ａ−ｄは、ロードバランサデバイス１１８ａ−ｃと直接通信しなくてもよい。例えば、サーバ１０２ａ−ｄのプロセッサは、データソース１０ａ−ｃからデータを受信し、上述のルーティング識別子に基づいて、データソース１０ａ−ｃに関連付けられたアプリケーションサーバグループ１０４ａ−ｃを決定することができる。この例では、サーバ１０２ａ−ｄのプロセッサは、データソース１０ａ−ｃからのデータを、データソース１０ａ−ｃに関連付けられたアプリケーションサーバグループ１０４ａ−ｃに送信することができる。アプリケーションサーバグループ１０４ａ−ｃに関連付けられたロードバランサデバイス１１８ａ−ｃは、サーバ１０２ａ−ｄからのデータを受信（例えば、傍受）し、データソース１０ａ−ｃからのデータを処理若しくは分析するために、ロードバランサデバイス１１８ａ−ｃに関連付けられたアプリケーションサーバグループ１０４ａ−ｃ内の特定のアプリケーションサーバ１１０ａ−ｌを決定し得る。一例として、サーバ１０２ａは、データソース１０ａからデータを取得し、ルーティング識別子１１６ａがデータソース１０ａのソース識別子１１４ａに関連付けられていると決定する。この実施では、サーバ１０２ａは、ルーティング識別子１１６ａがアプリケーションサーバグループ１０４ａに関連付けられていると決定し、データソース１０ａからのデータをアプリケーションサーバグループ１０４ａに送信することができる。この例に続けて、アプリケーションサーバグループ１０４ａに関連付けられたロードバランサデバイス１１８ａは、サーバ１０２ａからのデータを受信（例えば、傍受）し、アプリケーションサーバグループ１０４ａに関連付けられたデータソース１０ａからのデータを処理若しくは分析するために、アプリケーションサーバグループ１０４ａ内のアプリケーションサーバ１１０ａ−ｄを決定することができる。
【００３０】
幾つかの実施例では、システム１００は、ロードバランサデバイス１１８ａ−ｃを含まないことがある。この実施例では、サーバ１０２ａ−ｄは、アプリケーションサーバグループ１０４ａ−ｃ内の特定のアプリケーションサーバ１１０ａ−ｌを決定して、アプリケーションサーバグループ１０４ａ−ｃに関連付けられたデータソース１０ａ−ｃからのデータを、上述と実質的に同じ方法で処理若しくは分析するように構成されてもよい。
【００３１】
幾つかの実施例では、アプリケーションサーバ１１０ａ−ｌは、サーバ１０２ａ−ｄ若しくはロードバランサデバイス１１８ａ−ｃからデータを受信してデータを処理若しくは分析するために、サーバ１０２ａ−ｄ若しくはロードバランサデバイス１１８ａ−ｃに通信上結合することができる。各アプリケーションサーバ１１０ａ−ｌはまた、アプリケーションサーバ１１０ａ−ｌのアプリケーションサーバグループ１０４ａ−ｃに関連付けられた特定のデータベースサーバ１０６ａ−ｃに通信上結合することができる。例えば、アプリケーションサーバグループ１０４ａのアプリケーションサーバ１１０ａ−ｄはデータベースサーバ１０６ａに関連付けられ、アプリケーションサーバグループ１０４ｂのアプリケーションサーバ１１０ｅ−ｈはデータベースサーバ１０６ｂに関連付けられ、アプリケーションサーバグループ１０４ｃのアプリケーションサーバ１１０ｉ−ｌはデータベースサーバ１０６ｃに関連付けられ得る。アプリケーションサーバ１１０ａ−ｌは、サーバ１０２ａ−ｄ若しくはロードバランサデバイス１１８ａ−ｃから取得若しくは受信するデータを処理し、処理したデータをアプリケーションサーバ１１０ａ−ｌのアプリケーションサーバグループに関連付けられた特定のデータベースサーバ１０６ａ−ｃに送信することができる。
【００３２】
例えば、各アプリケーションサーバ１１０ａ−ｌは、プロセッサと、データベースを含むメモリとを含むことができる。アプリケーションサーバ１１０ａ−ｌのデータベースは、アプリケーションサーバ１１０ａ−ｌのアプリケーションサーバグループ１０４ａ−ｃに関連付けられた特定のデータベースサーバ１０６ａ−ｃを示すデータを含むことができる。幾つかの実施例では、アプリケーションサーバ１１０ａ−ｌは、（例えば、ロードバランサデバイス１１８ａ−ｃ若しくはサーバ１０２ａ−ｄを介して）取得若しくは受信したデータを処理し、アプリケーションサーバ１１０ａ−ｌのアプリケーションサーバグループ１０４ａ−ｃに関連付けられた特定のデータベースサーバ１０６ａ−ｃを決定し、処理されたデータを特定のアプリケーションサーバグループ１０４ａ−ｃに送信することができる。例えば、アプリケーションサーバ１１００ａは、ロードバランサデバイス１１８ａやサーバ１０２ａから受信したデータを処理することができる。アプリケーションサーバ１１０のプロセッサは、アプリケーションサーバ１１０ａのデータベースにアクセスして、データベースサーバ１０６ａがアプリケーションサーバ１１０ａのアプリケーションサーバグループ１０４ａに関連付けられていることを決定することができる。そして、アプリケーションサーバ１１０ａは、処理されたデータをデータベースサーバ１０６ａに送信することができる。
【００３３】
各データベースサーバ１０６ａ−ｃは、データベースサーバ１０６ａ−ｃに関連付けられた特定のアプリケーションサーバグループ１０４ａ−ｃのアプリケーションサーバ１１０ａ−ｌに通信上結合し得る。データベースサーバ１０６ａ−ｃは、プロセッサと、データベース（例えば、ルックアップテーブル）を含むメモリとを含むことができる。プロセッサは、メモリに（例えば、バスを介して）通信上結合し得る。データベースサーバ１０６ａ−ｃのメモリは、電源オフ時に情報を保持する任意のタイプのメモリデバイスであればよい。幾つかの実施例では、データベースサーバ１０６ａ−ｃは、データベースサーバ１０６ａ−ｃに関連付けられたアプリケーションサーバ１１０ａ−ｌからデータを受信することができ、データベースサーバ１０６ａ−ｃのプロセッサは、アプリケーションサーバ１１０ａ−ｌから受信したデータをシステムデータベース１０８の特定の部分またはパーティションにルーティングすることができる。
【００３４】
例えば、システムデータベース１０８は、様々なデータソース１０ａ−ｃに関連付けられたキー識別子に基づいてパーティション化（例えば、分割）することができる。一例として、システムデータベース１０８は、パーティション（例えば、部分）１２０、１２２、１２４に分割することができ、各パーティション１２０、１２２、１２４は、特定のデータソース１０ａ−ｃのキー識別子に関連付けられ得る。例えば、図１に描かれた例では、パーティション１２０は、データソース１０ａ−ｃからのデータがパーティション１２０に格納されるようにソース識別子１１４ａに対応するデータソース１０ａ−ｃのキー識別子に関連付けられ得、パーティション１２２は、データソース１０ａ−ｃからのデータがパーティション１２２に格納されるようにソース識別子１１４ｂに対応するデータソース１０ａ−ｃのキー識別子に関連付けられ得、パーティション１２４は、データソース１０ａ−ｃからのデータがパーティション１２４に格納されるようにソース識別子１１４ｃに対応するデータソース１０ａ−ｃのキー識別子に関連付けられ得る。このように、幾つかの実施例では、システムデータベース１０８は、様々なデータソース１０ａ−ｃに関連付けられたキー識別子に基づいて水平方向にパーティション化され得る。
【００３５】
この実施例では、データベースサーバ１０６ａ−ｃのデータベースは、様々なデータソースに関連付けられたキー識別子を示すデータと、各キー識別子に関連付けられた（例えば、割り当てられた）システムデータベース１０８の一部とを含むことができる。幾つかの実施例では、データベースサーバ１０６ａ−ｃは、様々なデータソース１０ａ−ｃに関連付けられたキー識別子を示すデータと、各キー識別子に関連付けられたシステムデータベース１０８の一部とを、別のデバイスから若しくはユーザ入力を介して（例えば、別のデバイスから若しくはユーザ入力を介して）取得する（例えば、受信する）ことができる。データベースサーバ１０６ａ−ｃは、（例えば、対応するアプリケーションサーバ１１０ａ−ｌを介して）データソース１０ａ−ｃから得られたデータを、システムデータベース１０８の特定の部分に格納することができるように、データソース１０ａ−ｃのキー識別子に対応するシステムデータベース１０８の特定の部分にルーティングするように、データベースを用いることができる。一例として、データベースサーバ１０６ａは、データソース１０ａ−ｃのキー識別子と共に、ソース識別子１１４ａに関連付けられたデータソース１０ａ−ｃからのデータを含むデータを、アプリケーションサーバ１１０ａから取得する。データベースサーバ１０６ａのプロセッサは、データベースサーバ１０６ａのデータベースにアクセスして、キー識別子に関連付けられたシステムデータベース１０８の特定のパーティション１２０を決定し、システムデータベース１０８のパーティション１２０に格納されるようにデータをシステムデータベース１０８に送信する。
【００３６】
別の実施例では、データベースサーバ１０６ａ−ｃのプロセッサは、データベースサーバ１０６ａ−ｃのデータベースにアクセスすることなく、データソース１０ａ−ｃに関連付けられたキー識別子を決定し、決定されたキー識別子を用いて、データソース１０ａ−ｃからのデータをシステムデータベース１０８の特定の部分またはパーティションにルーティングすることができる。例えば、データベースサーバ１０６ａは、ソース識別子１１４ａに関連付けられたデータソース１０ａ−ｃからのデータを含むデータをアプリケーションサーバ１１０ａから取得する。この実施例では、データベースサーバ１０６ａのプロセッサは、データベースサーバ１０６ａ−ｃのデータベースにアクセスすることなく、ソース識別子１１４ａに関連付けられたキー識別子を決定することができる。一例として、ソース識別子１１４ａは、メータデバイスデータソース１０ａ−ｃのメータ識別子であることができ、プロセッサは、ソース識別子１１４ａに関連付けられたキー識別子がメータ識別子の一部（例えば、メータ識別子の最後の２桁）であることを決定するための、様々なアルゴリズム、方法、または技術を用いることができる。この例では、データベースサーバ１０６ａのプロセッサは、決定されたキー識別子を用いて、データソースからのデータを、決定されたキー識別子に関連付けられたシステムデータベース１０８の特定のパーティション１２０にルーティングし、データをシステムデータベース１０８に送信してパーティション１２０に格納することができる。
【００３７】
幾つかの実施例では、システムデータベース１０８は、任意の適切な方法で、追加的または代替的にパーティション化され得る。例えば、システムデータベース１０８は、日付、時間、若しくは任意の適切な間隔に基づいて、追加的または代替的にパーティション化され得る。例として、システムデータベース１０８に格納されるデータは、データソース１０ａ−ｃから得られるデータが上述のようにシステムデータベース１０８の特定のパーティション内に格納され、特定のパーティションはデータが受信された時間に基づいてさらにパーティション化されるように、データがデータソース１０ａ−ｃから得られる若しくは取得される時間に基づいて、追加的にパーティション化され得る（例えば、特定の時間にデータソース１０ａ−ｃから受信されたデータは、そのパーティションのサブパーティション内に格納され得る）。したがって、幾つかの実施例では、システムデータベース１０８は、特定のデータソース１０ａ−ｃからのデータがパーティションの特定のサブパーティション内に更に格納されるように、任意の適切な基準に基づいて（例えば、日付若しくは時間に基づいて）垂直方向にパーティション化され得る。従って、システムデータベース１０８は、（様々なデータソース１０ａ−ｃに関連付けられたキー識別子に基づいて）水平方向にパーティション化され得、及び／又は（例えば、任意の適切な基準に基づいて）垂直方向にパーティション化され得る。
【００３８】
このようにして、各種データソース１０ａ−ｃから得られたデータを、データを受信若しくは処理できるアプリケーションサーバ１０４ａ−ｃ及びデータベースサーバ１０６ａ−ｃの特定のグループにルーティングすることができ、これにより、データソース１０ａ−ｃに関連付けられていない、又は割り当てられていない、アプリケーションサーバ１０４ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、若しくはデータベースサーバ１０６ａ−ｃの、他のグループが、データソース１０ａ−ｃからのデータにアクセスしたり処理したりすることを、防ぐことができる。更に、様々なデータソース１０ａ−ｃからのデータは、様々なサーバ１０２ａ−ｄ、ロードバランサデバイス１１８ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、若しくはデータベースサーバ１０６ａ−ｃによって処理され、単一のシステムデータベース１０８の特定の部分に格納され得る。このように、幾つかの実施形態では、単一のシステムデータベース１０８は、様々なサーバ若しくはデバイスによって処理され得る様々な異なるソースからのデータを格納するのに用いることができ、システム１００における複数のデータベースの使用を省略することができる。幾つかの実施例では、本明細書に記載の一つ若しくは複数のデータソース１０ａ−ｃからのデータのルーティングは、システム１００内の様々なデバイス（例えば、アプリケーションサーバ１１０ａ−ｌ若しくはデータベースサーバ１０６ａ−ｃ）が、（例えば、同じデータソースからの）同じデータへのアクセスを共有すること、又は同時に同じデータへのアクセスを試みることを、防ぐことができ、このことは、システム１００内のクラスタ待ち若しくは競合の問題を緩和又は排除することができる。幾つかの実施例では、システム１００におけるクラスタ待ち若しくは競合の問題を緩和又は排除することは、システム１００における一つ若しくは複数のアプリケーションサーバ１１０ａ−ｌ、データベースサーバ１０６ａ−ｃ、又は他のデバイスが、システム１００によって得られるデータに対する操作を実行することを、阻止または遅延されることを防止することによって、システム１００のリソースが無駄になることを防ぎ得ることとなる。
【００３９】
幾つかの実施例では、システム１００においてエラーが発生し得る（例えば、システム１００の一つ若しくは複数のデバイス若しくはコンポーネントにおけるエラー、故障、欠陥など）。この例では、システム１００においてエラーが発生する場合、システム１００の一つ若しくは複数のコンポーネントは、サーバ１０２ａ−ｄによって取得若しくは受信されるデータのための追加的若しくは代替的なルートを決定するように構成され得る。一例として、データベースサーバ１０６ａに欠陥若しくはエラーが発生する場合、データベースサーバ１０６ａに関連付けられたアプリケーションサーバ１１０ａ−ｄは、アプリケーションサーバ１１０ａ−ｄによって取得若しくは受信されるデータのための代替のルートを決定するように構成され得る。
【００４０】
例えば、図４は、本開示の一つの実施例に係るデータ分割システムの例である。図４に描かれた例では、アプリケーションサーバ１１０ａは、ロードバランサデバイス１１８ａ若しくはサーバ１０２ａからデータを受信し、データベースサーバ１０６ａに欠陥（例えば、障害）が発生したことを決定又は検出することができる。この例では、アプリケーションサーバ１１０ａは、データを受信又は処理する、システム１００内の別のデータベースサーバ１０６ｂ−ｃを決定又は特定することができる。例えば、アプリケーションサーバ１１０ａは、データベースサーバ１０６ａに障害が発生したとの決定に対応して、データベースサーバ１０６ｂがデータを受信又は処理するために利用可能であると決定し、得られたデータをデータベースサーバ１０６ａの代わりにデータベースサーバ１０６ｂに送信することができる。そして、データベースサーバ１０６ｂは、上述と実質的に同様の方法で、データソース１０ａ−ｃのキー識別子に基づいて、データを格納するシステムデータベース１０８の一部またはパーティションを決定することができる。このようにして、システム１００の一つ若しくは複数のコンポーネントにエラー又は欠陥が発生する場合に、システム１００によって取得又は受信されたデータを再ルーティングすることができる。
【００４１】
図１に戻ると、図１はシステム１００の特定の配置を例示しているが、様々な追加の配置が可能である。一例として、図１は、一定数のサーバ１０２ａ−ｄ、アプリケーションサーバグループ１０４ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、データベースサーバ１０６ａ−ｃ、及びシステムデータベース１０８を図示しているが、本開示は、このような構成に限定されない。寧ろ、他の実施例では、システム１００は、サーバ１０２ａ−ｄ、アプリケーションサーバグループ１０４ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、データベースサーバ１０６ａ−ｃ、及びシステムデータベース１０８の、任意の適当な数若しくは種類を含んでもよい。例えば、幾つかの実施例では、システム１００は、スケールアウト（例えば、追加のアプリケーションサーバグループ、アプリケーションサーバ、データベースサーバ、又はシステムデータベース１０８を含むようにスケールアウト）されてもよい。さらに、上述した幾つかの実施例では、データソース１０ａ−ｃは、データソース１０ａ−ｃに関連付けられたソース識別子若しくはキー識別子を示すデータを、システム１００内の一つ若しくは複数のデバイスに送信することができるが、本開示は、そのような構成に限定されない。寧ろ、他の実施例では、データソース１０ａ−ｃは、システムの一つ若しくは複数のコンポーネント（例えば、サーバ１０２ａ−ｄ）にデータを送信することができ、データは、データソース１０ａ−ｃに関連付けられたソース識別子と共に、データソース１０ａ−ｃによって測定又は受信された（例えば、取得された）情報を含むことができる。この例では、システム１００の一つ若しくは複数のコンポーネント（例えば、サーバ１０２ａ−ｄ、アプリケーションサーバ１１０ａ−ｌ、データベースサーバ１０６ａ−ｃ、ロードバランサデバイス１１８ａ−ｃ、又はシステムデータベース１０８）は、ソース識別子に基づいて、データソース１０ａ−ｃに関連付けられたキー識別子を決定できる。例えば、サーバ１０２ａは、ソース識別子１１４ａに関連付けられたデータソース１０ａ−ｃからデータを取得する。この例では、サーバ１０２ａのプロセッサは、データソース１０ａ−ｃのソース識別子１１４ａに関連付けられたキー識別子を決定できる。一例として、ソース識別子１１４ａは、メータデバイスデータソース１０ａ−ｃのメータ識別子であってもよく、プロセッサは、ソース識別子１１４ａに関連付けられたキー識別子が、メータ識別子の一部（例えば、メータ識別子の最後の２桁）であると決定するものであってもよい。この例では、決定されたキー識別子を用いて、上述と実質的に同じ方法で、データソース１０ａ−ｃからのデータを、決定されたキー識別子に関連付けられたシステムデータベース１０８の特定のパーティションにルーティングすることができる。幾つかの実施例では、ルーティング識別子又はキー識別子を決定するためのソース識別子としてメータ識別子を使用することにより、一つ若しくは複数の利点が提供され得る。例えば、メータ識別子がデータソース１０ａ−ｃのソース識別子であり、キー識別子がメータ識別子の一部である場合、データソース１０ａ−ｃは、ソース識別子を示すデータと共に、測定されたデータをシステム１００の一つ若しくは複数のコンポーネント（例えば、サーバ１０２ａ−ｄ、アプリケーションサーバ１１０ａ−ｌ、データベースサーバ１０６ａ−ｃ、ロードバランサデバイス１１８ａ−ｃ、又はシステムデータベース１０８）に送信することができる。この例では、一つ若しくは複数のコンポーネントは、ソース識別子（例えば、メータ識別子）に基づいて、キー識別子（例えば、メータ識別子の部分）を決定または識別することができる。
【００４２】
更に、上述の実施例では、データソース１０ａ−ｃのルーティング識別子及び／又はキー識別子は、データソース１０ａ−ｃのソース識別子に基づいて決定することができるが、本開示は、そのような構成に限定されない。寧ろ、他の実施例では、データソース１０ａ−ｃのルーティング識別子及び／又はキー識別子は、任意の適切な方法または技法を用いて決定することができる。
【００４３】
例えば、図２は、本開示の別の実施例に係る、データ分割システム２００の一つの例である。この例では、システム２００は、図１のサーバ１０２ａ−ｄ、アプリケーションサーバグループ１０４ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、データベースサーバ１０６ａ−ｃ、ロードバランサデバイス１１８ａ−ｃ、及びシステムデータベース１０８を含む。図２に描かれた例では、システム２００は、夫々が、図１のロードバランサデバイス１１８ａ−ｃ、アプリケーションサーバグループ１０４ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、及びデータベースサーバ１０６ａ−ｃと実質的に同じ様に構成され得る、追加のロードバランサデバイス２０２、アプリケーションサーバグループ２０４、アプリケーションサーバ２０６ａ−ｄ、及びデータベースサーバ２０８を含むようにスケールアウトされている。
【００４４】
この例では、サーバ１０２ａ−ｄのルックアップテーブル１１２は、様々なソース識別子２１０ａ−ｅ（例えば、様々なメータ識別子）と、各ソース識別子２１０ａ−ｅに関連付けられたルーティング識別子２１２ａ−ｅとを含む。ルックアップテーブル１１２を用いて、ソース識別子２１０ａ−ｅに関連付けられたデータソース（例えば、図１のデータソース１０ａ−ｃ）から、ロードバランサデバイス１１８ａ−ｃ及び２０２、アプリケーションサーバグループ１１８ａ−ｃ及び２０４、アプリケーションサーバ１１０ａ−ｌ及び２０６ａ−ｄ、並びに、データベースサーバ１０６ａ−ｃ及び２０８へ、上述と実質的に同じ様にして、データをルーティングすることができる。いくつかの例では、サーバ１０２ａ−ｄは、ロードバランサデバイス２０２、アプリケーションサーバグループ２０４、アプリケーションサーバ２０６ａ−ｄ、若しくはデータベースサーバ２０８が図１のシステム１００に追加されることに対応して、ソース識別子２１０ａ−ｅ及びルーティング識別子２１２ａ−ｅを示すデータを（例えば、他のデバイスから、又はユーザ入力を介して）受信することができる。
【００４５】
この例では、システムデータベース１０８は、データソースからのデータが、上述と実質的に同じ様にして、システムデータベース１０８の特定の部分に格納され得るように、一つ若しくは複数のデータソースのキー識別子に基づいて更にパーティション化され得る。例えば、システムデータベース１０８は、アプリケーションサーバグループ２０４及びデータベースサーバ２０８に関連付けられたデータソース（例えば、ソース識別子２１０ｄ及びルーティング識別子２１２ｄに関連付けられたデータソース）から得られるデータが、上述と実質的に同じ様にして、システムデータベース１０８のパーティション２１４に処理されて格納され得るように、パーティション２１４を含むべく更にパーティション化され得る。幾つかの実施例では、システムデータベース１０８は、ロードバランサデバイス２０２、アプリケーションサーバグループ２０４、アプリケーションサーバ２０６ａ−ｄ、及び、データベースサーバ２０８を含むようにシステム１００をスケールアウトすることに対応して、パーティション２１４若しくは任意の他のパーティションを含むようにパーティション化され得る。
【００４６】
このようにして、システム１００は、追加的又は代替的なコンポーネント（例えば、ロードバランサ、アプリケーションサーバグループ、アプリケーションサーバ、データベースサーバなど）を含むようにスケールアウトし得る。
【００４７】
図３は、本開示の一つの実施例に係る、クラスタ化されたデータベース環境でデータを分割するためのプロセスの一例を示すフローチャートである。幾つかの実施例では、図３のステップは、プロセッサ、例えば、汎用コンピュータ若しくはサーバのプロセッサによって、実行可能なプログラムコードで実装されてもよい。幾つかの実施例では、これらのステップは、プロセッサ若しくはサーバのグループによって実装されてもよい。幾つかの実施例では、図３に示す一つ若しくは複数のステップは、省略されてもよいし、異なる順序で実行されてもよい。同様に、幾つかの実施例では、図３に示されていない追加のステップも実行されてもよい。図３のプロセス３００は、図１を参照して説明されているが、他の実施形態も可能である。
【００４８】
ブロック３０２では、データは、データソース１０ａ−ｃから、データソース１０ａ−ｃのソース識別子及びキー識別子と共に、取得される。データソース１０ａ−ｃは、任意のデータソースであればよい。例えば、データソース１０ａ−ｃは、電力、ガス、水などの、資源の消費量を測定するためのメータデバイスであってもよい。データソース１０ａ−ｃは、データを測定又は受信（例えば、取得）し、データを保存し、サーバ１０２ａ−ｄにデータを通信してもよい。データは、データソース１０ａ−ｃによって測定又は受信（例えば、取得）された情報を、データソース１０ａ−ｃに関連付けられたソース識別子又はキー識別子と共に、含み得る。一つの例として、データソース１０ａは、水道メータデバイスであり、サーバ１０２ａは、水道メータデバイスのメータデバイス識別子を示すデータと、メータデバイス識別子の特定の部分（例えば、メータデバイス識別子の最後の２桁）を示すデータと共に、メータデバイスによって測定又は受信されるデータを取得する。
【００４９】
ブロック３０４では、データソース１０ａ−ｃのソース識別子に対応するルーティング識別子に基づいて、データソース１０ａ−ｃに関連付けられた特定のアプリケーションサーバグループ１０４ａ−ｃが、決定される。
【００５０】
例えば、様々なアプリケーションサーバグループ１０４ａ−ｃは、様々なアプリケーションサーバ１１０ａ−ｌを含むことができる。各アプリケーションサーバグループ１０４ａ−ｃは、特定のルーティング識別子に関連付けられ得る（例えば、割り当てられ得る）。幾つかの実施例では、サーバ１０２ａは、プロセッサと、データベース又はルックアップテーブル１１２を含むメモリとを含む。サーバ１０２ａのルックアップテーブル１１２は、様々なデータソース１０ａ−ｃに関連付けられたソース識別子１１４ａ−ｅを示すデータと、各ソース識別子１１４ａ−ｅに関連付けられたルーティング識別子１１６ａ−ｅを示すデータとを、含むことができる。各ルーティング識別子１１６ａ−ｅは、各ソース識別子１１４ａ−ｅに割り当てられる、特定のアプリケーションサーバグループ１０４ａ−ｃ、アプリケーションサーバ１１０ａ−ｌ、又はデータベースサーバ１０６ａ−ｃを、示す。サーバ１０２ａは、データソース１０ａ−ｃから、データソース１０ａ−ｃに関連付けられたソース識別子１１４ａ−ｅと共に、データを受信することができ、サーバ１０２ａのプロセッサは、ルックアップテーブル１１２にアクセスして、ソース識別子１１４ａ−ｅに関連付けられたルーティング識別子１１６ａ−ｅを決定することができる。一つの例として、サーバ１０２ａは、ソース識別子１１４ａに対応するデータソース１０ａからデータを受信し、ルックアップテーブル１１２に基づいて、ルーティング識別子１１６ａがソース識別子１１４ａに関連付けられることを決定する。この例では、サーバ１０２ａは、ルーティング識別子１１６ａがアプリケーションサーバグループ１０４ａに関連付けられる（例えば、割り当てられる）と決定できる。
【００５１】
別の実施例では、ブロック３０４において、サーバ１０２ａ−ｄのプロセッサは、ルックアップテーブル１１２にアクセスすることなく、データソース１０ａ−ｃのソース識別子に基づいて、データソース１０ａ−ｃに関連付けられたルーティング識別子を決定することができる。例えば、サーバ１０２ａは、データソース１０ａ−ｃから、データソース１０ａ−ｃに関連付けられたソース識別子１１４ａ−ｅと共に、データを受信することができ、サーバ１０２ａのプロセッサは、ソース識別子１１４ａ−ｅ及び／又はデータソース１０ａ−ｃに関連付けられたルーティング識別子１１６ａ−ｅを以下の式［数１］を用いて計算又は決定できる。
［数１］
ルーティング識別子＝（ソース識別子％１００）％ｎ
【００５２】
上記式において、％は、モデューロ演算又は関数（例えば、ある数を別の数で除算した後の残数の決定）を表し、ｎは、システム１００内のデータベースサーバ１１０ａ−ｌの数を表す。
【００５３】
ブロック３０６では、データソース１０ａ−ｃからのデータを処理できるアプリケーションサーバグループ１０４ａ−ｃの特定のアプリケーションサーバ１１０ａ−ｌが決定される。例えば、各サーバ１０２ａ−ｄは、データソース１０ａ−ｃから得られるデータをロードバランサデバイス１１８ａ−ｃに送信することができる。各ロードバランサデバイス１１８ａ−ｃは、特定のアプリケーションサーバグループ１０４ａ−ｃに関連付けられ、特定のアプリケーションサーバグループ１０４ａ−ｃ及びサーバ１０２ａ−ｄに通信上結合してもよい。ロードバランサデバイス１１８ａ−ｃは、アプリケーションサーバグループ１０４ａ−ｃに関連付けられたデータソース１０ａ−ｃからのデータを処理又は分析するために、アプリケーションサーバグループ１０４ａ−ｃ内の特定のアプリケーションサーバ１１０ａ−ｌを決定することができる。例えば、ロードバランサデバイス１１８ａは、アプリケーションサーバグループ１０４ａに関連付けられ、サーバ１０２ａからデータを受信することができる。ロードバランサデバイス１１８ａは、アプリケーションサーバグループ１０４ａに関連付けられたデータソース１０ａ−ｃからのデータを処理又は分析するために、アプリケーションサーバグループ１０４ａ内のアプリケーションサーバ１１０ａ−ｄを決定することができる。幾つかの実施例では、ロードバランサデバイス１１８ａ−ｃは、様々な方法若しくは技法を用いて（例えば、データを処理するアプリケーションサーバ１１０ａ−ｌの可用性に基づいて、ランダムな方法で、又は、他の適切な方法若しくは技法を用いて）、データソース１０ａ−ｃからのデータを処理又は分析するために、アプリケーションサーバグループ１０４ａ−ｃ内の特定のアプリケーションサーバ１１０ａ−ｌを決定することができる。例えば、ロードバランサデバイス１１８ａは、（例えば、アプリケーションサーバ１１０ａが動作を実行していなくとも、）アプリケーションサーバ１１０ａがデータを処理するために利用可能なコンピューティングリソース若しくはネットワークリソースを持っていると、決定することに対応して、アプリケーションサーバ１１０ａがデータソース１０ａからのデータを処理することができると決定することができる。別の例として、ロードバランサデバイス１１８ａは、（例えば、他のアプリケーションサーバ１１０ｂ−ｄがアプリケーションサーバ１１０ａと比較してより多くの操作を実行していても、）アプリケーションサーバグループ１０４ａの他のアプリケーションサーバ１１０ｂ−ｄと比較して、アプリケーションサーバ１１０ａが利用可能なコンピューティングリソース若しくはネットワークリソースをより多く有していると、決定することに対応して、アプリケーションサーバ１１０ａがデータソース１０ａからのデータを処理することができると、決定することができる。
【００５４】
幾つかの実施例では、システム１００は、ロードバランサデバイス１１８ａ−ｃを含まない場合がある。この例では、ブロック３０６において、サーバ１０２ａ−ｄは、アプリケーションサーバグループ１０４ａ−ｃ内の特定のアプリケーションサーバ１１０ａ−ｌを決定して、アプリケーションサーバグループ１０４ａ−ｃに関連付けられたデータソース１０ａ−ｃからのデータを、上述と実質的に同じ様にして、処理又は分析することができる。
【００５５】
ブロック３０８では、データソース１０ａ−ｃから得られたデータは、アプリケーションサーバグループ１０４ａ−ｃ（例えば、ブロック３０４で決定されたアプリケーションサーバグループ）のアプリケーションサーバ１１０ａ−ｄに送信される。幾つかの実施例では、サーバ１０２ａ−ｄは、データソース１０ａ−ｃから得られたデータをアプリケーションサーバグループ１０４ａ−ｃ若しくはアプリケーションサーバグループ１０４ａ−ｃのアプリケーションサーバ１１０ａ−ｌに送信するために、アプリケーションサーバグループ１０４ａ−ｃに通信上結合することができる。例えば、サーバ１０２ａ−ｄは、データソース１０ａ−ｃから得られたデータを、（例えば、ブロック３０６にて）ロードバランサデバイス１１８ａ−ｃによって決定されたアプリケーションサーバ１１０ａ−ｌに送信することができる。別の例では、サーバ１０２ａ−ｄは、データソース１０ａ−ｃから得られたデータを、データソース１０ａ−ｃのソース識別子１１４ａ−ｅに対応するルーティング識別子１１６ａ−ｅに関連付けられたアプリケーションサーバグループ１０４ａ−ｃ（例えば、ブロック３０４で決定されたアプリケーションサーバグループ）の任意のアプリケーションサーバ１１０ａ−ｌに送信することができる。幾つかの実施例では、サーバ１０２ａ−ｄは、アプリケーションサーバグループ１０４ａ−ｃに関連付けられた特定のロードバランサデバイス１１８ａ−ｃに通信上結合することができ、ロードバランサデバイス１１８ａ−ｃは、データをアプリケーションサーバグループ１０４ａ−ｃ若しくはアプリケーションサーバグループ１０４ａ−ｃのアプリケーションサーバ１１０ａ−ｌに、送信することができる。
【００５６】
一つの例として、サーバ１０２ａは、ソース識別子１１４ａに対応するデータソース１０ａからデータを受信し、ルックアップテーブル１１２に基づいて、ルーティング識別子１１６ａがソース識別子１１４ａに関連付けられていることを決定する。この例では、サーバ１０２ａは、ルーティング識別子１１６ａがアプリケーションサーバグループ１０４ａに関連付けられている（例えば、割り当てられている）と決定することができる。この例に続けて、サーバ１０２ａは、データソース１０ａから、データソース１０ａに関連付けられた特定のアプリケーションサーバグループ１０４ａ若しくはアプリケーションサーバグループ１０４ａのアプリケーションサーバ１１０ａ−ｄに、データを送信することができる。別の例として、サーバ１０２ａは、アプリケーションサーバグループ１０４ａに関連付けられた特定のロードバランサデバイス１１８ａにデータを送信することができ、ロードバランサデバイス１１８ａは、アプリケーションサーバグループ１０４ａ若しくはアプリケーションサーバグループ１０４ａの特定のアプリケーションサーバ１１０ａ−ｄ（例えば、ブロック３０６で決定された特定のアプリケーションサーバ）に、データを送信することができる。
【００５７】
幾つかの実施例では、ブロック３０８において、特定のアプリケーションサーバグループ１０４ａ−ｃのアプリケーションサーバ１１０ａ−ｌは、サーバ１０２ａ−ｄ若しくはロードバランサデバイス１１８ａ−ｃから取得又は受信したデータを処理することができる。
【００５８】
ブロック３１０において、データは、アプリケーションサーバグループ１０４ａ−ｃに関連付けられた特定のデータベースサーバ１０６ａ−ｃに送信される。例えば、各データベースサーバ１０６ａ−ｃは、特定のアプリケーションサーバグループ１０４ａ−ｃに関連付けられ得る。一つの例として、図１を参照して、データベースサーバ１０６ａは、アプリケーションサーバグループ１０４ａに関連付けられ、データベースサーバ１０６ｂは、アプリケーションサーバグループ１０４ｂに関連付けられ、データベースサーバ１０６ｃは、アプリケーションサーバグループ１０４ｃに関連付けられ得る。特定のアプリケーションサーバグループ（例えば、ブロック３０４で決定されたアプリケーションサーバグループ）のアプリケーションサーバ１１０ａ−ｌは、（例えば、ブロック３０８で）サーバ１０２ａ−ｄ若しくはロードバランサデバイス１１８ａ−ｃから取得又は受信したデータを処理し、処理されたデータをアプリケーションサーバ１１０ａ−ｌのアプリケーションサーバグループ１０４ａ−ｃに関連付けられた特定のデータベースサーバ１０６ａ−ｃに送信することができる。一つの例として、アプリケーションサーバ１１００ａは、ロードバランサデバイス１１８ａ若しくはサーバ１０２ａから受信したデータを処理し、処理したデータを、アプリケーションサーバ１１００ａのアプリケーションサーバグループ１０４ａに関連付けられた特定のデータベースサーバ１０６ａに送信することができる。
【００５９】
ブロック３１２において、データソース１０ａ−ｃからのデータは、データソース１０ａ−ｃのキー識別子に基づいて、システムデータベース１０８の特定のパーティションに格納される。
【００６０】
例えば、各データベースサーバ１０６ａ−ｃは、プロセッサと、データベースを含むメモリとを含むことができる。データベースサーバ１０６ａ−ｃは、（例えば、ブロック３１０にて）データベースサーバ１０６ａ−ｃに関連付けられたアプリケーションサーバ１１０ａ−ｌからデータを受信することができ、データベースサーバ１０６ａ−ｃのプロセッサは、データベースにアクセスして、アプリケーションサーバ１１０ａ−ｌから受信したデータをシステムデータベース１０８の特定の部分またはパーティションにルーティングすることができる。
【００６１】
一つの例として、システムデータベース１０８は、様々なデータソース１０ａ−ｃに関連付けられたキー識別子に基づいてパーティショニング（例えば、分割）され得る。例えば、システムデータベース１０８は、パーティション（例えば、部分）１２０、１２２、１２４に分割することができ、各パーティション１２０、１２２、１２４は、特定のデータソース１０ａ−ｃのキー識別子に関連付けられる。例えば、パーティション１２０は、ソース識別子１１４ａに対応するデータソース１０ａのキー識別子に関連付けられ、パーティション１２２は、ソース識別子１１４ｂに対応するデータソース１０ｂのキー識別子に関連付けられ、パーティション１２４は、ソース識別子１１４ｃに対応するデータソース１０ｃのキー識別子に関連付けられ得る。この例では、データベースサーバ１０６ａ−ｃのデータベースは、様々なデータソース１０ａ−ｃに関連付けられたキー識別子を示すデータと、各キー識別子に関連付けられた（例えば、割り当てられた）システムデータベース１０８の一部とを含むことができる。データベースサーバ１０６ａ−ｃは、データベースを用いて、データソース１０ａ−ｃから得られたデータを（例えば、対応するアプリケーションサーバ１１０ａ−ｌを介して）、データソース１０ａ−ｃのキー識別子に対応するシステムデータベース１０８の特定の部分にルーティングすることができる。一つの例として、データベースサーバ１０６ａは、データソース１０ａのキー識別子と共に、ソース識別子１１４ａに関連付けられたデータソース１０ａからのデータを含むデータをアプリケーションサーバ１１０ａから取得する。データベースサーバ１０６ａのプロセッサは、データベースサーバ１０６ａのデータベースにアクセスして、キー識別子に関連付けられたシステムデータベース１０８の特定のパーティション１２０を決定し、システムデータベース１０８のパーティション１２０に格納されるようにデータをシステムデータベース１０８に送信する。
【００６２】
この例では、システムデータベース１０８は、様々なデータソース１０ａ−ｃに関連付けられたキー識別子に基づいてパーティション化され得るが、本開示は、そのような構成に限定されない。寧ろ、他の実施例では、システムデータベース１０８は、任意の適切な様にして、追加的又は代替的にパーティション化することができ、データベースサーバ１０６ａ−ｃは、システムデータベース１０８の特定のパーティションに格納されるように、システムデータベース１０８にデータを送信するように構成され得る。例えば、システムデータベース１０８は、日付、時間、又は任意の適切な間隔に基づいてパーティション化され、データベースサーバ１０６ａ−ｃは、特定の日付、時間、又は間隔に基づいて、システムデータベース１０８の特定のパーティションに格納されるように、システムデータベース１０８にデータを送信するように構成され得る。一つの例として、システムデータベース１０８に格納されたデータは、一カ月の数日に基づいて追加的にパーティション化され、データベースサーバ１０６ａ−ｃは、データソース１０ａ−ｃから得られたデータが、上述のように、データソース１０ａ−ｃのキー識別子に関連付けられたシステムデータベース１０８の特定のパーティションに格納されるように、パーティションに基づいて格納されるべくシステムデータベース１０８にデータを送信するよう構成され得、特定のパーティションは、データが受信された月の日に基づいて更にパーティション化される（例えば、特定の日にデータソース１０ａ−ｃから受信したデータは、パーティションのサブパーティション内に格納することができる。）。別の例として、システムデータベース１０８に送信又は格納されたデータは、データソース１０ａ−ｃからのコンテンツの種類、内容、特徴などの任意の適切な基準に基づいて、追加的又は代替的にパーティション化することができる。
【００６３】
上述の例では、データソースからのデータは、ソース識別子、ルーティング識別子、又は、データソースに関連付けられたキー識別子に基づいてルーティングされ、パーティション化され得るが、本開示はそのような構成に限定されない。寧ろ、他の実施例では、データソースからのデータは、データソースに関連付けられた、ソース識別子、ルーティング識別子、若しくはキー識別子に基づいて、特定のサーバ、ロードバランサデバイス、アプリケーションサーバグループ、及び／又はデータベースサーバに、ルーティングされ得る。代替的な例では、データソースからのデータは、データソースに関連付けられた、ソース識別子、ルーティング識別子、若しくはキー識別子に基づいて、システムデータベースの特定のパーティション若しくはサブパーティションに、格納され得る。
【００６４】
例示された実施例を含む、特定の実施例についての前記説明は、例示及び説明の目的のためだけに提示されたものであり、網羅的であることを意図したものではなく、また、本開示を開示された正確な形態に限定することを意図したものではない。数多くの修正、適応、及びそれらの使用は、開示の範囲から逸脱することなく、当業者には明らかであろう。
【図１】
2021518604.tif 000003
【図２】
2021518604.tif 000004
【図３】
2021518604.tif 000005
【図４】
2021518604.tif 000006
【国際調査報告】
2021518604.tif 000007
2021518604.tif 000008
2021518604.tif 000009