JP2020511708A - 自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 - Google Patents

自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 Download PDF

Info

Publication number
JP2020511708A
JP2020511708A JP2019542595A JP2019542595A JP2020511708A JP 2020511708 A JP2020511708 A JP 2020511708A JP 2019542595 A JP2019542595 A JP 2019542595A JP 2019542595 A JP2019542595 A JP 2019542595A JP 2020511708 A JP2020511708 A JP 2020511708A
Authority
JP
Japan
Prior art keywords
database
primary
standby
data
site
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019542595A
Other languages
English (en)
Other versions
JP7208906B6 (ja
JP7208906B2 (ja
Inventor
チェン,ボアン
タム,ドナルド
コリンズ,ジェシー
チャオ,シェン
リウ,テッド
ユー,ヤンジン
Original Assignee
セールスフォース ドット コム インコーポレイティッド
セールスフォース ドット コム インコーポレイティッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by セールスフォース ドット コム インコーポレイティッド, セールスフォース ドット コム インコーポレイティッド filed Critical セールスフォース ドット コム インコーポレイティッド
Publication of JP2020511708A publication Critical patent/JP2020511708A/ja
Priority to JP2022002015A priority Critical patent/JP7305813B2/ja
Application granted granted Critical
Publication of JP7208906B2 publication Critical patent/JP7208906B2/ja
Publication of JP7208906B6 publication Critical patent/JP7208906B6/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

プライマリデータベースと、プライマリデータベースが利用可能なときにプライマリデータベースにデータを書き込み且つプライマリデータベースからデータを読み取るアプリケーションサーバと、プライマリデータベースの複製であるスタンバイデータベースと、自己修復モジュール(SHM)とを含む自動自己修復データベースシステムが提供される。SHMは、プライマリデータベースの利用不能を自動的に検出することができ、スタンバイデータベースが利用可能である場合、SHMは、スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するようプライマリサイトにおけるプライマリデータベースのロールを割り当て、アプリケーションサーバとスタンバイデータベースとの間の予め確立された接続を使用してアプリケーションサーバがスタンバイデータベースからデータを読み取り且つスタンバイデータベースにデータを書き込むことを可能にし、スタンバイデータベースがプライマリサイトにおけるプライマリデータベースのロールを引き受けることを結果としてもたらすことができる。

Description

[優先権主張]
本出願は、2017年2月23日に出願された米国出願第15/440,810号に対する優先権を主張する。
[技術分野]
本明細書に記載の対象事項の実施形態は、一般にクラウドベースのコンピューティングに関する。より詳細には、対象事項の実施形態は、自動自己修復データベースシステム、及びクラウドベースのコンピューティング環境で自動自己修復データベースシステムを実現する方法に関する。
今日、インターネットを通じて(又は他のネットワークを介して)サービス及びデータにアクセスすることを可能にするクラウドベースのコンピューティングプラットフォームを多くの企業が今や使用している。これらのクラウドベースのコンピューティングプラットフォームのインフラストラクチャプロバイダは、共通のコンピュータハードウェア及びデータストレージを使用して、しばしば複数の企業(又はテナント)をサポートするネットワークベースの処理システムを提供する。この「クラウド」コンピューティングモデルは、インフラストラクチャプロバイダにより供給される「サービスとして」プラットフォーム上でアプリケーションが提供されることを可能にする。
高可用性(HA)データベースアーキテクチャは、冗長システム及びソフトウェアを使用して単一障害点(single points of failure)を排除することにより、ダウンタイム及びデータ損失を防止する。管理者のエラー、システム若しくはソフトウェア欠陥により引き起こされるデータ破壊、又は完全なサイト障害は、データベースの可用性に影響を及ぼす可能性がある。単一障害点による影響を防ぐ唯一の方法は、別のシステム上ですでに実行され理想的には第2の場所に配置されている、本番データベースの完全に独立したコピーを有することであり、これは、本番データベースが何らかの理由で利用不能になった場合にすぐにアクセスできる。
オラクル(登録商標)データガード(Oracle Data Guard)はオラクル関係データベース管理システム(RDBMS)の拡張を形成する。オラクルのデータガードシステムにおいて、データベースは以下の相互排他的なロール、すなわちプライマリ又はスタンバイのうちの1つで動作する。オラクルデータガード技術は単一障害点を排除するのに役立ち、本番又はプライマリデータベースの同期した物理的複製を遠隔地に維持することにより、簡素だが経済的な方法でデータ損失及びダウンタイムを防止する。オラクルデータガードはこれらのスタンバイデータベースを本番データベースのコピーとして維持する。次に、計画された又は計画されていない停電のために本番データベースが利用不能になった場合、オラクルデータガードは任意のスタンバイデータベースを本番ロールに切り替えることができ、停電に関連づけられたダウンタイムを最小限にする。
データガードは、データベース管理者がSQLステートメントを発行することにより、又はデータガードブローカーのインターフェースのいずれかを使用することにより、これらのロールを動的に変更することを可能にする。データガード技術の1つの制限は、該技術が、プライマリデータベースがプライマリデータベースサーバ又はストレージサブシステムにおけるハードウェア障害などの様々なタイプの障害のために利用できないとき、ロール変更の後、新しいスタンバイデータベースの自動供給を保証しないことである。
対象事項のより完全な理解が、以下の図面と関連して考慮されるときに詳細な説明及び特許請求の範囲を参照することにより導き出すことができ、ここで、同様の参照番号は図面を通して同様の要素を示す。
開示の実施形態による自動自己修復モジュールを有する自動自己修復データベースシステムを示すブロック図である。 開示の実施形態による自動自己修復モジュールの様々なモジュールのブロック図を示す。 図3A及び3Bは集合的に、開示の実施形態による自動自己修復データベースシステムを提供する一例示的な方法を示すフローチャートである。 図3A及び3Bは集合的に、開示の実施形態による自動自己修復データベースシステムを提供する一例示的な方法を示すフローチャートである。 開示の実施形態による、自動自己修復データベースシステムと、それが如何に機能して自己修復能力を達成するかとを示すブロック図である。 開示の実施形態による、自動自己修復データベースシステムと、それが如何に機能して自己修復能力を達成するかとを示すブロック図である。 開示の実施形態による、自動自己修復データベースシステムと、それが如何に機能して自己修復能力を達成するかとを示すブロック図である。 開示の実施形態による、自動自己修復データベースシステムと、それが如何に機能して自己修復能力を達成するかとを示すブロック図である。 いくつかの実装による、オンデマンドデータベースサービスが使用できる環境の一例のブロック図を示す。 いくつかの実装による、図8の要素の例示的な実装と、これらの要素間の例示的な相互接続とのブロック図を示す。 いくつかの実装による、オンデマンドデータベースサービス環境の例示的なアーキテクチャコンポーネントを示すシステム図を示す。 いくつかの実装による、オンデマンドデータベースサービス環境の例示的なアーキテクチャコンポーネントをさらに示すシステム図を示す。 本明細書で論じられる方法論のうち任意の1つ以上をマシンに実行させる命令セットが実行され得るコンピュータシステムの例示的形態におけるマシンの図表現を示す。
本明細書に提示される例示的な実施形態は、クラウドベースのコンピューティング環境で実現可能な自己修復(self-healing)自動データベースシステム、方法、手順、及び技術に関する。例えば、説明される対象事項は、例えば、マルチテナントデータベースシステムを含む任意のクラウドベースのコンピューティング環境の文脈で実現できる。
上記で論じられた問題に対処するために、自動自己修復データベースシステム及び関連する方法が提供される。自動自己修復データベースシステムはプライマリサイト(又はデータセンタ)を含み、これは、プライマリデータベースと、各々がプライマリデータベースの複製である1つ又は複数のスタンバイデータベースと、自己修復モジュールとを含む。自己修復モジュールは、自動自己修復データベースシステムの構成を監視及び管理できるカスタムアプリケーションである。自己修復モジュールは、ベンダのAPIを介してベンダの技術と相互作用することができる。このような技術の例は、オラクルTMデータガード複製及びフェイルオーバ技術、アマゾン(登録商標)ウェブサービス(Amazon Web Services、AWS)TMスナップショット技術等を含む。自己修復モジュールは、プライマリデータベースの利用不能(例えば、ハードウェア及び/又はソフトウェアの障害(failure))を自動的に検出し、プライマリサイトのスタンバイデータベース、すなわちプライマリデータベースの複製が利用可能であるかを決定することができる。もしそうならば、自己修復モジュールは自動的にフェイルオーバ処理シーケンスを開始することができ、該フェイルオーバ処理シーケンスは、プライマリデータベースの機能性及びキャパシティを復旧するために、プライマリサイトにおけるプライマリデータベースとしてのロール(role)をスタンバイデータベースに自動的に割り当てることを含む。プライマリデータベース障害が発生したときスタンバイデータベースを供給するための自動フェイルオーバ及びAPIを提供することにより、自己修復が達成できる。
例えば、1つの実装において、プライマリデータベースが利用不能になったとき(例えば、故障する(fails)、クラッシュする等)、自己修復モジュールが自動的に利用不能を検出し、任意選択で、スタンバイデータベースにおいて読み取り専用アプリケーションモードを有効にすることにより読み取り専用能力を提供し、(プライマリサイトにおいて)アプリケーションサーバによりサービスされるアプリケーションのトラフィックをこの読み取り専用スタンバイデータベースにルーティングして顧客体験を向上させる。プライマリデータベースが、予め定義され且つ構成可能な期間(例えば、10分)内に復旧/再開しない場合、プライマリデータベースのロールは、スタンバイデータベースが新しいプライマリデータベースになるように、自動的にスタンバイデータベースにフェイルオーバされることになる。これは、プライマリデータベースの複製であるスタンバイデータベースを読み取り可能及び書き込み可能として有効にし、それを他のスタンバイデータベースへのデータの複製を開始するプライマリロールとして割り当てることによって行うことができる。効率化のために、アプリケーションはプライマリ及びセカンダリ双方のデータベースへの接続を予め確立することができ、それにより、ロール移行が発生したときに新しい接続確立は必要とされない。さらに、オリジナルのプライマリデータベースのストレージサブシステムが依然として利用可能であり、一貫した状態にある場合、さらなる拡張を行うことができる。例えば、故障したプライマリデータベースサーバからストレージサブシステムをデタッチし、それをスタンバイデータベースのデータベースサーバにアタッチすることにより、これは任意のデータ損失を低減するのに役立つ可能性がある。
さらに、システムは自動的に新しいスタンバイデータベースを供給して、手動介入なしにシステムをそのフルキャパシティに戻すことができる。フェイルオーバ処理シーケンスの一部として、スナップショットストレージシステムに記憶された最も最近のスナップショットデータを使用して新しいデータベースが自動的に作成され、プライマリサイトのスタンバイデータベースとして自動的に追加されることができ、それにより、システムは、高い可用性及びスタンバイキャパシティを含むそのフルキャパシティに回復される。いくつかの実装において、故障したオリジナルのプライマリデータベースが復旧したとき/場合、それはスタンバイデータベースとして再供給され得る。
図1は、開示の実施形態による、自動自己修復モジュール130を有する自動自己修復データベースシステム100を示すブロック図である。一実施形態において、自動自己修復データベースシステム100は、クラウドベースのデータベースシステムである。
自動自己修復データベースシステム100は、複数のユーザシステム112と、プライマリサイト110(又はデータセンタ)において又は災害復旧(disaster recovery)サイトとして機能するセカンダリサイト140においてアプリケーションサーバ124へのユーザシステム112のトラフィックのルーティングを制御するロードバランサ111と、スナップショットストレージシステム128とを含む。
プライマリサイト110サイト(又はデータセンタ)は、複数(n個)のアプリケーションサーバ124、ここでnは1以上、プライマリデータベース120−1、及びスタンバイデータベース120−2及び120−3を含む。この特定の実装において、プライマリサイト110は2つのスタンバイデータベースを有するが、より少ない又はより多くのスタンバイデータベースが特定の実装に依存して含まれてよい。図示のように、各データベース120は、様々なデータベース計算処理、結合、ソート、クエリ、又はトランザクションを実行するデータベースサーバと、ストレージ管理ソフトウェア及びトランザクションデータを記憶するハードウェアを含むストレージサブシステムとを含む。データベースサーバは、ストレージサブシステムからデータを読み取り、ストレージサブシステムにデータを書き込むことができる。ストレージサブシステム及びデータベースサーバ(そのソフトウェアコンポーネント又はモジュールを含む)は一緒に、クエリ言語及び他のインターフェースを介して問合せ、更新、及び削除され得るデータ(又はトランザクション)を処理及び記憶する能力を提供する。図示していないが、サイトは他のハードウェアを含むことができる。この点に関し、本明細書で使用されるとき「サイト」又は「データセンタ」は、別個の電源及びネットワーク接続性を有する物理ハードウェアをホストする設備を参照し得る。通常、サイトは、いくらかの物理的距離だけサイトから物理的に離される(例えば、数十〜数千マイル離れる)。
データガード構成は、本明細書においてプライマリデータベース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)データベースのいずれかであり得る。
各スタンバイデータベース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と同様)であり得る。
特定の状況において後述するように、読み取り専用アプリケーションモードが有効にされたとき、アプリケーション124は、スタンバイデータベース120−2に記憶されたデータへの読み取り専用アクセスを有してよく、これは、アプリケーションサーバ124で実行されるアプリケーションが読み取り専用要求をスタンバイデータベース120−2に通信し得、それにより、該アプリケーションはスタンバイデータベース120−2からのデータの読み取りのみ可能であるが、スタンバイデータベース120−2にデータを書き込みできないことを意味する。この読み取り専用能力は、図1において、「読み取り専用」とラベル付けされたプライマリデータベース120−1とスタンバイデータベース120−2との間に延びる両端矢印によって表される。アプリケーション124は、バックアップスタンバイデータベース120−3へのアクセスを通常有さず、なぜならば、該データベースの目的は、新しいデータベースを作成するため又は既存のデータベースが一時的に利用不能な場合にそれを更新するために使用できるバックアップとして機能することだからである。スナップショットバックアップのための専用スタンバイデータベース120−3を有する目的は、バックエンドスナップショット動作からユーザシステムワークロード及び要求を分離するためである。これは、性能安定性及び動作のための最適化であり、制限ではない。
一般論として、災害復旧サイト140は、組織がそのプライマリサイト110(又はプライマリデータセンタ)全体が利用不能になり又は故障したときにその技術インフラストラクチャ及びオペレーションを復旧及び回復するために使用できる設備である。この点に関し、災害復旧サイト140は、プライマリサイト110と同じように動作するプライマリサイト110の対称バージョンであり、実装に依存して、プライマリサイト110の一部である同じ要素の全てを含んでよい。このようなものとして、この特定の実装において、災害復旧サイト140は、プライマリサイト110で実装されるものと同一のプライマリデータベース120−1、スタンバイデータベース120−2、120−3、及びアプリケーションサーバ124を含む。ほとんどの実装において、セカンダリ又は災害復旧サイト140は、通常、プライマリサイト110からいくらかの距離離れて位置し、それにより、サイトは互いに近接して位置しない。このようにして、何らかの予期せぬ災害(例えば、自然災害又は人為的災害)がプライマリサイト110を襲った場合、セカンダリサイト140は影響を受けない可能性が最も高く、事業の中断がないように稼働を開始できるようにすべきである。
スナップショットストレージシステム128は、プライマリサイト110及びセカンダリサイト140のいずれかで、又は別の場所で、プライマリサイト110及び/又は災害復旧サイト140と物理的に近接して位置しないように遠隔に実装できる。例えば、開示の実施形態のいくつかによれば、スナップショットストレージシステム128は、プライマリサイト110に実現されず且つプライマリサイトレベル障害から守るために遠隔に位置する別個のストレージハードウェアである。以下に説明するように、スナップショットアプリケーション及び管理モジュール(図1には図示されていない)は、スタンバイデータベース120−3に記憶されたデータのスナップショットを取るために定期的又は周期的に実行され、データのスナップショットをスナップショットストレージシステム128に記憶する。スナップショットストレージシステム128はプライマリサイト110又はDRサイト140によりアクセスでき、それにより、スナップショットデータはほぼ瞬時に利用可能である。スナップショットデータは、データリストアに、又はフェイルオーバの場合のスタンバイデータベースの供給に使用できる。
いくつかの場合、プライマリサイト110におけるプライマリデータベース120−1が、何らかの理由で利用不能になる可能性がある。例えば、プライマリデータベース120−1は、これらに限られないが電力停止、ハードウェア障害、ソフトウェア障害、ネットワーク障害、又はオペレータエラーなどを含む複数の異なる理由で利用不能になる可能性がある。
この問題に対処するために、開示の実施形態は、各サイト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におけるプライマリデータベースのロールを割り当てられ得る。
換言すれば、フェイルオーバの一部として、自己修復モジュール130はプライマリロールを自動的且つシームレスにスタンバイデータベース120−2に割り当てることができ、それにより、スタンバイデータベース120−2はプライマリサイト110のプライマリデータベースとして機能する。そのようなものとして、プライマリデータベース120−1が故障した(又はその他の点で利用不能になった)とき、スタンバイデータベースの1つが、プライマリデータベースとして機能するよう自動的に割り当てられ得る。このようにして、アプリケーションサーバ124によりサービスされるアプリケーションは、読み取り/書き込みトランザクションを実行する(例えば、新しいプライマリデータベースとしてのロールを割り当てられたスタンバイデータベースからデータを読み取り、該スタンバイデータベースにデータを書き込む)パーミッションを含む、この「新しい」プライマリデータベースへの完全なアクセスを依然として有する。フェイルオーバロール移行の後、アプリケーションサーバとスタンバイデータベース120−2との間の予め確立された接続が、アプリケーションサーバがスタンバイデータベース120−2からデータを読み取り、スタンバイデータベース120−2にデータを書き込むことを可能にするために使用され、スタンバイデータベース120−2がプライマリサイト110におけるプライマリデータベースのロールを引き受けることを結果としてもたらす。さらに、以下でより詳細に説明するように、最新のスナップショットを使用して新しいスタンバイが供給され、次いで、複製構成に足し戻され、プライマリサイトを高可用性及びスタンバイキャパシティを含むそのフルキャパシティに戻し回復することができる。
図2は、開示の実施形態による、自動自己修復モジュール130の様々なモジュールのブロック図を示す。図2は、データベースヘルス監視モジュール232とスナップショットアプリケーション及び管理モジュール234と読み取り専用アプリケーションモードモジュール236とデータベースフェイルオーバモジュール238とスタンバイデータベース供給モジュール240とデータベース複製管理モジュール242とを含む、自動自己修復モジュール130の様々なモジュールを示す。
図1及び図2の様々な要素により実行される様々なタスク及び動作を、図3A〜図7を参照して以下により詳細に説明する。例えば、図2に示される自動自己修復モジュール130の様々なモジュールにより実行されるタスク及び動作を含む、プライマリサイト110において実行される特定のタスク及び動作、並びに災害復旧サイト140において実行されるタスク及び動作を、図3A〜図7を参照し、図1及び図2を継続して参照して以下に説明する。
図3A及び3Bは、集合的に、開示の実施形態による自動自己修復データベースシステムを提供するための一例示的な方法300を示すフローチャートである。予備事項として、方法300のステップは必ずしも限定的でなく、ステップは別記の特許請求の範囲の範囲から逸脱することなく追加、省略、及び/又は同時に実行可能であることが理解されるべきである。方法300は任意数の追加又は代替タスクを含んでよく、図3A及び3Bに示されたタスクは図示された順序で実行される必要がなく、方法300は、本明細書に詳細に記載されていないさらなる機能性を有するより包括的な手順又は処理に組み込まれてよいことが十分理解されるべきである。さらに、図3A及び3Bに示されるタスクの1つ以上は、意図された全体的な機能性が完全なままである限り、方法300の実施形態から潜在的に省略され得る。また、図示された方法300は、いつでも停止可能であることが理解されるべきである。方法300は、方法300に関連して実行される様々なタスク又はステップがソフトウェア、ハードウェア、ファームウェア、又はこれらの任意の組み合わせにより実行され得る点でコンピュータにより実現される。例示の目的のために、方法300の以下の説明は、図1及び図2に関連して上述した要素を参照し得る。特定の実施形態では、この処理の一部又は全ステップ、及び/又は実質的に等価なステップは、プロセッサ読み取り可能媒体に記憶され又は含まれるプロセッサ読み取り可能命令の実行により実行される。
図3A及び図3Bは、図4〜図7を参照して説明され、図4〜図7は、プライマリデータベース120−1が故障して復旧できなくなった後のデータベースシステム100の自動自己修復の動作、特に、自動自己修復モジュール130が如何に機能してプライマリサイトで自己修復能力を達成するかを示すブロック図である。以下の図3A〜図7の説明において、自動自己修復モジュール130は様々な動作、タスク、又はステップを実行するものとして説明されるが、これは、これら様々な動作、タスク、又はステップを実行する命令を実行するこれらエンティティの処理システムを参照することが十分理解されるべきである。実装に依存して、処理システムの一部が中央に位置し、あるいは一緒に動作する複数のシステム間で分散され得る。
再び図3Aを参照すると、方法300の開始の前に、及びその間に、スナップショットアプリケーション及び管理モジュール234がバックグラウンドで実行して、スタンバイデータベース120−3に記憶されたデータのスナップショットを定期的又は周期的に取り、データのスナップショットをスナップショットストレージシステム128に記憶する。例えば、一実施形態において、スナップショットアプリケーション及び管理モジュール234は、スタンバイデータベース120−3の1時間ごとのスナップショットを取り、スナップショットデータをスナップショットストレージシステム128に記憶することができる。次いで、スナップショットデータは、データ回復に、又はフェイルオーバの場合のスタンバイデータベースの供給に使用できる。さらに、1時間ごとのスナップショットは、或る時間が経過した後に日次スナップショットにマージされ、データ保有ポリシーによって数日間記憶され得る。スナップショットアプリケーション及び管理モジュール234により実行されるこれらのタスクは、図3A及び図3Bの番号付きブロックにより示される方法300の外側で実行されるため、番号なしブロックにより図3Aに示される。
図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が利用可能でなく再開又は復旧が必要かを決定することができる。
304において、データベースヘルス監視モジュール232(図2)はさらに、プライマリデータベース120−1の利用不能(例えば、プライマリデータベース120−1がどれほどの間利用不能であったか)を追跡するために使用される復旧タイマ/カウンタを開始することができる。以下に説明するように、プライマリデータベース120−1が、復旧タイマ/カウンタを超える時間/カウントの間利用不能であると決定されたとき、プライマリデータベース120−1は復旧しないと仮定され、これは、プライマリロールを(1)プライマリサイト110におけるスタンバイデータベース120−2が利用可能である場合、スタンバイデータベース120−2に、又は(2)DRサイト140における別のプライマリデータベース120−1に、のいずれかに移行するフェイルオーバをトリガする。
306において、データベースヘルス監視モジュール232(図2)が、プライマリサイトのスタンバイデータベースのいずれかが利用可能であるか(例えば、これはプライマリサイトのプライマリ及びすべてのスタンバイデータベースが利用不能であるサイトレベルの障害か、又は、これはプライマリデータベースが利用不能になったがプライマリサイトの少なくとも1つのスタンバイデータベースが利用可能である部分的な障害か)を決定することができる。
データベースヘルス監視モジュール232(図2)が、プライマリサイト110のデータベースの全てが利用不能である(例えば、故障した)と(306において)決定したとき、方法300は308に進み、308において、データベースフェイルオーバモジュール238(図2)が、災害復旧サイト140におけるプライマリデータベース120−1へのフェイルオーバ(サイト切り替え動作とも呼ばれる)を実行し、ロードバランサ111に、すべてのネットワークトラフィックを災害復旧サイト140に向けるように(例えば、利用可能な場合、すべてのトラフィックを災害復旧サイト140のプライマリデータベース120−1に向けるように)命令する。その結果、ユーザシステム112からの任意の読み取り/書き込み要求が、災害復旧サイト140におけるアプリケーションサーバ124及びプライマリデータベース120−1により扱われることになる。
ブロック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のためのプライマリデータベースとしてのロールを維持するように待機することがより合理的である。
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への予め確立された接続を継続して使用し、継続して正常に機能することになる。
対照的に、データベースヘルス監視モジュール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との間に延びる両端矢印により示される)。
そのようなものとして、フェイルオーバ処理シーケンスを自動的に開始する前に、データベースヘルス監視モジュール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にデータを書き込むこともできる。
フェイルオーバ処理シーケンスの一部として、図3Bの318において、スタンバイデータベース供給モジュール240(図2)は、図6の線318により示されるように、スナップショットストレージシステム128に記憶された最も最近のスナップショットデータを使用して新しいデータベース120−4を自動的に作成することができる。
次いで、データベース複製管理モジュール242(図2)は、新しく作成されたデータベース120−4をプライマリサイト110のスタンバイデータベースとして(320において)自動的に追加することができ、それにより、システムは高可用性及びスタンバイキャパシティを含むそのフルキャパシティに回復される。これは、図7において、プライマリサイト110の新しいスタンバイデータベース120−4とプライマリサイト110のプライマリデータベース120−2との間に延びる両端矢印320により示される。
以下の説明は、上記で説明した特徴が実現され得るシステムの一例である。以下に説明するシステムのコンポーネントは単なる一例であり、限定的なものとして解釈されるべきでない。図1〜図7に関して上記で説明した特徴は、複数のデータベース、マルチテナントデータベースシステム環境、単一テナントデータベースシステム環境、又は上記の何らかの組み合わせを有するものなどの他タイプのコンピューティング環境で実現され得る。
図8は、いくつかの実装によるオンデマンドデータベースサービスが使用できる環境410の一例のブロック図を示す。環境410は、ユーザシステム412と、ネットワーク414と、データベースシステム416(本明細書において「クラウドベースのシステム」とも呼ばれる)と、プロセッサシステム417と、アプリケーションプラットフォーム418と、ネットワークインターフェース420と、テナントデータ423を記憶するテナントデータベース422と、システムデータ425を記憶するシステムデータベース424と、システム416の様々な機能を実現するプログラムコード426と、データベースシステムプロセス及びテナント固有プロセスを実行し、例えばアプリケーションホスティングサービスの一部としてアプリケーションを実行するプロセス空間428とを含む。いくつかの他の実装において、環境410は、これらコンポーネント又はシステムのすべてを有さなくてよく、あるいは、上記に列挙したものの代わりに又は追加で他のコンポーネント又はシステムを有してよい。
いくつかの実装において、環境410は、オンデマンドデータベースサービスが存在する環境である。オンデマンドデータベースサービス、例えばシステム416を使用して実現できるものは、システム416へのアクセスを所有、維持、又は提供する、企業の外部のユーザに利用可能にされるサービスである。上記で説明したように、こうしたユーザは、一般に、システム416の構築又は維持に関与する必要がない。代わりに、システム416により提供されるリソースは、ユーザがシステム416により提供されるサービスを必要とするとき、すなわちユーザの要望に応じて、こうしたユーザの使用に対して利用可能であり得る。いくつかのオンデマンドデータベースサービスは、1つ以上のテナントからの情報を共通のデータベースイメージのテーブルに記憶してマルチテナントデータベースシステム(MTS)を形成することができる。用語「マルチテナントデータベースシステム」は、データベースシステムのハードウェア及びソフトウェアの様々な要素が1以上の顧客又はテナントにより共有され得るシステムを参照することができる。例えば、所与のアプリケーションサーバが、多数の顧客の要求を同時に処理することができ、所与のデータベーステーブルが、潜在的により多数の顧客のフィードアイテムなどのデータの行を記憶することができる。データベースイメージは、1つ以上のデータベースオブジェクトを含むことができる。関係データベース管理システム(RDBMS)又は同等物が、データベースオブジェクトに対して情報の記憶及び取り出しを実行することができる。
アプリケーションプラットフォーム418は、システム416のアプリケーションが実行することを可能にするフレームワーク、例えば、システム416のハードウェア又はソフトウェアインフラストラクチャなどであり得る。いくつかの実装において、アプリケーションプラットフォーム418は、オンデマンドデータベースサービスのプロバイダ、ユーザシステム412を介してオンデマンドデータベースサービスにアクセスするユーザ、又はユーザシステム412を介してオンデマンドデータベースサービスにアクセスするサードパーティアプリケーション開発者により開発された1つ以上のアプリケーションの作成、管理、及び実行を可能にする。
いくつかの実装において、システム416は、ウェブベースの顧客関係管理(CRM)システムを実現する。例えば、いくつかのこうした実装において、システム416は、CRMソフトウェアアプリケーションを実現及び実行し、ユーザシステム412への及びユーザシステム412からの関連したデータ、コード、フォーム、レンダリング可能なウェブページ及び文書、並びに他の情報を提供し、且つ、関連したデータ、オブジェクト、及びウェブページコンテンツをデータベースシステムに記憶し、データベースシステムから取り出すように構成された、アプリケーションサーバを含む。いくつかのMTS実装において、複数のテナントのためのデータが、テナントデータベース422内の同じ物理データベースオブジェクトに記憶されてよい。いくつかのこうした実装において、テナントデータは、こうしたデータが明白に共有されない限り、あるテナントが別のテナントのデータに対するアクセスを有さないように、あるテナントのデータが他のテナントのデータとは論理的に別個に保持されるようにテナントデータベース422の記憶媒体内に配列される。システム416はまた、CRMアプリケーション以外の、又はCRMアプリケーションに対して追加のアプリケーションを実現する。例えば、システム416は、CRMアプリケーションを含む複数のホストされた(標準及びカスタムの)アプリケーションに対するテナントアクセスを提供することができる。CRMを含んでもよく含まなくてもよい、ユーザ(又は、サードパーティ開発者)アプリケーションが、アプリケーションプラットフォーム418によりサポートされてよい。アプリケーションプラットフォーム418は、アプリケーションの1つ以上のデータベースオブジェクトへの作成及び記憶と、システム16のプロセス空間における1つ以上の仮想マシン内でのアプリケーションの実行とを管理する。
いくつかの実装によれば、各システム416は、ウェブページ、フォーム、アプリケーション、データ、及びメディアコンテンツをユーザ(クライアント)システム412に提供して、システム416のテナントとしてのユーザシステム412によるアクセスをサポートするように構成される。そのようなものとして、システム416は、データが共有されない限り各テナントのデータを別個に保持するようにセキュリティメカニズムを提供する。2つ以上のMTSが使用される場合、これらは互いに近接して(例えば、単一の建物又はキャンパス内に位置するサーバファーム内に)位置してよく、あるいは、これらは互いから遠隔の位置(例えば、市Aに位置する1つ以上のサーバと、市Bに位置する1つ以上のサーバ)に分散されてもよい。本明細書において用いられるとき、各MTSは、ローカルで分散されているか又は1つ以上の地理的位置にわたる、1つ以上の論理的又は物理的に接続されたサーバを含むことがある。さらに、用語「サーバ」は、当分野において周知である処理ハードウェア及びプロセス空間と、メモリデバイス又はデータベースなどの関連づけられた記憶媒体と、いくつかの例ではデータベースアプリケーション(例えば、OODBMS又はRDBMS)とを含むコンピューティングデバイス又はシステムを参照するように意図される。さらに、「サーバシステム」と「サーバ」とは本明細書においてしばしば置き換え可能に用いられることが理解されるべきである。同様に、本明細書において説明されるデータベースオブジェクトは、単一のデータベース、分散型データベース、分散型データベースの集合、冗長オンライン若しくはオフラインバックアップ又は他の冗長性を有するデータベース等の一部として実現されてよく、分散型データベース又はストレージネットワークと関連づけられた処理インテリジェンスとを含むことができる。
ネットワーク414は、互いに通信するシステム又はデバイスの任意のネットワーク又はネットワークの組み合わせであり、あるいはこれらを含んでよい。例えば、ネットワーク414は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、テレフォンネットワーク、ワイヤレスネットワーク、セルラーネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうち任意の1つ又は任意の組み合わせであり、あるいはこれらを含んでよい。ネットワーク414は、TCP/IP(トランスファーコントロールプロトコル及びインターネットプロトコル)ネットワーク、例えば、(大文字の「I」を用いて)「インターネット」としばしば呼ばれるネットワークのグローバルインターネットワークなどを含んでよい。インターネットは、本明細書における例のうち多くで用いられる。しかしながら、TCP/IPは頻繁に実現されるプロトコルであるが、開示の実装が使用できるネットワークはそのように限定されないことが理解されるべきである。
ユーザシステム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データに対するアクセスを有することができ、しかしながら、他の代替的な構成が代わりに用いられてもよい。
ユーザシステム412は、データベースシステム416にアクセスするためにユーザにより使用可能な任意のコンピューティングデバイス又は他のデータ処理装置若しくはシステムとして実現されてよい。例えば、ユーザシステム12のうち任意のものが、デスクトップコンピュータ、ワークステーション、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピューティングデバイス、モバイルセルラーフォン(例えば、「スマートフォン」)、若しくは任意の他のWi‐Fi(登録商標)対応デバイス、ワイヤレスアクセスプロトコル(WAP)対応デバイス、又はインターネット若しくは他のネットワークに直接又は間接的にインターフェースをとることができる他のコンピューティングデバイスであってよい。用語「ユーザシステム」及び「コンピューティングデバイス」は本明細書において、互いに、及び用語「コンピュータ」と置き換え可能に用いられる。上記で説明されたように、各ユーザシステム412は、HTTPクライアント、例えば、WebKitプラットフォームに基づくウェブブラウザ、Microsoft(登録商標)のインターネットエクスプローラブラウザ、NetscapeのNavigatorブラウザ、Opera(登録商標)のブラウザ、Mozilla(登録商標)のFirefox(登録商標)ブラウザ、又はセルラーフォン、PDA、若しくは他のワイヤレスデバイスの場合のWAP対応ブラウザなどのウェブブラウジング(又は、簡素に「ブラウジング」)プログラムを典型的に実行して、ユーザシステム412のユーザ(例えば、システム416により提供されるオンデマンドサービスの加入者)がネットワーク414を通じてシステム416からの自身に利用可能な情報、ページ、及びアプリケーションについてアクセス、処理、及び閲覧することを可能にする。
各ユーザシステム412はまた、システム416又は他のシステム若しくはサーバにより提供されたページ、フォーム、アプリケーション、及び他の情報と関連してユーザシステム412のディスプレイ(例えば、他の可能性の中でもモニタ画面、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ)上にブラウザにより提供されたグラフィカルユーザインターフェース(GUI)と相互作用するように、1つ以上のユーザ入力デバイス、例えばキーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペン、又はスタイラスなどを典型的に含む。例えば、ユーザインターフェースデバイスが使用されて、システム416によりホストされたデータ及びアプリケーションにアクセスし、記憶されたデータに対して検索を実行し、その他の方法でユーザがユーザに提示され得る様々なGUIページと相互作用することを可能にすることができる。上記で論じられたように、実装はインターネットとの使用に適するが、他のネットワークがインターネットに対して代わりに又は追加で使用されてもよく、例えば、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースネットワーク、任意のLAN又はWANなどである。
ユーザシステム412のユーザは、そのそれぞれのキャパシティにおいて異なってもよく、特定のユーザシステム412のキャパシティは、こうしたユーザシステムの現在のユーザに対するパーミッション(パーミッションレベル)によって全体的に決定されてよい。例えば、販売員が特定のユーザシステム412を使用してシステム416と相互作用している場合、そのユーザシステムは、上記販売員に割り振られたキャパシティを有することができる。しかしながら、管理者がそのユーザシステム412を使用してシステム416と相互作用する間、そのユーザシステムは管理者に割り振られたキャパシティを有することができる。階層的ロールモデルが使用される場合、あるパーミッションレベルのユーザは、より低いパーミッションレベルのユーザによりアクセス可能なアプリケーション、データ、及びデータベース情報に対するアクセスを有することができ、しかし、より高いパーミッションレベルのユーザによりアクセス可能な特定のアプリケーション、データベース情報、及びデータに対するアクセスを有さないことがある。ゆえに、異なるユーザは、ユーザのそれぞれのセキュリティ又はパーミッションレベル(さらに、「承認」とも呼ばれる)に依存して、アプリケーション及びデータベース情報にアクセス及び修正することに関して異なる能力を一般に有することになる。
いくつかの実装によれば、各ユーザシステム412、及びそのコンポーネントのうちいくつか又はすべてが、Intel(登録商標) Pentium(登録商標)プロセッサなどの中央処理ユニット(CPU)を用いて実行されるコンピュータコードを含むブラウザなどのアプリケーションを用いてオペレータ構成可能である。同様に、システム416(及び、2つ以上が存在する場合のMTSのさらなるインスタンス)、及びそのコンポーネントのすべてが、プロセッサシステム417を用いて動作するコンピュータコードを含むアプリケーションを用いてオペレータ構成可能であってよく、プロセッサシステム417は、Intel Pentium(登録商標)プロセッサなどを含み得るCPU、又は複数のCPUを含むように実現されてよい。
システム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社の商標である。)。
図9は、いくつかの実装による図8の要素の例示的な実装とこれら要素間の例示的な相互接続とのブロック図を示す。すなわち、図9もまた環境410を例示し、しかし図9では、システム416の様々な要素とこうした要素間の様々な相互接続とが、いくつかのより特定の実装に従ってさらなる特定性で示される。図9にも示される図8からの要素は、図9において図8で使用されたのと同じ参照番号を使用する。さらに、図9において、ユーザシステム412は、プロセッサシステム512A、メモリシステム512B、入力システム512C、及び出力システム512Dを含む。プロセッサシステム512Aは、1つ以上のプロセッサの任意の適切な組み合わせを含むことができる。メモリシステム512Bは、1つ以上のメモリデバイスの任意の適切な組み合わせを含むことができる。入力システム512Cは、1つ以上のタッチスクリーンインターフェース、キーボード、マウス、トラックボール、スキャナ、カメラ、又はネットワークへのインターフェースなどの入力デバイスの任意の適切な組み合わせを含むことができる。出力システム512Dは、1つ以上のディスプレイデバイス、プリンタ、又はネットワークへのインターフェースなどの出力デバイスの任意の適切な組み合わせを含むことができる。
図9において、図8のネットワークインターフェース420は、一組のHTTPアプリケーションサーバ500〜500として実現される。各アプリケーションサーバ500は、本明細書において「アプリサーバ」とも呼ばれ、テナントデータベース422及びその中のテナントデータ523、並びにシステムデータベース424及びその中のシステムデータ525と通信して、ユーザシステム512から受信した要求をサービスするように構成される。テナントデータ523は、個々のテナントストレージ空間513に分割されることができ、テナントストレージ空間513は、物理的又は論理的に配置又は分割されてよい。各テナントストレージ空間513内で、テナントデータ514及びアプリケーションメタデータ516が、各ユーザについて同様に割り当てられることができる。例えば、ユーザの最も最近使用した(MRU)アイテムのコピーが、ユーザストレージ514に記憶されてよい。同様に、テナントである組織全体のMRUアイテムのコピーが、テナントストレージ空間513に記憶されてよい。
プロセス空間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を取り出すことを管理する。
図9のシステム416は、ユーザシステム512におけるユーザ又は開発者に対する、システム416常駐プロセスへのユーザインターフェース(UI)530及びアプリケーションプログラミングインターフェース(API)532をさらに含む。いくつかの他の実装において、環境410は、上記で列挙された要素と同じ要素を有さなくてよく、あるいは、上記で列挙された要素に対して代わりに又は追加で他の要素を有してよい。
各アプリケーションサーバ500は、異なるネットワーク接続を介して、例えばテナントデータ523及びシステムデータ525に対するアクセスをそれぞれ有するテナントデータベース422及びシステムデータベース424に、通信可能に結合されることができる。例えば、1つのアプリケーションサーバ500はネットワーク414(例えば、インターネット)を介して結合でき、別のアプリケーションサーバ500は直接ネットワークリンクを介して結合でき、別のアプリケーションサーバ(図示されていない)はさらに異なるネットワーク接続により結合できる。トランスファーコントロールプロトコル及びインターネットプロトコル(TCP/IP)は、アプリケーションサーバ500とシステム416との間で通信するために使用できる典型的なプロトコルの例である。しかしながら、使用されるネットワーク相互接続に依存してシステム416を最適化するように他のトランスポートプロトコルが使用されてもよいことが当業者に明らかであろう。
いくつかの実装において、各アプリケーションサーバ500は、システム416のテナントである任意の組織に関連づけられた任意のユーザの要求を扱うように構成される。任意の時間に様々な理由でサーバプールからアプリケーションサーバ500を追加及び削除できることが望ましい可能性があるため、いくつかの実装において、特定のアプリケーションサーバ500に対するユーザ又は組織のサーバアフィニティが存在しない。いくつかのこうした実装において、ロードバランシング機能(例えば、F5 Big‐IPロードバランサ)を実現するインターフェースシステムが、アプリケーションサーバ500とユーザシステム512との間に通信可能に結合されて、アプリケーションサーバ500に対する要求を分配する。1つの実装において、ロードバランサは、最小接続アルゴリズムを使用して、アプリケーションサーバ500に対するユーザ要求をルーティングする。ロードバランシングアルゴリズムの他の例、例えば、ラウンドロビン及び観察された応答時間などが使用されてもよい。例えば、いくつかの例において、同一ユーザからの3つの連続した要求が3つの異なるアプリケーションサーバ500に至ることがあり、異なるユーザからの3つの要求が同一のアプリケーションサーバ500に至ることがある。このようにして、例として、システム416はマルチテナントシステムであり得、このシステム416は、いろいろなユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの記憶とこれらに対するアクセスとを扱う。
1つの例示的なストレージ使用事例において、あるテナントが、各販売員がシステム416を使用して自身の販売の態様を管理するところの販売陣(sales force)を採用する会社であり得る。ユーザは、すべてがユーザ個人の販売プロセスに適用可能である連絡先データ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、ゴール及び進捗データ等を(例えば、テナントデータベース422の中に)維持することができる。MTS配置の一例において、アクセス、閲覧、修正、報告、送信、算出等すべきデータ及びアプリケーションのすべてが、ネットワークアクセスを超えるものを有さないユーザシステム512により維持及びアクセスされることができるため、ユーザは、自身の販売努力及びサイクルを多くの異なるユーザシステムのうちいずれかから管理することができる。例えば、販売員が顧客を訪問し、顧客がそのロビーにおいてインターネットアクセスを有する場合、販売員は、ロビーで顧客が到着するのを待つ間に、この顧客に関する重要なアップデートを得ることができる。
各ユーザの雇用主にかかわらず、各ユーザのデータは他のユーザのデータとは別個に記憶できるが、いくつかのデータが、テナントである所与の組織の複数のユーザ又はユーザ全員によって共有されるか又はアクセス可能である組織範囲のデータであってよい。ゆえに、テナントレベルで割り振られたシステム416により管理されるいくつかのデータ構造が存在し得ると同時に、他のデータ構造がユーザレベルで管理されてよい。MTSが、あり得る競合他社を含む複数のテナントをサポートすることができるため、MTSは、データ、アプリケーション、及びアプリケーション使用を別個に保持するセキュリティプロトコルを有することができる。さらに、多くのテナントが、自身の独自システムを維持するよりもMTSへのアクセスを選ぶ可能性があるため、冗長性、アップタイム、及びバックアップが、MTSにおいて実現できるさらなる機能である。ユーザ固有データ及びテナント固有データに加えて、システム416は、複数のテナントにより使用可能なシステムレベルのデータ又は他のデータをさらに維持してよい。こうしたシステムレベルのデータには、複数テナント間で共有可能な産業レポート、ニュース、投稿メッセージ等を含むことができる。
いくつかの実装において、ユーザシステム512(これは、さらにクライアントシステムであり得る)は、アプリケーションサーバ500と通信して、システム416からのシステムレベル及びテナントレベルのデータを要求し、更新する。こうした要求及び更新は、1つ以上のクエリをテナントデータベース422又はシステムデータベース424に送信することを含んでよい。システム416(例えば、システム416の中のアプリケーションサーバ500)は、所望の情報にアクセスするように設計された1つ以上のSQLステートメント(例えば、1つ以上のSQLクエリ)を自動的に生成することができる。システムデータベース424は、データベースからの要求されたデータにアクセスするためのクエリプランを生成してよい。用語「クエリプラン」は、データベースシステム内の情報にアクセスするために使用される1つ以上のオペレーションを一般に参照する。
各データベースは、所定の又はカスタマイズ可能なカテゴリに合わせられたデータを含む、一組の論理テーブルなどのオブジェクトの集合として一般に見ることができる。「テーブル」はデータオブジェクトの一表現であり、本明細書において、いくつかの実装に従うオブジェクト及びカスタムオブジェクトの概念的説明を簡素化するのに使用されることがある。「テーブル」及び「オブジェクト」は本明細書において置き換え可能に使用され得ることが理解されるべきである。各テーブルは、可視のスキーマの中の列又はフィールドとして論理的に配置された1つ以上のデータカテゴリを一般に含む。テーブルの各行又は要素は、フィールドによって定義された各カテゴリについてのデータのインスタンスを含むことができる。例えば、CRMデータベースが、名前、住所、電話番号、ファックス番号などの基本的な連絡先情報のフィールドで顧客を説明するテーブルを含んでよい。別のテーブルが、顧客、プロダクト、販売価格、日付などの情報のフィールドを含む購入注文を記述してよい。いくつかのMTS実装において、すべてのテナントによる使用のために、標準のエンティティテーブルが提供されてよい。CRMデータベースアプリケーションについて、こうした標準のエンティティには、ケース、アカウント、連絡先、リード、及び機会のデータオブジェクトのテーブルを含み、各々が予め定義されたフィールドを含んでよい。本明細書において用いられるとき、用語「エンティティ」もまた、「オブジェクト」及び「テーブル」と置き換え可能に使用されることがある。
いくつかのMTS実装において、テナントは、カスタムオブジェクトを作成及び記憶することを可能にされ、あるいは、例えばカスタムインデックスフィールドを含むカスタムフィールドを標準のオブジェクトに対して作成することにより、標準のエンティティ又はオブジェクトをカスタマイズすることを可能にされてよい。WeissmanらによるCUSTOM ENTITIES AND FIELDS IN A MULTI-TENANT DATABASE SYSTEMと題され2010年8月17日に発行された、本明細書においてその全体を及びすべての目的のために参照により援用される、本発明の譲受人に譲渡された米国特許第7,779,039号は、マルチテナントデータベースシステムにおいてカスタムオブジェクトを作成し、標準オブジェクトをカスタマイズするためのシステム及び方法を教示している。いくつかの実装において、例えば、すべてのカスタムエンティティデータ行が単一のマルチテナントの物理テーブルに記憶され、このテーブルは組織ごとに複数の論理テーブルを含むことがある。顧客の複数の「テーブル」が実際は1つの大きいテーブルに記憶されること、又は、顧客のデータが他の顧客のデータと同じテーブルに記憶され得ることは、顧客に対して透過的である。
図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と通信することができる。
図10A及び図10Bに示されるように、オンデマンドデータベースサービス環境にアクセスすることは、様々な異なるハードウェア又はソフトウェアコンポーネント間で送信される通信を含むことができる。さらに、オンデマンドデータベースサービス環境600は、実際のオンデマンドデータベースサービス環境の簡素化された表現である。例えば、図10A及び図10Bには、各タイプの1つ又は2つのデバイスのみが示されているが、オンデマンドデータベースサービス環境のいくつかの実装は、各タイプの1つから複数の範囲のデバイスを含むことができる。また、オンデマンドデータベースサービス環境は、図10A及び図10Bに示される各デバイスを含む必要はなく、あるいは図10A及び図10Bに示されないさらなるデバイスを含むことができる。
さらに、オンデマンドデータベースサービス環境600内のデバイスの1つ以上が、同一の物理デバイス上又は異なるハードウェア上に実現できることが理解されるべきである。いくつかのデバイスは、ハードウェア又はハードウェアとソフトウェアの組み合わせを使用して実現できる。ゆえに、本明細書において使用される「データ処理装置」、「マシン」、「サーバ」、及び「デバイス」のような用語は、単一のハードウェアデバイスに限定されず、むしろ、これらの用語への参照は、説明された機能性を提供するよう構成されたハードウェア及びソフトウェアの任意の適切な組み合わせを含むことができる。
クラウド604は、しばしばインターネットを含むデータネットワーク又は複数のデータネットワークを参照することを意図している。クラウド604と通信可能に接続されたクライアントマシンは、オンデマンドデータベースサービス環境600の他のコンポーネントと通信して、オンデマンドデータベースサービス環境により提供されるサービスにアクセスすることができる。例えば、クライアントマシンは、オンデマンドデータベースサービス環境にアクセスして、情報を取り出し、保存、編集、又は処理することができる。いくつかの実装において、エッジルータ608及び612は、クラウド604とオンデマンドデータベースサービス環境600の他の構成要素との間でパケットをルーティングする。例えば、エッジルータ608及び612は、ボーダーゲートウェイプロトコル(BGP)を採用することができる。BGPはインターネットのコアルーティングプロトコルである。エッジルータ608及び612は、インターネット上の自律システム間のネットワーク到達性を指定するIPネットワーク又は「プレフィックス」のテーブルを維持することができる。
いくつかの実装において、ファイアウォール616は、オンデマンドデータベースサービス環境600の内部コンポーネントをインターネットトラフィックから保護することができる。ファイアウォール616は、一組のルール及び他の基準に基づいて、オンデマンドデータベースサービス環境600の内部コンポーネントへのアクセスをブロック、許可、又は拒否することができる。ファイアウォール616は、パケットフィルタ、アプリケーションゲートウェイ、ステートフルフィルタ、プロキシサーバ、又は任意の他タイプのファイアウォールのうちの1つ以上として動作することができる。
いくつかの実装において、コアスイッチ620及び624は、オンデマンドデータベースサービス環境600内のパケットを転送する高キャパシティスイッチである。コアスイッチ620及び624は、オンデマンドデータベースサービス環境内の異なるコンポーネント間でデータを迅速にルーティングするネットワークブリッジとして構成できる。いくつかの実装において、2つ以上のコアスイッチ620及び624の使用は、冗長性又は低減されたレイテンシを提供し得る。
いくつかの実装において、ポッド640及び644は、オンデマンドデータベースサービス環境により提供されるコアデータ処理及びサービス機能を実行する。各ポッドは、様々なタイプのハードウェア又はソフトウェアコンピューティングリソースを含むことができる。ポッドアーキテクチャの一例が、図10Bを参照してより詳細に論じられる。いくつかの実装において、ポッド640と644との間の通信は、ポッドスイッチ632及び636を介して行われる。ポッドスイッチ632及び636は、例えばコアスイッチ620及び624を介して、ポッド640及び644とクラウド604に通信可能に接続されたクライアントマシンとの間の通信を容易にすることができる。また、ポッドスイッチ632及び636は、ポッド640及び644とデータベースストレージ656との間の通信を容易にし得る。いくつかの実装において、ロードバランサ628は、ポッド640と644との間でワークロードを分配することができる。ポッド間のオンデマンドサービス要求のバランスをとることは、リソースの使用を向上し、スループットを増加し、応答時間を低減し、又はオーバーヘッドを低減するのに役立つ可能性がある。ロードバランサ628は、トラフィックを分析及び転送するためのマルチレイヤスイッチを含んでよい。
いくつかの実装において、データベースストレージ656へのアクセスは、データベースファイアウォール648により守られる。データベースファイアウォール648は、プロトコルスタックのデータベースアプリケーションレイヤで動作するコンピュータアプリケーションファイアウォールとして動作することができる。データベースファイアウォール648は、構造問合せ言語(SQL)インジェクション、データベースルートキット、及び承認されていない情報開示などのアプリケーション攻撃からデータベースストレージ656を保護することができる。いくつかの実装において、データベースファイアウォール648は、トラフィックをゲートウェイルータに渡す前にトラフィックをプロキシする(proxy)よう1つ以上の形式のリバースプロキシサービスを使用するホストを含む。データベースファイアウォール648は、データベーストラフィックの内容を検査し、特定のコンテンツ又はデータベース要求をブロックすることができる。データベースファイアウォール648は、TCP/IPスタックの上のSQLアプリケーションレベルで動作して、データベース又はSQL管理インターフェースへのアプリケーションの接続を管理し、データベースネットワーク又はアプリケーションインターフェースへ又はこれらから移動するパケットを傍受及び強制することができる。
いくつかの実装において、データベースストレージ656との通信は、データベーススイッチ652を介して行われる。マルチテナントデータベースストレージ656は、データベースクエリを扱うための2つ以上のハードウェア又はソフトウェアコンポーネントを含むことができる。したがって、データベーススイッチ652は、オンデマンドデータベースサービス環境の他のコンポーネント(例えば、ポッド640及び644)により送信されたデータベースクエリを、データベースストレージ656内の正しいコンポーネントに向けることができる。いくつかの実装において、データベースストレージ656は、図8及び図9を参照して上記で説明したように、多くの異なる組織により共有されるオンデマンドデータベースシステムである。
図10Bは、いくつかの実装によるオンデマンドデータベースサービス環境のアーキテクチャコンポーネントの例をさらに示すシステム図を示す。ポッド644は、オンデマンドデータベースサービス環境600のユーザにサービスを行うために使用できる。いくつかの実装において、各ポッドは様々なサーバ又は他のシステムを含む。ポッド644は、1つ以上のコンテンツバッチサーバ664、コンテンツ検索サーバ668、クエリサーバ682、ファイルフォース(file force)サーバ686、アクセス制御システム(ACS)サーバ680、バッチサーバ684、及びアプリサーバ688を含む。ポッド644はまた、データベースインスタンス690、クイックファイルシステム(QFS)692、及びインデクサ694を含むことができる。いくつかの実装において、ポッド644内のサーバ間の一部又は全部の通信がスイッチ636を介して送信され得る。
いくつかの実装において、アプリサーバ688は、ポッド644を介してオンデマンドデータベースサービス環境600により提供されるアプリケーションの構築をサポートするための手順(例えば、プログラム、ルーチン、スクリプト)の実行専用のハードウェア又はソフトウェアフレームワークを含む。いくつかの実装において、アプリサーバ688のハードウェア又はソフトウェアフレームワークは、本明細書に説明される様々な方法又はプロセスのブロックの実行を含む、本明細書に説明されるサービスの動作を実行するように構成される。いくつかの代替的な実装において、2つ以上のアプリサーバ688が含まれ、こうした方法を実行するために協働することができ、あるいは本明細書に説明される1つ以上の他のサーバが、開示の方法を実行するように構成されてよい。
コンテンツバッチサーバ664は、ポッドの内部の要求を扱うことができる。いくつかのこうした要求は、長期にわたり、あるいは特定の顧客に結び付けられないことがある。例えば、コンテンツバッチサーバ664は、ログマイニング、クリーンアップワーク、及びメンテナンスタスクに関連する要求を扱うことができる。コンテンツ検索サーバ668は、クエリ及びインデクサ機能を提供することができる。例えば、コンテンツ検索サーバ668により提供される機能は、ユーザがオンデマンドデータベースサービス環境に記憶されたコンテンツを検索することを可能にし得る。ファイルフォースサーバ686は、ファイルフォースストレージ698に記憶された情報の要求を管理することができる。ファイルフォースストレージ698は、文書、画像、及びベーシックラージオブジェクト(BLOB)などの情報を記憶することができる。ファイルフォースサーバ686を使用して情報の要求を管理することにより、データベース上のイメージフットプリントを低減することができる。クエリサーバ682は、1つ以上のファイルストレージシステムから情報を取り出すために使用できる。例えば、クエリシステム682は、アプリサーバ688から情報の要求を受信し、ポッドの外側に位置するNFS696に情報クエリを送信することができる。
ポッド644は、異なる組織が同じデータベースへのアクセスを共有するマルチテナント環境として構成されたデータベースインスタンス690を共有することができる。さらに、ポッド644により行われるサービスは、様々なハードウェア又はソフトウェアリソースを要求することができる。いくつかの実装において、ACSサーバ680は、データ、ハードウェアリソース、又はソフトウェアリソースへのアクセスを制御する。いくつかの実装において、バッチサーバ684は、指定された時間にタスクを実行するために使用されるバッチジョブを処理する。例えば、バッチサーバ684は、バッチジョブをトリガするために、命令をアプリサーバ688などの他のサーバに送信することができる。
いくつかの実装において、QFS692は、カリフォルニア州サンタクララのSun Microsystems(登録商標)から入手可能なオープンソースファイルストレージシステムである。QFSは、ポッド644内で利用可能な情報を記憶しアクセスするための高速アクセスファイル記憶システムとして機能することができる。QFS692は、いくつかのボリューム管理能力をサポートすることができ、多くのディスクをファイルストレージシステムに一緒にグループ化することができる。ファイルストレージシステムのメタデータは別個のディスクセットに保持することができ、これは、長いディスクシークが許容できないストリーミングアプリケーションに有用であり得る。ゆえに、QFSシステムは、ネットワークファイルストレージシステム696又は他のストレージシステムに記憶されたデータを識別、取り出し、移動、又は更新するために、1つ以上のコンテンツ検索サーバ668又はインデクサ694と通信することができる。
いくつかの実装において、1つ以上のクエリサーバ682は、ポッド644の外側に記憶された情報を取り出し又は更新するために、NFS696と通信する。NFS696は、ポッド644内に位置するサーバが、ローカルストレージがアクセスされる方法と同様の方法でネットワークを通じてファイルにアクセスするための情報にアクセスすることを可能にし得る。いくつかの実装において、クエリサーバ682からのクエリは、ロードバランサ628を介してNFS696に送信され、ロードバランサ628は、オンデマンドデータベースサービス環境で利用可能な様々なリソースにわたりリソース要求を分配することができる。また、NFS696は、QFS692と通信して、NFS696に記憶された情報を更新し、あるいはポッド644内に位置するサーバによる使用のためにQFS692に情報を提供することができる。
いくつかの実装において、ポッドは、1つ以上のデータベースインスタンス690を含む。データベースインスタンス690は、QFS692に情報を送信することができる。情報がQFSに送信されたとき、それは、さらなるデータベース呼び出しを使用することなく、ポッド644内のサーバによる使用に利用可能であり得る。いくつかの実装において、データベース情報はインデクサ694に送信される。インデクサ694は、データベース690又はQFS692で利用可能な情報のインデックスを提供することができる。インデックス情報は、ファイルフォースサーバ686又はQFS692に提供され得る。
図11は、本明細書で論じられる方法論のうち任意の1つ以上をマシンに実行させる命令セットが実行され得るコンピュータシステム700の例示的形態におけるマシンの図表現を示す。システム700は、マシンに本明細書で論じられた方法論のうち任意の1つ以上を実行させる命令セットが実行され得るコンピュータシステムの形態であってよい。別の実施形態において、マシンは、LAN、イントラネット、エクストラネット、又はインターネット内の他のマシンに接続(例えば、ネットワーク接続)されてもよい。マシンは、クライアント/サーバネットワーク環境でサーバマシンのキャパシティで動作してよい。マシンは、パーソナルコンピュータ(PC)、セットトップボックス(STB)、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、又はそのマシンにより取られるべきアクションを指定する命令セット(順次又はその他)を実行することができる任意のマシンであってよい。さらに、単一のマシンのみが図示されているが、用語「マシン」はまた、本明細書で論じられる方法論のうちいずれか1つ以上を実行する命令のセット(又は複数のセット)を個々に又は連帯的に実行するマシンの任意の集合を含むとみなされるものとする。
例示的なコンピュータシステム700は、処理デバイス(プロセッサ)702、メインメモリ704(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、例えば同期DRAM(SDRAM)など)、スタティックメモリ706(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM))、及びデータストレージデバイス718を含み、これらはバス730を介して互いに通信する。
処理デバイス702は、マイクロプロセッサ、中央処理ユニットなどの1つ以上の汎用処理デバイスを表す。より詳細には、処理デバイス702は、複合命令セット計算(CISC)マイクロプロセッサ、縮小命令セット計算(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、又は他の命令セットを実現するプロセッサ若しくは命令セットの組み合わせを実現するプロセッサであってよい。また、処理デバイス702は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つ以上の専用処理デバイスであってもよい。
コンピュータシステム700は、ネットワークインターフェースデバイス708をさらに含んでよい。コンピュータシステム700はまた、ビデオ表示ユニット710(例えば、液晶ディスプレイ(LCD)又は陰極線管(CRT))、英数字入力デバイス712(例えば、キーボード)、カーソル制御デバイス714(例えば、マウス)、及び信号生成デバイス716(例えば、スピーカ)を含んでもよい。
データストレージデバイス718は、本明細書に説明される方法論又は機能のうちいずれか1つ以上を具現化する命令722の1つ以上のセット(例えば、インメモリバッファサービス74の命令)が記憶されたコンピュータ読み取り可能媒体728を含んでよい。また、命令722は、コンピュータ読み取り可能媒体を同様に構成するコンピュータシステム700、メインメモリ704、及び処理デバイス702によるその実行中に、処理デバイス702のメインメモリ704内及び/又は処理論理726内に、完全に又は少なくとも部分的に存在してもよい。命令はさらに、ネットワークインターフェースデバイス708を介してネットワーク720を通じて送信又は受信されてもよい。
コンピュータ読み取り可能記憶媒体728は、一例示的な実施形態において単一の媒体であるように示されているが、用語「コンピュータ読み取り可能記憶媒体」は、1つ以上の命令セットを記憶する単一の媒体又は複数の媒体(例えば、集中型又は分散型のデータベース、及び/又は関連づけられたキャッシュ及びサーバ)を含むとみなされるべきである。用語「コンピュータ読み取り可能記憶媒体」は、また、マシンによる実行のための命令セットを記憶、エンコード、又は搬送することができ、且つマシンに本発明の方法論のうち任意の1つ以上を実行させる任意の媒体を含むとみなされるものとする。したがって、用語「コンピュータ読み取り可能記憶媒体」は、これらに限定されないがソリッドステートメモリ、光媒体、及び磁気媒体を含むとみなされるものとする。
前述の説明は、本発明のいくつかの実施形態の良い理解を提供するために、特定のシステム、コンポーネント、方法等の例などの多くの特定の詳細を記述している。しかしながら、本発明の少なくともいくつかの実施形態がこれら特定の詳細なしに実施され得ることが当業者に明らかであろう。他の例において、周知のコンポーネント又は方法は、本発明を不要に分かりにくくすることを避けるために、詳細に説明されず、あるいは簡素なブロック図形式で提示される。ゆえに、記述された特定の詳細は単に例示に過ぎない。具体的な実装はこれらの例示的な詳細と異なってよく、依然として本発明の範囲内にあることが意図される。
上述の説明では、多くの詳細が記述されている。しかしながら、本開示の恩恵を有する当業者には、本発明の実施形態がこれら特定の詳細なしに実施され得ることが明らかであろう。いくつかの場合、説明を分かりにくくすることを避けるために、周知の構造及びデバイスが詳細ではなくブロック図形式で示される。
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現の観点で提示されている。これらのアルゴリズム説明及び表現は、他の当業者にその作用の実体を最も効果的に伝えるために、データ処理分野の当業者により使用される手段である。アルゴリズムは、ここで、そして一般に、所望の結果をもたらすステップの自己一貫したシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。必ずではないが、通常、これらの量は、記憶され、転送され、組み合わせられ、比較され、またその他の方法で操作されることができる、電気又は磁気信号の形式をとる。主に公共的使用の理由で、これらの信号をビット、値、要素、シンボル、キャラクタ、語、数字などと呼ぶことが時に便利であることが判明している。
しかしながら、上記のすべて及び同様の用語は適切な物理量に関連づけられるべきであり、これら量に適用される簡便なラベルに過ぎないという点に留意すべきである。上述の議論から明らかなように、別段具体的に示されない限り、説明全体を通じて、「決定する」、「識別する」、「追加する」、「選択する」などの用語を利用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理量(例えば、電子)として表されるデータを、コンピュータシステムのメモリ若しくはレジスタ又は他のこうした情報記憶、送信、若しくは表示デバイス内の物理量として同様に表される他のデータへ操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを参照することが十分理解される。
本発明の実施形態はまた、本明細書における動作を実行する装置に関する。この装置は、必要とされる目的に対して特別に構築されてよく、あるいはコンピュータに記憶されたコンピュータプログラムにより選択的に作動又は再構成される汎用コンピュータを含んでもよい。こうしたコンピュータプログラムは、これらに限られないがフロッピーディスク、光ディスク、CD−ROM、及び磁気光ディスクを含む任意タイプのディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光学カード、又は電子命令を記憶するのに適した任意タイプの媒体などの、コンピュータ読み取り可能記憶媒体に記憶されてよい。
本明細書に提示されるアルゴリズム及び表示は本質的に、いずれかの特定のコンピュータ又は他の装置に関連しない。様々な汎用システムが本明細書の教示に従うプログラムと共に使用されてよく、あるいは、必要とされる方法ステップを実行するためにより特化された装置を構築することが便利と判明する可能性がある。様々なこれらのシステムに必要とされる構造は以下の説明から明らかになる。さらに、本発明は、いずれかの特定のプログラミング言語を参照して説明されていない。本明細書に説明される本発明の教示を実現するために、様々なプログラミング言語が使用され得ることが十分理解される。
前述の詳細な説明において少なくとも1つの例示的な実施形態が提示されたが、多数のバリエーションが存在することが十分理解されるべきである。また、本明細書に説明する1つ又は複数の例示的な実施形態は、請求される対象事項の範囲、適用可能性、又は構成を何らかの方法で限定するよう意図するものではないことが理解されるべきである。むしろ、前述の詳細な説明は、説明された1つ又は複数の実施形態を実現するための便利なロードマップを当業者に提供するであろう。本特許出願の出願時に既知の均等物及び予見可能な均等物を含む、特許請求の範囲により定義される範囲から逸脱することなく、要素の機能及び配置において様々な変更がなされ得ることが理解されるべきである。

Claims (21)

  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. コンピューティングシステムに、
    プライマリサイトにおけるプライマリデータベースの利用不能を自動的に検出することであって、前記プライマリサイトは、前記プライマリデータベースが利用可能であるとき前記プライマリデータベースにデータを書き込み且つ前記プライマリデータベースからデータを読み取るアプリケーションサーバをさらに含み、
    前記プライマリサイトにおいてスタンバイデータベースが依然として利用可能であるかどうかを決定することであって、前記スタンバイデータベースは前記プライマリデータベースの複製であり、
    前記プライマリデータベースが利用不能であると検出され前記スタンバイデータベースが利用可能であると決定されたとき、フェイルオーバ処理シーケンスを自動的に開始することであって、前記フェイルオーバ処理シーケンスは、
    前記スタンバイデータベースを読み取り可能及び書き込み可能として自動的に有効にし、前記スタンバイデータベースに、他のスタンバイデータベースへのデータの複製を開始するよう前記プライマリサイトにおけるプライマリデータベースのロールを割り当てることと、
    フェイルオーバロール移行の後、前記アプリケーションサーバと前記スタンバイデータベースとの間の予め確立された接続を使用して、前記アプリケーションサーバが前記スタンバイデータベースからデータを読み取り且つ前記スタンバイデータベースにデータを書き込むことを可能にし、前記スタンバイデータベースが前記プライマリサイトにおける前記プライマリデータベースのロールを引き受けることを結果としてもたらすことと、を含む
    ことをさせることができるコンピュータ実行可能命令を含むコンピュータプログラム。
JP2019542595A 2017-02-23 2018-02-22 自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法 Active JP7208906B6 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022002015A JP7305813B2 (ja) 2017-02-23 2022-01-11 自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/440,810 US10409697B2 (en) 2017-02-23 2017-02-23 Automated self-healing database system and method for implementing the same
US15/440,810 2017-02-23
PCT/US2018/019230 WO2018156765A1 (en) 2017-02-23 2018-02-22 Automated self-healing database system and method for implementing the same

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022002015A Division JP7305813B2 (ja) 2017-02-23 2022-01-11 自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法

Publications (3)

Publication Number Publication Date
JP2020511708A true JP2020511708A (ja) 2020-04-16
JP7208906B2 JP7208906B2 (ja) 2023-01-19
JP7208906B6 JP7208906B6 (ja) 2023-02-28

Family

ID=61599615

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019542595A Active JP7208906B6 (ja) 2017-02-23 2018-02-22 自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法
JP2022002015A Active JP7305813B2 (ja) 2017-02-23 2022-01-11 自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022002015A Active JP7305813B2 (ja) 2017-02-23 2022-01-11 自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法

Country Status (6)

Country Link
US (2) US10409697B2 (ja)
EP (1) EP3598877B1 (ja)
JP (2) JP7208906B6 (ja)
CN (1) CN110392884B (ja)
CA (1) CA3049468A1 (ja)
WO (1) WO2018156765A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157459B2 (en) * 2016-02-26 2021-10-26 Red Hat, Inc. Granular data self-healing
US11436223B2 (en) 2017-01-30 2022-09-06 Salesforce, Inc. Query pin planner
US10698882B2 (en) * 2017-03-17 2020-06-30 International Business Machines Corporation Data compartments for read/write activity in a standby database
US20180285217A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Failover response using a known good state from a distributed ledger
US10425274B2 (en) 2017-05-11 2019-09-24 Salesforce.Com, Inc. Techniques and architectures for recovering from a service disruption in a multi-server environment
US10635561B2 (en) * 2017-05-11 2020-04-28 Salesforce.Com, Inc. Techniques and architectures for managing database failure in a single-node database architecture
JP6782210B2 (ja) * 2017-09-01 2020-11-11 株式会社日立製作所 計算機システム、データ管理方法、及びデータ管理プログラム
US11295836B2 (en) * 2017-12-28 2022-04-05 Cerner Innovation, Inc. Preservation of multi-server database fidelity
US11070419B2 (en) * 2018-07-24 2021-07-20 Vmware, Inc. Methods and systems to troubleshoot and localize storage failures for a multitenant application run in a distributed computing system
CN110928713B (zh) * 2018-09-19 2024-04-05 深圳爱捷云科技有限公司 一种数据库服务的故障修复方法、相关装置及存储介质
US11132270B2 (en) 2019-05-13 2021-09-28 Saudi Arabian Oil Company Planned zero downtime server switching for web applications
CN110161930B (zh) * 2019-06-05 2021-11-09 安徽三实信息技术服务有限公司 一种数据监控系统及其数据监控方法
US10917288B2 (en) * 2019-06-25 2021-02-09 Bank Of America Corporation Adaptive edge-shift for enterprise contingency operations
US11169723B2 (en) * 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
US11487637B2 (en) * 2019-07-19 2022-11-01 EMC IP Holding Company LLC Global inline name space verification for distributed file systems
US11977453B2 (en) 2019-09-12 2024-05-07 Restorvault, Llc Virtual replication of unstructured data
US11630737B2 (en) * 2019-09-12 2023-04-18 Restorvault, Llc Virtual replication of unstructured data
US11121914B2 (en) * 2019-11-22 2021-09-14 Walmart Apollo, Llc Monitoring and self-healing of deployed environments
CN111177241A (zh) * 2019-12-18 2020-05-19 贝壳技术有限公司 一种数据处理方法、装置、系统、电子设备及其存储介质
CN111026577B (zh) * 2019-12-27 2023-10-31 中国水产科学研究院渔业机械仪器研究所 软件系统功能自恢复的软件架构方法及其系统
US11151003B2 (en) 2020-03-10 2021-10-19 Capital One Services, Llc Processor health monitoring and auto failover and failback of a streaming system using a timestamp
US11249867B2 (en) 2020-05-05 2022-02-15 Capital One Services, Llc Automating the failover of a relational database in a cloud computing environment
US11169974B1 (en) * 2020-05-08 2021-11-09 Sap Se Database setup using a master copy
US11481367B2 (en) * 2020-09-02 2022-10-25 Oracle International Corporation Redo mining during rolling upgrade
US11409605B2 (en) 2020-10-20 2022-08-09 Sap Se Failover system for database unavailability
CN112199356B (zh) * 2020-12-09 2021-07-30 北京顺达同行科技有限公司 故障处理方法、装置、服务器以及存储介质
US20220382742A1 (en) * 2021-05-28 2022-12-01 Salesforce.Com, Inc. Ensuring high availablity of replicated database management systems during upgrades
CN113360476B (zh) * 2021-06-21 2023-11-21 上海上讯信息技术股份有限公司 一种程序数据库虚拟化插拔的方法及设备
CN113778763B (zh) * 2021-08-24 2023-10-24 百融至信(北京)科技有限公司 一种三方接口服务故障智能切换方法及系统
CN113779148B (zh) * 2021-09-10 2024-07-02 西安热工研究院有限公司 一种实时数据库冗余的工控系统数据传输方法和系统
US11847120B2 (en) 2021-12-03 2023-12-19 International Business Machines Corporation Performance of SQL execution sequence in production database instance
US11874751B2 (en) 2021-12-09 2024-01-16 International Business Machines Corporation Operating a data center
US11847031B2 (en) * 2022-03-04 2023-12-19 Insight Direct Usa, Inc. Database recovery and database recovery testing
CN114722029B (zh) * 2022-04-18 2024-01-09 苏州浪潮智能科技有限公司 一种修复monitor数据库的方法、系统、设备和存储介质
US12066885B2 (en) * 2022-06-16 2024-08-20 Dell Products L.P. Collection of forensic data after a processor freeze
US12072759B2 (en) 2023-01-20 2024-08-27 Salesforce, Inc. Cross-region software failure recovery
US11792125B1 (en) * 2023-05-16 2023-10-17 Citibank, N.A. Reducing network traffic by filtering network requests based on network request-related information systems and methods
CN117033087B (zh) * 2023-10-10 2024-01-19 武汉吧哒科技股份有限公司 数据处理方法、装置、存储介质及管理服务器

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004343776A (ja) * 2003-05-15 2004-12-02 Hewlett-Packard Development Co Lp カスケード式再同期を利用する障害回復システム
JP2007066154A (ja) * 2005-09-01 2007-03-15 Hitachi Ltd データをコピーして複数の記憶装置に格納するストレージシステム
JP2008134986A (ja) * 2006-10-30 2008-06-12 Hitachi Ltd 情報システム、データ転送方法及びデータ保護方法
JP2009129409A (ja) * 2007-11-28 2009-06-11 Hitachi Ltd 障害回復方法、計算機、クラスタシステム、管理計算機及び障害回復プログラム
JP2012168623A (ja) * 2011-02-10 2012-09-06 Nec Corp 待機系計算機、クラスタシステム、サービス提供方法およびプログラム
JP2013186557A (ja) * 2012-03-06 2013-09-19 Nec Corp データベースの非同期レプリケーション方式
JP2016009219A (ja) * 2014-06-20 2016-01-18 富士通株式会社 冗長システムおよび冗長化方法
JP2016126364A (ja) * 2014-12-26 2016-07-11 株式会社日立製作所 システムのバックアップ装置及びバックアップ方法
JP2017034610A (ja) * 2015-08-05 2017-02-09 日本電信電話株式会社 呼処理装置、セッション復旧方法及び呼処理サーバプログラム

Family Cites Families (159)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649104A (en) 1993-03-19 1997-07-15 Ncr Corporation System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers
US5608872A (en) 1993-03-19 1997-03-04 Ncr Corporation System for allowing all remote computers to perform annotation on an image and replicating the annotated image on the respective displays of other comuters
US7991347B1 (en) 1994-04-07 2011-08-02 Data Innovation Llc System and method for accessing set of digital data at a remote site
US5577188A (en) 1994-05-31 1996-11-19 Future Labs, Inc. Method to provide for virtual screen overlay
US7181758B1 (en) 1994-07-25 2007-02-20 Data Innovation, L.L.C. Information distribution and processing system
US5835915A (en) * 1995-01-24 1998-11-10 Tandem Computer Remote duplicate database facility with improved throughput and fault tolerance
GB2300991B (en) 1995-05-15 1997-11-05 Andrew Macgregor Ritchie Serving signals to browsing clients
US5715450A (en) 1995-09-27 1998-02-03 Siebel Systems, Inc. Method of selecting and presenting data from a database using a query language to a user of a computer system
US5831610A (en) 1996-02-23 1998-11-03 Netsuite Development L.P. Designing networks
US5821937A (en) 1996-02-23 1998-10-13 Netsuite Development, L.P. Computer method for updating a network design
US6604117B2 (en) 1996-03-19 2003-08-05 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
US5873096A (en) 1997-10-08 1999-02-16 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
AU6183698A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining visibility to a remote database client of a plurality of database transactions having variable visibility strengths
JP2002511164A (ja) 1997-02-26 2002-04-09 シーベル システムズ,インコーポレイティド 単純化された可視度ルールに用いるための複数のデータベース・トランザクションのリモート・データベース・クライアントの可視度決定方法
AU6336698A (en) 1997-02-26 1998-09-29 Siebel Systems, Inc. Distributed relational database
AU6654798A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining visibility to a remote database client of a plurality of database transactions using a networked proxy server
AU6440398A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions
WO1998040805A2 (en) 1997-02-27 1998-09-17 Siebel Systems, Inc. Method of synchronizing independently distributed software and database schema
JP2001514776A (ja) 1997-02-27 2001-09-11 シーベル システムズ,インコーポレイティド ローカルな修正を組み込むソフトウェア配布の連続レベル移送の方法
AU6669198A (en) 1997-02-28 1998-09-18 Siebel Systems, Inc. Partially replicated distributed database with multiple levels of remote clients
US6169534B1 (en) 1997-06-26 2001-01-02 Upshot.Com Graphical user interface for customer information management
US6560461B1 (en) 1997-08-04 2003-05-06 Mundi Fomukong Authorized location reporting paging system
US5918159A (en) 1997-08-04 1999-06-29 Fomukong; Mundi Location reporting satellite paging system with optional blocking of location reporting
US20020059095A1 (en) 1998-02-26 2002-05-16 Cook Rachael Linette System and method for generating, capturing, and managing customer lead information over a computer network
US6732111B2 (en) 1998-03-03 2004-05-04 Siebel Systems, Inc. Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
US6161149A (en) 1998-03-13 2000-12-12 Groupserve, Inc. Centrifugal communication and collaboration method
US6772229B1 (en) 2000-11-13 2004-08-03 Groupserve, Inc. Centrifugal communication and collaboration method
US5963953A (en) 1998-03-30 1999-10-05 Siebel Systems, Inc. Method, and system for product configuration
JP2002523842A (ja) 1998-08-27 2002-07-30 アップショット・コーポレーション ネットワークベースのセールス・フォース管理のための方法および装置
US6728960B1 (en) 1998-11-18 2004-04-27 Siebel Systems, Inc. Techniques for managing multiple threads in a browser environment
US6601087B1 (en) 1998-11-18 2003-07-29 Webex Communications, Inc. Instant document sharing
US6549908B1 (en) 1998-11-18 2003-04-15 Siebel Systems, Inc. Methods and apparatus for interpreting user selections in the context of a relation distributed as a set of orthogonalized sub-relations
JP2002531890A (ja) 1998-11-30 2002-09-24 シーベル システムズ,インコーポレイティド クライアントサーバーアプリケーションにおける開発ツール、方法及びシステム
AU2707200A (en) 1998-11-30 2000-06-19 Siebel Systems, Inc. Assignment manager
JP2002531899A (ja) 1998-11-30 2002-09-24 シーベル システムズ,インコーポレイティド プロセス監視用の状態モデル
WO2000033226A1 (en) 1998-11-30 2000-06-08 Siebel Systems, Inc. Smart scripting call centers
US7356482B2 (en) 1998-12-18 2008-04-08 Alternative Systems, Inc. Integrated change management unit
US20020072951A1 (en) 1999-03-03 2002-06-13 Michael Lee Marketing support database management method, system and program product
US6574635B2 (en) 1999-03-03 2003-06-03 Siebel Systems, Inc. Application instantiation based upon attributes and values stored in a meta data repository, including tiering of application layers objects and components
US7698160B2 (en) 1999-05-07 2010-04-13 Virtualagility, Inc System for performing collaborative tasks
US8095413B1 (en) 1999-05-07 2012-01-10 VirtualAgility, Inc. Processing management information
US6621834B1 (en) 1999-11-05 2003-09-16 Raindance Communications, Inc. System and method for voice transmission over network protocols
US6535909B1 (en) 1999-11-18 2003-03-18 Contigo Software, Inc. System and method for record and playback of collaborative Web browsing session
US6324568B1 (en) 1999-11-30 2001-11-27 Siebel Systems, Inc. Method and system for distributing objects over a network
US6654032B1 (en) 1999-12-23 2003-11-25 Webex Communications, Inc. Instant sharing of documents on a remote server
US6336137B1 (en) 2000-03-31 2002-01-01 Siebel Systems, Inc. Web client-server system and method for incompatible page markup and presentation languages
US6577726B1 (en) 2000-03-31 2003-06-10 Siebel Systems, Inc. Computer telephony integration hotelling method and system
US6732100B1 (en) 2000-03-31 2004-05-04 Siebel Systems, Inc. Database access method and system for user role defined access
US7266502B2 (en) 2000-03-31 2007-09-04 Siebel Systems, Inc. Feature centric release manager method and system
US6842748B1 (en) 2000-04-14 2005-01-11 Rightnow Technologies, Inc. Usage based strength between related information in an information retrieval system
US7730072B2 (en) 2000-04-14 2010-06-01 Rightnow Technologies, Inc. Automated adaptive classification system for knowledge networks
US6434550B1 (en) 2000-04-14 2002-08-13 Rightnow Technologies, Inc. Temporal updates of relevancy rating of retrieved information in an information search system
US6665655B1 (en) 2000-04-14 2003-12-16 Rightnow Technologies, Inc. Implicit rating of retrieved information in an information search system
US7058853B1 (en) 2000-06-09 2006-06-06 Hewlett-Packard Development Company, L.P. Highly available transaction processing
US6763501B1 (en) 2000-06-09 2004-07-13 Webex Communications, Inc. Remote document serving
US7069231B1 (en) 2000-07-20 2006-06-27 Oracle International Corporation Methods and systems for defining, applying and executing customer care relationship plans
KR100365357B1 (ko) 2000-10-11 2002-12-18 엘지전자 주식회사 무선통신 단말기의 데이터 통신 방법
US7581230B2 (en) 2001-02-06 2009-08-25 Siebel Systems, Inc. Adaptive communication application programming interface
US20040162836A1 (en) * 2001-02-06 2004-08-19 Eyal Aronoff System and method for altering database requests and database responses
USD454139S1 (en) 2001-02-20 2002-03-05 Rightnow Technologies Display screen for a computer
US7363388B2 (en) 2001-03-28 2008-04-22 Siebel Systems, Inc. Method and system for direct server synchronization with a computing device
US6829655B1 (en) 2001-03-28 2004-12-07 Siebel Systems, Inc. Method and system for server synchronization with a computing device via a companion device
US7174514B2 (en) 2001-03-28 2007-02-06 Siebel Systems, Inc. Engine to present a user interface based on a logical structure, such as one for a customer relationship management system, across a web site
US20030018705A1 (en) 2001-03-31 2003-01-23 Mingte Chen Media-independent communication server
US20030206192A1 (en) 2001-03-31 2003-11-06 Mingte Chen Asynchronous message push to web browser
US6732095B1 (en) 2001-04-13 2004-05-04 Siebel Systems, Inc. Method and apparatus for mapping between XML and relational representations
US7761288B2 (en) 2001-04-30 2010-07-20 Siebel Systems, Inc. Polylingual simultaneous shipping of software
US6763351B1 (en) 2001-06-18 2004-07-13 Siebel Systems, Inc. Method, apparatus, and system for attaching search results
US6711565B1 (en) 2001-06-18 2004-03-23 Siebel Systems, Inc. Method, apparatus, and system for previewing search results
US6728702B1 (en) 2001-06-18 2004-04-27 Siebel Systems, Inc. System and method to implement an integrated search center supporting a full-text search and query on a database
US6782383B2 (en) 2001-06-18 2004-08-24 Siebel Systems, Inc. System and method to implement a persistent and dismissible search center frame
US20030004971A1 (en) 2001-06-29 2003-01-02 Gong Wen G. Automatic generation of data models and accompanying user interfaces
US6978445B2 (en) 2001-09-28 2005-12-20 Siebel Systems, Inc. Method and system for supporting user navigation in a browser environment
US7761535B2 (en) 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US6826582B1 (en) 2001-09-28 2004-11-30 Emc Corporation Method and system for using file systems for content management
US6724399B1 (en) 2001-09-28 2004-04-20 Siebel Systems, Inc. Methods and apparatus for enabling keyboard accelerators in applications implemented via a browser
US6993712B2 (en) 2001-09-28 2006-01-31 Siebel Systems, Inc. System and method for facilitating user interaction in a browser environment
US8359335B2 (en) 2001-09-29 2013-01-22 Siebel Systems, Inc. Computing system and method to implicitly commit unsaved data for a world wide web application
US6901595B2 (en) 2001-09-29 2005-05-31 Siebel Systems, Inc. Method, apparatus, and system for implementing a framework to support a web-based application
US7962565B2 (en) 2001-09-29 2011-06-14 Siebel Systems, Inc. Method, apparatus and system for a mobile web client
US7146617B2 (en) 2001-09-29 2006-12-05 Siebel Systems, Inc. Method, apparatus, and system for implementing view caching in a framework to support web-based applications
US7289949B2 (en) 2001-10-09 2007-10-30 Right Now Technologies, Inc. Method for routing electronic correspondence based on the level and type of emotion contained therein
US7062502B1 (en) 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US6804330B1 (en) 2002-01-04 2004-10-12 Siebel Systems, Inc. Method and system for accessing CRM data via voice
US7058890B2 (en) 2002-02-13 2006-06-06 Siebel Systems, Inc. Method and system for enabling connectivity to a data system
US6959310B2 (en) 2002-02-15 2005-10-25 International Business Machines Corporation Generating data set of the first file system by determining a set of changes between data stored in first snapshot of the first file system, and data stored in second snapshot of the first file system
US7131071B2 (en) 2002-03-29 2006-10-31 Siebel Systems, Inc. Defining an approval process for requests for approval
US7672853B2 (en) 2002-03-29 2010-03-02 Siebel Systems, Inc. User interface for processing requests for approval
US6850949B2 (en) 2002-06-03 2005-02-01 Right Now Technologies, Inc. System and method for generating a dynamic interface via a communications network
US8639542B2 (en) 2002-06-27 2014-01-28 Siebel Systems, Inc. Method and apparatus to facilitate development of a customer-specific business process model
US7594181B2 (en) 2002-06-27 2009-09-22 Siebel Systems, Inc. Prototyping graphical user interfaces
US7437720B2 (en) 2002-06-27 2008-10-14 Siebel Systems, Inc. Efficient high-interactivity user interface for client-server applications
US20040010489A1 (en) 2002-07-12 2004-01-15 Rightnow Technologies, Inc. Method for providing search-specific web pages in a network computing environment
US7251787B2 (en) 2002-08-28 2007-07-31 Siebel Systems, Inc. Method and apparatus for an integrated process modeller
US9448860B2 (en) 2003-03-21 2016-09-20 Oracle America, Inc. Method and architecture for providing data-change alerts to external applications via a push service
US7904340B2 (en) 2003-03-24 2011-03-08 Siebel Systems, Inc. Methods and computer-readable medium for defining a product model
JP2006523353A (ja) 2003-03-24 2006-10-12 シーベル システムズ,インコーポレイティド 共通共通オブジェクト
WO2004086197A2 (en) 2003-03-24 2004-10-07 Siebel Systems, Inc. Custom common object
US8762415B2 (en) 2003-03-25 2014-06-24 Siebel Systems, Inc. Modeling of order data
US7685515B2 (en) 2003-04-04 2010-03-23 Netsuite, Inc. Facilitating data manipulation in a browser-based user interface of an enterprise business application
US7412455B2 (en) 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US7620655B2 (en) 2003-05-07 2009-11-17 Enecto Ab Method, device and computer program product for identifying visitors of websites
US7409336B2 (en) 2003-06-19 2008-08-05 Siebel Systems, Inc. Method and system for searching data based on identified subset of categories and relevance-scored text representation-category combinations
US20040260659A1 (en) 2003-06-23 2004-12-23 Len Chan Function space reservation system
US7237227B2 (en) 2003-06-30 2007-06-26 Siebel Systems, Inc. Application user interface template with free-form layout
US7694314B2 (en) 2003-08-28 2010-04-06 Siebel Systems, Inc. Universal application network architecture
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US8607322B2 (en) 2004-07-21 2013-12-10 International Business Machines Corporation Method and system for federated provisioning
US7289976B2 (en) 2004-12-23 2007-10-30 Microsoft Corporation Easy-to-use data report specification
DE602005014992D1 (de) * 2005-10-31 2009-07-30 Packetfront Systems Ab Hochverfügbarkeitsnetzwerksystem
US20070185912A1 (en) * 2006-02-08 2007-08-09 International Business Machines Corporation Off-loading I/O and computationally intensive operations to secondary systems
US8209308B2 (en) 2006-05-01 2012-06-26 Rueben Steven L Method for presentation of revisions of an electronic document
US8566301B2 (en) 2006-05-01 2013-10-22 Steven L. Rueben Document revisions in a collaborative computing environment
US9135228B2 (en) 2006-05-01 2015-09-15 Domo, Inc. Presentation of document history in a web browsing application
US7779475B2 (en) 2006-07-31 2010-08-17 Petnote Llc Software-based method for gaining privacy by affecting the screen of a computing device
US7730478B2 (en) 2006-10-04 2010-06-01 Salesforce.Com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
US8082301B2 (en) 2006-11-10 2011-12-20 Virtual Agility, Inc. System for supporting collaborative activity
US8954500B2 (en) 2008-01-04 2015-02-10 Yahoo! Inc. Identifying and employing social network relationships
US8498967B1 (en) * 2007-01-30 2013-07-30 American Megatrends, Inc. Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
US7702741B2 (en) * 2007-07-31 2010-04-20 Oracle International Corporation Configuring or reconfiguring a multi-master information sharing environment
US8583615B2 (en) 2007-08-31 2013-11-12 Yahoo! Inc. System and method for generating a playlist from a mood gradient
US20090100342A1 (en) 2007-10-12 2009-04-16 Gabriel Jakobson Method and system for presenting address and mapping information
US8490025B2 (en) 2008-02-01 2013-07-16 Gabriel Jakobson Displaying content associated with electronic mapping systems
US8504945B2 (en) 2008-02-01 2013-08-06 Gabriel Jakobson Method and system for associating content with map zoom function
US8014943B2 (en) 2008-05-08 2011-09-06 Gabriel Jakobson Method and system for displaying social networking navigation information
US8032297B2 (en) 2008-05-08 2011-10-04 Gabriel Jakobson Method and system for displaying navigation information on an electronic map
US8189524B2 (en) 2008-05-09 2012-05-29 Research In Motion Limited Method for cell selection in a radio access network
US8646103B2 (en) 2008-06-30 2014-02-04 Gabriel Jakobson Method and system for securing online identities
US8510664B2 (en) 2008-09-06 2013-08-13 Steven L. Rueben Method and system for displaying email thread information
US8661056B1 (en) 2008-11-03 2014-02-25 Salesforce.Com, Inc. System, method and computer program product for publicly providing web content of a tenant using a multi-tenant on-demand database service
US8369968B2 (en) * 2009-04-03 2013-02-05 Dell Products, Lp System and method for handling database failover
US8677088B1 (en) 2009-10-29 2014-03-18 Symantec Corporation Systems and methods for recovering primary sites after failovers to remote secondary sites
US8510045B2 (en) 2009-12-22 2013-08-13 Steven L. Rueben Digital maps displaying search-resulting points-of-interest in user delimited regions
US8925041B2 (en) 2010-04-01 2014-12-30 Salesforce.Com, Inc. System, method and computer program product for performing one or more actions based on a determined access permissions for a plurality of users
US8566654B2 (en) 2010-08-13 2013-10-22 Salesforce.Com, Inc. Debugging site errors by an admin as a guest user in a multi-tenant database environment
US8615488B2 (en) 2011-07-01 2013-12-24 International Business Machines Corporation Physical replication of database subset to improve availability and reduce resource cost in a cloud environment
US20130091376A1 (en) 2011-10-05 2013-04-11 International Business Machines Corporation Self-repairing database system
US8943002B2 (en) 2012-02-10 2015-01-27 Liveperson, Inc. Analytics driven engagement
US8769004B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system integrated with social networks
US8769017B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system having document object model element interaction detection
US8756275B2 (en) 2012-02-17 2014-06-17 Zebedo Variable speed collaborative web browsing system
US8984332B2 (en) * 2012-06-08 2015-03-17 Microsoft Technology Licensing, Llc Active/passive database management across clusters
US8954783B2 (en) * 2012-06-28 2015-02-10 Microsoft Technology Licensing, Llc Two-tier failover service for data disaster recovery
US9513894B2 (en) 2012-08-31 2016-12-06 Oracle International Corporation Database software upgrade using specify-validate-execute protocol
US20140136878A1 (en) 2012-11-14 2014-05-15 Microsoft Corporation Scaling Up and Scaling Out of a Server Architecture for Large Scale Real-Time Applications
US9514160B2 (en) * 2013-03-11 2016-12-06 Oracle International Corporation Automatic recovery of a failed standby database in a cluster
US20150074536A1 (en) 2013-09-12 2015-03-12 Commvault Systems, Inc. File manager integration with virtualization in an information management system, including user control and storage management of virtual machines
JP2015149578A (ja) 2014-02-06 2015-08-20 株式会社日立製作所 運用管理装置
US9400720B2 (en) * 2014-04-18 2016-07-26 Sybase, Inc. Flexible high availability disaster recovery with a set of database servers
US9329949B2 (en) 2014-04-30 2016-05-03 Oracle International Corporation Comprehensive error management capabilities for disaster recovery operations
US9632887B2 (en) 2014-09-19 2017-04-25 International Business Machines Corporation Automatic client side seamless failover
US9836363B2 (en) * 2014-09-30 2017-12-05 Microsoft Technology Licensing, Llc Semi-automatic failover
CA3070683C (en) 2014-12-31 2024-03-19 Servicenow, Inc. Failure resistant distributed computing system
US9785480B2 (en) * 2015-02-12 2017-10-10 Netapp, Inc. Load balancing and fault tolerant service in a distributed data system
CN104660386A (zh) * 2015-03-03 2015-05-27 浪潮电子信息产业股份有限公司 一种基于安腾平台下提高db2容灾高可用性的方法
US10135837B2 (en) 2016-05-17 2018-11-20 Amazon Technologies, Inc. Versatile autoscaling for containers
US10698882B2 (en) 2017-03-17 2020-06-30 International Business Machines Corporation Data compartments for read/write activity in a standby database
US20200026786A1 (en) 2018-07-18 2020-01-23 International Business Machines Corporation Management and synchronization of batch workloads with active/active sites using proxy replication engines
US10891304B2 (en) 2018-07-25 2021-01-12 Commvault Systems, Inc. Distributed and scalable client-based storage management

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004343776A (ja) * 2003-05-15 2004-12-02 Hewlett-Packard Development Co Lp カスケード式再同期を利用する障害回復システム
JP2007066154A (ja) * 2005-09-01 2007-03-15 Hitachi Ltd データをコピーして複数の記憶装置に格納するストレージシステム
JP2008134986A (ja) * 2006-10-30 2008-06-12 Hitachi Ltd 情報システム、データ転送方法及びデータ保護方法
JP2009129409A (ja) * 2007-11-28 2009-06-11 Hitachi Ltd 障害回復方法、計算機、クラスタシステム、管理計算機及び障害回復プログラム
JP2012168623A (ja) * 2011-02-10 2012-09-06 Nec Corp 待機系計算機、クラスタシステム、サービス提供方法およびプログラム
JP2013186557A (ja) * 2012-03-06 2013-09-19 Nec Corp データベースの非同期レプリケーション方式
JP2016009219A (ja) * 2014-06-20 2016-01-18 富士通株式会社 冗長システムおよび冗長化方法
JP2016126364A (ja) * 2014-12-26 2016-07-11 株式会社日立製作所 システムのバックアップ装置及びバックアップ方法
JP2017034610A (ja) * 2015-08-05 2017-02-09 日本電信電話株式会社 呼処理装置、セッション復旧方法及び呼処理サーバプログラム

Also Published As

Publication number Publication date
EP3598877B1 (en) 2021-04-07
CN110392884B (zh) 2023-08-08
JP2022141579A (ja) 2022-09-29
US10409697B2 (en) 2019-09-10
WO2018156765A1 (en) 2018-08-30
US20180239677A1 (en) 2018-08-23
CN110392884A (zh) 2019-10-29
US20190294512A1 (en) 2019-09-26
CA3049468A1 (en) 2018-08-30
US11093356B2 (en) 2021-08-17
EP3598877A1 (en) 2020-01-29
JP7305813B2 (ja) 2023-07-10
JP7208906B6 (ja) 2023-02-28
JP7208906B2 (ja) 2023-01-19

Similar Documents

Publication Publication Date Title
JP7305813B2 (ja) 自動自己修復データベースシステム及び自動自己修復データベースシステムを実現する方法
US11249815B2 (en) Maintaining two-site configuration for workload availability between sites at unlimited distances for products and services
US10084858B2 (en) Managing continuous priority workload availability and general workload availability between sites at unlimited distances for products and services
US10656929B2 (en) Autonomously healing microservice-based applications
US11966307B2 (en) Re-aligning data replication configuration of primary and secondary data serving entities of a cross-site storage solution after a failover event
US10558626B2 (en) Merging and unmerging objects using graphical representation
US10635561B2 (en) Techniques and architectures for managing database failure in a single-node database architecture
US11106497B2 (en) Distributed scheduling in a virtual machine environment
US10891308B2 (en) Automated self-scaling database system for automatically scaling out write operations and method for implementing the same in a multi-tenant, cloud-based computing environment
US10540369B2 (en) Org sync suspend and resume data sync
US20210318935A1 (en) Method of using statistical backup validation for predictable database restore time
US10902021B2 (en) Automated self-scaling database system for automatically scaling out read operations and method for implementing the same
US20200097556A1 (en) Automated self-scaling database system and method for implementing the same
US20230095756A1 (en) Dynamically reconfiguring a database system of a tenant based on risk profile(s) of the tenant
US10853131B2 (en) Dataflow life cycles
US20210232431A1 (en) Automated operating system patching using auto scaling group and persistent volumes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220111

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220927

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220927

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20221005

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20221011

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230106

R150 Certificate of patent or registration of utility model

Ref document number: 7208906

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150