IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社日立製作所の特許一覧

特許7716243リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム
<>
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図1
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図2
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図3
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図4
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図5
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図6
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図7
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図8
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図9
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図10
  • 特許-リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-07-23
(45)【発行日】2025-07-31
(54)【発明の名称】リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラム
(51)【国際特許分類】
   G06F 16/242 20190101AFI20250724BHJP
【FI】
G06F16/242
【請求項の数】 9
(21)【出願番号】P 2021101984
(22)【出願日】2021-06-18
(65)【公開番号】P2023000912
(43)【公開日】2023-01-04
【審査請求日】2024-03-01
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000176
【氏名又は名称】弁理士法人一色国際特許事務所
(72)【発明者】
【氏名】青木 雄一郎
(72)【発明者】
【氏名】渡辺 聡
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】特開2019-106039(JP,A)
【文献】特開2020-013448(JP,A)
【文献】特開2006-343798(JP,A)
【文献】特開2021-005163(JP,A)
【文献】米国特許出願公開第2011/0137875(US,A1)
【文献】米国特許出願公開第2006/0212436(US,A1)
【文献】米国特許第06882993(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
リフレクションの履歴を保持する記憶装置と、
リフレクション生成用の新規クエリが示すリフレクションの内容に基づき、当該内容と同じ内容の過去リフレクションに関するクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定し、前記選定した過去リフレクションのクエリに基づいてリフレクションを生成する演算装置と、
を含むことを特徴とするリフレクション生成システム。
【請求項2】
前記演算装置は、
前記同じ内容の過去リフレクションに関するクエリとして、前記新規クエリで指定されたデータ抽出対象のカラムが同じであるものを特定し、特定した前記データ抽出対象のカラムが同じクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定するものである、
ことを特徴とする請求項1に記載のリフレクション生成システム。
【請求項3】
前記記憶装置は、
前記履歴において、リフレクションの生成回数の情報をさらに保持し、
前記演算装置は、
前記リフレクションの生成に際し、当該生成の対象となったリフレクションのうち前記生成回数が多いものから順に、リフレクション格納領域の使用状況が所定基準に至るまでリフレクション生成を実行するものである、
ことを特徴とする請求項1に記載のリフレクション生成システム。
【請求項4】
前記演算装置は、
前記リフレクションの生成に際し、前記リフレクション格納領域の使用状況が所定基準を超えている場合、前記生成回数が基準以下のリフレクションを削除した上で、リフレクション生成を実行するものである、
ことを特徴とする請求項3に記載のリフレクション生成システム。
【請求項5】
情報処理装置が、
リフレクションの履歴を保持する記憶装置を備えて、
リフレクション生成用の新規クエリが示すリフレクションの内容に基づき、当該内容と同じ内容の過去リフレクションに関するクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定し、前記選定した過去リフレクションのクエリに基づいてリフレクションを生成する、
ことを特徴とするリフレクション生成方法。
【請求項6】
前記情報処理装置が、
前記同じ内容の過去リフレクションに関するクエリとして、前記新規クエリで指定されたデータ抽出対象のカラムが同じであるものを特定し、特定した前記データ抽出対象のカラムが同じクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定する、
ことを特徴とする請求項5に記載のリフレクション生成方法。
【請求項7】
前記情報処理装置が、
前記記憶装置における前記履歴において、リフレクションの生成回数の情報をさらに保持し、
前記リフレクションの生成に際し、当該生成の対象となったリフレクションのうち前記生成回数が多いものから順に、リフレクション格納領域の使用状況が所定基準に至るまでリフレクション生成を実行する、
ことを特徴とする請求項5に記載のリフレクション生成方法。
【請求項8】
前記情報処理装置が、
前記リフレクションの生成に際し、前記リフレクション格納領域の使用状況が所定基準を超えている場合、前記生成回数が基準以下のリフレクションを削除した上で、リフレクション生成を実行する、
ことを特徴とする請求項7に記載のリフレクション生成方法。
【請求項9】
リフレクションの履歴を保持する記憶装置を備える情報処理装置に、
リフレクション生成用の新規クエリが示すリフレクションの内容に基づき、当該内容と同じ内容の過去リフレクションに関するクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定し、前記選定した過去リフレクションのクエリに基づいてリフレクションを生成する処理、
を実行させることを特徴とするリフレクション生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リフレクション生成システム、リフレクション生成方法、及びリフレクション生成プログラムに関するものである。
【背景技術】
【0002】
現在、COVID-19の流行に伴い、様々なファイル形式のCOVID-19関連データが、政府、地方自治体、病院、保健所等から毎日発信されている。これらのデータの利用目的からすれば、データ分析に長い時間を使うことは許されない。よって、高速なデータ分析が必要な状況となっている。
また、POS(Point Of Sales)やIoT(Internet Of Things)の日次データを取り扱う店舗や工場等では、その日次データの分析を翌日までに完了させる必要がある。つまり、こうした業界、業種でも高速なデータ分析が必要となっている。
【0003】
このように、似た構造のデータが次々と生成され、そうした大量のデータを一定時間内に分析するケースは、世の中に多く存在すると考えられる。このような高速なデータ分析を必要とする分野では、データアクセスを高速化するリフレクションの利用が進んでいる。
【0004】
このリフレクションとは、オープンソースのデータレイク向けSQL(Structured Query Language)エンジンDremio(https://www.dremio.com)の一機能である。リフレクションは、データの部分コピー(抜き出したカラム、集約演算の計算結果など)を持つことで、クエリを高速化するものとなる。
【0005】
本質的には、RDBMS(Relational Database Management System)のマテリアライズドビュー(マテリアライズドビュー表とも呼ぶ)と同等の機能である。ところが、このマテリアライズドビューは、RDB(Relational Database)に対してのみ適用可能な機能となる。
【0006】
一方、リフレクションは、マテリアライズドビューと同等の機能を、データレイク中のRDB以外のデータ(CSV形式ファイル、JSON形式ファイルなどのような半構造データ)にも提供可能となっており、より有用である。
【0007】
上述のリフレクションに関する従来技術としては、例えば、複数の問合せによりデータベース処理を行う際にマテリアライズドビュー表を効率的に利用することが可能な技術を提供する方法(特許文献1参照)などが提案されている。
【0008】
この技術は、マテリアライズドビュー表を作成するマテリアライズドビュー表作成方法において、複数の問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納するステップと、前記導出表リスト中の導出表をマテリアライズドビュー表として作成する定義情報を作成して記憶装置に格納し、その定義情報によるマテリアライズドビュー表の作成を指示するステップと、前記問合せ中の記述を前記作成されたマテリアライズドビュー表を用いる記述に変換して記憶装置に格納するステップとを有することを特徴とするものとなっている。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2006-343798号公報
【非特許文献】
【0010】
【文献】https://docs.dremio.com/acceleration/creating-reflections.html
【発明の概要】
【発明が解決しようとする課題】
【0011】
ところが従来技術においては、SQLクエリ(データセットに対するSQLを用いた問い合わせ)に対するリフレクションを、人手で作成する必要がある。非特許文献1で示す技術は、人手によるリフレクション作成方法について示すものである。この技術を採用する場合、1つのSQLクエリに対して、少なくとも1つのリフレクション生成用SQLクエリを作成する必要がある。
上述のような、SQLクエリそれぞれに対する、人手によるリフレクション作成は、大きな工数を要し、それ自体が高速なデータ分析の妨げとなってしまう。
【0012】
また特許文献1に示す技術によれば、複数の問合せ(クエリ)で共通して用いられる導出表を検出し、マテリアライズドビュー表を作成することができる。
【0013】
しかしながら、この技術は、過去に用いた導出表と同一のものを用いる場合に、履歴情報を用いて新たなマテリアライズドビュー表を作成するものであり、似ているが同一ではない導出表やSQLクエリには適用できない。また、クエリがSQLでないクエリ(タグクエリ、自然言語クエリなど)である場合も適用できない。更に、RDBに限定された技術でもある。
【0014】
そこで本発明は、リフレクション生成履歴を用いて、SQLクエリに対してリフレクションを自動生成可能とする技術の提供を目的とする。
【課題を解決するための手段】
【0015】
上記課題を解決する本発明のリフレクション生成システムは、リフレクションの履歴を保持する記憶装置と、リフレクション生成用の新規クエリが示すリフレクションの内容に基づき、当該内容と同じ内容の過去リフレクションに関するクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定し、前記選定した過去リフレクションのクエリに基づいてリフレクションを生成する演算装置と、を含むことを特徴とする。
また、本発明のリフレクション生成方法は、情報処理装置が、リフレクションの履歴を保持する記憶装置を備えて、リフレクション生成用の新規クエリが示すリフレクションの内容に基づき、当該内容と同じ内容の過去リフレクションに関するクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定し、前記選定した過去リフレクションのクエリに基づいてリフレクションを生成する、ことを特徴とする。
【0016】
また、本発明のリフレクション生成プログラムは、リフレクションの履歴を保持する記憶装置を備える情報処理装置に、リフレクション生成用の新規クエリが示すリフレクションの内容に基づき、当該内容と同じ内容の過去リフレクションに関するクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定し、前記選定した過去リフレクションのクエリに基づいてリフレクションを生成する処理、を実行させることを特徴とする。
【発明の効果】
【0017】
本発明によれば、リフレクション生成履歴を用いて、SQLクエリに対してリフレクションを自動生成可能となる。
ことが可能となる。
【図面の簡単な説明】
【0018】
図1】本実施形態のリフレクション生成システムの構成例を示す図である。
図2】本実施形態におけるリフレクション生成方法の全体処理を示す図である。
図3】本実施形態のリフレクション生成部のフロー例を示す図である。
図4】本実施形態のクエリ意味解析部のフロー例を示す図である。
図5】本実施形態のリフレクション決定部のフロー例を示す図である。
図6】本実施形態のリフレクション履歴表の構成例を示す図である。
図7】本実施形態のリフレクション生成部のフロー例を示す図である。
図8】本実施形態のクエリ意味解析部のフロー例を示す図である。
図9】本実施形態のリフレクション生成部のフロー例を示す図である。
図10】本実施形態におけるリフレクション履歴表の構成例を示す図である。
図11】本実施形態におけるログファイル例を示す図である。
【発明を実施するための形態】
【0019】
<リフレクション生成システムの構成>
以下に本発明の実施形態について図面を用いて詳細に説明する。図1は、本実施形態のリフレクション生成システム1の構成例を示す図である。図1に示すリフレクション生成システム1は、リフレクション生成履歴を用いて、SQLクエリに対してリフレクションを自動生成可能とする計算機システムである。
【0020】
なお、本実施形態においては、リフレクションという用語を用いて説明を行うが、既に述べたようにRDBMSのマテリアライズドビューと本質的に同じものであるため、本発明はRDBMSのマテリアライズドビューにも適用可能である。
【0021】
本実施形態のリフレクション生成システム1は、図1で示すように、CPU(Central Processing Unit)2、主記憶装置3、外部記憶装置4、及び入出力装置5を備える。
【0022】
このうちCPU2は、主記憶装置3ないし外部記憶装置4に保持されるプログラム読み出して実行し、統括制御を行なうとともに各種判定、演算及び制御処理を行なう演算装置である。
【0023】
また、主記憶装置3は、RAM(Random Access Memory)など揮発性記憶素子で構成される。この主記憶装置3は、クエリ20、SQLクエリ22、リフレクション履歴表24、ログファイル26、及びリフレクション生成部42を備える。
【0024】
このうちクエリ20は、SQL文ではなく、例えば、口語的に記述されたクエリであって、リフレクション生成用のクエリである。このクエリ20は、入出力装置5を介してユーザから受け付けて取得する。
【0025】
また、SQLクエリ22は、SQL文の形式で記述されたクエリであって、リフレクション生成用のクエリである。なお、このSQLクエリ22は、上述のクエリ20を、後述するクエリ-to-SQLクエリ変換部42A1Aによって変換したものも含まれうる。
【0026】
また、リフレクション履歴表24は、リフレクション生成対象となるデータレイクからリフレクションを抽出し生成した履歴を格納したテーブルとなる。
【0027】
また、ログファイル26は、例えば、システム管理者などの適宜な者に向けて出力するものであって、リフレクション生成の内容や更新の過程等を記述したファイルとなる。
【0028】
また、リフレクション生成部42は、本実施形態のリフレクション生成方法を実行する機能である。
【0029】
また、外部記憶装置4は、SSD(Solid State Drive)やハードディスクドライブなど適宜な不揮発性記憶素子で構成される。この外部記憶装置4は、テーブル50、及びリフレクション52が格納される。
【0030】
このうちテーブル50は、リフレクション生成部42によるカラム抽出対象となる、データレイクにおけるテーブルである。
【0031】
また、リフレクション52は、上述のリフレクション生成部42が生成したリフレクションである。
【0032】
また、入出力装置5は、ユーザからのキー入力や音声入力を受け付ける入力装置、処理データの表示を行うディスプレイ等の出力装置、を想定する。
<フロー例>
以下、本実施形態におけるリフレクション生成方法の実際手順について図に基づき説明する。以下で説明するリフレクション生成方法に対応する各種動作は、リフレクション生成システム1が主記憶装置3に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【0033】
図2は、本実施形態におけるリフレクション生成方法のメインフロー例を示す図である。この場合、リフレクション生成システム1のリフレクション生成部42は、入出力装置5を介して入力されたクエリ(クエリ20とSQLクエリ22のいずれか)を解析し、リフレクションを生成します。この処理の詳細は、順次説明する。
【0034】
続いて図3に、本実施形態におけるリフレクション生成部42の処理フローを示す。このフローにおいては、クエリ意味解析部42Aの処理の後、リフレクション決定部42Bの処理が実行される。
【0035】
このうちクエリ意味解析部42Aは、クエリ20の意味を解析して、SQLクエリ22に変換する。また、リフレクション決定部42Bは、上述のクエリ意味解析部42Aが生成したSQLクエリ22と、リフレクション履歴表24を用いて、リフレクションを作成し、リフレクション履歴表24を更新する。
【0036】
ここで、上述のクエリ意味解析部42Aにおける処理の詳細を説明する。クエリ意味解析部42Aは、クエリ-to-SQLクエリ変換部42A1Aによる処理を実行する。
【0037】
この場合、クエリ-to-SQLクエリ変換部42A1Aは、上述のクエリ20を、SQLクエリ22に変換する。既に述べたが、クエリ20は、SQLクエリ以外の一般的なクエリであり、様々な表現方法でデータセットに対して行う問い合わせ(クエリ)のことを指している。
【0038】
例えば、データセット自体や、データセットのカラム(列)につけた「タグ」を用いたタグクエリを想定できる。タグの例は、下記の表1で示すごときデータセット(仮にデー
タセット名をc2020とする)があった場合、「名前1」カラムに「姓」、「名前2」カラムに「名」、データセットに「顧客データ2020」とタグ名つけるようなケースである。
[表1]
つまりタグとは、データセットやカラムの「意味」を代表するような名前(タグ名)のことである。
【0039】
SQLクエリでは、SELECT 名前1、名前2 FROM c2020、といった、
当該データセットを熟知した専門家しかわからないクエリを記述する必要があるところ、タグクエリでは、SELECT 姓、名 FROM 顧客データ2020、などと、人にと
ってわかりやすい形で記述することが可能である。
【0040】
一般に、タグ名と対応するデータセットやカラム等の名前の対応表をタグクエリ管理システムが保持しているため、クエリ-to-SQLクエリ変換部42A1Aが、タグクエリからSQLクエリへの変換を行う場合、当該対応表を使ってタグ名をデータセット名やカラム名に置き換えることとなる。
【0041】
また、上述のクエリ20として、書き言葉や音声のような自然言語を用いた自然言語クエリも想定できる。例えば書き言葉の場合、「2020年の顧客データから顧客の姓と名を抜き出しなさい」といったクエリが該当する。
【0042】
このような自然言語クエリからSQLクエリへの変換を行う場合、クエリ-to-SQLクエリ変換部42A1Aは、例えば機械学習を用いる既知の方法(例:Victor Zhong, Caiming Xiong, and Richard Socher, "Seq2SQL: Generating Structured Queries FROM Natural Language using Reinforcement Learning," arXiv:1709.00103, 2017, https://arxiv.org/pdf/1709.00103.pdf)に対応したロジックにより、自然言語クエリの
各単語がSQL構文の何に相当するかという分類器を作成し、SQL変換を行う。
【0043】
また、音声の自然言語クエリの場合、音声で「2020年の顧客データから顧客の姓と名を抜き出しなさい」と問い合わせたものを想定できる。
この場合、クエリ-to-SQLクエリ変換部42A1Aは、音声をテキストに変換する技術であるSpeech to Text技術(例:https://eprints.lib.hokudai.ac.jp/dspace/bitstream/2115/39653/1/MP-SS1-3.pdf)を用いて、音声による自然言語クエリを書き言葉による自然言語クエリに変換し、更にそれをSQLクエリに変換することを想定できる。
【0044】
他にも、手話や身振り手振り(ボディランゲージ)といった動画像を画像解析エンジンに付与して、身体の動きや姿勢が意味するところに変換し、さらにその意味の組合せからSQLクエリに変換するといった運用も想定可能である。勿論、その場合、身体の動きや姿勢が意味するところとその意味の組合せに関して、SQLクエリの構文や記述との対応表或いは機械学習モデルが予め用意され、クエリ-to-SQLクエリ変換部42A1Aが、それを利用可能であるとする。
【0045】
続いて、上述のリフレクション決定部42Bのフローについて、図5に基づき説明する。リフレクション決定部42Bは、SQLクエリ22を入力とし、リフレクション履歴表24を用いて、リフレクション生成部42によるリフレクション生成を実行するものであ
る。
【0046】
ここで例示するSQLクエリ22の例として、例えば、SELECT SUM(col
12)FROM table20202020、といったものを採用する。
【0047】
まず、リフレクション決定部42Bは、処理42B1において、入力されたSQLクエ
リ22から、リフレクション生成に使用するカラムとテーブルを抽出する。上述のSQLクエリ22の例であれば、カラムとして「col12」を、テーブルとして「table2020」を抜き出すことに相当する。
【0048】
続いて、リフレクション決定部42Bは、処理42B2において、上述のSQLクエリ22に集約演算の記述が含まれているならば、当該集約演算の記載を抽出する。上述のSQLクエリ22の例であれば、「col12」に対する集約演算「SUM」を抽出することに相当する。なお、SQLクエリ22に集約演算の記述が含まれていない場合(例えば、SELECT col12 FROM table2020、のような場合)、本ステッ
プの実行は省略する。
【0049】
続いて、リフレクション決定部42Bは、処理42B3において、リフレクション履歴表24(図6参照。詳細後述)から、リフレクション対象カラムがステップ42B1で抽出したカラムと同一、かつ、集約演算方法がステップ42B2で抽出した集約演算と同一であり、リフレクション対象テーブルがステップ42B1で抽出したテーブルとは異なるエントリ(行)を探索する。
【0050】
ここでカラムが「同一」とは、以下の場合を意味する状況を想定するが、これらに限定されるものではない。「同一」とは、例えば、カラム名、及びカラムにつけられたタグ名の少なくともいずれかが同じ場合、カラムが「同一」と判定する。
【0051】
或いは、カラムに含まれるデータの統計情報(個数、平均値、最大値など)やメタデータが、事前に与えられた範囲内に収まるカラム同士は、同一と判定する。ここでのメタデータとは、あるデータが付随して持つそのデータ自身についての付加的なデータであり、データ生成時刻、データアクセス権限、データサイズなどを想定する。
【0052】
また、所定のロジック(例えば、https://www.hitachivantara.com/en-us/pdf/white-paper/using-ai-ml-to-power-data-fingerprinting-whitepaper.pdfで示すもの)で判定・生成したデータの特徴情報が同じ場合、カラムが「同一」と判定するとしてもよい。
【0053】
また他にも、データカタログ技術(例えば、https://www.oracle.com/big-data/what-is-a-data-catalog/で示すもの)が同じと判定するカラムも「同一」と取り扱ってよい。
【0054】
一方、テーブルが「異なる」とは、以下の場合を意味するが、これらに限定されるものではない。「異なる」とは、テーブル名、テーブルにつけられたタグ名が異なる場合、テーブルが「異なる」と判定する。
【0055】
また、テーブルに含まれるデータの統計情報(個数、平均値、最大値など)やメタデータが事前に与えられた範囲内に収まらないテーブル同士は、異なると判定する。
【0056】
また、所定のロジック(例えば、https://www.hitachivantara.com/en-us/pdf/white-paper/using-ai-ml-to-power-data-fingerprinting-whitepaper.pdfで示すもの)で判定・生成したデータの特徴情報が異なる場合、テーブルが「同一」と判定するとしてもよい。
【0057】
また他にも、データカタログ技術(例えば、https://www.oracle.com/big-data/what-is-a-data-catalog/で示すもの)が異なると判定するテーブルも「異なる」と取り扱って
よい。
【0058】
ここでフローの説明に戻る。リフレクション決定部42Bは、処理42B4の判定において、上述の処理42B3の結果、リフレクション履歴表24にてエントリが見つかった場合(42B4:Yes)、リフレクション生成(処理42B5)を実行する。
【0059】
一方、上述の判定の結果、フレクション履歴表24にてエントリが見つらなかった場合(42B4:No)、リフレクション決定部42Bは、必要があれば、入出力装置5のユーザインタフェースを介し、SQLクエリ22に関してリフレクション生成を指示し(処理42B6)、本フローを終了する。
【0060】
この処理は、リフレクション履歴表24が空で、最初の1個目のリフレクションの履歴
を作成する場合や、今までとは全く異なったSQLクエリ(当然、リフレクション履歴表には載っていない)に対してリフレクションを生成する場合に実行されるものとなる。
【0061】
なお、対象のSQLクエリ22が複雑なもの(例:SELECT name1 FROM
table1 UNION SELECT name2 FROM table2)で、1つのSQLクエリ22に複数のSELECT文等があるような場合は、SELECT文等ごとに図5のフローを繰り返すものとする。
【0062】
ここで、本実施形態におけるリフレクション履歴表24の例を図6に示す。このリフレクション履歴表24において、カラム(列)は左から、SQLクエリ列、リフレクション対象テーブル列、リフレクション対象カラム列、集約演算方法列、及びカラム同一性情報列が配置された構成となっている。また、本実施形態のリフレクション履歴表24の各エントリ(行)には、以前リフレクションを作成したSQLクエリの情報が格納される。
【0063】
なお、リフレクション対象テーブル列には、SQLクエリ22でリフレクション作成に使用したテーブルの名前が記録される。また、リフレクション対象カラム列には、SQLクエリ22でリフレクション作成に使用したカラムの名前が記録される。
【0064】
また、集約演算方法列には、SQLクエリ22に記述された集約演算方法が記録される。ただし、集約演算が記述されていない場合、当該列には「NULL」が記録される。
【0065】
また、カラム同一性情報列は、カラムに含まれるデータの統計情報、所定のロジックで判定・生成したデータの特徴情報、カラムに与えられたメタデータの情報、データカタログ技術の判定情報、などが記録されることとなる。このカラム同一性情報列は、単一の情報を記録するだけでなく、1つ以上の上記情報を記述した別テーブルへのリンク(ポイン
タなど)を記録するとしてもよい。
【0066】
続いて、リフレクション生成部42におけるリフレクション履歴表24の更新処理について図7に基づき説明する。まず、処理42B5Aにおけるリフレクション生成部42は、SQLクエリ22に対してリフレクションを生成する。
【0067】
この場合、データセットがCSVファイル、JSONファイル、スプレッドシートファイル等のように、表形式(RDBのテーブル)でなかった場合、リフレクション生成部42は、オープンソースのデータレイク向けSQLエンジンであるDremio等のソフトウェアを用いて(例:https://docs.dremio.com/data-sources/file-upload.html)、そ
れらのファイル形式を表形式に変換する。
【0068】
また、データセットがXMLファイルの場合、リフレクション生成部42は、既知のデータ管理システムなどで読み込んで変換(例えば、https://docs.oracle.com/cd/E11882_01/appdev.112/e23094/xdb26imp.htm#ADXDB5733)するとしてもよい。
【0069】
なお、リフレクションの生成方法は、SQLクエリ22が、例えばSELECT co
l13 FROM table2019、であった場合、Dremioでは、ALTER DATASET table2019 CREATE RAW REFLECTION ref1 USING DISPLAY(col13)、というリフレクショ
ン生成用SQLクエリを生成して実行する(例えば、https://docs.dremio.com/SQL-reference/SQL-commands/acceleration.html)。
【0070】
またRDBMSのマテリアライズドビューの場合は、例えばPostgreSQLでは、CREATE MATERIALIZED VIEW ref1 AS SELECT col13 FROM table2019、というリフレクション生成用SQLクエリを生成して実行する(例えば、https://www.postgreSQL.org/docs/9.3/SQL-CREATEmaterializedview.html)。
【0071】
また、処理42B5Bにおいて、リフレクション生成部42は、リフレクション履歴表24を更新し、フローを終了する。この更新の処理は、リフレクション履歴表24のエントリ(行)を1行増やし、そこにSQLクエリ22、処理42B1で抜き出したSQLク
エリ22のリフレクション対象テーブルとリフレクション対象カラム、処理42B2で抽出した集約演算方法、リフレクション対象テーブルやリフレクション対象カラムの同一性判定に用いたカラム同一性情報を書き込むことになる。
【0072】
続いてクエリ意味解析部42Aにおける処理について、図8に基づき説明する。この場合、処理42A1Bにおいて、クエリ意味解析部42Aは、クエリ20が、SQL規格に従ったSQLクエリであるかどうか判定する。
【0073】
この判定の結果、クエリ20がSQLクエリであった場合(42A1B:Yes)、クエリ意味解析部42Aは、処理42A1Cにおいて、クエリ20をSQLクエリ22にコピーし、処理を終了する。
【0074】
一方、上述の判定の結果、クエリ20がSQLクエリでなかった場合(42A1B:No)、クエリ意味解析部42Aは、クエリ-to-SQLクエリ変換の処理42A1Bを実行する。このクエリ-to-SQLクエリ変換の処理については、既には図4の説明にて示した。
【0075】
続いて、リフレクション生成部42の処理について図9に基づき説明する。この場合、処理42B5Cにおいて、リフレクション生成部42は、作成しようとするリフレクションの格納に必要な記憶容量が、リフレクション最大記憶容量を超えないかどうか判定する。
【0076】
この場合の判定方法は、リフレクション最大記憶容量>既存リフレクション記憶容量+今回のリフレクションの格納に必要な記憶容量、の不等式を満たす状況にあるか確認するものとなる。
【0077】
なお、リフレクション最大記憶容量は、一次記憶(メモリ)や二次記憶(ストレージ)にてユーザが使うことのできる最大の記憶容量である。このリフレクション最大記憶容量に関しては、設定ファイル等で値を定めることを想定する。
【0078】
また、既存リフレクション記憶容量とは、図10(後述)のリフレクション履歴表24
のサイズ列にある数値を合計した数値となる。また、今回のリフレクションに必要な記憶容量とは、作成しようとするリフレクションが取り扱うカラムの合計サイズを表したものである。
【0079】
なお、リフレクション最大記憶容量、既存リフレクション記憶容量、及び今回のリフレクションに必要な記憶容量のいずれも、記憶容量の単位(メガバイト等)は揃えてから前記不等式を評価することとする。
【0080】
上述の処理42B5Cの判定の結果、上述の不等式を満たす場合すなわち記憶容量は不足していない場合(42B5C:No)、リフレクション生成部42は、処理42B5Aに遷移する。この処理42B5Aについては、既に図7に基づき説明した。
【0081】
一方、上述の判定の結果、不等式を満たさない場合すなわち記憶容量が不足している場合(42B5C:Yes)、リフレクション生成部42は、処理42B5Dに遷移する。
【0082】
処理42B5Dにおいて、リフレクション生成部42では、削除可能なリフレクションを探索する。削除可能なリフレクションとは、例えば、図10のリフレクション履歴表24において、サイズ列の値>今回のリフレクションに必要な記憶容量、を満たすエントリのうち、リフレクション作成時刻が相対的により古いものを指す。
【0083】
こうした探索方法は、古いリフレクションほど、元になったデータセットが更新されている(つまり、元のデータセットとリフレクションが矛盾している)可能性が高いという観察に基づいている。
【0084】
或いは、サイズ列の値>今回のリフレクションに必要な記憶容量、を満たすエントリのうち、リフレクション作成頻度が小さいものを削除対象として特定するとしてもよい。作成頻度が小さいものほど、有用性が低いという観察に基づいている。
【0085】
上述のように削除可能とされる条件を満たすエントリが見つかった場合(42B5D:Yes)、リフレクション生成部42は、処理42B5Eni遷移する。一方、条件を満たすエントリが見つからなかった場合(42B5D:No)、リフレクション生成部42は、処理を終了する。
【0086】
処理42B5Eにおいて、リフレクション生成部42は、処理42B5Dで見つけたエントリに対応するリフレクションを削除し、図10のリフレクション履歴表24の当該エントリを削除する。
【0087】
ここで、図10において、リフレクション履歴表24の別の実施形態の例を示す。この場合のリフレクション履歴表24において、カラム(列)は左から、SQLクエリ列、リフレクション対象テーブル列、リフレクション対象カラム列、集約演算方法列、カラム同一性情報列、サイズ列、リフレクション作成時刻列、及び作成頻度列を含む構成となっている。
【0088】
このうち、SQLクエリ列からカラム同一性情報列までは、図6で示したリフレクション履歴表24と同一である。一方、サイズ列は、そのエントリ(行)に対応するリフレクションに必要な記憶容量を示す。図10のリフレクション履歴表24では、例としてMB(メガバイト)を単位としたが、本発明を通して一貫していれば、別の単位(例えばGB(ギガバイト)など)でもかまわない。
【0089】
また、リフレクション作成時刻列は、そのエントリ(行)に対応するリフレクションを
作成した時刻である。また、作成頻度列は、そのエントリ(行)に対応するリフレクションを作成した頻度である。
【0090】
ここでフローの説明に戻る。処理42B5Fにおいて、リフレクション生成部42は、図10のリフレクション履歴表24を更新し、フローを終了する。
【0091】
この更新の処理は、例えば、図5の処理42B3で探索した図10のリフレクション履歴表24のエントリ(行)を1行増やし、そこにSQLクエリ22、処理42B1で抜き出したSQLクエリ22のリフレクション対象テーブルとリフレクション対象カラム、処理42B2で抜き出した集約演算方法、リフレクション対象テーブルやリフレクション対象カラムの同一性判定に用いたカラム同一性情報、リフレクションのサイズ(今回のリフレクションに必要な記憶容量)、リフレクション作成時刻を書き込み、また、作成頻度を1つインクリメントする。
【0092】
なお、リフレクション生成部42は、上述のように実施したリフレクション生成やリフレクション履歴表24の更新といった各種処理のログをログファイル26に格納するものとする。リフレクション生成部42は、こうしたログファイル26を、例えば、ユーザからの要求に応じて、または予め定めた時期の到来に伴い、入出力装置5を通じて出力するものとすれば好適である。
【0093】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【0094】
こうした本実施形態によれば、リフレクション生成履歴を用いて、RDBだけでなくCSV、JSON、XML形式ファイル等によるデータに対して、同一ではないが類似するクエリを用いた場合にもリフレクションを自動的生成可能となる。すなわち、リフレクション生成履歴を用いて、SQLクエリに対してリフレクションを自動生成可能となる。
【0095】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態のリフレクション生成システムにおいて、前記演算装置は、前記同じ内容の過去リフレクションに関するクエリとして、前記新規クエリで指定されたデータ抽出対象のカラムが同じであるものを特定し、当該特定したクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定するものである、としてもよい。
【0096】
これによれば、例えば、カラムすなわちリフレクション生成対象となるデータや演算の種類は同じであっても、対象データの取得や観測の時刻や時期、地域などが他属性が異なるテーブルからリフレクションを生成することができる。そのため、データの時期的な変遷や或いは地域的な比較などに利用可能なリフレクションを効率的に生成可能となる。ひいては、リフレクション生成履歴を用いて、より効率的にSQLクエリに対してリフレクションを自動生成可能となる。
【0097】
また、本実施形態のリフレクション生成システムにおいて、前記記憶装置は、前記履歴において、リフレクションの生成回数の情報をさらに保持し、前記演算装置は、前記リフレクションの生成に際し、当該生成の対象となったリフレクションのうち前記生成回数が多いものから順に、リフレクション格納領域の使用状況が所定基準に至るまでリフレクション生成を実行するものである、としてもよい。
【0098】
これによれば、より有用なリフレクションについて、リフレクション格納領域の空き状況踏まえつつ優先的に生成可能となる。ひいては、リフレクション生成履歴を用いて、より効率的にSQLクエリに対してリフレクションを自動生成可能となる。
【0099】
また、本実施形態のリフレクション生成システムにおいて、前記演算装置は、前記リフレクションの生成に際し、前記リフレクション格納領域の使用状況が所定基準を超えている場合、前記生成回数が基準以下のリフレクションを削除した上で、リフレクション生成を実行するものである、としてもよい。
【0100】
これによれば、リフレクション格納先を確保した上で、有用なリフレクション生成・格納が可能となり、全体として有効なリフレクションを継続的に維持できる運用が期待出来る。ひいては、リフレクション生成履歴を用いて、より効率的にSQLクエリに対してリフレクションを自動生成可能となる。
【0101】
また、本実施形態のリフレクション生成方法において、前記情報処理装置が、前記同じ内容の過去リフレクションに関するクエリとして、前記新規クエリで指定されたデータ抽出対象のカラムが同じであるものを特定し、当該特定したクエリのうち、リフレクション生成元が前記新規クエリと異なるものを前記履歴から選定する、としてもよい。
【0102】
また、本実施形態のリフレクション生成方法において、前記情報処理装置が、前記記憶装置における前記履歴において、リフレクションの生成回数の情報をさらに保持し、前記リフレクションの生成に際し、当該生成の対象となったリフレクションのうち前記生成回数が多いものから順に、リフレクション格納領域の使用状況が所定基準に至るまでリフレクション生成を実行する、としてもよい。
【0103】
また、本実施形態のリフレクション生成方法において、前記情報処理装置が、前記リフレクションの生成に際し、前記リフレクション格納領域の使用状況が所定基準を超えている場合、前記生成回数が基準以下のリフレクションを削除した上で、リフレクション生成を実行する、としてもよい。
【符号の説明】
【0104】
1 リフレクション生成システム
2 CPU(演算装置)
3 主記憶装置
4 外部記憶装置
5 入出力装置
20 クエリ
22 SQLクエリ
24 リフレクション履歴表
26 ログファイル
42 リフレクション生成部
42A クエリ意味解析部
42A1A クエリ-to-SQLクエリ変換部
42B リフレクション決定部
50 テーブル
52 リフレクション
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11