JP5867208B2 - データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置 - Google Patents

データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置 Download PDF

Info

Publication number
JP5867208B2
JP5867208B2 JP2012061193A JP2012061193A JP5867208B2 JP 5867208 B2 JP5867208 B2 JP 5867208B2 JP 2012061193 A JP2012061193 A JP 2012061193A JP 2012061193 A JP2012061193 A JP 2012061193A JP 5867208 B2 JP5867208 B2 JP 5867208B2
Authority
JP
Japan
Prior art keywords
data
array
information
item
processing 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.)
Expired - Fee Related
Application number
JP2012061193A
Other languages
English (en)
Other versions
JP2013196205A (ja
Inventor
達夫 熊野
達夫 熊野
泰生 野口
泰生 野口
宗則 前田
宗則 前田
雅寿 田村
雅寿 田村
健 飯澤
健 飯澤
年弘 小沢
年弘 小沢
純 加藤
純 加藤
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 JP2012061193A priority Critical patent/JP5867208B2/ja
Priority to US13/751,342 priority patent/US20130246479A1/en
Publication of JP2013196205A publication Critical patent/JP2013196205A/ja
Application granted granted Critical
Publication of JP5867208B2 publication Critical patent/JP5867208B2/ja
Expired - Fee Related 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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/212Schema design and management with details for data modelling support
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (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

本発明は、データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置に関する。
近年、クラウドコンピューティングの普及に伴い、NoSQLと呼ばれる新たな種類のデータベースが広く利用されている。NoSQLは、リレーショナルデータベース管理システム(RDBMS:Relational Database Management System)以外のデータベースであり、例えばキーバリュー型やドキュメント指向型などがある。
キーバリュー型には、キーに対して値を持つデータ構造や、キーに対してカラムを割当てたデータ構造がある。例えば、キーバリュー型のデータベースとしては、HBaseやCassndraなどがある。このHBaseやCassndraでは、例えばルートにはフォルダ1つが生成できるなど、階層に制限のあるデータモデルが採用される。
ドキュメント指向型は、スキーマレスなデータ構造である。例えば、ドキュメント指向型のデータベースとしては、MongoDBやCouchDBなどがある。これらのデータベースには、アプリケーション側が扱う複雑なデータをそのまま格納するデータモデルが採用される。このドキュメント指向型は、複雑なデータを扱うことから、多数のデータベースサーバにデータを分散させる場合に、データの管理や整合性の管理も複雑になる。最近のシステムは、大規模データの分散処理を実行することが多いので、階層に制限のあるデータモデルを採用したキーバリュー型のデータベースが利用される。
特表2010−519625号公報 特開2011−8451号公報 特開2010−224824号公報
しかしながら、従来技術では、アプリケーションの開発効率が悪いという問題がある。
例えば、階層に制限のあるデータモデルを用いてアプリケーションを開発する場合、最も深い階層にある各要素を別個の要素とする第1の手法と、データベース側が扱えない階層の要素を1つの要素とする第2の手法が利用される。
第1の手法を用いた場合、アプリケーション開発者が、キーの変換方式を検討することになる。つまり、アプリケーション側が扱うデータ構造と、データベース側で扱うデータ構造とが異なることから、アプリケーション側のデータとデータベース側のデータとを対応付けるキーを管理することになる。このため、扱う階層が異なる複数のアプリケーションを開発する場合には、アプリケーションごとにキーの変換方式を決定することになるので、開発工数が多くなる。
また、第2の手法を用いた場合、アプリケーションにおける検索処理は、1つにまとめられた複数の要素から該当要素を検索する処理になる。このため、アプリケーションが実行する検索処理が複雑なものになり、開発工数が多くなる。
1つの側面では、アプリケーションの開発効率を向上させることができるデータモデル変換プログラム、データモデル変換方法およびデータモデル変換装置を提供することを目的とする。
第1の案では、コンピュータに、第1のデータモデルで定義されるデータを構成するデータ項目の種別を判別する処理を実行させる。コンピュータに、前記データ項目の種別を配列と判別した場合に、配列であることを示す配列情報と配列の順番を示す順番情報とを結合した情報を、第2のデータモデルで項目名と値とを用いて定義されるデータの前記項目名に追加する処理を実行させる。コンピュータに、前記データ項目の種別をオブジェクトと判別した場合に、オブジェクトであることを示すオブジェクト情報と当該要素とを結合した情報を、前記項目名に追加する処理を実行させる。コンピュータに、前記データ項目の種別を値と判別した場合に、当該値を前記項目名に対応付けて、前記第2のデータモデルで定義されるデータを生成する処理を実行させる。
アプリケーションの開発効率を向上させることができる。
図1は、実施例1に係るシステムの全体構成例を示す図である。 図2は、実施例1に係るアプリサーバの構成を示す機能ブロック図である。 図3は、エンコード処理の流れを示すフローチャートである。 図4は、デコード処理の流れを示すフローチャートである。 図5は、アプリサーバ側が処理対象とするデータ構成例を示す図である。 図6は、データベースに格納されるデータ構成例を示す図である。 図7は、図5の状態から本文にデータを追加した場合のデータ構成例を示す図である。 図8は、本文が追加された後のデータベースに格納されるデータ構成例を示す図である。 図9は、図7の状態からコメントを追加した場合のデータ構成例を示す図である。 図10は、コメントが追加された後のデータベースに格納されるデータ構成例を示す図である。 図11は、ハードウェア構成例を示す図である。
以下に、本願の開示するデータモデル変換プログラム、データモデル変換方法およびデータモデル変換装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[全体構成]
図1は、実施例1に係るシステムの全体構成例を示す図である。図1に示すように、このシステムは、アプリサーバ10、アプリサーバ20、データベースサーバ40、データベースサーバ50の各々が、ネットワークスイッチ30を介して相互に接続されている。なお、図1に示した各サーバやネットワークスイッチの数はあくまで例示であり、これに限定されるものではない。
アプリサーバ10とアプリサーバ20は、アプリケーションを実行して、データベースサーバ40やデータベースサーバ50にデータを書き込んだり、データベースサーバ40やデータベースサーバ50からデータを読み出したりするアプリケーションサーバである。ここでは、アプリサーバ10とアプリサーバ20で実行されるアプリケーションは、階層に制限のないデータモデル(以下、階層データモデルと記載する場合がある)を処理対象とするものとする。
データベースサーバ40やデータベースサーバ50は、アプリサーバ10やアプリサーバ20が使用するデータを格納するデータベースである。ここでは、各データベースサーバは、例えばKVS(Key−Value Store)など、階層に制限のあるデータモデル(以下、非階層データモデルと記載する場合がある)でデータを格納するものとする。
ネットワークスイッチ30は、各装置間の通信を中継する中継装置であり、例えば、レイヤ2スイッチ、レイヤ3スイッチ、ルータ、ゲートウェイなどが該当する。
このような状態において、各アプリケーションサーバは、データモデル変換エンジンを用いて、アプリケーションで使用するデータモデルを機械的に変換して、各データベースサーバに格納する。
アプリサーバ10が有するデータモデル変換エンジン10aを例にして説明する。データモデル変換エンジン10aは、アプリケーションサーバが使用する階層データモデルで定義されたデータ項目の種別を判別する。そして、データモデル変換エンジン10aは、データ項目の種別を配列と判別した場合に、配列であることを示す情報と配列の順番を示す情報とから、データベースサーバ40で使用されている非階層データモデルで定義される項目名を生成する。また、データモデル変換エンジン10aは、データ項目の種別をオブジェクトと判別した場合に、オブジェクトであることを示す情報と当該データとから、項目名を生成する。そして、データモデル変換エンジン10aは、データ項目の種別を値と判別した場合に、当該値を生成された項目名に対応付けて、非階層データモデルで定義されるデータを生成する。
このように、データモデル変換エンジン10aは、階層構造で定義されるデータをKVSなどの階層構造を持たないデータベースに格納する際に、データが配列かオブジェクトか値かによって変換ルールを変更してデータ変換することができる。この結果、データモデルの機械的な変換を実行することができ、アプリケーションの開発効率を向上させることができる。
[アプリサーバの構成]
次に、図1に示したアプリサーバについて説明する。図1に示したアプリサーバ10とアプリサーバ20とは同様の構成を有するので、ここでは、アプリサーバ10を例にして説明する。また、図1に示した各データベースサーバは、一般的なデータベースサーバと同様の構成を有するので、詳細な説明は省略する。
図2は、実施例1に係るアプリサーバの構成を示す機能ブロック図である。図2に示すように、アプリサーバ10は、アプリケーション11とデータベース接続部12と変換部13とを有する。各処理部は、CPU(Central Processing Unit)などが実行する処理部である。なお、変換部13は、図1に示したデータモデル変換エンジン10aに対応する。
アプリケーション11は、各種処理を実行して、データベースサーバ40にデータを格納する。また、アプリケーション11は、各種処理を実行して、データベースサーバ40からデータを読み出す。
データベース接続部12は、各データベースサーバとアプリサーバ10との間に通信を制御する処理部である。例えば、データベース接続部12は、変換部13から入力されたデータおよびデータ格納指示を、データベースサーバ40に出力する。また、データベース接続部12は、データベースサーバ40から入力されたデータを、変換部13に出力する。
変換部13は、エンコード処理部14とデコード処理部15と追加処理部16と削除処理部17とを有し、これらによってデータモデルの変換を実行する処理部である。すなわち、変換部13は、アプリケーションが使用する階層データモデルで定義されたデータをデータベースサーバに格納する際に、データベースサーバが使用する非階層データモデルに対応するデータに機械的に変換する。また、変換部13は、データベースサーバが使用する非階層データモデルで定義されたデータをアプリケーションに出力する際に、アプリケーションが使用する階層データモデルに対応するデータに機械的に変換する。
エンコード処理部14は、判別部14aと配列処理部14bとオブジェクト処理部14cと値処理部14dと出力部14eとを有し、階層データモデルから非階層データモデルに変換する処理部である。また、エンコード処理部14は、データ変換処理を実行する際の初期化処理として、接頭語言い換えるとアプリケーションのデータモデル上のキーを「」と決定する。
判別部14aは、アプリケーションが使用するデータモデルで定義された各データ項目の種別を判別する処理部である。具体的には、判別部14aは、データ項目が配列かオブジェクトか値かを判別する。そして、判別部14aは、データ項目を配列と判別した場合には、当該データ項目を配列処理部14bに出力する。また、判別部14aは、データ項目をオブジェクトと判別した場合には、当該データ項目をオブジェクト処理部14cに出力する。また、判別部14aは、データ項目を値と判別した場合には、当該データ項目を値処理部14dに出力する。
配列処理部14bは、配列と判別されたデータ項目を、非階層データモデルで表現できる形式に変換する処理部である。具体的には、配列処理部14bは、配列に対応した変換ルールにしたがってデータ変換を実行する。そして、配列処理部14bは、データ変換後のデータ項目を出力部14eに出力する。
例えば、配列処理部14bは、判別部14aから入力されたデータ項目について、配列であることを示す情報と配列の順番を示す情報とから、非階層データモデルで定義される項目名を生成する。一例を挙げると、配列処理部14bは、データ項目が配列を示す“[”であった場合、配列を示す“_”と配列に割り振った連番“0”とを用いて、“[”を“_0”に変換する。このとき、“[”が変換元データベースの先頭である場合、配列処理部14bは、「」に続けた項目名、すなわち、「_0」を生成する。
オブジェクト処理部14cは、オブジェクトと判別されたデータ項目を、非階層データモデルで表現される形式に変換する処理部である。具体的には、オブジェクト処理部14cは、オブジェクトに対応した変換ルールにしたがってデータ変換を実行する。そして、オブジェクト処理部14cは、データ変換後のデータ項目を出力部14eに出力する。
例えば、オブジェクト処理部14cは、判別部14aから入力されたデータ項目について、オブジェクトであることを示す情報と当該データ項目そのものとから、非階層データモデルで定義される項目名を生成する。一例を挙げると、オブジェクト処理部14cは、データがオブジェクト“id”であった場合、オブジェクトを示す“.”とデータそのもの“id”とを用いて、“id”を“.id”に変換する。つまり、オブジェクト処理部14cは、データベース側で表現できない階層で定義されているデータを、“.”で結合して1つの項目名を生成する。このとき、“id”が変換元データベースの先頭である場合、オブジェクト処理部14cは、「」に項目名を追加し、「.id」を生成する。
値処理部14dは、値と判別されたデータ項目を、非階層データモデルで表現される形式に変換する処理部である。具体的には、値処理部14dは、値に対応した変換ルールにしたがってデータ変換を実行する。そして、値処理部14dは、データ変換後のデータ項目を出力部14eに出力する。例えば、値処理部14dは、判別部14aから入力されたデータ項目について、当該値を項目名に対応付けて、非階層データモデルで定義されるデータを生成する。
一例として、データが“:0”であり、“:0”が値処理部14dに入力されるまでに生成されたデータ項目が“_0.id”である場合を例にして説明する。この場合、値処理部14dは、“_0.id”に“:0”を対応付ける。つまり、値処理部14dは、「“_0.id”:0」を生成する。ここで生成されたデータは、キーとValueの関係になっている。上記例の場合、「“_0.id”」がキーで、「:0」がValueとなる。すなわち、値処理部14dは、自身が入力を受け付けるまでに配列処理部14bやオブジェクト処理部14cで生成された項目をキー、自身に入力されたデータをValueとしたデータを生成する。
出力部14eは、配列処理部14b、オブジェクト処理部14c、値処理部14dの各々が生成したデータを、データベース接続部12を介してデータベースサーバ40に出力する処理部である。例えば、出力部14eは、配列処理部14bから入力された“_0”を、データベース接続部12を介してデータベースサーバ40に出力する。
デコード処理部15は、判別部15aとキー解析部15bと配列処理部15cとオブジェクト処理部15dと出力部15eとを有し、非階層データモデルから階層データモデルに変換する処理部である。
判別部15aは、データベースサーバで使用されるデータモデルで定義された各データの種別を判別する処理部である。具体的には、判別部15aは、データベースサーバから要素1つを読み出す。そして、判別部15aは、読み出した要素をキー解析部15bに出力する。その後、判別部15aは、キー解析部15bから入力されたデータについて、配列、オブジェクトのいずれかを判別する。その後、判別部15aは、配列として判別したデータを配列処理部15cに出力する。また、判別部15aは、オブジェクトと判別したデータをオブジェクト処理部15dに出力する。
一例を挙げると、判別部15aは、データベースサーバから要素として「“_0.id”:0」を読み出す。そして、判別部15aは、この要素「“_0.id”:0」をキー解析部15bに出力する。その後、判別部15aは、キー解析部15bから「」が除かれた「“_0.id”:0」を受け付ける。そして、判別部15aは、「_0」、「.id」、「:0」各々が配列かオブジェクトかそれ以外かを順番に判別する。
この場合、はじめに、判別部15aは、「_0」を0番目の配列すなわち最初の配列と判別して、配列処理部15cに出力する。次に、判別部15aは、「.id」を最初の配列の要素となるオブジェクトと判別して、オブジェクト処理部15dに出力する。最後に、判別部15aは、「:0」を最初の配列の値と判別して、オブジェクト処理部15dに出力する。
キー解析部15bは、判別部15aから入力された要素からキーを削除する処理部である。具体的には、キー解析部15bは、判別部15aから入力された要素から、エンコード処理部14で定義されたキーを削除する。そして、キー解析部15bは、要素から空文字(キー)を削除したデータを判別部15aに出力する。
配列処理部15cは、データベースサーバの非階層データモデルで配列として管理されるデータを、アプリケーションが階層データモデルとして扱う配列に変換する処理部である。具体的には、配列処理部15cは、判別部15aから入力されたデータから、配列を生成する。例えば、配列処理部15cは、判別部15aから「_0」が入力された場合、アプリケーションが扱う階層データモデル上で、0番目の配列すなわち最初の配列を生成する。そして、配列処理部15cは、生成した配列を出力部15eに出力する。
オブジェクト処理部15dは、データベースサーバの非階層データモデルでオブジェクトとして管理されるデータを、アプリケーションが階層データモデルとして扱うオブジェクトに変換する処理部である。具体的には、オブジェクト処理部15dは、判別部15aから入力されたデータから、オブジェクトを生成する。
例えば、オブジェクト処理部15dは、判別部15aから「_0」の後に続く「.id」が入力された場合、アプリケーションが扱う階層データモデル上で、最初の配列のオブジェクト「id」を生成する。そして、オブジェクト処理部15dは、生成したオブジェクトを出力部15eに出力する。また、オブジェクト処理部15dは、判別部15aから「_0」の後の「.id」の後に続く「:0」が入力された場合、アプリケーションが扱う階層データモデル上で、最初の配列のオブジェクト「id」の値「0」を生成する。そして、オブジェクト処理部15dは、生成したオブジェクトを出力部15eに出力する。
追加処理部16は、データベースサーバ40に格納されたデータベースにデータを追加する処理部である。具体的には、追加処理部16は、エンコード処理部14によってデータモデルが変換されたデータベースにデータを追加する。例えば、追加処理部16は、追加対象のデータが新たな配列の場合には、データベースの末尾に記憶される配列を特定する番号をインクリメントした新たな番号を用いて、当該データベースの末尾に項目名を追加する。そして、追加処理部16は、追加した項目名にオブジェクトを追加し、値を対応付けて、データベースに追加対象のデータを追加する。
また、追加処理部16は、追加対象のデータが既存配列の新たな要素の場合には、当該配列の番号、ならびに、当該配列の末尾の要素に割り振られた番号を特定する。そして、追加処理部16は、特定した配列の番号と、当該要素の番号をインクリメントした番号とを結合した項目名を、データベースにおける既存配列の末尾に追加する。そして、追加処理部16は、追加した項目名にオブジェクトを追加し、値を対応付けて、データベースに追加対象のデータを追加する。
削除処理部17は、データベースサーバ40に格納されたデータベースからデータを削除する処理部である。具体的には、削除処理部17は、エンコード処理部14によってデータモデルが変換されたデータベースからデータを削除する。例えば、削除処理部17は、削除対象のデータが配列である場合に、当該配列を特定する情報と配列の順番との組み合わせから構成される項目名をデータベースから特定する。そして、削除処理部17は、特定した項目名に該当するデータを、データベースから削除する。
[処理の流れ]
次に、アプリサーバ10が実行するエンコード処理とデコード処理の各々について説明する。
(エンコード処理)
図3は、エンコード処理の流れを示すフローチャートである。図3に示すように、エンコード処理部14は、エンコード処理を開始すると、初期化処理として接頭語を空文字と決定する(S101)。
続いて、判別部14aは、エンコード対象のデータベースからデータ項目を読み込み(S102)、当該データ項目が配列の開始または配列の次の要素の開始であるか否かを判定する(S103)。
そして、配列処理部14bは、判別部14aによってデータ項目が配列の開始または配列の次の要素の開始であると判定された場合(S103Yes)、配列を表す記号と要素の番号とを接頭語の末尾に追加する(S104)。例えば、配列処理部14bは、「接頭語+記号+番号」として「_0」などを生成する。
その後、エンコード処理部14は、エンコード対象のデータベースに未変換のデータ項目が存在すると判定した場合(S105Yes)、S102以降を繰り返す。一方、エンコード処理部14は、エンコード対象のデータベースに未変換のデータが存在しないと判定した場合(S105No)、エンコード処理を終了する。
また、S103において、判別部14aは、データが配列の開始または配列の次の要素の開始ではないと判定した場合(S103No)、当該データ項目がオブジェクトのキーか否かを判定する(S106)。
そして、オブジェクト処理部14cは、判別部14aによってデータ項目がオブジェクトのキーと判定された場合(S106Yes)、オブジェクトを表す記号とキーとを接頭語の末尾に追加する(S107)。その後、エンコード処理部14は、S105を実行する。例えば、オブジェクト処理部14cは、「接頭語+記号+キー」を生成する。
一方、オブジェクト処理部14cは、判別部14aによってデータ項目がオブジェクトのキーではないと判定された場合、つまり、当該データ項目が値と判定された場合(S106No)、接頭語をキー、値を値とするデータをデータベースサーバに出力する(S108)。S108の後は、S105の処理が実行される。
(デコード処理)
図4は、デコード処理の流れを示すフローチャートである。図4に示すように、デコード処理部15は、デコード処理を開始すると、次の要素を読み込む(S201)。なお、処理開始時には、デコード処理部15によってデコード対象の先頭データが読み込まれる。例えば、デコード処理部15の判別部15aは、「“_0.id”:0」などのように、1レコードを読み込む。
続いて、キー解析部15bは、判別部15aが読み出した要素「“_0.id”:0」から、エンコード処理部14がキーとして扱う「」を削除して、当該キーの続くデータを読み込む(S202)。
そして、配列処理部15bは、読み込んだデータが判別部15aによって配列の要素と判定された場合(S203Yes)、配列を生成して要素を追加する(S204)。その後、S202以降の処理が繰り返される。例えば、配列処理部15bは、当該データが初めの配列の始まりであれば、アプリケーションが利用するデータベース内に、新たな配列を生成する。配列処理部15bは、2番目の配列の始まりであれば、アプリケーションが利用するデータベース内に、2番目の配列を生成する。また、配列処理部15bは、既に生成済みの配列要素かつ配列の始まりであれば、アプリケーションが利用するデータベース内に既に生成済みの配列の要素として新たな配列を生成する。
一方、オブジェクト処理部15dは、読み込んだデータが判別部15aによって配列の要素ではなく(S203No)、オブジェクトであると判定された場合(S205Yes)、オブジェクトを生成する(S206)。その後、S202以降の処理が繰り返される。例えば、判別部15aは、読み込んだデータがオブジェクトであれば、アプリケーションが利用するデータベースのオブジェクトを生成する。
また、判別部15aは、読み込んだデータを配列の要素でもなく(S203No)、オブジェクトでもないと判定した場合(S205No)、変換対象のデータをオブジェクトまたは配列の値として追加する(S207)。例えば、判別部15aは、アプリケーションが利用するデータベース内に既に生成されている配列やオブジェクトの要素に当該値を用いる。
その後、判別部15aは、デコード対象のデータベースに未処理の要素が存在する場合(S208Yes)、S201に戻って、次の要素について以降の処理を繰り返す。一方、判別部15aは、デコード対象のデータベースに未処理の要素が存在しない場合(S208No)、デコード処理を終了する。
[具体例]
次に、図5と図6とを用いて、図3で説明したエンコード処理と図4で説明したデコード処理の各々について、具体例を説明する。図5は、アプリサーバ側が処理対象とするデータ構成例を示す図である。図6は、データベースに格納されるデータ構成例を示す図である。
ここでは、一例として、JSON形式でデータの受け渡しを行うものとするが、これに限定されるものではなく、構造化された形式であればよい。また、実際には、4から5階層のデータモデルを扱うのが一般的ではあるが、ここでは、説明上、1階層を例にして説明する。また、ここでは、ブログ記事にコメント等が追加されているデータベースの例について説明する。
(エンコードの具体例)
図5から図6を生成する具体例を説明する。まず、判別部14aは、図5に示したデータベースから先頭の“[”を読み込む。続いて、判別部14aは、読み込んだ“[”を配列の始まりと判定する。すると、配列処理部14bは、当該“[”が初めの配列であることから、「接頭語+記号+連番」として「_0」などを生成する。
続いて、判別部14aは、図5に示したデータベースから「{”id“」を読み込み、「{」があることから配列の要素と判別し、さらに「”id“」をオブジェクトと判定する。つまり、判別部14aは、読み込んだ「{”id“」を、コメントオブジェクトと判別する。
すると、オブジェクト処理部14cは、「接頭語+記号+キー」として「.id」などを生成するが、すでに接頭語に「_0」が追加されていることから、「“_0.id”」を生成することになる。
続いて、判別部14aは、図5に示したデータベースから「:0」を読み込み、「:0」が配列でもオブジェクトでもないことから、「:0」を値と判別する。すると、オブジェクト処理部14cは、「“_0.id”」がすでに生成されていることから、これに「:0」を対応付けて、「“_0.id”:0」を生成する。つまり、オブジェクト処理部14cは、「“_0.id”」をキー、「:0」を値としたKVS形式のデータを生成する。
続いて、判別部14aは、図5に示したデータベースから「,」を読み込み、これが改行を示す情報であることから、次のデータについて上述した処理と同様の処理を実行する。
このように、エンコード処理部14は、配列を示す“[”から“]”まで配列として処理し、“{”から“}まで同階層として処理する。すなわち、エンコード処理部14は、「id」、「title」、「body」、「tags」、「author」、「comments」を同じ階層として扱うことから、いずれのデータについても接頭語として「_0」を追加する。
ここで、別例として、図5に示した「“tags”:[“タグ1”,“タグ2”]」について説明する。このデータは、オブジェクト“tags”の値が配列であることを示している。このため、エンコード処理部14は、“タグ1”と“タグ2”を区別するために、連番を付加する。つまり、エンコード処理部14は、“タグ1”を0番目、“タグ2”を1番目と区別する。この結果、エンコード処理部14は、「“tags”:[“タグ1”,“タグ2”]」を、「“_0.tags_0”:タグ1」と「“_0.tags_1”:タグ2」とに変換する。
また、同種のデータとして「“comments”:[{〜},{〜}]」について説明する。このデータも、オブジェクト“comments”の値が配列であることを示している。さらに、このデータは、各要素が複数のデータで構成されている。つまり、「{}」の中に存在するデータは、同階層として処理される。具体的には、1つの「{}」の中に存在する「id、author、text」が同じ階層と扱われ、2つの「{}」の中に存在する「id、author、text」が同じ階層と扱われる。また、各要素には、連番が付加される。この結果、エンコード処理部14は、はじめの「{〜}」を0番目の配列、次の「{〜}」を1番目の配列として処理する。
具体的には、エンコード処理部14は、「“comments”:[{」を、「“_0.comments_0”」と変換する。そして、エンコード処理部14は、「“comments”:[{」に続く「“id”:100」については、「“_0.comments_0.id:100”」と変換する。同様に、エンコード処理部14は、「“comments”:[{」に続く「“author”:ユーザ2」については、「“_0.comments_0.author:ユーザ2”」と変換する。同様に、エンコード処理部14は、「“comments”:[{」に続く「“text”:コメント1」については、「“_0.comments_0.text:コメント1”」と変換する。
さらに、エンコード処理部14は、「“comments”:[{」の後に続く「{」については、「“_0.comments_1”」と変換する。そして、エンコード処理部14は、2個目の「{」に続く「“id”:101」については、「“_0.comments_1.id:101”」と変換する。同様に、エンコード処理部14は、2個目の「{」に続く「“author”:ユーザ1」については、「“_0.comments_1.author:ユーザ1”」と変換する。同様に、エンコード処理部14は、2個目の「{」に続く「“text”:コメント2」については、「“_0.comments_1.text:コメント2”と変換する。なお、他のデータについては上述した処理と同様の処理を実行するので、詳細な説明は省略する。
(デコードの具体例)
ここでは、図6から図5を生成する具体例を説明する。まず、判別部15aは、図6に示したデータベースから先頭の「{ ”_0.id“:0」を読み込む。続いて、キー解析部15bは、要素「“_0.id”:0」の先頭に位置する「」を削除して、「」に続く「“_0.id”:0」を読み込む。
続いて、判別部15aは、読み込んだデータ「“_0.id”:0」から、キーの始まりを示す「“」からオブジェクトを示す記号である「.」の前までの「_0」を抽出する。そして、判別部15aは、「_」が配列を示す記号であり、「0」が配列に割り与えられた連番であることから、「_0」を始めの配列の開始と判別する。すると、配列処理部15cは、配列の開始かつデータベースの開始であることから、アプリケーションに対応するデータベースの先頭としてデータ“[”を生成する。さらに、配列処理部15cは、生成したデータ“[”の後には配列の要素が続くことから、データ“[”に続けて、データ“{”を生成する。この時点では、「[ { 」が生成される。
その後、判別部15aは、読み込んだデータ「“_0.id”:0」から、読み出し済みの要素からキーの終わりを示す「”」までの「.id」を抽出する。そして、判別部15aは、「.」がオブジェクトを示す記号であり、「id」がオブジェクトであることから、「.id」をオブジェクトであると判別する。すると、オブジェクト処理部15dは、オブジェクトとして「id」を生成する。このとき、オブジェクト処理部15dは、配列処理部15cによって配列が生成されている場合には、当該オブジェクト「id」を配列の要素とする。この時点では、「[ { “id”」が生成される。
さらに、判別部15aは、次に続く要素が「:0」である場合、当該データに配列を示す記号もオブジェクトを示す記号も含まれていないことから、当該データを「値」と判定する。したがって、判別部15aは、「:0」を「id」の値する。この結果、「[ { “id”:id」が生成される。
次に、処理対象のデータとして「“_0.tags_0”:“タグ1”」を読み出した例について説明する。この場合、デコード処理部15は、「“_0.tags”」に対して、上述した処理と同様、「配列0番目のオブジェクトがtags」であると判定する。さらに、デコード処理部15は、tagsの後に配列を示す「_」と配列に割り振った連番「0」が存在することから、「オブジェクトであるtagsが、配列の0番目の要素としてタグ1を有する」と判定する。この結果、デコード処理部15は、「“_0.tags_0”:“タグ1”」を「“tags”:[“タグ1”]」と変換する。
また、この処理対象のデータとして「“_0.tags_0”:“タグ1”」には、さらに続いて「“_0.tags_1”:“タグ2”」が存在する。そして、デコード処理部15は、「“_0.tags ”」に対して、上述した処理と同様、「配列0番目のオブジェクトがtags」であると判定する。さらに、デコード処理部15は、tagsの後に配列を示す「_」と配列に割り振った連番「1」が存在することから、「オブジェクトであるtagsが、配列の1番目要素としてタグ2を有する」と判定する。この結果、デコード処理部15は、「“_0.tags_0”:“タグ2”」を変換する際には、「“tags”:[“タグ1”]」に要素を追加する形となり、「“tags”:[“タグ1”、“タグ2”]」と変換する。
続いて、処理対象のデータとして「“_0.commnets_0.id”:100」を読み出した例について説明する。この場合、デコード処理部15は、「“_0.commnets”」に対して、上述した処理と同様、「配列0番目のオブジェクトがcommnets」であると判定する。さらに、デコード処理部15は、commnetsの後に、配列を示す「_」と、配列に割り振った連番「0」と、オブジェクトであることを示す「.id」とが存在することを検出する。
このため、デコード処理部15は、「“_0.commnets_0.id”」に対して、「オブジェクトであるcommnetsが、配列の0番目の要素としてオブジェクトである「id」を有する」と判定する。さらに、デコード処理部15は、「“_0.commnets_0.id”」の後に「:100」が続くことから、オブジェクトである「id」の値が「100」であると判定する。この結果、デコード処理部15は、「“_0.commnets_0.id”:100」を「“commnets”:[ { ”id“:100」と変換する。
なお、デコード処理部15は、「“_0.commnets_0.author”:ユーザ2」については、「オブジェクトであるcommnetsが、配列の0番目の要素としてオブジェクトである「author」を有すると判定する。さらに、デコード処理部15は、オブジェクトである「author」の値が「ユーザ2」であると判定する。したがって、デコード処理部15は、「“_0.commnets_0.author”:ユーザ2」を「“commnets”:[ { “ author”:ユーザ2」と変換する。ただし、commnetsが有する配列は、「id」に対応するデータを変換した既に生成されている。このため、デコード処理部15は、「“_0.commnets_0.author”:ユーザ2」を「“author”:ユーザ2」と、最終的に変換する。なお、他のデータについては上述した処理と同様の処理を実行するので、詳細な説明は省略する。
[効果]
このように、実施例1に係る変換部13は、アプリケーションが処理対象とする階層構造のデータをデータベースサーバが処理対象とするKVSに格納する際に、データが配列かオブジェクトか値かによって変換ルールを変更してデータ変換することができる。
また、実施例1に係る変換部13は、データベースサーバが処理対象とするKVSを、アプリケーションサーバが処理対照とする階層構造のデータに変換する際に、データが配列かオブジェクトか値かによって変換ルールを変更してデータ変換することができる。このように、実施例1に係る変換部13は、アプリケーションサーバとデータベースサーバとで処理対象となるデータモデルが異なる場合でも、データモデルの変換を機械的に実行することができる。
したがって、データベースサーバが処理対象とするデータモデルを意識することなく、アプリケーションを開発することができる。この結果、実施例1に係る変換部13は、データモデルの機械的な変換を可能にし、アプリケーションの開発効率を向上させることができる。
実施例1では、アプリケーションが使用するデータモデルをデータベースサーバが使用するデータモデルに変換する例とその逆について説明したが、これに限定されるものではなく、データの追加や削除等についても実行することができる。そこで、実施例2では、アプリケーションがデータベースサーバのデータモデルを意識することなく、データベースサーバのデータモデルにデータを追加する例と、データベースサーバのデータモデルからデータを削除する例とについて説明する。
[追加例1(最後尾)]
ここでは、図5に示したデータ構造の最後尾にデータを追加して図7に示したデータ構造を生成する例について説明する。図7は、図5の状態から本文にデータを追加した場合のデータ構成例を示す図である。図8は、本文が追加された後のデータベースに格納されるデータ構成例を示す図である。つまり、ここでは、アプリケーション側では図7に示したデータ構造になるようにデータを追加することで、データベースサーバ側では図6に示した状態からデータを追加して図8に示したデータ構造を生成する例について説明する。
例えば、アプリケーション11は、追加処理部16に対して、API(Application Program Interface)として「append(<データ内容>);」を実行する。データ内容には以下の文字列が格納される。

“id” : 1,
“title” : “タイトル2”,
“body” : “本文2”,
“author” : “ユーザ2”,
具体的には、追加処理部16は、追加対象のデータ項目の先頭が「{」であることから、配列の要素の開始であると認識する。すると、追加処理部16は、図6に示したデータベースから配列を示す「_」で始まり、これに続く数字の最も大きい文字列を検索する。すなわち、追加処理部16は、図6に示したデータを先頭から検索していき、最後の行が「“_0.comments_1.text”:“コメント2”,」であると認識する。そして、追加処理部16は、「_」で始まり、これに続く最も大きな数字が「0」であると特定する。
すると、追加処理部16は、得られた数字に1を加えたものを採番する。すなわち、追加処理部16は、すでに記憶されている「0」番目の配列の次の配列として、上記データ項目各々をデータベースに格納するために、「1」を採番する。
その後、追加処理部16は、実施例1のフローチャート等で説明した変換ルールにしたがって、採番された番号をもとに項目名を生成する。具体的には、追加処理部16は、格納対象のデータがオブジェクトの項目名であった場合には「_1」に「.」および項目名を追加したデータ項目を生成する。また、追加処理部16は、格納対象のデータが配列であった場合には「_1」に「_」を追加したデータ項目を生成する。また、追加処理部16は、格納対象のデータが値であった場合には、当該値をすでに生成されているデータ項目の値として、キー+バリューを生成する。
例えば、「“id”:1,」の場合、追加処理部16は、“id”がオブジェクトであると判定し、「_1」に「.」および項目名を追加して、「_1.id」を生成する。続いて、追加処理部16は、「:1,」を読み込み、これを値と判定して、データ項目「_1.id」の値とする。すなわち、追加処理部16は、「“_1.id”:1」を生成する。
上述した処理を、追加対象のデータ各々について再帰的に繰り返すことで、図8に示すように、新たな配列の要素としてデータを追加することができる。すなわち、2件目のブログ記事を追加することができる。
[データ参照]
次に、アプリサーバ10で実行されるアプリケーションが、データベースサーバ40に記憶されるデータを参照する例を説明する。例えば、アプリケーション11は、変換部13に対して、APIとして「getlist();」を実行する。
続いて、変換部13は、図8に示したデータベースから、「_」ではじまり、「_」に続く数字の最も大きいものを検索する。図8の例では、変換部13は、「_1_author」を検出する。
そして、変換部13は、「_1.」ではじまる項目名を取得し、取得した項目それぞれについて「_」に数字が追加されたものであれば配列に変換し、「.」であればオブジェクトに変換する。この結果、変換部13は、以下の文字列をアプリケーションに返答する。

“id” : 1,
“title” : “タイトル2”,
“body” : “本文2”,
“author” : “ユーザ2”,
[追加例2(途中)]
ここでは、図7に示したデータ構造の途中にデータを追加して図9に示したデータ構造を生成する例について説明する。図9は、図7の状態からコメントを追加した場合のデータ構成例を示す図である。図10は、コメントが追加された後のデータベースに格納されるデータ構成例を示す図である。つまり、ここでは、アプリケーション側では図9に示したデータ構造になるようにデータを追加し、データベースサーバ側では図8に示した状態からデータを追加して図10に示したデータ構造を生成する例について説明する。
例えば、アプリケーション11は、追加処理部16に対して、APIとして「append(<追加対象>,<データ内容>);」を実行する。追加対象には、getFirst().commentsが指定され、データ内容には以下の文字列が格納される。

“id” : 102,
“author” : “ユーザ2”,
“text” : “コメント3”,
具体的には、追加処理部16は、追加対象を空文字とする。続いて、追加処理部16は、配列の先頭要素を表す「getFirst()」の場合、追加対象に「_0」を追加する。すなわち、追加対象は、「_0」となる。また、追加処理部16は、オブジェクトの項目名であった場合、追加対象に「.」を追加したデータ項目を生成する。すなわち、追加対象は、「“_0.comments”」となる。
そして、追加処理部16は、配列にデータを追加する。具体的には、追加処理部16は、図8に示したデータベースから追加対象に続いて「_」で始まり、それに続く数字の最も大きいものを検索する。すなわち、追加処理部16は、図8に示したデータを先頭から検索していき、追加対象である「“_0.comments”」に続く数字のうち最も大きい数字の最終行が「“_0.comments_1.text”:“コメント2”,」であると認識する。そして、追加処理部16は、追加対象に続いて「_」で始まり、それに続く数字の最も大きな数字が「1」であると特定する。その後、追加処理部16は、得られた数字「1」に1を加算した「2」を採番する。すなわち、追加対象は、「“_0.comments_2”」となる。
その後、追加処理部16は、採番された番号をもとに項目名を生成する。具体的には、追加処理部16は、追加対象のデータがオブジェクトの項目名であった場合、「_1」に「.」を追加したデータ項目を生成する。また、追加処理部16は、追加対象のデータが配列であった場合、「_1」に「_」を追加したものに連番を追加する。また、追加処理部16は、格納対象のデータが値であった場合には、当該値をすでに生成されているデータ項目の値として、キー+バリューを生成する。
例えば、「“id”:102,」の場合、追加処理部16は、“id”がオブジェクトであると判定し、「_2」に「.」および項目名を追加して、「_0.comments_2.id」を生成する。続いて、追加処理部16は、「:102,」を読み込み、これを値と判定して、データ項目「_0.comments_2.id」の値とする。すなわち、追加処理部16は、「“_0.comments_2.id”:102」を生成する。
上述した処理を、追加対象のデータ各々について再帰的に繰り返すことで、図10に示すように、既に格納されているコメントの新たな配列の要素として、データを追加することができる。すなわち、1件目のブログ記事にコメントを追加することができる。
[削除例]
ここでは、図10に示したデータ構造からデータを削除する例について説明する。一例として、2件目のブログ記事を削除する例について説明する。つまり、アプリケーション側がデータベースサーバのデータモデルを意識することなく、アプリケーションの操作によってデータベースサーバからデータを削除する例について説明する。
アプリケーション11は、削除処理部17に対して、APIとして「delete(<削除対象>);」を実行する。削除対象には、getFirst().nextが指定される。
削除処理部17は、削除対象を空文字とする。続いて、削除処理部17は、配列の先頭要素を表す「getFirst()」の場合、削除対象に「_0」を追加する。すなわち、削除対象は、「_0」となる。続いて、削除処理部17は、配列の次の要素を表す「next()」の場合、削除対象の最後の「_」以降の数字を1増分したものに置き換える。すなわち、削除対象は、「_1」となる。その後、削除処理部17は、削除対象ではじまるものを全て削除する。すなわち、削除処理部17は、「_1」ではじまるデータを全て削除する。具体的には、以下のデータが削除される。

“_1.id” : 1,
“_1.title” : “タイトル2”,
“_1.body” : “本文2”,
“_1.author” : “ユーザ2”,
上述した処理を行うことで、データモデルが異なるサーバ間であっても、任意のデータ項目を削除することができる。このため、データベースへのデータ追加やデータ削除を、データモデルの影響を受けることなく、任意に実行することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
(データ構造)
上記実施例で説明したデータ構造はあくまで一例であり、実施例で説明したデータ構造に限定されない。例えば、実施例では、1階層を例にしたが、2階層以上でも同様に処理することができる。また、実施例では、JSON形式でデータの受け渡しを実行する例について説明したが、これに限定されるものではなく、XML(Extensible Markup Language)など他の形式であってもよい。
(変換エンジン)
上記実施例では、アプリサーバが変換部を有する例について説明したが、これに限定されるものではなく、例えば、データベースサーバが変換部を有していてもよく。また、アプリサーバやデータベースサーバとは別の筐体で、データモデル変換処理を実行する変換部を有するサーバ装置を実現してもよい。
(変換ルール)
上記実施例では、配列については「_」、オブジェクトについては「.」を用いて、データを結合する例を説明したが、これに限定されるものではなく、「#」や「$」など他の記号を用いてもよい。また、順番情報として0からインクリメントしていく例を説明したが、これに限定されるものではなく、例えば100からデクリメントしてもよく、順番を特定できる手法であれば、任意の手法を用いることができる。
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(ハードウェア構成)
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。
図11は、ハードウェア構成例を示す図である。図11に示すように、アプリサーバ100は、CPU102、入力装置103、出力装置104、通信インタフェース105、媒体読取装置106、HDD(Hard Disk Drive)107、RAM(Random Access Memory)108を有する。また、図11に示した各部は、バス101で相互に接続される。
入力装置103は、マウスやキーボードであり、出力装置104は、ディスプレイなどであり、通信インタフェース105は、NIC(Network Interface Card)などのインタフェースである。HDD107は、図2等に示した機能を実行するプログラムやデータ等を記憶する。記録媒体の例としてHDD107を例に挙げたが、ROM(Read Only Memory)、RAM、CD−ROM等の他のコンピュータが読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのWAN高速化装置自身の記録媒体に格納して用いてもよい。
CPU102は、図2に示した各処理部と同様の処理を実行するプログラムを読み出してRAM108に展開することで、図2等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、アプリケーション11、データベース接続部12、変換部13と同様の機能を実行する。このようにアプリサーバ100は、プログラムを読み出して実行することでデータモデル変換方法を実行する情報処理装置として動作する。
また、アプリサーバ100は、媒体読取装置106によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、アプリサーバ100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
10 アプリサーバ
11 アプリケーション
12 データベース接続部
13 変換部
14 エンコード処理部
14a 判別部
14b 配列処理部
14c オブジェクト処理部
14d 値処理部
14e 出力部
15 デコード処理部
15a 判別部
15b キー解析部
15c 配列処理部
15d オブジェクト処理部
15e 出力部

Claims (6)

  1. コンピュータ
    第1のデータモデルで定義されるデータを構成するデータ項目に設定される情報が配列であることを示す第1の記号と一致する場合に、当該データ項目の種別を前記配列と判定し、前記配列であることを示す配列情報と前記配列の順番を示す順番情報とを結合した情報を、第2のデータモデルで項目名と値とを用いて定義されるデータの前記項目名に追加する第1の追加手段と
    前記データ項目に設定される情報がオブジェクトであることを示す、前記第1の記号とは異なる第2の記号を含む場合に、当該データ項目の種別を前記オブジェクトと判定し、前記オブジェクトであることを示すオブジェクト情報と前記データ項目に設定される情報である要素とを結合した情報を、前記項目名に追加する第2の追加手段と
    前記データ項目に設定される情報がであることを示す、前記第1の記号および前記第2の記号とは異なる第3の記号を含む場合に、当該データ項目の種別を前記値と判定し、前記値を前記項目名に対応付けて、前記第2のデータモデルで定義されるデータを生成する第1の生成手段と
    して機能させるためのデータモデル変換プログラム。
  2. 前記コンピュータを
    前記第2のデータモデルで定義されるデータベースに追加対象のデータが、新たな配列である場合には、前記配列情報と、前記データベースにおける末尾のデータであることを特定する順番情報とを結合して前記項目名を生成する第2の生成手段と
    前記オブジェクト情報と、前記追加対象のデータにおいてオブジェクトである要素とを結合した情報を前記項目名に追加する第3の追加手段と
    前記追加対象のデータにおける値と、前記項目名とを対応付けたデータを、前記第2のデータモデルで定義されるデータベースに、前記新たな配列として追加する第4の追加手段としてさらに機能させることを特徴とする請求項1に記載のデータモデル変換プログラム。
  3. 前記コンピュータを
    前記第2のデータモデルで定義されるデータベースに追加対象のデータが、既存の配列の新たな要素である場合には、前記配列情報と、前記既存の配列における末尾の要素であることを特定する順番情報とを結合した情報を、前記既存の配列を特定する項目名に追加する第5の追加手段と
    前記オブジェクト情報と、前記追加対象のデータにおいてオブジェクトである要素とを結合した情報を前記項目名に追加する第6の追加手段と
    前記追加対象のデータにおける値と、前記項目名とを対応付けたデータを、前記第2のデータモデルで定義されるデータベースに、前記既存の配列の新たな要素として追加する第7の追加手段としてさらに機能させることを特徴とする請求項1に記載のデータモデル変換プログラム。
  4. 前記コンピュータを
    前記第2のデータモデルで定義されるデータベースから削除対象のデータが、配列である場合に、当該配列を特定する前記配列情報と前記順番情報との組み合わせを、前記項目名として有するデータを前記データベースから特定する特定手段と
    特定した前記配列情報と前記順番情報との組み合わせを有する前記データを、前記データベースから削除する削除手段としてさらに機能させることを特徴とする請求項1に記載のデータモデル変換プログラム。
  5. 第1の追加手段が、第1のデータモデルで定義されるデータを構成するデータ項目に設定される情報が配列であることを示す第1の記号と一致する場合に、当該データ項目の種別を前記配列と判定し、前記配列であることを示す配列情報と配列の順番を示す順番情報とを結合した情報を、第2のデータモデルで項目名と値とを用いて定義されるデータの前記項目名に追加し、
    第2の追加手段が、前記データ項目に設定される情報がオブジェクトであることを示す、前記第1の記号とは異なる第2の記号を含む場合に、当該データ項目の種別を前記オブジェクトと判定し、前記オブジェクトであることを示すオブジェクト情報と前記データ項目に設定される情報である要素とを結合した情報を、前記項目名に追加し、
    生成手段が、前記データ項目に設定される情報がであることを示す、前記第1の記号および前記第2の記号とは異なる第3の記号を含む場合に、当該データ項目の種別を前記値と判定し、前記値を前記項目名に対応付けて、前記第2のデータモデルで定義されるデータを生成する
    ことを特徴とするデータモデル変換方法。
  6. 第1のデータモデルで定義されるデータを構成するデータ項目に設定される情報が配列であることを示す第1の記号と一致する場合に、当該データ項目の種別を前記配列と判定し、前記配列であることを示す配列情報と前記配列の順番を示す順番情報とを結合した情報を、第2のデータモデルで項目名と値とを用いて定義されるデータの前記項目名に追加する第1追加部と、
    記データ項目に設定される情報がオブジェクトであることを示す、前記第1の記号とは異なる第2の記号を含む場合に、当該データ項目の種別を前記オブジェクトと判定し、前記オブジェクトであることを示すオブジェクト情報と前記データ項目に設定される情報である要素とを結合した情報を、前記項目名に追加する第2追加部と、
    記データ項目に設定される情報がであることを示す、前記第1の記号および前記第2の記号とは異なる第3の記号を含む場合に、当該データ項目の種別を前記値と判定し、前記値を前記項目名に対応付けて、前記第2のデータモデルで定義されるデータを生成する生成部と
    を有することを特徴とするデータモデル変換装置。
JP2012061193A 2012-03-16 2012-03-16 データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置 Expired - Fee Related JP5867208B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012061193A JP5867208B2 (ja) 2012-03-16 2012-03-16 データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置
US13/751,342 US20130246479A1 (en) 2012-03-16 2013-01-28 Computer-readable recording medium, data model conversion method, and data model conversion apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012061193A JP5867208B2 (ja) 2012-03-16 2012-03-16 データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置

Publications (2)

Publication Number Publication Date
JP2013196205A JP2013196205A (ja) 2013-09-30
JP5867208B2 true JP5867208B2 (ja) 2016-02-24

Family

ID=49158679

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012061193A Expired - Fee Related JP5867208B2 (ja) 2012-03-16 2012-03-16 データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置

Country Status (2)

Country Link
US (1) US20130246479A1 (ja)
JP (1) JP5867208B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103392320B (zh) * 2010-12-29 2016-08-31 思杰系统有限公司 对加密项目进行多层标记以提供额外的安全和有效的加密项目确定的系统和方法
JP7449190B2 (ja) * 2020-07-28 2024-03-13 株式会社日立製作所 データ移行システムおよびデータ移行方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379419A (en) * 1990-12-07 1995-01-03 Digital Equipment Corporation Methods and apparatus for accesssing non-relational data files using relational queries
US6360223B1 (en) * 1997-12-22 2002-03-19 Sun Microsystems, Inc. Rule-based approach to object-relational mapping strategies
JP4526156B2 (ja) * 2000-05-22 2010-08-18 サンデン株式会社 コイン処理装置
JP2003285304A (ja) * 2002-01-28 2003-10-07 Matsushita Electric Works Ltd 繊維板、その繊維板の製造方法及びその繊維板を用いた構造用壁下地材
US7490093B2 (en) * 2003-08-25 2009-02-10 Oracle International Corporation Generating a schema-specific load structure to load data into a relational database based on determining whether the schema-specific load structure already exists
US10032130B2 (en) * 2005-03-07 2018-07-24 Ca, Inc. System and method for providing data manipulation using web services
US20080201234A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Live entities internet store service
JP2009169789A (ja) * 2008-01-18 2009-07-30 Kota Ogawa 文字入力システム
US7952500B2 (en) * 2009-01-27 2011-05-31 Tatu Ylonen Oy Serialization of shared and cyclic data structures using compressed object encodings
JP4385387B1 (ja) * 2009-07-02 2009-12-16 修平 西山 属性付きキー・バリュー・ストアによるデータベース・システム
US8578246B2 (en) * 2010-05-31 2013-11-05 International Business Machines Corporation Data encoding in solid-state storage devices
US9460189B2 (en) * 2010-09-23 2016-10-04 Microsoft Technology Licensing, Llc Data model dualization
US8838653B2 (en) * 2010-11-01 2014-09-16 Cisco Technology, Inc. Translating an object-oriented data model to a YANG data model
US20120158655A1 (en) * 2010-12-20 2012-06-21 Microsoft Corporation Non-relational function-based data publication for relational data

Also Published As

Publication number Publication date
US20130246479A1 (en) 2013-09-19
JP2013196205A (ja) 2013-09-30

Similar Documents

Publication Publication Date Title
JP6285943B2 (ja) 文字列変換の帰納的合成のための順位付け
Kyrola Drunkardmob: billions of random walks on just a pc
JP6550448B2 (ja) データ管理装置、データ管理方法、およびプログラム
JP2007317189A (ja) 3要素モデルに基づく検索情報加工方法
JP6331756B2 (ja) テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置
RU2634223C2 (ru) Способ (варианты) и система (варианты) управления данными, связанными с иерархической структурой
JP5867208B2 (ja) データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置
CN105843809B (zh) 数据处理方法和装置
JP2017126185A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US20140324878A1 (en) System and method for search indexing
CN108121807B (zh) Hadoop环境下多维索引结构OBF-Index的实现方法
JP7381290B2 (ja) 計算機システム及びデータの管理方法
US11550777B2 (en) Determining metadata of a dataset
JP2015115652A (ja) 情報処理装置、情報処理方法及びプログラム
JP6402637B2 (ja) 分析プログラム、分析方法及び分析装置
JP6123372B2 (ja) 情報処理システム、名寄せ判定方法及びプログラム
JP6753190B2 (ja) 文書検索装置及びプログラム
JP2016170453A (ja) データ格納制御装置、データ格納制御システム、データ格納制御方法、及び、データ格納制御プログラム
Kaushal et al. Big data application in medical domain
JP5441791B2 (ja) 検索機能付きファイルストレージ装置及びプログラム
JP5411954B2 (ja) ツリー抽出装置、ツリー抽出システム、ツリー抽出方法、及びツリー抽出プログラム
JP7105717B2 (ja) 情報処理装置、抽出方法、およびプログラム
JP6480495B2 (ja) データ管理装置、データ管理方法、およびプログラム
US10942969B2 (en) Non-transitory computer-readable storage medium, search control method, and search control apparatus
JP2008198053A (ja) 仮想フォルダ構築装置及び仮想フォルダ構築方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151005

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151221

R150 Certificate of patent or registration of utility model

Ref document number: 5867208

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees