JP6260339B2 - 情報処理装置,データ変換プログラム,及びデータ変換方法 - Google Patents
情報処理装置,データ変換プログラム,及びデータ変換方法 Download PDFInfo
- Publication number
- JP6260339B2 JP6260339B2 JP2014032652A JP2014032652A JP6260339B2 JP 6260339 B2 JP6260339 B2 JP 6260339B2 JP 2014032652 A JP2014032652 A JP 2014032652A JP 2014032652 A JP2014032652 A JP 2014032652A JP 6260339 B2 JP6260339 B2 JP 6260339B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- data
- unit
- tables
- value
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/282—Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
なお、関連技術として、電子取引伝票の変換装置が、EDI(Electronic Data Interchange)伝票データをRDB形式に変換する変換規則を用いて、EDI伝票データをRDB化された取引データに変換する技術が知られている(例えば、特許文献1参照)。
(a)ツリー構造のデータ形式を単一の表形式に変換する。
(b)ツリー構造のデータ形式を複数の表形式に変換する。
上記(a)の手法において、ツリー構造のデータを単一の表形式データに変換してRDBに格納しようとすると、入れ子構造のためにデータ内容に重複が生じて、RDBのデータサイズが大きくなってしまう。
このように、アプリケーション121の設計や更新等に適したDDBをDB141に採用する場合、RDBを扱うDB141と比較して、システムの性能低下や導入/運用コストの増加が生じ得るという課題がある。
1つの側面では、本発明は、情報処理装置において、入れ子構造を含むツリー構造のデータを、性能の低下又はコストの増加を抑止して、容易に扱うことを目的とする。
〔1〕一実施形態
〔1−1〕情報処理システムの説明
図1は一実施形態に係る情報処理システム1の構成例を示す図である。図1に示すように、情報処理システム1は、複数のアプリケーションサーバ(以下、単にアプリサーバという)2,ネットワークスイッチ3,及び複数のデータベース(DB)サーバ4をそなえる。
アプリサーバ2は、ネットワークスイッチ3を介してDBサーバ4へアクセスを行なうことで、データベース(DB)41を使用する所定のアプリケーションを実行する。
アプリサーバ2及びDBサーバ4としては、例えばPC(Personal Computer)やサーバ等の情報処理装置が挙げられる。
〔1−2〕アプリサーバ及びDBサーバのハードウェア構成例
ここで、図2及び図3を参照して、一実施形態に係るアプリサーバ2及びDBサーバ4のハードウェア構成例について説明する。図2は図1に示すアプリサーバ2及びDBサーバ4のハードウェア構成例を示す図であり、図3は図2に示すハードウェアの接続例を示す図である。
記憶部53は、種々のデータやプログラム等を格納するハードウェアである。記憶部53としては、例えばHDD(Hard Disk Drive)等の磁気ディスク装置,SSD(Solid State Drive)等の半導体ドライブ装置,フラッシュメモリ等の不揮発性メモリ等の各種デバイスが挙げられる。なお、記憶部53として複数のデバイスが用いられてもよく、これらのデバイスでRAID(Redundant Arrays of Inexpensive Disks)が構成されてもよい。
記録媒体56は、例えばフラッシュメモリやROM等の記憶装置であり、種々のデータやプログラムを記録することができる。読取部57は、コンピュータ読取可能な記録媒体58に記録されたデータやプログラムを読み出す装置である。記録媒体56及び58の少なくとも一方には、本実施形態に係るアプリサーバ2又はDBサーバ4の各種機能の全部もしくは一部を実現するデータ変換プログラムが格納されてもよい。例えば、CPU51は、記録媒体56から読み出したプログラム、又は、読取部57を介して記録媒体58から読み出したプログラムを、メモリ52等の記憶装置に展開して実行することができる。これにより、コンピュータ(CPU51,情報処理装置,各種端末を含む)は、上述したアプリサーバ2又はDBサーバ4の機能を実現することができる。
次に、DBサーバ4について説明する。図4は図1に示すDBサーバ4の機能構成例を示す図である。図4に示すように、DBサーバ4は、機能ブロックとして、上記DB41のほかに、管理部42をそなえる。
DB41は、アプリケーション21が利用するデータベースであり、種々のデータを格納する格納部の一例である。DB41としては、上述のように、例えば性能が良く安定性が高いRDBが挙げられる。図4に示すように、DB41は、1以上の第1テーブル412及び1以上の第2テーブル414を格納する。なお、第1テーブル412は、後述するデータモデル変換エンジン23によるデータモデルの変換の過程で生成されるテーブルである。従って、DB41は、データモデルの変換後には、少なくとも第2テーブル414を格納していればよく、第1テーブル412を格納していなくてよい。このため、図4では、第1テーブル412のブロックを破線で示している。第1テーブル412及び第2テーブル414の詳細は後述する。
なお、DBサーバ4におけるDB41は、例えば上述したメモリ52及び記憶部53の少なくとも一方により実現され、管理部42の機能は、例えば上述したCPU51がメモリ52に展開したプログラムを実行することにより実現される。
次に、アプリサーバ2について説明する。図5は図1に示すアプリサーバ2の機能構成例を示す図である。図5に示すように、アプリサーバ2は、機能ブロックとして、アプリケーション21,DB接続部22,及びデータモデル変換エンジン23をそなえる。なお、アプリケーション21,DB接続部22,及びデータモデル変換エンジン23の各機能は、例えば上述したCPU51がメモリ52に展開したプログラムを実行することにより実現される。
例えば、アプリケーション21は、提供するサービスにおいてDB41へアクセスを行なうと判断すると、データモデル変換エンジン23へ、DB41との間の種々のアクセス要求を発行する。アクセス要求としては、例えばDB41へのドキュメント(オブジェクト)の格納/更新要求(書込要求),DB41からのドキュメントの参照要求(読出要求)等が挙げられる。そして、アプリケーション21は、データモデル変換エンジン23からの格納/更新要求又は参照要求に対する応答を用いて、サービスの提供を行なう。
以下、データモデル変換エンジン23について、詳細に説明する。図6は図5に示すデータモデル変換エンジン23の詳細な構成例を示す図である。図6に示すように、データモデル変換エンジン23は、機能ブロックとして、アプリケーション側通信部210,データベース(DB)側通信部220,書込制御部230,及び読出制御部240をそなえる。
例えば、アプリケーション側通信部210は、アプリケーション21に対してDBサーバ4が管理するDB41であるRDBとは異なるDB(例えばDDB)のデータモデルでのAPIを提供する。なお、アプリケーション側通信部210は、当該APIを介して、アプリケーション21から、上述した格納/更新要求又は参照要求等のアクセス要求を受け取る。
図7はDDBにおけるドキュメントをJSON形式で表記した例を示す図であり、図8及び図9は、それぞれ図7に示すドキュメントをグラフ形式で表記した例を示す図である。なお、以下の説明において、ドキュメント(オブジェクト),配列を、それぞれマップ,リストと表記する場合がある。
具体的には、DB側通信部220は、書込制御部230からの要求に応じて、DB41へのテーブルの格納/更新要求をDB接続部22へ出力する。また、DB側通信部220は、読出制御部240からの要求に応じて、DB41からのテーブルの参照要求をDB接続部22へ出力する。
読出制御部240は、アプリケーション側通信部210から入力される参照要求に応じて、当該参照要求に係るドキュメントに相当するデータを、DB側通信部220によるアクセスを通じてDB41内の第2テーブル414から取得し、ドキュメントを生成する。そして、読出制御部240は、生成したドキュメントを参照要求の戻り値として、参照結果をアプリケーション側通信部210へ出力する。
以下、書込制御部230及び読出制御部240の詳細な動作について説明する。
〔1−6〕書込制御部の説明
図6に示すように、書込制御部230は、格納/更新要求に係るオブジェクト又はオブジェクト内のデータに応じた処理を行なうために、生成部232,統合部234,及び更新部236をそなえる。
はじめに、DB41に第2テーブル414が生成されていない場合に実行される、生成部232及び統合部234について説明する。
〔1−6−1−1〕生成部の説明
生成部232は、入力された格納/更新要求に係るオブジェクトに対して内部的にデータモデルの変換を行ない、1以上の第1テーブル412を生成する。具体的には、生成部232は、入力されたJSON形式のツリー構造のオブジェクトを、以下の第1条件に従って、キーごとに、DBサーバ4が管理するRDBのデータモデル、つまり表形式に変換する。そして、生成部232は、変換したテーブルを、DB側通信部220を介してDBサーバ4へ出力し、1以上の第1テーブル412として格納する。
(ii)キーが、値を直接持つリストを持つ場合:生成部232は、“parent”,“value”の2つの列を持つテーブルを生成する。
(iii)キーがマップを持つ場合:生成部232は、当該キーについてはテーブルを生成しない。なお、テーブルが生成されない当該キーは、当該キーの下位のマップにおける値を持つキーについて生成部232がテーブルを生成する際に、当該テーブルのテーブル名(階層を表す文字列)に含まれることになる。
ここで、生成部232による上記(i)〜(iv)の第1条件の具体的な判定手法の一例を、図7に示すようなJSON形式のドキュメントを例に挙げて説明する。
次いで、生成部232は、直前に抽出した位置から、キーと当該キーの構造とを識別するのに用いる所定の情報を検出するまで、所定の文字列(情報)を抽出する。なお、所定の情報としては、例えば“,”(カンマ),“{”(マップの開始),“document-id:”
(次のドキュメントの開始),ドキュメント(データ)内の最後の“}”等が挙げられる。そして、生成部232は、抽出した文字列に係るキーが上記(i)〜(iv)のいずれに該当するかを以下のように判定する。
(A−1)(A)において、抽出した文字列中に“[”(リストの開始)が含まれる場合:生成部232は、キーは「値を直接持つリストを持つキー」(上記(ii)に対応)であると判断する。
(A−2−1)(A−2)において、1つ前に抽出した文字列でリストが閉じられている場合:生成部232は、キーは「値を直接持つキー」(上記(i)に対応)であると判断する。
(A−3)(A−2)に該当しない場合:生成部232は、キーは「値を直接持つキー」(上記(i)に対応)であると判断する。
(B)抽出した文字列の末尾が“{”である場合。
(B−2)(B−1)に該当しない場合において、1つ前に抽出した文字列中のキーについて「値を直接持つリストを持つ」と判断した場合。
(B−2−2)(B−2−1)に該当しない場合:生成部232は、キーは「マップを持つリストを持つキー」(上記(iv)に対応)であると判断する。
以上のように、生成部232は、入力されるドキュメントに含まれる複数のキーについて、それぞれ対応するテーブル412a〜412i(第1テーブル412)を生成/更新し、DB側通信部220を介してDB41に格納/更新する。このとき、生成部232は、複数の第1テーブル412の各々におけるキーの種類に応じた列に、他の第1テーブル412の参照情報を設定することで、複数の第1テーブル412の各々を対応する他の第1テーブル412と関係付けることができる。
統合部234は、生成部232によるDB41への複数の第1テーブル412の生成/更新が完了すると、統合可能なテーブル412a〜412iを1以上の第2テーブル414として統合する。具体的には、統合部234は、複数の第1テーブル412のうちの以下の第2条件を満たす第1テーブル412のグループを第2テーブル414として統合する。
(I)各第1テーブル412の属する階層が所定の関係にあること。具体的には、2以上の第1テーブル412が同一階層にあると見做せること。より具体的に、2以上の第1テーブル412が以下の(I−1)又は(I−2)を満たすこと。
(I−2)それぞれ「値を直接持つキー」及び「マップを持つリストを持つキー」に基づき生成されたテーブルである場合:当該「値を直接持つキー」が当該「マップを持つリストを持つキー」のリストに含まれること。
(II−1)いずれも「値を直接持つキー」に基づき生成されたテーブルであること。
(II−2)いずれも「マップを持つリストを持つキー」に基づき生成されたテーブルであること。
なお、統合部234は、第2テーブル414のテーブル名に、第2条件を満たすと判断した2以上の第1テーブル412の各階層を表す文字列、例えば各第1テーブル412のテーブル名で共通な部分と共通ではない部分とを“_”で結合した文字列を設定する。また、統合部234は、第2テーブル414には、各第1テーブル412における“parent”,“id”の列名を、それぞれ“_parent”,“_id”に変更して設定する。これは、キーとの名前の重複を避けるためである。さらに、統合部234は、第2テーブル414には、各第1テーブル412における“value”の列名を、キーの名前に変更して設定する。
以上のように、統合部234は、複数の第1テーブル412のうちの第2条件を満たす第1テーブル412のグループについて、DBサーバ4が扱うRDBに適した第2テーブル414として統合する。
また、統合部234によれば、複数の第1テーブル412の各々のテーブル名に基づき、キーの属する階層が互いに所定の関係にある第1テーブル412を検出することができる。さらに、統合部234は、複数の第1テーブル412の各々における、キーの種類に応じた列に基づき、キーの種類が互いに所定の関係にある第1テーブル412を検出することができる。このように、統合部234は、統合の処理において、他の情報を参照せずに、第1テーブル412に関する情報に基づき、第1テーブル412の統合の有無や統合先の第1テーブル412を判定できる。
〔1−6−1−3〕生成部及び統合部の処理の具体例
次に、上述した生成部232及び統合部234の処理を、図10〜図13を参照しながら具体例を挙げて説明する。図10及び図11は、それぞれ図6に示す生成部232が生成する第1テーブル412の一例を示す図であり、図12及び図13は、それぞれ図6に示す統合部234が生成する第2テーブル414の一例を示す図である。
はじめに、生成部232は、変換対象のドキュメント(マップ)のIDとして、“document-id: 20 {”を抽出し、“parent=20”をメモリ52等に記憶する(処理T1,図示省略)。
次いで、生成部232は、“url: “ggg”,”を抽出し、上記(A−3)の論理で、キー“url”は「値を直接持つキー」であると判断する。そして、生成部232は、第1条件のうちの上記(i)に基づき、“(UNIQUE属性を持つ)parent”,“value”の2つの列を持つ“url”という名前のテーブル412aを生成する。また、生成部232は、テーブル412aのうち、“parent”にはキーが最上位であるため処理T1で記憶した“20”を、“value”にキーの値“ggg”を格納する(処理T2)。
なお、テーブル412e,412f,又は412iにレコードを追加する際には、その都度、親要素に対応するテーブル412d又は412hにレコードを追加して“id”を自動生成させる。そして、テーブル412e,412f,又は412iに追加するレコードの“parent”に、親要素に対応するテーブル412d又は412hで自動生成された“id”を追加すればよい。
統合部234は、生成部232が生成したテーブル412a〜412iから、2つのテーブルを順に抽出して第2条件を満たすか否かを判断し、第2条件を満たす組(グループ)を、図12及び図13に示すような第2テーブル414として統合する。
例えば、統合部234は、図10のテーブル412a及び412bが、いずれもトップレベルにあり、「直接値を持つキー」に基づくテーブルであるため(上記(I−1)及び(II−1)参照)、第2条件を満たすと判断する。そして、統合部234は、テーブル412a及び412bを1つの第2テーブル414にまとめる(図12のテーブル414a参照)。このとき、統合部234は、テーブル412a及び412bのテーブル名に共通部分がないため、テーブル414aのテーブル名には、テーブル412a及び412bのテーブル名を“_”で結合した文字列を設定する。また、統合部234は、テーブル414aの列名として、テーブル412a及び412bの列名“parent”を“_parent”に、テーブル412aの列名“value”を“url”に、テーブル412bの列名“value”を“title”にそれぞれ変更した文字列を設定する。
また、統合部234は、図11のテーブル412iについては、テーブル412cと同様の判断により、統合を行なわず、列名の変更を行ない、テーブル412iを第2テーブル414とする(図13のテーブル414e参照)。
〔1−6−2〕DBに第2テーブルが生成されている場合
次に、DB41に第2テーブル414が格納されている状態で実行される、更新部236について説明する。
更新部236は、データモデル変換後の第2テーブル414に対して、入力されたドキュメントの書込を行なう。具体的には、更新部236は、入力されたドキュメントについて、例えば文字列の記述順(ツリーの頂点から子要素に向かって順)にキーを探索し、キーごとに、対応する第2テーブル414を更新する。
そして、更新部236は、探索したキーを含む(特定した)更新対象の第2テーブル414に対して、以下の(1)〜(4)により定義される第3条件に従って更新を行なう。
(2)探索したキーが、値を直接持つリストを持つ場合:更新部236は、更新対象の第2テーブル414において、“_parent”列に探索したキーの“parent”を、キー名の列に当該キーの値を持つ行を作成(追加)する。
(4)探索したキーが、マップを持つリストを持つ場合:更新部236は、更新対象の第2テーブル414の“_parent”列が探索したキーの“parent”と一致する行において、キー名の列に当該キーの値を書き込む。なお、当該行がなければ、更新部236は、新たに当該行を作成(追加)して上記値を書き込む。
以上のように、更新部236は、入力されるオブジェクトに含まれる複数のキーについてそれぞれ対応する第2テーブル414を特定し、特定した第2テーブル414を第3条件に従って対応するキーにより更新する。
次に、上述した更新部236の処理を、図14〜図16を参照しながら具体例を挙げて説明する。図14は図6に示す更新部236により更新される第2テーブル414の一例を示す図であり、図15及び図16は、それぞれ図14に示す第2テーブル414の更新後の一例を示す図である。なお、前提として、図14では、生成部232及び統合部234により、図7に示す“document-id: 20”のドキュメントのみが第2テーブル414に変換されているものとする。また、図15及び図16では、格納/更新要求により図7に示す“document-id: 30”のドキュメントが新たに書込制御部230に入力され、更新部236が図14に示す第2テーブル414へ当該ドキュメントを追加する様子を示す。さらに、図15及び図16の各テーブル414a〜414e内に付された“T”で始まる符号は、更新部236による処理順序を示す。なお、この処理順序は、入力されたドキュメントの文字列の順序に対応するものであるが、当該処理順序はこれに限定されるものではない。
次いで、更新部236は、更新対象のドキュメントから“url: “yyy”,”を抽出し、第2テーブル414から、キー“url”をテーブル名“url_title”に含むテーブル414aを特定する(図14参照)。また、更新部236は、生成部232と同様の手法によりキー“url”は「値を直接持つキー」であると判断する。そして、更新部236は、第3条件のうちの上記(1)に基づき、テーブル414aにおいて、“_parent”列に“30”、“url”列に“yyy”を持つ行を追加する(図15の処理T52)。
次に、更新部236は、“tags: [“yah”],”を抽出し、第2テーブル414から、キー“tags”をテーブル名“tags”に含むテーブル414bを特定する(図14参照)。また、更新部236は、キー“tags”は「値を直接持つリストを持つキー」であると判断する。そして、更新部236は、第3条件のうちの上記(2)に基づき、テーブル414bにおいて、“_parent”列に“30”、“tags”列に“yah”を持つ行を追加する(図15の処理T54)。
次いで、更新部236は、“chars: [“y”,”について、第2テーブル414から、キー“chars”をテーブル名“bookmarks.tags.chars”に含むテーブル414eを特定する(図14参照)。また、更新部236は、キー“chars”は「値を直接持つリストを持つキー」であると判断する。そして、更新部236は、テーブル414eにおいて、“_parent”列に“4”、“chars”列に“y”を持つ行を追加する(図16の処理T60)。
また、更新部236は、処理T65において、ドキュメント(データ)“document-id: 30”内の最後の“}”を検出すると、入力された格納/更新要求に、更新対象の他のドキュメントが含まれているか否かを判断する。更新対象の他のドキュメントがある場合、更新部236は、処理T51と同様に、“document-id”の値“xx”を“parent”としてメモリ52等に記憶すればよい。
読出制御部(読出部)240は、入力される参照要求に応じて、当該参照要求で指定された条件を満たすデータを第2テーブル414から取得し、取得したデータをJSON形式のドキュメント(マップ)に変換して、アプリケーション側通信部210へ出力する。
例えば、読出制御部240は、参照要求により指定される読出条件に合致するデータを、書込制御部230によって変換された第2テーブル414から取得し、(元の)ドキュメントを構築する。なお、読出条件としては、読出対象の“document-id: xx”,又は1以上の特定の第2テーブル414及び値等が挙げられる。
・“_parent”列にUNIQUE属性がなく、且つ“_id”列がない場合:読出制御部240は、“_parent”列以外の各列について、各列名を“key”とし、当該“key”列における読出対象の行の値を“value”として、“key: [value]”の要素を戻り値のマップに追加する。なお、当該“key”は、「値を直接持つリストを持つキー」となる。また、当該“key”列における読出対象の行が複数ある場合、“key: [value]”のリスト“[]”には、複数の値“value”が“,”(カンマ)区切りで設定される。
さらに、読出制御部240は、参照要求で指定された“document-id”の値“xx”と一致する行における“_id”列のリスト“[]”を取得するため、以下の読出条件で自分自身の呼出(再帰呼出)を行なうことができる。そして、読出制御部240は、再帰呼出における戻り値についても、呼出元で処理された“table: [{key: value}]”のマップ“{}”に追加する。再帰呼出での読出条件の第2テーブル414としては、読出対象の第2テーブル414のテーブル名の共通部分と“key”とを“.”で結合したテーブル名で始まる全ての第2テーブル414のうち、呼出元における読出対象の第2テーブル414とは異なる第2テーブル414となる。また、再帰呼出での読出条件の値としては、呼出元での読出対象の行の“_id”列の値となる。
また、読出制御部240は、全ての読出対象の第2テーブル414について上記処理を行なうと、生成された戻り値のマップを、参照要求への応答とともにアプリケーション側通信部210へ出力する。
上述した読出制御部240によれば、第2テーブル414から、入力された読出要求で指定される読出条件に応じた情報を取得し、第2テーブル414から取得した情報に基づいて、読出要求に対する入れ子構造を含む階層構造の読出データを生成できる。すなわち、読出制御部240により、第2のデータ形式で表された第2テーブル414から、第1のデータ形式のドキュメント(読出データ)を直接抽出し生成することができる。従って、読出制御部240によれば、データモデル変換エンジン23による変換速度を向上できるため、情報処理システム1によるDB41へのアクセス性能を向上させることができる。
次に、上述のごとく構成された一実施形態に係る情報処理システム1(データモデル変換エンジン23)の動作例を、図17〜図22を参照して説明する。図17はデータモデル変換エンジン23による全体の処理の一例を説明するフローチャートであり、図18〜図20は、それぞれ生成部232,統合部234,及び更新部236による処理の一例を説明するフローチャートである。図21及び図22は、それぞれ読出制御部240による処理の一例を説明するフローチャートである。
はじめに、図17を参照して、データモデル変換エンジン23による全体の処理を説明する。なお、図17のフローチャートに示す全体の処理は、アプリケーション21からアプリケーション21を介して格納/更新要求又は参照要求等の各種要求が入力される都度、実行される。
また、ステップS1において、入力されたコマンドが格納/更新要求ではない、例えば参照要求である場合(ステップS1のNoルート)、アプリケーション側通信部210により、参照要求が読出制御部240へ通知される。読出制御部240では、後述するステップS61〜S83の処理が実行され、参照要求に係るドキュメント(読出データ)が第2テーブル414から読み出される(ステップS7)。また、読み出されたドキュメントがアプリケーション側通信部210を介してアプリケーション21へ出力され、処理が終了する。
次に、図18を参照して、生成部232による処理を説明する。
図18に示すように、生成部232により、格納/更新要求に係るドキュメントが1つ選択され、“document-id”の値“xx”がメモリ52等に記憶される(ステップS11)。また、生成部232により、選択したドキュメントから所定の文字列が1つ抽出される(ステップS12)。そして、生成部232により、抽出した文字列に係るキーが値を直接持つか否かが判定される(ステップS13)。
キーが値を直接持つリストを持つキーである場合(ステップS20のYesルート)、生成部232により、キーに対応する第1テーブル412がDB41にあるか否かが判定される(ステップS21)。キーに対応する第1テーブル412がない場合(ステップS21のNoルート)、生成部232により、“parent”及び“value”の列を持つ第1テーブル412がDB41に生成される(ステップS22)。
ステップS20において、キーが値を直接持つリストを持つキーではない場合(ステップS20のNoルート)には、生成部232により、抽出した文字列に係るキーがマップを持つか否かが判定される(ステップS24)。キーがマップを持つキーである場合(ステップS24のYesルート)、処理がステップS17に移行する。一方、キーがマップを持つキーではない場合(ステップS24のNoルート)、生成部232により、抽出した文字列に係るキーがマップを持つリストを持つか否かが判定される(ステップS25)。
〔1−8−3〕統合部の動作例
次に、図19を参照して、統合部234による処理を説明する。
以上により、統合部234による処理が終了する。
このように、統合部234は、i,jを変化させて、全てのパターンについて第1テーブルi,jを比較する。そして、統合部234は、統合可能な全ての第1テーブルi,jの組を統合する。なお、統合部234がi,jを変化させる手法は、上述したものに限定されず、種々の手法を用いることができる。つまり、統合部234は、iとjとが同一とならず、且つi及びjの値が入れ替わらないように(重複した比較を行なわないように)i,jを変化させて、i,jの組について全てのパターンを得ることができればよい。
次に、図20を参照して、更新部236による処理を説明する。
図20に示すように、更新部236により、格納/更新要求に係るドキュメントが1つ選択され、“document-id”の値“xx”がメモリ52等に記憶される(ステップS41)。また、更新部236により、選択したドキュメントから所定の文字列が1つ抽出される(ステップS42)。そして、更新部236により、抽出した文字列に係るキーが値を直接持つか否かが判定される(ステップS43)。
次いで、更新部236により、生成部232と同様に、選択したドキュメントから全ての文字列を抽出したか否かが判定される(ステップS47)。選択したドキュメントから全ての文字列を抽出していない場合(ステップS47のNoルート)、処理がステップS42に移行し、更新部236により次の文字列がドキュメントから抽出される。
キーが値を直接持つリストを持つキーである場合(ステップS50のYesルート)、更新部236により、“_parent”列にはキーの親要素名を、キー名の列には値“value”を設定した行がキーに対応する第2テーブル414に追加される(ステップS51)。そして、処理がステップS47に移行する。
〔1−8−5〕読出制御部の動作例
次に、図21及び図22を参照して、読出制御部240による処理を説明する。
ステップS82では、読出制御部240により、以下の第2テーブルw及び値を指定する読出条件で再帰読出が行なわれる。例えば、第2テーブルwは、第2テーブルxの名前の共通部分と“key”とを“.”で結合した名前で始まる全ての第2テーブル414のうち、第2テーブルxとは異なる第2テーブル414であるものとする。また、値は、第2テーブルwの“_parent”列の値が第2テーブルxの行yに設定された“_id”列の値であるものとする。
以上により、読出制御部240による処理が終了する。
上述のように、一実施形態に係る情報処理システム1によれば、生成部232により、入力された入れ子構造を含む階層構造のデータのキーごとに、当該キーの値を含む第1テーブル412が生成される。また、生成部232により、当該データの入れ子構造に応じて、複数の第1テーブル412の各々が対応する他の第1テーブル412と関係付けられる。そして、統合部234により、複数の第1テーブル412における所定の条件を満たす第1テーブル412同士が統合されて第2テーブル414が生成される。
さらに、データモデル変換エンジン23によれば、アプリケーション21に提供するAPIとして、オブジェクト指向言語よりも制約の大きいJSON形式又はBSON形式の文字列を受け渡しするAPIを用いることができる。このように、オブジェクト指向言語でのオブジェクトを受け渡しするAPIに代えて、オブジェクトの構造を文字列に変換する形式の文字列を受け渡しするAPIを用いることにより、データモデル変換エンジン23の設計及び実装を単純化することができる。従って、データモデル変換エンジン23の開発コストを低減させることができる。
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、一実施形態において、データモデル変換エンジン23は、アプリサーバ2において、アプリケーション21とDB接続部22との間にそなえられるものとして説明したが、これに限定されるものではない。データモデル変換エンジン23は、例えばDBサーバ4にそなえられてもよいし、アプリサーバ2とDBサーバ4との間にそなえられてもよい。データモデル変換エンジン23がDBサーバ4にそなえられる場合、アプリケーション21及びDB接続部22は、いずれもDDBのデータモデル等の第1のデータ形式によりDBサーバ4へアクセスすることができる。データモデル変換エンジン23は、DBサーバ4に入ってきた各種要求について、DB41との間ではRDBのデータモデル(第2のデータ形式)を用いてアクセスすることができる。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
第1のデータ形式で入力された入れ子構造を含む階層構造のデータを、複数のテーブルで前記データを表す第2のデータ形式に変換して、格納部へ格納する変換部をそなえ、
前記変換部は、
前記入力されたデータの情報要素ごとに、当該情報要素の値を含む第1テーブルを生成し、前記データの入れ子構造に応じて、前記複数の第1テーブルの各々を対応する他の第1テーブルと関係付ける第1生成部と、
複数の前記第1テーブルにおける所定の条件を満たす第1テーブル同士を統合して第2テーブルを生成する第2生成部と、
をそなえることを特徴とする、情報処理装置。
前記第2生成部は、前記複数の第1テーブルのうち、前記階層構造における情報要素の属する階層及び当該情報要素の種類がそれぞれ所定の関係にある第1テーブル同士を統合する、
ことを特徴とする、付記1記載の情報処理装置。
前記第1生成部は、生成する前記第1テーブルに、前記情報要素の属する階層及び当該情報要素の要素名を表すテーブル名を設定し、
前記第2生成部は、前記複数の第1テーブルの各々のテーブル名に基づき、前記情報要素の属する階層が互いに所定の関係にある第1テーブルを検出する、
ことを特徴とする、付記2記載の情報処理装置。
前記第1生成部は、生成する前記第1テーブルに、前記情報要素の種類に応じた列を設定し、
前記第2生成部は、前記複数の第1テーブルの各々の前記列に基づき、前記情報要素の種類が互いに所定の関係にある第1テーブルを検出する、
ことを特徴とする、付記2又は付記3記載の情報処理装置。
前記変換部は、
前記第2テーブルから、入力された読出要求で指定される読出条件に応じた情報を取得し、前記第2テーブルから取得した情報に基づいて、前記読出要求に対する入れ子構造を含む階層構造の読出データを生成する読出部、
をさらにそなえることを特徴とする、付記1〜4のいずれか1項記載の情報処理装置。
前記変換部は、
対応する第2テーブルが存在する状態で前記第1のデータ形式で入力された入れ子構造を含む階層構造の更新データから、前記更新データの情報要素ごとに当該情報要素の値を抽出し、抽出した情報要素の値に基づいて、対応する第2テーブルを更新する更新部、
をさらにそなえることを特徴とする、付記1〜5のいずれか1項記載の情報処理装置。
入力された要求に応じた処理を格納部に対して行なうコンピュータに、
第1のデータ形式で入力された入れ子構造を含む階層構造のデータを、複数のテーブルで前記データを表す第2のデータ形式に変換して、前記格納部へ格納し、
前記変換において、
前記入力されたデータの情報要素ごとに、当該情報要素の値を含む第1テーブルを生成し、前記データの入れ子構造に応じて、前記複数の第1テーブルの各々を対応する他の第1テーブルと関係付け、
複数の前記第1テーブルにおける所定の条件を満たす第1テーブル同士を統合して第2テーブルを生成する、
処理を実行させることを特徴とする、データ変換プログラム。
前記第2テーブルの生成において、
前記複数の第1テーブルのうち、前記階層構造における情報要素の属する階層及び当該情報要素の種類がそれぞれ所定の関係にある第1テーブル同士を統合する、
ことを特徴とする、付記7記載のデータ変換プログラム。
前記第1テーブルの生成において、
生成する前記第1テーブルに、前記情報要素の属する階層及び当該情報要素の要素名を表すテーブル名を設定し、
前記第2テーブルの生成において、
前記複数の第1テーブルの各々のテーブル名に基づき、前記情報要素の属する階層が互いに所定の関係にある第1テーブルを検出する、
ことを特徴とする、付記8記載のデータ変換プログラム。
前記第1テーブルの生成において、
生成する前記第1テーブルに、前記情報要素の種類に応じた列を設定し、
前記第2テーブルの生成において、
前記複数の第1テーブルの各々の前記列に基づき、前記情報要素の種類が互いに所定の関係にある第1テーブルを検出する、
ことを特徴とする、付記8又は付記9記載のデータ変換プログラム。
前記コンピュータに、
前記第2テーブルから、入力された読出要求で指定される読出条件に応じた情報を取得し、
前記第2テーブルから取得した情報に基づいて、前記読出要求に対する入れ子構造を含む階層構造の読出データを生成する、
処理をさらに実行させることを特徴とする、付記7〜10のいずれか1項記載のデータ変換プログラム。
前記コンピュータに、
対応する第2テーブルが存在する状態で前記第1のデータ形式で入力された入れ子構造を含む階層構造の更新データから、前記更新データの情報要素ごとに当該情報要素の値を抽出し、
抽出した情報要素の値に基づいて、対応する第2テーブルを更新する、
処理をさらに実行させることを特徴とする、付記7〜11のいずれか1項記載のデータ変換プログラム。
第1のデータ形式で入力された入れ子構造を含む階層構造のデータを、複数のテーブルで前記データを表す第2のデータ形式に変換して、前記格納部へ格納し、
前記変換において、
前記入力されたデータの情報要素ごとに、当該情報要素の値を含む第1テーブルを生成し、前記データの入れ子構造に応じて、前記複数の第1テーブルの各々を対応する他の第1テーブルと関係付け、
複数の前記第1テーブルにおける所定の条件を満たす第1テーブル同士を統合して第2テーブルを生成する、
ことを特徴とする、データ変換方法。
前記第2テーブルの生成において、
前記複数の第1テーブルのうち、前記階層構造における情報要素の属する階層及び当該情報要素の種類がそれぞれ所定の関係にある第1テーブル同士を統合する、
ことを特徴とする、付記13記載のデータ変換方法。
前記第1テーブルの生成において、
生成する前記第1テーブルに、前記情報要素の属する階層及び当該情報要素の要素名を表すテーブル名を設定し、
前記第2テーブルの生成において、
前記複数の第1テーブルの各々のテーブル名に基づき、前記情報要素の属する階層が互いに所定の関係にある第1テーブルを検出する、
ことを特徴とする、付記14記載のデータ変換方法。
前記第1テーブルの生成において、
生成する前記第1テーブルに、前記情報要素の種類に応じた列を設定し、
前記第2テーブルの生成において、
前記複数の第1テーブルの各々の前記列に基づき、前記情報要素の種類が互いに所定の関係にある第1テーブルを検出する、
ことを特徴とする、付記14又は付記15記載のデータ変換方法。
前記第2テーブルから、入力された読出要求で指定される読出条件に応じた情報を取得し、
前記第2テーブルから取得した情報に基づいて、前記読出要求に対する入れ子構造を含む階層構造の読出データを生成する、
ことを特徴とする、付記13〜16のいずれか1項記載のデータ変換方法。
対応する第2テーブルが存在する状態で前記第1のデータ形式で入力された入れ子構造を含む階層構造の更新データから、前記更新データの情報要素ごとに当該情報要素の値を抽出し、
抽出した情報要素の値に基づいて、対応する第2テーブルを更新する、
ことを特徴とする、付記13〜17のいずれか1項記載のデータ変換方法。
140 データベースサーバ
141 データベース
2,120 アプリサーバ(情報処理装置)
21,121 アプリケーション
22,122 データベース接続部
23 データモデル変換エンジン(変換部)
210 アプリケーション側通信部
220 データベース側通信部
230 書込制御部
232 生成部(第1生成部)
234 統合部(第2生成部)
236 更新部
240 読出制御部
3,130 ネットワークスイッチ
4 データベースサーバ(情報処理装置)
41 データベース(格納部)
412 第1テーブル
412a〜412i,414a〜414e テーブル
414 第2テーブル
42 管理部
51 CPU
52 メモリ
53 記憶部
54 インタフェース部
54a ネットワークインタフェース
55 入出力部
56,58 記録媒体
57 読取部
Claims (6)
- 第1のデータ形式で入力された入れ子構造を含む階層構造のデータを、複数のテーブルで前記データを表す第2のデータ形式に変換して、格納部へ格納する変換部をそなえ、
前記変換部は、
前記入力されたデータの情報要素ごとに、当該情報要素の属する階層及び当該情報要素の要素名を表すテーブル名を設定した第1テーブルを生成し、前記データの入れ子構造に応じて、前記複数の第1テーブルの各々を対応する他の第1テーブルと関係付ける第1生成部と、
複数の前記第1テーブルの各々のテーブル名に基づき、前記複数の第1テーブルの中から、前記階層構造における情報要素の属する階層及び当該情報要素の種類がそれぞれ所定の関係にある第1テーブルを検出し、当該検出した第1テーブル同士を統合して第2テーブルを生成する第2生成部と、
をそなえることを特徴とする、情報処理装置。 - 前記第1生成部は、生成する前記第1テーブルに、前記情報要素の種類に応じた列を設定し、
前記第2生成部は、前記複数の第1テーブルの各々の前記列に基づき、前記情報要素の種類が互いに所定の関係にある第1テーブルを検出する、
ことを特徴とする、請求項1記載の情報処理装置。 - 前記変換部は、
前記第2テーブルから、入力された読出要求で指定される読出条件に応じた情報を取得し、前記第2テーブルから取得した情報に基づいて、前記読出要求に対する入れ子構造を含む階層構造の読出データを生成する読出部、
をさらにそなえることを特徴とする、請求項1又は2記載の情報処理装置。 - 前記変換部は、
対応する第2テーブルが存在する状態で前記第1のデータ形式で入力された入れ子構造を含む階層構造の更新データから、前記更新データの情報要素ごとに当該情報要素の値を抽出し、抽出した情報要素の値に基づいて、対応する第2テーブルを更新する更新部、
をさらにそなえることを特徴とする、請求項1〜3のいずれか1項記載の情報処理装置。 - 入力された要求に応じた処理を格納部に対して行なうコンピュータに、
第1のデータ形式で入力された入れ子構造を含む階層構造のデータを、複数のテーブルで前記データを表す第2のデータ形式に変換して、前記格納部へ格納し、
前記変換において、
前記入力されたデータの情報要素ごとに、当該情報要素の属する階層及び当該情報要素の要素名を表すテーブル名を設定した第1テーブルを生成し、前記データの入れ子構造に応じて、前記複数の第1テーブルの各々を対応する他の第1テーブルと関係付け、
複数の前記第1テーブルの各々のテーブル名に基づき、前記複数の第1テーブルの中から、前記階層構造における情報要素の属する階層及び当該情報要素の種類がそれぞれ所定の関係にある第1テーブルを検出し、当該検出した第1テーブル同士を統合して第2テーブルを生成する、
処理を実行させることを特徴とする、データ変換プログラム。 - 入力された要求に応じた処理を格納部に対して行なうデータ変換方法であって、
第1のデータ形式で入力された入れ子構造を含む階層構造のデータを、複数のテーブルで前記データを表す第2のデータ形式に変換して、前記格納部へ格納し、
前記変換において、
前記入力されたデータの情報要素ごとに、当該情報要素の属する階層及び当該情報要素の要素名を表すテーブル名を設定した第1テーブルを生成し、前記データの入れ子構造に応じて、前記複数の第1テーブルの各々を対応する他の第1テーブルと関係付け、
複数の前記第1テーブルの各々のテーブル名に基づき、前記複数の第1テーブルの中から、前記階層構造における情報要素の属する階層及び当該情報要素の種類がそれぞれ所定の関係にある第1テーブルを検出し、当該検出した第1テーブル同士を統合して第2テーブルを生成する、
ことを特徴とする、データ変換方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014032652A JP6260339B2 (ja) | 2014-02-24 | 2014-02-24 | 情報処理装置,データ変換プログラム,及びデータ変換方法 |
US14/601,275 US10268644B2 (en) | 2014-02-24 | 2015-01-21 | Information processing apparatus, computer-readable recording medium having stored therein data conversion program, and data conversion method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014032652A JP6260339B2 (ja) | 2014-02-24 | 2014-02-24 | 情報処理装置,データ変換プログラム,及びデータ変換方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015158767A JP2015158767A (ja) | 2015-09-03 |
JP6260339B2 true JP6260339B2 (ja) | 2018-01-17 |
Family
ID=53882412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014032652A Active JP6260339B2 (ja) | 2014-02-24 | 2014-02-24 | 情報処理装置,データ変換プログラム,及びデータ変換方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10268644B2 (ja) |
JP (1) | JP6260339B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7189180B2 (ja) | 2019-07-10 | 2022-12-13 | フラウンホファー ゲセルシャフト ツール フェールデルンク ダー アンゲヴァンテン フォルシュンク エー.ファオ. | 逆向き磁化磁気構造体を生成する方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963963B2 (en) * | 2016-03-28 | 2021-03-30 | Investcloud Inc | Rule based hierarchical configuration |
CN111078680B (zh) * | 2018-10-18 | 2023-09-26 | 杭州海康威视数字技术股份有限公司 | 表格信息处理方法、装置、电子设备及可读存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11504451A (ja) | 1995-04-24 | 1999-04-20 | アスペクト・ディベロップメント・インコーポレイテッド | データベース構造に適したオブジェクトのモデリング、リレーショナルデータベース構造への翻訳、それらへの流動的なサーチ |
JPH09319811A (ja) | 1996-05-30 | 1997-12-12 | Toshiba Corp | 電子取引伝票の変換装置 |
US20020116371A1 (en) * | 1999-12-06 | 2002-08-22 | David Dodds | System and method for the storage, indexing and retrieval of XML documents using relation databases |
JP3719125B2 (ja) * | 2000-10-11 | 2005-11-24 | 日本電気株式会社 | データ格納装置及び方法 |
JP4152107B2 (ja) * | 2002-01-16 | 2008-09-17 | 富士通株式会社 | データベース更新情報の反映システムおよびそのためのプログラム |
JP4207438B2 (ja) * | 2002-03-06 | 2009-01-14 | 日本電気株式会社 | Xml文書格納/検索装置及びそれに用いるxml文書格納/検索方法並びにそのプログラム |
JP4272076B2 (ja) * | 2004-01-19 | 2009-06-03 | 日本電信電話株式会社 | 情報処理装置および情報処理プログラム |
JP4822889B2 (ja) * | 2006-03-20 | 2011-11-24 | 富士通株式会社 | データベース統合参照プログラム、データベース統合参照方法及びデータベース統合参照装置 |
JP5028894B2 (ja) * | 2006-07-18 | 2012-09-19 | 富士通株式会社 | データベースを構成する複数のテーブルを結合する結合処理をコンピュータに行わせるためのコンピュータ実行可能なプログラム |
US8484626B2 (en) * | 2007-09-28 | 2013-07-09 | Verizon Patent And Licensing Inc. | Generic XML screen scraping |
US8078638B2 (en) * | 2008-07-09 | 2011-12-13 | Yahoo! Inc. | Operations of multi-level nested data structure |
-
2014
- 2014-02-24 JP JP2014032652A patent/JP6260339B2/ja active Active
-
2015
- 2015-01-21 US US14/601,275 patent/US10268644B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7189180B2 (ja) | 2019-07-10 | 2022-12-13 | フラウンホファー ゲセルシャフト ツール フェールデルンク ダー アンゲヴァンテン フォルシュンク エー.ファオ. | 逆向き磁化磁気構造体を生成する方法 |
Also Published As
Publication number | Publication date |
---|---|
US20150242453A1 (en) | 2015-08-27 |
US10268644B2 (en) | 2019-04-23 |
JP2015158767A (ja) | 2015-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5492187B2 (ja) | 編集距離および文書情報を使用する検索結果順位付け | |
Tiwari | Professional nosql | |
US9760347B2 (en) | Method and system to identify GUI objects for non-markup-language-presented applications | |
CN104573124B (zh) | 一种基于并行化关联规则算法的教育云应用统计方法 | |
JP5710851B2 (ja) | 影響分析のためのシステムおよび方法 | |
JP4365162B2 (ja) | 構造化文書のデータを検索する装置および方法 | |
US7730099B2 (en) | Storage and retrieval of richly typed hierarchical network models | |
JP2005285127A5 (ja) | ||
CN102893281A (zh) | 信息搜索设备、信息搜索方法、计算机程序和数据结构 | |
US20100223231A1 (en) | Merging Records From Different Databases | |
JP2004246879A (ja) | フローデータ生成方法およびフローデータ生成装置 | |
JP6260339B2 (ja) | 情報処理装置,データ変換プログラム,及びデータ変換方法 | |
JP2004030221A (ja) | 変更対象テーブル自動検出方法 | |
US10437872B2 (en) | Computer implemented and computer controlled method, computer program product and platform for arranging data for processing and storage at a data storage engine | |
WO2017198087A1 (en) | Feature-set augmentation using knowledge engine | |
JPWO2013111287A1 (ja) | Sparqlクエリ最適化方法 | |
JP2006338303A (ja) | 表記変換装置、整合性チェック装置、及びプログラム | |
JP5069525B2 (ja) | データ処理システム | |
JP2004287835A (ja) | オブジェクト表作成方法及びオブジェクト推薦方法及びオブジェクト表作成プログラム及びオブジェクト推薦方法 | |
JP5063447B2 (ja) | コンテンツ管理装置及び方法及びプログラム | |
JP2007310842A (ja) | データ処理システム | |
KR20220099745A (ko) | 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치 | |
JPH10240741A (ja) | 木構造型データの管理方法 | |
JP2009104276A (ja) | データ管理装置 | |
JP5248762B2 (ja) | 設計データ依存関係管理装置、設計データ依存関係管理方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161102 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170822 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170905 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171102 |
|
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: 20171114 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171127 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6260339 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |