JP2018132948A - 読込プログラム、読込方法および情報処理装置 - Google Patents

読込プログラム、読込方法および情報処理装置 Download PDF

Info

Publication number
JP2018132948A
JP2018132948A JP2017026165A JP2017026165A JP2018132948A JP 2018132948 A JP2018132948 A JP 2018132948A JP 2017026165 A JP2017026165 A JP 2017026165A JP 2017026165 A JP2017026165 A JP 2017026165A JP 2018132948 A JP2018132948 A JP 2018132948A
Authority
JP
Japan
Prior art keywords
record
file
block
delimiter
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017026165A
Other languages
English (en)
Other versions
JP6772883B2 (ja
Inventor
敏郎 小野
Toshiro Ono
敏郎 小野
雅樹 西垣
Masaki Nishigaki
雅樹 西垣
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017026165A priority Critical patent/JP6772883B2/ja
Priority to US15/892,845 priority patent/US10990604B2/en
Publication of JP2018132948A publication Critical patent/JP2018132948A/ja
Application granted granted Critical
Publication of JP6772883B2 publication Critical patent/JP6772883B2/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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Software Systems (AREA)

Abstract

【課題】拡張書式を含む、デリミタで区切られたテキストファイルの読み込みを並列処理で実行することを課題とする。
【解決手段】情報処理装置は、複数のプロセスにより、デリミタにより区切られたテキストファイルを分割した複数の分割ファイルそれぞれに対して、拡張書式が有効である場合と無効である場合の双方の場合における、レコード区切り候補を特定する。情報処理装置は、複数の分割ファイルを、先頭部分からの順番に対応した順序で、拡張書式が有効である場合か、無効である場合かの状態をそれぞれ確定することにより、テキストファイルのレコード区切りを確定させる。
【選択図】図7

Description

本発明は、読込プログラム、読込方法および情報処理装置に関する。
従来から、内部に格納されているデータから該当データを検索し、利用者により指定された演算を行うDBMS(DataBase Management System)が利用されている。DBMSでは、データを格納するために、他のシステムから送信されたファイルからデータを抜き出して格納するデータロード機能(以降では、単にローダと記載する場合がある)を実行する。ローダは、他のシステムからファイルで一括にデータを移送することから、シーケンシャル入出力処理、パイプライン処理、同時実行処理、並列処理などを用いることで、処理速度を高速化する。
以前のコンピュータ資源では、並列処理を用いたファイルの並列読み込みは、利用者の運用設計によりファイルの分割が行われた上で実行される。現在のコンピュータ資源は、従来のコンピュータ資源に比べて、コア数やメモリ(RAM:Random Access Memory)の容量が増加していることから、単一の容量の大きいファイルを転送して一気にDBMSに格納することが行われる。このように、現在のコンピュータ資源では、ファイル転送されたファイルをファイルキャッシュであるRAMに格納できるので、ランダムアクセスによるボトルネックが少ない。
このため、近年では、利用者がファイルを分割することなく、ファイルからのデータ入力を並列化して実行することが行われている。具体的には、現在使用されるコンピュータは、任意の並列度分の処理単位により、ファイル転送されてRAMに格納される一つのファイルを分割して、データ読み出しを実行する。
特開2009−116395号公報 特開2015−170170号公報
しかしながら、拡張書式を含む、デリミタで区切られたテキストファイルの読み込みを並列処理で実行すると、処理性能が低下する。
一般的に、ロードの入力ファイルは、システム間でのデータ連携となることから、各項目をカンマなどの区切り文字で区切るとともに一行の末端を改行コードで表すCSV(Comma−Separated Values)形式であることが多い。そして、CSVファイルを並列処理で読み込む場合、区切り文字の認識を確定してから、並列処理を行うことになり、処理性能が区切り文字の認識によりボトルネックとなる。
一つの側面では、拡張書式を含む、デリミタで区切られたテキストファイルの読み込みを並列処理で実行できる読込プログラム、読込方法および情報処理装置を提供することを目的とする。
第1の案では、読込プログラムは、コンピュータに、複数のプロセスにより、デリミタにより区切られたテキストファイルを分割した複数の分割ファイルそれぞれに対して、拡張書式が有効である場合と無効である場合の双方の場合における、レコード区切り候補を特定する処理を実行させる。読込プログラムは、コンピュータに、前記複数の分割ファイルを、先頭部分からの順番に対応した順序で、前記拡張書式が有効である場合か、無効である場合かの状態をそれぞれ確定することにより、前記テキストファイルのレコード区切りを確定させる処理を実行させる。
一実施形態によれば、拡張書式を含む、デリミタで区切られたテキストファイルの読み込みを並列処理で実行できる。
図1は、実施例1にかかる読込処理を説明する図である。 図2は、実施例1にかかる情報処理装置の機能構成を示す機能ブロック図である。 図3は、入力されるCSVファイルの一例を示す図である。 図4は、ブロック共有情報DBに記憶される情報の例を示す図である。 図5は、解析の具体例を説明する図である。 図6は、ブロック共有情報の更新例を説明する図である。 図7は、CSV解析の並列処理を説明する図である。 図8は、CSVファイルの解析処理の流れを示すフローチャートである。 図9は、探索処理の流れを示すフローチャートである。 図10は、更新・連携処理の流れを示すフローチャートである。 図11は、実施例2にかかる入力ファイルの割当てを説明する図である。 図12は、実施例2にかかるCSVの解析手法を説明する図である。 図13は、実施例2にかかるブロック共有情報の更新例を説明する図である。 図14は、ハードウェア構成例を説明する図である。
以下に、本願の開示する読込プログラム、読込方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[実施例1にかかる読込処理の説明]
実施例1にかかる情報処理装置10は、複数のCPU(Central Processing Unit)を有し、並列処理を実行するサーバ装置の一例である。例えば、情報処理装置10は、コンピュータ資源として、48個以上のCPU、256GBの容量を有するRAM、で乱アクセスに強い不揮発性メモリ型のディスクなどを有する。
このような情報処理装置10は、複数のCPUを用いて、他システムから入力されたファイルをRAMに格納してDB(データベース)へ転送する処理を並列に実行する。具体的には、情報処理装置10は、データ入力処理を並列実行し、エンコード処理を並列実行し、テーブル生成処理を並列実行し、インデックス生成処理を並列実行して、ファイルをDB(DBMS)へ書き込む。
例えば、データ入力処理は、ファイルからDBMSの1レコード分ずつデータを取り込む処理である。エンコード処理は、データの形をDBMSのレコード形式に変更する処理である。インデックス生成処理は、テーブルのレコードに対するインデックスを生成する処理であり、インデックスレコードの形式(キーとテーブル領域へのポインタ)への変換、インデックスレコードをキー順にソート、インデックス構成を生成してインデックス領域への書き込みなどを実行する。
そして、データ入力処理の実行に際して、情報処理装置10は、1度目の並列読み込みによる解析でレコードの切れ目を特定し、この情報を元に、2度の並列読み込みでレコードを抽出してエンコード処理への転送を行う。
ここで、実施例1にかかる読込処理について説明する。図1は、実施例1にかかる読込処理を説明する図である。図1に示すように、情報処理装置10は、入力ファイルをファイルキャッシュ(RAM)に保存する。ここで、入力ファイルは、システム間でのデータ連携で頻繁に使用されるCSV形式とする。つまり、入力ファイルは、デリミタにより区切られたテキストファイルであり、言い換えると、各項目をカンマなどの区切り文字で区切り、一行の末端を改行コードで示す形式で作成されたファイルである。
そして、情報処理装置10は、データ入力のプロセスであるプロセスP1、P2、P3を並列に実行する。具体的には、各プロセスP1からP3は、デリミタにより区切られたテキストファイルが分割された複数の分割ファイルそれぞれに対して、拡張書式が有効である場合と無効である場合の双方の場合における、レコード区切り候補を特定する。
続いて、各プロセスP1からP3は、自プロセスが対応する分割ファイルのテキストファイルを先頭部分からの順番に対応した順序で読み込む場合に、分割ファイルにおいて、拡張書式が有効である場合か、無効である場合かの状態を確定することにより、テキストファイルのレコード区切りを確定させる。
つまり、各プロセスP1からP3は、データの一部とみなす囲み文字の開始(ON)と仮定した状態と囲み文字の終了(OFF)と仮定した状態の2つのパターンで、担当する分割ファイルから改行コードを検出し、レコードの跨り位置を推定してブロック解析情報として保持する。そして、各プロセスP1からP3は、先行する分割ファイルを担当する先行プロセスによる囲み文字状態の判定結果にしたがって、推定したレコードの跨り位置のいずれかを用いて、レコード範囲を確定する。
その後、各プロセスP1からP3は、決定したレコードの跨り位置にしたがって、分割ファイルからレコードを抽出して、エンコード処理を実行するプロセスPP1、PP2、PP3に転送する。この結果、CSVの入力ファイルは、DBMS形式に変換されて、DBへ格納される。
したがって、囲み文字で囲まれた中の改行コードと、一行の末端を改行コードとを区別して読み込むことができ、拡張書式を含む、デリミタで区切られたテキストファイルの読み込みを並列処理で実行できる
[機能構成]
図2は、実施例1にかかる情報処理装置の機能構成を示す機能ブロック図である。図2に示すように、情報処理装置10は、通信部11、第1記憶部12、第2記憶部14、第3記憶部16、制御部20を有する。
通信部11は、他システムや他装置と情報処理装置10との間の通信を制御する通信インタフェースである。例えば、通信部11は、図示しない他システムからCSV形式の入力ファイルを受信して、第1記憶部12に格納する。
第1記憶部12は、CSV形式の入力ファイル13を記憶する記憶装置の一例であり、例えばRAM(ファイルキャッシュ)などである。図3は、入力されるCSVファイル(入力ファイル)の一例を示す図である。図3に示すように、入力ファイル13は、各項目をカンマなどの区切り文字で区切り、一行の末端を改行コードで示すデータ構造(CSV)である。ここで、ダブルコーテーション「“」で囲まれた改行コード「<CRLF>」は、データの一部として扱われ、ダブルコーテーション「“」で囲まれていない「<CRLF>」は、レコード終端の改行コードを示す。
ここで、CSVファイルは、先頭から1バイトずつ参照していくと、ダブルコーテーション「“」が囲み文字の開始か終了か判断することができる。一方で、CSV形式を複数の処理が同時に読込む場合、サイズによる平坦化を行うことが一般的である。この場合、改行コードを検索して論理的なレコードの切れ目から読みだすことをしないため、レコード途中から読み込みを開始する。すると、論理的なレコードが複数の処理に跨ることになり、以降のエンコード処理などレコード単位の処理ができなくなる。
つまり、並列処理の場合、必ずしもレコードの先頭から処理されるとは限らないことから、ダブルコーテーション「“」が囲み文字の開始か終了か判断できない。例えば、図3の3行目にある「HIME」から読み込みを開始した場合、現在が囲み文字の範囲内か範囲外かを判断することができないので、次に登場する改行コード「<CRLF>」がレコードの終端を示す改行コードか、データとしての改行コードかを判断できない。本実施例では、囲み文字の範囲内か範囲外かを判断して、改行コード「<CRLF>」がレコードの終端を示す改行コードか、データとしての改行コードかを特定する。なお、CSVの仕様は、RFC4180に準拠したものとする。
第2記憶部14は、データDB15を記憶する記憶装置の一例であり、例えばハードディスクなどである。データDB15は、データをDBMSのレコード形式で記憶するデータベースである。具体的には、データDB15は、制御部20から出力されたデータであって、CSV形式の入力ファイルからDBMSのレコード形式に変換されたデータを記憶する。
第3記憶部16は、ブロック共有情報17を記憶する記憶装置の一例であり、第3記憶部16のメモリ空間は、各入力部から共通で参照できる。ブロック共有情報17は、後述する読込処理の解析結果を記憶する。図4は、ブロック共有情報17に記憶される情報の例を示す図である。図4に示すように、ブロック共有情報17は、「ブロックNo、範囲終了時点の囲み状態(A)、跨りレコードの開始位置(B)」を対応付けて記憶する。
ここで記憶される「ブロックNo」は、CSVファイルのレコードのうち、データ入力プロセスに割当てられたブロックを識別する情報である。「範囲終了時点の囲み状態(A)」は、ブロックNoで特定されるブロックが終了した時点で、囲み文字の範囲内である「ON」状態か、囲み文字の範囲外である「OFF」状態かを特定する情報である。「跨りレコードの開始位置(B)」は、現在対象のブロックで検出される最後のレコードの開始位置を特定する情報であり、先頭からのバイト数である。図4の場合、ブロックNo1は、囲み文字の範囲内(ON)の状態で終了し、最後のレコードが「9984バイト」から開始されることを示す。
制御部20は、情報処理装置10全体を司る処理部であり、例えばプロセッサなどである。制御部20は、分割部25、第1入力部30、第2入力部40、第3入力部50、生成部60を有する。なお、分割部25、第1入力部30、第2入力部40、第3入力部50、生成部60は、プロセッサが実行するプロセスの一例である。
また、第1入力部30、第2入力部40、第3入力部50のそれぞれは、上述したデータ入力のプロセスP1、P2、P3に対応する。また、生成部60は、上述したエンコード処理のプロセスPP1、PP2、PP3を含む。
分割部25は、入力ファイル13を分割して、処理対象のレコードを各入力部に割り振る処理部である。具体的には、分割部25は、入力処理の並列数に応じて、入力ファイル13を分割する。図2の例では、分割部25は、入力ファイル13を3つに分割し、第1入力部30、第2入力部40、第3入力部50のそれぞれに各分割ファイルを割当てる。
第1入力部30と第2入力部40と第3入力部50は、分割部25によって割当てられた分割ファイルからDBMSの1レコード分ずつデータを取り込む処理部である。なお、第1入力部30と第2入力部40と第3入力部50とは、同様の構成を有するので、ここでは、第1入力部30について説明する。つまり、ローカルバッファ31とローカルバッファ41とローカルバッファ51とは同様の機能を有し、解析部32と解析部42と解析部52とは同様の機能を有し、確定部33と確定部43と確定部53とは同様の機能を有する。
第1入力部30は、ローカルバッファ31、解析部32、確定部33を有し、割り振られたCSVの分割ファイルを解析して、DBMSの1レコード分ずつデータを取り込む処理部である。解析部32は、特定部の一例であり、確定部33は、確定部の一例である。
ローカルバッファ31は、分割ファイルを記憶する記憶領域である。具体的には、ローカルバッファ31は、プロセスのローカル領域であり、ファイルキャッシュとして機能する。そして、ローカルバッファ31は、分割部25によって分割された分割ファイルを保持する。
解析部32は、囲み文字の開始状態がOFFのパターンである場合と、ONのパターンである場合との2つのパターンを想定し、両方のパターンでCSVの解析を行う処理部である。具体的には、解析部32は、囲み文字が「OFF」の状態で読込が開始されたと想定した状態で、対象のレコードを1バイトずつ参照して、レコードの切れ目(b1)を特定する。また、解析部32は、囲み文字が「ON」の状態で読込が開始されたと想定した状態で、対象のレコードを1バイトずつ参照して、レコードの切れ目(b2)を特定する。
ここで、図5を用いて解析手法を説明する。図5は、解析の具体例を説明する図である。図5に示す例では、第1入力部30(P1)に、「EHIME<CRLF>WAKAYAMA“,MIKAN<CRLF>」が割当てられたとする。
第1に、解析部32は、囲み状態が「OFF」と想定して解析を実行する。具体的には、図5の例1に示すように、解析部32は、先頭の「E」から1バイトずつ参照し、はじめの「<CRLF>」が登場すると、囲み状態が「OFF」であることから改行コードと判定する。続いて、解析部32は、「“」が登場すると、現状の囲み状態が「OFF」であることから囲み状態の開始を示すダブルコーテーションであると判定して、囲み状態を「ON」に変更する。引き続き、解析部32は、次の「<CRLF>」が登場すると、現状の囲み状態が「ON」であることからデータと判定する。この結果、解析部32は、囲み状態が「OFF」と想定したときに、改行コード(b1)となる最初の「<CRLF>」の1バイト後の位置情報(例えばバイト数)と、最終的な囲み状態「a1」=「ON」とを収集する。すなわち、解析部32は、囲み状態が「OFF」の状態でプロセスが開始された(呼び出された)場合、最初の「<CRLF>」の1バイト後で改行されて、新たなレコードが始まると推定する。
第2に、解析部32は、囲み状態が「ON」と想定して解析を実行する。具体的には、図5の例2に示すように、解析部32は、先頭の「E」から1バイトずつ参照し、はじめの「<CRLF>」が登場すると、現状の囲み状態が「ON」であることからデータと判定する。続いて、解析部32は、「“」が登場すると、現状の囲み状態が「ON」であることから囲み状態の終了を示すダブルコーテーションであると判定して、囲み状態を「OFF」に変更する。引き続き、解析部32は、次の「<CRLF>」が登場すると、現状の囲み状態が「OFF」であることから改行コードと判定する。この結果、解析部32は、囲み状態が「ON」と想定したときに、改行コード(b2)となる最後の「<CRLF>」の1バイト後の位置情報(例えばバイト数)と、最終的な囲み状態「a2」=「OFF」とを収集する。すなわち、解析部32は、囲み状態が「ON」の状態でプロセスが開始された場合、最後の「<CRLF>」の1バイト後で改行されて、新たなレコードが始まると推定する。
そして、解析部32は、特定した(a1)と(b1)、(a2)と(b2)とを確定部33に通知する。なお、ここでは、囲み状態が「OFF」と「ON」のそれぞれで、対象レコードを1バイト参照する必要はなく、1回の参照で、1バイトずつ両方の判定を行う。つまり、対象レコードを2回参照する必要はなく、1回の参照で実行できる。
確定部33は、解析部32によって解析された情報のいずれを採用するかを確定する処理部である。具体的には、確定部33は、解析部32から通知された(a1)と(b1)、(a2)と(b2)を内部の記憶領域に保持する。そして、確定部33は、先行ブロックの処理結果を取得する。その後、確定部33は、先行ブロックが囲み状態「OFF」で確定した場合は、(a1)と(b1)を採用し、先行ブロックが囲み状態「ON」で確定した場合は、(a2)と(b2)を採用する。
ここで、確定部33が、情報の確定に伴って、後述するブロックを処理するプロセスへの通知を行う例を説明する。図6は、ブロック共有情報の更新例を説明する図である。図6では、2番目のブロック(分割ファイル)が割当てられたプロセスの例を図示している。
図6に示すように、確定部33は、処理対象のブロックNo=(2)に対応付けて、確定部33が取得した「範囲開始点の囲み状態がOFFの場合」と「範囲開始点の囲み状態がONの場合」とを管理する。具体的には、確定部33は、「範囲開始点の囲み状態がOFFの場合」として「(a1)=(ON)、(b1)=19885(byte)」を保持し、「範囲開始点の囲み状態がONの場合」として「(a2)=(OFF)、(b2)=19225(byte)」を保持する。その後、確定部33は、ブロック共有情報17を監視し、先行するブロックNo=1(以降では単にブロック1と記載する場合がある)を処理するプロセスによって、ブロック1のブロック共有情報が格納されると、採用する情報を特定する。
図6では、確定部33は、ブロック共有情報17を参照することで、ブロック1に対応付けて「範囲終了時点の囲み状態(A)=ON」が登録されたことを検出し、自身が対象とするブロック2が「ON」状態で開始されると判定する。この結果、確定部33は、「範囲開始点の囲み状態がONの場合」に対応付けられる「(a2)=(OFF)、(b2)=19225(byte)」を採用する。そして、確定部33は、「範囲開始点の囲み状態がOFFの場合」に対応付けられる「(a1)=(ON)、(b1)=19885(byte)」を破棄する。
そして、確定部33は、「ブロックNo=2」と「範囲終了時点の囲み状態(A)=OFF」と「跨りレコードの開始位置(B)=19225(byte)」とを対応付けて、ブロック共有情報17に追加する。この結果、ブロック3を担当するプロセスは、自身が対象とするブロック3が「OFF」状態で開始されると判定することができる。
また、確定部33は、確定した情報にしたがって、レコードをローカルバッファ31から読み出して、生成部60に出力する。例えば、図6の例では、確定部33は、再度、ブロック1の跨りレコードの開始位置(B)である9984バイト目から19224バイト目まで1バイトずつ参照して、レコードの区切りを特定する。そして、確定部33は、9984バイト目から19224バイト目までに存在する各レコードを特定して、生成部60に出力する。なお、プロセスを跨るレコードについては、後続のブロックを処理するプロセスの処理対象とする。例えば、ブロック1とブロック2を跨るレコードについては、ブロック2を処理するプロセスがレコードの転送を実行する。
生成部60は、確定部33から入力されたレコードに対して、エンコード処理やインデックス生成処理などを実行する処理部である。そして、生成部60は、これらの処理を実行することにより、ファイルからDBMSの1レコード分ずつデータを取り込んで、データDB15に格納する。
[データ入力(CSV分析)の並列処理]
ここで、第1入力部30と第2入力部40と第3入力部50とによる並列処理について説明する。図7は、CSV解析の並列処理を説明する図である。図7に示すように、分割部25によって、入力のCSVファイルがブロック1、ブロック2、ブロック3に分割される。そして、第1入力部30(プロセスP1)にブロック1が割り振られ、第2入力部40(プロセスP2)にブロック2が割り振られ、第3入力部50(プロセスP3)にブロック3が割り振られる。
そして、プロセスP1、P2、P3は、ブロックの読み込み(Read処理)とCSV解析とを並行して実行する(図7の(1))。具体的には、プロセスP1は、先頭のブロック1が割り振られているので、囲み状態が「OFF」で呼び出されたときだけを想定して、(a1)および(b1)の情報を収集する。プロセス2は、囲み状態が「OFF」で呼び出されたことを想定して、(a1)および(b1)の情報を収集するとともに、囲み状態が「ON」で呼び出されたことを想定して、(a2)および(b2)の情報を収集する。プロセス3は、囲み状態が「OFF」で呼び出されたことを想定して、(a1)および(b1)の情報を収集するとともに、囲み状態が「ON」で呼び出されたことを想定して、(a2)および(b2)の情報を収集する。
その後、プロセスP2およびプロセスP3は、先行ブロックを処理するプロセスのCSV解析結果を確認して、正しい囲み状態の開始状態を特定する(図7の(2))。具体的には、プロセスP2は、プロセスP1の最終的な囲み状態の判定結果が「ON」か「OFF」によって、(a1)または(a2)のいずれかを選択し、(b1)または(b2)のいずれかを選択する。同様に、プロセスP3は、プロセスP2の最終的な囲み状態の判定結果が「ON」か「OFF」によって、(a1)または(a2)のいずれかを選択し、(b1)または(b2)のいずれかを選択する。
その後、各プロセスは、囲み状態「(a1)または(a2)」および跨りレコードの開始位置「(b1)または(b2)」が確定すると、分割ファイルからレコードを読み出して、後続のプロセスに出力する(図7の(3))。例えば、プロセス1は、ブロック1の先頭から(b1)の位置までを再度参照して、ブロック1内の各レコードの範囲を特定しつつ、特定した各レコードをエンコードPP1に出力する。
同様に、プロセス2は、プロセス1が収集した(b1)から、確定させた(b1またはb2)の位置までを再度参照して、ブロック2内の各レコードの範囲を特定しつつ、特定した各レコードをエンコードPP2に出力する。同様に、プロセス3は、プロセス2が採用した(b1またはb2)から、確定させた(b1またはb2)の位置までを再度参照して、ブロック3内のレコードの範囲を特定しつつ、特定した各レコードをエンコードPP3に出力する。なお、ブロック1とブロック2を跨るレコードは、プロセス2が処理し、ブロック2とブロック3を跨るレコードは、プロセス3が処理する。
このようにして、各プロセスによるCSV解析とレコード読み込みとが並列に実行されて、DBMSへデータが格納される。
[処理の流れ]
次に、上述したCSVファイルの解析処理について説明する。ここでは、一例として、第1入力部30、第2入力部40、第3入力部50をまとめてデータ入力部70として説明する。
図8は、CSVファイルの解析処理の流れを示すフローチャートである。図8に示すように、分割部25は、処理開始が指示されると(S101:Yes)、各プロセスの担当範囲を決定する(S102)。具体的には、分割部25は、入力ファイルであるCSVファイルをプロセスの数に分解し、ブロック番号やサイズ/ファイルオフセットなどを取得して保持する。
続いて、データ入力部70は、ブロック解析情報を初期化する(S103)。すなわち、データ入力部70は、a1=OFF、b1=0、a2=ON、b2=0とする。
そして、データ入力部70は、分割されたファイル(分割ファイル)の所定サイズ分をローカルバッファに読み込む(S104)。続いて、データ入力部70は、読み込んだファイルサイズ(読込量)が0または読み込んだファイルが分割ファイルの終端ではない場合(S105:No)、囲み状態およびレコード跨り位置の検出を行う探索処理を実行する(S106)。
その後、データ入力部70は、担当領域に残領域がある場合(S107:Yes)、S104以降を繰り返す。例えば、データ入力部70は、分割ファイルに未処理の領域が存在する場合、未処理の領域をローカルバッファに読み込んで以降の処理を実行する。
一方、データ入力部70は、担当領域に残領域がない場合(S107:No)、囲み状態およびレコード跨り位置を特定する更新・連携処理を実行する(S108)。
そして、更新・連携処理が終了すると、データ入力部70は、S104と同様、分割ファイルをローカルバッファに読み込み(S109)、特定された囲み状態およびレコード跨り位置にしたがって、分割ファイルを1バイトずつ参照してレコードを特定し、ローカルバッファからレコードを取り出す(S110)。
その後、データ入力部70は、担当領域に読込対象のレコードが残っている場合(S111:Yes)、S110以降を繰り返す。一方、データ入力部70は、担当領域に読込対象のレコードが残っていない場合(S111:No)、プロセスを管理するプロセス管理キューから自プロセスを削除し、先頭のプロセスを呼び出す(S112)。
なお、S105において、データ入力部70は、読み込んだファイルサイズ(読込量)が0かつ読み込んだファイルが分割ファイルの終端である場合(S105:Yes)、S112を実行する。
(探索処理の流れ)
次に、図8のS106に該当する探索処理について説明する。図9は、探索処理の流れを示すフローチャートである。図9に示すように、データ入力部70は、探索位置をバッファ先頭に位置づけ(S201)、位置づけたバイトを参照して、囲み文字か否かを判定する(S202)。
そして、データ入力部70は、参照したバイトが囲み文字である場合(S202:Yes)、ブロック解析情報の囲み文字の状態(a1またはa2)を更新する(S203)。具体的には、データ入力部70は、囲み文字が「ON」で呼ばれたときと「OFF」で呼ばれたときを想定してa1とa2を更新する。例えば、データ入力部70は、現在のa1がOFFの場合、a1にONを設定し、現在のa1がONの場合、a1にOFFを設定する。同様に、データ入力部70は、現在のa2がOFFの場合、a2にONを設定し、現在のa2がOFFの場合、a2にONを設定する。
その後、S202において参照したバイトが囲み文字ではない場合(S202:No)またはS203の処理が終了した場合、データ入力部70は、参照したバイトが改行文字か否かを判定する(S204)。
そして、データ入力部70は、参照したバイトが改行文字であり(S204:Yes)、囲み文字の状態a1がOFFである場合(S205:Yes)、ブロック解析情報の跨りレコードの開始位置「b1」に「現オフセット+1」を設定する(S206)。
一方、データ入力部70は、参照したバイトが改行文字であり(S204:Yes)、囲み文字の状態a1がONであり(S205:No)、囲み文字の状態a2がOFFである場合(S207:Yes)、ブロック解析情報の跨りレコードの開始位置「b2」に「現オフセット+1」を設定する(S208)。
その後、データ入力部70は、探索位置を1バイト進めて(S209)、進めた位置が読み込んだデータ範囲を越えない場合(S210:No)、S202以降を繰り返す。一方、データ入力部70は、探索位置を1バイト進めて(S209)、進めた位置が読み込んだデータ範囲を超える場合(S210:Yes)、処理を終了する。
一方、S204において、データ入力部70は、参照したバイトが改行文字ではない場合(S204:No)、S209以降を実行する。なお、データ入力部70は、S207において、囲み文字の状態a2がOFFでもない場合(S207:No)、S209以降を実行する。
(更新・連携処理の流れ)
次に、図8のS108に該当する更新・連携処理について説明する。図10は、更新・連携処理の流れを示すフローチャートである。図10に示すように、データ入力部70は、プロセス管理キューの先頭であり、自プロセスの処理順番となった場合(S301:Yes)、ブロック共有情報17の前ブロックの範囲終了時点の囲み情報(A)を取得する(S302)。
そして、データ入力部70は、前ブロックの範囲終了時点の囲み情報(A)がOFFである場合(S303:Yes)、担当のブロックNoに対応付けて、範囲終了時点の囲み情報(A)にa1および跨りレコードの開始位置(B)にb1を設定したレコードを、ブロック共有情報17に追記する(S304)。
一方、データ入力部70は、前ブロックの範囲終了時点の囲み情報(A)がOFFではなくONである場合(S303:No、S305:Yes)、担当のブロックNoに対応付けて、範囲終了時点の囲み情報(A)にa2および跨りレコードの開始位置(B)にb2を設定したレコードを、ブロック共有情報17に追記する(S306)。その後、データ入力部70は、自身をプロセス管理キューの最後に移動させて、新たに先頭になったプロセスを呼び出す(S307)。
なお、データ入力部70は、前ブロックの範囲終了時点の囲み情報(A)がOFFでもONでもない場合(S303:No、S305:No)、処理を終了する。また、データ入力部70は、自プロセスの処理順番ではない場合(S301:No)、先行ブロックを処理するプロセスから呼び出されるまで待機する(S308)。
[効果]
上述したように、情報処理装置10は、1度目の並列読み込みでは、読み込み開始地点における、囲み文字の状態がONとOFFの両方のパターンがあると想定してCSV解析を行う。CSVファイルの全ての領域を解析後、後続ブロックを処理するプロセスが、先行ブロックを処理するプロセスの解析完了後の情報を参照する。この情報により、各プロセスは、自担当部分が囲み文字のONまたはOFFのどちらで始まったかを判定し、自身の解析結果に照らし合わせて、終端となる改行コードの位置を決定できる。各プロセスは、2度目の並列読み込みにより、レコードの先頭から読み込みとエンコード部への転送を開始することができる。なお、2度目に読み込む順番は、先頭からの順番に限らず、先頭部分からの順番に対応した順序であればよく、先行ブロックが確定すれば、後続ブロックの読み込みが開始できる。
したがって、情報処理装置10は、1ファイルの並列読み込みと、並列での終端解析処理を実施できるので、1ファイルであってもローダ処理の並列化を実現できる。また、事前にファイルキャッシュに載らないほど大きいファイルであっても、各プロセスの1度目の読み込みとCSV解析で範囲を限定することで、2度目の読み込み時には確実にファイルキャッシュを活用できる。
ところで、実施例1では、プロセス(データ入力部)の数に応じて入力ファイルを分割する例を説明したが、これに限定されるものではない。例えば、各プロセスのファイルキャッシュであるローカルフォルダの大きさにあわせて分割することもできる。
実施例1の場合、割り振られた分割ファイルがファイルキャッシュよりも大きい場合、CSV分析を行うために、複数回の入出力を実行することになる。そこで、実施例2では、入力ファイルをファイルキャッシュの大きさにあわせて分割することで、入出力の回数を削減して、並列処理を高速化する例を説明する。
[割当て制御]
図11は、実施例2にかかる入力ファイルの割当てを説明する図である。図11の例では、ファイルキャッシュが1MBの例で説明する。この場合、分割部25は、入力ファイルを1MBずつ分割し、n個の分割ファイルを生成する。そして、分割部25は、ブロック1をプロセスP1に割当て、ブロック2をプロセスP2に割当て、ブロック3をプロセスP3に割当てる。
その後、プロセスP1は、ブロック1に対してのCSV解析が終了すると、プロセス管理キューの最後に移動してプロセスP2を呼び出して、a1等の確定を実行させる。その一方で、プロセスP1は、ブロック4を読み込んでCSV解析を実行する。
このように、プロセスP1、P2、P3の順にブロックnまで順次割当てて実行することもでき、a1等の推定が完了したプロセスから順に残りのブロックを割当てることもできる。
[並列処理]
次に、各プロセス(第1入力部30と第2入力部40と第3入力部50)による並列処理について説明する。図12は、実施例2にかかるCSVの解析手法を説明する図である。図12に示すように、分割部25は、入力ファイルであるCSVファイルを1MBずつ分割する。そして、分割部25は、第1入力部30(プロセスP1)にブロック1を割り振り、第2入力部40(プロセスP2)にブロック2を割り振り、第3入力部50(プロセスP3)にブロック3を割り振る。
その後、各プロセスは、実施例1と同様、ブロックの読み込み(Read処理)とCSV解析とを並行して実行する(図12の(1))。続いて、各プロセスは、先行ブロックを処理するプロセスのCSV解析結果を確認して、正しい囲み状態の開始状態を特定する(図12の(2))。その後、各プロセスは、囲み状態および跨りレコードの開始位置が確定すると、分割ファイルからレコードを読み出して、後続のプロセスに出力する(図12の(3))。
ここで、実施例1と異なる点は、実施例1では、CSV解析において、ブロック内で登場するレコードのうち、次のブロックとの境界となる最後のレコードの開始位置(跨りレコードの開始位置)を取得したが、実施例2では、ブロック内で登場する全レコードの開始位置を取得する。つまり、実施例2では、ブロック内で、囲み文字がOFFのときの全「CRLF>」を検出する。実施例1では、分割ファイルが非常に大きくなることがあり、全レコードの開始位置を取得するだけで処理遅延を招く危険性があるが、実施例2では、分割ファイルのサイズが1MBと比較的小さなファイルであることから、処理遅延の危険性も少ない。
具体的には、プロセスP1は、先頭のブロック1が割り振られているので、囲み状態が「OFF」で呼び出されたときだけを想定して、範囲終了時点の囲み状態(a1)を取得するとともに、ブロック1内に登場する各レコードの開始位置(b1+)を収集する。その後、プロセスP1は、ブロック4を読み込んで同様の処理を実行する。なお、この時は、プロセスP1は、囲み状態が「OFF」で呼び出されたときと、「ON」で呼び出されたときとを想定して解析する。
プロセス2は、囲み状態が「OFF」で呼び出されたことを想定して、範囲終了時点の囲み状態(a1)およびブロック2内の全レコードの開始位置(b1+)の情報を収集するとともに、囲み状態が「ON」で呼び出されたことを想定して、範囲終了時点の囲み状態(a2)および(b2+)の情報を収集する。その後、プロセスP2は、ブロック5を読み込んで同様の処理を実行する。
プロセス3は、囲み状態が「OFF」で呼び出されたことを想定して、範囲終了時点の囲み状態(a1)およびブロック3内の全レコードの開始位置(b1+)の情報を収集するとともに、囲み状態が「ON」で呼び出されたことを想定して、範囲終了時点の囲み状態(a2)およびブロック3内の全レコードの開始位置(b2+)の情報を収集する。その後、プロセスP3は、ブロック6を読み込んで同様の処理を実行する。
その後、プロセス2は、ブロック1の範囲終了時点の囲み状態(A)が確定すると、それにしたがって、想定した囲み状態のいずれかを選択する。例えば、プロセス2は、ブロック1の範囲終了時点の囲み状態(A)が「ON」で確定すると、囲み状態が「ON」であること想定して収集された範囲終了時点の囲み状態(a2)および(b2+)の情報を採用する。その後、プロセス2は、ブロック2を再度解析する必要はなく、収集した全レコードの開始位置(b2+)にしたがって、ブロック2から各レコードを読み出して後述のエンコードへ出力する。なお、プロセス3以降も同様の処理を実行する。
[ブロック共有情報の管理]
次に、実施例1とは異なるブロック共有情報17の管理形態を説明する。実施例2では、実施例1とは異なり、ブロック内の全レコードの開始位置を管理する。図13は、実施例2にかかるブロック共有情報の更新例を説明する図である。実施例2では、図13に示すように、各プロセスは、「ブロックNo、ブロックサイズ、範囲開始点の囲み状態がOFFの場合、範囲開始点の囲み状態がONの場合」を対応付けて管理する。
ここで、「ブロックNo」は、処理したブロックを特定する情報である。「ブロックサイズ」は、処理したブロックの大きさである。「範囲開始点の囲み状態がOFFの場合」には、囲み状態がOFFで呼び出されたと想定したときに収集した「範囲終了時点の囲み状態(a1)、全レコードの開始位置情報へのアドレス(b1+)」が設定される。「範囲開始点の囲み状態がONの場合」には、囲み状態がONで呼び出されたと想定したときに収集した「範囲終了時点の囲み状態(a2)、全レコードの開始位置情報へのアドレス(b2+)」が設定される。
図13の例では、4番目のブロック(分割ファイル)が割当てられたプロセスP1の例を図示している。図13に示すように、プロセスP1は、処理対象の「ブロックNo=(4)、ブロックサイズ=1MB」に対応付けて、「範囲開始点の囲み状態がOFFの場合」として「a1=OFF、b1+=0x02345」を記憶し、「範囲開始点の囲み状態がONの場合」として「a2=ON、b2+=0x14325」を記憶する。
つまり、プロセスP1は、囲み状態が「OFF」で呼び出されたことを想定して収集したブロック4内の各レコードの開始位置「31753、32251、・・・」を、予め定められるアドレス「0x02345」で開始される領域に記憶する。また、プロセスP1は、囲み状態が「ON」で呼び出されたことを想定して収集したブロック4内の各レコードの開始位置「30790、33255、・・・」を、予め定められるアドレス「0x14325」で開始される領域に記憶する。
そして、プロセスP1は、ブロック共有情報17を監視し、先行するブロック3について、「範囲終了時点の囲み状態(A)=ON、跨りレコードの開始位置(B)=39002」が追加されると、ブロック4は囲み状態が「ON」で開始されると判定する。この結果、プロセスP1は、「範囲開始点の囲み状態がONの場合」に対応付けられるブロック解析情報(a2、b2+)を採用する。つまり、プロセスP1は、ブロックNo=4、ブロックサイズ=1、範囲終了時点の囲み状態(A)=ON、跨りレコードの開始位置(B)=40225を対応付けて、ブロック共有情報17を更新する。なお、跨りレコードの開始位置(B)には、ブロック4で収集された全レコードの開始位置情報のうち、最も次のブロックに近い最後の開始位置情報が選択される。このようにした新たに登録された情報がブロック5を担当するプロセスP2への引き継ぎ情報となる。
[効果]
上述したように、実施例2によれば、1度目の解析で、範囲内全レコードの開始位置をメモリに記憶することで、2度目の解析では改行コードの探索が不要で転送のみとなるため、CPUの処理量が従来方式と変わらず、並列実行による性能向上が得られる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
[CSVの規定]
上記実施例では、拡張書式の一例としてダブルコーテーション、デリミタの一例としてカンマ区切りを用いて説明したが、これに限定されるものではない。囲み文字として何を使用するかを予め指定することもでき、スペースやタブやセミコロンなどをデリミタとして用いることもできる。
[分割サイズの再設定]
実施例2では、CSV解析範囲を1MBに限定した例で説明した。この範囲を超える長さのCSVレコード(例えば2MB)が頻出すると、レコード転送処理(図12の(3))を実施しないプロセスの処理が頻発して効率が低下する。そこで、図12の確定処理(2)の結果、初期に決めたCSV解析範囲のサイズを超えるCSVレコードを検知した場合には、レコード転送処理(図12の(3))まで完了後、全てのプロセスで一旦同期を取り、CSV解析範囲を大きいサイズに再設定する。例えば、初期値1MBでCSVの解析処理を実施中に、確定処理で2MBのCSVレコードを検知した場合には、レコード転送処理完了後に、解析範囲を10MBに拡張してCSVの解析処理を再実行する。
[システム]
記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア構成]
次に、情報処理装置10のハードウェア構成例を説明する。図14は、ハードウェア構成例を説明する図である。図14に示すように、情報処理装置10は、通信インタフェース10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。
通信インタフェース10aは、他の装置の通信を制御するネットワークインタフェースカードなどである。HDD10bは、プログラムやデータなどを記憶する記憶装置の一例である。
メモリ10cの一例としては、SDRAM(Synchronous Dynamic Random Access Memory)等のRAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等が挙げられる。プロセッサ10dの一例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)、PLD(Programmable Logic Device)等が挙げられる。
また、情報処理装置10は、プログラムを読み出して実行することで読込方法を実行する情報処理装置として動作する。つまり、情報処理装置10は、分割部25、第1入力部30、第2入力部40、第3入力部50、生成部60と同様の機能を実行するプログラムを実行する。この結果、情報処理装置10は、分割部25、第1入力部30、第2入力部40、第3入力部50、生成部60と同様の機能を実行するプロセスを実行することができる。なお、この他の実施例でいうプログラムは、情報処理装置10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
10 情報処理装置
11 通信部
12 第1記憶部
13 入力ファイル
14 第2記憶部
15 データDB
16 第3記憶部
17 ブロック共有情報
20 制御部
25 分割部
30 第1入力部
31 ローカルバッファ
32 解析部
33 確定部
40 第2入力部
41 ローカルバッファ
42 解析部
43 確定部
50 第3入力部
51 ローカルバッファ
52 解析部
53 確定部
60 生成部

