IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ セールスフォース ドット コム インコーポレイティッドの特許一覧

特許7305813自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法
<>
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図1
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図2
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図3A
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図3B
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図4
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図5
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図6
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図7
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図8
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図9
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図10A
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図10B
  • 特許-自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-30
(45)【発行日】2023-07-10
(54)【発明の名称】自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法
(51)【国際特許分類】
   G06F 11/20 20060101AFI20230703BHJP
【FI】
G06F11/20 669
G06F11/20 620
【請求項の数】 21
【外国語出願】
(21)【出願番号】P 2022002015
(22)【出願日】2022-01-11
(62)【分割の表示】P 2019542595の分割
【原出願日】2018-02-22
(65)【公開番号】P2022141579
(43)【公開日】2022-09-29
【審査請求日】2022-01-24
(31)【優先権主張番号】15/440,810
(32)【優先日】2017-02-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チェン,ボアン
(72)【発明者】
【氏名】タム,ドナルド
(72)【発明者】
【氏名】コリンズ,ジェシー
(72)【発明者】
【氏名】チャオ,シェン
(72)【発明者】
【氏名】リウ,テッド
(72)【発明者】
【氏名】ユー,ヤンジン
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2013-186557(JP,A)
【文献】特開2004-343776(JP,A)
【文献】特開2007-066154(JP,A)
【文献】特開2017-034610(JP,A)
【文献】特開2016-126364(JP,A)
【文献】特開2012-168623(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/16-11/20
(57)【特許請求の範囲】
【請求項1】
プライマリサイトを含むデータベースシステムにおける方法であって、前記プライマリサイトは、プライマリデータベースが利用可能であるとき前記プライマリデータベースにデータを書き込み且つ前記プライマリデータベースからデータを読み取るアプリケーションサーバをさらに含み、当該方法は、
前記プライマリデータベースの複製であるスタンバイデータベースに記憶されたデータのスナップショットを周期的に取るステップと、
データの前記スナップショットを前記プライマリサイトとは物理的に別個である別個のストレージハードウェアを含むスナップショットストレージシステムに記憶するステップと、
自己修復モジュールにより、前記プライマリデータベースの利用不能を自動的に検出するステップと、
前記自己修復モジュールにより、前記プライマリサイトの前記スタンバイデータベースが利用可能であるかどうかを決定するステップと、
前記自己修復モジュールが、前記プライマリデータベースが利用不能であると検出し前記スタンバイデータベースが利用可能であると決定したとき、前記自己修復モジュールによりフェイルオーバ処理シーケンスを自動的に開始するステップであり、前記フェイルオーバ処理シーケンスは、
前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
フェイルオーバロール移行の後、前記アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、
前記スナップショットストレージシステムに記憶された前記プライマリデータベースからの最も最近のスナップショットデータを使用して新しいデータベースを自動的に作成することと、
を含む、ステップと、
を含む方法。
【請求項2】
前記スタンバイデータベースは第1のスタンバイデータベースである、請求項1に記載の方法。
【請求項3】
前記フェイルオーバ処理シーケンスは、
前記自己修復モジュールにおいて、前記新しいデータベースを前記プライマリサイトにおける第2のスタンバイデータベースとして自動的に追加して、キャパシティをフルに回復すること、
をさらに含む請求項2に記載の方法。
【請求項4】
前記プライマリデータベースは第1のプライマリデータベースであり、前記データベースシステムは、第2のプライマリデータベースを含む災害復旧サイトをさらに含み、当該方法は、
前記プライマリサイトのデータベースのすべてが故障し、前記プライマリサイトにおいてスタンバイデータベースが利用可能でないとき、ロードバランサを介し、ユーザシステムからのトラフィックを前記第2のプライマリデータベースへのアクセスを有する前記災害復旧サイトにおけるアプリケーションサーバに向けるステップ
をさらに含む請求項1、2、又は3に記載の方法。
【請求項5】
前記自己修復モジュールが前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定したとき、前記アプリケーションサーバが前記プライマリサイトにおける前記スタンバイデータベースからの読み取り専用アクセスを有することを一時的に可能にするステップであり、それにより、前記アプリケーションサーバは、前記プライマリデータベースがダウンし、前記プライマリデータベースが復旧するかどうかが決定されている間、依然として前記スタンバイデータベースからデータを読み取り、読み取り専用要求を満足することができる、ステップ
をさらに含む請求項1乃至4のうちいずれか1項に記載の方法。
【請求項6】
前記自己修復モジュールが前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定したとき、前記自己修復モジュールにおいて、前記フェイルオーバ処理シーケンスを自動的に開始する前に、前記プライマリサイトにおける前記プライマリデータベースが復旧時間内に復旧したかどうかを決定するステップと、
前記プライマリサイトにおける前記プライマリデータベースが前記復旧時間内に復旧しなかったとき、前記自己修復モジュールにおいて、前記フェイルオーバ処理シーケンスを自動的に開始するステップと、
をさらに含む請求項1乃至5のうちいずれか1項に記載の方法。
【請求項7】
前記自己修復モジュールが前記プライマリサイトにおける前記プライマリデータベースが前記復旧時間内に復旧したと決定したとき、前記プライマリデータベースを自動的に再開するステップであり、前記アプリケーションサーバにおけるアプリケーションは前記プライマリデータベースとして前記プライマリサイトからの前記プライマリデータベースを継続して使用する、ステップ
をさらに含む請求項6に記載の方法。
【請求項8】
前記プライマリデータベースは第1のデータベースサーバ及び第1のストレージサブシステムを含み、前記スタンバイデータベースは第2のデータベースサーバ及び第2のストレージサブシステムを含み、
前記スタンバイデータベースを自動的に有効にする前に、前記第1のストレージサブシステムを復旧のために前記第1のデータベースサーバから前記第2のデータベースサーバに自動的にアタッチするステップ
をさらに含む請求項1乃至7のうちいずれか1項に記載の方法。
【請求項9】
プロセッサ及びメモリを含むコンピューティングシステムであって、前記メモリはコンピュータ実行可能命令を含み、前記コンピュータ実行可能命令は当該コンピューティングシステムに、
プライマリデータベースの複製であるスタンバイデータベースに記憶されたデータのスナップショットを周期的に取り、
データの前記スナップショットをプライマリサイトとは物理的に別個である別個のストレージハードウェアを含むスナップショットストレージシステムに記憶
前記プライマリサイトにおける前記プライマリデータベースの利用不能を自動的に検出することであって、前記プライマリサイトは、前記プライマリデータベースが利用可能であるとき前記プライマリデータベースにデータを書き込み且つ前記プライマリデータベースからデータを読み取るアプリケーションサーバをさらに含み、
前記プライマリサイトにおいて前記スタンバイデータベースが依然として利用可能であるかどうかを決定し、
前記プライマリデータベースが利用不能であると検出され前記スタンバイデータベースが利用可能であると決定されたとき、フェイルオーバ処理シーケンスを自動的に開始することであって、前記フェイルオーバ処理シーケンスは、
前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
フェイルオーバロール移行の後、前記アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、
前記スナップショットストレージシステムに記憶された前記プライマリデータベースからの最も最近のスナップショットデータを使用して新しいデータベースを自動的に作成することと、を含む
ことをさせることができる、コンピューティングシステム。
【請求項10】
前記スタンバイデータベースは第1のスタンバイデータベースであり、前記コンピュータ実行可能命令はさらに当該コンピューティングシステムに、
前記新しいデータベースを前記プライマリサイトにおける第2のスタンバイデータベースとして自動的に追加してキャパシティをフルに回復する
ことをさせることができる、請求項9に記載のコンピューティングシステム。
【請求項11】
前記コンピュータ実行可能命令はさらに当該コンピューティングシステムに、
前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定されたとき、前記アプリケーションサーバが前記プライマリサイトにおける前記スタンバイデータベースからの読み取り専用アクセスを有することを一時的に可能にし、それにより、前記アプリケーションサーバは、前記プライマリデータベースがダウンし、前記プライマリデータベースが復旧するかどうかが決定されている間、依然として前記スタンバイデータベースからデータを読み取り、読み取り専用要求を満足することができ、前記フェイルオーバロール移行が発生したとき、前記予め確立された接続に起因して、新しい接続確立が必要とされない
ことをさせることができる、請求項9又は10に記載のコンピューティングシステム。
【請求項12】
前記プライマリデータベースは第1のデータベースサーバ及び第1のストレージサブシステムを含み、前記スタンバイデータベースは第2のデータベースサーバ及び第2のストレージサブシステムを含み、前記コンピュータ実行可能命令はさらに当該コンピューティングシステムに、
自動的に有効にする前に、前記第1のストレージサブシステムを復旧のために前記第1のデータベースサーバから前記第2のデータベースサーバに自動的にアタッチする
ことをさせることができる、請求項9、10、又は11に記載のコンピューティングシステム。
【請求項13】
自動自己修復データベースシステムであって、
プライマリサイトを含み、前記プライマリサイトは、
プライマリデータベースと、
前記プライマリデータベースが利用可能であるとき前記プライマリデータベースにデータを書き込み且つ前記プライマリデータベースからデータを読み取るアプリケーションサーバと、
前記プライマリデータベースの複製であるスタンバイデータベースと、
記プライマリサイトとは物理的に別個に位置する別個のストレージハードウェアを含むスナップショットストレージシステムと、
自己修復モジュールと
を含み、前記自己修復モジュールは、
前記スタンバイデータベースに記憶されたデータのスナップショットを周期的に取ることであって、前記スナップショットストレージシステムはデータの前記スナップショットを記憶するように構成され、
前記プライマリデータベースの利用不能を自動的に検出し、
前記プライマリサイトの前記スタンバイデータベースが利用可能であるかどうかを決定し、
前記自己修復モジュールが、前記プライマリデータベースが利用不能であると検出し前記プライマリサイトの前記スタンバイデータベースが利用可能であると決定したとき、フェイルオーバ処理シーケンスを自動的に開始することであって、前記フェイルオーバ処理シーケンスは、
前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
フェイルオーバロール移行の後、前記アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、
前記スナップショットストレージシステムに記憶された前記プライマリデータベースからの最も最近のスナップショットデータを使用して新しいデータベースを自動的に作成することと、を含む
ように構成される、自動自己修復データベースシステム。
【請求項14】
前記スタンバイデータベースは第1のスタンバイデータベースである、請求項13に記載の自動自己修復データベースシステム。
【請求項15】
前記自己修復モジュールは、前記フェイルオーバ処理シーケンスの一部として、前記新しいデータベースを前記プライマリサイトにおける第2のスタンバイデータベースとして自動的に追加してキャパシティをフルに回復するようにさらに構成される、請求項14に記載の自動自己修復データベースシステム。
【請求項16】
前記プライマリデータベースは第1のプライマリデータベースであり、当該自動自己修復データベースシステムは、
ロードバランサと、
アプリケーションサーバ及び第2のプライマリデータベースを含む災害復旧サイトと、
をさらに含み、
前記ロードバランサは、前記プライマリサイトのデータベースのすべてが故障し、前記プライマリサイトにおいてスタンバイデータベースが利用可能でないとき、ユーザシステムからのトラフィックを前記第2のプライマリデータベースへのアクセスを有する前記災害復旧サイトにおける前記アプリケーションサーバに向けるように構成される、
請求項13乃至15のうちいずれか1項に記載の自動自己修復データベースシステム。
【請求項17】
前記自己修復モジュールは、前記自己修復モジュールが前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定したとき、前記アプリケーションサーバが前記プライマリサイトにおける前記スタンバイデータベースからの読み取り専用アクセスを有することを一時的に可能にし、それにより、前記アプリケーションサーバは、前記プライマリデータベースがダウンし、前記プライマリデータベースが復旧するかどうかが決定されている間、依然として前記スタンバイデータベースからデータを読み取り、読み取り専用要求を満足することができるようにさらに構成され、前記フェイルオーバロール移行が発生したとき、前記予め確立された接続に起因して、新しい接続確立が必要とされない、請求項13乃至16のうちいずれか1項に記載の自動自己修復データベースシステム。
【請求項18】
前記自己修復モジュールは、
前記自己修復モジュールが前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定したとき、前記フェイルオーバ処理シーケンスを自動的に開始する前に、前記プライマリサイトにおける前記プライマリデータベースが復旧時間内に復旧したかどうかを決定し、
前記プライマリサイトにおける前記プライマリデータベースが前記復旧時間内に復旧しなかったとき前記フェイルオーバ処理シーケンスを自動的に開始する
ようにさらに構成される、請求項13乃至17のうちいずれか1項に記載の自動自己修復データベースシステム。
【請求項19】
前記自己修復モジュールは、
前記自己修復モジュールが前記プライマリサイトにおける前記プライマリデータベースが前記復旧時間内に復旧したと決定したとき、前記プライマリデータベースを自動的に再開することであって、前記アプリケーションサーバにおけるアプリケーションは前記プライマリデータベースとして前記プライマリサイトからの前記プライマリデータベースを継続して使用する
ようにさらに構成される、請求項18に記載の自動自己修復データベースシステム。
【請求項20】
前記プライマリデータベースは第1のデータベースサーバ及び第1のストレージサブシステムを含み、前記スタンバイデータベースは第2のデータベースサーバ及び第2のストレージサブシステムを含み、
前記自己修復モジュールは、
前記スタンバイデータベースを自動的に有効にする前に、前記第1のストレージサブシステムを復旧のために前記第1のデータベースサーバから前記第2のデータベースサーバに自動的にアタッチする
ようにさらに構成される、請求項13乃至19のうちいずれか1項に記載の自動自己修復データベースシステム。
【請求項21】
コンピューティングシステムに、
プライマリデータベースの複製であるスタンバイデータベースに記憶されたデータのスナップショットを周期的に取り、
データの前記スナップショットをプライマリサイトとは物理的に別個である別個のストレージハードウェアを含むスナップショットストレージシステムに記憶し、
自己修復モジュールにより、前記プライマリデータベースの利用不能を自動的に検出し、
前記自己修復モジュールにより、前記プライマリサイトの前記スタンバイデータベースが利用可能であるかどうかを決定し、
前記自己修復モジュールが、前記プライマリデータベースが利用不能であると検出し前記スタンバイデータベースが利用可能であると決定したとき、前記自己修復モジュールによりフェイルオーバ処理シーケンスを自動的に開始することであって、前記フェイルオーバ処理シーケンスは、当該コンピューティングシステムに、
前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
フェイルオーバロール移行の後、アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、
前記スナップショットストレージシステムに記憶された前記プライマリデータベースからの最も最近のスナップショットデータを使用して新しいデータベースを自動的に作成することと、をさせる
ことをさせることができるコンピュータ実行可能命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[優先権主張]
本出願は、2017年2月23日に出願された米国出願第15/440,810号に対する優先権を主張する。
【0002】
[技術分野]
本明細書に記載の対象事項の実施形態は、一般にクラウドベースのコンピューティングに関する。より詳細には、対象事項の実施形態は、自動自己修復データベースシステム、及びクラウドベースのコンピューティング環境で自動自己修復データベースシステムを実現する方法に関する。
【背景技術】
【0003】
今日、インターネットを通じて(又は他のネットワークを介して)サービス及びデータにアクセスすることを可能にするクラウドベースのコンピューティングプラットフォームを多くの企業が今や使用している。これらのクラウドベースのコンピューティングプラットフォームのインフラストラクチャプロバイダは、共通のコンピュータハードウェア及びデータストレージを使用して、しばしば複数の企業(又はテナント)をサポートするネットワークベースの処理システムを提供する。この「クラウド」コンピューティングモデルは、インフラストラクチャプロバイダにより供給される「サービスとして」プラットフォーム上でアプリケーションが提供されることを可能にする。
【0004】
高可用性(HA)データベースアーキテクチャは、冗長システム及びソフトウェアを使用して単一障害点(single points of failure)を排除することにより、ダウンタイム及びデータ損失を防止する。管理者のエラー、システム若しくはソフトウェア欠陥により引き起こされるデータ破壊、又は完全なサイト障害は、データベースの可用性に影響を及ぼす可能性がある。単一障害点による影響を防ぐ唯一の方法は、別のシステム上ですでに実行され理想的には第2の場所に配置されている、本番データベースの完全に独立したコピーを有することであり、これは、本番データベースが何らかの理由で利用不能になった場合にすぐにアクセスできる。
【0005】
オラクル(登録商標)データガード(Oracle Data Guard)はオラクル関係データベース管理システム(RDBMS)の拡張を形成する。オラクルのデータガードシステムにおいて、データベースは以下の相互排他的なロール、すなわちプライマリ又はスタンバイのうちの1つで動作する。オラクルデータガード技術は単一障害点を排除するのに役立ち、本番又はプライマリデータベースの同期した物理的複製を遠隔地に維持することにより、簡素だが経済的な方法でデータ損失及びダウンタイムを防止する。オラクルデータガードはこれらのスタンバイデータベースを本番データベースのコピーとして維持する。次に、計画された又は計画されていない停電のために本番データベースが利用不能になった場合、オラクルデータガードは任意のスタンバイデータベースを本番ロールに切り替えることができ、停電に関連づけられたダウンタイムを最小限にする。
【0006】
データガードは、データベース管理者がSQLステートメントを発行することにより、又はデータガードブローカーのインターフェースのいずれかを使用することにより、これらのロールを動的に変更することを可能にする。データガード技術の1つの制限は、該技術が、プライマリデータベースがプライマリデータベースサーバ又はストレージサブシステムにおけるハードウェア障害などの様々なタイプの障害のために利用できないとき、ロール変更の後、新しいスタンバイデータベースの自動供給を保証しないことである。
【図面の簡単な説明】
【0007】
対象事項のより完全な理解が、以下の図面と関連して考慮されるときに詳細な説明及び特許請求の範囲を参照することにより導き出すことができ、ここで、同様の参照番号は図面を通して同様の要素を示す。
図1】開示の実施形態による自動自己修復モジュールを有する自動自己修復データベースシステムを示すブロック図である。
図2】開示の実施形態による自動自己修復モジュールの様々なモジュールのブロック図を示す。
図3A図3A及び3Bは集合的に、開示の実施形態による自動自己修復データベースシステムを提供する一例示的な方法を示すフローチャートである。
図3B図3A及び3Bは集合的に、開示の実施形態による自動自己修復データベースシステムを提供する一例示的な方法を示すフローチャートである。
図4】開示の実施形態による、自動自己修復データベースシステムと、それが如何に機能して自己修復能力を達成するかとを示すブロック図である。
図5】開示の実施形態による、自動自己修復データベースシステムと、それが如何に機能して自己修復能力を達成するかとを示すブロック図である。
図6】開示の実施形態による、自動自己修復データベースシステムと、それが如何に機能して自己修復能力を達成するかとを示すブロック図である。
図7】開示の実施形態による、自動自己修復データベースシステムと、それが如何に機能して自己修復能力を達成するかとを示すブロック図である。
図8】いくつかの実装による、オンデマンドデータベースサービスが使用できる環境の一例のブロック図を示す。
図9】いくつかの実装による、図8の要素の例示的な実装と、これらの要素間の例示的な相互接続とのブロック図を示す。
図10A】いくつかの実装による、オンデマンドデータベースサービス環境の例示的なアーキテクチャコンポーネントを示すシステム図を示す。
図10B】いくつかの実装による、オンデマンドデータベースサービス環境の例示的なアーキテクチャコンポーネントをさらに示すシステム図を示す。
図11】本明細書で論じられる方法論のうち任意の1つ以上をマシンに実行させる命令セットが実行され得るコンピュータシステムの例示的形態におけるマシンの図表現を示す。
【発明を実施するための形態】
【0008】
本明細書に提示される例示的な実施形態は、クラウドベースのコンピューティング環境で実現可能な自己修復(self-healing)自動データベースシステム、方法、手順、及び技術に関する。例えば、説明される対象事項は、例えば、マルチテナントデータベースシステムを含む任意のクラウドベースのコンピューティング環境の文脈で実現できる。
【0009】
上記で論じられた問題に対処するために、自動自己修復データベースシステム及び関連する方法が提供される。自動自己修復データベースシステムはプライマリサイト(又はデータセンタ)を含み、これは、プライマリデータベースと、各々がプライマリデータベースの複製である1つ又は複数のスタンバイデータベースと、自己修復モジュールとを含む。自己修復モジュールは、自動自己修復データベースシステムの構成を監視及び管理できるカスタムアプリケーションである。自己修復モジュールは、ベンダのAPIを介してベンダの技術と相互作用することができる。このような技術の例は、オラクルTMデータガード複製及びフェイルオーバ技術、アマゾン(登録商標)ウェブサービス(Amazon Web Services、AWS)TMスナップショット技術等を含む。自己修復モジュールは、プライマリデータベースの利用不能(例えば、ハードウェア及び/又はソフトウェアの障害(failure))を自動的に検出し、プライマリサイトのスタンバイデータベース、すなわちプライマリデータベースの複製が利用可能であるかを決定することができる。もしそうならば、自己修復モジュールは自動的にフェイルオーバ処理シーケンスを開始することができ、該フェイルオーバ処理シーケンスは、プライマリデータベースの機能性及びキャパシティを復旧するために、プライマリサイトにおけるプライマリデータベースとしてのロール(role)をスタンバイデータベースに自動的に割り当てることを含む。プライマリデータベース障害が発生したときスタンバイデータベースを供給するための自動フェイルオーバ及びAPIを提供することにより、自己修復が達成できる。
【0010】
例えば、1つの実装において、プライマリデータベースが利用不能になったとき(例えば、故障する(fails)、クラッシュする等)、自己修復モジュールが自動的に利用不能を検出し、任意選択で、スタンバイデータベースにおいて読み取り専用アプリケーションモードを有効にすることにより読み取り専用能力を提供し、(プライマリサイトにおいて)アプリケーションサーバによりサービスされるアプリケーションのトラフィックをこの読み取り専用スタンバイデータベースにルーティングして顧客体験を向上させる。プライマリデータベースが、予め定義され且つ構成可能な期間(例えば、10分)内に復旧/再開しない場合、プライマリデータベースのロールは、スタンバイデータベースが新しいプライマリデータベースになるように、自動的にスタンバイデータベースにフェイルオーバされることになる。これは、プライマリデータベースの複製であるスタンバイデータベースを読み取り可能及び書き込み可能として有効にし、それを他のスタンバイデータベースへのデータの複製を開始するプライマリロールとして割り当てることによって行うことができる。効率化のために、アプリケーションはプライマリ及びセカンダリ双方のデータベースへの接続を予め確立することができ、それにより、ロール移行が発生したときに新しい接続確立は必要とされない。さらに、オリジナルのプライマリデータベースのストレージサブシステムが依然として利用可能であり、一貫した状態にある場合、さらなる拡張を行うことができる。例えば、故障したプライマリデータベースサーバからストレージサブシステムをデタッチし、それをスタンバイデータベースのデータベースサーバにアタッチすることにより、これは任意のデータ損失を低減するのに役立つ可能性がある。
【0011】
さらに、システムは自動的に新しいスタンバイデータベースを供給して、手動介入なしにシステムをそのフルキャパシティに戻すことができる。フェイルオーバ処理シーケンスの一部として、スナップショットストレージシステムに記憶された最も最近のスナップショットデータを使用して新しいデータベースが自動的に作成され、プライマリサイトのスタンバイデータベースとして自動的に追加されることができ、それにより、システムは、高い可用性及びスタンバイキャパシティを含むそのフルキャパシティに回復される。いくつかの実装において、故障したオリジナルのプライマリデータベースが復旧したとき/場合、それはスタンバイデータベースとして再供給され得る。
【0012】
図1は、開示の実施形態による、自動自己修復モジュール130を有する自動自己修復データベースシステム100を示すブロック図である。一実施形態において、自動自己修復データベースシステム100は、クラウドベースのデータベースシステムである。
【0013】
自動自己修復データベースシステム100は、複数のユーザシステム112と、プライマリサイト110(又はデータセンタ)において又は災害復旧(disaster recovery)サイトとして機能するセカンダリサイト140においてアプリケーションサーバ124へのユーザシステム112のトラフィックのルーティングを制御するロードバランサ111と、スナップショットストレージシステム128とを含む。
【0014】
プライマリサイト110サイト(又はデータセンタ)は、複数(n個)のアプリケーションサーバ124、ここでnは1以上、プライマリデータベース120-1、及びスタンバイデータベース120-2及び120-3を含む。この特定の実装において、プライマリサイト110は2つのスタンバイデータベースを有するが、より少ない又はより多くのスタンバイデータベースが特定の実装に依存して含まれてよい。図示のように、各データベース120は、様々なデータベース計算処理、結合、ソート、クエリ、又はトランザクションを実行するデータベースサーバと、ストレージ管理ソフトウェア及びトランザクションデータを記憶するハードウェアを含むストレージサブシステムとを含む。データベースサーバは、ストレージサブシステムからデータを読み取り、ストレージサブシステムにデータを書き込むことができる。ストレージサブシステム及びデータベースサーバ(そのソフトウェアコンポーネント又はモジュールを含む)は一緒に、クエリ言語及び他のインターフェースを介して問合せ、更新、及び削除され得るデータ(又はトランザクション)を処理及び記憶する能力を提供する。図示していないが、サイトは他のハードウェアを含むことができる。この点に関し、本明細書で使用されるとき「サイト」又は「データセンタ」は、別個の電源及びネットワーク接続性を有する物理ハードウェアをホストする設備を参照し得る。通常、サイトは、いくらかの物理的距離だけサイトから物理的に離される(例えば、数十~数千マイル離れる)。
【0015】
データガード構成は、本明細書においてプライマリデータベース120-1とも呼ばれる、プライマリロールで機能する1つの本番(production)データベースを含む。これは、アプリケーションサーバ124により実行されるアプリケーションによってアクセスされるデータベースである。ユーザシステム112は、アプリケーションサーバ124で実行されるアプリケーションと相互作用する。これに応じて、アプリケーションサーバ124で実行されるアプリケーションは、読み取り及び書き込み(R/W)要求をプライマリサイト110のプライマリデータベース120-1に通信する。例えば、アプリケーション124は、プライマリデータベース120-1にデータを記憶するためにデータを書き込むことができ、プライマリデータベース120-1が利用可能であり正常に動作している(例えば、障害又は他の原因の利用不能を経験していない)ときプライマリデータベース120-1からデータを読み取ることによりプライマリデータベース120-1でデータにアクセスすることができる。この読み取り/書き込みトランザクション能力は、図1においてR/Wとラベル付けされたアプリケーションサーバ124とプライマリデータベース120-1との間の矢印により表される。実装に依存して、プライマリデータベース120-1は、単一インスタンスのオラクルデータベース又はオラクルリアルアプリケーションクラスタ(Real Application Clusters)データベースのいずれかであり得る。
【0016】
各スタンバイデータベース120-2、120-3は、高可用性環境における災害保護のために使用できるプライマリ(又は本番)データベース120-1の独立したコピーである。換言すれば、各スタンバイデータベース120-2、120-3は、プライマリデータベース120-1の、トランザクション的に一貫した又は「バックアップ」コピーである。スタンバイデータベース120-2、120-3は、トランザクションがコミットされ、プライマリデータベース120-1に記憶されるとき、プライマリデータベース120-1から複製されたデータを同期的又は非同期に受信する。これは、図1において、プライマリデータベース120-1とスタンバイデータベース120-2との間、プライマリデータベース120-1とスタンバイデータベース120-3との間、及びプライマリサイト110におけるプライマリデータベース120-1と災害復旧サイト140におけるプライマリデータベース120-1との間に延びるラベルなしの両端矢印によって示される。例えば、スタンバイデータベース120-2、120-3が作成され、データガード構成に組み込まれると、各スタンバイデータベース120-2、120-3は、プライマリデータベース120-1から再実行(redo)データを送信し、次いで再実行をスタンバイデータベースに適用することにより、自動的に維持される。いくつかの実装において、スタンバイデータベースは、単一インスタンスのオラクルデータベース又はオラクルリアルアプリケーションクラスタ(RAC)データベースのいずれか(プライマリデータベース120-1と同様)であり得る。
【0017】
特定の状況において後述するように、読み取り専用アプリケーションモードが有効にされたとき、アプリケーション124は、スタンバイデータベース120-2に記憶されたデータへの読み取り専用アクセスを有してよく、これは、アプリケーションサーバ124で実行されるアプリケーションが読み取り専用要求をスタンバイデータベース120-2に通信し得、それにより、該アプリケーションはスタンバイデータベース120-2からのデータの読み取りのみ可能であるが、スタンバイデータベース120-2にデータを書き込みできないことを意味する。この読み取り専用能力は、図1において、「読み取り専用」とラベル付けされたプライマリデータベース120-1とスタンバイデータベース120-2との間に延びる両端矢印によって表される。アプリケーション124は、バックアップスタンバイデータベース120-3へのアクセスを通常有さず、なぜならば、該データベースの目的は、新しいデータベースを作成するため又は既存のデータベースが一時的に利用不能な場合にそれを更新するために使用できるバックアップとして機能することだからである。スナップショットバックアップのための専用スタンバイデータベース120-3を有する目的は、バックエンドスナップショット動作からユーザシステムワークロード及び要求を分離するためである。これは、性能安定性及び動作のための最適化であり、制限ではない。
【0018】
一般論として、災害復旧サイト140は、組織がそのプライマリサイト110(又はプライマリデータセンタ)全体が利用不能になり又は故障したときにその技術インフラストラクチャ及びオペレーションを復旧及び回復するために使用できる設備である。この点に関し、災害復旧サイト140は、プライマリサイト110と同じように動作するプライマリサイト110の対称バージョンであり、実装に依存して、プライマリサイト110の一部である同じ要素の全てを含んでよい。このようなものとして、この特定の実装において、災害復旧サイト140は、プライマリサイト110で実装されるものと同一のプライマリデータベース120-1、スタンバイデータベース120-2、120-3、及びアプリケーションサーバ124を含む。ほとんどの実装において、セカンダリ又は災害復旧サイト140は、通常、プライマリサイト110からいくらかの距離離れて位置し、それにより、サイトは互いに近接して位置しない。このようにして、何らかの予期せぬ災害(例えば、自然災害又は人為的災害)がプライマリサイト110を襲った場合、セカンダリサイト140は影響を受けない可能性が最も高く、事業の中断がないように稼働を開始できるようにすべきである。
【0019】
スナップショットストレージシステム128は、プライマリサイト110及びセカンダリサイト140のいずれかで、又は別の場所で、プライマリサイト110及び/又は災害復旧サイト140と物理的に近接して位置しないように遠隔に実装できる。例えば、開示の実施形態のいくつかによれば、スナップショットストレージシステム128は、プライマリサイト110に実現されず且つプライマリサイトレベル障害から守るために遠隔に位置する別個のストレージハードウェアである。以下に説明するように、スナップショットアプリケーション及び管理モジュール(図1には図示されていない)は、スタンバイデータベース120-3に記憶されたデータのスナップショットを取るために定期的又は周期的に実行され、データのスナップショットをスナップショットストレージシステム128に記憶する。スナップショットストレージシステム128はプライマリサイト110又はDRサイト140によりアクセスでき、それにより、スナップショットデータはほぼ瞬時に利用可能である。スナップショットデータは、データリストアに、又はフェイルオーバの場合のスタンバイデータベースの供給に使用できる。
【0020】
いくつかの場合、プライマリサイト110におけるプライマリデータベース120-1が、何らかの理由で利用不能になる可能性がある。例えば、プライマリデータベース120-1は、これらに限られないが電力停止、ハードウェア障害、ソフトウェア障害、ネットワーク障害、又はオペレータエラーなどを含む複数の異なる理由で利用不能になる可能性がある。
【0021】
この問題に対処するために、開示の実施形態は、各サイト110、140に自動自己修復モジュール130を提供することができる。以下により詳細に説明するように、自動自己修復モジュール130は、プライマリサイト110におけるプライマリデータベース120-1の利用不能及び/又は障害を自動的に検出することができ、プライマリデータベース120-1がある期間内に復旧できず、プライマリサイト110のスタンバイデータベース120-2が利用可能である場合、自動自己修復モジュール130はフェイルオーバ処理シーケンスを自動的に開始することができる。フェイルオーバは、プライマリデータベース120-1が(例えば、障害、スケジュールされた利用不能等に起因して)利用不能になったとき、プライマリデータベース120-1のロールが自動的にプライマリサイト110のスタンバイデータベース120-2に切り替わり、該スタンバイデータベース120-2により引き受けられる動作モードである。プライマリデータベース120-1のストレージサブシステムは、完全(intact)でアクセス可能な場合、復旧のためにスタンバイデータベース120-2のデータベースサーバに自動的にアタッチされて、潜在的なデータ損失をさらに低減させることができる。スタンバイデータベース120-2を読み取り可能及び書き込み可能として有効にする前に、プライマリデータベース120-1のストレージサブシステム120-1をスタンバイデータベース120-2のデータベースサーバに自動的にアタッチすることにより、プライマリデータベース120-1の障害の直前のプライマリデータベース120-1に対するいくつかのトランザクションが適時にスタンバイデータベース120-2に複製され得ないことに起因してさもなければ生じ得るデータ損失が回避できる。プライマリデータベース120-1のストレージサブシステムをスタンバイデータベース120-2のデータベースサーバに自動的にアタッチした後、スタンバイデータベース120-2は、次いで、読み取り可能及び書き込み可能として自動的に有効にされ、次いで、他のスタンバイデータベースへのデータの複製を開始するようプライマリサイト100におけるプライマリデータベースのロールを割り当てられ得る。
【0022】
換言すれば、フェイルオーバの一部として、自己修復モジュール130はプライマリロールを自動的且つシームレスにスタンバイデータベース120-2に割り当てることができ、それにより、スタンバイデータベース120-2はプライマリサイト110のプライマリデータベースとして機能する。そのようなものとして、プライマリデータベース120-1が故障した(又はその他の点で利用不能になった)とき、スタンバイデータベースの1つが、プライマリデータベースとして機能するよう自動的に割り当てられ得る。このようにして、アプリケーションサーバ124によりサービスされるアプリケーションは、読み取り/書き込みトランザクションを実行する(例えば、新しいプライマリデータベースとしてのロールを割り当てられたスタンバイデータベースからデータを読み取り、該スタンバイデータベースにデータを書き込む)パーミッションを含む、この「新しい」プライマリデータベースへの完全なアクセスを依然として有する。フェイルオーバロール移行の後、アプリケーションサーバとスタンバイデータベース120-2との間の予め確立された接続が、アプリケーションサーバがスタンバイデータベース120-2からデータを読み取り、スタンバイデータベース120-2にデータを書き込むことを可能にするために使用され、スタンバイデータベース120-2がプライマリサイト110におけるプライマリデータベースのロールを引き受けることを結果としてもたらす。さらに、以下でより詳細に説明するように、最新のスナップショットを使用して新しいスタンバイが供給され、次いで、複製構成に足し戻され、プライマリサイトを高可用性及びスタンバイキャパシティを含むそのフルキャパシティに戻し回復することができる。
【0023】
図2は、開示の実施形態による、自動自己修復モジュール130の様々なモジュールのブロック図を示す。図2は、データベースヘルス監視モジュール232とスナップショットアプリケーション及び管理モジュール234と読み取り専用アプリケーションモードモジュール236とデータベースフェイルオーバモジュール238とスタンバイデータベース供給モジュール240とデータベース複製管理モジュール242とを含む、自動自己修復モジュール130の様々なモジュールを示す。
【0024】
図1及び図2の様々な要素により実行される様々なタスク及び動作を、図3A図7を参照して以下により詳細に説明する。例えば、図2に示される自動自己修復モジュール130の様々なモジュールにより実行されるタスク及び動作を含む、プライマリサイト110において実行される特定のタスク及び動作、並びに災害復旧サイト140において実行されるタスク及び動作を、図3A図7を参照し、図1及び図2を継続して参照して以下に説明する。
【0025】
図3A及び3Bは、集合的に、開示の実施形態による自動自己修復データベースシステムを提供するための一例示的な方法300を示すフローチャートである。予備事項として、方法300のステップは必ずしも限定的でなく、ステップは別記の特許請求の範囲の範囲から逸脱することなく追加、省略、及び/又は同時に実行可能であることが理解されるべきである。方法300は任意数の追加又は代替タスクを含んでよく、図3A及び3Bに示されたタスクは図示された順序で実行される必要がなく、方法300は、本明細書に詳細に記載されていないさらなる機能性を有するより包括的な手順又は処理に組み込まれてよいことが十分理解されるべきである。さらに、図3A及び3Bに示されるタスクの1つ以上は、意図された全体的な機能性が完全なままである限り、方法300の実施形態から潜在的に省略され得る。また、図示された方法300は、いつでも停止可能であることが理解されるべきである。方法300は、方法300に関連して実行される様々なタスク又はステップがソフトウェア、ハードウェア、ファームウェア、又はこれらの任意の組み合わせにより実行され得る点でコンピュータにより実現される。例示の目的のために、方法300の以下の説明は、図1及び図2に関連して上述した要素を参照し得る。特定の実施形態では、この処理の一部又は全ステップ、及び/又は実質的に等価なステップは、プロセッサ読み取り可能媒体に記憶され又は含まれるプロセッサ読み取り可能命令の実行により実行される。
【0026】
図3A及び図3Bは、図4図7を参照して説明され、図4図7は、プライマリデータベース120-1が故障して復旧できなくなった後のデータベースシステム100の自動自己修復の動作、特に、自動自己修復モジュール130が如何に機能してプライマリサイトで自己修復能力を達成するかを示すブロック図である。以下の図3A図7の説明において、自動自己修復モジュール130は様々な動作、タスク、又はステップを実行するものとして説明されるが、これは、これら様々な動作、タスク、又はステップを実行する命令を実行するこれらエンティティの処理システムを参照することが十分理解されるべきである。実装に依存して、処理システムの一部が中央に位置し、あるいは一緒に動作する複数のシステム間で分散され得る。
【0027】
再び図3Aを参照すると、方法300の開始の前に、及びその間に、スナップショットアプリケーション及び管理モジュール234がバックグラウンドで実行して、スタンバイデータベース120-3に記憶されたデータのスナップショットを定期的又は周期的に取り、データのスナップショットをスナップショットストレージシステム128に記憶する。例えば、一実施形態において、スナップショットアプリケーション及び管理モジュール234は、スタンバイデータベース120-3の1時間ごとのスナップショットを取り、スナップショットデータをスナップショットストレージシステム128に記憶することができる。次いで、スナップショットデータは、データ回復に、又はフェイルオーバの場合のスタンバイデータベースの供給に使用できる。さらに、1時間ごとのスナップショットは、或る時間が経過した後に日次スナップショットにマージされ、データ保有ポリシーによって数日間記憶され得る。スナップショットアプリケーション及び管理モジュール234により実行されるこれらのタスクは、図3A及び図3Bの番号付きブロックにより示される方法300の外側で実行されるため、番号なしブロックにより図3Aに示される。
【0028】
図3A及び図3Bの方法300は304で始まり、304において、データベースヘルス監視モジュール232(図2)が、図4の304に示されるように、プライマリサイト110におけるプライマリデータベース120-1の利用不能を自動的に検出する。例えば、一実施形態において、データベースヘルス監視モジュール232(図2)は、プライマリデータベースサーバにハートビートを、並びにプライマリデータベース120-1にヘルスチェッククエリ及びトランザクションを送信することにより、プライマリサイト110におけるプライマリデータベース120-1の利用不能又は障害を自動的に検出する。例えば、一実装において、ハートビートメッセージは、例えば、Unix(登録商標)又はLinux(登録商標)で利用可能な「ping」ユーティリティを使用して、プライマリデータベースサーバのネットワーク及びオペレーティングシステムに送ることができる。プライマリデータベースサーバへのハートビートが応答に失敗した場合、又はヘルスチェッククエリ及びトランザクションが完了に失敗した場合、データベースヘルス監視モジュール232は、プライマリデータベース120-1が利用可能でなく再開又は復旧が必要かを決定することができる。
【0029】
304において、データベースヘルス監視モジュール232(図2)はさらに、プライマリデータベース120-1の利用不能(例えば、プライマリデータベース120-1がどれほどの間利用不能であったか)を追跡するために使用される復旧タイマ/カウンタを開始することができる。以下に説明するように、プライマリデータベース120-1が、復旧タイマ/カウンタを超える時間/カウントの間利用不能であると決定されたとき、プライマリデータベース120-1は復旧しないと仮定され、これは、プライマリロールを(1)プライマリサイト110におけるスタンバイデータベース120-2が利用可能である場合、スタンバイデータベース120-2に、又は(2)DRサイト140における別のプライマリデータベース120-1に、のいずれかに移行するフェイルオーバをトリガする。
【0030】
306において、データベースヘルス監視モジュール232(図2)が、プライマリサイトのスタンバイデータベースのいずれかが利用可能であるか(例えば、これはプライマリサイトのプライマリ及びすべてのスタンバイデータベースが利用不能であるサイトレベルの障害か、又は、これはプライマリデータベースが利用不能になったがプライマリサイトの少なくとも1つのスタンバイデータベースが利用可能である部分的な障害か)を決定することができる。
【0031】
データベースヘルス監視モジュール232(図2)が、プライマリサイト110のデータベースの全てが利用不能である(例えば、故障した)と(306において)決定したとき、方法300は308に進み、308において、データベースフェイルオーバモジュール238(図2)が、災害復旧サイト140におけるプライマリデータベース120-1へのフェイルオーバ(サイト切り替え動作とも呼ばれる)を実行し、ロードバランサ111に、すべてのネットワークトラフィックを災害復旧サイト140に向けるように(例えば、利用可能な場合、すべてのトラフィックを災害復旧サイト140のプライマリデータベース120-1に向けるように)命令する。その結果、ユーザシステム112からの任意の読み取り/書き込み要求が、災害復旧サイト140におけるアプリケーションサーバ124及びプライマリデータベース120-1により扱われることになる。
【0032】
ブロック310は、任意的であるため、破線ボックスに示される。データベースヘルス監視モジュール232(図2)が、プライマリサイト110のスタンバイデータベース120-2が利用可能である(例えば、故障していない)と決定したとき、方法300は、任意選択で310に進んでよく、310において、読み取り専用アプリケーションモードモジュール236(図2)が、スタンバイデータベース120-2における読み取り専用アプリモードを有効にして、アプリケーションサーバ124によりサービスされるアプリケーションがプライマリサイト110におけるスタンバイデータベース120-2に記憶されたデータへの読み取り専用アクセスを有することを一時的に可能にする。これは、図4において、アプリケーションサーバ124とスタンバイデータベース120-2との間の線310により示される。トランザクションはコミットできないが、アプリケーションサーバ124は依然としてスタンバイデータベース120-2からデータを読み取り、プライマリデータベース120-1がダウンしている間、及びプライマリデータベース120-1が復旧するかどうか(したがって、ロール移行が実施されるべきかどうか)が決定されている間、顧客クエリ及び他の読み取り専用要求を満足することができるので、読み取り専用アクセスを可能にすることは顧客体験の向上に有益である。いくつかの場合に、プライマリデータベース120-1が比較的短い期間内に復旧することができる場合、プライマリデータベース120-1がプライマリサイト110のためのプライマリデータベースとしてのロールを維持するように待機することがより合理的である。
【0033】
312において、データベースヘルス監視モジュール232(図2)が、プライマリデータベース120-1が復旧タイマ/カウンタを超える時間/カウントの間利用不能であったかどうかを決定する。データベースヘルス監視モジュール232(図2)が、プライマリデータベース120-1が利用可能であり、復旧タイマ/カウンタが或る復旧時間/カウントに達する前に復旧したことを(312で)決定すると、これは、プライマリデータベース120-1が復旧時間/カウント内に復旧したことを意味し、方法は314に進む。314において、データベースヘルス監視モジュール232(図2)は、プライマリデータベース120-1を(例えば、オペレーティングシステムのデーモン/ウォッチドッグプロセスにより)自動的に再開し、プライマリデータベース120-1は、プライマリサイト110のプライマリデータベース120-1として継続して使用されることになる。アプリケーションサーバ124におけるアプリケーションは、プライマリサイト110のプライマリデータベース120-1への予め確立された接続を継続して使用し、継続して正常に機能することになる。
【0034】
対照的に、データベースヘルス監視モジュール232(図2)が、プライマリデータベース120-1が復旧タイマ/カウンタを超える時間/カウントの間利用不能であったと決定したとき、これは、プライマリデータベース120-1が復旧時間/カウント内に復旧しなかったことを意味し、方法は316に進む。316において、データベースフェイルオーバモジュール238(図2)が、図5に示すように、スタンバイデータベース120-2をプライマリサイト110のプライマリデータベースとしての新しいロールに切り替えるためのフェイルオーバをトリガする。一実施形態において、これは、例えば、プライマリデータベース120-1のストレージサブシステムを完全でアクセス可能な場合に復旧目的でスタンバイデータベース120-2のデータベースサーバに自動的にアタッチすることによって行うことができ、これは、任意のデータ損失を低減し、新しいホストを割り振る遅延を排除するのに役立つ。次いで、スタンバイデータベース120-2は、読み取り可能及び書き込み可能として自動的に有効にされ、プライマリサイト100におけるプライマリデータベースのロールを割り当てられて、他のスタンバイデータベースへのデータの複製を開始することができる。フェイルオーバロール移行の後、アプリケーションサーバとスタンバイデータベース120-2との間の予め確立された接続が、アプリケーションサーバがスタンバイデータベース120-2からデータを読み取り、スタンバイデータベース120-2にデータを書き込むことを可能にするために使用され、スタンバイデータベース120-2がプライマリサイト110におけるプライマリデータベースのロールを引き受けることを結果としてもたらす。開示の実施形態によれば、効率のために、アプリケーションサーバとスタンバイデータベースとの間の接続は予め確立され、それにより、新しい接続確立が必要とされない。スタンバイデータベース120-2は、自動的に切り替えできる。プライマリデータベースとしてのロールを引き受けたデータベース120-2は今やアプリケーション124により読み取り/書き込みアクセス可能であり(図5において、アプリケーションサーバ124とデータベース120-2との間に延びる線316により示される)、今やDRサイト140のプライマリデータベース120-1とのデータガード複製構成にもある(図5において、プライマリサイト110のデータベース120-2とDRサイト140のプライマリデータベース120-1との間に延びる両端矢印により示される)。
【0035】
そのようなものとして、フェイルオーバ処理シーケンスを自動的に開始する前に、データベースヘルス監視モジュール232(図2)は、プライマリサイトにおけるプライマリデータベース120-1が許可された復旧時間内に復旧したかどうかを(312で)決定する。プライマリサイト110におけるプライマリデータベース120-1が復旧時間内に復旧しなかった場合、316において、データベースフェイルオーバモジュール238(図2)がフェイルオーバ処理シーケンスを自動的に開始する。データベースフェイルオーバモジュール238(図2)は、プライマリサイト110のスタンバイデータベース120-2にプライマリデータベース又は「新しい」プライマリデータベースとしてのロールを割り当てることにより、プライマリデータベース120-1の複製を自動的に供給することになる。これは、このスタンバイデータベース120-2がプライマリサイト110におけるプライマリデータベースのロールを引き受けることになることを意味する。この例では、データベースフェイルオーバモジュール238(図2)がプライマリサイト110のプライマリデータベースとしてのロールを引き受けるスタンバイデータベース120-2を選択したことを仮定しており、したがって、アプリケーション124は、プライマリサイト110のプライマリデータベースとしてのデータベース120-2に切り替えられることになる。その結果、アプリケーションサーバ124によりサービスされるアプリケーションは、新しいプライマリデータベース120-2において読み取り/書き込みトランザクションを実行するパーミッションを含む「新しい」プライマリデータベース120-2へのフルアクセスを備えることになる。したがって、アプリケーション124は、新しいプライマリデータベース120-2からデータを継続して読み取ることができ、また、新しいプライマリデータベース120-2にデータを書き込むこともできる。
【0036】
フェイルオーバ処理シーケンスの一部として、図3Bの318において、スタンバイデータベース供給モジュール240(図2)は、図6の線318により示されるように、スナップショットストレージシステム128に記憶された最も最近のスナップショットデータを使用して新しいデータベース120-4を自動的に作成することができる。
【0037】
次いで、データベース複製管理モジュール242(図2)は、新しく作成されたデータベース120-4をプライマリサイト110のスタンバイデータベースとして(320において)自動的に追加することができ、それにより、システムは高可用性及びスタンバイキャパシティを含むそのフルキャパシティに回復される。これは、図7において、プライマリサイト110の新しいスタンバイデータベース120-4とプライマリサイト110のプライマリデータベース120-2との間に延びる両端矢印320により示される。
【0038】
以下の説明は、上記で説明した特徴が実現され得るシステムの一例である。以下に説明するシステムのコンポーネントは単なる一例であり、限定的なものとして解釈されるべきでない。図1図7に関して上記で説明した特徴は、複数のデータベース、マルチテナントデータベースシステム環境、単一テナントデータベースシステム環境、又は上記の何らかの組み合わせを有するものなどの他タイプのコンピューティング環境で実現され得る。
【0039】
図8は、いくつかの実装によるオンデマンドデータベースサービスが使用できる環境410の一例のブロック図を示す。環境410は、ユーザシステム412と、ネットワーク414と、データベースシステム416(本明細書において「クラウドベースのシステム」とも呼ばれる)と、プロセッサシステム417と、アプリケーションプラットフォーム418と、ネットワークインターフェース420と、テナントデータ423を記憶するテナントデータベース422と、システムデータ425を記憶するシステムデータベース424と、システム416の様々な機能を実現するプログラムコード426と、データベースシステムプロセス及びテナント固有プロセスを実行し、例えばアプリケーションホスティングサービスの一部としてアプリケーションを実行するプロセス空間428とを含む。いくつかの他の実装において、環境410は、これらコンポーネント又はシステムのすべてを有さなくてよく、あるいは、上記に列挙したものの代わりに又は追加で他のコンポーネント又はシステムを有してよい。
【0040】
いくつかの実装において、環境410は、オンデマンドデータベースサービスが存在する環境である。オンデマンドデータベースサービス、例えばシステム416を使用して実現できるものは、システム416へのアクセスを所有、維持、又は提供する、企業の外部のユーザに利用可能にされるサービスである。上記で説明したように、こうしたユーザは、一般に、システム416の構築又は維持に関与する必要がない。代わりに、システム416により提供されるリソースは、ユーザがシステム416により提供されるサービスを必要とするとき、すなわちユーザの要望に応じて、こうしたユーザの使用に対して利用可能であり得る。いくつかのオンデマンドデータベースサービスは、1つ以上のテナントからの情報を共通のデータベースイメージのテーブルに記憶してマルチテナントデータベースシステム(MTS)を形成することができる。用語「マルチテナントデータベースシステム」は、データベースシステムのハードウェア及びソフトウェアの様々な要素が1以上の顧客又はテナントにより共有され得るシステムを参照することができる。例えば、所与のアプリケーションサーバが、多数の顧客の要求を同時に処理することができ、所与のデータベーステーブルが、潜在的により多数の顧客のフィードアイテムなどのデータの行を記憶することができる。データベースイメージは、1つ以上のデータベースオブジェクトを含むことができる。関係データベース管理システム(RDBMS)又は同等物が、データベースオブジェクトに対して情報の記憶及び取り出しを実行することができる。
【0041】
アプリケーションプラットフォーム418は、システム416のアプリケーションが実行することを可能にするフレームワーク、例えば、システム416のハードウェア又はソフトウェアインフラストラクチャなどであり得る。いくつかの実装において、アプリケーションプラットフォーム418は、オンデマンドデータベースサービスのプロバイダ、ユーザシステム412を介してオンデマンドデータベースサービスにアクセスするユーザ、又はユーザシステム412を介してオンデマンドデータベースサービスにアクセスするサードパーティアプリケーション開発者により開発された1つ以上のアプリケーションの作成、管理、及び実行を可能にする。
【0042】
いくつかの実装において、システム416は、ウェブベースの顧客関係管理(CRM)システムを実現する。例えば、いくつかのこうした実装において、システム416は、CRMソフトウェアアプリケーションを実現及び実行し、ユーザシステム412への及びユーザシステム412からの関連したデータ、コード、フォーム、レンダリング可能なウェブページ及び文書、並びに他の情報を提供し、且つ、関連したデータ、オブジェクト、及びウェブページコンテンツをデータベースシステムに記憶し、データベースシステムから取り出すように構成された、アプリケーションサーバを含む。いくつかのMTS実装において、複数のテナントのためのデータが、テナントデータベース422内の同じ物理データベースオブジェクトに記憶されてよい。いくつかのこうした実装において、テナントデータは、こうしたデータが明白に共有されない限り、あるテナントが別のテナントのデータに対するアクセスを有さないように、あるテナントのデータが他のテナントのデータとは論理的に別個に保持されるようにテナントデータベース422の記憶媒体内に配列される。システム416はまた、CRMアプリケーション以外の、又はCRMアプリケーションに対して追加のアプリケーションを実現する。例えば、システム416は、CRMアプリケーションを含む複数のホストされた(標準及びカスタムの)アプリケーションに対するテナントアクセスを提供することができる。CRMを含んでもよく含まなくてもよい、ユーザ(又は、サードパーティ開発者)アプリケーションが、アプリケーションプラットフォーム418によりサポートされてよい。アプリケーションプラットフォーム418は、アプリケーションの1つ以上のデータベースオブジェクトへの作成及び記憶と、システム16のプロセス空間における1つ以上の仮想マシン内でのアプリケーションの実行とを管理する。
【0043】
いくつかの実装によれば、各システム416は、ウェブページ、フォーム、アプリケーション、データ、及びメディアコンテンツをユーザ(クライアント)システム412に提供して、システム416のテナントとしてのユーザシステム412によるアクセスをサポートするように構成される。そのようなものとして、システム416は、データが共有されない限り各テナントのデータを別個に保持するようにセキュリティメカニズムを提供する。2つ以上のMTSが使用される場合、これらは互いに近接して(例えば、単一の建物又はキャンパス内に位置するサーバファーム内に)位置してよく、あるいは、これらは互いから遠隔の位置(例えば、市Aに位置する1つ以上のサーバと、市Bに位置する1つ以上のサーバ)に分散されてもよい。本明細書において用いられるとき、各MTSは、ローカルで分散されているか又は1つ以上の地理的位置にわたる、1つ以上の論理的又は物理的に接続されたサーバを含むことがある。さらに、用語「サーバ」は、当分野において周知である処理ハードウェア及びプロセス空間と、メモリデバイス又はデータベースなどの関連づけられた記憶媒体と、いくつかの例ではデータベースアプリケーション(例えば、OODBMS又はRDBMS)とを含むコンピューティングデバイス又はシステムを参照するように意図される。さらに、「サーバシステム」と「サーバ」とは本明細書においてしばしば置き換え可能に用いられることが理解されるべきである。同様に、本明細書において説明されるデータベースオブジェクトは、単一のデータベース、分散型データベース、分散型データベースの集合、冗長オンライン若しくはオフラインバックアップ又は他の冗長性を有するデータベース等の一部として実現されてよく、分散型データベース又はストレージネットワークと関連づけられた処理インテリジェンスとを含むことができる。
【0044】
ネットワーク414は、互いに通信するシステム又はデバイスの任意のネットワーク又はネットワークの組み合わせであり、あるいはこれらを含んでよい。例えば、ネットワーク414は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、テレフォンネットワーク、ワイヤレスネットワーク、セルラーネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうち任意の1つ又は任意の組み合わせであり、あるいはこれらを含んでよい。ネットワーク414は、TCP/IP(トランスファーコントロールプロトコル及びインターネットプロトコル)ネットワーク、例えば、(大文字の「I」を用いて)「インターネット」としばしば呼ばれるネットワークのグローバルインターネットワークなどを含んでよい。インターネットは、本明細書における例のうち多くで用いられる。しかしながら、TCP/IPは頻繁に実現されるプロトコルであるが、開示の実装が使用できるネットワークはそのように限定されないことが理解されるべきである。
【0045】
ユーザシステム412は、TCP/IPと、より高いネットワークレベルではHTTP、FTP、AFS、WAPなどの通信するための他の一般的インターネットプロトコルとを用いて、システム416と通信することができる。HTTPが使用される一例において、各ユーザシステム412は、システム416のHTTPサーバへの及びHTTPサーバからのHTTP信号を送信及び受信するために、「ウェブブラウザ」又は簡素に「ブラウザ」と一般に呼ばれるHTTPクライアントを含むことができる。こうしたHTTPサーバは、システム416とネットワーク414との間の単独のネットワークインターフェース420として実現されてよく、しかし、これら手法に対して追加で又は代わりに他の手法が用いられてもよい。いくつかの実装において、システム416とネットワーク414との間のネットワークインターフェース420は、ロードシェアリング機能性、例えば、ロードのバランスをとり、且つ入来HTTP要求を複数のサーバにわたり均等に分散するラウンドロビンHTTP要求分配器などを含む。MTS実装では、サーバの各々がMTSデータに対するアクセスを有することができ、しかしながら、他の代替的な構成が代わりに用いられてもよい。
【0046】
ユーザシステム412は、データベースシステム416にアクセスするためにユーザにより使用可能な任意のコンピューティングデバイス又は他のデータ処理装置若しくはシステムとして実現されてよい。例えば、ユーザシステム12のうち任意のものが、デスクトップコンピュータ、ワークステーション、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピューティングデバイス、モバイルセルラーフォン(例えば、「スマートフォン」)、若しくは任意の他のWi‐Fi(登録商標)対応デバイス、ワイヤレスアクセスプロトコル(WAP)対応デバイス、又はインターネット若しくは他のネットワークに直接又は間接的にインターフェースをとることができる他のコンピューティングデバイスであってよい。用語「ユーザシステム」及び「コンピューティングデバイス」は本明細書において、互いに、及び用語「コンピュータ」と置き換え可能に用いられる。上記で説明されたように、各ユーザシステム412は、HTTPクライアント、例えば、WebKitプラットフォームに基づくウェブブラウザ、Microsoft(登録商標)のインターネットエクスプローラブラウザ、NetscapeのNavigatorブラウザ、Opera(登録商標)のブラウザ、Mozilla(登録商標)のFirefox(登録商標)ブラウザ、又はセルラーフォン、PDA、若しくは他のワイヤレスデバイスの場合のWAP対応ブラウザなどのウェブブラウジング(又は、簡素に「ブラウジング」)プログラムを典型的に実行して、ユーザシステム412のユーザ(例えば、システム416により提供されるオンデマンドサービスの加入者)がネットワーク414を通じてシステム416からの自身に利用可能な情報、ページ、及びアプリケーションについてアクセス、処理、及び閲覧することを可能にする。
【0047】
各ユーザシステム412はまた、システム416又は他のシステム若しくはサーバにより提供されたページ、フォーム、アプリケーション、及び他の情報と関連してユーザシステム412のディスプレイ(例えば、他の可能性の中でもモニタ画面、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ)上にブラウザにより提供されたグラフィカルユーザインターフェース(GUI)と相互作用するように、1つ以上のユーザ入力デバイス、例えばキーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペン、又はスタイラスなどを典型的に含む。例えば、ユーザインターフェースデバイスが使用されて、システム416によりホストされたデータ及びアプリケーションにアクセスし、記憶されたデータに対して検索を実行し、その他の方法でユーザがユーザに提示され得る様々なGUIページと相互作用することを可能にすることができる。上記で論じられたように、実装はインターネットとの使用に適するが、他のネットワークがインターネットに対して代わりに又は追加で使用されてもよく、例えば、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースネットワーク、任意のLAN又はWANなどである。
【0048】
ユーザシステム412のユーザは、そのそれぞれのキャパシティにおいて異なってもよく、特定のユーザシステム412のキャパシティは、こうしたユーザシステムの現在のユーザに対するパーミッション(パーミッションレベル)によって全体的に決定されてよい。例えば、販売員が特定のユーザシステム412を使用してシステム416と相互作用している場合、そのユーザシステムは、上記販売員に割り振られたキャパシティを有することができる。しかしながら、管理者がそのユーザシステム412を使用してシステム416と相互作用する間、そのユーザシステムは管理者に割り振られたキャパシティを有することができる。階層的ロールモデルが使用される場合、あるパーミッションレベルのユーザは、より低いパーミッションレベルのユーザによりアクセス可能なアプリケーション、データ、及びデータベース情報に対するアクセスを有することができ、しかし、より高いパーミッションレベルのユーザによりアクセス可能な特定のアプリケーション、データベース情報、及びデータに対するアクセスを有さないことがある。ゆえに、異なるユーザは、ユーザのそれぞれのセキュリティ又はパーミッションレベル(さらに、「承認」とも呼ばれる)に依存して、アプリケーション及びデータベース情報にアクセス及び修正することに関して異なる能力を一般に有することになる。
【0049】
いくつかの実装によれば、各ユーザシステム412、及びそのコンポーネントのうちいくつか又はすべてが、Intel(登録商標) Pentium(登録商標)プロセッサなどの中央処理ユニット(CPU)を用いて実行されるコンピュータコードを含むブラウザなどのアプリケーションを用いてオペレータ構成可能である。同様に、システム416(及び、2つ以上が存在する場合のMTSのさらなるインスタンス)、及びそのコンポーネントのすべてが、プロセッサシステム417を用いて動作するコンピュータコードを含むアプリケーションを用いてオペレータ構成可能であってよく、プロセッサシステム417は、Intel Pentium(登録商標)プロセッサなどを含み得るCPU、又は複数のCPUを含むように実現されてよい。
【0050】
システム416は、本明細書に説明されるプロセスの実現のいくつかを実行するためにサーバ又は他のコンピューティングシステム(又は、こうしたサーバ若しくはコンピューティングシステムの集合)により実行可能であり、あるいは該サーバ又は他のコンピューティングシステムをプログラムするために使用される、非一時的命令を記憶させた有形のコンピュータ読み取り可能媒体を含む。例えば、コンピュータプログラムコード426は、本明細書に説明されるようにウェブページ、アプリケーション、並びに他のデータ及びメディアコンテンツを相互通信及び処理するようにシステム416を操作及び構成する命令を実現することができる。いくつかの実装において、コンピュータコード426はダウンロード可能であり、ハードディスクに記憶されてよいが、プログラムコード全体又はこれらの一部はまた、ROM又はRAMなどの周知である任意の他の揮発性又は不揮発性のメモリ媒体又はデバイスに記憶されてもよく、あるいは、プログラムコードを記憶することができる任意の媒体、例えば、フロッピーディスク、光ディスク、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、マイクロドライブ、及び磁気光ディスクを含む任意タイプの回転媒体、並びに磁気若しくは光学カード、ナノシステム(分子メモリICを含む)、又は、命令若しくはデータを記憶するのに適した任意の他タイプのコンピュータ読み取り可能媒体若しくはデバイス上で提供されてもよい。さらに、プログラムコード全体又はその一部は、周知のように送信媒体を通じて、例えばインターネットを通じてソフトウェアソースから、又は別のサーバから、送信及びダウンロードされてもよく、あるいは、周知の任意の通信媒体及びプロトコル(例えば、TCP/IP、HTTP、HTTPS、イーサネット(登録商標)等)を用いて、周知の任意の他の既存のネットワーク接続(例えば、エクストラネット、VPN、LAN等)を通じて送信されてもよい。さらに、開示の実装のコンピュータコードは、サーバ又は他のコンピューティングシステム上で実行できる任意のプログラミング言語、例えば、C、C++、HTML、任意の他のマークアップ言語、Java(登録商標)TM、Javascript(登録商標)、ActiveX(登録商標)、任意の他のスクリプティング言語、例えばVBScriptなどにおいて具現化されてもよく、周知である多くの他のプログラミング言語が使用されてもよい(JavaTMはSun Microsystems社の商標である。)。
【0051】
図9は、いくつかの実装による図8の要素の例示的な実装とこれら要素間の例示的な相互接続とのブロック図を示す。すなわち、図9もまた環境410を例示し、しかし図9では、システム416の様々な要素とこうした要素間の様々な相互接続とが、いくつかのより特定の実装に従ってさらなる特定性で示される。図9にも示される図8からの要素は、図9において図8で使用されたのと同じ参照番号を使用する。さらに、図9において、ユーザシステム412は、プロセッサシステム512A、メモリシステム512B、入力システム512C、及び出力システム512Dを含む。プロセッサシステム512Aは、1つ以上のプロセッサの任意の適切な組み合わせを含むことができる。メモリシステム512Bは、1つ以上のメモリデバイスの任意の適切な組み合わせを含むことができる。入力システム512Cは、1つ以上のタッチスクリーンインターフェース、キーボード、マウス、トラックボール、スキャナ、カメラ、又はネットワークへのインターフェースなどの入力デバイスの任意の適切な組み合わせを含むことができる。出力システム512Dは、1つ以上のディスプレイデバイス、プリンタ、又はネットワークへのインターフェースなどの出力デバイスの任意の適切な組み合わせを含むことができる。
【0052】
図9において、図8のネットワークインターフェース420は、一組のHTTPアプリケーションサーバ500~500として実現される。各アプリケーションサーバ500は、本明細書において「アプリサーバ」とも呼ばれ、テナントデータベース422及びその中のテナントデータ523、並びにシステムデータベース424及びその中のシステムデータ525と通信して、ユーザシステム512から受信した要求をサービスするように構成される。テナントデータ523は、個々のテナントストレージ空間513に分割されることができ、テナントストレージ空間513は、物理的又は論理的に配置又は分割されてよい。各テナントストレージ空間513内で、テナントデータ514及びアプリケーションメタデータ516が、各ユーザについて同様に割り当てられることができる。例えば、ユーザの最も最近使用した(MRU)アイテムのコピーが、ユーザストレージ514に記憶されてよい。同様に、テナントである組織全体のMRUアイテムのコピーが、テナントストレージ空間513に記憶されてよい。
【0053】
プロセス空間428は、システムプロセス空間502、個々のテナントプロセス空間504、及びテナント管理プロセス空間510を含む。アプリケーションプラットフォーム418は、アプリケーション開発者のアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズム538を含む。こうしたアプリケーション及びその他が、例えば、テナント管理プロセス510により管理される1つ以上のテナントプロセス空間504として、加入者による実行のために、保存ルーチン536によりメタデータとしてテナントデータベース422に保存されてよい。こうしたアプリケーションに対する起動は、PL/SOQL534を用いてコード化されてよく、PL/SOQL534は、API532に対するプログラミング言語スタイルインターフェース拡張を提供する。いくつかのPL/SOQL言語実装の詳細な説明が、Craig WeissmanによるMETHOD AND SYSTEM FOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI-TENANT ON-DEMAND DATABASE SERVICEと題され2010年6月1日に発行された、本明細書においてその全体を及びすべての目的のために参照により援用される、本発明の譲受人に譲渡された米国特許第7,730,478号で論じられている。アプリケーションに対する起動は、1つ以上のシステムプロセスにより検出でき、上記システムプロセスは、起動を行い、且つ仮想マシン内でアプリケーションとしてメタデータを実行する加入者のために、アプリケーションメタデータ416を取り出すことを管理する。
【0054】
図9のシステム416は、ユーザシステム512におけるユーザ又は開発者に対する、システム416常駐プロセスへのユーザインターフェース(UI)530及びアプリケーションプログラミングインターフェース(API)532をさらに含む。いくつかの他の実装において、環境410は、上記で列挙された要素と同じ要素を有さなくてよく、あるいは、上記で列挙された要素に対して代わりに又は追加で他の要素を有してよい。
【0055】
各アプリケーションサーバ500は、異なるネットワーク接続を介して、例えばテナントデータ523及びシステムデータ525に対するアクセスをそれぞれ有するテナントデータベース422及びシステムデータベース424に、通信可能に結合されることができる。例えば、1つのアプリケーションサーバ500はネットワーク414(例えば、インターネット)を介して結合でき、別のアプリケーションサーバ500は直接ネットワークリンクを介して結合でき、別のアプリケーションサーバ(図示されていない)はさらに異なるネットワーク接続により結合できる。トランスファーコントロールプロトコル及びインターネットプロトコル(TCP/IP)は、アプリケーションサーバ500とシステム416との間で通信するために使用できる典型的なプロトコルの例である。しかしながら、使用されるネットワーク相互接続に依存してシステム416を最適化するように他のトランスポートプロトコルが使用されてもよいことが当業者に明らかであろう。
【0056】
いくつかの実装において、各アプリケーションサーバ500は、システム416のテナントである任意の組織に関連づけられた任意のユーザの要求を扱うように構成される。任意の時間に様々な理由でサーバプールからアプリケーションサーバ500を追加及び削除できることが望ましい可能性があるため、いくつかの実装において、特定のアプリケーションサーバ500に対するユーザ又は組織のサーバアフィニティが存在しない。いくつかのこうした実装において、ロードバランシング機能(例えば、F5 Big‐IPロードバランサ)を実現するインターフェースシステムが、アプリケーションサーバ500とユーザシステム512との間に通信可能に結合されて、アプリケーションサーバ500に対する要求を分配する。1つの実装において、ロードバランサは、最小接続アルゴリズムを使用して、アプリケーションサーバ500に対するユーザ要求をルーティングする。ロードバランシングアルゴリズムの他の例、例えば、ラウンドロビン及び観察された応答時間などが使用されてもよい。例えば、いくつかの例において、同一ユーザからの3つの連続した要求が3つの異なるアプリケーションサーバ500に至ることがあり、異なるユーザからの3つの要求が同一のアプリケーションサーバ500に至ることがある。このようにして、例として、システム416はマルチテナントシステムであり得、このシステム416は、いろいろなユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの記憶とこれらに対するアクセスとを扱う。
【0057】
1つの例示的なストレージ使用事例において、あるテナントが、各販売員がシステム416を使用して自身の販売の態様を管理するところの販売陣(sales force)を採用する会社であり得る。ユーザは、すべてがユーザ個人の販売プロセスに適用可能である連絡先データ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、ゴール及び進捗データ等を(例えば、テナントデータベース422の中に)維持することができる。MTS配置の一例において、アクセス、閲覧、修正、報告、送信、算出等すべきデータ及びアプリケーションのすべてが、ネットワークアクセスを超えるものを有さないユーザシステム512により維持及びアクセスされることができるため、ユーザは、自身の販売努力及びサイクルを多くの異なるユーザシステムのうちいずれかから管理することができる。例えば、販売員が顧客を訪問し、顧客がそのロビーにおいてインターネットアクセスを有する場合、販売員は、ロビーで顧客が到着するのを待つ間に、この顧客に関する重要なアップデートを得ることができる。
【0058】
各ユーザの雇用主にかかわらず、各ユーザのデータは他のユーザのデータとは別個に記憶できるが、いくつかのデータが、テナントである所与の組織の複数のユーザ又はユーザ全員によって共有されるか又はアクセス可能である組織範囲のデータであってよい。ゆえに、テナントレベルで割り振られたシステム416により管理されるいくつかのデータ構造が存在し得ると同時に、他のデータ構造がユーザレベルで管理されてよい。MTSが、あり得る競合他社を含む複数のテナントをサポートすることができるため、MTSは、データ、アプリケーション、及びアプリケーション使用を別個に保持するセキュリティプロトコルを有することができる。さらに、多くのテナントが、自身の独自システムを維持するよりもMTSへのアクセスを選ぶ可能性があるため、冗長性、アップタイム、及びバックアップが、MTSにおいて実現できるさらなる機能である。ユーザ固有データ及びテナント固有データに加えて、システム416は、複数のテナントにより使用可能なシステムレベルのデータ又は他のデータをさらに維持してよい。こうしたシステムレベルのデータには、複数テナント間で共有可能な産業レポート、ニュース、投稿メッセージ等を含むことができる。
【0059】
いくつかの実装において、ユーザシステム512(これは、さらにクライアントシステムであり得る)は、アプリケーションサーバ500と通信して、システム416からのシステムレベル及びテナントレベルのデータを要求し、更新する。こうした要求及び更新は、1つ以上のクエリをテナントデータベース422又はシステムデータベース424に送信することを含んでよい。システム416(例えば、システム416の中のアプリケーションサーバ500)は、所望の情報にアクセスするように設計された1つ以上のSQLステートメント(例えば、1つ以上のSQLクエリ)を自動的に生成することができる。システムデータベース424は、データベースからの要求されたデータにアクセスするためのクエリプランを生成してよい。用語「クエリプラン」は、データベースシステム内の情報にアクセスするために使用される1つ以上のオペレーションを一般に参照する。
【0060】
各データベースは、所定の又はカスタマイズ可能なカテゴリに合わせられたデータを含む、一組の論理テーブルなどのオブジェクトの集合として一般に見ることができる。「テーブル」はデータオブジェクトの一表現であり、本明細書において、いくつかの実装に従うオブジェクト及びカスタムオブジェクトの概念的説明を簡素化するのに使用されることがある。「テーブル」及び「オブジェクト」は本明細書において置き換え可能に使用され得ることが理解されるべきである。各テーブルは、可視のスキーマの中の列又はフィールドとして論理的に配置された1つ以上のデータカテゴリを一般に含む。テーブルの各行又は要素は、フィールドによって定義された各カテゴリについてのデータのインスタンスを含むことができる。例えば、CRMデータベースが、名前、住所、電話番号、ファックス番号などの基本的な連絡先情報のフィールドで顧客を説明するテーブルを含んでよい。別のテーブルが、顧客、プロダクト、販売価格、日付などの情報のフィールドを含む購入注文を記述してよい。いくつかのMTS実装において、すべてのテナントによる使用のために、標準のエンティティテーブルが提供されてよい。CRMデータベースアプリケーションについて、こうした標準のエンティティには、ケース、アカウント、連絡先、リード、及び機会のデータオブジェクトのテーブルを含み、各々が予め定義されたフィールドを含んでよい。本明細書において用いられるとき、用語「エンティティ」もまた、「オブジェクト」及び「テーブル」と置き換え可能に使用されることがある。
【0061】
いくつかのMTS実装において、テナントは、カスタムオブジェクトを作成及び記憶することを可能にされ、あるいは、例えばカスタムインデックスフィールドを含むカスタムフィールドを標準のオブジェクトに対して作成することにより、標準のエンティティ又はオブジェクトをカスタマイズすることを可能にされてよい。WeissmanらによるCUSTOM ENTITIES AND FIELDS IN A MULTI-TENANT DATABASE SYSTEMと題され2010年8月17日に発行された、本明細書においてその全体を及びすべての目的のために参照により援用される、本発明の譲受人に譲渡された米国特許第7,779,039号は、マルチテナントデータベースシステムにおいてカスタムオブジェクトを作成し、標準オブジェクトをカスタマイズするためのシステム及び方法を教示している。いくつかの実装において、例えば、すべてのカスタムエンティティデータ行が単一のマルチテナントの物理テーブルに記憶され、このテーブルは組織ごとに複数の論理テーブルを含むことがある。顧客の複数の「テーブル」が実際は1つの大きいテーブルに記憶されること、又は、顧客のデータが他の顧客のデータと同じテーブルに記憶され得ることは、顧客に対して透過的である。
【0062】
図10Aは、いくつかの実装によるオンデマンドデータベースサービス環境600のアーキテクチャコンポーネントの例を示すシステム図を示す。本明細書に説明されるように、組み合わされた1つ以上のネットワークを一般に参照するクラウド604に通信可能に接続されたクライアントマシンは、1つ以上のエッジルータ608及び612を介してオンデマンドデータベースサービス環境600と通信することができる。クライアントマシンは、上記で説明されたユーザシステム12のうち任意のものの例であり得る。エッジルータは、ファイアウォール616を通じて1つ以上のコアスイッチ620及び624と通信することができる。コアスイッチは、ロードバランサ628と通信することができ、ロードバランサ628は、ポッド640及び644などの異なるポッド上にサーバ負荷を分配することができる。ポッド640及び644は、1つ以上のサーバ又は他のコンピューティングリソースを各々含むことができ、オンデマンドサービスを提供するために使用されるデータ処理及び他の動作を実行することができる。ポッドとの通信は、ポッドスイッチ632及び636を介して行うことができる。オンデマンドデータベースサービス環境のコンポーネントは、データベースファイアウォール648及びデータベーススイッチ652を通じてデータベースストレージ656と通信することができる。
【0063】
図10A及び図10Bに示されるように、オンデマンドデータベースサービス環境にアクセスすることは、様々な異なるハードウェア又はソフトウェアコンポーネント間で送信される通信を含むことができる。さらに、オンデマンドデータベースサービス環境600は、実際のオンデマンドデータベースサービス環境の簡素化された表現である。例えば、図10A及び図10Bには、各タイプの1つ又は2つのデバイスのみが示されているが、オンデマンドデータベースサービス環境のいくつかの実装は、各タイプの1つから複数の範囲のデバイスを含むことができる。また、オンデマンドデータベースサービス環境は、図10A及び図10Bに示される各デバイスを含む必要はなく、あるいは図10A及び図10Bに示されないさらなるデバイスを含むことができる。
【0064】
さらに、オンデマンドデータベースサービス環境600内のデバイスの1つ以上が、同一の物理デバイス上又は異なるハードウェア上に実現できることが理解されるべきである。いくつかのデバイスは、ハードウェア又はハードウェアとソフトウェアの組み合わせを使用して実現できる。ゆえに、本明細書において使用される「データ処理装置」、「マシン」、「サーバ」、及び「デバイス」のような用語は、単一のハードウェアデバイスに限定されず、むしろ、これらの用語への参照は、説明された機能性を提供するよう構成されたハードウェア及びソフトウェアの任意の適切な組み合わせを含むことができる。
【0065】
クラウド604は、しばしばインターネットを含むデータネットワーク又は複数のデータネットワークを参照することを意図している。クラウド604と通信可能に接続されたクライアントマシンは、オンデマンドデータベースサービス環境600の他のコンポーネントと通信して、オンデマンドデータベースサービス環境により提供されるサービスにアクセスすることができる。例えば、クライアントマシンは、オンデマンドデータベースサービス環境にアクセスして、情報を取り出し、保存、編集、又は処理することができる。いくつかの実装において、エッジルータ608及び612は、クラウド604とオンデマンドデータベースサービス環境600の他の構成要素との間でパケットをルーティングする。例えば、エッジルータ608及び612は、ボーダーゲートウェイプロトコル(BGP)を採用することができる。BGPはインターネットのコアルーティングプロトコルである。エッジルータ608及び612は、インターネット上の自律システム間のネットワーク到達性を指定するIPネットワーク又は「プレフィックス」のテーブルを維持することができる。
【0066】
いくつかの実装において、ファイアウォール616は、オンデマンドデータベースサービス環境600の内部コンポーネントをインターネットトラフィックから保護することができる。ファイアウォール616は、一組のルール及び他の基準に基づいて、オンデマンドデータベースサービス環境600の内部コンポーネントへのアクセスをブロック、許可、又は拒否することができる。ファイアウォール616は、パケットフィルタ、アプリケーションゲートウェイ、ステートフルフィルタ、プロキシサーバ、又は任意の他タイプのファイアウォールのうちの1つ以上として動作することができる。
【0067】
いくつかの実装において、コアスイッチ620及び624は、オンデマンドデータベースサービス環境600内のパケットを転送する高キャパシティスイッチである。コアスイッチ620及び624は、オンデマンドデータベースサービス環境内の異なるコンポーネント間でデータを迅速にルーティングするネットワークブリッジとして構成できる。いくつかの実装において、2つ以上のコアスイッチ620及び624の使用は、冗長性又は低減されたレイテンシを提供し得る。
【0068】
いくつかの実装において、ポッド640及び644は、オンデマンドデータベースサービス環境により提供されるコアデータ処理及びサービス機能を実行する。各ポッドは、様々なタイプのハードウェア又はソフトウェアコンピューティングリソースを含むことができる。ポッドアーキテクチャの一例が、図10Bを参照してより詳細に論じられる。いくつかの実装において、ポッド640と644との間の通信は、ポッドスイッチ632及び636を介して行われる。ポッドスイッチ632及び636は、例えばコアスイッチ620及び624を介して、ポッド640及び644とクラウド604に通信可能に接続されたクライアントマシンとの間の通信を容易にすることができる。また、ポッドスイッチ632及び636は、ポッド640及び644とデータベースストレージ656との間の通信を容易にし得る。いくつかの実装において、ロードバランサ628は、ポッド640と644との間でワークロードを分配することができる。ポッド間のオンデマンドサービス要求のバランスをとることは、リソースの使用を向上し、スループットを増加し、応答時間を低減し、又はオーバーヘッドを低減するのに役立つ可能性がある。ロードバランサ628は、トラフィックを分析及び転送するためのマルチレイヤスイッチを含んでよい。
【0069】
いくつかの実装において、データベースストレージ656へのアクセスは、データベースファイアウォール648により守られる。データベースファイアウォール648は、プロトコルスタックのデータベースアプリケーションレイヤで動作するコンピュータアプリケーションファイアウォールとして動作することができる。データベースファイアウォール648は、構造問合せ言語(SQL)インジェクション、データベースルートキット、及び承認されていない情報開示などのアプリケーション攻撃からデータベースストレージ656を保護することができる。いくつかの実装において、データベースファイアウォール648は、トラフィックをゲートウェイルータに渡す前にトラフィックをプロキシする(proxy)よう1つ以上の形式のリバースプロキシサービスを使用するホストを含む。データベースファイアウォール648は、データベーストラフィックの内容を検査し、特定のコンテンツ又はデータベース要求をブロックすることができる。データベースファイアウォール648は、TCP/IPスタックの上のSQLアプリケーションレベルで動作して、データベース又はSQL管理インターフェースへのアプリケーションの接続を管理し、データベースネットワーク又はアプリケーションインターフェースへ又はこれらから移動するパケットを傍受及び強制することができる。
【0070】
いくつかの実装において、データベースストレージ656との通信は、データベーススイッチ652を介して行われる。マルチテナントデータベースストレージ656は、データベースクエリを扱うための2つ以上のハードウェア又はソフトウェアコンポーネントを含むことができる。したがって、データベーススイッチ652は、オンデマンドデータベースサービス環境の他のコンポーネント(例えば、ポッド640及び644)により送信されたデータベースクエリを、データベースストレージ656内の正しいコンポーネントに向けることができる。いくつかの実装において、データベースストレージ656は、図8及び図9を参照して上記で説明したように、多くの異なる組織により共有されるオンデマンドデータベースシステムである。
【0071】
図10Bは、いくつかの実装によるオンデマンドデータベースサービス環境のアーキテクチャコンポーネントの例をさらに示すシステム図を示す。ポッド644は、オンデマンドデータベースサービス環境600のユーザにサービスを行うために使用できる。いくつかの実装において、各ポッドは様々なサーバ又は他のシステムを含む。ポッド644は、1つ以上のコンテンツバッチサーバ664、コンテンツ検索サーバ668、クエリサーバ682、ファイルフォース(file force)サーバ686、アクセス制御システム(ACS)サーバ680、バッチサーバ684、及びアプリサーバ688を含む。ポッド644はまた、データベースインスタンス690、クイックファイルシステム(QFS)692、及びインデクサ694を含むことができる。いくつかの実装において、ポッド644内のサーバ間の一部又は全部の通信がスイッチ636を介して送信され得る。
【0072】
いくつかの実装において、アプリサーバ688は、ポッド644を介してオンデマンドデータベースサービス環境600により提供されるアプリケーションの構築をサポートするための手順(例えば、プログラム、ルーチン、スクリプト)の実行専用のハードウェア又はソフトウェアフレームワークを含む。いくつかの実装において、アプリサーバ688のハードウェア又はソフトウェアフレームワークは、本明細書に説明される様々な方法又はプロセスのブロックの実行を含む、本明細書に説明されるサービスの動作を実行するように構成される。いくつかの代替的な実装において、2つ以上のアプリサーバ688が含まれ、こうした方法を実行するために協働することができ、あるいは本明細書に説明される1つ以上の他のサーバが、開示の方法を実行するように構成されてよい。
【0073】
コンテンツバッチサーバ664は、ポッドの内部の要求を扱うことができる。いくつかのこうした要求は、長期にわたり、あるいは特定の顧客に結び付けられないことがある。例えば、コンテンツバッチサーバ664は、ログマイニング、クリーンアップワーク、及びメンテナンスタスクに関連する要求を扱うことができる。コンテンツ検索サーバ668は、クエリ及びインデクサ機能を提供することができる。例えば、コンテンツ検索サーバ668により提供される機能は、ユーザがオンデマンドデータベースサービス環境に記憶されたコンテンツを検索することを可能にし得る。ファイルフォースサーバ686は、ファイルフォースストレージ698に記憶された情報の要求を管理することができる。ファイルフォースストレージ698は、文書、画像、及びベーシックラージオブジェクト(BLOB)などの情報を記憶することができる。ファイルフォースサーバ686を使用して情報の要求を管理することにより、データベース上のイメージフットプリントを低減することができる。クエリサーバ682は、1つ以上のファイルストレージシステムから情報を取り出すために使用できる。例えば、クエリシステム682は、アプリサーバ688から情報の要求を受信し、ポッドの外側に位置するNFS696に情報クエリを送信することができる。
【0074】
ポッド644は、異なる組織が同じデータベースへのアクセスを共有するマルチテナント環境として構成されたデータベースインスタンス690を共有することができる。さらに、ポッド644により行われるサービスは、様々なハードウェア又はソフトウェアリソースを要求することができる。いくつかの実装において、ACSサーバ680は、データ、ハードウェアリソース、又はソフトウェアリソースへのアクセスを制御する。いくつかの実装において、バッチサーバ684は、指定された時間にタスクを実行するために使用されるバッチジョブを処理する。例えば、バッチサーバ684は、バッチジョブをトリガするために、命令をアプリサーバ688などの他のサーバに送信することができる。
【0075】
いくつかの実装において、QFS692は、カリフォルニア州サンタクララのSun Microsystems(登録商標)から入手可能なオープンソースファイルストレージシステムである。QFSは、ポッド644内で利用可能な情報を記憶しアクセスするための高速アクセスファイル記憶システムとして機能することができる。QFS692は、いくつかのボリューム管理能力をサポートすることができ、多くのディスクをファイルストレージシステムに一緒にグループ化することができる。ファイルストレージシステムのメタデータは別個のディスクセットに保持することができ、これは、長いディスクシークが許容できないストリーミングアプリケーションに有用であり得る。ゆえに、QFSシステムは、ネットワークファイルストレージシステム696又は他のストレージシステムに記憶されたデータを識別、取り出し、移動、又は更新するために、1つ以上のコンテンツ検索サーバ668又はインデクサ694と通信することができる。
【0076】
いくつかの実装において、1つ以上のクエリサーバ682は、ポッド644の外側に記憶された情報を取り出し又は更新するために、NFS696と通信する。NFS696は、ポッド644内に位置するサーバが、ローカルストレージがアクセスされる方法と同様の方法でネットワークを通じてファイルにアクセスするための情報にアクセスすることを可能にし得る。いくつかの実装において、クエリサーバ682からのクエリは、ロードバランサ628を介してNFS696に送信され、ロードバランサ628は、オンデマンドデータベースサービス環境で利用可能な様々なリソースにわたりリソース要求を分配することができる。また、NFS696は、QFS692と通信して、NFS696に記憶された情報を更新し、あるいはポッド644内に位置するサーバによる使用のためにQFS692に情報を提供することができる。
【0077】
いくつかの実装において、ポッドは、1つ以上のデータベースインスタンス690を含む。データベースインスタンス690は、QFS692に情報を送信することができる。情報がQFSに送信されたとき、それは、さらなるデータベース呼び出しを使用することなく、ポッド644内のサーバによる使用に利用可能であり得る。いくつかの実装において、データベース情報はインデクサ694に送信される。インデクサ694は、データベース690又はQFS692で利用可能な情報のインデックスを提供することができる。インデックス情報は、ファイルフォースサーバ686又はQFS692に提供され得る。
【0078】
図11は、本明細書で論じられる方法論のうち任意の1つ以上をマシンに実行させる命令セットが実行され得るコンピュータシステム700の例示的形態におけるマシンの図表現を示す。システム700は、マシンに本明細書で論じられた方法論のうち任意の1つ以上を実行させる命令セットが実行され得るコンピュータシステムの形態であってよい。別の実施形態において、マシンは、LAN、イントラネット、エクストラネット、又はインターネット内の他のマシンに接続(例えば、ネットワーク接続)されてもよい。マシンは、クライアント/サーバネットワーク環境でサーバマシンのキャパシティで動作してよい。マシンは、パーソナルコンピュータ(PC)、セットトップボックス(STB)、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、又はそのマシンにより取られるべきアクションを指定する命令セット(順次又はその他)を実行することができる任意のマシンであってよい。さらに、単一のマシンのみが図示されているが、用語「マシン」はまた、本明細書で論じられる方法論のうちいずれか1つ以上を実行する命令のセット(又は複数のセット)を個々に又は連帯的に実行するマシンの任意の集合を含むとみなされるものとする。
【0079】
例示的なコンピュータシステム700は、処理デバイス(プロセッサ)702、メインメモリ704(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、例えば同期DRAM(SDRAM)など)、スタティックメモリ706(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM))、及びデータストレージデバイス718を含み、これらはバス730を介して互いに通信する。
【0080】
処理デバイス702は、マイクロプロセッサ、中央処理ユニットなどの1つ以上の汎用処理デバイスを表す。より詳細には、処理デバイス702は、複合命令セット計算(CISC)マイクロプロセッサ、縮小命令セット計算(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、又は他の命令セットを実現するプロセッサ若しくは命令セットの組み合わせを実現するプロセッサであってよい。また、処理デバイス702は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つ以上の専用処理デバイスであってもよい。
【0081】
コンピュータシステム700は、ネットワークインターフェースデバイス708をさらに含んでよい。コンピュータシステム700はまた、ビデオ表示ユニット710(例えば、液晶ディスプレイ(LCD)又は陰極線管(CRT))、英数字入力デバイス712(例えば、キーボード)、カーソル制御デバイス714(例えば、マウス)、及び信号生成デバイス716(例えば、スピーカ)を含んでもよい。
【0082】
データストレージデバイス718は、本明細書に説明される方法論又は機能のうちいずれか1つ以上を具現化する命令722の1つ以上のセット(例えば、インメモリバッファサービス74の命令)が記憶されたコンピュータ読み取り可能媒体728を含んでよい。また、命令722は、コンピュータ読み取り可能媒体を同様に構成するコンピュータシステム700、メインメモリ704、及び処理デバイス702によるその実行中に、処理デバイス702のメインメモリ704内及び/又は処理論理726内に、完全に又は少なくとも部分的に存在してもよい。命令はさらに、ネットワークインターフェースデバイス708を介してネットワーク720を通じて送信又は受信されてもよい。
【0083】
コンピュータ読み取り可能記憶媒体728は、一例示的な実施形態において単一の媒体であるように示されているが、用語「コンピュータ読み取り可能記憶媒体」は、1つ以上の命令セットを記憶する単一の媒体又は複数の媒体(例えば、集中型又は分散型のデータベース、及び/又は関連づけられたキャッシュ及びサーバ)を含むとみなされるべきである。用語「コンピュータ読み取り可能記憶媒体」は、また、マシンによる実行のための命令セットを記憶、エンコード、又は搬送することができ、且つマシンに本発明の方法論のうち任意の1つ以上を実行させる任意の媒体を含むとみなされるものとする。したがって、用語「コンピュータ読み取り可能記憶媒体」は、これらに限定されないがソリッドステートメモリ、光媒体、及び磁気媒体を含むとみなされるものとする。
【0084】
前述の説明は、本発明のいくつかの実施形態の良い理解を提供するために、特定のシステム、コンポーネント、方法等の例などの多くの特定の詳細を記述している。しかしながら、本発明の少なくともいくつかの実施形態がこれら特定の詳細なしに実施され得ることが当業者に明らかであろう。他の例において、周知のコンポーネント又は方法は、本発明を不要に分かりにくくすることを避けるために、詳細に説明されず、あるいは簡素なブロック図形式で提示される。ゆえに、記述された特定の詳細は単に例示に過ぎない。具体的な実装はこれらの例示的な詳細と異なってよく、依然として本発明の範囲内にあることが意図される。
【0085】
上述の説明では、多くの詳細が記述されている。しかしながら、本開示の恩恵を有する当業者には、本発明の実施形態がこれら特定の詳細なしに実施され得ることが明らかであろう。いくつかの場合、説明を分かりにくくすることを避けるために、周知の構造及びデバイスが詳細ではなくブロック図形式で示される。
【0086】
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現の観点で提示されている。これらのアルゴリズム説明及び表現は、他の当業者にその作用の実体を最も効果的に伝えるために、データ処理分野の当業者により使用される手段である。アルゴリズムは、ここで、そして一般に、所望の結果をもたらすステップの自己一貫したシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。必ずではないが、通常、これらの量は、記憶され、転送され、組み合わせられ、比較され、またその他の方法で操作されることができる、電気又は磁気信号の形式をとる。主に公共的使用の理由で、これらの信号をビット、値、要素、シンボル、キャラクタ、語、数字などと呼ぶことが時に便利であることが判明している。
【0087】
しかしながら、上記のすべて及び同様の用語は適切な物理量に関連づけられるべきであり、これら量に適用される簡便なラベルに過ぎないという点に留意すべきである。上述の議論から明らかなように、別段具体的に示されない限り、説明全体を通じて、「決定する」、「識別する」、「追加する」、「選択する」などの用語を利用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理量(例えば、電子)として表されるデータを、コンピュータシステムのメモリ若しくはレジスタ又は他のこうした情報記憶、送信、若しくは表示デバイス内の物理量として同様に表される他のデータへ操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを参照することが十分理解される。
【0088】
本発明の実施形態はまた、本明細書における動作を実行する装置に関する。この装置は、必要とされる目的に対して特別に構築されてよく、あるいはコンピュータに記憶されたコンピュータプログラムにより選択的に作動又は再構成される汎用コンピュータを含んでもよい。こうしたコンピュータプログラムは、これらに限られないがフロッピーディスク、光ディスク、CD-ROM、及び磁気光ディスクを含む任意タイプのディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光学カード、又は電子命令を記憶するのに適した任意タイプの媒体などの、コンピュータ読み取り可能記憶媒体に記憶されてよい。
【0089】
本明細書に提示されるアルゴリズム及び表示は本質的に、いずれかの特定のコンピュータ又は他の装置に関連しない。様々な汎用システムが本明細書の教示に従うプログラムと共に使用されてよく、あるいは、必要とされる方法ステップを実行するためにより特化された装置を構築することが便利と判明する可能性がある。様々なこれらのシステムに必要とされる構造は以下の説明から明らかになる。さらに、本発明は、いずれかの特定のプログラミング言語を参照して説明されていない。本明細書に説明される本発明の教示を実現するために、様々なプログラミング言語が使用され得ることが十分理解される。
【0090】
前述の詳細な説明において少なくとも1つの例示的な実施形態が提示されたが、多数のバリエーションが存在することが十分理解されるべきである。また、本明細書に説明する1つ又は複数の例示的な実施形態は、請求される対象事項の範囲、適用可能性、又は構成を何らかの方法で限定するよう意図するものではないことが理解されるべきである。むしろ、前述の詳細な説明は、説明された1つ又は複数の実施形態を実現するための便利なロードマップを当業者に提供するであろう。本特許出願の出願時に既知の均等物及び予見可能な均等物を含む、特許請求の範囲により定義される範囲から逸脱することなく、要素の機能及び配置において様々な変更がなされ得ることが理解されるべきである。
上記の実施形態につき以下の付記を残しておく。
[付記1]
プライマリサイトを含むデータベースシステムにおける方法であって、前記プライマリサイトは、プライマリデータベースが利用可能であるとき前記プライマリデータベースにデータを書き込み且つ前記プライマリデータベースからデータを読み取るアプリケーションサーバをさらに含み、当該方法は、
自己修復モジュールにより、前記プライマリデータベースの利用不能を自動的に検出するステップと、
前記自己修復モジュールにより、前記プライマリサイトのスタンバイデータベースが利用可能であるかどうかを決定するステップであり、前記スタンバイデータベースは前記プライマリデータベースの複製である、ステップと、
前記自己修復モジュールが、前記プライマリデータベースが利用不能であると検出し前記スタンバイデータベースが利用可能であると決定したとき、前記自己修復モジュールによりフェイルオーバ処理シーケンスを自動的に開始するステップであり、前記フェイルオーバ処理シーケンスは、
前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
フェイルオーバロール移行の後、前記アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、
を含む、ステップと、
を含む方法。
[付記2]
前記スタンバイデータベースに記憶されたデータのスナップショットを周期的に取るステップと、
データの前記スナップショットを前記プライマリサイトに実現されない別個のストレージハードウェアを含むスナップショットストレージシステムに記憶するステップと、
をさらに含む付記1に記載の方法。
[付記3]
前記スタンバイデータベースは第1のスタンバイデータベースであり、前記フェイルオーバ処理シーケンスは、
前記自己修復モジュールにおいて、スナップショットストレージシステムに記憶された前記プライマリデータベースからの最も最近のスナップショットデータを使用して新しいデータベースを自動的に作成することと、
前記自己修復モジュールにおいて、前記新しいデータベースを前記プライマリサイトにおける第2のスタンバイデータベースとして自動的に追加して、キャパシティをフルに回復することと、
をさらに含む付記2に記載の方法。
[付記4]
前記プライマリデータベースは第1のプライマリデータベースであり、前記データベースシステムは、第2のプライマリデータベースを含む災害復旧サイトをさらに含み、当該方法は、
前記プライマリサイトのデータベースのすべてが故障し、前記プライマリサイトにおいてスタンバイデータベースが利用可能でないとき、ロードバランサを介し、ユーザシステムからのトラフィックを前記第2のプライマリデータベースへのアクセスを有する前記災害復旧サイトにおけるアプリケーションサーバに向けるステップ
をさらに含む付記1、2、又は3に記載の方法。
[付記5]
前記自己修復モジュールが前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定したとき、前記アプリケーションサーバが前記プライマリサイトにおける前記スタンバイデータベースからの読み取り専用アクセスを有することを一時的に可能にするステップ
をさらに含む付記1乃至4のうちいずれか1項に記載の方法。
[付記6]
前記自己修復モジュールが前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定したとき、前記自己修復モジュールにおいて、前記フェイルオーバ処理シーケンスを自動的に開始する前に、前記プライマリサイトにおける前記プライマリデータベースが復旧時間内に復旧したかどうかを決定するステップと、
前記プライマリサイトにおける前記プライマリデータベースが前記復旧時間内に復旧しなかったとき、前記自己修復モジュールにおいて、前記フェイルオーバ処理シーケンスを自動的に開始するステップと、
をさらに含む付記1乃至5のうちいずれか1項に記載の方法。
[付記7]
前記自己修復モジュールが前記プライマリサイトにおける前記プライマリデータベースが前記復旧時間内に復旧したと決定したとき、前記プライマリデータベースを自動的に再開するステップであり、前記アプリケーションサーバにおけるアプリケーションは前記プライマリデータベースとして前記プライマリサイトからの前記プライマリデータベースを継続して使用する、ステップ
をさらに含む付記6に記載の方法。
[付記8]
前記プライマリデータベースは第1のデータベースサーバ及び第1のストレージサブシステムを含み、前記スタンバイデータベースは第2のデータベースサーバ及び第2のストレージサブシステムを含み、
自動的に有効にする前に、前記第1のストレージサブシステムを完全でアクセス可能な場合に復旧のために前記第1のデータベースサーバから前記第2のデータベースサーバに自動的にアタッチするステップ
をさらに含む付記1乃至7のうちいずれか1項に記載の方法。
[付記9]
プロセッサ及びメモリを含むコンピューティングシステムであって、前記メモリはコンピュータ実行可能命令を含み、前記コンピュータ実行可能命令は当該コンピューティングシステムに、
プライマリサイトにおけるプライマリデータベースの利用不能を自動的に検出することであって、前記プライマリサイトは、前記プライマリデータベースが利用可能であるとき前記プライマリデータベースにデータを書き込み且つ前記プライマリデータベースからデータを読み取るアプリケーションサーバをさらに含み、
前記プライマリサイトにおいてスタンバイデータベースが依然として利用可能であるかどうかを決定することであって、前記スタンバイデータベースは前記プライマリデータベースの複製であり、
前記プライマリデータベースが利用不能であると検出され前記スタンバイデータベースが利用可能であると決定されたとき、フェイルオーバ処理シーケンスを自動的に開始することであって、前記フェイルオーバ処理シーケンスは、
前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
フェイルオーバロール移行の後、前記アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、を含む
ことをさせることができる、コンピューティングシステム。
[付記10]
前記コンピュータ実行可能命令はさらに当該コンピューティングシステムに、
前記スタンバイデータベースに記憶されたデータのスナップショットを周期的に取ることであって、前記スタンバイデータベースは第1のスタンバイデータベースであり、
データの前記スナップショットを前記プライマリサイトに実現されない別個のストレージハードウェアを含むスナップショットストレージシステムに記憶し、
スナップショットストレージシステムに記憶された前記プライマリデータベースからの最も最近のスナップショットデータを使用して新しいデータベースを自動的に作成し、
前記新しいデータベースを前記プライマリサイトにおける第2のスタンバイデータベースとして自動的に追加してキャパシティをフルに回復する
ことをさせることができる、付記9に記載のコンピューティングシステム。
[付記11]
前記コンピュータ実行可能命令はさらに当該コンピューティングシステムに、
前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定されたとき、前記アプリケーションサーバが前記プライマリサイトにおける前記スタンバイデータベースからの読み取り専用アクセスを有することを一時的に可能にする
ことをさせることができる、付記9又は10に記載のコンピューティングシステム。
[付記12]
前記プライマリデータベースは第1のデータベースサーバ及び第1のストレージサブシステムを含み、前記スタンバイデータベースは第2のデータベースサーバ及び第2のストレージサブシステムを含み、前記コンピュータ実行可能命令はさらに当該コンピューティングシステムに、
自動的に有効にする前に、前記第1のストレージサブシステムを完全でアクセス可能な場合に復旧のために前記第1のデータベースサーバから前記第2のデータベースサーバに自動的にアタッチする
ことをさせることができる、付記9、10、又は11に記載のコンピューティングシステム。
[付記13]
自動自己修復データベースシステムであって、
プライマリサイトを含み、前記プライマリサイトは、
プライマリデータベースと、
前記プライマリデータベースが利用可能であるとき前記プライマリデータベースにデータを書き込み且つ前記プライマリデータベースからデータを読み取るアプリケーションサーバと、
前記プライマリデータベースの複製であるスタンバイデータベースと、
自己修復モジュールと
を含み、前記自己修復モジュールは、
前記プライマリデータベースの利用不能を自動的に検出し、
前記プライマリサイトの前記スタンバイデータベースが利用可能であるかどうかを決定し、
前記自己修復モジュールが、前記プライマリデータベースが利用不能であると検出し前記プライマリサイトの前記スタンバイデータベースが利用可能であると決定したとき、フェイルオーバ処理シーケンスを自動的に開始することであって、前記フェイルオーバ処理シーケンスは、
前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
フェイルオーバロール移行の後、前記アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、を含む
ように構成される、自動自己修復データベースシステム。
[付記14]
前記自己修復モジュールは、前記スタンバイデータベースに記憶されたデータのスナップショットを周期的に取るようにさらに構成され、当該自動自己修復データベースシステムは、
遠隔に位置し且つ前記プライマリサイトに実現されない別個のストレージハードウェアを含むスナップショットストレージシステム、をさらに含み、前記スナップショットストレージシステムは、データの前記スナップショットを記憶するように構成される、付記13に記載の自動自己修復データベースシステム。
[付記15]
前記スタンバイデータベースは第1のスタンバイデータベースであり、前記自己修復モジュールは、前記フェイルオーバ処理シーケンスの一部として、スナップショットストレージシステムに記憶された前記プライマリデータベースからの最も最近のスナップショットデータを使用して新しいデータベースを自動的に作成し、前記新しいデータベースを前記プライマリサイトにおける第2のスタンバイデータベースとして自動的に追加してキャパシティをフルに回復するようにさらに構成される、付記14に記載の自動自己修復データベースシステム。
[付記16]
前記プライマリデータベースは第1のプライマリデータベースであり、当該自動自己修復データベースシステムは、
ロードバランサと、
アプリケーションサーバ及び第2のプライマリデータベースを含む災害復旧サイトと、
をさらに含み、
前記ロードバランサは、前記プライマリサイトのデータベースのすべてが故障し、前記プライマリサイトにおいてスタンバイデータベースが利用可能でないとき、ユーザシステムからのトラフィックを前記第2のプライマリデータベースへのアクセスを有する前記災害復旧サイトにおける前記アプリケーションサーバに向けるように構成される、
付記13乃至15のうちいずれか1項に記載の自動自己修復データベースシステム。
[付記17]
前記自己修復モジュールは、前記自己修復モジュールが前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定したとき、前記アプリケーションサーバが前記プライマリサイトにおける前記スタンバイデータベースからの読み取り専用アクセスを有することを一時的に可能にするようにさらに構成される、付記13乃至16のうちいずれか1項に記載の自動自己修復データベースシステム。
[付記18]
前記自己修復モジュールは、
前記自己修復モジュールが前記スタンバイデータベースが前記プライマリサイトにおいて利用可能であると決定したとき、前記フェイルオーバ処理シーケンスを自動的に開始する前に、前記プライマリサイトにおける前記プライマリデータベースが復旧時間内に復旧したかどうかを決定し、
前記プライマリサイトにおける前記プライマリデータベースが前記復旧時間内に復旧しなかったとき前記フェイルオーバ処理シーケンスを自動的に開始する
ようにさらに構成される、付記13乃至17のうちいずれか1項に記載の自動自己修復データベースシステム。
[付記19]
前記自己修復モジュールは、
前記自己修復モジュールが前記プライマリサイトにおける前記プライマリデータベースが前記復旧時間内に復旧したと決定したとき、前記プライマリデータベースを自動的に再開することであって、前記アプリケーションサーバにおけるアプリケーションは前記プライマリデータベースとして前記プライマリサイトからの前記プライマリデータベースを継続して使用する
ようにさらに構成される、付記18に記載の自動自己修復データベースシステム。
[付記20]
前記プライマリデータベースは第1のデータベースサーバ及び第1のストレージサブシステムを含み、前記スタンバイデータベースは第2のデータベースサーバ及び第2のストレージサブシステムを含み、
前記自己修復モジュールは、
自動的に有効にする前に、前記第1のストレージサブシステムを完全でアクセス可能な場合に復旧のために前記第1のデータベースサーバから前記第2のデータベースサーバに自動的にアタッチする
ようにさらに構成される、付記13乃至19のうちいずれか1項に記載の自動自己修復データベースシステム。
[付記21]
コンピューティングシステムに、
プライマリサイトにおけるプライマリデータベースの利用不能を自動的に検出することであって、前記プライマリサイトは、前記プライマリデータベースが利用可能であるとき前記プライマリデータベースにデータを書き込み且つ前記プライマリデータベースからデータを読み取るアプリケーションサーバをさらに含み、
前記プライマリサイトにおいてスタンバイデータベースが依然として利用可能であるかどうかを決定することであって、前記スタンバイデータベースは前記プライマリデータベースの複製であり、
前記プライマリデータベースが利用不能であると検出され前記スタンバイデータベースが利用可能であると決定されたとき、フェイルオーバ処理シーケンスを自動的に開始することであって、前記フェイルオーバ処理シーケンスは、
前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
フェイルオーバロール移行の後、前記アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、を含む
ことをさせることができるコンピュータ実行可能命令を含むコンピュータプログラム。
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
図9
図10A
図10B
図11