(57)【特許請求の範囲】
【請求項１】
１つ以上のプロセッサと、
前記１つ以上のプロセッサに結合されるメモリと、
１つ以上の記憶ノードと、を備えるシステムであって、
前記メモリは、前記１つ以上のプロセッサにより実行されるときに、複数テナント環境及び単一テナント環境におけるデータベースサービスを１つ以上のデータベースサービスクライアントに提供するデータベースサービスを前記１つ以上のプロセッサに実行させるプログラム命令を記憶し、複数テナント環境は、その内部において複数のクライアントに対するデータベース表が単一のデータベースインスタンスでまとめてホストされる、環境を含み、単一テナント環境は、その内部において異なるクライアントに対するデータベース表が異なるデータベースインスタンスでホストされる、環境を含み、
前記データベースサービスは、
データベースインスタンスを作成する要求であって、前記データベースインスタンスが前記データベースサービスの前記複数テナント環境において作成されるべきであることを指定する、要求をクライアントから受信し、
前記要求するクライアントの代わりに前記複数テナント環境においてデータベースインスタンスを作成するために、前記１つ以上の記憶ノードのうちの１つ以上をプロビジョニングし、
別のデータベースインスタンスを作成する要求であって、前記別のデータベースインスタンスが前記データベースサービスの前記単一テナント環境において作成されるべきであることを指定する、要求を前記クライアントから受信し、
前記要求するクライアントの代わりに前記単一テナント環境においてデータベースインスタンスを作成するために、前記１つ以上の記憶ノードのうちの１つ以上をプロビジョニングし、
表を作成する要求であって、前記表が、前記クライアントからの前記要求に応答して作成された、前記複数テナント環境における前記データベースインスタンス、または、前記クライアントからの前記要求に応答して作成された、前記単一テナント環境における前記別のデータベースインスタンス、のどちらにおいて作成されるべきであるのかを指定する、前記要求を前記クライアントから受信し、かつ
前記指定された環境におけるデータベースインスタンスで表を作成し、
前記指定された環境のプロトコルに従って前記表を目標に定めるデータベース操作を実行する１つ以上の要求を受信及び処理し、
前記指定された環境以外の他の環境におけるデータベースインスタンスに前記表を移動させ、かつ
前記他の環境のプロトコルに従って前記表を目標に定めるデータベース操作を実行する１つ以上の要求を受信及び処理するように、構成されている、前記システム。
【請求項２】
複数テナント環境においてデータベースインスタンスを作成する前記要求の起源である前記クライアントと、単一テナント環境においてデータベースインスタンスを作成する前記要求の起源である前記クライアントとが同じクライアントである、請求項１に記載の前記システム。
【請求項３】
前記データベースサービスがさらに、
別の表を作成する要求であって、前記別の表が前記指定された環境以外の他の環境におけるデータベースインスタンスで作成されるべきであることを指定する、要求を前記クライアントから受信し、かつ
前記他の環境におけるデータベースインスタンスで別の表を作成するように、構成されている、請求項１に記載の前記システム。
【請求項４】
複数テナント環境においてデータベースインスタンスを作成するために、前記データベースサービスが、非リレーショナルデータベースのインスタンスを作成するように構成されており、
単一テナント環境においてデータベースインスタンスを作成するために、前記データベースサービスが、リレーショナルデータベースのインスタンスを作成するように構成されている、請求項１に記載の前記システム。
【請求項５】
１つ以上のコンピュータによって、
表を作成する要求を受信することと、
前記受信に応答して、複数テナント環境または単一テナント環境のうちの所与の一方においてデータベースインスタンスで表を作成することと、
前記表を目標に定めるデータベース操作を実行する１つ以上の要求を受信及び処理することと、
前記受信及び処理に続いて、
複数テナント環境または単一テナント環境のうちの他方においてデータベースインスタンスに前記表を移動させることと、
前記表を目標に定めるデータベース操作を実行する１つ以上の追加の要求を受信及び処理することと、を実行することを含む、方法。
【請求項６】
前記方法がさらに、前記他方の環境におけるデータベースインスタンスに前記表を移動させる要求を受信することを含み、
前記表を移動させる前記要求の受信に応答して前記移動が実行される、請求項５に記載の前記方法。
【請求項７】
前記方法はさらに、前記表を目標に定めるデータベース操作を実行する要求を受信及び処理するための観測されるまたは望まれる処理能力に応じて、前記表が移動されるべきであることを確定することを含み、
前記確定に応答して前記移動が実行される、請求項５に記載の前記方法。
【請求項８】
前記表を作成する要求は、前記表が複数テナント環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
前記表を作成する要求が、前記表を目標に定めるデータベース操作を実行する要求を受信または処理するための所望の処理能力をさらに指定する、請求項５に記載の前記方法。
【請求項９】
前記表を作成する要求は、前記表が単一テナント環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
前記１つ以上の要求を受信及び処理することが、前記表に対して事前に定められた処理能力限界を超える少なくともいくつかの要求を受容及び処理することを含む、請求項５に記載の前記方法。
【請求項１０】
前記表を作成する要求は、前記表が単一テナント環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
前記方法がさらに、
前記単一テナント環境における前記データベースインスタンスまたは前記表に対する接続情報の要求を受信することと、
前記表への接続が設定され得るＩＰアドレスを戻すことと、を含む、請求項５に記載の前記方法。
【請求項１１】
記憶容量に対する需要または前記表に対する処理能力の変化に応答して、前記表を拡大または縮小することをさらに含む、請求項５に記載の前記方法。
【請求項１２】
１つ以上のコンピュータと、
プログラム命令を記憶するメモリと、備えるシステムであって、前記プログラム命令が、前記１つ以上のコンピュータ上で実行されるときに、
データベース表を作成する要求を受信することと、
前記受信に応答して、複数テナント環境におけるデータベースインスタンスでデータベース表を作成することと、
前記データベース表にアクセスする１つ以上の要求を受信及び処理することと、
要求を受信または処理するための観測される、予想される、または望まれる処理能力に応じて、前記データベース表の少なくとも一部が、単一テナント環境においてデータベースインスタンスに移動されるべきであることを確定することと、
前記確定に応答して、単一テナント環境においてデータベースインスタンスに前記データベース表の前記少なくとも一部を移動させることと、を前記１つ以上のコンピュータに実行させる、前記システム。
【請求項１３】
前記確定は、前記データベース表の前記少なくとも一部が、前記複数テナント環境において前記データベース表に対して対処され得る処理能力よりも高い処理能力を被っているまたは被ると予想されることを確定することを含み、
前記データベース表の前記少なくとも一部を移動させることが、
前記データベース表の前記少なくとも一部の瞬時状態を抜き出すことと、
単一テナント環境におけるデータベースインスタンスで前記データベース表のその前記少なくとも一部に対して新たな表を作成することと、を含む、請求項１２に記載の前記システム。
【請求項１４】
前記１つ以上のコンピュータ上で実行されるときに、前記プログラム命令がさらに、
前記移動に続いて、前記新たな表を目標に定める要求を受信または処理するための観測される、予想される、または望まれる処理能力の変化に応答して、複数テナント環境においてデータベースインスタンスに前記新たな表を移動させることを、前記１つ以上のコンピュータに実行させる、請求項１３に記載の前記システム。
【発明の詳細な説明】
【背景技術】
【０００１】
いくつかの先端技術組織は、「サービスとしてのソフトウェア」を売る組立技術に投資している。そのようなサービスは、共有記憶装置（例えば、データベースシステム）及び／または計算情報源へのアクセスをクライアントまたは加入者に提供する。多段電子商業システム内では、異なる情報源が、加入者及び／または全機器からの彼らのアプリケーションに、ＣＰＵに、メモリに、ネットワーク帯域に、及びＩ／Ｏ容量に割り当てられ得る。
【０００２】
クライアントアプリケーションとデータベースサービスとの間の相互作用は、読み出し操作（読み出し専用問い合わせ）、（データを記憶するための）書き込み操作、及び読み出し・変更・書き込み作業流れを用いて概念化され得る更新操作を含む。
【０００３】
複数テナント環境を実施するデータベースサービスは通常、複数の記憶ノードにわたりデータを区分けし、異なる顧客の代わりに（例えば、同じ記憶ノード上に及び／または同じデータベースインスタンス内に）保持される表を一体的に同時配置する。単一テナント環境を実施するデータベースサービスは、異なるクライアントに代わってそのサービスが保持する表を互いに対して隔離させる（例えば、異なる記憶ノード上で及び／または異なるデータベースインスタンス内でそれらの表を保持する）。
【図面の簡単な説明】
【０００４】
【図１】複数テナント環境及び単一テナント環境においてデータベースインスタンス及びデータベース表を作成する方法の一実施形態を示す流れ図である。
【図２】様々なウェブ式サービスをクライアントに提供するシステムの一実施形態を示すブロック図である。
【図３】ウェブサービス式データ記憶サービスを実施するように構成されているシステム構造の一実施形態を示すブロック図である。
【図４】図４Ａ〜４Ｃは、一実施形態に従うウェブサービスプラットフォームの様々な部品を示すブロック図である。
【図５】一実施形態に従う様々なウェブ式サービスをクライアントに提供するシステムのサブシステム示すブロック図である。
【図６】複数テナント環境におけるデータベースインスタンスと単一テナント環境におけるデータベースインスタンスとを提供するシステム内で表を作成する方法の一実施形態を示す流れ図である。
【図７】単一テナント環境におけるデータベースインスタンスで表を作成し、アクセスする方法の一実施形態を示す流れ図である。
【図８】複数テナント環境におけるデータベースインスタンスで表を作成し、アクセスする方法の一実施形態を示す方法の一実施形態を示す流れ図である。
【図９】複数テナント環境において表を作成し、それを単一テナント環境に移動させる方法の一実施形態を示す流れ図である。
【図１０】単一テナント環境において表を作成し、それを複数テナント環境に移動させる方法の一実施形態を示す流れ図である。
【図１１】複数テナント環境及び単一テナント環境におけるデータベースインスタンスを提供するために本明細書に記載される１つ以上の技術を実施するコンピュータシステムの一実施形態を示す。
【０００５】
本明細書で記載される技術は様々な変更及び代わりの形の余地があるが、その特定の実施形態は、図面内で実施例として示され、本明細書で詳細に記述されるであろう。しかしながら、図面及びそれに対する詳述が、開示された特定の形態に本開示を限定することを意図しておらず、反対に、その意図は、付属の請求項により定義された本開示の趣旨及び範囲内に、全ての変更、均等物及び代替物を包含すると理解されるべきである。
【発明を実施するための形態】
【０００６】
上記のように、複数テナント環境を実行するデータベースサービスは通常、複数の記憶ノードにわたりデータを仕切し、（例えば、同じ記憶ノード上に及び／または同じデータベースインスタンスで）異なるクライアントの代わりに一体的に保持される表を同時配置することになる。複数テナントデータベースサービスは通常、警備、サービスコンプライアンスの質、サービス品質保証契約の施行、サービス要求の計測、及び／または異なるクライアントのためにまとめてホストされる表に対する他の表管理活動を処理することになる。この複数テナントモデルは、クライアントに対するデータベースサービスの費用を少なくとも総計で低減しやすい。しかしながら、クライアントが、極めて高頻度で使用する場合（例えば、クライアントが、１秒当たり１００万回の読み出し及び／または１秒当たり１００万回の書き込みの処理能力を必要とする場合）、データベースサービスを受信することを望む場合、単一テナントモデルは、クライアントに対して、複数テナント環境よりも費用効果があり得る。例えば、複数テナント機能に対処し、システム内の警備、コンプライアンス／施行、及び／または計測操作を提供するのに必要とされる機能性を含むことは、個別の記憶ノードに対してシステムが達成することができ得る処理能力量を制限する（低減する）場合がある。
【０００７】
いくつかの実施形態では、データベースサービスをクライアントに提供するコンピュータシステムは、その内部でクライアントに代わって表が作成され、保持され及び／または管理され得る、複数テナント環境と単一テナント環境の両方を提供し得る。本明細書でより詳しく記載されるように、データベースサービス（または基底コンピュータシステム）は、（例えば、規定によりまたはインスタンスまたは表を作成する要求で指定される様々なパラメータ値に従って）これら２つの型の環境のうちの一方または両方においてデータベースインスタンス及び表を作成し得る。いくつかの実施形態では、単一テナント環境においてホストされる表に向けられた要求を受信し、処理するとき、システムは、複数テナント環境においてホストされた表に向けられた要求を処理するときに実行され得る管理操作（例えば、いくつかの認証及び／または計測操作）のうちの少なくともいくつかを省略し得る。例えば、単一テナント環境を実施するデータベースサービスは、異なるクライアントに代わってそのサービスが保持する表を互いに対して隔離させ得る（例えば、異なる記憶ノード上で及び／または異なるデータベースインスタンス内でそれらの表を保持する）ので、これらの操作のうちのいくつかまたは全ては、表を確実にかつ効果的に管理し、その表に向けられた要求を処理するために不要の場合がある。
【０００８】
本明細書でより詳しく記載されるように、いくつかの実施形態では、表は、（例えば、観測される、予測される、または望まれる処理能力に応じて）システムにより自動的に、またはクライアントからの（例えば、処理能力を増すまたは費用を削減するために）そのようにするとの明確な要求に応答して単一テナント環境から複数テナント環境へまたはその逆に移動され得る。
【０００９】
いくつかの実施形態では、データベースサービスは、（クライアントアプリケーション、ユーザ、及び／またはデータベースサービス加入者を含み得る）クライアントに、単一テナント環境において１つ以上のデータベースインスタンスをプロビジョニングし、それらのインスタンスで複数の表を作成し、並びに複数テナント環境において１つ以上のデータベースインスタンスをプロビジョニングする（それらのインスタンスで表を作成する）能力を与え得る。基底システムは、２つの型の環境において作成される表に対してクライアントへの同じ機能性及び／またはインターフェースを表出させながら異なる基底データベースタイプを用いて、異なる型の環境に対してそれらのデータベースインスタンスを作成し得る。例えば、一実施形態では、複数テナント環境において作成されるデータベースインスタンスは、関連性のないデータベースとして実現され得るのに対し、単一テナント環境において作成されるデータベースインスタンスは、関連性のあるデータベースとして実現され得るが、これらのデータベースインスタンス及び／またはそれらのインスタンス内でホストされる表と相互作用するためのアプリケーションプログラミングインターフェース及び／またはグラフィックユーザインターフェースは、クライアントへの同じ機能性を表出させ得る。いくつかの実施形態では、クライアントは、いずれかの環境におけるデータベースインスタンスでのホストされる表に対して同じ予測可能性及び（例えば、自動縮尺決めを含む）拡張性を受け得る。
【００１０】
複数テナント環境及び単一テナント環境においてデータベースインスタンス及びデータベース表を作成するための方法の一実施形態は、図１の流れ図により示される。１１０で示されるように、この実施例では、本方法は、複数テナント環境及び単一テナント環境においてデータベースサービスを提供するシステム内でデータベースインスタンスを作成する要求を受信することを含み得る。いくつかの実施形態では、要求は、環境型（例えば、複数テナントまたは単一テナント）を指定し得る。他の実施形態では、その内部において要求されるデータベースインスタンスを作成するべき環境型の選択は、データベースシステムで作成されるデータベースインスタンスに対する規定のまたは初期の選択を指定する既定の方式に基づき得る。図１に示されるように、要求に応答して、本方法は、１２０内のような、データベースシステム（またはそれらのモジュール）が特定の型の環境においてデータベースインスタンスを作成することを含み得る。本方法は、１３０内のように、システムが、別のデータベースインスタンスを作成する要求を受信し、この他の要求が、他の環境型（例えば、複数テナントまたは単一テナント）を特定することも含み得る。要求に応答して、データベースシステム（またはそのモジュール）は、１４０内のように、他の型の環境においてデータベースインスタンスを作成し得る。
【００１１】
いくつかの実施形態では、本方法は、１５０内のように、データベースシステムが指定された型の環境において表を作成する要求を受信し、対応するデータベースインスタンスで表を作成することを含み得る。本方法は、１６０内のように、データベースシステムが、指定された環境型のプロトコルを用いて表を目標にするデータベース操作（例えば、表内に項目を記憶する及び／または取り出す操作）を実行する１つ以上の要求を受信し、処理することを含み得る。いくつかの実施形態では、本方法は、１７０内のように、データベースシステムが、作成された表を他の型の環境に移動させる要求を受信することを含む場合があり、この要求に対して、本システムは、他の型の環境におけるデータベースインスタンスにその表を移動させ得る。続いて、本方法は、１８０内のように、システムが、他の環境型のプロトコルを用いて表を目標にするデータベース操作を実行する１つ以上の追加の要求を受信し、処理することを含み得る。
【００１２】
いくつかの実施形態では、どちらかのテナント環境型でのデータベースインスタンスを作成することが、記憶ノードクラスタ（例えば、３つの記憶ノードのクラスタ）を作成することを含む場合があり、クライアントは、異なる型の複数のデータベースインスタンスの作成を要求する（またはそうでなければ、開始する）ことができ得る。いくつかの実施形態では、クライアントは、単一テナント環境において複数の表を作成し、アクセスする（例えば、様々なデータベース操作を実行する）ことができ得る。本システムにより、クライアントは、（例えば、望まれる場合、秒当たりの読み出し及び書き込みに関して）サービス要求に対する既定の、予測された、または取り決められた処理能力率を超えることが可能になり得る。言い換えれば、クライアントの表が、クライアント専用データベースインスタンス上にホストされるとき、システムは、クライアントが（少なくとも一時的に）バーストするのを可能にし得る。対照的に、複数テナントデータベースインスタンスでクライアントに代わって作成された表に対して、システムは、表が作成された際に要求され、指定され、及び／または取り決められた処理能力量のみを可能にし得る（及び／または保証し得る）。したがって、複数テナントモデルと単一テナントモデルの両方に対応するデータベースシステムでは、クライアントは、潜時と予測可能性と処理能力との間に折り合いを付けることができ得る。
【００１３】
本明細書に記載される様々な技術は、インターネット上でまたは他の公共ネットワーク上で、または仮想個人ネットワーク及び仮想個人クラウド（ＶＰＣ）環境におけるサービスへの接続のような個人のネットワーク上でユーザ（例えば、加入者）にサービスを提供するシステムを含む、局所または遠隔コンピュータシステムに用いられ得る。図２は、一実施形態に従ってクライアントに様々なウェブ式サービスを提供するシステムのブロック図を示す。この実施例では、システム２００は、１つ以上のクライアント２０５を含む。この実施例では、クライアント２０５は、通信ネットワーク２１５を介してウェブサーバ２３５と相互作用するように構成され得る。
【００１４】
この実施例で示されるように、ウェブサーバ２３５は、ウェブサービスＡ（２２５）、ウェブサービスＢ（２４５）、ウェブサービスＣ（２５５）のような様々なサービスに対するクライアント２０５からの要求を処理し、クライアント２０５に結果を返すように構成され得る。各々のウェブサービスは、計算源、データベースサービス、（例えば、クライアントに代わって１つ以上の表内でデータを保持する）データ記憶サービス、またはいずれかの他の種類のサービスまたは供有情報源の１つ以上をクライアントに提供し得る。
【００１５】
本明細書で記載されるもののようなウェブサービス式データ記憶サービスを実現するように構成されるシステム構成の一実施形態は、図３に示される。所与の部品の１つ以上のインスタンスが存在し得る場所では、本明細書で以下でのその部品についての言及が単数または複数のいずれかで行われることを注記する。しかしながら、いずれかの形式の利用は、他方を排除することを意図していない。様々な実施形態では、図３に示される部品は、コンピュータハードウェア内で直接的に、コンピュータハードウェア（例えば、マイクロプロセッサまたはコンピュータシスステム）により直接的または間接的に実行可能な命令として、またはこれらの技術の組合せを用いて実現され得る。例えば、図３の部品は、図１１に示され、以下に記載される例示のコンピュータシステムのような、複数の計算ノード（または単に、ノード）を含む分散システムにより実現され得る。様々な実施形態では、所与の記憶サービスシステム部品の機能性は、特定の計算ノードにより実現され得る、またはいくつかの計算ノードにわたり分散され得る。いくつかの実施形態では、所与の計算ノードは、１超過の記憶サービスシステム部品の機能性を実現し得る。
【００１６】
概して、記憶サービスクライアント３１０ａ〜３１０ｎは、ネットワーク３２０を介してウェブサービスプラットフォーム３３０にウェブサービス要求を提出するように構成可能ないずれかの種類のクライアントを包含し得る。例えば、所与の記憶サービスクライアント３１０は、ウェブサービスプラットフォーム３３０により提供されるサービスへのデータベースまたはデータ記憶サービスクライアント（例えば、クライアントアプリケーション、ユーザ、及び／または加入者）のアクセスを提供するために、適切な様式のウェブブラウザ、またはプラグインモジュール、またはウェブブラウザにより提供される実行環境へのまたはその内部への拡張として実行するように構成された他の種類のコードモジュールを含み得る。代わりに、記憶サービスクライアント３１０は、データベースアプリケーション、メディアアプリケーション、オフィスアプリケーション、または強固な記憶源を利用するいずれかの他のアプリケーションのようなアプリケーションを包含してもよい。いくつかの実施形態では、そのようなアプリケーションは、全ての種類のウェブ式データに対する完全なブラウザサポートを必ずしも実現することなく、ウェブサービス要求を生成し、処理するのに十分な（例えば、適切な様式のハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）に対する）プロトコルサポートを含み得る。即ち、記憶サービスクライアント３１０は、ウェブサービスプラットフォーム３３０と直接相互作用するように構成されたアプリケーションであり得る。様々な実施形態では、記憶サービスクライアント３１０は、表象状態伝送（ＲＥＳＴ）型のウェブサービス構成、文書またはメッセージ式ウェブサービス構造、または別の適切なウェブサービス構造に従ってウェブサービス要求を生成するように構成され得る。
【００１７】
いくつかの実施形態では、記憶サービスクライアント３１０は、他のアプリケーションにそれらのアプリケーションに対して透明であるようにウェブサービス式記憶装置へのアクセスを提供するように構成され得る。例えば、記憶サービスクライアント３１０は、本発明に記載される記憶モデルの適切な別形に従って記憶を提供するために、操作システムまたはファイルシステムと一体化するように構成され得る。しかしながら、操作システムまたはファイルシステムは、ファイル、ディレクトリ及び／またはフォルダの従来のファイルシステム階層のような、アプリケーションへの異なる記憶インターフェースを提示し得る。そのような実施形態では、アプリケーションは、本明細書に記載される記憶システムサービスモデルを利用するために変更される必要がなくてもよい。代わりに、ウェブサービスプラットフォーム３３０へインターフェース接続することの詳細は、操作システム環境内でのアプリケーション実行に代わって、記憶サービスクライアント３１０及び操作システムまたはファイルシステムにより調整され得る。
【００１８】
記憶サービスクライアント３１０は、ネットワーク３２０を介してウェブサービスプラットフォーム３３０にウェブサービス要求を伝送し、そのプラットフォームから応答を受信し得る。様々な実施形態では、ネットワーク３２０は、クライアント３１０とプラットフォーム３３０との間にウェブ式通信を設けるのに必要なネットワークハードウェアとプロトコルとのいずれかの適切な組合せを包含し得る。例えば、ネットワーク３２０は一般に、インターネットを総括的に実現する様々な遠距離通信ネットワークとサービスプロバイダとを包含し得る。ネットワーク３２０は、局所域ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）のような個人のネットワーク並びに公共または個人の無線ネットワークを含み得る。例えば、所与のクライアント３１０とウェブサービスプラットフォーム３３０の両方は、自前の内部ネットワークを有する企業内でそれぞれプロビジョニングされ得る。そのような実施形態では、ネットワーク３２０は、ハードウェア（例えば、モデム、ルータ、スイッチ、負荷バランサ、プロキシサーバ等）と、所与のクライアント３１０とインターネットとの間に並びにインターネットとウェブサービスプラットフォーム３３０との間にネットワークリンクを設けるのに必要なソフトウェア（例えば、プロトコルスタック、アカウントソフトウェア、ファイヤーウォール／セキュリティソフトウェア等）とを含み得る。いくつかの実施形態では、記憶サービスクライアント３１０が、公共のインターネットではなく個人のネットワークを用いてウェブサービスプラットフォーム３３０と通信する場合があることを注記する。例えば、クライアント３１０は、本明細書に記載されるデータ記憶サービス（及び／または基底システム）として同じ企業内でプロビジョニングされ得る。そのような事例では、クライアント３１０は、個人のネットワーク３２０（例えば、ＬＡＮ、またはインターネット式通信プロトコルを用い得るが公共的にはアクセス可能ではないＷＡＮ）を通じて完全にプラットフォーム３３０と通信し得る。
【００１９】
概して、ウェブサービスプラットフォーム３３０は、データベースサービスまたはデータ記憶サービスによりクライアント／ユーザに代わって保持される表及び／またはそれらの表内に記憶された項目及び属性にアクセスする要求のような、ウェブサービス要求を受信し、処理するように構成される１つ以上のサービスエンドポイントを実現するように構成され得る。例えば、ウェブサービスプラットフォーム３３０は、様々なサービスエンドポイントを実現し、それらのエンドポイントに向けられたＨＴＴＰ式ウェブサービス要求を適切に受信し、処理するように構成されたハードウェア及び／またはソフトウェアを含み得る。一実施形態では、ウェブサービスプラットフォーム３３０は、クライアント３１０からウェブサービス要求を受信し、処理用データ記憶システムをまとめて実現する様々な部品にそれらの要求を進めるように構成されたサーバシステムとして実現され得る。他の実施形態では、ウェブサービスプラットフォーム３３０は、負荷均衡取りと、大規模ウェブサービス要求処理負荷を動的に管理するように構成された他の要求管理機構とを実行する（例えば、クラスタ形態での）複数の異なるシステムとして構成され得る。
【００２０】
図３に示されるように、ウェブサービスプラットフォーム３３０は、（とりわけ、サービス要求を受信し、認証し、解析し、絞り込み及び／または発送するように構成され得る）フロントエンドモジュール３４０、（本明細書でより詳しく記載されるように、様々な可視化及び／または制御機能を提供するように構成され得る）１つ以上の管理部品または自動管理インスタンス３５０、及びクライアント／ユーザの代わりにまたはデータ記憶サービス（及びその基底システム）自体の代わりにその各々が１つ以上の表を保持し、管理し得る、複数の記憶ノードインスタンス（３６０ａ〜３６０ｎとして示される）を含み得る。これらの種類の部品の各々により提供される機能性のうちのいくつかは、様々な実施形態に従って本明細書でより詳しく記載される。いくつかの実施形態では、ウェブサービスプラットフォーム３３０が、複数テナント環境内のデータベースインスタンスで保持される表を作成し、アクセスし、及び／または管理する機能性を提供されるものとは異なる様式の、単一テナント環境内のデータベースインスタンスで保持される表を作成し、アクセスし、及び／または管理する機能性を提供するための図３に示される部品のいくつかを含む場合があることを注記する。他の実施形態では、複数テナント環境と単一テナント環境の両方に対応する機能性は、図３に示される部品のいずれかまたは全てに含まれ得る。様々な実施形態では、１つ以上のデータベースインスタンスが記憶ノード３６０ａ〜３６０ｎのうちの各々の上で実現される場合があり、各々がクライアントの代わりに表を記憶し得ることも注記する。これらのデータベースインスタンスのいくつかは、複数テナント環境内にあるように動作する場合があり、他のものは、単一テナント環境内にあるように動作する場合がある。いくつかの実施形態では、複数テナント環境内にあるとして動作するデータベースインスタンスは、単一テナント環境内にあるものとして動作するデータベースインスタンスとは異なる計算ノード上で（または単一計算ノード上で実行される異なる仮想機器上で）実現され得る。
【００２１】
様々な実施形態では、ウェブサービスプラットフォーム３３０は、異なる種類のウェブサーバ要求に対処するように構成され得る。例えば、いくつかの実施形態では、プラットフォーム３３０は、データ記憶サービスシステムによりクライアント／ユーザの代わりに保持及び管理される表上の様々な操作（及び／またはそれらの表上に記憶されたデータ）に対処する特定のウェブサービスアプリケーションプログラミングインターフェース（ＡＰＩ）を実行するように構成され得る。そのようなＡＰＩにより対処される操作の実施例は、本明細書により詳しく記載される。
【００２２】
クライアントのウェブサービス要求に対してアドレス指定可能なエンドポイントとして機能することに加えて、いくつかの実施形態では、ウェブサービスプラットフォーム３３０は、様々なクライアント管理構造を実装し得る。例えば、プラットフォーム３３０は、要求するクライアント３１０の身元、クライアント要求の数及び／または頻度、クライアント３１０に代わって記憶されるまたは取り出される表及び／または項目の寸法、クライアント３１０により用いられる総合記憶帯域、クライアント３１０により要求される記憶クラス、及び／またはいずれかの他の計測可能なクライアント使用パラメータを追跡することによってのように、記憶源を含むウェブサービスのクライアント使用の計量及び計算を調整することがある。プラットフォーム３３０はそのうえ、収支勘定及び支払請求システムを実施し得る、またはクライアント使用活動を報告及び支払請求するための外部システムにより問い合わせられ、処理される使用データのデータベースを保持し得る。いくつかの実施形態では、プラットフォーム３３０は、ロックマネージャ及び／または自動構成（図示されず）を含み得る。
【００２３】
様々な実施形態では、データベースサービスまたはデータ記憶サービスが、本明細書に記載される機能を実行するように構成される１つ以上の計算ノード上に実装される。いくつかの実施形態では、サービスは、その各々が本明細書に記載される１つ以上の機能を実行し得る、複数の計算ノードで構成される（図３のウェブサービスプラットフォーム３３０のような）ウェブサービスプラットフォームにより実行され得る。様々な群の計算ノードは、自動管理クラスタ、データ記憶サービス専用情報源のクラスタ、及び（いくつかの実施形態において他のウェブサービスまたはアプリケーションで共有され得る）一群の外部源の機能性を提供するように構成され得る。
【００２４】
いくつかの実施形態では、それを用いてシステムが本明細書に記載される機能性を提供するように相互作用する、外部源は、外部作業流れ部品３７０として図３で示される外部作業流れ部品を含み得る。外部作業流れ部品３７０は、それを通じて他の部品が外部作業流れシステムと相互作用する、フレームワークを提供し得る。いくつかの実施形態では、ウェブサービスプラットフォーム３３０は、そのフレームワーク（図示されず）の頂部上に組み立てられるアクセスＡＰＩを含み得る。このインターフェースにより、システムが、データ記憶サービスにより受けられると予想される使用パターンに適したＡＰＩを実行することが可能になり得る。いくつかの実施形態では、外部作業流れ部品３７０を用いるシステムの部品またはモジュールは、外部作業流れ部品３７０により提供されるインターフェースに直接接合するのではではなく、これらのインターフェースを含み得る。いくつかの実施形態では、ウェブサービスプラットフォーム３３０は、外部作業流れ部品３７０に加えて、外部記憶サービス３８０及び／または他の外部（いくつかの事例では共有される）外部源のような１つ以上の外部源に依存し得る。いくつかの実施形態では、外部作業流れ部品３７０は、特定の区画レプリカ群に拡張される操作のような、分散型操作を実行するのに用いられ得る。
【００２５】
いくつかの実施形態では、本発明に記載されるデータベースシステムは、「完全非共有」型構造におけるユーザ表の継ぎ目のないスケーリングに対応し得る。例えば、いくつかの実施形態では、各々のデータベース区画は、完全に独立した並列計算ユニットとして実装され得る。そのような実施形態では、システムは、区画にわたる分散調整を提供しない、またはバッチ「プット」操作及び／または複数宣言トランザクションに対応しない場合がある。いくつかの実施形態では、作業負荷分散が区画にわたり良く分散されている限り、区画数の増加により、使用可能な表の寸法が大きくなる及び／またはサービス要求に対する処理能力容量が増加する場合がある。本明細書に記載されるように、いくつかの実施形態では、（プログラム通りの／自動のまたは明確に初期化された）実況再区分が、作業変化に適合するように用いられ得る。言い換えれば、いくつかの実施形態では、（区画移動、区画分割、及び他の再区分操作を含む）再区分は、割り当てられた区画に向けられたサービス要求が受信され、処理され続ける間（即ち、ソース区画との接続を切ることなく）実行され得る。
【００２６】
いくつかの実施形態では、サービス（及び／または基底システム）は、様々なサービス提供及び／または処理能力モデルに対応し得る。いくつかの実施形態では、サービスは、付託作業処理能力提供及び／または最良成果提供に対応し得る。いくつかの実施形態では、規格化されたロジカル作業ユニット（またはロジカルサービス要求ユニット）を経時的に測定する観点から、付託作業処理能力レベルが指定される場合があり、システムにより保証される作業処理能力レベルを表し得る。例えば、（例えば、クライアントの代わりに保持される表内に）データベースまたはデータ記憶サービスを提供するシステムでは、記憶サービスクライアント（例えば、サービスへのアクセスを有するクライアントアプリケーション、ユーザ、または加入者）が、様々なビジネスモデル、加入の種類、及び／または支払モデルに従ってサービスにより提供される複数の処理能力選択肢の間の優先度を指定してもよい。例えば、クライアント／ユーザは、いくつかの実施形態において表を作成する要求のパラメータを通じて、特定の表に対して好ましい処理能力モデルを示してもよい。他の実施形態では、クライアント／ユーザは、データ記憶サービスにより彼らの代わりに作成され、保持される全ての表に対して規定の処理能力モデルを指定し得る。付託処理能力モデルと（それに対しては処理能力の保証が行われない）最良成果処理能力モデルの両方に対応することにより、システムは、クライアント／ユーザが、彼らの要求及び／または予算に従って性能と費用との間で折り合いを付けるのを可能にし得る。他の種類のサービスは、付託作業処理能力モデル及び／または他の処理能力モデルに対応し得る。
【００２７】
付託処理能力を提供するデータ記憶サービス（及び基底システム）は、表に向けられた通信量に応答してクライアント／ユーザの代わりに保持される表の作成、拡大、及び管理に対して容量及び／または情報源を事前に割り当てるように、かつ、情報源及び／または表がその上で保持される記憶ノード（複数可）の容量を管理しないように構成され得る。いくつかの実施形態では、付託処理能力モデル下のサービス（基底システム）により保持される表は、クライアント／ユーザからの要求を処理する際に極端に低い潜時を提供するために、高性能媒体（例えば、フラッシュメモリまたは固体ドライブ、またはＳＳＤ、媒体）のような高速の（及び多くの場合、より高価な）記憶源内に保持され得る。例えば、システムは、それらの表（及び表の様々な区画）を保持するための主要（例えばディスク）メモリに高比率の高速／局所メモリを提供（及び呈示）し得る。付託処理能力モデル下で所与の表に割り当てられた記憶源は、いくつかの事例において（少なくともある程度の時間）十分に活用され得ないが、クライアント／ユーザは、その表に対して常に必要とされるよりも多くの情報源を呈示する追加の（及びいくつかの事例において無駄な）費用ばかりでなく、付託処理能力モデルにより割り当てられる予測可能な性能を評価し得る。同様に、付託作業処理能力モデルに対応するために他の種類のサービスに事前に割り当てられる情報源は、いくかの事例において（少なくともある程度の時間）十分には活用され得ないが、（例えば、利用可能性及び／または応答性に関して）予測可能な性能レベルをクライアント／ユーザに提供し得る。
【００２８】
本明細書に記載されるように、いくつかの実施形態では、本明細書に記載されるシステムは、複数テナントモデルと単一テナントモデルの両方に対応し得る。そのようないくつかの実施形態では、クライアント／ユーザは、表を作成する要求のパラメータを通じて特定の表に対してこれらのテナントモデルの好ましいものを示し得る。他の実施形態では、クライアント／ユーザは、データ記憶サービスにより彼らの代わりに作成され、保持される全ての表に対して規定のまたは初期のテナントモデルを指定し得る。
【００２９】
図４Ａ〜４Ｃは、一実施形態に従ってウェブサービスプラットフォーム３３０の各々の種類の部品に含まれ得る様々な要素またはモジュールを示す。図４Ａに示されるように、フロントエンドモジュール３４０は、サービス要求の解析及び絞り込み（４１０として示される）、サービス要求の認証及び／または計測（４１５として示される）、サービス要求の発送（４２５として示される）、及び／または区画マップキャッシュ（４３０として示される）の保持を実行するように構成される１つ以上のモジュールを含み得る。これらの部品特定モジュールに加えて、フロントエンドモジュール３４０は、メッセージバス（４３５として示される）及び／または動的構成モジュール（４４０として示される）ような、ウェブサービスプラットフォーム３３０をまとめて実現する複数の種類の計算ノードに共通する部品を含み得る。他の実施形態では、より多くの、より少ない、または異なる要素がフロントエンドモジュール３４０に含まれ得る、またはフロントエンドモジュール３４０に含まれるものとして示されるいずれかの要素が、本明細書に記載されるデータ記憶サービスを提供するために、ウェブサービスプラットフォーム３３０の別の部品に、またはウェブサービスプラットフォーム３３０と相互作用するように構成された部品に含まれ得る。
【００３０】
図４Ｂに示されるように、自動管理インスタンス３５０は、システム管理者に可視化及び制御（４４５として示される）を提供するように、または熱収支（４５０として示される）及び／または異常制御（４５５として示される）、情報源割り当て（４６０として示される）を実行するように構成された１つ以上のモジュールを含み得る。自動管理インスタンス３５０は、それを通じてシステム管理者がデータ記憶サービス（及び／または基底システム）と相互作用し得る、管理コンソール４６５を含み得る。いくつかの実施形態では、管理コンソール４６５は、データ記憶サービスのための（例えば、システム管理者による構成または再構成のための）第１の視覚化及び制御点であり得る。例えば、管理コンソール４６５は、システム管理者及び／または他の特権ユーザに表示及び制御機能を提供してかつそれを通じてシステム状態指標、メタデータ、及び／または操作パラメータが観測及び／または更新される、比較的軽量クライアントとして実行され得る。これらの部品特性モジュールに加えて、自動管理インスタンス３５０は、メッセージバス（４３５として示される）及び／または動的構成モジュール（４４０として示される）ような、ウェブサービスプラットフォーム３３０をまとめて実現する異なる種類の計算ノードに共通する部品も含み得る。他の実施形態では、より多くの、より少ない、または異なる要素が自動管理インスタンス３５０に含まれ得る、または自動管理インスタンス３５０に含まれるものとして示されるいずれかの要素が、本明細書に記載されるデータ記憶サービスを提供するために、ウェブサービスプラットフォーム３３０の別の部品に、またはウェブサービスプラットフォーム３３０と相互作用するように構成された部品に含まれ得る。
【００３１】
図４Ｃに示されるように、記憶ノードインスタンス３６０は、区画管理を提供するように（４７０として示される）、複製を実行し、プロセスの障害を迂回するように（４７５として示される）、及び／または基底記憶装置にアプリケーションプログラミングインターフェース（ＡＰＩ）を提供するように（４８０として示される）構成される１つ以上のモジュールを含み得る。この実施例で示されるように、各々の記憶ノードインスタンス３６０は、１つ以上のクライアント／ユーザの代わりに（いくつかの実施形態において関連のないデータベースであり得る）記憶装置４８０内に１つ以上の表（及び関連する表データ）を保持する（即ち、記憶及び管理する）ように構成され得る記憶エンジン４８５を含み得る。これらの部品特定モジュールに加えて、記憶ノードインスタンス３６０は、メッセージバス（４３５として示される）及び／または動的構成モジュール（４４０として示される）ような、ウェブサービスプラットフォーム３３０をまとめて実現する異なる種類の計算ノードに共通する部品を含み得る。他の実施形態では、より多くの、より少ない、または異なる要素が記憶ノードインスタンス３６０に含まれ得る、または記憶ノードインスタンス３６０に含まれるものとして示されるいずれかの要素が、本明細書に記載されるデータ記憶サービスを提供するために、ウェブサービスプラットフォーム３３０の別の部品に、またはウェブサービスプラットフォーム３３０と相互作用するように構成された部品に含まれ得る。
【００３２】
いくつかの実施形態では、単一テナント環境において動作する表に対して複数テナント環境においてフロントエンドモジュール３４０により通常提供され得る絞り込み、認証及び／または計測操作のいくつかまたは全てを実行する必要があり得ないことを注記する。例えば、システムは、単一テナント環境における表に向けられた要求を処理する際にこれらの操作を省略するように、しかし複数テナント環境における表に向けられた要求を処理する際にそれらの操作を実行するように構成され得る。同様に、いくつかの実施形態では、自動管理インスタンス３５０により実行されるものとして示される操作のいくつか（例えば、熱収支及び／または情報源割り当て）は、単一テナント環境における表を管理する際に用いられても、用いられなくてもよい。しかしながら、自動管理インスタンス３５０（またはそれらの様々なモジュール）により実行されるものとして示される他の操作は、複数テナント環境と単一テナント環境の両方において表を作成及び／または管理する際に用いられてもよい。
【００３３】
本明細書に記載されるデータベースまたはデータ記憶サービスの基底にあるシステムは、記憶サービスクライアント（例えば、クライアントアプリケーション、ユーザ、及び／または加入者）に代わって、１つ以上の属性を有する項目を含む表内にデータを記憶し得る。いくつかの実施形態では、データ記憶サービスは、その内部においてクライアント／ユーザに代わって保持される各々の表が１つ以上の項目を含みかつ各々の項目が一群の属性を含む、データモデルをクライアント／ユーザに提示し得る。項目の属性は、任意の順序の一群の名称値対であり得る。いくつかの実施形態では、項目内の各々の属性は、名称、種類、及び値を有し得る。いくつかの属性は、属性名が単一値に対応付けられるような単一値であり得るのに対し、他のものは、属性名が２つ以上の値に対応付けられるような複数値であり得る。いくつかの実施形態では、属性の名称は常に文字列であり得るが、その値は、文字列、数字、文字列集合、または数字集合であり得る。以下は、属性の全ての例である：「ＩｍａｇＩＤ」＝１、「題目」＝「花」、「タグ」＝｛「花」「ジャスミン」、「白」｝、「等級付け」＝｛３、４、２｝。項目は、（１つ以上の属性値を含み得る）第１のキー値に各々の項目を割り当てることにより管理され得る。この第１のキー値は、項目を一意に識別するのに用いられ得る。いくつかの実施形態では、大きな数の属性は、表内の項目にわたり定義され得るが、各々の項目は、これらの属性の疎集合を含み得る（一項目に対して指定された特別な属性は、同じ表内の別の項目の属性に関連していない）。属性の全ては、第１のキー属性（複数可）を除いて任意であり得る。言い換えれば、従来のデータベースとは異なり、データベースまたはデータ記憶サービス（及び基底記憶システム）により保持される表は、第１のキーへのそれらの依存以外は既定の概要を有していなくてもよい。いくつかの実施形態では、属性が項目内に含まれる場合、その値がゼロまたは空であり得ず（例えば、属性名及び値は空の文字列ではあり得ず）、単一項目内でその属性の名称が一意である場合があることを注記する。
【００３４】
いくつかの実施形態では、本明細書に記載されるシステムは、ユーザ／加入者またはクライアントアプリケーションに大量の（即ち、仮想的に限度のない）縮尺決め、予測可能性、及び簡素化を提供するために、ある程度限定された指標及び／または問い合わせモデルを用い得る。例えば、いくつかの実施形態では、データは、第１のキーのみにより指標を付けられ、区分けされ（例えば、基底データベース内で区分けされ）得る。そのような実施形態では、ユーザ表内のデータに指標を付けるのに用いられるべき第１のキーが、ユーザの代わりに表が作成されるときにユーザにより指定され得る。その後、ユーザのデータの区分けは、システムにより処理され、ユーザから抽出され得る。いくつかの実施形態では、データに指標を付けるのに用いられる第１のキーが単一の属性ハッシュキーで構成され得る。他の実施形態では、データを指標付け及び／または区分けするのに用いられる第１のキーは、ハッシュキー部品及びレンジキー部品と本明細書で時折呼ばれる別の部品を備えた複合キーであり得る。様々な実施形態では、指標を付けられた属性に対する問い合わせに対応する場合があり、完全表走査機能が、（例えば、障害探索に対応するために）提供され得る。いくつかの実施形態では、ユーザは、第１のキーの指標以外の１つ以上の属性に基づいて表に対する第２の指標を定義する場合があり、次にユーザが定義している指標を用いて項目に対して問い合わせる場合がある。例えば、いくつかの実施形態では、システムが、（例えば、ｃｒｅａｔｅＩｎｄｅｘ  ＡＰＩを用いて）第２の指標を短時間で作成することの作成に対応する場合があり、これらの第２の指標は、記憶要求に基づいて自動的に縮尺決めされ（例えば、データ容積を増加または減少させ）、及び／または、通信に読み出し／書き込みし得る。いくつかの実施形態では、そのような第２の指標は、表内の項目が更新されるときに非同期で更新され得る。
【００３５】
様々な実施形態では、サービス（及び／または基底システム）は、表名称、項目、属性値、第１のキー値、及び／または属性名についての事前に定められた寸法制限を施行し得る。例えば、いくつかの実施形態では、項目内の全ての属性名及び値の全寸法（即ち、横列寸法）は、限定され得る。
【００３６】
本明細書に記載されるデータベース及びデータ記憶サービス（及び／または基底システム）は、記憶サービスクライアントの代わりに保持された、表を目標にする様々な操作、項目、及び／または属性を要求するためのアプリケーションプログラミングインターフェース（ＡＰＩ）を提供し得る。いくつかの実施形態では、サービス（及び／または基底システム）は、制御プレーンＡＰＩとデータプレーンＡＰＩの両方を提供し得る。データ記憶サービス（及び／または基底システム）により提供される制御プレーンＡＰＩは、表及び指標のような表レベル全体を操作するのに用いられ得る。これらのＡＰＩは、（データプレーンＡＰＩと比較すると）比較的頻繁に呼び出され得る。いくつかの実施形態では、サービスにより提供される制御プレーンＡＰＩは、表を作成し、表を削除し、及び／または表を記述するのに用いられ得る。いくつかの実施形態では、表レベル全体に対する更新を実行する制御プレーンＡＰＩは、要求された操作を実行するために非同期の作業流れを呼び起こし得る。（例えば、ｄｅｓｃｒｉｂｅＴａｂｌｅｓ  ＡＰＩを介して）「記述」情報を必要とする方法は単に、クライアント／ユーザの代わりにサービスにより保持される現時点で周知の表の状態を返し得る。データ記憶サービス（及び／または基底システム）により提供されるデータプレーンＡＰＩは、項目及び／またはそれらの属性を記憶し、削除し、取り出し、及び／または更新する、または問い合わせ及び走査のような表内の複数の項目にわたり指標に基づく検索型操作を実行するような、項目レベル操作を実行するのに用いられ得る。
【００３７】
本明細書に記載されるサービスにより提供されるＡＰＩは、異なる実施形態において、１つ以上の工業規格または適性データ交換形式に符号化された要求及び応答パラメータに対応し得る。例えば、様々な実施形態では、要求及び応答は、人により読み出し可能な（例えば、テキスト式の）データ交換規格（例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ、またはＪＳＯＮ）に固執し得る、又（いくつかの事例においてテキスト式表記よりも小型であり得る）二値符号化を用いて表記され得る。様々な実施形態では、システムは、本明細書に記載されるＡＰＩの入力パラメータの１つ以上に対して規定値（例えば、システムワイド、ユーザ特定、またはアカウント特定規定値）を供給し得る。
【００３８】
上記のように、サービスにより対応される制御プレーンＡＰＩは、表についての更新を実行するＡＰＩ（例えば、ＣｒｅａｔｅＴａｂｌｅ  ＡＰＩ及び／またはＤｅｌｅｔｅＴａｂｌｅ  ＡＰＩ）を含み得る。様々な実施形態では、これらのＡＰＩは、要求された操作を実行するために非同期の作業流れを呼び起こし得る。加えて、サービスは、現時点で周知の状態を返す方法（例えば、ＤｅｓｃｒｉｂｅＴａｂｌｅ  ＡＰＩ）に対応し得る。いくつかの実施形態では、共通の使用モデルは、（例えば、Ｃｒｅａｔｅｔａｂｌｅ  ＡＰＩを用いて）クライアントが行動を要求し、次に対応する記述ＡＰＩを介して、その完了を問い合わせるためのものであり得る（例えば、ＤｅｓｃｒｉｂｅＴａｂｌｅ）。
【００３９】
システムがデータベースまたはデータ記憶サービスをクライアントに提供する、いくつかの実施形態では、システムは、記憶サービスクライアントの代わりにサービスにより表内に保持されるデータについての以下の操作：項目を入力（記憶）すること、特定の第１のキーを有する１つ以上の項目を得ること、項目を削除すること、単一項目内の属性を更新すること、指標を用いて項目について問い合わせること、表全体にわたり走査する（例えば、項目を一覧する）こと、任意選択で返された項目を選別することのうちのいくつかまたは全てへの対応を含むアプリケーションプログラミングインターフェース（ＡＰＩ）を提供し得る。例えば、本明細書に記載されるデータ記憶サービス（及び／または基底システム）は、ＰｕｔＩｔｅｍ  ＡＰＩ、ＧｅｔＩｔｅｍ（ＧｅｔＩｔｅｍｓ）ＡＰＩ、ＤｅｌｅｔｅＩｔｅｍ  ＡＰＩ、及び／またはＵｐｄａｔｅＩｔｅｍ  ＡＰＩのような項目レベル操作、並びに、ＱｕｅｒｙＡＰＩ及び／またはＳｃａｎ  ＡＰＩのような表内の複数の項目にわたり１つ以上の指標ベース検索／走査操作を実行するための様々なデータプレーンＡＰＩを提供してもよい。それらの操作を特定するサービス要求を満たすのに必要とされる作業量が、要求を満たすために、指定された特定の操作に依存して、及び／または記憶システムとクライアントとの間でアクセス及び／または伝送されるデータ量に依存して変化する場合があることを注記する。
【００４０】
いくつかの実施形態では、本明細書に記載されるシステムは、専用ハードウェア上で（例えば、専用記憶装置上で）またはシステム内の記憶ノードのうちの特定のものの上で単一テナント環境においてデータベースインスタンスを作成し、実行するように構成され得る。他の実施形態では、単一テナント環境におけるデータベースインスタンスは、同じ記憶ノード上で作成されかつ実行される他のデータベースインスタンスとは異なる記憶ノード内の仮想機器上で作成され、実行され得る。いくつかの実施形態では、両方の型の環境における表を目標にするデータベース操作（データを記憶し、取り出し、または削除する操作）を実行するための機能を実行する基底ソフトウェア及び／またはハードウェアは、同じ（実質的に類似）であり得る。しかしながら、クライアントは、単一テナント環境においてデータベースインスタンス（及び／またはその内部の表）に直接接続することができ得るので、システムが、複数テナントに対応するのに必要とされる安全性または他の有用性を提供するために中間層を提供する必要はあり得ない。代わりに、認証確認は省かれる場合があり、クライアントは、これらの表上で操作を実行する要求を例えば低潜時経路上で直接基底記憶ノード（複数可）に提出してもよい。
【００４１】
例えば、いくつかの実施形態では、クライアントは、（例えば、ＣｒｅａｔｅＤａｔａｂａｓｅＩｎｓｔａｎｃｅ  ＡＰＩを用いて）データベースインスタンスを作成する要求を提出してもよく、（例えば、ＤｅｓｃｒｉｂｅＤａｔａｂａｓｅＩｎｓｔａｎｃｅ  ＡＰＩを用いて）データベースインスタンスを記述する要求を提出してもよく、それに応答して、システムは、クライアントが様々な操作（例えば、表作成、項目入力、項目獲得等）を実行するためにデータベースインスタンス（またはその内部の表）に直接接続し得る、ＩＰアドレス一覧を返し得る。一般に、複数テナント環境におけるデータベースインスタンスは、全てが同じデータベースインスタンス内で実行される、複数の異なるクライアントに対する表を記憶し得る。したがって、システムは、クライアントが、様々な警備及び認証方式を用いて各々の他の表にアクセスすることができないようにすることを必要とされる場合がある。しかしながら、単一テナント環境において専用データベースインスタンスを用いて、クライアントは、特定のデータベースインスタンスに対する特定のＩＰアドレスを与えられてもよく、その後、クライアントは、いくつかの実施形態において、そのインスタンスに接続し及び／またはそれらの表（複数可）への彼ら自身のネットワーク接続、例えば、様々なオープンソースプロトコルうちの１つを準拠するＴＣＰ接続を作成することができるクライアントを制限するために、ファイヤーウォール群または別の種類の警備群を構成してもよい。
【００４２】
図５は、いくつかの実施形態に従って様々なウェブ式サービスをクライアントに提供するコンピュータシステム５００を示すブロック図である。例えば、いくつかの実施形態では、コンピュータシステム５００は、図３に示されるようなウェブサービスプラットフォーム３３０のようなウェブサーバを実行し得る。様々な実施形態では、コンピュータシステム５００は、様々なクライアントにより要求されたサービスを提供するために、１つ以上の情報源プールからコンピュータシステム５００により受信されるサービス要求までの（例えば、下流サービス、データベース接続、入力／出力経路、計算情報源、実行スレッド、システムメモリの一部、ディスクメモリまたは他の強固な記憶源、または他の制約付き情報源を含み得る）様々な情報源を割り当てるように構成され得る。例えば、データ記憶システムに向けられたサービス要求を満たすために、データ記憶システムは、各々の規格化されたロジックユニットまたは要求を満たすのに必要とされるロジックサービス要求に対して、１つ以上のデータベース接続、入力／出力経路、記憶源部分及び／または他の情報源を割り当ててもよい。この実施例で示されるように、コンピュータシステム５００は、ウェブサービスインターフェース５０５、複数テナント環境に用いられる承認制御サブシステム５１０、複数テナント環境において表に向けられる要求を管理するためのサービス要求サブシステム５３０、及び単一テナント環境における表に向けられる要求を管理するためのサービス要求サブシステム５３５を含み得る。
【００４３】
この実施例では、ウェブサービスインターフェース５０５は、様々なクライアントからサービスに対する要求を受信し、クライアントの代わりにこれらのサービスを実行しやすくするために承認制御サブシステム５１０と通信するように構成され得る。例えば、いくつかの実施形態では、承認制御サブシステム５１０は、複数テナント環境における表に向けられるどのサービス要求及び／またはどれ位多くのサービス要求が様々なクライアントから受け入れられるかを判定するように構成される場合があり、１つ以上の受信されたサービス要求を受け入れる及び／または処理するためにサービス要求サブシステム５３０と通信する場合がある。いくつかの実施形態では、承認制御サブシステム５１０は、システムに対する及び／または特定のクライアント、アプリケーション、目標、要求の種類、または操作に対する最大要求率に応じて、どのサービス要求及び／またはどれ位多くのサービス要求が受け入れられるのか判定するように構成され得る。本明細書に記載されるように、最大要求率は、現時点の作業処理能力率及び／または目標または付託作業処理能力率に応じて動的に調節され得る。他の実施形態では、サービス要求は、作業式トークンを用いて管理され得る。様々な実施形態では、承認制御サブシステム５１０は、均一ではない作業負荷を有するサービス要求を管理するのに適したいずれかの承認制御機構を含む１つ以上の承認制御機構を実行し得る。
【００４４】
いくつかの実施形態では、サービス要求が、承認制御サブシステム５１０により処理するために受け入れられる場合、次にサービス要求サブシステム５３０は、要求されるサービスを実行するのに必要とされる１つ以上の情報源をそれらの要求に割り当てる（またはそれらの割り当てを開始する）ように、及び／またはウェブサービスインターフェース５０５を介してクライアントに結果を返すように構成され得る。例えば、承認制御サブシステム５１０により受け入れられる問い合わせ要求に応答してシステムがデータ記憶サービスを提供する実施形態では、サービス要求サブシステム５３０は、問い合わせが向けられる先の、かつウェブサービスインターフェース５０５を介してクライアントに問い合わせ結果を返し得る、表にアクセスし得る。いくつかの実施形態では、承認制御サブシステム５１０は、均一ではない作業負荷を有するサービス要求を絞り込むように、そうでなければそれらを管理するように（例えば、現時点の作業処理能力率に応じて最大要求率を調節するように）構成され得る。他の実施形態では、この機能性は、サービス要求を絞り込むのに用いられる承認制御サブシステムに最大要求率を提供し得るシステムの別の部品により提供され得る。いくつかの実施形態では、承認制御サブシステム５１０は、「漏れバケット」式承認コントローラを実装し得る。いくつかの実施形態では、ウェブサービスインターフェース５０５は、クライアントの代わりに承認制御サブシステム５１０及び／またはコンピュータ５００の他の部品と通信するために、定義されたアプリケーションプロトコルインターフェース（ＡＰＩ）を介してのように、既定の命令または通信を活用し得る。
【００４５】
この実施例では、サービス要求サブシステム５３５は、単一テナント環境における表に向けられる要求されたサービスを実行するのに必要とされる１つ以上の情報源を割り当てる（またはそれらの割り当てを初期化する）ように、及び／または承認制御サブシステム５１０によって実行されているような上述の操作の全てを実行することなく、ウェブサービスインターフェース５０５を介してクライアントに結果を返すように構成され得る。例えば、問い合わせ要求に応答してシステムが単一テナント環境における表に対するデータベースまたはデータ記憶サービスを提供する、実施形態では、サービス要求サブシステム５３５は、問い合わせが向けられる先の、かつウェブサービスインターフェース５０５を介してクライアントに問い合わせ結果を返し得る、表にアクセスし得る。
【００４６】
様々な実施形態では、図４Ａ〜４Ｃ及び／または図５に示される部品が、コンピュータハードウェア（例えば、マイクロプロセッサまたはコンピュータシステム）により直接的または間接的に実行可能な命令として、またはそれらの技術の組合せとして、コンピュータハードウェア内に直接実装される場合があることを注記する。例えば、コンピュータシステム５００の部品は、任意の数の計算ノード（または単に、ノード）を含む分散システムにより実装されてもよい。様々な実施形態では、所与の部品の機能性は、特定のノードにより実装され得る、またはいくつかのノードにわたり分散され得る。いくつかの実施形態では、所与のノードは、図４Ａ〜４Ｃ及び／または図５に示される１超過の部品の機能を実行し得る。
【００４７】
ウェブサーバ（または承認制御システムまたはそのシステムの他の部品）により実行され得る様々な技術が、異なる実施形態に従って以下により詳しく記載される。一般に、クライアントの代わりにサービス要求の処理を管理するための本明細書に記載される技術のいずれかまたは全ては、ウェブサーバの部品である承認制御モジュールにより実行され得る、及び／またはその中に実装され得る。本明細書に記載されるいくつかの実施例は、インターネット上でサービスを提供するシステムに向けられているが、他の実施形態では、これらの技術は、承認制御モジュールまたはサービスをクライアントに提供しかつそれらのクライアントに代わって要求を受信し、受け入れ、及び／または処理するように構成されている、別の種類のシステムの類似の部品により実行され得る、及び／またはその中に実装され得る。
【００４８】
上記のように、いくつかの実施形態では、複数テナントモデルと単一テナントモデルの両方に対応するデータベースシステムは、クライアントが、それらの表を設定させようとする方法を選択するのを可能にし得る。加えて、いくつかの実施形態では、初期において表が（例えば、費用を低く保とうとする際に）複数テナント環境において設定される場合、後にクライアントが表の全て（または一部）に対してより高い処理能力を必要とする（望む）場合、表（またはその表の高使用頻度部分）は、より高い処理能力を提供し得る単一テナント環境に移動され得る。例えば、表内のデータに高頻度でアクセスされている（高頻度でアクセスされると予想される）とき、クライアントは、表データの瞬時状態（または高頻度でアクセスされている表の一部）を作成し、その表（またはその表の一部）を単一テナント環境に移動させることを必要とし得る（システムはそれを自動的に実行し得る）。この実施例では、将来のいずれかの時点で、表（または移動された表の一部）がもはや高頻度でアクセスされていない場合、クライアントは、その表を複数テナント環境に戻すように移動させる必要があり得る（またはシステムはそれを自動的に実行させる）。一般に、本明細書で記載されるシステム内で作成される表は、望みに応じて（例えば、作業負荷、所望の処理能力、費用、様々なシステム方式またはサービス契約に応じて、または他の因子に応じて）複数テナント環境と単一テナント環境との間のどちらの方向にも移動され得る。
【００４９】
いくつかの実施形態では、単一のクライアントが、複数テナント環境における表内のそれらのデータのいくつかの部分と単一テナント環境における表内のそれらのデータの他の部分とを記憶し得るけれども、クライアントが、それらのデータを表毎でこれら２つのテナント機能モデルに分割させることのみができ得ることを注記する。言い換えれば、クライアントは、複数テナント環境におけるいくつかの表と単一テナント環境における他の表とを記憶することができ得るが、各々がこれらの環境モデルの１つの下で記憶されることになる表自体が最初に複数の表に分割されない場合、表を２つの環境の間で分割させることができない場合がある。一実施例では、単一テナント環境におけるデータベースインスタンスの能力が１００ギガバイトであり（これが、単一テナントモデルにおいて対処され得る最大寸法のデータベースインスタンスがあり）、クライアントが、記憶１２０ギガバイトのデータを作成することを望む場合、クライアントは、１００ギガバイトを切り分け、それを単一テナント環境における表に加え、残りの２０ギガバイトを複数テナント環境における表に加え（残し）てもよい。
【００５０】
複数テナント環境におけるデータベースインスタンスと単一テナント環境におけるデータベースインスタンスとを提供するシステム内で表を作成するための方法の１つの実施形態は、図６の流れ図により示される。６１０に示されるように、この実施例では、本方法は、複数テナント環境及び単一テナント環境においてデータベースサービスを提供し、表を作成する要求を受信するシステムを含む場合があり、その要求は、環境型（例えば、複数テナントまたは単一テナント）を指定し得る。その要求が、（６２０からの肯定方向の出口として示される）複数テナント環境において表が作成されるべきであることを指定する場合、本方法は、６３０内のように、データベースシステムが、複数テナント環境におけるデータベースインスタンスで表を作成することを含み得る。次に本システムは、６３５内のように、続いて受信され、かつ表を目標にする入力サービス要求のうちの少なくとも一部を処理し始め得る。
【００５１】
要求が、（６２０からの否定方向の出口として示される）複数テナント環境において表が作成されるべきであることを指定しない場合、本方法は、６４０内のように、データベースシステムが、単一テナント環境におけるデータベースインスタンスで表を作成することを含み得る。次に本システムは、６４５内のように、続いて受信され、かつ表を目標にする入力サービス要求のうちの少なくとも一部を処理し始め得る。（６５０からの肯定方向の出口として示される）表を作成するより多くの要求が受信される場合、本方法は、（６５０の否定方向の出口から６１０への帰還として示される）各々の追加の要求に対して図６に示される操作を繰り返すことを含み得る。
【００５２】
上記のように、データベースシステムは、単一テナント環境における表を目標にするデータベース操作を実行する要求を処理するときに、複数テナント環境における表を目標にするデータベース操作を実行する要求を処理するときとは異なる操作を実行するように構成され得る。単一テナント環境におけるデータベースインスタンスで表を作成し、アクセスするための方法の一実施形態は、図７の流れ図により示される。この実施例で示されるように、本方法は、７１０内のように、複数テナント環境及び単一テナント環境においてデータベースサービスを提供し、単一テナント環境における表を作成する要求を（クライアントから）受信する、システムを含み得る。それに応答して、データベースシステムは、７２０内のように、単一テナント環境における表を作成し得る。表を作成することは、単一テナント環境におけるデータベースインスタンスで表に（例えば、１つ以上の記憶ノードのうちの一部を含む）情報源を与えること含む場合があり、いくつかの実施形態において、要求に含まれる構成パラメータ値に従って表を構成すること及び／または表を作成する要求の一部として受信される表データを表に備え付けることを含む場合もある。この例で示されるように、本方法は、７３０内のように、単一テナント環境における表に対する要求及び／または表に対するデータベースインスタンス情報（例えば、クライアントが記憶ノードまたは表がその上部で提供されるノード上の表への直接接続を設けることを可能にする情報）を受信し、その情報を要求者に提供する、データベースシステムを含み得る。例えばいくつかの実施形態では、そのような要求に応答して、データベースシステムは、表に対するＩＰアドレスをクライアントに返し得る。
【００５３】
この実施例で示されるように、本方法は、７４０内のように、要求者（クライアント）が、単一テナント環境における表を提供するデータベースインスタンスの記憶ノード（複数可）への直接接続を設定することを含み得る。続いて、要求者（クライアント）は、７５０内のように、（設定された直接接続を通じて）処理するために単一テナント環境における表をホストするデータベースインスタンスの記憶ノード（複数可）に、表を目標にするデータベース操作を実行する要求を誘導し得る。この実施例で示されるように、単一テナント環境においてホストされる表上でデータベース操作を実行する要求を処理することは、７５０内のように、システム内の認証及び／または計測機構（例えば、複数テナント環境においてホストされた表に向けられた要求を処理する際に実行され得る認証及び／または計測機構）のうちの少なくともいくつかを省略することを含み得る。例えば、（少なくともいくつかの実施形態では）単一テナント環境においてホストされる表として同じデータベースインスタンスで他のクライアントに代わってホストされる表がなく、異なるクライアントの表の間で共有されるデータベース源がないことがあり得るので、単一テナント環境において表がホストされるクライアントが直接接続を通じて表と通信してもよいので、複数テナント環境においてクライアント表の間の孤立を強要するまたは表へのアクセスの既定の限界を強要する認証及び／または計測操作のうちのいくつかを実行する必要がない場合がある。
【００５４】
複数テナント環境におけるデータベースインスタンスで表を作成し、アクセスするための方法の一実施形態を示す方法の一実施形態は、図８の流れ図により示される。８１０で示されるように、この実施例では、本方法は、複数テナント環境及び単一テナント環境においてデータベースサービスを提供し、複数テナント環境において表を作成する要求を受信するシステムを含み得る。その要求に応答して、データベースシステムは、８２０内のように、複数テナント環境において表を作成し得る。表を作成することは、複数テナント環境におけるデータベースインスタンスで表に（例えば、１つ以上の記憶ノードのうちの一部を含む）情報源をプロビジョニングすることを含む場合があり、いくつかの実施形態において、要求内に含まれる構成パラメータ値に従って表を構成すること及び／または表を作成する要求の一部として受信された表データを表に備え付けることを含む場合もある。以前注記されたように、クライアントに代わって複数テナント環境においてホストされる表は、他のクライアントに代わって１つ以上の表もホストするデータベースインスタンスでホストされ得る。
【００５５】
図８に示されるように、本方法は、データベースシステムが、８３０内のように、表を目標にするデータベース操作を実行する要求を受信することを含み得る。それに応答して、本システムは、８４０内のように、要求を処理するべきかを判定するための１つ以上の認証及び／または計測機構を適用し得る。要求が処理されるべきである場合（８５０からの肯定方向の出口として示される）、本方法は、８６０内のように、システムが要求を処理することを含み得る。そうでない場合（８５０からの否定方向の出口として示される）、システムは、（８７０内のように）要求を拒絶し得る。例えば、要求を認証することができない場合、またはクライアントが既定の処理能力限界を超えている場合、要求は拒絶され得る。
【００５６】
上記のように、いくつかの事例では、単一テナント環境から複数テナント環境へ表を移動させることが（例えば、性能または費用の視点から）望ましい場合がある。いくつかの実施形態では、表を異なる環境に移動させることは、基底記憶ノードを異なる環境に移動させることを含むことを含むばかりでない。例えば、複数テナント環境における表を移動させるために、クライアント（またはシステム）は、特定の複数テナント記憶ノード（その各々は表の一部を記憶し得る）に対する１つ以上のデータファイルにアクセスし、それらのデータファイルの瞬時状態を（例えば、キー値記憶システムに）抜き出し、専用データベースインスタンス（例えば、単一テナント環境におけるデータベースインスタンス）を作成しその瞬時状態からのデータファイルを、新たに作成された専用データベースインスタンスに複写し得る（それは、その瞬時状態からの表を新たなデータベースインスタンスに「復元する」ことに実質的に類似し得る）。同様に、単一テナント環境から複数テナント環境へ表を移動させることは、表の瞬時状態を（例えば、キー値記憶システムに）抜き出し、次にその瞬時状態からの表を複数テナント環境におけるデータベースインスタンスに「復元する」ことを含み得る（それは、複数テナント環境においてデータベースインスタンスを、それがまだ存在していない場合に作成することを含み得る）。
【００５７】
さらに特定の実施例では、クライアントの代わりに注文データをホストするデータベースサービスは、単一テナントデータベースインスタンスで個別の表内に最も新しい注文データ（例えば、各週のデータ分量）を記憶し、後に（例えば、表内の注文データが１週間よりも古くなった後に）、その表を複数テナント環境に移動させるように構成され得る。古い注文データは、より新しい注文データよりもアクセスされそうにない（従って高処理能力専用インスタンスが必要とされ得ない）ので、古い注文データを複数テナント環境に記憶することは、より費用効果があり得る。いくつかの実施形態では、さらに古いデータ（例えば、数ヶ月または数年の古いデータ）は、データベースサービスの記憶ノードから完全に除去される場合があり、その時点でその除去は達成され得る。別の実施例では、頻繁にアクセスされると予想されないデータは、単一テナント環境に記憶され得る。しかしながら、データへのアクセスが急に上昇する場合、データは、少なくとも処理能力への需要が増加する期間わたり、複数テナント環境に移動され得る。
【００５８】
上記のように、いくつかの実施形態では、データベースシステムは、初期に規定により複数テナント環境または単一テナント環境のいずれかにおいて全ての表を作成するように構成され得るが、後に表を他の型の環境に移動させることに対処し得る。複数テナント環境において表を作成し、その表を単一テナント環境に移動させるための方法の一実施形態は、図９の流れ図により示される。９１０に示されるように、この実施例では、本方法は、複数テナント環境及び単一テナント環境においてデータベースサービスを提供し、表を作成する要求を受信するシステムを含み得る。この実施例では、その要求に応答して、データベースシステムは、９２０内のように、（例えば、規定により）複数テナント環境において表を作成し得る。９３０に示されるように、本方法は、データベースシステムが、表を目標にするデータベース操作を実行する１つ以上の要求の少なくともいくつかを受信及び処理することを含む場合があり、それは、上記のような、その要求に対して１つ以上の認証及び／または計測機構を用いることを含み得る。
【００５９】
この実施例では、（将来のいずれかの時点で）複数テナント環境における表により提供される処理能力が、表を目標にする要求を処理するのに十分であることが確定される場合（９４０からの否定方向の出口として示される）、本方法は、複数テナント環境において表をホストし続け、複数テナント環境のプロトコルに従って表に向けられた要求を受信及び処理することを含み得る。これは、図９において９４０の否定方向の出口から９３０への帰還により示される。他方では、表を目標にする要求に対してより高い処理能力が必要とされる（所望される）ことが確定される場合（９４０からの正方向の出口として示される）、本方法は、データベースシステムが、表の瞬時状態を抜き出し、（何も存在しない場合）単一テナント環境においてデータベースインスタンスを作成し、９５０内のように、その瞬時状態からの表を単一テナント環境におけるデータベースインスタンスでの新たな表として「復元する」ことを含み得る。例えば、いくつかの実施形態では、データベースシステムは、表（及び／または同じデータベースインスタンスで提供される他の表）に向けられた観測される作業負荷に及び／または表が被っている観測される処理能力に基づいて、（例えば、様々なシステム方式及び／または適用可能なサービス品質保証契約に従って）性能を向上させるために表が単一テナント環境に移動されるべきであることを確定するように構成され得る。他の実施形態では、表に向けられたサービス要求に対する処理能力を増加させることによりそれらのアプリケーションの性能を向上させることを欲するクライアントは、（例えば、グラフィックユーザインターフェースを用いてシステムに伝えられる要求メッセージを用いることにより、またはＡＰＩにより定義されるような移動をプログラム的に呼び起こすことにより）表が単一テナント環境に移動されることを明らかに要求し得る。この実施例に示されるように、この移動に続いて、本方法は、データベースシステムが、表を目標にするデータベース操作を実行する１つ以上の追加の要求のうちの少なくともいくつかを受信及び処理することを含んでもよいが、本システムは、（９６０内に示されるように）複数テナント環境においてホストされる表に対して用いられ得る１つ以上の認証及び／または計測機構のうちの少なくともいくつかを用いることを省略してもよい。
【００６０】
単一テナント環境において表を作成し、その表を複数テナント環境に移動させるための方法の一実施形態は、図１０の流れ図により示されている。１０１０で示されるように、この実施例では、本方法は、複数テナント環境及び単一テナント環境においてデータベースサービスを提供し、表を作成する要求を受信するシステムを含み得る。この実施例では、要求に応答して、データベースシステムは、１０２０内のように、（例えば規定により）単一テナント環境において表を作成し得る。１０３０に示されるように、本方法は、データベースシステムが、表を目標にするデータベース操作を実行する１つ以上の要求のうちの少なくともいくつかを受信及び処理し、その間は、上記のように、システムが、１つ以上の認証及び／または計測機構を要求処理に用いることを省き得ることを含み得る。
【００６１】
この実施例では、（将来のいずれかの時点で）複数テナント環境において表をホストする際に提供され得た低処理能力が、表を目標とする要求に対して十分であると確定される場合（１０４０からの正方向の出口として示される）、本方法は、１０５０内のように、データベースが、表の瞬時状態を抜き出し、（もし何も存在しない場合）複数テナント環境においてデータベースインスタンスを作成し、その瞬時状態からの表を複数テナント環境におけるデータベースインスタンスでの新たな表として「復元する」ことを含み得る。例えば、いくつかの実施形態では、データベースシステムは、その表に向けられる観測される、予想される、及び／または望まれる作業負荷及び／またはその表により被っている観測される処理能力に基づいて、（例えば、様々なシステム方式及び／または適用可能なサービス品質保証契約に従って）費用を削減するために表が複数テナント環境に移動されるべきであることを確定するように構成され得る。他の実施形態では、表に向けられたサービス要求に対して低減された処理能力を受け入れることにより表を管理する費用を削減することを望むクライアントは、（例えば、グラフィックユーザインターフェースを用いることによりシステムに伝えられる要求メッセージを用いることにより、またはＡＰＩにより定義されるような移動をプラグラム的に呼び起こすことにより）表が複数テナント環境に移動されることを明らかに必要とし得る。この実施例に示されるように、移動に続いて、本方法は、データベースシステムが、表を目標にするデータベース操作を実行する１つ以上の追加の要求のうちの少なくともいくつかを受信及び処理することを含んでもよく、その操作は、（１０６０内のように）単一テナント環境においてホストされる表に向けられた要求を処理する際に省略される１つ以上の認証及び／または計測機構のうちの少なくともいくつかを実行することを含み得る。
【００６２】
他方では、複数テナント環境における表により与えられる処理能力が、表を目標にする要求を処理するのに十分ではないことが確定される場合（１０４０からの否定方向の出口として示される）、本方法は、単一テナント環境において表をホストし続け、単一テナント環境のプロトコルに従って表に向けられる要求を受信及び処理することを含み得る。これは、図１０において１０４０の否定方向の出口から１０３０への帰還により示される。
【００６３】
いくつかの実施形態では、単一テナント環境において作成されるデータベースインスタンスが、まさに複数テナント環境において作成されるデータベースインスタンスが行うように、自動的に拡大縮小する（必要に応じて表の複製を記憶するより多くのまたはより少ない基底記憶ノード及び／またはデータベースインスタンスを用いる）ことを注記する。言い換えれば、クライアントがより多くのデータを加えるにつれて、データベースインスタンスは自動的に縮尺を変更する。いくつかの実施形態では、特定のデータベースインスタンスとそれを実行するのに用いられる１つ以上の記憶ノードとの間に固定された関連性があり得ないことを注記する。そのうえ、単一テナント環境において特定のクライアントにより作成されるデータベースインスタンスは、（例えば、そのインスタンスでホストされたデータの３つの複製を保持するための）３つの基底データベースインスタンスに対応するようにデバッグ情報を削除される場合があることを注記する。
【００６４】
上記の技術は、様々な実施形態では、サービスをクライアントに提供する様々なシステムにおいて表をホストし、それらの表に向けられたサービス要求を管理するのに適し得る。例えば、それらの技術は、比較的高い作業処理能力率及び／または動的に変化する作用処理能力率を含む幅広い作業負荷動作を受けるシステムにおいて表をホストし、サービス要求を管理するのに適し得る。いくつかの実施形態では、複数テナント環境における同容量のデータベース表に対するものとは異なる単一テナント環境におけるデータベース表に対する価格設定モデルがあり得る。例えば、単一テナントモデル下での価格設定はインスタンス毎のものであってもよいが、複数テナントモデル下の価格設定は処理能力に基づいてもよい。
【００６５】
いくつかの実施形態では、本明細書に記載される方法、技術または部品のいずれかが、コンピュータアクセス可能媒体を介して記憶されるまたは伝送される能力のある命令及びデータとして実施され得ると考えられる。そのような方法または技術は、例えば限定されることなく、本明細書に記載されるような複数テナント環境及び単一テナント環境においてデータベースサービスを与えるための様々な方法を含み得る。そのような命令は、特定の目的（例えば、ウェブサーバインターフェースを介して受信された要求の処理、または様々な要求の処理の帰還及び／または結果の返し）に合わせて調整された特定の計算機能、並びに操作システム機能、視覚化機能、ネットワーク通信機能、アプリケーション機能、記憶システム機能、及び／またはいずれかの他の適切な機能のような高次の機能を実行するのに実行され得る。
【００６６】
複数テナント環境及び単一テナント環境においてデータベースサービスを提供するための本明細書に記載される技術の１つ以上を実施するコンピュータシステムの一実施形態は、図１１に示される。異なる実施形態では、本明細書に記載される様々なモジュールまたは方法のうちのいずれかの機能は、コンピュータシステム１１００の１つまたはいくつかのインスタンスにより実施され得る。特に、本明細書に記載されるシステムの異なる要素が、異なるコンピュータシステム１１００により実現される場合があることを注記する。例えば、異なる実施形態では、サービス要求を管理するための本明細書に記載される機能に対応するコンピュータシステムは、クライアント（そのクライアントを通じて顧客または加入者がシステムにアクセスし得る）がその上部で実行する、同じコンピュータシステム１１００上に、または別のコンピュータシステム１１００上に実現されてもよい。別の実施例では、異なるサブシステム（例えば、ウェブサーバインターフェース、承認制御サブシステム、サービス要求サブシステム、及び／または１つ以上のウェブサーバまたは他の部品）が、計算ノードのうちの複数のものの上にまたはそれらにわたって実現されてもよく、計算ノードの各々は、コンピュータシステム１１００に類似し得る。
【００６７】
図示される実施形態では、コンピュータシステム１１００は、入力／出力（Ｉ／Ｏ）インターフェース１１３０を介してシステムメモリ１１２０に結合される１つ以上のプロセッサ１１１０を含む。コンピュータシステム１１００はさらに、Ｉ／Ｏインターフェース１１３０に結合されるネットワークインターフェース１１４０を含む。様々な実施形態では、コンピュータシステム１１００は、１つのプロセッサ１１１０を含む単一プロセッサシステム、またはいくつかのプロセッサ１１１０（例えば、２、４、８、または別の適切な数）を含む複数プロセッサシステムであり得る。プロセッサ１１１０は、命令を実行する能力のあるいずれかの適切なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ１１１０は、ｘ８６、ＰｏｗｅｒＰＣ（商標）、ＳＰＡＲＫ（商標）、またはＭＩＰＳ（商標）ＩＳＡ、またはいずれかの他の適切なＩＳＡのような、様々な命令集合構造（ＩＳＡ）を実行する汎用または組込プロセッサであってもよい。複数プロセッサシステムでは、プロセッサ１１１０の各々は、必須ではないが一般的に同じＩＳＡを実装してもよい。
【００６８】
システムメモリ１１２０は、プロセッサ１１１０によりアクセス可能な命令（例えば、コード１１２５）及び（例えば、データ記憶装置１１２２内の）データを記憶するように構成され得る。様々な実施形態では、システムメモリ１１２０は、静的ランダムアクセスメモリ（ＳＲＡＭ）、同期型動的ＲＡＭ（ＳＤＲＡＭ）、非揮発性／フラッシュ型メモリ、またはいずれかの他の種類のメモリのようないずれかの適切なメモリ技術を用いて実装され得る。図示される実施形態では、（本明細書に記載される機構のいずれかまたは全てを用いて複数テナント環境及び単一テナント環境においてデータベースサービスを提供するための機能のような）所望の機能、方法または技術を実行する命令またはデータは、コード１１２５のようにシステムメモリ１１２０内に記憶されて示される。いくつかの実施形態では、コード１１２５が、プロセッサ１１１０により直接実行可能ではないが、プロセッサ１１１０により直接実行可能である命令に翻訳可能である抽象形式で表記または符号化される所望の機能を実行する命令及びデータを含む場合があることを注記する。例えば、コード１１２５は、プロセッサ１１１０により、またはプロセッサ１１１０上で実行可能な他のコード１１２５によりエミュレートされ得るＩＳＡ内で指定された命令を含んでもよい。代わりに、コード１１２５は、実行中にコンパイルされ得るまたは解釈され得る抽象的なプログラム言語で実行される命令、手続または宣言を含み得る。限定されない実施例として、コード１１２５は、ＣまたはＣ＋＋のような手続型またはオブジェクト指向性プログラム言語、パールのような記述言語、ＨＴＭＬまたはＸＭＬのようなマークアップ言語、またはいずれかの他の適切な言語で指定されたコードを含んでもよい。
【００６９】
いくつかの実施形態では、システムメモリ１１２０内のデータ記憶装置１１２２は、複数テナント及び単一テナント環境においてデータベースサービスを提供する際に用いられる規定の、システム側の、クライアント特定の、または種類特定の構成可能なパラメータの値；（実作業処理能力率、最大要求率、実要求率及び／または拒否率、及び／または目標または付託作業処理能力率を含むが、これらに限定されない）観測される、抽出される、計測される、及び／または凝集される（例えば平均化される）性能情報；構成データ（例えば、トークンバケット容量限界、規定のトークン生成率、規定のトークン控除値、サービス品質保証契約パラメータ値、承認制御方式データ及び／またはクライアント特定パラメータ値）；及び／または本明細書に記載の技術を実行するのに適した様々なデータ構造内の他のデータを記憶し得る。
【００７０】
一実施形態では、Ｉ／Ｏインターフェース１１３０は、装置内のプロセッサ１１１０、システムメモリ１１２０、及びいずれかの周辺装置間のＩ／Ｏ通信量を調整するように構成される場合があり、ネットワークインターフェース１１４０または他の周辺インターフェースを含む。いくつかの実施形態では、Ｉ／Ｏインターフェース１１３０は、いずれかの必要なプロトコル、タイミング、または１つの部品（例えば、システムメモリ１１２０）からのデータ信号を別の部品（例えば、プロセッサ１１１０）による使用に適した形式へ変換するための他のデータ変換を含み得る。いくつかの実施形態では、Ｉ／Ｏインターフェース１１３０は、周辺部品インターコネクト（ＰＣＩ）バス規格またはユニバーサルシリアルバス（ＵＳＢ）規格の変異形のような様々な種類の周辺バスを通じて取り付けられる装置に対するサポートを含み得る。いくつかの実施形態では、Ｉ／Ｏインターフェース１１３０の機能は、例えば北ブリッジ及び南ブリッジのような２つ以上の別個の部品に分割され得る。そのうえ、いくつかの実施形態では、システムメモリ１１２０へのインターフェースのようなＩ／Ｏインターフェース１１３０の機能性のいくつかまたは全ては、プロセッサ１１１０に直接組み込まれ得る。
【００７１】
ネットワークインターフェース１１４０は、コンピュータシステム１１００と例えば他のコンピュータシステムのようなネットワークに取り付けられた他の装置との間でデータが交換され得るように構成され得る。様々な実施形態では、ネットワークインターフェース１１４０は、いずれかの適切な種類のイーサーネットワークのような有線または無線一般データネットワークを介した、例えばアナログ音声ネットワークまたはデジタルファイバネットワークのような遠距離通信／電話通信ネットワークを介した、ファイバチャンネルＳＡＮのような記憶領域ネットワークを介した、またはいずれかの他の適切な種類のネットワーク及び／またはプロトコルを介した通信に対処し得る。
【００７２】
いくつかの実施形態では、システムメモリ１１２０は、上記の命令及びデータを記憶するように構成された非一過性のコンピュータ読出可能記憶媒体を含み得る。しかしながら、他の実施形態では、命令及び／またはデータは、異なる種類のコンピュータアクセス可能記憶媒体上で受信され、送信されまたは記憶され得る。一般的に、非一過性のコンピュータ読出可能媒体は、磁気または光学媒体、例えばＩ／Ｏインターフェース１１３０を介してコンピュータシステム１１００に結合されるディスクまたはＣＤ／ＤＶＤ−ＲＯＭのような記憶媒体またはメモリ媒体を含み得る。非一過性のコンピュータ読出可能媒体は、コンピュータシステム１１００のいくつかの実施形態においてシステムメモリ１１２０としてまたは別の種類のメモリとして含まれ得るＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等のようないずれかの揮発性または非揮発性記憶媒体を含み得る。コンピュータアクセス可能記憶媒体は一般に、ネットワークインターフェース１１４０を介して実装され得るような、ネットワーク及び／または無線リンクのような通信媒体を介して伝達される電気、電磁気、またはデジタル信号のような伝送媒体または信号を介してアクセス可能であり得る。
【００７３】
上記のことは、以下の付記を考慮してより良く理解され得る。
１．１つ以上のプロセッサと、
１つ以上のプロセッサに結合されるメモリと、
１つ以上の記憶ノードと、を備えるシステムであって、
メモリは、１つ以上のプロセッサにより実行されるときに、複数テナント環境における及び単一テナント環境においてデータベースサービスを１つ以上のデータベースサービスクライアントに提供するデータベースサービスを１つ以上のプロセッサに実行させるプログラム命令を記憶し、複数テナント環境は、その内部において複数のクライアントに対するデータベース表が単一のデータベースインスタンスでまとめてホストされる、環境を含み、単一テナント環境は、その内部において異なるクライアントに対するデータベース表が異なるデータベースインスタンスでホストされる、環境を含み、
データベースサービスは、
データベースインスタンスを作成する要求をクライアントから受信し、要求は、データベースインスタンスが複数テナント環境において作成されるべきであることを指定しており、
要求するクライアントに代わって複数テナント環境におけるデータベースインスタンスを作成するために、１つ以上の記憶ノードのうちの１つ以上をプロビジョンニングし、
別のデータベースインスタンスを作成する要求をクライアントから受信し、要求は、他のデータベースインスタンスが単一テナント環境において作成されるべきであることを指定しており、
要求するクライアントに代わって単一テナント環境におけるデータベースインスタンスを作成するために、１つ以上の記憶ノードのうちの１つ以上をプロビジョンニングし、
表を作成する要求をクライアントから受信し、要求は、表が複数テナント環境または単一テナント環境におけるデータベースインスタンスで作成されるべきであるのかを指定しており、
指定された環境におけるデータベースインスタンスで表を作成するように
構成されている、システム。
２．データベースサービスはさらに、
指定された環境のプロトコルに従って表を目標に定めるデータベース操作を実行する１つ以上の要求を受信及び処理し、
指定された環境以外の環境におけるデータベースインスタンスに表を移動させ、かつ
他の環境のプロトコルに従って表を目標に定めるデータベース操作を実行する１つ以上の要求を受信及び処理するように構成されている、付記１に記載のシステム。
３．複数テナント環境においてデータベースインスタンスを作成する要求の起源であるクライアントと、単一テナント環境においてデータベースインスタンスを作成する要求の起源であるクライアントとが同じクライアントである、付記１に記載のシステム。
４．データベースサービスがさらに、
クライアントから別の表を作成する要求を受信し、要求は、他の表が指定された環境以外の環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
他の環境におけるデータベースインスタンスで別の表を作成するように構成されている、付記１に記載のシステム。
５．複数テナント環境においてデータベースインスタンスを作成するために、データベースサービスが、関連性のないデータベースのインスタンスを作成するように構成されており、
単一テナント環境においてデータベースインスタンスを作成するために、データベースサービスが、関連性のあるデータベースのインスタンスを作成するように構成されている、付記１に記載のシステム。
６．１つ以上のコンピュータによって、
表を作成する要求を受信することと、
前記受信に応答して、複数テナント環境または単一テナント環境のうちの所与の一方においてデータベースインスタンスで表を作成することと、
表を目標に定めるデータベース操作を実行する１つ以上の要求を受信及び処理することと、
前記受信及び処理に続いて、
複数テナント環境または単一テナント環境のうちの他方においてデータベースインスタンスに表を移動させることと、
表を目標に定めるデータベース操作を実行する１つ以上の追加の要求を受信及び処理することと、を実行することを含む、方法。
７．方法がさらに、他の環境においてデータベースインスタンスに表を移動させる要求を受信することを含み、
表を移動させる要求の受信に応答して前記移動が実行される、付記６に記載の方法。
８．方法はさらに、表を目標に定めるデータベース操作を実行する要求を受信及び処理するための観測されるまたは望まれる処理能力に応じて、表が移動されるべきであることを確定することを含み、
前記確定に応答して前記移動が実行される、付記６に記載の方法。
９．前記移動が、
前記他の環境におけるデータベースインスタンスで表を作成することと、
指定された環境において表の瞬時状態を抜き出すことと、
他の環境における前記データベースインスタンスで表に瞬時状態を複写することと、を含む、付記６に記載の方法。
１０．前記瞬時状態を抜き出すことが、キー値記憶システム内に瞬時状態を記憶することを含み、
前記表に瞬時状態を複写することが、キー値記憶システムから瞬時状態を取り出すことを含む、付記９に記載の方法。
１１．表を作成する要求は、表が複数テナント環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
表を作成する要求が、表を目標に定めるデータベース操作を実行する要求を受信または処理するための所望の処理能力をさらに指定する、付記６に記載の方法。
１２．表を作成する要求は、表が複数テナント環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
前記１つ以上の要求を受信及び処理することが、１つ以上の要求の各々を処理するべきであるかを判定するために１つ以上の認証または計測機構を用いることを含む、付記６に記載の方法。
１３．表を作成する要求は、表が単一テナント環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
前記１つ以上の要求を受信及び処理することが、複数テナント環境において用いられる１つ以上の認証または計測機構を用いることを省略することを含む、付記６に記載の方法。
１４．表を作成する要求は、表が単一テナント環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
前記１つ以上の要求を受信及び処理することが、表に対して事前に定められた処理能力限界を超える少なくともいくつかの要求を受容及び処理することを含む、付記６に記載の方法。
１５．前記表を作成する要求を受信することが、データベースサービスクライアントに代わって表を作成する要求を受信することを含み、１つ以上の他の表は、クライアントに代わって所与の環境において作成されており、
前記移動が、表を移動させ、１つ以上の他の表を移動させないことを含む、付記６に記載の方法。
１６．表を作成する要求は、表が単一テナント環境におけるデータベースインスタンスで作成されるべきであることを指定しており、
方法がさらに、
単一テナント環境においてデータベースインスタンスまたは表に対する接続情報の要求を受信することと、
それを通じて表への接続が設定され得る、ＩＰアドレスを戻すことと、を含む、付記６に記載の方法。
１７．前記１つ以上の要求を受信及び処理することが、要求を受信し、クライアントと戻されたＩＰアドレスとの間に設定された直接接続を通じて応答を戻すことを含む、付記１６に記載の方法。
１８．記憶容量に対する需要または表に対する処理能力の変化に応答して、応答表内で表を拡大または縮小することをさらに含む、付記１６に記載の方法。
１９．１つ以上のコンピュータ上で実行されるときに、
データベース表を作成する要求を受信することと、
前記受信に応答して、単一テナント環境におけるデータベースインスタンスでデータベース表を作成することと、
データベース表にアクセスする１つ以上の要求を受信及び処理することと、
要求を受信または処理するための観測される、予想される、または望まれる処理能力に応じて、データベース表が複数テナント環境におけるデータベースインスタンスに移動されるべきであることを確定することと、
前記確定に応答して、複数テナント環境におけるデータベースインスタンスにデータベース表を移動させることと、を前記１つ以上のコンピュータに実行させるプログラム命令を記憶する、非一過性コンピュータ読出可能記憶媒体。
２０．前記表を作成する要求を受信することが、アプリケーションプログラミングインターフェースにより定義される要求メッセージを受信することを含み、
アプリケーションプログラミングインターフェースが、複数テナント環境におけるデータベースインスタンスと単一テナント環境におけるデータベースインスタンスとの間で共通する機能性を呼び出す要求メッセージを定義する、付記１９に記載の非一過性コンピュータ読出可能記憶媒体。
２１．前記表を作成する要求を受信することが、グラフィックユーザインターフェースを通じて要求メッセージを受信することを含み、
グラフィックユーザインターフェースが、複数テナント環境におけるデータベースインスタンスと単一テナント環境におけるデータベースインスタンスとの間で共通する機能性を表出させる、付記１９に記載の非一過性コンピュータ読出可能記憶媒体。
２２．１つ以上のコンピュータと、
プログラム命令を記憶するメモリと、を備えるシステムであって、前記プログラム命令が、１つ以上のコンピュータ上で実行されるときに、
データベース表を作成する要求を受信することと、
前記受信に応答して、複数テナント環境におけるデータベースインスタンスでデータベース表を作成することと、
データベース表にアクセスする１つ以上の要求を受信及び処理することと、
要求を受信または処理するための観測される、予想される、または望まれる処理能力に応じて、データベース表の少なくとも一部が、単一テナント環境においてデータベースインスタンスに移動されるべきであることを確定することと、
前記確定に応答して、単一テナント環境においてデータベースインスタンスにデータベース表の前記少なくとも一部を移動させることと、を１つ以上のコンピュータに実行させる、システム。
２３．前記確定は、データベース表の少なくとも一部が、複数テナント環境においてデータベース表に対して対処され得る処理能力よりも高い処理能力を被っているまたは被ると予想されることを確定することを含み、
前記データベース表の前記少なくとも一部を移動させることが、
データベース表の少なくとも一部の瞬時状態を抜き出すことと、
単一テナント環境におけるデータベースインスタンスでデータベース表のその少なくとも一部に対して新たな表を作成することと、を含む、付記２２に記載のシステム。
２４．１つ以上のコンピュータ上で実行されるときに、プログラム命令がさらに、
前記移動に続いて、新たな表を目標に定める要求を受信または処理するための観測される、予想される、または望まれる処理能力の変化に応答して、複数テナント環境においてデータベースインスタンスに新たな表を移動させることを１つ以上のコンピュータに実行させる、付記２２に記載のシステム。
【００７４】
上の実施形態はかなり詳細に記述されているが、上記の開示が完全に理解された後に、数多くの変更及び修正が当業者に明らかになるであろう。以下の特許請求の範囲が、全てのそのような変更及び修正を含むと解釈されることが意図される。
【図１】
0006521324.tif 000002
【図２】
0006521324.tif 000003
【図３】
0006521324.tif 000004
【図４Ａ】
0006521324.tif 000005
【図４Ｂ】
0006521324.tif 000006
【図４Ｃ】
0006521324.tif 000007
【図５】
0006521324.tif 000008
【図６】
0006521324.tif 000009
【図７】
0006521324.tif 000010
【図８】
0006521324.tif 000011
【図９】
0006521324.tif 000012
【図１０】
0006521324.tif 000013
【図１１】
0006521324.tif 000014