(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-08
(45)【発行日】2022-07-19
(54)【発明の名称】クラスタ化されたデータベース環境でのデータのパーティショニング
(51)【国際特許分類】
G06F 16/182 20190101AFI20220711BHJP
G06F 9/50 20060101ALN20220711BHJP
【FI】
G06F16/182
G06F9/50 150Z
(21)【出願番号】P 2020550633
(86)(22)【出願日】2019-03-12
(86)【国際出願番号】 US2019021726
(87)【国際公開番号】W WO2019182801
(87)【国際公開日】2019-09-26
【審査請求日】2022-03-10
(32)【優先日】2018-03-19
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】513113895
【氏名又は名称】ランディス・ギア イノベーションズ インコーポレイテッド
【氏名又は名称原語表記】LANDIS+GYR INNOVATIONS, INC.
(74)【代理人】
【識別番号】100145403
【氏名又は名称】山尾 憲人
(74)【代理人】
【識別番号】100132241
【氏名又は名称】岡部 博史
(74)【代理人】
【識別番号】100135703
【氏名又は名称】岡部 英隆
(74)【代理人】
【識別番号】100189544
【氏名又は名称】柏原 啓伸
(72)【発明者】
【氏名】チェット・チャン・ウォン
(72)【発明者】
【氏名】シヴァ・ストラム
(72)【発明者】
【氏名】サチン・ヴィジャン
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】特表2005-539287(JP,A)
【文献】特表2019-517196(JP,A)
【文献】特開2017-168109(JP,A)
【文献】特表2015-534175(JP,A)
【文献】米国特許出願公開第2017/0006135(US,A1)
【文献】米国特許出願公開第2012/284296(US,A1)
【文献】米国特許出願公開第2016/70494(US,A1)
【文献】米国特許出願公開第2018/0254143(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
システムであって、
サーバと、
前記サーバに通信可能に結合された複数のアプリケーションサーバグループであって、各アプリケーションサーバグループは、アプリケーションサーバを備える、複数のアプリケーションサーバグループと、
前記複数のアプリケーションサーバグループに通信可能に結合された複数のデータベースサーバ
であって、前記複数のデータベースサーバの数は、前記複数のアプリケーションサーバグループの数と等しく、前記複数のアプリケーションサーバグループの各々は、前記複数のデータベースサーバのうちの一つのデータベースサーバに対応し、且つ、通信可能に接続されている、前記複数のデータベースサーバと、及び、
複数のパーティションに分割され、前記複数のデータベースサーバに通信可能に結合されたシステムデータベースと
を含み、
前記サーバは、
プロセッサと、及び、
前記プロセッサと通信可能に結合された非一時性のコンピュータ読取可能の媒体と
を含み
前記プロセッサは、
データソースから、前記データソースに関連付けられたソース識別子を含むデータを受信するステップと、
前記データソースに関連付けられた前記ソース識別子に
対応するルーティング識別子に基づいて、前記複数のアプリケーションサーバグループのうち、前記データソースに関連付けられたアプリケーションサーバグループを決定するステップ
であって、前記ルーティング識別子は、前記複数のアプリケーションサーバグループのうち、前記データソースに関連付けられ、且つ、前記データソースから前記データを受信または処理するために使用される、前記アプリケーションサーバグループを示すものである、決定するステップと、及び、
前記データソースから、前記アプリケーションサーバグループのアプリケーションサーバにデータを送信するステップと
を含む動作を実行するように構成されており、
前記アプリケーションサーバは、前記アプリケーションサーバグループに
対応する、前記複数のデータベースサーバのうちのデータベースサーバを決定し、前記データソースから前記データベースサーバにデータを送信するように構成されており、
前記データベースサーバは、前記データソースに関連付けられたキー識別子を決定するように構成されており、ここで前記キー識別子は前記データソースからのデータを前記システムデータベースに格納するために用い得るものである、
システム。
【請求項2】
更に、
前記サーバ及び前記複数のアプリケーションサーバグループに通信可能に結合された複数のロードバランサデバイスを含み、
前記プロセッサは、更に、
前記アプリケーションサーバグループに関連付けられる、前記複数のロードバランサデバイスのうちの、ロードバランサデバイスを決定するように構成されており、
前記ロードバランサデバイスは、
前記データソースからのデータを処理するための、前記アプリケーションサーバグループの前記アプリケーションサーバを決定し、及び、
前記データソースからのデータを前記アプリケーションサーバにデータを送信する
ように構成されている、
請求項1に記載のシステム。
【請求項3】
前記ルーティング識別子は、
複数のソース識別子に対応する複数のルーティング識別子を含むデータベース
から取得され、
各ルーティング識別子は、前記複数のアプリケーションサーバグループのうち
、前記複数のソース識別子のうちの一つのソース識別子により識別されるデータソースに関連付けられ、且つ、前記データソースからデータを受信または処理するために使用される、アプリケーションサーバグループを示す、
請求項1に記載のシステム。
【請求項4】
前記データベースサーバが、
前記システムデータベースの前記複数のパーティションに対応する複数のキー識別子を含むデータベースにアクセスするステップと、
前記データソースの前記キー識別子に対応する前記システムデータベースの特定のパーティションを決定するステップと、及び、
前記特定のパーティションに格納するために前記システムデータベースにデータを送信するステップと
により、
前記システムデータベースの前記複数のパーティションのうち、前記データソースに
対応し、前記データソースからのデータを格納するために用いられ得る、前記特定のパーティションを決定するように構成されている、
請求項1に記載のシステム。
【請求項5】
前記アプリケーションサーバグループの前記アプリケーションサーバは、更に、
前記アプリケーションサーバグループに
対応する前記データベースサーバのエラーを検出し、
前記データソースからデータを受信するための、前記複数のデータベースサーバのうちの別のデータベースサーバを特定し、及び、
前記データソースから、前記複数のデータベースサーバのうちの前記
特定された別のデータベースサーバに、データを送信する
ように構成されている、
請求項1に記載のシステム。
【請求項6】
前記データソースが、資源の消費量を測定するためのメータデバイスを含む、
請求項1に記載のシステム。
【請求項7】
前記資源が、電機、ガス、若しくは水を含む、
請求項6に記載のシステム。
【請求項8】
サーバによって、データソースから、前記データソースに関連付けられたソース識別子を含むデータを取得するステップと、
前記サーバによって、前記データソースの前記ソース識別子に
対応するルーティング識別子に基づいて、前記データソースに関連付けられた、複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップ
であって、前記ルーティング識別子は、前記複数のアプリケーションサーバグループのうち、前記データソースに関連付けられ、且つ、前記データソースから前記データを受信または処理するために使用される、前記アプリケーションサーバグループを示すものである、決定するステップと、
前記サーバによって、前記データソースからのデータを、前記アプリケーションサーバグループのアプリケーションサーバに送信するステップと、
前記アプリケーションサーバによって、前記アプリケーションサーバグループに
対応する、複数のデータベースサーバのうちのデータベースサーバを決定するステップ
であって、前記複数のデータベースサーバの数は、前記複数のアプリケーションサーバグループの数と等しく、前記複数のアプリケーションサーバグループの各々は、前記複数のデータベースサーバのうちの一つのデータベースサーバに対応し、且つ、通信可能に接続されている、決定するステップと、
前記アプリケーションサーバによって、前記データソースからのデータを前記データベースサーバに送信するステップと、
前記データベースサーバによって、前記データソースの前記ソース識別子に基づいて、前記データソースに関連付けられたキー識別子を決定するステップと、及び、
前記データベースサーバによって、前記データソースの前記キー識別子に基づいて、前記データソースに関連付けられたシステムデータベースの複数のパーティションのうちの特定のパーティションを決定するステップであって、前記特定のパーティションは前記データソースからのデータを格納するために使用可能である、決定するステップと
を含む、方法。
【請求項9】
前記データソースからのデータを前記アプリケーションサーバグループの前記アプリケーションサーバに送信するステップは、
前記サーバによって、前記アプリケーションサーバグループに関連付けられている複数のロードバランサデバイスのうちのロードバランサデバイスを決定するステップと、
前記サーバによって、前記データソースからのデータを前記ロードバランサデバイスに送信するステップと、
前記ロードバランサデバイスによって、前記データソースからのデータを処理するための前記アプリケーションサーバグループの前記アプリケーションサーバを決定するステップと、及び、
前記ロードバランサデバイスが、前記データソースからのデータを前記アプリケーションサーバに送信するステップと
を含む、
請求項8に記載の方法。
【請求項10】
前記ルーティング識別子は、
複数のソース識別子に対応する複数のルーティング識別子を含むデータベース
から取得され、
各ルーティング識別子は、前記複数のアプリケーションサーバグループの
うち、前記複数のソース識別子のうちの一つのソース識別子により識別されるデータソースに関連付けられ、且つ、前記データソースからデータを受信または処理するために使用される、アプリケーションサーバグループを示す、
請求項8に記載の方法。
【請求項11】
前記データソースに関連付けられた前記システムデータベースの前記複数のパーティションのうちの前記特定のパーティションを決定するステップは、
前記データベースサーバによって、前記システムデータベースの前記複数のパーティションに対応する複数のキー識別子を含むデータベースにアクセスするステップと、
前記データベースサーバによって、前記データソースの前記キー識別子に対応する前記システムデータベースの前記特定のパーティションを決定するステップと、及び、
前記データベースサーバによって、前記データソースからのデータを前記特定のパーティションに格納するための前記システムデータベースに送信するステップと
を含む、
請求項8に記載の方法。
【請求項12】
更に、
前記アプリケーションサーバグループの前記アプリケーションサーバによって、前記アプリケーションサーバグループに
対応する前記データベースサーバのエラーを検出するステップと、
前記アプリケーションサーバによって、前記データソースからデータを受信するための、前記複数のデータベースサーバのうちの別のデータベースサーバを特定するステップと、及び、
前記アプリケーションサーバによって、前記データソースからのデータを前記複数のデータベースサーバの前記
特定された別のデータベースサーバに送信するステップと
を含む、請求項8に記載の方法。
【請求項13】
前記データソースが、資源の消費量を測定するためのメータデバイスを含む、請求項8に記載の方法。
【請求項14】
前記資源が、電気、ガス、又は水を含む、請求項13に記載の方法。
【請求項15】
サーバによって、データソースから、前記データソースに関連付けられたソース識別子を含むデータを取得するステップと、
前記サーバによって、前記データソースに関連付けられた前記ソース識別子に
対応するルーティング識別子に基づいて、前記データソースに関連付けられた、複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップ
であって、前記ルーティング識別子は、前記複数のアプリケーションサーバグループのうち、前記データソースに関連付けられ、且つ、前記データソースから前記データを受信または処理するために使用される、前記アプリケーションサーバグループを示すものである、決定するステップと、
前記サーバによって、前記データソースからのデータを前記アプリケーションサーバグループのアプリケーションサーバに送信するステップと、
前記アプリケーションサーバによって、前記アプリケーションサーバグループに
対応する、複数のデータベースサーバのうちの第1のデータベースサーバを決定するステップ
であって、前記複数のデータベースサーバの数は、前記複数のアプリケーションサーバグループの数と等しく、前記複数のアプリケーションサーバグループの各々は、前記複数のデータベースサーバのうちの一つのデータベースサーバに対応し、且つ、通信可能に接続されている、決定するステップと、
前記アプリケーションサーバによって、前記アプリケーションサーバグループに
対応する前記第1のデータベースサーバのエラーを検出するステップと、
前記アプリケーションサーバによって、前記データソースからデータを受信するための、前記複数のデータベースサーバのうちの第2のデータベースサーバを特定するステップと、
前記アプリケーションサーバによって、前記データソースからのデータを前記複数のデータベースサーバの第2のデータベースサーバに送信するステップと、及び、
前記第2のデータベースサーバによって、前記ソース識別子に基づいて前記データソースに関連付けられたキー識別子と、前記キー識別子に基づいて前記データソースに関連付けられたシステムデータベースの複数のパーティションのうちの特定のパーティションとを決定するステップと
を含み、
前記特定のパーティションは、前記データソースからのデータを格納するために使用可能である、
方法。
【請求項16】
前記データソースからのデータを前記アプリケーションサーバグループの前記アプリケーションサーバにデータを送信するステップは、
前記サーバによって、前記アプリケーションサーバグループに関連付けられた、複数のロードバランサデバイスのうちのロードバランサデバイスを決定するステップと、
前記サーバによって、前記データソースからのデータを前記ロードバランサデバイスに送信するステップと、
前記ロードバランサデバイスによって、前記データソースからのデータを処理するための、前記アプリケーションサーバグループの前記アプリケーションサーバを決定するステップと、及び、
前記ロードバランサデバイスによって、前記データソースからのデータを前記アプリケーションサーバに送信するステップと
を含む、請求項15に記載の方法。
【請求項17】
前記データソースからのデータを処理するための、前記アプリケーションサーバグループの前記アプリケーションサーバを決定するステップは、
前記ロードバランサデバイスによって、前記データソースからのデータを処理するための前記アプリケーションサーバの可用性に基づいて、前記データソースからのデータを処理するための前記アプリケーションサーバを決定するステップを含む、
請求項16に記載の方法。
【請求項18】
前記データソースに関連付けられた前記システムデータベースの前記複数のパーティションのうちの前記特定のパーティションを決定するステップは、
前記第2のデータベースサーバによって、前記システムデータベースの前記複数のパーティションに対応する複数のキー識別子を含むデータベースにアクセスするステップと、
前記第2のデータベースサーバによって、前記データソースの前記キー識別子に対応する前記システムデータベースの前記特定のパーティションを決定するステップと、及び、
前記第2のデータベースサーバによって、前記データソースからのデータを、前記特定のパーティションに格納するための、前記システムデータベースに送信するステップと
を含む、
請求項15に記載の方法。
【請求項19】
前記ルーティング識別子は、
複数のソース識別子に対応する複数のルーティング識別子を含むデータベース
から取得され、
各ルーティング識別子は、前記複数のアプリケーションサーバグループのうち、前記複数のソース識別子のうちの一つのソース識別子により識別されるデータソースに関連付けられ、且つ、前記データソースからデータを受信または処理するために使用される、アプリケーションサーバグループを示す、
請求項15に記載の方法。
【請求項20】
前記データソースが、資源の消費量を測定するためのメータデバイスを含む、
請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概略、データシャーディングに関する。より具体的には、本開示は、限定するものではないが、クラスタ化されたデータベース環境におけるデータのパーティショニングに関するものであり、これにより、クラスタ化されたデータベース環境における環境のスケーラビリティ及びクラスタ化されたデータベース環境におけるデバイスの性能を向上させることができる。
【背景技術】
【0002】
クラスタ化されたデータベース環境では、様々なサーバ又は他のデバイスが、一つ又は複数のデータセットにアクセスすることがある。幾つかの既存のクラスタ化データベース環境では、サーバ又はデバイスがデータセットへのアクセスを共有することがあり、これは、環境内の一つ又は複数のサーバ又は他のデバイスが同時に同じデータセットにアクセスしようとしたときに発生し得る、クラスタ待ち若しくはサーバ競合イベントなどの、環境内の様々な技術的問題を引き起こす可能性がある。
【0003】
いくつかの既存のクラスタ化されたデータベース環境では、クラスタ待ちイベント又はサーバ競合イベントは、他のサーバが同じデータセットにアクセス又は処理しているときに、サーバがデータセットにアクセス又は処理するのを阻止することによって等、環境内の一つ又は複数のサーバ又はデバイスが様々な操作を実行する能力を阻止、遅延、又はその他の方法で影響を与える可能性がある。一つ又は複数のサーバ又はデバイスが操作を実行することを阻止又は遅延させることは、サーバ又はデバイスが操作を実行することを阻止又は遅延させられている間に、ネットワークリソース、又はサーバ若しくはデバイスのコンピューティングリソースを浪費する可能性がある。更に、既存のクラスタ化されたデータベース環境におけるこのような技術的問題は、様々なサーバ若しくはデバイスが通信的に接続され、ランダムな方法で(例えば、ロードバランサデバイスから)データを受信し、同じデータに同時にアクセスしようとする可能性がある、高可用性クラスタ化データベース環境における相互接続トラフィック上で増幅される可能性がある。更に、既存のクラスタ化されたデータベース環境におけるこのような技術的問題は、環境のスケールアウトを妨げる(例えば、更なるデータベースサーバの追加を妨げる)可能性があり、又は、データベース環境がスケールアウトされる場合には、更に増幅される可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
このように、既存のクラスタ化されたデータベースシステムおよび方法は、上述にて議論されたものなどの欠点を呈しており、大規模で複雑なデータセットを管理または分析することができない場合がある。したがって、これらの及び他の理由から、クラスタ化されたデータベース環境でデータを管理する改良された技術、及び、改良されたクラスタ化されたデータベースシステムが、望まれている。
【課題を解決するための手段】
【0005】
本発明についてのカバーされる形態は、この要約ではなく、特許請求の範囲によって定義される。この要約は、本発明の様々な形態の高レベルの概要であり、以下の詳細な説明にて更に記載されている概念の幾つかを紹介する。この要約は、発明の主題の重要な特徴若しくは本質的な特徴を特定することを意図するものではなく、発明の主題の範囲を決定するために単独で用いることを意図するものでもない。主題は、明細書全体、任意の若しくは全ての図面、及び各請求項の適切な部分を参照して理解されるべきである。
【0006】
本開示の様々な実施例は、クラスタ化されたデータベース環境でデータをパーティショニングするためのシステム及び方法を提供し、これにより、環境のスケーラビリティ及び環境内のデバイスのパフォーマンスを改善することができる。
【0007】
一つの実施例では、システムは、サーバと、アプリケーションサーバを含む、サーバに通信上結合する複数のアプリケーションサーバグループと、複数のアプリケーションサーバグループに通信上結合する複数のデータベースサーバと、及び、複数のパーティションに分割されたシステムデータベースとを含む。サーバは、プロセッサと、プロセッサに通信上結合する非一時性コンピュータ読取可能媒体とを含む。サーバは、データソースからのデータを受信するように構成されており、データは、データソースに関連付けられたソース識別子及びキー識別子を含む。プロセッサはまた、データソースに関連付けられたソース識別子に基づいて、データソースに関連付けられた、複数のアプリケーションサーバグループのうちの、アプリケーションサーバグループを決定するように構成されている。プロセッサは更に、データソースからのデータをアプリケーションサーバグループのアプリケーションサーバに送信するように構成され、ここで、アプリケーションサーバは、アプリケーションサーバグループに関連付けられている複数のデータベースサーバのうちのデータベースサーバを決定し、データソースからのデータをデータベースサーバに送信するように構成され、ここで、データベースサーバは、データソースのキー識別子に基づいて、データソースに関連付けられているシステムデータベースの複数のパーティションのうちの特定のパーティションを決定するように構成され、特定のパーティションは、データソースからのデータを格納するために使用可能である。
【0008】
別の実施例では、方法は、サーバによって、データソースからデータを取得するステップを含み、そのデータは、データソースに関連付けされたソース識別子とキー識別子とを含む。方法は更に、サーバによって、データソースのソース識別子に基づいて、データソースに関連付けられた、複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップを含む。方法はまた、サーバによって、データソースからのデータを、アプリケーションサーバグループのアプリケーションサーバに送信するステップを含む。方法はまた、アプリケーションサーバによって、アプリケーションサーバグループに関連付けられた複数のデータベースサーバのうちのデータベースサーバを決定するステップを含む。方法はまた、アプリケーションサーバによって、データソースからのデータをデータベースサーバに送信するステップを含む。方法はまた、データベースサーバによって、データソースのキー識別子に基づいて、データソースに関連付けられたシステムデータベースの複数のパーティションのうちの特定のパーティションを決定するステップを含み、ここで、特定のパーティションは、データソースからのデータを格納するために使用可能である。
【0009】
別の実施例では、方法は、サーバによって、データソースからデータを取得するステップを含み、そのデータは、データソースに関連付けられたソース識別子とキー識別子とを含む。方法はまた、サーバによって、データソースに関連付けられたソース識別子に基づいて、データソースに関連付けられた、複数のアプリケーションサーバグループのうちのアプリケーションサーバグループを決定するステップを含む。方法は更に、サーバによって、データソースからのデータを、アプリケーションサーバグループのアプリケーションサーバに送信するステップを含む。方法はまた、アプリケーションサーバによって、アプリケーションサーバグループに関連付けられた、複数のデータベースサーバのうちの第1のデータベースサーバを決定するステップを含む。方法はまた、アプリケーションサーバによって、アプリケーションサーバグループに関連付けられた第1のデータベースサーバのエラーを検出するステップを含む。方法はまた、アプリケーションサーバによって、データソースからデータを受信するための、複数のデータベースサーバのうちの第2のデータベースサーバを特定するステップを含む。方法はまた、アプリケーションサーバによって、データソースからのデータを、複数のデータベースサーバの第2のデータベースサーバに送信するステップを含む。方法はまた、第2のデータベースサーバによって、データソースのキー識別子に基づいて、データソースに関連付けられた、システムデータベースの複数のパーティションのうちの特定のパーティションを決定するステップを含み、ここで、特定のパーティションは、データソースからのデータを格納するために使用可能である。
【0010】
一つ若しくは複数の形態及び実施例の詳細は、添付の図面及び以下の説明に記載されている。他の特徴および形態は、明細書、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0011】
【
図1】
図1は、本開示の一実施例によるデータ分割システムの例である。
【
図2】
図2は、本開示の別の実施例によるデータ分割システムの例である。
【
図3】
図3は、本開示の一実施例による、クラスタ化されたデータベース環境でデータを分割するためのプロセスの例を示すフローチャートである。
【
図4】
図4は、本開示の一実施例によるデータ分割システムの例である。
【発明を実施するための形態】
【0012】
本開示の特定の形態及び特徴は、環境のスケーラビリティ及び環境内のデバイスのパフォーマンスを向上させることができる、クラスタ化されたデータベース環境におけるデータのパーティショニングに関する。上述したように、既存のクラスタ化されたデータベース環境及びシステムは、一つ若しくは複数のデータセットへのアクセスを共有する様々なデバイス(例えば、サーバ、データベースなど)を含むことがあり、このことは、一つ若しくは複数のデバイスが同時に同じデータセットにアクセスしようとするときに、クラスタ待ち又は競合イベントを発生させる可能性がある。本明細書に記載の特定の実施例は、データソースからのデータが、特定のデバイス(例えば、サーバやデータベース)若しくはデバイスのグループに、一貫して送信され、処理されるように、データソースの識別子に基づいてクラスタ化されたデータベース環境内のデータをパーティショニングすることにより、これらの問題に対処するが、このことは、環境のスケーラビリティ及び環境内のデバイスのパフォーマンスを向上させることができる。
【0013】
一つの実施例では、クラスタ化されたデータベース環境若しくはシステムは、サーバと、様々なアプリケーションサーバと、様々なデータベースサーバと、及び、システムデータベースとを含む。 この実施例では、様々なアプリケーションサーバは、グループ(例えば、ファーム)に分割することができ、アプリケーションサーバの各グループは、特定のデータベースサーバに関連付けられる(例えば、通信的に接続される)ことができる。幾つかの実施例では、環境内のアプリケーションサーバグループの数は、環境内のデータベースサーバの数に基づくことができ、各グループ内のアプリケーションサーバの数は、アプリケーションサーバグループの数に基づくことができる。例えば、環境が、三つのデータベースサーバと24個のアプリケーションサーバとを含むならば、アプリケーションサーバは、夫々8個のアプリケーションサーバを含む三つのアプリケーションサーバグループに分割することができる。別の実施例では、各アプリケーションサーバグループは、任意の数のアプリケーションサーバを含むことができる。例えば、各アプリケーションサーバグループは、異なる数のアプリケーションサーバを含むことができる。
【0014】
この実施例により引き続き、サーバは、一つ若しくは複数のデータソースと通信的に結合され、データソースからデータを受信することができる。データソースの例としては、電気、ガス、水などの資源の消費量を測定するためのメータデバイスを含み得る。データソースは、データを測定又は受信(例えば、取得)し、任意にデータを保存し、データをサーバに通信してもよい。データは、データソースによって測定又は受信(例えば、取得)された情報を、データソースに関連付けられたソース識別子若しくはキー識別子と共に含むことができる。データソースに関連付けられたソース識別子は、データソースを識別し、データソースからのデータを特定のグループのアプリケーションサーバ、アプリケーションサーバ、又はデータベースサーバにルーティングするのに用い得る識別子であり得る。例として、メータデータソース若しくはデバイスに関連付けられたソース識別子は、メータ識別子とすることができる。データソースに関連付けられたキー識別子は、データソースからのデータをシステムデータベースの特定の部分若しくはパーティションにルーティングするのに用い得る識別子であり得る。例として、データソースがメータデバイスであるならば、メータデバイスに関連付けられたキー識別子は、システムデータベースの特定のパーティションに対応するメータデバイスのメータ識別子の一部であり得る。
【0015】
サーバは、プロセッサと、及び、データベース(例えば、ルックアップテーブル)を含むメモリとを含むことができ、サーバは、様々なデータソースから受信するデータのための特定のルートを決定することができる。例えば、プロセッサは、一つ若しくは複数の式、アルゴリズム、方法などを用いて、データソースのソース識別子に基づいて、データソースに関連付けられたルーティング識別子を決定することができる。別の実施例では、プロセッサは、データベースにアクセスして、データソースに関連付けられたソース識別子に基づいて、データソースに関連付けられたルーティング識別子を決定することができる。ルーティング識別子は、データソースから受信するデータのための特定のルートを決定するのに用いることができる。例えば、データベースは、様々なデータソースに関連付けられたソース識別子を示すデータと、各ソース識別子に関連付けられたルーティング識別子とを含むことができる。ルーティング識別子は、データソースに関連付けられたアプリケーションサーバ、アプリケーションサーバ、又は、データベースサーバの、特定のグループを示すことができる。例えば、ルーティング識別子は、データソースからデータを受信若しくは処理することができる環境の、特定のグループのアプリケーションサーバ、又は特定のデータベースサーバを決定するのに用いることができる。この実施例では、サーバは、データソースからデータを、データソースに関連付けられたソース識別子と共に受信し、サーバのプロセッサは、データソースのソース識別子に関連付けられたルーティング識別子を決定することができる。この実施例では、サーバは、データソースに関連付けられたルーティング識別子を決定することに対応して、データソースからのデータを、データソースに関連付けられた特定のアプリケーションサーバグループに、送信することができる。
【0016】
この実施例では、データソースに関連付けられたアプリケーションサーバグループのアプリケーションサーバは、サーバからデータを受信し、そのデータを処理又は分析することができる。次に、アプリケーションサーバは、処理されたデータを、アプリケーションサーバグループに関連付けられた特定のデータベースサーバに送信することができる。データベースサーバは、プロセッサと、データベースを含むメモリとを含むことができる。データベースサーバのプロセッサは、アプリケーションサーバから受信したデータをシステムデータベースの特定の部分またはパーティションにルーティングするように、データベースにアクセスすることができる。例えば、システムデータベースは、様々なデータソースに関連付けられたキー識別子に基づいてパーティショニング(例えば、分割)することができる。例として、システムデータベースの各部分またはパーティションは、特定のデータソースのキー識別子に関連付けられることができる。この実施例では、データベースサーバのデータベースは、様々なデータソースに関連付けられたキー識別子を示すデータと、各キー識別子に関連付けられたシステムデータベースの部分とを含むことができる。データベースサーバは、データベースを用いて、データソースから得られたデータを、データソースのキー識別子に対応するシステムデータベースの特定の部分にルーティングすることができる。
【0017】
例示的な例として、ガスメータは、データを測定若しくは受信し、そのデータを、ガスメータのソース識別子(例えば、メータ識別子)およびキー識別子(例えば、メータ識別子の最後の2桁)と共に、サーバに送信する。サーバは、メータのソース識別子に基づいてメータに関連付けられたルーティング識別子を決定し、ルーティング識別子を用いて、ガスメータからのデータを処理できるアプリケーションサーバの特定のグループと、アプリケーションサーバのグループに関連付けられた特定のデータベースサーバとを決定できる。アプリケーションサーバのグループのアプリケーションサーバは、ガスメータデバイスからのデータを処理し、処理されたデータをデータベースサーバに送信できる。データベースサーバは、ガスメータデバイスのキー識別子を用いて、データを格納すべき、システムデータベースの一部若しくはパーティションを決定することができる。例えば、システムデータベースを様々な部分に分割し、システムデータベースの各部分を特定のガスメータデバイスのキー識別子に対応させる。この実施例では、データベースサーバは、ガスメータデバイスからのデータをシステムデータベースに送信し、ガスメータデバイスのキー識別子に対応するシステムデータベースの部分に格納する。
【0018】
このようにして、データソースから得られたデータは、アプリケーションサーバ及びデータベースサーバの特定のグループにルーティングすることができ、これにより、クラスタ化されたデータベース環境において、データソースに関連付けられていない、若しくはデータソースに割り当てられていない他のアプリケーションサーバ若しくはデータベースサーバが、データソースからのデータにアクセスしたり、データソースからのデータを処理したりすることを防ぐことができる。さらに、データソースからのデータは、システムデータベースの特定の部分に格納することができる。幾つかの実施形態では、本明細書に記載のように、一つ若しくは複数のデータソースからのデータをルーティングすることにより、クラスタ化されたデータベース環境内の様々なデバイスが、同じデータセットへのアクセスを共有することを防ぐことができ、これにより、クラスタ化されたデータベース環境内のクラスタ待ち若しくは競合の問題を緩和若しくは排除することができ、環境のスケーラビリティ及び環境内のデバイスのパフォーマンスを向上させることができる。
【0019】
これらの例示的な実施例は、本明細書で説明する一般的な主題を読者に紹介するべく示されるものであり、本開示の概念の範囲を限定することを意図するものではない。以下のセクションでは、同じ数字が同じ要素を示す図面を参照して様々な更なる特徴及び例を説明し、方向性の記載を用いて例示的な実施例を説明するが、例示的な実施例と同様に、本開示を制限するのに用いられるものではない。
【0020】
図1は、本開示の一実施例に係る、データ分割システム100の例である。システム100は、データを分割またはシャード化することができる任意のタイプのシステム(例えば、サーバ、データベース、若しくはデバイスの間又は内部でデータをパーティショニング若しくは分割するためのシステム)であることができる。幾つかの実施例では、システム100は、システム100によって受信されたデータに対して様々な操作を実行することができる様々なサーバ(例えば、ノード)を含むシステムのような、クラスタ化されたデータベースシステムであればよい。
【0021】
図1に示す例では、システム100は、一つ若しくは複数のサーバ102a-d、アプリケーションサーバグループ(例えば、ファーム)104a-c、データベースサーバ106a-c、及びシステムデータベース108を含む。この実施例では、アプリケーションサーバグループ104a-cは、各種アプリケーションサーバ110a-lを含む。各サーバ102a-d、データベースサーバ106a-c、若しくはアプリケーションサーバ110a-lは、任意のコンピューティングシステム(例えば、デバイス)若しくはストレージデバイスであればよく、一つ若しくは複数のコンポーネントを含み得る。例えば、各サーバ102a-d、データベースサーバ106a-c、若しくはアプリケーションサーバ110a-lは、プロセッサ、バス、データベース、メモリ、入出力インタフェースコンポーネント、ディスプレイデバイス、通信デバイスなどを含み得る。
【0022】
幾つかの実施例では、システム100内のアプリケーションサーバグループ104a-cの数は、システム100内のデータベースサーバ106a-cの数に基づき得るものであり、各アプリケーションサーバグループ104a-cは、特定のデータベースサーバ106a-cに関連付けられ得る(例えば、通信的に結合され得る)。例えば、
図1に描かれた例では、システム100は、三つのデータベースサーバ106a-cと、特定のデータベースサーバ106a-cに関連付けられた三つの対応するアプリケーションサーバグループ104a-cとを含む。この実施例では、アプリケーションサーバグループ104aは、データベースサーバ106aに通信上結合し、アプリケーションサーバグループ104bは、データベースサーバ106bに通信上結合し、アプリケーションサーバグループ104cは、データベースサーバ106cに通信上結合する。幾つかの実施例では、各アプリケーションサーバグループ104a-c内のアプリケーションサーバ110a-lの数は、システム100内のアプリケーションサーバグループ104a-cの数に基づき得る。例えば、
図1に描かれた例では、システム100は、12個のアプリケーションサーバ110a-lと、それぞれが4個のアプリケーションサーバを含む3つのアプリケーションサーバグループ104a-cとを含む。別の実施例では、各アプリケーションサーバグループ104a-cは、任意の数のアプリケーションサーバ110a-lを含み得る。例えば、各アプリケーションサーバグループ104a-cは、異なる数のアプリケーションサーバ110a-lを含み得る。
【0023】
幾つかの実施例では、一つ若しくは複数のデータソース10a-cは、システム100の一つ若しくは複数のデバイス若しくはコンポーネント(例えば、サーバ102a-d)に通信上結合し得る。別の実施例では、データソース10a-cは、一つ若しくは複数のリモートデバイス若しくはサーバに通信上結合し得る。例えば、データソース10a-cは、一つ若しくは複数の他のデータソース、メータデバイス、ネットワークデバイスなどに通信上結合し得る。幾つかの実施例では、データソース10a-cは、無線メッシュネットワークを介して、一つ若しくは複数のデータソース、メータデバイス、若しくはネットワークデバイスと通信(例えば、データを送信及び受信)し得る。更に、幾つかの実施例では、コレクタデバイスなどのネットワークデバイスは、データソース10a-cと一つ若しくは複数のサーバ(例えば、サーバ102a-d)との間の通信を促進し得る。
【0024】
幾つかの実施例では、各サーバ102a-dは、一つ若しくは複数のデータソース10a-cと通信上結合し、データソースからデータを受信できる。データソース10a-cの例は、電気、ガス、水などの資源の消費を測定するメータデバイスを含み得る。データソース10a-cは、データを測定若しくは受信(例えば、取得)し、データを保存し、サーバ102a-dにデータを通信し得る。データは、データソース10a-cによって測定若しくは受信(例えば、取得)された情報を、データソース10a-cに関連付けられたソース識別子若しくはキー識別子と共に、含み得る。ソース識別子は、データソース10a-cを識別してデータソース10a-cからのデータをアプリケーションサーバグループ104a-c、アプリケーションサーバ110a-l、若しくはデータベースサーバ106a-cの、特定のグループにルーティングするのに用いられ得る、任意のデータ若しくは情報であり得る。一例として、メータデータソース若しくはデバイスのソース識別子は、メータ識別子とすることができる。データソース10a-cのキー識別子は、データソース10a-cからのデータをシステムデータベース108の特定の部分若しくはパーティションにルーティングするのに用い得る、任意のデータ若しくは情報であり得る。一例として、メータデバイスのキー識別子は、メータデバイスのメータ識別子のうち、システムデータベース108の特定の部分若しくはパーティションに対応する部分であってもよい。
【0025】
各サーバ102a-dは、プロセッサと、データベース(例えば、ルックアップテーブル)を含むメモリとを、含むことができる。プロセッサは、メモリと(例えば、バスを介して)通信上結合し得る。サーバ102a-dのメモリは、電源オフ時に情報を保持する任意のタイプのメモリデバイスであり得る。幾つかの実施例では、サーバ102a-dは、データソースからデータを受信することができ、サーバ102a-dのプロセッサは、データソースから受信したデータのための特定のルートを決定することができる。一例として、サーバ102aのプロセッサは、データベースにアクセスして、データソース10a-cから受信したデータのための特定の経路を決定することができる。例えば、サーバ102aのデータベースは、様々なデータソース10a-cに関連付けられたソース識別子を示すデータと、(例えば、ルックアップテーブル112の)各ソース識別子に関連付けられたルーティング識別子を示すデータとを、含むことができる。いくつかの実施例では、サーバ102aは、様々なソース識別子及びルーティング識別子を示すデータを(例えば、他のデバイスから、若しくはユーザ入力を介して)取得若しくは受信することができる。ルーティング識別子は、データソース10a-cに関連付けられた(例えば、データソースからデータを受信若しくは処理するためにデータソースに割り当てられている)特定のアプリケーションサーバグループ104a-c、アプリケーションサーバ110a-l、若しくはデータベースサーバ106a-cを示すことができる。例えば、
図1に描かれた例では、各サーバ102a-dは、様々なソース識別子114a-e(例えば、様々なメータ識別子)と、各ソース識別子114a-eに関連付けられたルーティング識別子116a-e(例えば、値若しくは任意の他の識別子)とを示す、データを含むルックアップテーブル112を含み得る。この例では、各ルーティング識別子116a-eは、各ソース識別子114a-eに関連付けられたデータソース10a-cからデータを受信または処理するために、各ソース識別子114a-eに割り当てられた特定のアプリケーションサーバグループ104a-c若しくはデータベースサーバ106a-cを示す。例えば、ルーティング識別子116a及び116dは、ソース識別子114a及び114dがアプリケーションサーバグループ104a及び/若しくはデータベースサーバ106aに関連付けられている(例えば、割り当てられている)ことを示し、ルーティング識別子116b及び116eは、ソース識別子114b及び114eがアプリケーションサーバグループ104b及び/若しくはデータベースサーバ106bに関連付けられていることを示し、ルーティング識別子116cは、ソース識別子114cがアプリケーションサーバグループ104c及び/若しくはデータベースサーバ106cに関連付けられていることを示すことができる。この例に続けて、サーバ102aは、データソース10a-cから、データソース10a-cに関連付けられたソース識別子114a-eと共に、データを受信することができ、サーバ102aのプロセッサは、ルックアップテーブル112にアクセスして、ソース識別子に関連付けられたルーティング識別子116a-eを決定することができる。この実施例では、サーバ102aは、データソースに関連付けられたルーティング識別子116a-eを決定することに対応して、データソースから、データソースに関連付けられた特定のアプリケーションサーバグループ104a-cに、データを送信することができる。
【0026】
上述の実施例では、ルックアップテーブル112は、様々なソース識別子に関連付けられたルーティング識別子を示すデータを含み、サーバ102a-dのプロセッサは、データソース10a-cのソース識別子に関連付けられたルーティング識別子を決定するためにルックアップテーブル112にアクセスすることができるが、本開示は、そのような構成に限定されない。むしろ、他の実施例では、サーバ102a-dのプロセッサは、ルックアップテーブル112にアクセスすることなく、データソース10a-cのソース識別子に基づいて、データソース10a-cに関連付けられたルーティング識別子を決定することができる。例えば、サーバ102aは、データソース10a-cから、データソース10a-cに関連付けられたソース識別子114a-eと共に、データを受信することができ、サーバ102aのプロセッサは、一つ若しくは複数の式、アルゴリズム、方法などを用いて、ソース識別子114a-e及び/若しくはデータソース10a-cに関連付けられたルーティング識別子116a-eを、計算若しくは決定することができる。さらに、上述した実施例では、サーバ102a-dはルックアップテーブル112を含むが、本開示はそのような構成に限定されない。寧ろ、他の例では、ルックアップテーブル112は、サーバ102a-dの一部であってもよく、又は、サーバ102a-dとは別個の若しくは遠隔のものであってもよく、サーバ102a-dは、ルックアップテーブル112にアクセスするために、ルックアップテーブル112と通信上結合していてもよい。
【0027】
幾つかの実施例では、システム100は、ロードバランサデバイス118a-cを含むことができる。各ロードバランサデバイス118a-cは、特定のアプリケーションサーバグループ104a-cに関連付けられ、特定のアプリケーションサーバグループ104a-c及びサーバ102a-dに通信上結合し得る。ロードバランサデバイス118a-cは、アプリケーションサーバグループ104a-cに関連付けられたデータソース10a-cからのデータを処理若しくは分析するために、アプリケーションサーバグループ104a-c内の特定のアプリケーションサーバ110a-lを決定するように構成される任意のデバイスであればよい。
【0028】
例えば、サーバ102a-dのプロセッサは、データソース10a-cからデータを受信し、上述のルーティング識別子に基づいて、データソース10a-cに関連付けられたアプリケーションサーバグループ104a-cを決定することができる。この実施例では、サーバ102a-dのメモリは、各アプリケーションサーバグループ104a-cに関連付けられたロードバランサデバイス118a-cを示すデータを含むことができ、サーバ102a-dのプロセッサは、メモリにアクセスして、アプリケーションサーバグループ104a-cに関連付けられた特定のロードバランサデバイス118a-cを決定し、データソース10a-cから得られたデータを特定のロードバランサデバイス118a-dに送信することができる。一例として、サーバ102aは、データソース10aからデータを取得し、ルーティング識別子116aがデータソース10aのソース識別子114aに関連付けられていると決定する。この例では、サーバ102aは、ルーティング識別子116aがアプリケーションサーバグループ104aに関連付けられていると決定することができる。この実施例に続けて、サーバ102aは、特定のロードバランサデバイス118aがアプリケーションサーバグループ104aに関連付けられていると決定し、データをロードバランサデバイス118aに送信することができる。ロードバランサデバイス118aは、アプリケーションサーバグループ104aに関連付けられたデータソース10aからのデータを処理若しくは分析するために、アプリケーションサーバグループ104a内のアプリケーションサーバ110a-dを決定することができる。幾つかの実施例では、ロードバランサデバイス118a-cは、様々な方法若しくは技法を用いて(例えば、ランダムな方法で、データを処理するアプリケーションサーバ110a-lの可用性に基づいて、又は、他の適切な方法若しくは技法を用いて)、データソース10a-cからのデータを処理若しくは分析するために、アプリケーションサーバグループ104a-c内の特定のアプリケーションサーバ110a-lを決定することができる。例えば、ロードバランサデバイス118は、(例えば、アプリケーションサーバ110aが動作を実行していない場合、)アプリケーションサーバ110aがデータを処理するのに利用可能なコンピューティングリソース若しくはネットワークリソースを持っているとの決定に対応して、アプリケーションサーバ110aがデータソース10a-cからのデータを処理することができると決定することができる。別の例として、ロードバランサデバイス118は、(例えば、他のアプリケーションサーバ110b-dがアプリケーションサーバ110aと比較してより多くの操作を実行している場合、)アプリケーションサーバグループ104aの他のアプリケーションサーバ110b-dと比較して、アプリケーションサーバ110aが、利用可能なコンピューティングリソース若しくはネットワークリソースをより多く有すると決定することに対応して、アプリケーションサーバ110aがデータソース10a-cからのデータを処理することができる、と決定し得る。
【0029】
幾つかの実施例では、サーバ102a-dは、ロードバランサデバイス118a-cと直接通信しなくてもよい。例えば、サーバ102a-dのプロセッサは、データソース10a-cからデータを受信し、上述のルーティング識別子に基づいて、データソース10a-cに関連付けられたアプリケーションサーバグループ104a-cを決定することができる。この例では、サーバ102a-dのプロセッサは、データソース10a-cからのデータを、データソース10a-cに関連付けられたアプリケーションサーバグループ104a-cに送信することができる。アプリケーションサーバグループ104a-cに関連付けられたロードバランサデバイス118a-cは、サーバ102a-dからのデータを受信(例えば、傍受)し、データソース10a-cからのデータを処理若しくは分析するために、ロードバランサデバイス118a-cに関連付けられたアプリケーションサーバグループ104a-c内の特定のアプリケーションサーバ110a-lを決定し得る。一例として、サーバ102aは、データソース10aからデータを取得し、ルーティング識別子116aがデータソース10aのソース識別子114aに関連付けられていると決定する。この実施では、サーバ102aは、ルーティング識別子116aがアプリケーションサーバグループ104aに関連付けられていると決定し、データソース10aからのデータをアプリケーションサーバグループ104aに送信することができる。この例に続けて、アプリケーションサーバグループ104aに関連付けられたロードバランサデバイス118aは、サーバ102aからのデータを受信(例えば、傍受)し、アプリケーションサーバグループ104aに関連付けられたデータソース10aからのデータを処理若しくは分析するために、アプリケーションサーバグループ104a内のアプリケーションサーバ110a-dを決定することができる。
【0030】
幾つかの実施例では、システム100は、ロードバランサデバイス118a-cを含まないことがある。この実施例では、サーバ102a-dは、アプリケーションサーバグループ104a-c内の特定のアプリケーションサーバ110a-lを決定して、アプリケーションサーバグループ104a-cに関連付けられたデータソース10a-cからのデータを、上述と実質的に同じ方法で処理若しくは分析するように構成されてもよい。
【0031】
幾つかの実施例では、アプリケーションサーバ110a-lは、サーバ102a-d若しくはロードバランサデバイス118a-cからデータを受信してデータを処理若しくは分析するために、サーバ102a-d若しくはロードバランサデバイス118a-cに通信上結合することができる。各アプリケーションサーバ110a-lはまた、アプリケーションサーバ110a-lのアプリケーションサーバグループ104a-cに関連付けられた特定のデータベースサーバ106a-cに通信上結合することができる。例えば、アプリケーションサーバグループ104aのアプリケーションサーバ110a-dはデータベースサーバ106aに関連付けられ、アプリケーションサーバグループ104bのアプリケーションサーバ110e-hはデータベースサーバ106bに関連付けられ、アプリケーションサーバグループ104cのアプリケーションサーバ110i-lはデータベースサーバ106cに関連付けられ得る。アプリケーションサーバ110a-lは、サーバ102a-d若しくはロードバランサデバイス118a-cから取得若しくは受信するデータを処理し、処理したデータをアプリケーションサーバ110a-lのアプリケーションサーバグループに関連付けられた特定のデータベースサーバ106a-cに送信することができる。
【0032】
例えば、各アプリケーションサーバ110a-lは、プロセッサと、データベースを含むメモリとを含むことができる。アプリケーションサーバ110a-lのデータベースは、アプリケーションサーバ110a-lのアプリケーションサーバグループ104a-cに関連付けられた特定のデータベースサーバ106a-cを示すデータを含むことができる。幾つかの実施例では、アプリケーションサーバ110a-lは、(例えば、ロードバランサデバイス118a-c若しくはサーバ102a-dを介して)取得若しくは受信したデータを処理し、アプリケーションサーバ110a-lのアプリケーションサーバグループ104a-cに関連付けられた特定のデータベースサーバ106a-cを決定し、処理されたデータを特定のアプリケーションサーバグループ104a-cに送信することができる。例えば、アプリケーションサーバ1100aは、ロードバランサデバイス118aやサーバ102aから受信したデータを処理することができる。アプリケーションサーバ110のプロセッサは、アプリケーションサーバ110aのデータベースにアクセスして、データベースサーバ106aがアプリケーションサーバ110aのアプリケーションサーバグループ104aに関連付けられていることを決定することができる。そして、アプリケーションサーバ110aは、処理されたデータをデータベースサーバ106aに送信することができる。
【0033】
各データベースサーバ106a-cは、データベースサーバ106a-cに関連付けられた特定のアプリケーションサーバグループ104a-cのアプリケーションサーバ110a-lに通信上結合し得る。データベースサーバ106a-cは、プロセッサと、データベース(例えば、ルックアップテーブル)を含むメモリとを含むことができる。プロセッサは、メモリに(例えば、バスを介して)通信上結合し得る。データベースサーバ106a-cのメモリは、電源オフ時に情報を保持する任意のタイプのメモリデバイスであればよい。幾つかの実施例では、データベースサーバ106a-cは、データベースサーバ106a-cに関連付けられたアプリケーションサーバ110a-lからデータを受信することができ、データベースサーバ106a-cのプロセッサは、アプリケーションサーバ110a-lから受信したデータをシステムデータベース108の特定の部分またはパーティションにルーティングすることができる。
【0034】
例えば、システムデータベース108は、様々なデータソース10a-cに関連付けられたキー識別子に基づいてパーティション化(例えば、分割)することができる。一例として、システムデータベース108は、パーティション(例えば、部分)120、122、124に分割することができ、各パーティション120、122、124は、特定のデータソース10a-cのキー識別子に関連付けられ得る。例えば、
図1に描かれた例では、パーティション120は、データソース10a-cからのデータがパーティション120に格納されるようにソース識別子114aに対応するデータソース10a-cのキー識別子に関連付けられ得、パーティション122は、データソース10a-cからのデータがパーティション122に格納されるようにソース識別子114bに対応するデータソース10a-cのキー識別子に関連付けられ得、パーティション124は、データソース10a-cからのデータがパーティション124に格納されるようにソース識別子114cに対応するデータソース10a-cのキー識別子に関連付けられ得る。このように、幾つかの実施例では、システムデータベース108は、様々なデータソース10a-cに関連付けられたキー識別子に基づいて水平方向にパーティション化され得る。
【0035】
この実施例では、データベースサーバ106a-cのデータベースは、様々なデータソースに関連付けられたキー識別子を示すデータと、各キー識別子に関連付けられた(例えば、割り当てられた)システムデータベース108の一部とを含むことができる。幾つかの実施例では、データベースサーバ106a-cは、様々なデータソース10a-cに関連付けられたキー識別子を示すデータと、各キー識別子に関連付けられたシステムデータベース108の一部とを、別のデバイスから若しくはユーザ入力を介して(例えば、別のデバイスから若しくはユーザ入力を介して)取得する(例えば、受信する)ことができる。データベースサーバ106a-cは、(例えば、対応するアプリケーションサーバ110a-lを介して)データソース10a-cから得られたデータを、システムデータベース108の特定の部分に格納することができるように、データソース10a-cのキー識別子に対応するシステムデータベース108の特定の部分にルーティングするように、データベースを用いることができる。一例として、データベースサーバ106aは、データソース10a-cのキー識別子と共に、ソース識別子114aに関連付けられたデータソース10a-cからのデータを含むデータを、アプリケーションサーバ110aから取得する。データベースサーバ106aのプロセッサは、データベースサーバ106aのデータベースにアクセスして、キー識別子に関連付けられたシステムデータベース108の特定のパーティション120を決定し、システムデータベース108のパーティション120に格納されるようにデータをシステムデータベース108に送信する。
【0036】
別の実施例では、データベースサーバ106a-cのプロセッサは、データベースサーバ106a-cのデータベースにアクセスすることなく、データソース10a-cに関連付けられたキー識別子を決定し、決定されたキー識別子を用いて、データソース10a-cからのデータをシステムデータベース108の特定の部分またはパーティションにルーティングすることができる。例えば、データベースサーバ106aは、ソース識別子114aに関連付けられたデータソース10a-cからのデータを含むデータをアプリケーションサーバ110aから取得する。この実施例では、データベースサーバ106aのプロセッサは、データベースサーバ106a-cのデータベースにアクセスすることなく、ソース識別子114aに関連付けられたキー識別子を決定することができる。一例として、ソース識別子114aは、メータデバイスデータソース10a-cのメータ識別子であることができ、プロセッサは、ソース識別子114aに関連付けられたキー識別子がメータ識別子の一部(例えば、メータ識別子の最後の2桁)であることを決定するための、様々なアルゴリズム、方法、または技術を用いることができる。この例では、データベースサーバ106aのプロセッサは、決定されたキー識別子を用いて、データソースからのデータを、決定されたキー識別子に関連付けられたシステムデータベース108の特定のパーティション120にルーティングし、データをシステムデータベース108に送信してパーティション120に格納することができる。
【0037】
幾つかの実施例では、システムデータベース108は、任意の適切な方法で、追加的または代替的にパーティション化され得る。例えば、システムデータベース108は、日付、時間、若しくは任意の適切な間隔に基づいて、追加的または代替的にパーティション化され得る。例として、システムデータベース108に格納されるデータは、データソース10a-cから得られるデータが上述のようにシステムデータベース108の特定のパーティション内に格納され、特定のパーティションはデータが受信された時間に基づいてさらにパーティション化されるように、データがデータソース10a-cから得られる若しくは取得される時間に基づいて、追加的にパーティション化され得る(例えば、特定の時間にデータソース10a-cから受信されたデータは、そのパーティションのサブパーティション内に格納され得る)。したがって、幾つかの実施例では、システムデータベース108は、特定のデータソース10a-cからのデータがパーティションの特定のサブパーティション内に更に格納されるように、任意の適切な基準に基づいて(例えば、日付若しくは時間に基づいて)垂直方向にパーティション化され得る。従って、システムデータベース108は、(様々なデータソース10a-cに関連付けられたキー識別子に基づいて)水平方向にパーティション化され得、及び/又は(例えば、任意の適切な基準に基づいて)垂直方向にパーティション化され得る。
【0038】
このようにして、各種データソース10a-cから得られたデータを、データを受信若しくは処理できるアプリケーションサーバ104a-c及びデータベースサーバ106a-cの特定のグループにルーティングすることができ、これにより、データソース10a-cに関連付けられていない、又は割り当てられていない、アプリケーションサーバ104a-c、アプリケーションサーバ110a-l、若しくはデータベースサーバ106a-cの、他のグループが、データソース10a-cからのデータにアクセスしたり処理したりすることを、防ぐことができる。更に、様々なデータソース10a-cからのデータは、様々なサーバ102a-d、ロードバランサデバイス118a-c、アプリケーションサーバ110a-l、若しくはデータベースサーバ106a-cによって処理され、単一のシステムデータベース108の特定の部分に格納され得る。このように、幾つかの実施形態では、単一のシステムデータベース108は、様々なサーバ若しくはデバイスによって処理され得る様々な異なるソースからのデータを格納するのに用いることができ、システム100における複数のデータベースの使用を省略することができる。幾つかの実施例では、本明細書に記載の一つ若しくは複数のデータソース10a-cからのデータのルーティングは、システム100内の様々なデバイス(例えば、アプリケーションサーバ110a-l若しくはデータベースサーバ106a-c)が、(例えば、同じデータソースからの)同じデータへのアクセスを共有すること、又は同時に同じデータへのアクセスを試みることを、防ぐことができ、このことは、システム100内のクラスタ待ち若しくは競合の問題を緩和又は排除することができる。幾つかの実施例では、システム100におけるクラスタ待ち若しくは競合の問題を緩和又は排除することは、システム100における一つ若しくは複数のアプリケーションサーバ110a-l、データベースサーバ106a-c、又は他のデバイスが、システム100によって得られるデータに対する操作を実行することを、阻止または遅延されることを防止することによって、システム100のリソースが無駄になることを防ぎ得ることとなる。
【0039】
幾つかの実施例では、システム100においてエラーが発生し得る(例えば、システム100の一つ若しくは複数のデバイス若しくはコンポーネントにおけるエラー、故障、欠陥など)。この例では、システム100においてエラーが発生する場合、システム100の一つ若しくは複数のコンポーネントは、サーバ102a-dによって取得若しくは受信されるデータのための追加的若しくは代替的なルートを決定するように構成され得る。一例として、データベースサーバ106aに欠陥若しくはエラーが発生する場合、データベースサーバ106aに関連付けられたアプリケーションサーバ110a-dは、アプリケーションサーバ110a-dによって取得若しくは受信されるデータのための代替のルートを決定するように構成され得る。
【0040】
例えば、
図4は、本開示の一つの実施例に係るデータ分割システムの例である。
図4に描かれた例では、アプリケーションサーバ110aは、ロードバランサデバイス118a若しくはサーバ102aからデータを受信し、データベースサーバ106aに欠陥(例えば、障害)が発生したことを決定又は検出することができる。この例では、アプリケーションサーバ110aは、データを受信又は処理する、システム100内の別のデータベースサーバ106b-cを決定又は特定することができる。例えば、アプリケーションサーバ110aは、データベースサーバ106aに障害が発生したとの決定に対応して、データベースサーバ106bがデータを受信又は処理するために利用可能であると決定し、得られたデータをデータベースサーバ106aの代わりにデータベースサーバ106bに送信することができる。そして、データベースサーバ106bは、上述と実質的に同様の方法で、データソース10a-cのキー識別子に基づいて、データを格納するシステムデータベース108の一部またはパーティションを決定することができる。このようにして、システム100の一つ若しくは複数のコンポーネントにエラー又は欠陥が発生する場合に、システム100によって取得又は受信されたデータを再ルーティングすることができる。
【0041】
図1に戻ると、
図1はシステム100の特定の配置を例示しているが、様々な追加の配置が可能である。一例として、
図1は、一定数のサーバ102a-d、アプリケーションサーバグループ104a-c、アプリケーションサーバ110a-l、データベースサーバ106a-c、及びシステムデータベース108を図示しているが、本開示は、このような構成に限定されない。寧ろ、他の実施例では、システム100は、サーバ102a-d、アプリケーションサーバグループ104a-c、アプリケーションサーバ110a-l、データベースサーバ106a-c、及びシステムデータベース108の、任意の適当な数若しくは種類を含んでもよい。例えば、幾つかの実施例では、システム100は、スケールアウト(例えば、追加のアプリケーションサーバグループ、アプリケーションサーバ、データベースサーバ、又はシステムデータベース108を含むようにスケールアウト)されてもよい。さらに、上述した幾つかの実施例では、データソース10a-cは、データソース10a-cに関連付けられたソース識別子若しくはキー識別子を示すデータを、システム100内の一つ若しくは複数のデバイスに送信することができるが、本開示は、そのような構成に限定されない。寧ろ、他の実施例では、データソース10a-cは、システムの一つ若しくは複数のコンポーネント(例えば、サーバ102a-d)にデータを送信することができ、データは、データソース10a-cに関連付けられたソース識別子と共に、データソース10a-cによって測定又は受信された(例えば、取得された)情報を含むことができる。この例では、システム100の一つ若しくは複数のコンポーネント(例えば、サーバ102a-d、アプリケーションサーバ110a-l、データベースサーバ106a-c、ロードバランサデバイス118a-c、又はシステムデータベース108)は、ソース識別子に基づいて、データソース10a-cに関連付けられたキー識別子を決定できる。例えば、サーバ102aは、ソース識別子114aに関連付けられたデータソース10a-cからデータを取得する。この例では、サーバ102aのプロセッサは、データソース10a-cのソース識別子114aに関連付けられたキー識別子を決定できる。一例として、ソース識別子114aは、メータデバイスデータソース10a-cのメータ識別子であってもよく、プロセッサは、ソース識別子114aに関連付けられたキー識別子が、メータ識別子の一部(例えば、メータ識別子の最後の2桁)であると決定するものであってもよい。この例では、決定されたキー識別子を用いて、上述と実質的に同じ方法で、データソース10a-cからのデータを、決定されたキー識別子に関連付けられたシステムデータベース108の特定のパーティションにルーティングすることができる。幾つかの実施例では、ルーティング識別子又はキー識別子を決定するためのソース識別子としてメータ識別子を使用することにより、一つ若しくは複数の利点が提供され得る。例えば、メータ識別子がデータソース10a-cのソース識別子であり、キー識別子がメータ識別子の一部である場合、データソース10a-cは、ソース識別子を示すデータと共に、測定されたデータをシステム100の一つ若しくは複数のコンポーネント(例えば、サーバ102a-d、アプリケーションサーバ110a-l、データベースサーバ106a-c、ロードバランサデバイス118a-c、又はシステムデータベース108)に送信することができる。この例では、一つ若しくは複数のコンポーネントは、ソース識別子(例えば、メータ識別子)に基づいて、キー識別子(例えば、メータ識別子の部分)を決定または識別することができる。
【0042】
更に、上述の実施例では、データソース10a-cのルーティング識別子及び/又はキー識別子は、データソース10a-cのソース識別子に基づいて決定することができるが、本開示は、そのような構成に限定されない。寧ろ、他の実施例では、データソース10a-cのルーティング識別子及び/又はキー識別子は、任意の適切な方法または技法を用いて決定することができる。
【0043】
例えば、
図2は、本開示の別の実施例に係る、データ分割システム200の一つの例である。この例では、システム200は、
図1のサーバ102a-d、アプリケーションサーバグループ104a-c、アプリケーションサーバ110a-l、データベースサーバ106a-c、ロードバランサデバイス118a-c、及びシステムデータベース108を含む。
図2に描かれた例では、システム200は、夫々が、
図1のロードバランサデバイス118a-c、アプリケーションサーバグループ104a-c、アプリケーションサーバ110a-l、及びデータベースサーバ106a-cと実質的に同じ様に構成され得る、追加のロードバランサデバイス202、アプリケーションサーバグループ204、アプリケーションサーバ206a-d、及びデータベースサーバ208を含むようにスケールアウトされている。
【0044】
この例では、サーバ102a-dのルックアップテーブル112は、様々なソース識別子210a-e(例えば、様々なメータ識別子)と、各ソース識別子210a-eに関連付けられたルーティング識別子212a-eとを含む。ルックアップテーブル112を用いて、ソース識別子210a-eに関連付けられたデータソース(例えば、
図1のデータソース10a-c)から、ロードバランサデバイス118a-c及び202、アプリケーションサーバグループ118a-c及び204、アプリケーションサーバ110a-l及び206a-d、並びに、データベースサーバ106a-c及び208へ、上述と実質的に同じ様にして、データをルーティングすることができる。いくつかの例では、サーバ102a-dは、ロードバランサデバイス202、アプリケーションサーバグループ204、アプリケーションサーバ206a-d、若しくはデータベースサーバ208が
図1のシステム100に追加されることに対応して、ソース識別子210a-e及びルーティング識別子212a-eを示すデータを(例えば、他のデバイスから、又はユーザ入力を介して)受信することができる。
【0045】
この例では、システムデータベース108は、データソースからのデータが、上述と実質的に同じ様にして、システムデータベース108の特定の部分に格納され得るように、一つ若しくは複数のデータソースのキー識別子に基づいて更にパーティション化され得る。例えば、システムデータベース108は、アプリケーションサーバグループ204及びデータベースサーバ208に関連付けられたデータソース(例えば、ソース識別子210d及びルーティング識別子212dに関連付けられたデータソース)から得られるデータが、上述と実質的に同じ様にして、システムデータベース108のパーティション214に処理されて格納され得るように、パーティション214を含むべく更にパーティション化され得る。幾つかの実施例では、システムデータベース108は、ロードバランサデバイス202、アプリケーションサーバグループ204、アプリケーションサーバ206a-d、及び、データベースサーバ208を含むようにシステム100をスケールアウトすることに対応して、パーティション214若しくは任意の他のパーティションを含むようにパーティション化され得る。
【0046】
このようにして、システム100は、追加的又は代替的なコンポーネント(例えば、ロードバランサ、アプリケーションサーバグループ、アプリケーションサーバ、データベースサーバなど)を含むようにスケールアウトし得る。
【0047】
図3は、本開示の一つの実施例に係る、クラスタ化されたデータベース環境でデータを分割するためのプロセスの一例を示すフローチャートである。幾つかの実施例では、
図3のステップは、プロセッサ、例えば、汎用コンピュータ若しくはサーバのプロセッサによって、実行可能なプログラムコードで実装されてもよい。幾つかの実施例では、これらのステップは、プロセッサ若しくはサーバのグループによって実装されてもよい。幾つかの実施例では、
図3に示す一つ若しくは複数のステップは、省略されてもよいし、異なる順序で実行されてもよい。同様に、幾つかの実施例では、
図3に示されていない追加のステップも実行されてもよい。
図3のプロセス300は、
図1を参照して説明されているが、他の実施形態も可能である。
【0048】
ブロック302では、データは、データソース10a-cから、データソース10a-cのソース識別子及びキー識別子と共に、取得される。データソース10a-cは、任意のデータソースであればよい。例えば、データソース10a-cは、電力、ガス、水などの、資源の消費量を測定するためのメータデバイスであってもよい。データソース10a-cは、データを測定又は受信(例えば、取得)し、データを保存し、サーバ102a-dにデータを通信してもよい。データは、データソース10a-cによって測定又は受信(例えば、取得)された情報を、データソース10a-cに関連付けられたソース識別子又はキー識別子と共に、含み得る。一つの例として、データソース10aは、水道メータデバイスであり、サーバ102aは、水道メータデバイスのメータデバイス識別子を示すデータと、メータデバイス識別子の特定の部分(例えば、メータデバイス識別子の最後の2桁)を示すデータと共に、メータデバイスによって測定又は受信されるデータを取得する。
【0049】
ブロック304では、データソース10a-cのソース識別子に対応するルーティング識別子に基づいて、データソース10a-cに関連付けられた特定のアプリケーションサーバグループ104a-cが、決定される。
【0050】
例えば、様々なアプリケーションサーバグループ104a-cは、様々なアプリケーションサーバ110a-lを含むことができる。各アプリケーションサーバグループ104a-cは、特定のルーティング識別子に関連付けられ得る(例えば、割り当てられ得る)。幾つかの実施例では、サーバ102aは、プロセッサと、データベース又はルックアップテーブル112を含むメモリとを含む。サーバ102aのルックアップテーブル112は、様々なデータソース10a-cに関連付けられたソース識別子114a-eを示すデータと、各ソース識別子114a-eに関連付けられたルーティング識別子116a-eを示すデータとを、含むことができる。各ルーティング識別子116a-eは、各ソース識別子114a-eに割り当てられる、特定のアプリケーションサーバグループ104a-c、アプリケーションサーバ110a-l、又はデータベースサーバ106a-cを、示す。サーバ102aは、データソース10a-cから、データソース10a-cに関連付けられたソース識別子114a-eと共に、データを受信することができ、サーバ102aのプロセッサは、ルックアップテーブル112にアクセスして、ソース識別子114a-eに関連付けられたルーティング識別子116a-eを決定することができる。一つの例として、サーバ102aは、ソース識別子114aに対応するデータソース10aからデータを受信し、ルックアップテーブル112に基づいて、ルーティング識別子116aがソース識別子114aに関連付けられることを決定する。この例では、サーバ102aは、ルーティング識別子116aがアプリケーションサーバグループ104aに関連付けられる(例えば、割り当てられる)と決定できる。
【0051】
別の実施例では、ブロック304において、サーバ102a-dのプロセッサは、ルックアップテーブル112にアクセスすることなく、データソース10a-cのソース識別子に基づいて、データソース10a-cに関連付けられたルーティング識別子を決定することができる。例えば、サーバ102aは、データソース10a-cから、データソース10a-cに関連付けられたソース識別子114a-eと共に、データを受信することができ、サーバ102aのプロセッサは、ソース識別子114a-e及び/又はデータソース10a-cに関連付けられたルーティング識別子116a-eを以下の式[数1]を用いて計算又は決定できる。
[数1]
ルーティング識別子=(ソース識別子%100)%n
【0052】
上記式において、%は、モデューロ演算又は関数(例えば、ある数を別の数で除算した後の残数の決定)を表し、nは、システム100内のデータベースサーバ110a-lの数を表す。
【0053】
ブロック306では、データソース10a-cからのデータを処理できるアプリケーションサーバグループ104a-cの特定のアプリケーションサーバ110a-lが決定される。例えば、各サーバ102a-dは、データソース10a-cから得られるデータをロードバランサデバイス118a-cに送信することができる。各ロードバランサデバイス118a-cは、特定のアプリケーションサーバグループ104a-cに関連付けられ、特定のアプリケーションサーバグループ104a-c及びサーバ102a-dに通信上結合してもよい。ロードバランサデバイス118a-cは、アプリケーションサーバグループ104a-cに関連付けられたデータソース10a-cからのデータを処理又は分析するために、アプリケーションサーバグループ104a-c内の特定のアプリケーションサーバ110a-lを決定することができる。例えば、ロードバランサデバイス118aは、アプリケーションサーバグループ104aに関連付けられ、サーバ102aからデータを受信することができる。ロードバランサデバイス118aは、アプリケーションサーバグループ104aに関連付けられたデータソース10a-cからのデータを処理又は分析するために、アプリケーションサーバグループ104a内のアプリケーションサーバ110a-dを決定することができる。幾つかの実施例では、ロードバランサデバイス118a-cは、様々な方法若しくは技法を用いて(例えば、データを処理するアプリケーションサーバ110a-lの可用性に基づいて、ランダムな方法で、又は、他の適切な方法若しくは技法を用いて)、データソース10a-cからのデータを処理又は分析するために、アプリケーションサーバグループ104a-c内の特定のアプリケーションサーバ110a-lを決定することができる。例えば、ロードバランサデバイス118aは、(例えば、アプリケーションサーバ110aが動作を実行していなくとも、)アプリケーションサーバ110aがデータを処理するために利用可能なコンピューティングリソース若しくはネットワークリソースを持っていると、決定することに対応して、アプリケーションサーバ110aがデータソース10aからのデータを処理することができると決定することができる。別の例として、ロードバランサデバイス118aは、(例えば、他のアプリケーションサーバ110b-dがアプリケーションサーバ110aと比較してより多くの操作を実行していても、)アプリケーションサーバグループ104aの他のアプリケーションサーバ110b-dと比較して、アプリケーションサーバ110aが利用可能なコンピューティングリソース若しくはネットワークリソースをより多く有していると、決定することに対応して、アプリケーションサーバ110aがデータソース10aからのデータを処理することができると、決定することができる。
【0054】
幾つかの実施例では、システム100は、ロードバランサデバイス118a-cを含まない場合がある。この例では、ブロック306において、サーバ102a-dは、アプリケーションサーバグループ104a-c内の特定のアプリケーションサーバ110a-lを決定して、アプリケーションサーバグループ104a-cに関連付けられたデータソース10a-cからのデータを、上述と実質的に同じ様にして、処理又は分析することができる。
【0055】
ブロック308では、データソース10a-cから得られたデータは、アプリケーションサーバグループ104a-c(例えば、ブロック304で決定されたアプリケーションサーバグループ)のアプリケーションサーバ110a-dに送信される。幾つかの実施例では、サーバ102a-dは、データソース10a-cから得られたデータをアプリケーションサーバグループ104a-c若しくはアプリケーションサーバグループ104a-cのアプリケーションサーバ110a-lに送信するために、アプリケーションサーバグループ104a-cに通信上結合することができる。例えば、サーバ102a-dは、データソース10a-cから得られたデータを、(例えば、ブロック306にて)ロードバランサデバイス118a-cによって決定されたアプリケーションサーバ110a-lに送信することができる。別の例では、サーバ102a-dは、データソース10a-cから得られたデータを、データソース10a-cのソース識別子114a-eに対応するルーティング識別子116a-eに関連付けられたアプリケーションサーバグループ104a-c(例えば、ブロック304で決定されたアプリケーションサーバグループ)の任意のアプリケーションサーバ110a-lに送信することができる。幾つかの実施例では、サーバ102a-dは、アプリケーションサーバグループ104a-cに関連付けられた特定のロードバランサデバイス118a-cに通信上結合することができ、ロードバランサデバイス118a-cは、データをアプリケーションサーバグループ104a-c若しくはアプリケーションサーバグループ104a-cのアプリケーションサーバ110a-lに、送信することができる。
【0056】
一つの例として、サーバ102aは、ソース識別子114aに対応するデータソース10aからデータを受信し、ルックアップテーブル112に基づいて、ルーティング識別子116aがソース識別子114aに関連付けられていることを決定する。この例では、サーバ102aは、ルーティング識別子116aがアプリケーションサーバグループ104aに関連付けられている(例えば、割り当てられている)と決定することができる。この例に続けて、サーバ102aは、データソース10aから、データソース10aに関連付けられた特定のアプリケーションサーバグループ104a若しくはアプリケーションサーバグループ104aのアプリケーションサーバ110a-dに、データを送信することができる。別の例として、サーバ102aは、アプリケーションサーバグループ104aに関連付けられた特定のロードバランサデバイス118aにデータを送信することができ、ロードバランサデバイス118aは、アプリケーションサーバグループ104a若しくはアプリケーションサーバグループ104aの特定のアプリケーションサーバ110a-d(例えば、ブロック306で決定された特定のアプリケーションサーバ)に、データを送信することができる。
【0057】
幾つかの実施例では、ブロック308において、特定のアプリケーションサーバグループ104a-cのアプリケーションサーバ110a-lは、サーバ102a-d若しくはロードバランサデバイス118a-cから取得又は受信したデータを処理することができる。
【0058】
ブロック310において、データは、アプリケーションサーバグループ104a-cに関連付けられた特定のデータベースサーバ106a-cに送信される。例えば、各データベースサーバ106a-cは、特定のアプリケーションサーバグループ104a-cに関連付けられ得る。一つの例として、
図1を参照して、データベースサーバ106aは、アプリケーションサーバグループ104aに関連付けられ、データベースサーバ106bは、アプリケーションサーバグループ104bに関連付けられ、データベースサーバ106cは、アプリケーションサーバグループ104cに関連付けられ得る。特定のアプリケーションサーバグループ(例えば、ブロック304で決定されたアプリケーションサーバグループ)のアプリケーションサーバ110a-lは、(例えば、ブロック308で)サーバ102a-d若しくはロードバランサデバイス118a-cから取得又は受信したデータを処理し、処理されたデータをアプリケーションサーバ110a-lのアプリケーションサーバグループ104a-cに関連付けられた特定のデータベースサーバ106a-cに送信することができる。一つの例として、アプリケーションサーバ1100aは、ロードバランサデバイス118a若しくはサーバ102aから受信したデータを処理し、処理したデータを、アプリケーションサーバ1100aのアプリケーションサーバグループ104aに関連付けられた特定のデータベースサーバ106aに送信することができる。
【0059】
ブロック312において、データソース10a-cからのデータは、データソース10a-cのキー識別子に基づいて、システムデータベース108の特定のパーティションに格納される。
【0060】
例えば、各データベースサーバ106a-cは、プロセッサと、データベースを含むメモリとを含むことができる。データベースサーバ106a-cは、(例えば、ブロック310にて)データベースサーバ106a-cに関連付けられたアプリケーションサーバ110a-lからデータを受信することができ、データベースサーバ106a-cのプロセッサは、データベースにアクセスして、アプリケーションサーバ110a-lから受信したデータをシステムデータベース108の特定の部分またはパーティションにルーティングすることができる。
【0061】
一つの例として、システムデータベース108は、様々なデータソース10a-cに関連付けられたキー識別子に基づいてパーティショニング(例えば、分割)され得る。例えば、システムデータベース108は、パーティション(例えば、部分)120、122、124に分割することができ、各パーティション120、122、124は、特定のデータソース10a-cのキー識別子に関連付けられる。例えば、パーティション120は、ソース識別子114aに対応するデータソース10aのキー識別子に関連付けられ、パーティション122は、ソース識別子114bに対応するデータソース10bのキー識別子に関連付けられ、パーティション124は、ソース識別子114cに対応するデータソース10cのキー識別子に関連付けられ得る。この例では、データベースサーバ106a-cのデータベースは、様々なデータソース10a-cに関連付けられたキー識別子を示すデータと、各キー識別子に関連付けられた(例えば、割り当てられた)システムデータベース108の一部とを含むことができる。データベースサーバ106a-cは、データベースを用いて、データソース10a-cから得られたデータを(例えば、対応するアプリケーションサーバ110a-lを介して)、データソース10a-cのキー識別子に対応するシステムデータベース108の特定の部分にルーティングすることができる。一つの例として、データベースサーバ106aは、データソース10aのキー識別子と共に、ソース識別子114aに関連付けられたデータソース10aからのデータを含むデータをアプリケーションサーバ110aから取得する。データベースサーバ106aのプロセッサは、データベースサーバ106aのデータベースにアクセスして、キー識別子に関連付けられたシステムデータベース108の特定のパーティション120を決定し、システムデータベース108のパーティション120に格納されるようにデータをシステムデータベース108に送信する。
【0062】
この例では、システムデータベース108は、様々なデータソース10a-cに関連付けられたキー識別子に基づいてパーティション化され得るが、本開示は、そのような構成に限定されない。寧ろ、他の実施例では、システムデータベース108は、任意の適切な様にして、追加的又は代替的にパーティション化することができ、データベースサーバ106a-cは、システムデータベース108の特定のパーティションに格納されるように、システムデータベース108にデータを送信するように構成され得る。例えば、システムデータベース108は、日付、時間、又は任意の適切な間隔に基づいてパーティション化され、データベースサーバ106a-cは、特定の日付、時間、又は間隔に基づいて、システムデータベース108の特定のパーティションに格納されるように、システムデータベース108にデータを送信するように構成され得る。一つの例として、システムデータベース108に格納されたデータは、一カ月の数日に基づいて追加的にパーティション化され、データベースサーバ106a-cは、データソース10a-cから得られたデータが、上述のように、データソース10a-cのキー識別子に関連付けられたシステムデータベース108の特定のパーティションに格納されるように、パーティションに基づいて格納されるべくシステムデータベース108にデータを送信するよう構成され得、特定のパーティションは、データが受信された月の日に基づいて更にパーティション化される(例えば、特定の日にデータソース10a-cから受信したデータは、パーティションのサブパーティション内に格納することができる。)。別の例として、システムデータベース108に送信又は格納されたデータは、データソース10a-cからのコンテンツの種類、内容、特徴などの任意の適切な基準に基づいて、追加的又は代替的にパーティション化することができる。
【0063】
上述の例では、データソースからのデータは、ソース識別子、ルーティング識別子、又は、データソースに関連付けられたキー識別子に基づいてルーティングされ、パーティション化され得るが、本開示はそのような構成に限定されない。寧ろ、他の実施例では、データソースからのデータは、データソースに関連付けられた、ソース識別子、ルーティング識別子、若しくはキー識別子に基づいて、特定のサーバ、ロードバランサデバイス、アプリケーションサーバグループ、及び/又はデータベースサーバに、ルーティングされ得る。代替的な例では、データソースからのデータは、データソースに関連付けられた、ソース識別子、ルーティング識別子、若しくはキー識別子に基づいて、システムデータベースの特定のパーティション若しくはサブパーティションに、格納され得る。
【0064】
例示された実施例を含む、特定の実施例についての前記説明は、例示及び説明の目的のためだけに提示されたものであり、網羅的であることを意図したものではなく、また、本開示を開示された正確な形態に限定することを意図したものではない。数多くの修正、適応、及びそれらの使用は、開示の範囲から逸脱することなく、当業者には明らかであろう。