JP6239407B2 - Database system - Google Patents
Database system Download PDFInfo
- Publication number
- JP6239407B2 JP6239407B2 JP2014043636A JP2014043636A JP6239407B2 JP 6239407 B2 JP6239407 B2 JP 6239407B2 JP 2014043636 A JP2014043636 A JP 2014043636A JP 2014043636 A JP2014043636 A JP 2014043636A JP 6239407 B2 JP6239407 B2 JP 6239407B2
- Authority
- JP
- Japan
- Prior art keywords
- update
- data
- value
- key
- tables
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明の実施形態は、データベースシステムに関する。 Embodiments described herein relate generally to a database system.
リレーショナル型データベースは、表形式で管理されるデータ(テーブル)を、SQL(Structured query language)を使って操作するデータベースである。リレーショナル型データベースは、SQLで結合条件を指定することにより、複数のテーブルを動的に関連付けることができる。 A relational database is a database that operates data (tables) managed in a tabular format using SQL (Structured query language). A relational database can dynamically associate a plurality of tables by specifying a join condition in SQL.
複数のテーブルを関連付ける処理(結合:JOIN)は、条件によっては、その負荷が非常に大きくなるため、このような条件に備えて、複数のテーブルを結合したキャッシュテーブルを予め用意しておくといったことも行われている。 The process of associating multiple tables (join: JOIN) can be very heavy depending on the conditions. For this reason, a cache table that combines multiple tables is prepared in advance. Has also been done.
キャッシュテーブルの基となるテーブルが更新された場合の対処法には、同期型と、非同期型とが存在する。同期型では、テーブルの更新時に、キャッシュテーブルを即応的に更新する。一方、非同期型では、一定期間毎に、各期間の更新分を一括して更新する。 There are a synchronous type and an asynchronous type as a countermeasure when the table that is the basis of the cache table is updated. In the synchronous type, the cache table is updated immediately when the table is updated. On the other hand, in the asynchronous type, the update for each period is updated in a lump for every fixed period.
しかしながら、同期型は、更新時間の増大を招くおそれがあり、一方、非同期型は、更新前の古いデータが参照されるおそれがある。 However, the synchronous type may increase the update time, while the asynchronous type may refer to old data before update.
本発明が解決しようとする課題は、キャッシュテーブルを効率的に更新するデータベースシステムを提供することにある。 An object of the present invention is to provide a database system that efficiently updates a cache table.
実施形態によれば、データベースシステムは、2以上の第1テーブルおよび前記2以上の第1テーブルを事前に参照要求に適するように変形をした第2テーブルを用いて、データの参照要求に応答する。データベースシステムは、第1管理手段と、第2管理手段とを具備する。前記第1管理手段は、前記2以上の第1テーブルを管理する。前記第2管理手段は、前記第2テーブルを管理する。前記第2テーブルは、前記参照要求に適するように、前記2以上の第1テーブルを結合して生成されるものであって、前記2以上の第1テーブルのデータが結合されたデータセット毎に、前記2以上の第1テーブルの主キー値を格納する2以上のキーフィールドと、データセットが有効か否かを示す値を格納する第1フラグとを有する。前記第1管理手段は、通知手段を具備する。前記通知手段は、前記2以上の第1テーブルのデータが更新された場合、その更新内容を示す更新通知を前記第2管理手段に送信する。前記第2管理手段は、無効化手段と、更新手段とを具備する。前記無効化手段は、前記更新通知を受信した場合、前記更新通知で示される更新内容に該当する前記第2テーブルのデータを無効化する。前記更新手段は、前記2以上の第1テーブルのデータの参照要求を受けた場合であって、そのデータの参照要求に応答するために必要な前記第2テーブルのデータが無効化されている場合、そのデータを前記2以上の第1テーブルから取得して前記第2テーブルに格納する。前記無効化手段は、前記更新通知で示される更新内容が前記2以上の第1テーブルの結合に関わるキー値以外かつ前記2以上の第1テーブルの主キー値以外の更新である場合、該当するデータセットに対応する前記第1フラグの値を無効を示す値に更新し、前記更新通知で示される更新内容が前記2以上の第1テーブルの結合に関わるキー値または前記2以上の第1テーブルの主キー値の更新である場合、該当するデータセットに対応する前記2以上のキーフィールドの中の更新対象となった第1テーブルの主キー値を格納するキーフィールド以外のキーフィールドの値と、前記第1フラグの値とを無効を示す値に更新する。 According to an embodiment, the database system uses a second table in which the deformation of two or more of the first table and the two or more first table to suit the reference request in advance, in response to a data reference request . The database system includes first management means and second management means. The first management means manages the two or more first tables. The second management means manages the second table. The second table is generated by combining the two or more first tables so as to be suitable for the reference request, and for each data set in which the data of the two or more first tables are combined. , Two or more key fields that store primary key values of the two or more first tables, and a first flag that stores a value indicating whether or not the data set is valid. The first management means includes notification means. When the data in the two or more first tables is updated, the notification unit transmits an update notification indicating the update contents to the second management unit. The second management means includes invalidation means and update means. The invalidation means invalidates the data in the second table corresponding to the update content indicated by the update notification when the update notification is received. The update means receives a reference request for data of the two or more first tables, and the data of the second table necessary for responding to the reference request for the data is invalidated The data is acquired from the two or more first tables and stored in the second table. The invalidation means is applicable when the update content indicated by the update notification is an update other than the key value related to the combination of the two or more first tables and other than the primary key value of the two or more first tables. The value of the first flag corresponding to the data set is updated to a value indicating invalidity, and the update content indicated by the update notification is a key value related to the combination of the two or more first tables or the two or more first tables. The primary key value of the first table, the key field value other than the key field storing the primary key value of the first table that is the update target in the two or more key fields corresponding to the corresponding data set; The value of the first flag is updated to a value indicating invalidity.
以下、実施の形態について図面を参照して説明する。 Hereinafter, embodiments will be described with reference to the drawings.
(第1実施形態)
図1は、本実施形態に係るデータベースシステム1のシステム構成を示す図である。
(First embodiment)
FIG. 1 is a diagram showing a system configuration of a
図1に示すように、本データベースシステム1は、各々がアプリケーションプログラム2からのデータ処理要求を受け付ける1以上のデータベース10によって構成される。ここでは、2つのデータベース10を示しているが、単なる例示であって、これに限定されるものではない。つまり、本データベースシステム1は、1つのデータベース10によっても構成され得るし、3つ以上のデータベース10によっても構成され得る。
As shown in FIG. 1, the
データベース10は、複数のテーブルを結合させることが可能なリレーショナル型データベースであり、コントローラ11およびファイルシステム12を有している。アプリケーションプログラム2は、GUI(Graphical user interface)部21および論理・算術演算部22を有し、例えば、GUI部21により受け付けたユーザからの指示に応じて、論理・算術演算部22が、SQLで記述したデータ処理要求をデータベース10に発行し、返却されたデータ処理結果をGUI部21によりユーザに提示する。アプリケーションプログラム2により発行されるデータ処理要求には、大きく分けて、データの参照要求と、データの更新要求とが存在し、データの更新要求には、データの追加要求および削除要求が含まれる。また、SQLで記述されるデータ処理要求は、SQL文やクエリなどと称される。
The
データベース10のコントローラ11は、アプリケーションプログラム2からのデータ処理要求の受付窓口の役割を担うモジュールである。コントローラ11は、要求されたデータ処理を実行するデータベースエンジン100を有している。また、コントローラ11は、他のデータベース10のコントローラ11との間で通信する機能を有している。したがって、アプリケーションプログラム2は、データ処理要求の発行先であるデータベース10で管理されるテーブルと、このデータベース10とは異なるデータベース10で管理されるテーブルとの結合を伴うデータ処理要求を発行することもできる。換言すれば、アプリケーションプログラム2は、本データベースシステム1を構成する1以上のデータベース10内に存在するテーブルのすべてをデータ処理の対象とすることができる。データベース10のファイルシステム12は、データベース10内に存在する、テーブルのデータを含む各種データの記憶媒体上における配置場所を管理するモジュールである。
The
本データベースシステム1は、データベース10の各々が、テーブルを事前に参照要求に適するように変形をしたキャッシュテーブルを予め用意しておき、テーブルおよびキャッシュテーブルを使って、データの参照要求に応答する機能を有している。変形とは、典型的には、2以上のテーブルを結合することである。そして、本データベースシステム1は、キャッシュテーブルの基となるテーブルが更新された場合のキャッシュテーブルの更新を効率的に行う仕組みを実装するものであり、以下、この仕組みについて詳述する。
The
まず、本データベースシステム1が実装する、キャッシュテーブルを効率的に更新する仕組みの理解を助けるために、図2乃至図4を参照して、キャッシュテーブルの基となるテーブルが更新された場合の一般的な対処法について説明する。
First, in order to help understand the mechanism for efficiently updating the cache table implemented by the
図2は、2つのテーブル(テーブルA,B)を結合してキャッシュテーブルを生成する一例を示している。以下、キャッシュテーブルを参照用テーブル201(マテリアライズドビュー:MATERIALIZED VIEW [MVIEW])、キャッシュテーブルの基となるテーブルを更新用テーブル202と称する。 FIG. 2 shows an example in which a cache table is generated by combining two tables (tables A and B). Hereinafter, the cache table is referred to as a reference table 201 (materialized view: MATERIALIZED VIEW [MVIEW]), and the table that is the basis of the cache table is referred to as an update table 202.
図2中、「CREATE MATERIALIZED VIEW READABLE AS SELECT 名前、場所 FROM A,B WHERE a2=1 and a3=b0 and b2=’今’」は、更新用テーブル202から参照用テーブル201を生成するためのクエリである。本クエリ中、”WHERE”部に条件文が記述され、条件文は、結合条件と絞り込み条件とを含み得る。”a3=b0”が、結合条件であり、テーブルAの3つ目のフィールドに格納される値とテーブルBの行番号とが一致する行を結合する旨を指定するものである。”a2=1”および”b2=’今’”は、絞り込み条件であり、テーブルAの2つ目のフィールドに格納される値が「1」、テーブルBの2つ目のフィールドに格納される値が「今」の行に絞り込む旨を指定するものである。なお、”SELECT”部には、抽出すべき項目名(フィールド名)が記述され、また、”FROM”部には、対象とすべきファイル名(テーブル名)が記述される。ここでは、テーブルAの1つ目のフィールドの項目名が「名前」であり、また、テーブルBの1つ目のフィールドの項目名が「場所」であるものとする。 In FIG. 2, “CREATE MATERIALIZED VIEW READABLE AS SELECT name, location FROM A, B WHERE a2 = 1 and a3 = b0 and b2 = 'now'” is a query for generating the reference table 201 from the update table 202 It is. In this query, a conditional statement is described in the “WHERE” part, and the conditional statement can include a join condition and a narrowing condition. “A3 = b0” is a join condition, and specifies that a row in which the value stored in the third field of the table A matches the row number of the table B is joined. “A2 = 1” and “b2 = 'now'” are narrowing conditions, the value stored in the second field of table A is “1”, and the value stored in the second field of table B This is to specify that the value is narrowed down to the “now” line. The “SELECT” part describes the item name (field name) to be extracted, and the “FROM” part describes the file name (table name) to be processed. Here, the item name of the first field of the table A is “name”, and the item name of the first field of the table B is “location”.
図2に示す参照用テーブル201を予め生成しておくことにより、以降、「SELECT 名前、場所 FROM A,B WHERE a2=1 and a3=b0 and b2=’今’」を含むデータの参照要求であるクエリが発行された場合、テーブルAとテーブルBとの結合を行わなくとも、要求されたデータを速やかに返却することが可能となる。 By generating the reference table 201 shown in FIG. 2 in advance, a reference request for data including “SELECT name, location FROM A, B WHERE a2 = 1 and a3 = b0 and b2 = 'now'” is performed thereafter. When a certain query is issued, the requested data can be promptly returned without combining Table A and Table B.
ところで、前述したように、アプリケーションプログラム2により発行されるクエリには、データの参照要求のみならず、データの更新要求も存在する。したがって、参照用テーブル201を生成した後に、更新用テーブル202が更新されることも考えられる。この場合、その更新内容を参照用テーブル201に反映させる必要が生じる。ここで、参照用テーブル201の基となる更新用テーブル202であるテーブルAの行番号「2」の行の1つ目のフィールドが「田中」から「里中」に更新された場合を想定する。なお、以下では、行番号を主キー値と称することがある。
Incidentally, as described above, the query issued by the
図3は、更新用テーブル202の更新内容を参照用テーブル201に同期的に反映させる場合の例を示している。 FIG. 3 shows an example in which the update contents of the update table 202 are reflected in the reference table 201 synchronously.
図3に示すように、更新用テーブル202が更新された場合に、参照用テーブル201を即応的に更新すれば、データの参照要求に対して返却されるデータは、常に最新のデータとなる。一方で、参照用テーブル201の更新を頻繁に行うことになりかねず、更新時間の増大を招くおそれがある。 As shown in FIG. 3, when the update table 202 is updated, if the reference table 201 is updated promptly, the data returned in response to the data reference request is always the latest data. On the other hand, the reference table 201 may be frequently updated, which may increase the update time.
また、図4は、更新用テーブル202の更新内容を参照用テーブル201に非同期的に反映させる場合の例を示している。 FIG. 4 shows an example in which the update contents of the update table 202 are asynchronously reflected in the reference table 201.
更新用テーブル202が更新されても、参照用テーブル201を即応的に更新するのではなく、図4に示すように、一定期間毎に、各期間の更新分を一括して更新すれば、更新時間は想定範囲内に収めることができる。一方で、データの参照要求に対して返却されるデータが、更新前の古いデータとなるおそれがある。 Even if the update table 202 is updated, instead of updating the reference table 201 immediately, as shown in FIG. 4, if the update for each period is updated in batches at regular intervals, the update is performed. Time can be kept within the expected range. On the other hand, data returned in response to a data reference request may become old data before update.
このような、参照用テーブル201の基となる更新用テーブル202が更新された場合の一般的な対処法である同期型および非同期型の双方の特長を踏まえた上で、続いて、図5および図6を参照して、本データベースシステム1における更新用テーブル202が更新された場合の参照用テーブル201の更新についての基本的な考え方を説明する。
In consideration of the features of both the synchronous type and the asynchronous type, which are general countermeasures when the update table 202 that is the basis of the reference table 201 is updated, FIG. With reference to FIG. 6, a basic concept for updating the reference table 201 when the update table 202 in the
まず、図5に、更新用テーブル202が更新された場合の参照用テーブル201の更新についての一般的な考え方を示す。 First, FIG. 5 shows a general concept for updating the reference table 201 when the update table 202 is updated.
前述した、更新用テーブル202の更新内容を同期的に参照用テーブル201に反映させる対処法(同期型)および更新用テーブル202の更新内容を非同期的に参照用テーブル201に反映させる対処法(非同期型)のいずれも、更新用テーブル202の更新というイベントの発生を契機として、参照用テーブル201の更新を実行するという、言うなれば「更新側主導」の考え方である。 The above-described countermeasure (synchronous) for reflecting the update contents of the update table 202 on the reference table 201 synchronously and the countermeasure for reflecting the update contents of the update table 202 asynchronously on the reference table 201 (asynchronous) Both types are based on the concept of “update side initiative”, that is, the update of the reference table 201 is executed when the event of the update of the update table 202 occurs.
次に、図6に、本データベースシステム1における更新用テーブル202が更新された場合の参照用テーブル201の更新についての基本的な考え方を示す。
Next, FIG. 6 shows a basic concept for updating the reference table 201 when the update table 202 in the
本データベースシステム1では、更新用テーブル202の更新時、旧データを無効化するだけで、参照用テーブル201の更新は実行しない。図6では、旧データを含むデータセットの配置場所を示すポインタの値を「0」に更新している。ここで、「0」は、無効を示す値として定義されているものとする。
In the
そして、本データベースシステム1では、参照用テーブル201の参照時、該当データが無効化されていた場合に、新データを更新用テーブル202から取得し、参照用テーブル201を更新する。このように、本データベースシステム1では、言うなれば「参照側主導」の考え方を採用する。
In the
図7に、参照用テーブル201の基となる更新用テーブル202が局所的に頻繁に更新された場合の一例を示す。 FIG. 7 shows an example in which the update table 202 that is the basis of the reference table 201 is frequently updated locally.
いま、ある時点(図7のa1)で参照されたデータの同一箇所が頻繁に更新された場合を考える(図7のa2〜a6)。ここでは、参照時の「3」が、「3」→「8」→「9」→「5」→「9」→「6」と更新されている。この間、このデータが参照されることはなく、その後、このデータが2度参照されたとする(図7のa7,a8)。 Consider a case where the same portion of data referred to at a certain time (a1 in FIG. 7) is frequently updated (a2 to a6 in FIG. 7). Here, “3” at the time of reference is updated as “3” → “8” → “9” → “5” → “9” → “6”. During this time, it is assumed that this data is not referred to, and then this data is referred to twice (a7 and a8 in FIG. 7).
このような場合、「更新側主導」では、特に「同期型」においては、更新回数分、このデータに関する参照用テーブル201の更新が実行される。「非同期型」においても、各更新が互いに異なる期間内に行われたならば、「同期型」と同様、更新回数分、このデータに関する参照用テーブル201の更新が実行される。この間、このデータは参照されていないので、「3」→「8」→「9」→「5」→「9」の更新は無駄となる。 In such a case, in “update side initiative”, particularly in the “synchronous type”, the reference table 201 related to this data is updated by the number of times of update. Also in the “asynchronous type”, if each update is performed within different periods, the reference table 201 related to this data is updated by the number of times of update as in the “synchronous type”. During this time, since this data is not referred to, the update of “3” → “8” → “9” → “5” → “9” is useless.
一方、「参照側主導」では、更新後の最初の参照時(図7のa7)に新データを取得して参照用テーブル201を更新するので、上記のような参照用テーブル201の無駄な更新の実行を排除できる。また、以降の参照時(図7のa8)には、参照用テーブル201に格納された新データを速やかに参照することができる。 On the other hand, in the “reference side initiative”, new data is acquired and the reference table 201 is updated at the time of the first reference after the update (a7 in FIG. 7). Can be eliminated. Further, at the time of subsequent reference (a8 in FIG. 7), the new data stored in the reference table 201 can be referred to promptly.
このように、「参照側主導」は、データの参照要求に対して常に最新のデータを返却することを保証しつつ、データの更新に関するオーバヘッドを最小化する。 In this way, “reference side initiative” minimizes the overhead associated with data update while ensuring that the latest data is always returned in response to a data reference request.
図8は、「更新側主導」における更新用テーブル202の更新に伴う参照用テーブル201の更新に関する処理の流れを示す図である。なお、ここでは、データの参照要求に対応するモジュールと、データの更新要求に対応するモジュールとが各々設けられているものとする。データの参照要求に対応するモジュールとは、即ち参照用テーブル201の管理を司るモジュールであり、データの更新要求に対応するモジュールとは、即ち更新用テーブル202の管理を司るモジュールである。 FIG. 8 is a diagram illustrating a flow of processing related to the update of the reference table 201 accompanying the update of the update table 202 in “update side initiative”. Here, it is assumed that a module corresponding to a data reference request and a module corresponding to a data update request are provided. The module corresponding to the data reference request is a module that manages the reference table 201, and the module corresponding to the data update request is the module that manages the update table 202.
図8に示すように、「更新側主導」では、更新用テーブル202の更新が要求された場合(図8のb1)、更新用テーブル202の更新に加え、概ねその都度(「同期型」であれば毎回)、新データが参照用テーブル201の条件に合うか(参照用テーブル201の条件から外れたか)を確認するための計算が行われ(図8のb2)、必要であれば、参照用テーブル201を更新するためのデータの転送が行われる(図8のb3)。この更新データの参照用テーブル201への反映(図8のb4)も、更新用テーブル202の更新を契機として実行される。そして、これらの処理は、参照用テーブル201の参照(図8のb5)の有無に関係なく実行される。 As shown in FIG. 8, in the “update side initiative”, when an update of the update table 202 is requested (b1 in FIG. 8), in addition to the update of the update table 202, in each case (“synchronous”) Calculation is performed to check whether the new data meets the conditions of the reference table 201 (i.e., deviated from the conditions of the reference table 201) (b2 in FIG. 8). Data for updating the table 201 is transferred (b3 in FIG. 8). Reflection of the update data to the reference table 201 (b4 in FIG. 8) is also executed when the update table 202 is updated. These processes are executed regardless of whether the reference table 201 is referenced (b5 in FIG. 8).
ここで、まず、図9および図10を参照して、「更新側主導」の場合に必要となる、更新用テーブル202の更新時に新データが参照用テーブル201の条件に合うか(参照用テーブル201の条件から外れたか)を確認するための計算について説明する。
First, referring to FIG. 9 and FIG. 10, whether or not new data meets the conditions of the reference table 201 when the update table 202 is updated, which is necessary in the case of “update side initiative” (reference table). The calculation for confirming whether or not the
図9では、テーブルAの行番号「2」の行の3つめのフィールド(a3)が「1」から「3」に変更された例を示している。このフィールドは、結合条件に関わるフィールドであり、また、結合先のテーブルBの2つ目のフィールド(b2)が、絞り込み条件に関わるフィールトであるので、新データに基づき改めて結合を行い、結合先のテーブルBの2つ目のフィールドの値を確認する。その値は「昔」であり、絞り込み条件を満たさない。 FIG. 9 shows an example in which the third field (a3) of the row with the row number “2” in the table A is changed from “1” to “3”. Since this field is a field related to the join condition, and the second field (b2) of the table B to be joined is a field related to the narrowing condition, the join is performed again based on the new data, and the join destination The value of the second field of the table B is confirmed. The value is “old” and does not satisfy the narrow-down condition.
この時、更新前の旧データ「1」により結合されるテーブルBの2つ目のフィールドの値を確認すると、その値は「今」であり、絞り込み条件を満たしている。これにより、参照用テーブル201から1つの行を削除する必要があることが分かる。 At this time, when the value of the second field of the table B joined by the old data “1” before update is confirmed, the value is “now”, which satisfies the narrowing condition. Thereby, it is understood that one row needs to be deleted from the reference table 201.
一方、図10では、テーブルAの行番号「3」の行の3つ目のフィールド(a3)が、「3」から「1」に変更された例を示している。このフィールドは、結合条件に関わるフィールドであり、また、結合先のテーブルBの2つ目のフィールド(b2)が、絞り込み条件に関わるフィールトであるので、新データに基づき改めて結合を行い、結合先のテーブルBの2つ目のフィールドの値を確認する。その値は「今」であり、絞り込み条件を満たしている。 On the other hand, FIG. 10 shows an example in which the third field (a3) of the row with the row number “3” in the table A is changed from “3” to “1”. Since this field is a field related to the join condition, and the second field (b2) of the table B to be joined is a field related to the narrowing condition, the join is performed again based on the new data, and the join destination The value of the second field of the table B is confirmed. The value is “now”, which satisfies the narrow-down condition.
この時、更新前の旧データ「3」により結合されるテーブルBの2つ目のフィールドの値を確認すると、その値は「昔」であり、絞り込み条件を満たさない。これにより、参照用テーブル201に1つの行を追加する必要があることが分かる。なお、絞り込み条件を満たしている場合には、参照用テーブル201側に存在するデータセットを更新する必要があることが分かる。例えば更新前の旧データが「2」であった場合、参照用テーブル201側の該当データセット内の「横浜」を「川崎」に更新しなければならない。 At this time, when the value of the second field of the table B joined by the old data “3” before update is confirmed, the value is “old” and does not satisfy the narrowing condition. As a result, it can be seen that one row needs to be added to the reference table 201. Note that, when the narrowing-down condition is satisfied, it is understood that the data set existing on the reference table 201 side needs to be updated. For example, when the old data before update is “2”, “Yokohama” in the corresponding data set on the reference table 201 side must be updated to “Kawasaki”.
このように、「更新側主導」の場合には、更新用テーブル202の更新時、負荷の大きい結合を伴う計算が必須となる。 As described above, in the case of “update side initiative”, when the update table 202 is updated, a calculation with a heavy load is essential.
図11は、「参照側主導」における更新用テーブル202の更新に伴う参照用テーブル201の更新に関する処理の流れを示す図である。 FIG. 11 is a diagram illustrating a flow of processing related to the update of the reference table 201 accompanying the update of the update table 202 in “reference side initiative”.
図11に示すように、「参照側主導」では、更新用テーブル202の更新が要求された場合(図11のc1)、更新用テーブル202の更新(図11のc2)と、その更新の通知(図11のc3)とが行われる。また、参照用テーブル201については、更新が通知されたデータに関わる行の削除(図11のc4)、つまり無効化のみが行われ、参照用テーブル201の更新は実行されない。 As shown in FIG. 11, in “reference side initiative”, when an update of the update table 202 is requested (c1 in FIG. 11), the update of the update table 202 (c2 in FIG. 11) and notification of the update (C3 in FIG. 11) is performed. In addition, with respect to the reference table 201, only deletion of the row related to the data notified of the update (c4 in FIG. 11), that is, invalidation is performed, and the update of the reference table 201 is not executed.
また、更新用テーブル202の更新(図11のc2)が、同一テーブルの同一レコードに対する2箇所目以降の更新である場合や、そもそも参照用テーブル201と関係のないデータを対象とするものである場合、その更新の通知(図11のc3)は行われず、参照用テーブル201の該当行の削除(図11のc4)も行われない。 In addition, when the update of the update table 202 (c2 in FIG. 11) is an update after the second place for the same record of the same table, or data that is not related to the reference table 201 in the first place. In such a case, the update notification (c3 in FIG. 11) is not performed, and the corresponding line in the reference table 201 is not deleted (c4 in FIG. 11).
そして、参照用テーブル201の参照時(図11のc5)、該当のデータが存在しない場合に限り、そのデータを更新用テーブル202から取得して、参照用テーブル201を更新する(図11のc6)。 Then, when referring to the reference table 201 (c5 in FIG. 11), only when the corresponding data does not exist, the data is acquired from the update table 202 and the reference table 201 is updated (c6 in FIG. 11). ).
図12は、更新用テーブル202が局所的に更新された場合の参照用テーブル201の更新に関する処理の流れを「更新側主導」と「参照側主導」とで比較する図である。 FIG. 12 is a diagram comparing the flow of processing related to the update of the reference table 201 when the update table 202 is locally updated between “update side initiative” and “reference side initiative”.
参照用テーブル201を更新した後、そのデータが参照されなかった場合、その更新は無駄に終わる。したがって、図12に示すように、「更新側主導」では、例えば更新用テーブル202が局所的に更新された場合、無駄な参照用テーブル201の更新が多く発生する。これに対して、「参照側主導」では、参照用テーブル201の更新が、参照される必要分に止まる。このことから、「参照側主導」は、バースト処理に対して効果的であるといえる。 After the reference table 201 is updated, if the data is not referenced, the update is useless. Therefore, as shown in FIG. 12, in the “update side initiative”, for example, when the update table 202 is locally updated, many unnecessary updates of the reference table 201 occur. On the other hand, in the “reference side initiative”, the update of the reference table 201 is limited to the necessary reference. From this, it can be said that “reference side initiative” is effective for burst processing.
次に、本データベースシステム1が、この「参照側主導」を実現する基本原理について説明する。
Next, the basic principle by which the
図13は、「参照側主導」である本データベースシステム1における参照用テーブル201の一構成例を示す図である。
FIG. 13 is a diagram illustrating a configuration example of the reference table 201 in the
ここで、図13に示す参照用テーブル201の一構成例と比較するために、一旦、図14および図15を参照して、「更新側主導」における典型的な参照用テーブル201の一構成例および更新用テーブル202の更新に伴う当該参照用テーブル201の更新手順を説明する。 Here, in order to compare with a configuration example of the reference table 201 shown in FIG. 13, referring to FIGS. 14 and 15 once, a configuration example of a typical reference table 201 in “update side initiative”. The update procedure of the reference table 201 accompanying the update of the update table 202 will be described.
図14に示すように、「更新側主導」の場合、参照用テーブル201は、通常、結合した各テーブルの行番号(主キー値)の組み合わせである行番号(rowid)と、データセットの配置場所を示すポインタ(ptr)とを備える。 As shown in FIG. 14, in the case of “update side initiative”, the reference table 201 usually has a row number (rowid) that is a combination of row numbers (primary key values) of the joined tables and the arrangement of the data set. And a pointer (ptr) indicating the location.
いま、更新用テーブル202のデータであって、参照用テーブル201側にキャッシュされているデータが「田中」から「里中」に更新されたものとする。 Now, it is assumed that the data stored in the update table 202 and cached on the reference table 201 side is updated from “Tanaka” to “Satonaka”.
この場合、図15に示すように、更新されたデータを含む行について結合を実行し、参照用テーブル201における行番号を計算して、参照用テーブル201用の更新データとして転送する。そして、この更新データに付される行番号に基づき、参照用テーブル201を更新する。 In this case, as shown in FIG. 15, the join is executed for the row including the updated data, the row number in the reference table 201 is calculated, and transferred as the update data for the reference table 201. Then, the reference table 201 is updated based on the row number attached to the update data.
再び、図13を参照する。 Reference is again made to FIG.
この参照用テーブル201について、「参照側主導」である本データベースシステム1では、行番号(rowid)とは別に、主キー値を格納するキーフィールドをテーブル(更新用テーブル202)毎に持つ(rA,rB)。そして、本データベースシステム1では、第1に、キャッシュが有効か否かのフラグを行毎に持つ(cache)。第2に、主キー値による行番号のダイレクトサーチを可能とするためのインデックスをテーブル(更新用テーブル202)毎に持つ(index_rA,index_rB)。第3に、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグをテーブル(更新用テーブル202)毎に持つ。
Regarding this reference table 201, this
以下、図13に示したように参照用テーブル201を構成することで、本データベースシステム1が、当該参照用テーブル201を「参照側主導」でどのように更新するのかについて説明する。
Hereinafter, it will be described how the
図16は、本データベースシステム1の参照用テーブル201の更新に関する機能ブロック図である。
FIG. 16 is a functional block diagram relating to the update of the reference table 201 of the
本データベースシステム1における参照用テーブル201および更新用テーブル202の管理は、データベースエンジン100が司る。図16中、(A)は、データの参照要求に対応するモジュール、つまり参照用テーブル201の管理を司るモジュールとして動作するデータベースエンジン100の機能ブロックを示し、(B)は、データの更新要求に対応するモジュール、つまり更新用テーブル202の管理を司るモジュールとして動作するデータベースエンジン100の機能ブロックを示している。1つのデータベースエンジン100を、データの参照要求に対応するモジュールおよびデータの更新要求に対応するモジュールの双方として動作させてもよいし、2つのデータベースエンジン100を、一方をデータの参照要求に対応するモジュールとして、他方をデータの更新要求に対応するモジュールとして動作させてもよい。以下、データの参照要求に対応するモジュールとして動作するデータベースエンジン100を参照側データベースエンジン100と称し、データの更新要求に対応するモジュールとして動作するデータベースエンジン100を更新側データベースエンジン100と称する。
The
図16(A)に示すように、参照側データベースエンジン100は、SQL文解析部111、データ制御部112、データ変更部113、データ要求部114およびメモリ115を有している。
As shown in FIG. 16A, the reference-
SQL文解析部111は、SQLで記載されるデータの参照要求、つまりクエリを解析するモジュールである。SQL文解析部111は、その参照要求が参照用テーブル201を適用可能なものであるか否かを判定する。参照用テーブル201を適用可能なデータの参照要求は、参照用テーブル201からデータが取得されて返却され、参照用テーブル201を適用不可なデータの参照要求は、更新用テーブル202からデータが取得されて返却されることとなる。
The SQL
データ制御部112は、参照が要求されたデータを返却するモジュールであり、当該参照が要求されたデータが参照用テーブル201に存在するか否か(参照用テーブル201のデータは有効か否か)を判定する機能を有している。データ変更部113は、更新側データベースエンジン100から更新用テーブル202の更新通知を受け取った場合に、参照用テーブル201の該当データを無効化する等の参照用テーブル201の更新を実行するモジュールである。また、データ変更部113は、更新通知として送られてくるスキーマに基づき、参照用テーブル201を作成する機能を有している。
The data control
データ要求部114は、データ制御部112により、参照が要求されたデータが参照用テーブル201に存在しないと判定された場合、該当データを更新用テーブル202から取得して、参照用テーブル201に格納するモジュールである。メモリ115は、参照用テーブル201を格納する記憶領域である。
When the
また、更新側データベースエンジン100は、図16(B)に示すように、SQL文解析部121、データ制御部122、更新通知部123およびメモリ124を有している。
Further, as shown in FIG. 16B, the update-
SQL文解析部121も、参照側データベースエンジン100のSQL文解析部111と同様、クエリを解析するモジュールである。データの更新要求の中には、キャッシュテーブルの生成要求、つまり参照用テーブル201の生成要求も含まれ、SQL文解析部121は、クエリが参照用テーブル201の生成を要求するものか否かを判定する機能を有している。また、SQL文解析部121は、参照用テーブル201の生成を要求するクエリから、絞り込み条件と結合条件とを含む条件文を抽出する機能を有している。この条件文の抽出は、更新用テーブル202の更新に伴う参照用テーブル201の更新を「参照側主導」で行うための事前準備として行うものであり、この点については後述する。
The SQL
データ制御部122は、更新が要求された更新用テーブル202のデータを更新するモジュールである。この更新時、データ制御部122は、データを更新した行の行番号を示す更新行情報210をメモリ124に格納する。データ制御部122は、参照用テーブル201の生成が要求された際、当該参照用テーブル201のスキーマを作成する。
The data control
更新通知部123は、データ制御部122により作成されたスキーマと、メモリ124に格納された更新行情報210とを、更新通知として参照側データベースエンジン100に送信するモジュールである。メモリ124は、更新行情報210を格納する記憶領域である。
The
ここで、図17を参照して、更新側データベースエンジン100のSQL文解析部121による参照用テーブル201の生成を要求するクエリの解析について説明する。
Here, with reference to FIG. 17, the analysis of the query which requests | requires the production | generation of the reference table 201 by the SQL
いま、「CREATE MATERIALIZED VIEW READABLE AS SELECT 名前、場所 FROM A,B WHERE a2=1 and a3=b0 and b2=’今’」といったクエリが発行されたものと想定する。SQL文解析部121は、このクエリから、条件文、つまり「WHERE a2=1 and a3=b0 and b2=’今’」のみを抽出する。また、SQL文解析部121は、抽出した条件文に含まれる結合条件(a3=b0)で指定される各テーブルのキー(a3,b0)と、結合対象の各テーブルの主キー(a0,b0)とを、結合に関わるキーとして取得する。
Assume that a query such as “CREATE MATERIALIZED VIEW READABLE AS SELECT name, location FROM A, B WHERE a2 = 1 and a3 = b0 and b2 =’ now ’” is issued. The SQL
次に、図18乃至図26を参照して、事前準備として取得したキーを使った参照用テーブル201の「参照側主導」での更新手順について説明する。このうち、図18乃至図22は、更新用テーブル202の更新時に関する図であり、図23乃至図26は、参照用テーブル201の参照時に関する図である。 Next, with reference to FIG. 18 to FIG. 26, the “reference side initiative” update procedure of the reference table 201 using the key acquired as advance preparation will be described. Among these, FIGS. 18 to 22 are diagrams relating to the update of the update table 202, and FIGS. 23 to 26 are diagrams relating to the reference table 201 being referred to.
図18は、事前準備として取得したキー以外の変更となる更新用テーブル202の更新の一例を示している。 FIG. 18 shows an example of the update of the update table 202 that is a change other than the key acquired as advance preparation.
図18に示すように、ここでは、テーブルAの行番号(a0)「2」の行の1つ目のフィールド(a1)が、「田中」から「里中」に更新されている。”a1”は、事前準備として取得したキー以外、つまり結合に関わるキーではないので、更新側データベースエンジン100の更新通知部123は、この行のデータを含むデータセットを無効とするための更新通知(Clear)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」を示す情報(A2)が含まれる。
As shown in FIG. 18, here, the first field (a1) in the row of the row number (a0) “2” of the table A is updated from “Tanaka” to “Satonaka”. Since “a1” is not a key acquired as a pre-preparation, that is, a key related to the join, the
一方、参照側データベースエンジン100は、この更新通知を受けると、データ変更部113が、テーブルA用のインデックスで参照用テーブル201の行番号を取得し、その行のフラグ(cache)を無効に更新する。ここで、各フラグは、「1」が有効、「0」が無効を示すものとする。
On the other hand, when the reference-
事前準備として取得したキー以外の変更となる更新用テーブル202の更新時には、以上の処理を行うのみで終了する。 When updating the update table 202, which is a change other than the key acquired as a preliminary preparation, the process ends only by performing the above processing.
図19は、事前準備として取得したキーの変更となる更新用テーブル202の更新であって、更新された行の主キー値がそのテーブル用のインデックスに存在する場合の一例を示している。インデックスに存在する場合とは、その行のデータを含むデータセットが参照用テーブル201側に存在する場合または過去に存在した場合である。 FIG. 19 shows an example of the update of the update table 202 that is a change of the key acquired as a preliminary preparation, and the primary key value of the updated row exists in the index for the table. The case where it exists in the index is a case where a data set including the data of the row exists on the reference table 201 side or has existed in the past.
図19に示すように、ここでは、テーブルAの行番号(a0)「2」の行の3つ目のフィールド(a3)が、何らかの値から「3」に更新されている。”a3”は、事前準備として取得したキー、つまり結合に関わるキーであるので、更新側データベースエンジン100の更新通知部123は、この行との結合を無効とするための更新通知(Key)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」を示す情報(A2)が含まれる。
As shown in FIG. 19, here, the third field (a3) of the row with the row number (a0) “2” in the table A is updated from some value to “3”. Since “a3” is a key acquired as a preliminary preparation, that is, a key related to the combination, the
一方、参照側データベースエンジン100は、この更新通知を受けると、データ変更部113が、テーブルA用のインデックスで参照用テーブル201の行番号を取得し、その行のテーブルA以外のすべてのキーフィールド(rB)、フラグ(cache)およびポインタ(ptr)を無効に更新する。また、データ変更部113は、キーフィールドを無効に更新した場合、そのキーフィールドに対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを無効に更新する。
On the other hand, when the reference-
また、図20は、事前準備として取得したキーの変更となる更新用テーブル202の更新であって、更新された行の主キー値がそのテーブル用のインデックスに存在しない場合の一例を示している。インデックスに存在しない場合とは、更新前のデータによる結合では絞り込み条件を満たさず、その行のデータを含むデータセットが参照用テーブル201側において作成されなかった場合、または、その主キー値を格納していたキーフィールドすべてが無効に更新された場合である。 FIG. 20 shows an example of the update of the update table 202 that is a change of the key acquired as a preliminary preparation, and the primary key value of the updated row does not exist in the index for the table. . When the data does not exist in the index, the join condition by the data before the update does not satisfy the narrowing condition, and the data set including the data of the row is not created on the reference table 201 side, or the primary key value is stored. This is a case where all the key fields that have been updated are invalid.
図20に示すように、ここでは、テーブルAの行番号(a0)「2」の行の3つ目のフィールド(a3)が、何らかの値から「1」に更新されている。”a3”は、事前準備として取得したキー、つまり結合に関わるキーであるので、更新側データベースエンジン100の更新通知部123は、この行との結合を無効とするための更新通知(Key)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」の行を示す情報(A2)が含まれる。
As shown in FIG. 20, here, the third field (a3) in the row of the row number (a0) “2” of the table A is updated from some value to “1”. Since “a3” is a key acquired as a preliminary preparation, that is, a key related to the combination, the
一方、参照側データベースエンジン100は、この更新通知を受けると、データ変更部113が、テーブルA用のインデックスで参照用テーブル201の行番号を取得しようと試みる。更新された行の主キー値がテーブルA用のインデックスに存在しない場合、データ変更部113は、参照用テーブル201に行を追加するとともに、更新された行の主キー値で当該追加した行の行番号を得られるようにインデックスも追加する。追加した行のテーブルAのキーフィールド(rA)には更新された行の行番号である主キー値「2」が格納され、それ以外のすべてのキーフィールド(rB)、フラグ(cache)およびポインタ(ptr)には無効を示す値「0」が格納される。また、無効を示す値「0」を格納するキーフィールドが発生したことにより、データ変更部113は、そのキーフィールドに対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを無効に更新する。
On the other hand, when the reference-
図21は、事前準備として取得したキーの変更となる、更新用テーブル202に行が追加された場合の一例を示している。 FIG. 21 shows an example in which a row is added to the update table 202, which is a change of the key acquired as advance preparation.
図21に示すように、ここでは、行番号(a0)「5」の行がテーブルAに追加されている。結合に関わるキーである”a0”および”a3”のデータの追加を伴うので、更新側データベースエンジン100の更新通知部123は、この行との結合を無効とするための更新通知(Key)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「5」を示す情報(A5)が含まれる。
As shown in FIG. 21, the row with the row number (a0) “5” is added to the table A here. Since the data of “a0” and “a3”, which are keys related to the combination, is added, the
この場合、この更新通知を受けた参照側データベースエンジン100のデータ変更部113が行う処理は、図20を参照して説明した、事前準備として取得したキーの変更となる更新用テーブル202の更新であって、更新された行の主キー値がそのテーブル用のインデックスに存在しない場合の処理と同様となる。つまり、データ変更部113は、参照用テーブル201に行を追加するとともに、更新された行の主キー値で当該追加した行の行番号を得られるようにインデックスも追加する。追加した行のテーブルAのキーフィールド(rA)には更新された行の行番号である主キー値「5」が格納され、それ以外のすべてのキーフィールド(rB)、フラグ(cache)およびポインタ(ptr)には無効を示す値「0」が格納される。また、無効を示す値「0」を格納するキーフィールドが発生したことにより、データ変更部113は、そのキーフィールドに対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを無効に更新する。
In this case, the processing performed by the
逆に、図22は、事前準備として取得したキーの変更となる、更新用テーブル202から行が削除された場合の一例を示している。 On the other hand, FIG. 22 shows an example in which a row is deleted from the update table 202, which is a change of the key acquired as a preliminary preparation.
図22に示すように、ここでは、行番号(a0)「2」の行がテーブルAから削除されている。結合に関わるキーである”a0”および”a3”のデータの削除を伴うので、更新側データベースエンジン100の更新通知部123は、この行との結合を無効とするための更新通知(Key)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」を示す情報(A2)が含まれる。
As shown in FIG. 22, the row with the row number (a0) “2” is deleted from the table A here. Since the data of “a0” and “a3”, which are keys related to the combination, is deleted, the
この場合、この更新通知を受けた参照側データベースエンジン100のデータ変更部113が行う処理は、図19を参照して説明した、事前準備として取得したキーの変更となる更新用テーブル202の更新であって、更新された行の主キー値がそのテーブル用のインデックスに存在する場合の処理と同様となる。つまり、データ変更部113は、テーブルA用のインデックスで参照用テーブル201の行番号を取得し、その行のテーブルA以外のすべてのキーフィールド(rB)、フラグ(cache)およびポインタ(ptr)を無効に更新する。また、データ変更部113は、キーフィールドを無効に更新した場合、そのキーフィールドに対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを無効に更新する。
In this case, the processing performed by the
以上が、本データベースシステム1の更新用テーブル202の更新時における参照用テーブル201の更新手順である。なお、更新側データベースエンジン100は、更新用テーブル202が更新された場合であっても、それが参照用テーブルの生成時にSQL文解析部121により抽出された条件文に含まれる絞り込み条件を満たさないデータに対する更新であった場合には、更新通知部123による更新通知の参照側データベースエンジン100への送信は行わない。
The above is the update procedure of the reference table 201 when the update table 202 of the
図23は、更新用テーブル202上で更新されている行の主キー値を絞り込み条件として指定する参照であって、その更新が、事前準備として取得したキー以外の変更である場合の一例を示している。 FIG. 23 shows an example in which the primary key value of the row updated on the update table 202 is specified as a narrowing condition, and the update is a change other than the key acquired as advance preparation. ing.
図23に示すように、ここでは、テーブルAの主キー(a0)値「2」が絞り込み条件として指定されている。このテーブルAの行番号(a0)「2」の行は、1つ目のフィールド(a1)が「田中」から「里中」に更新されている。”a1”は、事前準備として取得したキー以外、つまり結合に関わるキーではないので、参照用テーブル201上では、その行のフラグ(cache)が無効に更新されていることになる。 As shown in FIG. 23, here, the primary key (a0) value “2” of the table A is designated as the narrowing condition. In the row of the row number (a0) “2” in the table A, the first field (a1) is updated from “Tanaka” to “Satonaka”. Since “a1” is not a key acquired as a pre-preparation, that is, a key related to the join, the flag (cache) of the row is updated to be invalid on the reference table 201.
参照側データベースエンジン100は、データ制御部112により、参照が要求されたデータを返却する。データ制御部112は、参照対象の行のフラグ(cache)が有効を示す場合には、その行のポインタ(ptr)で示される配置場所に存在するデータセットを使って、参照が要求されたデータを返却することができる。
The reference-
一方、参照対象の行のフラグ(cache)が無効を示す場合、データ制御部112は、参照が要求されたデータは参照用テーブル201に存在しない(参照用テーブル201のデータは有効ではない)と判定する。この場合、データ要求部114が、その行のキーフィールド(rA,rB)に格納される主キー値(「2」,「1」)を絞り込み条件として指定したクエリを作成し、更新後のデータを含むデータセットを更新用テーブル202から取得する。データ要求部114は、参照対象の行のポインタ(ptr)を、取得したデータセットの配置場所を示す値に更新して、当該参照対象の行のフラグ(cache)を有効に更新する。そして、データ制御部112は、このデータセットを使って、参照が要求されたデータを返却する。
On the other hand, when the flag (cache) of the reference target row indicates invalidity, the
参照対象の行のキーフィールドに格納される主キー値を絞り込み条件として指定したクエリを作成することにより、参照時における、更新用テーブル202からの最新のデータセットの取得を迅速に行うことができる。 By creating a query in which the primary key value stored in the key field of the row to be referenced is specified as a refinement condition, the latest data set can be quickly acquired from the update table 202 at the time of reference. .
図24は、更新用テーブル202上で更新されている行と結合された(更新されていない)行の主キー値を絞り込み条件として指定する参照であって、その更新が、事前準備として取得したキー以外の変更である場合の一例を示している。 FIG. 24 is a reference that designates the primary key value of a row that has been joined (not updated) with a row that has been updated on the update table 202 as a refinement condition, and that update was acquired as a preliminary preparation. An example of a change other than a key is shown.
図24に示すように、ここでは、テーブルBの主キー(b0)値「1」が絞り込み条件として指定されている。このテーブルBの行番号(b0)「1」の行は、更新されていないが、この行が結合されるテーブルAの行番号(a0)「2」の行と行番号(a0)「3」の行とのうち、行番号(a0)「2」の行は、1つ目のフィールド(a1)が、「田中」から「里中」に更新されている。”a1”は、事前準備として取得したキー以外、つまり結合に関わるキーではないので、参照用テーブル201上では、その行のフラグ(cache)が無効に更新されていることになる。 As shown in FIG. 24, here, the primary key (b0) value “1” of the table B is specified as the narrowing-down condition. The row with the row number (b0) “1” in the table B is not updated, but the row with the row number (a0) “2” and the row number (a0) “3” in the table A to which this row is joined. The first field (a1) of the row with the row number (a0) “2” is updated from “Tanaka” to “Satonaka”. Since “a1” is not a key acquired as a pre-preparation, that is, a key related to the join, the flag (cache) of the row is updated to be invalid on the reference table 201.
参照対象の行のフラグ(cache)が無効を示すので、参照側データベースエンジン100は、図23を参照して説明した、更新用テーブル202上で更新されている行の主キー値を絞り込み条件として指定する参照であって、その更新が、事前準備として取得したキー以外の変更である場合と同様の処理を行うことになる。つまり、データ制御部112により、参照が要求されたデータは参照用テーブル201に存在しない(参照用テーブル201のデータは有効ではない)と判定され、データ要求部114が、その行のキーフィールド(rA,rB)に格納される主キー値(「2」,「1」)を絞り込み条件として指定したクエリを作成し、更新後のデータを含むデータセットを更新用テーブル202から取得する。
Since the flag (cache) of the reference target row indicates invalidity, the reference-
この場合も、参照対象の行のキーフィールドに格納される主キー値を絞り込み条件として指定したクエリを作成するので、参照時における、更新用テーブル202からの最新のデータセットの取得を迅速に行うことができる。 Also in this case, since the query specifying the primary key value stored in the key field of the row to be referenced as a narrowing condition is created, the latest data set is quickly acquired from the update table 202 at the time of reference. be able to.
また、図25は、主キー値を絞り込み条件として指定する参照であって、参照用テーブル201が、当該主キー値の指定が有効な状態にない場合の一例を示している。絞り込み条件としての主キー値の指定が有効な状態に無い場合とは、その主キー値のキーフィールドに無効を示す値を格納する行が存在する場合であり、例えば、事前準備として取得したキーの変更となる更新用テーブル202の更新に伴って、行が追加された場合や、ある行の当該主キー値のキーフィールドが無効に更新された場合などが該当する。 FIG. 25 shows an example in which the primary key value is specified as a narrowing condition, and the reference table 201 is not in a valid state for specifying the primary key value. The case where the specification of the primary key value as the filtering condition is not valid is when there is a row storing a value indicating invalidity in the key field of the primary key value. For example, the key acquired as a preliminary preparation This corresponds to a case where a row is added or the key field of the primary key value in a certain row is invalidally updated in association with the update of the update table 202 that is a change in the above.
図25に示すように、ここでは、テーブルBの主キー(b0)値「1」が絞り込み条件として指定されている。また、参照用テーブル201の行番号(rowid)「3」の行のテーブルB用のキーフィールド(rB)が無効を示していることから、そのキーフィールド(rB)に対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグが無効を示している。この行番号(rowid)「3」の行のテーブルB用のキーフィールド(rB)には、「1」が格納されているべきである可能性があり、このようなテーブルB用のキーフィールド(rB)が不定である行の有無を、当該テーブルB用のキーフィールド(rB)に対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグで即時に判定することができる。 As shown in FIG. 25, here, the primary key (b0) value “1” of the table B is specified as the narrowing-down condition. In addition, since the key field (rB) for the table B in the row of the row number (rowid) “3” of the reference table 201 indicates invalidity, as a narrowing condition corresponding to the key field (rB) A flag indicating whether the specification of the primary key value is valid indicates invalid. There is a possibility that “1” should be stored in the key field (rB) for the table B of the row with the row number “3”, and such a key field for the table B ( The presence / absence of a row for which rB) is indeterminate can be immediately determined by a flag corresponding to the key field (rB) for the table B whether or not the designation of the primary key value as a narrowing condition is valid. it can.
この場合、参照側データベースエンジン100は、まず、データ制御部112が、参照が要求されたデータは参照用テーブル201に存在しない(参照用テーブル201のデータは有効ではない)と判定する。そして、データ要求部114が、参照要求で絞り込み条件として指定されたテーブルBの主キー(b0)値「1」を用いてクエリを作成し、当該参照要求で絞り込み条件として指定されたテーブルBの主キー(b0)値「1」に関わるデータセットを更新用テーブル202から取得する。参照要求で絞り込み条件として指定された主キー値を用いてクエリを作成することにより、参照時における、更新用テーブル202からのデータセットの取得を最小限に抑えることができる。
In this case, in the reference-
データ要求部114は、キーフィールド(rB)に主キー値「1」が格納され、フラグ(cache)が無効を示していた行については、ポインタ(ptr)を、取得したデータセットの配置場所を示す値に更新して、フラグ(cache)を有効に更新する。また、キーフィールド(rB)に無効を示す値が格納されており、かつ、そのキーフィールド(rB)には主キー値「1」が格納されているべきであった行については、さらに、当該キーフィールド(rB)に主キー値「1」を格納する。この際、キーフィールド(rB)に無効を示す値を格納する行が無くなった場合、データ要求部114は、そのキーフィールド(rB)に対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを有効に更新する。
The
以上が、本データベースシステム1の参照用テーブル201の参照時における参照用テーブル201の更新手順である。
The above is the update procedure of the reference table 201 when referring to the reference table 201 of the
このように、本データベースシステム1は、更新用テーブル202の更新に伴う参照用テーブル201の更新を「参照側主導」で行うことを実現する。
As described above, the
図26は、更新側データベースエンジン100の参照用テーブル201の生成時の動作手順を示す図である。
FIG. 26 is a diagram illustrating an operation procedure when the
更新側データベースエンジン100は、クエリを受け取ると(ブロックA1)、SQL文解析部121が、そのクエリが参照用テーブル201の生成を要求するものであるか否かを判定する(ブロックA2)。SQL文解析部121により、参照用テーブル201の生成を要求するクエリであると判定されると(ブロックA2のYES)、データ制御部122が、その参照用テーブル201のスキーマを作成する(ブロックA3)。更新通知部123は、データ制御部122により作成されたスキーマを、更新通知として参照側データベースエンジン100に送信する(ブロックA4)。
When the update-
図27は、参照側データベースエンジン100の参照用テーブル201の生成時の動作手順を示す図である。
FIG. 27 is a diagram illustrating an operation procedure when the
参照側データベースエンジン100は、更新通知としてスキーマを受信すると(ブロックB1)、データ変更部113が、このスキーマに基づき、図13に示した構成を持つ参照用テーブル201をメモリ115に作成する(ブロックB2)。
When the
図28は、更新側データベースエンジン100の更新用テーブル202の更新時の動作手順を示す図である。
FIG. 28 is a diagram illustrating an operation procedure when updating the update table 202 of the update-
更新側データベースエンジン100は、クエリを受け取ると(ブロックC1)、SQL文解析部121が、そのクエリが更新用テーブル202の更新を要求するものであるか否かを判定する(ブロックC3)。SQL文解析部121により、更新用テーブル202の更新を要求するクエリであると判定されると(ブロックC3のYES)、更新対象の行の情報(更新行情報210)がメモリ124に格納される(ブロックC4)。
When the update-
この更新に対するコミットを要求するクエリを受けると(ブロックC2のYES)、データ制御部122は、コミット処理を実行する(ブロックC6)。また、更新通知部123は、メモリ124に格納された更新行情報210に基づき、更新通知を参照側データベースエンジン100に送信する(ブロックC7)。
When a query requesting a commit for this update is received (YES in block C2), the
図29は、参照側データベースエンジン100の更新用テーブル202の更新時および参照要求の受け付け時の動作手順を示す図である。
FIG. 29 is a diagram illustrating an operation procedure when the update table 202 of the
参照側データベースエンジン100は、更新用テーブル202の更新通知を更新側データベースエンジン100から受けると(ブロックD1)、データ変更部113が、その通知内容に応じて、参照用テーブル201を変更する(ブロックD2)。この時の参照用テーブル201の変更とは、更新データの反映ではなく、参照時に更新データの反映が必要であることを記録するためのものである。
When the
また、参照側データベースエンジン100は、データの参照を要求するクエリを受けた場合(ブロックD3)、SQL文解析部121が、その要求が参照用テーブル201を適用可能なものであるか否かを判定する(ブロックD4)。参照用テーブル201を適用可能なものであった場合(ブロックD4のYES)、データ制御部112は、参照対象のデータが参照用テーブル201に存在すれば(ブロックC5のNO)、そのデータを返却する(ブロックD8)。
Further, when the
一方、参照対象のデータが参照用テーブル201に存在しなかった場合(ブロックC5のYES)、データ要求部114が、参照用テーブル201の情報を使って、参照対象のデータを更新用テーブル202から取得する(ブロックC6)。データ変更部113は、データ要求部114により取得されたデータを参照用テーブル201に格納し(ブロックD7)、また、データ制御部112は、同データを返却する(ブロックD8)。
On the other hand, when the reference target data does not exist in the reference table 201 (YES in block C5), the
図30は、更新用テーブル202の更新に伴う参照用テーブル201の更新を「更新側主導」で行った場合と「参照側主導」で行った場合との処理量を比較する図であり、図31は、更新用テーブル202の更新に伴う参照用テーブル201の更新を「更新側主導」で行った場合と「参照側主導」で行った場合との所要時間を比較する図である。 FIG. 30 is a diagram for comparing the processing amount when the update of the reference table 201 accompanying the update of the update table 202 is performed by “update side initiative” and when it is performed by “reference side initiative”. FIG. 31 is a diagram for comparing the required time when the update of the reference table 201 accompanying the update of the update table 202 is performed by “update side initiative” and when it is performed by “reference side initiative”.
図30および図31から明らかなように、更新用テーブル202の更新に伴う参照用テーブル201の更新に関する処理量および所要時間は、いずれも、「参照側主導」の方が「更新側主導」よりも格段に少ない。 As is clear from FIG. 30 and FIG. 31, the amount of processing and the time required for updating the reference table 201 accompanying the update of the update table 202 are both “reference side initiative” and “update side initiative”. Is much less.
このように、本データベースシステム1によれば、キャッシュテーブルを効率的に更新することが実現される。
As described above, according to the
(第2実施形態)
次に、第2の実施の形態について説明する。
(Second Embodiment)
Next, a second embodiment will be described.
図32は、本実施形態のデータベースシステム1における参照用テーブルの一構成例を示す図である。
FIG. 32 is a diagram showing a configuration example of the reference table in the
図32に示すように、本データベースシステム1では、参照用テーブル201の各行のキャッシュが有効か否かのフラグを、さらにテーブル毎に持つ(cacheA,cacheB)。図32では、参照用テーブル201の行番号(rowid)「B」の行のテーブルAに関するフラグ(cacheA)が無効を示している。一方、この行のテーブルBに関するフラグ(cacheB)は有効を示している。つまり、テーブルAのデータとテーブルBのデータとが結合されたデータセット単位ではなく、更新用テーブル202のテーブル単位に有効か否かを管理する。まず、図33を参照して、本データベースシステム1の参照用テーブル201が図32に示す状態となる更新用テーブル202の更新時の動作手順を説明する。
As shown in FIG. 32, the
図33に示すように、ここでは、テーブルAの行番号(a0)「2」の行の1つ目のフィールド(a1)が、「田中」から「里中」に更新されている。”a1”は、事前準備として取得したキー以外、つまり結合に関わるキーではない。この場合、更新側データベースエンジン100の更新通知部123は、この行のデータを無効とするための更新通知(Clear)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」を示す情報(A2)が含まれる。
As shown in FIG. 33, here, the first field (a1) of the row with the row number (a0) “2” in the table A is updated from “Tanaka” to “Satonaka”. “A1” is not a key obtained as a preliminary preparation, that is, a key related to the combination. In this case, the
一方、参照側データベースエンジン100は、この更新通知を受けると、データ変更部113が、テーブルA用のインデックスで参照用テーブル201の行番号を取得し、その行のテーブルA用のフラグ(cacheA)を無効に更新する。これにより、参照用テーブル201は、図32に示す状態となる。
On the other hand, when the reference-
次に、図34を参照して、参照用テーブル201が図32に示す状態、つまり参照用テーブル201の行番号(rowid)「B」の行のテーブルAに関するフラグ(cacheA)が無効を示している状態にある状況下において、この行のデータを参照する時の動作手順を説明する。 Next, referring to FIG. 34, the state of the reference table 201 shown in FIG. 32, that is, the flag (cacheA) related to the table A in the row of the row number (rowid) “B” of the reference table 201 indicates invalid. The operation procedure when referring to the data in this row in the situation where the user is in the state will be described.
参照対象の行のいずれかのフラグ(cacheA,cacheB)が無効を示す場合、データ要求部114は、参照用テーブル201の生成要求に含まれるクエリの条件であって、参照要求のクエリに含まれる条件である「SELECT 名前、場所 FROM A,B WHERE a2=1 and a3=b0 and b2=’今’」のうち、フラグが無効のテーブル(ここでは、テーブルA)に関する絞り込み条件(a2=1)のみを適用し、また、そのテーブル用のキーフィールドに格納される主キー値を絞り込み条件として指定したクエリを作成する。これにより、フラグが無効を示すデータを迅速に取得することができる。データ変更部113は、その行のデータセットの中の当該データ部分のみを、取得されたデータで更新する。
When any of the flags (cacheA, cacheB) in the reference target row indicates invalidity, the
このように、本データベースシステム1によれば、事前準備として取得した、結合に関わるキー以外の変更となる更新用テーブル202の更新に伴う参照用テーブル201の更新について、より一層の効率化を図ることが実現される。
As described above, according to the
(第3実施形態)
次に、第3の実施の形態について説明する。
(Third embodiment)
Next, a third embodiment will be described.
図35は、本実施形態のデータベースシステム1における参照用テーブルの一構成例を示す図である。
FIG. 35 is a diagram showing a configuration example of a reference table in the
図35に示すように、本データベースシステム1では、参照用テーブル201の各行について、データセットの配置場所を示すポインタを持つのではなく、更新用テーブル202のテーブル毎に、データセットを構成するデータ(同一テーブルの同一行から複数のフィールドのデータが抽出される場合は、当該複数のデータからなるデータセット)の配置場所を示すポインタを持つ(Aptr,Bptr)。このポインタ(Aptr,Bptr)は、キャッシュが有効か否かのフラグの役割を兼ねる。
As shown in FIG. 35, in this
テーブル形式でデータを格納する場合、異なる行のフィールドに同一のデータが格納されることが発生し得る。そこで、ポインタを更新用テーブル202のテーブル毎に持つことにより、このような場合であっても、その行数分、当該同一のデータを格納するための記憶領域を確保することを不要とし、重複の圧縮を実現する。 When storing data in a table format, it may occur that the same data is stored in fields in different rows. Therefore, by having a pointer for each table of the update table 202, even in such a case, it is not necessary to secure a storage area for storing the same data for the number of rows, and there is duplication. Realize compression.
各実施形態の動作手順は、ソフトウェア(プログラム)によって実現することができるので、このソフトウェアを格納したコンピュータ読み取り可能な記憶媒体を通じてこのソフトウェアを通常のコンピュータにインストールして実行することにより、各実施形態と同様の効果を容易に実現することができる。 Since the operation procedure of each embodiment can be realized by software (program), the software is installed in a normal computer through a computer-readable storage medium storing this software and executed. The same effect as can be easily realized.
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.
1…データベースシステム、10…データベース、11…コントローラ、12…ファイルシステム、100…データベースエンジン、111…SQL文解析部、112…データ制御部、113…データ変更部、114…データ要求部、121…SQL文解析部、122…データ制御部、123…更新通知部、201…参照用テーブル、202…更新用テーブル
DESCRIPTION OF
Claims (8)
前記2以上の第1テーブルを管理する第1管理手段と、
前記第2テーブルを管理する第2管理手段と、
を具備し、
前記第2テーブルは、前記参照要求に適するように、前記2以上の第1テーブルを結合して生成されるものであって、前記2以上の第1テーブルのデータが結合されたデータセット毎に、前記2以上の第1テーブルの主キー値を格納する2以上のキーフィールドと、データセットが有効か否かを示す値を格納する第1フラグとを有し、
前記第1管理手段は、前記2以上の第1テーブルのデータが更新された場合、その更新内容を示す更新通知を前記第2管理手段に送信する通知手段を具備し、
前記第2管理手段は、
前記更新通知を受信した場合、前記更新通知で示される更新内容に該当する前記第2テーブルのデータを無効化する無効化手段と、
前記2以上の第1テーブルのデータの参照要求を受けた場合であって、そのデータの参照要求に応答するために必要な前記第2テーブルのデータが無効化されている場合、そのデータを前記2以上の第1テーブルから取得して前記第2テーブルに格納する更新手段と、
を具備し、
前記無効化手段は、
前記更新通知で示される更新内容が前記2以上の第1テーブルの結合に関わるキー値以外かつ前記2以上の第1テーブルの主キー値以外の更新である場合、該当するデータセットに対応する前記第1フラグの値を無効を示す値に更新し、
前記更新通知で示される更新内容が前記2以上の第1テーブルの結合に関わるキー値または前記2以上の第1テーブルの主キー値の更新である場合、該当するデータセットに対応する前記2以上のキーフィールドの中の更新対象となった第1テーブルの主キー値を格納するキーフィールド以外のキーフィールドの値と、前記第1フラグの値とを無効を示す値に更新する、
データベースシステム。 2 or more of the first table and the two or more first table using the second table in which the modified to suit the reference request in advance, a database system that responds to a data reference request,
First management means for managing the two or more first tables;
Second management means for managing the second table;
Comprising
The second table is generated by combining the two or more first tables so as to be suitable for the reference request, and for each data set in which the data of the two or more first tables are combined. Two or more key fields that store primary key values of the two or more first tables, and a first flag that stores a value indicating whether or not the data set is valid,
The first management means includes notification means for transmitting an update notification indicating the update contents to the second management means when data of the two or more first tables is updated,
The second management means includes
When receiving the update notification, invalidation means for invalidating the data of the second table corresponding to the update content indicated by the update notification;
When the reference request for the data of the two or more first tables is received and the data of the second table necessary for responding to the reference request for the data is invalidated, the data is Updating means for acquiring from two or more first tables and storing in the second table;
Equipped with,
The invalidation means includes
When the update content indicated in the update notification is an update other than the key value related to the combination of the two or more first tables and other than the primary key value of the two or more first tables, the update data corresponding to the corresponding data set Update the value of the first flag to a value indicating invalidity,
When the update content indicated by the update notification is a key value related to the combination of the two or more first tables or the update of the primary key value of the two or more first tables, the two or more corresponding to the corresponding data set Updating the value of the key field other than the key field storing the primary key value of the first table to be updated in the key field and the value of the first flag to a value indicating invalidity.
Database system.
前記無効化手段は、前記インデックスを用いて、前記更新通知で示される更新内容に該当するデータセットを検索する、
請求項1に記載のデータベースシステム。 The second table further includes an index for performing a direct search of a key field storing the primary key value by a primary key value for each of the two or more first tables.
The invalidation means searches for a data set corresponding to the update content indicated by the update notification using the index.
The database system according to claim 1 .
前記無効化手段は、前記2以上のキーフィールドの値を無効を示す値に更新した場合、そのキーフィールドに対応する前記第2フラグの値を、無効を示す値を格納するキーフィールドが存在することを示す値に更新する、
請求項2に記載のデータベースシステム。 The second table further includes a second flag for storing a value indicating whether or not a key field for storing a value indicating invalidity exists for each of the two or more key fields,
When the invalidation means updates the value of the two or more key fields to a value indicating invalidity, there exists a key field for storing a value indicating invalidity as the value of the second flag corresponding to the key field. Update to a value that indicates
The database system according to claim 2 .
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014043636A JP6239407B2 (en) | 2014-03-06 | 2014-03-06 | Database system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014043636A JP6239407B2 (en) | 2014-03-06 | 2014-03-06 | Database system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2015170076A JP2015170076A (en) | 2015-09-28 |
| JP6239407B2 true JP6239407B2 (en) | 2017-11-29 |
Family
ID=54202778
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014043636A Active JP6239407B2 (en) | 2014-03-06 | 2014-03-06 | Database system |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6239407B2 (en) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7171312B2 (en) * | 2018-08-28 | 2022-11-15 | 株式会社Screenホールディングス | SEARCH DEVICE, SEARCH METHOD AND SEARCH PROGRAM |
| US11617148B2 (en) * | 2019-05-03 | 2023-03-28 | Samsung Electronics Co., Ltd. | Enhancement of flexibility to change STS index/counter for IEEE 802.15.4z |
| CN111162995A (en) * | 2019-12-26 | 2020-05-15 | 苏州浪潮智能科技有限公司 | Data change notification method, device, equipment and readable storage medium |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0193843A (en) * | 1987-10-05 | 1989-04-12 | Hitachi Ltd | System for coupling table |
| JPH1165909A (en) * | 1997-08-15 | 1999-03-09 | Oki Electric Ind Co Ltd | Distributed processing system |
| US20040193656A1 (en) * | 2003-03-28 | 2004-09-30 | Pizzo Michael J. | Systems and methods for caching and invalidating database results and derived objects |
| US8065269B2 (en) * | 2008-12-19 | 2011-11-22 | Ianywhere Solutions, Inc. | Immediate maintenance of materialized views |
| JP5597623B2 (en) * | 2011-12-02 | 2014-10-01 | 株式会社日立システムズ | Database processing method |
-
2014
- 2014-03-06 JP JP2014043636A patent/JP6239407B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| JP2015170076A (en) | 2015-09-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112513835B (en) | Techniques to enable and integrate in-memory search of semistructured data and text documents using in-memory columnar query processing | |
| EP2987096B1 (en) | Caching external data sources for sql processing | |
| CN108287886B (en) | Method and device for synchronizing data change information | |
| US10204135B2 (en) | Materializing expressions within in-memory virtual column units to accelerate analytic queries | |
| US12216654B2 (en) | Materialized table refresh using multiple processing pipelines | |
| EP3340079A1 (en) | Data promotion | |
| KR20080104288A (en) | A data caching method, a caching data providing method, and a computer readable medium | |
| US11762775B2 (en) | Systems and methods for implementing overlapping data caching for object application program interfaces | |
| CN105009111A (en) | Distributed SQL query processing using key-value storage system | |
| CN102867070A (en) | Method for updating cache of key-value distributed memory system | |
| CN106407360B (en) | Data processing method and device | |
| US11074267B2 (en) | Staged approach to automatic data discovery and performance | |
| JP6239407B2 (en) | Database system | |
| US20220067108A1 (en) | Microservices data aggregation search engine updating | |
| CN107808006B (en) | Fuzzy query method, device and system based on large data volume | |
| CN107609091B (en) | Method for realizing cross-database multi-table combined query system | |
| CN101271410A (en) | Data sharing method, system and device | |
| CN105589915A (en) | Database acceleration method through operation index value and hybrid layer cache | |
| US9043371B1 (en) | Storing information in a trusted environment for use in processing data triggers in an untrusted environment | |
| CN105574010B (en) | Data query method and device | |
| KR102415155B1 (en) | Apparatus and method for retrieving data | |
| JP2016194907A (en) | Apparatus, program, and method for updating cache memory | |
| US20200192925A1 (en) | Self-adapting resource aware phrase indexes | |
| JP2016194826A (en) | Database processing control method, processing control program, and database server | |
| JP6293462B2 (en) | File access system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160923 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170711 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170718 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170829 |
|
| 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: 20171003 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171101 |
|
| R151 | Written notification of patent or utility model registration |
Ref document number: 6239407 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |