JP2015125572A - シリアライザを特化する方法、装置及びコンピュータプログラム - Google Patents

シリアライザを特化する方法、装置及びコンピュータプログラム Download PDF

Info

Publication number
JP2015125572A
JP2015125572A JP2013269077A JP2013269077A JP2015125572A JP 2015125572 A JP2015125572 A JP 2015125572A JP 2013269077 A JP2013269077 A JP 2013269077A JP 2013269077 A JP2013269077 A JP 2013269077A JP 2015125572 A JP2015125572 A JP 2015125572A
Authority
JP
Japan
Prior art keywords
type
code
serializer
generating
optional area
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
JP2013269077A
Other languages
English (en)
Other versions
JP6044960B2 (ja
Inventor
戸澤 晶彦
Masahiko Tozawa
晶彦 戸澤
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2013269077A priority Critical patent/JP6044960B2/ja
Priority to US14/571,483 priority patent/US9851958B2/en
Publication of JP2015125572A publication Critical patent/JP2015125572A/ja
Application granted granted Critical
Publication of JP6044960B2 publication Critical patent/JP6044960B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • G06F8/437Type checking
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24528Standardisation; Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computing Systems (AREA)

Abstract

【課題】生成サイトごとにシリアライズの型推論を行い、生成サイトごとにシリアライザを特化する方法、装置及びコンピュータプログラムを提供する。【解決手段】クエリをコンパイルする生成サイトごとにシリアライズの型を推論し、推論された型及び実際に用いられる型に基づいて、生成サイトごとにシリアライザを特化する。生成サイトごとに、それぞれ特化されたシリアライザを用いてデータ値をシリアライズする。生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写しながら推論を実行し、推論された型とシリアライズに用いられる型とを再帰的に比較する。【選択図】図3

Description

本発明は、生成サイトごとにシリアライズの型推論を行い、生成サイトごとにシリアライザを特化する方法、装置及びコンピュータプログラムに関する。
昨今のインターネット環境の普及、あるいは各種コンピュータの演算処理速度の向上等に伴い、大容量のデジタルデータであるビッグデータが注目されている。ビッグデータは、単に大容量であるだけでなく、非定型であり、しかもリアルタイム性が高い。従来のデータベース管理システムでは、データを定型化して蓄積し、その後で処理分析するため、従来のデータベースとは相反する性質を持つビッグデータを扱うことは困難とされていた。
JSONのような半構造データを扱うNoSQL言語、例えばJaql等を利用してデータ解析する場合、大量のデータ通信による入出力コストがボトルネックとなり、適正なレスポンスを得ることができない。そこで、型(スキーマ)を用いてデータ処理を統一化するとともに、データを圧縮することによりデータサイズを小さくしてから解析する等、様々な工夫がなされている。
例えば特許文献1乃至8には、大容量のデジタルデータを処理する場合にシリアライズ及び/又はデシリアライズを実行する技術が開示されている。特許文献1乃至8に開示されているシリアライズ及び/又はデシリアライズは、型と値とを確認しつつ、動的に実行するものがほとんどである。
また、特許文献9、10には、型(スキーマ)を推定する型推論を用いるシステムが開示されている。例えば値と名前(識別子)とを有するレコードの型を推論することにより、ビッグデータを実際に取り扱うことができるデータにデシリアライズすることができる。
特開2003−122730号公報 特開2003−122773号公報 特開2003−249961号公報 特開2005−056085号公報 特開2005−157718号公報 特開2005−209048号公報 特表2007−522558号公報 国際公開第2011/111532号 特表2007−519078号公報 特開2010−237867号公報
しかし、動的に型と値とを確認しながらシリアライズ及び/又はデシリアライズを実行する場合、演算処理負荷が過大となるおそれがあるという問題点があった。例えば、クエリをコンパイルする場合、クエリ中の制御フローの合流により汎化された型が推論されるが、このとき、既存のシリアライザを用いるのでは、型と値とを確認する手間及びコストが膨大となる。
本発明は斯かる事情に鑑みてなされたものであり、生成サイトごとにシリアライズの型推論を行い、生成サイトごとにシリアライザを特化する方法、装置及びコンピュータプログラムを提供することを目的とする。
上記目的を達成するために第1発明に係る方法は、クエリをコンパイルする場合にシリアライザ及び/又はデシリアライザを生成する装置で実行することが可能な方法において、前記装置は、前記クエリをコンパイルする生成サイトごとにシリアライズの型を推論する第一のステップと、推論された型及び実際に用いられる型に基づいて、前記生成サイトごとにシリアライザを特化する第二のステップと、前記生成サイトごとに、それぞれ特化されたシリアライザを用いてデータ値をシリアライズする第三のステップとを含む。
また、第2発明に係る方法は、第1発明において、前記第一のステップは、前記生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写しながら推論を実行するステップと、推論された型とシリアライズに用いられる型とを再帰的に比較するステップとを含む。
また、第3発明に係る方法は、第1又は第2発明において、前記第二のステップは、オプショナル領域を有するレコード型のシリアライザを生成する場合、第一の型T0におけるオプショナル領域が、第二の型Tcで要求済みであると判断したときには、ビット‘1’を出力するコードを生成するステップと、第一の型T0におけるオプショナル領域が、第二の型Tcに存在しないと判断したときには、ビット‘0’を出力するコードを生成するステップと、第一の型T0におけるオプショナル領域が、第二の型Tcでもオプショナル領域であるときには、データ値が存在すればビット‘1’を出力するコードを、存在しなければビット‘0’を出力するコードを、それぞれ生成するステップとを含む。
また、第4発明に係る方法は、第1又は第2発明において、前記第二のステップは、第一の型をT0乃至Tn(nは自然数)の複数の型から選択する選択型のシリアライザを生成する場合、第二の型Tcが、選択された第一の型Ti(iは1〜nのいずれか)のみのサブタイプであると判断したときには、数値‘i’を出力するコードを生成するステップと、第二の型Tcと選択された第一の型Tiとに基づいて、データ値をシリアライズするコードを生成するステップとを含む。
次に、上記目的を達成するために第5発明に係る装置は、クエリをコンパイルする場合にシリアライザ及び/又はデシリアライザを生成する装置において、前記クエリをコンパイルする生成サイトごとにシリアライズの型を推論する型推論手段と、推論された型及び実際に用いられる型に基づいて、前記生成サイトごとにシリアライザを特化する特化手段と、前記生成サイトごとに、それぞれ特化されたシリアライザを用いてデータ値をシリアライズする手段とを備える。
また、第6発明に係る装置は、第5発明において、前記型推論手段は、前記生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写しながら推論を実行する手段と、推論された型とシリアライズに用いられる型とを再帰的に比較する手段とを備える。
また、第7発明に係る装置は、第5又は第6発明において、前記特化手段は、オプショナル領域を有するレコード型のシリアライザを生成する場合、第一の型T0におけるオプショナル領域が、第二の型Tcで要求済みであると判断したときには、ビット‘1’を出力するコードを生成する手段と、第一の型T0におけるオプショナル領域が、第二の型Tcに存在しないと判断したときには、ビット‘0’を出力するコードを生成する手段と、第一の型T0におけるオプショナル領域が、第二の型Tcでもオプショナル領域であるときには、データ値が存在すればビット‘1’を出力するコードを、存在しなければビット‘0’を出力するコードを、それぞれ生成する手段とを備える。
また、第8発明に係る装置は、第5又は第6発明において、前記特化手段は、第一の型をT0乃至Tn(nは自然数)の複数の型から選択する選択型のシリアライザを生成する場合、第二の型Tcが、選択された第一の型Ti(iは1〜nのいずれか)のみのサブタイプであると判断したときには、数値‘i’を出力するコードを生成する手段と、第二の型Tcと選択された第一の型Tiとに基づいて、データ値をシリアライズするコードを生成する手段とを備える。
次に、上記目的を達成するために第9発明に係るコンピュータプログラムは、クエリをコンパイルする場合にシリアライザ及び/又はデシリアライザを生成する装置で実行することが可能なコンピュータプログラムにおいて、前記装置を、前記クエリをコンパイルする生成サイトごとにシリアライズの型を推論する型推論手段、推論された型及び実際に用いられる型に基づいて、前記生成サイトごとにシリアライザを特化する特化手段、及び前記生成サイトごとに、それぞれ特化されたシリアライザを用いてデータ値をシリアライズする手段として機能させる。
また、第10発明に係るコンピュータプログラムは、第9発明において、前記型推論手段を、前記生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写しながら推論を実行する手段、及び推論された型とシリアライズに用いられる型とを再帰的に比較する手段として機能させる。
また、第11発明に係るコンピュータプログラムは、第9又は第10発明において、前記特化手段を、オプショナル領域を有するレコード型のシリアライザを生成する場合、第一の型T0におけるオプショナル領域が、第二の型Tcで要求済みであると判断したときには、ビット‘1’を出力するコードを生成する手段、第一の型T0におけるオプショナル領域が、第二の型Tcに存在しないと判断したときには、ビット‘0’を出力するコードを生成する手段、及び第一の型T0におけるオプショナル領域が、第二の型Tcでもオプショナル領域であるときには、データ値が存在すればビット‘1’を出力するコードを、存在しなければビット‘0’を出力するコードを、それぞれ生成する手段として機能させる。
また、第12発明に係るコンピュータプログラムは、第9又は第10発明において、前記特化手段を、第一の型をT0乃至Tn(nは自然数)の複数の型から選択する選択型のシリアライザを生成する場合、第二の型Tcが、選択された第一の型Ti(iは1〜nのいずれか)のみのサブタイプであると判断したときには、数値‘i’を出力するコードを生成する手段、及び第二の型Tcと選択された第一の型Tiとに基づいて、データ値をシリアライズするコードを生成する手段として機能させる。
本発明によれば、生成サイトごとに専用のシリアライザ及び/又はデシリアライザを生成することができるので、動的にオブジェクトであるシリアライザの型を推論するのではなく、生成サイトごとのシリアライズに用いる型を確実に推論することができ、全体として演算処理時間を短縮することが可能となる。
本発明の実施の形態に係る生成装置の構成を模式的に示すブロック図である。 本発明の実施の形態に係る生成装置の機能ブロック図である。 本発明の実施の形態に係る生成装置のデータ値部分のみを取り出した型を算出するための述語の例示図である。 本発明の実施の形態に係る生成装置のレコード型である場合の規則の例示図である。 本発明の実施の形態に係る生成装置の配列型である場合の規則の例示図である。 本発明の実施の形態に係る生成装置の和集合型である場合の規則の例示図である。 本発明の実施の形態に係る生成装置のプリミティブ型である場合の規則の例示図である。 本発明の実施の形態に係る生成装置の和集合型が右辺に現れる場合の規則の例示図である。 本発明の実施の形態に係る生成装置のCPUの処理手順を示すフローチャートである。 本発明の実施の形態に係る生成装置のCPUのシリアライザ特化の処理手順を示すフローチャートである。
以下、本発明の実施の形態に係る、クエリをコンパイルする場合に、シリアライザ及び/又はデシリアライザを生成する装置(生成装置)について、図面に基づいて具体的に説明する。以下の実施の形態は、特許請求の範囲に記載された発明を限定するものではなく、実施の形態の中で説明されている特徴的事項の組み合わせの全てが解決手段の必須事項であるとは限らないことは言うまでもない。
また、本発明は多くの異なる態様にて実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態を通じて同じ要素には同一の符号を付している。
以下の実施の形態では、コンピュータシステムにコンピュータプログラムを導入した装置について説明するが、当業者であれば明らかな通り、本発明はその一部をコンピュータで実行することが可能なコンピュータプログラムとして実施することができる。したがって、本発明は、クエリをコンパイルする場合にシリアライザ及び/又はデシリアライザを生成する装置(生成装置)というハードウェアとしての実施の形態、ソフトウェアとしての実施の形態、又はソトウェアとハードウェアとの組み合わせの実施の形態をとることができる。コンピュータプログラムは、ハードディスク、DVD、CD、光記憶装置、磁気記憶装置等の任意のコンピュータで読み取ることが可能な記録媒体に記録することができる。
本発明の実施の形態によれば、生成サイトごとに専用のシリアライザ及び/又はデシリアライザを生成することができるので、データ処理時に動的にオブジェクトの値を調べてシリアライズに用いる型を判定するのではなく、クエリコンパイル時に静的に生成サイトごとのシリアライズに用いる型を確実に推論することができ、全体として演算処理時間を短縮することが可能となる。
図1は、本発明の実施の形態に係る生成装置の構成を模式的に示すブロック図である。本発明の実施の形態に係る生成装置1は、少なくともCPU(中央演算装置)11、メモリ12、記憶装置13、I/Oインタフェース14、ビデオインタフェース15、可搬型ディスクドライブ16、通信インタフェース17及び上述したハードウェアを接続する内部バス18で構成されている。
CPU11は、内部バス18を介して生成装置1の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置13に記憶されたコンピュータプログラム100に従って、種々のソフトウェア的機能を実行する。メモリ12は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラム100の実行時にロードモジュールが展開され、コンピュータプログラム100の実行時に発生する一時的なデータ等を記憶する。
記憶装置13は、内蔵される固定型記憶装置(ハードディスク)、ROM等で構成されている。記憶装置13に記憶されたコンピュータプログラム100は、プログラム及びデータ等の情報を記録したDVD、CD−ROM等の可搬型記録媒体90から、可搬型ディスクドライブ16によりダウンロードされ、実行時には記憶装置13からメモリ12へ展開して実行される。もちろん、通信インタフェース17を介して接続されている外部コンピュータからダウンロードされたコンピュータプログラムであっても良い。
記憶装置13は、型を比較する規則を記憶してある型比較規則記憶部131を備えている。型比較規則記憶部131には、生成サイトごとに、推論された型とシリアライズに用いられる型とを、再帰的に比較するための規則(ルール)が記憶されている。
例えばレコード型、和集合型、プリミティブ型等の型の種類に応じて、それぞれ述語を計算する規則が記憶されている。CPU11は、記憶されている規則に従って述語を計算し、推論された型と実際にシリアライズに用いられる型とを比較する。
通信インタフェース17は内部バス18に接続されており、インターネット、LAN、WAN等の外部のネットワークに接続されることにより、外部コンピュータ等とデータ送受信を行うことが可能となっている。
I/Oインタフェース14は、キーボード21、マウス22等の入力装置と接続され、データの入力を受け付ける。ビデオインタフェース15は、CRTディスプレイ、液晶ディスプレイ等の表示装置23と接続され、所定の画像を表示する。
図2は、本発明の実施の形態に係る生成装置1の機能ブロック図である。図2において、生成装置1のアノテーション付加部201は、クエリの部分式に生成サイトを識別するアノテーションを付加する。
例えば、2つのテーブル$t0と$t1に対するクエリが、それぞれ(式1)に示すマップ関数で表されると仮定する。
Figure 2015125572
そして、(式1)の右辺(部分式)に、生成サイトごとに割り当てられ、互いに識別するアノテーションを付加する。例えばテーブル$t0について、アノテーションを付加することで、(式2)を得る。
Figure 2015125572
そして、型推論部202は、クエリをコンパイルする生成サイトごとにシリアライズの型を推論する。
実際には、型推論部202は、生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写しながら推論を実行する実行部203と、推論された型とシリアライズに用いられる型とを再帰的に比較する比較部204とを備えている。
実行部203は、型推論を実行する場合に、生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写することにより(式3)を得る。これが型推論されたアノテーション付きの型Tcである。
Figure 2015125572
より具体的には、部分式に応じて型推論の規則が変動する。例えばNoSQL式の部分式が、(式2)のような「transform」式である場合、再帰的に左辺の型を推論する。推論結果が可変長配列型[t*]であるとき、変数$xの型がtであるという仮定を環境Γに追加して、部分式である[3 $x54 id6 ,{7 “x”8 :$x9 }]の型を推論する。
部分式の型推論の結果が型uであるとき、[l u*]という配列型を推論する。式に表すと(式4)のようになる。(式4)において、eは(式2)の左辺を、e2は(式2)の大括弧[]内を、l(エルの小文字)はアノテーションの数値を、uは部分式e2を型推論した結果を、それぞれ示している。
Figure 2015125572
また、NoSQL式の部分式が、「if e then e1 else e2」のようなif形式である場合、再帰的に部分式e、e1、e2の型を推論する。型推論の結果がそれぞれBool、s、tであるとき、s|tという和集合型を推論して、(式5)を得る。
Figure 2015125572
さらに、NoSQL式の部分式が、[le1,e2,・・・]という定数長配列の生成式である場合、再帰的に部分式e1、e2の型を推論する。型推論の結果がそれぞれt1、t2、・・・であるとき、[le1、e2、・・・]に対して[lt1、t2、・・・]という定数長配列型を推論して、(式6)を得る。
Figure 2015125572
また、NoSQL式の部分式が、{lc1:e1、c2:e2、・・・}というレコード型の生成式である場合、再帰的に部分式e1、e2の型を推論する。推論結果がそれぞれt1,t2,・・・であるとき、{lc1:e1,c2:e2,・・・}に対して{lc1:t1,c2:t2,・・・}というレコード型を推論して、(式7)を得る。
Figure 2015125572
また、NoSQL式の部分式が、変数$xである場合、環境に$x:tが存在するときには変数$xに対して型tを推論して、(式8)を得る。
Figure 2015125572
上述した型推論を組み合わせることにより、アノテーション付きの型Tcを推論することができる。
比較部204は、推論された型Tc(第二の型)とシリアライズに用いられる型T0(第一の型)とを再帰的に比較する。シリアライズに用いられる型T0とは、例えば(式9)のようなマップ出力の値の型である。比較部204では、シリアライズに用いられる型T0と、(式3)で推論されたアノテーション付きの型Tcとを再帰的に比較する。
Figure 2015125572
具体的には、記憶装置13の型比較規則記憶部131に記憶されている、生成サイトごとにシリアライズに用いられる型を再帰的に比較するための規則(ルール)に従って述語を計算し、シリアライズするための型を生成サイトごとに特定する。
本実施の形態では、推論された型Tcは配列を用いたキー情報とデータ値との両方を含んでいる。そこで、まずデータ値部分のみを取り出した型Tc’を算出するための述語を定義する。図3は、本発明の実施の形態に係る生成装置1のデータ値部分のみを取り出した型Tc’を算出するための述語の例示図である。生成装置1は、図3に示すように、規則に従って述語を定義する。
(式3)に例示した型Tcに対して図3に示す述語を適用した場合、(式10)の中括弧内として、型Tc’を求めることができる。
Figure 2015125572
そこで、次に、求めた型Tc’と型T0とを再帰的に比較する。ここでも同様に、型比較規則記憶部131に記憶してある規則に基づいて述語を計算する。図4は、本発明の実施の形態に係る生成装置1のレコード型である場合の規則の例示図である。生成装置1は、型の種類がレコード型である場合、図4に示す(規則1)に従って述語を計算する。
もちろん、レコード型以外の型であっても、記憶装置13の型比較規則記憶部131に記憶されている規則に従って述語を計算することができる。図5は、本発明の実施の形態に係る生成装置1の配列型である場合の規則の例示図である。生成装置1は、配列型である場合、図5に示す(規則2)に従って述語を計算する。
以下、同様に、型の種類に応じて規則が相違する。図6は、本発明の実施の形態に係る生成装置1の和集合型である場合の規則の例示図である。図7は、本発明の実施の形態に係る生成装置1のプリミティブ型である場合の規則の例示図である。図8は、本発明の実施の形態に係る生成装置1の和集合型が右辺に現れる場合の規則の例示図である。生成装置1は、それぞれの型に応じて(規則1)〜(規則5)のいずれか1つを選択して述語を計算する。
これらの規則を(式3)に対して適用すると、(式11)に示すように述語を計算することができる。
Figure 2015125572
つまり、(式11)の計算結果より、(式2)のレコードの生成式{7 “x”8 :$x9 }で作られたレコード(データ値)は、型{“x”?:{“id”:long,“name”:string},“y”?:{“id”:long,“score”:double}}によりシリアライズされ、(式1)の入力$t0の中に含まれるレコードは、型{“id”:long,“name”:string}によってシリアライズされると確認することができる。
図2に戻って、特化部205は、生成サイトごとに計算された型に基づいてシリアライザを特化する。シリアライズ部206は、生成サイトごとに、それぞれ特化されたシリアライザを用いてレコード(データ値)をシリアライズするコードを生成する。
特化部205は、型に応じて、第一のコード生成部207及び第二のコード生成部208を備えている。第一のコード生成部207は、オプショナル領域を有するレコード型のシリアライザを生成する場合に、第二のコード生成部208は、T0乃至Tn(nは自然数)の複数の型から選択する選択型のシリアライザを生成する場合に、それぞれ選択されて実行される。
まず、オプショナル領域を有するレコード型のシリアライザを生成する場合には、ビットベクタのシリアライズのコードの生成を開始する。第一のコード生成部207は、第一の型T0におけるオプショナル領域が、第二の型Tcで要求済みであると判断した場合、ビット‘1’を出力するコードを生成する。
第一の型T0におけるオプショナル領域が、第二の型Tcに存在しないと判断した場合、ビット‘0’を出力するコードを生成する。第一の型T0におけるオプショナル領域が、第二の型Tcでもオプショナル領域である場合、データ値が存在すればビット‘1’を出力し、存在しなければビット‘0’を出力する。そして、ビットコードに続く領域について、シリアライズするコードを生成することにより全体をシリアライズする。
また、第二のコード生成部208は、第二の型Tcが、選択された第一の型Ti(iは1〜nのいずれか)のみのサブタイプであると判断した場合、数値‘i’を出力するコードを生成し、第二の型Tcと選択された第一の型Tiとに基づいて、データ値をシリアライズするコードを生成する。ビットコードに続く領域について、同様にシリアライズするコードを生成することにより全体をシリアライズする。
そして、第一の型T0がその他の型である場合には、既存の方法でシリアライズするコードを生成する。ビットコードに続く領域について、同様にシリアライズするコードを生成することにより全体をシリアライズする。
図9は、本発明の実施の形態に係る生成装置1のCPU11の処理手順を示すフローチャートである。図9において、生成装置1のCPU11は、クエリの部分式に生成サイトを識別するアノテーションを付加する(ステップS901)。
CPU11は、クエリをコンパイルする生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写し(ステップS902)、型の推論を実行する(ステップS903)。CPU11は、推論されたアノテーション付きの型(第二の型)Tcとシリアライズに用いられる型(第一の型)T0とを再帰的に比較する(ステップS904)。
CPU11は、生成サイトごとに比較された型に基づいてシリアライザを特化し(ステップS905)、生成サイトごとに、それぞれ特化されたシリアライザを用いてレコード(データ値)をシリアライズするコードを生成する(ステップS906)。そして、CPU11は、ビットコードに続く領域について、同様にシリアライズするコードを生成することにより全体をシリアライズする(ステップS907)。
図10は、本発明の実施の形態に係る生成装置1のCPU11のシリアライザ特化の処理手順を示すフローチャートである。図10において、生成装置1のCPU11は、シリアライザを生成する型の種類を判断する(ステップS1001)。
CPU11が、オプショナル領域を有するレコード型であると判断した場合(ステップS1001:レコード型)。CPU11は、第一の型T0におけるオプショナル領域が、第二の型Tcで要求済みであるか否かを判断する(ステップS1002)。CPU11が、要求済みであると判断した場合(ステップS1002:YES)、CPU11は、ビット‘1’を出力するコードを生成する(ステップS1003)。
CPU11が、要求済みではないと判断した場合(ステップS1002:NO)、CPU11は、第一の型T0におけるオプショナル領域が、第二の型Tcに存在するか否かを判断する(ステップS1004)。CPU11が、存在しないと判断した場合(ステップS1004:NO)、CPU11は、ビット‘0’を出力するコードを生成する(ステップS1005)。
CPU11が、存在すると判断した場合(ステップS1004:YES)、CPU11は、第一の型T0におけるオプショナル領域が、第二の型Tcでもオプショナル領域であるか否かを判断する(ステップS1006)。CPU11が、オプショナル領域ではないと判断した場合(ステップS1006:NO)、CPU11は、ステップS1007乃至S1009をスキップする。CPU11が、両方の型でオプショナル領域であると判断した場合(ステップS1006:YES)、CPU11は、オプショナル領域にデータ値が存在するか否かを判断する(ステップS1007)。
CPU11が、データ値が存在すると判断した場合(ステップS1007:YES)、CPU11は、ビット‘1’を出力するコードを生成する(ステップS1008)。CPU11が、データ値が存在しないと判断した場合(ステップS1007:NO)、CPU11は、ビット‘0’を出力するコードを生成する(ステップS1009)。CPU11は、ビットコードに続く領域について、同様にシリアライズするコードを生成することにより全体をシリアライズする(ステップS1010)。
CPU11が、シリアライザを生成する型が第一の型T0乃至Tn(nは自然数)の複数の型から選択する選択型であると判断した場合(ステップS1001:選択型)、CPU11は、型Tcが型Tiのみのサブタイプであるか否かを判断する(ステップS1011)。CPU11が、サブタイプではないと判断した場合(ステップS1011:NO)、CPU11は、ステップS1012をスキップし、CPU11が、サブタイプであると判断した場合(ステップS1011:YES)、数値‘i’(iは1〜nのいずれか)を出力するコードを生成し(ステップS1012)、第二の型Tcと選択された第一の型Tiとに基づいて、データ値をシリアライズするコードを生成する(ステップS1010)。
そして、CPU11が、シリアライザを生成するがその他の型であると判断した場合(ステップS1001:その他の型)、CPU11は、既存の方法でシリアライズするコードを生成する(ステップS1013)。
以上のように本実施の形態によれば、生成サイトごとに専用のシリアライザ及び/又はデシリアライザを生成することができるのでデータ処理時に動的にオブジェクトの値を調べてシリアライズに用いる型を判定するのではなく、クエリコンパイル時に静的に生成サイトごとのシリアライズに用いる型を確実に推論することができ、全体として演算処理時間を短縮することが可能となる。
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。また、上記実施例ではシリアライズを例に挙げて説明しているが、生成サイトごとに特定された型を用いてデシリアライズすることで演算処理負荷が軽減されることは言うまでもない。
1 生成装置
11 CPU
12 メモリ
13 記憶装置
14 I/Oインタフェース
15 ビデオインタフェース
16 可搬型ディスクドライブ
17 通信インタフェース
18 内部バス

Claims (12)

  1. クエリをコンパイルする場合にシリアライザ及び/又はデシリアライザを生成する装置で実行することが可能な方法において、
    前記装置は、
    前記クエリをコンパイルする生成サイトごとにシリアライズの型を推論する第一のステップと、
    推論された型及び実際に用いられる型に基づいて、前記生成サイトごとにシリアライザを特化する第二のステップと、
    前記生成サイトごとに、それぞれ特化されたシリアライザを用いてデータ値をシリアライズする第三のステップと
    を含む方法。
  2. 前記第一のステップは、
    前記生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写しながら推論を実行するステップと、
    推論された型とシリアライズに用いられる型とを再帰的に比較するステップと
    を含む請求項1に記載の方法。
  3. 前記第二のステップは、
    オプショナル領域を有するレコード型のシリアライザを生成する場合、
    第一の型T0におけるオプショナル領域が、第二の型Tcで要求済みであると判断したときには、ビット‘1’を出力するコードを生成するステップと、
    第一の型T0におけるオプショナル領域が、第二の型Tcに存在しないと判断したときには、ビット‘0’を出力するコードを生成するステップと、
    第一の型T0におけるオプショナル領域が、第二の型Tcでもオプショナル領域であるときには、データ値が存在すればビット‘1’を出力するコードを、存在しなければビット‘0’を出力するコードを、それぞれ生成するステップと
    を含む請求項1又は2に記載の方法。
  4. 前記第二のステップは、
    第一の型をT0乃至Tn(nは自然数)の複数の型から選択する選択型のシリアライザを生成する場合、
    第二の型Tcが、選択された第一の型Ti(iは1〜nのいずれか)のみのサブタイプであると判断したときには、数値‘i’を出力するコードを生成するステップと、
    第二の型Tcと選択された第一の型Tiとに基づいて、データ値をシリアライズするコードを生成するステップと
    を含む請求項1又は2に記載の方法。
  5. クエリをコンパイルする場合にシリアライザ及び/又はデシリアライザを生成する装置において、
    前記装置は、
    前記クエリをコンパイルする生成サイトごとにシリアライズの型を推論する型推論手段と、
    推論された型及び実際に用いられる型に基づいて、前記生成サイトごとにシリアライザを特化する特化手段と、
    前記生成サイトごとに、それぞれ特化されたシリアライザを用いてデータ値をシリアライズする手段と
    を備える装置。
  6. 前記型推論手段は、
    前記生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写しながら推論を実行する手段と、
    推論された型とシリアライズに用いられる型とを再帰的に比較する手段と
    を備える請求項5に記載の装置。
  7. 前記特化手段は、
    オプショナル領域を有するレコード型のシリアライザを生成する場合、
    第一の型T0におけるオプショナル領域が、第二の型Tcで要求済みであると判断したときには、ビット‘1’を出力するコードを生成する手段と、
    第一の型T0におけるオプショナル領域が、第二の型Tcに存在しないと判断したときには、ビット‘0’を出力するコードを生成する手段と、
    第一の型T0におけるオプショナル領域が、第二の型Tcでもオプショナル領域であるときには、データ値が存在すればビット‘1’を出力するコードを、存在しなければビット‘0’を出力するコードを、それぞれ生成する手段と
    を備える請求項5又は6に記載の装置。
  8. 前記特化手段は、
    第一の型をT0乃至Tn(nは自然数)の複数の型から選択する選択型のシリアライザを生成する場合、
    第二の型Tcが、選択された第一の型Ti(iは1〜nのいずれか)のみのサブタイプであると判断したときには、数値‘i’を出力するコードを生成する手段と、
    第二の型Tcと選択された第一の型Tiとに基づいて、データ値をシリアライズするコードを生成する手段と
    を備える請求項5又は6に記載の装置。
  9. クエリをコンパイルする場合にシリアライザ及び/又はデシリアライザを生成する装置で実行することが可能なコンピュータプログラムにおいて、
    前記装置を、
    前記クエリをコンパイルする生成サイトごとにシリアライズの型を推論する型推論手段、
    推論された型及び実際に用いられる型に基づいて、前記生成サイトごとにシリアライザを特化する特化手段、及び
    前記生成サイトごとに、それぞれ特化されたシリアライザを用いてデータ値をシリアライズする手段
    として機能させるコンピュータプログラム。
  10. 前記型推論手段を、
    前記生成サイトごとに割り当てられた識別情報をアノテーションとして型に転写しながら推論を実行する手段、及び
    推論された型とシリアライズに用いられる型とを再帰的に比較する手段
    として機能させる請求項9に記載のコンピュータプログラム。
  11. 前記特化手段を、
    オプショナル領域を有するレコード型のシリアライザを生成する場合、
    第一の型T0におけるオプショナル領域が、第二の型Tcで要求済みであると判断したときには、ビット‘1’を出力するコードを生成する手段、
    第一の型T0におけるオプショナル領域が、第二の型Tcに存在しないと判断したときには、ビット‘0’を出力するコードを生成する手段、及び
    第一の型T0におけるオプショナル領域が、第二の型Tcでもオプショナル領域であるときには、データ値が存在すればビット‘1’を出力するコードを、存在しなければビット‘0’を出力するコードを、それぞれ生成する手段
    として機能させる請求項9又は10に記載のコンピュータプログラム。
  12. 前記特化手段を、
    第一の型をT0乃至Tn(nは自然数)の複数の型から選択する選択型のシリアライザを生成する場合、
    第二の型Tcが、選択された第一の型Ti(iは1〜nのいずれか)のみのサブタイプであると判断したときには、数値‘i’を出力するコードを生成する手段、及び
    第二の型Tcと選択された第一の型Tiとに基づいて、データ値をシリアライズするコードを生成する手段
    として機能させる請求項9又は10に記載のコンピュータプログラム。
JP2013269077A 2013-12-26 2013-12-26 シリアライザを特化する方法、装置及びコンピュータプログラム Active JP6044960B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013269077A JP6044960B2 (ja) 2013-12-26 2013-12-26 シリアライザを特化する方法、装置及びコンピュータプログラム
US14/571,483 US9851958B2 (en) 2013-12-26 2014-12-16 Method, apparatus, and computer program for specializing serializer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013269077A JP6044960B2 (ja) 2013-12-26 2013-12-26 シリアライザを特化する方法、装置及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2015125572A true JP2015125572A (ja) 2015-07-06
JP6044960B2 JP6044960B2 (ja) 2016-12-14

Family

ID=53481832

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013269077A Active JP6044960B2 (ja) 2013-12-26 2013-12-26 シリアライザを特化する方法、装置及びコンピュータプログラム

Country Status (2)

Country Link
US (1) US9851958B2 (ja)
JP (1) JP6044960B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038022A (zh) * 2015-07-13 2017-08-11 阿里巴巴集团控股有限公司 一种反序列化方法及装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843819B (zh) * 2015-12-03 2020-10-09 北京国双科技有限公司 对象序列化的方法及装置
US10423397B2 (en) * 2016-12-29 2019-09-24 Grammatech, Inc. Systems and/or methods for type inference from machine code
US10467321B2 (en) * 2017-09-07 2019-11-05 Mastercard International Incorporated Systems and methods for dynamic C# serialization

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091228A1 (en) * 2003-10-23 2005-04-28 Ramachandran Venkatesh System and method for object persistence in a database store
JP2008171275A (ja) * 2007-01-12 2008-07-24 Mitsubishi Electric Corp データ変換プログラム生成装置、データ変換プログラム生成方法及びデータ変換プログラム生成プログラム
JP2010518516A (ja) * 2007-02-05 2010-05-27 マイクロソフト コーポレーション 要素型の型フローを可能にするためのクエリパターン

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2476349A1 (fr) * 1980-02-15 1981-08-21 Philips Ind Commerciale Systeme de traitement de donnees reparti
JP2003122730A (ja) 2001-10-12 2003-04-25 Ntt Comware Corp 情報処理方法、エージェントシステム、エージェントシステムプログラム及びエージェントシステムプログラムが記録された記録媒体
JP2003122773A (ja) 2001-10-16 2003-04-25 Victor Co Of Japan Ltd メタデータ検索システム
JP2003249961A (ja) 2002-02-26 2003-09-05 Nippon Telegr & Teleph Corp <Ntt> トラフィック情報蓄積装置及びその方法と、トラフィック情報蓄積プログラム及びそのプログラムを記録した記録媒体と、トラフィック情報検索装置及びその方法と、トラフィック情報検索プログラム及びそのプログラムを記録した記録媒体
US7197512B2 (en) 2003-03-26 2007-03-27 Microsoft Corporation Type bridges
US8347313B2 (en) * 2003-05-21 2013-01-01 Resilient Networks, Inc. Method and apparatus for automating organization of processes
US7404186B2 (en) * 2003-05-28 2008-07-22 Microsoft Corporation Signature serialization
JP2005056085A (ja) 2003-08-01 2005-03-03 Fujitsu Ltd データ構造変換プログラム
US20050091231A1 (en) 2003-10-24 2005-04-28 Shankar Pal System and method for storing and retrieving XML data encapsulated as an object in a database store
US7467374B2 (en) * 2003-11-05 2008-12-16 Microsoft Corporation Serialization for structured tracing in managed code
JP2005157718A (ja) 2003-11-26 2005-06-16 Univ Kanagawa データ管理システム、データ管理システム用プログラム、及びデータ管理システム用プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2005209048A (ja) 2004-01-26 2005-08-04 Meidensha Corp 監視制御システム
KR101440615B1 (ko) 2004-02-10 2014-09-16 마이크로소프트 코포레이션 사용자 정의 타입들에 대한 계승을 지원하기 위한 시스템및 방법
US20110145489A1 (en) * 2004-04-05 2011-06-16 Super Talent Electronics, Inc. Hybrid storage device
US20110179219A1 (en) * 2004-04-05 2011-07-21 Super Talent Electronics, Inc. Hybrid storage device
US7844665B2 (en) * 2004-04-23 2010-11-30 Waratek Pty Ltd. Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers
US7773469B2 (en) * 2005-05-18 2010-08-10 Mediatek Inc. Methods for tuning write strategy parameters utilizing data-to-clock edge deviations, and systems thereof
US20090172035A1 (en) * 2007-12-31 2009-07-02 Pieter Lessing System and method for capturing and storing casino information in a relational database system
US8375044B2 (en) * 2008-06-24 2013-02-12 Microsoft Corporation Query processing pipelines with single-item and multiple-item query operators
US8805776B2 (en) * 2008-06-26 2014-08-12 Microsoft Corporation Relationship serialization and reconstruction for entities
US8423749B2 (en) * 2008-10-22 2013-04-16 International Business Machines Corporation Sequential processing in network on chip nodes by threads generating message containing payload and pointer for nanokernel to access algorithm to be executed on payload in another node
JP5325635B2 (ja) 2009-03-30 2013-10-23 株式会社野村総合研究所 メタデータ自動付与システム及び方法
US20110078516A1 (en) * 2009-09-28 2011-03-31 International Business Machines Corporation Method and a system for performing a two-phase commit protocol
KR20110036301A (ko) * 2009-10-01 2011-04-07 삼성전자주식회사 아이엠에스 시스템에서 임시 그루 생성 방법 및 장치
US8417714B2 (en) * 2010-01-22 2013-04-09 Oracle International Corporation Techniques for fast and scalable XML generation and aggregation over binary XML
JPWO2011111532A1 (ja) 2010-03-10 2013-06-27 日本電気株式会社 データベースシステム
US8996503B2 (en) * 2010-10-04 2015-03-31 Sybase, Inc. Query plan optimization for prepared SQL statements
US20130117326A1 (en) * 2011-11-08 2013-05-09 Microsoft Corporation External serialization and deserialization
US9015200B2 (en) * 2012-10-15 2015-04-21 Here Global B.V. Map update scripts with tree edit operations
US9262312B1 (en) * 2012-10-17 2016-02-16 Marvell International Ltd. Apparatus and methods to compress data in a network device and perform content addressable memory (CAM) processing
US9306851B1 (en) * 2012-10-17 2016-04-05 Marvell International Ltd. Apparatus and methods to store data in a network device and perform longest prefix match (LPM) processing
US9076182B2 (en) * 2013-03-11 2015-07-07 Yodlee, Inc. Automated financial data aggregation
US20140280293A1 (en) * 2013-03-12 2014-09-18 Mckesson Financial Holdings Method and apparatus for retrieving cached database search results
US9015679B2 (en) 2013-07-16 2015-04-21 Sap Se System and method for translating business application functions into DBMS internal programming language procedures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091228A1 (en) * 2003-10-23 2005-04-28 Ramachandran Venkatesh System and method for object persistence in a database store
JP2007509425A (ja) * 2003-10-23 2007-04-12 マイクロソフト コーポレーション データベースストアにおけるオブジェクト維持のためのシステムおよび方法
JP2008171275A (ja) * 2007-01-12 2008-07-24 Mitsubishi Electric Corp データ変換プログラム生成装置、データ変換プログラム生成方法及びデータ変換プログラム生成プログラム
JP2010518516A (ja) * 2007-02-05 2010-05-27 マイクロソフト コーポレーション 要素型の型フローを可能にするためのクエリパターン

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6016020943; ワグナー ビル: More Effective C# 第1版, 20091130, 第24-28頁, 株式会社翔泳社 *
JPN6016020950; Serge Abiteboul: XMLデータベース入門 Data on the Web 第1版, 20060715, 第123-162頁, 共立出版株式会社 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038022A (zh) * 2015-07-13 2017-08-11 阿里巴巴集团控股有限公司 一种反序列化方法及装置

Also Published As

Publication number Publication date
JP6044960B2 (ja) 2016-12-14
US9851958B2 (en) 2017-12-26
US20150186116A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
CN110383238B (zh) 用于基于模型的软件分析的系统和方法
US10127135B2 (en) Systems and methods for incremental analysis of software
Meyerovich et al. Fast and parallel webpage layout
JP6165741B2 (ja) 複数のデータ・ソースを表すスキーマを生成するシステム及び方法
Bellahsene et al. On evaluating schema matching and mapping
Wylot et al. Tripleprov: Efficient processing of lineage queries in a native rdf store
US20190361908A1 (en) Method, apparatus and computer program for mapping medical data
US9305044B2 (en) System and method for modelling data
JP5791149B2 (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
CN111414350B (zh) 一种服务生成方法及装置
Skjæveland et al. Pattern-based ontology design and instantiation with reasonable ontology templates
KR101766583B1 (ko) 전문가의 지식을 이용한 온톨로지 기반의 추론 장치 및 방법
JP6044960B2 (ja) シリアライザを特化する方法、装置及びコンピュータプログラム
JP5677319B2 (ja) ウェブに基づくダイアグラム視覚性の拡張性
JP6486574B2 (ja) プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム
US20080235193A1 (en) Apparatus, method, and computer program product for processing query
US20110231178A1 (en) Modeling and generating computer software product line variants
CN111078217A (zh) 脑图生成方法、装置和计算机可读存储介质
Clarisó et al. Towards domain refinement for UML/OCL bounded verification
Cuadrado et al. Model Finding in the EMF Ecosystem.
US20180181550A1 (en) Screen information generation device and screen information generation method
Luong et al. A rule‐based approach for semantic annotation evolution
Lebo et al. A five-star rating scheme to assess application seamlessness
JP5488792B2 (ja) データベース操作装置、データベース操作方法、及びプログラム
US20210042390A1 (en) Common Labeled Annotated Document Transcription for Coordinating Annotation of Documents

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160714

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20161014

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161108

R150 Certificate of patent or registration of utility model

Ref document number: 6044960

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150