JP6393193B2 - データ仮想化装置及び大規模データ処理プログラム - Google Patents
データ仮想化装置及び大規模データ処理プログラム Download PDFInfo
- Publication number
- JP6393193B2 JP6393193B2 JP2015002291A JP2015002291A JP6393193B2 JP 6393193 B2 JP6393193 B2 JP 6393193B2 JP 2015002291 A JP2015002291 A JP 2015002291A JP 2015002291 A JP2015002291 A JP 2015002291A JP 6393193 B2 JP6393193 B2 JP 6393193B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- query
- processing
- divided
- unit
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
代表的なデータ仮想化システムは、例えば特許文献1に示されるように、複数の階層的なデータベースシステムを、データマッピングにより仮想スキーマ(実際の物理テーブルをユーザに提供する論理テーブルに変換する処理を定義したもの)に統合し、クエリ実行時において処理対象となるデータを保持するデータベースシステムにクエリを分配するよう構成されている。各データベースシステムで実行されたクエリの結果は中央に収集され、仮想スキーマに従って一つに統合して結果を出力するシステムとなっている。
このような場合、OSのスワップ機構によって対応可能であると考えられるが、クエリ処理に最適化されておらず、遅延は非常に大きい。また、サイズがスワップ領域を超えてしまった場合にも、同様にエラー終了してしまうという問題がある。
データ仮想化対象となる前記データソースの論理的な結合データモデルを記憶する仮想スキーマ情報部と、
前記各データソース及び前記データ仮想化装置のリソース情報、及び、前記データソースに保管された各データに関するデータサイズ、データ属性、データ範囲を含むデータ仮想化装置が処理するデータのサイズ推定に利用可能な統計情報を記憶する統計情報部と、
前記データソースに保管された各データに対する処理を提供するエンジンのインタフェース仕様を含む前記エンジン接続に関するインタフェース仕様を含むインタフェース情報を記憶するインタフェース情報部と、
前記統合データモデルを利用してユーザが投稿したクエリを実行するためのクエリプランを生成するクエリ評価部と、
前記クエリプランと前記統計情報を利用して前記リソース容量で処理可能となるクエリプランに再構築するクエリ分割部と、
再構築したクエリプランと前記インタフェース情報を基に前記データソースに投稿する投稿クエリ及びデータ仮想化装置上で実行するクエリプランを生成するクエリ生成部と、
前記再構築したクエリプランに従って前記投稿クエリ及びデータ仮想化装置上で実行する処理を順序通りに実行するための制御を行うクエリ実行制御部と、
を備えることを特徴としている。
前記データソースに前記投稿クエリを投稿するクエリ投稿部と、
前記投稿クエリの結果を受信するデータ受信部と、
前記データ仮想化装置上で実行する処理で生成される中間データを一時的に保存する一時ストレージと、
前記データ受信部が受信したデータや前記一時ストレージに保存された中間データを利用して、前記クエリ実行制御部より指示された処理を実行し、その結果を前記一時ストレージ又は前記クライアントに送信するデータ処理部と、
を備えることを特徴としている。
前記クエリ分割部は、
前記統計情報部の各データソースの統計情報から、前記クエリ評価部で生成したクエリプランのうち、各データソースがデータ仮想化装置に対して出力するデータサイズを計算する機能と、
データ仮想化装置上での処理毎に必要な中間データサイズを計算する機能と、
前記計算の結果から、処理対象データの統計情報を利用して、前記リソース容量で実行可能なデータサイズとするためのクエリ分割数と、分割のための条件を前記クエリプランに追加する機能と、を含むことを特徴としている。
前記クエリ生成部は、
前記クエリ分割部で生成した前記クエリプランを利用して、処理毎に実行するためのクエリを抽出する機能と、
前記クエリプラン上から前記リソース容量での処理が不可であることを発見した場合に、当該処理の演算種別及び利用リソース容量に応じて分割数及び分割条件を決定し分割した、データ仮想化装置上で実行するクエリプラン及び前記投稿クエリを生成する機能と、
当該処理の入力データがデータソースの場合は、分割数、分割条件及びインタフェース情報を利用して、対象のデータソース用のクエリを生成する機能と、を含むことを特徴としている。
前記クエリ実行制御部は、
前記クエリプランの各処理について、前記データソース上へのクエリ投稿、又は、前記一時ストレージから入力データを取得して実行する機能と、
前記処理を実行した後に、未実行の処理がある場合、前記処理の結果を前記一時ストレージに維持する機能と、を含むことを特徴としている。
前記クエリ生成部におけるデータ仮想化装置上で実行するクエリプラン及び投稿クエリを生成する機能は、
分割対象となるデータが二項演算である場合、
同一範囲を含む二つの分割データを対象としたクエリのみを生成する機能を含むことを特徴としている。
二つの分割データを対象としたクエリの生成は、
分割基準の属性と分割範囲を基に、一方の分割データからブロックを取得し、他方の分割データからブロックを取得して、ブロック間で演算処理を実施する一方、
前記一方の分割データの分割範囲の上限が、他方の分割データの分割範囲の上限より大きい場合に、他方のブロックを破棄し、次の分割範囲のブロックを取得し、一方の分割データの元のブロックと演算処理を実施し、
前記一方の分割データの分割範囲の上限が、他方の分割データの分割範囲の上限より小さい場合、一方のブロックを破棄し、次の分割範囲のブロックを取得して、他方の分割データの元のブロックと演算処理を実施し、
両分割データの分割範囲の上限が一致する場合は、両分割データの両ブロックを破棄して、両分割データで次のブロックを取得することで行うことを特徴としている。
本発明のデータ仮想化装置は、データ仮想化システムにおいて、限られたリソースの範囲内で実行可能なデータサイズとなるようにクエリ処理を分割して実行することで、大規模データに対するクエリ処理を確実に実行するシステムであり、図1に示すように、システムを利用するクライアント1と、データ仮想化装置2と、データ仮想化装置2が利用する1つ以上のデータソース3から構成されている。クライアント1、データ仮想化装置2及びデータソース3は、ネットワークを介して接続されている。
例えば、上述した構成を有する各コンピュータにおいて、クエリ処理を実行するための大規模データ処理プログラムがメディアドライブ装置を介してHDDにインストールされることでデータ仮想化装置が構築される。
これらの統計情報は、後述するクエリの中間データサイズの計算や、クエリ分割に際して必要な情報となる。
クエリ分割部25は、クエリ評価部24が生成したクエリプランと統計情報部22の統計情報を利用してデータ仮想化装置2が実行可能となるクエリプランに再構築する。
クエリ実行制御部27は、再構築されたクエリプランに従って生成した投稿クエリ及びデータ仮想化装置2の処理を順序通りに実行するための制御を行う。
データ受信部29は、クエリ投稿部28が投稿した投稿クエリの結果を待ち、その結果を受信する。
一時ストレージ30は、データ仮想化装置2上の処理で生成される中間データを一時的に保存する。
データ処理部40は、データ受信部29が受信したデータや一時ストレージ30に保存されたデータを利用して、クエリ実行制御部27より指示された処理を実行し、結果を一時ストレージ30又はクライアント1に送信する。
クエリ分割部25では、限られたリソースの範囲内で実行可能なデータサイズとなるように処理を分割するための情報を付与する。
先ず、統計情報部22に記憶された各データソース3の統計情報から、クエリ評価部24で生成したクエリプランのうち、各データソース3がデータ仮想化装置2に対して出力するデータサイズを計算する(ステップ101)。
同様にして、データ仮想化装置2上での処理について、それぞれの処理の中間データサイズを計算する(ステップ102)。
このとき、処理対象データの統計情報を利用して、実行可能なデータサイズとなるためのクエリ分割数と、分割のための条件(分割条件)をクエリプランに追加し(ステップ106)、クエリ分割処理を完了する(ステップ107)。この分割条件には、分割の対象となる属性(分割基準の属性)と、分割数分の属性の範囲(分割範囲)が指定される。
クエリ生成部26では、クエリ分割部25で生成した分割条件付きのクエリプランを利用して、分割したクエリプランとデータソースに投稿するためのクエリが生成される。
クエリプラン上をツリー探索で各処理の抽出を行う(ステップ201)。
クエリプラン上の各処理から実行不可マークの有無を検知する(ステップ202)。
クエリプラン上の各処理に実行不可マークが無ければ、分割することなく対象処理のクエリを生成する(ステップ203)。
続いて、クエリ処理の入力データがデータ仮想装置にあるのかデータソース3にあるのかを判断する(ステップ207)。
当該処理の入力データがデータソース3の場合は、分割数、分割条件及びインタフェース情報を利用して、対象のデータソース用のクエリ(投稿クエリ)を生成する(ステップ208)。
以上の処理をクエリプラン上の全処理分行うことで(ステップ209)、クエリ生成は完了する(ステップ210)。
クエリ生成部26で生成した分割したクエリプランとデータソースに投稿するためのクエリを利用して、クエリ間の依存関係を考慮したクエリ実行を行うために、まずクエリプラン上において、未実行、かつデータ仮想化装置2上の処理で最も深い処理を抽出する(ステップ301)。
続いて、当該処理を処理方式に従って、入力データを取得し、処理を実行する(ステップ302)。入力データの取得は、データソース3上へのクエリ投稿、もしくはデータ仮想化装置上の一時ストレージ30から取得する。
ステップ303において、未実行処理が無い場合は、データ処理部40が最終結果を一時ストレージ30から取得し、クライアント1に送信する(ステップ305)。
その後、利用した一時ストレージ30上の中間データと最終結果を削除してクエリ実行は終了となる(ステップ306)。
単項演算は、選択処理(WHERE, HAVING, ON)、射影処理(SELECT)、集約処理(GROUP BY)、並び替え処理(ORDER BY)を含み、単体のテーブルデータに対する演算を表す。単体のテーブルデータに対して予め決められた分割条件を元に、ブロック単位に分割して処理を行う。
各データにおける分割基準の属性は、例えば、処理毎のキー属性が設定される。
次に、取得したブロックAiに対して単項演算を実行し(ステップ403)、結果を一時ストレージ30に退避する(ステップ404)。
その後、テーブルAの残りのブロックを確認し(ステップ405)、ブロックがあれば(i<N−1)、当該ブロックを破棄し(ステップ406)、次のブロックを選択し(ステップ407)、ステップ402からの処理を繰り返す。
ステップ405においてブロックがなければ、最終結果を出力する(ステップ408)。
二項演算は、結合処理(JOIN)と集合処理(UNION, MINUS, INTERSECT)を含み、二つのテーブルデータに対する演算を表す。この処理においては、予め決められた分割条件を基に、各テーブルデータをブロック単位に分割して処理を行う。
その後、テーブルBの残りのブロックを確認し(ステップ506)、ブロックがあれば(j<N−1)、現在のブロックを一時ストレージ30に退避し(ステップ507)、次のブロックを選択し(ステップ508)、ステップ503からの処理を繰り返す。
なお、テーブルBのブロックの一時ストレージ30への退避は、当該ブロックの取得元がデータソース3だった場合に限られ、一時ストレージ30から取得した場合は当該ブロックを破棄する。
クエリ生成部26においては、これらの二つの実行方式を実現するためのクエリ又はクエリプランを生成し、クエリ実行制御部27はこれらに従って処理を実行する。
なお、テーブルuserはデータソース(DB1)3に、テーブルlogはデータソース(DB2)3に保存されているとし、DB1及びDB2のインタフェースはSQLとする。また、データ仮想化装置2の物理メモリは64GBを上限とする。つまり、1回に処理できるサイズは、入力データサイズと出力データサイズの合計が64GB以下の場合のみとなる。
すなわち、GROUPBY処理では、入力150GB、出力50KBなので、メモリ容量の64GBで割ると((150GB+50KB)/64GB)、3分割が必要となる。
同様に、JOIN処理では、入力100MB、100GB、出力150GBなので、メモリ容量の64GBで割ると((100MB+100GB+150GB)/64GB)、4分割が必要となる。
分割は、各処理の入力側で行われ、入力が二つある時には、どちらか又は両方を分割する。
クエリ実行制御部27では、図12のクエリプランに従ってデータソース3にSQLクエリを投稿し、データ仮想化装置2上で順々に処理を実行していく。
しかし実際には、例えば内部結合処理(Inner Join)のように、ある特定の分割データ同士の処理でのみ結果を出力する処理がある。このような場合、上述の実行方式では、本来であれば不要である分割データの転送及び処理が何度も行われ、効率が悪くなる場合がある。
図13中、図3と同じ符号を付したステップは、図3と同一の処理を行うことを意味する。以下、図1〜図3のデータ仮想化装置と異なる処理フローを中心に説明する。
クエリプラン上から実行不可マークのついた処理を発見した場合(ステップ202)、当該処理の演算種別に応じて(ステップ204)、分割数及び分割条件を利用して分割したクエリプランを生成する(ステップ205、ステップ211、ステップ212)。
また、二項演算のうち、直積処理(Cross Join)に関しては、図3のステップ206と同様の二項演算処理方式(総当り型二項演算処理方式)を基に分割したクエリプランを生成する(ステップ211)。
当該処理の入力データがデータソース3の場合は、分割数、分割条件及びインタフェース情報を利用して、対象のデータソース用のクエリ(投稿クエリ)を生成する(ステップ208)。
以上の処理をクエリプラン上の全処理分行うことで(ステップ209)、クエリ生成は完了する(ステップ210)。
先ず、各入力データA,Bの分割数AN,BN,分割基準の属性attrA,attrB,分割範囲conda[AN],condB[BN]について、図1のクエリ分割部25で再構築したクエリプランにより取得し、AのブロックA[i]及びBのブロックB[j]を初期化(i=0,j=0)する(ステップ601)。
同様に、もう一方のデータBからブロックB[j]を取得する(ステップ603)。
これらのブロック間で演算処理joinを実施し(ステップ604)、演算結果を一時的に記憶する(ステップ605)。
また、AのブロックA[i]が終了し(i<AN)、且つ、BのブロックB[j]も終了(j=BN-1)している場合も、AのブロックA[i]を破棄し(ステップ609)、Aの次の分割範囲のブロックA[i]を取得し(ステップ610)、元からあるBのブロックB[j]と演算処理を実施する(ステップ604)。
なお、AのブロックA[i]が終了(i≧AN)し、且つBのブロックB[j]が終了(j≧BN)した場合(AとBの両方の分割範囲がなくなった時点)(ステップ612)、全てのjoin結果を結合して出力する(ステップ613)。
結合処理(内部結合、外部結合)の場合、このような属性はJoinキーであり、結果が出力されないか、もしくは当該レコードを1レコードのみ出力する、という動作となる。したがって、結合処理(内部結合、外部結合)の場合、分割基準の属性にJoinキーを選択する必要がある。
一方、集合処理に関しては、一つでも一致しない属性があれば、出力結果が特定されるため、分割基準の属性を指定する必要がない。また、分割範囲を順番に一致させるために、分割範囲は同一順序(昇順又は降順)でソートされている必要がある。
Claims (8)
- クエリ処理要求と結果受信を行うクライアントに対して、1つ以上のデータソースを利用してクエリ処理を行うデータ仮想化装置であって、
データ仮想化対象となる前記データソースの論理的な結合データモデルを記憶する仮想スキーマ情報部と、
前記各データソース及び前記データ仮想化装置のリソース容量、及び、前記データソースに保管された各データに関するデータサイズ、データ属性、データ範囲を含むデータ仮想化装置が処理するデータのサイズ推定に利用可能な統計情報を記憶する統計情報部と、
前記データソースに保管された各データに対する処理を提供するエンジンのインタフェース仕様を含む前記エンジン接続に関するインタフェース情報を記憶するインタフェース情報部と、
前記統合データモデルを利用してユーザが投稿したクエリを実行するためのクエリプランを生成するクエリ評価部と、
前記クエリプランと前記統計情報を利用して前記リソース容量で処理可能となるクエリプランに再構築するクエリ分割部と、
再構築したクエリプランと前記インタフェース情報を基に前記データソースに投稿する投稿クエリ及びデータ仮想化装置上で実行するクエリプランを生成するクエリ生成部と、
前記再構築したクエリプランに従って前記投稿クエリ及びデータ仮想化装置上で実行する処理を順序通りに実行するための制御を行うクエリ実行制御部と、
を備えることを特徴とするデータ仮想化装置。 - 前記データソースに前記投稿クエリを投稿するクエリ投稿部と、
前記投稿クエリの結果を受信するデータ受信部と、
前記データ仮想化装置上で実行する処理で生成される中間データを一時的に保存する一時ストレージと、
前記データ受信部が受信したデータや前記一時ストレージに保存された中間データを利用して、前記クエリ実行制御部より指示された処理を実行し、その結果を前記一時ストレージ又は前記クライアントに送信するデータ処理部と、
を備えた請求項1に記載のデータ仮想化装置。 - 前記クエリ分割部は、
前記統計情報部の各データソースの統計情報から、前記クエリ評価部で生成したクエリプランのうち、各データソースがデータ仮想化装置に対して出力するデータサイズを計算する機能と、
データ仮想化装置上での処理毎に必要な中間データサイズを計算する機能と、
前記計算の結果から、処理対象データの統計情報を利用して、前記リソース容量で実行可能なデータサイズとするためのクエリ分割数と、分割のための条件を前記クエリプランに追加する機能と、
を含む請求項1に記載のデータ仮想化装置。 - 前記クエリ生成部は、
前記クエリ分割部で生成した前記クエリプランを利用して、処理毎に実行するためのクエリを抽出する機能と、
前記クエリプラン上から前記リソース容量での処理が不可であることを発見した場合に、当該処理の演算種別及び利用リソース容量に応じて分割数及び分割条件を決定し分割した、データ仮想化装置上で実行するクエリプラン及び前記投稿クエリを生成する機能と、
当該処理の入力データがデータソースの場合は、分割数、分割条件及びインタフェース情報を利用して、対象のデータソース用のクエリを生成する機能と、
を含む請求項1に記載のデータ仮想化装置。 - 前記クエリ実行制御部は、
前記クエリプランの各処理について、前記データソース上へのクエリ投稿、又は、前記一時ストレージから入力データを取得して実行する機能と、
前記処理を実行した後に、未実行の処理がある場合、前記処理の結果を前記一時ストレージに維持する機能と、
を含む請求項2に記載のデータ仮想化装置。 - 請求項1乃至請求項4のいずれか1項に記載の各部をコンピュータ上に構築し、データ仮想化装置で実行可能となるように大規模データに対するクエリを分割して処理する大規模データ処理プログラム。
- 前記クエリ生成部におけるデータ仮想化装置上で実行するクエリプラン及び投稿クエリを生成する機能は、
分割対象となるデータが二項演算である場合、
同一範囲を含む二つの分割データを対象としたクエリのみを生成する機能
を含む請求項4に記載のデータ仮想化装置。 - 二つの分割データを対象としたクエリの生成は、
分割基準の属性と分割範囲を基に、一方の分割データからブロックを取得し、他方の分割データからブロックを取得して、ブロック間で演算処理を実施する一方、
前記一方の分割データの分割範囲の上限が、他方の分割データの分割範囲の上限より大きい場合に、他方のブロックを破棄し、次の分割範囲のブロックを取得し、一方の分割データの元のブロックと演算処理を実施し、
前記一方の分割データの分割範囲の上限が、他方の分割データの分割範囲の上限より小さい場合、一方のブロックを破棄し、次の分割範囲のブロックを取得して、他方の分割データの元のブロックと演算処理を実施し、
両分割データの分割範囲の上限が一致する場合は、両分割データの両ブロックを破棄して、両分割データで次のブロックを取得する
ことで行う請求項7に記載のデータ仮想化装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014200596 | 2014-09-30 | ||
JP2014200596 | 2014-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016071837A JP2016071837A (ja) | 2016-05-09 |
JP6393193B2 true JP6393193B2 (ja) | 2018-09-19 |
Family
ID=55864801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015002291A Active JP6393193B2 (ja) | 2014-09-30 | 2015-01-08 | データ仮想化装置及び大規模データ処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6393193B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6799501B2 (ja) * | 2017-06-06 | 2020-12-16 | 株式会社日立製作所 | 計算機システム及びデータの分析方法 |
US11829362B2 (en) | 2018-05-15 | 2023-11-28 | Oracle International Corporation | Automatic database query load assessment and adaptive handling |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100701104B1 (ko) * | 2004-12-22 | 2007-03-28 | 한국전자통신연구원 | 분산된 정보들의 통합 뷰 생성을 위한 데이터베이스스키마 생성 방법 및 정보 통합 시스템 |
US9081826B2 (en) * | 2013-01-07 | 2015-07-14 | Facebook, Inc. | System and method for distributed database query engines |
-
2015
- 2015-01-08 JP JP2015002291A patent/JP6393193B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016071837A (ja) | 2016-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6697392B2 (ja) | 半構造データスキーマのトランスペアレントディスカバリ | |
US10521427B2 (en) | Managing data queries | |
US10838940B1 (en) | Balanced key range based retrieval of key-value database | |
EP2752779B1 (en) | System and method for distributed database query engines | |
US10127275B2 (en) | Mapping query operations in database systems to hardware based query accelerators | |
WO2017096892A1 (zh) | 索引构建方法、查询方法及对应装置、设备、计算机存储介质 | |
CA2897338A1 (en) | Data stream splitting for low-latency data access | |
AU2015369723A1 (en) | Identifying join relationships based on transactional access patterns | |
JP6159908B1 (ja) | 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム | |
CN104063501A (zh) | 基于hdfs的副本平衡方法 | |
Al-Khasawneh et al. | MapReduce a comprehensive review | |
JP6262505B2 (ja) | 分散型データ仮想化システム、クエリ処理方法及びクエリ処理プログラム | |
CN108073641B (zh) | 查询数据表的方法和装置 | |
JP6204753B2 (ja) | 分散クエリ処理装置、処理方法及び処理プログラム | |
JP6393193B2 (ja) | データ仮想化装置及び大規模データ処理プログラム | |
CN106575296B (zh) | 用于托管的分析的动态n维立方体 | |
US20190364109A1 (en) | Scale out data storage and query filtering using storage pools | |
JP6523823B2 (ja) | 仮想データベースシステム管理装置、管理方法及び管理プログラム | |
JP7211255B2 (ja) | 検索処理プログラム、検索処理方法及び情報処理装置 | |
JP6371136B2 (ja) | データ仮想化サーバ、データ仮想化サーバにおけるクエリ処理方法及びクエリ処理プログラム | |
CN113297252A (zh) | 一种模式无感知的数据查询服务方法 | |
JP6401617B2 (ja) | データ処理装置、データ処理方法及び大規模データ処理プログラム | |
CN109344216A (zh) | 一种面向大数据的k近邻连接查询方法 | |
AU2017202899B2 (en) | Managing data queries | |
Mandilaras | Transforming into RDF and Interlinking Βig Geospatial Data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20160823 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170906 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180629 |
|
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: 20180808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180824 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6393193 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |