JP2020004339A - データベース管理装置およびクエリ分割方法 - Google Patents

データベース管理装置およびクエリ分割方法 Download PDF

Info

Publication number
JP2020004339A
JP2020004339A JP2018126130A JP2018126130A JP2020004339A JP 2020004339 A JP2020004339 A JP 2020004339A JP 2018126130 A JP2018126130 A JP 2018126130A JP 2018126130 A JP2018126130 A JP 2018126130A JP 2020004339 A JP2020004339 A JP 2020004339A
Authority
JP
Japan
Prior art keywords
server
query
unit
database management
management 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
Application number
JP2018126130A
Other languages
English (en)
Other versions
JP6926035B2 (ja
Inventor
繁雄 廣瀬
Shigeo Hirose
繁雄 廣瀬
基孝 金松
Mototaka Kanematsu
基孝 金松
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 JP2018126130A priority Critical patent/JP6926035B2/ja
Priority to US16/411,188 priority patent/US20200004757A1/en
Publication of JP2020004339A publication Critical patent/JP2020004339A/ja
Application granted granted Critical
Publication of JP6926035B2 publication Critical patent/JP6926035B2/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/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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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/2246Trees, e.g. B+trees
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】有限のリソースの効率的な割り当てを可能とするデータベース管理装置を提供する。【解決手段】実施形態によれば、データベース管理装置は、サーバ情報管理部、クエリ解析部、クエリ分割部および結果集積部を具備する。サーバ情報管理部は、自サーバおよび下位サーバのサーバ情報を管理する。クエリ解析部は、入力されたクエリを解析して前記クエリで使用されるテーブルを判定する。クエリ分割部は、自サーバおよび下位サーバのサーバ情報に基づき、クエリを実行するクエリ実行部の生成数を決定し、1つの下位サーバに対して複数のクエリ実行部が生成される場合、その数に応じてクエリを分割する。結果集積部は、決定された生成数のクエリ実行部によるクエリの結果を集積する。【選択図】図4

Description

本発明の実施形態は、データベース管理装置およびクエリ分割方法に関する。
近年、ネットワーク環境の整備などに伴い、たとえば企業が業務のために蓄積すべきデータの量は飛躍的に増加している。このようなことから、たとえば複数のサーバが各々保持するデータを一括して扱うことなどを可能とする分散型データベースの重要性も増してきている。
特許第5011006号公報
本発明が解決しようとする課題は、有限のリソースの効率的な割り当てを可能とするデータベース管理装置およびクエリ分割方法を提供することである。
実施形態によれば、データベース管理装置は、ツリー構造の分散型データベースを構成する複数のサーバの中の1つとして動作することが可能であり、サーバ情報管理部と、クエリ解析部と、クエリ分割部と、結果集積部とを具備する。サーバ情報管理部は、自サーバおよび下位サーバのサーバ情報を管理する。クエリ解析部は、入力されたクエリを解析して前記クエリで使用されるテーブルを判定する。クエリ分割部は、自サーバおよび下位サーバのサーバ情報に基づき、前記クエリを実行するクエリ実行部の生成数を決定し、1つの下位サーバに対して複数のクエリ実行部が生成される場合、その数に応じて前記クエリを分割する。結果集積部は、前記決定された生成数の前記クエリ実行部による前記クエリの結果を集積する。
実施形態のデータベース管理装置が備える基本的な機能を概略的に説明するための図。 実施形態のデータベース管理装置によって構成され得るツリー構造の分散型データベースの一例を示す図。 実施形態のデータベース管理装置のハードウェア構成の一例を示す図。 実施形態のデータベース管理装置上で動作するDBMSプログラムの機能ブロックの一例を示す図。 実施形態のデータベース管理装置上で動作するDBMSプログラムで用いられる情報の一例を示す図。 実施形態のデータベース管理装置によって構成される分散型データベースにおける上位サーバ−下位サーバ間の連携を示す図。 実施形態のデータベース管理装置の具体的な動作例(第1ケース)を説明するための第1図。 実施形態のデータベース管理装置の具体的な動作例(第1ケース)を説明するための第2図。 実施形態のデータベース管理装置の具体的な動作例(第2ケース)を説明するための第1図。 実施形態のデータベース管理装置の具体的な動作例(第2ケース)を説明するための第2図。 実施形態のデータベース管理装置の具体的な動作例(第3ケース)を説明するための第1図。 実施形態のデータベース管理装置の具体的な動作例(第3ケース)を説明するための第2図。 実施形態のデータベース管理装置における複数のプロセスを1つのプロセッサに纏めて割り当てる動作を説明するための図。 実施形態のデータベース管理装置におけるクエリの分割方法を説明するための図。 実施形態のデータベース管理装置によって実行されるクエリ受付処理の流れを示すフローチャート。 実施形態のデータベース管理装置によって構成され得るツリー構造の分散型データベースの一変形例を示す図。 実施形態のデータベース管理装置によって構成される分散型データベースにおける異構成のサーバ間の連携の第1例を示す図。 実施形態のデータベース管理装置によって構成される分散型データベースにおける異構成のサーバ間の連携の第2例を示す図。 実施形態のデータベース管理装置によって実行される下位サーバ情報更新処理の流れを示すフローチャート。
以下、実施形態について図面を参照して説明する。
図1は、実施形態のデータベース管理装置1が備える基本的な機能を概略的に説明するための図である。
このデータベース管理装置1は、図1に示されるように、他のデータベース管理装置1の上位に位置づけられる上位サーバとして動作することができ、また、他のデータベース管理装置1の下位に位置づけられる下位サーバとして動作することができる。データベース管理装置1は、異なるデータソースのデータ、より詳しくは、下位サーバが保持するテーブルを、あたかも自身が保持するテーブルであるかのように扱うことのできる外部テーブル機能を有している。データベース管理装置1は、外部テーブル機能を使用し、複数の下位サーバに分散するテーブルを1つのテーブルに仮想化する仮想テーブル化を行うことによって、複数のテーブルから1度にデータを取得することができる。
たとえば、図1に示されるように、上位サーバとして動作するデータベース管理装置1は、下位サーバとして動作する2つの他のデータベース管理装置1に分散するテーブルであるTable1のデータを、「SELECT * FROM Table1」というクエリを発行することによって、あたかも自身が保持するテーブルから取得したかのように、かつ、1度に取得することができる。
また、前述したように、データベース管理装置1は、上位サーバまたは下位サーバのいずれとしても動作することができる。上位サーバまたは下位サーバのいずれとしても動作することができるとは、上位サーバまたは下位サーバの一方として排他選択的に動作することのみならず、ある他のデータベース管理装置1との関係では上位サーバとして動作しながら、別のある他のデータベース管理装置1との関係では下位サーバとして動作することも含み得る。したがって、たとえば図2に示されるように、複数のデータベース管理装置1をツリー状に接続することで、ツリー構造の分散型データベースを構成することができる。換言すれば、データベース管理装置1は、ツリー構造の分散型データベースを構成する複数のサーバの中の1つとして動作することができる。図2中、たとえばデータベース管理装置[2−1]1は、データベース管理装置[1]1との関係では下位サーバとして動作し、データベース管理装置[3−1]1やデータベース管理装置[3−2]1との関係では上位サーバとして動作する。また、図2中の各データベース管理装置1は、ユーザからのクエリを受け付けることができ、かつ、直属の下位サーバが保持するテーブルのデータを使って、そのクエリの結果を得ることができる。なお、各データベース管理装置1は、自身が保持するテーブルのデータを使って、ユーザから受け付けたクエリの結果を得ることも可能である。
図3は、データベース管理装置1のハードウェア構成の一例を示す図である。
図3に示されるように、データベース管理装置1は、プロセッサ11、主メモリ(内部記憶装置)12、通信装置13、外部記憶装置14などを有している。データベース管理装置1は、汎用的なコンピュータであってもよく、たとえば、外部記憶装置14に格納されるDBMS(DataBase Management System)プログラム100が主メモリ12にロードされてプロセッサ11によって実行されることで、汎用的なコンピュータがデータベース管理装置1として動作する。通信装置13は、ユーザからのクエリを受信したり、そのクエリの結果をユーザへ送信したり、上位サーバである他のデータベース管理装置1からのクエリを受信したり、そのクエリの結果を当該他のデータベース管理装置1へ送信したり、下位サーバである他のデータベース管理装置1へクエリを送信したり、そのクエリの結果を当該他のデータベース管理装置1から受信したりするための通信を司る。
なお、図3は、ハードウェア構成を概略的に示すものであり、各コンポーネントを1つずつ表しているが、各コンポーネントは複数存在し得る。たとえば、データベース管理装置1は、通常、複数のプロセッサ11を搭載する。
図4は、DBMSプログラム100の機能ブロックの一例を示す図である。なお、図4には、DBMSプログラム100によって確保される記憶領域200内の概要も併せて示されている。この記憶領域200は、たとえば、外部記憶装置14上に確保される領域であって、主メモリ12を介して、DBMSプログラム100、より詳しくは、DBMSプログラム100を実行するプロセッサ11によってアクセスされる。
DBMSプログラム100は、大きく分けて、上位サーバとしての動作を行うための処理部110と、下位サーバとしての動作を行うための処理部120とを有する。DBMSプログラム100は、前者の処理部110の要素として、下位サーバ情報管理部111、下位サーバ情報取得部112、クエリ解析部113、クエリ分割部114、クエリ実行部115、結果集積部116などを有する。また、DBMSプログラム100は、後者の処理部120の要素として、テーブル管理部121、自サーバ情報管理部122、自サーバ情報送信部123、クエリ実行部124などを有する。なお、これらは、DBMSプログラム100の1モジュールとして実現することに限らず、たとえば電子回路などとして実現するようにしてもよい。
また、記憶領域200内に格納される情報も、大きく分けて、上位サーバとしての動作を行うために用いられる情報210と、下位サーバとしての動作を行うために用いられる情報220とが存在する。前者の情報210の要素として、プロセッサ数情報211、下位テーブルレコード数情報212などが存在し、後者の情報220の要素として、テーブル221などが存在する。
下位サーバ情報管理部111は、下位サーバ情報取得部112が取得する下位サーバ情報を、後述する、プロセッサ数情報211や下位テーブルレコード数情報212などとして記憶領域200内に格納して管理する。下位サーバ情報取得部112は、下位サーバから送信されてくる下位サーバ情報を受信して下位サーバ情報管理部111に転送する。この下位サーバ情報は、下位サーバ側において自サーバ情報送信部123が上位サーバへ送信する自サーバ情報に相当する。
クエリ解析部113は、ユーザから受け付けたクエリを解析し、そのクエリに関わるテーブル、より詳しくは、そのクエリがどのテーブルを使用するのかを判定する。クエリ分割部114は、クエリ解析部113の判定結果を受けて、第1に、下位サーバ情報管理部111によって管理されるプロセッサ数情報211および下位テーブルレコード数情報212に基づき、そのクエリを実行するクエリ実行部115の生成数を決定し、決定した生成数のクエリ実行部115を生成する。クエリ実行部115の生成数は、クエリを並列的に実行する並列数に相当する。また、クエリ分割部114は、第2に、たとえば1つの下位サーバに対して複数のクエリ実行部115が生成される場合、その数に応じてクエリを分割する。このクエリ分割部114に働きによって、このデータベース管理装置1は、有限のリソースの効率的な割り当てを可能としたものであり、この点については後述する。
クエリ実行部115は、クエリ分割部114によって動的に生成され、クエリ分割部114から渡されるクエリを実行する。より詳しくは、クエリ実行部115は、自身が割り当てられる下位サーバに対して、クエリ分割部114から渡されるクエリを送信し、下位サーバから受信した当該クエリの結果を結果集積部116に転送する。
結果集積部116は、クエリ実行部115から受け取ったクエリの結果を集積し、そのクエリの発行元であるユーザへ転送する。
テーブル管理部121は、テーブル221を管理する。テーブル221は、行(レコード)と列(カラム)とからなる表(テーブル)形式のデータ構造体であり、複数のテーブル221が保持され得る。
自サーバ情報管理部122は、データベース管理装置1のブロセッサ数やテーブル221の保有レコード数を自サーバ情報として管理する。なお、データベース管理装置1のブロセッサ数は、プロセッサ数情報211として記憶領域200内に格納される。自サーバ情報送信部123は、自サーバ情報管理部122が管理する自サーバ情報を上位サーバへ送信する。この自サーバ情報は、上位サーバ側において下位サーバ情報取得部112が取得する下位サーバ情報に相当する。自サーバ情報送信部123による自サーバ情報の上位サーバへの送信は、たとえば、テーブル221の保有レコード数が更新された場合などに実行される。
クエリ実行部124は、上位サーバ、より詳しくは、上位サーバ側のクエリ実行部115から送信されるクエリに基づき、自サーバが保持するテーブルからデータを取得し、当該取得したデータを上位サーバのクエリ実行部115へ転送する。クエリ分割部114によって動的に生成されるクエリ実行部115に対し、クエリ実行部124は、たとえばデータベース管理装置1のブロセッサ数だけ静的に生成される。または、上位サーバからのクエリが受信される都度、クエリ実行部124が動的に生成されるようにしてもよい。
なお、ユーザから受け付けたクエリをクエリ解析部113で解析した結果、そのクエリが複数の下位サーバに分散するテーブルを使用するものではなく、自サーバが保持するテーブルを使用するものであった場合、このクエリはクエリ解析部113からクエリ実行部124に転送される。クエリ実行部124は、クエリをクエリ解析部113から受け取った場合には、その結果を、そのクエリの発行元であるユーザへ転送する。この場合においても、クエリ分割部114によって、たとえば自サーバのブロセッサ数と同数のクエリ実行部124の数に応じてクエリを分割し、当該分割したクエリをクエリ実行部124に転送するようにしてもよい。
図5は、DBMSプログラム100によって確保される記憶領域200内に格納されるプロセッサ数情報211、下位テーブルレコード数情報212およびテーブル221の一例を示す図である。
図5(A)に示されるように、プロセッサ数情報211は、自サーバ、つまりデータベース管理装置1のプロセッサ数と、下位サーバ(サーバ1,サーバ2,…)のプロセッサ数とを含む。この例では、データベース管理装置1は、16個のプロセッサをもち、サーバ1やサーバ2は、4個のプロセッサをもつことなどが示されている。
図5(B)に示されるように、下位テーブルレコード数情報212は、複数の下位サーバに分散するテーブルの各下位サーバにおける保有レコード数を含む。この例では、テーブル1のレコードは、サーバ1には100レコード、サーバ2には0レコード、サーバ3には25レコード保持されていることなどが示されている。
図5(C)に示されるように、テーブル221は、自サーバ、つまりデータベース管理装置1が保持するテーブルである。この例では、テーブルAやテーブルBが保持されていることなどが示されている。
図6は、上位サーバとして動作するデータベース管理装置1と、下位サーバとして動作するデータベース管理装置1との間の連携を示す図である。
前述したように、上位サーバと下位サーバとは、まず、下位サーバ側の自サーバ情報送信部123が上位サーバ側の下位サーバ情報取得部112へ自サーバ情報を転送する点で連携する(図6:a1)。また、上位サーバと下位サーバとは、上位サーバ側のクエリ実行部115が下位サーバ側のクエリ実行部124へクエリを送信し、下位サーバ側のクエリ実行部124が上位サーバ側のクエリ実行部115へクエリの結果を送信する点で連携する(図6:a2)。
ここで、本実施形態のデータベース管理装置1についての理解をより深めるために、複数の下位サーバに分散するテーブルを使用するクエリを実行する典型的な手法を一比較例として説明する。
たとえば、そのクエリで使用されるテーブルが3つの下位サーバに分散して保持されている場合、このクエリを実行するプロセス(本実施形態のデータベース管理装置1におけるクエリ実行部115に相当)を3つ生成し、これらを各下位サーバへ割り当て、各々にクエリを実行させる。しかしながら、この手法では、たとえば各下位サーバにおける保有レコード数などが考慮されていないため、リソースの効率的な割り当てが行われているとは言い難い。
これに対して、本実施形態のデータベース管理装置1は、クエリで使用されるテーブルを保持する各下位サーバにおける当該テーブルの保有レコード数のみならず、自サーバのプロセッサ数と、各下位サーバのプロセッサ数とをさらに考慮して、リソースの効率的な割り当てを実現する。以下、この点について詳述する。
まず、複数の下位サーバに分散するテーブルを使用するクエリの実行にあたっての本実施形態のデータベース管理装置1の基本的な規則について説明する。
第1に、このデータベース管理装置1では、クエリ分割部114によるクエリ実行部115の合計生成数(並列数)を、最大で自サーバのプロセッサ数とする。なお、たとえば自サーバのプロセッサ数が下位サーバ数未満の場合などにおいては、クエリ実行部115の合計生成数が自サーバのプロセッサ数を超えることも生じ得る。
第2に、このデータベース管理装置1では、各下位サーバに対して生成するクエリ実行部115の数を、最大で各下位サーバのプロセッサ数とする。
以上の基本的な規則を踏まえて、このデータベース管理装置1、より詳しくは、クエリ分割部114は、適正な数のクエリ実行部115を以下の通りに生成する。
クエリ分割部114は、まず、クエリ解析部113によって判定されたクエリに使用されるテーブルについての各下位サーバの保有レコード数の比率εを、下位サーバ情報管理部111によって管理される下位テーブルレコード数情報212を用いて算出する。この保有レコード数の比率εは、たとえば「下位サーバ1の保有レコード数の比率εサーバ1=下位サーバ1の保有レコード数/下位サーバ全体の保有レコード数」として算出する。
次に、クエリ分割部114は、各下位サーバについて算出した保有レコード数の比率εと、下位サーバ情報管理部111によって管理されるプロセッサ数情報211に含まれる自サーバのプロセッサ数Nとを用いて、各下位サーバに対して生成するクエリ実行部115の数を暫定的に算出する。このクエリ実行部115の生成数は、たとえば「下位サーバ1に対するクエリ実行部115の生成数=自サーバのプロセッサ数N×下位サーバ1の保有レコード数の比率εサーバ1」として算出する。ここで、クエリ分割部114は、算出された値が1未満であった場合は1とし、1以上であって小数を含む場合はたとえば四捨五入によって整数値化する。
最後に、クエリ分割部114は、暫定的に算出した各下位サーバに対して生成するクエリ実行部115の数と、下位サーバ情報管理部111によって管理されるプロセッサ数情報211に含まれる自サーバのプロセッサ数Nおよび各下位サーバのプロセッサ数Mとを用いて、各下位サーバに対して生成するクエリ実行部115の数、つまりはクエリ実行部115の合計生成数を決定する。より詳しくは、前述した本実施形態のデータベース管理装置1における基本的な規則に沿うようにクエリ実行部115の生成数を決定する。つまり、クエリ実行部115の合計生成数が自サーバのプロセッサ数を超えず、また、各下位サーバに対して生成するクエリ実行部115の数が各下位サーバのプロセッサ数を超えないように、クエリ実行部115の生成数を決定する。
次に、クエリ分割部114がクエリ実行部115の生成数を決定する具体的な動作例をいくつかのモデルケースを挙げて説明する。
まず、図7および図8を、図6と併せて参照して、上位サーバ(自サーバ)のプロセッサ数が(クエリで使用されるテーブルを保持する)下位サーバのプロセッサ数よりも多い場合におけるクエリ分割部114の動作例を説明する。
ここでは、下位サーバとしてサーバ1〜3が存在し、これらの下位サーバに分散するテーブル1を使用するクエリを実行することを想定する。また、図7(A)に示されるように、プロセッサ数は、自サーバ(上位サーバ)が8、サーバ1が4、サーバ2が1、サーバ3が2であることを想定する。さらに、図7(B)に示されるように、テーブル1の保有レコード数は、サーバ1が100、サーバ2が0、サーバ3が25であることを想定する。つまり、下位サーバ全体の保有レコード数は125である。
クエリ分割部114は、まず、図8(A)に示されるように、テーブル1についてのサーバ1〜3の保有レコード数の比率εを算出する。各下位サーバについて保有レコード数の比率εを算出すると、クエリ分割部114は、次に、図8(B)に示されるように、各下位サーバに対して生成するクエリ実行部115の数を暫定的に算出する。
この時点で、サーバ1については6.4、サーバ2については0、サーバ3については1.6が算出されている。ここで、サーバ1のプロセッサ数は4なので、クエリ分割部114は、サーバ1に対して生成するクエリ実行部115の数を、6.4を四捨五入して得られる6ではなく、4に決定する。また、クエリ分割部114は、サーバ2に対して生成するクエリ実行部115の数を0に決定する。さらに、クエリ分割部114は、サーバ3に対して生成するクエリ実行部115の数を、1.6を四捨五入して得られる(サーバ2のプロセッサ数内の)2に決定する。
つまり、クエリ分割部114は、図8(C)に示されるように、サーバ1に対して4、サーバ2に対して0、サーバ3に対して2、の合計6つのクエリ実行部115を生成することを決定する。よって、このクエリは、自サーバの8つのプロセッサの中の6つのプロセッサが用いられて6つのクエリ実行部115によって並列に実行されることになる。また、6つのクエリ実行部115のうち、4つのクエリ実行部115はサーバ1に対するものであり、2つのクエリ実行部115はサーバ3に対するものである。クエリ分割部114は、各下位サーバ当りのクエリ実行部115の生成数に応じてクエリを分割することを併せて実行する。このクエリの分割方法については後述するが、たとえばサーバ1を例として簡単に述べるならば、100レコード中の互いに異なる25レコードを対象とする4つのクエリを生成する。分割後の4つのクエリは、サーバ1に対して生成された4つのクエリ実行部115に分配され、各クエリ実行部115から下位サーバ側のクエリ実行部124へ転送される。クエリ分割部114によって生成された6つのクエリ実行部115それぞれは、下位サーバ側のクエリ実行部124からクエリの結果を受け取り、結果集積部116へ転送する。クエリの結果は、結果集積部116によって集積され、ユーザへ返却される。
このように、クエリ分割部114は、保有レコード数(処理量)が多く、負荷が大きい下位サーバに関する処理に多くのプロセッサが割り当てられるように動作する。また、ある下位サーバのプロセッサ数を超えて、当該下位サーバに関する処理に自サーバのプロセッサを割り当てることは、たとえば一部のプロセッサを待機させてしまうなど無駄であるので、クエリ分割部114は、このような無駄を発生させないように動作する。
つまり、先に説明した一比較例のように、クエリを実行するプロセスを下位サーバの数に応じて均等に生成する場合と比較して、本実施形態のデータベース管理装置1は、リソースの効率的な割り当てを実現する。
次に、図9および図10を、図6と併せて参照して、(クエリで使用されるテーブルを保持する)下位サーバの処理量がすべて同程度の場合におけるクエリ分割部114の動作例を説明する。
ここでも、下位サーバとしてサーバ1〜3が存在し、これらの下位サーバに分散するテーブル1を使用するクエリを実行することを想定する。また、図9(A)に示されるように、プロセッサ数は、自サーバ(上位サーバ)が8、サーバ1が4、サーバ2が2、サーバ3が2であることを想定する。さらに、図9(B)に示されるように、テーブル1の保有レコード数は、サーバ1〜3のいずれもが10であることを想定する。つまり、下位サーバ全体の保有レコード数は30である。
この場合も、クエリ分割部114は、まず、図10(A)に示されるように、テーブル1についてのサーバ1〜3の保有レコード数の比率εを算出する。各下位サーバについて保有レコード数の比率εを算出すると、クエリ分割部114は、次に、図10(B)に示されるように、各下位サーバに対して生成するクエリ実行部115の数を暫定的に算出する。
この時点で、サーバ1〜3のすべてについて2.4が算出されている。クエリ分割部114は、これらのサーバ1〜3に対して生成するクエリ実行部115の数を、2.4を四捨五入して得られる(サーバ1〜3のプロセッサ数内の)2に決定する。
つまり、クエリ分割部114は、図10(C)に示されるように、サーバ1〜3に対して2つずつの合計6つのクエリ実行部115を生成することを決定する。よって、このクエリは、自サーバの8つのプロセッサの中の6つのプロセッサが用いられて6つのクエリ実行部115によって並列に実行されることになる。また、クエリ分割部114は、各下位サーバに対して生成される2つのクエリ実行部115用にクエリを2分割することを併せて実行する。その後、各下位サーバに対して、2つのクエリ分割部114から分割後のクエリが転送されることとなる。
このように、下位サーバの処理量がすべて同程度の場合、クエリ分割部114は、プロセッサが均等に割り当てられるように動作する。なお、自サーバのプロセッサ数が8であるところ、クエリ実行部115の合計生成数が6であり、かつ、サーバ1のプロセッサ数が4であるところ、当該サーバ1に対して生成されるクエリ実行部115の数が6であることから、当該サーバ1に関する処理にさらに2つのプロセッサを割り当てること、つまり、さらに2つのクエリ実行部115を生成する余地があるが、ここでは、自サーバのプロセッサ数と下位サーバの保有レコード数の比率とから算出される数を超えて、自サーバのプロセッサを割り当てることはしないこととする。
次に、図11および図12を、図6と併せて参照して、上位サーバ(自サーバ)のプロセッサ数が(クエリで使用されるテーブルを保持する)下位サーバの数よりも少ない場合におけるクエリ分割部114の動作例を説明する。
ここでも、下位サーバとしてサーバ1〜3が存在し、これらの下位サーバに分散するテーブル1を使用するクエリを実行することを想定する。また、図11(A)に示されるように、プロセッサ数は、自サーバ(上位サーバ)が2、サーバ1が4、サーバ2が1、サーバ3が2であることを想定する。さらに、図11(B)に示されるように、テーブル1の保有レコード数は、サーバ1が10、サーバ2が20、サーバ3が10であることを想定する。つまり、下位サーバ全体の保有レコード数は40である。
この場合も、クエリ分割部114は、まず、図12(A)に示されるように、テーブル1についてのサーバ1〜3の保有レコード数の比率εを算出する。各下位サーバについて保有レコード数の比率εを算出すると、クエリ分割部114は、次に、図12(B)に示されるように、各下位サーバに対して生成するクエリ実行部115の数を暫定的に算出する。
この時点で、サーバ1については0.5、サーバ2については1、サーバ3については0.5が算出されている。ここで、サーバ1およびサーバ3については1未満が算出されているので、クエリ分割部114は、サーバ1およびサーバ3に対して生成するクエリ実行部115の数を1に決定する。サーバ2については1が算出されているので、クエリ分割部114は、サーバ2に対して生成するクエリ実行部115の数を1に決定する。
つまり、クエリ分割部114は、図12(C)に示されるように、サーバ1〜3に対して1つずつの合計3つのクエリ実行部115を生成することを決定する。ここで、自サーバのプロセッサ数は2であるので、自サーバのプロセッサ数を超えてクエリ実行部115が生成されることになる。このように、上位サーバ(自サーバ)のプロセッサ数が(クエリに関わるテーブルを保持する)下位サーバの数よりも少ない場合、自サーバのプロセッサ数を超えてクエリ実行部115が生成され得る。この場合、2つのプロセッサの中の一方のプロセッサに2つのクエリ実行部115が割り当てられることになる。各下位サーバに対して1つずつクエリ実行部115を生成するクエリ分割部114は、クエリを分割することなく、そのまま各クエリ実行部115に配布する。
なお、クエリ分割部114は、自サーバのプロセッサ数と下位サーバの保有レコード数の比率とから算出される値が1未満であるためにクエリ実行部115の生成数が1に決定された下位サーバの処理が複数存在する場合、これらを1つのプロセッサに割り当てるように制御を行ってもよい。たとえば、図13(A)に示されるように、サーバ1とサーバ3とが、自サーバのプロセッサ数と下位サーバの保有レコード数の比率とから0.5が算出されたことによってクエリ実行部115の生成数が1に決定されたとすると、これらを各々異なるプロセッサに割り当てるのではなく、図13(B)に示されるように、1つのプロセッサに纏めて割り当てるようにしてもよい。
より詳しくは、自サーバのプロセッサ数と下位サーバの保有レコード数の比率とから1未満の値が算出された下位サーバの中で最も処理量の小さい下位サーバから順に、当該算出された値を足し合わせていき、その値が1を超えるまで、1つのプロセッサに割り当てられるようにしてもよい。図13には、サーバ1に対して生成されたクエリ実行部115とサーバ3に対して生成されたクエリ実行部115とが、自サーバのプロセッサ1とプロセッサ3とに各々割り当てられるところ、プロセッサ1に纏めて割り当てられる例が示されている。
次に、図14を参照して、クエリ分割部114によるクエリの分割方法について説明する。
クエリ分割部114は、たとえばSQL(Structured Query Language)において標準的なLIMIT句(図14:b1)およびOFFSET句(図14:b2)を使用してクエリを分割する。
ここでは、クエリで使用されるテーブル1(Table1)の保有レコード数が100の下位サーバに対して3つのクエリ実行部115を生成することを決定したクエリ分割部114が、このクエリを3つに分割する場合を想定する。
この場合、クエリ分割部114は、図14に示されるように、(A)「SELECT * FROM Table1」というクエリを、(B1)「SELECT * FROM Table1 LIMIT 100/3」、(B2)「SELECT * FROM Table1 OFFSET 100/3 + 1 LIMIT 100/3」、(B3)「SELECT * FROM Table1 OFFSET 2(100/3) + 1」という3つのクエリに分割する。これらは自サーバのクエリ実行部115から下位サーバ側のクエリ実行部124に転送されて並列に実行されることになる。
図15は、データベース管理装置1によって実行されるクエリ受付処理の流れを示すフローチャートである。なお、ここでは、ユーザから受け付けたクエリが、下位サーバに分散するテーブルを使用するものである場合を想定して、データベース管理装置1がクエリ受付処理を実行する手順を説明する。
データベース管理装置1は、まず、クエリを解析し、どのテーブルを使用するのかを判定する(ステップA1)。次に、データベース管理装置1は、そのテーブルの各下位サーバにおける保有レコード数の比率を求める(ステップA2)。
続いて、データベース管理装置1は、保有レコード数の比率と(自サーバおよび各下位サーバの)プロセッサ数とに基づき、生成するクエリ実行部115の数、つまり各下位サーバへ割り当てる(自サーバの)プロセッサ数を決定する(ステップA3)。また、データベース管理装置1は、下位サーバごとに、生成するクエリ実行部115の数に基づき、クエリを分割する(ステップA4)。
クエリ実行部115の生成数を決定し、かつ、クエリを分割すると、データベース管理装置1は、それぞれのクエリ実行部115でクエリを実行する(ステップA5)。データベース管理装置1は、それぞれのクエリ実行部115で得られた結果を集積する(ステップA6)。
ところで、以上の説明では、上位サーバと下位サーバとが同様の構成であり、下位サーバ側の自サーバ情報送信部123が上位サーバへ送信する自サーバ情報を、上位サーバ側の下位サーバ情報取得部112が受信し、これを下位サーバ情報管理部111が下位サーバ情報として管理することとしている。一方で、たとえば図16に示されるように、既存かつ異なる構成のデータソース2A,2Bなどを、ツリー構造の分散型データベースを構成する複数のサーバの中の1つとして組み込みたいという要求も発生し得る。異なる構成のデータソース2A,2Bなどとしては、自サーバ情報送信部123を有していないもののみならず、たとえばクエリとして受け付けるSQLを実行できないCSV(Comma-Separated Value)形式でテーブルを保持するものなどが考えられ得る。
このような要求に応えるために、データベース管理装置1は、異なる構成の下位サーバが存在する場合において、自サーバ−下位サーバ間の違いを吸収する仕組みをさらに備えるようにしてもよい。
図17は、下位サーバが異なる構成のデータソースである場合における当該下位サーバの違いを吸収するための仕組みの第1例を説明するための図である。なお、ここでは、図16で示した異なる構成のデータソース2A,2Bなどを、異構成データソース2と総称する。また、ここでは、図17中の異構成データソース2が、SQLを実行できないCSV形式でデータを保持するものであることを想定する。異構成データソース2は、クエリを実行するクエリ実行部131と、CSV形式で保持されるテーブルを管理するテーブル管理部132とを少なくとも含むDBMS処理部130を有する。
第1例においては、まず、下位サーバ情報取得部112が、異構成データソース2である下位サーバについて、その下位サーバに関する下位サーバ情報を、その下位サーバからたとえば定期的に収集する(図17:c1)。この下位サーバ情報の収集は、たとえば、その下位サーバが保有するテーブルの保有レコード数を問い合わせるクエリを送信することなどによって実行する。下位サーバから送信されるクエリの結果は、下位サーバ情報取得部112から下位サーバ情報管理部111へ転送される。下位サーバ情報管理部111は、このクエリの結果に基づき、下位テーブルレコード数情報212を更新する。
また、クエリ実行部115は、クエリ変換部115Aを備え、クエリ分割部114から渡されるクエリを、当該クエリ変換部115Aによって下位サーバが実行可能な形式に変換し、変換後のクエリを下位サーバへ送信する(図17:c2)。変換前の形式と変換後の形式とが判明していれば、この変換は既存の種々の手法によって実現可能である。
たとえば、どの下位サーバが異構成データソース2であるかや、異構成データソース2である下位サーバがいずれの形式でテーブルを保持するかなどの情報は、あらかじめデータベース管理装置1に与えられてもよいし、データベース管理装置1が能動的に取得するようにしてもよい。たとえば、下位サーバが新たに接続された際、一定期間を超えて自サーバが送信されてこなかった場合、その下位サーバを異構成データソース2と判定し、保有するテーブルやそのテーブルの保有レコード数などを問い合わせるクエリを送信するなどといったことを行うようにしてもよい。
これにより、データベース管理装置1は、自サーバ−下位サーバ間の違いを吸収することができる。なお、下位サーバ情報を定期的に収集することとした場合、たとえばクエリの実行時において保有レコード数に誤差が生じ得るが、図14に示したようにクエリを分割するので、分割されたクエリ間で負荷のばらつきが起きることはあっても、レコードの漏れが起きることはない。
また、図18は、下位サーバが異なる構成のデータソースである場合における当該下位サーバの違いを吸収するための仕組みの第2例を説明するための図である。ここでも、異構成データソース2については、前述の第1例と同様の事項を想定する。また、クエリ実行部115は、クエリ変換部115Aを備える。
この第2例では、下位サーバ情報を定期的に収集することに代えて、クエリ実行部115が下位サーバへクエリを送信するタイミングで(図18:d1−1)、下位サーバ情報を収集する。下位サーバ情報取得部112は、異構成データソース2である下位サーバへクエリを送信するクエリ実行部115からの通知を受けて(図18:d1−2)、たとえば、その下位サーバが保有するテーブルの保有レコード数を問い合わせるクエリも下位サーバへ送信してもらう。下位サーバ情報取得部112は、自身が依頼したクエリの結果をクエリ実行部115から受け取り、下位サーバ情報管理部111へ転送する。
第2例における下位サーバ情報の収集は、クエリ実行部115が下位サーバへクエリを送信する都度行うようにしてもよいし、前回の収集から一定期間以上経過した以降にクエリ実行部115から下位サーバへクエリが送信される場合に行うようにしてもよい。
図19は、データベース管理装置1によって実行される下位サーバ情報更新処理の流れを示すフローチャートである。
データベース管理装置1は、下位サーバが自サーバ(上位サーバ)と同様の構成であるか否かを調べる(ステップB1)。同様の構成である場合(ステップB1:YES)、下位サーバ側から自サーバ情報として下位サーバ情報が送信されてくるので、データベース管理装置1は、下位サーバ情報を能動的に下位サーバから収集することは行わない。
一方、異なる構成である場合(ステップB1:NO)、データベース管理装置1は、所定のタイミングで、テーブルの件数を下位サーバから取得し、その下位サーバに関する下位サーバ情報を更新する(ステップB2)。
以上のように、本実施形態のデータベース管理装置1は、各下位サーバにおけるテーブルの保有レコード数、上位サーバ(自サーバ)のプロセッサ数、各下位サーバのプロセッサ数を考慮した、リソースの効率的な割り当てを実現する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…データベース管理装置、11…プロセッサ、12…主メモリ、13…通信装置、14…外部記憶装置、100…DBMSプログラム、111…下位サーバ情報管理部、112…下位サーバ情報取得部、113…クエリ解析部、114…クエリ分割部、115…クエリ実行部、115A…クエリ変換部、116…結果集積部、121…テーブル管理部、122…自サーバ情報管理部、123…自サーバ情報送信部、124…クエリ実行部、200…記憶領域、211…プロセッサ数情報、212…下位テーブルレコード数情報、221…テーブル。

Claims (11)

  1. ツリー構造の分散型データベースを構成する複数のサーバの中の1つとして動作することが可能なデータベース管理装置であって、
    自サーバおよび下位サーバのサーバ情報を管理するサーバ情報管理部と、
    入力されたクエリを解析して前記クエリで使用されるテーブルを判定するクエリ解析部と、
    自サーバおよび下位サーバのサーバ情報に基づき、前記クエリを実行するクエリ実行部の生成数を決定し、1つの下位サーバに対して複数のクエリ実行部が生成される場合、その数に応じて前記クエリを分割するクエリ分割部と、
    前記決定された生成数の前記クエリ実行部による前記クエリの結果を集積する結果集積部と、
    を具備するデータベース管理装置。
  2. 前記サーバ情報管理部は、自サーバおよび下位サーバのプロセッサ数と、複数の下位サーバに分散するテーブルについての各下位サーバの保有レコード数とを前記サーバ情報として管理し、
    前記クエリ分割部は、自サーバのプロセッサ数と、前記クエリで使用されるテーブルを保持する下位サーバのプロセッサ数と、各下位サーバの保有レコード数の総レコード数に対する比の値とに基づき、前記クエリ実行部の生成数を決定する請求項1に記載のデータベース管理装置。
  3. 前記クエリ分割部は、自サーバのプロセッサ数に各下位サーバの保有レコード数の総レコード数に対する比の値を乗じて得られる値に基づき、各下位サーバに対して生成する前記クエリ実行部の数を決定する請求項2に記載のデータベース管理装置。
  4. 前記クエリ分割部は、いずれかの下位サーバにおいて、自サーバのプロセッサ数に当該下位サーバの保有レコード数の総レコード数に対する比の値を乗じて得られる値が当該下位サーバのプロセッサ数を超える場合、当該下位サーバに対して生成する前記クエリ実行部の数を当該下位サーバのプロセッサ数に決定する請求項3に記載のデータベース管理装置。
  5. 前記クエリ分割部は、いずれかの下位サーバにおいて、自サーバのプロセッサ数に当該下位サーバの保有レコード数の総レコード数に対する比の値を乗じて得られる値が1未満である場合、当該下位サーバに対して生成する前記クエリ実行部の数を1に決定する請求項3に記載のデータベース管理装置。
  6. 前記クエリ分割部は、前記1未満の値が得られて生成された前記クエリ実行部が複数存在する場合、当該複数のクエリ実行部の中の2以上を自サーバの1つのプロセッサに割り当てる請求項5に記載のデータベース管理装置。
  7. 自サーバに保持されるテーブルの保有レコード数が更新された場合、更新後の自サーバのサーバ情報を上位サーバへ送信する自サーバ情報送信部と、
    下位サーバのサーバ情報を取得する下位サーバ情報取得部と、
    を具備し、
    前記サーバ情報管理部は、前記下位サーバ情報取得部によって取得される下位サーバのサーバ情報を管理する、
    請求項1に記載のデータベース管理装置。
  8. 前記下位サーバ情報取得部は、下位サーバが、前記自サーバ情報送信部を有する、自サーバと同様の構成の場合、当該下位サーバのサーバ情報を、当該下位サーバ側に具備される前記自サーバ情報送信部から受信する請求項7に記載のデータベース管理装置。
  9. 前記下位サーバ情報取得部は、下位サーバが、前記自サーバ情報送信部を有しない、自サーバと異なる構成の場合、当該下位サーバのサーバ情報を、当該下位サーバから定期的に収集する請求項7に記載のデータベース管理装置。
  10. 前記下位サーバ情報取得部は、下位サーバが、前記自サーバ情報送信部を有しない、自サーバと異なる構成の場合、前記クエリ実行部が当該下位サーバへクエリを送信するタイミングで、サーバ情報を収集するためのクエリを前記クエリ実行部に当該下位サーバへ送信させる請求項7に記載のデータベース管理装置。
  11. ツリー構造の分散型データベースを構成する複数のサーバの中の1つとして動作することが可能なデータベース管理装置のクエリ分割方法であって、
    自サーバおよび下位サーバのサーバ情報を管理することと、
    入力されたクエリを解析して前記クエリで使用されるテーブルを判定することと、
    自サーバおよび下位サーバのサーバ情報に基づき、前記クエリを並列的に実行する並列数を決定し、1つの下位サーバに対して複数のクエリが並列的に実行される場合、その数に応じて前記クエリを分割することと、
    前記決定された並列数で実行される前記クエリの結果を集積することと、
    を具備するクエリ分割方法。
JP2018126130A 2018-07-02 2018-07-02 データベース管理装置およびクエリ分割方法 Active JP6926035B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018126130A JP6926035B2 (ja) 2018-07-02 2018-07-02 データベース管理装置およびクエリ分割方法
US16/411,188 US20200004757A1 (en) 2018-07-02 2019-05-14 Database management apparatus and query dividing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018126130A JP6926035B2 (ja) 2018-07-02 2018-07-02 データベース管理装置およびクエリ分割方法

Publications (2)

Publication Number Publication Date
JP2020004339A true JP2020004339A (ja) 2020-01-09
JP6926035B2 JP6926035B2 (ja) 2021-08-25

Family

ID=69008118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018126130A Active JP6926035B2 (ja) 2018-07-02 2018-07-02 データベース管理装置およびクエリ分割方法

Country Status (2)

Country Link
US (1) US20200004757A1 (ja)
JP (1) JP6926035B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021215362A1 (ja) * 2020-04-21 2021-10-28 Dendritik Design株式会社 データベース管理システム
US11847102B2 (en) 2021-05-20 2023-12-19 Kabushiki Kaisha Toshiba Data virtualization apparatus and method
JP7490529B2 (ja) 2020-04-21 2024-05-27 Dendritik Design株式会社 データベース管理システム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860609B1 (en) 2020-03-25 2020-12-08 Snowflake Inc. Distributed stop operator for query processing
US20220207024A1 (en) * 2020-12-31 2022-06-30 Waggle Corporation Tiered server topology

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021215362A1 (ja) * 2020-04-21 2021-10-28 Dendritik Design株式会社 データベース管理システム
JP7490529B2 (ja) 2020-04-21 2024-05-27 Dendritik Design株式会社 データベース管理システム
US11847102B2 (en) 2021-05-20 2023-12-19 Kabushiki Kaisha Toshiba Data virtualization apparatus and method

Also Published As

Publication number Publication date
JP6926035B2 (ja) 2021-08-25
US20200004757A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
JP2020004339A (ja) データベース管理装置およびクエリ分割方法
Zhao et al. Dache: A data aware caching for big-data applications using the MapReduce framework
CN107391142B (zh) 一种应用拆分的方法及装置
JP6083290B2 (ja) 分散処理システム
US9336270B2 (en) Techniques for accessing a parallel database system via external programs using vertical and/or horizontal partitioning
CN108536808B (zh) 一种基于Spark计算框架的数据获取方法和装置
US11321209B2 (en) Query-attempt assignment in a database environment
EP3575979B1 (en) Query priority and operation-aware communication buffer management
US20220327040A1 (en) Automated query retry execution in a database system
JP6269140B2 (ja) アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置
CN112307066B (zh) 分布式数据聚合方法、系统、设备及存储介质
CN106294757A (zh) 一种基于超图划分的分布式数据库及其集群分区方法
US20130263136A1 (en) Information processing system and processing method for use therewith
US11494369B2 (en) Identifying software regressions based on query retry attempts in a database environment
JP2016024612A (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
CN112597173A (zh) 一种分布式数据库集群系统对等处理系统及处理方法
CN103634374A (zh) 一种并发访问请求的处理方法及装置
CN111209305B (zh) 查询数据的方法、数据节点、分布式数据库、计算设备
Roy et al. A proposal for optimization of data node by horizontal scaling of name node using big data tools
CN114020430A (zh) 一种分布式任务调度方法、装置、电子设备及存储介质
Thangaselvi et al. Improving the efficiency of MapReduce scheduling algorithm in Hadoop
KR102466247B1 (ko) 오케스트레이터 환경에서 에이전트를 이용한 컨테이너 관리 장치 및 관리 방법
CN113918644B (zh) 一种管理应用程序的数据的方法及相关装置
CN116668513A (zh) 分布式环境下的远程连接系统及方法
CN117667923A (zh) 状态数据管理方法、系统、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210531

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210804

R151 Written notification of patent or utility model registration

Ref document number: 6926035

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151