特許第6748653号(P6748653)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特許6748653カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス
<>
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000002
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000003
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000004
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000005
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000006
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000007
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000008
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000009
  • 特許6748653-カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6748653
(24)【登録日】2020年8月12日
(45)【発行日】2020年9月2日
(54)【発明の名称】カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス
(51)【国際特許分類】
   G06F 16/185 20190101AFI20200824BHJP
   G06F 16/182 20190101ALI20200824BHJP
【FI】
   G06F16/185
   G06F16/182
【請求項の数】10
【全頁数】22
(21)【出願番号】特願2017-545567(P2017-545567)
(86)(22)【出願日】2016年2月4日
(65)【公表番号】特表2018-513454(P2018-513454A)
(43)【公表日】2018年5月24日
(86)【国際出願番号】CN2016073481
(87)【国際公開番号】WO2016150259
(87)【国際公開日】20160929
【審査請求日】2018年10月23日
(31)【優先権主張番号】14/664,686
(32)【優先日】2015年3月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】バーバー、ロナルド、ジェイ.
(72)【発明者】
【氏名】バッタチャージー、ビシュワラニャン
(72)【発明者】
【氏名】サドギ ハメダニ、モハマド
(72)【発明者】
【氏名】ローマン、ガイ、エム.
(72)【発明者】
【氏名】モハン、チャンドラセカラン
(72)【発明者】
【氏名】パンディス、イッポクラティス
(72)【発明者】
【氏名】ラマン、ビジャイシャンカー
(72)【発明者】
【氏名】シドル、リチャード、エス.
(72)【発明者】
【氏名】ストーム、アダム、ジェイ.
【審査官】 松尾 真人
(56)【参考文献】
【文献】 国際公開第2014/045441(WO,A1)
【文献】 特開2007−234026(JP,A)
【文献】 特表2010−539616(JP,A)
【文献】 国際公開第2011/148496(WO,A1)
【文献】 国際公開第2013/141308(WO,A1)
【文献】 国際公開第2014/010038(WO,A1)
【文献】 特開2013−222457(JP,A)
【文献】 米国特許出願公開第2009/0240663(US,A1)
【文献】 米国特許出願公開第2013/0325900(US,A1)
【文献】 米国特許出願公開第2013/0166534(US,A1)
【文献】 中国特許出願公開第101828182(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
コンピュータ・ソフトウェアによる情報処理方法であって、
オブジェクト階層プロセッサによって、第一階層中のデータ・オブジェクトを論理的に編成するステップであって、前記第一階層中の前記データ・オブジェクトの一部が他のデータ・オブジェクトの組分けを論理的に含む、前記論理的に編成するステップと、
前記オブジェクト階層プロセッサによって、第二階層中の2つ以上の種類のメモリにまたがって前記データ・オブジェクトを物理的に編成するステップであって、前記第二階層中の前記データ・オブジェクトの一部は、他のデータ・オブジェクトの組分けを物理的に含む、前記物理的に編成するステップと、
前記2つ以上の種類のメモリをまたがって、前記第二階層中の前記データ・オブジェクトの組分けを動的に移動するステップと、
前記第一階層中の前記データ・オブジェクトの組分けを、前記データ・オブジェクトの各組分け中の前記データ・オブジェクトの総計アクセス頻度および前記データ・オブジェクトへのアクセス者の現在数を含むメタデータ情報上にマップする、データ構造体を用いて、前記データ・オブジェクトのアクセスのレベルを追跡するステップであって、前記データ構造体は、前記データ・オブジェクトの各組分けにおいて、データの各列に対して、メモリ・ページへポインタ(pagePTR)と開始タプルシーケンス番号(startTSN)の配列を含み、ここでstartTSNはデータの特定の列の各メモリページの開始のタプルシーケンス番号であるTSN、pagePTRは前記第一階層と前記第二階層を横断するポインタであり、前記データ構造体は、前記データの各列の参照カウントと、前記データの行へのすべてのアクティブな参照を記録するグローバル参照カウントとを含む、ステップと、
を含む方法。
【請求項2】
移動の対象となるデータ・オブジェクトの前記組分けとオーバーラップする、前記第一階層中の前記データ・オブジェクト組分けのアクセスの前記追跡されたレベルに基づいて、前記データ・オブジェクトの各組分けを移動するかどうかを判定するステップ、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第二階層が、メモリ・ページを含み、前記第一階層が、データ・レコード、前記データ・レコードのシーケンス、および個別値を含む、請求項2に記載の方法。
【請求項4】
アクセス頻度の低いデータ・オブジェクトは、より低速の種類のメモリに移動され、前記メモリの種類は、スタティックRAM、ダイナミックRAM、ハード・ディスク、およびソリッド・ステート・ディスクを含む、請求項1に記載の方法。
【請求項5】
特定のデータ・オブジェクトを移動する前に、前記特定のデータ・オブジェクトにオーバーラップするデータ・オブジェクトの全ての組分けに対し、アクセス者の現在数がゼロであるかどうか、アクセス情報の追跡されたレベルを用いて検証が行われ、データ・オブジェクトを移動するとの決定は、所定の最少直近アクセス・タイムに基づく、請求項4に記載の方法。
【請求項6】
前記データ・レコードのシーケンスにおける前記データ・オブジェクトの配置はTSNによって示され、前記メタデータ情報にはデータ・オブジェクトの組分けを保持する1つ以上のメモリ・ページのアドレスが含まれており、ここで前記ページへのポインタは、メモリ階層全体のポインタの結合で構成されている、請求項3に記載の方法。
【請求項7】
追加のデータ・オブジェクトを加えるオペレーションの実行に際し、1つ以上のメモリ・ページが、前記追加のデータ・オブジェクトを保持するための必要に応じて割り当てられ、前記割り当てられたメモリ・ページが、前記第二階層中の組分けへの前記データ・オブジェクトの割り振りを定め、前記追加のデータ・オブジェクトは、前記第一階層中の1つ以上の組分けにも割り振られる、請求項6に記載の方法。
【請求項8】
請求項1ないし7の何れか1項に記載の方法の各ステップを、コンピュータに実行させる、コンピュータ・プログラム。
【請求項9】
請求項8に記載の前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【請求項10】
請求項1ないし7の何れか1項に記載の方法の各ステップを実行するように構成された、システム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の諸実施形態は、カラム・ストアにおける効率的挿入およびポイント・クエリ・オペレーションに関するものであり、具体的には、データ・オブジェクトのサブセットのアクセスのレベルの追跡に基づいて、2つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動することに関する。
【背景技術】
【0002】
データベースまたは表データ中のリアルタイムのデータへのビジネス・インテリジェンス(BI:business intelligence )クエリを行う傾向が増えている。慣例的に、BIシステムとオンライン・トランザクション処理(OLTP:online transaction processing)システムとの間は厳しく分離される。業務用BIと、トランザクションおよび分析処理の双方とを同じデータベース上で実施することへの市場圧力が増大している。BIに対しては、カラム優先のレイアウトにデータを配列する傾向がある。これは、より良好なクエリ・パフォーマンス、より良好なバッファ・プール利用率、および多少より良好な圧縮度を提供する。OLTPデータは、慣例的に行優先のレイアウトに配列される。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、OLTP作業負荷が、より良好なバッファ・プール利用率および圧縮度に所以してカラム優先レイアウトから益を得るポイント・クエリに大勢的に依存しているとしても、カラム優先は、ディスク上のOLTP作業負荷がメモリ中のOLTP作業負荷に転ずる可能性がある。
【課題を解決するための手段】
【0004】
本発明の諸実施形態は、データ・オブジェクトのセットのアクセスのレベルの追跡に基づいて、2つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動することに関する。一実施形態は、オブジェクト階層プロセッサによって、データ・オブジェクトを第一階層に論理的に編成する方法を含む。第一階層中のデータ・オブジェクトの一部は、他のデータ・オブジェクトの組分けを論理的に含む。オブジェクト階層プロセッサは、第二階層中の2つ以上の種類のメモリにまたがってデータ・オブジェクトを物理的に編成する。第二階層中のデータ・オブジェクトの別の部分は、他のデータ・オブジェクトの組分けを物理的に含む。第二階層中のデータ・オブジェクトの組分けは、2つ以上の種類のメモリにまたがって動的に移動される。データ・オブジェクトのアクセスのレベルが、第一階層中のデータ・オブジェクトの組分けを、データ・オブジェクトの各組分け中の、データ・オブジェクトの総計アクセス頻度およびデータ・オブジェクトへのアクセス者の現在数を含むメタデータ情報にマップする、データ構造体を用いて追跡される。
【0005】
本発明の、これらのおよび他の特徴、態様、および利点は、以下の説明、添付の特許請求の範囲、および付随する図面を参照することによって理解することができよう。
【図面の簡単な説明】
【0006】
図1】或る実施形態による、クラウド・コンピューティング・ノードを示す。
図2】或る実施形態による、クラウド・コンピューティング環境を示す。
図3】或る実施形態による、抽象モデル層のセットを示す。
図4】或る実施形態による、データ・オブジェクトのサブセットのアクセスのレベルの追跡に基づいて、2つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動するためのシステムを示すブロック図である。
図5】或る実施形態による、レコードにアクセスし、アクセス・メタデータを更新し、ページをロードするプロセスを示す。
図6】或る実施形態による、タプル・シーケンス数(TSN:tuple sequence number)をクエリ・オペレーションのためのページにマップするプロセスを示す。
図7】或る実施形態による、データ・オブジェクトをページ中に挿入し、スーパースロット中のメタデータを初期化するプロセスを示す。
図8】或る実施形態による、TSNを、挿入オペレーションのためのページにマップするプロセスを示す。
図9】或る実施形態による、データ・オブジェクトのサブセットのアクセスのレベルの追跡に基づいて、2つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動するプロセスのブロック図を示す。
【発明を実施するための形態】
【0007】
例示のため、本発明の様々な実施形態の説明が提示されているが、これらは包括的であること、または開示された実施形態に限定することは意図されていない。当業者には、説明された実施形態の範囲と趣旨から逸脱することなく多くの修改および別形が自明であろう。本明細書で用いられる用語は、実施形態の原理、市場に現存する技術への実用的応用もしくは技術的改良を最善に説明するため、または、他の当業者が、本明細書で開示される実施形態を理解できるようにするため選択された。
【0008】
前もって当然のことながら、本開示はクラウド・コンピューティングの詳細な説明を含むが、本明細書中に記載の教示の実装は、一クラウド・コンピューティング環境に限定はされない。それどころか、本発明の実施形態は、現在既知のまたは今後開発される任意の他の種類のコンピューティング環境に関連付けて実装することが可能である。
【0009】
クラウド・コンピューティングは、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク回線容量、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン(VM:virtual machine)、およびサービス)の共用プールへの便利なオンデマンドのネットワーク・アクセスを可能にするサービス・デリバリのモデルであり、最小の管理作業またはサービスのプロバイダとのやり取りで、迅速にこれらリソースの供給およびリリースを受けることができる。このクラウド・モデルは少なくとも5つの特性と、少なくとも3つのサービス・モデルと、少なくとも4つの展開モデルとを含み得る。
【0010】
特性は次の通りである。
【0011】
オンデマンド・セルフサービス:クラウドのコンシューマは、サービスのプロバイダとの人的対話の必要なしに、必要に応じて自動的に、サーバ・タイムおよびネットワーク・ストレージなどのコンピューティング機能を一方向に供給することが可能である。
【0012】
広範ネットワーク・アクセス:諸機能は、ネットワークを介して利用可能であり、異機種環境のシンまたはシック・クライアント・プラットフォーム(例えば、モバイル電話、ラップトップ、およびPDA)による使用を促進する標準機構を介してアクセスされる。
【0013】
リソース・プーリング:プロバイダのコンピューティング・リソースは、デマンドに応じて動的に割り当てられ再割り当てされる各種の物理および仮想リソースを使い、マルチテナント・モデルを用いて複数のコンシューマにサービス提供をするために、プールされる。コンシューマは、通常、提供されるリソースの正確な場所についての制御も認識もしない点で場所独立性の感覚があるが、より高い抽象化レベル(例えば、国、州、またはデータ・センタ)では場所を特定できることもある。
【0014】
迅速な融通性:素早くスケール・アウトし、素早くスケール・インすべく迅速にリリースするために、諸機能は迅速に且つ弾力的に、場合によっては自動的に、供給することが可能である。コンシューマにとって、供給のため利用可能な機能は、多くの場合無制限に見え、いつでも任意の量を購入することができる。
【0015】
計量されるサービス:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、回線容量、およびアクティブなコンシューマ・アカウント)に適した何らかの抽象化レベルで、計量機能を利用することによって、リソースの使用を自動的に制御し最適化する。リソースの利用は、モニタし、制御し、報告することができ、これにより、プロバイダおよびコンシューマの両方に対し利用されたサービスの透明性を提供する。
【0016】
サービスのモデルは次の通りである。
【0017】
サービス型ソフトウェア(SaaS:Software as a Service):コンシューマに提供される機能は、クラウド・インフラストラクチャ上で実行されているプロバイダのアプリケーションを使用する能力である。これらのアプリケーションは、様々なクライアント・デバイスから、ウェブ・ブラウザ(例えば、ウェブベースのeメール)などのシン・クライアントのインターフェースを介してアクセス可能である。コンシューマは、あり得る、限られたコンシューマ固有のアプリケーション構成設定を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個別のアプリケーション機能さえも含め、下層のクラウド・インフラストラクチャを管理または制御しない。
【0018】
サービス型プラットフォーム(PaaS:Platform as a Service):コンシューマに提供される機能は、プロバイダにサポートされたプログラミング言語およびツールを使って生成された、コンシューマ生成または取得のアプリケーションを、クラウド・インフラストラクチャ上に展開する能力である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含め、下層のクラウド・インフラストラクチャを管理または制御しないが、展開されるアプリケーション、および、おそらくは、アプリケーションホスティング環境の構成に対する制御を有する。
【0019】
サービス型インフラストラクチャ(IaaS:Infrastructure as a Service):コンシューマに提供される機能は、処理、ストレージ、ネットワーク、および他の基本的コンピューティング・リソースを供給する能力であり、コンシューマは、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開し実行することが可能である。コンシューマは、下層のクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、展開されるアプリケーションに対する制御、および、おそらくは、選択されたネットワーク構成要素(例えば、ホスト・ファイヤウォール)に対する限定された制御を有する。
【0020】
展開モデルは次の通りである。
【0021】
プライベート・クラウド:クラウド・インフラストラクチャは一組織のためにだけ運営される。これは、当該組織でもまたは第三者によって管理されてもよく、オンプレミスにあってもオフプレミスにあってもよい。
【0022】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織によって共用され、共通の課題(例えば、ミッション、セキュリティ要件、方針、およびコンプライアンスの考慮)を有する特定のコミュニティをサポートする。これは、これらの組織でもまたは第三者によって管理されてもよく、オンプレミスにあってもオフプレミスにあってもよい。
【0023】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般公衆または大きな業界グループに利用可能にされており、クラウド・サービスを販売する組織によって所有される。
【0024】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合体であり、単一のエンティティとして存在するが、データおよびアプリケーションのポータビリティを可能にする標準的または専有的技術(例えば、クラウド間の負荷バランスのためのクラウド拡張)によって結合されている。
【0025】
クラウド・コンピューティング環境は、ステートレスネス、疎結合、モジュール方式、およびセマンチック相互運用性に重点を置いたサービス指向である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含んだインフラストラクチャである。
【0026】
ここで、図1を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示されている。クラウド・コンピューティング・ノード10は、適切なクラウド・コンピューティング・ノードの単なる一例であり、本明細書に記載の本発明の実施形態の機能性または使用の範囲についてのいかなる限定も示唆することは意図されていない。とにかく、クラウド・コンピューティング・ノード10は、前述した機能性のいずれをも実装もしくは実施またはその両方を行うことができる。
【0027】
クラウド・コンピューティング・ノード10中には、コンピュータ・システム/サーバ12があり、これは、数多くの他の汎用または特殊用途コンピューティング・システム環境または構成を用いて動作可能である。コンピュータ・システム/サーバ12とともに用いるのに適し得る、周知のコンピューティング・システム、環境、もしくは構成またはこれらの組み合わせの例は、以下に限らないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セットトップ・ボックス、プログラム可能な消費者向け電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含む。
【0028】
コンピュータ・システム/サーバ12は、プログラム・モジュールなど、コンピュータ・システムに実行される、コンピュータ・システム実行可能な命令の一般的文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施する、または特定の抽象データ型を実装する、ルーティン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造体などを含むことが可能である。コンピュータ・システム/サーバ12は、タスクが、通信ネットワークを介してリンクされた遠隔処理デバイスによって実施される、分散クラウド・コンピューティング環境中で実践されてもよい。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよび遠隔両方のコンピュータ・システム・ストレージ媒体に配置することが可能である。
【0029】
図1に示されるように、クラウド・コンピューティング・ノード10中のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形で示されている。コンピュータ・システム/サーバ12のコンポーネントは、以下に限らないが、1つ以上のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に連結するバス18を含むことが可能である。
【0030】
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを用いるプロセッサ・バスまたはローカル・バスを含め、何種類かのバス構造体の任意の1つ以上を表す。限定でなく例として、かかるアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張型ISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、および周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)バスを含む。
【0031】
コンピュータ・システム/サーバ12は、通常、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能な媒体であってよく、これには、揮発性および不揮発性媒体、ならびにリムーバブルおよび固定型媒体の両方が含まれる。
【0032】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM:random access memory)30もしくはキャッシュ・メモリ32またはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含んでよい。コンピュータ・システム/サーバ12は、他のリムーバブル/固定型、揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含むことが可能である。単なる例であるが、ストレージ・システム34は、固定型、不揮発性磁気媒体(図示せず、通常、「ハード・ドライブ」と呼ばれる)からの読み取りおよびそれへの書き込みのため設けることができる。図示はされていないが、リムーバブルな不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)から読み取り、これに書き込むための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、または他の光媒体など、リムーバブルな不揮発性光ディスクから読み取り、これに書き込むための光ディスク・ドライブを設けることが可能である。かかる場合、それぞれを、1つ以上のデータ媒体インターフェースによってバス18に接続することが可能である。以下に、さらに示し説明するように、メモリ28は、本発明の実施形態の諸機能を遂行するよう構成されたプログラム・モジュールの(例えば、少なくとも1つの)セットを有する、少なくとも1つのプログラム製品を含むことができる。
【0033】
限定でなく例として、プログラム・モジュール42の(少なくとも1つの)セットを有するプログラム/ユーティリティ40、ならびにオペレーティング・システム、1つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データをメモリ28中に格納することが可能である。各オペレーティング・システム、1つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらのいくつかの組み合わせは、ネットワーキング環境の実装物を含むことが可能である。プログラム・モジュール42は、一般に、本明細書で説明した本発明の実施形態の機能もしくは方法またはその両方を遂行する。
【0034】
また、コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイスなど1つ以上の外部デバイス14、ディスプレイ24、コンシューマがコンピュータ・システム/サーバ12とやり取りできるようにする1つ以上のデバイス、もしくはコンピュータ・システム/サーバ12が1つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、またはこれらの両方と通信することができる。かかる通信は、I/Oインターフェース22を介して行うことが可能である。さらにまた、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN:local area network)、一般広域ネットワーク(WAN:wide area network)もしくはパブリック・ネットワーク(例えばインターネット)またはこれらの組み合わせなど、1つ以上のネットワークとネットワーク・アダプタ20を介して通信することができる。図示のように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信することが可能である。当然のことながら、図示はされていないが、コンピュータ・システム/サーバ12に関連させて他のハードウェアもしくはソフトウェア・コンポーネントまたはその両方を用いることもできよう。諸例には、以下に限らないが、マイクロコード、デバイス・ドライブ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、データ・アーカイバル・ストレージ・システムなどが含まれる。
【0035】
ここで図2を参照すると、例示的なクラウド・コンピューティング環境50が描かれている。図示のように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、もしくは自動車コンピュータ・システム54N、またはこれらの組み合わせなど、クラウドのコンシューマによって使われるローカル・コンピューティング・デバイスが通信可能な1つ以上のクラウド・コンピューティング・ノード10を含む。諸ノード10は、相互に通信が可能である。これらは、前述のように、プライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはこれらの組み合わせなど、1つ以上のネットワーク中に、物理的にまたは仮想的にグループ化することができる(図示せず)。これは、クラウド・コンピューティング環境50が、インフラストラクチャ、プラットフォーム、もしくはサービス型ソフトウェア、またはこれらの組み合わせを提供することを可能にし、これらについては、クラウドのコンシューマはローカルのコンピューティング・デバイスにリソースを維持する必要はない。当然のことながら、図2に示されたコンピューティング・デバイス54A〜Nの種類は例示だけを意図しており、また、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークもしくは(例えば、ウェブ・ブラウザを使って)ネットワーク・アドレス可能な接続、またはその両方を介して、任意の種類のコンピュータ化デバイスと通信することが可能である。
【0036】
次いで、図3を参照すると、クラウド・コンピューティング環境50(図2)によって設けられた機能的抽象化層のセットが示されている。前もって当然のことながら、図3に示されたコンポーネント、層、および機能は、例示だけを意図しており、本発明の諸実施形態はこれに限定されない。図示のように、下記の層と対応する機能とが提示されている。
【0037】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61;RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66、を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67、およびデータベース・ソフトウェア68を含む。
【0038】
仮想化層70は抽象化層を提供し、この抽象化層から以下の仮想エンティティの例を提供することが可能である。仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0039】
一例において、管理層80は、以下に記載の機能を提供することができる。リソース供給81は、クラウド・コンピューティング環境内のタスクを実施するのに用いられる、コンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および料金徴収82は、リソースがクラウド・コンピューティング環境内で用いられる際のコストの追跡、およびそれらリソースの消費に対する請求書またはインボイス作成を提供する。一例において、これらのリソースは、アプリケーション・ソフトウェアのライセンスを含み得る。セキュリティは、クラウド・コンシューマおよびタスクに対する識別情報確認、並びにデータおよび他のリソースに対する保護を提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者に対し、クラウド・コンピューティング環境へのアクセスを提供する。サービス品質管理84は、必要なサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス品質保証契約(SLA:Service Level Agreement)計画および達成85は、SLAによって予期される今後の要求のためのクラウド・コンピューティング・リソースの事前準備および調達を提供する。
【0040】
作業負荷層90は、クラウド・コンピューティング環境を使用することが可能な機能の例を提供する。この層から提供できる作業負荷および機能の例は、マッピングおよびナビゲーション91、ソフトウェアの開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データ分析処理94、トランザクション処理95、を含む。前述のように、図3について説明した上記の例の全ては、単なる例示であり、本発明はこれらの例に限定されない。
【0041】
当然のことながら、本明細書で説明される1つ以上の実施形態の全ての機能は、一般に、図4に示されるシステムによって実施され、プログラム/ユーティリティ40(図1)のプログラム・コード42のモジュールとして有形に具現化することができる。但し、これは必須ではない。むしろ、本明細書で述べる機能性は、図3に示された層60、70、80、および90のいずれによっても、遂行/実装するもしくは可能にするまたはその両方ができよう。
【0042】
繰り返しになるが、本開示はクラウド・コンピューティングの詳細な説明を含んではいるが、本明細書で述べる教示の実装は一クラウド・コンピューティング環境に限定されない。それどころか、本発明の実施形態は、現在既知のまたは今後開発される、任意の種類のクラスタ化コンピューティング環境に実装することができる。
【0043】
本発明の実施形態は、データ・オブジェクトのセットのアクセスのレベルの追跡に基づいて、2つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動することに関する。一実施形態は、オブジェクト階層プロセッサによって、第一階層中のデータ・オブジェクトを論理的に編成する方法を含む。第一階層中のデータ・オブジェクトの一部は、他のデータ・オブジェクトの組分けを論理的に含む。オブジェクト階層プロセッサは、第二階層中の2つ以上の種類のメモリにまたがってデータ・オブジェクトを物理的に編成する。第二階層中のデータ・オブジェクトの別の部分は、他のデータ・オブジェクトの組分けを物理的に含む。第二階層中のデータ・オブジェクトの組分けは、2つ以上の種類のメモリにまたがって動的に移動される。データ・オブジェクトのアクセスのレベルが、第一階層中の、データ・オブジェクトの組分けを、データ・オブジェクトの各組分け中のデータ・オブジェクトの総計アクセス頻度およびデータ・オブジェクトへのアクセス者の現在数を含むメタデータ情報にマップする、データ構造体を用いて追跡される。
【0044】
1つ以上のデータベース・オペレーション(例えば、更新(挿入/削除)またはクエリ(データ読み出し))は、通常、一トランザクションにグループ化される。更新クエリは、テーブル中に既存のレコードを修正するために使われる。データベース上のトランザクションは、並列に行うことが可能で、これらが開始される順序は必ずしも必須ではない。これらのイベントは、データベース・トランザクション・ログ、イベント・ログなどに記録が可能である。データベース・データのストレージ・ページ(これらは固定サイズで、メモリ中の連続的な仮想アドレス領域中に格納される)は、データベース・システムのバッファ・プール・コンポーネントによって管理される。一般にバッファ・プールによって実施されるオペレーションは、バッファ・プールが管理するメモリ中へのページのローディング、ページ使用中のページ排除を防止するためのバッファ・プール・メモリ中のページのピン止め、参照カウントを介したバッファ・プール中のページの利用率の追跡、および別のページをロードするためスペースが必要なときのメモリからの(ピン止めされていない)ページの排除、を含む。
【0045】
一実施形態において、データ・オブジェクトは少なくとも2つの階層に編成される。第一階層は、データ・オブジェクトの論理的包摂の階層を含み、一部のオブジェクトは、他のデータ・オブジェクトの組分けから成る。一例において、レコードは個別値の論理的組分けである。スーパースロットは、連続的な論理的レコードの或る数の論理的組分けであり、これらは、タプル識別子によって個別に識別が可能である。一例において、タプル識別子は、順序付けされた数字列に存在し得、タプル・シーケンス数(TSN)と言われる。第二階層は、2つ以上の種類のメモリにまたがるオブジェクトの物理的編成を含み、一部のオブジェクトは他のデータ・オブジェクトの組分けを物理的に包含する。一例では、これは、個別の値を保持するメモリ・ページであってよい。スーパースロットは、テーブルの異なるカラムを包含するページを、複数の同時処理による効率的仕方で、ページのピン止めおよびピン外しのために用いることができる(これは、通常、使用中のページが排除されるのを防止するため行われ、現在の参照カウントのインクリメント/デクリメントが行われる)。一実施形態は、同時処理の間の競合を防止し(例えば、同時処理のページのピン止めおよびピン外しオペレーションを同期させるための、バッファ・プール・マネージャ内のラッチの取得を回避する)、カラム・ストアのカラムごとに1ページずつ、ページ上のこれらのTSNの場所を判定するため、連続するTSNをスーパースロット中にグループ化する。一実施形態において、スーパースロットは、特定数の行での細分性で編成されたカラム横断データ構造体である。一実施形態において、データ・オブジェクトのセットのアクセスのレベルは、第一階層によるこれらのオブジェクトの組分けを、メタデータ情報上にマップするデータ構造体を用いて追跡される。このメタデータ情報は、各セットに対する総計アクセス・カウント、アクセス頻度、および直近のアクセス・タイムを含むことができる。一実施形態において、スーパースロットは、当該データ構造体として用いることが可能で、各カラムに対する個別の参照カウントを維持しながら、スーパースロット中のどのデータベース・バッファ・プールに対しても外部で粗な参照カウントが行われる。一実施形態では、行識別子から(一切のカラム中の)当該行にまたがる全てのデータ・ページの仮想メモリ・アドレスへの直接マッピングが、スーパースロット中に格納される。一実施形態において、使用される参照カウンティングは、ポイント・クエリが対象のカラムだけをバッファ・プールに引き入れるように、階層的になっている。
【0046】
一実施形態では、メモリの種類をまたがるデータ・オブジェクトの移動は、第二(物理)階層ごとに行われる。この移動は、各オブジェクトまたはオブジェクトのセットに対し、第一階層中のオーバーラップするセットのアクセスの追跡レベルをチェックすることによって制御される。一実施形態において、データ・オブジェクトのオブジェクトまたは組分けは、追跡されている現在のアクセス・カウントが、第一階層中の全てのオーバーラップするセットについてゼロの場合においてだけ、移動することが許される。
【0047】
図4は、或る実施形態による、データ・オブジェクトのサブセットのアクセスのレベルの追跡に基づいて、2つ以上の種類のメモリにまたがって階層的データ・オブジェクトを動的に移動するためのシステムを示すブロック図である。一実施形態において、本システムは、ストレージ・ユニット1 405〜ストレージ・ユニットN406(Nは1より大きい整数)、アクセス追跡プロセッサ410、マッピング・プロセッサ415、およびオブジェクト階層プロセッサ420を包含するサーバ12を含む。一実施形態では、ストレージ・ユニット1〜N 405〜406はサーバ12の外部に在ってもよい。一実施形態において、ストレージ・ユニット1〜N 405〜406は、行/カラム/個別値、テーブルなどのオブジェクトを格納する。或るリレーショナル・データベースにおいて、一テーブル(またはファイル)が、単一トピックについての情報を行とカラムとに編成する。一実施形態では、ストレージ・ユニット1〜N 405〜406は、バッファ・プール、クラウド・ベースのストレージ、各種のオブジェクト・プールなど、いろいろな種類のメモリ・ストレージである。
【0048】
一実施形態において、オブジェクト階層プロセッサ420は、ストレージ・ユニット1〜N 405〜406にまたがって階層データ・オブジェクトを動的に移動する。一実施形態では、アクセス追跡プロセッサ410は、これらのデータ・オブジェクト(例えば、TSN)のシーケンス数の範囲をメタデータ情報上にマップするマッピング・プロセッサ415を使うことにより、データ構造体を用い、階層データ・オブジェクトの1つ以上のサブセットのアクセスのレベルを追跡し、該メタデータ情報は、アクセス・カウント、およびデータ・オブジェクトのこれらサブセットに対するデータを保持する1つ以上のメモリ・ページの場所を含む。一実施形態において、オブジェクト階層プロセッサ420は、アクセスの追跡されたレベルに基づいて、どの階層データ・オブジェクトを移動するかを判断する。
【0049】
カラム・ストア中では、テーブル中へのあらゆる挿入は、Nのページ(Nは該テーブル中のカラムの数)の修正を必要とし、同様に、あらゆるポイント・クエリは、Mのページ(Mは当該クエリにおいて参照されるカラムの数)にアクセスを必要とする。各々のかかるページ参照は、ハッシュ・テーブル(例えば、データベース・マネジメント・システム(DBMS:database management system)のバッファ・プール)中の参照カウントを更新すること、およびおそらくはラッチを取得すること(またはアトミックなリードモディファイライト命令の実施)を伴う。行へのアクセスは、ポイントまたはUDI(update(更新)、delete(削除)、insert(挿入))クエリごとに、Nのカラムへのアクセスと、ハッシュ・テーブルまたは他のマッピング・データ構造体への2Nのアクセスとを伴い、ここでNは正の整数である。Nのアクセスは、TSNをページID上にマップするために必要であり、Nのアクセスは、ページIDをバッファ・プール・アドレス上にマップする(そして、各ページに対する参照カウントをインクリメントする)ために必要である。一実施形態では、16KのTSNを包含するスーパースロット・データ構造体がシステムに実装される。
【0050】
一実施形態において、PageMapが以下のように設けられる。各カラムに対し、(start(開始)TSN,page(ページ)Ptr)のリスト。一実施形態では、スーパースロット構造体に対しキャッシュだけが使われる、すなわち、該構造体はディスク上にバックアップされない。一実施形態において、オブジェクト階層プロセッサ420は、挿入オペレーションに際し、新規TSNの追加に備えて(必要に応じスペース/ページを割り当てて)、スーパースロット・データ構造体を用いる。一実施形態において、マッピング・プロセッサは、TSNまたはTSNの範囲を、テーブル(またはオブジェクト)のカラムまたはカラムの部分範囲(もしくは下位オブジェクト)の仮想メモリ・アドレスに直接マップする。一実施形態では、ページが使用される最初のときに、バッファ・プール・ピン(当該ページが使用中であり、メモリの別の層には移動できないことを示すためのバッファ・オペレーション)が行われる。
【0051】
一実施形態において、階層参照カウントは、スーパースロットのアクセス細分性に維持され、これは、行の連続する範囲(例えば16384)に対応する。さらに、各カラムに対するアクセス・カウントもスーパースロット内に維持される。これは、データベース・バッファ・プール中のページごとの参照カウントをインクリメントするためのオーバーヘッドをほぼ完全に回避し、メモリの種類の間でのデータの細かい粒度での移動を可能にしながら、ホット・データをメモリ中に組み入れる場合に特に効率的である。例えば、個別ページはなお移動可能である。一実施形態では、マッピング・プロセッサ415は、カラム優先にレイアウトされたテーブル中で、行方式の識別子からカラム方式の識別子へのマッピングを提供する。以下では、TSNは行識別子を指す。実際のデータ・レイアウトはカラム優先であるが、2つの共通オペレーションが行優先のレイアウト結果を生成する結果となる。第一に、取り込み(ロード/挿入)がテーブルに加えられる行を生成する。これらの行は、分割して別々のカラムに付加される必要がある。第二に、ポイント・クエリが(通常、インデックス・ルックアップを介して)TSNを生成し、これらは各カラムに対するページ上にマップされる必要がある。これはパフォーマンスおよび同時処理を悪化させる。例えば、従来式のバッファ・プールおよびインデックス構造体が、TSNをカラムごとにページIDにマップするのに用いられる場合、Nのカラムを有するテーブル上でのポイント・クエリは、TSNをページIDにマップするために、Nのページ・マップに対しNの2回目のインデックス・ルックアップの後、2Nのハッシュ・テーブルへのアクセス、およびページを固定するためNのバッファ・プールの固定(これはNの参照カウントのインクリメントを伴う)を実施しなければならない。これを回避するために、一実施形態では、参照カウンティング、および(ページ・マップまたは従来式のバッファ・プールのような)ページごとの細分性ではなく、TSNの細分性でのTSNからページへのマッピング、の両方がマッピング・プロセッサ415によって実施される。一実施形態では、スーパースロット・データ構造体は、約16384のTSNに相当する。
【0052】
一実施形態において、スーパースロットは、各カラムに対する(startTSN,pagePtr)のアレイを有する。startTSNは、各ページ中の当該カラムに対する開始TSNのTSNである。境界ページは、各カラム内の隣り合うスーパースロットの間で共有することが可能である。一実施形態では、スーパースロットは、スーパースロットの行への全てのアクティブな(読み取りまたは書き込み)参照を記録するグローバル参照カウントに加えて、各カラムに対する参照カウントを含む。一実施形態において、インプレースの更新は許可されず、したがって、グローバルおよびカラムごとのカウントは、読み取り者の数のカウントを追跡するだけである。他の実施形態において、インプレース更新が許可される場合は、書き込み者の数に対する参照カウントも維持される。pagePtrはページへのポインタであり、ページは、メモリ階層が2つのレベルだけ、すなわちバッファ・プールとディスクとを有する場合は、バッファ・プール中またはディスク上に存在し得る。したがって、pagePtrは、(バッファ・プール・ページID,テーブルスペース・ページID)の結合体であり、テーブルスペース・ページIDはディスク上のページに対する識別子である。一般に、pagePtrは、メモリ階層にまたがる諸ポインタの結合体とすることが可能で、必ずしもバッファおよびディスク・ページの識別子のみを保持する必要はない。
【0053】
図5は、一実施形態による、特定のレコードにアクセスし、かかるアクセスの過程で、必要に応じアクセス・メタデータを更新し、それらのレコードを包含し且つ未だバッファ・プールにロードされていない任意のページをバッファ・プール中にロードするためのプロセスを示す。一実施形態において、ブロック510で、アクセス対象のレコードに対応するTSNが識別される。ブロック520で、TSNの範囲がアクセス対象レコードのTSNとオーバーラップするスーパースロットが識別され、それらスーパースロットに対するアクセス・メタデータがルックアップされる。ブロック530で、そのメタデータから、アクセス対象のレコードを包含するメモリ・ページが判別される。ブロック540で、判別されたメモリ・ページの各々が(バッファ・プール中の)物理メモリ中に在るかどうかが識別される。それらのいずれかがない場合、それらのページは物理メモリ中にロードされる。また、それら新規にロードされたページに対するアクセス・メタデータも初期化される。ブロック550で、これら識別されたスーパースロットの各々に対し、アクセス者の現在数がインクリメントされる。一実施形態において、ブロック560で、これらのスーパースロットに対するアクセス頻度も更新される。ブロック570で、一切の新規にロードされたページに対し、スーパースロット中のメモリ・ページ・アドレスのリストもまた更新される。
【0054】
図6は、或る実施形態による、ポイント・クエリ・オペレーションのためにTSNをページに(TSN→ページ)マッピングするためのプロセス600を示す。一実施形態において、ブロック610で、アクセス対象のテーブル(またはオブジェクト)がクエリから得られる。一実施形態では、ブロック615で、テーブルに対するカラム(例えば、下位オブジェクト)のリストがクエリから得られ、該リストはアクセスの必要があるカラムを示している。次いで、スーパースロットは、(例えば、(必要なカラムに)superslot.cols.numreaders++を実施することによって)それらのカラムの各々に対するアクセス・カウントをインクリメントする。一実施形態において、ブロック620で、スーパースロット・データ構造体上のグローバル読み取り者カウンタがインクリメントされる。一実施形態では、ブロック625で、各カラムに対しスキャン(scan(startTSN,pagePtr))が実施される。
【0055】
一実施形態において、ブロック630で、対象とするページが識別される。一実施形態では、ブロック635で、ページをバッファ・プール中に固定する必要があるかどうかが判定される。ページ固定は、ページをバッファ・プール中に固定/ピン止め/保持するオペレーションであって、まず、該ページが現在存在しない場合は、それを永続ストレージ(ディスクまたはssd)からバッファ・プール中に読み取り、当該ページが取り外し/ピン外しされるまで、当該ページに対する何らかのオペレーションの間そのページをそこに保持し、取り外し/ピン外しがされた時点より後に、バッファ・プールは当該ページを排除することを決定し得する。一実施形態において、ブロック635での判定は、対象のページがバッファ・プールに既に存在するかしないかに基づく。一実施形態では、バッファ・プール・ページが固定化(割り当て)を必要とする場合、ブロック640において、ロードされているページは、pagePtrの選択されたビットに、ページのロードが進行中であり他者はそのページのロードを試みるべきでないことを指定するインジケータ値へのコンペアアンドスワップ(cswp:compare−and−swap)を実施することによって標識される。一実施形態において、ブロック645で、cswpの返答が肯定かまたは否定かが判定される。一実施形態では、cswpが肯定値を返さない場合、プロセス600はブロック635に続く。一実施形態において、cswpが肯定値を返した場合、プロセスはページがロードされるブロック650に続く。
【0056】
一実施形態において、ブロック660で、当該ページのロードが完了し、使用の準備が整っていることを示すために、バッファ・プール・ページIDでpagePtrへのcswpが実施される。一実施形態では、ブロック665で、スーパースロットにまたがって共有されている境界ページの場合、状態は、それをポイントする第一スーパースロットに対してペンディングに設定される。一実施形態において、トランザクションが終了するときに固定解除されないページに対し、スーパースロットレベルのラッチが用いられ、どのページが固定解除可能かが決められる(superslot.cols.readerCount)。一実施形態では、BIクエリに対し、読み取り者カウントが必要とされるカラムだけについてインクリメントされることを除き、プロセス600を使うことができる。一実施形態において、プロセス600は、ページから値が読み取られるブロック670へと続き、プロセス600は完了する。
【0057】
図7は、一実施形態による、データ・オブジェクトを挿入し、アクセス・メタデータを追跡するためにスーパースロット中のメタデータを初期化するプロセスを示す。一実施形態において、ブロック710で、データ・オブジェクトにメモリ・ページが割り当てられ、該オブジェクトが格納されることになる。ブロック720で、これらのデータ・オブジェクトを格納するために何らかの新規メモリ・ページの割り当てが必要な場合、これらのページについてのアクセス情報を追跡するために、メタデータの初期化が行われる。ブロック730で、これらのオブジェクトにTSNが割り振られる。一実施形態では、TSNのいずれかが、既存のスーパースロットの範囲に入らない場合、新規のスーパースロットが生成され、初期化される。これらの新規スーパースロットには、それらのTSNに含まれたオブジェクトを保持するメモリ・ページのアドレスが格納される。
【0058】
図8は、或る実施形態による、TSNを、全カラム値が固定長を有する挿入オペレーションのためのページにマップするプロセス800を示す。一実施形態において、ブロック810で、テーブル(またはオブジェクト)がストレージから得られる。各インサータ・スレッドは、どのくらい多くの付加対象の行があるかを正確に知っており、挿入する行を取り上げる。各スーパースロットは、アトミックに変更される2つのカウンタ、すなわち、当該スーパースロット上の最大使用TSNと、当該スーパースロット上のアクティブなインサータ・スレッドの数とを有する。一実施形態では、ブロック815で、行(または下位オブジェクト)のリストがテーブルから取得される。一実施形態において、ブロック820で、新規の行のいずれかに対し必要な場合、スーパースロットが初期化される。スーパースロットが初期化される場合、全てのスロット(スロットは(startTSN,page pointer))は、必要に応じ割り当てられる、テーブル・スペース上のページで充填される(全スロットの充填、ページ割り当て)。一実施形態では、挿入オペレーションに対し、ブロック830で、TSNは、挿入される行の数だけアトミックにインクリメントされる。ブロック840で、インサータの数が1つインクリメントされる(フェッチとcswpとのループ)。
【0059】
一実施形態において、ブロック850で、当該ページがバッファ・プールへの固定を必要としているかどうかが判定される。別の実施形態において、これは、ブロック820でスーパースロットが初期化されるときに、全ページを割り当てることによって提供することも可能である。一実施形態では、ブロック850における判定は、対象のページがバッファ・プール中に既に存在するかどうかに基づく。一実施形態において、ページがバッファ・プール中への固定化を必要としない場合、制御はブロック845に流れる。一実施形態では、ページがバッファ・プール中への固定化を必要とする場合、ブロック855で、pagePtrの最後の数ビットに対しアトミックなコンペアアンドスワップ(cswp)が行われ、当該ページに対するロードがペンディングしていることを示す状態になる。一実施形態において、ブロック860で、cswpが肯定的値を返すかどうかが判定される。一実施形態では、cswpが肯定値を返さない場合、プロセス800はブロック850に戻って続く。一実施形態において、cswpが肯定値を返した場合、プロセスはブロック862に続き、ページがロードされ、次いでブロック865で、ロードされたページのアドレス(バッファ・プール・ページID)が、別のcswpオペレーションを介してpagePtr中に格納される。続いて制御はブロック845に流れる。
【0060】
一実施形態において、ブロック845で、ページ上への値に対するメモリ・コピー(memcpy)が、追加のラッチなしに行われる(ページへのTSNのマッピングはスロットをスキャンすることによって行われる)。一実施形態では、制御は次いでブロック875に流れ、アクティブなインサータの数は、フェッチとcswp命令とのループを実行することにより、アトミックにデクリメントされ、このカウントが0である場合、そのコンテンツが安定しているので、インデックス更新、圧縮、スペース回収などバックグラウンド・オペレーションが、このスーパースロットにアクセスすることができる。
【0061】
一実施形態において、可変長カラムを取り扱うために、ラッチ下の各インサータ・スレッドは、使用対象のバイトの数を示すカウンタ(各可変長フィールドに対し別個のかかるカウンタ)をインクリメントする。このカウンタがインクリメントされたならば、スレッドは、それが挿入する必要のある可変長データに対するスペースを留保したことになる。また、これは、かかる可変長カラムの数が少ない場合にも、アトミックなまたはハードウェアのトランザクション・メモリを介して行うことができる。
【0062】
一実施形態において、各テーブルは、スーパースロットへのポインタのアレイ、および使用されているスーパースロットの数のアトミックを有する。インサータが、スーパースロットへ組み入れする行よりも多くの行を挿入する必要がある場合、インサータは、まず、組み入れする行をできるだけ多く挿入する。次いで、インサータは、残りの分に対する新規のスーパースロットを形成する。これは、ラッチと待ちとを伴い、1つのスレッドが、使用スロットの数をアトミックに成功裏にインクリメントし、次いで新規スーパースロットおよびそれに対するポインタ中にcswpを形成することになり、その間、同じことをしようとする一切の他のスレッドは待っていなければならない。一実施形態において、待ちを希少にするために、プロセス800は、先行のスーパースロットが半分充填よりも多くなると、先を見越してスーパースロットを形成する。
【0063】
図9は、或る実施形態による、データ・オブジェクトのアクセスのレベルの追跡に基づいて、2つ以上の種類のメモリにまたがって階層データ・オブジェクトを動的に移動するプロセスのブロック図を示す。一実施形態において、ブロック910で、異なる種類のメモリ(例えば、スタティックRAM、ダイナミックRAM、ハード・ディスク、およびソリッド・ステート・ディスク)をまたがってデータ・オブジェクトを移動する必要があるかどうかが判定される。異なる種類のメモリをまたがってデータ・ブロックを移動する必要があると判定された場合、ブロック920で、データ・オブジェクトおよびデータ・オブジェクトの組分けの追跡されたアクセス・カウントに従って、移動対象のデータ・ブロックが選択される。その他の場合は、プロセスは開始点およびブロック910に戻って進む。ブロック930で、現在のアクセス者の追跡数が、選択されたデータ・オブジェクトにオーバーラップするデータ・オブジェクトの組分けの全てに対してゼロかどうかが判定される。ブロック930が否定の場合、プロセスはブロック920に戻って続く。その他の場合は、プロセスはブロック940へと続く。ブロック940で、選択されたデータ・ブロックは異なる種類のメモリにまたがって移動される。
【0064】
一実施形態において、本プロセスは、オブジェクト階層プロセッサによって、第一階層中のデータ・オブジェクトを論理的に編成することを含み得る。一例において、第一階層中のデータ・オブジェクトの一部は、他のデータ・オブジェクトの組分けを論理的に含む。一実施形態では、本プロセスは、オブジェクト階層プロセッサによって、第二階層中の2種類以上のメモリにまたがってデータ・オブジェクトを物理的に編成することをさらに含む。一例では、第二階層中のデータ・オブジェクトの別の部分は、他のデータ・オブジェクトの組分けを物理的に含む。本プロセスは、第二階層中のデータ・オブジェクトの組分けを2つ以上の種類のメモリにまたがって動的に移動することと、第一階層中のデータ・オブジェクトの組分けを、各データ・オブジェクトの各組分け中のデータ・オブジェクトの総計アクセス頻度およびデータ・オブジェクトへのアクセス者(例えば、クライアント、スレッド、プロセスなど)の現在数を含むメタデータ情報にマップする、データ構造体を使って、データ・オブジェクトのアクセスのレベルを追跡することとをさらに含む。
【0065】
一実施形態において、本プロセスは、移動の対象となるデータ・オブジェクトの組分けにオーバーラップする第一階層中のデータ・オブジェクト組分けのアクセスの追跡されたレベルに基づいて、データ・オブジェクトの各組分けを移動するかどうかを判定することを含み得る。一実施形態では、第二階層は、メモリ・ページおよび個別値を含み、第一階層は、データ・レコード、データ・レコードのシーケンス、および個別値を含む。一例において、アクセス頻度の低いデータ・オブジェクト、およびアクセス頻度の低いデータ・オブジェクトのデータ・オブジェクトは、より低速の種類のメモリに移動される。一実施形態において、特定のデータ・オブジェクトを移動する前に、該特定のデータ・オブジェクトにオーバーラップするデータ・オブジェクトの全ての組分けに対し、アクセス者の現在数がゼロであるかどうか、アクセス情報の追跡レベルを用いて検証が行われ、データ・オブジェクトを移動するとの決定は、所定の最少直近アクセス・タイムに基づく。
【0066】
一実施形態において、データ・レコードのシーケンス中のデータ・オブジェクトの配列はTSNによって示され、メタデータ情報は、データ・オブジェクトの組分けを保持する1つ以上のメモリ・ページのアドレスを含む。一例において、データ構造体は、データ・レコードの論理的集合を識別する連続の特定数のTSNの論理的組分けのリスト、およびデータ・オブジェクトの論理的組分けに対するメタデータ情報のリストを含む。一実施形態では、追加のデータ・オブジェクトを加えるオペレーションの実行に際し、1つ以上のメモリ・ページが、追加のデータ・オブジェクトを保持するための必要に応じて割り当てられ、割り当てられたメモリ・ページが、第二階層中の組分けへのデータ・オブジェクトの割り振りを定め、追加のデータ・オブジェクトは、第一階層中の1つ以上の組分けにも割り振られる。
【0067】
当業者には当然のことながら、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている一つ以上のコンピュータ可読媒体(群)中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
【0068】
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることが可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体であっても、コンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいは前述の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であってよい。
【0069】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であってよい。
【0070】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【0071】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことも可能である。
【0072】
本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を上記で説明している。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。
【0073】
また、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能/動作を実装する命令群を包含する製造品を作り出すようにすることができる。
【0074】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実施させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
【0075】
図面のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、または命令の部分を表し得る。一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得る。例えば、連続して示された2つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステムによって実装すること、または特殊用途ハードウェアとコンピュータ命令との組み合わせを実行することによって可能なことにも留意すべきである。
【0076】
特許請求の範囲中の単数形での要素への言及は、明示でそう述べられていない限り、「唯一無二」でなく、むしろ「1つ以上」を意味することが意図されている。当業者には現在既知のまたは今後知られることになる、前述の例示的な実施形態の要素の全ての構造的および機能的等価物は、本請求の範囲に網羅されることが意図されている。本明細書中のどの請求要素も、その要素が語句「ための手段」または「のためのステップ」を用いて明示で述べられている場合を除き、合衆国法典第35巻第112条第6パラグラフの条件の下で解釈されるべきではない。
【0077】
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある(“a”、“an”)」、および「該(“the”)」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに当然のことながら、本明細書で用いられる「含む(“comprise”)」もしくは「含んでいる(“comprising”)」またはその両方は、述べられた特徴、完全体(integer)、ステップ、オペレーション、要素、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、要素、コンポーネント、もしくはこれらの群、または上記のいずれかの組み合わせの存在または追加を排除するものではない。
【0078】
添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を実施するための、一切の構造、材料または動作を包含することが意図されている。本発明の記述は、例示および説明の目的で提示されたものであり、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。実施形態は、本発明の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えた様々な実施形態に関して、本発明を理解できるように選択し説明されたものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9