【文献】
中田 敦,最新のクラウド技術を解剖する設計者が明かす基盤の実像,日経コンピュータ,日本,日経BP社,2010年 9月 1日,第764号,p.68−73
【文献】
萩原 正義,クラウドの設計セオリー,日経SYSTEMS,日本,日経BP社,2010年11月26日,第212号,p.99−103
(58)【調査した分野】(Int.Cl.,DB名)
顧客スキーマが前記取得されるデータの1つ以上の位置を記述し、前記顧客スキーマは前記非リレーショナルデータストア内若しくは前記リレーショナルデータストア内に存在する又は前記非リレーショナルデータストア及び前記リレーショナルデータストアの双方から利用可能である前記データの前記複数のデータ要素の各々を特定し、
前記方法は、前記ホストシステムを介して、前記要求の受信に応答して前記顧客スキーマを取得するステップを更に含む、請求項1に記載の方法。
前記マルチテナントデータベースシステムに対して前記データベースクエリを実行するステップは、前記リレーショナルデータストア及び前記非リレーショナルデータストアの双方に記憶されたデータ要素を参照することを含む、請求項1に記載の方法。
前記マルチテナントデータベースシステムにおいて複数の新しいトランザクションを受信するステップであって、前記新しいトランザクションの各々は前記非リレーショナルデータストアに書き込まれる新しいデータを特定するステップと、
前記リレーショナルデータストアの追加ログに前記新しいデータを書き込むステップと
を更に含み、決定されたデータデルタに基づいて前記リレーショナルデータストア内に存在する前記1つ以上の他のデータ要素を取得する第5のサブクエリは、前記リレーショナルデータストアの前記追加ログから前記リレーショナルデータストア内に存在する前記1つ以上の他のデータ要素を取得する第5のサブクエリを含む、請求項7に記載の方法。
前記追加ログがフラッシュ閾値に到達すると、前記リレーショナルデータストアの前記追加ログに書き込まれた前記新しいデータを前記非リレーショナルデータストアにフラッシュすることを更に含む、請求項9に記載の方法。
前記非リレーショナルデータストア内に存在する前記1つ以上のデータ要素は、複数の圧縮フラットファイル若しくは複数のバイナリファイル又は前記圧縮フラットファイル及び前記バイナリファイルの組み合わせを含む、請求項1に記載の方法。
前記リレーショナルデータストアは、リレーショナルデータベース管理システム(RDBMS)に従って実装されるリレーショナルデータベースを含み、前記リレーショナルデータベースの複数の関連テーブルは、前記リレーショナルデータベース内の2つ以上の関連テーブルの各々に対して1つ以上の重複する共通の特徴を介して相互に関連付けされる、請求項1に記載の方法。
前記非リレーショナルデータストアは、各々が前記非リレーショナルデータストアに総記憶容量の少なくとも一部を提供する複数の基本ハードウェア記憶装置を有する分散構造型データベースを含み、前記非リレーショナルデータストア内のデータ要素は、主キーに基づいて参照可能であるが、2つ以上の関連テーブルの間の1つ以上の重複する共通の特徴に基づいて参照可能ではない、請求項1に記載の方法。
前記リレーショナルデータストアは、Oracle互換データベースの実装、IBM DB2 Enterprise Server互換リレーショナルデータベースの実装、MySQL互換リレーショナルデータベースの実装、及びMicrosoft SQL Server互換リレーショナルデータベースの実装を含むグループから選択されるリレーショナルデータベースの実装を含み、
前記非リレーショナルデータストアは、Vampire互換非リレーショナルデータベースの実装、Apache Cassandra互換非リレーショナルデータベースの実装、BigTable互換非リレーショナルデータベースの実装、及びHBase互換非リレーショナルデータベースの実装を含むグループから選択されるNoSQL非リレーショナルデータベースの実装を含む、請求項1に記載の方法。
前記マルチテナントデータベースシステムのインターフェースを介して前記要求を受信するステップは、前記マルチテナントデータベースシステムのウェブサーバを介して前記要求を受信することを含み、前記ウェブサーバは、前記要求の起点となる遠隔に設置されたエンドユーザクライアントマシンとのウェブベースインターフェースを提供し、
前記要求は、前記マルチテナントデータベースシステムに関するホスト組織内で動作する前記マルチテナントデータベースシステムからのサービスに対する要求を含む、請求項1に記載の方法。
前記マルチテナントデータベースシステムは、複数の離れた別個の顧客組織によって共有されるハードウェア及びソフトウェアの要素を更に含み、前記離れた別個の顧客組織の各々は前記マルチテナントデータベースシステムが実行されるホスト組織から遠隔に設置される、請求項1に記載の方法。
前記非リレーショナルデータストアは複数の分散型コンピュータノードを含み、各コンピュータノードは少なくとも1つのメモリ、1つ以上のプロセッサ及び1つ以上の通信可能にインターフェース接続されたハードディスクドライブを備え、前記分散型コンピュータノードの各々は、中央トランザクション局からの承認又は制御無しで非リレーショナルデータベーストランザクションを読み取り、書き込み、及び更新する機能を有する分離した非リレーショナルデータベースインスタンスを含み、
前記リレーショナルデータストアは、モノリシックリレーショナルデータベースインスタンスへの更新又は変更が前記モノリシックリレーショナルデータベースインスタンスに通信可能にインターフェース接続され且つ制御される持続的記憶装置に対する持続的記憶にコミットされるかどうかを制御する中央トランザクション局と計算リソースを調整するプロセッサ及びメモリを含むモノリシックリレーショナルデータベースインスタンスを含む、請求項1に記載の方法。
【発明を実施するための形態】
【0010】
本明細書にはマルチテナントストアで横断的ストア結合を実行するシステム、装置、及び方法が記載される。一実施形態では、このような方法は、リレーショナルデータストア及び非リレーショナルデータストアを有するマルチテナントデータベースシステムからデータを取得することを含む。例えば、このような方法では、マルチテナントデータベースシステムに関するホストシステムは、マルチテナントデータベースシステムから取得されるデータを特定する要求を受信し、要求に基づいて、ホストシステムを介して取得されるデータの1つ以上の位置を取得し、ホストシステムにおいて、要求に基づいて取得される複数のデータ要素を特定するデータベースクエリを生成し、複数のデータ要素は非リレーショナルデータストア内に存在する1つ以上のデータ要素及びリレーショナルデータストア内に存在する1つ以上の他のデータ要素を含み、データを取得するためにマルチテナントデータベースシステムに対してデータベースクエリを実行する。
【0011】
1つより多くのデータベースを検索又は参照する連合クエリは、異なるデータストアに記憶されたテーブル間の結合動作を要求すること等によって、特にデータベースの最下行レベルでデータを参照する場合に、著しく非効率的である。その理由は、この動作は非常に多くのネットワーク帯域幅を消費するので、このような結合動作はうまくスケールせず、より大きなデータベースの実装で実行できるように実装できないからである。このような結合動作の課題は、例えば、リレーショナルデータベースの実装と非リレーショナルデータベースの実装との結合等、分散モデルで動作するデータベースの複数の実装間でデータ結合を要求する場合に更に悪化する。本明細書に記載の手法は、より大きなデータベースシステムで実行できるように実装可能なように、特に、リレーショナル及び非リレーショナルモデル等の分散動作モデルで動作する複数のデータストアの実装を利用するシステムで実行できるように実装可能なように、このような結合動作を実行する能力を促進する。
【0012】
例えば、本明細書に記載の手法を用いて、結合動作は、非リレーショナルデータベースに記憶されたオブジェクトに対する非リレーショナルデータベースクエリを開始することによって実行されてもよく、ここでは1つ以上の外部キーペアレントがOracle
TM等のリレーショナル型データベースの実装で記憶されるオブジェクトである。例えば非リレーショナルデータベースに記憶されたオブジェクトが非リレーショナルデータベースの実装に存在すると共にOracle
TMに記憶されたオブジェクトがリレーショナルデータベースの実装に存在するにもかかわらず、非リレーショナルデータベースに記憶されたチャイルドテーブルは、マスターテーブルとしてOracle
TMに記憶された“Account”テーブルを有してもよい。
【0013】
以下の記載では、様々な実施形態の十分な理解を提供するために、多くの特定の詳細が特定のシステム、言語、コンポーネント等の例として説明される。しかしながら、特定の詳細は開示の実施形態を実施するために用いられる必要がないことが当業者には明らかであろう。他の例では、開示の実施形態を不必要に分かりにくくするのを避けるために、周知の材料又は方法は詳細には記載されていない。
【0014】
図面に描かれた及び本明細書に記載された様々なハードウェア要素に加えて、実施形態は以下に記載の様々な動作を更に含む。このような実施形態に従って記載された動作は、ハードウェア要素によって実行され、又は命令と共にプログラミングされた汎用若しくは専用プロセッサに動作を実行させるために使用可能な機械実行可能命令で具現化されてもよい。代替的に、動作はハードウェア及びソフトウェアの組み合わせによって実行されてもよい。
【0015】
実施形態は、本明細書に記載の動作を実行するためのシステム又は装置にも関する。開示のシステム又は装置は、要求された目的で特別に構築されてもよく、又はコンピュータに記憶されたコンピュータプログラムによって選択的に起動又は再構成される汎用コンピュータを含んでもよい。このようなコンピュータプログラムは、限定されないが、フロッピー(登録商標)ディスク、光学ディスク、CD−ROM及び磁気光学ディスクを含む任意の種類のディスク、ROM(read−only memory)、RAM(random access memory)、各々がコンピュータシステムバスに結合されるEPROM、EEPROM、磁気若しくは光学カード又は一時的でない電子命令を記憶するのに適した任意の種類の媒体等の一時的でないコンピュータ可読記憶媒体に記憶されてもよい。一実施形態では、命令が記憶されたコンピュータ可読記憶媒体は、マルチテナントデータベース環境内の1つ以上のプロセッサに本明細書に記載の方法及び動作を実行させる。別の実施形態では、このような方法及び動作を実行するための命令は、後で実行するために一時的でないコンピュータ可読媒体に記憶される。
【0016】
本明細書に提示されるアルゴリズム及びディスプレイは、本質的に特定のコンピュータ又は他の装置に関連せず、特定のプログラミング言語を参照して記載された実施形態でもない。様々なプログラミング言語が本明細書に開示された実施形態の教示を実装するために利用可能なことが理解されるであろう。
【0017】
図1は、実施形態が動作可能な例示的なアーキテクチャ100を示す。アーキテクチャ100は、ネットワーク125を介して複数の顧客組織(105A、105B及び105C)と通信可能にインターフェース接続されたホストシステム110を表す。ホストシステム110内でデータベース機能及びコード実行環境を実装する複数の基本ハードウェア、ソフトウェア及び論理要素120を有するマルチテナントデータベースシステム130がホストシステム110内にあり、マルチテナントデータベースシステム130のハードウェア、ソフトウェア及び論理要素120は、ネットワーク125を介してホストシステム110に通信可能にインターフェース接続することによりホストシステム110によって提供されるサービスを利用する複数の顧客組織(105A、105B及び105C)とは離れており別個である。このような実施形態では、離れた別個の顧客組織(105A−105C)の各々は、マルチテナントデータベースシステム130が実行されるホストシステム110を介して顧客組織(105A−105C)にサービスを提供するホスト組織から遠く離れて設置されてもよい。代替的に、1つ以上の顧客組織105A−105Cが、基本データが持続的に記憶されるマルチテナントデータベースシステム130を提供する同一のホスト組織内等、ホストシステム110と共同設置されてもよい。
【0018】
一実施形態では、マルチテナントデータベースシステム130のハードウェア、ソフトウェア及び論理要素120は少なくとも非リレーショナルデータストア150及びリレーショナルデータストア155を含み、これらはホストシステム110内でデータベース機能及びコード実行環境を実装するハードウェア、ソフトウェア及び論理要素120に従って動作する。ホストシステム110は、ネットワークを介して複数の顧客組織105A−105Cの1つ以上から要求115を更に受信してもよい。例えば、着信要求115は、マルチテナントデータベースシステム130内の顧客組織105A−Cの1つのためにサービスに対する要求又はデータを取得若しくは記憶する要求に対応してもよい。
【0019】
図2は、実施形態が動作可能な代替の例示的なアーキテクチャ200を示す。一実施形態では、ホストシステム110は、リレーショナルデータストア155及び非リレーショナルデータストア150を有するマルチテナントデータベースシステム130からデータを取得する方法を実装する。
【0020】
例えば、このような実施形態では、ホストシステム110でマルチテナントデータベースシステム130に対する要求115が受信される。この要求115はマルチテナントデータベースシステム130から取得されるデータ218を特定する。一部の実施形態では、ホストシステム110内で動作する別個のウェブサーバ210がネットワーク125を介して着信要求115を受信する。例えば、ウェブサーバ210は、ネットワーク125を介して様々な顧客組織105A−Cから要求115を受信することを担当する。ウェブサーバ210は、要求115の起点となるエンドユーザクライアントマシン(例えば、顧客組織105A−C内に設置されるエンドユーザ装置等)とのウェブベースインターフェースを提供してもよい。この要求115は、例えば、遠隔に実装されたクラウドコンピュータサービスを提供するホストシステム110等のホスト組織内で動作するマルチテナントデータベースシステム130からのサービスに対する要求を構成する。また、最適化エージェント245が所定の実施形態に従って事前クエリを展開すること及びデータクエリを最適化すること等の追加の機能を提供してもよい。
【0021】
一実施形態では、ホストシステム110は、要求115に基づいて、取得されるデータ218の1つ以上の位置216を取得する。一実施形態では、顧客スキーマ240が取得されるデータ218の1つ以上の位置216を記述する。ここで、顧客スキーマ240は、非リレーショナルデータストア150内若しくはリレーショナルデータストア155内に存在する又は非リレーショナルデータストア150及びリレーショナルデータストア155の双方から利用可能である取得されるデータ218の複数のデータ要素の各々を特定する。一実施形態では、ホストシステム110は要求115の受信に応答して顧客スキーマ240を取得する。代替的に、ホストシステム110は、顧客スキーマ240から取得されるデータ218の1つ以上の位置216を取得する。
【0022】
例えば、特定の実施形態において、取得されるデータ218の1つ以上の位置216は、取得されるデータ218を構成する複数のデータ要素の各々がマルチテナントデータベースシステム内のどこに設置されているかを特定する顧客スキーマ240に記憶され及びこれから取得される。このような顧客スキーマ240は、例えば、上記マルチテナント記憶能力を実装又は提供するホストシステム110の様々な要素に高速で効率的なアクセスを提供するグローバルキャッシュレイヤを介してアクセス可能であってもよい。代替的な実施形態では、取得されるデータ218の1つ以上の位置216は、ホストシステム110によって、最適化エージェント245によって、ホストシステム110のクエリレイヤ260によって、又は描かれている非リレーショナルデータストア150及びリレーショナルデータストア155に散在する複数のデータ要素を有するデータ218等、分散データベースの実装に散在するマルチテナントデータベースシステム130から取得されるデータ218の位置216を決定することに関与するホストシステム110の他の要素によって顧客スキーマ240から取得されてもよい。
【0023】
一実施形態では、ホストシステム110は、要求115に基づいてデータベースクエリ217を生成する。ここで、データベースクエリ217は、取得される複数のデータ要素であって、非リレーショナルデータストア150内に存在する1つ以上のデータ要素及びリレーショナルデータストア155内に存在する1つ以上の他のデータ要素を含む複数のデータ要素を特定する。特定の実施形態では、データベースクエリ217は、取得されるデータ218の取得される1つ以上の位置216に更に基づく。このようなデータベースクエリ217は、クエリレイヤ260又は最適化エージェント245等のホストシステム110のサブシステムによって生成するためにホストシステム110によって更に生成又は代理されてもよい。
【0024】
一実施形態では、ホストシステム110は、マルチテナントデータベースシステム130に対して生成されたデータベースクエリ217を実行して、
図2によって描かれているようなデータ218を取得する。ここで、マルチテナントデータベースシステム130の複数の基本ハードウェア、ソフトウェア及び論理要素120に向かう下向き矢印は、マルチテナントデータベースシステム130の実装機能に渡されるデータベースクエリ217を描く。また、上向きに曲がった矢印によって描かれるマルチテナントデータベースシステムによって応答して戻されるデータ218は、分散データストア、非リレーショナルデータストア150及びリレーショナルデータストア155の各々を起点とする複数のデータ要素をホストシステム110に返信する。
【0025】
一実施形態では、データベースクエリ217は複数のサブクエリを含む。このような実施形態では、複数のサブクエリの中の少なくとも1つは、非リレーショナルデータストア150内に存在する1つ以上のデータ要素を非リレーショナルデータストア150から取得するために行われる。また、複数のサブクエリの中の少なくとも第2のサブクエリは、リレーショナルデータストア155内に存在する1つ以上の他のデータ要素をリレーショナルデータストア155から取得するために行われる。例えば、「非リレーショナルデータストアからデータ要素‘a’を取得」(例えば、150)及び「リレーショナルデータストアからデータ要素‘b’を取得」(例えば、155)等の複数のサブクエリ列並びに一般的なSQL(Structured Query Language)型のクエリを反映して「select ‘x’ from ‘y’ where ‘z’」を記述する別のサブクエリ列が、データベースクエリ217の拡大図内に
図2によって描かれる。このようなクエリは、選択された実装クエリ言語又は文法に依存して基本データストア(例えば、150及び155)にクエリを行うのに適切であってもよく、又はそうでなくてもよい。
【0026】
従って、このような実施形態に従って、マルチテナントデータベースシステム130に対してデータベースクエリ217を実行することは、必要なデータ218を取得するようにリレーショナルデータストア155及び非リレーショナルデータストア150の双方に記憶されたデータ要素を参照することを含む。
【0027】
図3は、実施形態が動作可能な代替の例示的なアーキテクチャ300を示す。特に、所定の実施形態に従ってデータベースクエリ217により特定される結合動作が更に描かれる。
【0028】
例えば、一実施形態によれば、結合動作305はデータベースクエリ217によって特定される。
【0029】
特定の実施形態では、結合動作305は複数のサブクエリを含む。例えば、このような実施形態では、第1のサブクエリ306が非リレーショナルデータストア150に対して実行されて、非リレーショナルデータストア150内に存在する1つ以上のデータ要素を識別する。これは非リレーショナルデータストア150への湾曲した破線の矢印によって描かれている。
【0030】
このような実施形態では、第2のサブクエリ307がリレーショナルデータストア155に対して実行されて、非リレーショナルデータストア150内に存在する1つ以上のデータ要素を識別する第1のサブクエリとリレーショナルデータストア155内に存在する1つ以上の他のデータ要素との間のデータデルタ310を決定する。
【0031】
この実施形態では、第3のサブクエリ308がリレーショナルデータストア155及び非リレーショナルデータストア150に対して実行される。第3のサブクエリはリレーショナルデータストア155から非リレーショナルデータストア150へと決定されたデータデルタ310に対応するデータを複製する。例えば、このような第3のサブクエリ308は、リレーショナルデータストア155内に存在する1つ以上の他のデータ要素を取得して、例えば、一時テーブル、ファイルに入れ、データを一時的にキャッシュ等してもよい。その後、このような第3のサブクエリ308は、非リレーショナルデータストア150に対してデータデルタ310に対応する取得データの挿入又は書き込みコマンドを発行して、非リレーショナルデータストア150にデータデルタ310のデータを書き込み、記憶し、又は挿入する。このようにして、複製を終了して、更にリレーショナルデータストア155に存在していたが以前に利用できなかったデータ要素を今度は非リレーショナルデータストア150から利用可能にする。
図3の破線を参照すると、リレーショナルデータストア155から非リレーショナルデータストア150に識別されたデータデルタ310を複製するために、両データストア(リレーショナルデータストア155及び非リレーショナルデータストア150)に対して実行される第3のサブクエリが描かれている。
【0032】
一方のデータストアから他方のデータストアにデータを複製又は同期するための決定は、様々な考慮事項に基づいてもよい。例えば、リレーショナルデータストア155から非リレーショナルデータストア150に複製するための決定は、初期の場所からの小さなデータセットをより大きなデータセットを有する場所に複製するための決定又はポリシーに基づいてもよい。例えば、要求されたデータの一部である1つ以上のデータ要素は、リレーショナルデータストア155から非リレーショナルデータストア150の複製を行うためにネットワーク帯域幅の観点からその逆よりも効果的であってもよい。
【0033】
一部の実施形態では、その反対も同様に当てはまり、データの複製は、非リレーショナルデータストア150からリレーショナルデータストア155へと反対方向に行ってもよい。このような決定は、例えば、最適化エージェント245によって実行され又は行われてもよい。非リレーショナルデータベースの実装(例えば、150)を用いる特定の実施形態では、リレーショナルデータベース型のオブジェクトがリレーショナルデータストア155(例えば、Oracle
TM)に記憶され、結合動作305を特定する1つのサブクエリを介して非リレーショナルデータストア150に複製される。その後、複製によって非リレーショナルデータストア150から全ての必要なデータが利用可能になるので、データ取得動作を特定する別のサブクエリが非リレーショナルデータストア150から全ての必要なデータを引き出してもよい。それにもかかわらず、このような例では、データの少なくとも一部は持続的に記憶されており、最初はリレーショナルデータストア155(例えば、Oracle
TM)からのみ利用可能である。
【0034】
他の複製の決定及び考慮事項は、最適化エージェント245によって同様に考慮及び実装されてもよい。例えば、1つの複製ポリシーは、複製されたデータが常に同期されているか同期されることを保証されているかどうか、又は一部の逸脱が許容可能なリスクであるかどうか等、複製動作が提供する一貫性保証に基づいてもよい。
【0035】
非リレーショナルデータストア150から10億個のチャイルド行がクエリを行われ得るように、リレーショナルデータストア155から非リレーショナルデータストア150への1千万“Account” テーブルの複製を要求する複製動作を例にする。このような例では、非リレーショナルデータベースのクエリエンジンが、Oracle
TM(例えば、リレーショナル)データを取得するためにJDBC(Java(登録商標) Database Connectivity)を介して大量のコールアウトを行うために利用されてもよい。このような例では、Oracle
TMRAC(Oracle Real Application Cluster)が利用されてもよい。又は、一貫性保証が重要な考慮事項であり、非常に大きなデータの複製が開始されているOracle
TM11gデータガードに基づく保証機構が必要な一貫性を提供するために利用されてもよい。データの着信要求に対して応答性のオンザフライでクエリ時にこのようにすることは着信要求への応答又は充足に際し許容できない長い遅延を必要とする場合があるので、このような大きな複製は最も適切には前もって行われてもよい。
【0036】
逆に、小テーブルと対応する少ないデータ転送を例にする。このような例では、現在のデータを有するリレーショナルデータストア155(例えば、Oracle
TM)内に存在する1つ又は複数の小テーブルの全内容が、例えば、そのデータの少なくとも一部が小テーブル内に存在し且つリレーショナルデータストア155(例えば、Oracle
TM)によって持続的に記憶されるデータに対する着信要求に応答して、クエリ時に非リレーショナルデータストア150に複製されてもよい。このようなポリシーは、例えば、最適化エージェント245によって決定されるこの種のクエリ及び複製の固定コストが重大ではない大規模解析に適切であってもよい。
【0037】
別の考慮事項は、例えば、特定の組織ごとに関連付けられるテーブル又はオブジェクトのサイズに依存するOrgIDベースによるOrgIDに関してもよい。例えば、中規模から大規模の組織に対応するデータ(例えば、既定のサイズ閾値に基づく)が前もって複製されるポリシーが採用されてもよい。一実施形態では、事前複製は、非リレーショナルデータストア150内の事前複製テーブル(例えば、事前複製が選択されている)等、リレーショナルデータストア155内の特定のオブジェクトへの変更を補足して別のテーブルにこうした変更をプッシュするスキニーテーブル複製コード(skinny table replication code)を利用してもよい。
【0038】
所定の実施形態では、特定の組織が大量の変更を引き起こす場合があるので、非リレーショナルデータストア150で要求された解析が実行されることを許可しつつも、リアルタイム同期は必ずしも変更ごとに要求されず又は適切ではない。従って、このような実施形態では、特定の間隔で更新を同期するオプションが(例えば、以下で検討される最適化エージェント245及びハードウェアベースのクエリレイヤエージェント501及び734を介して)提供される。このような実施形態では、特定の間隔での更新を可能にするポリシーは、結果未決の参照及び許容可能な逸脱であり得る又は採用された複製ポリシー若しくはデータベースクエリの基本目的に依存して後続のデータチェック及び検証を要求し得る他の「乱雑なデータ(sloppy data)」にもかかわらず、より効果的な書き込み及び更新を提供する。
【0039】
複製に関する別の考慮事項は、テーブルの濃度等のデータストアの統計であってもよい。統計は、最適化エージェント245により生成され、利用可能であり、又は集められてもよい。例えば、比較的小規模な行の組が必要とされる所定の実施形態では、処理されるデータベースクエリ全体が大規模であり且つクエリが行われる行の組全体を送信することが合理的な送信コストを必要とすると決定される場合(例えば、既定のサイズ比又は固定閾値等に基づいて)、サブクエリ(例えば、306−309)がリレーショナルデータストアから155要求される行の組全体にクエリを行って、非リレーショナルデータストア150にクエリが行われた行の組全体を送信してもよい。このようなポリシーは、データの実際の要求を受信することなく事前複製又は前もって複製を行う必要性を回避してもよく、上記のデータの非一貫性の問題を更に回避してもよい。
【0040】
データをどこに持続的に記憶すべきか、そしてデータをどこから取得すべきかの考慮事項は、特定のデータストアの基本的な実装ハードウェアに更に基づいてもよい。例えば、非リレーショナルデータストア150は、例えば、ギガバイトあたりのコストを単位として費用の安い記憶装置に大規模なフラットファイル及びバイナリファイルを記憶するように最適化されてもよい。非リレーショナルデータストア(例えば、150)が圧縮フラットファイル及びバイナリファイルの大量の読み込みに最適化されており、Oracle
TM等のリレーショナルモデルのデータストア(例えば、155)とは対照的にギガバイトあたりの要求を処理するのに計算コストが余りかからないので、このような基本のハードウェア実装が可能である。Oracle
TM等のリレーショナルデータストア155は、例えば、全ての記憶されたデータに必須の解析、トランザクション処理及びロールバック機能等の企業レベルのデータ保護を実装するためのリレーショナルデータストア155の要件によりギガバイトあたりではより高価な記憶ハードウェアを必要としてもよい。データベーストランザクションが最終的に完了する前に失敗又は中断する非一貫性の状態において、実行可能にデータストアがトランザクション処理を欠いたままであり得る直接挿入モデルとは対照的に、このような企業レベルのデータ保護は、トランザクション処理を介して、故障時に特定のトランザクションの「やり直し(redo)」を行う能力を更に可能にする。
【0041】
従って、所定の実施形態では、記憶されたデータへの最近の編集が、解析、トランザクション処理及びロールバックを実装するリレーショナルデータストアによって処理及び記憶される。また、リレーショナルデータストア155に書き込まれた更新の少なくとも一部は、その後、対応するデータを持続的に記憶するギガバイト当たりのコストを減らすために、非リレーショナルデータストア150に複製、移転、処理又は移動される。このようにして、ホストシステム110は、所定のリレーショナルデータストア155に関連付けられる企業レベルデータ保護を利用すると同時に一部の非リレーショナルデータストア150を介して利用可能なあまり費用のかからない持続的記憶装置の利益を享受してもよい。
【0042】
一実施形態では、最適化エージェント245が非リレーショナルデータストア150及びリレーショナルデータストア155の双方から利用可能なデータの「ビュー」を有するので、最適化エージェント245は、データ218に対する着信要求115に対応する所定のデータ要素が1つより多くのソースから1つより多くの手法で取得され得る場合に、「選択的クエリ」をもたらすことができる。最適化エージェント245は、このような要求115を充足するために発行される複数のサブクエリの改善されたシーケンス又は順序付けを更にもたらすことができる。
【0043】
従って、所定の実施形態に従って、様々な利用可能な考慮事項を考慮すると、第4のサブクエリ309が結合動作305内に更に含まれ、非リレーショナルデータストア150に対して実行される。ここで、第4のサブクエリ309は、非リレーショナルデータストア150内に存在する1つ以上のデータ要素とリレーショナルデータストア155から非リレーショナルデータストア150に複製されることで非リレーショナルデータストア150内から利用可能な1つ以上の他のデータ要素との双方をフェッチすることにより、非リレーショナルデータストア150から取得されるデータをフェッチする。このようにして、複数のデータ要素315は、結合動作305によってトリガされたデータ複製の前に複数のデータ要素315の一部が非リレーショナルデータストア150から最初に利用可能でないにもかかわらず、非リレーショナルデータストア150等のデータストアの1つから完全に取得されてもよい。
【0044】
一部の実施形態では、要求されたデータの1つ以上のデータ要素が持続的に記憶される複数のデータストア間でデータを複製する代わりに、データを持続的に記憶するクエリを受ける2つ以上のデータストア(例えば、150及び155)の各々から離れた場所に全てのデータ要素を取得するようにポリシーが用いられてもよい。例えば、データは、クエリレイヤ260へのメモリ内結合動作を利用して取得され、又はグローバルキャッシュレイヤ(例えば、
図5の要素550)へのメモリ内結合動作を介して取得されてもよい。このようなメモリ内結合動作は、最適化エージェント245から利用可能な既知の統計に基づいて、又は特定されたサイズ閾値(例えば、行の数、サイズ(例えば、データのメガバイト数)を単位とするデータ量、要求されたデータの濃度等)に基づいて選択されてもよい。
【0045】
例えば、ホストシステム110内の既知の統計及び解析に基づいて利用可能な他の考慮事項は、例えば、要素の最大数が知られており、最大又は推定クエリコストが決定可能若しくは知られていて最適化エージェント245から利用可能である特定のクエリに対する既知の選択リスト量から導かれる特定のデータベースクエリ217又はサブクエリ(例えば、306−309)に対するクエリコストを含んでもよい。それは更に、既に行われた解析に基づいて知られ、又は複数の利用可能なデータストア(例えば、150及び155)の中で、最少量の時間で又は最小の計算リソースを利用/消費して最少数を有する結果をもたらすことができる最適化エージェント245を介して(例えば、1つ以上の事前クエリを介して)決定可能であってもよい。例えば、大きなデータベースクエリ217では、各データストア(例えば、150及び155)から必要なデータの小部分に対して事前クエリを行って、どの事前クエリがより効果的な結果をもたらすかを決定し、このような決定に基づいて、より効果的なデータストア(例えば、事前クエリの結果によって(150又は155)を目標にする一次データベースクエリ217を充足するために必要とされる様々なサブクエリ(306−309)を生成することが望ましくてもよい。最適化エージェント245によって適切な解析が前もって行われる場合、事前クエリを発行しなくても、クエリポリシーが簡単に要求されてもよい。例えば、このような解析決定が行われて、顧客スキーマ240を介して1つ以上のデータの場所に対して記憶及び特定されてもよい。
【0046】
代替的な実施形態では、異なる又は追加の結合動作305が行われてもよい。例えば、一実施形態では、データベースクエリ217を介してマルチテナントデータベースシステム130に対して実行される結合動作305は、リレーショナルデータストア155から2つ以上の関連テーブルを特定する結合動作305、リレーショナルデータストア155及び非リレーショナルデータストア150内に存在する少なくとも1つ以上のデータ構造から少なくとも1つの関連テーブルを特定する結合動作305、及び非リレーショナルデータストア150内に存在する2つ以上の離れた及び別個のデータ構造を特定する結合動作305からなる結合動作305のグループから選択される結合動作305を含んでもよい。ここで、2つ以上の離れた及び別個のデータ構造の各々は、非リレーショナルデータストア150内で2つの別個のデータ構造を関連付け又は関係付けるための共有された特徴、ストリング、バイナリ又は英数字キー等の重複した共有キーを欠いている。
【0047】
例えば、一実施形態では、非リレーショナルデータストア150は、多くのデータ構造、ファイル、オブジェクト及び他のこうした情報を記憶する能力を提供するが、このようなデータ構造、ファイル、オブジェクト及び他の情報を「関連付け」する機能を実装しない。しかしながら、2つの別個のデータ構造の各々を特定する結合動作305は、例えば、所望されるが以前に非関連付けされた全ての情報を有する単一データ構造を形成し、又は代替の場所でこのような結合動作によって特定される所望の情報を取得及び一時的にキャッシュするために、非リレーショナルデータストア150に対して適切に形成された結合動作305を実行することができるマルチテナントデータベース130内の複数の基本ハードウェア、ソフトウェア、及び論理要素120等、実装された非リレーショナルデータストア150の外部の機能及び論理に依存することにより、各々のこのようなデータ構造を識別及びリンク又は関係付けることができる。
【0048】
代替的な実施形態では、 特定された結合動作305は、非リレーショナルデータストア150に対して実行され且つ非リレーショナルデータストア内に存在する1つ以上のデータ要素を取得するための第1のサブクエリ(例えば、306)、リレーショナルデータストア155に対して実行され且つ非リレーショナルデータストア150内に存在する1つ以上のデータ要素とリレーショナルデータストア155内に存在する1つ以上の他のデータ要素との間のデータデルタ310を決定する第2のサブクエリ(例えば、307)、及びリレーショナルデータストア155に対して実行され且つ決定されたデータデルタ310に基づいてリレーショナルデータストア155内に存在する1つ以上の他のデータ要素を取得するための第3のサブクエリ(例えば、308)を含む。
【0049】
このような実施形態では、決定されたデータデルタ310に基づいてリレーショナルデータストア155内に存在する1つ以上の他のデータ要素を取得する第3のサブクエリ(例えば、308)は、時間ベースのクエリフィルタ機構又は記録ベースのフィルタ機構の何れかを含んでもよい。
【0050】
例えば、一実施形態では、時間ベースのサブクエリは、リレーショナルデータストア155に対して実行される。ここで、時間ベースのサブクエリは、非リレーショナルデータストア150内に存在する1つ以上のデータ要素内のデータ要素に対応するどのタイムスタンプよりも遅いタイムスタンプを有するリレーショナルデータストア155内のデータ要素に基づいてリレーショナルデータストア155から取得される1つ以上の他のデータ要素を特定する。
【0051】
代替的な実施形態では、記録識別子ベースのサブクエリは、リレーショナルデータストア155に対して実行される。ここで、記録ベースのサブクエリは、非リレーショナルデータストア150内に存在する1つ以上のデータ要素内のデータ要素に対応するどの記録識別子よりも数値が大きい記録識別子を有するリレーショナルデータストア155内のデータ要素に基づいてリレーショナルデータストア155から取得される1つ以上の他のデータ要素を特定する。
【0052】
図4は、実施形態が動作可能な代替の例示的なアーキテクチャ400を示す。特に、所定の実施形態に従うマルチテナントデータベースシステムによって受信される新しいトランザクションの処理が更に詳細に描かれている。
【0053】
例えば、所定の実施形態では、持続的な記憶のためにマルチテナントデータベースシステム130に書き込み又は挿入される新しい情報は、長期間にわたって非リレーショナルデータストア150に現在時に記憶されるように指定されてもよいが、それにもかかわらず一時的にリレーショナルデータストア155に書き込まれてもよい。例えば、一時的に一方のデータストア(リレーショナルデータストア155等)にデータを書き込んで、後に別のデータストア(非リレーショナルデータストア150等)にデータを移行するための考慮事項は、例えば、一方のデータストア対他方の書き込み応答時間の改善、更に代替のデータストからの取得時間の改善を含んでもよい。一方のデータストアは、より低い計算又はより低い動作コストと関連してもよい。非リレーショナルデータストア150等の特定のデータストアが、滅多に更新されないが頻繁に取得されるデータでより効果的に動作してもよい。代替的に、リレーショナルデータストア155等の他のデータストアが、著しく断片化されたデータ又は滅多に更新されないデータを有する前の例示と比較して非常に頻繁に更新され又は追加されるデータでより良好な動作効率を示してもよい。
【0054】
従って、所定の実施形態によれば、(例えば、先に描かれた要求115内の)マルチテナントデータベースシステム130において受信される新しいトランザクションは、非リレーショナルデータストア150に書き込まれる新しいデータ416を含み又は特定する。一部の実施形態では、新しいデータ416は、新しいデータ416が非リレーショナルデータストア150に書き込まれるという指示にかかわらず、リレーショナルデータストア155の追加ログ410に書き込まれる。新しいデータ416が書き込まれるというこのような指示は、新しいトランザクション415によって、例えば、新しいトランザクション415内のターゲット419の属性によって特定されてもよい。代替的に、例えば、最適化エージェント245によって決定される新しいデータ416の特徴に基づいて、又は新しいトランザクション415に対応するOrgIDと関連付けられるフラグ若しくは記憶された設定に基づいて、ホストシステム110によって決定が行われてもよい。
【0055】
一部の実施形態では、決定されたデータデルタ(例えば、310)に基づいてリレーショナルデータストア155内に存在する1つ以上の他のデータ要素を取得するためのサブクエリを含む結合動作(例えば、305)は、リレーショナルデータストア155の追加ログ410からリレーショナルデータストア155内に存在する1つ以上の他のデータ要素を取得するためのサブクエリを含む。例えば、追加ログに書き込まれた新しいデータ416が取得されてもよく、又は追加ログに記憶された新しいデータ416の要素が取得されてもよい。
【0056】
一実施形態では、ホストシステム110は、追加ログがフラッシュ閾値に到達すると、追加ログ410のフラッシュをトリガして、リレーショナルデータストア155の追加ログ410に書き込まれた新しいデータ416を非リレーショナルデータストア150にフラッシュする。その結果、例えば、新しいデータはフラッシュされたデータ417として非リレーショナルデータストアに存在し、リレーショナルデータストア155の追加ログ410に以前に存在した新しいデータ416に対応することになる。
【0057】
異なる種類のデータがマルチテナントデータベースシステム130によって記憶されてもよい。例えば、一実施形態では、非リレーショナルデータストア150内に存在する1つ以上のデータ要素は、複数の圧縮フラットファイル又は複数のバイナリファイル又は圧縮フラットファイル及びバイナリファイルの組み合わせに対応する。このようなファイルは、非リレーショナルデータベースアーキテクチャ(例えば、150)を介してより効果的に記憶されてもよい。
【0058】
別の実施形態では、リレーショナルデータストア155は、リレーショナルデータベース管理システム(RDBMS)に従うリレーショナルデータベースを実装する。ここで、リレーショナルデータベースの複数の関連テーブルは、リレーショナルデータベース内の2つ以上の関連テーブルの各々に対して1つ以上の重複する共通の特徴を介して相互に関連付けされ、これによりリレーショナル型データストア155と共通して関連付けられる「リレーションシップ」を形成する。
【0059】
一実施形態では、非リレーショナルデータストア150は、各々が非リレーショナルデータストア150に総記憶容量の少なくとも一部を提供する複数の基本ハードウェア記憶装置を有する分散構造型データベースを実装する。このような実施形態では、非リレーショナルデータストア150内のデータ要素は、主キーに基づいて参照可能であるが、リレーショナルデータストア155内のデータ要素の場合におけるように、2つ以上の関連テーブルの間の1つ以上の重複する共通の特徴に基づいて参照可能ではない。
【0060】
一実施形態では、リレーショナルデータストア155は、Oracle互換データベースの実装、IBM DB2 Enterprise Server互換リレーショナルデータベースの実装、MySQL互換リレーショナルデータベースの実装、及びMicrosoft SQL Server互換リレーショナルデータベースの実装の中から選択されるリレーショナルデータベースモデルを実装する。
【0061】
一実施形態では、非リレーショナルデータストア150は、Vampire互換非リレーショナルデータベースの実装、Apache Cassandra互換非リレーショナルデータベースの実装、BigTable互換非リレーショナルデータベースの実装、及びHBase互換非リレーショナルデータベースの実装の中から選択されるNoSQL非リレーショナルデータベースを実装する。
【0062】
一実施形態では、非リレーショナルデータストア150は、各コンピュータノードが少なくとも1つのメモリ、1つ以上のプロセッサ及び1つ以上の通信可能にインターフェース接続されたハードディスクドライブを含む複数の分散型コンピュータノードを含む。このような実施形態では、分散型コンピュータノードの各々は、中央トランザクション局からの承認又は制御無しで非リレーショナルデータベーストランザクションを読み込み、書き込み、及び更新する機能を有する分離した非リレーショナルデータベースインスタンスを更に含んでもよい。
【0063】
特定の実施形態では、リレーショナルデータストア155は、モノリシックリレーショナルデータベースインスタンス(monolithic relational database instance)への更新又は変更がモノリシックリレーショナルデータベースインスタンスに通信可能にインターフェース接続され且つ制御される持続的記憶装置に対する持続的記憶にコミットされるかどうかを制御する中央トランザクション局と計算リソースを調整するプロセッサ及びメモリを含むモノリシックリレーショナルデータベースインスタンスを実装する。
【0064】
図5は、実施形態が動作し、設置され、統合され、又は構成され得るシステム500の図表示を示す。
【0065】
一実施形態では、システム500は、メモリ595及び1つ以上のプロセッサ590を含む。例えば、メモリ595は実行される命令を記憶してもよく、プロセッサ590はこのような命令を実行してもよい。システム500は、バス515と通信可能にインターフェース接続される複数の周辺機器の間でシステム500内のトランザクション及びデータを転送するためのバス515を含む。システム500は、例えば、要求を受信し、応答を返し、顧客組織105AC内に設置されたクライアント装置等のリモートクライアントとインターフェース接続するウェブサーバ525を更に含む。
【0066】
システム500は、データベースクエリ及びデータベースサブクエリを最適化して、基本データストアにクエリを行う最適な又は好ましい手法を決定するために選択的に事前クエリを調整するように設計される最適化エージェント535を有するように更に描かれる。システム500は、通信可能にインターフェース接続された装置及びシステムにキャッシュサービスを提供し、特に、顧客スキーマデータ(例えば、メタデータ等)をキャッシュをするグローバルキャッシュレイヤ550を更に含む。顧客スキーマデータは、グローバルキャッシュレイヤ550と連動して動作可能な顧客スキーマ530によって提供され、例えば、必須データ要素がマルチテナントデータベースシステム内のリレーショナルデータベース若しくは非リレーショナルデータベースの実装又はその両方によって記憶されるかどうかを特定し、対応する要求に対するデータセットを構成する1つ以上のデータ要素に関して基本データストア内の場所を特定する。顧客スキーマ530は、システム500内のハードドライブ、持続性データストア又は他の記憶場所に記憶されてもよい。
【0067】
ハードウェアベースのクエリレイヤエージェント501はシステム500内で別個にあり、要求プロセッサ570、顧客スキーマプロセッサ575、サブクエリ生成器580及びクエリ実行器585を含む。一実施形態によれば、要求プロセッサ570は、(例えば、ウェブサーバ525から、上述のようにホストシステム110から、又は接続されたネットワークインターフェースから)取得するデータを特定する要求を受信する。要求プロセッサ570は、顧客スキーマプロセッサ575と連動して、基本データストアから取得される要求データの1つ以上の位置を取得する。要求プロセッサ570は、更にサブクエリプロセッサ580と連動して、決定された1つ以上のこのようなデータの位置に基づいて適切な基本データストアから要求された1つ以上のデータ要素を取得するために必要なサブクエリを構築及び生成し、又は一方のデータストアから他方にデータサブセットを同期、フラッシュ又は複製させる結合動作を開始するために必要なサブクエリを生成し、その結果、後続のサブクエリは1つのデータストアから要求されたデータセットを取得することができる。サブクエリ生成器580によって生成されるこのようなサブクエリは、最適化エージェント535から利用可能な統計及び事前クエリの結果に依存してもよい。クエリ実行器585は、通信可能にインターフェース接続されたデータベースの実装に対して生成されたクエリ及びサブクエリを実行する。
【0068】
図6は、一実施形態に従ってマルチテナントストアで横断的ストア結合を実行する方法600を示す流れ図であり、所定の実施形態に従ってデータベースクエリ(例えば、217)によって特定される結合動作を特定及び実行することを含む。方法600は、ハードウェア(例えば、回路、専用論理、プログラム可能論理、マイクロコード等)、ソフトウェア(例えば、読み込み、書き込み、更新、最適化、事前クエリの開始、サブクエリの開始等、又はこれらの組み合わせ等の様々なクエリ動作を行うために処理装置上で実行される命令)を含み得る論理を処理することによって実行されてもよい。一実施形態では、方法600は、
図5の要素501で描かれるハードウェアベースのクエリレイヤ等のハードウェア論理によって実行される。所定の実施形態によれば以下にリストされるブロック及び/又は動作の一部は選択的である。提示されたブロックの番号は明確のためであって、様々なブロックが行われなければならない動作の順番を規定することを意図していない。
【0069】
方法600は、ホストシステムでマルチテナントデータベースシステムに対する要求を受信する処理論理で開始する。この要求はマルチテナントデータベースシステムから取得されるデータを特定する(ブロック605)。ブロック610では、ホストシステムを介する要求に基づいて、処理論理は取得されるデータの1つ以上の位置を取得する。
【0070】
ブロック615では、ホストシステムを介して、処理論理は要求の受信に応答して顧客スキーマを取得する。例えば、顧客スキーマが取得されるデータの1つ以上の位置216を記述してもよい。ここで、顧客スキーマは、非リレーショナルデータストア内若しくはリレーショナルデータストア内に存在する又は非リレーショナルデータストア及びリレーショナルデータストアの双方から利用可能であるデータの複数のデータ要素の各々を特定する。
【0071】
ブロック620では、ホストシステムを介して、処理論理は要求に基づいてデータベースクエリを生成する。例えば、データベースクエリは、取得される複数のデータ要素であって、非リレーショナルデータストア内に存在する1つ以上のデータ要素及びリレーショナルデータストア内に存在する1つ以上の他のデータ要素を含む複数のデータ要素を特定してもよい。データベースクエリは複数のサブクエリを更に含んでもよい。一実施形態では、データベースクエリはサブクエリの1つを介して結合動作を特定する。同様に、パージ、フラッシュ、同期又は複製動作がサブクエリを介して特定されてもよい。
【0072】
ブロック625において、処理論理はデータを取得するためにマルチテナントデータベースシステムに対してデータベースクエリを実行する。
【0073】
ブロック630では、処理論理はマルチテナントデータベースシステムで新しいトランザクションを取得する。新しいトランザクションの各々は非リレーショナルデータストアに書き込まれる新しいデータを特定する。ブロック635において、処理論理はリレーショナルデータストアの追加ログに新しいデータを書き込む。例えば、一実施形態では、データベースクエリのサブクエリは、取得されるデータがリレーショナルデータストアの追加ログから取得されることを特定する。
【0074】
ブロック640では、追加ログがフラッシュ閾値に到達すると、処理論理はリレーショナルデータストアの追加ログに書き込まれた新しいデータを非リレーショナルデータストアにフラッシュする。
【0075】
図7は、コンピュータシステムの例示的形態のマシン700の図形表現を示す。一実施形態によれば、このコンピュータシステムの中で、マシン700に本明細書で検討された1つ以上の方法を実行させるために、一組の命令が実行されてもよい。代替的な実施形態では、マシンは、LAN(Local Area Network)、イントラネット、エクストラネット、又はインターネットで他のマシンと接続(例えば、ネットワーク化)されてもよい。マシンは、クライアントサーバネットワーク環境におけるサーバ又はクライアントマシンの能力で、又はピアツーピア(又は分散ネットワーク環境)におけるピアマシンとして又はマルチテナントデータベース記憶サービスを提供するオンデマンド環境を含むオンデマンドサービス環境内のサーバ若しくは一連のサーバとして動作してもよい。マシンの所定の実施形態は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブ装置、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、コンピュータシステム、又はそのマシンによって取り行われる動作を特定する一組の命令(連続的又はそれ以外)を実行することが可能な任意のマシンの形態であってもよい。更に、1つのマシンのみが示されているが、「マシン」という用語は、本明細書で検討された1つ以上の方法を実行する一組(又は複数の組)の命令を個別の又は共同で実行する複数のマシン(例えば、コンピュータ)の集合を含むようにも解釈される。
【0076】
例示的なコンピュータシステム700は、プロセッサ702、主メモリ704(例えば、ROM(read−only memory)、フラッシュメモリ、SDRAM(synchronous DRAM)若しくはRDRAM(Rambus DRAM)等のDRAM(dynamic random access memory)、フラッシュメモリ等のスタティックメモリ、SRAM(static random access memory)、揮発性であるが高データ速度のRAM等)、及び二次メモリ718(例えば、ハードディスクドライブを含む持続性記憶装置及び持続性マルチテナントデータベースの実装)を含み、これらはバス730を介して互いに通信する。主メモリ704は、(例えば、リレーショナルデータストア及び非リレーショナルデータストアの双方に散在し、ハードウェアベースのクエリレイヤエージェント734を介して取得可能なデータ要素の場所等、2つ以上の異なったデータストアの中で特定のデータ又はデータセットを構成するデータ又はデータ要素の1つ以上の位置を特定する)顧客スキーマ724を含む。主メモリ704は、顧客スキーマ724を介して提供される情報の種類等の大規模データセットの複数のデータ要素間のメタデータ及び他の関連又は対応情報を提供するために、システム全体でアクセス可能なグローバルキャッシュレイヤ等のグローバルキャッシュレイヤ723を更に含む。主メモリ704及びそのサブ要素(例えば、723及び724)は、本明細書で検討された方法を実行するために処理論理726及び702と連動して動作可能である。
【0077】
プロセッサ702は、マイクロプロセッサ又は中央処理装置等の1つ以上の汎用処理装置を表す。より詳細には、プロセッサ702は、CISC(complex instruction set computing)マイクロプロセッサ、RISC(educed instruction set computing)マイクロプロセッサ、VLIW(very long instruction word)マイクロプロセッサ、他の命令セットを実装するプロセッサ、又は命令セットの組み合わせを実装するプロセッサであってもよい。また、プロセッサ702は、ASIC(application specific integrated circuit)、FPGA(field programmable gate array)、DSP(digital signal processor)、又はネットワークプロセッサ等の1つ以上の専用処理装置であってもよい。プロセッサ702は、動作及び本明細書で検討された機能を実行するための処理論理726を実行するように構成される。
【0078】
コンピュータシステム700は、ネットワークインターフェースカード708を更に含んでもよい。また、コンピュータシステム700は、ユーザインターフェース710(ビデオディスプレイ装置、LCD(liquid crystal display)若しくはCRT(cathode ray tube)等)、英数字入力装置712(例えば、キーボード)、カーソル制御装置714(例えば、マウス)及び信号生成装置716(例えば、統合スピーカ)を含んでもよい。コンピュータシステム700は、周辺装置736(例えば、無線若しくは有線通信装置、メモリ装置、記憶装置、オーディオ処理装置、ビデオ処理装置等)を更に含んでもよい。コンピュータシステム700は、データベースクエリ及びサブクエリを管理し、マルチテナントデータベースシステム等の基本データストアとトランザクションを調整するハードウェアベースのクエリレイヤエージェント734を更に含んでもよい。
【0079】
二次メモリ718は、本明細書で検討された1つ以上の方法又は機能を具現化する1つ以上の命令の組(例えば、ソフトウェア722)が記憶される一時的でないマシン可読記憶媒体(又は、より詳細には、一時的でないマシンアクセス可能記憶媒体)731を含んでもよい。また、ソフトウェア722が、コンピュータシステム700によってその実行中に主メモリ704内に及び/又はプロセッサ702内に完全に又は少なくとも部分的に存在してもよい。ここで、主メモリ704及びプロセッサ702はマシン可読記憶媒体も構成する。更に、ソフトウェア722は、ネットワークインターフェースカード708を介してネットワーク720上で送信又は受信されてもよい。
【0080】
本明細書で検討された主題は例示として特定の実施形態に関して記載されているが、本発明の実施形態は明示的に列挙された開示の実施形態に限定されないことが理解されるべきである。それとは反対に、本開示は当業者に明白な様々な修正及び類似の構成を含むことが意図されている。従って、添付の特許請求の範囲は、全てのこのような修正及び類似の構成を包含するように最も広い解釈に一致するべきである。先の記載は例示的であり限定的ではないことが理解されるべきである。先の記載を読んで理解すると、多くの他の実施形態が当業者には明白であろう。従って、本開示の主題の範囲は、添付の請求項が享受する均等物の全範囲と共に、このような請求項を参照することで決定されるべきである。