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

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

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

<>
  • 特開-データ処理装置及び方法 図1
  • 特開-データ処理装置及び方法 図2
  • 特開-データ処理装置及び方法 図3
  • 特開-データ処理装置及び方法 図4
  • 特開-データ処理装置及び方法 図5
  • 特開-データ処理装置及び方法 図6
  • 特開-データ処理装置及び方法 図7
  • 特開-データ処理装置及び方法 図8
  • 特開-データ処理装置及び方法 図9
  • 特開-データ処理装置及び方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023128370
(43)【公開日】2023-09-14
(54)【発明の名称】データ処理装置及び方法
(51)【国際特許分類】
   G06F 16/907 20190101AFI20230907BHJP
【FI】
G06F16/907
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022032681
(22)【出願日】2022-03-03
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】西川 記史
(72)【発明者】
【氏名】茂木 和彦
(72)【発明者】
【氏名】樫山 俊彦
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175HA01
5B175HB03
(57)【要約】
【課題】表の索引の設計に要する工数を低減する。
【解決手段】データ処理装置が、第2の表を構成する列のメタデータを取得し、当該取得されたメタデータと類似するメタデータが第1のデータカタログ(データベースにおける第1の表を構成する列毎の列名とメタデータとを有するデータ)である。データ処理装置が、当該判定の結果が真の場合、第1のデータカタログから、上記取得されたメタデータと類似するメタデータに対応した列名を特定し、当該特定された列名を含んだ索引であって第1の表の索引である第1の索引を生成する。データ処理装置が、当該生成した第1の索引、又は、当該第1の索引に基づき生成され第2の表の索引である第2の索引を推薦する。
【選択図】図1
【特許請求の範囲】
【請求項1】
記憶装置とプロセッサとを含むデータ処理装置であって、
前記記憶装置は、データベースにおける第1の表を構成する列毎の列名とメタデータとを有する第1のデータカタログを記憶し、
前記プロセッサは、
第2の表を構成する列のメタデータを取得し、
当該取得されたメタデータと類似するメタデータが前記第1のデータカタログにあるか否かを判定し、
当該判定の結果が真の場合、前記第1のデータカタログから、前記取得されたメタデータと類似するメタデータに対応した列名を特定し、
当該特定された列名を含んだ索引であって前記第1の表の索引である第1の索引を生成し、
前記生成した第1の索引と、当該第1の索引に基づき生成され前記第2の表の索引である第2の索引とのうちの少なくとも一つを推薦する、
データ処理装置。
【請求項2】
前記記憶装置は、前記第2の表の索引定義を記憶し、
前記索引定義は、前記第2の表の索引が有する列名であって前記第2の表の列名を含み、
前記プロセッサは、前記索引定義から列名を特定し、
前記取得されたメタデータは、当該特定された列名に対応する列のメタデータであり、
推薦される索引は、前記第1の索引である、
請求項1に記載のデータ処理装置。
【請求項3】
前記第2の表は、新たに入力された表、或いは、列の変更があった表であり、
推薦される索引は、前記第1の索引及び前記第2の索引のうち少なくとも前記第2の索引である、
請求項1に記載のデータ処理装置。
【請求項4】
前記取得されたメタデータは、変更された列のメタデータであり、
前記プロセッサは、
当該取得されたメタデータと、変更前の列のメタデータとのうち、異なる属性の種別を特定し、
当該特定された属性種別を基に、索引の変更の要否を判定し、
当該判定の結果が真の場合、
当該特定された属性種別に対応する索引種別を特定し、
前記第1の索引を、前記第1の表について既に存在する一つ又は複数の索引のうちの、前記特定された索引種別の索引を用いて生成する、
請求項3に記載のデータ処理装置。
【請求項5】
前記特定された属性種別が、ソート有無の場合、又は、クエリに指定可能なデータベースオペレーションに関する条件である使われ方の場合、前記判定結果が真であり、
前記特定された属性種別が、ソート有無の場合、前記特定された索引種別は、レンジであり、
前記特定された属性種別が、使われ方の場合、前記特定された索引種別は、B-treeである、
請求項4に記載のデータ処理装置。
【請求項6】
列毎のメタデータは、下記を表すデータを含み、
当該列におけるデータの特性であるデータ特性、及び、
クエリに指定可能であり当該列におけるデータを用いて行われるデータベースオペレーションに関する条件である使われ方、
前記取得されたメタデータと類似するメタデータとは、下記の条件を満たすデータである、
前記データ特性及び前記使われ方のいずれも一致している、
前記取得されたメタデータのうちの前記データ特性及び前記使われ方以外のデータについて類似度が一定値以上である、
請求項1に記載のデータ処理装置。
【請求項7】
コンピュータにより行われるデータ処理方法であって、
(A)第2の表を構成する列のメタデータを取得し、
(B)当該取得されたメタデータと類似するメタデータが第1のデータカタログにあるか否かを判定し、
(C)当該判定の結果が真の場合、前記第1のデータカタログから、前記取得されたメタデータと類似するメタデータに対応した列名を特定し、
(D)当該特定された列名を含んだ索引であって第1の表の索引である第1の索引を生成し、
(E)前記生成した第1の索引と、当該第1の索引に基づき生成され前記第2の表の索引である第2の索引とのうちの少なくとも一つを推薦し、
前記第1の表は、データベースにおける表であり、
前記第1のデータカタログは、前記第1の表を構成する列毎の列名とメタデータとを有するデータである、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、データ処理に関し、特に、データベースの表の索引設計に関する。
【背景技術】
【0002】
この種の技術として、例えば、特許文献1に開示の技術がある。特許文献1に開示の技術は、与えられたクエリから潜在的な索引候補を抽出し、それらの索引候補を、最適化を用いて評価し、その評価結果に基づいて索引を推薦する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】US10,762,085
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示されているように、与えられたクエリが使用する表の索引を推薦する技術はある。
【0005】
しかし、推薦された索引に対応の表が属する環境又はデータベースとは別の環境又は別のデータベースについては、その別の環境又は別のデータベースに属する表のための索引を別途設計する必要がある。このため、その別の環境又は別のデータベースについて網羅的にクエリを利用しなければならず、結果として、索引設計の工数がかかる。
【0006】
また、新たに表が入力された場合、又は、表が変更された場合、その入力された又は変更された表の索引の設計が必要となり得るが、その索引の設計も、その入力された又は変更された表についてのクエリを利用しなければならず、結果として、索引設計の工数がかかる。
【課題を解決するための手段】
【0007】
データ処理装置が、第2の表を構成する列のメタデータを取得し、当該取得されたメタデータと類似するメタデータが第1のデータカタログ(データベースにおける第1の表を構成する列毎の列名とメタデータとを有するデータ)である。データ処理装置が、当該判定の結果が真の場合、第1のデータカタログから、上記取得されたメタデータと類似するメタデータに対応した列名を特定し、当該特定された列名を含んだ索引であって第1の表の索引である第1の索引を生成する。データ処理装置が、当該生成した第1の索引、又は、当該第1の索引に基づき生成され第2の表の索引である第2の索引を推薦する。
【発明の効果】
【0008】
本発明によれば、表の索引の設計に要する工数を低減することができる。
【図面の簡単な説明】
【0009】
図1】本発明の第1の実施形態に係るデータ処理装置の構成を示す。
図2】データカタログ情報の構成を示す。
図3】索引定義情報の構成例を示す。
図4】第1の実施形態に係る索引設計支援処理の流れを示す。
図5】類似性判定処理の流れを示す。
図6】索引推薦処理の流れを示す。
図7】第2の実施形態に係る索引設計支援処理の流れを示す。
図8】第3の実施形態に係る索引設計支援処理の流れを示す。
図9】第4の実施形態に係る索引設計支援処理の流れを示す。
図10】索引変更判定処理の流れを示す。
【発明を実施するための形態】
【0010】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0011】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0012】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はNVMe(Non-Volatile Memory Express)ドライブでよい。
【0013】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0014】
また、以下の説明では、「yyy部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGA又はASIC)によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配付計算機又は計算機が読み取り可能な記憶媒体(例えば非一時的な記憶媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0015】
以下、幾つかの実施形態を説明する。
[第1の実施形態]
【0016】
図1は、第1の実施形態に係る本発明の第1の実施形態に係るデータ処理装置の構成を示す。
【0017】
データ処理装置100は、インターフェース装置101、永続記憶装置102、メモリ103及びプロセッサ104を備える。
【0018】
インターフェース装置101は、通信ネットワーク(例えばインターネット)150に接続されている。インターフェース装置101は、通信ネットワーク150を介して、ユーザ装置110と通信する。ユーザ装置110は、パーソナルコンピュータ等の物理的な計算機でもよいし、物理的な計算機に基づく仮想的な計算機でもよい。また、インターフェース装置101は、ユーザ装置110に代えて又は加えて、ユーザインターフェースデバイスとしての入出力デバイスに接続されていてもよい。すなわち、ユーザ装置110及び入出力デバイスのいずれとの間でも、データ処理装置100が情報の入出力を行うことができる。
【0019】
永続記憶装置102は、データベース121と、データカタログ情報122と、索引定義情報123とを記憶する。データベース121、データカタログ情報122及び索引定義情報123のうち少なくともデータベース121は、複数存在してもよい。例えば、テスト環境(第1の環境の一例)に属するデータベース121と、本番環境(第1の環境と異なる第2の環境の一例)に属するデータベース121とがあってよい。また、第1のデータベース121と、第1のデータベースと異なる第2のデータベース121があってよい(第1のデータベース121が属する環境と第2のデータベース121が属する環境は同じで異なっていてもよい)。データベース121は、表と索引を含む。データカタログ情報122及び索引定義情報123については後述する。
【0020】
メモリ103は、一つ又は複数のコンピュータプログラムを記憶する。これらのプログラムがプロセッサ104により実行されることで、索引候補生成部131及び索引設計支援部132といった機能が実現される。索引候補生成部131は、与えられたクエリが使用する表の索引を、当該クエリを用いて生成する。索引候補生成部131は、既存技術に従う機能でよい。索引設計支援部132は、後述の索引設計支援処理を行う。索引設計支援部132は、類似性判定部136及び索引推薦部137といった機能を含む。類似性判定部136及び索引推薦部137については後述する。
【0021】
図示しないが、メモリ103は、DBMS(DataBase Management System)がプロセッサ104により実現されるためのコンピュータプログラムを記憶してもよい。索引候補生成部131及び索引設計支援部132の少なくとも一つは、DBMSに含まれてもよいし、DBMSの外の機能であってもよい。DBMSは、クエリソースからクエリを受け付け、当該クエリに従い、当該クエリで指定された表の索引を参照し、データベース121に対する入出力を行う。クエリソースは、ユーザ装置110のようにデータ処理装置100の外部の装置でもよいし、データ処理装置100の内部の要素(例えば、プロセッサ104がメモリにおけるコンピュータプログラムを実行することで実現されるアプリケーション)であってもよい。
【0022】
図2は、データカタログ情報122の構成を示す。
【0023】
データカタログ情報122は、一つ又は複数のデータベース121における表毎のデータカタログを含む。データカタログは、表を構成する列毎の列名202とメタデータ210とを有するデータである。
【0024】
データカタログ情報122は、表毎にエントリを有する。一つの表のエントリを例に取ると、エントリは、表名201、列名202、型/統計203、第1属性204、第2属性205及び説明206といった情報を含む。表は、一つ又は複数の列で構成される。一つの列を例に取ると、列のメタデータ210は、型/統計203、第1属性204、第2属性205及び説明206を含む。一つの表及び一つの列を例に取り、情報201~206を説明する。
【0025】
表名201は、表の名称を表す。列名202は、列の名称を表す。型/統計203は、列におけるデータの型(例えば、数値又は文字)と、列におけるデータの統計(例えば、最大値、最小値及び平均値)とを表す。第1属性204は、列におけるデータの特性(例えば、列における重複データの有無、ソートの有無)を表す。第2属性205は、使われ方(データベース121へのクエリ(例えばSQL文)に指定可能なデータベースオペレーション(例えば、結合、ソート、絞込)に関する条件(例えば、結合キー、ソートキー、絞込条件))を表す。説明206は、列の説明(例えば、テキスト文)を表す。
【0026】
図3は、索引定義情報123の構成例を示す。
【0027】
索引定義情報123は、一つ又は複数のデータベース121における生成済の索引毎にエントリを有する。一つの索引のエントリが、当該索引の索引定義に相当する。一つの索引のエントリを例に取ると、エントリは、索引名301、表名302、索引種別303及び列名304といった情報を有する。
【0028】
索引名301は、索引の名称を表す。表名302は、索引が対応する表の名称を表す。索引種別303は、索引の種別(例えば、B-tree、レンジ)を表す。列名304は、索引に含まれている列名を表す。
【0029】
図3が示すように、一つの表に、一つ又は複数の索引が存在し得る。また、少なくとも一つの索引定義は、当該索引定義が表す索引が対応した表のデータカタログに含まれていてもよい。
【0030】
図4は、第1の実施形態に係る索引設計支援処理の流れを示す。
【0031】
索引設計支援部132は、索引定義(例えば、当該索引定義が表す索引が対応した表Aのデータカタログに含まれている索引定義)を取得する(S401)。この索引定義は、ユーザ装置110から入力され永続記憶装置102に格納されてもよいし、永続記憶装置102から取得されてもよい。
【0032】
索引設計支援部132は、S401で取得した索引定義に含まれている表名(表Aの表名)と一致する表名を持つデータカタログのうち、S401で取得した索引定義が有する列名304に一致する列名202を特定し、特定した列名202に対応のメタデータ210を取得する(S402)。なお、S402で取得されたメタデータは、データカタログから取得されたメタデータ210に代えて、S401で取得した索引定義に含まれている表名の表Aから取得されたメタデータ(例えば、特に、S401で取得した索引定義が表す列毎に当該表から取得されたメタデータ)でもよい。
【0033】
索引設計支援部132の類似性判定部136が、類似性判定処理を行う(S403)。
【0034】
類似性判定処理において、メタデータ210に類似するメタデータ(メタデータ210との類似度Sが所定の閾値Th以上のメタデータ)があれば(S404:YES)、索引設計支援部132の索引推薦部137が、索引推薦処理を行う。
【0035】
図5は、類似性判定処理の流れを示す。
【0036】
図5の説明において、比較元のメタデータは、類似性判定処理の前に取得されたメタデータ(本実施形態では、S402で取得されたメタデータ)である。比較先のメタデータは、比較元のメタデータと比較されるメタデータであって、比較元のメタデータに対応した列を有する表Aとは別の表Bの列のメタデータ(表Bのデータカタログにおけるメタデータ)である。一つの比較元のメタデータについて、表Bのうち、全ての列のメタデータが比較先のメタデータとされてもよい。一つの比較元のメタデータと一つの比較先のメタデータを例に取り、類似性判定処理を説明する。なお、一つの比較元のメタデータについて、比較先のメタデータは、比較元のメタデータに対応した列の列名と一致する列名の列のメタデータのみでもよい。
【0037】
類似性判定部136は、比較元のメタデータに対応した列名202と、比較先のメタデータに対応した列の列名202とが一致するか否かを判定する(S501)。S501の判定結果が真の場合(S501:YES)、類似性判定部136は、現在の点数Sに所定の点数(例えば“1”)を加算する。
【0038】
また、類似性判定部136は、比較元のメタデータにおける型/統計203が表すデータ型と、比較先のメタデータにおける型/統計203が表すデータ型とが一致するか否かを判定する(S502)。S502の判定結果が真の場合(S502:YES)、類似性判定部136は、現在の点数Sに所定の点数(例えば“1”)を加算する。
【0039】
その後、類似性判定部136は、比較元のメタデータにおける型/統計203が表す統計と、比較先のメタデータにおける型/統計203が表す統計との一致度に応じた点数を、現在の点数Sに加算する(S505)。この段落で言う「一致度」は、比較元のメタデータにおける型/統計203が表す統計と、比較先のメタデータにおける型/統計203が表す統計との間で互いに一致した要素(例えば、最大値、最小値又は平均値)の数に依存する。
【0040】
類似性判定部136は、比較元のメタデータにおけるデータ特性(第1属性204)と、比較先のメタデータにおけるデータ特性(第1属性204)とが一致するか否かを判定する(S506)。S506の判定結果が偽の場合(S506:NO)、類似性判定部136は、比較先のメタデータが比較元のメタデータに類似しないと判定する(S511)。この場合、点数Sは初期値にリセットされてよい。
【0041】
S506の判定結果が真の場合(S506:YES)、類似性判定部136は、比較元のメタデータにおける使われ方(第2属性205)と、比較先のメタデータにおける使われ方(第2属性205)とが一致するか否かを判定する(S507)。S507の判定結果が偽の場合(S507:NO)、S511が行われる。
【0042】
S507の判定結果が真の場合(S507:YES)、類似性判定部136は、比較元のメタデータにおける説明206(テキスト文)と、比較先のメタデータにおける説明206との一致度に応じた点数を、現在の点数Sに加算する(S508)。この段落で言う「一致度」は、比較元のメタデータにおける説明206と、比較先のメタデータにおける説明206との間で互いに一致した要素の数に依存する。ここでの「要素」は、単語でもよいし、単語とその位置との組合せでもよい。要素は、類似性判定部136により説明206(説明)から特定される。
【0043】
類似性判定部136は、現在の点数Sが所定の閾値Th以上か否かを判定する(S509)。S509の判定結果が偽の場合(S509:NO)、S511が行われる。
【0044】
S509の判定結果が真の場合(S509:YES)、類似性判定部136は、比較先のメタデータが比較元のメタデータに類似すると判定する(S510)。この場合、点数Sが前述の類似度Sでよく、点数Sの閾値Thが前述の閾値Thでよい。つまり、少なくとも一つの比較元のメタデータについてS509の判定結果が真の場合、図4のS404の判定結果が真でよい。
【0045】
図6は、索引推薦処理の流れを示す。
【0046】
索引推薦部137は、同一表Bについて、類似性判定処理において類似と判定された比較先メタデータに対応の列の列名304をリストアップする(S601)。
【0047】
索引推薦部137は、リストアップされた列名304を有する索引(索引候補)を生成し(S602)、当該索引(索引候補)を、表Bの索引として推薦する(S603)。
【0048】
S602で生成される索引は、S401で取得された索引定義が表す索引種別と同じ種別の索引でよい。
【0049】
また、S603の「推薦」とは、生成された索引(索引候補)がユーザ(索引設計者)に対して提示される(例えば、ユーザ装置110に表示される)ことでもよいし、生成された索引(索引候補)が、表Bの索引の一つとして、表Bを含むデータベース121に格納されることでもよい。また、S603の「推薦」は、メモリ103や永続記憶装置102に、生成された索引(索引候補)の定義を出力することであってもよい。
【0050】
第1の実施形態によれば、表Aの索引の索引定義を基に特定されたデータカタログを用いて、表Bの索引(索引候補)を自動生成し推薦することができる。結果として、表Bの索引の設計に要する工数が低減される。なお、表Aの索引は、索引候補生成部131により生成されてよい。
[第2の実施形態]
【0051】
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する(この点は、第3及び第4の実施形態についても同様)。
【0052】
図7は、第2の実施形態に係る索引設計支援処理の流れを示す。
【0053】
S401及びS402に代えて、S701及びS702が行われる。
【0054】
S701では、索引設計支援部132は、データカタログに登録されていない表Aの列のメタデータと、当該表Aの索引とを取得する。取得されたメタデータに対応の列は、取得された索引が表す列でよい。
【0055】
S702では、索引設計支援部132は、S701で取得された索引の索引定義に含まれている列名304を取得する。
【0056】
S703~S705は、S403~S405と実質的に同じである。S703において、比較元のメタデータは、S701で取得されたメタデータ(表Aの列のメタデータ)でよい。
【0057】
第2の実施形態によれば、表Aの索引の索引定義を基に、表Bの索引(索引候補)を自動生成し推薦することができる。結果として、表Bの索引の設計に要する工数が低減される。
[第3の実施形態]
【0058】
図8は、第3の実施形態に係る索引設計支援処理の流れを示す。
【0059】
S401及びS402に代えて、S801が行われる。
【0060】
S801では、索引設計支援部132は、表Aの列のメタデータを取得する。
【0061】
S802~S804は、S403~S405と実質的に同じである。S802において、比較元のメタデータは、S801で取得されたメタデータ(表Aの列のメタデータ)でよい。
【0062】
第3の実施形態によれば、表Aの列のメタデータを基に、表Bの索引(索引候補)を自動生成し推薦することができる。結果として、表Bの索引の設計に要する工数が低減される。
[第4の実施形態]
【0063】
図9は、第4の実施形態に係る索引設計支援処理の流れを示す。
【0064】
S401及びS402に代えて、S901~S903が行われる。
【0065】
S901では、索引設計支援部132は、新たな表A又は更新された表Aの列のメタデータの変更を取得する。具体的には、例えば、下記のいずれかでよい。
・新たな表Aは、データベース121に新たに格納された表でよい。新たな表Aのデータカタログがデータカタログ情報122に追加されてよい。当該追加されたデータカタログから(又は、新たな表Aから)、表Aの列毎のメタデータが取得されてよい。
・更新された表Aは、少なくとも一つの列が変更(例えば、追加又は更新)された表でよい。表Aの更新に伴い、表Aのデータカタログの少なくとも一つのメタデータが更新されてもよい。当該更新されたデータカタログから(又は、更新された表Aのうちの変更された列から)、変更された列のメタデータが取得されてよい。
【0066】
S902では、索引設計支援部132は、索引変更判定処理を行う。
【0067】
S903では、索引設計支援部132は、索引変更判定処理における判定結果が変更要か否かを判定する。
【0068】
S903の判定結果が真の場合(S903:YES)、S904~S906が行われる。S904~S906は、S403~S405と実質的に同じでよい。例えば、下記が採用されてよい。
【0069】
すなわち、S904において、比較元のメタデータは、S901で取得されたメタデータ(新たな表Aの列毎のメタデータ、又は、更新された表Aのうちの変更されたメタデータ)でよい。
【0070】
また、S906において(具体的には、図6のS603において)、推薦される索引は、S602において生成された索引B(表Bの索引)と、当該索引Bを基に索引推薦部137により生成された索引A(新たな表A又は更新された表Aの索引(索引候補))とのうちの一方又は両方でよい。索引Aは、例えば、索引Bの索引種別と同じ索引種別の索引でよい。
【0071】
また、索引Aは、索引Bに加えて、更新前の表Aの索引A´を用いて生成されてよい。索引Aの列名のうち、変更が無い列の列名は、索引A´の列名と同じでよい。索引Aは、例えば、索引A´の索引種別と同じ索引種別の索引でよい。
【0072】
図10は、索引変更判定処理の流れを示す。
【0073】
索引設計支援部132は、S901で取得されたメタデータの第1属性204のうちのソート有無が、変更前の列のメタデータの第1属性204のうちのソート有無と異なるか否かを判定する(S1001)。
【0074】
S1001の判定結果が真の場合(S1001:YES)、索引設計支援部132は、変更前の表Aの一つ又は複数の索引のうち、索引種別が“レンジ”であるレンジ索引を、変更要の索引と判定する(S1002)。
【0075】
S1001の判定結果が偽の場合(S1001:NO)、索引設計支援部132は、S901で取得されたメタデータの第2属性205(使われた方)が、変更前の列のメタデータの第2属性205と異なるか否かを判定する(S1003)。
【0076】
S1003の判定結果が真の場合(S1003:YES)、索引設計支援部132は、変更前の表Aの一つ又は複数の索引のうち、索引種別が“B-tree”であるB-tree索引を、変更要の索引と判定する(S1004)。
【0077】
S1004の判定結果が偽の場合(S1004:NO)、索引設計支援部132は、S901で取得されたメタデータが新たな表Aのメタデータか否かを判定する(S1005)。
【0078】
S1005の判定結果が真の場合(S1005:YES)、索引設計支援部132は、変更要(索引Aの生成)と判定する(S1006)。
【0079】
S1001、S1003及びS1005のうちのいずれかの判定結果が真の場合、S903の判定結果が真である。一方、S1001、S1003及びS1005のうちのいずれかの判定結果も偽の場合、S903の判定結果が偽である。
【0080】
第4の実施形態によれば、表Aの列のメタデータを基に、索引B(表Bの索引)を自動生成すること、及び、索引Bと索引A(表Aの索引であり索引Bを基に生成された索引)の一方又は両方を推薦することができる。結果として、索引B及び索引Aの設計に要する工数が低減される。
【0081】
上述の第1~第4の実施形態を、例えば下記のように総括することができる。なお、下記の総括は、変形例の説明や補足説明を含んでよい。
【0082】
データ処理装置100は、記憶装置(例えば永続記憶装置102及びメモリ103を含む)とプロセッサ104とを含む。記憶装置は、データベース121における表B(第1の表の一例)を構成する列毎の列名202とメタデータ210とを有するデータカタログB(第1のデータカタログの一例)を記憶する。
【0083】
プロセッサ104は、表A(第2の表の一例)を構成する列のメタデータを取得する。プロセッサ104は、当該取得されたメタデータと類似するメタデータ210がデータカタログBにあるか否かを判定する。当該判定の結果が真の場合、プロセッサ104は、データカタログBから、上記取得されたメタデータと類似するメタデータ210に対応した列名202を特定する。プロセッサ104は、当該特定された列名202を含んだ索引であって表Bの索引である索引B(第1の索引の一例)を生成する。プロセッサ104は、当該生成した索引Bと、当該索引Bに基づき生成され表Aの索引である索引Aとのうちの少なくとも一つを推薦する。
【0084】
このように、表Aの列のメタデータと類似するメタデータを有する列を持った表Bの索引として、当該類似するメタデータを有する列の列名を含んだ索引Bが、自動生成され推薦される。このため、索引Bの設計に要する工数が低減する。
【0085】
表BのデータカタログBは、既存の技術を利用して用意されてよい。一般に、データカタログBを含むデータカタログ情報122は、データベース121の中身の概要(例えば、どのような表が存在するか)を知るために用意される。このようなデータカタログ情報122におけるデータカタログBを利用して、索引B(索引候補)の自動生成が実現される。このため、索引Bを生成するために表Bに関するクエリを作成する必要が無い。
【0086】
表Bが属する環境(例えば本番環境)は、表Aが属する環境(例えばテスト環境)と異なっていてよい。また、表Bが含まれるデータベース121は、表Aが含まれるデータベース121と異なっていてよい。例えば、それらの環境又はデータベース121のうち、一方が、ローカルの環境又はデータベース121であり、他方が、リモートの環境又はデータベース121(例えば、クラウド又はクラウドストレージ内のデータベース)でもよい。
【0087】
記憶装置は、表Aの一つ以上の索引を表す索引定義を含む索引定義情報123を記憶してよい。一つの索引A´を例に取ると、索引定義は、索引A´が有する列名であって表Aの列名を含んでよい。プロセッサ104は、索引A´について索引定義から列名を特定してよい。上記取得されたメタデータは、当該特定された列名に対応する列のメタデータでよく、推薦される索引は、索引Bでよい。このように、表Aの索引A´を利用して表Bに関するクエリ無しに表Bの索引Bを生成し推薦することができる。
【0088】
表Aは、新たに入力された表、或いは、列の変更(例えば、列の追加又は更新)があった表でよい。推薦される索引は、索引B及び索引Aのうち少なくとも索引Aでよい。これにより、新たに入力された表A、或いは、列の変更があった表Aについて、当該表Aに関するクエリ無しに、索引A(索引候補)の自動生成及び推薦がされる。
【0089】
表Aについて取得されたメタデータは、変更された列のメタデータでよい。このメタデータは、表Aのデータカタログから取得されてよい。プロセッサ104は、当該取得されたメタデータのうちの変更されたデータの属性種別(例えば、データ特性又は使われ方)を特定し、当該特定された属性種別を基に、索引の変更の要否を判定してよい。当該判定結果が真の場合、プロセッサ104は、当該特定された属性種別に対応する索引種別(例えば、“レンジ”又は“B-tree”)を特定し、索引Bを、表Bについて既に存在する一つ又は複数の索引のうちの、当該特定された索引種別の索引を用いて生成してよい。索引Aは、この索引Bを基に生成される。このため、索引Bの索引種別と、生成された索引Aの索引種別は同じである。具体的には、特定された属性種別が、ソート有無の場合、又は、使われ方の場合、索引の変更が要と判定されてよい。特定された属性種別が、ソート有無の場合、特定された索引種別は、レンジでよい。特定された属性種別が、使われ方の場合、特定された索引種別は、B-treeでよい。このように、表Bについて既に存在する一つ又は複数の索引から、変更されたデータの属性種別に適切な索引種別の索引が選択され、当該選択された索引を基に、索引B及び索引Aの生成がされる。つまり、適切な索引種別の索引Aを効率的に生成することができる。
【0090】
列毎のメタデータは、当該列におけるデータの特性、及び、使われ方、を含んでよい。取得されたメタデータと類似するメタデータは、データ特性及び使われ方のいずれも一致していて、当該取得されたメタデータのうちのデータ特性及び使われ方以外のデータについて類似度が一定値以上であることでよい。これにより、類似するメタデータとして適切なメタデータの特定が可能である。
【0091】
以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【符号の説明】
【0092】
100…データ処理装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10