(57)【要約】【課題】ＯＬＴＰシステムおよびＯＬＡＰシステムの両方を同種のデータベースで実行する際の不都合を解消する。【解決手段】本発明の諸実施形態は、ＯＬＴＰ（ｏｎｌｉｎｅ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ）トランザクションを列ベース記憶部のデータベースで処理するためのシステムおよび方法を提供することができる。当該方法は、当該列ベース記憶部でデータにアクセスするためのＯＬＴＰトランザクションの要求を受信するステップを含むことができる。当該データベースに関連付けられたキャッシュがＯＬＴＰトランザクションの列情報を含むかどうかを判定することができる。当該キャッシュがＯＬＴＰトランザクションの列情報を含む場合は、当該方法は、ＯＬＴＰトランザクションを当該キャッシュ内の列情報で処理することができる。当該キャッシュがＯＬＴＰトランザクションの列情報を含まない場合には、当該方法は、データベースの列ベース記憶部から列を選択することができる。【選択図】図１
2014120153.tif 000002
【特許請求の範囲】
【請求項１】
データベースの列ベース記憶部内のデータにアクセスするための、ＯＬＴＰ（ｏｎｌｉｎｅ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ）トランザクションに対する要求を受信するステップと、
キャッシュが前記ＯＬＴＰトランザクションの列情報を含む場合には、前記ＯＬＴＰトランザクションを前記キャッシュに含まれる前記列情報で処理するステップと、
前記キャッシュが前記ＯＬＴＰトランザクションの前記列情報を含まない場合には、列を前記データベースの前記列ベース記憶部から選択するステップと、
を含む、方法。
【請求項２】
前記キャッシュは前記データベースに関連付けられ、前記方法はさらに、前記キャッシュが前記ＯＬＴＰトランザクションの前記列情報を含むかどうかを判定するステップを含む、請求項１に記載の方法。
【請求項３】
前記データベースの前記列ベース記憶内のデータにアクセスするための、ＯＬＡＰ（ｏｎｌｉｎｅ  ａｎａｌｙｔｉｃａｌ  ｐｒｏｃｅｓｓｉｎｇ）トランザクションに対する要求を受信するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記データベースの前記列ベース記憶部から列を選択するステップは、前記ＯＬＴＰトランザクションに関連する列を有するテーブルの列の全てを選択するステップを含む、請求項１に記載の方法。
【請求項５】
前記データベースの前記列ベース記憶部から選択された列は、前記ＯＬＴＰトランザクションで必要な少なくとも１つの列と、前記ＯＬＴＰトランザクションに必要でない少なくとも１つの列とを含む、請求項４に記載の方法。
【請求項６】
前記キャッシュは少なくとも１つの過去の要求からの列情報を含む、請求項１に記載の方法。
【請求項７】
前記データベースの前記列ベース記憶部から選択した前記列の名前または索引をキャッシュするステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記データベースの前記列ベース記憶部から選択した前記列の名前または索引をキャッシュするステップと、
前記列の名前または索引をキャッシュした後、前記ＯＬＴＰトランザクションを前記キャッシュ内の前記列情報で処理するステップと、
をさらに含む、請求項１に記載の方法。
【請求項９】
前記ＯＬＴＰトランザクションを前記キャッシュ内の前記列情報で処理するステップは、前記ＯＬＴＰトランザクションを最適化して前記キャッシュ内にあるが前記データベース内にない前記列情報にアクセスするステップを含む、請求項１に記載の方法。
【請求項１０】
前記データベースに関連付けられた前記キャッシュが前記ＯＬＴＰトランザクションの前記列情報を含むかどうかを判定するステップは、前記ＯＬＴＰトランザクションを過去に処理したＯＬＴＰトランザクションと比較するステップを含む、請求項２に記載の方法。
【請求項１１】
データベースの列ベース記憶部内のデータにアクセスするための、ＯＬＴＰ（ｏｎｌｉｎｅ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ）トランザクションに対する要求を受信し、
前記データベースに関連付けられたキャッシュが前記ＯＬＴＰトランザクションの列情報を含むかどうかを判定し、
前記キャッシュが前記ＯＬＴＰトランザクションの列情報を含む場合には、前記ＯＬＴＰトランザクションを前記キャッシュに含まれる前記列情報で処理し、
前記キャッシュが前記ＯＬＴＰトランザクションの前記列情報を含まない場合には、列を前記データベースの前記列ベース記憶部から選択する、
命令を含む、プロセッサにより実行するように構成された１つまたは複数のプログラムを格納した、非一時的なコンピュータ読取可能記憶媒体。
【請求項１２】
前記データベースの前記列ベース記憶内のデータにアクセスするための、ＯＬＡＰ（ｏｎｌｉｎｅ  ａｎａｌｙｔｉｃａｌ  ｐｒｏｃｅｓｓｉｎｇ）トランザクションに対する要求を受信する命令をさらに含む、請求項１１に記載のコンピュータ読取可能記憶媒体。
【請求項１３】
前記データベースの前記列ベース記憶部から列を選択することは、前記ＯＬＴＰトランザクションに関連する列を有するテーブルの列の全てを選択することを含む、請求項１１に記載のコンピュータ読取可能記憶媒体。
【請求項１４】
前記データベースの前記列ベース記憶部から選択された列は、前記ＯＬＴＰトランザクションで必要な少なくとも１つの列と、前記ＯＬＴＰトランザクションに必要でない少なくとも１つの列とを含む、請求項１３に記載のコンピュータ読取可能記憶媒体。
【請求項１５】
前記キャッシュは少なくとも１つの過去の要求からの列情報を含む、請求項１１に記載のコンピュータ読取可能記憶媒体。
【請求項１６】
前記データベースの前記列ベース記憶部から選択した前記列の名前または索引をキャッシュする命令をさらに含む、請求項１１に記載のコンピュータ読取可能記憶媒体。
【請求項１７】
前記データベースの前記列ベース記憶部から選択した前記列の名前または索引をキャッシュし、
前記列の名前または索引をキャッシュした後、前記ＯＬＴＰトランザクションを前記キャッシュ内の前記列情報で処理する、
命令をさらに含む、請求項１１に記載のコンピュータ読取可能記憶媒体。
【請求項１８】
前記ＯＬＴＰトランザクションを前記キャッシュ内の前記列情報で処理することは、前記ＯＬＴＰトランザクションを最適化して前記キャッシュ内にあるが前記データベース内にない前記列情報にアクセスすることを含む、請求項１１に記載のコンピュータ読取可能記憶媒体。
【請求項１９】
前記データベースに関連付けられた前記キャッシュが前記ＯＬＴＰトランザクションの前記列情報を含むかどうかを判定することは、前記ＯＬＴＰトランザクションを過去に処理したＯＬＴＰトランザクションと比較することを含む、請求項１１に記載のコンピュータ読取可能記憶媒体。
【請求項２０】
１つまたは複数のプロセッサと、
データベースの列ベース記憶部内のデータにアクセスするための、ＯＬＡＰ（ｏｎｌｉｎｅ  ａｎａｌｙｔｉｃａｌ  ｐｒｏｃｅｓｓｉｎｇ）トランザクションに対する要求を受信し、
前記データベースの前記列ベース記憶内のデータにアクセスするための、ＯＬＴＰ（ｏｎｌｉｎｅ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ）トランザクションに対する要求を受信し、
前記データベースに関連付けられたキャッシュが前記ＯＬＴＰトランザクションの列情報を含むかどうかを判定し、
前記キャッシュが前記ＯＬＴＰトランザクションの列情報を含む場合には、前記ＯＬＴＰトランザクションを前記キャッシュ内の前記列情報で処理し、
前記キャッシュが前記ＯＬＴＰトランザクションの列情報を含まない場合には、前記データベースの前記列ベース記憶部から列を選択し、
前記データベースの前記列ベース記憶部から選択した前記列の名前または索引をキャッシュし、
前記列の名前または索引をキャッシュした後、前記ＯＬＴＰトランザクションを前記キャッシュ内の前記列情報で処理する、
命令を含む、前記１つまたは複数のプロセッサにより実行するための１つまたは複数のプログラムを格納したメモリと、
を備える、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
ＯＬＴＰ（Ｏｎｌｉｎｅ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）システムおよびＯＬＡＰ（Ｏｎｌｉｎｅ  Ａｎａｌｙｔｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ）システムがデータベース・コミュニティで使用されている。ＯＬＴＰシステムは一般にトランザクション指向アプリケーションにおいて使用され、多数のショート・トランザクション（例えば、挿入、更新、削除、選択）が当該アプリケーションによって行われる。ＯＬＴＰシステムでは、要素のリストがディスクに格納され、データベース・サーバの主記憶にキャッシュされる。ＯＬＴＰシステムは一般に、行指向の関係データベースで使用されている。
【０００２】
一般に、ＯＬＡＰシステムはクエリが非常に複雑である分析指向のアプリケーション（例えば、分析アプリケーションおよびフィナンシャル・プランニング・アプリケーション）で使用される。ＯＬＡＰシステムでは、属性が辞書を用いて圧縮され、多次元のクエリを作成することができる。一般に、ＯＬＴＰシステムは列指向の関係データベースで使用されている。
【０００３】
各システムの利点のため、ＯＬＴＰシステムおよびＯＬＡＰシステムは従来別々になっており、アプリケーションは片方の環境かまたは他方の環境をサポートするように設計されていた。しかし、近年、データベース・コミュニティではインメモリ・コンピューティングと並列コンピューティング技術に注目がますます集まっている。これらの技術の結果、ＯＬＴＰシステムおよびＯＬＡＰシステムが同一のデータベースで利用されている。例えば、ＯＬＴＰトランザクションおよびＯＬＡＰトランザクションが同一の列ベースのインメモリ・データベース（例えば、ＳＡＰ（登録商標）ＨＡＮＡデータベース）で利用されている。かかる取組みは、システムの総コストと複雑性の低減に対する関心により推進されてきた。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、ＯＬＴＰシステムおよびＯＬＡＰシステムの各々は特定の種類のデータベースで効率的に動作するように設計されているため、ＯＬＴＰシステムおよびＯＬＡＰシステムの両方を同種のデータベースで実行すると何らかの不都合が発生するおそれがある。例えば、ＯＬＡＰシステムを列ベースの記憶データベースで利用すると効率が高まるが、ＯＬＴＰシステムをかかるデータベースで利用しても、従来の行ベースのデータベースにおけるＯＬＴＰシステムの性能と比べると効率は高まらない。列ベースのインメモリ・データベースにおけるＯＬＴＰシステムの性能を高めるための方法（例えば、計算ロジックを、それをより高速に実行できるデータベース層に押し下げること）が提案されている。しかし、これらの方法でも、アプリケーションのコードは依然として要求データにデータベースからアクセスするためのクエリを含むこととなる。
【課題を解決するための手段】
【０００５】
本発明の１態様によれば、データベースの列ベース記憶部内のデータにアクセスするための、ＯＬＴＰ（ｏｎｌｉｎｅ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ）  トランザクションに対する要求を受信するステップと、キャッシュが当該ＯＬＴＰトランザクションの列情報を含む場合には、当該ＯＬＴＰトランザクションを当該キャッシュに含まれる当該列情報で処理するステップと、当該キャッシュが当該ＯＬＴＰトランザクションの当該列情報を含まない場合には、列を当該データベースの当該列ベース記憶部から選択するステップと、を含む方法が提供される。
【０００６】
添付図面は様々な態様を例示し、その説明とともに、当該諸態様の原理をさらに説明し当業者が当該諸態様を構成し利用できるようにするものである。
【図面の簡単な説明】
【０００７】
【図１】フィードを生成するプロセスの１実施形態を示す図である。
【図２】本発明の例示的な実施形態に従ってデータベースに対するトランザクションを処理するための方法を示す図である。
【図３】例示的なコンピュータ・システムのブロック図である。
【発明を実施するための形態】
【０００８】
本発明の諸実施形態では、ＯＬＴＰ（ｏｎｌｉｎｅ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ）トランザクションをデータベースの列ベース記憶部で処理するシステムおよび方法を提供することができる。当該方法は、列ベース記憶部上のデータにアクセスするためのＯＬＴＰトランザクション要求を受信することを含んでもよい。データベースに関連付けられたキャッシュがＯＬＴＰトランザクションの列情報を含むかどうかを判定してもよい。当該キャッシュがＯＬＴＰトランザクションの列情報を含む場合は、当該方法は、当該ＯＬＴＰトランザクションを当該キャッシュ内の当該列情報で処理してもよい。当該キャッシュがＯＬＴＰトランザクションの列情報を含まない場合には、当該方法は、列をデータベースの列ベース記憶部から選択してもよい。
【０００９】
本発明の諸実施形態では、データベース内の不要な列情報にアクセスするためのクエリの発行を最小限にするスマートなクエリ最適化機構を提供する。当該諸実施形態では、列ベースのデータベース（例えば、ＳＡＰ（登録商標）ＨＡＮＡデータベース。但し、これに限らない）でのＯＬＴＰトランザクションの性能を改善する。
【００１０】
図１は、データベースでＯＬＴＰトランザクションとＯＬＡＰトランザクションを実装するためのシステムの１実施形態を示す。当該システムは、ＯＬＡＰトランザクション１１２およびＯＬＴＰトランザクション１１４を発行するアプリケーション１１０と、データベース１２０を備えてもよい。ＯＬＴＰトランザクションとＯＬＡＰトランザクションの両方を、列ベース記憶部を含むデータベース上で本発明の様々な諸実施形態に従って効率的に処理し、データベースの応答時間を短縮することができる。例えば、ＯＬＴＰトランザクションの情報がキャッシュ内で利用可能であるときに関心のあるフィールドのみを読み出すようにＯＬＴＰトランザクションを構成することによって、データベースの応答時間を短縮することができる。
【００１１】
特に、学習モードと学習済みモードを設けることにより、ＯＬＴＰトランザクションを効率的に処理することができる。学習モードでは、テーブルの列全てをＯＬＴＰトランザクションに基づいて選択してもよく、選択された列に関する情報をキャッシュに含めることができる。学習済みモードでは、キャッシュ内の情報を使用してＯＬＴＰトランザクションを処理することができる。ＯＬＴＰトランザクションに関する情報がキャッシュ内で利用可能である場合には、学習モードを省略してもよい。
【００１２】
アプリケーション１１０は、ＯＬＡＰトランザクション１１２および／またはＯＬＴＰトランザクション１１４を介してデータベース１２０内の情報にアクセスするアプリケーションであってもよい。アプリケーション１１０はデータベース１２０にアクセスして、販売、顧客関係管理、在庫、運用、金融資源および人的資源を管理および／または支援提供するための情報を取得してもよい。アプリケーション１１０は、組織情報の内的管理と外的管理を統合する統合型企業資源計画アプリケーション（例えば、ＳＡＰ（登録商標）Ｂｕｓｉｎｅｓｓ  Ｏｎｅ）であってもよい。アプリケーション１１０が、複数のデータベース１２０からの情報にアクセスしてもよい。複数のアプリケーション１１０が、１つまたは複数のデータベース１２０からの情報にアクセスしてもよい。
【００１３】
データベース１２０は、列ベース記憶部を用いたインメモリ・データベース（例えば、ＳＡＰ（登録商標）ＨＡＮＡデータベース）であってもよいが、そのようには限定されない。データベース１２０は、関係データベース・エンジンを有する関係データベースであってもよい。インメモリ・データベースにより、データをアプリケーション層で格納して当該データを複数のデータベース間で送信するのではなく当該データを計算にすぐ利用できるようにしておくことによって、大規模なデータ・セットをより高速に計算することができる。
【００１４】
データベース１２０は、関係データを列に格納する列ベース記憶部１２２と、関係データを行に格納する行ベース記憶部１２４を備えてもよい。１実施形態では、データベース１２０が列ベース記憶部１２２のみを備えてもよい。列ベース記憶部１２２により、列の値を隣接メモリ位置に格納することができ、行指向の記憶部によりテーブルを１つの行に一連のレコードとして格納することができる。
【００１５】
データベース１２０内のデータに、１つまたは複数のアプリケーション１１０により実装された様々なインタフェースを介してアクセスしてもよい。当該インタフェースには、ＳＱＬ、ＭＤＸ、およびＢＩＣＳを含めてもよいがそのようには限定されない。アプリケーション１１０は利用可能なインタフェースを用いて要求を発行してもよい。当該要求は、ＯＬＴＰトランザクションおよび／またはＯＬＡＰトランザクションであってもよい。当該要求が、データベース１２０内の特定のデータにアクセスするものか、または、データベース１２０内のデータに対して計算もしくは分析を行うものであってもよい。データをアプリケーション層に移すことなく、当該計算または分析をアプリケーション１１０からの要求に応答してデータベース１２０内で実施してもよい。
【００１６】
データベース１２０が、データおよび／または当該データに関する情報をデータベース１２０に格納するためのキャッシュ１２６（例えば、データベース１１０のメモリ）を備えてもよい。図１に示すように、キャッシュ１２６はデータベースの一部である必要はなく、データベース１２０から独立していてもよい。キャッシュ１２６は、データベース１２０へのアクセス要求で最近参照された情報を保持してもよい。キャッシュ１２６により、かかる情報をプロセッサの近傍で保持することができる。当該キャッシュを使用して、データベース１２０内のデータへのアクセス要求に応答してデータおよび／または当該データに関する情報をデータベース１２０に格納してもよい。共通のキャッシュ１２６を複数のデータベース１２０に対して利用してもよい。
【００１７】
列ベース記憶部１２２により、データベース１２０に格納される情報の密度が増大する。列ベース記憶部１２２内のデータへのアクセス要求の結果、より多くの情報がキャッシュ１２６にロードされて一度に処理されることとなる。したがって、行ベース記憶部１２２内の要求と比べて、列ベース記憶部１２２からキャッシュ１２６へロードする動作はあまり必要でない。しかし、列ベース記憶部１２２内でデータにアクセスするたびに、テーブルの列全てが選択される。したがって、当該要求に関連しない列でさえも選択されてキャッシュに取り出される可能性がある。かかるクエリには当該要求に関連しない列が含まれるので、当該列によりデータベース１２０の応答時間が増大する可能性がある。当該応答時間は、列が多数になると大幅に増大する。
【００１８】
例えば、クエリにより製品の販売注文の追加を要求することができる。かかるクエリに対して、当該製品の情報がデータベースから必要である。当該クエリは、例えば、「ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  ［ＰＲＯＤＵＣＴ  ＮＡＭＥ］」を用いて製品のレコード全体をデータベース１２０に要求する。単価と重量の列のみが販売注文を追加するのに必要であるかもしれないのに、当該レコードは当該販売注文に対して必要でない製品情報（例えば、製品の仕様または製造スケジュール）を含むかもしれない。かかる要求は行ベース記憶部１２４では許容できるかもしれないが、列ベース記憶部１２２の応答時間を大幅に増大させるおそれがある。なぜならば、列ベース記憶部では、時間のコストがクエリの列数に対して敏感であるからである。
【００１９】
データベース１２０にアクセスするためのクエリを処理して、キャッシュ１２６が当該クエリの列情報を含むかどうかを判定してもよい。キャッシュ１２６に含まれる列情報をクエリ最適化機構により判断して、列データ（例えば、ファイル名および／または索引）を１つまたは複数の過去のトランザクションから学習しキャッシュしてもよい。当該キャッシュがクエリの列情報を含む場合には、当該クエリを処理してデータベース１２０の列全てにアクセスする必要はない。したがって、不要な列に全てのクエリでアクセスする必要はない。クエリに必要な列情報をキャッシュが含まないとき、当該クエリに応答してデータベース１２０にアクセスしてもよい。
【００２０】
図２は、本発明の例示的な実施形態に従ってデータベースに対するトランザクションを処理するための方法を示す。当該方法２００を、列ベース記憶部を有するインメモリ・データベース（例えば、ＳＡＰ（登録商標）ＨＡＮＡデータベース）上でＯＬＡＰトランザクションとＯＬＴＰトランザクションを処理するように構成されたシステムに実装してもよい。当該方法は、トランザクションに対する要求を受信するステップ（ブロック２１０）と、キャッシュが当該トランザクションの列情報を含むかどうかを判定するステップ（ブロック２２０）と、当該キャッシュが当該トランザクションの列情報を含まない場合には学習モードに入るステップ（ブロック２３０）と、キャッシュが当該トランザクションの列情報を含む場合には学習済みモードに入るステップ（ブロック２４０）とを含んでもよい。学習モードでは、当該方法２００は、列を選択するステップ（ブロック２３２）と、トランザクションで使用される当該列の名前および／または索引をキャッシュするステップ（ブロック２３４）とを含んでもよい。学習済みモードでは、当該方法２００は、トランザクションを最適化してキャッシュ内の列を選択するステップ（ブロック２４２）を含んでもよい。
【００２１】
トランザクション要求（ブロック２１０）が、ユーザがアプリケーションを介してトランザクションを開始するために作成した要求であってもよい。当該要求をアプリケーション層で発行してもよい。当該トランザクションは、１つまたは複数のデータベース（例えば、列ベース記憶部を有するデータベース）内のデータにアクセスするためのＯＬＴＰトランザクションまたはＯＬＡＰトランザクションであってもよい。要求されたトランザクションがＯＬＴＰトランザクションであるかどうかを判定してもよい（ブロック２１２）。当該要求がＯＬＴＰトランザクションでない場合（例えば、ＯＬＡＰトランザクション）、当該トランザクションに対する要求を処理することができる（ブロック２１４）。当該要求がＯＬＴＰトランザクションに対するものである場合は、当該ＯＬＴＰトランザクションを処理して、キャッシュが当該トランザクションの列情報を含むかどうかを判定することができる（ブロック２２０）。トランザクションに対する要求が複数のトランザクションに対する要求を含んでもよく、各トランザクションを個別にまたは一群のトランザクションとして処理することができる。
【００２２】
ＯＬＴＰトランザクションを多数のショート・トランザクション（例えば、ＳＥＬＥＣＴ、ＤＥＬＥＴＥ、ＩＮＳＥＲＴ、ＵＰＤＡＴＥ）により特徴付けてもよい。例えば、当該ＯＬＴＰトランザクションが、販売注文または顧客情報の追加を含んでもよいが、そのようには限定されない。トランザクションに対する要求に応答して、問い合わせられたデータおよび／またはデータオブジェクトをロードするためのクエリを発行してもよい。
【００２３】
要求がＯＬＴＰトランザクションである場合には、データベースに関連付けられたキャッシュが当該トランザクションの列情報を含むかどうかを判定してもよい（ブロック２２０）。当該キャッシュが、キャッシュにロードして処理するための情報を含んでもよい。当該キャッシュが、特定にクエリと関連のない列を含んでもよい。キャッシュ内の情報を、１つまたは複数の先行クエリに応答してロードしてもよい。キャッシュ内の情報（例えば、テーブルのフィールド名および／または索引）を、ＯＬＴＰトランザクションに必要な情報と比較してもよい。当該キャッシュが当該トランザクションに必要な情報を含むかどうかを判定すると（ブロック２２０）、当該要求のトランザクションおよび／またはクエリを、システムが処理した過去のトランザクションおよび／またはクエリと比較してもよい。当該キャッシュが、過去に処理したトランザクションおよび／またはクエリの種類を含んでもよい。
【００２４】
ＯＬＴＰトランザクションに必要な情報がキャッシュに含まれない場合には、学習モードに入ってもよい（ブロック２３０）。学習モードでは、当該ＯＬＴＰトランザクションに基づいてテーブルの列を選択してもよい（ブロック２３２）。当該選択をクエリ（例えば、ＳＥＬＥＣＴ＊）に応答して行って、テーブルの列全てを選択してもよい。当該選択を、複数のテーブルから行って、当該テーブル内の列全てを選択してもよい。ＯＬＴＰトランザクションで使用される列の名前および／または索引をキャッシュし（ブロック２３４）かつ／または当該ＯＬＴＰトランザクションに関連付けてもよい。クエリに応答して選択した列の名前および／または索引の全てをキャッシュし（ブロック２３４）かつ／またはＯＬＴＰトランザクションに関連付けてもよい。
【００２５】
ＯＬＴＰトランザクションに必要な情報がキャッシュに含まれる場合は、学習済みモードに入ってもよい（ブロック２４０）。学習済みモードでは、ＯＬＴＰトランザクションに関連付けられた情報が既にキャッシュ内で提供されているので、クエリを処理してデータ（例えば、必要なデータと不要なデータ）をデータベースから取り出す必要はない。データベースに対するかかるクエリ（例えば、ＳＥＬＥＣＴ＊）は、不要な時間を消費し、ＯＬＴＰトランザクションに必要でないかもしれない列を選択するはずである。学習済みモードに入ると、キャッシュ内で提供される情報を利用することによって、時間のコストと計算のコストが削減される。ＯＬＴＰトランザクションを、キャッシュ内で利用可能な情報に基づいて学習済みモードで処理してもよい。
【００２６】
学習済みモードでは、当該方法は、ＯＬＴＰトランザクションのクエリを最適化するステップ（ブロック２４２）を含んでもよい。当該ＯＬＴＰトランザクションのクエリを最適化するステップが、キャッシュされた列のみおよび／またはトランザクションに必要な列のみが問い合わせられるように、実行前に当該クエリを最適化するステップを含んでもよい。
【００２７】
クエリを最適化するステップがクエリを書き換えるステップを含んでもよい。当該クエリを、過去のトランザクションの実行に基づいて書き換えてもよい。書き換えられたクエリにより、元のクエリが提供した結果を、同じデータ構造を用いて提供してもよい。例えば、クエリ「ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  ＴＡＢＬＥ１  ＷＨＥＲＥ  ＫＥＹ  ＝」を特定のトランザクション（例えば、販売注文の追加）で実行するとき、当該クエリは、ＴＡＢＬＥ１の列の全てを取り出さずに、当該トランザクションに必要なＴＡＢＬＥ１の列情報の全てを過去のトランザクション（例えば、学習モードで実行したトランザクション）に基づいて取り出すことができる。元のクエリを例えば「ＳＥＬＥＣＴ  Ｃｏｌ１、  Ｃｏｌ２．．．、ＦＲＯＭ  ＴＡＢＬＥ１  ＷＨＥＲＥ  ＫＥＹ  ＝」に書き換えてもよい。ここで、Ｃｏｌ１、Ｃｏｌ２はトランザクションに必要な列である。書き換えたクエリをＤＢＭＳ（ｄａｔａｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）に送信してもよい。（例えば、既存のビジネス・ロジック層との）互換性のため、元のクエリが返したはずである同一のデータ構造を有する結果を、書き換えたクエリが返してもよい。トランザクションに必要な列をＤＢＭＳからのデータで埋めてもよく、トランザクションに必要でない列を他の値（例えば、偽の値、デフォルトの値、またはランダムな値）で埋めてもよい。同一のデータ構造で結果を提供することで、様々な層（例えば、ビジネス・ロジック層）の性能を、これらの層を変更することなく高めることができる。ＥＲＰシステムのようなシステムでは、これらの層のうち幾つかは大規模であり、変更すると大幅に時間および／コストが増大するはずである。
【００２８】
学習済みモードでは、学習モードに入る選択肢を含めてもよい（ブロック２４４）。幾つかの列へのアクセスがキャッシュに存在しないと判定された場合には、学習済みモードの間に学習モードに入ってもよい。当該判定を、ＯＬＴＰトランザクションのクエリの最適化が行われたとき（ブロック２４２）に行ってもよい。学習済みモードから学習モードへの切替えを、キャッシュ内の情報が失われたことに応答して自動的に行ってもよい。学習モードでは、テーブルの列の全てを問い合わせてもよく、アクセスされた列でキャッシュをリフレッシュすることができる。
【００２９】
幾つかの実施形態では、上述の方法を１つまたは複数のソフトウェア・コンポーネントとして書いてもよい。これらのコンポーネントおよび各々に関連する機能を、クライアント、サーバ、分散コンピュータ・システム、またはピア・コンピュータ・システムによって使用してもよい。これらのコンポーネントを、関数型言語、宣言型言語、手続き型言語、オブジェクト指向言語、低レベル言語等のような１つまたは複数のプログラミング言語に対応するコンピュータ言語で書いてもよい。これらのコンポーネントを、様々なアプリケーション・プログラミング・インタフェースを介して他のコンポーネントに接続し、サーバまたはクライアントに対する１つの完全なアプリケーションにコンパイルしてもよい。あるいは、当該コンポーネントをサーバおよびクライアントのアプリケーションで実装してもよい。さらに、これらのコンポーネントを、様々な分散プログラミング・プロトコルを介して互いに接続してもよい。幾つかの例示的な実施形態では、リモート・プロシージャ呼出しを用いてこれらのコンポーネントのうち１つまたは複数を分散プログラミング環境にわたって実装してもよい。例えば、ロジック・レベルが、インタフェースレベル（例えば、グラフィカル・ユーザ・インタフェース）を含む第２のコンピュータ・システムからリモートに配置された第１のコンピュータ・システムに存在してもよい。これらの第１のおよび第２のコンピュータ・システムを、サーバ・クライアント、ピア・ツー・ピア、または他の何らかの構成で構成することができる。当該クライアントの複雑性は、モバイル装置およびハンドヘルド装置からシン・クライアント、シック・クライアント、または他のサーバまで様々である。
【００３０】
上述のソフトウェア・コンポーネントは、命令としてコンピュータ読取可能記憶媒体に有形的に格納される。「コンピュータ読取可能記憶媒体」という用語は、１つまたは複数の組の命令を格納する単一の媒体または複数の媒体を含むように捉えるべきである。「コンピュータ読取可能記憶媒体」という用語は、コンピュータ・システムにより実行するための１組の命令を物理的に格納し、符号化し、または運搬するために１組の物理的変更を受けることができる任意の物理的製品を含むように捉えるべきである。当該命令は、コンピュータ・システムに、本明細書で説明し、表現し、または例示した方法またはプロセスのステップのうち任意のものを実施させる。コンピュータ読取可能記憶媒体の例には、ハードディスク、フロッピディスク、および磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤおよびホログラフィック装置のような光媒体、光磁気媒体、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ＰＬＤ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅｓ）ならびにＲＯＭおよびＲＡＭ装置のような、格納と実行に特に構成されたハードウェア装置が含まれるがこれらに限らない。コンピュータ読取可能命令の例には、コンパイラによって生成されたもののような機械コード、インタプリタを用いてコンピュータにより実行される高レベルなコードを含むファイルがある。例えば、本発明の１実施形態を、Ｊａｖａ、Ｃ＋＋、または他のオブジェクト指向プログラミング言語および開発ツールを用いて実装してもよい。本発明の他の実施形態を、機械読取可能ソフトウェア命令の代わりに、または、機械読取可能ソフトウェア命令と組み合わせて、ハードワイヤード回路で実装してもよい。
【００３１】
図３は、例示的なコンピュータ・システム３００のブロック図である。コンピュータ・システム３００は、本発明の上述の方法を実施するための、コンピュータ読取可能記憶媒体３５５に格納したソフトウェア命令またはコードを実行するプロセッサ３０５を備える。コンピュータ・システム３００は、命令をコンピュータ読取可能記憶媒体３５５から読み取り、当該命令を記憶部３１０またはＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）３１５に格納する媒体読取器３４０を備える。記憶部３１０は、少なくとも幾つかの命令を後の実行のために格納できる、静的データを保持するための大規模な空間を提供する。格納された命令をさらにコンパイルして、当該命令の他の表現を生成しＲＡＭ３１５に動的に格納してもよい。プロセッサ３０５は、命令をＲＡＭ３１５から読み取り、指示されたように動作を実施する。本発明の１実施形態によれば、コンピュータ・システム３００はさらに、少なくとも幾つかの実行結果を出力として提供するための出力装置３２５（例えば、ディスプレイ）と、データを入力するための手段をユーザもしくは別の装置に提供しかつ／またはコンピュータ・システム３００と対話するための入力装置３００とを備える。上記出力にはユーザに対する視覚的情報が含まれるがこれに限らない。これらの出力装置３２５および入力装置３３０の各々を１つまたは複数の追加の周辺装置により接続して、コンピュータ・システム３００の能力をさらに拡張することができる。ネットワーク通信器３３５を提供して、コンピュータ・システム３００をネットワーク３５０に接続し、当該ネットワーク３５０に接続された他の装置に接続してもよい。当該他の装置には、例えば、他のクライアント、サーバ、データ記憶部、およびインタフェースが含まれる。コンピュータ・システム３００のモジュールは、バス３４５を介して相互接続される。コンピュータ・システム３００は、データ・ソース３６０にアクセスするためのデータ・ソース・インタフェース３２０を備える。データ・ソース３６０に、ハードウェアまたはソフトウェアで実装された１つまたは複数の抽象化層を介してアクセスすることができる。例えば、ネットワーク３５０によりデータ・ソース３６０にアクセスしてもよい。幾つかの実施形態では、データ・ソース３６０に、セマンティクス層のような抽象化層を介してアクセスしてもよい。
【００３２】
データ・ソースは情報源である。データ・ソースは、データの記憶と抽出を可能とするデータのソースを含む。データ・ソースは、関係データベース、トランザクション・データベース、階層データベース、多次元（例えば、ＯＬＡＰ）データベース、オブジェクト指向データベース等のようなデータベースを含んでもよい。さらに、データ・ソースには、表形式データ（例えば、スプレッドシート、区切りテキスト・ファイル）、マークアップ言語でタグ付けされたデータ（例えば、ＸＭＬデータ）、トランザクション・データ、未構造化データ（例えば、テキスト・ファイル、スクリーン・スクレイピング）、階層データ（例えば、ファイル・システム内のデータ、ＸＭＬデータ）、ファイル、複数のレポート、および、基盤となるソフトウェア・システム（例えば、ＥＲＰシステム）により生成された、ＯＤＢＣ（Ｏｐｅｎ  Ｄａｔａｂａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）のような確立されたプロトコルを通じてアクセス可能な他の任意のデータ・ソース等が含まれる。データ・ソースはまた、データ・ストリーム、ブロードキャスト・データ等のような、データが有形的に格納されないかまたは一時的であるデータ・ソースを含んでもよい。これらのデータ・ソースが、関連するデータ基盤、セマンティクス層、管理システム、セキュリティ・システム等を含んでもよい。
【００３３】
セマンティクス層とは、１つまたは複数のデータ・ソースを被覆する抽象化である。セマンティクス層は、クエリを書くときに既存のクエリの様々な細部をユーザが習得する必要性を排除する。提供された抽象化には、データ・ソースのメタデータ記述が含まれる。メタデータは、データ・ソースが使用する論理的記述または物理的記述の代わりに、ユーザにとって有意義な用語を含むことができる。例えば、テーブル名や列名の代わりに、一般的なビジネス用語を含むことができる。これらの用語を、局所化するか、または、領域に特化させることができる。セマンティクス層は、基礎となるデータに関連するロジックを含んでもよい。当該基礎となるデータにより、当該ロジックは、基礎となるデータ・ソースに対して実行するためのクエリを自動的に編成することができる。当該ロジックは、データ・ソースに対する接続、構造、およびデータ・ソースの諸態様を含む。幾つかのセマンティクス層を、それを多数のクライアントおよびユーザにより共有できるように公開することができる。幾つかのセマンティクス層は、基礎となるデータ・ソースの構造に対応する粒度でまたは当該セマンティクス層でセキュリティを実装する。セマンティクス層の具体的な形態は、基礎データ・ソースを記述するデータ・モデル・オブジェクトを含み、次元、属性および大きさを基礎データで定義する。当該オブジェクトは、次元の要素間の関係を表現することができ、基礎データに関連する計算を提供する。
【００３４】
以上の説明では、本発明の諸実施形態の徹底的な理解を与えるために多数の具体的な詳細を提供した。しかし、１つまたは複数の当該具体的な詳細なしに、または、他の方法、構成要素、技術等により、当該様々な実施形態を実施できることは当業者に理解される。他の事例では、公知な動作または構造は本発明の諸態様を不明瞭にすることを避けるために詳細には図示または説明していない。
【００３５】
本明細書で例示し説明したプロセスは一連のステップを含むが、本発明の様々な実施形態は例示したステップの順序によっては限定されないことは理解される。なぜならば、幾つかのステップを、本明細書で図示し説明したものとは異なる順序で行ってもよく、本明細書で図示し説明したものとは別に他のステップと幾分並列に実施してもよいからである。さらに、図示したステップの全てが本発明に従う方法を実装するために必要でなくともよい。さらに、上記のプロセスを、本明細書で図示および説明した装置およびシステムと関連して、ならびに、図示しない他のシステムと関連して実装してもよいことは理解される。
【００３６】
本発明の諸実施形態の以上の説明および例示は、要約書にて説明したことを含めて、包括的であることを意図したものではなく、当該諸実施形態を開示した形態そのものに限定しようとしたものでもない。当該諸実施形態の具体的な実施形態および例を例示の目的のため本明細書で説明したが、当業者が理解するように、様々な均等な修正が本発明の範囲において可能である。これらの修正を、以上の詳細な説明に照らして当該諸実施形態において行うことができる。寧ろ、本発明の範囲は添付の特許請求の範囲により決定されるべきものである。添付の特許請求の範囲は、確立された請求項の構築原理に従って解釈されるべきである。
【符号の説明】
【００３７】
１１０  アプリケーション
１１２  ＯＬＡＰトランザクション
１１４  ＯＬＴＰトランザクション
１２０  データベース
１２２  列ベース記憶部
１２４  行ベース記憶部
１２６  キャッシュ
【図１】
2014120153.tif 000003
【図２】
2014120153.tif 000004
【図３】
2014120153.tif 000005