Claims (6)

  1. コンピュータに、
    複数のプロセスにより、デリミタにより区切られたテキストファイルを分割した複数の分割ファイルそれぞれに対して、拡張書式が有効である場合と無効である場合の双方の場合における、レコード区切り候補を特定し、
    前記複数の分割ファイルを、先頭部分からの順番に対応した順序で、前記拡張書式が有効である場合か、無効である場合かの状態をそれぞれ確定することにより、前記テキストファイルのレコード区切りを確定させる、
    処理を実行する読込プログラム。
  2. 前記複数の分割ファイルそれぞれのサイズは、前記複数のプロセスが動作する前記コンピュータのファイルキャッシュよりも小さいサイズであり、
    確定したレコード区切りを記憶領域に蓄積し、
    蓄積された前記レコード区切りに基づき、前記複数のプロセスがレコードを読み込む処理を前記コンピュータに実行することを特徴とする請求項1に記載の読込プログラム。
  3. 前記拡張書式は、前記テキストファイルにおいて、改行コードをデータの一部として扱うことを表現する囲み文字であることを特徴とする請求項1または2に記載の読込プログラム。
  4. 前記拡張書式は、ダブルコーテーションであり、前記デリミタは、カンマ区切りであることを特徴とする請求項1または2に記載の読込プログラム。
  5. コンピュータが、
    複数のプロセスにより、デリミタにより区切られたテキストファイルを分割した複数の分割ファイルそれぞれに対して、拡張書式が有効である場合と無効である場合の双方の場合における、レコード区切り候補を特定し、
    前記複数の分割ファイルを、先頭部分からの順番に対応した順序で、前記拡張書式が有効である場合か、無効である場合かの状態をそれぞれ確定することにより、前記テキストファイルのレコード区切りを確定させる、
    処理を実行する読込方法。
  6. 複数のプロセスにより、デリミタにより区切られたテキストファイルを分割した複数の分割ファイルそれぞれに対して、拡張書式が有効である場合と無効である場合の双方の場合における、レコード区切り候補を特定する特定部と、
    前記複数の分割ファイルを、先頭部分からの順番に対応した順序で、前記拡張書式が有効である場合か、無効である場合かの状態をそれぞれ確定することにより、前記テキストファイルのレコード区切りを確定させる確定部と
    を有する情報処理装置。
