JP2015099416A - データベース連携装置及びデータベース連携プログラム - Google Patents
データベース連携装置及びデータベース連携プログラム Download PDFInfo
- Publication number
- JP2015099416A JP2015099416A JP2013237588A JP2013237588A JP2015099416A JP 2015099416 A JP2015099416 A JP 2015099416A JP 2013237588 A JP2013237588 A JP 2013237588A JP 2013237588 A JP2013237588 A JP 2013237588A JP 2015099416 A JP2015099416 A JP 2015099416A
- Authority
- JP
- Japan
- Prior art keywords
- data
- data type
- database
- unit
- database device
- 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.)
- Granted
Links
Images
Abstract
【解決手段】データベース連携装置100は、第1データベース装置200と第2データベース装置300とを連携させる。データベース連携装置100は、第2データベース装置300へ問合せ11を発行し、問合せ11に対する結果12を受信する。データベース連携装置100は、第1データベース装置200における第1データ型と第2データベース装置300における第2データ型との対応関係を規定した対応規則に従い、受信した結果12の第1データ型を特定する。データベース連携装置100は、受信した結果12を、特定した第1データ型で出力した出力表を生成する。
【選択図】図1
Description
表値型の関数とは、単一の値ではなく、レコードから成る集合、すなわち表を返すような関数のことである。最も単純な表値型関数の例の1つとして、表名を入力として、指定された表内の全レコードを出力するという関数が考えられる。また、ユーザ定義関数とは、DBMSが提供する機能拡張機構であり、問合せ文の中に関数呼び出しを記述することで、ユーザが定義した処理を問合せ処理の一部として実行させられる仕組みである。
具体的には、表値型のユーザ定義関数の戻り値である出力表の定義情報を、問合せ文の中に埋め込む必要があり、ユーザやアプリケーションによる問合せ文の作成負荷が増大する。ここで、出力表の定義情報とは、出力表に含まれる列の数、各列の名前、データ型、精度を含む情報である。
第1データベース装置と第2データベース装置とを連携させるデータベース連携装置であり、
前記第2データベース装置への問合せの入力を受け付ける受付部と、
前記受付部が受け付けた問合せを、前記第2データベース装置へ発行する問合せ発行部と、
前記問合せ発行部が発行した問合せに対するデータを、前記第2データベース装置から受信するデータ受信部と、
前記第1データベース装置におけるデータ型である第1データ型と前記第2データベース装置におけるデータ型である第2データ型との対応関係を規定した対応規則を記憶する対応規則記憶部と、
前記対応規則記憶部が記憶した対応規則に従い、前記データ受信部が受信したデータの前記第1データベース装置における第1データ型を特定するデータ型特定部と、
前記データ受信部が受信したデータを、前記データ型特定部が特定した第1データ型で出力した出力表を生成する出力表生成部と
を備えることを特徴とする。
図1は、表値型関数を用いたデータベース連携の方法の説明図である。図1では、表値型関数を用いて2つのDBMS(第1データベース装置と第2データベース装置)を連携するシステムの構成を示す。
データベース連携装置100は、第1データベース装置200(以下、連携元DB)で動作する表値型のユーザ定義関数によって実現される。クライアント装置400は、データベース連携装置100の呼び出しを含む問合せ文10を連携元DBに発行する。この際、データベース連携装置100である表値型関数の引数には、第2データベース装置300(以下、連携先DB)への問合せ文11が文字列として渡される。表値型関数は、連携先DBのクライアントとして動作し、問合せ文11を連携先DBへ発行する。表値型関数は、関数の戻り値として連携先DBの検索結果(結果12)を表として受け取り、連携元DBへ返す。連携元DBは、受け取った表を加工したり、連携元DB自身が持つ表と結合したりして、クライアント装置400に結果13を返す。
PostgreSQLのdblinkでは、関数dblink()の第1引数には連携先DBの名前を指定し、第2引数に連携先DBへの問合せ文11を指定する。
図2の例では、dblink()の戻り値は、text型のnameという列と、integer型のageという列との2列から成る表である。なお、AS句によって出力表の定義情報を与える記述方法はPostgreSQLのSQL構文規則によるものである。
連携元DBがOracle Database 11g Release 2(以下、Oracle(登録商標))である場合を考える。Oracle(登録商標)には、可変長文字列型としてVARCHAR2型とCLOB型を含む複数の型が用意されている。VARCHAR2型には、扱える文字列の最大長が4,000バイトという制限がある。一方で、CLOB型は、最大長制限が4GBと大幅に緩和されるが、速度性能が低下する場合があるという特徴を持つ。このように、VARCHAR2型とCLOB型には扱える文字列長と速度性能のトレードオフがあるため、ユーザは、連携先DBから返却される文字列長に応じて、本トレードオフを考慮した適切なOracle(登録商標)のデータ型を選択する必要がある。具体的には、連携先DBから返却される文字列長が4,000バイト以下と分かる場合にはVARCHAR2型を選択し、4,001バイト以上のデータが返却される可能性がある場合には、CLOB型を選択する等の判断がユーザに求められる。
データベースシステム1000は、データベース連携装置100、第1データベース装置200、第2データベース装置300、クライアント装置400を備える。図3では、データベース連携装置100は、第1データベース装置200と第2データベース装置300を連携するための装置であり、第1データベース装置200の部分装置として適用される。クライアント装置400はネットワーク500を介して第1データベース装置200と接続されている。ユーザはクライアント装置400を通して、第1データベース装置200へアクセスする。
また、受付部110は、問合せ文102以外の任意のパラメータ103を受け取ることが可能である。パラメータ103は、関数の引数として渡されても良いし、関数内部で直接取得されても良い。パラメータ103の例については後述する。
第2データベース装置300が提供するAPIとしては、例えば、ODBC(Open Database Connectivity)、JDBC(Java Database Connectivity)のようにある程度標準化されたものが良く知られるが、任意のAPIを利用可能である。
データ受信部130もまた、問合せ発行部120と同様に、第2データベース装置300が提供するAPIによって実現される。
出力表104の最も単純な例として、データ受信部130で受け取った実行結果のデータの表構造を変えずに、第1データベース装置200が備えるデータ型にキャストしただけの表を考えることができる。もう少し複雑な例としては、データベース連携装置100への入力である問合せ文102及びパラメータ103と、データ受信部130で受け取った実行結果のデータとから計算可能な値を、出力表104に含めるようなものを考えることができる。
データ型特定部160の入力として、データ受信部130で受け取った第2定義情報を用いる。あるいは、データ型特定部160の入力として、受付部110で受け取った問合せ文102を直接的に用いる。
データベース連携装置100が第1データベース装置200によって起動されると、受付部110は、問合せ文102及びパラメータ103を受け付ける(S110)。パラメータ103には複数個のパラメータが含まれてもよいし、パラメータが全く含まれなくてもよい。問合せ発行部120は、S110で受け付けた問合せ文102を第2データベース装置300へ発行する(S120)。
データ受信部130は、第2データベース装置300からS120で発行した問合せ文101の実行結果のデータに関する第2定義情報を受信する(S130)。データ型特定部160は、S130で取得した第2定義情報と、パラメータ103と、対応規則記憶部150が記憶した対応規則とに基づき、出力表104の第1定義情報を作成する(S140)。
図5は、対応規則記憶部150が記憶する対応規則の例1を示す図である。
例1は、対応する第1データベース装置200としてOracle Database 11g Release 2(以下、Oracle(登録商標))を、第2データベース装置300としてPostgreSQL9.2(以下、PostgreSQL)を想定している。
但し、これらの想定は本質ではなく、重要なのは、PostgreSQLの可変長文字列型(character varying, varchar, text)、及びバイナリ型(bytea)には、文字列長制限が無いのに対し、Oracle(登録商標)の対応するデータ型には、文字列長の制限が存在する場合があることである。具体的には、Oracle(登録商標)の可変長文字列型であるVARCHAR2型には最大長4,000バイトの制限があるが、同じく可変長文字列型であるCLOB型は最大長の制限が大幅に緩和される。しかしながら、CLOB型は速度性能の面でVARCHAR2型に劣っている。バイナリ型も同様であり、Oracle(登録商標)のRAW型には最大長2,000バイトの制限があるが、BLOB型はより大きなバイナリ列を扱える反面、速度性能の面でRAW型に劣っている。
このような対応規則を用いることで、ユーザは可変長文字列型やバイナリ列型の長さを意識して、明示的に問合せ文に記述することなく、常に最適なデータ型を選択することが可能となる。
図6は、対応規則記憶部150が記憶する対応規則の例2を示す図である。
例2は、図5に示す例1と類似しているが、データ型の選択にパラメータ103の利用を取り入れた点が異なっている。
例2では、パラメータ103として、mode(データ型特定条件の一例)というパラメータが含まれる状況を想定している。modeは、「速度優先」と「精度優先」との2値を取るパラメータである。「速度優先」が指定された場合には、速度性能が優先され、「精度優先」が指定された場合に、データの欠落が無いことが優先されるように、対応規則は設定さている。
具体的には、「速度優先」が指定された場合には、VARCHAR2やRAWなど、速度性能が有利なデータ型が選択される。もし「速度優先」が指定された場合に、VARCHAR2やRAWでは扱えない長さのデータが出現すれば、最大長以降のデータを無視するなどし、データを一部欠落させる。一方、「精度優先」が指定された場合には、データの欠落が生じない範囲で、最も速度性能が有利となるデータ型を選択する。例2では、「精度優先」が指定された際の動作は、図5に示す対応規則を用いた動作と同等となる。
図7は、対応規則記憶部150が記憶する対応規則の例3を示す図である。
例3は、第2データベース装置300から返される1つの列に対し、第1データベース装置200で複数の列を割り当てる例となっている。図7に示す例では、タイムスタンプ型とバイナリ型について、それぞれ複数列に割り当てる例を示している。
特に、備えるデータ型の種類が異なる2つのデータベース装置を連携する際にも、両者のデータ型を考慮して対応規則を設定することにより、自動的に最適なデータ型を選択するようことが可能となる。その結果、ユーザの問合せ文101の作成負荷を軽減することが可能となる。
データベース連携装置100はコンピュータであり、データベース連携装置100の各要素をプログラムで実現することができる。
データベース連携装置100のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
プログラムは、受付部110、問合せ発行部120、データ受信部130、出力表生成部140、対応規則記憶部150、データ型特定部160、出力部170として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、上記プログラムを実行する。
また、実施の形態1の説明において、「〜の受け付け」、「〜の発行」、「〜の受信」、「〜の生成」、「〜の特定」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
Claims (7)
- 第1データベース装置と第2データベース装置とを連携させるデータベース連携装置であり、
前記第2データベース装置への問合せの入力を受け付ける受付部と、
前記受付部が受け付けた問合せを、前記第2データベース装置へ発行する問合せ発行部と、
前記問合せ発行部が発行した問合せに対するデータを、前記第2データベース装置から受信するデータ受信部と、
前記第1データベース装置におけるデータ型である第1データ型と前記第2データベース装置におけるデータ型である第2データ型との対応関係を規定した対応規則を記憶する対応規則記憶部と、
前記対応規則記憶部が記憶した対応規則に従い、前記データ受信部が受信したデータの前記第1データベース装置における第1データ型を特定するデータ型特定部と、
前記データ受信部が受信したデータを、前記データ型特定部が特定した第1データ型で出力した出力表を生成する出力表生成部と
を備えることを特徴とするデータベース連携装置。 - 前記受付部は、前記第1データベース装置に対する問合せの一部として含まれる前記第2データベース装置への問合せの入力を受け付け、
前記データベース連携装置は、さらに、
前記出力表生成部が生成した出力表を前記第1データベース装置へ出力する出力部
を備えることを特徴とする請求項1に記載のデータベース連携装置。 - 前記データ受信部は、データを、そのデータの第2データ型とともに受信し、
前記データ型特定部は、前記対応規則に従い、前記データ受信部が受信した第2データ型に対応する第1データ型を特定する
ことを特徴とする請求項1又は2に記載のデータベース連携装置。 - 前記対応規則は、第2データ型に対して、データ長毎に第1データ型を対応付けており、
前記データ型特定部は、前記データ受信部が受信したデータの第2データ型及びデータ長に対応する第1データ型を特定する
ことを特徴とする請求項1から3までのいずれかに記載のデータベース連携装置。 - 前記対応規則は、第2データ型に対して、データ型特定条件毎に第1データ型を対応付けており、
前記受付部は、データ型特定条件を含む問合せの入力を受け付け、
前記データ型特定部は、前記データ受信部が受信したデータの第2データ型と、前記受付部が受け付けた問合せに含まれるデータ型特定条件とに対応する第1データ型を特定する
ことを特徴とする請求項1から3までのいずれかに記載のデータベース連携装置。 - 前記対応規則は、第2データ型に対して、複数の第1データ型を対応付けており、
前記データ型特定部は、前記データ受信部が受信したデータの第2データ型に対応する複数の第1データ型を特定し、
前記出力表生成部は、前記データ受信部が受信したデータを、前記データ型特定部が特定した各第1データ型で出力した出力表を生成する
ことを特徴とする請求項1から3までのいずれかに記載のデータベース連携装置。 - 第1データベース装置と第2データベース装置とを連携させるデータベース連携プログラムであり、
前記第2データベース装置への問合せの入力を受け付ける受付処理と、
前記受付処理で受け付けた問合せを、前記第2データベース装置へ発行する問合せ発行処理と、
前記問合せ発行処理で発行した問合せに対するデータを、前記第2データベース装置から受信するデータ受信処理と、
記憶装置に記憶された対応規則であって、前記第1データベース装置におけるデータ型である第1データ型と前記第2データベース装置におけるデータ型である第2データ型との対応関係を規定した対応規則に従い、前記データ受信処理で受信したデータの前記第1データベース装置における第1データ型を特定するデータ型特定処理と、
前記データ受信処理で受信したデータを、前記データ型特定処理で特定した第1データ型で出力した出力表を生成する出力表生成処理と
をコンピュータに実行させることを特徴とするデータベース連携プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013237588A JP6207354B2 (ja) | 2013-11-18 | 2013-11-18 | データベース連携装置及びデータベース連携プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013237588A JP6207354B2 (ja) | 2013-11-18 | 2013-11-18 | データベース連携装置及びデータベース連携プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015099416A true JP2015099416A (ja) | 2015-05-28 |
JP6207354B2 JP6207354B2 (ja) | 2017-10-04 |
Family
ID=53376008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013237588A Expired - Fee Related JP6207354B2 (ja) | 2013-11-18 | 2013-11-18 | データベース連携装置及びデータベース連携プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6207354B2 (ja) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62235653A (ja) * | 1986-04-04 | 1987-10-15 | Nec Corp | デ−タベ−ス移行方式 |
JPH0773082A (ja) * | 1993-09-01 | 1995-03-17 | Fujitsu Ltd | データ変換方法及びデータ変換装置 |
JPH1049410A (ja) * | 1996-08-07 | 1998-02-20 | Matsushita Electric Ind Co Ltd | 異種データベースアクセス装置 |
JP2002099451A (ja) * | 2000-09-26 | 2002-04-05 | Kawaju Techno Service Corp | データ連携システム及びデータ連携方法 |
JP2009116395A (ja) * | 2007-11-01 | 2009-05-28 | Mitsubishi Electric Corp | データ形式変換装置及びデータ形式変換プログラム及びデータ形式変換方法 |
JP2010015330A (ja) * | 2008-07-02 | 2010-01-21 | Hitachi Information Systems Ltd | 情報交換コンピュータシステム及び該システムの運用プログラム |
-
2013
- 2013-11-18 JP JP2013237588A patent/JP6207354B2/ja not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62235653A (ja) * | 1986-04-04 | 1987-10-15 | Nec Corp | デ−タベ−ス移行方式 |
JPH0773082A (ja) * | 1993-09-01 | 1995-03-17 | Fujitsu Ltd | データ変換方法及びデータ変換装置 |
JPH1049410A (ja) * | 1996-08-07 | 1998-02-20 | Matsushita Electric Ind Co Ltd | 異種データベースアクセス装置 |
JP2002099451A (ja) * | 2000-09-26 | 2002-04-05 | Kawaju Techno Service Corp | データ連携システム及びデータ連携方法 |
JP2009116395A (ja) * | 2007-11-01 | 2009-05-28 | Mitsubishi Electric Corp | データ形式変換装置及びデータ形式変換プログラム及びデータ形式変換方法 |
JP2010015330A (ja) * | 2008-07-02 | 2010-01-21 | Hitachi Information Systems Ltd | 情報交換コンピュータシステム及び該システムの運用プログラム |
Non-Patent Citations (1)
Title |
---|
谷田豊盛: "PostgreSQL使いこなし塾", WEB+DB PRESS, vol. 30, JPN6017029629, 15 January 2006 (2006-01-15), pages 77 - 83, ISSN: 0003615351 * |
Also Published As
Publication number | Publication date |
---|---|
JP6207354B2 (ja) | 2017-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11157560B2 (en) | System and method for managing graph data | |
US9514188B2 (en) | Integrating map-reduce into a distributed relational database | |
US9330149B2 (en) | Techniques for query and DML over relational tables using spreadsheet applications | |
EP3028183B1 (en) | A generic sql enhancement to query any semi-structured data and techniques to efficiently support such enhancements | |
US8943059B2 (en) | Systems and methods for merging source records in accordance with survivorship rules | |
US7386568B2 (en) | Techniques for partial rewrite of XPath queries in a relational database | |
JP6720641B2 (ja) | 多言語データティアのデータ制約 | |
US20200394164A1 (en) | System and method for migration of a legacy datastore | |
US20060277170A1 (en) | Digital library system | |
WO2020005937A1 (en) | Techniques for enabling and integrating in-memory semi-structered data and text document searches with in-memory columnar query processing | |
US9171036B2 (en) | Batching heterogeneous database commands | |
KR101769857B1 (ko) | 스프레드시트 인터페이스를 이용한 데이터베이스 갱신 시스템 | |
KR101899055B1 (ko) | 갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법 | |
US10157234B1 (en) | Systems and methods for transforming datasets | |
WO2019015364A1 (zh) | 执行结构化查询语言sql指令的方法和装置 | |
JP5927886B2 (ja) | クエリシステム及びコンピュータプログラム | |
US9026561B2 (en) | Automated report of broken relationships between tables | |
JP2021009724A (ja) | コンポーネントベースのソフトウェアシステムおよび開発方法 | |
US7251641B2 (en) | Adjustable database runtime kernel | |
WO2023086322A1 (en) | Late materialization of queried data in database cache | |
JP6207354B2 (ja) | データベース連携装置及びデータベース連携プログラム | |
US11093492B1 (en) | System and method of fetching data from an external program | |
US20040249792A1 (en) | Automated query file conversions upon switching database-access applications | |
CN117762975A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
Akhtar et al. | Advanced Phoenix Concepts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160930 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170727 |
|
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: 20170808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170905 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6207354 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |