特許第5654751号(P5654751)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特許5654751マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム
<>
  • 特許5654751-マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム 図000002
  • 特許5654751-マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム 図000003
  • 特許5654751-マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム 図000004
  • 特許5654751-マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム 図000005
  • 特許5654751-マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム 図000006
  • 特許5654751-マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム 図000007
  • 特許5654751-マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム 図000008
  • 特許5654751-マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5654751
(24)【登録日】2014年11月28日
(45)【発行日】2015年1月14日
(54)【発明の名称】マルチテナント型オンデマンドデータベースサービスを介して開発アプリケーションへのアクセスを可能にするための方法及びシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20141218BHJP
   G06F 9/445 20060101ALI20141218BHJP
【FI】
   G06F12/00 513J
   G06F9/06 610Q
【請求項の数】21
【全頁数】23
(21)【出願番号】特願2009-531390(P2009-531390)
(86)(22)【出願日】2007年9月24日
(65)【公表番号】特表2010-506294(P2010-506294A)
(43)【公表日】2010年2月25日
(86)【国際出願番号】US2007020664
(87)【国際公開番号】WO2008045199
(87)【国際公開日】20080417
【審査請求日】2010年9月24日
【審判番号】不服2013-19411(P2013-19411/J1)
【審判請求日】2013年10月4日
(31)【優先権主張番号】60/828,192
(32)【優先日】2006年10月4日
(33)【優先権主張国】US
(31)【優先権主張番号】60/828,757
(32)【優先日】2006年10月9日
(33)【優先権主張国】US
(31)【優先権主張番号】11/859,498
(32)【優先日】2007年9月21日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース ドット コム インコーポレイティッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ウェイズマン, クレイグ
【合議体】
【審判長】 小曳 満昭
【審判官】 千葉 輝久
【審判官】 山田 正文
(56)【参考文献】
【文献】 米国特許第6532488(US,B1)
【文献】 特開2001−142885(JP,A)
【文献】 山本 哲也 他,ユーティリティ・コンピューティング・モデルを”実感”する 「オンデマンドCRM」の時代,COMPUTERWORLD Get Technology Right,(株)IDGジャパン,2005年5月1日,第2巻 第5号,p. 90〜97
【文献】 目次 康男 他,SaaSの衝撃 進化するオンデマンド・アプリケーション,日経コンピュータ,日本,日経BP社,2006年 4月17日,第650号,p. 42〜47
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00
G06F13/00
G06Q10/00
G06Q30/00
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行される方法であって、前記コンピュータのプロセッサが、
マルチテナント型オンデマンドデータベースサービスにおいて、アプリケーションのデベロッパシステムからアップロードされた開発アプリケーションを受け取るステップと、
前記オンデマンドデータベースサービスを用いて前記アプリケーションをテストするステップであって、前記テストの第1の部分は前記アプリケーションのデベロッパシステムにより制御され、前記テストの第2の部分は前記オンデマンドデータベースサービスにより制御され、前記オンデマンドデータベースサービスが前記テストの第2の部分を自動的にネイティブに実行することを含み、前記テストの第2の部分は前記オンデマンドデータベースサービスが修正されるたびに前記アプリケーションを自動的にテストするステップを含む、テストするステップと、
前記オンデマンドデータベースサービスのテナントシステムに、前記アプリケーションへのアクセスさせるステップとを含み、
前記テストの第2の部分の間、前記アプリケーションは前記オンデマンドデータベースサービスの制御下にあり、
前記アプリケーションは前記オンデマンドデータベースサービスの制御下にあることは、前記アプリケーションが所定要件を満たさない場合、前記アプリケーションの前記オンデマンドデータベースサービスへの公開を許可しないことにより、前記アプリケーションが方針に従わない時、前記オンデマンドデータベースサービスが前記テナントによる前記アプリケーションへのアクセスを排除する方針を実行することを含み、
開発された各アプリケーションに対して、前記オンデマンドデータベースサービスは動的コンテキストリミッタに基づき、前記開発されたアプリケーションの所定アスペクトを監視及び制限し、
前記アプリケーションに対して利用可能になるリソース量は前記オンデマンドデータベースサービスにより制限され、前記アプリケーションに対して利用可能にされ前記オンデマンドデータベースサービスにより制限されるリソースは、制限された記憶資源、制限された処理資源、及び制限された帯域幅資源よりなる群から選択される、
方法。
【請求項2】
前記アプリケーションへのアクセスは前記テストに基づき条件付きで許可される、請求項1に記載の方法。
【請求項3】
制限される前記アプリケーションのアスペクトはデータベースの列の数を含む、請求項1に記載の方法。
【請求項4】
制限される前記アプリケーションのアスペクトはデータベースに対するクエリの数を含む、請求項1に記載の方法。
【請求項5】
制限される前記アプリケーションのアスペクトはクエリによって返される行の数を含む、請求項1に記載の方法。
【請求項6】
制限される前記アプリケーションのアスペクトはデータベースにアクセスするステートメントの数を含む、請求項1に記載の方法。
【請求項7】
制限される前記アプリケーションのアスペクトはデータベースにアクセスするステートメントの間のステートメントの数を含む、請求項1に記載の方法。
【請求項8】
制限される前記アプリケーションのアスペクトは処理される行の数を含む、請求項1に記載の方法。
【請求項9】
制限される前記アプリケーションのアスペクトはトランザクションステートメントの数を含む、請求項1に記載の方法。
【請求項10】
制限される前記アプリケーションのアスペクトは最後に実行されたトランザクション制御ステートメント以降の未コミット行の総数を含む、請求項1に記載の方法。
【請求項11】
制限される前記アプリケーションのアスペクトは前記アプリケーションに含まれる最後に実行されたデータベースコール以降のステートメントの総数を含む、請求項1に記載の方法。
【請求項12】
前記アプリケーションは正当性確認のテストを受けるとの要件を課すことにより制御される、請求項1に記載の方法。
【請求項13】
前記オンデマンドデータベースサービスの前記テナントによる前記アプリケーションへのアクセスが、制御される、請求項1に記載の方法。
【請求項14】
各アプリケーションの単一のインスタンスがインスタンス化され、前記オンデマンドデータベースサービスの複数の前記テナントの間で共有される、請求項15に記載の方法。
【請求項15】
前記プロセッサが、受け取るステップの後、提供するステップの前に、
前記アプリケーションをコンパイルするステップをさらに含む、請求項1に記載の方法。
【請求項16】
前記コンパイル済アプリケーションが、前記オンデマンドデータベースサービスのランタイムインタープリタによって処理されることが可能である、請求項17に記載の方法。
【請求項17】
前記コンパイル済アプリケーションがメタデータを含む、請求項17に記載の方法。
【請求項18】
前記メタデータがデータベースに保存される、請求項19に記載の方法。
【請求項19】
制限される前記アプリケーションのアスペクトは電子メールメッセージの数を含む、請求項1に記載の方法。
【請求項20】
前記オンデマンドデータベースサービスが、
前記アプリケーションを構成できるプラットフォームで、少なくとも1つのプログラミング言語命令を受け取るステップと、
前記少なくとも1つのプログラミング言語命令に基づいて、オンデマンドデータベースサービスに対する1組の命令を生成するステップと、
前記プログラミング言語命令に従って、結果に影響を及ぼすために前記1組の命令を前記オンデマンドデータベースサービスに適用するステップとをさらに含み、
前記少なくとも1つのプログラミング言語命令が、PL/SOQL言語命令を含む、請求項1に記載の方法。
【請求項21】
プロセッサと、
コンピュータプログラムを記憶したコンピュータ読み取り可能記憶媒体とを備えた装置であって、前記コンピュータプログラムは、前記プロセッサによって実行されたとき、前記プロセッサに、
マルチテナント型オンデマンドデータベースサービスにおいて、アプリケーションのデベロッパシステムからアップロードされた開発アプリケーションを受け取るステップと、
前記オンデマンドデータベースサービスを用いて前記アプリケーションをテストするステップであって、前記テストの第1の部分は前記アプリケーションのデベロッパシステムにより制御され、前記テストの第2の部分は前記オンデマンドデータベースサービスにより制御され、前記オンデマンドデータベースサービスが前記テストの第2の部分を自動的にネイティブに実行することを含み、前記テストの第2の部分は前記オンデマンドデータベースサービスが修正されるたびに前記アプリケーションを自動的にテストするステップを含む、テストするステップと、
前記オンデマンドデータベースサービスのテナントシステムに、前記アプリケーションへのアクセスさせるステップとを実施させ、
前記テストの第2の部分の間、前記アプリケーションは前記オンデマンドデータベースサービスの制御下にあり、
前記アプリケーションは前記オンデマンドデータベースサービスの制御下にあることは、前記アプリケーションが所定要件を満たさない場合、前記アプリケーションの前記オンデマンドデータベースサービスへの公開を許可しないことにより、前記アプリケーションが方針に従わない時、前記オンデマンドデータベースサービスが前記テナントによる前記アプリケーションへのアクセスを排除する方針を実行することを含み、
開発された各アプリケーションに対して、前記オンデマンドデータベースサービスは動的コンテキストリミッタに基づき、前記開発されたアプリケーションの所定アスペクトを監視及び制限し、
前記アプリケーションに対して利用可能になるリソース量は前記オンデマンドデータベースサービスにより制限され、前記アプリケーションに対して利用可能にされ前記オンデマンドデータベースサービスにより制限されるリソースは、制限された記憶資源、制限された処理資源、及び制限された帯域幅資源よりなる群から選択される、
装置。
【発明の詳細な説明】
【著作権表示】
【0001】
[0001]本特許文書の開示の一部は、著作権保護の対象となる記述内容を含む。著作権所有者は、特許商標庁の特許ファイル又は記録に現れるとおりの、特許文書又は特許開示の何人による複製にも異議を唱えないが、それ以外はどのようなものであれすべての著作権を保有する。
【発明の分野】
【0002】
[0002]本発明は、一般に、デベロッパフレームワークに関し、より詳細には、改良された方法でのアプリケーション開発に関する。
【背景】
【0003】
[0003]背景セクションで説明される主題は、それが背景セクションで言及されたからというだけで、従来技術であると仮定されるべきではない。同様に、背景セクションで言及される問題、又は背景セクションの主題に関連する問題は、従来技術においてすでに認識されていたと仮定されるべきではない。背景セクションにおける主題は、それ自体でも発明となり得る、異なる手法を表すに過ぎない。
【0004】
[0004]従来のデータベースシステムでは、ユーザは、1つの論理データベース内のデータリソースにアクセスする。そのような従来のシステムのユーザは一般に、ユーザ自身のシステムを使用して、システムからデータを検索し、システムにデータを保存する。ユーザシステムは、複数のサーバシステムの1つに遠隔地からアクセスすることができ、サーバシステムは、それを受けて、データベースシステムにアクセスすることができる。システムからのデータ検索は、ユーザシステムからデータベースシステムへのクエリの発行を含むことができる。データベースシステムは、クエリで受け取った情報要求を処理し、要求に関連する情報をユーザシステムに送信することができる。
【0005】
[0005]上述のデータベースシステムの機能を拡張するための様々なアプリケーションを開発したいという要望がしばしば生じる。しかし、これまでは、そのようなアプリケーションは一般に、制御されていない環境で開発されていた。例えば、従来は、デベロッパが、データベースシステムサービスを貧弱な制御に委ねたまま、そのようなアプリケーションの開発を指図する。このことが今度は、開発プロセスなどにおいて様々な不都合をもたらすことがある。例えば、様々な開発上のベストプラクティス(例えば、テスト、リソース割り当てなどに関する)は、デベロッパの制御下にあるため、必ずしも実施されるとは限らない。
【簡単な概要】
【0006】
[0006]実施形態によれば、制御された環境において、マルチテナント型オンデマンドデータベースサービス(multi−tenant
on−demand database service)を介して、開発アプリケーションへのアクセスを可能にするための機構及び方法が提供される。そのようなアクセスを提供するためのこれらの機構及び方法は、実施形態が、そのような開発アプリケーションのアクセスに加えて、開発プロセスに対する付加的な制御も提供することを可能にし得る。そのような付加的な制御を提供する実施形態の能力は、改良されたアプリケーション開発/ランタイムフレームワークなどをもたらし得る。
【0007】
[0007]一実施形態では、例を挙げると、制御された環境において、マルチテナント型オンデマンドデータベースサービスを介して、開発アプリケーションへのアクセスを可能にするための方法が提供される。使用に際して、開発アプリケーションが、マルチテナント型オンデマンドデータベースサービスで受け取られる。アプリケーションへのアクセスが、オンデマンドデータベースサービスのテナントに提供される。そのようなアプリケーションは、オンデマンドデータベースサービスの制御下にある。
【0008】
[0008]本発明は、開発アプリケーションへのアクセスを可能にする技法が、マルチテナント型データベースオンデマンドサービスのフロントエンドを提供するアプリケーションサーバにおいて実施される、一実施形態を参照して説明されるが、本発明は、マルチテナント型データベース、又はアプリケーションサーバ上への配備に限定されない。実施形態は、特許請求される実施形態の範囲から逸脱することなく、他のデータベースアーキテクチャ、すなわち、ORACLE(登録商標)及びDB2(登録商標)などを使用して実施することもできる。
【0009】
[0009]上記の実施形態のいずれも、単独で使用されてよく、又は任意の組み合わせで互いに一緒に使用されてもよい。本明細書内に包含される発明は、この簡単な概要又は要約において、単に部分的に言及若しくは暗に言及されるに過ぎない、又はまったく言及若しくは暗に言及されることのない実施形態も含んでよい。本発明の様々な実施形態は、本明細書の1つ又は複数の箇所で説明又は暗に言及されることがある、従来技術に伴う様々な短所が動機となったものもあるが、本発明の実施形態は、必ずしもこれらの短所のすべてに対処するものではない。言い換えると、本発明の異なる実施形態は、本明細書で説明されることがある異なる短所に対処することがある。いくつかの実施形態は、本明細書で説明されることがあるいくつかの短所に単に部分的に対処するだけのことも、又はただ1つの短所に対処するだけのこともあり、いくつかの実施形態は、これらの短所のどれにも対処しないこともある。
【図面の簡単な説明】
【0010】
図1A】一実施形態による、オンデマンドデータベースサービスを介して、開発アプリケーションへのアクセスを可能にするためのシステムを示す図である。
図1B】オンデマンドデータベースサービスを利用して、開発アプリケーションをテストするための方法を示す図である。
図2】オンデマンドデータベースサービスと共に実行するインタフェースを拡張するための方法を示す図である。
図3】別の実施形態による、オンデマンドデータベースサービスを介して、開発アプリケーションへのアクセスを可能にするためのシステムを示す図である。
図4】また別の実施形態による、デベロッパからスクリプトを受け取って処理するための方法を示す図である。
図5】さらにまた別の実施形態による、エンドユーザから要求を受け取って処理するための方法を示す図である。
図6】オンデマンドデータベースサービスが使用できる環境の一例のブロック図である。
図7図6の要素及びこれらの要素間の様々な可能な相互接続のブロック図である。
【詳細な説明】
【0011】
全体的な概要
[0018]制御された環境において、マルチテナント型オンデマンドデータベースサービスを介して、開発アプリケーションへのアクセスを可能にするためのシステム及び方法が提供される。さらに、オンデマンドデータベースサービスと共に実行するインタフェースを拡張するためのシステム及び方法が提供される。
【0012】
[0019]データベースシステムと共に使用されるアプリケーションの開発には、そのようなアプリケーション開発の制御がデベロッパ次第であるという事実から生じる、多くの課題が存在する。例えば、様々な開発上のベストプラクティス(例えば、テスト、リソース割り当てなどに関する)は、デベロッパの制御下にあるため、必ずしも実施されるとは限らない。したがって、制御された環境において、マルチテナント型オンデマンドデータベースサービスを介して、開発アプリケーションへのアクセスを可能にするための機構及び方法が本明細書において提供される。そのような付加的な制御を提供する実施形態の能力は、改良されたアプリケーション開発/ランタイムフレームワークなどをもたらし得る。例えば、開発プロセスなどに対する制御を管理することによって、インタフェース(例えば、APIなど)がそれによってより感情的な方法(affective
manner)で拡張され得る実施形態が可能にされる。
【0013】
[0020]次に、制御された環境において開発アプリケーションへのアクセスを可能にするため、及びオンデマンドデータベースサービスと共に実行するインタフェースを拡張するための機構及び方法が説明される。
【0014】
[0021]図1Aは、一実施形態による、オンデマンドデータベースサービス102を介して、開発アプリケーションへのアクセスを可能にするためのシステム100を図示している。本説明との関連では、オンデマンドデータベースサービスは、ネットワークを介してアクセス可能なデータベースシステムに依存する任意のサービスを含むことができる。
【0015】
[0022]一実施形態では、オンデマンドデータベースサービス102は、マルチテナント型オンデマンドデータベースサービスを含むことができる。本説明では、そのようなマルチテナント型オンデマンドデータベースサービスは、ネットワークを介してアクセス可能なデータベースシステムに依存する任意のサービスを含むことができ、ネットワークにおいては、データベースシステムのハードウェア及びソフトウェアの様々な要素が、1つ又は複数の顧客によって共用されてよい。例えば、与えられたアプリケーションサーバは、多数の顧客の要求を同時に処理することができ、与えられたデータベーステーブルは、潜在的にさらに多数の顧客のための行(row)を保存することができる。そのようなマルチテナント型オンデマンドデータベースサービスの様々な例が、以降の図を参照して説明される異なる実施形態に関連して説明される。
【0016】
[0023]示されるように、オンデマンドデータベースサービス102は、複数のデベロッパ104と通信する。使用に際して、オンデマンドデータベースサービス102は、デベロッパ104から開発アプリケーションを受け取るように適合される。本説明との関連では、デベロッパ104は、コンピュータコードを開発する任意の1つ又は複数の人又は主体(例えば、企業、組織など)を含むことができる。さらに、アプリケーションは、任意のコンピュータコード(例えば、コンピュータプログラム、部分的プログラム、コードセグメントなど)を含むことができる。
【0017】
[0024]加えて、オンデマンドデータベースサービス102は、オンデマンドデータベースサービス102の1つ又は複数のテナント106とも通信する。オンデマンドデータベースサービス102がマルチテナント型オンデマンドデータベースサービスを含む上述の実施形態では、複数のテナント106が存在してよい。いずれの場合も、本説明においては、テナントとは、オンデマンドデータベースサービス102にアクセスすることが可能な任意の1つ又は複数の人又は主体のことである。例えば、テナント106は、オンデマンドデータベースサービス102に加入(subscribe)することができる。
【0018】
[0025]この設計によって、オンデマンドデータベースサービス102は、オンデマンドデータベースサービス102のテナント106に、アプリケーションへのアクセスを提供する働きをする。使用に際して、上述のアプリケーションは、オンデマンドデータベースサービス102の制御下にある。そのような制御を管理することによって、改良された開発/ランタイムフレームワークなどがそれによって提供される。
【0019】
[0026]様々な実施形態では、そのような制御は、任意の所望の方法で管理されてよい。例えば、オンデマンドデータベースサービス102は、アプリケーションが方針を順守していない状況では、テナント106によるそのアプリケーションへのアクセスを排除することによって、任意の所望の方針を実施することができる。他の実施形態では、オンデマンドデータベースサービス102は、そのような非準拠のシナリオでは、デベロッパ104からアクセス可能な機能を排除又は制限することによって、そのような方針を実施することができる。例えば、オンデマンドデータベースサービス102へのアプリケーションの公開は、一定の要件を満たしていない場合には、不許可とすることができる。特定の一実施形態では、オンデマンドデータベースサービス102は、アプリケーションの様々な側面(aspect)を監視及び制限することができ、動的コンテキストリミッタ(dynamic
contextual limiter)に基づいて、関連コードを終了させることができる。もちろん、上記の制御は、任意の所望の方法で実施されてよい。
【0020】
[0027]一実施形態では、上述の制御は、オンデマンドデータベースサービス102によってアプリケーションの少なくとも1つの側面を制限する形態をとることができる。例えば、そのような側面は、デベロッパ104のアプリケーションから利用可能にされる、処理用リソース、記憶用リソース、帯域幅リソースなどに関係することができる。この設計によって、オンデマンドデータベースサービス102は、アプリケーションを介してテナント106にサービスするオンデマンドデータベースサービス102の能力を最適化するような仕方で、デベロッパを制約できることがある。
【0021】
[0028]様々な実施形態では、そのようなリソース関係の側面は、オンデマンドデータベースサービス102に関連するデータベース、そのようなデータベースがアプリケーションを利用してアクセスされ得る方法などを含むことができる。そのような実施形態では、上記の側面は、データベースの列(column)の数、所定の時間枠内におけるデータベースに対するクエリの数、クエリによって返される行の数、データベースステートメント(例えば、変更ステートメントなど)の数、データベースステートメントの間のスクリプトステートメントの数、所定の時間枠内において処理(例えば、変更など)される行の数、トランザクションステートメントの数、最後のトランザクション制御ステートメント以降の未コミット行の総数、最後のデータベースコール以降のスクリプトステートメントの総数、処理の所要時間などを含むことができるが、これらに限定されない。
【0022】
[0029]もちろん、そのような例示的な列挙は、限定的なものと解釈されるべきではない。例えば、オンデマンドデータベースサービス102の任意の側面(例えば、電子メール管理など)も、同様に制限されてよい。具体的な一例では、要求当たり送信できるeメールの数、及び/又は要求当たり行われる発信ウェブサービスコールの数が制限されてよい。様々な実施形態では、制限は、要求当たりベース、又は期間当たり(例えば、1日当たり)ベースに、アプリケーションに適用されることができる。後者の実施形態では、そのような制限は、ユーザ当たりすなわちテナント当たりベースに適用することができる。
【0023】
[0030]他の実施形態では、アプリケーションの開発が制御され得る。例えば、アプリケーションは、アプリケーションはテスト(例えば、正当性確認など)を受けるという、オンデマンドデータベースサービス102の要件を課すことによって制御される。そのようなテストは、一実施形態では、オンデマンドデータベースサービス102に関連するアプリケーションプログラムインタフェースに対して行われるコールを用いて、自動的な方法でネイティブに実行することができる。
【0024】
[0031]開発制御を含む本実施形態の他の態様では、オンデマンドデータベースサービス102は、機能テストがアプリケーションのために書かれることを要求することができ、さらに所定のパーセンテージのコードカバレージ(code
coverage)を要求することができる。この実施形態では、そのような技法は、作業中アプリケーションを誤って停止(break)させるリスクを低減するために、オンデマンドデータベースサービス102が変更された場合は常に、そのようなテストの実行を可能にすることができる。この設計によって、後退(regression)及び/又は他のマイナスの特徴が回避できる。そのような制御されたテストを含む可能な一実施形態に関するさらなる情報が、図1Bを参照してより詳細に説明される。
【0025】
[0032]さらなる追加の実施形態では、オンデマンドデータベースサービス102のテナント106によるアプリケーションへのアクセスが制御され得る。例えば、オンデマンドデータベースサービス102の複数のテナント106の間で、各アプリケーションの単一のインスタンスがインスタンス化され得る。したがって、アプリケーションの1つのコピーが、オンデマンドデータベースサービス102によって保存されさえすれば、上記の方法でテナント106の間で同時に共用される。
【0026】
[0033]上記の制御は、静的でも動的でもよく、一様に適用されてもされなくてもよいとすべきである。例えば、上記の側面及び関係する制御基準は、異なるアプリケーション、テナント106など毎に異なっていてもいなくてもよい。単なる例として、オンデマンドデータベースサービス102は、行当たりのデータベーストリガなどを実行する場合に関して、アップグレードスクリプトを実行する場合に、より多くのリソースを可能にすることができる。さらに、オンデマンドデータベースサービス102は、大規模テナント106などのために、より多くのリソースを可能にすることができる。
【0027】
[0034]図1Bは、オンデマンドデータベースサービスを利用して、開発アプリケーションをテストするための方法150を示している。任意選択で、本方法150は、図1Aのオンデマンドデータベースサービス102との関連で実施することができる。しかし、もちろん、方法150は、任意の所望の環境において実施することもできる。本説明中では、上述の定義が適用できる。
【0028】
[0035]示されるように、開発アプリケーションが、オンデマンドデータベースサービスで受け取られる。動作152を参照されたい。様々な実施形態では、オンデマンドデータベースサービスは、マルチテナント型オンデマンドデータベースサービスを含んでよく、又は含まなくてもよい。
【0029】
[0036]さらに、開発アプリケーションは、全体として受け取られてよく、又は部分的に受け取られてもよい。例えば、一実施形態では、アプリケーションは、別個のシステムを利用して開発され、その後、オンデマンドデータベースサービスにアップロードされてよい。他の実施形態では、アプリケーションが開発されている最中に、アプリケーションのコードセグメントが、オンデマンドデータベースサービスで受け取られてよい。もちろん、上記のフレームワークの両方を利用する混成システムがさらに企図される。またさらに、開発アプリケーションの上述の受け取りは、ネットワークを介して行われても行われなくてもよい。
【0030】
[0037]図1Bを続けて参照すると、アプリケーションは、オンデマンドデータベースサービスを利用してテストすることができる。動作154を参照されたい。本説明との関連では、そのようなテストは、アプリケーションの少なくとも1つの側面にアクセスするための任意のプロセスに関係することができる。例えば、そのような側面は、操作性、品質、効率(例えば、リソース要件などに関して)などを含むことができるが、これらに限定されない。さらに言えば、様々な異なる実施形態では、テストは、デバッグ目的のもの、望ましくないデッドロック状況を識別するためのもの、データベースセマンティクスを実施するためのもの、及び/又は任意の所望の規則に関するものとすることができる。
【0031】
[0038]特定の一実施形態では、上記のテストは、ユニットテストを含むことができる。そのようなユニットテストは、アプリケーションのコードの特定の部分が適切に作動するかどうかを検証することができる。任意選択で、ユニットテストは、引数を取らないこと、データをデータベースにコミットしないことなどかできる。他の実施形態では、できるだけ多数の行のコードをカバーし、条件論理(3項演算子を含む)の場合には、コード論理の各ブランチを実行するテストが利用できる。さらに、テストは、エラーが期待され、捕らえられるのでない限り、どのような例外も発生させずに、正常終了するように設計することができる。またさらに、テストは、コードが適切に振舞うことを証明し、バルクトリガ(bulk
trigger)機能などを実行するために、「System.assert()」メソッドを自由に利用するように構成されてもよい。
【0032】
[0039]一実施形態では、テストは、オンデマンドデータベースサービスによって制御することができる。例えば、すべてのテストは、オンデマンドデータベースサービスの制御下にあることができる。他の実施形態では、テストの一部だけが、オンデマンドデータベースサービスの制御下にあることができる。そのような実施形態では、テストの第1の部分は、アプリケーションのデベロッパによって制御されてよく、テストの第2の部分は、オンデマンドデータベースサービスによって制御されてよい。
【0033】
[0040]さらに、テストは、任意の所望の時に行われてよい。例えば、テストは、定期的なもの、要求に応じたもの、イベント又はマイルストン(milestone)によってトリガされたものなどとすることができる。一例では、テストは、オンデマンドデータベースサービスの少なくとも1つの側面(例えば、コード、機能など)が追加、アップグレードなどされた時に、すべての関連アプリケーションにわたって自動的に行われることができる。この目的のため、オンデマンドデータベースサービス上でのアプリケーションの継続動作が保証される。
【0034】
[0041]別の実施形態では、テストは、オンデマンドデータベースサービスによって要求されることがある。そのような要求は、任意の所望の方法で実施することができる(例えば、やはり上述の例示的な実施技法などを参照されたい)。任意選択で、アプリケーションの少なくとも1つがテストに合格したかどうかを判定することができる。この目的のため、そのようなアプリケーションへのアクセスは、その判定に基づいて、条件付きで提供されることができる。例えば、アプリケーションがテストに合格したと判定される場合、アプリケーションへのアクセスが提供されてよい。さらに、アプリケーションがテストに合格しなかったと判定される場合、アプリケーションへのそのようなアクセスは排除されてよい。任意選択で、アプリケーションのデベロッパによって適切な行動が取られ得るように、テストが合格した又は不合格になった程度及び/又は仕方を示すために、レポートが提供されることができる。
【0035】
[0042]そのような合格のための要件の定義は、任意の所望の方法で構成することができる。例えば、そのような合格基準は、オンデマンドデータベースサービスによって定義することができる。さらに、基準は、任意の所望のパラメータ、閾値などを含むことができる。この目的のため、オンデマンドデータベースサービスを介して利用可能なアプリケーションの標準化された改良の利益と交換に、アプリケーションのデベロッパが開発プロセスに対する何らかの制御を放棄することを求めるマネージドコード環境が提供される。
【0036】
[0043]図2は、オンデマンドデータベースサービスと共に実行するインタフェースを拡張するための方法200を示している。任意選択で、本方法200は、図1Aのオンデマンドデータベースサービス102との関連で実施することができる。様々な実施形態では、オンデマンドデータベースサービスは、マルチテナント型オンデマンドデータベースサービスを含んでよく、又は含まなくてもよい。しかし、もちろん、方法200は、任意の所望の環境において実施することもできる。本説明中では、上述の定義が適用できる。
【0037】
[0044]示されるように、少なくとも1つのプログラミング言語命令が、アプリケーションがその上で構築され得るプラットフォームで受け取られる。動作202を参照されたい。そのような命令の受け取りは、任意の所望の方法で達成することができる。例えば、少なくとも1つのプログラミング言語命令は、プラットフォームに関連するAPIで受け取られても受け取られなくてもよい。
【0038】
[0045]様々な実施形態では、そのようなプラットフォームは、図1のオンデマンドデータベースサービス102の部分であっても部分でなくてもよく、アプリケーションを共用するように適合されてもよい。しかし、プラットフォームが、アプリケーションを構築することを可能にする、任意のハードウェア及び/又はソフトウェアを含むことができることに留意されたい。もちろん、そのようなアプリケーションは、サードパーティ(例えば、プラットフォームに関連する関係者以外の関係者など)によって構築されてもされなくてもよい。
【0039】
[0046]本説明との関連では、上記のアプリケーションは、任意の所望のソフトウェアを含むことができ、そのようなアプリケーションは、任意の所望の方法で構築することができる。例えば、様々な実施形態では、そのような「構築」は、開発プロセスの全体又は一部を管理するためのフォーラムを提供することから、以前から存在するアプリケーションを使用のために単にアクセス可能にすることまでなど多岐にわたることができる。またさらに、本説明では、上述のプログラミング言語命令は、プラットフォームによって認識可能なコードの任意の部分を含むことができる。
【0040】
[0047]図2を続けて参照すると、少なくとも1つのプログラミング言語命令に基づいて、オンデマンドデータベースサービスに対する1組の命令が準備できる。動作204を参照されたい。本説明との関連では、1組の命令は、オンデマンドデータベースサービスによって認識可能な任意のコードを含むことができる。
【0041】
[0048]オンデマンドデータベースサービスが他の外部システムを呼び出す能力を有する他の実施形態では、1組の命令とは、オンデマンドデータベースサービスを介した別のシステムに対する命令のことであってよい。さらに、上述の制御は、そのような外部システムに対する任意の呼び出し要求に適用することができる。例えば、そのような呼び出し要求は、より低い優先権(例えば、ロックを含む低レベルのデータベース操作の最中は許可されないなど)を与えられてよい。
【0042】
[0049]マルチテナント型オンデマンドデータベースサービスを含む一実施形態では、1組の命令は、すべてのテナントに適用されるように構成することができる。別の実施形態では、1組の命令は、テナント固有とすることができる。言い換えると、オンデマンドデータベースサービスを利用してデータを保存するテナントから選択された単一のテナント(又はテナントのサブセット)に関係する情報を問い合わせるための1組の命令が準備できる。
【0043】
[0050]この目的のため、プログラミング言語命令に従って、結果に影響を及ぼすために、1組の命令が(例えば、オンデマンドデータベースサービスに)適用できる。動作206を参照されたい。様々な実施形態では、プログラミング言語命令に従って、オンデマンドデータベースサービス内のデータを更新して、及び/又は任意の所望のアクションを実行、若しくは既存のアクションを変更して、オンデマンドデータベースサービスから結果セットを提供するために、1組の命令が適用できる。特定の一実施形態では、任意の所望の方法でオンデマンドデータベースサービスのインタフェース(例えば、API、グラフィカルユーザインタフェースなど)を拡張するために、1組の命令が適用できる。
【0044】
[0051]様々な可能な特徴が、上記の拡張技法によって可能にされ得る。一実施形態では、単一のトランザクションに応答して、オンデマンドデータベースサービスにおいて1組のマルチオブジェクト操作を実行するために、1組の命令が適用できる。例えば、以前は多数のトランザクションを必要とした多数のオブジェクトの操作が、拡張後は、単一のトランザクションしか必要としないことがある。
【0045】
[0052]図2の方法200の一例が、上述のプラットフォームを含む図1Aのオンデマンドデータベースサービス102との関連で今から説明される。そのような例では、動作202の命令は、オンデマンドデータベースサービス102においてデベロッパ104から受け取ることができる。その後、オンデマンドデータベースサービス102は、動作204の1組の命令を準備することができる。この目的のため、動作204の命令のそのような組は、テナント106によるアプリケーションの使用と併せて、オンデマンドデータベースサービス102によって適用することができる。この設計によって、デベロッパ104から受け取った元の命令に従って、オンデマンドデータベースサービス102の所望の側面(例えば、アプリケーションの1つなど)が拡張できる。
【0046】
[0053]いくつかの実施形態では、プログラミング言語命令は、データベースシステムと共に使用するために適合される、フォーマット、シンタックスなどを含むことができる。特定の一実施形態では、手続き型言語セールスフォースオブジェクトクエリ言語(PL/SOQL:procedural
language salesforce object query language)プログラミング言語命令が利用できる。本実施形態では、PL/SOQLは、データベースAPI[例えば、SOQL、データ操作言語(DML)など]と併せて、サーバ上でフロー制御及びトランザクション制御を実行することを可能にする、オンデマンドデータベース中枢サービスAPIに対する手続き拡張として働くことが可能である。PL/SOQLは、多数のSOQL/DMLステートメントをサーバ上の単一の作業単位として一まとめにする機能を可能にすることができる。PL/SOQLは、いくつかの実施形態では、非常にデータ集中的(data
focused)であるので、必ずしも汎用プログラミング言語と見なされる必要はない。カリフォルニア州レッドウッドショアズのOracle(登録商標)Inc.によるPL/SQL、その他などの、従来のアプリケーションデベロッパの従来のツールとは対照的に、PL/SOQLは、任意選択の一実施形態では、オンデマンドデータベースシステムとインタフェースをとるために、デベロッパによって使用することができる。
【0047】
[0054]本PL/SOQL実施形態は、Javaのものをエミュレートするように意図されたシンタックス及びセマンティクスを含むこともできるが、本実施形態は、Javaに限定されない。PL/SOQL実施形態は、変数及び式のシンタックス、ブロック及び条件のシンタックス、ループのシンタックス、オブジェクト及び配列表記法、参照渡しなどを含むことができる。オンデマンドデータベースアプリケーションとインタフェースをとる埋め込み概念が提供される場合、理解が容易でデータベースAPIの効率的使用を促進するシンタックス及びセマンティクスも利用できる。
【0048】
[0055]図3は、別の実施形態による、オンデマンドデータベースサービス302を介して、開発アプリケーションへのアクセスを可能にするためのシステム300を示している。任意選択で、本システム300は、図1図2のアーキテクチャ及び機能との関連で実施することができる。しかし、もちろん、システム300は、任意の所望の環境において実施することもできる。やはり、本説明中では、上述の定義が適用できる。
【0049】
[0056]示されるように、オンデマンドデータベースサービス302は、ネットワーク308を介して、デベロッパ304及び少なくとも1つのエンドユーザテナント306との通信を維持する。さらに、オンデマンドデータベースサービス302は、異なる仕方でデベロッパ304及びユーザテナント306とインタフェースをとるアプリケーションサーバ310を含む。具体的には、アプリケーションサーバ310は、デベロッパ304とはコンパイル時フェーズ中に、ユーザテナント306とはランタイムフェーズ中にインタフェースをとることができる。
【0050】
[0057]例えば、アプリケーションサーバ310は、一実施形態では、オンデマンドデータベースサービス302のAPIを拡張しようと意図することがあるデベロッパ304から、プログラム言語命令(例えば、スクリプトなど)を受け取るように適合される。そのようなスクリプトの受け取りに応答して、アプリケーションサーバ310は、そのスクリプトを処理(例えば、コンパイルなど)し、データベース312に保存する。任意選択で、そのような処理はさらに、デベロッパ304がスクリプト開発においてベストプラクティス又は他の任意の所定のプラクティスを利用することを確実にするために、先に言及された所望の制御のいずれかを含むことができる。一実施形態では、そのようなコンパイル済スクリプトは、エンドユーザテナント306からの要求に応答して使用するために、メタデータの形式で保存することができる。この特徴によって、スクリプトは、エンドユーザテナント306からの特定の関連する要求(例えば、オブジェクトを選択、アクセス、変更などするための要求)に応答して、トリガされるように適合することができる。
【0051】
[0058]具体的には、アプリケーションサーバ310はさらに、エンドユーザテナント306から要求を受け取るように適合される。そのような要求に応答して、そのような要求は、それらを使用して、相関するコンパイル済スクリプトを識別し、データベース312から取り出すことによって、アプリケーションサーバ310のランタイムインタープリタ314を利用して処理される。ランタイムインタープリタ314はさらに、コンパイル済スクリプトを処理する能力を備える。したがって、コンパイル済スクリプトは、要求が満たされる方法を指図することができる。先に言及されたように、そのようなコンパイル済スクリプトは、データベース情報のより効率的な検索、及び/又は他の任意の所望の機能増強などを可能にすることができる。
【0052】
[0059]図4は、別の実施形態による、デベロッパからスクリプトを受け取って処理するための方法400を示している。任意選択で、本方法400は、図1図3のアーキテクチャ及び機能との関連で実施することができる。例えば、方法400は、デベロッパ304に関係した、図3のアプリケーションサーバ310の機能を表すことができる。しかし、もちろん、方法400は、任意の所望の環境において実施することもできる。やはり、本説明中では、上述の定義が適用できる。
【0053】
[0060]示されるように、本方法400は、デベロッパからスクリプトを受け取った時にトリガされる。判断402を参照されたい。そのような受け取りに応答して、動作404で説明されるように、スクリプトはコンパイルされる。そのようなコンパイルに応答して、動作406に示されるように、コンパイル済スクリプトがメタデータの形式で保存される。この目的のため、メタデータは、エンドユーザテナントによる要求と連動した検索及び使用のために利用可能にされる。
【0054】
[0061]図5は、別の実施形態による、エンドユーザから要求を受け取って処理するための方法500を示している。任意選択で、本方法500は、図1図3のアーキテクチャ及び機能との関連で実施することができる。例えば、方法500は、エンドユーザテナント306に関係した、図3のアプリケーションサーバ310の機能を表すことができる。さらに、方法500は、図4の方法400の後に続くことができる。しかし、もちろん、方法500は、任意の所望の環境において実施することもできる。やはり、本説明中では、上述の定義が適用できる。
【0055】
[0062]判定502において、要求がエンドユーザテナントから受け取られたかどうかが最初に判定される。受け取られた場合、そのような要求は最初に、データベースに保存されたメタデータ(図4の動作406を参照されたい)を検索するために使用できるフォーマット、プロトコルなどに準拠するように変換される。動作506〜508に注目されたい。その後、そのようなメタデータは、動作510に示されるように、エンドユーザテナントに返される結果に影響を及ぼすために、ランタイム時に処理することができる。
【0056】
システム概要
[0063]図6は、オンデマンドデータベースサービスが使用できる環境610のブロック図を図示している。任意選択で、上記の図の先に説明された実施形態のいずれかが、環境610との関連で実施されてもよく、又は実施されなくてもよい。環境610は、ユーザシステム612と、ネットワーク614と、システム616と、プロセッサシステム617と、アプリケーションプラットフォーム618と、ネットワークインタフェース620と、テナントデータストレージ622と、システムデータストレージ624と、プログラムコード626と、プロセス空間628とを含むことができる。他の実施形態では、環境610は、列挙されたコンポーネントのすべてを有してなくてもよく、及び/又は上に列挙されたコンポーネントに代わる、若しくは追加される他の要素を有してもよい。
【0057】
[0064]環境610は、オンデマンドデータベースサービスが存在する環境である。ユーザシステム612は、データベースユーザシステムにアクセスするためにユーザによって使用される任意のマシン又はシステムとすることができる。例えば、ユーザシステム612のいずれも、ハンドヘルドコンピューティング装置、モバイル電話、ラップトップコンピュータ、ワークステーション、及び/又はコンピューティング装置のネットワークとすることができる。図6に(及び図7により詳細に)図示されるように、ユーザシステム612は、ネットワークを介して、システム616であるオンデマンドデータベースサービスと対話することができる。
【0058】
[0065]システム616のようなオンデマンドデータベースサービスは、必ずしもデータベースシステムの構築及び/又は維持に関係する必要のない外部ユーザから利用可能にされ、代わりにユーザがデータベースシステムを必要とする場合(例えば、ユーザの要求時)にユーザの使用のために利用可能になり得る、データベースシステムである。いくつかのオンデマンドデータベースサービスは、マルチテナント型データベースシステム(MTS)を形成するために、1つ又は複数のテナントからの情報を共有データベースイメージのテーブルに保存することができる。したがって、「オンデマンドデータベースサービス616」と「システム616」とは、本明細書では交換可能に使用される。データベースイメージは、1つ又は複数のデータベースオブジェクトを含むことができる。リレーショナルデータベース管理システム(RDMS)又はその等価物は、データベースオブジェクトに対する情報の保存及び検索を実行することができる。アプリケーションプラットフォーム618は、システム616のアプリケーションが動作することを可能にする、ハードウェア及び/又はソフトウェア、例えば、オペレーティングシステムなどの、フレームワークとすることができる。一実施形態では、オンデマンドデータベースサービス616は、オンデマンドデータベースサービスのプロバイダ、ユーザシステム612を介してオンデマンドデータベースサービスにアクセスするユーザ、又はユーザシステム612を介してオンデマンドデータベースサービスにアクセスするサードパーティのアプリケーションデベロッパによって開発された1つ又は複数のアプリケーションの生成、管理、及び実行を可能にする、アプリケーションプラットフォーム618を含むことができる。
【0059】
[0066]ユーザシステム612のユーザは、それぞれの資格(capacity)において異なることができ、特定のユーザシステム612の資格は、現在のユーザに対する許可(許可レベル)によって完全に決定することができる。例えば、ある販売員がシステム616と対話する特定のユーザシステム612を使用する場合、そのユーザシステムは、その販売員に割り当てられた資格を有する。しかし、ある管理者がシステム616と対話するそのユーザシステム612を使用する場合、そのユーザシステムは、その管理者に割り当てられた資格を有する。階層的役割モデルを有するシステムでは、1つの許可レベルにあるユーザは、より低い許可レベルのユーザによってアクセス可能なアプリケーション、データ、及びデータベース情報にアクセスすることができるが、より高い許可レベルにあるユーザによってアクセス可能なある種のアプリケーション、データベース情報、及びデータにアクセスすることはできない。したがって、異なるユーザは、ユーザのセキュリティ又は許可レベルに応じて、アプリケーション及びデータベース情報に対するアクセス及び変更に関して、異なる能力を有する。
【0060】
[0067]ネットワーク614は、互いに通信する装置からなる任意のネットワーク又はネットワークの組み合わせである。例えば、ネットワーク614は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうちのいずれか1つ又は任意の組み合わせとすることができる。現在使用されているなかで最も一般的なタイプのコンピュータネットワークは、「I」を大文字にしてしばしば「インターネット(Internet)」と称されるネットワークの世界的な相互ネットワークなどの、TCP/IP(伝送制御プロトコル及びインターネットプロトコル)ネットワークであるので、本明細書では、そのネットワークが、例の多くで使用される。しかし、TCP/IPはしばしば実施されるプロトコルであるが、本発明が使用できるネットワークは、そのようなネットワークに限定されないことを理解されたい。
【0061】
[0068]ユーザシステム612は、TCP/IPを使用してシステム616と通信することができ、より高いネットワークレベルでは、HTTP、FTP、AFS、WAPなど、他の一般的なインターネットプロトコルを使用して通信することができる。HTTPが使用される一例では、ユーザシステム612は、システム616のHTTPサーバにHTTPメッセージを送信し、HTTPサーバからHTTPメッセージを受信するための、一般に「ブラウザ」と呼ばれるHTTPクライアントを含むことができる。そのようなHTTPサーバは、システム616とネットワーク614の間のただ1つのネットワークインタフェースとして実施されてもよいが、他の技法が、付加的又は代替的に使用されてもよい。いくつかの実施では、システム616とネットワーク614の間のインタフェースは、負荷を平衡させ、着信HTTP要求を複数のサーバに均一に分配するためのラウンドロビンHTTP要求ディストリビュータなどの、負荷分割機能を含む。少なくとも、そのサーバにアクセスするユーザに関して、複数のサーバの各々がMTSのデータにアクセスするが、代わりに他の代替構成が使用されてもよい。
【0062】
[0069]一実施形態では、図6に示されるシステム616は、ウェブベースの顧客関係管理(CRM)システムを実施する。例えば、一実施形態では、システム616は、アプリケーションサーバを含み、アプリケーションサーバは、CRMソフトウェアアプリケーションを実施し、実行する他、関連データ、コード、フォーム、ウェブページ、及び他の情報をユーザシステム612に提供し、またユーザシステム612から提供し、並びに関連データ、オブジェクト、及びウェブページコンテンツをデータベースシステムに保存し、またデータベースシステムから取り出すように構成される。マルチテナント型システムを用いた場合、同じ物理データオブジェクトに、多数のテナントのためのデータが保存できるが、テナントデータは一般に、1つのテナントのデータが、他のテナントのデータとは論理的に独立して維持され、その結果、1つのテナントが、別のテナントのデータが明白に共用されていない限り、そのようなデータにアクセスしないように構成される。ある実施形態では、システム616は、CRMアプリケーション以外の、又はCRMアプリケーションに加えて、他のアプリケーションを実施する。例えば、システム616は、CRMアプリケーションを含む、多数のホストされる(標準及びカスタム)アプリケーションに対するテナントアクセスを提供することができる。CRMを含んでも含まなくてもよいユーザ(又はサードパーティデベロッパ)アプリケーションは、アプリケーションプラットフォーム618によってサポートすることができ、アプリケーションプラットフォーム618は、アプリケーションの生成、1つ又は複数のデータベースオブジェクトへの保存、及びシステム616のプロセス空間内の仮想マシンにおけるアプリケーションの実行を管理する。
【0063】
[0070]ネットワークインタフェース620と、アプリケーションプラットフォーム618と、テナントデータ623用のテナントデータストレージ622と、システム616及びおそらくは多数のテナントからアクセス可能なシステムデータ用のシステムデータストレージ624と、システム616の様々な機能を実施するためのプログラムコード626と、アプリケーションホスティングサービスの一部としてアプリケーションを実行するなど、MTSシステムプロセス及びテナント固有プロセスを実行するためのプロセス空間628とを含む、システム616の要素の一構成が図6に示されている。システム616上で実行できる追加のプロセスは、データベースインデクシングプロセスを含む。
【0064】
[0071]図6に示されるシステム内のいくつかの要素は、ここでは簡潔に説明されるだけの、従来のよく知られた要素を含む。例えば、各ユーザシステム612は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、携帯電話、若しくは任意の無線アクセスプロトコル(WAP)対応装置、又はインターネット若しくは他のネットワーク接続と直接若しくは間接にインタフェースをとることが可能な他の任意のコンピューティング装置を含むことができる。ユーザシステム612は一般に、例えば、MicrosoftのInternet
Explorerブラウザ、NetscapeのNavigatorブラウザ、Operaのブラウザ、又は携帯電話、PDA、若しくは他の無線装置の場合のWAP対応ブラウザなどのブランジングプログラムである、HTTPクライアントを実行し、HTTPクライアントは、ユーザシステム612のユーザ(例えば、マルチテナント型データベースシステムの加入者)が、ユーザシステム612から利用可能なシステム616の情報、ページ、及びアプリケーションにネットワーク614を介してアクセスし、処理し、閲覧することを可能にする。各ユーザシステム612は一般に、システム616又は他のシステム若しくはサーバによって提供されるページ、フォーム、アプリケーション、及び他の情報と併せて、ブラウザによってディスプレイ上(例えば、モニタスクリーン、LCDディスプレイなど)に提供されるグラフィカルユーザインタフェース(GUI)と対話するための、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、又はペンなどの、1つ又は複数のユーザインタフェース装置も含む。例えば、ユーザインタフェース装置は、システム616によってホストされるデータ及びアプリケーションにアクセスするため、保存データ上で検索を実行するため、並びに他の理由でユーザがユーザに提示され得る様々なGUIページと対話することを可能にするために使用することができる。上述されたように、実施形態は、インターネットと共に使用するのに適しており、インターネットとは、ネットワークの特別な世界的な相互ネットワークのことである。しかし、インターネットの代わりに、イントラネット、エクストラネット、仮想私設ネットワーク(VPN)、非TCP/IPベースのネットワーク、又は任意のLAN若しくはWANなど、他のネットワークも使用できることを理解されたい。
【0065】
[0072]一実施形態によれば、各ユーザシステム612及びそのコンポーネントのすべては、Intel
Pentium(登録商標)プロセッサなどの中央処理装置を使用して実行されるコンピュータコードを含む、ブラウザなどのアプリケーションを使用して、オペレータ構成可能である。同様に、システム616(及び2つ以上存在する場合はMTSの追加インスタンス)並びにそのコンポーネントのすべては、Intel
Pentium(登録商標)プロセッサなど及び/又は多数のプロセッサユニットを含むことができるプロセッサシステム617などの中央処理装置を使用して実行されるコンピュータコードを含むアプリケーションを使用して、オペレータ構成可能とすることができる。コンピュータプログラム製品実施形態は、本明細書で説明された実施形態のプロセスのいずれかを実行するようにコンピュータをプログラムするために使用できる命令が、そこに保存されるマシン可読記憶媒体(メディア)を含む。本明細書で説明されるようなウェブページ、アプリケーション、並びに他のデータ及びメディアコンテンツを相互通信し、処理するように、システム616を動作させ、構成するためのコンピュータコードは、好ましくはダウンロードされ、ハードディスク上に保存されるが、プログラムコード全体又はその一部は、ROM又はRAMなどの、よく知られた他の任意の揮発性又は不揮発性メモリ媒体又は装置にも保存されてよく、或いはフロッピディスク、光ディスク、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、マイクロドライブ、及び光磁気ディスクを含む任意のタイプの回転媒体、並びに磁気若しくは光カード、(分子メモリICを含む)ナノシステム、又は命令及び/若しくはデータを保存するのに適した任意のタイプの媒体若しくは装置などの、プログラムコードを保存することが可能な任意の媒体上で提供されてもよい。加えて、プログラムコード全体又はその一部は、よく知られているように、例えば、インターネットなどの伝送媒体を介して、ソフトウェアソース若しくは別のサーバから送信及びダウンロードすることができ、又はよく知られた任意の通信媒体及びプロトコル(例えば、TCP/IP、HTTP、HTTPS、イーサネットなど)を使用して、よく知られた他の任意の従来のネットワーク接続(例えば、エクストラネット、VPN、LANなど)を介して送信することができる。本発明の実施形態を実施するためのコンピュータコードは、クライアントシステム及び/又はサーバ若しくはサーバシステム上で実行できる任意のプログラミング言語で実施することができ、例えば、C、C++、HTML、他の任意のマークアップ言語、Java(商標)、JavaScript、ActiveX、VBScriptなどの他の任意のスクリプト言語、及びよく知られた他の多くのプログラミング言語が使用できることが理解されよう(Java(商標)はSun
Microsystems,Inc.の商標である)。
【0066】
[0073]一実施形態によれば、各システム616は、システム616のテナントとしてのユーザシステム612によるアクセスをサポートするため、ウェブページ、フォーム、アプリケーション、データ、及びメディアコンテンツをユーザ(クライアント)システム612に提供するように構成される。そのようなものとして、システム616は、各テナントのデータを、そのデータが共用されない限り、独立して維持するためのセキュリティ機構を提供する。2つ以上のMTSが使用される場合、それらは互いに近くに(例えば、単一の建物若しくはキャンパス内に配置されるサーバファームに)配置されてよく、又はそれらは互いに離れた場所(例えば、都市Aに配置される1つ若しくは複数のサーバと、都市Bに配置される1つ若しくは複数のサーバ)に分散されてもよい。本明細書で使用される各MTSは、局所的又は1つ若しくは複数の地理的場所にわたって分散される、1つ又は複数の論理接続及び/又は物理接続サーバを含むことができる。加えて、「サーバ」という用語は、処理ハードウェア及びプロセス空間を含むコンピュータシステムと、当技術分野でよく知られた関連するストレージシステム及びデータベースアプリケーション(例えば、OODBMS又はRDBMS)とを含むことが意味される。「サーバシステム」と「サーバ」とは、本明細書ではしばしば交換可能に使用されることも理解されたい。同様に、本明細書で説明されるデータベースオブジェクトは、単一のデータベース、分散データベース、分散データベースの集まり、冗長オンライン若しくはオフラインバックアップ又は他の冗長性を有するデータベースなどとして実施することができ、分散データベース又はストレージネットワーク及び関連する処理インテリジェンスを含むことができる。
【0067】
[0074]図7も環境610を図示している。しかし、図7では、一実施形態におけるシステム616の要素及び様々な相互接続がさらに図示されている。図7は、ユーザシステム612が、プロセッサシステム612Aと、メモリシステム612Bと、入力システム612Cと、出力システム612Dとを含み得ることを示している。図7は、ネットワーク614と、システム616とを示している。図7は、システム616が、テナントデータストレージ622と、テナントデータ623と、システムデータストレージ624と、システムデータ625と、ユーザインタフェース(UI)730と、アプリケーションプログラムインタフェース(API)732と、PL/SOQL734と、セーブルーチン736と、アプリケーションセットアップ機構738と、アプリケーションサーバ700〜700と、システムプロセス空間702と、テナントプロセス空間704と、テナント管理プロセス空間710と、テナントストレージ領域712と、ユーザストレージ714と、アプリケーションメタデータ716とを含み得ることも示している。他の実施形態では、環境610は、上で列挙されたものと同じ要素を有さなくてよく、及び/又は上で列挙されたものに代わる、若しくは追加される他の要素を有してもよい。
【0068】
[0075]ユーザシステム612、ネットワーク614、システム616、テナントデータストレージ622、及びシステムデータストレージ624は、図6において上で説明された。ユーザシステム612に関して、プロセッサシステム612Aは、1つ又は複数のプロセッサの任意の組み合わせとすることができる。メモリシステム612Bは、1つ又は複数のメモリ装置、短期及び/又は長期メモリの任意の組み合わせとすることができる。入力システム612Cは、1つ又は複数のキーボード、マウス、トラックボール、スキャナ、カメラ、及び/又はネットワークとのインタフェースなど、入力装置の任意の組み合わせとすることができる。出力システム612Dは、1つ又は複数のモニタ、プリンタ、及び/又はネットワークとのインタフェースなど、出力装置の任意の組み合わせとすることができる。図7によって示されるように、システム616は、1組のHTTPアプリケーションサーバ700として実施される(図6の)ネットワークインタフェース620と、アプリケーションプラットフォーム618と、テナントデータストレージ622と、システムデータストレージ624とを含むことができる。システムプロセス空間702も示されており、個別のテナントプロセス空間704と、テナント管理プロセス空間710とを含む。各アプリケーションサーバ700は、その中のテナントデータストレージ622及びテナントデータ623と、その中のシステムデータストレージ624及びシステムデータ625が、ユーザシステム612の要求にサービスするように構成することができる。テナントデータ623は、個々のテナントストレージ領域712に分割することができ、テナントストレージ領域712は、データの物理構成及び/又は論理構成とすることができる。各テナントストレージ領域712内で、ユーザストレージ714及びアプリケーションメタデータ716は、各ユーザに対して同様に割り当てることができる。例えば、ユーザの直近に使用された(MRU)アイテムのコピーは、ユーザストレージ714に保存することができる。同様に、テナントである組織全体についてのMRUアイテムのコピーは、テナントストレージ領域712に保存することができる。UI730は、システム616に存在するプロセスへのユーザインタフェースを、API732は、そのようなプロセスへのアプリケーションプログラマインタフェースを、ユーザシステム612においてユーザ及び/又はデベロッパに提供する。テナントデータ及びシステムデータは、1つ又は複数のOracle(商標)データベースなど、様々なデータベースに保存することができる。
【0069】
[0076]アプリケーションプラットフォーム618は、アプリケーションデベロッパのアプリケーションの生成及び管理をサポートするアプリケーションセットアップ機構738を含み、アプリケーションは、例えば、加入者によるテナント管理プロセス710によって管理される1つ又は複数のテナントプロセス空間704としての実行のため、セーブルーチン736によってテナントデータストレージ622にメタデータとしてセーブできる。そのようなアプリケーションに対する起動は、プログラミング言語スタイルのインタフェース拡張をAPI732に提供するPL/SOQL34を使用して、コード化することができる。アプリケーションに対する起動は、1つ又は複数のシステムプロセスによって検出することができ、システムプロセスは、起動して、メタデータをアプリケーションとして仮想マシンで実行する加入者のために、アプリケーションメタデータ716の取り出しを管理する。
【0070】
[0077]各アプリケーションサーバ700は、データベースシステムに通信可能に結合することができ、データベースシステムは、例えば、システムデータ625及びテナントデータ623に異なるネットワーク接続を介してアクセスする。例えば、1つのアプリケーションサーバ700は、ネットワーク614(例えば、インターネット)を介して結合することができ、別のアプリケーションサーバ700N−1は、直接ネットワークリンクを介して結合することができ、別のアプリケーションサーバ700は、また異なるネットワーク接続を介して結合することができる。伝送制御プロトコル及びインターネットプロトコル(TCP/IP)は、アプリケーションサーバ700とデータベースシステムの間で通信するための典型的なプロトコルである。しかし、使用されるネットワーク相互接続に応じてシステムを最適化するために、他の転送プロトコルが使用できることは当業者には明らかであろう。
【0071】
[0078]ある実施形態では、各アプリケーションサーバ700は、テナントである任意の組織に関連する任意のユーザのために要求を処理するように構成される。任意の時点において任意の理由でアプリケーションサーバをサーバプールに追加でき、サーバプールから削除できることが望ましいので、好ましくは、特定のアプリケーションサーバ700に対するユーザ及び/又は組織のサーバアフィニティ(server
affinity)は存在しない。したがって、一実施形態では、要求をアプリケーションサーバ700に分配するために、アプリケーションサーバ700とユーザシステム612の間に、負荷平衡機能(例えば、F5
Big−IP負荷バランサ)を実施するインタフェースシステムが通信可能に結合される。一実施形態では、負荷バランサは、ユーザ要求をアプリケーションサーバ700に転送するために、最小接続アルゴリズムを使用する。ラウンドロビン及び観測された応答時間など、負荷バランスアルゴリズムの他の例も使用することができる。例えば、ある実施形態では、同じユーザからの3つの連続した要求が、3つの異なるアプリケーションサーバ700に到達することがあり得、異なるユーザからの3つの要求が、同じアプリケーションサーバ700に到達することもあり得る。このように、システム616は、マルチテナント型であり、システム616は、異なるユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの保存、並びに異なるオブジェクト、データ、及びアプリケーションへのアクセスを処理する。
【0072】
[0079]ストレージの一例として、1つのテナントは、販売員を雇用する会社とすることができ、各販売員は、各自の販売プロセスを管理するためにシステム616を使用する。したがって、ユーザは、連絡先データ、見込み客データ、顧客フォローアップデータ、実績データ、目標及び進捗データなど、そのユーザの個人販売プロセスに利用可能なすべてを、(例えば、テナントデータストレージ622内に)維持することができる。MTS構成の一例では、アクセス、閲覧、変更、報告、送信、計算などを行うためのデータ及びアプリケーションのすべては、ネットワークアクセスを有するに過ぎないユーザシステムによって維持でき、アクセスできるので、ユーザは、多くの異なるユーザシステムのいずれからも、自身の販売活動及びサイクルを管理することができる。例えば、販売員が顧客を訪問しており、その顧客がロビーにインターネットアクセスを有する場合、販売員は、顧客がロビーに到着するのを待ちながら、その顧客に関する重大な更新を獲得することができる。
【0073】
[0080]各ユーザのデータは、各ユーザの雇用者に関わらず、他のユーザのデータから分離できるが、いくつかのデータは、テナントである与えられた組織の複数のユーザ又はすべてのユーザによって共用又はアクセスされる、全組織的なデータであってよい。したがって、他のデータ構造がユーザレベルで管理され得る一方で、テナントレベルに割り当てられた、システム616によって管理されるいくつかのデータ構造が存在できる。MTSは、可能な競争相手を含む多数のテナントをサポートできるので、MTSは、データ、アプリケーション、及びアプリケーション使用を独立に維持するセキュリティプロトコルを有するべきである。また、多くのテナントは、各自のシステムを維持するよりも、MTSにアクセスする方を選択することがあるので、冗長性、使用可能時間、及びバックアップは、MTSで実施されることがある付加機能である。ユーザ固有データ及びテナント固有データに加えて、システム616は、多数のテナントによって使用可能なシステムレベルデータ、又は他のデータも維持することができる。そのようなシステムレベルデータは、テナント間で共有可能な業界報告、ニュース、及び投稿などを含むことができる。
【0074】
[0081]ある実施形態では、(クライアントシステムとすることができる)ユーザシステム612は、システムレベル及びテナントレベルのデータをシステム616に要求し、更新するために、アプリケーションサーバ700と通信し、アプリケーションサーバ700は、1つ又は複数のクエリをテナントデータストレージ622及び/又はシステムデータストレージ624に送信する必要があることがある。システム616(例えば、システム616内のアプリケーションサーバ700)は、所望の情報にアクセスするために設計された1つ又は複数のSQLステートメント(例えば、1つ又は複数のSQLクエリ)を自動的に生成する。システムデータストレージ624は、要求されたデータをデータベースから取得するためのクエリプランを生成することができる。
【0075】
[0082]各データベースは一般に、事前定義されたカテゴリに一致するデータを含む、1組の論理テーブルなどの、オブジェクトの集まりと見なすことができる。「テーブル」は、データオブジェクトの1つの表現であり、本明細書では、本発明によるオブジェクト及びカスタムオブジェクトの概念的説明を簡略化するために使用されることがある。「テーブル」と「オブジェクト」とは、本明細書では交換可能に使用できることを理解されたい。各テーブルは一般に、可視的なスキーマにおいて列すなわちフィールドとして論理的に配列される1つ又は複数のデータカテゴリを含む。テーブルの各行すなわちレコードは、フィールドによって定義される各カテゴリのデータからなるインスタンスを含む。例えば、CRMデータベースは、名前、住所、電話番号、ファックス番号などの基本連絡先情報用のフィールドを用いて顧客を記述するテーブルを含むことができる。別のテーブルは、顧客、製品、販売価格、日付などの情報用のフィールドを含む購入注文を記述することができる。いくつかのマルチテナント型データベースシステムでは、すべてのテナントによって使用するために、標準エンティティテーブルが提供できる。CRMデータベースアプリケーションの場合、そのような標準エンティティテーブルは、各々が事前定義されたフィールドを含む、口座、連絡先、見込み客、及び機会データ用のテーブルを含むことができる。「エンティティ」という語は、本明細書では「オブジェクト」及び「テーブル」と交換可能に使用できることも理解されたい。
【0076】
[0083]いくつかのマルチテナント型データベースシステムでは、テナントは、カスタムオブジェクトを生成し、保存することを許可されてよく、又は例えば、カスタムインデックスフィールドを含む、標準オブジェクト用のカスタムフィールドを生成することによって、標準エンティティ若しくはオブジェクトをカスタマイズすることを許可されてもよい。例えば、ある実施形態では、すべてのカスタムエンティティデータ行は、組織当たり多数の論理テーブルを含むことができる、単一のマルチテナント型物理テーブルに保存される。各自の多数の「テーブル」が実際には1つの大規模テーブルに保存されること、又は各自のデータが他の顧客のデータと同じテーブルに保存されることがあることは、顧客からは明白である。
【0077】
[0084]本発明が例を用いて、特定の実施形態に関して説明されたが、本発明が開示された実施形態に限定されないことを理解されたい。反対に、当業者に明らかな様々な変更及び類似の構成を包含することが意図されている。したがって、添付の特許請求の範囲は、すべてのそのような変更及び類似の構成を包含するように、最も広い解釈が与えられるべきである。
図1A
図1B
図2
図3
図4
図5
図6
図7