JP2017026165A 2017-02-15 2017-02-15 読込プログラム、読込方法および情報処理装置 Active JP6772883B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017026165A JP6772883B2 (ja) 2017-02-15 2017-02-15 読込プログラム、読込方法および情報処理装置
US15/892,845 US10990604B2 (en) 2017-02-15 2018-02-09 Non-transitory computer-readable storage medium, record data processing method, and record data processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017026165A JP6772883B2 (ja) 2017-02-15 2017-02-15 読込プログラム、読込方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2018132948A true JP2018132948A (ja) 2018-08-23
JP6772883B2 JP6772883B2 (ja) 2020-10-21

Family

ID=63105201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017026165A Active JP6772883B2 (ja) 2017-02-15 2017-02-15 読込プログラム、読込方法および情報処理装置

Country Status (2)

Country Link
US (1) US10990604B2 (ja)
JP (1) JP6772883B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020107010A (ja) * 2018-12-27 2020-07-09 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
JP2021009528A (ja) * 2019-06-30 2021-01-28 大 益滿 データベースと情報処理システム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301474B2 (en) * 2019-05-03 2022-04-12 Microsoft Technology Licensing, Llc Parallelized parsing of data in cloud storage

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636861B1 (en) * 2000-02-01 2003-10-21 David J. Stack Real-time database upload with real-time column mapping
US7185232B1 (en) * 2001-02-28 2007-02-27 Cenzic, Inc. Fault injection methods and apparatus
US8065267B2 (en) * 2005-01-12 2011-11-22 Masatsugu Noda Information processing device, file data merging method, file naming method, and file data output method
WO2006081428A2 (en) * 2005-01-27 2006-08-03 Symyx Technologies, Inc. Parser for generating structure data
US7512610B1 (en) * 2005-09-30 2009-03-31 Miosoft Corporation Processing data records
US7774746B2 (en) * 2006-04-19 2010-08-10 Apple, Inc. Generating a format translator
JP5171211B2 (ja) 2007-11-01 2013-03-27 三菱電機株式会社 データ形式変換装置
US9633097B2 (en) * 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for record pivoting to accelerate processing of data fields
EP2912579B1 (en) * 2012-10-23 2020-08-19 IP Reservoir, LLC Method and apparatus for accelerated format translation of data in a delimited data format
US9633093B2 (en) * 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US9268801B2 (en) * 2013-03-11 2016-02-23 Business Objects Software Ltd. Automatic file structure and field data type detection
JP6260359B2 (ja) * 2014-03-07 2018-01-17 富士通株式会社 データ分割処理プログラム,データ分割処理装置及びデータ分割処理方法
GB2541577A (en) * 2014-04-23 2017-02-22 Ip Reservoir Llc Method and apparatus for accelerated data translation
US9864797B2 (en) * 2014-10-09 2018-01-09 Splunk Inc. Defining a new search based on displayed graph lanes
US10248720B1 (en) * 2015-07-16 2019-04-02 Tableau Software, Inc. Systems and methods for preparing raw data for use in data visualizations

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020107010A (ja) * 2018-12-27 2020-07-09 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
JP7174245B2 (ja) 2018-12-27 2022-11-17 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
JP2021009528A (ja) * 2019-06-30 2021-01-28 大 益滿 データベースと情報処理システム

