(57)【特許請求の範囲】
【請求項１】
コンピュータ・ソフトウェアによる情報処理方法であって、
オブジェクト階層プロセッサによって、第一階層中のデータ・オブジェクトを論理的に編成するステップであって、前記第一階層中の前記データ・オブジェクトの一部が他のデータ・オブジェクトの組分けを論理的に含む、前記論理的に編成するステップと、
前記オブジェクト階層プロセッサによって、第二階層中の２つ以上の種類のメモリにまたがって前記データ・オブジェクトを物理的に編成するステップであって、前記第二階層中の前記データ・オブジェクトの一部は、他のデータ・オブジェクトの組分けを物理的に含む、前記物理的に編成するステップと、
前記２つ以上の種類のメモリをまたがって、前記第二階層中の前記データ・オブジェクトの組分けを動的に移動するステップと、
前記第一階層中の前記データ・オブジェクトの組分けを、前記データ・オブジェクトの各組分け中の前記データ・オブジェクトの総計アクセス頻度および前記データ・オブジェクトへのアクセス者の現在数を含むメタデータ情報上にマップする、データ構造体を用いて、前記データ・オブジェクトのアクセスのレベルを追跡するステップであって、前記データ構造体は、前記データ・オブジェクトの各組分けにおいて、データの各列に対して、メモリ・ページへのポインタ（pagePTR）と開始タプルシーケンス番号（startTSN）の配列を含み、ここでstartTSNはデータの特定の列の各メモリページの開始のタプルシーケンス番号であるTSN、pagePTRは前記第一階層と前記第二階層を横断するポインタであり、前記データ構造体は、前記データの各列の参照カウントと、前記データの行へのすべてのアクティブな参照を記録するグローバル参照カウントとを含む、ステップと、
を含む方法。
【請求項２】
移動の対象となるデータ・オブジェクトの前記組分けとオーバーラップする、前記第一階層中の前記データ・オブジェクト組分けのアクセスの前記追跡されたレベルに基づいて、前記データ・オブジェクトの各組分けを移動するかどうかを判定するステップ、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第二階層が、メモリ・ページを含み、前記第一階層が、データ・レコード、前記データ・レコードのシーケンス、および個別値を含む、請求項２に記載の方法。
【請求項４】
アクセス頻度の低いデータ・オブジェクトは、より低速の種類のメモリに移動され、前記メモリの種類は、スタティックＲＡＭ、ダイナミックＲＡＭ、ハード・ディスク、およびソリッド・ステート・ディスクを含む、請求項１に記載の方法。
【請求項５】
特定のデータ・オブジェクトを移動する前に、前記特定のデータ・オブジェクトにオーバーラップするデータ・オブジェクトの全ての組分けに対し、アクセス者の現在数がゼロであるかどうか、アクセス情報の追跡されたレベルを用いて検証が行われ、データ・オブジェクトを移動するとの決定は、所定の最少直近アクセス・タイムに基づく、請求項４に記載の方法。
【請求項６】
前記データ・レコードのシーケンスにおける前記データ・オブジェクトの配置はTSNによって示され、前記メタデータ情報にはデータ・オブジェクトの組分けを保持する1つ以上のメモリ・ページのアドレスが含まれており、ここで前記ページへのポインタは、メモリ階層全体のポインタの結合で構成されている、請求項３に記載の方法。
【請求項７】
追加のデータ・オブジェクトを加えるオペレーションの実行に際し、１つ以上のメモリ・ページが、前記追加のデータ・オブジェクトを保持するための必要に応じて割り当てられ、前記割り当てられたメモリ・ページが、前記第二階層中の組分けへの前記データ・オブジェクトの割り振りを定め、前記追加のデータ・オブジェクトは、前記第一階層中の１つ以上の組分けにも割り振られる、請求項６に記載の方法。
【請求項８】
請求項１ないし７の何れか１項に記載の方法の各ステップを、コンピュータに実行させる、コンピュータ・プログラム。
【請求項９】
請求項８に記載の前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【請求項１０】
請求項１ないし７の何れか１項に記載の方法の各ステップを実行するように構成された、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の諸実施形態は、カラム・ストアにおける効率的挿入およびポイント・クエリ・オペレーションに関するものであり、具体的には、データ・オブジェクトのサブセットのアクセスのレベルの追跡に基づいて、２つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動することに関する。
【背景技術】
【０００２】
データベースまたは表データ中のリアルタイムのデータへのビジネス・インテリジェンス（ＢＩ：ｂｕｓｉｎｅｓｓ  ｉｎｔｅｌｌｉｇｅｎｃｅ  ）クエリを行う傾向が増えている。慣例的に、ＢＩシステムとオンライン・トランザクション処理（ＯＬＴＰ：ｏｎｌｉｎｅ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ）システムとの間は厳しく分離される。業務用ＢＩと、トランザクションおよび分析処理の双方とを同じデータベース上で実施することへの市場圧力が増大している。ＢＩに対しては、カラム優先のレイアウトにデータを配列する傾向がある。これは、より良好なクエリ・パフォーマンス、より良好なバッファ・プール利用率、および多少より良好な圧縮度を提供する。ＯＬＴＰデータは、慣例的に行優先のレイアウトに配列される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、ＯＬＴＰ作業負荷が、より良好なバッファ・プール利用率および圧縮度に所以してカラム優先レイアウトから益を得るポイント・クエリに大勢的に依存しているとしても、カラム優先は、ディスク上のＯＬＴＰ作業負荷がメモリ中のＯＬＴＰ作業負荷に転ずる可能性がある。
【課題を解決するための手段】
【０００４】
本発明の諸実施形態は、データ・オブジェクトのセットのアクセスのレベルの追跡に基づいて、２つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動することに関する。一実施形態は、オブジェクト階層プロセッサによって、データ・オブジェクトを第一階層に論理的に編成する方法を含む。第一階層中のデータ・オブジェクトの一部は、他のデータ・オブジェクトの組分けを論理的に含む。オブジェクト階層プロセッサは、第二階層中の２つ以上の種類のメモリにまたがってデータ・オブジェクトを物理的に編成する。第二階層中のデータ・オブジェクトの別の部分は、他のデータ・オブジェクトの組分けを物理的に含む。第二階層中のデータ・オブジェクトの組分けは、２つ以上の種類のメモリにまたがって動的に移動される。データ・オブジェクトのアクセスのレベルが、第一階層中のデータ・オブジェクトの組分けを、データ・オブジェクトの各組分け中の、データ・オブジェクトの総計アクセス頻度およびデータ・オブジェクトへのアクセス者の現在数を含むメタデータ情報にマップする、データ構造体を用いて追跡される。
【０００５】
本発明の、これらのおよび他の特徴、態様、および利点は、以下の説明、添付の特許請求の範囲、および付随する図面を参照することによって理解することができよう。
【図面の簡単な説明】
【０００６】
【図１】或る実施形態による、クラウド・コンピューティング・ノードを示す。
【図２】或る実施形態による、クラウド・コンピューティング環境を示す。
【図３】或る実施形態による、抽象モデル層のセットを示す。
【図４】或る実施形態による、データ・オブジェクトのサブセットのアクセスのレベルの追跡に基づいて、２つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動するためのシステムを示すブロック図である。
【図５】或る実施形態による、レコードにアクセスし、アクセス・メタデータを更新し、ページをロードするプロセスを示す。
【図６】或る実施形態による、タプル・シーケンス数（ＴＳＮ：ｔｕｐｌｅ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ）をクエリ・オペレーションのためのページにマップするプロセスを示す。
【図７】或る実施形態による、データ・オブジェクトをページ中に挿入し、スーパースロット中のメタデータを初期化するプロセスを示す。
【図８】或る実施形態による、ＴＳＮを、挿入オペレーションのためのページにマップするプロセスを示す。
【図９】或る実施形態による、データ・オブジェクトのサブセットのアクセスのレベルの追跡に基づいて、２つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動するプロセスのブロック図を示す。
【発明を実施するための形態】
【０００７】
例示のため、本発明の様々な実施形態の説明が提示されているが、これらは包括的であること、または開示された実施形態に限定することは意図されていない。当業者には、説明された実施形態の範囲と趣旨から逸脱することなく多くの修改および別形が自明であろう。本明細書で用いられる用語は、実施形態の原理、市場に現存する技術への実用的応用もしくは技術的改良を最善に説明するため、または、他の当業者が、本明細書で開示される実施形態を理解できるようにするため選択された。
【０００８】
前もって当然のことながら、本開示はクラウド・コンピューティングの詳細な説明を含むが、本明細書中に記載の教示の実装は、一クラウド・コンピューティング環境に限定はされない。それどころか、本発明の実施形態は、現在既知のまたは今後開発される任意の他の種類のコンピューティング環境に関連付けて実装することが可能である。
【０００９】
クラウド・コンピューティングは、構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク回線容量、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン（ＶＭ：ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）、およびサービス）の共用プールへの便利なオンデマンドのネットワーク・アクセスを可能にするサービス・デリバリのモデルであり、最小の管理作業またはサービスのプロバイダとのやり取りで、迅速にこれらリソースの供給およびリリースを受けることができる。このクラウド・モデルは少なくとも５つの特性と、少なくとも３つのサービス・モデルと、少なくとも４つの展開モデルとを含み得る。
【００１０】
特性は次の通りである。
【００１１】
オンデマンド・セルフサービス：クラウドのコンシューマは、サービスのプロバイダとの人的対話の必要なしに、必要に応じて自動的に、サーバ・タイムおよびネットワーク・ストレージなどのコンピューティング機能を一方向に供給することが可能である。
【００１２】
広範ネットワーク・アクセス：諸機能は、ネットワークを介して利用可能であり、異機種環境のシンまたはシック・クライアント・プラットフォーム（例えば、モバイル電話、ラップトップ、およびＰＤＡ）による使用を促進する標準機構を介してアクセスされる。
【００１３】
リソース・プーリング：プロバイダのコンピューティング・リソースは、デマンドに応じて動的に割り当てられ再割り当てされる各種の物理および仮想リソースを使い、マルチテナント・モデルを用いて複数のコンシューマにサービス提供をするために、プールされる。コンシューマは、通常、提供されるリソースの正確な場所についての制御も認識もしない点で場所独立性の感覚があるが、より高い抽象化レベル（例えば、国、州、またはデータ・センタ）では場所を特定できることもある。
【００１４】
迅速な融通性：素早くスケール・アウトし、素早くスケール・インすべく迅速にリリースするために、諸機能は迅速に且つ弾力的に、場合によっては自動的に、供給することが可能である。コンシューマにとって、供給のため利用可能な機能は、多くの場合無制限に見え、いつでも任意の量を購入することができる。
【００１５】
計量されるサービス：クラウド・システムは、サービスの種類（例えば、ストレージ、処理、回線容量、およびアクティブなコンシューマ・アカウント）に適した何らかの抽象化レベルで、計量機能を利用することによって、リソースの使用を自動的に制御し最適化する。リソースの利用は、モニタし、制御し、報告することができ、これにより、プロバイダおよびコンシューマの両方に対し利用されたサービスの透明性を提供する。
【００１６】
サービスのモデルは次の通りである。
【００１７】
サービス型ソフトウェア（ＳａａＳ：Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：コンシューマに提供される機能は、クラウド・インフラストラクチャ上で実行されているプロバイダのアプリケーションを使用する能力である。これらのアプリケーションは、様々なクライアント・デバイスから、ウェブ・ブラウザ（例えば、ウェブベースのｅメール）などのシン・クライアントのインターフェースを介してアクセス可能である。コンシューマは、あり得る、限られたコンシューマ固有のアプリケーション構成設定を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個別のアプリケーション機能さえも含め、下層のクラウド・インフラストラクチャを管理または制御しない。
【００１８】
サービス型プラットフォーム（ＰａａＳ：Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：コンシューマに提供される機能は、プロバイダにサポートされたプログラミング言語およびツールを使って生成された、コンシューマ生成または取得のアプリケーションを、クラウド・インフラストラクチャ上に展開する能力である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含め、下層のクラウド・インフラストラクチャを管理または制御しないが、展開されるアプリケーション、および、おそらくは、アプリケーションホスティング環境の構成に対する制御を有する。
【００１９】
サービス型インフラストラクチャ（ＩａａＳ：Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ ａｓ ａ Ｓｅｒｖｉｃｅ）：コンシューマに提供される機能は、処理、ストレージ、ネットワーク、および他の基本的コンピューティング・リソースを供給する能力であり、コンシューマは、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開し実行することが可能である。コンシューマは、下層のクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、展開されるアプリケーションに対する制御、および、おそらくは、選択されたネットワーク構成要素（例えば、ホスト・ファイヤウォール）に対する限定された制御を有する。
【００２０】
展開モデルは次の通りである。
【００２１】
プライベート・クラウド：クラウド・インフラストラクチャは一組織のためにだけ運営される。これは、当該組織でもまたは第三者によって管理されてもよく、オンプレミスにあってもオフプレミスにあってもよい。
【００２２】
コミュニティ・クラウド：このクラウド・インフラストラクチャは、いくつかの組織によって共用され、共通の課題（例えば、ミッション、セキュリティ要件、方針、およびコンプライアンスの考慮）を有する特定のコミュニティをサポートする。これは、これらの組織でもまたは第三者によって管理されてもよく、オンプレミスにあってもオフプレミスにあってもよい。
【００２３】
パブリック・クラウド：このクラウド・インフラストラクチャは、一般公衆または大きな業界グループに利用可能にされており、クラウド・サービスを販売する組織によって所有される。
【００２４】
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合体であり、単一のエンティティとして存在するが、データおよびアプリケーションのポータビリティを可能にする標準的または専有的技術（例えば、クラウド間の負荷バランスのためのクラウド拡張）によって結合されている。
【００２５】
クラウド・コンピューティング環境は、ステートレスネス、疎結合、モジュール方式、およびセマンチック相互運用性に重点を置いたサービス指向である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含んだインフラストラクチャである。
【００２６】
ここで、図１を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示されている。クラウド・コンピューティング・ノード１０は、適切なクラウド・コンピューティング・ノードの単なる一例であり、本明細書に記載の本発明の実施形態の機能性または使用の範囲についてのいかなる限定も示唆することは意図されていない。とにかく、クラウド・コンピューティング・ノード１０は、前述した機能性のいずれをも実装もしくは実施またはその両方を行うことができる。
【００２７】
クラウド・コンピューティング・ノード１０中には、コンピュータ・システム／サーバ１２があり、これは、数多くの他の汎用または特殊用途コンピューティング・システム環境または構成を用いて動作可能である。コンピュータ・システム／サーバ１２とともに用いるのに適し得る、周知のコンピューティング・システム、環境、もしくは構成またはこれらの組み合わせの例は、以下に限らないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セットトップ・ボックス、プログラム可能な消費者向け電化製品、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含む。
【００２８】
コンピュータ・システム／サーバ１２は、プログラム・モジュールなど、コンピュータ・システムに実行される、コンピュータ・システム実行可能な命令の一般的文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施する、または特定の抽象データ型を実装する、ルーティン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造体などを含むことが可能である。コンピュータ・システム／サーバ１２は、タスクが、通信ネットワークを介してリンクされた遠隔処理デバイスによって実施される、分散クラウド・コンピューティング環境中で実践されてもよい。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよび遠隔両方のコンピュータ・システム・ストレージ媒体に配置することが可能である。
【００２９】
図１に示されるように、クラウド・コンピューティング・ノード１０中のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形で示されている。コンピュータ・システム／サーバ１２のコンポーネントは、以下に限らないが、１つ以上のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含む様々なシステム・コンポーネントをプロセッサ１６に連結するバス１８を含むことが可能である。
【００３０】
バス１８は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを用いるプロセッサ・バスまたはローカル・バスを含め、何種類かのバス構造体の任意の１つ以上を表す。限定でなく例として、かかるアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張型ＩＳＡ（ＥＩＳＡ：Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、および周辺コンポーネント相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含む。
【００３１】
コンピュータ・システム／サーバ１２は、通常、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム／サーバ１２によってアクセス可能な任意の利用可能な媒体であってよく、これには、揮発性および不揮発性媒体、ならびにリムーバブルおよび固定型媒体の両方が含まれる。
【００３２】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）３０もしくはキャッシュ・メモリ３２またはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含んでよい。コンピュータ・システム／サーバ１２は、他のリムーバブル／固定型、揮発性／不揮発性コンピュータ・システム・ストレージ媒体をさらに含むことが可能である。単なる例であるが、ストレージ・システム３４は、固定型、不揮発性磁気媒体（図示せず、通常、「ハード・ドライブ」と呼ばれる）からの読み取りおよびそれへの書き込みのため設けることができる。図示はされていないが、リムーバブルな不揮発性磁気ディスク（例えば、「フレキシブル・ディスク」）から読み取り、これに書き込むための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体など、リムーバブルな不揮発性光ディスクから読み取り、これに書き込むための光ディスク・ドライブを設けることが可能である。かかる場合、それぞれを、１つ以上のデータ媒体インターフェースによってバス１８に接続することが可能である。以下に、さらに示し説明するように、メモリ２８は、本発明の実施形態の諸機能を遂行するよう構成されたプログラム・モジュールの（例えば、少なくとも１つの）セットを有する、少なくとも１つのプログラム製品を含むことができる。
【００３３】
限定でなく例として、プログラム・モジュール４２の（少なくとも１つの）セットを有するプログラム／ユーティリティ４０、ならびにオペレーティング・システム、１つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データをメモリ２８中に格納することが可能である。各オペレーティング・システム、１つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらのいくつかの組み合わせは、ネットワーキング環境の実装物を含むことが可能である。プログラム・モジュール４２は、一般に、本明細書で説明した本発明の実施形態の機能もしくは方法またはその両方を遂行する。
【００３４】
また、コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイスなど１つ以上の外部デバイス１４、ディスプレイ２４、コンシューマがコンピュータ・システム／サーバ１２とやり取りできるようにする１つ以上のデバイス、もしくはコンピュータ・システム／サーバ１２が１つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、またはこれらの両方と通信することができる。かかる通信は、Ｉ／Ｏインターフェース２２を介して行うことが可能である。さらにまた、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、一般広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）もしくはパブリック・ネットワーク（例えばインターネット）またはこれらの組み合わせなど、１つ以上のネットワークとネットワーク・アダプタ２０を介して通信することができる。図示のように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他のコンポーネントと通信することが可能である。当然のことながら、図示はされていないが、コンピュータ・システム／サーバ１２に関連させて他のハードウェアもしくはソフトウェア・コンポーネントまたはその両方を用いることもできよう。諸例には、以下に限らないが、マイクロコード、デバイス・ドライブ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、データ・アーカイバル・ストレージ・システムなどが含まれる。
【００３５】
ここで図２を参照すると、例示的なクラウド・コンピューティング環境５０が描かれている。図示のように、クラウド・コンピューティング環境５０は、例えば、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）または携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、もしくは自動車コンピュータ・システム５４Ｎ、またはこれらの組み合わせなど、クラウドのコンシューマによって使われるローカル・コンピューティング・デバイスが通信可能な１つ以上のクラウド・コンピューティング・ノード１０を含む。諸ノード１０は、相互に通信が可能である。これらは、前述のように、プライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはこれらの組み合わせなど、１つ以上のネットワーク中に、物理的にまたは仮想的にグループ化することができる（図示せず）。これは、クラウド・コンピューティング環境５０が、インフラストラクチャ、プラットフォーム、もしくはサービス型ソフトウェア、またはこれらの組み合わせを提供することを可能にし、これらについては、クラウドのコンシューマはローカルのコンピューティング・デバイスにリソースを維持する必要はない。当然のことながら、図２に示されたコンピューティング・デバイス５４Ａ〜Ｎの種類は例示だけを意図しており、また、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意の種類のネットワークもしくは（例えば、ウェブ・ブラウザを使って）ネットワーク・アドレス可能な接続、またはその両方を介して、任意の種類のコンピュータ化デバイスと通信することが可能である。
【００３６】
次いで、図３を参照すると、クラウド・コンピューティング環境５０（図２）によって設けられた機能的抽象化層のセットが示されている。前もって当然のことながら、図３に示されたコンポーネント、層、および機能は、例示だけを意図しており、本発明の諸実施形態はこれに限定されない。図示のように、下記の層と対応する機能とが提示されている。
【００３７】
ハードウェアおよびソフトウェア層６０は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム６１；ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（縮小命令セット・コンピュータ））アーキテクチャ・ベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびにネットワークおよびネットワーキング・コンポーネント６６、を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア６７、およびデータベース・ソフトウェア６８を含む。
【００３８】
仮想化層７０は抽象化層を提供し、この抽象化層から以下の仮想エンティティの例を提供することが可能である。仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、ならびに仮想クライアント７５。
【００３９】
一例において、管理層８０は、以下に記載の機能を提供することができる。リソース供給８１は、クラウド・コンピューティング環境内のタスクを実施するのに用いられる、コンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および料金徴収８２は、リソースがクラウド・コンピューティング環境内で用いられる際のコストの追跡、およびそれらリソースの消費に対する請求書またはインボイス作成を提供する。一例において、これらのリソースは、アプリケーション・ソフトウェアのライセンスを含み得る。セキュリティは、クラウド・コンシューマおよびタスクに対する識別情報確認、並びにデータおよび他のリソースに対する保護を提供する。ユーザ・ポータル８３は、コンシューマおよびシステム管理者に対し、クラウド・コンピューティング環境へのアクセスを提供する。サービス品質管理８４は、必要なサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス品質保証契約（ＳＬＡ：Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）計画および達成８５は、ＳＬＡによって予期される今後の要求のためのクラウド・コンピューティング・リソースの事前準備および調達を提供する。
【００４０】
作業負荷層９０は、クラウド・コンピューティング環境を使用することが可能な機能の例を提供する。この層から提供できる作業負荷および機能の例は、マッピングおよびナビゲーション９１、ソフトウェアの開発およびライフサイクル管理９２、仮想クラスルーム教育配信９３、データ分析処理９４、トランザクション処理９５、を含む。前述のように、図３について説明した上記の例の全ては、単なる例示であり、本発明はこれらの例に限定されない。
【００４１】
当然のことながら、本明細書で説明される１つ以上の実施形態の全ての機能は、一般に、図４に示されるシステムによって実施され、プログラム／ユーティリティ４０（図１）のプログラム・コード４２のモジュールとして有形に具現化することができる。但し、これは必須ではない。むしろ、本明細書で述べる機能性は、図３に示された層６０、７０、８０、および９０のいずれによっても、遂行／実装するもしくは可能にするまたはその両方ができよう。
【００４２】
繰り返しになるが、本開示はクラウド・コンピューティングの詳細な説明を含んではいるが、本明細書で述べる教示の実装は一クラウド・コンピューティング環境に限定されない。それどころか、本発明の実施形態は、現在既知のまたは今後開発される、任意の種類のクラスタ化コンピューティング環境に実装することができる。
【００４３】
本発明の実施形態は、データ・オブジェクトのセットのアクセスのレベルの追跡に基づいて、２つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動することに関する。一実施形態は、オブジェクト階層プロセッサによって、第一階層中のデータ・オブジェクトを論理的に編成する方法を含む。第一階層中のデータ・オブジェクトの一部は、他のデータ・オブジェクトの組分けを論理的に含む。オブジェクト階層プロセッサは、第二階層中の２つ以上の種類のメモリにまたがってデータ・オブジェクトを物理的に編成する。第二階層中のデータ・オブジェクトの別の部分は、他のデータ・オブジェクトの組分けを物理的に含む。第二階層中のデータ・オブジェクトの組分けは、２つ以上の種類のメモリにまたがって動的に移動される。データ・オブジェクトのアクセスのレベルが、第一階層中の、データ・オブジェクトの組分けを、データ・オブジェクトの各組分け中のデータ・オブジェクトの総計アクセス頻度およびデータ・オブジェクトへのアクセス者の現在数を含むメタデータ情報にマップする、データ構造体を用いて追跡される。
【００４４】
１つ以上のデータベース・オペレーション（例えば、更新（挿入／削除）またはクエリ（データ読み出し））は、通常、一トランザクションにグループ化される。更新クエリは、テーブル中に既存のレコードを修正するために使われる。データベース上のトランザクションは、並列に行うことが可能で、これらが開始される順序は必ずしも必須ではない。これらのイベントは、データベース・トランザクション・ログ、イベント・ログなどに記録が可能である。データベース・データのストレージ・ページ（これらは固定サイズで、メモリ中の連続的な仮想アドレス領域中に格納される）は、データベース・システムのバッファ・プール・コンポーネントによって管理される。一般にバッファ・プールによって実施されるオペレーションは、バッファ・プールが管理するメモリ中へのページのローディング、ページ使用中のページ排除を防止するためのバッファ・プール・メモリ中のページのピン止め、参照カウントを介したバッファ・プール中のページの利用率の追跡、および別のページをロードするためスペースが必要なときのメモリからの（ピン止めされていない）ページの排除、を含む。
【００４５】
一実施形態において、データ・オブジェクトは少なくとも２つの階層に編成される。第一階層は、データ・オブジェクトの論理的包摂の階層を含み、一部のオブジェクトは、他のデータ・オブジェクトの組分けから成る。一例において、レコードは個別値の論理的組分けである。スーパースロットは、連続的な論理的レコードの或る数の論理的組分けであり、これらは、タプル識別子によって個別に識別が可能である。一例において、タプル識別子は、順序付けされた数字列に存在し得、タプル・シーケンス数（ＴＳＮ）と言われる。第二階層は、２つ以上の種類のメモリにまたがるオブジェクトの物理的編成を含み、一部のオブジェクトは他のデータ・オブジェクトの組分けを物理的に包含する。一例では、これは、個別の値を保持するメモリ・ページであってよい。スーパースロットは、テーブルの異なるカラムを包含するページを、複数の同時処理による効率的仕方で、ページのピン止めおよびピン外しのために用いることができる（これは、通常、使用中のページが排除されるのを防止するため行われ、現在の参照カウントのインクリメント／デクリメントが行われる）。一実施形態は、同時処理の間の競合を防止し（例えば、同時処理のページのピン止めおよびピン外しオペレーションを同期させるための、バッファ・プール・マネージャ内のラッチの取得を回避する）、カラム・ストアのカラムごとに１ページずつ、ページ上のこれらのＴＳＮの場所を判定するため、連続するＴＳＮをスーパースロット中にグループ化する。一実施形態において、スーパースロットは、特定数の行での細分性で編成されたカラム横断データ構造体である。一実施形態において、データ・オブジェクトのセットのアクセスのレベルは、第一階層によるこれらのオブジェクトの組分けを、メタデータ情報上にマップするデータ構造体を用いて追跡される。このメタデータ情報は、各セットに対する総計アクセス・カウント、アクセス頻度、および直近のアクセス・タイムを含むことができる。一実施形態において、スーパースロットは、当該データ構造体として用いることが可能で、各カラムに対する個別の参照カウントを維持しながら、スーパースロット中のどのデータベース・バッファ・プールに対しても外部で粗な参照カウントが行われる。一実施形態では、行識別子から（一切のカラム中の）当該行にまたがる全てのデータ・ページの仮想メモリ・アドレスへの直接マッピングが、スーパースロット中に格納される。一実施形態において、使用される参照カウンティングは、ポイント・クエリが対象のカラムだけをバッファ・プールに引き入れるように、階層的になっている。
【００４６】
一実施形態では、メモリの種類をまたがるデータ・オブジェクトの移動は、第二（物理）階層ごとに行われる。この移動は、各オブジェクトまたはオブジェクトのセットに対し、第一階層中のオーバーラップするセットのアクセスの追跡レベルをチェックすることによって制御される。一実施形態において、データ・オブジェクトのオブジェクトまたは組分けは、追跡されている現在のアクセス・カウントが、第一階層中の全てのオーバーラップするセットについてゼロの場合においてだけ、移動することが許される。
【００４７】
図４は、或る実施形態による、データ・オブジェクトのサブセットのアクセスのレベルの追跡に基づいて、２つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動するためのシステムを示すブロック図である。一実施形態において、本システムは、ストレージ・ユニット１  ４０５〜ストレージ・ユニットＮ４０６（Ｎは１より大きい整数）、アクセス追跡プロセッサ４１０、マッピング・プロセッサ４１５、およびオブジェクト階層プロセッサ４２０を包含するサーバ１２を含む。一実施形態では、ストレージ・ユニット１〜Ｎ  ４０５〜４０６はサーバ１２の外部に在ってもよい。一実施形態において、ストレージ・ユニット１〜Ｎ  ４０５〜４０６は、行／カラム／個別値、テーブルなどのオブジェクトを格納する。或るリレーショナル・データベースにおいて、一テーブル（またはファイル）が、単一トピックについての情報を行とカラムとに編成する。一実施形態では、ストレージ・ユニット１〜Ｎ  ４０５〜４０６は、バッファ・プール、クラウド・ベースのストレージ、各種のオブジェクト・プールなど、いろいろな種類のメモリ・ストレージである。
【００４８】
一実施形態において、オブジェクト階層プロセッサ４２０は、ストレージ・ユニット１〜Ｎ  ４０５〜４０６にまたがって階層データ・オブジェクトを動的に移動する。一実施形態では、アクセス追跡プロセッサ４１０は、これらのデータ・オブジェクト（例えば、ＴＳＮ）のシーケンス数の範囲をメタデータ情報上にマップするマッピング・プロセッサ４１５を使うことにより、データ構造体を用い、階層データ・オブジェクトの１つ以上のサブセットのアクセスのレベルを追跡し、該メタデータ情報は、アクセス・カウント、およびデータ・オブジェクトのこれらサブセットに対するデータを保持する１つ以上のメモリ・ページの場所を含む。一実施形態において、オブジェクト階層プロセッサ４２０は、アクセスの追跡されたレベルに基づいて、どの階層データ・オブジェクトを移動するかを判断する。
【００４９】
カラム・ストア中では、テーブル中へのあらゆる挿入は、Ｎのページ（Ｎは該テーブル中のカラムの数）の修正を必要とし、同様に、あらゆるポイント・クエリは、Ｍのページ（Ｍは当該クエリにおいて参照されるカラムの数）にアクセスを必要とする。各々のかかるページ参照は、ハッシュ・テーブル（例えば、データベース・マネジメント・システム（ＤＢＭＳ：ｄａｔａｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）のバッファ・プール）中の参照カウントを更新すること、およびおそらくはラッチを取得すること（またはアトミックなリードモディファイライト命令の実施）を伴う。行へのアクセスは、ポイントまたはＵＤＩ（ｕｐｄａｔｅ（更新）、ｄｅｌｅｔｅ（削除）、ｉｎｓｅｒｔ（挿入））クエリごとに、Ｎのカラムへのアクセスと、ハッシュ・テーブルまたは他のマッピング・データ構造体への２Ｎのアクセスとを伴い、ここでＮは正の整数である。Ｎのアクセスは、ＴＳＮをページＩＤ上にマップするために必要であり、Ｎのアクセスは、ページＩＤをバッファ・プール・アドレス上にマップする（そして、各ページに対する参照カウントをインクリメントする）ために必要である。一実施形態では、１６ＫのＴＳＮを包含するスーパースロット・データ構造体がシステムに実装される。
【００５０】
一実施形態において、ＰａｇｅＭａｐが以下のように設けられる。各カラムに対し、（ｓｔａｒｔ（開始）ＴＳＮ，ｐａｇｅ（ページ）Ｐｔｒ）のリスト。一実施形態では、スーパースロット構造体に対しキャッシュだけが使われる、すなわち、該構造体はディスク上にバックアップされない。一実施形態において、オブジェクト階層プロセッサ４２０は、挿入オペレーションに際し、新規ＴＳＮの追加に備えて（必要に応じスペース／ページを割り当てて）、スーパースロット・データ構造体を用いる。一実施形態において、マッピング・プロセッサは、ＴＳＮまたはＴＳＮの範囲を、テーブル（またはオブジェクト）のカラムまたはカラムの部分範囲（もしくは下位オブジェクト）の仮想メモリ・アドレスに直接マップする。一実施形態では、ページが使用される最初のときに、バッファ・プール・ピン（当該ページが使用中であり、メモリの別の層には移動できないことを示すためのバッファ・オペレーション）が行われる。
【００５１】
一実施形態において、階層参照カウントは、スーパースロットのアクセス細分性に維持され、これは、行の連続する範囲（例えば１６３８４）に対応する。さらに、各カラムに対するアクセス・カウントもスーパースロット内に維持される。これは、データベース・バッファ・プール中のページごとの参照カウントをインクリメントするためのオーバーヘッドをほぼ完全に回避し、メモリの種類の間でのデータの細かい粒度での移動を可能にしながら、ホット・データをメモリ中に組み入れる場合に特に効率的である。例えば、個別ページはなお移動可能である。一実施形態では、マッピング・プロセッサ４１５は、カラム優先にレイアウトされたテーブル中で、行方式の識別子からカラム方式の識別子へのマッピングを提供する。以下では、ＴＳＮは行識別子を指す。実際のデータ・レイアウトはカラム優先であるが、２つの共通オペレーションが行優先のレイアウト結果を生成する結果となる。第一に、取り込み（ロード／挿入）がテーブルに加えられる行を生成する。これらの行は、分割して別々のカラムに付加される必要がある。第二に、ポイント・クエリが（通常、インデックス・ルックアップを介して）ＴＳＮを生成し、これらは各カラムに対するページ上にマップされる必要がある。これはパフォーマンスおよび同時処理を悪化させる。例えば、従来式のバッファ・プールおよびインデックス構造体が、ＴＳＮをカラムごとにページＩＤにマップするのに用いられる場合、Ｎのカラムを有するテーブル上でのポイント・クエリは、ＴＳＮをページＩＤにマップするために、Ｎのページ・マップに対しＮの２回目のインデックス・ルックアップの後、２Ｎのハッシュ・テーブルへのアクセス、およびページを固定するためＮのバッファ・プールの固定（これはＮの参照カウントのインクリメントを伴う）を実施しなければならない。これを回避するために、一実施形態では、参照カウンティング、および（ページ・マップまたは従来式のバッファ・プールのような）ページごとの細分性ではなく、ＴＳＮの細分性でのＴＳＮからページへのマッピング、の両方がマッピング・プロセッサ４１５によって実施される。一実施形態では、スーパースロット・データ構造体は、約１６３８４のＴＳＮに相当する。
【００５２】
一実施形態において、スーパースロットは、各カラムに対する（ｓｔａｒｔＴＳＮ，ｐａｇｅＰｔｒ）のアレイを有する。ｓｔａｒｔＴＳＮは、各ページ中の当該カラムに対する開始ＴＳＮのＴＳＮである。境界ページは、各カラム内の隣り合うスーパースロットの間で共有することが可能である。一実施形態では、スーパースロットは、スーパースロットの行への全てのアクティブな（読み取りまたは書き込み）参照を記録するグローバル参照カウントに加えて、各カラムに対する参照カウントを含む。一実施形態において、インプレースの更新は許可されず、したがって、グローバルおよびカラムごとのカウントは、読み取り者の数のカウントを追跡するだけである。他の実施形態において、インプレース更新が許可される場合は、書き込み者の数に対する参照カウントも維持される。ｐａｇｅＰｔｒはページへのポインタであり、ページは、メモリ階層が２つのレベルだけ、すなわちバッファ・プールとディスクとを有する場合は、バッファ・プール中またはディスク上に存在し得る。したがって、ｐａｇｅＰｔｒは、（バッファ・プール・ページＩＤ，テーブルスペース・ページＩＤ）の結合体であり、テーブルスペース・ページＩＤはディスク上のページに対する識別子である。一般に、ｐａｇｅＰｔｒは、メモリ階層にまたがる諸ポインタの結合体とすることが可能で、必ずしもバッファおよびディスク・ページの識別子のみを保持する必要はない。
【００５３】
図５は、一実施形態による、特定のレコードにアクセスし、かかるアクセスの過程で、必要に応じアクセス・メタデータを更新し、それらのレコードを包含し且つ未だバッファ・プールにロードされていない任意のページをバッファ・プール中にロードするためのプロセスを示す。一実施形態において、ブロック５１０で、アクセス対象のレコードに対応するＴＳＮが識別される。ブロック５２０で、ＴＳＮの範囲がアクセス対象レコードのＴＳＮとオーバーラップするスーパースロットが識別され、それらスーパースロットに対するアクセス・メタデータがルックアップされる。ブロック５３０で、そのメタデータから、アクセス対象のレコードを包含するメモリ・ページが判別される。ブロック５４０で、判別されたメモリ・ページの各々が（バッファ・プール中の）物理メモリ中に在るかどうかが識別される。それらのいずれかがない場合、それらのページは物理メモリ中にロードされる。また、それら新規にロードされたページに対するアクセス・メタデータも初期化される。ブロック５５０で、これら識別されたスーパースロットの各々に対し、アクセス者の現在数がインクリメントされる。一実施形態において、ブロック５６０で、これらのスーパースロットに対するアクセス頻度も更新される。ブロック５７０で、一切の新規にロードされたページに対し、スーパースロット中のメモリ・ページ・アドレスのリストもまた更新される。
【００５４】
図６は、或る実施形態による、ポイント・クエリ・オペレーションのためにＴＳＮをページに（ＴＳＮ→ページ）マッピングするためのプロセス６００を示す。一実施形態において、ブロック６１０で、アクセス対象のテーブル（またはオブジェクト）がクエリから得られる。一実施形態では、ブロック６１５で、テーブルに対するカラム（例えば、下位オブジェクト）のリストがクエリから得られ、該リストはアクセスの必要があるカラムを示している。次いで、スーパースロットは、（例えば、（必要なカラムに）ｓｕｐｅｒｓｌｏｔ．ｃｏｌｓ．ｎｕｍｒｅａｄｅｒｓ＋＋を実施することによって）それらのカラムの各々に対するアクセス・カウントをインクリメントする。一実施形態において、ブロック６２０で、スーパースロット・データ構造体上のグローバル読み取り者カウンタがインクリメントされる。一実施形態では、ブロック６２５で、各カラムに対しスキャン（ｓｃａｎ（ｓｔａｒｔＴＳＮ，ｐａｇｅＰｔｒ））が実施される。
【００５５】
一実施形態において、ブロック６３０で、対象とするページが識別される。一実施形態では、ブロック６３５で、ページをバッファ・プール中に固定する必要があるかどうかが判定される。ページ固定は、ページをバッファ・プール中に固定／ピン止め／保持するオペレーションであって、まず、該ページが現在存在しない場合は、それを永続ストレージ（ディスクまたはｓｓｄ）からバッファ・プール中に読み取り、当該ページが取り外し／ピン外しされるまで、当該ページに対する何らかのオペレーションの間そのページをそこに保持し、取り外し／ピン外しがされた時点より後に、バッファ・プールは当該ページを排除することを決定し得する。一実施形態において、ブロック６３５での判定は、対象のページがバッファ・プールに既に存在するかしないかに基づく。一実施形態では、バッファ・プール・ページが固定化（割り当て）を必要とする場合、ブロック６４０において、ロードされているページは、ｐａｇｅＰｔｒの選択されたビットに、ページのロードが進行中であり他者はそのページのロードを試みるべきでないことを指定するインジケータ値へのコンペアアンドスワップ（ｃｓｗｐ：ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ）を実施することによって標識される。一実施形態において、ブロック６４５で、ｃｓｗｐの返答が肯定かまたは否定かが判定される。一実施形態では、ｃｓｗｐが肯定値を返さない場合、プロセス６００はブロック６３５に続く。一実施形態において、ｃｓｗｐが肯定値を返した場合、プロセスはページがロードされるブロック６５０に続く。
【００５６】
一実施形態において、ブロック６６０で、当該ページのロードが完了し、使用の準備が整っていることを示すために、バッファ・プール・ページＩＤでｐａｇｅＰｔｒへのｃｓｗｐが実施される。一実施形態では、ブロック６６５で、スーパースロットにまたがって共有されている境界ページの場合、状態は、それをポイントする第一スーパースロットに対してペンディングに設定される。一実施形態において、トランザクションが終了するときに固定解除されないページに対し、スーパースロットレベルのラッチが用いられ、どのページが固定解除可能かが決められる（ｓｕｐｅｒｓｌｏｔ．ｃｏｌｓ．ｒｅａｄｅｒＣｏｕｎｔ）。一実施形態では、ＢＩクエリに対し、読み取り者カウントが必要とされるカラムだけについてインクリメントされることを除き、プロセス６００を使うことができる。一実施形態において、プロセス６００は、ページから値が読み取られるブロック６７０へと続き、プロセス６００は完了する。
【００５７】
図７は、一実施形態による、データ・オブジェクトを挿入し、アクセス・メタデータを追跡するためにスーパースロット中のメタデータを初期化するプロセスを示す。一実施形態において、ブロック７１０で、データ・オブジェクトにメモリ・ページが割り当てられ、該オブジェクトが格納されることになる。ブロック７２０で、これらのデータ・オブジェクトを格納するために何らかの新規メモリ・ページの割り当てが必要な場合、これらのページについてのアクセス情報を追跡するために、メタデータの初期化が行われる。ブロック７３０で、これらのオブジェクトにＴＳＮが割り振られる。一実施形態では、ＴＳＮのいずれかが、既存のスーパースロットの範囲に入らない場合、新規のスーパースロットが生成され、初期化される。これらの新規スーパースロットには、それらのＴＳＮに含まれたオブジェクトを保持するメモリ・ページのアドレスが格納される。
【００５８】
図８は、或る実施形態による、ＴＳＮを、全カラム値が固定長を有する挿入オペレーションのためのページにマップするプロセス８００を示す。一実施形態において、ブロック８１０で、テーブル（またはオブジェクト）がストレージから得られる。各インサータ・スレッドは、どのくらい多くの付加対象の行があるかを正確に知っており、挿入する行を取り上げる。各スーパースロットは、アトミックに変更される２つのカウンタ、すなわち、当該スーパースロット上の最大使用ＴＳＮと、当該スーパースロット上のアクティブなインサータ・スレッドの数とを有する。一実施形態では、ブロック８１５で、行（または下位オブジェクト）のリストがテーブルから取得される。一実施形態において、ブロック８２０で、新規の行のいずれかに対し必要な場合、スーパースロットが初期化される。スーパースロットが初期化される場合、全てのスロット（スロットは（ｓｔａｒｔＴＳＮ，ｐａｇｅ  ｐｏｉｎｔｅｒ））は、必要に応じ割り当てられる、テーブル・スペース上のページで充填される（全スロットの充填、ページ割り当て）。一実施形態では、挿入オペレーションに対し、ブロック８３０で、ＴＳＮは、挿入される行の数だけアトミックにインクリメントされる。ブロック８４０で、インサータの数が１つインクリメントされる（フェッチとｃｓｗｐとのループ）。
【００５９】
一実施形態において、ブロック８５０で、当該ページがバッファ・プールへの固定を必要としているかどうかが判定される。別の実施形態において、これは、ブロック８２０でスーパースロットが初期化されるときに、全ページを割り当てることによって提供することも可能である。一実施形態では、ブロック８５０における判定は、対象のページがバッファ・プール中に既に存在するかどうかに基づく。一実施形態において、ページがバッファ・プール中への固定化を必要としない場合、制御はブロック８４５に流れる。一実施形態では、ページがバッファ・プール中への固定化を必要とする場合、ブロック８５５で、ｐａｇｅＰｔｒの最後の数ビットに対しアトミックなコンペアアンドスワップ（ｃｓｗｐ）が行われ、当該ページに対するロードがペンディングしていることを示す状態になる。一実施形態において、ブロック８６０で、ｃｓｗｐが肯定的値を返すかどうかが判定される。一実施形態では、ｃｓｗｐが肯定値を返さない場合、プロセス８００はブロック８５０に戻って続く。一実施形態において、ｃｓｗｐが肯定値を返した場合、プロセスはブロック８６２に続き、ページがロードされ、次いでブロック８６５で、ロードされたページのアドレス（バッファ・プール・ページＩＤ）が、別のｃｓｗｐオペレーションを介してｐａｇｅＰｔｒ中に格納される。続いて制御はブロック８４５に流れる。
【００６０】
一実施形態において、ブロック８４５で、ページ上への値に対するメモリ・コピー（ｍｅｍｃｐｙ）が、追加のラッチなしに行われる（ページへのＴＳＮのマッピングはスロットをスキャンすることによって行われる）。一実施形態では、制御は次いでブロック８７５に流れ、アクティブなインサータの数は、フェッチとｃｓｗｐ命令とのループを実行することにより、アトミックにデクリメントされ、このカウントが０である場合、そのコンテンツが安定しているので、インデックス更新、圧縮、スペース回収などバックグラウンド・オペレーションが、このスーパースロットにアクセスすることができる。
【００６１】
一実施形態において、可変長カラムを取り扱うために、ラッチ下の各インサータ・スレッドは、使用対象のバイトの数を示すカウンタ（各可変長フィールドに対し別個のかかるカウンタ）をインクリメントする。このカウンタがインクリメントされたならば、スレッドは、それが挿入する必要のある可変長データに対するスペースを留保したことになる。また、これは、かかる可変長カラムの数が少ない場合にも、アトミックなまたはハードウェアのトランザクション・メモリを介して行うことができる。
【００６２】
一実施形態において、各テーブルは、スーパースロットへのポインタのアレイ、および使用されているスーパースロットの数のアトミックを有する。インサータが、スーパースロットへ組み入れする行よりも多くの行を挿入する必要がある場合、インサータは、まず、組み入れする行をできるだけ多く挿入する。次いで、インサータは、残りの分に対する新規のスーパースロットを形成する。これは、ラッチと待ちとを伴い、１つのスレッドが、使用スロットの数をアトミックに成功裏にインクリメントし、次いで新規スーパースロットおよびそれに対するポインタ中にｃｓｗｐを形成することになり、その間、同じことをしようとする一切の他のスレッドは待っていなければならない。一実施形態において、待ちを希少にするために、プロセス８００は、先行のスーパースロットが半分充填よりも多くなると、先を見越してスーパースロットを形成する。
【００６３】
図９は、或る実施形態による、データ・オブジェクトのアクセスのレベルの追跡に基づいて、２つ以上の種類のメモリにまたがって階層データ・オブジェクトを動的に移動するプロセスのブロック図を示す。一実施形態において、ブロック９１０で、異なる種類のメモリ（例えば、スタティックＲＡＭ、ダイナミックＲＡＭ、ハード・ディスク、およびソリッド・ステート・ディスク）をまたがってデータ・オブジェクトを移動する必要があるかどうかが判定される。異なる種類のメモリをまたがってデータ・ブロックを移動する必要があると判定された場合、ブロック９２０で、データ・オブジェクトおよびデータ・オブジェクトの組分けの追跡されたアクセス・カウントに従って、移動対象のデータ・ブロックが選択される。その他の場合は、プロセスは開始点およびブロック９１０に戻って進む。ブロック９３０で、現在のアクセス者の追跡数が、選択されたデータ・オブジェクトにオーバーラップするデータ・オブジェクトの組分けの全てに対してゼロかどうかが判定される。ブロック９３０が否定の場合、プロセスはブロック９２０に戻って続く。その他の場合は、プロセスはブロック９４０へと続く。ブロック９４０で、選択されたデータ・ブロックは異なる種類のメモリにまたがって移動される。
【００６４】
一実施形態において、本プロセスは、オブジェクト階層プロセッサによって、第一階層中のデータ・オブジェクトを論理的に編成することを含み得る。一例において、第一階層中のデータ・オブジェクトの一部は、他のデータ・オブジェクトの組分けを論理的に含む。一実施形態では、本プロセスは、オブジェクト階層プロセッサによって、第二階層中の２種類以上のメモリにまたがってデータ・オブジェクトを物理的に編成することをさらに含む。一例では、第二階層中のデータ・オブジェクトの別の部分は、他のデータ・オブジェクトの組分けを物理的に含む。本プロセスは、第二階層中のデータ・オブジェクトの組分けを２つ以上の種類のメモリにまたがって動的に移動することと、第一階層中のデータ・オブジェクトの組分けを、各データ・オブジェクトの各組分け中のデータ・オブジェクトの総計アクセス頻度およびデータ・オブジェクトへのアクセス者（例えば、クライアント、スレッド、プロセスなど）の現在数を含むメタデータ情報にマップする、データ構造体を使って、データ・オブジェクトのアクセスのレベルを追跡することとをさらに含む。
【００６５】
一実施形態において、本プロセスは、移動の対象となるデータ・オブジェクトの組分けにオーバーラップする第一階層中のデータ・オブジェクト組分けのアクセスの追跡されたレベルに基づいて、データ・オブジェクトの各組分けを移動するかどうかを判定することを含み得る。一実施形態では、第二階層は、メモリ・ページおよび個別値を含み、第一階層は、データ・レコード、データ・レコードのシーケンス、および個別値を含む。一例において、アクセス頻度の低いデータ・オブジェクト、およびアクセス頻度の低いデータ・オブジェクトのデータ・オブジェクトは、より低速の種類のメモリに移動される。一実施形態において、特定のデータ・オブジェクトを移動する前に、該特定のデータ・オブジェクトにオーバーラップするデータ・オブジェクトの全ての組分けに対し、アクセス者の現在数がゼロであるかどうか、アクセス情報の追跡レベルを用いて検証が行われ、データ・オブジェクトを移動するとの決定は、所定の最少直近アクセス・タイムに基づく。
【００６６】
一実施形態において、データ・レコードのシーケンス中のデータ・オブジェクトの配列はＴＳＮによって示され、メタデータ情報は、データ・オブジェクトの組分けを保持する１つ以上のメモリ・ページのアドレスを含む。一例において、データ構造体は、データ・レコードの論理的集合を識別する連続の特定数のＴＳＮの論理的組分けのリスト、およびデータ・オブジェクトの論理的組分けに対するメタデータ情報のリストを含む。一実施形態では、追加のデータ・オブジェクトを加えるオペレーションの実行に際し、１つ以上のメモリ・ページが、追加のデータ・オブジェクトを保持するための必要に応じて割り当てられ、割り当てられたメモリ・ページが、第二階層中の組分けへのデータ・オブジェクトの割り振りを定め、追加のデータ・オブジェクトは、第一階層中の１つ以上の組分けにも割り振られる。
【００６７】
当業者には当然のことながら、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている一つ以上のコンピュータ可読媒体（群）中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
【００６８】
一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることが可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体であっても、コンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいは前述の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）またはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であってよい。
【００６９】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であってよい。
【００７０】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【００７１】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅａｒｅａ ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことも可能である。
【００７２】
本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を上記で説明している。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。
【００７３】
また、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能／動作を実装する命令群を包含する製造品を作り出すようにすることができる。
【００７４】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実施させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【００７５】
図面のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能（群）を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、または命令の部分を表し得る。一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得る。例えば、連続して示された２つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステムによって実装すること、または特殊用途ハードウェアとコンピュータ命令との組み合わせを実行することによって可能なことにも留意すべきである。
【００７６】
特許請求の範囲中の単数形での要素への言及は、明示でそう述べられていない限り、「唯一無二」でなく、むしろ「１つ以上」を意味することが意図されている。当業者には現在既知のまたは今後知られることになる、前述の例示的な実施形態の要素の全ての構造的および機能的等価物は、本請求の範囲に網羅されることが意図されている。本明細書中のどの請求要素も、その要素が語句「ための手段」または「のためのステップ」を用いて明示で述べられている場合を除き、合衆国法典第３５巻第１１２条第６パラグラフの条件の下で解釈されるべきではない。
【００７７】
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある（“ａ”、“ａｎ”）」、および「該（“ｔｈｅ”）」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに当然のことながら、本明細書で用いられる「含む（“ｃｏｍｐｒｉｓｅ”）」もしくは「含んでいる（“ｃｏｍｐｒｉｓｉｎｇ”）」またはその両方は、述べられた特徴、完全体（ｉｎｔｅｇｅｒ）、ステップ、オペレーション、要素、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、要素、コンポーネント、もしくはこれらの群、または上記のいずれかの組み合わせの存在または追加を排除するものではない。
【００７８】
添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を実施するための、一切の構造、材料または動作を包含することが意図されている。本発明の記述は、例示および説明の目的で提示されたものであり、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。実施形態は、本発明の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えた様々な実施形態に関して、本発明を理解できるように選択し説明されたものである。
【図１】
0006748653.tif 000002
【図２】
0006748653.tif 000003
【図３】
0006748653.tif 000004
【図４】
0006748653.tif 000005
【図５】
0006748653.tif 000006
【図６】
0006748653.tif 000007
【図７】
0006748653.tif 000008
【図８】
0006748653.tif 000009
【図９】
0006748653.tif 000010