JP7472078B2 - データ仮想化装置及び方法 - Google Patents

データ仮想化装置及び方法 Download PDF

Info

Publication number
JP7472078B2
JP7472078B2 JP2021085266A JP2021085266A JP7472078B2 JP 7472078 B2 JP7472078 B2 JP 7472078B2 JP 2021085266 A JP2021085266 A JP 2021085266A JP 2021085266 A JP2021085266 A JP 2021085266A JP 7472078 B2 JP7472078 B2 JP 7472078B2
Authority
JP
Japan
Prior art keywords
name
column
data
external
source
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.)
Active
Application number
JP2021085266A
Other languages
English (en)
Other versions
JP2022178453A (ja
Inventor
基孝 金松
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2021085266A priority Critical patent/JP7472078B2/ja
Priority to US17/651,836 priority patent/US11847102B2/en
Publication of JP2022178453A publication Critical patent/JP2022178453A/ja
Application granted granted Critical
Publication of JP7472078B2 publication Critical patent/JP7472078B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/213Schema design and management with details for schema evolution support
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases

Description

本発明の実施形態は、データ仮想化装置及び方法に関する。
近年では、複数のデータソースに散在する実データを複製することなく仮想的に統合し、
例えばビジネス等の分野で活用することができるデータを提供するデータ仮想化(データ統合ソリューション)という技術が知られている。
このようなデータ仮想化を実現するデータ仮想化装置においては、各データソースにおいて実データとして管理されているテーブルの構造(当該テーブルのテーブル名及び当該テーブルを構成するカラムのカラム名等)が定義されたスキーマ情報に基づいて、当該実データを保持しない仮想化テーブル(外部テーブル)が作成される。これにより、ユーザは、データ仮想化装置において作成された仮想化テーブルを介して、各データソースにおいて管理されているテーブルを区別することなく、当該テーブルにアクセスすることができる。
しかしながら、上記した複数のデータソースの各々において管理されているテーブルで同一の種類のデータが扱われている場合において、当該テーブルのテーブル名等が異なる表記で定義されている場合、当該テーブルに対して効率的にアクセスすることができない場合がある。
特許第6523823号公報
そこで、本発明が解決しようとする課題は、複数のデータソースにおいて管理されているテーブルに対する効率的なアクセスを実現することが可能なデータ仮想化装置及び方法を提供することにある。
実施形態によれば、第1及び第2データソースと接続され、格納手段を有するデータ仮想化装置が提供される。前記データ仮想化装置は、取得手段と、第1変換手段と、登録手段とを具備する。前記取得手段は、前記第1データソースにおいて管理されている第1ソーステーブルの第1テーブル名を含む第1スキーマ情報と、前記第2データソースにおいて管理されている第2ソーステーブルの第2テーブル名を含む第2スキーマ情報とを取得する。前記第1変換手段は、前記取得された第1スキーマ情報に含まれる第1テーブル名を第3テーブル名に変換し、前記取得された第2スキーマ情報に含まれる第2テーブル名を第3テーブル名に変換する。前記登録手段は、前記第1ソーステーブルに対応する第1外部テーブルを作成するために、前記第1テーブル名及び当該第1テーブル名から変換された第3テーブル名を対応づけて含む第1テーブル対応情報を前記格納手段に登録し、前記第2ソーステーブルに対応する第2外部テーブルを作成するために、前記第2テーブル名及び当該第2テーブル名から変換された第3テーブル名を対応づけて含む第2テーブル対応情報を前記格納手段に登録する。
第1実施形態におけるデータ仮想化システムのネットワーク構成の一例を示す図。 データ仮想化装置のハードウェア構成の一例を示す図。 本実施形態の比較例に係るデータ仮想化装置の機能構成の一例を示す図。 外部テーブルを作成する際のデータ仮想化装置の動作の概要を示す図。 外部テーブルを介してデータを取得する際のデータ仮想化装置の動作の概要を示す図。 本実施形態に係るデータ仮想化装置の機能構成の一例を示すブロック図。 外部テーブルを作成する際のデータ仮想化装置の動作の概要を説明するための図。 外部テーブルを作成する際のデータ仮想化装置の処理手順の一例を示すフローチャート。 変換処理の処理手順の一例を示すフローチャート。 データ仮想化装置において作成される外部テーブルの具体例を示す図。 データ仮想化装置の使用態様の一例について説明するための図。 データ仮想化装置の使用態様の一例について説明するための図。 データ仮想化装置の使用態様の一例について説明するための図。 第2実施形態に係るデータ仮想化装置が有するマルチテナント機能について説明するための図。 本実施形態に係るデータ仮想化装置の機能構成の一例を示すブロック図。 マルチテナントテーブルを作成する際のデータ仮想化装置の動作の概要を説明するための図。 マルチテナントテーブルを作成する際のデータ仮想化装置の処理手順の一例を示すフローチャート。 本実施形態の作用効果を説明するための図。 本実施形態の作用効果を説明するための図。 第3実施形態に係るデータ仮想化装置の機能構成の一例を示すブロック図。 データ取得クエリに含まれるテーブル名及びカラム名を変換する際のデータ仮想化装置の動作の概要を説明するための図。 クライアント端末においてデータ取得クエリが指定された際のデータ仮想化装置の処理手順の一例を示すフローチャート。 本実施形態の作用効果について説明するための図。 第4実施形態に係るデータ仮想化装置の機能構成の一例を示すブロック図。 マルチテナントテーブルを作成する際のデータ仮想化装置の動作の概要を説明するための図。 マルチテナントテーブルを作成する際のデータ仮想化装置の処理手順の一例を示すフローチャート。 マルチテナントテーブルを作成する際のデータ仮想化装置の処理手順の一例を示すフローチャート。 マルチテナントテーブルを作成する際のデータ仮想化装置の処理手順の一例を示すフローチャート。 本実施形態の作用効果を説明するための図。 本実施形態の作用効果を説明するための図。 第5実施形態に係るテーブル仮想化装置の機能構成の一例を示すブロック図。 類語辞書を作成する際のデータ仮想化装置の動作の概要を説明するための図。 類語辞書を作成する際のデータ仮想化装置の処理手順の一例を示すフローチャート。
以下、図面を参照して、各実施形態について説明する。
(第1実施形態)
図1は、第1実施形態におけるデータ仮想化システムのネットワーク構成の一例を示す。図1に示すように、データ仮想化システム1は、複数のデータソース10、クライアント端末20及びデータ仮想化装置30を備える。
本実施形態において、複数のデータソース10は、データ仮想化装置30と通信可能に接続されている。また、クライアント端末20は、データ仮想化装置30と通信可能に接続されている。
複数のデータソース10の各々は、例えばIoT(Internet of Things)技術において収集されたデータ(実データ)を保持する各種テーブルを管理するデータベース管理システム(データベース管理サーバ)に相当する。なお、データソース10は、実データ(データファイル)自体を意味していてもよい。
クライアント端末20は、ユーザによって使用される端末装置であり、パーソナルコンピュータ等の電子機器によって実現される。ユーザは、クライアント端末20を操作することによって様々なクエリ(問い合わせ)を指定することができる。なお、クライアント端末20においてユーザによって指定されるクエリは、例えばSQL(Structured Query Language)で記述された命令文(SQL文)等である。例えばクライアント端末20において特定のデータソース10において管理されているテーブルに保持されているデータを取得(検索)するためのクエリ(以下、データ取得クエリと表記)が指定された場合、クライアント端末20は、当該データ取得クエリに基づいてデータ仮想化装置30が当該データソース10から取得したデータをユーザに対して提示(表示)する。
データ仮想化装置30は、複数のデータソース10の各々において管理されているテーブル(以下、ソーステーブルと表記)に対応する外部テーブル(仮想化テーブル)を作成し、当該外部テーブルを介してユーザに対してデータを提供するデータ仮想化を実現するための情報処理装置である。本実施形態において、外部テーブルは、データソース10において管理されているソーステーブルをデータ仮想化層で管理し、当該ソーステーブルを自テーブルとしてクライアント端末20にアクセスさせる(つまり、当該ソーステーブルが自身のテーブルであるかのように振る舞う)機能を実現する。
なお、データ仮想化装置30においては、上記した複数のデータソース10の各々において管理されているソーステーブルに保持されている実データを当該データソース10から複製して保持する必要はない。上記したようにクライアント端末20においてデータ取得クエリが指定された場合、データ仮想化装置30は、外部テーブルを参照して当該データ取得クエリに基づいて取得されるべきデータ(を保持するソーステーブル)を管理しているデータソース10を特定し、当該データソース10から取得されたデータをクライアント端末20に返す(つまり、ユーザに提供する)ように動作する。
また、データ仮想化装置30は複数のデータソース10の各々と接続されるが、クライアント端末20において指定されたデータ取得クエリは、例えば当該データ仮想化装置30上で動作する所定のプラグインによって当該データソース10向けに変更される。これにより、データ仮想化装置30は、仕様が異なる複数のデータソース10と接続されている場合であっても、当該データソース10間の差異を吸収して、当該データソース10の各々からユーザによって指定されたデータ取得クエリに基づく適切なデータを取得することができる。
図2は、図1に示すデータ仮想化装置30のハードウェア構成の一例を示す。図2に示すように、データ仮想化装置30は、CPU31、不揮発性メモリ32、主メモリ33及び通信デバイス34等を備える。
CPU31は、データ仮想化装置30内の各コンポーネントの動作を制御するプロセッサである。CPU31は、ストレージデバイスである不揮発性メモリ32から主メモリ33にロードされる様々なプログラムを実行する。このプログラムには、オペレーティングシステム(OS)及びデータ仮想化装置30がデータ仮想化システム1において動作するためのプログラム等が含まれる。
通信デバイス34は、複数のデータソース10及びクライアント端末20等と有線または無線による通信を実行するように構成されたデバイスである。
図2においてはCPU31、不揮発性メモリ32、主メモリ33及び通信デバイス34のみが示されているが、データ仮想化装置30は、例えばHDD(Hard Disk Drive)及びSSD(Solid State Drive)のような他の記憶装置等を更に備えていてもよいし、他のデバイスを更に備えていてもよい。
以下、本実施形態に係るデータ仮想化装置について説明する前に、本実施形態の比較例に係るデータ仮想化装置について説明する。
図3は、本実施形態の比較例に係るデータ仮想化装置の機能構成の一例を示すブロック図である。図3に示すようにデータ仮想化装置30´は、格納部301´、インタフェース部302´、クエリ解析部303´、クエリプラン作成部304´、クエリ実行部305´、クエリ分割部306´、スキーマ情報取得部307´及び外部テーブル情報登録部308´を含む。
なお、本実施形態の比較例に係るデータ仮想化装置30´は、上記した図1において説明した本実施形態に係るデータ仮想化装置30と同様に、複数のデータソース10及びクライアント端末20と通信可能に接続されているものとする。
格納部301´は例えばシステムカタログ等と称され、当該格納部301´には、複数のデータソース10の各々において管理されているソーステーブルに対応する外部テーブルに関する情報(以下、外部テーブル情報と表記)が格納されている。また、格納部301´には、複数のデータソース10の各々に関する情報(以下、データソース情報と表記)が更に格納されている。なお、データソース情報には、例えばデータソース10において管理されているソーステーブルのテーブル名及び当該データソース10にアクセスするために用いられるアクセス情報等が含まれる。アクセス情報には、データソース10のデータソース名(サーバ名)及び当該データソース10に割り当てられているアドレス等が含まれる。
上記したようにクライアント端末20においてデータ取得クエリが指定された場合、インタフェース部302´は、当該データ取得クエリを当該クライアント端末20から取得(入力)する。
クエリ解析部303´は、インタフェース部302´によって取得されたデータ取得クエリを解析し、当該データ取得クエリの正当性を確認する。データ取得クエリの正当性が確認されると、クエリ解析部303´は、当該データ取得クエリに対する処理を判別する。
クエリプラン作成部304´は、クエリ解析部303´によるデータ取得クエリに対する処理の判別結果に基づいて、当該データ取得クエリを効率的に実行するための当該クエリの実行プランを作成する。
なお、上記したクエリ解析部303´及びクエリプラン作成部304´の処理は、格納部301´に格納されている外部テーブル情報を参照して実行される。
クエリ実行部305´は、クエリプラン作成部304´によって作成された実行プランに従ってデータ取得クエリを実行する。
データ仮想化装置30´は例えば仕様の異なる複数のデータソース10と接続されているため、クエリ分割部306´は、クエリ実行部305´によって実行されたデータ取得クエリを、当該複数のデータソース10(当該クエリが実行されるべきデータソース10)の各々に適した複数のクエリに分割する。クエリ分割部306´によって分割された複数のクエリは、例えば格納部301´に格納されているデータソース情報を用いて、それぞれ複数のデータソース10に送信される。
複数のデータソース10の各々においては、実データを保持するソーステーブルが管理(格納)されている。上記したようにクエリ分割部306´によって送信されたクエリを受信したデータソース10の各々は、当該クエリを実行することによって当該データソース10において管理されているソーステーブルからデータを取得し、当該データをデータ仮想化装置30に送信する。このようにデータソース10の各々からデータ仮想化装置30に送信されたデータは、データ取得クエリに対する応答として、インタフェース部302´を介してクライアント端末20に送信される。
このように本実施形態の比較例に係るデータ仮想化装置30´は、複数のデータソース10の各々において管理されているソーステーブルを自身のテーブルであるかのように振る舞うことによってデータ仮想化を実現し、ユーザが所望するデータ(つまり、データ取得クエリに基づいて取得されたデータ)を当該ユーザに対して提供することができる。
ここで、格納部301´には外部テーブル情報が格納されているものとして説明したが、上記したデータ仮想化を実現するためには、データ仮想化装置30´において予め外部テーブルを作成しておく(つまり、外部テーブル情報を登録しておく)必要がある。
外部テーブルを作成する場合、例えばクライアント端末20において、当該外部テーブルを作成する(新規に外部テーブル情報を登録する)ためのクエリ(以下、外部テーブル作成クエリと表記)が指定される。なお、外部テーブル作成クエリには、例えばデータソース10のデータソース名(サーバ名)、当該データソース10において管理されているソーステーブルのテーブル名及び当該ソーステーブルを構成するカラムのカラム名等が含まれる。
このように指定された外部テーブル作成クエリは、インタフェース部302´によって取得され、クエリ実行部305´によって実行される。
外部テーブル作成クエリがクエリ実行部305´によって実行されると、スキーマ情報取得部307´は、当該外部テーブル作成クエリに含まれるデータソース名、テーブル名及びカラム名に基づいて特定されるデータソース10において管理されているソーステーブルの構造が定義されたスキーマ情報を、当該データソース10から取得(受信)する。スキーマ情報取得部307´によって取得されるスキーマ情報には、ソーステーブルのテーブル名及び当該ソーステーブルを構成するカラムのカラム名(以下、単にソーステーブルのカラム名と表記)等が含まれる。スキーマ情報には、ソーステーブルに保持されるデータのタイプ(カラムの属性)等が更に含まれていてもよい。
外部テーブル情報登録部308´は、スキーマ情報取得部307´によって取得されたスキーマ情報に基づいて、当該スキーマ情報によって構造が定義されるソーステーブルに対応する外部テーブルに関する外部テーブル情報を格納部301´に登録する。なお、本実施形態の比較例に係るデータ仮想化装置30´において格納部301´に格納される外部テーブル情報には、当該外部テーブル(ソーステーブル)のテーブル名及び当該外部テーブルを構成するカラムのカラム名等が含まれる。また、外部テーブルのテーブル名は、ソーステーブルのテーブル名と同一であってもよいが、当該ソーステーブルのテーブル名に所定の加工を施したテーブル名等であってもよい。この場合、外部テーブルのテーブル名は、ソーステーブルのテーブル名に外部テーブルであることを示す識別情報(例えば、番号等)が付されたようなものであってもよい。
なお、図4は、外部テーブルを作成する際のデータ仮想化装置30´の動作の概要を示している。図4に示す例では、データソース10において、テーブル名が「media_types」であり、カラム名が「Media Type Id」及び「Name」であるカラムから構成されるテーブルが管理されている。
ここで、図4に示すように、例えば外部テーブル作成クエリ「CREATE FOREIGN TABLE media_types(“Media Type Id”bigint,“Name”text)SERVER sqlite_server;」がクライアント端末20において指定された場合を想定する。この外部テーブル作成クエリは、データソース名(サーバ名)が「sqlite_server」であるデータソース10において管理されている、テーブル名が「media_types」であり、カラム名が「Media Type Id」及び「Name」であるカラムから構成されるソーステーブルに対応する外部テーブルを作成することを意味する。なお、この外部テーブル作成クエリに含まれる「bigint」はカラム名が「Media Type Id」であるカラムのタイプ(属性)であり、「text」はカラム名が「Name」であるカラムのタイプ(属性)である。
この場合、外部テーブル作成クエリがクエリ実行部305´によって実行され、スキーマ情報取得部307´は、データソース名が「sqlite_server」であるデータソース10からスキーマ情報を取得する。この場合にスキーマ情報取得部307´によって取得されるスキーマ情報には、テーブル名「media_types」、カラム名「Media Types Id」及び「Name」が含まれる。なお、このスキーマ情報は、データソース10内のシステムカタログに格納されているものとする。
このようにスキーマ情報取得部307´によってスキーマ情報が取得された場合、外部テーブル情報登録部308´は、当該スキーマ情報に基づいて、テーブル名が「media_types」であり、カラム名が「Media Types Id」及び「Name」であるカラムから構成される外部テーブルを作成する。この場合、外部テーブル情報登録部308´は、テーブル名「media_types」、カラム名「Media Types Id」及び「Name」を含む外部テーブル情報を格納部(システムカタログ)301´に登録する。
ここではデータソース10において管理されている1つのソーステーブルに対応する外部テーブルが作成される(当該外部テーブルに関する外部テーブル情報が登録される)場合について説明したが、例えば「postgres=# IMPORT FOREIGN SCHEMA public FROM SERVER sqlite_server INTO public;」のように表される外部スキーマ取り込み機能が実行されると、データソース名が「sqlite_server」であるデータソース10において管理されている全てのソーステーブルの構造が定義されているスキーマ情報が取得され、当該ソーステーブルの各々に対応する外部テーブルを一括して作成することも可能である。
図5は、上記した図4において説明した外部テーブルを介してデータを取得する際のデータ仮想化装置30´の動作の概要を示している。
図5に示す例では、データ取得クエリとして例えば「SELECT*FROM media_types;」がクライアント端末20において指定されている場合を想定している。このデータ取得クエリは、テーブル名が「media_types」であるテーブルに保持されているデータを取得することを意味している。
この場合、データ仮想化装置30´は、外部テーブル情報及びデータソース情報に基づいて、テーブル名が「media_types」であるソーステーブルを管理しているデータソース10にアクセスし、当該ソーステーブルに保持されているデータを取得する。このように取得されたデータは、データ仮想化装置30´からクライアント端末20に返される。
ここでは、データ取得クエリに基づいて1つのデータソース10からデータが取得される場合について説明したが、上記したテーブル名が「media_types」であるソーステーブルを管理しているデータソース10が複数存在する場合には、当該複数のデータソース10の各々からデータを取得することも可能である。
また、図5に示すデータ取得クエリにはデータを取得する対象となるテーブルのテーブル名のみが含まれているが、特定のカラムのデータ(値)を取得する場合には、データ取得クエリに当該カラムのカラム名が含まれる。
上記したようにデータ仮想化装置30´においては、データソース10において管理されているソーステーブルの構造の定義を取得(抽出)して外部テーブルを自動的に作成(登録)し、当該外部テーブルを介してデータソース10からデータを取得することが可能である。
なお、データ仮想化装置30´において作成された外部テーブルは、通常のテーブルと同様にレコードの追加、変更、削除及び参照が可能である。
ここで、上記した本実施形態の比較例に係るデータ仮想化装置30´において作成される外部テーブルは、ソーステーブルのテーブル名及びカラム名で作成(登録)されるため、複数のデータソース10間で表記揺れが生じていると、同一の意味であっても異なる名称(テーブル名及びカラム名)が割り当てられている場合がある。このような場合には、複数のデータソース10の各々において管理されているソーステーブルから同種のデータを取得しようとしたとしても、データ取得クエリに含まれるテーブル名とは異なるテーブル名の外部テーブルを介して当該ソーステーブルにアクセスすることができず、当該ソーステーブルからデータを取得することができない。
具体的には、複数のデータソース10のうちの第1データソース10においてテーブル名が「purchase」であるソーステーブル(以下、単にpurchaseテーブルと表記)が管理されており、第2データソース10においてテーブル名が「buying」であるソーステーブル(以下、単にbuyingテーブルと表記)が管理されており、当該purchaseテーブル及びbuyingテーブルにおいて同種のデータ(例えば、購買に関するデータ)が保持されているものとする。
この場合、クライアント端末20において指定される1つのデータ取得クエリに基づいてpurchaseテーブル及びbuyingテーブルからデータを取得することが好ましいが、purchaseテーブル及びbuyingテーブルはテーブル名が異なっている。このような場合、例えばpurchaseテーブルのテーブル名を含むデータ取得クエリでは、purchaseテーブルからデータを取得することはできるが、buyingテーブルからはデータを取得することができない。一方、buyingテーブルのテーブル名を含むデータ取得クエリでは、buyingテーブルからデータを取得することはできるが、purchaseテーブルからはデータを取得することができない。
すなわち、本実施形態の比較例に係るデータ仮想化装置30´においては、データを取得(参照)する際にテーブル名等を正確に指定しなければならず、当該テーブル名が異なる複数のデータソース10(ソーステーブル)に効率的にアクセスすることができない。
そこで、本実施形態においては、複数のデータソース10において管理されているソーステーブルに対する効率的なアクセスを実現する構成を有する。
図6は、本実施形態に係るデータ仮想化装置30の機能構成の一例を示すブロック図である。図3に示すように、データ仮想化装置30は、格納部301、インタフェース部302、クエリ解析部303、クエリプラン作成部304、クエリ実行部305、クエリ分割部306、スキーマ情報取得部307、外部テーブル情報登録部308及び変換部309を含む。
なお、本実施形態において、格納部301は、データ仮想化装置30に備えられる不揮発性メモリ32または他の記憶装置等によって実現される。
また、本実施形態において、インタフェース部302、クエリ解析部303、クエリプラン作成部304、クエリ実行部305、クエリ分割部306、スキーマ情報取得部307、外部テーブル情報登録部308及び変換部309の一部または全ては、データ仮想化装置30に備えられるCPU31(つまり、データ仮想化装置30のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。この所定のプログラムは、データ仮想化装置30がデータ仮想化システム1において動作するためのプログラムであり、コンピュータ読み取り可能な記憶媒体に予め格納して頒布されてもよいし、ネットワークを介してデータ仮想化装置30にダウンロードされてもよい。
ここでは、上記した各部302~309の一部または全てがソフトウェアによって実現されるものとして説明したが、当該各部302~309の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
また、図6に示す格納部301、インタフェース部302、クエリ解析部303、クエリプラン作成部304、クエリ実行部305、クエリ分割部306、スキーマ情報取得部307及び外部テーブル情報登録部308は、上記した図3に示す格納部301´、インタフェース部302´、クエリ解析部303´、クエリプラン作成部304´、クエリ実行部305´、クエリ分割部306´、スキーマ情報取得部307´及び外部テーブル情報登録部308´に相当する機能部である。このため、図6においては図3と同様の部分についてその詳しい説明を省略し、当該図3(つまり、本実施形態の比較例に係るデータ仮想化装置30´)と異なる部分について主に説明する。
上記した本実施形態の比較例に係るデータ仮想化装置30´においては、外部テーブル情報登録部308´がスキーマ情報取得部307´によって取得されたスキーマ情報(ソーステーブルのテーブル名及びカラム名)に基づいて外部テーブル情報を登録するものとして説明したが、本実施形態に係るデータ仮想化装置30において、変換部309は、スキーマ情報に含まれるテーブル名及びカラム名を変換する。この場合、外部テーブル情報登録部308は、変換部309によって変換されたテーブル名及びカラム名に基づいて外部テーブル情報を格納部301に登録する。
以下、本実施形態に係るデータ仮想化装置30の動作について説明する。まず、図7を参照して、外部テーブルを作成する(外部テーブル情報を登録する)際のデータ仮想化装置30の動作の概要を説明する。
ここでは、テーブル名が「buying」であり、カラム名が「amount」及び「rate」であるカラムから構成されるソーステーブルを管理しているデータソース10からスキーマ情報取得部307がテーブル名「buying」、カラム名「amount」及び「rate」を含むスキーマ情報を取得した場合を想定する。
この場合、変換部309はスキーマ情報取得部307によって取得されたスキーマ情報に含まれるテーブル名及びカラム名を変換するが、当該テーブル名及びカラム名の変換は、例えば類語辞書を参照することによって行うことができる。類語辞書には例えば複数の代表語及び当該複数の代表語の各々の類語(類義語)が対応づけて登録されており、当該類語辞書を参照することによって、変換部309は、スキーマ情報に含まれているテーブル名及びカラム名を類語(代表語)に変換することができる。
図7に示す例では、代表語「purchase」に対応づけて類語「purchasing」及び「buying」が類語辞書に登録されている。この場合、変換部309は、スキーマ情報に含まれるテーブル名「buying」を当該「buying」の代表語である「purchase」に変換することができる。
また、代表語「quantity」に対応づけて類語「values」及び「amount」が類語辞書に登録されている。この場合、変換部309は、スキーマ情報に含まれるカラム名「amount」を、当該「amount」の代表語である「quantity」に変換することができる。
なお、代表語「rate」に対応づけて類語「prices」及び「cost」が類語辞書に登録されているが、スキーマ情報に含まれているカラム名「rate」は代表語であるため、当該カラム名「rate」は変換される必要はない。
上記した類語辞書を用いた場合には、スキーマ情報に含まれるテーブル名及びカラム名を特定の類語(代表語)に名寄せするような変換を実現することができる。
なお、本実施形態においては上記したようにソーステーブルのテーブル名及びカラム名を類語に変換するため、本実施形態における外部テーブルの作成は意味論に基づいて実行されるということができる。
ここでは類語辞書を用いてテーブル名及びカラム名を変換するものとして説明したが、当該類語辞書とは別に用意されているテーブル名及びカラム名における表記の揺れを訂正するためのルール(表記揺れルール)を用いて、スキーマ情報に含まれるテーブル名及びカラム名を変換してもよい。なお、このテーブル名及びカラム名を変換するために用いられるルールには、例えば全角または半角に表記を統一する、大文字または小文字に表記を統一する、漢字の表記を統一する、及びカタカナの表記を統一するためのルール等が含まれるが、他の観点から表記を統一するようなルールが含まれていてもよい。変換部309は、このようなルールを用いてスキーマ情報に含まれるテーブル名及びカラム名を正規化するように変換してもよい。
更に、テーブル名及びカラム名を入力として、当該テーブル名及びカラム名の類語を出力するように学習された学習モデルを用いて、スキーマ情報に含まれるテーブル名及びカラム名を変換してもよい。この場合、変換部309は、スキーマ情報に含まれるテーブル名及びカラム名を学習モデルに入力することによって、当該テーブル名及びカラム名を変換することができる。なお、この学習モデルは、例えばテーブル名及びカラム名(単語)のクラスタリングを実施するようなものであってもよいし、ニューラルネットワークまたはランダムフォレスト等の既知の様々な機械学習アルゴリズムを適用して生成されるものであってもよい。
なお、ここで説明したテーブル名及びカラム名の変換に用いられる類語辞書、ルール及び学習モデルは、予め用意されて、データ仮想化装置30内に保持されているものとする。
外部テーブル情報登録部308は、上記したようにスキーマ情報に含まれるテーブル名「buying」から変換されたテーブル名「purchase」、カラム名「amount」から変換されたカラム名「quantity」及びスキーマ情報に含まれるカラム名「rate」に基づいて、外部テーブル情報を格納部301に登録する。
なお、本実施形態において格納部301に登録される外部テーブル情報は、テーブル対応情報、ソースカラム情報及び外部カラム情報を含む。
テーブル対応情報は、ソーステーブルと当該ソーステーブルに対応する外部テーブルとの対応関係を示す情報である。図7に示す例では、ソーステーブルのテーブル名「buying」及び外部テーブルのテーブル名「purchase」を対応づけて含むテーブル対応情報が登録されている。
ソースカラム情報は、ソーステーブルを構成するカラムに関する情報である。図7に示す例では、ソーステーブルのテーブル名「buying」と、カラム名「amount」及び「rate」とを対応づけて含むソースカラム情報が登録されている。
外部カラム情報は、外部テーブルを構成するカラムに関する情報である。図7に示す例では、外部テーブルのテーブル名「purchase」と、カラム名「quantity」及び「rate」とを対応づけて含む外部カラム情報が登録されている。
上記したテーブル対応情報、ソースカラム情報及び外部カラム情報を含む外部テーブル情報が格納部301に登録されることは、データ仮想化装置30において図7に示すテーブル名が「purchase」であり、カラム名が「quantity」及び「rate」であるカラムから構成される外部テーブルが作成されることに相当する。
次に、図8のフローチャートを参照して、外部テーブルを作成する際のデータ仮想化装置30の処理手順の一例について説明する。
まず、クライアント端末20において外部テーブル作成クエリが指定された場合、インタフェース部302は、当該外部テーブル作成クエリを取得する(ステップS1)。
ステップS1の処理が実行されると、当該ステップS1において取得された外部テーブル作成クエリがクエリ実行部305によって実行され、スキーマ情報取得部307は、少なくとも1つのデータソース10において管理されているソーステーブルの定義を示すスキーマ情報を当該データソース10から取得する(ステップS2)。上記したようにスキーマ情報には、ソーステーブルのテーブル名及びカラム名が含まれる。ここでは、ステップS2において複数のスキーマ情報(つまり、複数のソーステーブルの各々の構造が定義されたスキーマ情報)が取得されたものとする。
以下、ステップS2において取得された複数のスキーマ情報の各々について、ステップS2~S10の処理を実行する。以下の説明においては、ステップS2~S10の処理の対象となるスキーマ情報を対象スキーマ情報と称する。
まず、外部テーブル情報登録部308は、対象スキーマ情報に含まれるテーブル名を当該対象スキーマ情報から抽出する(ステップS3)。
次に、変換部309は、ステップS3において抽出されたテーブル名を変換する変換処理を実行する(ステップS4)。
ステップS4の処理が実行されると、外部テーブル情報登録部308は、対象スキーマ情報に含まれるソーステーブルのテーブル名及びステップS4において対象スキーマ情報から抽出されたテーブル名から変換されたテーブル名(つまり、外部テーブルのテーブル名)を対応づけて含むテーブル対応情報を作成し、当該テーブル対応情報を格納部301に登録する(ステップS5)。
ここで、ソーステーブルは複数のカラムから構成されており、対象スキーマ情報には複数のカラム名が含まれている。この場合、対象スキーマ情報に含まれる複数のカラム名の各々についてステップS6~S9の処理が実行される。以下、ステップS6~S9の処理が実行されるカラム名を対象カラム名と称する。
まず、外部テーブル情報登録部308は、対象スキーマ情報に含まれる複数のカラム名の中から対象カラム名を抽出する(ステップS6)。
次に、外部テーブル情報登録部308は、上記したソーステーブルのテーブル名及びステップS6において抽出された対象カラム名を対応づけて含むソースカラム情報を作成し、当該ソースカラム情報を格納部301に登録する(ステップS7)。
ステップS7の処理が実行されると、変換部309は、ステップS6において抽出された対象カラム名を変換する変換処理を実行する(ステップS8)。
次に、外部テーブル情報登録部308は、上記した外部テーブルのテーブル名及びステップS8において対象カラム名から変換されたカラム名(つまり、外部テーブルのカラム名)を対応づけて含む外部カラム情報を作成し、当該外部カラム情報を格納部301に登録する(ステップS9)。
ステップS9の処理が実行されると、対象スキーマ情報に含まれる全てのカラム名についてステップS6~S9の処理が実行されたか否かが判定される(ステップS10)。
全てのカラム名について処理が実行されていないと判定された場合(ステップS10のNO)、ステップS6に戻って処理が繰り返される。この場合、処理が実行されていないカラム名を対象カラム名として、ステップS6~S9の処理が実行される。
一方、全てのカラム名について処理が実行されたと判定された場合(ステップS10のYES)、ステップS2において取得された全てのスキーマ情報についてステップS3~S10の処理が実行されたか否かが判定される。
全てのスキーマ情報について処理が実行されていないと判定された場合(ステップS11のNO)、ステップS3に戻って処理が繰り返される。この場合、処理が実行されていないスキーマ情報を対象スキーマ情報として、ステップS3~S10の処理が実行される。
一方、全てのスキーマ情報について処理が実行されたと判定された場合(ステップS11のYES)、図8に示す処理は終了される。
上記した図8に示す処理によれば、データソース10から取得されたスキーマ情報に含まれるテーブル名及びカラム名を変換して外部テーブル情報を登録(外部テーブルを作成)することができる。
次に、図9のフローチャートを参照して、上記した変換処理(図8に示すステップS4及びS8の処理)の処理手順の一例について説明する。
ここでは、上記した類語辞書、ルール(表記揺れルール)及び学習モデルのうちの1つを用いてテーブル名またはカラム名を変換するものとし、当該類語辞書、ルール及び学習モデルのいずれを用いるかは設定ファイル等において予め設定されているものとする。
この場合、変換部309は、上記した設定ファイルを参照し、類語辞書を用いるか否かを判定する(ステップS21)。
類語辞書を用いると判定された場合(ステップS21のYES)、変換部309は、当該類語辞書を用いてテーブル名またはカラム名を変換する(ステップS22)。なお、類語辞書を用いたテーブル名またはカラム名の変換については上記した通りであるため、ここではその詳しい説明を省略する。
一方、類語辞書を用いないと判定された場合(ステップS21のNO)、変換部309は、設定ファイルを参照し、ルールを用いるか否かを判定する(ステップS23)。
ルールを用いると判定された場合(ステップS23のYES)、変換部309は、当該ルールを用いてテーブル名またはカラム名を変換する(ステップS24)。なお、ルールを用いたテーブル名またはカラム名の変換については上記した通りであるため、ここではその詳しい説明を省略する。
一方、ルールを用いないと判定された場合(ステップS23のNO)、変換部309は、設定ファイルを参照し、学習モデルを用いるか否かを判定する(ステップS25)。
学習モデルを用いると判定された場合(ステップS25のYES)、変換部309は、当該学習モデルを用いてテーブル名またはカラム名を変換する(ステップS26)。なお、学習モデルを用いたテーブル名またはカラム名の変換については上記した通りであるため、ここではその詳しい説明を省略する。
なお、学習モデルを用いないと判定された場合(ステップS25のNO)、変換処理は終了される。例えば設定ファイルにおいて類語辞書、ルール及び学習モデルのいずれも設定されていない(つまり、テーブル名及びカラム名の変換を実施しないことが設定されている)場合には、ステップS25において学習モデルを用いないと判定され、テーブル名またはカラム名は変換されないものとする。
図9に示す例では、類語辞書、ルール及び学習モデルのうちの1つを用いてテーブル名またはカラム名を変換するものとして説明したが、当該類語辞書、ルール及び学習モデルのうちの少なくとも2つ以上を組み合わせてテーブル名またはカラム名を変換する構成としてもよい。また、テーブル名とカラム名とで異なる変換手法を適用するようにしてもよい。具体的には、テーブル名は類語辞書を用いて変換し、カラム名はルールを用いて変換するようにしてもよい。
図10は、データ仮想化装置30において作成される外部テーブルの具体例を示している。
詳細な説明については省略するが、図10に示す例では、テーブル名が「dev_mst」であり、カラム名が「dev_id」及び「mfg_date」であるカラムから構成されるソーステーブルの構造が定義されたスキーマ情報が取得された場合に、テーブル名が「device_master」であり、カラム名が「device_id」及び「manufacturing_date」であるカラムから構成される外部テーブルが作成されることが示されている。
また、テーブル名が「dev_designer_info」であり、カラム名が「dev_id」、「designer_id」、「design_date」及び「passed_date」であるカラムから構成されるソーステーブルの構造が定義されたスキーマ情報が取得された場合に、テーブル名が「device_architect_information」であり、カラム名が「device_id」、「architect_id」、「design_date」及び「approval_date」であるカラムから構成される外部テーブルが作成されることが示されている。
更に、テーブル名が「designer」であり、カラム名が「designer_id」、「name」及び「worker_id」であるカラムから構成されるソーステーブルの構造が定義されたスキーマ情報が取得された場合に、テーブル名が「architect」であり、カラム名が「architect_id」、「name」及び「employee_id」であるカラムから構成される外部テーブルが作成されることが示されている。
上記したように本実施形態においては、第1データソース10おいて管理されている第1ソーステーブルの第1テーブル名及び当該第1ソーステーブルを構成する第1カラムの第1カラム名を含む第1スキーマ情報を取得し、当該第1スキーマ情報に含まれる第1テーブル名を第3テーブル名に変換し、当該第1スキーマ情報に含まれる第1カラム名を第3カラム名に変換する。これにより、第1ソーステーブルの第1テーブル名及び当該第1テーブル名から変換された第3テーブル名(つまり、第1外部テーブルのテーブル名)を対応づけて含む第1テーブル対応情報と、当該第1テーブル名及び当該第1カラム名を対応づけて含む第1ソースカラム情報と、当該第3テーブル名及び当該第1カラム名から変換された第3カラム名を対応づけて含む第1外部カラム情報とを格納部301に登録する。
また、本実施形態においては、第2データソース10において管理されている第2ソーステーブルの第2テーブル名及び当該第2ソーステーブルを構成する第2カラムの第2カラム名を含む第2スキーマ情報を取得し、当該第2スキーマ情報に含まれる第2テーブル名を第3テーブル名に変換し、当該第2スキーマ情報に含まれる第2カラム名を第3カラム名に変換する。これにより、第2ソーステーブルの第2テーブル名及び当該第2テーブル名から変換された第3テーブル名(つまり、第2外部テーブルのテーブル名)を対応づけて含む第2テーブル対応情報と、当該第2テーブル名及び当該第2カラム名を対応づけて含む第2ソースカラム情報と、当該第3テーブル名及び当該第2カラム名から変換された第3カラム名を対応づけて含む第2外部カラム情報とを格納部301に登録する。
なお、上記した第3テーブル名は第1テーブル名及び第2テーブル名の類語であり、第3カラム名は第1カラム名及び第2カラム名の類語である。
本実施形態においては、このような構成により、ソーステーブルのテーブル名及びカラム名を類語に変換して外部テーブルを作成する(つまり、データソースのテーブル名及びカラム名を意味論に基づく命名規則で登録する)ことができるため、意味が同一(つまり、類語)であればデータソース10(ソーステーブル)間でテーブル名またはカラム名が違っていても同一のテーブルまたはカラムとして扱われるため、1つのデータ取得クエリで複数のデータソース10からデータを取得することができ、検索の幅が広がる。
ここで、上記したように第1ソーステーブルの第1テーブル名及び第1カラム名と、第2ソーステーブルの第2テーブル名及び第2カラム名とが異なっており、当該第1ソーステーブルに対応する第1外部テーブルのテーブル名及びカラム名が第1テーブル名及び第1カラム名であり、当該第2ソーステーブルに対応する第2外部テーブルのテーブル名及びカラム名が第2テーブル名及び第2カラム名である(つまり、本実施形態の比較例のようにテーブル名及びカラム名を変換することなく外部テーブルが作成された)場合を想定する。
この場合、第1ソーステーブルからデータを取得するためには、データ取得クエリにおいて第1テーブル名及び第1カラム名を指定する必要があり、第2ソーステーブルからデータを取得するためには、データ取得クエリにおいて第2テーブル名及び第2カラム名を指定する必要がある。
これに対して、本実施形態においては、第1ソーステーブルに対応する第1外部テーブルのテーブル名及びカラム名は第3テーブル名及び第3カラム名であり、第2ソーステーブルに対応する第2外部テーブルのテーブル名及びカラム名は第3テーブル名及び第3カラム名である。
この場合、データ取得クエリにおいて第3テーブル名及び第3カラム名が指定されていれば、第1ソーステーブル及び第2ソーステーブルの両方からデータを取得することができ、テーブル名及びカラム名が異なっている第1及び第2ソーステーブルの各々に応じたデータ取得クエリを指定することなく、テーブル名及びカラム名の表記が統一された第1及び第2外部テーブルを介して当該第1及び第2ソーステーブルの各々に効率的にアクセスしてデータを取得することが可能となる。
なお、ソーステーブルのテーブル名及びカラム名を変換して外部テーブルが作成された場合、ソーステーブルと外部テーブルとの対応関係、当該ソーステーブルを構成するカラムに関する情報、当該外部テーブルを構成するカラムに関する情報が、外部テーブル情報(テーブル対応情報、ソースカラム情報及び外部カラム情報)として格納部301に登録される。このため、ソーステーブルのテーブル名及びカラム名から変換された外部テーブルのテーブル名及びカラム名がデータ取得クエリにおいて指定されていた場合であっても、上記した外部テーブル情報及びデータソース情報に基づいて、適切なデータソースにアクセスし、当該データ取得クエリに応じたデータを取得することができる。
なお、本実施形態においては、複数の代表語及び当該複数の代表語の各々の類語が対応づけて登録されている類語辞書を参照して、ソーステーブルのテーブル名(第1及び第2テーブル名)を、当該テーブル名に対応づけて当該類語辞書に登録されている代表語(第3テーブル名)に変換することができる。ソーステーブルのカラム名(第1及び第2カラム名)についても同様である。
本実施形態においては、このような構成により、ソーステーブルのテーブル名及びカラム名を同一の意味を有する類語に適切に変換することが可能となる。
なお、ソーステーブルのテーブル名及びカラム名の変換には、テーブル名及びカラム名における表記の揺れを訂正するためのルール、またはテーブル名及びカラム名を入力として当該テーブル名及びカラム名の類語を出力するように学習された学習モデルを用いてもよい。
ここで、図11を参照して、上記した本実施形態に係るデータ仮想化装置30の使用態様の一例について説明する。図11は、本実施形態に係るデータ仮想化装置30をVPP(Virtual Power Plant)/DR(Demand Response)に適用する例を示している。
なお、VPPとは、分散設置されたエネルギーリソース(発電設備、蓄電設備及び需要設備)を、ICT(Information and Communication Technology)を活用してアグリゲーションし、あたかも1つの発電所のように制御する技術である。また、DRとは、例えば市場価格の高騰時または系統信頼性の低下時において、電気料金価格の設定またはインセンティブの支払いに応じて、需要家側が電力の使用を抑制するよう電力の消費パターンを変化させること、と定義される。
この場合、図11に示すVPP/DRに本実施形態に係るデータ仮想化装置30を配置することによって、各アグリゲータ(電力需要を束ねて効果的にエネルギーマネジメントサービスを行う組織または団体等)が保有するサーバ装置(データベース管理サーバ)において管理されているデータを仮想的に統合することができる。
なお、本実施形態に係るデータ仮想化装置30は、例えば図12に示すようにアグリゲータ(データベース管理サーバ)が追加されたとしても、当該データ仮想化装置30を使用するアプリケーション等を変化することなく容易に対応することができる。
更に、本実施形態に係るデータ仮想化装置30は、図13に示すように当該データ仮想化装置30の上位に位置する他のデータ仮想化装置30と通信可能に接続されるように構成されてもよい(つまり、多段構成とすることが可能である)。なお、図13においては、VPP/DRの上位に位置し、各種施設(水力発電所及び火力発電所等)や気象情報(気象システム)から得られる情報に基づいてVPP/DRと連係動作するシステムコントローラにデータ仮想化装置30が配置される例が示されている。
ここでは本実施形態に係るデータ仮想化装置30がVPP/DRに適用される例について説明したが、当該データ仮想化装置30は、複数のデータソース10(サーバ装置)に分散管理されているデータを仮想的に統合する用途であれば、他の分野に適用されても構わない。具体的には、データ仮想化装置30は、例えば上記した購買に関するデータを管理するデータソース10として機能する複数のPOSシステム等と接続され、当該データを仮想的に統合するような用途に用いることができる。
なお、本実施形態においてはスキーマ情報に含まれるテーブル名及びカラム名の両方を変換するものとして説明したが、本実施形態は、当該テーブル名及びカラム名の少なくとも一方を変換する構成であっても構わない。
また、本実施形態においてはデータ仮想化システム1がクライアント端末20を備えるものとして説明したが、ユーザがデータ仮想化装置30を操作する(つまり、データ仮想化装置30を操作して各種クエリを指定する)ような場合には、クライアント端末20は省略されても構わない。
(第2実施形態)
次に、第2実施形態について説明する。本実施形態に係るデータ仮想化システムのネットワーク構成は、前述した第1実施形態と同様であるため、適宜、図1を用いて説明する。本実施形態に係るデータ仮想化装置30は、マルチテナント機能を有する点で前述した第1実施形態とは異なる。
まず、図14を参照して、本実施形態に係るデータ仮想化装置30が有するマルチテナント機能について簡単に説明する。
前述した第1実施形態において説明したように、データ仮想化装置30は、複数のデータソース10の各々において管理されているソーステーブルに対応する外部テーブルを作成することにより、当該外部テーブルを介してユーザに対してデータを提供することができるが、マルチテナント機能とは、テーブル名及び構成が同一の複数の外部テーブルを1つの仮想的なテーブルに統合する機能である。このマルチテナント機能によれば、複数の外部テーブルが統合された外部テーブル(以下、マルチテナントテーブルと表記)が作成される。なお、本実施形態において「構成が同一」とは、テーブルを構成するカラムの数及び当該カラムのカラム名等に基づくテーブル構成が同一であることをいう。
ここで、図14に示すように、データ仮想化装置30と通信可能に接続される複数のデータソース10が3つのデータソース(第1~第3データソース)10を含み、当該3つのデータソース10の各々がテーブル名及び構成が同一のソーステーブルを管理している場合を想定する。
なお、図14に示す例において、第1~第3データソース10の各々に管理されているソーステーブルは、テーブル名が「テーブル1」であり、カラム名が「value1」及び「value2」であるカラムから構成されている。また、図14に示すように、第1~第3データソース10の各々に管理されているソーステーブルはテーブル名及びカラム名(つまり、構成)は同一であるが、当該カラムのデータは異なる。
この場合、データ仮想化装置30においては、テーブル名及び構成が同一の3つの外部テーブル(テーブル名が「テーブル1」であり、カラム名が「value1」及び「value2」であるカラムから構成されている外部テーブル)が作成される。
ここで、例えばクライアント端末20において「SELECT sum(value2)FROM テーブル1」というデータ取得クエリが指定された場合を想定する。なお、このデータ取得クエリは、テーブル名が「テーブル1」であるテーブルからカラム名が「value2」であるカラムのデータの合計値を取得することを示している。
この場合において、上記したマルチテナントテーブルが作成されていない(マルチテナント機能がない)ものとすると、上記したデータ取得クエリに基づいて第1データソース10において管理されているソーステーブルからsum(value2)=3が取得される。同様に、第2データソース10において管理されているソーステーブルからはsum(value2)=30、第3データソース10において管理されているソーステーブルからはsum(value2)=300が取得される。すなわち、この場合には各データソース10から別個のデータが取得される。
一方、図14に示すように、第1~第3データソース10において管理されているソーステーブルの各々に対応する3つの外部テーブルを統合したマルチテナントテーブルが作成されている(マルチテナント機能がある)場合を想定する。この場合、上記したデータ取得クエリが指定されると、当該マルチテナントテーブルを利用することによって、sum(value2)=333が取得される。
すなわち、マルチテナント機能によれば、テーブル名及び構成が同一の複数の外部テーブルを1つの仮想的なテーブルとして扱うことにより、当該複数の外部テーブルを横断するようにデータを検索(取得)することができるため、より有用なデータをユーザに提供することができる。
図15は、本実施形態に係るデータ仮想化装置30の機能構成の一例を示すブロック図である。図15においては、前述した図6と同様の部分については同一参照符号を付してその詳しい説明を省略し、当該図6と異なる部分について主に説明する。
図15に示すように、本実施形態に係るデータ仮想化装置30は、マルチテナントテーブル作成部310を更に含む。
なお、本実施形態において、マルチテナントテーブル作成部310の一部または全ては、データ仮想化装置30に備えられるCPU31(つまり、データ仮想化装置30のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。ここでは、上記したマルチテナントテーブル作成部310の一部または全てがソフトウェアによって実現されるものとして説明したが、当該マルチテナントテーブル作成部310の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
マルチテナントテーブル作成部310は、上記したマルチテナントテーブルを作成する機能を有する。具体的には、マルチテナントテーブル作成部310は、データ仮想化装置30において作成される複数の外部テーブルのうち、テーブル名及び構成が同一である2以上の外部テーブルを統合したマルチテナントテーブルを作成する。なお、マルチテナントテーブル作成部310は、既に作成されたマルチテナントテーブルに外部テーブルを更に統合させることも可能である。マルチテナントテーブル作成部310によってマルチテナントテーブルが作成された場合、当該マルチテナントテーブルに関する情報(以下、マルチテナントテーブル情報と表記)が格納部301に登録される。
以下、本実施形態に係るデータ仮想化装置30の動作について説明する。まず、図16を参照して、マルチテナントテーブルを作成する際のデータ仮想化装置30の動作の概要を説明する。
ここでは、テーブル名が「purchase」であり、カラム名が「values」及び「prices」であるカラムから構成されるソーステーブル(以下、第1ソーステーブルと表記)を管理しているデータソース10からスキーマ情報取得部307がテーブル名「purchase」、カラム名「values」及び「prices」を含むスキーマ情報を取得したものとする。
また、テーブル名が「buying」であり、カラム名が「amount」及び「rate」であるカラムから構成されるソーステーブル(以下、第2ソーステーブルと表記)を管理しているデータソース10からスキーマ情報取得部307がテーブル名「buying」、カラム名「amount」及び「rate」を含むスキーマ情報を取得したものとする。
更に、カラム名が「quantity」及び「cost」であるカラムから構成されるテーブル名が「purchasing」であるソーステーブル(以下、第3ソーステーブル)を管理しているデータソース10からスキーマ情報取得部307がテーブル名「purchasing」、カラム名「quantity」及び「cost」を含むスキーマ情報を取得したものとする。
この場合、図16においては省略されているが、上記したスキーマ情報に含まれるテーブル名及びカラム名が変換部309によって変換され、当該変換されたテーブル名及びカラム名に基づいて外部テーブルが作成される。
変換部309によるテーブル名及びカラム名の変換については前述した第1実施形態において説明した通りであるため、ここではその詳しい説明を省略するが、図16に示す例では、上記した第1ソーステーブルに対応する外部テーブル(以下、第1外部テーブルと表記)として、テーブル名が「purchase」であり、カラム名が「quantity」及び「rate」であるカラムから構成されるテーブルが作成される。
また、上記した第2ソーステーブルに対応する外部テーブル(以下、第2外部テーブルと表記)として、テーブル名が「purchase」であり、カラム名が「quantity」及び「rate」であるカラムから構成されるテーブルが作成される。
更に、上記した第3ソーステーブルに対応する外部テーブル(以下、第3外部テーブルと表記)として、テーブル名が「purchase」であり、カラム名が「quantity」及び「rate」であるカラムから構成されるテーブルが作成される。
すなわち、図16においては、テーブル名及び構成が同一の第1~第3外部テーブル(つまり、3つの外部テーブル)が生成される。
この場合、マルチテナントテーブル作成部310は、上記した第1~第3外部テーブルを統合してマルチテナントテーブルを作成する。なお、このマルチテナントテーブルは、テーブル名が「purchase」であり、カラム名が「quantiry」及び「rate」であるカラムから構成されるテーブルである。
上記したようにマルチテナントテーブル作成部310によってマルチテナントテーブルが作成された場合、当該マルチテナントテーブルに関するマルチテナントテーブル情報が格納部301に登録される。なお、マルチテナントテーブル情報は、マルチテナントテーブルを介してデータを取得する際にアクセスすべきデータソースやソーステーブルを特定することができる情報であればよく、例えば当該マルチテナントテーブルのテーブル名(つまり、マルチテナントテーブルが作成される際に統合された外部テーブルの外部テーブル名)及び当該マルチテナントテーブルを構成するカラムのカラム名等を含むものとする。
なお、上記したマルチテナントテーブルが作成される場合であっても、当該マルチテナントテーブルが作成される際に統合された外部テーブルの各々に関する外部テーブル情報(テーブル対応情報、ソースカラム情報及び外部カラム情報)は、格納部301に登録されるものとする。
次に、図17のフローチャートを参照して、マルチテナントテーブルを作成する際のデータ仮想化装置30の処理手順の一例について説明する。
まず、データ仮想化装置30は、外部テーブル作成処理を実行する(ステップS31)。なお、この外部テーブル作成処理は前述した第1実施形態において説明した図8に示す処理に相当するため、ここではその詳しい説明を省略する。
ここで、ステップS31の処理(外部テーブル作成処理)が実行されることに複数の外部テーブルが作成された(複数の外部テーブル情報が登録された)場合を想定する。この場合、複数の外部テーブルの各々について、以下のステップS32~S38の処理が実行される。以下、ステップS32~S38の処理が実行される外部テーブルを対象外部テーブルと称する。
まず、マルチテナントテーブル作成部310は、格納部301を参照して、既に作成されているマルチテナントテーブルの中に対象外部テーブルとテーブル名が同一のマルチテナントテーブル(以下、既存マルチテナントテーブルと表記)が存在するか否かを判定する(ステップS32)。ステップS32においては、例えば対象外部テーブルのテーブル名をマルチテナントテーブルのテーブル名とするマルチテナントテーブル情報が格納部301に格納(登録)されていない場合、既存マルチテナントテーブルが存在しないと判定される。一方、対象外部テーブルのテーブル名をマルチテナントテーブルのテーブル名とするマルチテナントテーブル情報が格納部301に格納されている場合、既存マルチテナントテーブルが存在すると判定される。
対象外部テーブルとテーブル名が同一のマルチテナントテーブル(既存マルチテナントテーブル)が存在しないと判定された場合(ステップS32のNO)、マルチテナントテーブル作成部310は、対象外部テーブルとテーブル名が同一の他の外部テーブル(以下、既存外部テーブルと表記)が存在するか否かを判定する(ステップS33)。ステップS33においては、対象外部テーブルに関する外部テーブル情報以外で、当該対象外部テーブルのテーブル名と同一のテーブル名を含む外部テーブル情報(テーブル対応情報または外部カラム情報)が格納部301に格納されている場合、既存外部テーブルが存在すると判定される。一方、対象外部テーブルに関する外部テーブル情報以外で、当該対象外部テーブルのテーブル名と同一のテーブル名を含む外部テーブル情報(テーブル対応情報または外部カラム情報)が格納部301に格納されていない場合、既存外部テーブルが存在しないと判定される。
テーブル名が同一の他の外部テーブル(既存外部テーブル)が存在すると判定された場合(ステップS33のYES)、マルチテナントテーブル作成部310は、当該既存外部テーブルの構成が対象外部テーブルの構成と同一であるか否かを判定する(ステップS34)。ステップS24においては、既存外部テーブルのテーブル名を含む外部カラム情報に含まれるカラム名の全てが対象外部テーブルを構成するカラムのカラム名と一致する場合、既存外部テーブルの構成が対象外部テーブルの構成と同一であると判定される。一方、既存外部テーブルのテーブル名を含む外部カラム情報に含まれるカラム名のうちの少なくとも1つが対象外部テーブルを構成するカラムのカラム名と一致しない場合、既存外部テーブルの構成が対象外部テーブルの構成と同一でないと判定される。
既存外部テーブルの構成が対象外部テーブルの構成と同一であると判定された場合(ステップS34のYES)、マルチテナントテーブル作成部310は、対象外部テーブル及び既存外部テーブルを統合したマルチテナントテーブルに関するマルチテナントテーブル情報を作成する(ステップS35)。なお、マルチテナントテーブル情報は、例えば対象外部テーブル及び既存外部テーブルのテーブル名及びカラム名等に基づいて作成される。
ステップS35において作成されたマルチテナントテーブル情報は、格納部301に登録される(ステップS36)。
なお、本実施形態においては、上記したステップS35及びS36の処理が実行されることによってマルチテナントテーブルが作成される。
一方、ステップS32において対象外部テーブルとテーブル名が同一のマルチテナントテーブル(既存マルチテナントテーブル)が存在すると判定された場合(ステップS32のYES)、マルチテナントテーブル作成部310は、当該既存マルチテナントテーブルの構成が対象外部テーブルの構成と同一であるか否かを判定する(ステップS37)。上記したように既存マルチテナントテーブルに関するマルチテナントテーブル情報が当該既存マルチテナントテーブルを構成するカラムのカラム名を含む情報であるものとすると、ステップS37においては、当該マルチテナントテーブル情報によって示されるカラム名の全てが対象外部テーブルを構成するカラムのカラム名と一致する場合、既存マルチテナントテーブルの構成が対象外部テーブルの構成と同一であると判定される。一方、既存マルチテナントテーブルに関するマルチテナントテーブル情報によって示されるカラム名のうちの少なくとも1つが対象外部テーブルを構成するカラムのカラム名と一致しない場合、既存マルチテナントテーブルの構成が対象外部テーブルの構成と同一でないと判定される。
既存マルチテナントテーブルの構成が対象外部テーブルの構成と同一であると判定された場合(ステップS37のYES)、マルチテナントテーブル作成部310は、既存マルチテナントテーブルに関するマルチテナントテーブル情報に対象外部テーブル(のテーブル名等)を追加する(ステップS38)。ステップS38の処理が実行されることによって、既存マルチテナントテーブルに統合された複数の外部テーブルの1つとして対象外部テーブルが追加される。ステップS38において対象外部テーブルが追加されたマルチテナントテーブル情報は、格納部301に登録(上書き)される。
なお、ステップS37において既存マルチテナントテーブルの構成が対象外部テーブルの構成と同一でないと判定された場合(ステップS37のNO)、ステップS33以降の処理が実行される。
ステップS36またはS38の処理が実行されると、マルチテナントテーブル作成部310は、ステップS31の処理が実行されることによって作成された全ての外部テーブルについてステップS32~S38の処理が実行されたか否かを判定する(ステップS39)。
全ての外部テーブルについて処理が実行されていないと判定された場合(ステップS39のNO)、ステップS32に戻って処理が繰り返される。この場合、処理が実行されていない外部テーブルを対象外部テーブルとして、ステップS32の処理が実行される。
一方、全ての外部テーブルについて処理が実行されたと判定された場合(ステップS39のYES)、図17に示す処理は終了される。
なお、ステップS33においてテーブル名が同一の他の外部テーブル(既存外部テーブル)が存在しないと判定された場合(ステップS33のNO)またはステップS34において既存外部テーブルの構成が対象外部テーブルの構成と同一でないと判定された場合(ステップS34のNO)、ステップS39の処理が実行される。
また、ステップS37において既存マルチテナントテーブルの構成が対象外部テーブルの構成と同一でないと判定された場合には、ステップS33以降の処理が実行されるものとして説明したが、例えばステップS39の処理が実行されてもよい。
上記したように本実施形態においては、複数の外部テーブルの各々を構成するカラムに関する外部カラム情報(第1及び第2外部カラム情報)に基づいて、当該複数の外部テーブルが統合されたマルチテナントテーブルが作成される。このような構成によれば、マルチテナントテーブルを介して、複数の外部テーブルを横断するようにデータを検索(取得)することが可能となるため、より有用なデータをユーザに対して提供することができる。
ここで、図18及び図19を参照して、本実施形態の作用効果について説明する。図18は、前述した第1実施形態の比較例においてマルチテナントテーブルを作成する場合を説明するための図である。
図18に示すように、例えば第1データソース10において、テーブル名が「purchase」であり、カラム名が「values」及び「prices」であるカラムから構成されるソーステーブルが管理されているものとする。前述した第1実施形態の比較例によれば、このソーステーブルに対応する外部テーブルのテーブル名は「purchase」であり、当該外部テーブルを構成するカラムのカラム名は「values」及び「prices」である。
また、例えば第2データソース10において、テーブル名が「buying」であり、カラム名が「amount」及び「rate」であるカラムから構成されるソーステーブルが管理されているものとする。前述した第1実施形態の比較例によれば、このソーステーブルに対応する外部テーブルのテーブル名は「buying」であり、当該外部テーブルを構成するカラムのカラム名は「amount」及び「rate」である。
更に、例えば第3データソース10において、テーブル名が「purchasing」であり、カラム名が「quantity」及び「cost」であるカラムから構成されるソーステーブルが管理されているものとする。前述した第1実施形態の比較例によれば、このソーステーブルに対応する外部テーブルのテーブル名は「purchasing」であり、当該外部テーブルを構成するカラムのカラム名は「quantity」及び「cost」である。
この場合、前述した第1実施形態の比較例に係るデータ仮想化装置30´がマルチテナント機能を有し、マルチテナントテーブルを作成しようとしたとしても、上記した3つの外部テーブルのテーブル名及び構成(当該外部テーブルを構成するカラムのカラム名)が一致しないため、当該3つの外部テーブルからマルチテナントテーブルを作成することはできない。
次に、図19は、本実施形態においてマルチテナントテーブルを作成する場合を説明するための図である。
例えば第1データソース10において図18で説明したソーステーブルが管理されているものとすると、本実施形態における当該ソーステーブルに対応する外部テーブルのテーブル名は「purchase」であり、カラム名が「quantity」及び「rate」である。
また、例えば第2データソース10において図18で説明したソーステーブルが管理されているものとすると、本実施形態における当該ソーステーブルに対応する外部テーブルのテーブル名は「purchase」であり、カラム名が「quantity」及び「rate」である。
更に、例えば第3データソース10において図18で説明したソーステーブルが管理されているものとすると、本実施形態における当該ソーステーブルに対応する外部テーブルのテーブル名は「purchase」であり、カラム名が「quantity」及び「rate」である。
この場合、上記した3つの外部テーブルのテーブル名及び構成は同一であるため、本実施形態に係るデータ仮想化装置30は、当該3つの外部テーブルからマルチテナントテーブルを作成することができる。
すなわち、前述した第1実施形態の比較例においては、複数のデータソース10の各々においてテーブル名及び構成が異なるソーステーブルが管理されている場合には、当該ソーステーブルに対応する外部テーブルからはマルチテナントテーブルを作成することができないが、本実施形態においては、複数のデータソース10の各々においてテーブル名及び構成が異なるソーステーブルが管理されている場合であっても、前述した第1実施形態において説明したようにテーブル名及びカラム名が変換された外部テーブルを作成することによって、複数の外部テーブルを統合したマルチテナントテーブルを作成することが可能となる。
(第3実施形態)
次に、第3実施形態について説明する。本実施形態に係るデータ仮想化システムのネットワーク構成は、前述した第1実施形態と同様であるため、適宜、図1を用いて説明する。本実施形態に係るデータ仮想化装置30は、クライアント端末20において指定されるデータ取得クエリに含まれるテーブル名及びカラム名を変換する点で前述した第1実施形態とは異なる。
図20は、本実施形態に係るデータ仮想化装置30の機能構成の一例を示すブロック図である。図20においては、前述した図6と同様の部分については同一参照符号を付してその詳しい説明を省略し、当該図6と異なる部分について主に説明する。
図20に示すように、本実施形態に係るデータ仮想化装置30は、第2変換部311を更に含む。図20に示す第1変換部309は、図6に示す変換部309と同一の機能部である。
なお、本実施形態において、第2変換部311の一部または全ては、データ仮想化装置30に備えられるCPU31(つまり、データ仮想化装置30のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。ここでは、上記した第2変換部311の一部または全てがソフトウェアによって実現されるものとして説明したが、当該第2変換部311の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
ここで、クライアント端末20においてユーザによって指定されるデータ取得クエリには例えばデータを取得する対象となるテーブルのテーブル名が含まれているが、当該ユーザがデータ仮想化装置30において作成されている外部テーブルのテーブル名以外のテーブル名を含むデータ取得クエリを指定した場合には、当該外部テーブルを介して適切なデータを取得することができない。
そこで、本実施形態における第2変換部311は、クライアント端末20において指定されたデータ取得クエリに含まれるテーブル名を変換する機能を有する。なお、データ取得クエリにはカラム名が含まれる場合があるが、第2変換部311は、当該カラム名を変換する機能も有する。
以下、本実施形態に係るデータ仮想化装置30の動作について説明する。まず、図21を参照して、データ取得クエリに含まれるテーブル名及びカラム名を変換する際のデータ仮想化装置30の動作の概要を説明する。
クライアント端末20において「SELECT amount,rate FROM buying」というデータ取得クエリが指定された場合を想定する。なお、このデータ取得クエリは、テーブル名が「buying」であるテーブルからカラム名が「amount」及び「rate」であるカラムのデータを取得することを示している。すなわち、このデータ取得クエリには、テーブル名(TABLE)及びカラム名(COLUMN)が含まれている(指定されている)。なお、データ取得クエリには、データを取得する際の条件(WHERE)が含まれていてもよい。
この場合、データ取得クエリは、インタフェース部302によって取得され、当該インタフェース部302からクエリ解析部303に渡される。
クエリ解析部303は、データ取得クエリを解析する。この場合、クエリ解析部303は、例えばデータ取得クエリが正しい文法で記述されているか否か(つまり、データ取得クエリの正当性)を確認するために、当該データ取得クエリの構文を表すパースツリーを作成する。図21に示す例においては、クエリ解析部303によってデータ取得クエリのパースツリーが作成されることによって、当該データ取得クエリに含まれるテーブル名「buying」、カラム名「amount」及び「rate」が取得される。
この場合、第2変換部311は、上記したように取得されたテーブル名及びカラム名を変換する。図21に示す例では、テーブル名「buying」は「purchase」に変換され、カラム名「amount」は「quantity」に変換されている。なお、図21に示す例では、カラム名「rate」は変換する必要がないため、変換されていない。
これによれば、クエリ解析部303は、「SELECT quantity,rate FROM purchase」というデータ取得クエリを作成し、クエリ実行部305に渡すことができる。
なお、第2変換部311による変換処理(データ取得クエリに含まれるテーブル名及びカラム名の変換)は、前述した第1実施形態において説明した変換部309による変換処理(スキーマ情報に含まれるテーブル名及びカラム名の変換)と同様であるため、ここではその詳しい説明を省略する。
次に、図22のフローチャートを参照して、クライアント端末20においてデータ取得クエリが指定された際のデータ仮想化装置30の処理手順の一例について説明する。
上記したようにクライアント端末20においてデータ取得クエリが指定された場合、インタフェース部302は、当該データ取得クエリをクライアント端末20から取得(入力)する(ステップS41)。なお、ステップS41において取得されるデータ取得クエリには、少なくともテーブル名が含まれているが、当該テーブル名に加えてカラム名が含まれている場合もある。
次に、クエリ解析部303は、ステップS41において取得されたデータ取得クエリを解析する(ステップS42)。
ここで、ステップS42の処理が実行された場合、クエリ解析部303は、ステップS41において取得されたデータ取得クエリの構文を表すパースツリーを作成し、当該パースツリーに基づいて当該データ取得クエリが正しい文法で記述されているか否かを判定(確認)する(ステップS43)。
データ取得クエリが正しい文法で記述されていないと判定された場合(ステップS43のNO)、例えばエラーがクライアント端末20に返され、図22の処理は終了される。
一方、データ取得クエリが正しい文法で記述されていると判定された場合(ステップS43のYES)、クエリ解析部303は、上記したパースツリーからテーブル名を取得(抽出)する(ステップS44)。
次に、クエリ解析部303は、データ仮想化装置30において既に作成されている外部テーブルの中に、ステップS44において取得されたテーブル名の外部テーブルが存在するか否かを判定する(ステップS45)。なお、ステップS45の処理は、ステップS44において取得されたテーブル名を外部テーブルのテーブル名として含む外部テーブル情報(テーブル対応情報または外部カラム情報)が格納部301内に存在するか否かに基づいて実行される。
外部テーブルが存在しないと判定された場合(ステップS45のNO)、第2変換部311は、ステップS44において取得されたテーブル名を変換する変換処理を実行する(ステップS46)。ステップS46の処理は前述した図8に示すステップS4の処理に相当するため、ここではその詳しい説明を省略する。
なお、前述した図8に示すステップS4においては例えば類語辞書、ルールまたは学習モデルを用いてテーブル名が変換されるものとして説明したが、例えば当該ステップS4において類語辞書を用いてテーブル名が変換される構成の場合には、ステップS46においても同様に類語辞書を用いた変換処理が実行される。ステップS4においてルールまたは学習モデルが用いられる場合についても同様である。すなわち、本実施形態におけるデータ取得クエリに含まれるテーブル名及びカラム名の変換処理は、外部テーブルが作成される際に実行された変換処理と同様の処理が実行される。
ステップS46の処理が実行されると、クエリ解析部303は、データ仮想化装置30において既に作成されている外部テーブルの中に、当該ステップS46において変換されたテーブル名(つまり、変換後のテーブル名)の外部テーブルが存在するか否かを判定する(ステップS47)。なお、ステップS47の処理は、ステップS46における変換後のテーブル名を外部テーブルのテーブル名として含む外部テーブル情報(テーブル対応情報または外部カラム情報)が格納部301内に存在するか否かに基づいて実行される。
外部テーブルが存在すると判定された場合(ステップS47のYES)、クエリ解析部303は、ステップS41において取得されたデータ取得クエリに含まれるテーブル名を、ステップS46における変換後のテーブル名と置き換える(ステップS48)。
一方、外部テーブルが存在しないと判定された場合(ステップS47のNO)、ステップS48の処理は実行されない(つまり、データ取得クエリに含まれるデータ名は変換されない)。
次に、クエリ解析部303は、上記したパースツリーからカラム名を取得(抽出)する(ステップS49)。
ステップS49の処理が実行されると、クエリ解析部303は、データ仮想化装置30において既に作成されている外部テーブルを構成するカラムの中に、ステップS49において取得されたカラム名のカラムが存在するか否かを判定する(ステップS50)。なお、ステップS50の処理は、ステップS49において取得されたカラム名を、外部テーブルを構成するカラムのカラム名として含む外部テーブル情報(外部カラム情報)が格納部301内に存在するか否かに基づいて実行される。
カラムが存在しないと判定された場合(ステップS50のNO)、第2変換部311は、ステップS49において取得されたカラム名を変換する変換処理を実行する(ステップS51)。ステップS51の処理は前述した図8に示すステップS8の処理に相当するため、ここではその詳しい説明を省略する。
なお、前述した図8に示すステップS8においては例えば類語辞書、ルールまたは学習モデルを用いてカラム名が変換されるものとして説明したが、例えば当該ステップS8において類語辞書を用いてテーブル名が変換される構成の場合には、ステップS51においても同様に類語辞書を用いた変換処理が実行される。ステップS8においてルールまたは学習モデルが用いられる場合についても同様である。
ステップS51の処理が実行されると、クエリ解析部303は、データ仮想化装置30において既に作成されている外部テーブルを構成するカラムの中に、当該ステップS51において変換されたカラム名(つまり、変換後のカラム名)のカラムが存在するか否かを判定する(ステップS52)。なお、ステップS50の処理は、ステップS51における変換後のカラム名を、外部テーブルを構成するカラムのカラム名として含む外部テーブル情報(外部カラム情報)が格納部301内に存在するか否かに基づいて実行される。
カラムが存在すると判定された場合(ステップS52のYES)、クエリ解析部303は、ステップS31において取得されたデータ取得クエリに含まれるカラム名を、ステップS51における変換後のカラム名と置き換える(ステップS53)。
一方、カラムが存在しないと判定された場合(ステップS52のNO)、ステップS53の処理は実行されない(つまり、データ取得クエリに含まれるカラム名は変更されない)。
本実施形態においては、図22に示すような処理が実行されることにより、データ取得クエリに含まれるテーブル名及びカラム名が変換されたデータ取得クエリを作成することができる。
なお、図22においては省略されているが、このように作成されたデータ取得クエリはクエリ実行部305によって実行され、当該データ取得クエリに基づくデータが外部テーブルを介して各データソース10から取得される。
上記したステップS45において外部テーブルが存在すると判定された場合(ステップS45のYES)、データ取得クエリに含まれるテーブル名は変換されず、ステップS50の処理が実行される。
また、上記したステップS50においてカラムが存在すると判定された場合(ステップS50のYES)、データ取得クエリに含まれるカラム名は変換されず、図22に示す処理は終了される。
上記したように本実施形態においては、例えばデータ取得クエリ(ソーステーブルのデータを取得するためのクエリ)がクライアント端末20において指定された場合、当該クエリに含まれていているテーブル名(第1テーブル名)またはカラム名(第1カラム名)を変換する。
本実施形態においては、このような構成により、例えばデータ取得クエリを指定するユーザが外部テーブルのテーブル名及びカラム名(つまり、ソーステーブルのテーブル名及びカラム名から変換された外部テーブルのテーブル名及びカラム名)を正確に把握していない場合であっても、当該データ取得クエリに含まれるテーブル名及びカラム名を意味が同じテーブル名及びカラム名に変換することによって、当該変換後のテーブル名及びカラム名を含むデータ取得クエリに基づいて適切にデータを取得することが可能となる。
ここで、図23に示すように、データソース10において、テーブル名が「purchase」であり、カラム名が「amount」及び「rate」であるカラムから構成されるソーステーブルが管理されており、更に、前述した第1実施形態等において説明したようにテーブル名及びカラム名が変換されることにより、テーブル名が「purchase」であり、カラム名が「quantity」及び「rate」であるカラムから構成される外部テーブルが作成されているものとする。
この場合において、クライアント端末20において「SELECT amount,rate FROM buying」というデータ取得クエリが指定された場合を想定する。この場合、データ取得クエリ「SELECT amount,rate FROM buying」(つまり、テーブル名「buying」、カラム名「amount」及び「rate」を含むデータ取得クエリ)では、上記した外部テーブルを参照することができないため、当該データ取得クエリに対してはエラーが返されることになる。
しかしながら、本実施形態においては、データ取得クエリに含まれるテーブル名「buying」を「purchase」に変換し、当該データ取得クエリに含まれるカラム名「amount」を「quantity」に変換することによって、データ取得クエリ「SELECT quantity,rate FROM purchase」を得ることができるため、当該データ取得クエリを用いて外部テーブルを参照し、当該外部テーブルに関する外部テーブル情報を用いてデータソース10から適切なデータを取得することが可能となる。
なお、本実施形態においては前述した第1実施形態に係るデータ仮想化装置30に第2変換部311が追加された構成であるものとして説明したが、本実施形態は、前述した第2実施形態に適用されても構わない。すなわち、本実施形態は、前述した第2実施形態に係るデータ仮想化装置30に第2変換部311が追加された構成であっても構わない。
(第4実施形態)
次に、第4実施形態について説明する。本実施形態に係るデータ仮想化システムのネットワーク構成は、前述した第1実施形態と同様であるため、適宜、図1を用いて説明する。本実施形態に係るデータ仮想化装置30は、マルチテナント機能を有する点で前述した第2実施形態と同様であるが、複数の外部テーブル(の構成)の類似度に基づいて当該複数の外部テーブルからマルチテナントテーブルを作成する点で当該第2実施形態とは異なる。
図24は、本実施形態に係るデータ仮想化装置30の機能構成の一例を示すブロック図である。図24においては、前述した図15と同様の部分については同一参照符号を付してその詳しい説明を省略し、当該図15とは異なる部分について主に説明する。
図24に示すように、本実施形態に係るデータ仮想化装置30は、類似度判定部312を含む。
なお、本実施形態において、類似度判定部312の一部または全ては、データ仮想化装置30に備えられるCPU31(つまり、データ仮想化装置30のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。ここでは、上記した類似度判定部312の一部または全てがソフトウェアによって実現されるものとして説明したが、当該類似度判定部312の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
類似度判定部312は、データ仮想化装置30において作成された複数の外部テーブルの類似度を算出し、当該類似度に基づいて当該複数の外部テーブルが類似しているか否かを判定する機能を有する。
以下、本実施形態に係るデータ仮想化装置30の動作について説明する。まず、図25を参照して、マルチテナントテーブルを作成する際のデータ仮想化装置30の動作の概要を説明する。
ここでは、テーブル名が「purchase」であり、カラム名が「values」、「prices」及び「spare」であるカラムから構成されるソーステーブル(以下、第1ソーステーブルと表記)を管理しているデータソース10からスキーマ情報取得部307がテーブル名「purchase」、カラム名「values」、「prices」及び「spare」を含むスキーマ情報を取得したものとする。
また、テーブル名が「buying」であり、カラム名が「amount」、「rate」及び「flag」であるソーステーブル(以下、第2ソーステーブルと表記)を管理しているデータソース10からスキーマ情報取得部307がテーブル名「buying」、カラム名「amount」、「rate」及び「flag」を含むスキーマ情報を取得したものとする。
この場合、図25においては省略されているが、上記したスキーマ情報に含まれるテーブル名及びカラム名が変換部309によって変換され、当該変換されたテーブル名及びカラム名に基づいて外部テーブルが作成される。
図25に示す例では、上記した第1ソーステーブルに対応する外部テーブル(以下、第1外部テーブルと表記)として、テーブル名が「purchase」であり、カラム名が「quantity」、「rate」及び「spare」であるカラムから構成されるテーブルが作成される。
また、上記した第2ソーステーブルに対応する外部テーブル(以下、第2外部テーブルと表記)として、テーブル名が「purchase」であり、カラム名が「quantity」、「rate」及び「flag」であるカラムから構成されるテーブルが作成される。
本実施形態において、類似度判定部312は、上記した第1外部テーブルの構成(第1外部テーブルを構成するカラムのカラム名)と第2外部テーブルの構成(第2外部テーブルを構成するカラムのカラム名)とを比較し、当該第1及び第2外部テーブルの類似度を算出する。類似度判定部312による類似度の算出処理の詳細については後述するが、当該類似度が予め定められた値(以下、閾値と表記)以上である場合、マルチテナントテーブル作成部310は、第1及び第2外部テーブルを統合し、マルチテナントテーブルを作成する。
なお、上記したように第1外部テーブルはカラム名が「quantity」、「rate」及び「spare」であるカラムから構成され、第2外部テーブルはカラム名が「quantity」、「rate」及び「flag」であるカラムから構成されているが、図25に示す例において、当該第1及び第2外部テーブルから作成されるマルチテナントテーブルは、例えばカラム名が「quantity」及び「rate」であるカラム(つまり、第1及び第2外部テーブルにおいて共通するカラム)から構成されている。
ただし、第1及び第2外部テーブルから作成されるマルチテナントテーブルは、例えばカラム名が「quantity」、「rate」、「spare」及び「flag」であるカラム(つまり、第1及び第2外部テーブルを構成する全てのカラム)から構成されていてもよい。
上記したようにマルチテナントテーブル作成部310によってマルチテナントテーブルが作成された場合、当該マルチテナントテーブルに関するマルチテナントテーブル情報が格納部301に登録される。
次に、図26~図28のフローチャートを参照して、マルチテナントテーブルを作成する際のデータ仮想化装置30の処理手順の一例について説明する。
本実施形態においては、前述した図17に示すステップS31~S39の処理に相当するステップS61~S69の処理が実行される。
ただし、本実施形態においては、ステップS64において既存外部テーブルの構成が対象外部テーブルの構成と同一でないと判定された場合、当該対象外部テーブルの構成が当該既存外部テーブルの構成と類似するか否かを判定する処理が更に実行される。
具体的には、類似度判定部312は、対象外部テーブルに関する外部テーブル情報(外部カラム情報)及び既存外部テーブルに関する外部テーブル情報(外部カラム情報)に基づいて第1カラム数を特定する(ステップS70)。第1カラム数は、対象外部テーブル及び既存外部テーブルにおいてカラム名が共通するカラムの数である。すなわち、第1カラム数は、例えば「対象外部テーブルを構成するカラム∩既存外部テーブルを構成するカラム」の数に相当する。
ステップS70の処理が実行されると、類似度判定部312は、対象外部テーブルに関する外部テーブル情報(外部カラム情報)及び既存外部テーブルに関する外部テーブル情報(外部カラム情報)に基づいて第2カラム数を特定する(ステップS71)。第2カラム数は、対象外部テーブルを構成するカラムの数及び既存外部テーブルを構成するカラムの数を合計し、当該合計されたカラムの数から対象外部テーブル及び既存外部テーブルにおいてカラム名が共通するカラムの数(つまり、上記したステップS70において特定された第1カラム数)を減算することによって特定される。すなわち、第2カラム数は、例えば「対象外部テーブルを構成するカラム∪既存外部テーブルを構成するカラム」の数に相当する。
次に、類似度判定部312は、上記した第1及び第2カラム数に基づいて、対象外部テーブル及び既存外部テーブルの類似度を算出する(ステップS72)。なお、ステップS62において、類似度は、例えば「第1カラム数/第2カラム数×100」によって算出される。
類似度判定部312は、ステップS72において算出された類似度が閾値以上であるか否かを判定する(ステップS73)。
類似度が閾値以上であると判定された場合(ステップS73のYES)、ステップS65及びS66の処理が実行される。
これにより、本実施形態においては、類似度が閾値以上である複数の外部テーブルを統合してマルチテナントテーブルを作成することができる。なお、この場合に作成されるマルチテナントテーブルは、対象外部テーブル及び既存外部テーブルにおいて共通するカラムから構成されていてもよいし、対象外部テーブル及び既存外部テーブルを構成する全てのカラムから構成されていてもよい。
なお、類似度が閾値以上でないと判定された場合(ステップS73のNO)、ステップS69の処理が実行される。
ここではステップS64において既存外部テーブルの構成が対象外部テーブルの構成と同一でないと判定された場合に実行される処理について説明したが、ステップS67において既存マルチテナントテーブルの構成が対象外部テーブルの構成と同一でないと判定された場合においても同様の処理が実行される。
具体的には、類似度判定部312は、対象外部テーブルに関する外部テーブル情報(外部カラム情報)及び既存マルチテナントテーブルに関するマルチテナントテーブル情報に基づいて第1カラム数を特定する(ステップS74)。第1カラム数は、対象外部テーブル及び既存マルチテナントテーブルにおいてカラム名が共通するカラムの数である。
ステップS74の処理が実行されると、類似度判定部312は、対象外部テーブルに関する外部テーブル情報(外部カラム情報)及び既存マルチテナントテーブルに関するマルチテナントテーブル情報に基づいて第2カラム数を特定する(ステップS75)。第2カラム数は、対象外部テーブルを構成するカラムの数及び既存マルチテナントテーブルを構成するカラムの数を合計し、当該合計されたカラムの数から対象外部テーブル及び既存マルチテナントテーブルにおいてカラム名が共通するカラムの数(つまり、上記したステップS76において特定された第1カラム数)を減算することによって特定される。
次に、類似度判定部312は、上記した第1及び第2カラム数に基づいて、対象外部テーブル及び既存マルチテナントテーブルの類似度を算出する(ステップS76)。なお、ステップS76における類似度は、上記したステップS72において説明したように例えば「第1カラム数/第2カラム数×100」によって算出される。
類似度判定部312は、ステップS76において算出された類似度が閾値以上であるか否かを判定する(ステップS77)。
類似度が閾値以上であると判定された場合(ステップS77のYES)、ステップS68の処理が実行される。なお、図26においては省略されているが、上記したように対象外部テーブルを統合することによってマルチテナントテーブルの構成が変化する(つまり、マルチテナントテーブルを構成するカラムに対象外部テーブルを構成するカラムを追加する)場合には、当該マルチテナントテーブルに関するマルチテナントテーブル情報に当該カラムを追加する処理が実行される。なお、「マルチテナントテーブル情報にカラムを追加する」とは、マルチテナントテーブルを構成するカラムとして当該カラムが含まれるようにマルチテナントテーブル情報を変更(更新)することをいう。
これにより、本実施形態においては、既存マルチテナントテーブルと類似度が閾値以上である外部テーブルを当該既存マルチテナントテーブルに更に統合する(追加する)ことができる。
なお、類似度が閾値以上でないと判定された場合(ステップS77のNO)、ステップS63の処理が実行される。ここでは類似度が閾値以上でないと判定された場合には、ステップS63の処理が実行されるものとして説明したが、例えばステップS69の処理が実行されても構わない。
上記したように本実施形態においては、例えば第1外部テーブルを構成する複数のカラムと第2外部テーブルを構成する複数のカラムとの類似度に基づいてマルチテナントテーブルを作成する構成を有する。
ここで、図29及び図30を参照して、本実施形態の作用効果を前述した第2実施形態と比較して説明する。
図29に示すように、例えば第1データソース10において、テーブル名が「purchase」であり、カラム名が「values」、「prices」及び「spare」であるカラムから構成される第1ソーステーブルが管理されているものとする。この場合、この第1ソーステーブルに対応する外部テーブル(以下、第1外部テーブルと表記)として、テーブル名が「purchase」であり、カラム名が「quantity」、「rate」及び「spare」であるカラムから構成されるテーブルが作成されたものとする。
また、例えば第2データソース10において、テーブル名が「purchase」であり、カラム名が「amount」、「rate」及び「flag」であるカラムから構成されている第2ソーステーブルが管理されているものとする。この場合、この第2ソーステーブルに対応する外部テーブル(以下、第2外部テーブルと表記)として、テーブル名が「purchase」であり、カラム名が「quantity」、「rate」及び「flag」であるカラムから構成されるテーブルが作成されたものとする。
この場合、前述した第2実施形態においては、上記した2つの外部テーブル(第1及び第2外部テーブル)を統合してマルチテナントテーブルを作成しようとしたとしても、当該2つの外部テーブルの構成が異なる(つまり、当該外部テーブルを構成するカラムのカラム名が一致しない)ため、テーブル名が一致していたとしてもマルチテナントテーブルを作成することができない。すなわち、第1及び第2データソース10を含む複数のデータソース10はベンダーが異なることにより当該複数のデータソースにおいて管理されるソーステーブルの構成が異なることが多く、このような場合、前述した第2実施形態においてはマルチテナントテーブルを作成することができない。
一方、本実施形態においては、図30に示すように、第1及び第2外部テーブルの類似度を算出し、当該類似度が閾値以上である場合には、当該第1及び第2外部テーブルを統合してマルチテナントテーブルを作成することができる。
なお、図30に示す例においては、上記した第1カラム数(第1及び第2外部テーブルにおいてカラム名が共通するカラム名の数)は2であり、第2カラム数(第1及び第2外部テーブルを構成するカラムの数の合計値から第1カラム数を減算した数)は4であるため、第1及び第2外部テーブルの類似度は50%である。この場合、例えば閾値が50%に定められていたものとすると、カラム名が「quantity」及び「rate」であるマルチテナントテーブル、またはカラム名が「quantity」、「rate」、「spare」及び「flag」であるマルチテナントテーブルを、第1及び第2外部テーブルから作成することができる。
なお、本実施形態においては前述した第2実施形態に係るデータ仮想化装置30に類似度判定部312が追加された構成であるものとして説明したが、本実施形態は、前述した第3実施形態と組み合わせても構わない。すなわち、本実施形態に係るデータ仮想化装置30は、前述した第3実施形態において説明した第2変換部311を含む構成であっても構わない。
(第5実施形態)
次に、第5実施形態について説明する。本実施形態に係るデータ仮想化システムのネットワーク構成は、前述した第1実施形態と同様であるため、適宜、図1を用いて説明する。
ここで、前述した第1実施形態においては類語辞書を用いて外部テーブルを作成するものとして説明したが、本実施形態は、当該類語辞書を自動作成する点で当該第1実施形態とは異なる。
図31は、本実施形態に係るデータ仮想化装置30の機能構成の一例を示すブロック図である。図31においては、前述した図6と同様の部分については同一参照符号を付してその詳しい説明を省略し、当該図6と異なる部分について主に説明する。
図31に示すように、本実施形態に係るデータ仮想化装置30は、類語辞書作成部313を含む。
なお、本実施形態において、類語辞書作成部313の一部または全ては、データ仮想化装置30に備えられるCPU31(つまり、データ仮想化装置30のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。ここでは、上記した類語辞書作成部313の一部または全てがソフトウェアによって実現されるものとして説明したが、当該類語辞書作成部313の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
類語辞書作成部313は、上記した外部テーブルを作成する際に用いられる類語辞書を自動的に作成する機能を有する。類語辞書作成部313は、例えばユーザによって指定されたドメインに基づいて検索されたWebサイト(Webページ)を解析することによって、当該Webサイトから抽出された単語に基づいて、当該ドメインに関する類語辞書を作成する。
以下、本実施形態に係るデータ仮想化装置30の動作について説明する。まず、図32を参照して、類語辞書を作成する際のデータ仮想化装置30の動作の概要を説明する。
類語辞書を作成する場合、ユーザは、例えばクライアント端末20を操作することによって、当該クライアント端末20に表示されるドメイン指定画面においてドメインを指定することができるものとする。本実施形態において、ユーザによって指定されるドメインには、例えば類語辞書の分野を指示するキーワード等が含まれる。
このようにユーザによってドメイン(キーワード)が指定された場合、当該ドメインに関連するWebサイトが検索され、当該検索結果に対してクローリングが実施される。なお、クローリングとは、Webサイトを巡回することをいう。
次に、クローリングされたWebサイトに対してスクレイピングが実施されることにより、当該Webサイトから単語(群)が抽出され、当該Webサイトに記述されている単語の一覧(すなわち、ユーザによって指定されたドメインに関する単語の一覧)が取得される。
このように取得された単語の一覧から当該単語の各々の出現回数(出現頻度)を取得し、当該出現回数に基づいて頻出単語の一覧が生成される。
ここで、データ仮想化装置30は概念辞書(意味辞書)を保持しているものとする。この概念辞書においては、意味が同一または類似している単語の集合が定義されているものとする。
本実施形態においては、このような概念辞書を用いて、上記した頻出単語の類語を検索し、当該頻出単語を代表語、当該検索結果を当該代表語の類語として、類語辞書に登録する。
詳しい説明については省略するが、前述した第1実施形態において説明した例によれば、例えばWebサイトから抽出された頻出単語が例えば「purchase」であり、当該「purchase」の類語として「buying」及び「purchasing」等が概念辞書から検索された場合には、代表語「purchase」と、類語「buying」及び「purchasing」とが対応づけて登録された類語辞書が作成される。
本実施形態においては、このような処理を頻出単語毎に行うことにより、複数の代表語が登録された類語辞書を自動的に作成することができる。
次に、図33のフローチャートを参照して、類語辞書を作成する際のデータ仮想化装置30(類語辞書作成部313)の処理手順の一例について説明する。
まず、例えばユーザによってドメインが指定された場合、類語辞書作成部313は、当該ドメインを取得する(ステップS81)。なお、本実施形態においてはドメインがユーザによって指定されるものとして説明するが、当該ドメインは、例えばデータソース10において管理されているソーステーブルの情報(例えば、テーブル名及び当該テーブルを構成するカラムのカラム名)や当該テーブルに保持されているデータ等に基づいて自動的に指定されてもよい。
次に、類語辞書作成部313は、ステップS81において取得されたドメインに基づくWeb検索を実行する(ステップS82)。なお、ステップS82の処理は、所定の検索エンジンを用いて実行されてもよい。
ここで、ステップS82の処理が実行されると、当該ステップS82における検索結果として複数のWebサイトのURL(Uniform Resource Locator)が取得される。類語辞書作成部313は、このように取得された複数のWebサイトのURLのうちの1つのURLを取得する(ステップS83)。
類語辞書作成部313は、ステップS83において取得されたURLに基づいてWebサイトにアクセスし、当該Webサイトを解析することによって当該Webサイトから単語群を抽出する(ステップS84)。
ここで、例えば類語辞書を作成するためにN個のWebサイトから単語(群)を抽出する(つまり、ステップS83及びS84の処理をN回実行する)ものとすると、類語辞書作成部313は、当該処理の回数がN回未満であるか否かを判定する(ステップS85)。なお、N(回)は、データ仮想化装置30(または類語辞書作成部313)において予め定められていればよいが、上記したドメインととともにユーザによって指定されてもよい。
N回未満であると判定された場合(ステップS85のYES)、ステップS83に戻って処理が繰り返される。この場合、既に単語群が抽出されたWebサイトのURLとは異なるURLがステップS83において取得され、ステップS84の処理が実行される。
一方、N回未満でない(つまり、処理がN回実行された)と判定された場合(ステップS85のNO)、類語辞書作成部313は、N回繰り返し実行されたステップS84において抽出された複数の単語(単語群)を当該単語の各々の出現回数に基づいてソートする(ステップS86)。このステップS86の処理が実行されることによって、上記した頻出単語の一覧が取得される。
以下、ステップS86の処理が実行されることによって取得された頻出単語の一覧から、出現回数が最も多い単語(以下、対象単語と表記)を取得する(ステップS87)。
ステップS87の処理が実行されると、類語辞書作成部313は、当該ステップS87において取得された対象単語に基づいて、概念辞書から当該対象単語の類語を検索する(ステップS88)。
類語辞書作成部313は、ステップS87において取得された対象単語を代表語、ステップS88の処理が実行されることによって得られた検索結果を当該対象単語の類語とし、当該代表語及び類語を対応づけて類語辞書に登録する(ステップS89)。
ここで、例えば類語辞書を作成するためにM個の代表語を類語辞書に登録するものとすると、類語辞書作成部313は、類語辞書に登録された代表語の数がM個未満であるか否かを判定する(ステップS90)。なお、M(個)は、データ仮想化装置30(または類語辞書作成部313)において予め定められていればよいが、上記したドメインとともにユーザによって指定されてもよい。
M個未満であると判定された場合(ステップS90のYES)、ステップS87戻って処理が繰り返される。この場合、上記した対象単語の次に出現回数が多い単語が対象単語としてステップS87において取得され、ステップS88及びS89の処理が実行される。
なお、ステップS87において取得された単語が既に類語としてステップS89において登録されている場合には、当該単語については処理を省略するものとする。
上記したように本実施形態においては、ユーザによって指定されたドメインに基づいて検索されたWebサイト(Webページ)から抽出された単語に基づいて、類語辞書を作成する。具体的には、本実施形態においては、出現回数が多い単語及び当該単語の類語を類語辞書に登録することによって当該類語辞書を作成する。
本実施形態においては、このような構成により、類語辞書を自動的に作成することができるため、外部テーブルを作成する際に用いられる類語辞書を予め用意しておく必要がない。また、本実施形態においては、ユーザによって指定されたドメインに特化した類語辞書を作成することができるため、外部テーブルを作成する際にユーザの意図するテーブル名及びカラム名の変換を実現することができる。
なお、本実施形態においては、例えば予めデータ仮想化装置30内において概念辞書を保持しているが、当該概念辞書には単に類語の集合が定義されているのみであり、代表語が定義されていないため、外部テーブルを作成するための類語辞書として用いることができない。
このため、本実施形態においては、ユーザによって指定されたドメインに基づいて検索されたWebサイトから抽出された単語群のうち出現頻度の高い単語を代表語とするとともに、当該代表語の類語を概念辞書から検索することによって、類語辞書を作成することができる。
なお、本実施形態においては概念辞書(類語の集合が定義された辞書)を利用して類語辞書が作成されるものとして説明した、類語辞書を作成するために必要な類語は、例えばWeb検索等により取得されても構わない。
また、本実施形態においては前述した第1実施形態に係るデータ仮想化装置30に類語辞書作成部313が追加された構成であるものとして説明したが、本実施形態は、前述した第2~第4実施形態に適用されても構わない。すなわち、本実施形態は、前述した第2~第4実施形態に係るデータ仮想化装置30に類語辞書作成部313が追加された構成であっても構わない。
以上述べた少なくとも1つの実施形態によれば、複数のデータソースにおいて管理されているテーブルに対する効率的なアクセスを実現することが可能なデータ仮想化装置及び方法を提供することにある。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
10…データソース、20…クライアント端末、30…データ仮想化装置、31…CPU、32…不揮発性メモリ、33…主メモリ、34…通信デバイス、301…格納部、302…インタフェース部、303…クエリ解析部、304…クエリプラン作成部、305…クエリ実行部、306…クエリ分割部、307…スキーマ情報取得部、308…外部テーブル情報登録部、309…変換部,第1変換部、310…マルチテナントテーブル作成部、311…第2変換部、312…類似度判定部、313…類語辞書作成部。

Claims (12)

  1. 第1及び第2データソースと接続され、格納手段を有するデータ仮想化装置において、
    前記第1データソースにおいて管理されている第1ソーステーブルの第1テーブル名を含む第1スキーマ情報と、前記第2データソースにおいて管理されている第2ソーステーブルの第2テーブル名を含む第2スキーマ情報とを取得する取得手段と、
    前記取得された第1スキーマ情報に含まれる第1テーブル名を第3テーブル名に変換し、前記取得された第2スキーマ情報に含まれる第2テーブル名を第3テーブル名に変換する第1変換手段と、
    前記第1ソーステーブルに対応する第1外部テーブルを作成するために、前記第1テーブル名及び当該第1テーブル名から変換された第3テーブル名を対応づけて含む第1テーブル対応情報を前記格納手段に登録し、前記第2ソーステーブルに対応する第2外部テーブルを作成するために、前記第2テーブル名及び当該第2テーブル名から変換された第3テーブル名を対応づけて含む第2テーブル対応情報を前記格納手段に登録する登録手段と
    を具備するデータ仮想化装置。
  2. 前記第1スキーマ情報は、前記第1ソーステーブルを構成する第1カラムの第1カラム名を含み、
    前記第2スキーマ情報は、前記第2ソーステーブルを構成する第2カラムの第2カラム名を含み、
    前記第1変換手段は、前記取得された第1スキーマ情報に含まれる第1カラム名を第3カラム名に変換し、前記取得された第2スキーマ情報に含まれる第2カラム名を第3カラム名に変換し、
    前記登録手段は、前記第1テーブル名及び前記第1カラム名を対応づけて含む第1ソースカラム情報と、当該第1テーブル名から変換された第3テーブル名及び当該第1カラム名から変換された第3カラム名を対応づけて含む第1外部カラム情報とを前記格納手段に登録し、前記第2テーブル名及び前記第2カラム名を対応づけて含む第2ソースカラム情報と、当該第2テーブル名から変換された第3テーブル名及び当該第2カラム名から変換された第3カラム名を対応づけて含む第2外部カラム情報とを前記格納手段に登録する
    請求項1記載のデータ仮想化装置。
  3. 前記第3テーブル名は、前記第1テーブル名及び前記第2テーブル名の類語であり、
    前記第3カラム名は、前記第1カラム名及び前記第2カラム名の類語である
    請求項2記載のデータ仮想化装置。
  4. 前記第1変換手段は、複数の代表語及び当該複数の代表語の各々の類語が対応づけて登録されている類語辞書を参照して、前記第1テーブル名に対応づけて当該類語辞書に登録されている代表語を前記第3テーブル名として当該第1テーブル名を当該第3テーブル名に変換し、前記第1カラム名に対応づけて当該類語辞書に登録されている代表語を前記第3カラム名として当該第1カラム名を当該第3カラム名に変換し、前記第2テーブル名に対応づけて当該類語辞書に登録されている代表語を前記第3テーブル名として当該第2テーブル名を当該第3テーブル名に変換し、前記第2カラム名に対応づけて当該類語辞書に登録されている代表語を前記第3カラム名として当該第2カラム名を当該第3カラム名に変換する請求項2または3記載のデータ仮想化装置。
  5. 前記第1変換手段は、テーブル名及びカラム名における表記の揺れを訂正するためのルールを用いて、前記第1テーブル名を前記第3テーブル名に変換し、前記第1カラム名を前記第3カラム名に変換し、前記第2テーブル名を前記第3テーブル名に変換し、前記第2カラム名を前記第3カラム名に変換する請求項2または3記載のデータ仮想化装置。
  6. 前記第1変換手段は、テーブル名及びカラム名を入力として、当該テーブル名及びカラム名の類語を出力するように学習された学習モデルを用いて、前記第1テーブル名を前記第3テーブル名に変換し、前記第1カラム名を前記第3カラム名に変換し、前記第2テーブル名を前記第3テーブル名に変換し、前記第2カラム名を前記第3カラム名に変換する請求項2または3記載のデータ仮想化装置。
  7. 前記第1及び第2外部カラム情報に基づいて、前記第1及び第2外部テーブルが統合されたマルチテナントテーブルを作成する第1作成手段を更に具備する請求項2記載のデータ仮想化装置。
  8. 前記第1ソーステーブルに保持されているデータを取得するためのクエリが指定された場合、当該クエリに含まれている当該第1ソーステーブルの第1テーブル名を第3テーブル名に変換し、当該クエリに含まれている当該第1ソーステーブルを構成する第1カラムの第1カラム名を第3カラム名に変換する第2変換手段を更に具備する請求項2記載のデータ仮想化装置。
  9. 前記第1外部テーブルは、前記第1カラム名から変換された第3カラム名の第3カラムを含む複数のカラムから構成され、
    前記第2外部テーブルは、前記第2カラム名から変換された第3カラム名の第3カラムを含む複数のカラムから構成され、
    前記第1作成手段は、前記第1外部テーブルを構成する複数のカラムと前記第2外部テーブルを構成する複数のカラムとの類似度に基づいて、前記マルチテナントテーブルを作成する
    請求項7記載のデータ仮想化装置。
  10. ユーザによって指定されたドメインに基づいて検索されたWebページから抽出された単語に基づいて、前記類語辞書を作成する第2作成手段を更に具備する請求項4記載のデータ仮想化装置。
  11. 前記第2作成手段は、前記抽出された単語のうち、出現回数が多い単語及び当該単語の類語を前記類語辞書に登録する請求項10記載のデータ仮想化装置。
  12. 第1及び第2データソースと接続され、格納手段を有するデータ仮想化装置が実行する方法において、
    前記第1データソースにおいて管理されている第1ソーステーブルの第1テーブル名を含む第1スキーマ情報と、前記第2データソースにおいて管理されている第2ソーステーブルの第2テーブル名を含む第2スキーマ情報とを取得するステップと、
    前記取得された第1スキーマ情報に含まれる第1テーブル名を第3テーブル名に変換し、前記取得された第2スキーマ情報に含まれる第2テーブル名を第3テーブル名に変換するステップと、
    前記第1ソーステーブルに対応する第1外部テーブルを作成するために、前記第1テーブル名及び当該第1テーブル名から変換された第3テーブル名を対応づけて含む第1テーブル対応情報を前記格納手段に登録し、前記第2ソーステーブルに対応する第2外部テーブルを作成するために、前記第2テーブル名及び当該第2テーブル名から変換された第3テーブル名を対応づけて含む第2テーブル対応情報を前記格納手段に登録するステップと
    を具備する方法。
JP2021085266A 2021-05-20 2021-05-20 データ仮想化装置及び方法 Active JP7472078B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021085266A JP7472078B2 (ja) 2021-05-20 2021-05-20 データ仮想化装置及び方法
US17/651,836 US11847102B2 (en) 2021-05-20 2022-02-21 Data virtualization apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021085266A JP7472078B2 (ja) 2021-05-20 2021-05-20 データ仮想化装置及び方法

Publications (2)

Publication Number Publication Date
JP2022178453A JP2022178453A (ja) 2022-12-02
JP7472078B2 true JP7472078B2 (ja) 2024-04-22

Family

ID=84103742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021085266A Active JP7472078B2 (ja) 2021-05-20 2021-05-20 データ仮想化装置及び方法

Country Status (2)

Country Link
US (1) US11847102B2 (ja)
JP (1) JP7472078B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058391A (en) 1997-12-17 2000-05-02 Mci Communications Corporation Enhanced user view/update capability for managing data from relational tables
JP2008112289A (ja) 2006-10-30 2008-05-15 Internatl Business Mach Corp <Ibm> データベースを統合するためのシステム、方法、およびプログラム
JP2008165447A (ja) 2006-12-27 2008-07-17 Ntt Data Corp データアクセス装置、データアクセス方法、及び、コンピュータプログラム
JP2010191628A (ja) 2009-02-17 2010-09-02 Hitachi Ltd リレーショナルデータベースのデータ定義支援システム及び方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130198243A1 (en) * 2010-03-29 2013-08-01 Brien Robert Givens System and method for dynamically generating a gui according to table relationships in a database
US10579634B2 (en) * 2012-08-30 2020-03-03 Citus Data Bilgi Islemleri Ticaret A.S. Apparatus and method for operating a distributed database with foreign tables
JP6523823B2 (ja) 2015-06-26 2019-06-05 Kddi株式会社 仮想データベースシステム管理装置、管理方法及び管理プログラム
US10642803B2 (en) * 2018-01-31 2020-05-05 Salesforce.Com, Inc. Adding a partition to an existing table stored on a distributed file system
JP6926035B2 (ja) 2018-07-02 2021-08-25 株式会社東芝 データベース管理装置およびクエリ分割方法
US10726052B2 (en) * 2018-07-03 2020-07-28 Sap Se Path generation and selection tool for database objects
US10592505B2 (en) * 2018-07-25 2020-03-17 Oracle International Corporation Natural language interfaces for databases using autonomous agents and thesauri
JP7068210B2 (ja) 2019-02-12 2022-05-16 株式会社東芝 データベース管理システム、端末装置及び方法
US20210034433A1 (en) * 2019-07-31 2021-02-04 Teradata Us, Inc. Automatic query routing
JP7434088B2 (ja) 2020-07-07 2024-02-20 株式会社東芝 分散処理システム、分散処理装置、データベース管理装置及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058391A (en) 1997-12-17 2000-05-02 Mci Communications Corporation Enhanced user view/update capability for managing data from relational tables
JP2008112289A (ja) 2006-10-30 2008-05-15 Internatl Business Mach Corp <Ibm> データベースを統合するためのシステム、方法、およびプログラム
JP2008165447A (ja) 2006-12-27 2008-07-17 Ntt Data Corp データアクセス装置、データアクセス方法、及び、コンピュータプログラム
JP2010191628A (ja) 2009-02-17 2010-09-02 Hitachi Ltd リレーショナルデータベースのデータ定義支援システム及び方法

Also Published As

Publication number Publication date
JP2022178453A (ja) 2022-12-02
US11847102B2 (en) 2023-12-19
US20220374400A1 (en) 2022-11-24

Similar Documents

Publication Publication Date Title
Deb Nath et al. Towards a programmable semantic extract-transform-load framework for semantic data warehouses
KR101114023B1 (ko) 확장형 문서 검색을 위한 콘텐츠 전파
CN109388637B (zh) 数据仓库信息处理方法、装置、系统、介质
CN107257973B (zh) 查询网络上的数据源
Lehmann et al. Deqa: deep web extraction for question answering
CN110795455A (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
CN105550241A (zh) 多维数据库查询方法及装置
US20200272651A1 (en) Heuristic dimension reduction in metadata modeling
Jiang et al. Application intelligent search and recommendation system based on speech recognition technology
Zhang et al. Fusing multi-abstraction vector space models for concern localization
Zou et al. Lachesis: automatic partitioning for UDF-centric analytics
Chen et al. A workload-driven method for designing aggregate-oriented NoSQL databases
Imran et al. Fast datalog evaluation for batch and stream graph processing
JP7472078B2 (ja) データ仮想化装置及び方法
CN103092574B (zh) 一种基于递归自主式复杂任务分解系统及方法
Ding et al. Schema matching based on SQL statements
Ma et al. API prober–a tool for analyzing web API features and clustering web APIs
Sazontev et al. An extensible approach for materialized big data integration in distributed computation environments
Hauck et al. Highspeed graph processing exploiting main-memory column stores
KR20210037488A (ko) 빅데이터 분석 기반 광고 마케팅 시스템
Ivanov et al. Corebigbench: Benchmarking big data core operations
Kargar Enhancing knowledge accessibility in digital economy with search over enterprise data
Ježek et al. NWB Query engines: tools to search data stored in neurodata without borders format
VS Discovering composable web services using functional semantics and service dependencies based on natural language requests
Flesca et al. A fuzzy logic approach to wrapping pdf documents

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230526

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240304

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: 20240312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240410