(57)【特許請求の範囲】
【請求項１】
データベースバウンドアプリケーションのユーザインターフェース（ＵＩ）バックエンドクラスタをスケーリングする方法であって、前記ＵＩバックエンドクラスタは、複数のＵＩアプリケーションサーバと、マスターデータベースサーバとを備えており、方法は、
前記複数のＵＩアプリケーションサーバのうちのあるＵＩアプリケーションサーバのＵＩアプリケーションマネージャ―によって、データ読み取り動作を実行することであって、
現在のユーザセッションに関連付けられるセッションシーケンスＩＤを取得することであって、前記セッションシーケンスＩＤは、前記マスターデータベースサーバのマスターデータベースマネージャから、前記現在のユーザセッション中の前記マスターデータベースサーバのマスターデータベースへの直近の書き込み動作中に受信された第1のマスターデータベースシーケンスＩＤに対応することと、
前記セッションシーケンスＩＤが空でないとの判定に応じて、ＵＩアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースからローカルデータベースシーケンスＩＤを読み取ることであって、前記ローカルデータベースシーケンスＩＤは前記マスターデータベースの前記ローカルの読み取り専用データベースへの直近の非同期レプリケーション中に前記マスターデータベースマネージャから受信された第２のマスターデータベースシーケンスＩＤに対応し、前記ローカルの読み取り専用データベースは前記マスターデータベースの非同期的にレプリケーションされたコピーを含むことと、
前記セッションシーケンスＩＤが前記ローカルデータベースシーケンスＩＤ以下であるかどうかを判定することと、
前記セッションシーケンスＩＤが前記ローカルデータベースシーケンスＩＤ以下であるとの判定の後に、前記データを前記ローカルの読み取り専用データベースから読み取ることと、を含む、データ読み取り動作を実行すること、を含む、方法。
【請求項２】
前記データ読み取り動作を実行することは、前記セッションシーケンスＩＤが空であるとの判定に応じて、前記データを前記ローカルの読み取り専用データベースから読み取ることを更に含む、請求項１に記載の方法。
【請求項３】
前記ローカルデータベースシーケンスＩＤを、ＵＩアプリケーションマネージャに関連付けられた前記ローカルの読み取り専用データベースから読み取ることは、データ読み取り要求を前記ＵＩアプリケーションサーバのデータベースマネージャに送信することを含み、前記データベースマネージャによって、前記ローカルの読み取り専用データベースに、前記ローカルの読み取り専用データベースから前記ローカルのデータベースシーケンスＩＤを取得するように問い合わせることを更に含む、請求項１に記載の方法。
【請求項４】
前記データを前記ローカルの読み取り専用データベースから読み取ることは、前記ＵＩアプリケーションサーバのデータベースマネージャにデータ読み取り要求を送信することを含み、前記データベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースから前記データ読み取り要求に対応する前記データを取得することを更に含む、請求項１に記載の方法。
【請求項５】
前記ＵＩアプリケーションマネージャによって、前記ＵＩアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスのうちのあるエンドポイントデバイスから１つ以上のメッセージを受信することと、
前記ＵＩアプリケーションマネージャによって、前記受信されたメッセージの機能としてユーザインターフェースのデータをレンダリングすることと、を更に含む、請求項１に記載の方法。
【請求項６】
前記メッセージを受信することは、前記複数のＵＩアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスから前記メッセージを受信することを含み、前記ロードバランシングデバイスは前記複数のエンドポイントデバイスのそれぞれにネットワークを介して更に通信可能に連結されている、請求項５に記載の方法。
【請求項７】
前記メッセージを前記エンドポイントデバイスから受信することは、前記ユーザセッション中に前記ＵＩアプリケーションサーバでのそのエンドポイントデバイスから全てのメッセージを受信することを含む、請求項６に記載の方法。
【請求項８】
前記ＵＩアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記表示を受信してから閾値持続時間が経過したかを判定することと、
前記ＵＩアプリケーションマネージャによって、かつ前記閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、を更に含む、請求項４に記載の方法。
【請求項９】
前記ＵＩアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの読み取りが失敗したとの表示を受信した後に、前記マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信することを更に含み、前記データ読み取り要求は、前記マスターデータベースマネージャによって、前記マスターデータベースに問い合わせて、前記ローカルの読み取り専用データベースから前記データ読み取り要求に関連付けられた前記データを取得して前記マスターデータベースから適用可能データを取得するように使用可能である、請求項８に記載の方法。
【請求項１０】
複数の指示を記憶する１つ以上のコンピュータ読み取り可能記憶媒体であって、前記指示は、実行されると、ユーザインターフェース（ＵＩ）バックエンドクラスタの複数のＵＩアプリケーションサーバのうちのあるＵＩアプリケーションサーバに、
前記ＵＩアプリケーションサーバのＵＩアプリケーションマネージャによって、データ読み取り動作を実行させ、前記データ読み取り動作は、
現在のユーザセッションに関連付けられるセッションシーケンスＩＤを取得することであって、前記セッションシーケンスＩＤは、マスターデータベースサーバのマスターデータベースマネージャから、前記現在のユーザセッション中の前記マスターデータベースサーバのマスターデータベースへの直近の書き込み動作中に受信された第1のマスターデータベースシーケンスＩＤに対応することと、
前記セッションシーケンスＩＤが空でないとの判定に応じて、ＵＩアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースからローカルデータベースシーケンスＩＤを読み取ることであって、前記ローカルデータベースシーケンスＩＤは前記マスターデータベースの前記ローカルの読み取り専用データベースへの直近の非同期レプリケーション中に前記マスターデータベースマネージャから受信された第２のマスターデータベースシーケンスＩＤに対応し、前記ローカルの読み取り専用データベースは前記マスターデータベースの非同期的にレプリケーションされたコピーを含む、ことと、
前記セッションシーケンスＩＤが前記ローカルデータベースシーケンスＩＤ以下であるかどうかを判定することと、
前記セッションシーケンスＩＤが前記ローカルデータベースシーケンスＩＤ以下であるとの判定の後に、前記データを前記ローカルの読み取り専用データベースから読み取ることと、を含む、１つ以上のコンピュータ読み取り可能記憶媒体。
【請求項１１】
前記データ読み取り動作を実行することは、前記セッションシーケンスＩＤが空であるとの判定に応じて、前記データを前記ローカルの読み取り専用データベースから読み取ることを更に含む、請求項１０に記載の１つ以上のコンピュータ読み取り可能記憶媒体。
【請求項１２】
前記ローカルデータベースシーケンスＩＤを、ＵＩアプリケーションマネージャに関連付けられた前記ローカルの読み取り専用データベースから読み取ることは、（ｉ）前記ＵＩアプリケーションマネージャによって、データ読み取り要求を前記ＵＩアプリケーションサーバのデータベースマネージャに送信することと、（ｉｉ）前記ＵＩアプリケーションサーバのデータベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースから前記ローカルデータベースシーケンスＩＤを取得することと、を含む、請求項１０に記載の１つ以上のコンピュータ読み取り可能記憶媒体。
【請求項１３】
前記データを前記ローカルの読み取り専用データベースから読み取ることは、（ｉ）前記ＵＩアプリケーションマネージャによって、データ読み取り要求を前記ＵＩアプリケーションサーバのデータベースマネージャに送信することと、（ｉｉ）前記ＵＩアプリケーションサーバのデータベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースからデータ読み取り要求に対応する前記データを取得することと、を含む、請求項１０に記載の１つ以上のコンピュータ読み取り可能記憶。
【請求項１４】
前記複数の指示は、前記ＵＩアプリケーションサーバに、
前記ＵＩアプリケーションマネージャによって、前記ＵＩアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスのうちのあるエンドポイントデバイスから１つ以上のメッセージを受信することと、
前記ＵＩアプリケーションマネージャによって、前記受信されたメッセージの機能としてユーザインターフェースのデータをレンダリングすることと、を更にさせる、請求項１０に記載の１つ以上のコンピュータ読み取り可能記憶媒体。
【請求項１５】
前記メッセージを受信することは、前記複数のＵＩアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスから前記メッセージを受信することを含み、前記ロードバランシングデバイスは前記複数のエンドポイントデバイスのそれぞれにネットワークを介して更に通信可能に連結されている、請求項１４に記載の１つ以上のコンピュータ読み取り可能記憶媒体。
【請求項１６】
前記複数の指示は、前記ＵＩアプリケーションサーバに、
前記ＵＩアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記表示を受信してから閾値持続時間が経過したかどうかを判定することと、
前記ＵＩアプリケーションマネージャによって、かつ前記閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、を更にさせる、請求項１０に記載の１つ以上のコンピュータ読み取り可能記憶媒体。
【請求項１７】
前記複数の指示は、前記ＵＩアプリケーションサーバに、前記ＵＩアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信することを更にさせ、前記データ読み取り要求は、前記マスターデータベースマネージャによって、前記マスターデータベースに問い合わせて、前記ローカルの読み取り専用データベースから前記データ読み取り要求に関連付けられた前記データを取得して前記マスターデータベースから適用可能なデータを取得するように利用可能である、請求項１６に記載の１つ以上のコンピュータ読み取り可能記憶媒体。
【請求項１８】
データベースバウンドアプリケーション用にユーザインターフェース（ＵＩ）バックエンドクラスタをスケーリングするための複数のＵＩアプリケーションサーバのうちのあるＵＩアプリケーションサーバであって、前記ＵＩバックエンドクラスタは、複数のＵＩアプリケーションサーバと、マスターデータベースサーバとを備え、前記ＵＩアプリケーションサーバは、
プロセッサと、
複数の指示を記憶するメモリと、を備え、前記複数の指示は、１つ以上のプロセッサによって実行されると、前記ＵＩアプリケーションサーバに、
前記ＵＩアプリケーションサーバのＵＩアプリケーションマネージャによって、データ読み取り動作を実行させ、前記データ読み取り動作は、
現在のユーザセッションに関連付けられるセッションシーケンスＩＤを取得することであって、前記セッションシーケンスＩＤは、前記マスターデータベースサーバのマスターデータベースマネージャから、前記現在のユーザセッション中の前記マスターデータベースサーバのマスターデータベースへの直近の書き込み動作中に受信された第1のマスターデータベースシーケンスＩＤに対応する、ことと、
前記セッションシーケンスＩＤが空でないとの判定に応じて、ＵＩアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースからローカルデータベースシーケンスＩＤを読み取ることであって、前記ローカルデータベースシーケンスＩＤは前記マスターデータベースの前記ローカルの読み取り専用データベースへの直近の非同期レプリケーション中に前記マスターデータベースマネージャから受信された第２のマスターデータベースシーケンスＩＤに対応し、前記ローカルの読み取り専用データベースは前記マスターデータベースの非同期的にレプリケーションされたコピーを含む、ことと、
前記セッションシーケンスＩＤが前記ローカルデータベースシーケンスＩＤ以下であるかどうかを判定することと、
前記セッションシーケンスＩＤが前記ローカルデータベースシーケンスＩＤ以下であるとの判定の後に、前記データを前記ローカルの読み取り専用データベースから読み取ることと、を含む、ＵＩアプリケーションサーバ。
【請求項１９】
前記データ読み取り動作を実行することは、前記セッションシーケンスＩＤが空であるとの判定に応じて、前記データを前記ローカルの読み取り専用データベースから読み取ることを更に含む、請求項１８に記載のＵＩアプリケーションサーバ。
【請求項２０】
前記ローカルデータベースシーケンスＩＤを、ＵＩアプリケーションマネージャに関連付けられた前記ローカルの読み取り専用データベースから読み取ることは、（ｉ）前記ＵＩアプリケーションマネージャによって、データ読み取り要求を前記ＵＩアプリケーションサーバのデータベースマネージャに送信することと、（ｉｉ）前記ＵＩアプリケーションサーバのデータベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースから前記ローカルデータベースシーケンスＩＤを取得することと、を含む、請求項１８に記載のＵＩアプリケーションサーバ。
【請求項２１】
前記データを前記ローカルの読み取り専用データベースから読み取ることは、（ｉ）前記ＵＩアプリケーションマネージャによって、データ読み取り要求を前記ＵＩアプリケーションサーバのデータベースマネージャに送信することと、（ｉｉ）前記ＵＩアプリケーションサーバのデータベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースからデータ読み取り要求に対応する前記データを取得することと、を含む、請求項１８に記載のＵＩアプリケーションサーバ。
【請求項２２】
前記１つ以上のプロセッサは、
前記ＵＩアプリケーションマネージャによって、前記ＵＩアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスのうちのあるエンドポイントデバイスから１つ以上のメッセージを受信することと、
前記ＵＩアプリケーションマネージャによって、前記受信されたメッセージの機能としてユーザインターフェースのデータをレンダリングすることと、をさせる前記指示を実行するように更に構成されている、請求項１８に記載のＵＩアプリケーションサーバ。
【請求項２３】
前記メッセージを受信することは、前記複数のＵＩアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスから前記メッセージを受信することを含み、前記ロードバランシングデバイスは前記複数のエンドポイントデバイスのそれぞれにネットワークを介して更に通信可能に連結されている、請求項２２に記載のＵＩアプリケーションサーバ。
【請求項２４】
前記１つ以上のプロセッサは、
前記ＵＩアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記表示を受信してから閾値持続時間が経過したかどうかを判定することと、
前記ＵＩアプリケーションマネージャによって、かつ前記閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、をさせる前記指示を実行するように更に構成されている、請求項１８に記載のＵＩアプリケーションサーバ。
【請求項２５】
前記１つ以上のプロセッサは、前記ＵＩアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信させるための指示を実行するように更に構成され、前記マスターデータベースに問い合わせて、前記ローカルの読み取り専用データベースから前記データ読み取り要求に関連付けられた前記データを取得して前記マスターデータベースから適用可能なデータを取得するように利用可能である、請求項２４に記載のＵＩアプリケーションサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は国際特許出願であり、２０１６年１２月２３日に出願された米国特許出願整理番号第１５／３８９，７１４号の優先権の利益を主張し、その記載及び図面はその全体にわたって本明細書に引用により援用される。
【０００２】
本明細書に開示される実施形態は概してユーザインターフェースバックエンドクラスタに関し、より具体的には、データベースバウンドのアプリケーション用にユーザインターフェースバックエンドクラスタをスケーリングするための技術に関する。
【背景技術】
【０００３】
典型的には、ユーザインターフェース（ＵＩ）バックエンドクラスタは、ＵＩバックエンドコード／スクリプトを実行するために複数のコンピュートノードを利用する。しかしながら、そのようなＵＩバックエンドクラスタは典型的に、強固なデータの無矛盾性意味論を保持する努力として、単一のデータベースを共有する。このように、伝統的な解決策は、ハイパーテキストプリプロセッサ（ＰＨＰ）に基づくウェブ開発されたアプリケーションなど、ＣＰＵバウンドアプリケーション用にアプリケーションレベルでのスケーラビリティを提供することができる。残念ながら、このような伝統的な解決策は、データベースがスケーリング可能でないために、データベースバウンドのアプリケーション（例えば、コミュニティクリーチャープロジェクト（Ｃｏｍｍｕｎｉｔｙ  Ｃｒｅａｔｕｒｅ  Ｐｒｏｊｅｃｔ、ＣＣＰ）ｖ２  ＵＩ、アプリケーションパッケージングスタンダード（ＡＰＳ）２、など）についてはスケーリングを行わない。
【０００４】
データベースのスケーリング不足を克服するための努力には複数のスレーブを追加することが含まれるが、特定のバックエンドクラスタ（例えば、ＰｏｓｔｇｒｅＳＱＬ）は同期レプリケーションしかサポートしていない。このように、複数のスレーブを追加することは、結果として起こるデータの無矛盾性の問題、及び使用中にＵＩを変更させる可能性があり、そのＵＩのユーザを混乱させるような、ノンリピータブルリードの試みを引き起こす可能性がある。したがって、データベースバウンドアプリケーション用のスケーリング可能なＵＩバックエンドクラスタの需要がある。
【発明の概要】
【０００５】
一態様は、データベースバウンドアプリケーション用にユーザインターフェース（ＵＩ）バックエンドクラスタをスケーリングする方法を含み、ＵＩバックエンドクラスタは、複数のＵＩアプリケーションサーバと、マスターデータベースサーバとを備えている。方法は、マスターデータベースサーバによって、複数のＵＩアプリケーションサーバのうちのあるＵＩアプリケーションサーバからデータ変更要求を受信することを含み、データ変更要求は、変更されるデータの情報を識別することと、マスターデータベースサーバによって、受信されたデータ変更要求と関連付けられたデータを、マスターデータベースサーバによって管理されるマスターデータベースにおいて変更することと、マスターデータベースサーバによって、マスターシーケンス識別子を更新することであって、マスターシーケンス識別子はマスターデータベースに関連付けられる独自の値を定義する、ことと、マスターデータベースサーバによって、ＵＩアプリケーションサーバに、更新されたマスターシーケンス識別子を含むメッセージを送信することと、マスターデータベースサーバによって、複数のＵＩアプリケーションサーバのそれぞれと関連付けられる対応するローカルの読み取り専用データベースそれぞれの非同期レプリケーションを実行することであって、非同期レプリケーションを実行することは、更新されたマスターシーケンス識別子をそれぞれの対応するローカルの読み取り専用データベースの対応するフィールドに保存することを含むことと、を含む。
【０００６】
いくつかの実施形態では、ＵＩアプリケーションサーバにメッセージを送信することは、メッセージとともにデータ変更動作状態を送信することを含み、データ変更動作状態は、データ変更要求に関連付けられたデータが変更を保留にしているかどうかを判定するのに使用可能である。加えて、いくつかの実施形態では、データ変更動作状態は、ローカルの読み取り専用データが古いことを示す。他の実施形態では、マスターシーケンス識別子を更新することは、マスターデータベースシーケンス識別子の前の値を整数の１で増分させることを含む。更に他の実施形態において、データを変更することは、マスターデータベース内の対応するデータを挿入、削除、又は更新することのうちの１つを含む。
【０００７】
別の態様では、複数の指示をその中に記憶する１つ以上のコンピュータ読み取り可能記憶媒体であって、複数の指示は実行されると、ユーザインターフェース（ＵＩ）バックエンドクラスタのマスターデータベースサーバに、ＵＩバックエンドクラスタの複数のＵＩアプリケーションのうちのあるＵＩアプリケーションサーバより、変更されるデータの情報を識別することを含むデータ変更要求を受信することと、受信されたデータ変更要求と関連付けられたデータを、マスターデータベースサーバによって管理されたマスターデータベースに変更することと、マスターデータベースに関連付けられた独自の値を定義するマスターシーケンス識別子を更新することと、更新されたマスターシーケンス識別子を含むメッセージをＵＩアプリケーションサーバに送信することと、複数のＵＩアプリケーションサーバそれぞれと関連付けられたローカルの読み取り専用データベースそれぞれの非同期レプリケーションを実行することであって、非同期レプリケーションを実行することは、更新されたマスターシーケンス識別子をそれぞれのローカル読み取り専用データベースの対応するフィールドに保存することを含む。
【０００８】
いくつかの実施形態では、ＵＩアプリケーションサーバにメッセージを送信することは、メッセージとともにデータ変更動作状態を送信することを含み、データ変更動作状態は、データ変更要求に関連付けられたデータが変更を保留にしているかどうかを判定するのに使用可能である。加えて、いくつかの実施形態では、データ変更動作状態は、ローカルの読み取り専用データベースが古いことを示す。他の実施形態では、マスターシーケンス識別子を更新することは、マスターデータベースシーケンス識別子の前の値を、整数の１で増分させることを含む。更に他の実施形態において、データを変更することは、マスターデータベース内の対応するデータを挿入、削除、又は更新することのうちの１つを含む。
【０００９】
まだ別の態様では、データベースバウンドアプリケーションについてユーザインターフェース（ＵＩ）バックエンドクラスタをスケーリングする方法は、ＵＩバックエンドクラスタが複数のＵＩアプリケーションサーバとマスターデータベースサーバとを含む。方法は、複数のＵＩアプリケーションサーバのうちのあるＵＩアプリケーションサーバのＵＩアプリケーションマネージャによって、現在のユーザセッションに関連付けられるセッションシーケンスＩＤを取得することであって、セッションシーケンスＩＤは現在のユーザセッション中にマスターデータベースサーバのマスターデータベースへの最新の書き込み動作中にてマスターデータベースサーバのマスターデータベースマネージャより受信された第１のマスターデータベースシーケンスＩＤに対応する、ことと、セッションシーケンスＩＤが空でないとの判定に応じて、ＵＩアプリケーションマネージャに関連付けられるローカルの読み取り専用データベースからローカルデータベースシーケンスＩＤを読み取ることであって、ローカルデータベースシーケンスＩＤは、ローカルの読み取り専用データベースへのマスターデータベースの最新の非同期レプリケーション中にマスターデータベースマネージャより受信された第２のマスターデータベースシーケンスＩＤに対応する、ことと、セッションシーケンスＩＤがローカルデータベースシーケンスＩＤ以下であるかどうかを判定することと、セッションシーケンスＩＤがローカルのデータベースシーケンスＩＤ以下であるとの判定の後に、ローカルの読み取り専用データベースからデータを読み取ることと、を含む、データ読み取り動作を実行することを含む。
【００１０】
いくつかの実施形態では、データ読み取り動作を実行することは、セッションシーケンスＩＤが空であるとの判定に応じて、ローカルの読み取り専用データベースからデータを読み取ることを更に含む。他の実施形態では、ローカルデータベースシーケンスＩＤをＵＩアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースからを読み取ることは、ＵＩアプリケーションサーバのデータベースマネージャにデータ読み取り要求を送信することを含み、データベースマネージャによって、ローカルの読み取り専用データベースに問い合わせて、ローカルデータベースシーケンスＩＤをローカルの読み取り専用データベースから取得することを更に含む。更に他の実施形態において、ローカルの読み取り専用データベースからデータを読み取ることは、ＵＩアプリケーションサーバのデータベースマネージャにデータ読み取り要求を送信することを含み、データベースマネージャによって、ローカルの読み取り専用データベースに問い合わせて、データ読み取り要求に対応するデータをローカルの読み取り専用データベースから取得することを更に含む。
【００１１】
いくつかの実施形態では、方法は、ＵＩアプリケーションマネージャによって、１つ以上のメッセージを、ＵＩアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスのうちのあるエンドポイントデバイスから受信することと、ＵＩアプリケーションマネージャによって、ユーザインターフェースのデータを、受信したメッセージの機能としてレンダリングすることと、を更に含む。いくつかの実施形態では、メッセージを受信することは、メッセージを、複数のＵＩアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスから受信することを含み、ロードバランシングデバイスは、複数のエンドポイントデバイスのそれぞれに、ネットワークを介して、更に通信可能に連結されている。加えて、いくつかの実施形態では、メッセージをエンドポイントデバイスから受信することは、ユーザセッション中にＵＩアプリケーションサーバにあるそのエンドポイントデバイスから全てのメッセージを受信することを含む。
【００１２】
いくつかの実施形態では、方法は、ＵＩアプリケーションによって、かつローカルの読み取り専用データベースからのデータの読み取りが失敗したとの表示を受信した後に、その表示を受信してから閾値持続時間が経過したかを判定することと、ＵＩアプリケーションマネージャによって、かつ閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、を更に含む。加えて、いくつかの実施形態では、方法は、ＵＩアプリケーションマネージャによって、かつローカルの読み取り専用データベースのデータの読み取りが失敗したとの表示を受信した後に、マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信することを含み、データ読み取り要求は、マスターデータベースマネージャによって、マスターデータベースにデータ読み取り要求に関連付けられたデータをローカルの読み取り専用データベースから取得して、マスターデータベースから適用可能なデータを取得するように問い合わせるために使用可能である。
【００１３】
更に別の態様では、複数の指示をその中に記憶する１つ以上のコンピュータ読み取り可能記憶媒体であって、複数の指示は実行されると、ユーザインターフェース（ＵＩ）バックエンドクラスタの複数のＵＩアプリケーションサーバのうちのあるＵＩアプリケーションサーバに、ＵＩアプリケーションサーバのＵＩアプリケーションマネージャによってデータ読み取り動作を実行させることを含み、データ読み取り動作は、現在のユーザセッションに関連付けられたセッションシーケンスＩＤを取得することであって、セッションシーケンスＩＤは、ＵＩバックエンドクラスタのマスターデータベースサーバのマスターデータベースマネージャから、現在のユーザセッション中のマスターデータベースサーバのマスターデータベースへのデータの直近の書き込み動作中に受信された第１のマスターデータベースシーケンスＩＤに対応する、ことと、セッションシーケンスＩＤが空でないとの判定に応じて、ローカルデータベースシーケンスＩＤをＵＩアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースから読み取ることであって、ローカルデータベースシーケンスＩＤは、マスターデータベースマネージャから、マスターデータベースのローカルの読み取り専用データベースへの直近の非同期レプリケーション中に受信した第２のマスターデータベースシーケンスＩＤに対応し、ローカルの読み取り専用データベースはマスターデータベースの非同期レプリケーションされたコピーを含む、ことと、セッションシーケンスＩＤがローカルデータベースシーケンスＩＤ以下であるかどうかを判定することと、セッションシーケンスＩＤがローカルデータベースシーケンスＩＤ以下であるとの判定の後に、ローカルの読み取り専用データベースからデータを読み取ることと、を含む。
【００１４】
いくつかの実施形態では、データ読み取り動作を実行することは、セッションシーケンスＩＤが空であるとの判定に応じて、データをローカルの読み取り専用データベースから読み取ることを更に含む。他の実施形態では、ローカルデータベースシーケンスＩＤを、ＵＩアプリケーションマネージャと関連付けられたローカルの読み取り専用データベースから読み取ることは、（ｉ）ＵＩアプリケーションマネージャによって、データ読み取り要求をＵＩアプリケーションサーバのデータベースマネージャに送信することと、（ｉｉ）ＵＩアプリケーションサーバのデータベースマネージャによってローカルの読み取り専用データベースに問い合わせて、ローカルの読み取り専用データベースからローカルデータベースシーケンスＩＤを取得することと、を含む。更に他の実施形態において、ローカルの読み取り専用データベースからデータを読み取ることは、（ｉ）ＵＩアプリケーションマネージャによって、ＵＩアプリケーションサーバのデータベースマネージャにデータ読み取り要求を送信することと、（ｉｉ）ＵＩアプリケーションサーバのデータベースマネージャによってローカルの読み取り専用データベースに問い合わせて、ローカルの読み取り専用データベースからデータ読み取り要求に対応するデータを取得することと、を含む。
【００１５】
いくつかの実施形態では、複数の指示は、ＵＩアプリケーションサーバに、ＵＩアプリケーションマネージャによって、ＵＩアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスから１つ以上のメッセージを受信することと、ＵＩアプリケーションマネージャによって、ユーザインターフェースのデータを受信したメッセージの機能としてレンダリングすることと、を更にさせる。加えて、いくつかの実施形態では、メッセージを受信することは、複数のＵＩアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスからメッセージを受信することを含み、ロードバランシングデバイスは、複数のエンドポイントデバイスのそれぞれにネットワークを介して通信可能に更に連結されている。
【００１６】
いくつかの実施形態では、複数の指示は、ＵＩアプリケーションサーバに、ＵＩアプリケーションマネージャによって、かつローカルの読み取り専用データベースからのデータの読み取りが失敗したとの表示を受信した後に、表示を受信してから閾値持続時間が経過したかどうかを判定することと、ＵＩアプリケーションマネージャによって、かつ閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、を更にさせる。加えて、いくつかの実施形態では、複数の指示は、ＵＩアプリケーションサーバに、ＵＩアプリケーションマネージャによって、かつローカルの読み取り専用データベースからのデータの読み取りが失敗したとの表示を受信した後に、マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信することを更にさせ、データ読み取り要求は、マスターデータベースマネージャによって、マスターデータベースに問い合わせて、データ読み取り要求に関連付けられたデータをローカルの読み取り専用データベースから読み取って、マスターデータベースから適用可能なデータを取得するために使用可能である。
【図面の簡単な説明】
【００１７】
本明細書に含まれる実施形態及び他の特徴、利点及び開示、並びにそれらを達成する態様、及び本開示は、以下の本開示の様々な例示的な実施形態の説明を添付図面と併せて参照することで明らかとなり、より理解できる。
【００１８】
【図１】図１は、複数のユーザインターフェース（ＵＩ）アプリケーションサーバにネットワークを介して通信可能に連結された、それぞれがマスターデータベースサーバに通信可能に連結された１つ以上のエンドポイントデバイスを備える、データベースバウンドアプリケーション用にＵＩバックエンドクラスタをスケーリングするためのＵＩバックエンドクラスタシステムの例示的実施形態のブロック図である。
【図２】図２は、図１のＵＩバックエンドクラスタシステムのサーバのうちの１つの例示的実施形態のブロック図である。
【図３】図３は、図１のＵＩバックエンドクラスタシステムのマスターデータベースサーバによって実行され得るデータ変更要求に対応するための例示的実施形態の概略フロー図である。
【図４】図４は、図１のＵＩバックエンドクラスタシステムのＵＩアプリケーションサーバのうちの１つによって実行され得るデータ読み取り動作を実行する例示的な方法の概略フロー図である。
【発明を実施するための形態】
【００１９】
本開示の原則の理解を促進する目的で、図面で示される実施形態を参照し、それを説明するために具体的な表現を使用する。それでもなお、これによってこの開示の範囲を限定する意図がないことが理解されよう。
【００２０】
図１は、データベースバウンドアプリケーションについてＵＩバックエンドクラスタをスケーリングするためのユーザインターフェース（ＵＩ）バックエンドクラスタシステム１００を図示する。ＵＩバックエンドクラスタシステム１００は、１つ以上のエンドポイントデバイス１０２と、複数のＵＩアプリケーションサーバ１２０及びマスターデータベースサーバ１３０を含む、複数のサーバ１１０とを含む。図示するＵＩバックエンドクラスタシステム１００では、１つ以上のエンドポイントデバイス１０２はネットワーク１０６を介してロードバランシングデバイス１０８に通信可能に連結されており、ロードバランシングデバイス１０８はＵＩアプリケーションサーバ１２０のそれぞれに通信可能に連結されている（例えば、ＵＩアプリケーションサーバ（１）１１２及びＵＩアプリケーションサーバ（Ｎ）１２２を参照のこと）。加えて、ＵＩアプリケーションサーバ１２０のそれぞれ、又はより具体的にはそれらのＵＩアプリケーションマネージャ（例えば、ＵＩアプリケーションマネージャ１１４及びＵＩアプリケーションマネージャ１２４を参照のこと）は、マスターデータベースサーバ１３０、又はより具体的にはマスターデータベースサーバ１３０のマスターデータベースマネージャ１３２に通信可能に連結される。マスターデータベースサーバ１３０は、マスターデータベースマネージャ１３２によって管理されるマスターデータベース１３４を含む。
【００２１】
ＵＩアプリケーションマネージャ―はそれぞれ、データベースマネージャ（例えば、データベースマネージャ１１６及びデータベースマネージャ１２６を参照のこと）を介して読み取り専用のローカルのデータベース（例えば、読み取り専用データベース１１８及び読み取り専用データベース１２８を参照）に通信可能に連結されており、データベースマネージャは、それぞれの読み取り専用のローカルデータベースのデータを管理する（すなわち、読み取る、書き込む、挿入する、削除する、など）ように構成されている。読み取り専用のローカルデータベースはそれぞれ、マスターデータベース１３４の読み取り専用、非同期コピーを記憶するように構成されている。加えて、マスターデータベースマネージャ１３２は、それぞれのＵＩアプリケーションサーバ１２０のデータベースマネージャを介して読み取り専用のローカルのデータベースインスタンスそれぞれと、（例えば、マスターデータベース１３４上で実行されたデータ書き込み動作の後に）マスターデータベース１３４の非同期コピーを実行するように構成されている。
【００２２】
非同期コピーを実行する際、その当時のバージョンに対応するグローバル一意シーケンス識別子の値（すなわち、マスターデータベースシーケンスＩＤ）が、対応する読み取り専用のローカルデータベースにローカルデータベースシーケンスＩＤとして記憶される。言い換えると、それぞれの読み取り専用のローカルデータベースに記憶されたローカルデータベースシーケンスＩＤは、再生時に対応する読み取り専用のローカルデータベース用のマスターデータベース１３４のバージョンを示す。したがって、以下に詳細に記載するように、ローカルデータベースシーケンスＩＤは、読み取り専用のローカルデータベースのデータがマスターデータベース１３４の最新のコピーを表すかどうかを見分けるために使用可能である。
【００２３】
例示的な例では、エンドポイントデバイス１０２のうちの１つで実行されているクライアントアプリケーション１０４は、ＵＩベースの要求を、ＵＩアプリケーションサーバ１２０のうちの１つで実行されているＵＩアプリケーションマネージャに、ユーザセッション中に送信する。以下にて更に詳しく説明するように、ＵＩ要求は、受信したＵＩアプリケーションマネージャによって処理（例えば、受信、解析、分析など）され、この時点でＵＩアプリケーションマネージャは１つ以上のデータ読み取り動作（例えば、データベースからデータを要求する）又はデータ書き込み動作（例えば、データベースにデータを書き込む）を結果として開始させてもよい。前に説明したように、それぞれのＵＩアプリケーションサーバ１２０のローカルデータベースは、最後に非同期レプリケーションが実行された時の、マスターデータベース１３４のデータの読み取り専用コピーである。したがって、任意の書き込み動作はマスターデータベース１３４上で実行される一方で、データ読み取り動作はそれぞれの読み取り専用のローカルデータベース又はマスターデータベース１３４のいずれかで実行され得る。
【００２４】
データ書き込み動作については、ＵＩアプリケーションマネージャがマスターデータベースマネージャ１３２にデータ変更要求を送信する。図３にて以下に更に記載するように、マスターデータベースマネージャ１３２はデータ変更要求を受信し、データ変更要求に関連付けられているマスターデータベース１３４内のデータを変更する。加えて、マスターデータベースマネージャ１３２は、マスターデータベースシーケンスＩＤを、データ変更要求が送信されたＵＩアプリケーションサーバ１２０に関連付けられたＵＩアプリケーションマネージャに送信する。受信後、ＵＩアプリケーションマネージャはセッションシーケンスＩＤ（すなわち、現在のユーザセッションに対応する）を、受信したマスターシーケンスＩＤに設定する。
【００２５】
データ読み取り動作については、データ読み取り動作を開始させるＵＩアプリケーションマネージャは、最初にどのデータベースからデータを問い合わせるべきかを決定しなければならない。そのために、図４にて更に記載するように、ＵＩアプリケーションマネージャは、読み取り専用のローカルデータベースに記憶されているデータが現在のものかを判定する。読み取るデータが現在のものであるかどうかを判定するには、ＵＩアプリケーションマネージャは、ユーザセッションがセッションシーケンスＩＤ（例えば、前の書き込み動作から）を有しているかを確認する。ユーザセッションがセッションシーケンスＩＤを有さない場合、データは読み取り専用のローカルデータベースから要求されており、それとは異なり、ユーザセッションがセッションシーケンスＩＤを有する場合、ＵＩアプリケーションマネージャはセッションシーケンスＩＤをローカルのデータベースシーケンスＩＤと比較して、データをローカルの読み取り専用データベースから読み取るか、ローカルの読み取り専用データベースが非同期レプリケーションされるまで待つか、マスターデータベース１３４からデータを読み取るかを決定する。したがって、ローカルの読み取り専用データベースとそれぞれのシーケンスＩＤ（例えば、マスターデータベースシーケンスＩＤ、ローカルデータベースシーケンスＩＤ、及びセッションシーケンスＩＤ）に関するマスターデータベース１３４の階層構造は、かかるＵＩバックエンドクラスタがスケーリングされることを可能にする。
【００２６】
１つ以上のエンドポイントデバイス１０２は、本明細書に記載される、ＵＩバックエンドクラスタシステム１００のＵＩアプリケーションサーバ１２０とネットワーク（例えば、ネットワーク１０６）を介して通信することを含む機能を実行することができる任意のタイプのコンピューティングデバイスとして実装されてもよい。したがって、１つ以上のエンドポイントデバイス１０２は、非限定的に、デスクトップコンピュータ、モバイルコンピューティングデバイス、インターネット接続機器、インターネット接続テレビ、又は任意の他のタイプの「スマート」若しくは別の方法でのインターネット接続デバイスを含むことができる。エンドポイントデバイス１０２がモバイルコンピューティングデバイスとして実装されるこのような実施形態では、エンドポイントデバイス１０２は、モバイル特有のハードウェア及びソフトウェアコンポーネントを、スマートフォン、ウェアラブル機器（例えば、スマートウォッチ、スマートグラスなど）、タブレット、ラップトップなどのモバイルアーキテクチャ上でサービス及びアプリケーションを動作、実行、及び提供するために使用する任意のタイプの携帯型コンピューティングデバイスとして実装されてもよいように理解されたい。
【００２７】
クライアントアプリケーション１０４は、クライアント−サーバアーキテクチャにおけるＵＩアプリケーションサーバ１２０のＵＩアプリケーションマネージャと通信するように構成される任意のタイプのネットワークベースのソフトウェアアプリケーションとして実装されてもよい。言い換えると、スタンドアローンアプリケーション、すなわちシッククライアントとは対照的に、クライアントアプリケーション１０４は、サーバベースのアプリケーション（例えば、クラウドベースのウェブサーバ）とネットワーク（例えば、ネットワーク１０６）を介して通信するように構成されて、そこに接続されるエンドポイントデバイス１０２のユーザにサービスを届けようと、シンクライアント（例えば、ウェブブラウザ、電子メールクライアントなど）として実装される。言い換えると、クライアントアプリケーション１０４は実装されなくてもよい。いくつかの実施形態では、本明細書内に使用されるユーザとは、人（すなわち、人間のユーザ）又はエンドポイントデバイス１０２自体を指すことができるように理解されたい。
【００２８】
ネットワーク１０６は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、グローバルネットワーク（インターネット）などを含む、任意のタイプの有線及び／又は無線ネットワークとして実装されてもよい。したがって、ネットワーク１０６は、一連の有線及び／又は無線のインターコネクト器を介してネットワーク通信トラフィックの流れ及び／又は処理を促進するために通信可能に連結された１つ以上のネットワークコンピューティングデバイス（図示せず）を含むことができる。このようなネットワークコンピューティングデバイスには、非限定的に、１つ以上のアクセスポイント、ルータ、スイッチ、サーバ、コンピュートデバイス、記憶デバイスなどを含むことができる。
【００２９】
例えば、このようなネットワークコンピューティングデバイスの１つ以上は、エンドポイントデバイス１０２の１つ以上を、ネットワーク１０６に、有線（例えば、イーサネット（登録商標）、トークンリングなど）及び／又は無線（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、無線ブロードバンド、ＺｉｇＢｅｅ（登録商標）など）の通信技術並びに関連するプロトコルを用いたＬＡＮ構成にて連結するように構成されてもよい。  例を補うと、ＬＡＮは１つ以上のより大きなエリアネットワーク（例えば、ＷＡＮ、メトロポリタンエリアネットワーク、（ＭＡＮ）、インターネットなど）に、ネットワーク１０６の追加のネットワークコンピューティングデバイスを介して（例えば、同軸ケーブル、モバイル電話通信、光ファイバーケーブルなどを介して）連結されてもよい。
【００３０】
ロードバランシングデバイス１０８は、リバースプロキシとして動作する、いくつかのサーバ（例えば、ＵＩアプリケーションサーバ１２０）にわたってネットワーク及び／又はアプリケーショントラフィックを分配することを含む、本明細書に記載される機能を実行するように構成されている、任意のソフトウェア、ハードウェア、ファームウェア、及び回路を含む、任意のタイプのロードバランサデバイスとして実装されてもよい。例えば、いくつかの実施形態では、ロードバランシングデバイス１０８はスティッキーセッションをサポートして、読み取りの一貫性を得るために、ユーザセッション中にエンドポイントデバイス１０２のうちの特定の１つから受信された全ての要求がＵＩアプリケーションサーバ１２０の同一のものに送られるように経路を定めてもよい。ロードバランシングデバイス１０８が単一のデバイスとして図示されている一方で、ロードバランシング動作は、冗長性を通じて信頼性及び可用性を向上させるために、２つ以上のロードバランシングデバイス１０８によって実行されてもよいように理解されたい。
【００３１】
サーバ１１０のそれぞれ（すなわち、ＵＩアプリケーションサーバ１２０及びマスターデータベースサーバ１３０）は、本明細書に記載の機能を実行することができる任意のタイプのコンピュート及び／又は記憶装置として実装されてもよい。ここで図２を参照すると、１つ以上のＵＩアプリケーションサーバ１２０及びマスターデータベースサーバ１３０を表すサーバ１１０の例示的実施形態を示している。例示的なサーバ１１０は、中央処理装置（ＣＰＵ）２００、入出力（Ｉ／Ｏ）コントローラ２０２、メモリ２０４、ネットワーク通信回路２０６、及びデータ記憶装置２１０、並びに、いくつかの実施形態では、１つ以上のＩ／Ｏ周辺機器２０８を備えている。代替の実施形態では、画像処理装置（ＧＰＵ）など、例示的なサーバ１１０の構成要素に対して追加の、より少ない、及び／又は代替的な構成要素を含んでもよいように理解されたい。例示的な構成要素の１つ以上が、単一の集積回路（ＩＣ）上に単一のシステムオンアチップ（system-on-a-chip、ＳｏＣ）上に組み合わされてもよいように、追加で理解されたい。
【００３２】
ＣＰＵ２００、すなわちプロセッサは、データを処理することができる任意のタイプのハードウェア又は回路の組み合わせとして実装されてもよい。したがって、ＣＰＵ２００は、単一コアプロセッサアーキテクチャにおいて１つのプロセッシングコア（図示せず）を、又はマルチコアプロセッサアーキテクチャにおいて複数のプロセッシングコアを含んでもよい。プロセッシングコアの数にかかわらず、ＣＰＵはプログラムの指示の読み取り及び実行が可能である。いくつかの実施形態では、ＣＰＵ２００は、ＣＰＵ２００と直接一体化され得る、又はＣＰＵ２００とは別のインターコネクト器で別のチップ上に載置される、キャッシュメモリ（図示せず）を含んでもよい。いくつかの実施形態では、ソフトウェア及び／ハードウェア動作（例えば、ネットワークトラフィック処理動作）を実行するために、ＣＰＵ２００に発行される又はＣＰＵ２００から発行されるコマンドではなく、パイプラインロジックを使用してもよいように理解されたい。
【００３３】
Ｉ／Ｏコントローラ２０２、すなわちＩ／Ｏインターフェースは、入出力デバイスとサーバ１１０との間をインターフェースで接続することができる任意のタイプのコンピュータハードウェア又は回路の組み合わせとして実装されてもよい。例示的に、Ｉ／Ｏコントローラ２０２はＣＰＵ２００から入出力要求を受信するように、かつそれぞれの入出力デバイスに制御信号を送信するように構成されており、それによってサーバ１１０への、及びサーバ１１０からのデータフローを管理する。
【００３４】
メモリ２０４は、処理用のデータ及び指示を保持することができる任意のタイプのコンピュータハードウェア又は回路の組み合わせとして実装され得る。このようなメモリ２０４は、メイン又はプライマリメモリと呼ばれ得る。いくつかの実施形態では、サーバ１１０の１つ以上の構成要素は、特定のデータがＣＰＵ２００とは独立してダイレクトメモリアクセス（ＤＭＡ）を介して記憶され得るよう、メモリへのダイレクトなアクセスを有することができることを理解されたい。
【００３５】
ネットワーク通信回路２０６は、無線及び／又は有線の通信モードを介してネットワークインターフェース通信（例えば、メッセージ、データグラム、パケットなど）を管理することができる任意のタイプのコンピュータハードウェア又は回路の組み合わせとして実装されてもよい。したがって、いくつかの実施形態では、ネットワーク通信回路２０６は、サーバ１１０をコンピュータネットワーク（例えば、ネットワーク１０６）に接続するように構成可能なネットワークインターフェースコントローラ（ＮＩＣ）、並びにＵＩバックエンドクラスタシステム１００の他のデバイス（例えば、ロードバランシングデバイス１０８、ＵＩアプリケーションサーバ１２０、マスターデータベースサーバなど）を含むことができる。
【００３６】
１つ以上のＩ／Ｏ周辺機器２０８は、コンピューティングデバイス１０２と接続かつ通信するように構成された任意の補助デバイスとして実装されてもよい。例えば、Ｉ／Ｏ周辺機器２０８は、非限定的に、マウス、キーボード、モニタ、タッチスクリーン、プリンタ、スキャナ、マイク、スピーカーなどを含み得る。したがって、いくつかのＩ／Ｏデバイスは１つの機能（すなわち、入力若しくは出力）、又は両方の機能（すなわち、入力及び出力）を行うことができるように理解されたい。
【００３７】
いくつかの実施形態では、Ｉ／Ｏ周辺機器２０８は、サーバ１１０に、サーバ１１０のケーブル（例えば、リボンケーブル、ワイヤ、ユニバーサルシリアルバス（ＵＳＢ）ケーブル、高精細度マルチメディアインターフェース（ＨＤＭＩ（登録商標））ケーブルなど）を介して接続され得る。このような実施形態では、ケーブルはサーバ１１０の対応するポート（図示せず）に接続され、それらの間で行われる通信はＩ／Ｏコントローラ２０２によって管理することができる。代替的な実施形態では、Ｉ／Ｏ周辺機器２０８は、ネットワーク通信回路２０６によって管理することができる無線モードの通信（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）など）を介してサーバ１１０に接続されてもよい。
【００３８】
データ記憶装置２１０は、データの不揮発性記憶が可能なコンピュータハードウェアの任意のタイプ（例えば、半導体記憶媒体、磁気記憶媒体、光学記憶媒体など）として実装され得る。このようなデータ記憶装置２１０は、補助又は二次記憶として一般的に呼ばれ、典型的には上述のメモリ２０４に関する大量のデータを記憶するために使用される。
【００３９】
それぞれのサーバ１１０の構成要素のタイプは、それぞれのサーバ１１０のタイプ及び意図する用途に基づかせることができることを理解されたい。例えば、マスターデータベースサーバ１３０は、ＵＩアプリケーションサーバ１２０のコンピュート容量に対してより少ないコンピュート容量を有するデータベースサーバとして構成されてもよい。同様に、ＵＩアプリケーションサーバ１２０は、マスターデータベースサーバ１３０のコンピュート容量に対してより多くのコンピュート容量を有するアプリケーションサーバとして構成されてもよい。
【００４０】
再び図１を参照して、１つ以上のエンドポイントデバイス１０２のそれぞれ、及びロードバランシングデバイス１０８が、図２の例示的なサーバ１１０のものと同様の構成要素を含み得ることを理解されたい。したがって、そのような同様の構成要素は、説明の分かりやすさを維持するためにここでは説明しない。更に、いくつかの実施形態では、１つ以上のエンドポイントデバイス１０２のそれぞれ、及びロードバランシングデバイス１０８は、図２の例示的なサーバ１１０のものに対して追加の又はより少ない構成要素を含み得ることをも理解されたい。
【００４１】
ＵＩアプリケーションサーバ１２０を再び参照して、いくつかの実施形態では、ＵＩアプリケーションサーバ１２０はクラスタ内に設計されてもよく、ユーザの数（例えば、エンドポイントデバイス１０２）及び／又は必要な性能測定基準（例えば、クオリティオブサービス）にしたがって水平にスケーリングされ得る。図１の例示的なＵＩアプリケーションサーバ１２０は、ＵＩアプリケーションサーバ（１）１１２と表す第１のＵＩアプリケーションサーバと、ＵＩアプリケーションサーバ（Ｎ）１２２と表す第ＮのＵＩアプリケーションサーバとを含む。第ＮのＵＩアプリケーションサーバ（すなわち、ＵＩアプリケーションサーバ（Ｎ）１２２）は「Ｎ」個の追加のＵＩアプリケーションサーバ１２０を表し、「Ｎ」は正の整数の値であることを理解されたい。例示的なＵＩアプリケーションサーバ（１）１１２は、ＵＩアプリケーションマネージャ１１４、データベースマネージャ１１６、及びＵＩアプリケーションサーバ（１）１１２にローカルな読み取り専用データベース１１８を含む。同様に、例示的なＵＩアプリケーションサーバ（Ｎ）１２２は、ＵＩアプリケーションマネージャ１２４、データベースマネージャ１２６、及びＵＩアプリケーションサーバ（２）１２２にローカルな読み取り専用データベース１２８を含む。
【００４２】
ＵＩアプリケーションサーバ１１２、１２２は、本明細書に記載される機能を実行することができるソフトウェア、ハードウェア、ファームウェア、及び回路の任意の組み合わせとして実装されてもよい。このような機能には、エンドポイントデバイス１０２のクライアントアプリケーション１０４（例えば、ネットワーク１０６上でロードバランシングデバイス１０８を介して）、読み取り専用データベース１１８、１２８（例えば、それぞれのデータベースマネージャ１１６、１２６を介して）、及びマスターデータベースサーバ１３０のマスターデータベースマネージャ１３２（例えば、それぞれのデータベースマネージャ１１６、１２６を介して）とインターフェースで接続することが含まれる。ＵＩアプリケーションマネージャ１１４、１２４のそれぞれは、データをレンダリングし、レンダリングされたデータを管理するＵＩを提供するように構成される。ＵＩアプリケーションサーバ１１２、１２２のデータベースマネージャ１１６、１２６のそれぞれは、ＵＩアプリケーションマネージャ１１４、１２４によって、エンドポイントデバイス１０２のクライアントアプリケーション１０４から受信された要求に応じて開始され得るように、開始された読み取り動作を管理するように構成されている。
【００４３】
特定の条件下で、ＵＩアプリケーションマネージャのうちの１つ（例えば、ＵＩアプリケーションマネージャ１１４）によって開始された、いくつかの読み取り動作は、ＵＩアプリケーションマネージャのうちの他のものの読み取り専用データベースからデータを読み取ろうとするために、ＵＩアプリケーションマネージャの別のもの（例えば、ＵＩアプリケーションマネージャ１２４）に送信され得ることを理解されたい。  例えば、ＵＩアプリケーションマネージャ１１４は、ＵＩアプリケーションマネージャ１２４の読み取り専用データベースからデータを読み取ろうとするために、ＵＩアプリケーションマネージャ１２４にデータ読み取り要求を送信してもよい。更に、いくつかの実施形態では、読み取り専用データベース（すなわち、読み取り専用データベース１１８及び読み取り専用データベース１２８）はそれぞれのＵＩアプリケーションサーバ１２０に対してローカルではないが、近接する中では最も近い、又はＵＩアプリケーションサーバ１２０と読み取り専用データベースが記憶されているサーバ１１０との間のインターコネクト器に関連するコストが最も低い場合があることを理解されたい。
【００４４】
例えば、このような実施形態では、ＵＩアプリケーションサーバ１２０はコンピュート動作を扱うアプリケーションサーバと、読み取り専用データベースを管理する記憶サーバとを備えてもよい。このような実施形態では、アプリケーションサーバ及び記憶サーバの組み合わせは、同一サーバ１１０に収容されていないが、本明細書に提示される機能を説明する目的でＵＩアプリケーションサーバ１２０を包含するように意図される。それぞれの読み取り専用データベースの、それを管理するＵＩアプリケーションマネージャとの近接さとは関係なく、読み取り専用データベースは、データ取得時間を最小限にするために、できるだけＵＩアプリケーションマネージャに近くあるべきと理解されたい。いくつかの実施形態では、読み取り専用データベースは、性能及び再配分に対する影響を低減するために、単一データベースのハードウェアリソースとは異なるものにホストされてもよい。
【００４５】
マスターデータベースサーバ１３０は、ＵＩアプリケーションサーバ１２０（例えば、ＵＩアプリケーションサーバ１１２、１２２）のＵＩアプリケーションマネージャ（例えば、ＵＩアプリケーションマネージャ１１４、１２４）とインターフェースで接続すること、及びマスターデータベース１３４を管理することを含む、本明細書内に記載される機能を実行することができる、ソフトウェア、ハードウェア、ファームウェア、及び回路の任意の組み合わせとして実装されてもよい。マスターデータベース１３４を管理するには、例示的なマスターデータベースサーバ１３０は、マスターデータベース１３４のコンテンツの読み取り、挿入、削除、及び更新を行うために、マスターデータベース１３４上で読み取り／書き込み動作を実行するように構成されたマスターデータベースマネージャ１３２を含む。マスターデータベースマネージャ１３２は、マスターデータベース１３４の変更されたデータをマスターデータベース１３４の非同期コピー（すなわち、読み取り専用データベース１１８、１２８）に非同期レプリケーションを実行するように更に構成されている。  読み取り専用データベース１１８、１２８は、マスターデータベース１３４の読み取り専用の非同期コピーであることを理解されたい。したがって、読み取り専用データベース１１８、１２８は、マスターデータベース１３４と同じデータベースのスキーマに固執すべきである。
【００４６】
マスターデータベースマネージャ１３２は、マスターデータベースシーケンスＩＤを生成／更新し（すなわち、データ変更動作が実行された後に）、マスターデータベースシーケンスＩＤをＵＩアプリケーションサーバ（単数又は複数）１２０に送信するように、付加的に構成されている。したがって、前に記載したように、マスターデータベースシーケンスＩＤは、ローカルの読み取り専用データベースのデータが現状のものか古いものかを識別するのに使用することができる。マスターデータベースシーケンスＩＤは、規則的なシーケンスに関するデータベーススキーマ又は当業者に公知の任意の他の論理に基づいて、マスターデータベースマネージャ１３２によって生成されてもよく、前のマスターデータベースシーケンスＩＤの増分された値に基づいて更新されてもよい。生成／更新プロセスにかかわらず、生成されたマスターデータベースシーケンスＩＤはＵＩバックエンドクラスタシステム１００のライフサイクルにわたって独自であるべきであり、生成スキーマはスレッドセーフであるべきである。言い換えると、（例えば、２つの異なる、並行するデータ変更要求の機能として実行される）異なるデータの変更は、同一のマスターデータベースシーケンスＩＤを割り当てることができないようにしてあるべきである。
【００４７】
ここで図３を参照すると、マスターデータベースサーバ（例えば、図１のマスターデータベースサーバ１３０）、又はより具体的にはマスターデータベースサーバ１３０のマスターデータベースマネージャ（例えば、図１のマスターデータベースマネージャ１３２）によって実行され得るデータ変更要求（すなわち、受信されたデータ書き込み要求）を扱うための例示的な方法３００が提供されている。方法３００はブロック３０２から始まり、そこでマスターデータベースサーバ１３０は、ＵＩアプリケーションサーバ（例えば、図１のＵＩアプリケーションサーバ１２０のうちの１つ）からデータ変更要求が受信されたかどうかを判定する。
【００４８】
前に記載したように、データ変更要求は、ＵＩアプリケーションサーバ１２０のうちの対応する１つで明示的に実行されているＵＩアプリケーションマネージャ（例えば、ＵＩアプリケーションマネージャ１１４、ＵＩアプリケーションマネージャ１２４など）から受信されてもよい。データ変更要求は、マスターデータベースサーバ１３０によって（例えば、マスターデータベースマネージャ１３２を経由して）、マスターデータベースサーバ１３０のマスターデータベース（例えば、マスターデータベース１３４）に記憶されたデータを変更する（例えば、挿入、削除、更新するなどの）ために使用可能な任意のタイプのメッセージであってもよい。したがって、データ変更要求は、変更されるデータを識別するために使用可能な任意の情報を含む。
【００４９】
ブロック３０４では、マスターデータベースサーバ１３０は、ブロック３０２で受信されたデータ変更要求に関連付けられたデータを変更する。加えて、データ変更動作中に、ブロック３０６では、マスターデータベースサーバ１３０はマスターデータベースシーケンスＩＤを更新する。前に記載したように、マスターデータベースシーケンスＩＤは、マスターデータベースマネージャ１３２によって、規則的なシーケンスに関するデータベーススキーマ又は当業者に知られる任意の他の論理に基づいて、生成されてもよい。例えば、マスターデータベースサーバ１３０は、マスターデータベースシーケンスＩＤの値を１だけ増分させることで更新するように構成されてもよい。同様に前に記載したように、生成プロセスにかかわりなく、生成されたマスターデータベースシーケンスＩＤはＵＩバックエンドクラスタシステム１００のライフサイクルにわたって独自であるべきであり、生成スキーマはスレッドセーフであるべきである。
【００５０】
ブロック３０８では、マスターデータベースサーバ１３０は、要求しているＵＩアプリケーションサーバ（すなわち、ブロック３０２でデータ変更要求が受信された送信元のＵＩアプリケーションサーバ１２０のうちの１つ）に、ブロック３０６で更新されたマスターデータベースシーケンスＩＤを含むメッセージを送信する。いくつかの実施形態では、ブロック３１０では、マスターデータベース１３０はメッセージとともにデータ変更の状態（すなわち、データ変更動作状態）を送信する。例えば、データ変更動作状態は、変更が成功したか失敗したかの表示を提供してもよい。
【００５１】
ブロック３１２では、マスターデータベースサーバ１３０は、レプリケートされた読み取り専用データベース（例えば、読み取り専用データベース１１８、読み取り専用データベース１２８など）の全てで、マスターデータベース１３４の非同期レプリケーションを実行する。そうするには、マスターデータベースマネージャ１３２は、データベースマネージャのそれぞれ（例えば、データベースマネージャ１１６、データベースマネージャ１２６など）と通信するように構成される。それぞれの非同期レプリケーションを実行する際、プロック３１４では、マスターデータベースサーバ１３０が、非同期レプリケーションの結果として、ローカルの読み取り専用データベースそれぞれにおいて、更新されたマスターデータベースシーケンスＩＤに（例えば、ローカルの読み取り専用データベース及びマスターデータベース１３４のフィールドに）ローカルデータベースシーケンスＩＤ値を設定するように理解されたい。言い換えると、ブロック３０６でマスターデータベースマネージャー１３２によって更新されたマスターデータベースシーケンスＩＤを含むマスターデータベース１３４内のフィールドが、非同期レプリケーションが実行されたことによる副産物としてそれぞれのローカルの読み取り専用データベースにて利用可能になっている。 
【００５２】
データフィールド（すなわち、マスターデータベースシーケンスＩＤに対応するデータフィールド）が変更されたことを検出した後（例えば、非同期レプリケーションの完了後）、対応するＵＩアプリケーションサーバ１２０はそれぞれ、セッションシーケンスＩＤを受信したマスターデータベースシーケンスＩＤに等しく設定することで、マスターデータベースシーケンスＩＤをユーザセッションとセットにするか別途関連させるように構成される。したがって、非同期レプリケーションは、最小量のレイテンシが導入される様態で実行されるべきである（例えば、ユーザ要求及び／又は期待を満足させようとするため）。読み取り動作は、非同期レプリケーションが未完了の状態でローカルの読み取り専用データベース上で実行され得ることを理解されたい。言い換えると、データは、マスターデータベース１３４の最新データを表さないマスターデータベース１３４のバージョンからのデータに対応するデータを含むローカルの読み取り専用データベースから読み取られてもよい。
【００５３】
前に記載するように、ロードバランシングデバイス１０８はスティッキーセッションをサポートするように構成され得る。このような実施形態では、ロードバランシングデバイス１０８は、ユーザセッション中にエンドポイントデバイス１０２のうちの特定の１つから受信された要求を全て、同一のＵＩアプリケーションサーバ１２０にルート付けすることができる。あるいは、別の実施形態では、ＵＩアプリケーションマネージャは、ロードバランシングデバイス１０８ではなく、ユーザセッションを管理するように構成することができる。このような実施形態では、ＵＩアプリケーションマネージャは、それぞれのユーザセッションを、関連付けられたセッションシーケンスＩＤを有して作成するように構成して、ＵＩアプリケーションマネージャがユーザセッションを管理するように構成できるよう構成してもよい。
【００５４】
ここで図４を参照すると、ＵＩアプリケーションサーバ（例えば、図１のＵＩアプリケーションサーバ１２０のうちの１つ）によって、又はより具体的にはＵＩアプリケーションサーバ１２０のうちの１つのＵＩアプリケーションマネージャ（例えば、ＵＩアプリケーションマネージャ１１４、ＵＩアプリケーションマネージャ１２４など）によって実行され得るデータ読み取り動作を実行するために、例示的な方法４００が提供されている。方法４００はブロック４０２から始まり、そこではＵＩアプリケーションマネージャがデータ読み取り動作を実行するかどうかを判断する。データ読み取り動作は、例えば、
ＵＩアプリケーションマネージャによってユーザインターフェースをレンダリングするのに必要であり得る、エンドポイントデバイス（例えば、 図１のエンドポイントデバイス１０２のうちの１つ）から受信されたＵＩ要求に応じて実行されてもよい。
【００５５】
データ読み取り動作が実行される場合、方法４００はブロック４０４に進み、そこでＵＩアプリケーションマネージャはセッションシーケンスＩＤを取得する。以前に記載したように、セッションシーケンスＩＤは、ＵＩアプリケーションマネージャによって開始された、マスターデータベースサーバ（例えば、図１のマスターデータベースサーバ１３０のマスターデータベース１３４）にて実行されたデータ変更動作の後に受信されたマスターデータベースシーケンスＩＤに対応する。ブロック４０６では、ＵＩアプリケーションマネージャは、取得されたセッションシーケンスＩＤがセッションシーケンスＩＤの元々の空の状態（例えば、「無し」に等しく設定されている）と等しいかどうかを判定する。そのようであれば、方法４００はブロック４０８に分岐し、そこではＵＩアプリケーションマネージャが、ＵＩアプリケーションマネージャに関連付けられるローカルの読み取り専用データベース（例えば、ＵＩアプリケーションサーバ１１２の読み取り専用データベース１１８、ＵＩアプリケーションサーバ（Ｎ）１２２の読み取り専用データベース１２８、など）からデータを読み取る。そうするには、ＵＩアプリケーションマネージャは、ローカルの読み取り専用データベースのデータベースマネージャに読み取り要求を送信するように構成されてもよい。したがって、読み取り要求は、ローカルの読み取り専用データベースからデータを取得するようにデータベースマネージャによって使用可能な情報を含むように理解されたい。
【００５６】
いくつかの実施形態では、データは、ＵＩアプリケーションマネージャに関連付けられているローカルの読み取り専用データベースではない読み取り専用データベースから読み取られてもよい。言い換えると、このような実施形態では、読み取り要求は、ＵＩバックエンドクラスタシステム１００のローカルの読み取り専用データベースのうちの任意のものに送信することができる。ＵＩアプリケーションサーバ（１）１１２が通常のデータ読み取りルーチンを実行している例示的な例では、ＵＩアプリケーションサーバ（１）１１２はローカルの読み取り専用データベース１１８に（例えば、データベースマネージャ１１６に送信される１つ以上のコマンドを介して）、又はＵＩアプリケーションサーバ（Ｎ）１２２の読み取り専用データベース１２８に（例えば、データベースマネージャ１２６及び／又はＵＩアプリケーションサーバ（Ｎ）１２２のＵＩアプリケーションマネージャ１２４に送信された１つ以上のコマンドを介して）、データ取得要求を送信してもよい。
【００５７】
ブロック４０６を再度参照して、ＵＩアプリケーションマネージャが、取得されたセッションシーケンスＩＤが空でないと判定した場合、方法４００はブロック４１０に分岐する。ブロック４１０では、ＵＩアプリケーションマネージャはローカルのデータベースシーケンスＩＤをローカルの読み取り専用データベースから読み取る。前に記載したように、ローカルのデータベースシーケンスＩＤは、ローカルの読み取り専用データベースの直近の非同期レプリケーション中に受信されたマスターデータベースシーケンスＩＤの値に対応する。ローカルデータベースシーケンスＩＤをローカルの読み取り専用データベースから読み取るには、ＵＩアプリケーションマネージャは、対応するローカルの読み取り専用データベースのデータベースマネージャに読み取り要求を送信するように構成されてもよい。したがって、読み取り要求は、対応するローカルの読み取り専用データベースからデータを読み取るために、データベースマネージャによって使用可能な情報を含むことを理解されたい。
【００５８】
ブロック４１２では、ＵＩアプリケーションマネージャは、ブロック４０４にて取得されたセッションシーケンスＩＤが、ブロック４１０で取得されたローカルデータベースシーケンスＩＤ以下であるかどうかを判定する。言い換えると、ＵＩアプリケーションマネージャは、データが現在のものか古いものかを判定する。ＵＩアプリケーションマネージャが、ブロック４１２でセッションシーケンスＩＤがローカルデータベースシーケンスＩＤよりも大きいと判定すると、方法４００は以下に記載するブロック４２０に分岐し、そうでない場合は、方法４００はブロック４１４に分岐する。ブロック４１４では、ＵＩアプリケーションマネージャはローカルの読み取り専用データベースにデータ読み取り要求を送信する。言い換えると、ＵＩアプリケーションマネージャは、ローカル読み取り専用データベースからデータの読み取りを試みる。
【００５９】
ブロック４１６では、ＵＩアプリケーションマネージャは、要求されたデータがうまく戻ったかどうかを判定する。例えば、ＵＩアプリケーションマネージャは、読み取り専用のローカルデータベースが、例えば、読み取り専用のローカルデータベースが読み取り動作の実行時にマスターデータベース１３４と同期される場合に起こり得る、読み取り専用のローカルデータベースが現在利用不可能であると示す表示（例えば、データ読み取り要求に応じて受信された返信状態）を受信してもよい。ＵＩアプリケーションマネージャが、要求されたデータがうまく返信されたと判定した場合、方法４００はブロック４１８に進み、そこではＵＩアプリケーションマネージャが、方法４００がブロック４０２に戻る前に、セッションシーケンスＩＤをセッションシーケンスＩＤの元の空の状態に設定する（例えば、「無し」に等しく設定する）。
【００６０】
そうでない場合は、ＵＩアプリケーションマネージャが、要求されたデータがうまく返信されなかったとブロック４１６で判定した場合、方法４００はブロック４２０に分岐する。ブロック４２０では、ＵＩアプリケーションマネージャはマスターデータベース１３４からデータの読み取りを試みるかどうかを判定する。言い換えると、ＵＩアプリケーションマネージャは、ローカルの読み取り専用データべースからデータの読み取りを試みるのか（すなわち、ローカルの読み取り専用データベースで別の読み取り動作を開始させる）、マスターデータベース１３４からデータを取得するのか（すなわち、マスターデータベース１３４にデータ読み取り要求を送信する）を判定する。ＵＩアプリケーションマネージャがブロック４２０で別の読み取り動作をローカルの読み取り専用データベースから開始させるように判定した場合、方法４００はブロック４１０に戻って、ローカルの読み取り専用データベースから、更新されたローカルデータベースシーケンスＩＤを取得する。
【００６１】
いくつかの実施形態では、方法４００は、ローカルの読み取り専用データベースでの続く読み取り動作を開始する前に、閾値基準を満たすまでブロック４２０を繰り返してもよい。例えば、閾値基準は持続時間（すなわち、閾値持続時間）に対応してもよく、ＵＩアプリケーションマネージャは、別のデータ読み取り動作を試みる前に持続時間が経過したかどうかを判定してもよい。このような実施形態では、持続時間閾値は、データの同期が完了する予想持続時間に対応してもよい。別の例では、閾値基準はいくつかの試用（すなわち、最大試用数）に対応してもよい。このような実施形態では、ＵＩアプリケーションマネージャは、ローカルの読み取り専用データベースからデータを読み取るためのいくつかの試みで失敗しているか、そして最大の試用数を超過している場合には、マスターデータベース１３４からデータの読み取りを試みているかどうかを判定してもよい。
【００６２】
ＵＩアプリケーションマネージャが、ローカルの読み取り専用データベースから別の読み取り動作を開始しないように判定した場合、方法４００はブロック４２２に進む。ブロック４２２では、ＵＩアプリケーションマネージャはマスターデータベースサーバ１３０のマスターデータベース１３４にデータ読み取り要求を送信する。ブロック４２４では、ＵＩアプリケーションマネージャは、マスターデータベース１３４から要求されたデータが返信されているかを判定する。もしそうであれば、方法４００はブロック４０２に戻り、別のデータ読み取り動作を実行するかどうかを判定する。
【００６３】
本開示を図面及び前述の記載にて詳細に図示及び記載しているが、これは例示的かつ特徴に限定されないように考慮されるものとし、特定の実施形態のみが示されて記載されており、本開示の範疇内の変更及び変形は全て保護されることが望まれるように理解されたい。
【図１】
0006899907.tif 000002
【図２】
0006899907.tif 000003
【図３】
0006899907.tif 000004
【図４】
0006899907.tif 000005