Also Published As

Publication number Publication date
JP6772883B2 (ja) 2020-10-21
US20180232353A1 (en) 2018-08-16
US10990604B2 (en) 2021-04-27

Similar Documents

Publication Publication Date Title
US9846645B1 (en) Managing objects stored in memory
JP6191691B2 (ja) 異常検出装置、制御方法、及びプログラム
US20200201763A1 (en) Memory hierarchy-aware processing
JPWO2012026034A1 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
CN112286459A (zh) 一种数据处理方法、装置、设备及介质
JP6772883B2 (ja) 読込プログラム、読込方法および情報処理装置
CN110609807B (zh) 用于删除快照数据的方法、设备和计算机可读存储介质
CN115129621B (zh) 一种内存管理方法、设备、介质及内存管理模块
CN112965939A (zh) 一种文件合并方法、装置和设备
US10599472B2 (en) Information processing apparatus, stage-out processing method and recording medium recording job management program
US11809733B2 (en) Systems and methods for object migration in storage devices
US9858204B2 (en) Cache device, cache system, and cache method
CN106537321B (zh) 存取文件的方法、装置和存储***
US10083121B2 (en) Storage system and storage method
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
CN112711564A (zh) 合并处理方法以及相关设备
EP3296878B1 (en) Electronic device and page merging method therefor
US20180329756A1 (en) Distributed processing system, distributed processing method, and storage medium
CN114297196A (zh) 元数据存储方法、装置、电子设备及存储介质
CN112685334A (zh) 一种分块缓存数据的方法、装置及存储介质
JP2017058738A (ja) 情報処理装置および画像形成装置
CN112231292A (zh) 文件处理方法、装置、存储介质及计算机设备
JP7061294B2 (ja) コプロセッサ処理の高速化の方法とプログラム
GB2516092A (en) Method and system for implementing a bit array in a cache line
CN118276782A (zh) 计算任务的执行方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200811

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200914

R150 Certificate of patent or registration of utility model

Ref document number: 6772883

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150