(57)【要約】【課題】関係データベースから列指向型キーバリューストアへデータを移行する際に、スキーマ変更のための設計支援を行うことで、列指向型ＫＶＳのスキーマ設計作業量を削減する。【解決手段】関係データベースから列指向型キーバリューストアへ移行するために、関係スキーマの構造化データ値から非構造化データ項目および関係スキーマの非構造化データ値から構造化データ項目をそれぞれ抽出し、これら抽出した各データ項目に対して関係データベースから抽出した使用統計により列指向型ＫＶＳスキーマ上の適合度評価を行い、その評価に基づいて列指向型ＫＶＳスキーマのデータ項目群とスキーマに対するインデックススキーマの各候補を推奨順に提示することにより、移行設計支援を行う。【選択図】図１
2014211790.tif 000002
【特許請求の範囲】
【請求項１】
関係データベースと、
前記関係データベースの関係スキーマの構造化データ値から非構造化データ項目を抽出する第１の抽出手段と、
前記関係スキーマの非構造化データ値から構造化データ項目を抽出する第２の抽出手段と、
前記関係データベースの使用統計から前記関係データベースのレコードおよびインデックスに対する更新頻度および参照頻度を抽出する第３の抽出手段と、
前記第１、第２および第３の各抽出手段が抽出した前記各情報を格納する保持手段と、
前記第１および第２の抽出手段が抽出した前記各データ項目に対して、前記第３の抽出手段が抽出した前記更新頻度および前記参照頻度を基に前記列指向型キーバリューストアスキーマ上の適合度を評価する評価手段と、
前記評価手段による前記適合度の評価に基づいて、前記各データ項目から前記列指向型キーバリューストアスキーマのデータ項目候補を該評価の高い順に提示する提示手段と
を備えることを特徴とする列指向型キーバリューストア移行設計支援システム。
【請求項２】
請求項１に記載の列指向型キーバリューストア移行設計支援システムであって、
前記提示手段は、前記評価手段による前記適合度の評価に基づいて、前記各データ項目から前記列指向型キーバリューストアスキーマに対するインデックススキーマ候補も併せて提示する
ことを特徴とする列指向型キーバリューストア移行設計支援システム。
【請求項３】
関係データベースから列指向型キーバリューストアへ移行するための移行設計支援方法であって、
前記関係データベースの関係スキーマの構造化データ値から非構造化データ項目を抽出する第１のステップと、
前記関係スキーマの非構造化データ値から構造化データ項目を抽出する第２のステップと、
前記関係データベースの使用統計から前記関係データベースのレコードおよびインデックスに対する更新頻度および参照頻度を抽出する第３のステップと、
前記第１および第２の各ステップで抽出した前記各データ項目に対して、前記第３のステップで抽出した前記更新頻度および前記参照頻度を基に前記列指向型キーバリューストアスキーマ上の適合度を評価する第４のステップと、
前記第４のステップによる前記適合度の評価に基づいて、前記各データ項目から前記列指向型キーバリューストアスキーマのデータ項目候補を該評価の高い順に提示する第５のステップと
を有することを特徴とする移行設計支援方法。
【請求項４】
請求項３に記載の移行設計支援方法であって、
前記第５のステップに続いて、前記評価ステップによる前記適合度の評価に基づいて、前記各データ項目から前記列指向型キーバリューストアスキーマに対するインデックススキーマ候補を提示する第６のステップと
を有することを特徴とする移行設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、関係データベースに代表される関係データ構造を持つ構造化情報のスキーマから、列指向型キーバリューストアのスキーマへの移行を目的とした移行設計を支援するシステムおよび方法に関する。
【背景技術】
【０００２】
データを格納するデータベースシステムにおいて、データの格納形式（スキーマ）をデータの活用方法に基づいて最適化することは、データを活用するアプリケーションにとって、性能面においても目的とする情報の抽出精度においても有利に働く。既存の関係データベース（リレーショナルデータベース）において、用途を最適化する観点でそのスキーマを再設計する場合、実際に、情報取得方法に合わせた非正規化や重複値を対象としたデータ圧縮などにより、目的に応じて最適化されるスキーマを設計する。
【０００３】
これらのスキーマ設計作業は属人的で手間がかかるところ、一方で、目的に合わせたスキーマに移行するケースにおいて、スキーマの再設計を支援する試みは多く存在する。
例えば、特許文献１では、関係データベースに関して、あらかじめ定めた定数列に基づいてスキーマを変更し、記憶容量を削減する手段を提示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２４８６０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年注目を浴びる列指向型キーバリューストア（以下、「列指向型ＫＶＳ」という）は、関係データベースより比較的柔軟なデータ構造（以下、スキーマ）を持つ。また、そのデータ構造は、ストア（ストレージ）の分散化に向き、大量データに対する可用性や読み取り性能において、一般的な関係データベースよりも優位であると考えられる。
【０００６】
列指向型ＫＶＳの利用は、データ分析や検索の分野への適用が多く、既にデータが存在する場合や、データが多く収集されるようなシステムでの利用が効果的である。多くのデータは、既存システムの関係スキーマや、ほぼスキーマレスで大量に収集されるログとして存在している。そのため、列指向型ＫＶＳを活用するケースにおいては、関係データベーススキーマ（以下、「関係スキーマ」という）から、列指向型ＫＶＳに合わせたスキーマ（列指向型ＫＶＳスキーマ）の移行設計を行うことが多い。
【０００７】
しかし、現在のところ、列指向型ＫＶＳスキーマには確立された設計方法論は存在せず、比較的自由に、設計者の経験や抽出項目に基づいて設計することが多く、スキーマの品質の良し悪しは開発者に依存しているといえる状況である。
また、データ分析や検索の分野では、列定義の追加・変更が多く、別のスキーマ上で同一の値を保持する可能性もあることから、従来、関係スキーマ設計で用いていた最適化手法が活用できない場面が多く存在する。
【０００８】
例えば、特許文献１では、特定の列項目において同一値を抽出して、構成要素を複数の格納手段に分けることでデータ容量を削減しているが、データ抽出の高速化のために複数のスキーマ毎にデータを持つことはできず、この手法によると、列指向型ＫＶＳスキーマでは一度の要求でデータを抽出できないことになる。
【０００９】
本発明の第一の目的は、列指向型ＫＶＳを利用するシステムにおいて、列指向型ＫＶＳ以外のデータソース、特に関係データベースから列指向型ＫＶＳへデータを移行する際に、スキーマ変更のための設計支援を行うことで、列指向型ＫＶＳのスキーマ設計作業量を削減することである。
本発明の第二の目的は、構築後の列指向型ＫＶＳスキーマを用途に適合させることで、データ抽出の総合的な性能を向上させることである。
【課題を解決するための手段】
【００１０】
関係データベースから列指向型ＫＶＳへ効率よく移行するための設計支援機能を提供する。
そのために、関係スキーマの構造化データ値から非構造化データ項目、関係スキーマの非構造化データ値から構造化データ項目をそれぞれ抽出し、これら抽出した各データ項目に対して関係データベースから抽出した使用統計により列指向型ＫＶＳスキーマ上の適合度評価を行い、その評価に基づいて列指向型ＫＶＳスキーマのデータ項目群とスキーマに対するインデックススキーマの各候補を推奨順に提示することにより、列指向型ＫＶＳへ移行するための設計支援を行う。
【発明の効果】
【００１１】
本発明により、関係スキーマから列指向型ＫＶＳへのデータ移行を設計する時に、関係スキーマ上のデータ項目の中からＫＶＳスキーマに合ったデータ項目を抽出することが容易となる。列項目の抽出においては、非構造化（非正規化）項目だけではなく構造化項目も見つけることにより、より列指向に向いた移行用のスキーマ設計が可能となる。
また、データスキーマだけではなくインデックススキーマも提供することで、移行後の列指向型ＫＶＳに対して、総合的に高いデータ走査性能を持つことが容易になる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施例に係るシステムの基本構成を示した図である。
【図２】図２は、非構造化項目抽出部による処理のデータフローを示した図である。
【図３】図３は、構造化項目抽出部による処理のデータフローを示した図である。
【図４】図４は、関係スキーマ解析部からの出力例を示した図である。
【図５】図５は、列指向型ＫＶＳスキーマ構成部による処理のフローチャートを示した図である。
【図６】図６は、列指向型ＫＶＳスキーマ設計支援のための画面例を示した図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態として、システムの基本構成を図面を用いて説明する。
図１は、本発明に係るシステムの基本構成である。図１では、中央演算処理装置などの計算処理能力を有する一つ以上の計算機およびネットワークで構成される計算機システム（１０１）は、関係スキーマ解析部（２００）、関係スキーマメタ情報保持部（５００）、列指向型ＫＶＳスキーマ構成部（６００）を備え、模式的に図示のような相互の関係に配置されている。
【００１４】
関係スキーマ解析部（２００）は、その機能として、列指向型ＫＶＳスキーマの設計者（１００）による入力部（１０２）からの入力、または、業務システム（１０４）が有する業務データベース（以下、業務ＤＢ）（１０５）に存在する、業務データおよび管理データから、列指向型ＫＶＳスキーマの設計に必要なデータを抽出し、関係スキーマメタ情報保持部（５００）に保存する。
【００１５】
また、関係スキーマ解析部（２００）は、その構成として、列指向型ＫＶＳにあたって、ＫＶＳスキーマのための非正規化対象データを抽出・算出する非構造化項目抽出部（３００）と、正規化やテキスト解析といった構造化対象データを抽出・算出する構造化項目抽出部（４００）を有する。
【００１６】
非構造化項目抽出部（３００）は、インデックス抽出部（３０１）、関係抽出部（３０２）および利用統計処理部（３０３）を有する。また、構造化項目抽出部（４００）は、自由記述項目抽出部（４０１）と検索条件解析部（４０２）を有する。
【００１７】
列指向型ＫＶＳスキーマ構成部（６００）は、その機能として、関係スキーマメタ情報保持部（５００）のデータおよび入力部（１０２）からの取得対象データ要求を入力として、列指向型ＫＶＳのスキーマ候補や項目候補を算出し、表示部（１０３）を通じて表示する。また、列指向型ＫＶＳスキーマ構成部は、その構成として、適合度評価部（６０１）、データスキーマ構成部（６０２）およびインデックススキーマ構成部（６０３）を有する。
【実施例】
【００１８】
本発明の実施例として、図１に示した本発明に係るシステムの基本構成による処理態様について説明する。
本発明の処理態様としては、関係スキーマ解析部（２００）による処理と列指向型ＫＶＳスキーマ構成（６００）による処理とに大きく分かれる。まず、設計者（１００）により入力部（１０２）から入力された関係データベース情報、または、業務ＤＢ（１０５）に存在する業務データおよび管理データ、を用いて、関係スキーマ解析部（２００）にて関係スキーマ情報を解析し、保管する。そして、この保管された情報を用いて、列指向型ＫＶＳスキーマ構成部（６００）が列指向型ＫＶＳスキーマの候補を生成し、表示部（１０３）を通じて設計者に表示する。
【００１９】
図２、図３に、関係スキーマ解析部（２００）による処理を実行する際のデータフローを示す。
図２は、関係スキーマ解析部（２００）の中の非構造化項目抽出部（３００）による処理のデータフロー図である。非構造化項目抽出部（３００）は、それぞれが業務ＤＢ（１０５）で管理されている、スキーマ定義（１０５１）および利用ログ（１０５２）から獲得した情報を加工し、関係スキーマメタ情報保持部（５００）に保管する機能を有する。
【００２０】
インデックス抽出部（３０１）は、業務ＤＢ（１０５）のスキーマ定義（１０５１）から、テーブル定義およびインデックス定義を取得する。取得した各定義情報から、インデックスに使用されている列および列の定義情報を、関係スキーマメタ情報保持部（５００）に保管する。
【００２１】
関係抽出部（３０２）は、スキーマ定義（１０５１）に加えて、業務ＤＢの利用ログ（１０５２）から、データの関係を表す情報を抽出する。スキーマ定義（１０５１）からはテーブルの外部キー情報を取得し、多対多の関係をもつ関係テーブルを抽出する。また、利用ログ（１０５２）からはテーブル同士の結合操作ログ（結合履歴）を取り出し、例えば主テーブルと明細テーブルといった関係を抽出する。
【００２２】
利用統計処理部（３０３）は、インデックス抽出部（３０１）および関係抽出部（３０２）で抽出した列の定義と列の集合である、レコードのタプル（組）、インデックスのタプル（組）それぞれに対して、利用ログ（１０５２）から操作履歴を取り出し更新頻度や参照頻度を集計する。
【００２３】
図３は、関係スキーマ解析部（２００）の中の構造化項目抽出部（４００）による処理のデータフロー図である。構造化項目抽出部（４００）もまた、非構造化項目抽出部（３００）と同様に、それぞれが業務ＤＢ（１０５）で管理されているスキーマ定義（１０５１）、利用ログ（１０５２）、業務ＤＢ（１０５）上のテーブルから情報を取得・加工し、関係スキーマメタ情報保持部（５００）に保管する機能を有する。
【００２４】
検索条件解析部（４０２）は、利用ログ（１０５２）から検索条件を抽出し、関係スキーマメタ情報保持部（５００）に保管する。例えば、実際に行われた選択クエリのフィルタ条件に含まれる列名を抽出し保管する。
【００２５】
自由記述抽出部（４０１）は、スキーマ定義（１０５１）にあるテーブル列の型情報と業務ＤＢ（１０５）に格納されている文字列の値の特徴から、文字列が自由記述かどうかを抽出する。例えば、テーブル列の型情報から可変長文字列型を抽出し、業務ＤＢ（１０５）に格納されている文字列の値から当該値の種別数と値の追加頻度を算出し、ある閾値以上の種別あるいは追加頻度を超えたものを自由記述として抽出することができる。自由記述と判定された列名は、関係スキーマメタ情報保持部（５００）に存在する各列名の属性値として格納される。
【００２６】
図４は、関係スキーマ解析部（２００）からの出力である、列および列の定義情報を保管するテーブルの定義例を示した図である。タプル定義テーブル（５００１）には、非構造化項目抽出部（３００）および構造化項目抽出部（４００）で抽出された項目が格納される。抽出された項目をまとめたタプル（組）毎に、その識別子（ＩＤ）を付したタプル名が、タプル属性、対象となる列数および利用頻度とともに格納される。タプル詳細テーブル（５００２）には、各タプルがまとめた列または定義情報について、その識別子（ＩＤ）を付したオブジェクト名が、種別および利用頻度とともに格納される。
【００２７】
図５は、列指向型ＫＶＳスキーマ構成部（６００）による処理のフローチャートを示した図である。
列指向型ＫＶＳスキーマ構成部（６００）の処理は、関係スキーマ解析部（２００）の処理が終了し、関係スキーマメタ情報保持部（５００）に解析結果が格納された後に開始される。例えば、関係スキーマ解析結果のデータが格納された時点で開始しても良いし、設計者からの要求に基づいて再構成を開始するのでも良い。
【００２８】
列指向型ＫＶＳスキーマ構成処理の開始ステップ（Ｓ６０１）は、関係スキーマ定義を入力として開始する。
初めに、適合度評価部（６０１）により、検索クエリ列挙処理およびクエリ適合度算出処理が実行される。検索クエリ列挙処理ステップ（Ｓ６０２１）では、関係スキーマメタ情報保持部（５００）から検索クエリに関わる情報を取得する。図４のスキーマを例にとると、タプル属性がインデックスまたは検索条件であるタプル情報およびそのタプルが構成する列名を取得する。
【００２９】
続いて、クエリ適合度算出処理ステップ（Ｓ６０２２）では、列挙した検索クエリに対して列指向型ＫＶＳの適合度を判定する。この適合度は、列指向型ＫＶＳに格納するデータとして効果的な特徴項目の有無を基準に算出される。例えば、検索クエリが関係テーブルを利用するかどうか、更新頻度が高い列が複数あるかどうか、更新頻度が高いテーブル同士の結合クエリかどうか、などから総合的に評価する。この場合において、各項目への重みづけ、項目の除外または追加も可能である。評価により得られた検索クエリ毎の適合度は、列指向型適合度保持部（Ｍ６０１）に格納される。
【００３０】
次に、データスキーマ構成部（６０２）により、関係スキーマ非正規化処理および関係スキーマ正規化処理が実行される。関係スキーマ非正規化処理ステップ（Ｓ６０３１）では、関係スキーマメタ情報保持部（５００）から取得した検索クエリに対して、列指向型適合度保持部（Ｍ６０１）に格納した適合度を参照して検索クエリ毎の出力結果を、データスキーマとして列指向型スキーマ保持部（Ｍ６０２）へ登録する。
【００３１】
続いて、関係スキーマ正規化処理ステップ（Ｓ６０３２）では、自由記述項目抽出部（４０１）により登録されたデータスキーマのうち、自由記述と判別されかつ検索条件となっている列が関係スキーマメタ情報保持部（５００）から抽出される。この抽出された列を、列指向型適合度保持部（Ｍ６０１）に格納した適合度を参照して、検索のためのテキスト解析またはパターン解析対象として列指向型スキーマ保持部（Ｍ６０２）へ登録する。
【００３２】
最後に、インデックススキーマ構成部（６０３）により、インデックス列選択処理およびインデキシングコスト算出処理が実行される。インデックス列選択処理ステップ（Ｓ６０４１）では、列指向型スキーマ保持部（Ｍ６０２）にデータスキーマとして登録されたスキーマのうち、検索に活用されるインデックス列が選択され、インデックススキーマ保持部（Ｍ６０３）に格納される。その際に、関係スキーマメタ情報保持部（５００）を参照しそこに保持されている”検索条件”または”インデックス”に該当するタプルや、関係スキーマ正規化処理ステップ（Ｓ６０３２）で抽出された列が、インデックス列として選択される。
【００３３】
続いて、インデキシングコスト算出処理ステップ（６０４２）では、インデックス列選択処理（Ｓ６０４１）により選択されたインデックス列について、それぞれのインデキシングコスト（インデキシングのための処理時間）が算出される。このコストの算出方法は、テキスト処理の必要性、データの更新頻度、結合の有無などを用いて総合的に算出され、算出されたコストは、インデックススキーマ保持部（Ｍ６０３）に追記される。
以上の各処理ステップが終了すれば、列指向型ＫＶＳスキーマ構成処理の完了ステップ（Ｓ６０５）となる。
【００３４】
図６は、列指向型ＫＶＳスキーマ構成部（６００）が、関係スキーマメタ情報保持部（５００）に格納されている関係スキーマメタ情報と、入力部（１０２）からの取得対象データ要求を入力として、列指向型ＫＶＳのスキーマ候補や項目候補を表示する画面例を示した図である。
【００３５】
本画面例は、タプル選択部（１０２１）、データスキーマ出力部（１０３１）およびインデックススキーマ出力部（１０４１）から構成される。
タプル選択部（１０２１）においては、列指向型ＫＶＳスキーマのタプル選択入力が可能である。タプル定義テーブル（５００１）のデータに、タプル詳細テーブル（５００２）の値を加えたデータが、タプルごとに、適合度評価順に表示される。表示されるデータは、保持するスキーマ情報のうち、「関係」や「インデックス」といった管理用のデータではなく、「結合選択」といった実体を持つデータが選択される。別途の指標として、タプルの使用頻度数（１０２２）を表示することや、適合度評価に対して閾値を基に推奨されるものと判断した識別（１０２３）をマーク等で表示することができる。
【００３６】
データスキーマ出力部（１０３１）には、タプル選択部（１０２１）で選択されたタプルについて、タプルの識別子をキーにして、列指向型指向型ＫＶＳスキーマとしてのデータの例が表示される。データスキーマ出力部（１０３１）は、タプル選択部（１０２１）での選択に連動してその表示が変更される。この際、出力部の表示項目を手動で修正しても良い。
【００３７】
また、インデックススキーマ出力部（１０４１）には、データスキーマ出力部（１０３１）に表示されるスキーマに必要と判定される検索用のインデックススキーマが表示される。インデックススキーマに表示されるのは、「関係」や「インデックス」といった管理用データであり、タプル選択部（１０２１）には表示されないデータである。管理用データのタプルがデータスキーマ出力部（１０３１）に出力されているタプルのうち、適合度評価または使用頻度が上位のタプルがインデックススキーマとして出力される。
【００３８】
以上により算出され表示されたスキーマ情報を用いて、移行する列指向型ＫＶＳスキーマの推薦を行うことにより、スキーマ設計の支援を実現するものである。また、検索クエリを列指向型ＫＶＳスキーマ移行の推奨ランキングとして提示し、移行にあたってのスキーマ情報としてデータスキーマおよびインデックススキーマを表示することができ、スキーマ設計の支援に寄与するものである。また、本発明により設計されるインデックススキーマは、データソースである関係データベース上での利用統計を利用しているため、その統計を利用しない場合より、比較的検索性能が高いものを提供できると予測される。
【００３９】
以上、本発明を実施例について説明したが、本発明はこの実施例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることが可能であることは勿論である。
【符号の説明】
【００４０】
１００  設計者
１０１  計算機システム
１０２  入力部
１０３  表示部
１０４  業務システム
１０５  業務ＤＢ
２００  関係スキーマ解析部
３００  非構造項目抽出部
３０１  インデックス抽出部
３０２  関係抽出部
３０３  利用統計処理部
４００  構造化項目抽出部
４０１  自由記述項目抽出部
４０２  検索条件解析部
５００  関係スキーマメタ情報保持部
６００  列指向型ＫＶＳスキーマ構成部
６０１  適合度評価部
６０２  データスキーマ構成機能
６０３  インデックススキーマ構成機能
【図１】
2014211790.tif 000003
【図２】
2014211790.tif 000004
【図３】
2014211790.tif 000005
【図４】
2014211790.tif 000006
【図５】
2014211790.tif 000007
【図６】
2014211790.tif 000008