JP2015197909A - 大容量データを処理するための、sqlパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法 - Google Patents

大容量データを処理するための、sqlパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法 Download PDF

Info

Publication number
JP2015197909A
JP2015197909A JP2014112536A JP2014112536A JP2015197909A JP 2015197909 A JP2015197909 A JP 2015197909A JP 2014112536 A JP2014112536 A JP 2014112536A JP 2014112536 A JP2014112536 A JP 2014112536A JP 2015197909 A JP2015197909 A JP 2015197909A
Authority
JP
Japan
Prior art keywords
query
basic
data
result
result data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014112536A
Other languages
English (en)
Other versions
JP5926321B2 (ja
Inventor
ヨングン ベ
Yeong Geun Bae
ヨングン ベ
ミンク パク
Min Kyu Park
ミンク パク
ヨンギュン イ
Young Gyun Lee
ヨンギュン イ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BIMATRIX CO Ltd
Original Assignee
BIMATRIX CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BIMATRIX CO Ltd filed Critical BIMATRIX CO Ltd
Publication of JP2015197909A publication Critical patent/JP2015197909A/ja
Application granted granted Critical
Publication of JP5926321B2 publication Critical patent/JP5926321B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データベースに対する要請クエリーの起動、結果提供速度を画期的に改善する、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法を提供する。
【解決手段】(a)要請クエリーに含まれているカラム名をを参照項目とし、要請クエリーが参照するテーブルを参照するクエリー(以下、基礎クエリー)と、基礎クエリーの結果データを参照して、要請クエリーが要請する結果データを取り込む拡張クエリーを生成するステップS12と、(b)基礎クエリーの結果データをサーバキャッシュから検索するステップS13と、(c)サーバキャッシュに結果データがなければ、基礎クエリーでデータベースにデータを要請し、結果データをサーバキャッシュに格納するステップS14と、(d)拡張クエリーを基礎クエリーの結果データに適用して結果データを取得するステップS15と、を含む。
【選択図】図3

Description

本発明は、クライアントが質疑を要請したときに、SQLパーシングにより基礎クエリー(Base Query)と拡張クエリー(Extend Query)とにレベルを分けて、大容量データまたはビックデータを格納するデータベースから前記基礎クエリーによるデータを取り込んでインメモリ基盤のサーバキャッシュに格納し、前記サーバキャッシュのデータから拡張クエリーを起動して所要のデータを抽出する、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法に関する。
一般に、ビジネス・インテリジェンス(BI:Business Intelligence)とは、企業の膨大なデータを統計分析などの定型的若しくは非定型的な方法を用いて様々に分析したり、分析された情報を理解し易い一目瞭然な報告書の形式に加工したりして、ビジネスをより合理的に行うようにサポートする一連のツールのことをいう。
企業がビジネスを行う間に蓄積されるデータの量は非常に膨大である。これらのデータはビジネス現場の生々しい内容を伝えるものであり、正常に分析されれば、そこからビジネスに必要な情報を取り出すことができる。しかしながら、現場で蓄積された相当量のデータから有意な分析結果を導き出すことはあまり簡単な作業ではない。
このような分析のための数多くのツールが個別的に開発されてきた。その代表例として、データ抽出及び変形(ETT)ツール、多次元データ分析のためのオンライン分析処理(OLAP)ツール、報告書作成のためのレポーティングツール、データ間の隠れた連関性を見出すデータマイニングツールなどが挙げられる。これらの一連のツールを単一のソフトウェア製品群にしたものが一種のビジネスインテリジェンス(BI)である。
しかしながら、従来のビジネスインテリジェンス(BI)は、様々な分析ツールを集めておいたものであるが、ユーザは様々な分析ツールを取り扱うために熟練された知識を有することを余儀なくされるため、特定の分析を除いては普遍的に利用することが困難であった。これらの点を改善して、ウェブ環境下でデータベースを照会して分析するレポーティング技術が提案されている(例えば、下記の特許文献1参照)。なお、オンライン上でエクセル・インターフェースに基づいて分析報告書を作成するシステムなども提案されている(例えば、下記の特許文献2参照)。
ところが、最近、ソーシャル・ネットワーキング・サービス(SNS)、ソーシャルメディアなどのデータに対する分析の重要性が次第に高くなるに伴い、企業体の製品に対する顧客管理や製品広報などのためのビックデータ(Big data)を収集して分析を行おうとする企業が段々増えてきている。ビックデータという用語は、ある程度経過した時間内に属するデータを収集、管理、格納、検索、共有、分析及び視覚化するための通常のソフトウェアツール及びコンピュータシステムでは取り扱い難いレベルのデータ量を有するデータセット(data set)に対して主として適用される。ビックデータのサイズは、テラバイト、エクサバイトまたはゼタバイトの範囲を有していてもよい。ビックデータは様々な分野に存在するが、例えば、ウェブログ(web logs)、無線周波数認識装置(RFID)、センサーネットワーク、ソーシャルネットワーク、ソーシャルデータ、インターネットテキストと文書、インターネット検索インデキシング、販売時点(POS:point of sales)データ、販売記録、医療記録、写真記録、ビデオ記録及び電子商取引などが挙げられる。
このようなビックデータを用いて分析を行うためにオンライン分析プロセッシング(OLAP:on-line analytical processing)システムが導入されて用いられるが、このときに発生する最大の問題点の一つは、データ処理速度の遅延である。すなわち、数多くのデータを処理するための時間が長引くことにより、オンライン上でユーザが体感的に非常に長い時間を待つような感じがする。
図1に示すように、従来の技術によるオンライン分析プロセッシングシステムは、ユーザ端末に設けられるクライアントと、前記クライアントのデータ要求事項を処理するBIサーバ及びビックデータを格納するデータベースを備える。
ユーザは、ウェブブラウザ上でクライアントを介して報告書形式(または、テンプレート)を作成し、当報告書形式に入力すべきデータをBIサーバに要請する(ステップ1)。すなわち、前記クライアントで作成された報告書から抽出したデータベースコード(DBコード)、クエリー(SQLクエリー)など所要の情報をBIサーバに転送する。次いで、BIサーバはデータベースに接続して所要のデータを要請する(ステップ2)。データベースは、要請されたデータのセット(または、クエリー結果、キューブデータセット)などを検索して抽出し、抽出された結果データをBIサーバに転送する(ステップ3)。BIサーバは、データベースから受信したフィールド情報とデータを圧縮してクライアントに転送する(ステップ4)。
上述した従来の技術によるオンライン分析プロセッシングシステムは、源泉データが千万件を超える瞬間から、上記のクエリー結果を受信するのに10分以上かかる場合が頻発する。例えば、特定のサイトの場合、4億件の結果照会だけでも5分以上かかる。データベースのデータをフォーマットするのにも15〜30秒の時間がかかる。
このようにデータ処理速度が遅い理由は、データベースに要請する処理速度が急減するためである。データベースとしては、通常、商用化されて標準的なデータベース(DB:Database)機能を処理するデータサーバを用いる。このような商用化されたデータベースは、源泉テーブルが巨大である場合、例えば、データが1億個以上となる場合、多くのデータを処理するためにクエリー処理速度が急減する。
特に、ビュー(View)の機能を使用する場合にも、クエリー処理速度が非常に遅くなる。一般的に、ビューとは、1以上のテーブルからデータの部分集合を論理的に表現するものであり、実際にデータを有しているわけではなく、結果を一つのSQLとして有している。ビューはアクセスを制限するために使用し、複雑な質疑を簡素化させることができるが、要請する度に内部的にSQLを起動する。このため、源泉のビューが巨大あるいは複雑である場合、接続されたビューも遅くなる場合が発生する。なお、クエリー内にジョイン(Join)関数などの機能を用いてクエリーそのものが複雑である場合にも、その処理速度が非常に遅くなる。
商用化されたデータベースは、上述した問題点を解消するために自体的にクエリーをチューニングしてより高速でクエリーを処理するソリューションを有している。しかしながら、このようなチューニングも一般的な状況に備えるためのものであるため、自体システムに対するチューニングだけではある程度限界を有し、その結果、クエリー速度自体を画期的に改善することはできない。
例えば、商用化されたデータベースは一般的且つ標準化された場合のみに備えるためのものであるため、同じ又は類似のクエリー要請に対して同じ作業を繰り返し行う。
上述した問題に起因して、従来の技術によるオンライン分析プロセッシング(OLAP)システムは、オンライン上で非常に長い待ち時間を発生し、ユーザにとって使い勝手が悪い。
大韓民国登録特許第10−0497811号(2005年06月18日付け公告) 大韓民国登録特許第10−0969656号(2010年07月14日付け公告)
本発明は上記の事情に鑑みてなされたものであり、その目的は、クライアントが質疑を要請したときに、SQLパーシングにより基礎クエリーと拡張クエリーとに分けて、大容量データまたはビックデータを格納するデータベースから前記基礎クエリーによるデータを取り込んでインメモリ基盤のサーバキャッシュに格納し、前記サーバキャッシュのデータから拡張クエリーを起動して所要のデータを抽出する、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法を提供することである。
前記目的を達成するために、本発明は、クライアントが要請するデータベースに対する要請クエリーを処理する分析処理サーバのSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法に関するものであり、(a)前記要請クエリーをパーシングして、前記要請クエリーに含まれているカラム名を抽出するステップと、(b)抽出されたカラム名を参照項目として、前記要請クエリーが参照するテーブルと同じテーブルを参照するクエリー(以下、基礎クエリー)と、前記基礎クエリーの結果データを参照して、前記要請クエリーが要請する結果データを取り込む拡張クエリーを生成するステップと、(c)前記基礎クエリーの結果データを前記サーバのサーバキャッシュから検索するステップと、(d)前記サーバキャッシュに基礎クエリーの結果データがなければ、前記基礎クエリーで前記データベースにデータを要請し、受信した基礎クエリーの結果データを前記サーバキャッシュに格納するステップと、(e)前記拡張クエリーを前記基礎クエリーの結果データに適用して前記拡張クエリーの結果データを取得し、取得された結果データを前記クライアントに転送するステップと、を含むことを特徴とする。
また、本発明は、クライアントが要請するデータベースに対する要請クエリーを処理する分析処理サーバのSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法に関するものであり、(a)前記要請クエリーをパーシングして、前記要請クエリーに含まれているカラム名を抽出するステップと、(b)抽出されたカラム名を参照項目として、前記要請クエリーが参照するテーブルと同じテーブルを参照するクエリー(以下、基礎クエリー)と、前記基礎クエリーの結果データを参照して、前記要請クエリーが要請する結果データを取り込む拡張クエリーを生成するステップと、(c)前記基礎クエリーの結果データを前記サーバのサーバキャッシュから検索するステップと、(d)前記サーバキャッシュに基礎クエリーの結果データがなければ、前記要請クエリーで前記データベースにデータを要請し、受信した要請クエリーの結果データを前記クライアントに転送するステップと、(e)前記基礎クエリーで前記データベースにデータを要請し、受信した基礎クエリーの結果データを前記サーバキャッシュに格納するステップと、を含むことを特徴とする。
さらに、本発明は、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、前記サーバは、前記拡張クエリーの結果データをキャッシュファイルとして前記サーバキャッシュに格納し、前記方法は、(f)前記ステップ(b)後に、前記拡張クエリーのキャッシュファイルが前記サーバキャッシュから検索される場合、検索されたキャッシュファイルをクライアントに転送するステップをさらに含むことを特徴とする。
さらに、本発明は、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、前記ステップ(a)において、前記カラム名が識別可能な固有キーを生成し、前記ステップ(b)において、前記基礎クエリーの参照項目節で前記カラム名に対して前記固有キーでエイリアスを定義し、前記拡張クエリーは、前記エイリアスを用いてカラムを参照することを特徴とする。
さらに、本発明は、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、前記固有キーは、当該カラム名のデータベースの名前、参照テーブルの名前及びカラム名をハッシュして得ることを特徴とする。
さらに、本発明は、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、前記ステップ(b)において、前記基礎クエリーは、参照項目節、テーブル参照節及び条件節から構成され、前記基礎クエリーのテーブル参照節及び条件節は、前記要請クエリーのテーブル参照節及び条件節と同じ構造を有することを特徴とする。
さらに、本発明は、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、前記ステップ(b)において、前記拡張クエリーは、テーブル参照節で前記基礎クエリー又は前記基礎クエリーの結果データを参照し、前記テーブル参照節以外の節が前記要請クエリーの節と同じ構造を有するように生成されることを特徴とする。
さらに、本発明は、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、前記ステップ(b)において、前記要請クエリーでテーブルに対するエイリアスが定義された場合、前記テーブルのエイリアスを削除し、前記テーブルのエイリアスを前記テーブルの名前に置き換えて前記拡張クエリーを生成することを特徴とする。
さらに、本発明は、SQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、前記サーバキャッシュは、インメモリストレージとキャッシュディスクとから構成され、前記基礎クエリーの結果データを前記インメモリストレージに格納することを特徴とする。
以上述べたように、本発明によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法によれば、要請されたクエリーのうち基本クエリーのデータをキャッシングすることにより、ビジネスインテリジェンスの分析環境下でクエリーの起動速度を画期的に改善してユーザに分析処理結果をリアルタイムにて提供することができるという効果が奏される。
従来の技術によるオンライン分析プロセッシングシステムの構成図である。 本発明によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法を実施するための全体システムの構成に対するブロック図である。 本発明の第1実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法を説明するためのフローチャートである。 本発明の第1実施形態による要請クエリーの一例を示す図である。 本発明の第1実施形態による基礎クエリー及び拡張クエリーの一例を示す図である。 本発明の第2実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法を説明するためのフローチャートである。 本発明の第3実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法を説明するためのフローチャートである。 本発明の第4実施形態によるサーバキャッシュの構成図である。 本発明による第1状況を説明するためのフローチャートである。 本発明による第2状況を説明するためのフローチャートである。 本発明による第3状況を説明するためのフローチャートである。 本発明の状況による処理結果に対する比較表である。
以下、添付図面に基づき、本発明の実施のための具体的な内容について説明する。
また、本発明を説明するに当たって、同じ構成要素には同じ符号を附し、その重複する説明は省略する。
先ず、図2に基づき、本発明による基礎クエリーの結果キャッシング基盤のオンライン分析プロセッシングシステム及び方法を実施するための全体システムについて説明する。
図2に示すように、本発明を実施するための全体システムは、クライアント20と、分析処理サーバ30と、BIサーバ50及びデータベース60を備える。特に、分析処理サーバ30は、データベース60から受信した一部のデータを格納するためのサーバキャッシュ40を備える。
クライアント20は、ユーザ端末10に設けられるクライアント用プログラムシステムであり、ウェブブラウザを介してユーザインターフェースを有する。すなわち、ユーザは、ウェブブラウザまたはウェブブラウザなどの画面のインターフェースを介して、オンライン上でデータ分析処理作業を行う。このとき、クライアント10は、ユーザの指令などを受信して当該指令を実行し、処理結果を画面上またはウェブブラウザ上に表示する。一方、ユーザ端末10は、個人向けコンピュータ(PC)、個人用の携帯情報端末(PDA)、スマートフォンなどコンピューティング機能を有するコンピュータ端末である。
また、クライアント20は、データ要請、データ分析などオンライン上で分析処理する作業を分析処理サーバ30に要請し、その結果をサーバ30から取り込んでウェブブラウザ上に表示する。
次いで、分析処理サーバ30は、オンライン分析プロセッシング(OLAP)を処理するサーバであり、クライアント20からデータ分析に対する要請を受信して、当該分析要請を処理してその結果をクライアント20に転送するサーバである。
特に、分析処理サーバ30は、データを要請するクエリーを用いて、データベース60に格納されたデータを取り込む。クエリーとは、データベースに格納されたデータの検索または更新時に発生する質問または問い合わせを記述するデータ操作言語のことをいい、データベースにおいてクエリーは一種のコマンドのような役割を果たす。関係データベースの構造的な質疑言語(Structured Query Language:以下、SQL)の形式で表現されるが、場合によってはSQL以外の形式で表現される。
また、分析処理サーバ30はサーバキャッシュ40を備え、データベース60から取り込んだデータの全体または一部を一時的に格納する。サーバキャッシュ40は、分析処理サーバのメモリ(RAMなど)上に実現されてキャッシュメモリとして構成されるか、あるいは、ハードディスクまたはソリッドステートドライブ(SSD:solid state disk)などで実現されてキャッシュディスクとして構成される。あるいは、全てのデータをディスクに格納し、一部のデータ、すなわち、所要のデータをキャッシュメモリにアップロードして用いることができる。
次いで、BIサーバ50は、データベース60を中継するデータベース(DB)インターフェースサーバの役割を果たす。すなわち、BIサーバ50は、分析処理サーバ30からクエリーを受信して、当該クエリーを用いてデータベース60のデータを取り込む。あるいは、データベース60のデータベース管理システム(DBMS)に要請して当該データを取り込む。
また、BIサーバ50は、異質的な多数のデータベース60から構成されても、当該データベースとのインターフェース方式に合わせて、クエリーを要請したりデータを受信したりする。さらに、BIサーバ50は、データを送受信するときに暗号化するか、あるいは、データ圧縮またはファイル圧縮などデータの送受信のための付加的な作業も行う。
次いで、データベース60は、データを格納するための通常のデータベース(DB)であり、データを管理するためのDBMSを備え、データの格納、削除、検索などの作業をクエリーを用いて行う。特に、データベース60は商用化されたデータベースであり、データを処理するための通常のクエリー機能を用いて、データクエリーサービスを行う。
特に、データベース60は、ビックデータを格納するデータベースである。また、好ましくは、データベース60は、関係型データベース(RDB)から構成される。
次いで、図3に基づき、本発明の第1実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法についてより具体的に説明する。
図3に示すように、本発明の第1実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法は、(a)要請クエリーを受信してパーシングするステップ(S11)と、(b)基礎クエリー及び拡張クエリーを生成するステップ(S12)と、(c)基礎クエリーの結果をサーバキャッシュから検索するステップ(S13)と、(d)基礎クエリーの結果がサーバキャッシュから検索されなければ、基礎クエリーをデータベースから取り込んでサーバキャッシュに格納するステップ(S14)と、(e)前記基礎クエリーの結果に拡張クエリーを適用して要請クエリーの結果を取得するステップ(S15)と、(f)要請クエリーの結果を転送するステップ(S16)と、を含む。
先ず、要請クエリーを受信してパーシングするステップ(S11)について説明する。分析処理サーバ30は、クライアント20から要請クエリーを受信し、前記要請クエリーをパーシングする(S11)。
ユーザ端末10に設けられたクライアント20において、所要のデータをクエリーで分析処理サーバ30に要請する。好ましくは、要請クエリーはSQLクエリーとして作成される。図4は、要請クエリーの一例を示している。
SQLクエリーとして作成された要請クエリーは、参照項目節(SELECT節)、テーブル節及びジョイン節(FROM節)、条件節(WHERE節)、グループ節(GROUP BY)、順序節(ORDER BY)などから構成される。参照項目節(select list)は、所望のデータテーブルのフィールド/カラムを定義する節であり、テーブル節(table reference)は、データを取り込むテーブルを定義する節であり、ジョイン節(join clause)は、テーブル間のジョインを定義する節であり、条件節(where clause)は、条件を定義する節である。そして、グループ節(group by)や順序節(order by clause)は、集計や表示のタイプを定義する節である。要請クエリーで定義されたデータフィールド、参照テーブル、条件文における変数などはいずれもデータベース60にある源泉データのフィールド、テーブルなどを参照したものである。
要請SQLクエリーのパーシングは、要請SQLクエリーの構文を分析して、カラムリスト(select list)、テーブル参照(table reference)、ジョイン節(join clause)、条件節(where clause)、グループ節(group by clause)、順序節(order by clause)などを集合の形で抽出するものである。
特に、SELECT節(または、参照項目節)の参照項目からカラム名を抽出する。また、ジョイン節、条件節、グループ節、順序節などで参照するカラム名を全て抽出する。
要請クエリーがSQLクエリーである場合、パーシングのためのSQL構文は、下記の通りである。
query_block
:(subquery_factoring_clause)?
SELECT(((DISTINCT|UNIQUE)|ALL)?)select_list
FROM(table_reference|join_clause) (COMMA(table_reference|join_clause))*
where_clause?
hierarchical_query_clause?
group_by_clause?
order_by_clause?
| query_block ((UNION ALL?) | (INTERSECT|S_MINUS)) query_block
| LPAREN query_block RPAREN
特に、参照項目が計算式である場合に、計算式内に含まれているカラム名を抽出する。また、条件節など他の節で参照する条件や数式などで用いられるカラム名も抽出する。
さらに、抽出されたカラム名に対して他のカラム名と識別可能な識別子または固有キーを生成する。このときの固有キーは、カラムの絶対名前に対する識別子(または、固有キー)である。絶対名前とは、参照データベースの名前、参照テーブルの名前、カラム名から構成された名前のことをいう。このため、カラムの絶対名前は、下記のように表わされる。
カラムの絶対名前=<データベースの名前>.<テーブルの名前>.<カラム名>
または、データベースをあえて識別しなければ、下記のように表わされる。
カラムの絶対名前=<テーブルの名前>.<カラム名>
絶対名前と比べて、カラム名をカラムの相対名前とも呼ぶこともある。
カラム名の固有キーは、カラム名の絶対名前を用いてハッシングにより得る。固有キーを生成する数式は、下記の通りである。
固有キー= hash((domain name) + database name + table name + column name + function name)
このため、カラム名の固有キーは、カラムを識別する識別子の機能を行う。すなわち、固有キーでカラムを識別することができる。
カラム名の固有キーは、基礎クエリーまたは要請クエリーを生成するときにエイリアシング(aliasing、別称)により各カラム名を識別するのに用いられる。カラム名の固有キーを用いて基礎クエリーのカラム名を全て別称(alias)で記載して、基礎クエリーによる結果データのテーブルにおけるカラム名を全て固有キーで生成する。すなわち、カラム名を識別子(または、固有キー)でエイリアスする理由は、自動的に生成されたクエリーにおいてカラムを識別するためである。
例えば、1番クエリーと2番クエリーが下記の通りであると仮定する。
[1番クエリー]
select t1.customer
from matirx_demo t1
[2番クエリー]
select m.customer
from matrix_demo m
この場合、1番クエリー及び2番クエリーにおいて、customerは同じテーブルの同じカラムである。しかしながら、aliasキーがないため、t1.customerとm.customerが異なるものであると認めることができる。
また、1番クエリー及び2番クエリーが下記の通りであると仮定する。
[1番クエリー]
select t.id
from matrix_demo1 t
[2番クエリー]
select t.id
from matrix_demo2 t
この場合にも、エイリアス(別称)の固有キーがないため一見して同じものであるかのように思えるが、実際には異なるカラムである。
このとき、固有キーを適用してエリアシングすれば、下記のようにクエリーが生成される。
[1番クエリー]
select t1. customer C9A59FD7B
from matirx_demo t1
[2番クエリー]
select m.customer C9A59FD7B
from matrix_demo m
このため、固有キー「C9A59FD7B」のみを見ると、同じデータベース名、同じテーブル名、同じカラム名、同じ関数名であることが分かる。
また、好ましくは、テーブル節からテーブル名のエイリアスを除去し、テーブル名のエイリアスと命名された構文を全て元のテーブル名に変更する。例えば、上述した例において、MATRIX_DEMOがTとエイリアスされて命名されていれば、元のテーブル名MATRIX_DEMOに変更する。
さらに、好ましくは、多数のデータベースを用いる場合、テーブル参照節における各テーブル名に対するテーブルの絶対名前を求める。テーブルの絶対名前は、データベース名前とテーブル名前とから構成され、<データベース名前>.<テーブル名前>で表わされる。
一方、テーブル節とジョイン節はSQL構文における「FROM」節に含まれる。すなわち、FROM節はテーブルを参照するための節であり、テーブルとジョインとから構成される。このため、以下、テーブル節とジョイン節を含む節を「テーブル参照節」と呼ぶ。
次いで、分析処理サーバ30は、パーシングした要請クエリーを用いて、基礎クエリーと拡張クエリーを生成する(S12)。
基礎クエリーは、データベース60のデータを参照して要請するクエリーであり、拡張クエリーは、基礎クエリーにより抽出されたデータ(または、基礎クエリーの結果データ)を参照して要請するクエリーである。基礎クエリーと拡張クエリーの一例が図5に示されている。
図5に示すように、基礎クエリー(Base SQL)において、SELECT文に記載された「CUSTOMER」、「PRODUCT」、「C」、「C2」などのデータフィールドの名称や、「MATRIX_DEMO」などの参照テーブルの名称や、「YYYY」などの条件文の変数(または、データフィールドの変数)はいずれもデータベース60の源泉データを直接的に参照する。
先ず、基礎クエリーは、下記のようにして生成する。
SQLパーシングから抽出したカラム名(または、カラムリスト)で参照項目を作成する。このとき、好ましくは、要請クエリーの参照項目が計算式である場合、要請クエリーの計算式に含まれているカラム名で基礎クエリーの参照項目を生成する。なお、条件節など他の節で参照するカラム名も基礎クエリーの参照項目で生成する。
図4の例において、要請クエリーの3番目の参照項目は「SUM(T.H_VAL)」の計算式である。また、条件節(where clause)における「T.YYYY= '2013'」は条件であるが、その条件内に「T.YYYY」カラム名が含まれている。このため、図5の基礎クエリーにおける参照項目には、計算式「SUM(T.H_VAL)」内のカラム名「T.H_VAL」と、条件「T.YYYY= '2013'」内のカラム名「T.YYYY」を参照項目節の参照項目で生成する。
また、参照項目にカラム名の固有キーをエイリアシングする。すなわち、固有キーを別称で定義する。
そして、基礎クエリーのテーブル節(または、テーブル参照節)、ジョイン節、条件節は、要請クエリーのテーブル節、ジョイン節、条件節と同様に構成する。
但し、好ましくは、要請クエリーのテーブル節においてテーブル名がエイリアスされていれば、エイリアスされた別称を削除する。そして、参照項目節、ジョイン節、条件節において別称が記載されたテーブル名を全てテーブルの名前(または、絶対名前)に変更する。
例えば、要請クエリーが下記の通りである場合について説明する。
[要請クエリー1]
select t.customer, sum(t.h_val)
from matrix_demo t
where t.yyyy = '2013'
group by t.cusomer
このとき、前記要請クエリー1から生成した基礎クエリーは、下記の通りである。
[基礎クエリー1]
SELECT MATRIX_DEMO.CUSTOMER C9A59FD7B, MATRIX_DEMO.YYYY CEB41FFF7, MATRIX_DEMO.H_VAL CB165E5C5
FROM MATRIX.MATRIX_DEMO
WHERE MATRIX_DEMO.YYYY = '2013'
すなわち、要請クエリーにおいてテーブルmatrix_demoの別称を「t」と宣言したが、基礎クエリーでは全てテーブルの名前であるmatrix_demoに変更された。
次いで、拡張クエリーを生成する。
拡張クエリーは、テーブル節を除いては、要請クエリーと同じ構造を有し、テーブル節で参照するテーブルの代わりに、基礎クエリーまたは基礎クエリーの結果データテーブル(基礎クエリーが源泉データベースから取り込んだ結果テーブル)を参照する。
また、カラム名を全てカラムの固有キーに変更する。すなわち、拡張クエリーが参照するテーブルが基礎クエリーの結果テーブルであるため、参照するテーブルのカラムは全て基礎クエリーで宣言した固有キーで参照せねばならない。
先ず、[要請クエリー1]と[基礎クエリー1]による拡張クエリーは、下記の通りである。
[拡張クエリー1]
SELECT MHC.C9A59FD7B, SUM(MHC.CB165E5C5) AS"CB165E5C5"
FROM ( {@ORIGINAL_SQL@} ) MHC
WHERE MHC.CEB41FFF7 = '2013'
GROUP BY
MHC.C9A59FD7B
ここで、「{@ORIGINAL_SQL@}」は、基礎クエリーまたは基礎クエリーの結果テーブルを参照することを表わす。
このため、基礎クエリーにより抽出されたデータが取得されれば、拡張クエリーは、取得された基礎クエリーの結果データを参照して要請されるクエリーである。拡張クエリーにより得られる結果は、元の要請クエリーにより得られる結果と同様である。また、拡張クエリーにより得られる結果データの集まりは、常に基礎クエリーにより得られる結果データの集まりよりも小さい。すなわち、拡張クエリーのデータの集まりは、基礎クエリーのデータの集まりの部分集合であるといえる。
さらに、基礎クエリーの結果データがない場合、[拡張クエリー1]において、{@ORIGINAL_SQL@}に基礎クエリーを代入し、源泉データベースに質疑すれば、要請クエリーの結果が得られる。
次いで、基礎クエリーの結果データがサーバキャッシュ40に格納されているか否かを検索する(S13)。
基礎クエリーによりデータベース60から取り込んだデータ(または、基礎クエリーの結果データ)は、サーバキャッシュ40に格納して保管する。分析処理サーバ30は、上記で求めた基礎クエリーをサーバキャッシュ40から検索する。すなわち、格納しておいた基礎クエリーに上記で求めた基礎クエリーが存在するか否かを検索する。
検索のための比較過程について説明すれば、参照項目節、テーブル節/ジョイン節及び条件節が同じであるか否かで判断する。但し、参照するテーブル(または、テーブル間のジョインも含まれる)が同じである場合には、参照項目節(SELECT節)と条件節(where clasue)のみが同じであるか否かを比較する。特に、参照項目節では、カラム名の固有キーのみを比較すればよい。すなわち、エイリアスが同じであるか否かのみを比較する。
例えば、本出願人のマトリックス(matrix)で用いられるSQLは、メタを用いて自動的に生成されたSQLである。メタアイテム1とメタアイテム2を選択したならば、既に当該メタアイテムのテーブルコード、カラムコード、ジョイン条件を自動的に生成することができる。同じメタで自動的に生成されたSQLはフィールドaliasの比較だけでも同じであることが分かる。すなわち、追加的に条件比較のみを行えば、基礎クエリーの再使用有無をチェックすることができる。しかしながら、メタなしにクエリーのみを比較するのであれば、テーブル及びこれらの間のジョイン関係も比較せねばならない。
次いで、基礎クエリーの結果データがサーバキャッシュに格納されていなければ、前記基礎クエリーでデータベース60にデータを要請し、基礎クエリーの結果データを受信すれば、これをサーバキャッシュ40に格納する(S14)。
上述したように、基礎クエリーはデータベース60に格納されたデータを直接的に参照するクエリーであるため、当該基礎クエリーでデータベース60にクエリー要請をする。クエリー要請は、BIサーバ50を介してデータベース60に対して行われ、データベース60から前記基礎クエリーにより抽出されたデータはBIサーバ50を介して分析処理サーバ30に戻る。分析処理サーバ30は、受信した前記基礎クエリーの結果データをサーバキャッシュ40に格納する。
一方、基礎クエリーの結果データは、データベース60のデータ構造と同じ形式または同じ構造で格納される。すなわち、データベース60のデータがテーブルの形式で格納されるのであれば、基礎クエリーの結果データもテーブルの形式で格納される。さらに、サーバキャッシュ40に格納される結果データの各フィールドのタイプやサイズなどがデータベース60に設けられたフィールドのタイプやサイズと同様になるように構成される。これは、拡張クエリーがデータベース60に格納されたデータの代わりに基礎クエリーの結果データを参照してもクエリーが起動されるようにするためである。
このとき、結果テーブルのカラム名は、カラムの固有キーに変更される。
次いで、分析処理サーバ30は、基礎クエリーの結果に拡張クエリーを適用して要請クエリーの結果を取得する(S15)。
拡張クエリーは要請クエリーと同じ構造を有し、データベース60を参照する代わりに、基礎クエリーを参照するクエリーである。このため、拡張クエリーでデータベース60を参照する名称(以下、データベース参照名称)を基礎クエリーの結果データを参照する名称(以下、基礎クエリー参照名称)に変更して生成する。上述したように、拡張クエリーで参照するテーブルの名称は基礎クエリーにより生成されたテーブル(または、結果テーブル)を参照するように全て変更され、拡張クエリーで参照するデータフィールドの名称(または、カラム名)は全て基礎クエリーにより生成されたデータフィールドの名称(または、カラム名の固有キー)に変更される。
上記のステップS13において、基礎クエリーの結果データがサーバキャッシュ40に格納されていてもよく、格納されていなくてもよい。しかしながら、格納されていない場合、ステップS14において、基礎クエリーでデータベース60にクエリーを要請してデータを受信してサーバキャッシュ40に格納する。このため、今回は、ステップS15においては、基礎クエリーの結果データはサーバキャッシュ40に必ず格納されている。
また、拡張クエリーは基礎クエリーのデータを参照するクエリーである。このため、拡張クエリーを基礎クエリーの結果データに適用することができる。基礎クエリーの結果データを参照して拡張クエリーを適用すれば、元の要請された要請クエリーの結果データを得ることができる。
最後に、上記で拡張クエリーを適用して得た結果データを要請クエリーの結果として、クライアント20に転送する(S16)。
次いで、図6に基づき、本発明の第2実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法についてより具体的に説明する。
図6に示すように、本発明の第2実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法は、(a)要請クエリーを受信してパーシングするステップ(S21)と、(b)基礎クエリーと拡張クエリーを生成するステップ(S22)と、(c)基礎クエリーの結果をサーバキャッシュから検索するステップ(S23)と、(d)基礎クエリーの結果がサーバキャッシュから検索されなければ、要請クエリーをデータベースから取り込んで転送するステップ(S24)と、(h)基礎クエリーをデータベースから取り込んでサーバキャッシュに格納するステップ(S28)と、(e)基礎クエリーの結果がサーバキャッシュから検索されれば、拡張クエリーを起動するステップと、(f)前記基礎クエリーの結果に拡張クエリーを適用して要請クエリーの結果を取得するステップ(S25)と、(g)要請クエリーの結果を転送するステップ(S26)と、を含む。
上述した第1実施形態と比較すれば、基礎クエリーをサーバキャッシュから検索したとき、サーバキャッシュから基礎クエリーが検索されなければ、要請クエリーでデータベース60に要請してその結果を直ちにクライアント20に転送する点(S24)で相違点がある。そして、要請クエリーの結果データを転送した後、基礎クエリーを再びデータベース60に要請して基礎クエリーの結果データをサーバキャッシュ40に格納する(S28)。以下、説明のうち省略された部分は、上述した第1実施形態の説明を参照する。
先ず、分析処理サーバ30は、クライアント20から要請クエリーを受信してパーシングする(S21)。上述した第1実施形態と同様である。次いで、分析処理サーバ30は、パーシング結果を用いて基礎クエリー及び拡張クエリーを生成する(S22)。
そして、基礎クエリーの結果データがサーバキャッシュ40に格納されているか否かを検索する(S23)。基礎クエリーによりデータベース60から取り込んだデータ(または、基礎クエリーの結果データ)はサーバキャッシュ40に格納して保管する。分析処理サーバ30は、上記で得た基礎クエリーを、サーバキャッシュ40に格納しておいた基礎クエリーの結果データと比較して検索する。
次いで、基礎クエリーの結果データがサーバキャッシュに格納されていなければ、前記要請クエリーでデータベース60にデータを要請し、前記要請クエリーの結果データを受信すれば、これをクライアント20に転送する(S24)。このとき、拡張クエリー内でテーブル節を基礎クエリーに置き換えた後、拡張クエリーを直ちにデータベース60に要請しても、所望の結果データ(または、結果テーブル)を取得することができる。
クライアント20に要請クエリーの結果データを転送した後、分析処理サーバ30は前記基礎クエリーでデータベース60にデータを要請し、基礎クエリーの結果データを受信すれば、これをサーバキャッシュ40に格納する(S28)。特に、分析処理サーバ30は、スケジューラーにより、データベース60の要請が殺到せず、しかも、トラフィックに余裕がある時間に前記基礎クエリーに関するデータを要請してその結果をサーバキャッシュ40に格納する。
次いで、基礎クエリーの結果データがサーバキャッシュに格納された場合について説明する。分析処理サーバ30は、基礎クエリーの結果データに拡張クエリーを適用して要請クエリーの結果を取得する(S25)。次いで、取得された結果データをクライアント20に転送する(S26)。
次いで、図7に基づき、本発明の第3実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法についてより具体的に説明する。
図3に示すように、本発明の第3実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法は、(a)要請クエリーを受信してパーシングするステップ(S30)と、(b)基礎クエリーと拡張クエリーを生成するステップ(S31)と、(c)前記基礎クエリーと拡張クエリーを組み合わせてキャッシュファイルから検索するステップ(S32)と、(d)キャッシュファイルが検索されれば、キャッシュファイルをクライアントに転送するステップ(S33)と、(e)キャッシュファイルが検索されなければ、第1または第2実施形態を行うステップ(34)と、(f)要請クエリーの結果データをキャッシュファイルとして格納するステップ(S35)と、を含む。
本発明の第3実施形態は、上述した第1または第2実施形態を補完する実施形態である。すなわち、要請クエリーの結果データをキャッシュファイルとしてバイナリ形式で格納していて、同じクエリーで再び要請されれば、当該キャッシュファイルを直ちにクライアント20に転送する。
キャッシュファイルとは、要請クエリーの結果データをファイルとして格納したものをいう。分析処理サーバ30が、クライアント20が要請した結果データを作成して最終的に転送するとき、ファイルの形式で転送する。キャッシュファイルは、転送するときと同じファイルである。このため、キャッシュファイルのクエリーと同じ要請クエリーで要請すれば、当該キャッシュファイルを直ちに転送すればよい。
好ましくは、キャッシュファイルは、分析処理サーバ30のサーバキャッシュ40に格納される。
具体的に、分析処理サーバ30は、クライアント20から要請クエリーを受信してパーシングする(S30)。上述した第1または第2実施形態と同様である。分析処理サーバ30は、基礎クエリーと拡張クエリーを組み合わせて、格納されたキャッシュファイルのクエリーを比較して、同じクエリーがあるか否かを検索する(S32)。
もし、同じクエリーがキャッシュファイルにあれば、検索されたキャッシュファイルを直ちにクライアント20に転送する(S33)。
もし、同じクエリーがなければ、上述した第1または第2実施形態の3番目の検索ステップ(S13、S23)を行う(S34)。すなわち、サーバキャッシュに基礎クエリーの結果データがあるか否かを検索する。サーバキャッシュに基礎クエリーの結果データがあれば、基礎クエリーを対象に拡張クエリーを作成して結果データを取得する。取得された結果データをクライアントに転送する。サーバキャッシュに基礎クエリーの結果データがなければ、基礎クエリーまたは要請クエリーでデータベース60から結果データを取り込む。取り込んだ結果データが基礎クエリーデータであれば、拡張クエリーにより要請クエリーの結果データを生成する。最終的に、要請クエリーの結果データをクライアント20に転送する。
第1または第2実施形態を終えると、生成された基礎クエリー及び拡張クエリーの組み合わせの結果データ(または、クライアントに転送した結果データ)をキャッシュファイルとしてサーバキャッシュ40に格納する(S35)。
次いで、図8に基づき、本発明の第4実施形態によるSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法について具体的に説明する。
本発明の第4実施形態は、上述した第1から第3実施形態と同じ構成を有する。但し、サーバキャッシュ40の構成がより細分化される。
図8に示すように、本発明の第4実施形態では、サーバキャッシュ40をキャッシュメモリ41とキャッシュディスク42とに分ける。
キャッシュメモリ41は、分析処理サーバ30のRAM(Random access memory)から構成される。特に、キャッシュメモリ41は、インメモリストレージから構成される。キャッシュディスク42は、分析処理サーバ30のハードディスクまたはソリッドステートドライブ(SSD)などから構成される。
上記の本発明の第1から第3実施形態において、サーバキャッシュ40に格納される基礎クエリーの結果データは全てキャッシュメモリ41に格納される。但し、キャッシュメモリ41の格納容量よりも基礎クエリーの結果データの方がさらに多い場合、キャッシュメモリの容量を超える結果データはキャッシュディスク42に格納される。
このとき、キャッシュディスク42に移される基礎クエリーの結果データは予め定められたポリシーにより選別される。選別ポリシーの例として、結果データへのアクセス頻度、最近のアクセス時刻などに基づいて、アクセス頻度が低いか、あるいは、最近のアクセス時刻が最も古い結果データを選別する。
また、第3実施形態のキャッシュファイルはキャッシュディスク42に格納される。
以下、図9から図12に基づき、本発明の効果についてより具体的に説明する。
本発明は、ビジネスインテリジェンス(BI)基盤のビックデータを処理するためのプラットフォームに関するものである。特に、ビックデータを要請したとき、応答時間を10秒以内の早い時間内にすることにより、リアルタイムに近い処理を行う。本発明は、リアルタイムに近い処理のためのキャッシュファイルとキャッシュメモリテーブルを用いる。このために、要請クエリーをパーシングして、基礎クエリーと拡張クエリーとに分ける。
また、メモリの限界によるファイル形式のロード/格納/フィルタリングの構造を定義する。例えば、約1億件をメモリテーブルにロードするのに約5Gがかかるとしたとき、32Gサーバの環境下であれば、約10億件をメモリに保管しているわけにはいかない。このため、一部のデータをファイル形式で速やかに格納し、必要に応じて、再びメモリにロードするような構造が必要である。ファイル自体に条件(フィルタリングとクエリーをパーシングして当該カラムから条件を抽出する)を与えて所望のデータのみを処理する。
また、要請クエリーを基礎クエリー(Base SQL)と拡張クエリーとに分ける理由は、相対的に速度が下がる関係型データベース(RDB)を用いるわけではなく、分析処理サーバ30に設けられたサーバキャッシュ(インメモリデータベース)を用いるためである。これにより、速度が画期的に改善される。インメモリデータベース(In-memory Database)は、データストレージのメインメモリに設けられて運営される方式のデータベース管理システムである。ディスクに設けられる方式に比べて処理速度が速い。
具体的に、本発明の第1から第4実施形態を適用する場合、各状況における処理速度について説明する。
先ず、第1状況は、基礎クエリーと拡張クエリーがいずれも一致しない場合である。すなわち、第1状況は最初にクエリーが起動される場合に相当し、全体の処理速度は従来の技術によるシステムと同様である。
図9に示すように、先ず、マトリックス報告書から抽出したDBコード、SQL情報を基礎クエリー(Base SQL)と拡張クエリー(Extend SQL)に分けて分析処理サーバ(SOLAPサーバ)に要請する(ステップ1)。一致する基礎クエリー(Base SQL)と拡張クエリー(Extend SQL)がないため、クエリーを元の要請クエリーとしてBIサーバ(Matrix Server)に要請する(ステップ2)。BIサーバがターゲットDBに接続してデータを要請する(ステップ3)。ターゲットDBがキューブ(cube)データを転送する(ステップ4)。そして、フィールド情報とデータを圧縮して転送する(ステップ5)。転送されたファイルをキャッシュファイルとして格納する(ステップ6)。キャッシュファイルをブラウザ(または、クライアント)に転送する(ステップ7)。最後に、スケジューラーが基礎クエリー(Base SQL)を源泉DBで起動してキャッシュメモリ40に格納(Background起動)する(ステップ8)。
次いで、第2状況は、基礎クエリーは一致し、拡張クエリーは一致しない場合である。基礎クエリー(Base SQL)に相当するキャッシュメモリテーブルを生成した場合に相当し、速度は10秒内外であり、第1状況(または、従来の技術)に比べて10〜50倍向上する。
図10に示すように、先ず、マトリックス報告書から抽出したDBコード、SQL情報を基礎クエリー(Base SQL)と拡張クエリー(Extend SQL)とに分けてSOLAPサーバに要請する(ステップ1)。基礎クエリー(Base SQLが一致し、拡張クエリー(Extend SQL)がない場合、拡張クエリー(Extend SQL)のターゲットテーブルはサーバキャッシュに格納されたテーブル名に変更して起動する(ステップ2)。そして、サーバキャッシュがキューブデータを転送する(ステップ3)。転送されたファイルをキャッシュファイルとして格納する(ステップ4)。最後に、キャッシュファイルをブラウザに転送する(ステップ5)。
次いで、第3状況は、基礎クエリーと拡張クエリーの両方が一致する場合である。基礎クエリー(Base SQL)と拡張クエリー(Extend SQL)の両方が一致する場合に相当し、速度は3秒以内外であり、第1状況または従来の技術に比べて100倍以上向上する。
図11に示すように、マトリックス報告書から抽出したDBコード、SQL情報を基礎クエリー(Base SQL)と拡張クエリー(Extend SQL)とに分けて分析処理サーバに要請する(ステップ1)。基礎クエリー(Base SQL)と拡張クエリー(Extend SQL)がいずれも一致する場合にハッシュキー値が存在する(ステップ2)。そして、キャッシュファイルをブラウザに転送する(ステップ3)。
前記第1から第3状況の処理速度などを比較した表が図12に示されている。同じクエリーが起動されれば、状態が自動的に移行する。すなわち、第1状況から第2状況に、第2状況から第3状況に移行する。また、同時ユーザ数が増大すれば、キャッシュファイルの使用頻度が急増する(90%以上であると予想される)。大多数のユーザは5分から3秒へのクエリー時間の減少を経験する。また、最初の起動において、基礎クエリーに関するデータはスケジューラーで起動することができる。すなわち、スケジューラーにより余裕のある時間にデータを取り込むことができて、体感速度に影響を及ぼさない。
以上、本発明者により案出された発明について実施形態を挙げて具体的に説明したが、本発明は実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々に変更可能であるということはいうまでもない。
10:ユーザ端末
20:クライアント
30:分析処理サーバ
40:サーバキャッシュ
41:キャッシュメモリ
42:キャッシュディスク
50:BIサーバ
60:データベース

Claims (9)

  1. クライアントが要請するデータベースに対する要請クエリーを処理する分析処理サーバのSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、
    (a)前記要請クエリーをパーシングして、前記要請クエリーに含まれているカラム名を抽出するステップと、
    (b)抽出されたカラム名を参照項目として、前記要請クエリーが参照するテーブルと同じテーブルを参照するクエリー(以下、基礎クエリー)と、前記基礎クエリーの結果データを参照して、前記要請クエリーが要請する結果データを取り込む拡張クエリーを生成するステップと、
    (c)前記基礎クエリーの結果データを前記サーバのサーバキャッシュから検索するステップと、
    (d)前記サーバキャッシュに基礎クエリーの結果データがなければ、前記基礎クエリーで前記データベースにデータを要請し、受信した基礎クエリーの結果データを前記サーバキャッシュに格納するステップと、
    (e)前記拡張クエリーを前記基礎クエリーの結果データに適用して前記拡張クエリーの結果データを取得し、取得された結果データを前記クライアントに転送するステップと、
    を含むことを特徴とするSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
  2. クライアントが要請するデータベースに対する要請クエリーを処理する分析処理サーバのSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法において、
    (a)前記要請クエリーをパーシングして、前記要請クエリーに含まれているカラム名を抽出するステップと、
    (b)抽出されたカラム名を参照項目として、前記要請クエリーが参照するテーブルと同じテーブルを参照するクエリー(以下、基礎クエリー)と、前記基礎クエリーの結果データを参照して、前記要請クエリーが要請する結果データを取り込む拡張クエリーを生成するステップと、
    (c)前記基礎クエリーの結果データを前記サーバのサーバキャッシュから検索するステップと、
    (d)前記サーバキャッシュに基礎クエリーの結果データがなければ、前記要請クエリーで前記データベースにデータを要請し、受信した要請クエリーの結果データを前記クライアントに転送するステップと、
    (e)前記基礎クエリーで前記データベースにデータを要請し、受信した基礎クエリーの結果データを前記サーバキャッシュに格納するステップと、
    を含むことを特徴とするSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
  3. 前記サーバは、前記拡張クエリーの結果データをキャッシュファイルとして前記サーバキャッシュに格納し、
    前記方法は、
    (f)前記ステップ(b)後に、前記拡張クエリーのキャッシュファイルが前記サーバキャッシュから検索される場合、検索されたキャッシュファイルをクライアントに転送するステップをさらに含むことを特徴とする請求項1または2に記載のSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
  4. 前記ステップ(a)において、前記カラム名が識別可能な固有キーを生成し、
    前記ステップ(b)において、前記基礎クエリーの参照項目節で前記カラム名に対して前記固有キーでエイリアスを定義し、前記拡張クエリーは、前記エイリアスを用いてカラムを参照することを特徴とする請求項1または2に記載のSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
  5. 前記固有キーは、当該カラム名のデータベースの名前、参照テーブルの名前及びカラム名をハッシュして得ることを特徴とする請求項1または2に記載のSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
  6. 前記ステップ(b)において、前記基礎クエリーは、参照項目節、テーブル参照節及び条件節から構成され、前記基礎クエリーのテーブル参照節及び条件節は、前記要請クエリーのテーブル参照節及び条件節と同じ構造を有することを特徴とする請求項1または2に記載のSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
  7. 前記ステップ(b)において、前記拡張クエリーは、テーブル参照節で前記基礎クエリーまたは前記基礎クエリーの結果データを参照し、前記テーブル参照節以外の節が前記要請クエリーの節と同じ構造を有するように生成されることを特徴とする請求項6に記載のSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
  8. 前記ステップ(b)において、前記要請クエリーでテーブルに対するエイリアスが定義された場合、前記テーブルのエイリアスを削除し、前記テーブルのエイリアスを前記テーブルの名前に置き換えて前記拡張クエリーを生成することを特徴とする請求項7に記載のSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
  9. 前記サーバキャッシュは、インメモリストレージとキャッシュディスクとから構成され、
    前記基礎クエリーの結果データを前記インメモリストレージに格納することを特徴とする請求項1または2に記載のSQLパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法。
JP2014112536A 2014-04-02 2014-05-30 大容量データを処理するための、sqlパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法 Active JP5926321B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2014-0039470 2014-04-02
KR1020140039470A KR101544560B1 (ko) 2014-04-02 2014-04-02 대용량 데이터를 처리하기 위하여 sql 파싱에 의한 2단계 쿼리 및 결과 캐싱을 이용한 온라인 분석 프로세싱 방법

Publications (2)

Publication Number Publication Date
JP2015197909A true JP2015197909A (ja) 2015-11-09
JP5926321B2 JP5926321B2 (ja) 2016-05-25

Family

ID=54061078

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014112536A Active JP5926321B2 (ja) 2014-04-02 2014-05-30 大容量データを処理するための、sqlパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法

Country Status (2)

Country Link
JP (1) JP5926321B2 (ja)
KR (1) KR101544560B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6199513B1 (ja) * 2016-08-29 2017-09-20 株式会社 ビーアイマトリックスBi Matrix Co.,Ltd キャッシュテーブルの統合基盤の2段階クエリ処理システム
JP2019040245A (ja) * 2017-08-22 2019-03-14 富士通株式会社 データ提供プロラム、データ提供方法、及びデータ提供装置
CN112989250A (zh) * 2021-03-11 2021-06-18 北京百度网讯科技有限公司 一种Web服务响应方法、装置及电子设备

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016208779A1 (ko) * 2015-06-22 2016-12-29 (주) 비아이매트릭스 대용량 데이터를 처리하기 위한 2단계 쿼리 기반 온라인 분석 프로세싱 방법
CN111143352B (zh) * 2019-11-28 2024-04-12 泰康保险集团股份有限公司 一种数据处理的方法及装置、电子设备、存储介质
KR102346289B1 (ko) 2020-02-19 2022-01-03 심상택 오픈 소스 빅데이터 시스템에서 구조화된 언어로 통계 및 원본 데이터를 검색하는 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012504825A (ja) * 2008-10-05 2012-02-23 マイクロソフト コーポレーション 列ベースデータエンコードされた構造のクエリに対する効率的な大規模フィルタリングおよび/または並べ替え

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5374444B2 (ja) * 2010-06-01 2013-12-25 日本電信電話株式会社 検索装置、検索方法及び検索プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012504825A (ja) * 2008-10-05 2012-02-23 マイクロソフト コーポレーション 列ベースデータエンコードされた構造のクエリに対する効率的な大規模フィルタリングおよび/または並べ替え

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6199513B1 (ja) * 2016-08-29 2017-09-20 株式会社 ビーアイマトリックスBi Matrix Co.,Ltd キャッシュテーブルの統合基盤の2段階クエリ処理システム
JP2019040245A (ja) * 2017-08-22 2019-03-14 富士通株式会社 データ提供プロラム、データ提供方法、及びデータ提供装置
JP7006013B2 (ja) 2017-08-22 2022-01-24 富士通株式会社 データ提供プロラム、データ提供方法、及びデータ提供装置
US11360975B2 (en) 2017-08-22 2022-06-14 Fujitsu Limited Data providing apparatus and data providing method
CN112989250A (zh) * 2021-03-11 2021-06-18 北京百度网讯科技有限公司 一种Web服务响应方法、装置及电子设备
CN112989250B (zh) * 2021-03-11 2024-01-12 北京百度网讯科技有限公司 一种Web服务响应方法、装置及电子设备

Also Published As

Publication number Publication date
JP5926321B2 (ja) 2016-05-25
KR101544560B1 (ko) 2015-08-17

Similar Documents

Publication Publication Date Title
JP5926321B2 (ja) 大容量データを処理するための、sqlパーシングによる2レベルクエリー及び結果キャッシングを用いたオンライン分析プロセッシング方法
US10725987B2 (en) Forced ordering of a dictionary storing row identifier values
US9965504B2 (en) Transient and persistent representation of a unified table metadata graph
US9639542B2 (en) Dynamic mapping of extensible datasets to relational database schemas
US8924373B2 (en) Query plans with parameter markers in place of object identifiers
US20160147821A1 (en) Supporting Cursor Snapshot Semantics
US8843436B2 (en) Systems and methods for performing direct reporting access to transaction databases
US20220083618A1 (en) Method And System For Scalable Search Using MicroService And Cloud Based Search With Records Indexes
US9569477B1 (en) Managing scanning of databases in data storage systems
KR20130086005A (ko) 다수의 장치들에서 데이터 검색 방법 및 장치
US11429658B1 (en) Systems and methods for content-aware image storage
US10685031B2 (en) Dynamic hash partitioning for large-scale database management systems
US9734178B2 (en) Searching entity-key associations using in-memory objects
KR20200103542A (ko) 지식-구동 연합 빅 데이터 쿼리 및 분석 플랫폼
KR20200103543A (ko) 지식-구동 연합 빅 데이터 쿼리 및 분석 플랫폼
US9122755B2 (en) Instantaneous incremental search user interface
KR101892067B1 (ko) 관계형 데이터베이스 기반의 텍스트 로그데이터 저장 및 검색 방법
US20150100553A1 (en) Archival of Objects and Dynamic Search
US8200673B2 (en) System and method for on-demand indexing
US20040039755A1 (en) Metadata relationships
JP6199513B1 (ja) キャッシュテーブルの統合基盤の2段階クエリ処理システム
CN112685572B (zh) 一种异构数据融合方法及装置
US20130024761A1 (en) Semantic tagging of user-generated content
US11055266B2 (en) Efficient key data store entry traversal and result generation
US8666972B2 (en) System and method for content management and determination of search conditions

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160421

R150 Certificate of patent or registration of utility model

Ref document number: 5926321

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250