(57)【要約】  複数のレコードを含むデータをデータベース（４）にロードするデータロード装置（３）は、複数のプロセスから同時にアクセス可能な共有メモリ（３４）中のページに、前記複数のレコードを割り当てる割り当て部（１１）と、前記複数のレコードのそれぞれについて、前記レコードの書き込み領域に関する制御情報（ＬＰ）を前記ページに書き込むとともに、前記複数のレコードのそれぞれに対応した書き込みプロセスを生成し、生成された複数の前記書き込みプロセスにより、それぞれ対応するレコードを、該レコードに対応する前記書き込み領域に書き込む書き込み部（１３）と、複数の前記レコードが書き込まれた前記ページを、前記データベース（４）に反映させる反映部（１４）と、を含む。
2019008715.tif 000002
【特許請求の範囲】
【請求項１】
複数のレコードを含むデータをデータベースにロードするデータロードプログラムであって、  複数のプロセスから同時にアクセス可能な共有メモリ中のページに、前記複数のレコードを割り当て、  前記複数のレコードのそれぞれについて、前記レコードの書き込み領域に関する制御情報を前記ページに書き込むとともに、前記複数のレコードのそれぞれに対応した書き込みプロセスを生成し、  生成された複数の前記書き込みプロセスにより、それぞれ対応するレコードを、該レコードに対応する前記書き込み領域に書き込み、  複数の前記レコードが書き込まれた前記ページを、前記データベースに反映させる、  処理をデータロード装置に実行させることを特徴とするデータロードプログラム。
【請求項２】
前記複数のレコードを、前記データベースに適合した形式に変換し、  前記複数の書き込みプロセスにより、変換された前記複数のレコードを、前記ページに書き込む、  処理を前記データロード装置に実行させることを特徴とする請求項１記載のデータロードプログラム。
【請求項３】
前記ページに対応して、前記制御情報を書き込む１つの制御プロセスを生成し、  該１つの制御プロセスが、変換された前記レコードの取得に応じて、複数の前記書き込みプロセスを生成する、  処理を前記データロード装置に実行させることを特徴とする請求項２記載のデータロードプログラム。
【請求項４】
前記レコードの取得に応じて、前記制御プロセスにより、前記ページに、前記制御情報を書き込む、  処理を前記データロード装置に実行させることを特徴とする請求項３記載のデータロードプログラム。
【請求項５】
前記制御プロセスにより前記書き込みプロセスが生成された際、該書き込みプロセスに対応する前記制御情報を、該書き込みプロセスに渡す、  処理を前記データロード装置に実行させることを特徴とする請求項３記載のデータロードプログラム。
【請求項６】
前記複数の書き込みプロセスは、相互に、非同期且つ並列に動作する、  ことを特徴とする請求項１乃至５のうち何れか１項に記載のデータロードプログラム。
【請求項７】
前記複数の書き込みプロセスと前記制御プロセスとは、非同期且つ並列に動作する、  ことを特徴とする請求項６記載のデータロードプログラム。
【請求項８】
前記制御プロセスが前記ページに書き込む前記制御情報の情報量は、前記書き込みプロセスが前記ページに書き込む前記レコードの情報量より小さい、  ことを特徴とする請求項３乃至７のうち何れか１項に記載のデータロードプログラム。
【請求項９】
前記制御情報は、前記ページに書き込み済みのタプルの情報量に基づく書き込み開始位置の情報を含む、  ことを特徴とする請求項１乃至８のうち何れか１項に記載のデータロードプログラム。
【請求項１０】
前記割り当てる処理において、前記共有メモリ中の複数のページのうち何れかのページに、前記複数のレコードを割り当て、  前記反映させる処理において、複数の前記レコードが書き込まれた複数の前記ページを、前記データベースに反映させる、  ことを特徴とする請求項１乃至９のうち何れか１項に記載のデータロードプログラム。
【請求項１１】
前記共有メモリは、マルチコアプロセッサに搭載され、複数のコアから同時にアクセス可能なメモリであること、  を特徴とする請求項１乃至１０のうち何れか１項に記載のデータロードプログラム。
【請求項１２】
前記共有メモリは、Ｌ１キャッシュメモリと同じ速度でアクセス可能なメモリであること、  を特徴とする請求項１１記載のデータロードプログラム。
【請求項１３】
前記共有メモリの容量は、前記Ｌ１キャッシュメモリの容量より大きく設定されること、  を特徴とする請求項１２記載のデータロードプログラム。
【請求項１４】
複数のレコードを含むデータをデータベースにロードするデータロード方法であって、  複数のプロセスから同時にアクセス可能な共有メモリ中のページに、前記複数のレコードを割り当て、  前記複数のレコードのそれぞれについて、前記レコードの書き込み領域に関する制御情報を前記ページに書き込むとともに、前記複数のレコードのそれぞれに対応した書き込みプロセスを生成し、  生成された複数の前記書き込みプロセスにより、それぞれ対応するレコードを、該レコードに対応する前記書き込み領域に書き込み、  複数の前記レコードが書き込まれた前記ページを、前記データベースに反映させる、  処理をデータロード装置が実行することを特徴とするデータロード方法。
【請求項１５】
複数のレコードを含むデータをデータベースにロードするデータロード装置であって、  複数のプロセスから同時にアクセス可能な共有メモリ中のページに、前記複数のレコードを割り当てる割り当て部と、  前記複数のレコードのそれぞれについて、前記レコードの書き込み領域に関する制御情報を前記ページに書き込むとともに、前記複数のレコードのそれぞれに対応した書き込みプロセスを生成し、生成された複数の前記書き込みプロセスにより、それぞれ対応するレコードを、該レコードに対応する前記書き込み領域に書き込む書き込み部と、  複数の前記レコードが書き込まれた前記ページを、前記データベースに反映させる反映部と、  を備えることを特徴とするデータロード装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、データロードプログラム、データロード方法およびデータロード装置に関する。
【背景技術】
【０００２】  例えば、Relational Database Management System(RDBMS)において、１つのトランザクションで、多くのデータをデータベースに挿入する処理（ロード処理）を行なう高速ローダが用いられている。【０００３】  高速ローダは、データベースにロードするデータ（インプットデータ）の入力を受け付けると、該インプットデータに含まれる複数のレコードをデータベースの形式に変換し、変換後の複数のレコードをページに書き込む。そして、高速ローダは、複数のレコードが書き込まれたページを、データベースに挿入する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１２１６６号公報
【特許文献２】特開２０１０−５５３６９号公報
【特許文献３】特開２０１５−２０１２３３号公報
【特許文献４】特開２０１４−２１１８００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】  高速ローダは、インプットデータに含まれる複数のレコードをデータベースに適合した形式（タプル）に変換し、タプルをページに書き込む。複数のプロセスが、ページに対して並列にタプルを書き込むことで、ロード処理の高速化が図られる。【０００６】  例えば、複数のコアを持つGraphics Processing Unit(GPU)を用いて、高速ローダがロード処理を行なうことで、複数のプロセスが並列にタプルをページに書き込むことができる。例えば、該ページを、ＧＰＵのＬ１キャッシュメモリに記憶することが考えられる。【０００７】  ＧＰＵのハードウェアの制約として、Ｌ１キャッシュメモリに対して、複数のプロセスが同時にアクセスすることは規制される。従って、１つのプロセスがページに対してタプルを書き込んでいる間、該ページはロックされるため、他のプロセスが該ページに書き込むことは規制される。よって、ロード処理の高速化が図られない。【０００８】  例えば、ＧＰＵには、Ｌ１キャッシュと同じ速度でアクセス可能な共有メモリが存在する。共有メモリには上記の制約が存在しないため、該共有メモリにページを記憶することで、複数のプロセスが１つのページに対して、同時にタプルを書き込むことができる。【０００９】  複数のプロセスが、１つのページに対して、自由にタプルの書き込みを行なうと、タプルの上書きやページ使用率の減少等が生じ、タプルを適正にページに書き込むことが難しい。【００１０】  １つのプロセスがページに対してタプルを書き込んでいる間に、該ページをロックし、他のプロセスによる該ページへのアクセスを規制することにより、タプルの上書きやページ使用率の減少は回避される。ただし、１つのページに対して、複数のプロセスがタプルを並列に書き込むことが規制されるため、ロード処理の高速化が図られない。【００１１】  １つの側面として、本発明は、同時アクセスが可能なメモリのページをロックすることなくデータベースのロード処理において複数レコードの並列書き込みを適正に行なうことを目的とする。
【課題を解決するための手段】
【００１２】  １つの態様では、複数のレコードを含むデータをデータベースにロードするデータロードプログラムは、複数のプロセスから同時にアクセス可能な共有メモリ中のページに、前記複数のレコードを割り当て、前記複数のレコードのそれぞれについて、前記レコードの書き込み領域に関する制御情報を前記ページに書き込むとともに、前記複数のレコードのそれぞれに対応した書き込みプロセスを生成し、生成された複数の前記書き込みプロセスにより、それぞれ対応するレコードを、該レコードに対応する前記書き込み領域に書き込み、複数の前記レコードが書き込まれた前記ページを、前記データベースに反映させる、処理をデータロード装置に実行させる。
【発明の効果】
【００１３】  １つの側面によれば、同時アクセスが可能なメモリのページをロックすることなくデータベースのロード処理において複数レコードの並列書き込みを適正に行なうことができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態のシステムの一例を示す図である。
【図２】高速ローダに搭載されるＧＰＵアーキテクチャの一例を示すである。
【図３】データベースへのロード処理の一例を示す図（その１）である。
【図４】データベースへのロード処理の一例を示す図（その２）である。
【図５】ページをロックしたタプル書き込みの一例を示す図（その１）である。
【図６】ページをロックしたタプル書き込みの一例を示す図（その２）である。
【図７】ページをロックしたタプル書き込みの一例を示す図（その３）である。
【図８】ページをロックしたタプル書き込みの一例を示す図（その４）である。
【図９】ページをロックすることなく複数タプルの並列書き込みを行なう際の不具合の一例を示す図である。
【図１０】共有メモリのページに対するタプル書き込みの一例を示す図（その１）である。
【図１１】共有メモリのページに対するタプル書き込みの一例を示す図（その２）である。
【図１２】共有メモリのページに対するタプル書き込みの一例を示す図（その３）である。
【図１３】共有メモリのページに対するタプル書き込みの一例を示す図（その４）である。
【図１４】共有メモリのページに対するタプル書き込みの一例を示す図（その５）である。
【図１５】実施形態の処理の流れの一例を示すフローチャート（その１）である。
【図１６】実施形態の処理の流れの一例を示すフローチャート（その２）である。
【図１７】実施形態の処理の流れの一例を示すフローチャート（その３）である。
【図１８】実施形態の処理の流れの一例を示すフローチャート（その４）である。
【図１９】高速ローダのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】＜実施形態のシステムの一例＞  図１は、実施形態のシステム１の一例を示す。システム１は、サーバ２と高速ローダ３とデータベース４とを含む。図１の例において、サーバ２と高速ローダ３とは、ネットワークを介して、接続される。また、高速ローダ３とデータベース４とは他のネットワークを介して接続される。高速ローダ３は、データロード装置の一例である。
【００１６】  高速ローダ３は、データベース４に挿入する１または複数のデータ（インプットデータ）を受け付け、受け付けたデータに含まれる複数のレコードを、データベース４の形式に適合したタプルに変換する。実施形態の高速ローダ３は、例えば、ＲＤＢＭＳに適用されてもよい。
【００１７】  高速ローダ３は、１つのページに対して、複数のタプルを書き込む。ページは、データベース４の入出力の最小単位であり、例えば、ＲＤＢＭＳにおけるページのサイズは、８キロバイトが採用される。
【００１８】  高速ローダ３は、複数のタプルが書き込まれたページを複数生成してもよい。高速ローダ３は、複数のタプルが書き込まれた１または複数のページを１つのトランザクションとして、一括してデータベース４に挿入する。該挿入の処理は、ロード処理と称される。実施形態では、ロード処理において、多くのレコード（タプル）が一括して、データベース４に挿入されるものとする。
【００１９】  図１では、高速ローダ３とデータベース４とがネットワーク（他のネットワーク）を介して接続される例を示しているが、高速ローダ３とデータベース４とは１つの装置であってもよい。また、高速ローダ３は、上記インプットデータを、サーバ２以外の装置から受け付けてもよい。
【００２０】  以下、高速ローダ３が受け付けたデータ（インプットデータ）を、Comma-Separated Values(CSV)形式のデータとして説明するが、該データは、ＣＳＶ形式以外のデータであってもよい。
【００２１】  図１の例に示されるように、高速ローダ３は、割り当て部１１とデータ変換部１２と書き込み部１３と反映部１４と通信部１５とを含む。
【００２２】  割り当て部１１は、高速ローダ３が受け付けたデータに含まれる複数のレコードを、ページに割り当てる。実施形態では、複数のページが生成されるものとする。従って、割り当て部１１は、複数のページのうち何れかのページに、上記複数のレコードを割り当てる。
【００２３】  データ変換部１２は、複数のデータ変換プロセスを含む。各データ変換プロセスは、複数のページのうち何れかに対応し、対応するページに割り当てられた複数のレコードをタプルに変換する。各データ変換プロセスは、並列に動作する。
【００２４】  書き込み部１３は、各ページのそれぞれについて、１つのラインポインタ作成プロセスおよび複数のページ作成プロセスを含む。従って、１つのページに対して、１つのラインポインタ作成プロセスおよび複数のページ作成プロセスが生成される。
【００２５】  ラインポインタは、制御情報の一例である。ページ作成プロセスは、書き込みプロセスの一例である。ラインポインタ作成プロセスは、制御プロセスの一例である。
【００２６】  ラインポインタ作成プロセスは、データ変換プロセスからタプルを取得し、取得したタプルに基づいて、ラインポインタをページに書き込むとともに、取得したタプルに対応するページ作成プロセスを生成する。ラインポインタは、タプルの情報量（タプルサイズ）と書き込み開始位置（オフセット）との情報を含む。ラインポインタは、ページの検索時に、ページ内に書き込まれたタプルの位置を特定する際に用いられる。
【００２７】  実施形態では、複数のページ作成プロセスが、１つのページに対して、並列にタプルを書き込む。従って、１つのページに、複数のタプルが並列に書き込まれる。ラインポインタ作成プロセスは、ページ作成プロセスを生成する際に、ラインポインタの情報を該ページ生成プロセスに渡す。
【００２８】  ページ作成プロセスは、ページのうち、該ラインポインタの情報で指定される領域にタプルを書き込む。実施形態では、ページ作成プロセスは、ラインポインタの情報のうちオフセットで指定される位置を書き込み開始位置として、タプルの書き込みを行なう。
【００２９】  複数のページ作成プロセスは、ページに対して並列にタプルを書き込む。上述したように、実施形態では、複数のページが存在する。従って、複数のページのそれぞれについて、複数のページ作成プロセスが並列にタプルを書き込む。
【００３０】  反映部１４は、複数のタプルが書き込まれた複数のページをデータベース４に挿入する処理（ロード処理）を行なう。反映部１４は、１つのトランザクションで、複数のページが書き込まれた複数のページを一括して、データベース４に挿入する。該挿入により、データベース４に、複数のレコード（タプル）が一括して反映される。
【００３１】＜ＧＰＵアーキテクチャの一例＞  図２は、高速ローダ３に搭載されるＧＰＵアーキテクチャの一例を示す。ＧＰＵ２１は、Random Access Memory(RAM)２２に接続される。ＧＰＵ２１は、チップ２３とＬ２キャッシュメモリ２４とグローバルメモリ２５とを含む。
【００３２】  チップ２３には、複数のストリーミングマルチプロセッサ３０（図２では、ＳＭと表記）が搭載される。各ストリーミングマルチプロセッサ３０には、複数のＧＰＵコア３１（図２では、コアと表記）と複数のレジスタ３２とＬ１キャッシュメモリ３３と共有メモリ３４とが搭載される。
【００３３】  ＧＰＵコア３１は、演算処理を行なう演算処理回路である。図２の例では、ＧＰＵ２１には、ＧＰＵコア３１が８つ搭載されている。従って、最大で８倍の並列度が得られる。ＧＰＵ２１に搭載されるＧＰＵコア３１の数は、８つには限定されない。ＧＰＵコア３１の数が多くなるに応じて、並列度が高くなる。
【００３４】  レジスタ３２は、各ＧＰＵコア３１のそれぞれに対応して設けられる。Ｌ１キャッシュメモリ３３は、レジスタ３２の次に、ＧＰＵコア３１が高速にアクセスすることが可能なキャッシュメモリである。共有メモリ３４は、Ｌ１キャッシュメモリ３３と同じ速度で、ＧＰＵコア３１がアクセスすることが可能なメモリである。
【００３５】  Ｌ１キャッシュメモリ３３および共有メモリ３４に対して、ＧＰＵコア３１は同じ速度でアクセス可能であり、Ｌ１キャッシュメモリ３３の容量と共有メモリ３４の容量との比率は任意に変更可能である。
【００３６】  例えば、Ｌ１キャッシュメモリ３３と共有メモリ３４との合計の容量が６４キロバイトである場合、Ｌ１キャッシュメモリ３３の容量が１６キロバイト、共有メモリ３４の容量が４８キロバイトに設定されてもよい。実施形態では、Ｌ１キャッシュメモリ３３よりも、共有メモリ３４の容量の方が大きく設定されるものとする。
【００３７】  実施形態では、共有メモリ３４に記憶された複数のページのそれぞれに対して、複数のタプルが書き込まれる。従って、共有メモリ３４の容量を大きくすることで、多くのページを共有メモリ３４に記憶させることができる。
【００３８】  Ｌ２キャッシュメモリ２４は、各ＧＰＵコア３１からアクセスすることが可能なメモリであり、ＧＰＵコア３１によるアクセス速度は、Ｌ１キャッシュメモリ３３より低速である。グローバルメモリ２５は、各ＧＰＵコア３１からアクセスすることが可能なメモリであり、ＧＰＵコア３１によるアクセス速度は、Ｌ２キャッシュメモリ３４より低速である。
【００３９】  Ｌ１キャッシュメモリ３３について説明する。ＧＰＵアーキテクチャのハードウェアの制約から、１つのＬ１キャッシュメモリ３３に対して、複数のプロセス（複数のＧＰＵコア３１のそれぞれで動作するプロセス）が同時にアクセスすることは規制される。
【００４０】  従って、１つのプロセスが、Ｌ１キャッシュメモリ３３に対してアクセスしている間、他のプロセスがＬ１キャッシュメモリ３３に対してアクセスすることは規制される。
【００４１】  一方、共有メモリ３４は、Ｌ１キャッシュメモリ３３と同じ速度でＧＰＵコア３１がアクセス可能なメモリであり、上記のハードウェアの制約はない。従って、複数のプロセスが、同時に共有メモリ３４に対してアクセスすることが許容される。
【００４２】＜データベースへのロード処理の一例＞  次に、図３および図４を参照して、データベースへのロード処理の一例について説明する。図３の例におけるＣＳＶは、サーバ２から受け付けたインプットデータである。該インプットデータには、複数のレコードが含まれる。
【００４３】  図３の例における「ＣＳＶ」は、高速ローダ３が受け付けたインプットデータであることを示す。図３の例では、高速ローダ３は、複数のインプットデータを受け付ける。割り当て部１１は、複数のインプットデータに含まれる複数のレコードを、複数のページのうち何れかに割り当てる。
【００４４】  図３の例は、レコード１が、ページ１に割り当てられ、レコード２が、ページ２に割り当てられる場合を示す。なお、レコードｎ（ｎは自然数）は、ページｎに割り当てられるものとする。
【００４５】  ページ１に割り当てられたレコード１は、データ変換プロセス１が取得する。ページ２に割り当てられたレコード２は、データ変換プロセス２が取得する。ページｎに割り当てられたレコードｎは、データ変換プロセスｎが取得する。各データ変換プロセスは、それぞれ１つのＧＰＵコア３１に割り当てられてもよい。
【００４６】  各データ変換プロセスは、取得したレコードを、データベース４の形式に変換する変換処理を行なう。例えば、インプットデータがＣＳＶ形式のデータである場合、該データに含まれるレコードの形式は、文字列がカンマで区切られた形式のレコードである。
【００４７】  各データ変換プロセスは、ＣＳＶ形式のレコードを、データベース４のテーブルの形式に適合した形式に変換する。該変換により、インプットデータに含まれるレコードは、タプルに変換される。各データ変換プロセスは、レコードからタプルへの変換を並列に行なう。
【００４８】  上述したように、ページごとに、１つのラインポインタ作成プロセスが生成される。図３の例において、ラインポインタは「ＬＰ」と表記される。図３の例では、ページ１〜ｎに対応して、ｎ個のラインポインタ作成プロセスが生成される。ただし、１つのページについて、１つのラインポインタ作成プロセスが生成される。
【００４９】  ラインポインタ作成プロセスは、タプルを取得するごとに、ラインポインタをページに書き込むとともに、タプルに応じたページ作成プロセスを生成する。従って、ラインポインタ作成プロセスは、複数のページ作成プロセスを生成する。図３の例の場合、ラインポインタ作成プロセス１が、複数のページ作成プロセス１Ａ、１Ｂ、・・・を生成する。
【００５０】  ラインポインタ作成プロセスは、ページ作成プロセスを生成する際に、対応するラインポインタの情報を、該ページ作成プロセスに渡す。各ページ作成プロセスは、ラインポインタ作成プロセスから渡されたラインポインタの情報のうち、オフセット（書き込み開始位置）に基づいて、対応するタプルをページに書き込む。
【００５１】  各ページ作成プロセスがタプルをページに書き込むことにより、複数のタプルが書き込まれた１つのページが生成される。各ページ作成プロセスは、対応するページにタプルを並列に書き込む。
【００５２】  上述したように、各ページは、共有メモリ３４に記憶される。図４の例に示されるように、各ページに対するタプルの書き込みが完了すると、反映部１４は、各ページをデータベース４のテーブルに挿入する処理を行なう。該処理により、データベース４にデータが反映される。
【００５３】＜ページをロックしたタプル書き込みの一例＞  次に、図５乃至図８の例を参照して、ページをロックしたタプル書き込みの一例について説明する。図５乃至図７の例において、共有メモリ３４に記憶されたページに対して、１つのプロセスがアクセスすると、該ページがロックされ、他のプロセスによるアクセスは規制されるものとする。
【００５４】  ページのロックという点においては、Ｌ１キャッシュメモリ３３に上記ページが記憶された場合も、同様である。Ｌ１キャッシュメモリ３３に対して、複数のプロセスがアクセスすることが規制されるためである。
【００５５】  ラインポインタ作成プロセスは、タプル１の取得に応じて、共有メモリ３４に記憶されたページに、ラインポインタＬＰ１を書き込む。ラインポインタ作成プロセスは、ラインポインタＬＰ１をページに書き込む際に、ページをロックする。
【００５６】  ページがロックされることで、他のプロセスによるページへのアクセスは規制される。ページのロックが解除されると、他のプロセスによるページへのアクセスが許容される。つまり、ページの排他制御が行われる。
【００５７】  ラインポインタ作成プロセスが、ページに、タプル１に対応するラインポインタＬＰ１を書き込んでいる間、タプル１の書き込みは行われない。ラインポインタＬＰ１の書き込みが完了すると、ページのロックが解除される。
【００５８】  ページのロックが解除されると、図６の例に示されるように、タプル１に対応するページ作成プロセス１は、ページをロックして、タプル１をページに書き込む。該ページがロックされることで、ラインポインタ作成プロセスを含む他のプロセスによる該ページへのアクセスは規制される。
【００５９】  図６の例に示されるように、ラインポインタ作成プロセスがタプル２を取得している場合、ラインポインタ作成プロセスは、タプル１の書き込みが完了するまで、待機する。ページに対するタプル１の書き込みが完了すると、ページのロックが解除される。
【００６０】  ページのロックが解除されると、図７の例に示されるように、ラインポインタ作成プロセスは、ページをロックし、タプル２のラインポインタをページに書き込む。ラインポインタ作成プロセスがページのロックを解除すると、図８の例に示されるように、ページ作成プロセスが、ページをロックして、該ページに、タプル２を書き込む。
【００６１】  図８の例に示されるように、タプル２の書き込みが行われる際に、タプル１の書き込みは完了している。図８の例において、網掛けが施されているタプル１は、書き込みが完了していることを示す。
【００６２】  従って、１つのページに対して１つのページ作成プロセスによるタプルの書き込みが許容されるため、ページ作成プロセスは、ページ内に順番にタプルを書き込むことができる。よって、タプル１とタプル２とを連続させることができ、タプル１にタプル２を上書きすることが回避される。
【００６３】  一方、上述したように、各プロセスは、ページをロックした後に、該ページにラインポインタまたはタプルを書き込むため、１つのページに、複数のページ作成プロセスが並列にタプルを書き込むことは規制される。よって、ページ生成の並列度が向上しないため、ロード処理の高速化が図られない。
【００６４】＜ページをロックすることなく複数タプルの並列書き込みを行なう際の不具合の一例＞  次に、図９を参照して、共有メモリ３４に記憶されているページをロックすることなく、複数のページ作成プロセスが並列にタプルをページに書き込む際の不具合の一例について説明する。
【００６５】  上述したように、複数のＧＰＵコア３１は、共有メモリ３４に対して、同時にアクセスすることが許容される。従って、ページのロックを行なわれなければ、共有メモリ３４に対して、複数のページ作成プロセスが、並列にタプルをページに書き込むことができる。
【００６６】  従って、共有メモリ３４に記憶されたページに対して、複数のプロセスが並列に書き込みを行なうことができる。例えば、図９は、５つのページ作成プロセスが、ページに対して、並列にタプル１〜タプル５を書き込む例を示す。
【００６７】  図９の例において、ページのロックはされていないため、５つのページ作成プロセスは、タプルを並列にページに書き込むことができる。ただし、各ページ作成プロセスが、自由にタプルの書き込みを行なうと、ページ内のタプルが連続しないことがあり、ページ内のタプルに対して他のタプルによる上書きがされることがある。
【００６８】  図９の例では、ページ内にタプルが存在しない領域が生じている。該領域（不連続領域）は、タプルが連続して書き込まれないことに起因して生じる。ページ内に不連続領域を生じると、ページの使用率が低下する。図９の例において、不連続領域は「empty」と表記される。
【００６９】  ページの使用率が低下すると、データベース４の検索時の検索性能が低下する。一方、ページにタプルが連続して書き込まれると、ページの使用率が高くなり、上記検索性能が向上する。
【００７０】  また、ページ内のタプルに対して他のタプルによる上書きがされると、タプルの情報が失われる。図９の例では、タプル３に対してタプル５による上書きがされているため、タプル３のうち一部（図９の例におけるハッチングで示される領域）の情報が失われる。
【００７１】＜実施形態における共有メモリのページに対するタプル書き込みの一例＞  次に、実施形態における共有メモリ３４のページに対するタプル書き込みの一例について、図１０乃至図１５を参照して説明する。図１０乃至図１５の例におけるページは、共有メモリ３４に記憶される。従って、複数のプロセスによるページに対する同時アクセスは許容される。また、共有メモリ３４中のページはロックされることなく、複数のプロセスが該ページに、並列に書き込みを行なう。
【００７２】  図１０の例に示されるように、１つのページに対して、１つのラインポインタ作成プロセスが生成される。該ラインポインタ作成プロセスは、タプル１を取得すると、タプル１に対応するラインポインタＬＰ１を、ページ内のページヘッダに続く領域に書き込む。該ラインポインタＬＰ１は、タプル１のタプルサイズおよびオフセットの情報を含む。
【００７３】  ラインポインタ作成プロセスは、書き込み済みのラインポインタのオフセットおよびタプルサイズに基づいて、オフセットを求めてもよい。図１０の例では、書き込み済みのラインポインタは存在しないため、ラインポインタ作成部は、初期位置（初期アドレス）を、タプル１の書き込み開始位置（オフセット）に設定する。
【００７４】  ラインポインタ作成プロセスは、ラインポインタＬＰ１をページ１に書き込むとともに、タプル１に対応するページ作成プロセス１を生成する。ページ作成プロセス１は、タプル１をページに書き込むプロセスである。
【００７５】  生成されたページ作成プロセス１と、ラインポインタ作成プロセスとは、非同期且つ独立に動作する。例えば、ページ作成プロセス１とラインポインタ作成プロセスとが、異なるＧＰＵコア３１に割り当てられたとする。それぞれのＧＰＵコア３１に割り当てられたプロセスは、非同期且つ独立に動作する。
【００７６】  従って、ラインポインタ作成プロセスの動作から、ページ作成プロセス１の動作は、分離される。ラインポインタ作成プロセスは、ページ作成プロセス１を生成する際、ラインポインタＬＰ１の情報を該ページ作成プロセス１に渡す。
【００７７】  ページ作成プロセス１は、ラインポインタ作成プロセスから渡されたラインポインタＬＰ１のうちオフセットに基づいて、ページ内におけるタプル１の書き込み開始位置を認識する。
【００７８】  図１１の例に示されるように、ページ作成プロセス１は、認識したオフセット（書き込み開始位置）で指定される領域にタプル１を書き込む。ページ作成プロセス１は、ラインポインタ作成プロセスの動作にかかわらず、タプル１をページに書き込む。従って、ラインポインタ作成プロセスとページ作成プロセス１とは、並列にページに対して書き込みを行なう。
【００７９】  図１１の例において、ラインポインタ作成プロセスは、タプル２を取得する。ラインポインタの情報量は、タプルの情報量より小さいため、ページ作成プロセス１によるタプル１の書き込みが完了する前に、ラインポインタＬＰ１の書き込みは完了する。
【００８０】  ラインポインタ作成プロセスは、上記初期位置からタプル１のタプルサイズの分だけ後の位置（例えば、初期アドレスからタプルサイズの分だけ後のアドレス）を書き込み開始（オフセット）として設定する。
【００８１】  ラインポインタ作成プロセスは、タプル２のタプルサイズおよび上記オフセットを含むラインポインタＬＰ２を、ラインポインタＬＰ１に続く領域に書き込む。ラインポインタ作成プロセスは、ラインポインタＬＰ２をページに書き込むとともに、ページ作成プロセス２を生成し、該ラインポインタ作成プロセスに、ラインポインタＬＰ２の情報を渡す。
【００８２】  ページ作成プロセス２は、ラインポインタＬＰ２のオフセット（ラインポインタＬＰ２で指定される領域）に基づいて、タプル２を書き込む。従って、タプル１とタプル２とを連続して書き込むことができる。また、タプル１にタプル２が上書きされることはない。
【００８３】  図１２の例において、ラインポインタ作成プロセスがタプル３を取得した際、ページ作成プロセス１によるタプル１の書き込みと、ページ作成プロセス２によるタプル２の書き込みとは、並列に行なわれている。
【００８４】  次に、図１３の例において、ラインポインタ作成プロセスは、タプル３、タプル４、タプル５の順番で、該３つのタプルを短い時間間隔で取得したとする。ラインポインタ作成プロセスは、タプル３、タプル４、タプル５の順番で、対応するラインポインタをページに書き込む。
【００８５】  ラインポインタ作成プロセスは、タプル３に対応するラインポインタＬＰ３のオフセットを、ラインポインタＬＰ２のオフセットからタプル２のタプルサイズの後に設定する。つまり、ラインポインタ作成プロセスは、取得したタプルの１つ前のタプルに対応するラインポインタのオフセットから、上記１つ前のタプルのタプルサイズの後の位置を、取得したタプルのオフセットに設定する。
【００８６】  実施形態におけるラインポインタの情報量は小さい。従って、ラインポインタ作成プロセスは、上記３つのタプルを取得した時間間隔が短いとしても、順次、ラインポインタをページに書き込むことができる。
【００８７】  上述したように、ページに対してロックがされることなく、各プロセスによるページに対する並列書き込みが許容される。従って、ラインポインタ作成プロセスがラインポインタをページに書き込んでいる間に、ページ作成プロセスはページにタプルを書き込むことができる。
【００８８】  ラインポインタの情報量は、タプルの情報量より小さく、且つ、ラインポインタ作成プロセスと書き込みとページ作成プロセスとがページに対して並列に書き込むことが許容される。
【００８９】  従って、ページ作成プロセスは、タプル作成プロセスの動作が完了するまで、待機することがない。よって、並列度が向上し、ロード処理の高速化が図られる。
【００９０】  ラインポインタ作成プロセスは、タプルをページに書き込むとともに、対応するタプルのページ作成プロセスを生成する。図１３の例では、ラインポインタ作成プロセスは、ページ作成プロセス３、ページ作成プロセス４およびページ作成プロセス５を、順次、生成する。
【００９１】  図１３の例では、タプル１の書き込みは完了している。一方、ページ作成プロセス２は、タプル２の書き込みを行なっている。
【００９２】  図１４の例において、ページ作成プロセス３によるタプル３の書き込みと、ページ作成プロセス４によるタプル４の書き込みと、ページ作成プロセス５によるタプル５の書き込みとは、並列に行なわれる。
【００９３】  従って、複数のタプルの書き込みが並列に行なわれるため、並列度が向上し、ロード処理の高速化が図られる。また、ラインポインタ作成プロセスと各ページ作成プロセスとは、非同期且つ独立に動作するため、並列度が向上する。
【００９４】  １つのページに対応する１つのラインポインタ作成プロセスが、タプルの取得に応じて、ページ作成プロセスを生成するため、短い時間間隔で複数のページ作成プロセスが生成される。
【００９５】  ラインポインタ作成プロセスは、各ページ作成プロセスに、ラインポインタの情報（書き込み領域に関する制御情報）を渡し、各ページ作成プロセスが、ラインポインタの情報に基づいて、タプルを並列に書き込む。
【００９６】  各ページ作成プロセスが並列にタプルを書き込む場合、各ページ作成プロセスは、ページ内のオフセットで指定される位置からタプルを書き込む。従って、ページをロックしなくても、ページ内に上述した不連続領域が生じることがなくなり、ページに書き込み済みのタプルに対して、他のタプルによる上書きがされることが回避される。
【００９７】  ラインポインタ作成プロセスは、タプルの取得に応じて、ラインポインタをページに書き込む。上述したように、ラインポインタは、タプルサイズおよびオフセットの情報を含む。データベース４の検索時に、ラインポインタに基づいて、ページ内に記憶された複数のタプルの書き込み位置が特定される。
【００９８】  例えば、ラインポインタの情報量は、固定の４バイトであるとする。ラインポインタ作成プロセスは、タプルの取得に応じて、順次、ラインポインタをページに書き込む。ラインポインタは固定の４バイトであるため、ラインポインタ作成プロセスは、タプルの取得に応じて、４バイトずつに区切って、順次、ラインポインタをページに書き込む。
【００９９】  従って、ラインポインタ作成プロセスは、ページヘッダのロックおよび該ロックの解除を行なうことなく、順次、ラインポインタをページに書き込むことができる。例えば、ラインポインタ作成プロセスが、ページヘッダのロックおよび該ロックの解除の制御を行うと、該制御に起因する待ち時間が生じる。該待ち時間は、並列度を低下させる要因となる。
【０１００】  ラインポインタの情報量が、４バイトという少ない情報量であっても、ＧＰＵコア３１の増加に応じて、並列度が向上すると、上記の待ち時間がロード処理全体の処理時間に与える影響が大きくなる。
【０１０１】  実施形態では、ラインポインタ作成プロセスは、ページヘッダのロックおよび該ロックの解除を行なうことなく、所定の情報量（４バイト）ごとに、順次、ラインポインタをページに書き込む。従って、上記の待ち時間がなくなり、ロード処理の高速化が図られる。
【０１０２】＜実施形態の処理の流れの一例を示すフローチャート＞  図１５乃至図１８のフローチャートを参照して、実施形態の処理の流れの一例について説明する。上述したように、高速ローダ３は、１または複数のページを生成する。高速ローダ３は、ページごとに、データ変換プロセスを生成する（ステップＳ１）。
【０１０３】  従って、複数のデータ変換プロセスが生成される。複数のデータ変換プロセスは、それぞれ、異なるＧＰＵコア３１に割り当てられてもよい。高速ローダ３は、ページごとに、１つのラインポインタ作成プロセスを生成する（ステップＳ２）。ページごとのラインポインタ作成プロセスは、それぞれ異なるＧＰＵコア３１に割り当てられてもよい。
【０１０４】  高速ローダ３は、インプットデータ（ＣＳＶデータ）を受け付けたかを判定する（ステップＳ３）。例えば、サーバ２からインプットデータを通信部１５が受信した場合、ステップＳ３はＹＥＳとなる。
【０１０５】  ステップＳ３でＮＯの場合、処理は、次のステップに進まない。ステップＳ３でＹＥＳの場合、割り当て部１１は、インプットデータに含まれる複数のレコードを、共有メモリ３４中の複数のページのうち何れかのページに割り当てる（ステップＳ４）。
【０１０６】  高速ローダ３は、ページをデータベース４にロードするかを判定する（ステップＳ５）。ステップＳ５でＮＯの場合、処理は、ステップＳ３に戻る。ステップＳ５でＹＥＳの場合、反映部１４は、複数のタプルが書き込まれた複数のページを、データベース４にロードすることにより、データベース４に各タプルを反映させる（ステップＳ６）。
【０１０７】  例えば、通信部１５が、データベース４に複数のページを送信し、データベース４は、受信した複数のページをテーブルに挿入することにより、ステップＳ６の処理が行われてもよい。
【０１０８】  図１６を参照して、各データ変換プロセスが行なうデータ変換処理の流れの一例を説明する。複数のデータ変換プロセスは、インプットデータに含まれる複数のレコードを、順次取得する（ステップＳ１１）。
【０１０９】  各データ変換プロセスは、取得したレコードを、データベース４の形式に適合したタプルに変換する（ステップＳ１２）。該タプルは、データベース４のテーブルに挿入可能な形式のデータである。
【０１１０】  データ変換プロセスは、上記タプルおよび該タプルのタプルサイズの情報をキューに格納する（ステップＳ１３）。例えば、キューは、共有メモリ３４の一部の領域により実現されてもよい。
【０１１１】  次に、図１７を参照して、ラインポインタ作成プロセスの処理の流れについて説明する。上述したように、１つのページについて、１つのラインポインタ作成プロセスが生成される。該ラインポインタ作成プロセスは、対応するページを初期化する（ステップＳ２１）。
【０１１２】  ラインポインタ作成プロセスは、上述したキューにタプルがあるかを判定する（ステップＳ２２）。ステップＳ２２でＹＥＳの場合、ラインポインタ作成プロセスは、キューからタプルを取得する（ステップＳ２３）。
【０１１３】  キューには、データ変換プロセスがレコードを変換した順番に、タプルが格納される。ラインポインタ作成プロセスは、キューから、タプルを取得することで、レコードからタプルに変換された順番に応じて、タプルおよび該タプルのタプルサイズの情報を取得する。
【０１１４】  ラインポインタ作成プロセスは、タプルサイズおよびオフセットを含むラインポインタをページに書き込むとともに、タプルに対応したページ作成プロセスを生成する（ステップＳ２４）。また、ラインポインタ作成プロセスは、生成したページ作成プロセスに、ラインポインタおよびタプルを渡す（ステップＳ２５）。
【０１１５】  ラインポインタ作成プロセスは、キューからタプルおよびタプルサイズの情報を取得するごとに、ラインポインタをページに書き込み、対応するページ作成プロセスを生成する。生成された各ページ作成プロセスは、それぞれ非同期且つ独立に動作する。また、各ページ作成プロセスとラインポインタ作成プロセスとは、非同期且つ独立に動作する。
【０１１６】  ステップＳ２２でＮＯの場合、ラインポインタ作成プロセスに対応するページ作成プロセスの動作が全て終了したかが判定される（ステップＳ２６）。ステップＳ２６でＮＯの場合、ページ作成プロセスがページにタプルを書き込んでいるため、処理は、ステップＳ２６に戻る。ステップＳ２６でＹＥＳの場合、処理は、終了する。
【０１１７】  次に、図１８を参照して、ページ作成プロセスの処理について説明する。上述したように、ラインポインタ作成プロセスは、生成したページ作成プロセスにラインポインタを渡す。ページ作成プロセスは、ラインポインタのうちオフセットを認識する（ステップＳ３１）。該オフセットは、ページ内のタプルの書き込み開始位置を示す。
【０１１８】  ページ作成プロセスは、ページ内のオフセットの位置から、タプルを書き込む（ステップＳ３２）。タプルの書き込みが完了するまで（ステップＳ３３でＮＯ）、ページ作成プロセスは、ページにタプルを書き込む。タプルの書き込みが完了すると（ステップＳ３３でＹＥＳ）、ページ作成プロセスの処理は終了する。
【０１１９】  上述したように、１つのページに対応する複数のページ作成プロセスは、非同期且つ並列に動作を行なう。従って、各ページ作成プロセスが、図１８に示される各処理を並列に行なうことで、タプルの書き込みが並列に行なわれる。
【０１２０】＜高速ローダのハードウェア構成の一例＞  次に、図１９の例を参照して、高速ローダ３のハードウェア構成の一例を説明する。図１９の例に示すように、バス１００に対して、ＧＰＵ２１とＲＡＭ２２とRead Only Memory(ROM)１１３とが接続される。また、該バス１００に対して、補助記憶装置１１４と媒体接続部１１５と通信インタフェース１１６とが接続される。
【０１２１】  ＧＰＵ２１は、ＲＡＭ２２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態における処理を行うプログラムが適用されてもよい。
【０１２２】  ＲＯＭ１１３はＲＡＭ１１２に展開されるプログラムを記憶する不揮発性の記憶装置である。補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が適用されてもよい。媒体接続部１１５は、可搬型記録媒体１２０と接続可能に設けられている。
【０１２３】  可搬型記録媒体１１５Ｍとしては、可搬型のメモリ（例えば、半導体メモリ）や光学式ディスク（例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)）等が適用されてもよい。この可搬型記録媒体１１５Ｍに実施形態の処理を行うプログラムが記録されていてもよい。
【０１２４】  上述した割り当て部１１とデータ変換部１２と書き込み部１３と反映部１４とは、与えられたプログラムをＧＰＵ２１が実行することにより実現されてもよい。また、通信部１５は、通信インタフェース１１６により実現されてもよい。
【０１２５】  ＲＡＭ２２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１５Ｍは、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【０１２６】＜その他＞  上述した実施形態では、高速ローダ３にＧＰＵ２１が搭載されている例を説明したが、高速ローダ３に、Central Processing Unit(CPU)が搭載されていてもよい。該ＣＰＵが複数のＣＰＵコアを持つことで、上述した実施形態の処理が実現される。ＧＰＵ２１およびＣＰＵは、プロセッサの一例である。
【０１２７】  上述した実施形態における高速ローダ３は、１つのトランザクションで、複数のタプルが書き込まれたページを、データベース４に挿入する処理（ロード処理）を行う場合を想定している。
【０１２８】  例えば、Online Transaction Processing(OLTP)業務においては、複数のトランザクションが、更新処理、削除処理、参照処理等の挿入処理以外の処理を、データベース４に対して要求する。例えば、更新処理であれば、ページに対して更新を行なっている間、該ページに対する他のプロセスによるアクセスは規制される。
【０１２９】  従って、ＯＬＴＰ業務において、例えば、更新処理に関するトランザクションと参照処理に関するトランザクションとが同時に発生した場合、一方のトランザクションは、他のトランザクションの処理が完了するまで、待機することになる。このため、処理速度の高速化が図られない。
【０１３０】  上述したロード処理は、１つのトランザクションで、複数のタプルが書き込まれたページをデータベース４に挿入する処理であるため、処理速度の高速化が図られる。１つのトランザクションに含まれるタプルの数が多くなるに応じて、処理速度が高速になる。従って、実施形態の処理は、ロード処理に適する。
【０１３１】  また、上述した実施形態のシステム１は、銀行等の金融機関のシステムであってもよい。例えば、銀行のシステム１において、サーバ２は、銀行の基幹サーバであるとする。該サーバ２は、多くのAutomated Teller Machine(ATM)に接続される。
【０１３２】  ＡＴＭの利用者は、該ＡＴＭを用いて、金融取引の操作（例えば、振込み等の操作）を行う。銀行の基幹サーバは、１つの金融取引に関するデータをＡＴＭから受信すると、該金融取引を１つのレコードとして処理する。
【０１３３】  銀行の基幹サーバには、多くのＡＴＭが接続されるため、該銀行の基幹サーバ（サーバ２）は、短時間に大量のレコードを生成する。該サーバ２は、大量のレコードからインプットデータを生成し、該インプットデータを高速ローダ３に送信する。
【０１３４】  高速ローダ３は、サーバ２からインプットデータを受信すると、該インプットデータに含まれる大量のレコードを、複数のページに割り当てる。高速ローダ３は、実施形態の処理を行い、各ページに対して、複数のタプルを書き込み、複数のページを生成する。
【０１３５】  高速ローダ３は、複数のページを一括して、データベース４に挿入するロード処理を行なう。従って、銀行システムのように、大量のレコードをデータベースにロードするシステムに実施形態の高速ローダ３が適用されることで、金融取引に関するデータを高速にデータベースに反映することができる。なお、実施形態のシステム１は、金融機関のシステムには限定されない。
【０１３６】  本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０１３７】      １    システム      ２    サーバ      ３    高速ローダ      ４    データベース    １１    割り当て部    １２    データ変換部    １３    書き込み部    １４    反映部    １５    通信部    ２１    ＧＰＵ    ２２    ＲＡＭ    ３１    ＧＰＵコア    ３２    レジスタ    ３３    Ｌ１キャッシュメモリ    ３４    共有メモリ
【図１】
2019008715.tif 000003
【図２】
2019008715.tif 000004
【図３】
2019008715.tif 000005
【図４】
2019008715.tif 000006
【図５】
2019008715.tif 000007
【図６】
2019008715.tif 000008
【図７】
2019008715.tif 000009
【図８】
2019008715.tif 000010
【図９】
2019008715.tif 000011
【図１０】
2019008715.tif 000012
【図１１】
2019008715.tif 000013
【図１２】
2019008715.tif 000014
【図１３】
2019008715.tif 000015
【図１４】
2019008715.tif 000016
【図１５】
2019008715.tif 000017
【図１６】
2019008715.tif 000018
【図１７】
2019008715.tif 000019
【図１８】
2019008715.tif 000020
【図１９】
2019008715.tif 000021
【手続補正書】
【提出日】令和1年11月1日(2019.11.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のレコードを含むデータをデータベースにロードするデータロードプログラムであって、
複数のプロセスから同時にアクセス可能な共有メモリ中のページに、前記複数のレコードを割り当て、
前記複数のレコードのそれぞれについて、前記レコードの書き込み領域に関する制御情報を前記ページに書き込むとともに、前記複数のレコードのそれぞれに対応した書き込みプロセスを生成し、
生成された複数の前記書き込みプロセスにより、それぞれ対応するレコードを、該レコードに対応する前記書き込み領域に書き込み、
複数の前記レコードが書き込まれた前記ページを、前記データベースに反映させる、
処理をデータロード装置に実行させることを特徴とするデータロードプログラム。
【請求項２】
前記複数のレコードを、前記データベースに適合した形式に変換し、
前記複数の書き込みプロセスにより、変換された前記複数のレコードを、前記ページに書き込む、
処理を前記データロード装置に実行させることを特徴とする請求項１記載のデータロードプログラム。
【請求項３】
前記ページに対応して、前記制御情報を書き込む１つの制御プロセスを生成し、
該１つの制御プロセスが、変換された前記レコードの取得に応じて、複数の前記書き込みプロセスを生成する、
処理を前記データロード装置に実行させることを特徴とする請求項２記載のデータロードプログラム。
【請求項４】
前記レコードの取得に応じて、前記制御プロセスにより、前記ページに、前記制御情報を書き込む、
処理を前記データロード装置に実行させることを特徴とする請求項３記載のデータロードプログラム。
【請求項５】
前記制御プロセスにより前記書き込みプロセスが生成された際、該書き込みプロセスに対応する前記制御情報を、該書き込みプロセスに渡す、
処理を前記データロード装置に実行させることを特徴とする請求項３記載のデータロードプログラム。
【請求項６】
前記複数の書き込みプロセスは、相互に、非同期且つ並列に動作する、
ことを特徴とする請求項１乃至５のうち何れか１項に記載のデータロードプログラム。
【請求項７】
前記複数の書き込みプロセスと前記制御プロセスとは、非同期且つ並列に動作する、
ことを特徴とする請求項６記載のデータロードプログラム。
【請求項８】
前記制御プロセスが前記ページに書き込む前記制御情報の情報量は、前記書き込みプロセスが前記ページに書き込む前記レコードの情報量より小さい、
ことを特徴とする請求項３乃至７のうち何れか１項に記載のデータロードプログラム。
【請求項９】
前記制御情報は、前記ページに書き込み済みのタプルの情報量に基づく書き込み開始位置の情報を含む、
ことを特徴とする請求項１乃至８のうち何れか１項に記載のデータロードプログラム。
【請求項１０】
前記割り当てる処理において、前記共有メモリ中の複数のページのうち何れかのページに、前記複数のレコードを割り当て、
前記反映させる処理において、複数の前記レコードが書き込まれた複数の前記ページを、前記データベースに反映させる、
ことを特徴とする請求項１乃至９のうち何れか１項に記載のデータロードプログラム。
【請求項１１】
前記共有メモリは、マルチコアプロセッサに搭載され、複数のコアから同時にアクセス可能なメモリであること、
を特徴とする請求項１乃至１０のうち何れか１項に記載のデータロードプログラム。
【請求項１２】
複数のレコードを含むデータをデータベースにロードするデータロード方法であって、
複数のプロセスから同時にアクセス可能な共有メモリ中のページに、前記複数のレコードを割り当て、
前記複数のレコードのそれぞれについて、前記レコードの書き込み領域に関する制御情報を前記ページに書き込むとともに、前記複数のレコードのそれぞれに対応した書き込みプロセスを生成し、
生成された複数の前記書き込みプロセスにより、それぞれ対応するレコードを、該レコードに対応する前記書き込み領域に書き込み、
複数の前記レコードが書き込まれた前記ページを、前記データベースに反映させる、
処理をデータロード装置が実行することを特徴とするデータロード方法。
【請求項１３】
複数のレコードを含むデータをデータベースにロードするデータロード装置であって、
複数のプロセスから同時にアクセス可能な共有メモリ中のページに、前記複数のレコードを割り当てる割り当て部と、
前記複数のレコードのそれぞれについて、前記レコードの書き込み領域に関する制御情報を前記ページに書き込むとともに、前記複数のレコードのそれぞれに対応した書き込みプロセスを生成し、生成された複数の前記書き込みプロセスにより、それぞれ対応するレコードを、該レコードに対応する前記書き込み領域に書き込む書き込み部と、
複数の前記レコードが書き込まれた前記ページを、前記データベースに反映させる反映部と、
を備えることを特徴とするデータロード装置。
【国際調査報告】
2019008715.tif 000022
2019008715.tif 000023