JP6253725B1 - データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラム - Google Patents

データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラム Download PDF

Info

Publication number
JP6253725B1
JP6253725B1 JP2016137743A JP2016137743A JP6253725B1 JP 6253725 B1 JP6253725 B1 JP 6253725B1 JP 2016137743 A JP2016137743 A JP 2016137743A JP 2016137743 A JP2016137743 A JP 2016137743A JP 6253725 B1 JP6253725 B1 JP 6253725B1
Authority
JP
Japan
Prior art keywords
database system
received
hash value
database
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016137743A
Other languages
English (en)
Other versions
JP2018010424A (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 JP2016137743A priority Critical patent/JP6253725B1/ja
Priority to US15/630,358 priority patent/US20180018385A1/en
Application granted granted Critical
Publication of JP6253725B1 publication Critical patent/JP6253725B1/ja
Publication of JP2018010424A publication Critical patent/JP2018010424A/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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/2228Indexing structures
    • G06F16/2255Hash tables

Landscapes

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

Abstract

【課題】異なるデータベースシステム間におけるデータ同士の結合処理をより高速に実行することができるデータベースシステムなどを提供することである。【解決手段】実施形態のデータベースシステムは、複数のデータベースシステムと統合サーバとを持つ。統合サーバはデータを結合する要求に基づき第1および第2データベースシステムに問い合わせる。第1および第2データベースシステムはデータをハッシュ値に変換する。第1データベースシステムはハッシュ値を第2データベースシステムに送信する。第2データベースシステムは、受信したハッシュ値と変換したハッシュ値とを照合し、照合結果および一致したハッシュ値の元データを統合サーバに送信し、一致したハッシュ値情報を第1データベースシステムに送信する。第1データベースシステムはハッシュ値情報に基づいてデータを統合サーバに送信する。統合サーバは照合結果に基づきデータ同士を結合する。【選択図】図1

Description

本発明の実施形態は、データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラムに関する。
クライアントから受信したクエリに基づいて、複数のデータサーバが連携してデータ同士を結合し、クライアントに応答するセミジョイン法と称される手法が知られている。
ハッシュセミジョイン法では、クライアントからクエリを受信した場合、結合対象となる列データのハッシュ値を、第1のデータベースシステムから第2のデータベースシステムに送信する。第2のデータベースシステムは、受信したハッシュ値と自身の列データのハッシュ値とを照合し、一致したハッシュ値に対応する行の識別情報を含む結合結果、および行データを抽出するための列データを第1のデータベースシステムに返信する。第1のデータベースシステムは、結合結果に基づいて行データ同士を結合することで最終結果を生成して、最終結果をクライアントに送信する。しかしながら、第2のデータベースシステムから第1のデータベースシステムに送信する列データのサイズが大きい場合、データベースシステム間の通信量が増加する可能性があった。
特開2007−26296号公報
本発明が解決しようとする課題は、異なるデータベースシステム間におけるデータ同士の結合処理を、より高速に実行することができるデータベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラムを提供することである。
実施形態のデータベースシステムは、複数のデータベースシステムと、統合サーバと、とを持つ。前記複数のデータベースシステムは、データベースを管理する。前記統合サーバは、クライアントから複数のデータを結合する要求を受け付けた場合に、前記要求に基づいて、前記複数のデータベースシステムの一部または全部である複数のデータベースシステムに問い合わせを行う。前記統合サーバから問い合わせを受け付けたデータベースシステムのそれぞれは、前記受け付けた問い合わせに基づいて前記データベースからデータを抽出し、抽出したデータをハッシュ値に変換する。前記統合サーバから問い合わせを受け付けたデータベースシステムのうち第1のデータベースシステムは、前記変換したハッシュ値を、前記統合サーバから問い合わせを受け付けたデータベースシステムのうち第2のデータベースシステムに送信する。前記第2のデータベースシステムは、前記第1のデータベースシステムから受信したハッシュ値と、自身が変換したハッシュ値とを照合し、照合結果、および一致したハッシュ値の元となったデータを前記統合サーバに送信すると共に、前記第1のデータベースシステムから受信したハッシュ値のうち、一致したハッシュ値に対応する情報を前記第1のデータベースシステムに送信する。前記第1のデータベースシステムは、前記第2のデータベースシステムから受信した前記一致したハッシュ値に対応する情報に基づいて、一致したハッシュ値の元となったデータを前記統合サーバに送信する。前記統合サーバは、前記照合結果に基づいて、前記前記第1のデータベースシステムおよび前記第2のデータベースシステムからそれぞれ受信したデータ同士を結合する。
実施形態のデータベースシステム1の一例を示す図。 ユーザ端末100、データベース統合サーバ200、データベースシステムX、およびデータベースシステムYの機能構成の一例を示すブロック図。 実施形態における結合処理の概要を表す図。 実施形態のデータベースシステム1においてデータを結合する全体の処理の流れの一例を示すフローチャート。 ハッシュ表を生成する処理の概要を示す図。 結合基点および結合実施点を決定する処理の概要を示す図。 データベースシステムXが結合基点、データベースシステムYが結合実施点に決定された場合において、ハッシュ値を照合する処理の概要を示す図。 データベースシステムXが結合基点、データベースシステムYが結合実施点に決定された場合において、結合結果を送信する処理の概要を示す図。 データベースシステムXが結合基点、データベースシステムYが結合実施点に決定された場合において、最終結果を生成する処理の概要を示す図。 データベースシステムXが結合実施点、データベースシステムYが結合基点に決定された場合において、ハッシュ値を照合する処理の概要を示す図。 データベースシステムXが結実施基点、データベースシステムYが結合基点に決定された場合において、結合結果を送信する処理の概要を示す図。 データベースシステムXが結合実施点、データベースシステムYが結合基点に決定された場合において、最終結果を生成する処理の概要を示す図。 実施形態のデータベース統合サーバ200における内部処理の流れの一例を示すフローチャート。 実施形態のシステム連携装置における内部処理の流れの一例を示すフローチャート。 相手のデータベースシステムよりも先にハッシュ表の作成が完了したデータベースシステムにおけるシステム連携装置300の処理の流れの一例を示すフローチャート。 相手のデータベースシステムからコスト情報を受信したデータベースシステムにおけるシステム連携装置300の処理の流れの一例を示すフローチャート。 相手のデータベースシステムからコスト情報を受信したデータベースシステムにおけるシステム連携装置300の処理の流れの他の一例を示すフローチャート。 データベースからデータを抽出したデータからハッシュ値する処理の実施例を示す図。 結合基点および結合実施点を決定する処理の実施例を示す図。 結合基点および結合実施点を決定する処理の実施例を示す図。 ハッシュ値を照合する処理の実施例を示す図。 ハッシュ値を照合する処理の実施例を示す図。 中間結果および最終結果を生成する処理の実施例を示す図。
以下、実施形態のデータベースシステムおよびデータ結合方法、統合サーバ、およびデータ結合プログラム、データベースシステム連携方法、およびデータベースシステム連携プログラムを、図面を参照して説明する。
図1は、実施形態のデータベースシステム1の一例を示す図である。データベースシステム1は、例えば、ユーザ端末100と、データベース統合サーバ200と、データベースシステムXおよびデータベースシステムYとを備える。データベースシステムXは、例えば、システム連携装置300Xと、データベース管理装置400Xと、データベース500Xとを備える。データベースシステムYは、例えば、システム連携装置300Yと、データベース管理装置400Yと、データベース500Yとを備える。なお、実施形態においてデータベースシステムはデータベースシステムXとデータベースシステムYの2つであるが、これに限定されず、2以上の任意の自然数のデータベースシステムを備えていてもよい。データベースシステムXとデータベースシステムYとは、異なる内容のデータを管理および記憶する。また、データベースシステムXとデータベースシステムYとは、データの記録形式の種類等が異なるDBMS(DataBase Management System)であるが、これに限定されず、同じDBMSであってもよい。
ユーザ端末100と、データベース統合サーバ200と、データベースシステムXと、データベースシステムYとは、ネットワークNWに接続されている。ネットワークNWは、例えば、無線基地局、Wi−Fiアクセスポイント、通信回線、プロバイダ、インターネットなどを含む。なお、これらの構成要素の全ての組み合わせが相互に通信可能である必要はなく、ネットワークNWは、一部にローカルなネットワークを含んでもよい。
図2は、ユーザ端末100、データベース統合サーバ200、データベースシステムX、およびデータベースシステムYの機能構成の一例を示すブロック図である。ユーザ端末100は、データベース用アプリケーション110がインストールされたコンピュータである。ユーザ端末100は、データベース統合サーバ200に対するクライアントの一例である。データベース用アプリケーション110は、例えばユーザの操作に基づいてSQL(Structured Query Language)により記述したクエリを生成する。実施形態において、データベース用アプリケーション110は、データベースシステムXに記憶されたデータと、データベースシステムYに記憶されたデータとを結合した結果を要求するクエリを生成する。データベース用アプリケーション110は、生成したクエリを、NICを用いてデータベース統合サーバ200に送信する。また、データベース用アプリケーション110は、データベース統合サーバ200からのクエリに対する応答を受け付ける。
データベース統合サーバ200は、例えば、計画生成部210と、サーバ側計画実行部220と、サーバ側通信部230とを備える。これらの機能部は、例えばCPU(Central Processing Unit)等のプロセッサがプログラムメモリに格納されたプログラムを実行することにより実現される。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
計画生成部210は、データベース用アプリケーション110から受信したクエリを受け付ける。計画生成部210は、受け付けたクエリを解釈して実行計画を生成する。
実行計画は、クエリにより指定されたデータをデータベースシステムXおよびデータベースシステムYからそれぞれ抽出し、抽出したデータのハッシュ値同士を照合した結果に基づいてデータ同士を結合する手順を表す。
サーバ側計画実行部220は、サーバ側通信部230を用いて、計画生成部210により生成された実行計画に基づいて、データベースシステムXおよびデータベースシステムYに問い合わせを行う。問い合わせを行うデータベースシステムは、複数のデータベースシステムの一部または全部である複数のデータベースシステム(X,Y)である。サーバ側計画実行部220は、例えば、クエリにより指定されたデータを結合する要求を各データベースシステムに送信する。サーバ側計画実行部220は、サーバ側通信部230を用いて、問い合わせを行った結果としてデータベースシステムXおよびデータベースシステムYからデータを含む情報を受信する。サーバ側計画実行部220は、受信した情報に基づいてデータ同士を結合して、最終結果を生成する。サーバ側計画実行部220は、サーバ側通信部230を用いて、最終結果をユーザ端末100に送信する。
サーバ側通信部230は、NIC(Network Interface Card)や無線通信モジュールなどの通信インターフェースである。
システム連携装置300Xは、例えば、データベースシステム側通信部310Xと、データベースシステム側計画実行部320Xと、ハッシュ表作成部330Xと、データベースシステムAPI(Application Programming Interface)400Xとを備える。これらの機能部は、例えばCPU等のプロセッサがプログラムメモリに格納されたプログラムを実行することにより実現される。また、これらの機能部のうち一部または全部は、LSI、ASIC、またはFPGA等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
データベースシステム側通信部310Xは、NICや無線通信モジュールなどの通信インターフェースである。
データベースシステム側計画実行部320Xは、データベース統合サーバ200により生成された実行計画に基づいて、結合処理を行う。データベースシステム側計画実行部320Xは、結合処理において、データベース500Xからデータを抽出し、抽出したデータのハッシュ値とデータベースシステムYから受信したハッシュ値とを照合する。データベースシステム側計画実行部320Xは、照合した結果に基づく情報を、データベースシステム側通信部310Xを用いてデータベース統合サーバ200に送信する。
データベースシステム側計画実行部320Xは、結合処理切替部322Xを備える。結合処理切替部322Xは、ハッシュ値同士を照合する処理を自身で行うか、データベースシステムYで行うかを決定する。
ハッシュ表作成部330Xは、データベースシステム側計画実行部320Xにより抽出されたデータを、所定のハッシュ関数によりハッシュ値に変換する。ハッシュ表作成部330Xは、ハッシュ値を、データに対応付けられた識別情報に対応付けたハッシュ表を作成する。
データベースシステムAPI340Xは、データベースシステム側計画実行部320Xとデータベース管理装置400Xにおけるアプリケーションプログラムとの間でデータおよび命令の受け渡しを行う。データベースシステムAPI340Xは、データベースシステム側計画実行部320Xから要求を受け付けることで、データベース管理装置400Xによってデータベース500Xからデータを抽出させる。
データベース管理装置400Xは、例えばCPU等のプロセッサがプログラムメモリに格納されたDBMSを実行することにより実現される。また、これらの機能部のうち一部または全部は、LSI、ASIC、またはFPGA等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。データベース管理装置400Xは、外部装置から受け付けたクエリに基づいて、データベース500Xの操作を行う。また、データベース管理装置400Xは、データベースシステムAPI340Xから受信した要求に基づいて、データベース500Xからデータを抽出し、抽出したデータをデータベースシステムAPI340Xに返信する。
データベース500Xは、テーブルを格納する。テーブルは、各行に付加される識別情報としてのrowidXに、レコードを対応付けた情報である。rowidXは、データベースシステムXに格納されたレコードを一意に特定する情報である。レコードは、一又は複数の列に対応付けられたデータを含む。これにより、各データは、一つのrowidXに対応付けられる。
システム連携装置300Yは、例えば、データベースシステム側通信部310Yと、データベースシステム側計画実行部320Yと、ハッシュ表作成部330と、データベースシステムAPI400Yとを備える。これらの機能部は、例えばCPU等のプロセッサがプログラムメモリに格納されたプログラムを実行することにより実現される。また、これらの機能部のうち一部または全部は、LSI、ASIC、またはFPGA等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
データベースシステム側通信部310Yは、NICや無線通信モジュールなどの通信インターフェースである。
データベースシステム側計画実行部320Yは、データベース統合サーバ200により生成された実行計画に基づいて、結合処理を行う。データベースシステム側計画実行部320Yは、結合処理において、データベース500Yからデータを抽出し、抽出したデータのハッシュ値とデータベースシステムXから受信したハッシュ値とを照合する。データベースシステム側計画実行部320Yは、照合した結果に基づく情報を、データベースシステム側通信部310Yを用いてデータベース統合サーバ200に送信する。
データベースシステム側計画実行部320Yは、結合処理切替部322Yを備える。結合処理切替部322Yは、ハッシュ値同士を照合する処理を自身で行うか、データベースシステムXで行うかを決定する。
ハッシュ表作成部330Yは、データベースシステム側計画実行部320Yにより抽出されたデータを、所定のハッシュ関数によりハッシュ値に変換する。ハッシュ表作成部330Yは、ハッシュ値を、データに対応付けられた識別情報に対応付けたハッシュ表を作成する。
データベースシステムAPI340Yは、データベースシステム側計画実行部320Yとデータベース管理装置400Yにおけるアプリケーションプログラムとの間でデータおよび命令の受け渡しを行う。データベースシステムAPI340Yは、データベースシステム側計画実行部320Yから要求を受け付けることで、データベース管理装置400Yによってデータベース500Yからデータを抽出させる。
データベース管理装置400Yは、例えばCPU等のプロセッサがプログラムメモリに格納されたDBMSを実行することにより実現される。また、これらの機能部のうち一部または全部は、LSI、ASIC、またはFPGA等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。データベース管理装置400Yは、外部装置から受け付けたクエリに基づいて、データベース500Yの操作を行う。また、データベース管理装置400Yは、データベースシステムAPI340Yから受信した要求に基づいて、データベース500Yからデータを抽出し、抽出したデータをデータベースシステムAPI340Yに返信する。
データベース500Yは、テーブルを格納する。テーブルは、各行に付加される識別情報としてのrowidYに、レコードを対応付けた情報である。rowidYは、データベースシステムYに格納されたレコードを一意に特定する情報である。レコードは、一又は複数の列に対応付けられたデータを含む。これにより、各データは、一つのrowidYに対応付けられる。
以下、データベースシステムXおよびデータベースシステムYにおいて行われる結合処理の概要を説明する。図3は、実施形態における結合処理の概要を表す図である。データベース統合サーバ200に下記のSELECT文が受け付けられたものとする。
SELECT*FROM X, Y WHERE x1=y1
SELECT文におけるSELECT節以下の「*」は結合対象のデータを指定する情報であり、FROM節以下の「X,Y」は結合対象のデータを抽出するデータベースを指定する情報であり、WHERE節以下の「x1=y1」は結合対象のデータを結合する条件を指定する情報である。すなわち、このSELECT文は、テーブルXおよびテーブルYにおける列の値が等しいという条件を満たすデータ同士を結合することを要求するクエリである。
データベースシステム側計画実行部320Xは、データベース500XからテーブルXを抽出する。テーブルXは、rowidX「1」、「2」、および「3」にそれぞれ対応付けられた各レコードに一つのデータを含む。ハッシュ表作成部330Xは、テーブルXに含まれるデータをハッシュ値に変換する。これにより、ハッシュ表作成部330Xは、データ「AAAAA」をハッシュ値「4」に変換し、データ「BBBBB」をハッシュ値「1」に変換し、データ「CCCCC」をハッシュ値「3」に変換する。ハッシュ表作成部330Xは、ハッシュ値を添え字とした配列を表すハッシュ表を作成する。
一方、データベースシステム側計画実行部320Yは、データベース500YからテーブルYを抽出する。テーブルYは、rowidY「1」、「2」、「3」、および「4」にそれぞれ対応付けられた各レコードに一つのデータを含む。ハッシュ表作成部330Yは、テーブルYに含まれるデータをハッシュ値に変換する。これにより、ハッシュ表作成部330Yは、データ「CCCCC」をハッシュ値「3」に変換し、データ「AAAAA」をハッシュ値「4」に変換し、データ「BBBBB」をハッシュ値「1」に変換し、データ「DDDDD」をハッシュ値「5」に変換する。ハッシュ表作成部330Yは、ハッシュ値「3」にrowidX「1」を対応付け、ハッシュ値「4」をrowidX「2」に対応付け、ハッシュ値「1」をrowidX「3」に対応付け、ハッシュ値「5」をrowidX「4」に対応付けたハッシュ結果を作成する。
データベースシステムXとデータベースシステムYとのいずれかは、ハッシュ結果に含まれるハッシュ値と、ハッシュ表に含まれるハッシュ値と照合する。データベースシステムXとデータベースシステムYとのいずれかは、一致したハッシュ値に対応するrowidXとrowidYとのペアを含む結合結果を作成する。言い換えれば、データベースシステムXとデータベースシステムYとのいずれかは、一致したハッシュ値に元となったデータに対応するrowidXとrowidYとのペアを作成する。
以下、実施形態のデータベースシステム1においてデータを結合する全体の処理について説明する。図4は、実施形態のデータベースシステム1においてデータを結合する全体の処理の流れの一例を示すフローチャートである。
まずデータベース統合サーバ200は、ユーザ端末100により送信されたクエリを受け付けたか否かを判定する(ステップS100)。なお、この判定処理は、例えば、データベース統合サーバ200において所定時間毎に繰り返して実行される。データベース統合サーバ200は、クエリを受け付けた場合、データベースシステムXおよびデータベースシステムYにそれぞれ問い合わせを行う(ステップS102)。次に、データベースシステムXおよびデータベースシステムYは、それぞれハッシュ表の作成を開始する(ステップS104)。図5は、ハッシュ表を生成する処理の概要を示す図である。データベース統合サーバ200は、略同時または2つの問い合わせを送信する処理の時間差で、クエリに基づく問い合わせをシステム連携装置300Xおよびシステム連携装置300Yに対して行う。これにより、データベースシステムXおよびデータベースシステムYは、それぞれ、抽出したデータをハッシュ値に変換する処理を非同期で行う。
次に、データベースシステム1は、データベースシステムXおよびデータベースシステムYのうちの一方でハッシュ表が完成したか否かを判定する(ステップS106)。次に、データベースシステム1は、データベースシステムXおよびデータベースシステムYのうちの一方でハッシュ表が完成したタイミングで、結合基点および結合実施点を決定する(ステップS108)。図6は、結合基点および結合実施点を決定する処理の概要を示す図である。結合処理切替部322Xは、ハッシュ表の作成が完了した場合、コスト情報をシステム連携装置300Yに送信する。コスト情報は、抽出したデータをハッシュ値に変換する処理が完了することを通知する変換完了通知の一例でもある。コスト情報は、ハッシュ表のサイズ、データベースシステムXにおける処理負荷、データベースシステムXの性能の少なくとも一つを含む。結合処理切替部322Yは、システム連携装置300Xから受信したコスト情報と、コスト情報に対応する自身の状態とを比較することで、結合基点および結合実施点を決定する。
結合基点のデータベースシステム(第1のデータベースシステム)は、データベースシステムXおよびデータベースシステムYのうち、ハッシュ表を相手側のデータベースシステムに送信する送信側装置として機能するデータベースシステムである。結合実施点のデータベースシステム(第2のデータベースシステム)は、データベースシステムXおよびデータベースシステムYのうち、相手側のデータベースシステムにより送信されたハッシュ結果におけるハッシュ値と自身が作成したハッシュ表におけるハッシュ値とを照合することで、照合結果を生成する照合側装置として機能するデータベースシステムである。
結合処理切替部322Yは、コスト情報としてハッシュ表のサイズを受信した場合において、受信したハッシュ値のサイズが、ハッシュ表作成部330Yが作成済みのハッシュ表のサイズより大きい場合には、データベースシステムXを結合実施点と決定し、データベースシステムYを結合基点と決定する。結合処理切替部322Yは、受信したハッシュ値のサイズが、ハッシュ表作成部330Yが作成済みのハッシュ表のサイズ以下である場合には、データベースシステムYを結合実施点と決定し、データベースシステムXを結合基点と決定する。ハッシュ値のサイズは、例えば、行数である。
結合処理切替部322Yは、コスト情報として処理負荷を受信した場合において、受信した処理負荷が、データベースシステムYの処理負荷より高い場合には、データベースシステムXを結合実施と決定し、データベースシステムYを結合基点と決定する。結合処理切替部322Yは、受信した処理負荷が、データベースシステムYの処理負荷と同じまたは低いである場合には、データベースシステムYを結合実施点と決定し、データベースシステムXを結合基点と決定する。処理負荷は、例えば、CPUの使用率である。
結合処理切替部322Yは、コスト情報として処理負荷を受信した場合において、受信した性能が、データベースシステムYの性能より高い場合には、データベースシステムXを結合実施点と決定し、自身を結合基点と決定する。結合処理切替部322Yは、受信した性能が、データベースシステムYの性能と同じまたは低いである場合には、自身を結合実施点と決定し、データベースシステムXを結合基点と決定する。
結合処理切替部322Yは、コスト情報として、ハッシュ値のサイズと、データベースシステムXにおける処理負荷、およびデータベースシステムXの性能を受信した場合において、ハッシュ値のサイズが小さく且つ処理負荷および性能に基づく計算能力が低い場合、またはハッシュ値のサイズが大きく且つ処理負荷および性能に基づく計算能力が高い場合、通信負荷またはCPU負荷に基づいて結合基点および結合実施点を決定する。結合処理切替部322Yは、通信負荷が重視される場合、ハッシュ値のサイズの小さい一方のデータベースシステムを結合基点と決定し、他方のデータベースシステムを結合実施点と決定する。結合処理切替部322Yは、CPU負荷が重視される場合、計算能力が高い一方のデータベースシステムを結合実施点と決定し、他方のデータベースシステムを結合基点と決定する。また、結合処理切替部322Yは、ハッシュ値のサイズが小さく且つ計算能力が高い一方のデータベースシステムを結合基点と決定し、他方のデータベースシステムを結合実施点と決定してよい。さらに、結合処理切替部322Yは、ハッシュ値のサイズが大きく且つ計算能力が低い一方のデータベースシステムを結合実施点と決定し、他方のデータベースシステムを結合基点と決定してよい。
更に、結合処理切替部322Yは、予め設定されたルールに基づいて結合基点および結合実施点を決定してよい。結合処理切替部322Yは、ハッシュ表を先に完成させた一方のデータベースシステムを結合実施点と決定し、他方のデータベースシステムを結合基点と決定してよい。この場合、ハッシュ表作成部330Xおよびハッシュ表作成部330Yは、ハッシュ表を完成させたタイミングで、相手のデータベースシステムに通知を行う。これにより、結合処理切替部322Yは、ハッシュ表を先に完成させたデータベースシステムの計算能力が高いと見なして、結合基点および結合実施点を決定できる。また、結合処理切替部322Yは、ハッシュ表を先に完成させた一方のデータベースシステムを結合基点と決定し、他方のデータベースシステムを結合実施点と決定してよい。これにより、結合処理切替部322Yは、ハッシュ表を先に完成させたデータベースシステムにおけるハッシュ値のサイズが小さいと見なして、結合基点および結合実施点を決定できる。
データベースシステム側計画実行部320Yは、結合処理切替部322Yの判断結果をデータベースシステムXに送信する。結合処理切替部322Xは、結合処理切替部322Yの判断結果に基づいて、データベースシステムXを結合基点または結合実施点に切り替える。
次に、データベースシステム1は、データベースシステムXおよびデータベースシステムYのうちの他方でハッシュ表が完成したか否かを判定する(ステップS110)。次に、データベースシステム1は、データベースシステムXおよびデータベースシステムYのうちの他方でハッシュ表が完成したタイミングで、結合実施点のデータベースシステムでハッシュ値同士を照合して、結合結果を生成する(ステップS112)。
次に、データベース統合サーバ200は、結合結果に基づいて最終結果を生成して、データベース用アプリケーション110に返信する(ステップS114)。
図7は、データベースシステムXが結合基点、データベースシステムYが結合実施点に決定された場合において、ハッシュ値を照合する処理の概要を示す図である。システム連携装置300Xは、rowidXおよびハッシュ値を含むハッシュ表をシステム連携装置300Yに送信する。システム連携装置300Yは、ハッシュ表を受信した場合、ハッシュ表作成部330Yにおけるハッシュ表の作成処理を中断する。次に、システム連携装置300Yは、ハッシュ表を生成して、生成したハッシュ表におけるハッシュ値と受信したハッシュ結果におけるハッシュ値とを照合する。なお、システム連携装置300Yは、ハッシュ表を再計算することなく、作成途中のハッシュ表をそのままハッシュ結果として使用することができる。
図8は、データベースシステムXが結合基点、データベースシステムYが結合実施点に決定された場合において、結合結果を送信する処理の概要を示す図である。システム連携装置300Yは、照合結果に基づいて、一致したハッシュ値に対応付けられたrowidXとrowidYのペア(結合結果)、および当該rowidYのレコードYを、第1中間結果としてデータベース統合サーバ200に送信する。また、システム連携装置300Yは、受信したrowidXのうち、一致したハッシュ値に対応付けられたrowidX#をデータベースシステムXに送信する。
図9は、データベースシステムXが結合基点、データベースシステムYが結合実施点に決定された場合において、最終結果を生成する処理の概要を示す図である。システム連携装置300Xは、rowidX#を受信した場合、当該rowidX#に対応するrowidXとレコードXとを第2中間結果としてデータベース統合サーバ200に送信する。サーバ側計画実行部220は、結合結果に基づいて、第1中間結果に含まれるレコードYと、第2中間結果に含まれるレコードXとを比較する。サーバ側計画実行部220は、比較結果に基づいて、最終結果を生成する。サーバ側計画実行部220は、生成した最終結果をデータベース用アプリケーション110に送信する。
図10は、データベースシステムXが結合実施点、データベースシステムYが結合基点に決定された場合において、ハッシュ値を照合する処理の概要を示す図である。システム連携装置300Yは、ハッシュ表の作成を中断し、変換済のハッシュ値およびrowidYを含む情報をシステム連携装置300Xに送信する。また、システム連携装置300Yは、データをハッシュ値に変換する度に、ハッシュ値およびrowidYをシステム連携装置300Xに送信する。なお、システム連携装置300Yは、ハッシュ表を再計算することなく、作成途中のハッシュ表をそのままハッシュ結果として使用することができる。システム連携装置300Yは、ハッシュ表の作成を中断せず、ハッシュ表の作成と情報の送信とを並列して処理してもよい。また、システム連携装置300Yは、ハッシュ値を都度送信せずに、纏めて送信してもよい。
システム連携装置300Xは、ハッシュ値およびrowidYを受信した場合、既に作成したハッシュ表におけるハッシュ値と、受信したハッシュ値とを照合することで結合結果を生成する。また、システム連携装置300Xは、システム連携装置300Yからハッシュ値およびrowidYを受信する度に、一致したハッシュ値のrowidのペアを結合結果に追加する。
図11は、データベースシステムXが結実施基点、データベースシステムYが結合基点に決定された場合において、結合結果を送信する処理の概要を示す図である。システム連携装置300Xは、照合結果に基づいて、一致したハッシュ値に対応付けられたrowidXとrowidYのペア(結合結果)、および当該rowidXのレコードXを、第1中間結果としてデータベース統合サーバ200に送信する。また、システム連携装置300Xは、受信したrowidYのうち、一致したハッシュ値に対応付けられたrowidY#をデータベースシステムYに送信する。
図12は、データベースシステムXが結合実施点、データベースシステムYが結合基点に決定された場合において、最終結果を生成する処理の概要を示す図である。システム連携装置300Yは、rowidY#を受信した場合、当該rowidY#に対応するrowidYとレコードYとを第2中間結果としてデータベース統合サーバ200に送信する。サーバ側計画実行部220は、結合結果に基づいて、第1中間結果に含まれるレコードXと、第2中間結果に含まれるレコードYとを比較する。サーバ側計画実行部220は、比較結果に基づいて、最終結果を生成する。サーバ側計画実行部220は、生成した最終結果をデータベース用アプリケーション110に送信する。
以下、データベース統合サーバ200、およびデータベースシステムにおける内部処理について説明する。図13は、実施形態のデータベース統合サーバ200における内部処理の流れの一例を示すフローチャートである。なお、図13に示したフローチャートの処理は、例えば、データベース統合サーバ200において所定時間毎に繰り返して実行される。
まず、データベース統合サーバ200は、ユーザ端末100からクエリを受け付けたか否かを判定する(ステップS200)。データベース統合サーバ200は、クエリを受け付けた場合、実行計画を作成し、各データベースシステムに問い合わせを行う(ステップS202)。なお、データベース統合サーバ200は、クエリを受け付けていない場合、本フローチャートの処理を終了する。
次に、データベース統合サーバ200は、結合実施点のデータベースシステムから第1中間結果を受信する(ステップS204)。次に、データベース統合サーバ200は、結合基点のデータベースシステムから第2中間結果を受信する(ステップS206)。次に、データベース統合サーバ200は、結合結果におけるいずれかの行を指定するカーソルAを作成し、カーソルAを初期化する(ステップS208)。結合結果における各行には、rowidのペアが1つ含まれる。カーソルAを初期化することで、カーソルAは結合結果の先頭の行を指す。
次に、データベース統合サーバ200は、カーソルAが末尾であるか否かを判定する(ステップS210)。データベース統合サーバ200は、カーソルAが末尾ではない場合、カーソルAが指すrowidのペアに対応する第1中間結果のレコードと第2中間結果のレコードとを比較し(ステップS212)、レコードが一致したか否かを判定する(ステップS214)。データベース統合サーバ200は、第1中間結果のレコードと第2中間結果のレコードとが一致した場合、第1中間結果のレコードと第2中間結果のレコードとのペアを最終結果として記録する(ステップS216)。次に、データベース統合サーバ200は、カーソルAを一つ移動して(ステップS218)、処理をステップS210に戻す。
データベース統合サーバ200は、第1中間結果のレコードと第2中間結果のレコードとが一致しない場合、第1中間結果のレコードと第2中間結果のレコードを最終結果として記録しない。これにより、データベース統合サーバ200は、ハッシュ衝突により一致したハッシュ値を計算した元となったレコードが最終結果に含まれることを回避する。
データベース統合サーバ200は、カーソルAの値が末尾である場合、最終結果をデータベース用アプリケーション110に送信する(ステップS220)。
図14は、実施形態のシステム連携装置における内部処理の流れの一例を示すフローチャートである。図14に示したフローチャートの処理は、例えば、データベース統合サーバにおいて所定時間毎に繰り返して実行される。なお、上述した実施形態は、複数のデータベースシステムXおよびYにおけるシステム連携装置300Xとシステム連携装置300Yとを分けて説明したが、以下におけるシステム連携装置300の処理の説明はシステム連携装置300Xとシステム連携装置300Yとで共通する処理を説明するので、システム連携装置300Xおよびシステム連携装置300Yを総称して「システム連携装置300」と記載する。
まず、システム連携装置300は、データベース統合サーバ200から問い合わせを受信し(ステップS300)、問い合わせに基づいて結合対象列(データ)を取得する(ステップS301)。このとき、システム連携装置300は、結合対象列に対応付けられたrowidも取得する。次にシステム連携装置300は、取得した結合対象列に対するカーソルBを作成して初期化する(ステップS302)。システム連携装置300は、カーソルBが末尾であるか否かを判定する(ステップS210)。
システム連携装置300は、カーソルBが末尾ではない場合、カーソルBが指すデータからハッシュ値を計算し(ステップS306)、ハッシュ表に追加する(ステップS308)。次にシステム連携装置300は、カーソルBを一つ移動する(ステップS310)。次にシステム連携装置300は、相手のデータベースシステムからコスト情報を受信したか否かを判定する(ステップS312)。
システム連携装置300は、相手のデータベースシステムからコスト情報を受信していない場合、ステップS304に処理を戻す。システム連携装置300は、カーソルBが末尾である場合、コスト情報を相手のデータベースシステムに送信する(ステップS314)。その後、システム連携装置300は、相手のデータベースシステムにより送信された判断結果を受信する(ステップS316)。その後、システム連携装置300は、図15に示すフローチャートの処理に移行する。
システム連携装置300は、相手のデータベースシステムからコスト情報を受信した場合、結合基点および結合実施点を決定し(ステップS318)、判断結果を相手のデータベースシステムに送信する(ステップS320)。その後、システム連携装置300は、図16に示すフローチャートの処理に移行する。
図15は、相手のデータベースシステムよりも先にハッシュ表の作成が完了したデータベースシステムにおけるシステム連携装置300の処理の流れの一例を示すフローチャートである。まず、システム連携装置300は、受信した判断結果に基づいて、自身が結合基点か否かを判定する(ステップS402)。システム連携装置300は、自身が結合基点である場合、ハッシュ表を相手のデータベースシステムに送信する(ステップS404)。その後、システム連携装置300は、相手のデータベースシステムから自身のrowid#を受信する(ステップS406)。rowid#は、自身のデータベースに格納されたデータのうち、相手のデータベースシステムにおけるデータベースに格納されたデータと一致したデータに対応するrowidである。次にシステム連携装置300は、rowid#に基づいてレコードを抽出することで第2中間結果を作成して、データベース統合サーバ200に送信する(ステップS408)。
システム連携装置300は、自身が結合実施点である場合、ハッシュ表の受信が完了したか否かを判定する(ステップS410)。システム連携装置300は、ハッシュ表の受信が完了していない場合、相手のデータベースシステムにより都度送信されたハッシュ表を受信し、受信したハッシュ表に対してカーソルCを作成する(ステップS412)。次にシステム連携装置300は、カーソルCが末尾であるか否かを判定する(ステップS210)。
システム連携装置300は、カーソルCが末尾である場合、処理をステップS410に戻す。システム連携装置300は、カーソルCが末尾ではない場合、カーソルCが指すハッシュ値を、自身のハッシュ表作成部が作成したハッシュ表から探索する(ステップS416)。システム連携装置300は、ハッシュ値が一致したか否かを判定する(ステップS418)。システム連携装置300は、ハッシュ値が一致した場合、rowidのペア、および自身のrowidに対応するレコードを、記憶部(不図示)に記録する(ステップS420)。次にシステム連携装置300は、カーソルCを一つ移動して(ステップS422)、処理をステップS414に戻す。
システム連携装置300は、ハッシュ表の受信が完了した場合、一致したハッシュ値に対応する相手のデータベースシステムのrowid#を、相手のデータベースシステムに送信する(ステップS424)。次にシステム連携装置300は、一致したハッシュ値のrowidのペア(結合結果)、および自身のレコードを含む第1中間結果をデータベース統合サーバ200に送信する(ステップS426)。これにより、先にハッシュ表の作成が完了したデータベースシステムにおけるシステム連携装置300の処理は終了する。
図16は、相手のデータベースシステムからコスト情報を受信したデータベースシステムにおけるシステム連携装置300の処理の流れの一例を示すフローチャートである。まず、システム連携装置300は、判断結果に基づいて、自身が結合基点か否かを判定する(ステップS500)。システム連携装置300は、自身が結合基点ではない場合、図17の処理に移行する。システム連携装置300は、自身が結合基点である場合、作成途中のハッシュ表を用いて、ハッシュ値およびrowidを相手のデータベースシステムに送信する(ステップS502)。
次にシステム連携装置300は、結合対象列に対するカーソルBが末尾であるか否かを判定する(ステップS504)。システム連携装置300は、カーソルBが末尾ではない場合、カーソルBが指す行のハッシュ値を計算し、ハッシュ結果を生成する(ステップS506)。次にシステム連携装置300は、生成したハッシュ結果を相手のデータベースシステムに送信し(ステップS508)、カーソルBを一つ移動させて(ステップS510)、処理をステップS504に戻す。
システム連携装置300は、カーソルBが末尾である場合、相手のデータベースシステムからrowid#を受信し(ステップS512)、第2中間結果をデータベース統合サーバ200に送信する(ステップS514)。これにより、相手のデータベースシステムからコスト情報を受信した結合基点のデータベースシステムにおけるシステム連携装置300の処理は終了する。
図17は、相手のデータベースシステムからコスト情報を受信したデータベースシステムにおけるシステム連携装置300の処理の流れの他の一例を示すフローチャートである。システム連携装置300は、判断結果により自身が結合実施点であると判定し(ステップS600)、相手のデータベースシステムからハッシュ表を受信する(ステップS602)。次にシステム連携装置300は、作成途中のハッシュ表に対するカーソルCを作成し、カーソルCを初期化する(ステップS604)。
次にシステム連携装置300は、カーソルCは末尾であるか否かを判定する(ステップS606)。システム連携装置300は、カーソルCが末尾ではない場合、カーソルCが指す行のハッシュ値を、受信したハッシュ表から探索する(ステップS608)。システム連携装置300は、ハッシュ値が一致したか否かを判定する(ステップS610)。システム連携装置300は、ハッシュ値が一致した場合、結合結果(rowidのペア)、および自身のrowidに対応するレコードを、第1中間結果に追加する。(ステップS612)。次にシステム連携装置300は、カーソルCを一つ移動して(ステップS614)、処理をステップS606に戻す。これにより、システム連携装置300は、既にハッシュ値が計算済の行に対してハッシュ値を結合する処理を行う。
システム連携装置300は、カーソルCが末尾である場合、カーソルBが末尾であるか否かを判定する(ステップS616)。システム連携装置300は、カーソルBが末尾ではない場合、カーソルBが指す行のハッシュ値を計算し(ステップS618)、計算したハッシュ値を、受信したハッシュ表から探索する(ステップS620)。次にシステム連携装置300は、ハッシュ値が一致したか否かを判定する(ステップS622)。システム連携装置300は、ハッシュ値が一致した場合、結合結果(rowidのペア)、および自身のrowidに対応するレコードを、第1中間結果に追加する。(ステップS624)。次にシステム連携装置300は、カーソルBを一つ移動して(ステップS626)、処理をステップS616に戻す。これにより、システム連携装置300は、ハッシュ値が未計算の行に対してハッシュ値を結合する処理を行う。
システム連携装置300は、カーソルBが末尾である場合、一致したハッシュ値に対応する相手のデータベースシステムのrowid#を、相手のデータベースシステムに送信する(ステップS628)。次にシステム連携装置300は、一致したハッシュ値のrowidのペア(結合結果)、および自身のレコードを含む第1中間結果をデータベース統合サーバ200に送信する(ステップS630)。これにより、相手のデータベースシステムからコスト情報を受信した結合実施点のデータベースシステムにおけるシステム連携装置300の処理は終了する。
以下、実施例について説明する。データベース統合サーバ200は、下記のSELECT文のクエリを受信したものとする。
SELECT VALUE_X, VALUE_Y FROM X, Y WHERE X.dataID=Y.dataID
このSELECT文は、データベース500Xに含まれるテーブルXに格納されたデータIDと、データベース500Yに含まれるテーブルYに格納されたデータIDとが同じという条件を満たすバリューXとバリューYとを結合した結果を要求する情報である。例えば、データIDは氏名であり、バリューXは会社住所であり、バリューYは自宅住所である。
図18は、データベースからデータを抽出したデータからハッシュ値する処理の実施例を示す図である。データベース統合サーバ200は、データベースシステムXおよびデータベースシステムYにクエリに基づく問い合わせを行うことで、データベースシステムXおよびデータベースシステムYにハッシュ値の計算を開始させる。データベースシステムXは、図18の左図に示すように、データベース統合サーバ200が受け付けたクエリに基づく問い合わせに応じて、データベース500Xからテーブル502Xを抽出する。データベースシステムXは、データIDからハッシュ値を3行分計算し、計算したハッシュ値にrowidXを対応付けたハッシュ表332Xを作成する。同様に、データベースシステムYは、図18の右図に示すように、データベース統合サーバ200が受け付けたクエリに基づく問い合わせに応じて、データベース500Yからテーブル502Yを抽出する。データベースシステムYは、データIDからハッシュ値を4行分計算し、計算したハッシュ値にrowidYを対応付けたハッシュ表332Yを作成する。
図19は、結合基点および結合実施点を決定する処理の実施例を示す図である。データベースシステムXは、3行分のハッシュ値を計算することでテーブルXについてのハッシュ値の計算を完了し、「3行」のハッシュ表サイズを表すコスト情報をデータベースシステムYに送信する。データベースシステムYは、コスト情報を受信した時点における計算済の行数が4行であるので、ハッシュ表のサイズが小さいデータベースシステムXを結合基点、データベースシステムYを結合実施点と決定する。データベースシステムYは、判断結果として「データベースシステムXが結合基点」という情報をデータベースシステムXに送信する。
図20は、結合基点および結合実施点を決定する処理の実施例を示す図である。データベースシステムXは、判断結果を受信したことに応じて、データベースシステムYにハッシュ表332Xを転送する。
図21および図22は、ハッシュ値を照合する処理の実施例を示す図である。データベースシステムYは、作成途中のハッシュ表332Yをハッシュ結果332Y#とみなしてハッシュ値の照合を開始する。データベースシステムYは、図21に示すように、ハッシュ表332Xに含まれるハッシュ値と、ハッシュ結果332Y#に含まれるハッシュ値とを照合し、一致したハッシュ値に対応付けられたrowidXとrowidYのペアを結合結果324に追加する。データベースシステムYは、図22に示すように、ハッシュ値が計算されていないデータIDからハッシュ値を計算して、計算したハッシュ値がハッシュ表332Xに含まれるハッシュ値と一致しているか否かを判定する。データベースシステムYは、データIDが「06」のハッシュ値がハッシュ表332Xの「6」のハッシュ値と一致したことを判定し、rowidX「3」とrowidY「6」のペアを結合結果324#に追加する。
図23は、中間結果および最終結果を生成する処理の実施例を示す図である。データベースシステムYは、結合結果324#の作成を完了したことに応じて、結合結果328−1aおよびレコード328−1bを含む第1中間結果328−1をデータベース統合サーバ200に送信する宇。また、データベースシステムYは、rowidX#をデータベースシステムXに送信する。データベースシステムXは、受信した一連のrowidXの情報326を受信する。データベースシステムXは、rowidX#を受信したことに応じて、rowidX#に対応するrowidXとレコードとを含む第2中間結果328−2をデータベース統合サーバ200に送信する。
データベース統合サーバ200は、結合結果328−1aを参照し、ペアになっているrowidXとrowidYに対応するデータIDを、レコード328−1bおよび第2中間結果328−2からそれぞれ抽出して、抽出したデータID同士を照合する。データベース統合サーバ200は、データIDが一致した場合、データIDに対応するバリューXおよびバリューYをペアにして最終結果222に追加する。データベース統合サーバ200は、結合結果328−1aに含まれる全てのペアについて照合を行ったことに応じて、最終結果222をデータベース用アプリケーション110に送信する。
以上説明した実施形態のデータベースシステム1は、データベース用アプリケーション110からクエリを受け付けた場合に、データベース統合サーバ200から複数のデータベースシステムに問い合わせを行うので、問い合わせを受け付けたデータベースシステムにおいて結合対象のデータからハッシュ値を計算する処理を開始することができる。すなわち、問い合わせを受け付けた複数のデータサーバは、それぞれ、抽出したデータをハッシュ値に変換する処理を非同期で、並行して行う。これにより、データベースシステム1によれば、異なるデータベースシステム間におけるデータ同士の結合処理をより高速に実行することができる。
データベースシステム1によれば、問い合わせを受け付けた複数のデータベースシステムからデータベース統合サーバ200に転送するデータを、ハッシュ値が一致したデータに限定することができるので、データの転送する負荷を抑制することができる。さらに、データベースシステム1によれば、問い合わせを受け付けた複数のデータベースシステム間でハッシュ値を送受信するので、データの転送量を抑制することができる。
データベースシステム1によれば、データベース統合サーバ200が処理することなしに、問い合わせを受け付けた複数のデータベースシステムを、結合基点と結合実施点との間で動的に切り替えることができる。すなわち、データベースシステム1によれば、予めデータベース統合サーバ200により複数のデータベースシステムにおいて記録されたテーブルのサイズなどを認識していなくても、結合基点および結合実施点を設定することができる。
データベースシステム1によれば、ハッシュ表サイズが大きいデータベースシステムを結合実施点に切り替えることで、データベースシステム間のデータ転送量を抑制することができる。また、データベースシステム1によれば、計算能力が高いデータベースシステムを結合実施点に切り替えることでハッシュ値の照合処理をより短時間で完了することができる。さらに、データベースシステム1によれば、通信負荷またはCPU負荷のいずれかを重視するかによって、データベースシステムを結合基点にするか結合実施点にするかを切り替えることができる。さらに、データベースシステム1によれば、予め設定されたルールに基づいてデータベースシステムを結合基点にするか結合実施点にするかを切り替えることができ、結合基点にするか結合実施点にするかを決定する調停に要する処理および時間を抑制することができる。
以上説明した少なくともひとつの実施形態によれば、複数のデータベースシステム(X,Yを含む。)と、ユーザ端末100から複数のデータを結合する要求を受け付けた場合に、要求に基づいて、複数のデータベースシステムの一部または全部である複数のデータベースシステムX,Yに問い合わせを行うデータベース統合サーバ200と、を持ち、データベース統合サーバ200から問い合わせを受け付けたデータベースシステムX,Yのそれぞれは、受け付けた問い合わせに基づいてデータベース500X、500Yからデータを抽出し、抽出したデータをハッシュ値に変換し、データベース統合サーバ200から問い合わせを受け付けたデータベースシステムX,Yのうち第1のデータベースシステムは、変換したハッシュ値を、データベース統合サーバ200から問い合わせを受け付けたデータベースシステムX,Yのうち第2のデータベースシステムに送信し、第2のデータベースシステムは、第1のデータベースシステムから受信したハッシュ値と、自身が変換したハッシュ値とを照合し、照合結果、および一致したハッシュ値の元となったデータをデータベース統合サーバ200に送信すると共に、第1のデータベースシステムから受信したハッシュ値のうち、一致したハッシュ値に対応する情報を第1のデータベースシステムに送信し、第1のデータベースシステムは、第2のデータベースシステムから受信した、一致したハッシュ値に対応する情報に基づいて、一致したハッシュ値の元となったデータをデータベース統合サーバ200に送信し、データベース統合サーバ200は、照合結果に基づいて、第1のデータベースシステムおよび第2のデータベースシステムからそれぞれ受信したデータ同士を結合することにより、クライアントから受け付けたクエリに応じて第1および第2のデータベースシステムX,Yにおいてハッシュ値を計算する処理を開始することができる。これにより、少なくともひとつの実施形態によれば、異なるデータベースシステム間におけるデータ同士の結合処理を、より高速に実行することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
上述した実施形態は、2つのデータベースシステムX,Yにおけるデータベースから抽出したデータ同士を結合することを説明したが、これに限定されず、2より多いデータベースシステムから抽出したデータ同士を結合してよい。3以上のデータを結合する場合、まず、2つのデータベースシステムから抽出したデータ同士を結合し、次に、他のデータベースシステムから抽出したデータ同士を結合する。
1…データベースシステム、100…ユーザ端末、110…データベース用アプリケーション、200…データベース統合サーバ、210…計画生成部、220…サーバ側計画実行部、230…サーバ側通信部、300…システム連携装置、300X、300Y…システム連携装置、310X、310Y…データベースシステム側通信部、320X、320Y…データベースシステム側計画実行部、322X、322Y…結合処理切替部、330X、330Y…ハッシュ表作成部、400X、400Y…データベース管理装置、500X、500Y…データベース

Claims (8)

  1. データベースを管理する複数のデータベースシステムと、
    クライアントから複数のデータを結合する要求を受け付けた場合に、前記要求に基づいて、前記複数のデータベースシステムの一部または全部である二つのデータベースシステムに問い合わせを行う統合サーバと、を備え、
    前記統合サーバから問い合わせを受け付けた二つのデータベースシステムのそれぞれは、前記受け付けた問い合わせに基づいて前記データベースからデータを抽出し、抽出したデータをハッシュ値に変換し、
    前記統合サーバから問い合わせを受け付けた二つのデータベースシステムのそれぞれは、前記抽出したデータをハッシュ値に変換する処理が完了したタイミングで、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに変換完了通知を送信し、
    前記変換完了通知を受信したデータベースシステムは、前記変換完了通知を受け付けたタイミングに基づいて、自身が第1のデータベースシステムとして動作するか、第2のデータベースシステムとして動作するかを決定し、決定した情報を、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに送信し、
    前記第1のデータベースシステムは、前記変換したハッシュ値を、前記統合サーバから問い合わせを受け付けたデータベースシステムのうち第2のデータベースシステムに送信し、
    前記第2のデータベースシステムは、前記第1のデータベースシステムから受信したハッシュ値と、自身が変換したハッシュ値とを照合し、照合結果、および一致したハッシュ値の元となったデータを前記統合サーバに送信すると共に、前記第1のデータベースシステムから受信したハッシュ値のうち、一致したハッシュ値に対応する情報を前記第1のデータベースシステムに送信し、
    前記第1のデータベースシステムは、前記第2のデータベースシステムから受信した前記一致したハッシュ値に対応する情報に基づいて、一致したハッシュ値の元となったデータを前記統合サーバに送信し、
    前記統合サーバは、前記照合結果に基づいて、前記前記第1のデータベースシステムおよび前記第2のデータベースシステムからそれぞれ受信したデータ同士を結合する、
    データベースシステム。
  2. 前記第1および第2のデータベースシステムは、それぞれ、前記抽出したデータをハッシュ値に変換する処理を非同期で行う、
    請求項1に記載のデータベースシステム。
  3. 前記統合サーバから問い合わせを受け付けたデータベースシステムのそれぞれは、前記抽出したデータをハッシュ値に変換する処理が完了した場合に、前記統合サーバから受け付けた問い合わせに基づいて抽出したデータのデータ量に基づく情報を、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに送信し、
    前記統合サーバから問い合わせを受け付けた他のデータベースシステムは、更に、前記データ量に基づく情報と、自身で抽出したデータ量に基づく情報とを比較し、比較結果に基づいて、自身が前記第1のデータベースシステムとして動作するか、前記第2のデータベースシステムとして動作するかを決定する、
    請求項1または2に記載のデータベースシステム。
  4. 前記統合サーバから問い合わせを受け付けたデータベースシステムのそれぞれは、前記抽出したデータをハッシュ値に変換する処理が完了した場合に、自装置の能力を表す情報を、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに送信し、
    前記統合サーバから問い合わせを受け付けた他のデータベースシステムは、更に、受信した前記能力を表す情報と、自装置における能力とを比較し、比較結果に基づいて、自身が前記第1のデータベースシステムとして動作するか、前記第2のデータベースシステムとして動作するかを決定する、
    請求項1または2に記載のデータベースシステム。
  5. 統合サーバが、クライアントから複数のデータを結合する要求を受け付け、
    前記統合サーバが、前記要求に基づいて前記複数のデータベースシステムの一部または全部である二つのデータベースシステムに問い合わせを行い、
    前記統合サーバから問い合わせを受け付けた二つのデータベースシステムのそれぞれが、受け付けた問い合わせに基づいてデータベースからデータを抽出し、抽出したデータをハッシュ値に変換し、
    前記統合サーバから問い合わせを受け付けた二つのデータベースシステムのそれぞれが、前記抽出したデータをハッシュ値に変換する処理が完了したタイミングで、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに変換完了通知を送信し、
    前記変換完了通知を受信したデータベースシステムが、前記変換完了通知を受け付けたタイミングに基づいて、自身が第1のデータベースシステムとして動作するか、第2のデータベースシステムとして動作するかを決定し、決定した情報を、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに送信し、
    前記第1のデータベースシステムが、変換したハッシュ値を、前記統合サーバから問い合わせを受け付けたデータベースシステムのうち第2のデータベースシステムに送信し、
    前記第2のデータベースシステムが、前記第1のデータベースシステムから受信したハッシュ値と、自身が変換したハッシュ値とを照合し、照合結果、および一致したハッシュ値の元となったデータを前記統合サーバに送信すると共に、前記第1のデータベースシステムから受信したハッシュ値のうち、一致したハッシュ値に対応する情報を前記第1のデータベースシステムに送信し、
    前記第1のデータベースシステムが、前記第2のデータベースシステムから受信した前記一致したハッシュ値に対応する情報に基づいて、一致したハッシュ値の元となったデータを前記統合サーバに送信し、
    前記統合サーバが、前記照合結果に基づいて、前記第1のデータベースシステムおよび前記第2のデータベースシステムからそれぞれ受信したデータ同士を結合する、
    データ結合方法。
  6. データベースと、
    データを結合する統合サーバ、および自装置とは異なる他のデータベースシステムと通信を行う通信部と、
    前記通信部を用いて、前記統合サーバから、複数のデータを結合する要求に基づく問い合わせを受け付ける受付部と、
    受け付けた問い合わせに基づいて前記データベースからデータを抽出する抽出部と、
    前記抽出部により抽出されたデータをハッシュ値に変換し、前記抽出されたデータをハッシュ値に変換する処理が完了したタイミングで、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに変換完了通知を送信する変換部と、
    前記通信部を用いて、前記統合サーバから問い合わせを受け付けた他のデータベースシステムから前記変換完了通知を受け付けたタイミングに基づいて、自装置が変換したハッシュ値を前記統合サーバから問い合わせを受け付けた他のデータベースシステムに送信する基点側装置と、前記統合サーバから問い合わせを受け付けた他のデータベースシステムが変換したハッシュ値と自装置が変換したハッシュ値とを照合する実施側装置との間で自装置を切り替える切替部と、
    前記切替部により自装置が実施側装置に切り替えられた場合に、前記通信部を用いて基点側装置のデータベースシステムからハッシュ値を受信し、前記変換部により変換されたハッシュ値と受信したハッシュ値とを照合し、照合結果、および一致したハッシュ値の元となったデータを前記統合サーバに送信すると共に、受信したハッシュ値のうち、一致したハッシュ値に対応する情報を前記基点側装置のデータベースシステムに送信し、
    前記切替部により自装置が基点側装置に切り替えられた場合に、前記変換部により変換されたハッシュ値を、前記通信部を用いて実施側装置のデータベースシステムに送信し、前記実施側装置のデータベースシステムから受信した、一致したハッシュ値に対応する情報に基づいて前記抽出部により抽出されたデータを、前記通信部を用いて前記統合サーバに送信する、実行部と、
    を備える、データベースシステム。
  7. データベースシステムが、
    データを結合する統合サーバから、複数のデータを結合する要求に基づく問い合わせを受け付け、
    受け付けた問い合わせに基づいて、データベースからデータを抽出し、
    抽出したデータをハッシュ値に変換し、前記抽出したデータをハッシュ値に変換する処理が完了したタイミングで、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに変換完了通知を送信し、
    前記統合サーバから問い合わせを受け付けた他のデータベースシステムから前記変換完了通知を受け付けたタイミングに基づいて、自装置が変換したハッシュ値を、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに送信する基点側装置と、前記統合サーバから問い合わせを受け付けた他のデータベースシステムが変換したハッシュ値と自装置が変換したハッシュ値とを照合する実施側装置との間で自装置を切り替え、
    自装置を実施側装置に切り替えた場合に、基点側装置のデータベースシステムからハッシュ値を受信し、自装置で変換したハッシュ値と受信したハッシュ値とを照合し、照合結果、および一致したハッシュ値の元となったデータを前記統合サーバに送信すると共に、受信したハッシュ値のうち、一致したハッシュ値に対応する情報を前記基点側装置のデータベースシステムに送信し、
    自装置を基点側装置に切り替えた場合に、自装置で変換したハッシュ値を、実施側装置のデータベースシステムに送信し、前記実施側装置のデータベースシステムから受信した、一致したハッシュ値に対応する情報に基づいて抽出したデータを、前記統合サーバに送信する、
    データベースシステム連携方法。
  8. コンピュータに、
    データを結合する統合サーバから、複数のデータを結合する要求に基づく問い合わせを受け付けさせ、
    受け付けた問い合わせに基づいて、データベースからデータを抽出させ、
    抽出したデータをハッシュ値に変換させ、前記抽出したデータをハッシュ値に変換する処理が完了したタイミングで、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに変換完了通知を送信させ、
    前記統合サーバから問い合わせを受け付けた他のデータベースシステムから前記変換完了通知を受け付けたタイミングに基づいて、自装置が変換したハッシュ値を、前記統合サーバから問い合わせを受け付けた他のデータベースシステムに送信する基点側装置と、前記統合サーバから問い合わせを受け付けた他のデータベースシステムが変換したハッシュ値と自装置が変換したハッシュ値とを照合する実施側装置との間で自装置を切り替えさせ、
    自装置を実施側装置に切り替えさせた場合に、基点側装置のデータベースシステムからハッシュ値を受信させ、自装置で変換させたハッシュ値と受信させたハッシュ値とを照合させ、照合結果、および一致したハッシュ値の元となったデータを前記統合サーバに送信させると共に、受信させたハッシュ値のうち、一致したハッシュ値に対応する情報を前記基点側装置のデータベースシステムに送信させ、
    自装置を基点側装置に切り替えさせた場合に、自装置で変換させたハッシュ値を、実施側装置のデータベースシステムに送信させ、実施側装置のデータベースシステムから受信させた、一致したハッシュ値に対応する情報に基づいて抽出させたデータを、前記統合サーバに送信させる、
    データベースシステム連携プログラム。
JP2016137743A 2016-07-12 2016-07-12 データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラム Active JP6253725B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016137743A JP6253725B1 (ja) 2016-07-12 2016-07-12 データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラム
US15/630,358 US20180018385A1 (en) 2016-07-12 2017-06-22 System, data combining method, integration server, data combining program, database system ,database system cooperation method, and database system cooperation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016137743A JP6253725B1 (ja) 2016-07-12 2016-07-12 データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラム

Publications (2)

Publication Number Publication Date
JP6253725B1 true JP6253725B1 (ja) 2017-12-27
JP2018010424A JP2018010424A (ja) 2018-01-18

Family

ID=60860128

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016137743A Active JP6253725B1 (ja) 2016-07-12 2016-07-12 データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラム

Country Status (2)

Country Link
US (1) US20180018385A1 (ja)
JP (1) JP6253725B1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7434088B2 (ja) 2020-07-07 2024-02-20 株式会社東芝 分散処理システム、分散処理装置、データベース管理装置及び方法
KR20240003313A (ko) * 2022-06-30 2024-01-08 쿠팡 주식회사 데이터 제공 방법 및 그 장치
JP7493087B1 (ja) 2023-11-30 2024-05-30 Kddi株式会社 情報処理装置及び情報処理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62211727A (ja) * 1986-03-13 1987-09-17 Agency Of Ind Science & Technol 分散デ−タベ−スの問合せ処理方式
JP3712791B2 (ja) * 1996-06-14 2005-11-02 株式会社日立製作所 データベース管理方法及びその情報処理装置
US7512625B2 (en) * 2005-04-01 2009-03-31 International Business Machines Corporation Method, system and program for joining source table rows with target table rows
JP5048417B2 (ja) * 2007-08-07 2012-10-17 株式会社富士通ビー・エス・シー データベース管理プログラム及びデータベース管理装置
US8260742B2 (en) * 2009-04-03 2012-09-04 International Business Machines Corporation Data synchronization and consistency across distributed repositories
JP5199949B2 (ja) * 2009-05-22 2013-05-15 日本電信電話株式会社 データベース管理方法、分散データベースシステム、およびプログラム
JP5199948B2 (ja) * 2009-05-22 2013-05-15 日本電信電話株式会社 データベース管理方法、データベース装置、およびプログラム
JP5727258B2 (ja) * 2011-02-25 2015-06-03 ウイングアーク1st株式会社 分散型データベースシステム
JP6096576B2 (ja) * 2013-04-17 2017-03-15 株式会社東芝 データベースシステム
US20150142727A1 (en) * 2013-11-18 2015-05-21 Salesforce.Com, Inc. Analytic operations for data services
JP6187251B2 (ja) * 2013-12-27 2017-08-30 富士通株式会社 データ通信方法、およびデータ通信装置
JP6299266B2 (ja) * 2014-02-20 2018-03-28 富士通株式会社 データ格納方法、ストレージシステム、プログラム及びストレージ装置
US10013443B2 (en) * 2015-06-25 2018-07-03 Bank Of America Corporation Comparing data stores using hash sums on disparate parallel systems

Also Published As

Publication number Publication date
JP2018010424A (ja) 2018-01-18
US20180018385A1 (en) 2018-01-18

Similar Documents

Publication Publication Date Title
AU2016382908B2 (en) Short link processing method, device and server
JP6253725B1 (ja) データベースシステム、データ結合方法、統合サーバ、データ結合プログラム、データベースシステム連携方法、および、データベースシステム連携プログラム
JP6967615B2 (ja) 分散型検索及びインデックスの更新方法、システム、サーバー並びにコンピューター機器
JP5741150B2 (ja) 中継装置、中継プログラム、及び中継方法
US20170132280A1 (en) Database access method and apparatus, and database system
CN107451208B (zh) 一种数据搜索方法与装置
US20190273772A1 (en) Data processing method and apparatus in service-oriented architecture system, and the service-oriented architecture system
CN107636655B (zh) 实时提供数据即服务(DaaS)的系统和方法
JP2022539283A (ja) ブロックチェーンとは異なる形式のストレージに格納されるブロックチェーンデータを検証する方法およびシステム
JP7127438B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
JP2011034323A (ja) 情報端末装置、情報検索方法、および情報検索プログラム
US20130318244A1 (en) System and method for assigning server to terminal and efficiently delivering messages to the terminal
WO2018001040A1 (zh) 业务数据提供方法、装置和计算机存储介质
WO2021109871A1 (zh) 一种媒资属性推送方法及服务器
CN115495489A (zh) 跨境物流订单轨迹查询方法、装置、终端设备和存储介质
JP5199949B2 (ja) データベース管理方法、分散データベースシステム、およびプログラム
JP2013088923A (ja) 重要クエリ抽出装置、重要クエリ抽出方法および重要クエリ抽出プログラム
CN112398893B (zh) 一种机器人处理数据的方法及机器人
CN105208068A (zh) 一种推送黄页信息的方法及黄页服务器
CN113242307B (zh) 服务请求处理方法、装置、服务器及存储介质
JP7127440B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
JP6556799B2 (ja) 検索装置、プログラム、データベースシステム、および検索方法
JP7212728B1 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP7127439B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
WO2015106420A1 (zh) 一种多维度的网络信息的存储、查询的方法和设备

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171016

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171128

R151 Written notification of patent or utility model registration

Ref document number: 6253725

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151