JP2014500544A - オブジェクトモデルとkey−valueモデル間のマッピング - Google Patents

オブジェクトモデルとkey−valueモデル間のマッピング Download PDF

Info

Publication number
JP2014500544A
JP2014500544A JP2013537750A JP2013537750A JP2014500544A JP 2014500544 A JP2014500544 A JP 2014500544A JP 2013537750 A JP2013537750 A JP 2013537750A JP 2013537750 A JP2013537750 A JP 2013537750A JP 2014500544 A JP2014500544 A JP 2014500544A
Authority
JP
Japan
Prior art keywords
key
value
world
data
query
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.)
Pending
Application number
JP2013537750A
Other languages
English (en)
Other versions
JP2014500544A5 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014500544A publication Critical patent/JP2014500544A/ja
Publication of JP2014500544A5 publication Critical patent/JP2014500544A5/ja
Pending legal-status Critical Current

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/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • 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
    • 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

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)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

オブジェクトモデルと、ワールド(world)という概念をサポートするkey−valueデータモデルとの間の、マッピングを行うことにより、データアクセスを容易化する。オブジェクトモデルは、統合言語クエリをサポートするプログラミング言語で表現され得る。統合言語クエリを構成する1つ以上のクエリ演算子がkey−valueワールドに関して指定され実行され得る。

Description

データモデルは、どのようにデータが格納されアクセスされるかを示すものである。より形式的には、データモデルは、データエンティティ及びデータエンティティ間における関連を定義する。データモデルを利用する主な目的は、大量のデータの管理及び処理を容易に行うために、データの定義及び形式を提供することにある。データモデルの一応用例として、データベース又はその他のストアがどのように構築され使用されるかを定義したデータベースモデルがある。データベースモデルには、リレーショナル又はノンリレーショナルがある。
リレーショナルモデル、又は、より具体的には、リレーショナルデータベースにおいて、データは、1つ以上のテーブルの観点で構築される。テーブルは、複数の列及び行を備える関係であり、名前をつけられた列は、属性として参照され、そして列はある特定のエンティティインスタンスに関するデータを保存する。例えば、テーブルは、例えば本といったある特定のエンティティの情報を、タプルとも呼ばれる行、および列に保存し得る。列はエンティティの様々な属性、例えば、本についての、タイトル、著者、発行年等を特定する。行は、特定の本といったあるエンティティのインスタンスを保存する。言い換えれば、テーブルにおける各行は、特定の本の属性群を示す。または、テーブルは主キー及び外部キーを含み、1つ以上のテーブルを互いにリンクすることが可能である。
ノンリレーショナルなモデルの様々な実装において、key−valueモデルは、最も良く用いられるモデルの1つである。key−valueデータベース又はkey−valueストアは、ユニークキーを1つ以上の値のセットにマッピングするシンプルなデータモデルを表す。より具体的には、key−valueストアは、キーに基づいて格納された値の位置の特定を容易にするために、値及びインデックスを格納している。例えば、タイトル、著者、本の発行に関するデータを特定するキーを配置することができる。
リレーショナルデータベースは、しばしば、SQLデータベースとよばれ、一方、ノンリレーショナルデータベースは、noSQL又はストアとよばれる。SQLとは、Structured Query Languageを表し、リレーショナルデータベースにおいて、クエリを投げたり、あるいはデータのやりとりをしたりする際に用いられる主な言語である。リレーショナルデータベースとあわせて、SQLが用いられる際には、データベースは、SQLベースのリレーショナルデータベースとよばれる。しかしながら、SQLベースのリレーショナルデータベースは、単に、SQLデータベースとよばれ、リレーショナルデータベースの同意語として使用されることが多い。noSQLは、SQLベースのリレーショナルデータベースとは異なるデータベースを指すのに使用される言葉である。言い換えれば、noSQLという言葉は、ノンリレーショナルデータベース又はデータストアの同意語として用いられるが、key−valueストアに限定されるものではない。
以下に、開示された主題におけるいくつかの態様における基本的な理解を提供するために、簡略化された形式の要約を提供する。本要約は、本発明の全体的な概要を説明するものではない。本要約は、主要/必須の要素を特定すること、又は、請求項に係る主題の範囲を定めることを目的とするものではない。本要約は単に、下記に記載されるより詳細な説明に対する導入として、簡略化された形式で、本発明のいくつかのコンセプトを提示するに過ぎない。
簡潔に説明すると、本開示は、一般に、オブジェクトモデルと、ワールド(world)という概念をサポートするkey−valueデータモデルとの間をマッピングすることにより、データのやりとりを容易に行うことに関する。開示内容の態様に従えば、統合言語クエリ(language−integrated query (LINQ))インフラストラクチャを用いて、そのようなマッピングを提供することができる。より具体的には、クエリを備える1つ以上のクエリ演算子が、オブジェクトに対するやりとりを指定することができる。これらの演算子はkey−valueデータストアにおけるやりとりにマッピングされることができ、返された結果は、オブジェクトに再びマッピングされる。さらには、クエリ演算子を、1つ以上のkey−valueワールドに対して指定し、実行することができ、ここで、ワールドとは、値(value)の間の関係性に対する特定のコンテキストを表す。さらには、ワールドを分割したり、複数のワールドを結合したり、ワールド間でデータの移動を可能とする演算子を用いることもできる。また、さらには、一実施形態によると、リレーショナルモデルの数学的双対(例えば、coSQL)であるkey−valueデータモデルに対してマッピングを行うことができる。
上記のもの及び関連する目的を達成するために、請求項に係る主題のある例示的な態様が以下の詳細な説明及び添付された図面との関連で説明されている。これらの態様は、本主題が実施され得る様々な方法を示し、これらは全て、請求項に係る主題の範囲に属するように意図されている。他の利点および新規な機能は、図面とともに以下の詳細な説明を参酌することにより明らかになる。
データインタラクションを容易にするシステムを説明するブロック図である。 データインタラクションを容易にするシステムの一実施形態のブロック図である。 2つの例示的なkey−value ワールドを例示する図である。 例示的なクエリ演算子のブロック図である。 分割及び結合演算子のグラフィカルな例を示す図である。 コピーによって実装されるマーシャル演算子を示すブロック図である。 参照によって実装されるマーシャル演算子を例示するブロック図である。 例示的なリレーショナル表現を示す図である。 テーブル間のポインターを含む例示的なリレーショナル表現を示す図である。 例示的なノンリレーショナルkey−value表現を示す図である。 一般化されたkey−value表現を示す図である。 オブジェクトモデルとkey−valueデータモデルとの間をマッピングする方法のフローチャート図である。 データインタラクションを容易にする方法のフローチャート図である。 最適化方法のフローチャート図である。 本開示の態様に適した動作環境を示す概略図である。
下記における詳細な説明は、一般に、オブジェクトモデルと、ワールドの概念をサポートするkey−valueデータモデルとの間をマッピングすることによりデータアクセスを容易にすることを対象としている。一実施形態においては、統合言語クエリ(LINQ)インフラストラクチャが、コンピュータープログラムとデータストア間のマッピングを実施するために用いられている。従って、データは、ノンリレーショナルのnoSQL又はcoSQLデータモデルからも、リレーショナルSQLデータモデルと同様の手法でアクセスされ得る。より具体的には、本明細書においてワールドとして参照される、特定のkey−valueのコンテキストに関して、クエリ演算子を指定することができる。結果的に、key−valueデータに関するやりとりは、ワールドベースとされる。さらに、ワールドは、分割及び/又は結合され、データは移動され、さもなければワールドにわたってアクセスされる。
本開示における様々な態様は、添付された図面を参照して説明され、図面において、同じ参照番号は類似又は対応する要素を示している。しかしながら、図面及び本明細書における詳細な説明は、請求項に係る主題を開示された特定の形態に限定するためのものではないことに留意すべきである。むしろ、請求項に係る主題の理念及び範囲内において、全ての改変、等価物、そして、代替を網羅するためのものである。
まず、図1を参照すると、データのやりとりを容易にするシステム100が図示されており、ここで、データのやりとりとは、データを生成、読み出し(クエリ)、更新、そして、削除などを指す。システム100は、オブジェクトモデル120、key−valueデータモデル130(本明細書において定義されるように、オブジェクトモデル120及びkey−valueデータモデル130はコンポーネントとすることができる)と連結されるマップコンポーネント110を含む。オブジェクトモデル120は、中でも、特定のコンピュータプログラミング言語のアプリケーションに関して使用されるときに、例えば、データを表現し、やりとりを行うのに、オブジェクト及びオブジェクトのプロパティを参照する。key−valueデータモデル130は、データがどのように格納され、アクセスされるかを指定する。特に、key−valueデータモデル130は、所与のキー、データ、又は特定の値が代わりに提供されるように、ユニークキーでインデックスされた値を格納する。さらに、key−valueデータモデル130は、ワールドという概念をサポートする。マップコンポーネント110は、key−valueデータモデル130と、オブジェクトモデル120との間をマッピングする、言い換えると、翻訳を提供するように構成される。限定ではなく例示であるが、key−valueストアに対するデータの要求は、オブジェクトモデル表現で取得され、オブジェクトモデル表現から、key−valueデータモデル表現にマッピング又は翻訳され得る。その後、いずれの結果として得られるデータも、key−valueデータモデル表現からオブジェクトモデル表現に、マッピング又は翻訳され得る。より具体的には、アプリケーションデータを示すオブジェクトクラスを指定することができ、クエリなど、アプリケーションデータに対するやりとりを、そのオブジェクトクラスを介して指定することができる。このやりとりを、key−valueストアにおけるローカル又はリモートの実行のために翻訳され、結果として得られるデータを、個々のオブジェクトの表現に戻すように翻訳することができる。このように、データアクセスは、モデル間、すなわち、オブジェクトモデル120とkey−valueデータモデル130との間をブリッジするか又は経路を提供することにより容易化される。
図2は、データインタラクション200を容易にするシステムの一実施形態を図示する。図示されているように、LINQコンポーネント210は、マップコンポーネント110の実施形態に対応することがあり、アプリケーションコンポーネント220は特定のオブジェクトモデル120のインスタンスであり、key−valueストア230は図1におけるkey−valueデータモデル130のインスタンスである。LINQコンポーネント210、すなわち統合言語クエリコンポーネントは、プログラム言語からのデータのやりとりを容易にすることに関する機能を提供する。より具体的に言えば、LINQコンポーネント210により、プログラミング言語(例えば、C#(登録商標),Visual Basic(登録商標)等)における「クエリ」の指定について、便利で宣言的な簡単な形式のクエリのクエリシンタックスを可能にし、ここで、クエリは、データの要求、又はデータを操作するかデータとやりとりする(例えば、更新、挿入、削除)命令に対応することができる。より具体的に言えば、LINQコンポーネント210は、メソッド及びラムダなどの下位レベル言語のコンストラクタ又はプリミティブにマッピングされるクエリ演算子212を提供する。クエリ演算子212は、様々なオペレーション(例えば、フィルタリング、プロジェクション、結合、グルーピング、順序づけ)のために提供され、これらに限定されないが、“where”及び“select”演算子を含むことができ、これらの演算子は、その名前によって表される演算子を実装するメソッドにマッピングされ得る。1つ以上のクエリ演算子212は、クエリの一部として、言い換えれば、クエリ表現として指定され得る。例えば、ユーザーは、クエリを“from n in numbers where n<10 select n”などの形式で指定することができ、ここで“numbers”はデータソースであり、このクエリは、そのデータソースから10未満の整数を返す。さらに、クエリ演算子212は、様々な態様で結合されて、任意の複合性を有するクエリを生成する。
アプリケーションコンポーネント220は、key−valueストア230へのデータのやりとりを試みるコンピュータープログラムに対応し、例えば、そのコンピュータープログラムは、オブジェクトモデルを利用して、データの提示及びやりとりを行い、key−valueストア230は、key−valueモデルによるやりとりを許容する。より具体的に言えば、特にデータのやりとりをクエリとして表す、言い換えれば、クエリ表現で表すのに、1つ以上のクエリ演算子212を用いて、統合言語クエリを、アプリケーションコンポーネント220中で指定することができる。一実施形態においては、クエリ演算子212は、key−valueストアに対して、SQLのようなクエリを表すことを可能にする。言い換えれば、リレーショナルデータベースにおける使用のために開発された親しみのあるクエリ言語シンタックスが、key−valueストア230といったノンリレーショナルデータベースに対して利用可能となる。
key−valueストア230は、keyによってデータがインデックスされアクセス可能な、key−valueモデルの特定のインスタンスに応答する。key−valueストア230は、元来のリレーショナルデータベースシステムとは異なるnoSQLデータベースシステムと呼ばれる一実装である。実際に、noSQLに対する共通の解釈は、ノンリレーショナルであることである。その他の実施形態においては、key−valueストア230は、coSQLデータベースシステムの実装形態であってもよく、ここで、coSQLは、SQLモデル又はリレーショナルモデルを双対化(dualizing)させた結果として得られるデータモデルである。言い換えれば、coSQLとは、以下でさらに説明されるように、数学的に双対なSQLである。簡潔に言えば、coSQLデータモデルは、coSQLデータモデルを双対化した場合にSQLデータモデルが返されるような、key−valueデータモデルの真の形式のデータモデルである。これは、従来のnoSQLデータモデルにはないものである。さらに、key−valueストア230は、1つ以上のワールドを備えることができる。
クエリ演算子212を、ワールドに対して指定して、実行することが可能である。ここで、ワールドとは、値同士又は値の集合体同士の関連性に関する特定のコンテキストを示す様相論理の概念(modal logic concept)である。より形式的には、ワールドは、値間における推移閉包、又は、別の言い方をすれば、ワールドはルートから遷移して到達可能な値の集合体を表す。より具体的には、key−valueストアにおいて、あるコンテキスト又はワールド中の関連するキーを探すことで値を得ることができる。ある意味においては、ワールドとは、アドレス空間に類似するものであり、一意に特定された識別子を利用してアドレスが明確にされる。
図3を参照すると、ワールド1 300とワールド2 310と呼ばれる二つのワールドが図示されている。双方のワールドは共に、表形式で表されている複数のキーと値を含む。さらに、点線矢印で示されているように、参照される値は、単一のルート(例えば、キー0)から到達可能である。ここで示されているように、ワールド1 300は、“0”,“1”,及び“2”の3つのキーを有し、この3つのキーはそれぞれ、「{S:1,S:2}」、「HELLO」及び“42”という値を有する。他の形式では、これらを、“(0,[0|−>{S:1,V:2},1|−>“HELLO”,2|−>42])”として指定することができる。このようなkey−value構造において演算子を定義するためには、ワールドの概念を明確にさせることが役に立つ。キーを解釈するために、どちらのワールドに値が存在するのか見分けることは、重要なことである。図示されているように、ワールド2 310はコンテキスト中に“0”,“1”及び“2”の3つのキーを有し、それぞれは、“{S:2,S:1}”,“42”,及び“HELLO”という値を参照する。別の書き方では、ワールドを“(0,[0|−>{S:2,V:1},2|−>“HELLO”,1|−>42])“として指定することができる。ここで、ワールド1 300及びワールド2 310のkey−value構造は、同一構造であるが、値は異なる場所に置かれている。これは、プロセス毎に異なるオブジェクトグラフが存在するオペレーティングシステムにおける2つのプロセスに類似する。
図4は、ローカル又はリモートのkey−valueストアに対するやりとりを容易にするために、指定及び実行される例示的なクエリ演算子212を図示する。一例示的な演算子は、1つ以上の値を指定して、特定のkey−valueワールドから取得するセレクト(select)演算子410である。このような演算子における正式なシグネチャは、“M<T>Select<S,T>(M<S>src,Func<S,T>selector),”であり、ここで、“Select”は、“Mw<S>src”という特定のワールドにおいてセレクタ関数“Func<S,T>selector”を用いてkey−valueペアのソースの集合体にわたって実施され、ワールド”w”,”Mw<T>におけるkey−valueペアの集合体を返す。セレクト演算子410は、より特定の形式のselect、すなわち、“M<T>SelectMany<S,T>(M<T>src,Func<S,M<T>>selector),”といったシグネチャを持つ、“SelectMany”に対応することもあり、これは、ソースワールド“Mw<T>src”から各要素を集合体に射影(project)し、その結果を平坦化してワールド“Mw<T>”ワールドにおけるkey−valueの単一の集合体とするものである。平坦化(flatten)演算子(具体的に明示していない)は、以下のシグネチャによって指定されるように、複数の集合体からある集合体を受け取り、単一の集合体を返す。“M<S>Flatten<S>(M<M<S>>src.”
結合(combine)演算子420及び分割(split)演算子430を含め、その他様々な演算子がワールドの操作を対象としている。結合演算子420は、2つのワールドからkey−valueペアの集合体を取得して結合し、key−valueペアの単一のワールドを生成する。このオペレーションにより、コンフリクトを避けるためにキーを再マッピングすることができ、形式的には、下記のシグネチャで指定できる。“Mw+v<S>Combinew,v<S>(M<S>left,M<S>right).”反対に、分割演算子430は、単一のワールドのkey−valueペアの集合体を取得して、2つの異なるワールドに分割する。分割演算子430は、リレーショナルコンテキストにおけるシャーディング(sharding)に対応し、以下のシグネチャを有する。“M<S>xM<S>Split,w+v<S>(Mw+v<S>src).”
さらに、集合体“Mw<S>”は、分割演算子430を繰り返し適用することにより、最大限に高密度の独立した集合体“Mw0<S>,...,Mwn−1<S>”に分割され、これによりサブコレクションを並行して操作することが可能になる。分割は、親のワールドに対するインデックスの実施を前提とするよりはむしろ、分割又はワールドに対して独立にインデックスされることに留意されたい。
図5に移ると、分割オペレーション500及び結合オペレーション510が図示されている。分割オペレーション500をワールド1 300の集合体に適用すると、ワールドA 502の集合体及びワールドB 504の集合体を返す。図示されているように、ワールド1 300は、サブセット、より詳細にはサブワールドに分割され、ここで、サブセットは、1つのルートで到達可能である値のセットを含む。このケースにおいては、“0|−>{S:2,V:1},2|−>“HELLO”,1|−>42”は、“0|−>S:1,1|−>“HELLO””,と“0|−>V:2,1|−>42”に分割される。サブセットはワールドによってインデックスされることに留意されたい。分割オペレーション500は、ワールドA 502及びワールドB 504を結合してワールド1 300にする、結合オペレーション510を適用することにより、元に戻すことが出来る。そのオペレーションにおいては、キーは適切に再マッピングされる。
単一のワールドに関して、多数のクエリ演算子は指定され実行され得る。しかしながら、複数のワールドから値を取得したい状況も存在し得る。図4におけるマーシャル(Marshal)演算子440を用いてそのような状況を解決することができる。マーシャル演算子440のシグネチャは、“M<S>Marshal,w+v<S>(M<S>src),”であり、ワールド”w“におけるkey−valueペアの集合体中の、あるkey−valueペアの値“S”はワールド”y”においても利用可能にされる。そのような機能は、少なくとも2つの異なる方法、すなわち値又は参照(reference)によって実現可能である。
図6Aは、マーシャル演算子440の一実装形態を示すブロック図である。ここで示されているように、2つのワールド、すなわち“ワールド“X610及び“ワールド“Y620がある。例えば、値によりkey−valueペアを参照する場合において、“ワールド“X610は値“A”及び“B”を含み、一方、“ワールド“Y620は最初に単に値“C”のみを含む。“ワールドY620における値“B”を利用したい場合、コピーオペレーション630が実施され、“ワールド“X610”の値を、“ワールド“Y620にコピーする。これは、値によるマーシャリングに対応する。
図6Bは、マーシャル演算子440の代替的な実装形態を示すブロック図である。図6Aにおける例と同様に、例えば、値がkey−valueペアを参照する場合において、“ワールド“X610は“A”及び“B”の値を含み、“ワールド“Y620は最初に単に値“C”のみを含む。“ワールド“Y620における値“B”を利用したい場合、プロキシ640を用いてワールドにまたがって値を参照する。ここでは、“C”がプロキシ640を参照して、プロキシ640が次に“ワールド“X610における値“B”を参照する。より具体的には、プロキシ640は、キーとワールドである値に対応することがあり、そのワールドから値を返す。例えば、プロキシ640は、値(1、ワールドX)に対応することがあり、ここで、1は値Bのキーであり、指定のワールドは、“ワールドX“610を意味する。このように、異なるワールドからの値の取得を容易にするために間接指定(インダイレクション)の付加的なレイヤーが追加される。この実施形態は、参照によるマーシャリングに対応するものである。
図2に戻ると、LINQコンポーネント210は、あるワールドに関して指定されている1つ以上のクエリ演算子212を含むクエリ表現を最適化する最適化コンポーネント214も含む。言い換えれば、最適化コンポーネント214は、クエリ表現を補強して、1つ以上のワールドに応じて実行を最適化するか、又は少なくとも改良する。制限目的ではなく例示目的として、ワールドを分割して複数のサブセット又はサブワールドにして、複数のワールドに対する並列の処理を促進することができる。同様に、複数のワールドを、値が複数のワールドからアクセスされる単一のワールドに結合することができ、さもなければ、データのやりとりにネガティブな影響を及ぼし得るかなりの量のマーシャリングを生ずる可能性がある。もちろん、ワールドに応じて様々な他の最適化の手法が用いられる。
ある特定の利用形態として、各クライアントに対して個別のハードウェアを用いる形態ではなく、ハードウェアの単一の部分が複数のクライアント又はテナントにサービスをする形態の、マルチテナント型が挙げられる。例えば、データベースプロバイダーが、データベース毎に対価を支払い、それぞれのデータベースが利用可能な50GBのストレージを有する状況について想定する。もし、データベースプロバイダーが、それぞれ5GBのストレージを必要とする10人のカスタマーを持つとすると、カスタマーは単一のデータベースを利用することができ、そしてプロバイダーは単一のデータベースを持てばよい。ここで、key−valueワールドを用いてリソースのセグメント化を論じ、促進することができる。特に、データは物理的に同じデータベース又はストアに格納されるが、論理的には、データは、それぞれ異なるワールドに存在する。このように、上記のようなシナリオにおいて、クロスワールドのデータのやりとりは制限又は禁止され、異なるエンティティのデータに関するプライバシー及びセキュリティがもたらされる。
前述したとおり、そして、ある実施形態に従って、請求項に係る主題の態様は、従来のSQLデータモデルの双対モデルである、coSQLデータモデルに対して作用することができる。本明細書で使用されるとき、双対及び諸式の用語は、カテゴリ理論に関するように数学上の双対性を指し示すように意図されている。より具体的には、双対性とは、カテゴリCのプロパティと反対のカテゴリ“Cop”の双対プロパティとの間の対応関係である。カテゴリCについてのステートメントを考慮すると、各々の射(morphism)(マッピング)のソースとターゲットを入れ替え、同様に構成物である2つの射の順番を入れ替えることによって、反対のカテゴリである“Cop”について、対応する双対のステートメントを取得することができる。例えば、カテゴリ“C”は、あるデータモデルに対応し、反対のカテゴリ“Cop”は、双対又は共同データ(co−data)モデルを示すことが出来る。例えば、“双対化すること”とは、あるデータモデルから双対を生成する行為を意味する。
以下は、リレーショナルデータモデルから双対を派生させること、又はcoSQLデータモデルについてのハイレベルな議論である。ここで示されるように、結果は、ノンリレーショナルモデル又は具体的にはkey−valueデータモデルとすることができる。
図7は、製品情報を格納する例示的なリレーショナル表現700を図示するものである。ここで示されているように、主キーと外部キーによって相互にリンクされた3つのテーブルがある。製品テーブル710は、主キーのID712と、タイトル、著者、発行年、総ページ数といった製品情報についての他の列を提供する。評価テーブル720は、製品の評価情報、および、製品テーブル710の1つのレコードを参照する外部キー“PRODUCT ID”722を提供する。同様に、キーワードテーブル730は、製品と関連付けられたキーワードを提供し、製品テーブル710の対応するレコードを参照する外部キー“PRODUCT ID”732を含む。
図8を簡単に参照すると、図7におけるリレーショナル表現700において、外部キーと主キーとの間に、ポインターが挿入されている。特に、ポインター810は、評価テーブル720の外部キー“PRODUCT ID”722から、製品テーブル710の主キー“ID”712で識別される対応するレコードにポイントする。同様に、ポインター820は、キーワードテーブル730の外部キー“PRODUCT ID”732から、製品テーブル710の主キー“ID”712で識別される対応するレコードにポイントする。
図9は、図7及び図8における例示的なリレーショナル表現に関して提供されるデータと同じデータの例示的なノンリレーショナルkey−value表現900を図示するものである。ここでは、910、920及び930などの行は、値に対するポインター、又は、スカラー値として示されるキーのいずれかを格納することができる。例えば、行910は、タイトル、著者、キーワード、評価、そして発行年および総ページ数のスカラー値についてのキーを有する。行920は、3つのキーワードにマッピングされた3つのキーを含み、行930は2つの評価表現にマッピングされた2つのキーを含む。
図10を参照すると、例示的なノンリレーショナルkey−value表現1000が示されている。ここでは、行に、スカラーとキーのみの包含を許容する制限を緩和して、さまざまなタイプのデータを保持することを許容している。先の図9における行910に対応する行1010は、タイトル及び著者の値、及びキーワード1020と評価1030双方のキーの集合をそれぞれ含む。より具体的には、キー1020はキーワードにポイントし、キー1030は評価情報にポイントする。
図8の例示的なリレーショナル表現を、図10の例示的なノンリレーショナル表現と比較してみる。明確にそれぞれを区別する特徴は、矢印が反対方向に伸びている点であることに留意されたい。より具体的には、リレーショナルの矢印は、外部キーの行から、対応するプライマリキーの行に伸びており、ノンリレーショナルの矢印は、行からデータが格納されている場所に伸びている。言い換えれば、リレーショナルコンテキストにおいては、子が親をポイントし、ノンリレーショナルコンテキストにおいては、親が子をポイントする。ここで示されているのは、ノンリレーショナルkey−valueデータモデルは、リレーショナルの主−外部キーデータモデルの双対(dual)であるということである。
上記のシステム、アーキテクチャ、環境などは、複数のコンポーネント間のやりとりに関して説明されている。このようなシステム及びコンポーネントは、本明細書において指定されたこれらのコンポーネント又はサブコンポーネント、指定されたコンポーネント又はサブコンポーネントの一部、及び/又は追加のコンポーネントを含み得ることを理解されたい。サブコンポーネントは、親のコンポーネント中に存在するというよりむしろ、他のコンポーネントと通信可能に結合されるコンポーネントとしても実装され得る。さらに、1つ以上のコンポーネント及び/又はサブコンポーネントは、組み合わされて1つのコンポーネントとなり、集合的な機能を提供し得る。システム、コンポーネント、及び/又はサブコンポーネントの間の通信は、push及び/又はpullモデルのいずれに従って達成され得る。説明を簡潔にするため、本明細書では具体的に言及していないが、当技術分野の当業者には公知であるように、コンポーネントは、1つ以上の他のコンポーネントとやりとりをすることもできる。
さらに、上記に開示されたシステムや下記に開示される方法の様々な部分は、人口知能、機械学習、又は知識又はルールベースのコンポーネント、サブコンポーネント、プロセス、手段、方法論、メカニズム(例えば、サポートベクターマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンネットワーク(Bayesian belief networks)、ファジィ理論、データフュージョンエンジン、分類子(classifiers))等を含むか、又はこれらで構成されていてもよい。それらのコンポーネントにおいては特に、実行される或る特定のメカニズム又はプロセスを自動化し、これによりシステム及び方法の部分をより適用しやすくするとともに、より効率的そしてインテリジェントにすることが可能である。限定ではなく、例示であるが、最適化コンポーネント214は、そのようなメカニズムを用いて、クエリ表現の実行を効率化させる変更を決定又は推論し得る。
上記に開示された例示のシステムを参考にして、図11から13に記載されたフローチャートを参照することにより、開示された主題に従って実装される方法がより理解され得る。説明を簡潔にするために、方法は、一連のブロックとして開示及び説明されているが、請求項に係る主題は、ここで開示されているブロックの順番に限定されるものではなく、ここで開示及び説明されているブロックの処理は、異なる順番、及び/又は同時に発生することもあり得ることを理解されたい。さらに、図示された全てのブロックが、ここで説明されている実施形態を実現するために必要とされるわけではない。
図11を参照すると、オブジェクトモデルとkey−valueデータモデルとの間のマッピングを行う方法1100が図示されている。参照番号1110において、オブジェクトモデルに関する命令が取得される。例えば、命令は、アプリケーションデータを表現するオブジェクトに関する、作成、読み出し、更新、削除等に関するものであってもよい。番号1120において、命令は、オブジェクトモデルにおけるオペレーションからローカル又はリモート接続におけるkey−valueデータモデルにおけるオペレーションにマッピングされる。参照番号1130において、データは、マッピングされた命令の実行に応答して、key−valueデータモデルから受信される。例えば、命令がデータに対するクエリ又は要求である場合において、その結果のデータを受信することができる。番号1140において、受信されたデータはオブジェクトモデルに再びマッピングしなおされる。このようにして、プログラマやその他の人々は、オブジェクトモデルに対してオペレーションを指定し、その背景でシーンのマッピングが行われ、特定のkey−valueストアとのやりとりを容易にすることができる。さらには、1つ以上のワールドを命令が指定し、key−valueモデルが、1つ以上のワールドをサポートすることができる。
図12は、データインストラクションを容易にする方法1200を図示している。参照番号1210において、key−valueワールドに対して指定されたクエリ演算子が、例えば、クエリ表現の(例えば、クエリ表現を統合したプログラミング言語等)の一部として特定される。ここでは、ワールドは、値と値の間、又は値の集合体と値の集合体の間における関係についての特定のコンテキストを表す様相論理の概念を参照する。ある意味においては、ワールドは、一意に識別される修飾子を用いてアドレスを明確にするアドレス空間に類似する。番号1220において、key−valueワールドに対してクエリ演算子の実行が開始される。参照番号1230において、クエリ演算子の実行に関連付けられた結果が返される。例えば、結果はプログラム言語のオブジェクトモデルにマッピングされて返される。
図13は最適化の方法1300を示すフローチャートである。参照番号1310において、コンテキスト情報を、1つ以上のkey−valueワールド及びワールドにおけるデータのやりとりに関与する1つ以上のソースから受信し、取り出し、そうでなければ取得又は獲得することができる。参照番号1320において、1つ以上のkey−valueワールドがコンテキスト情報に応じて変更される。例えば、コンテキスト情報は、ワールドが閾値サイズを超過しており、コンテンツへのアクセスを最適化するのに2つのワールドに分割され得ることを示す。他の例では、コンテキストが2つのワールド間でかなりの量のマーシャリングが生じていることを示す場合に、2つのワールドを結合して、単一のワールドにすることができる。もちろん、変更を、特に、想定される使用シナリオの予測を含むその他のコンテキスト情報から推測される情報に応じて開始することもできる。
本明細書で使用されているように、「コンポーネント」、「システム」等の用語や形式は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行されるソフトウェアのいずれかの、コンピューターに関連するエンティティを指すように意図されている。例えば、限定して解釈されるべきではないが、コンポーネントは、プロセッサにおいて実行されるプロセス、プロセッサ、オブジェクト、インスタンス、実行ファイル、実行されるスレッド、プログラム、及び/又はコンピューターであってもよい。例示するならば、コンピューターで実行されるアプリケーション及びコンピューターの双方がコンポーネントであり得る。1つ以上のコンポーネントは、実行されるプロセス及び/又はスレッド中にあり、1つのコンポーネントを、1つのコンピューターに局所化してもよく、及び/又は2つ以上のコンピューターに分散させてもよい。
本明細書においては、実施例や事例、実例として提示されていることを示すように、「例示」という言葉や様々な形式の表現が使用されている。本明細書中において、「例示」として説明されている任意の態様又は設計について、他の態様又は設計に比して、必ずしも好ましく又は優位性を有するものとして解釈する必要はない。さらに、本明細書における実施例は、単に明確化や理解の一助となるために提示されているものであって、請求項に係る主題又はこの開示の関連する部分を制限又は限定するためのものではない。範囲が変更された無数の追加又は代替可能な実施例が提示され得るが、簡潔化のために省略されていることを理解されたい。
本明細書においては使用されるとき、「推論(inference)」、「推測する(infer)」という用語は、全般的に、イベント及び/又はデータを通じてキャプチャされる観測値のセットから、システム、環境、及び/又はユーザーの状態について推測又は推論する過程について言及するものである。推論を用いて特定のコンテキスト又はアクションを特定し、又は、例えば、状態における確率分布を生成することができる。推論は、確率的なもの、つまり、データ及びイベントの考察に基づき、関心事項の状態における確率分布の計算である。推論は、イベント及び/又はデータのセットから、ハイレベルイベントを構成するために用いられる技術を指すこともある。そのような推論により、イベントが時間的近接性において相関性があるかないか、ならびにイベント及びデータは、1つ又は複数のイベント及びデータソースから発生したかどうかにかかわらず、観測されたイベント及び/又は格納されたイベントデータのセットから、新しいイベント又はアクションの構築が生み出される。様々な分類のスキーム及び/又はシステム(例えば、サポートベクターマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンネットワーク、ファジィ理論、データフュージョンエンジなど)を、請求項に係る主題に関する、自動及び/又は推論されたアクションを実施することに関して用いることができる。
さらに、本明細書においては、「含む(includes)」、「含む(contains)」、「持つ(has)」、「持っている(having)」の用語またはその変形が詳細な説明又は請求項のいずれかにおいて使用されているが、「備える(comprising)」という用語が、請求項において変形語として用いられるときに解釈されるように、それらの用語は、「備える(comprising)」という用語と同様に包括的なものとしていとされている。
請求項に係る主題のコンテキストを提供するために、図14と以下の説明は、本主題における様々な態様が実施され得る適切な環境についての簡潔かつ一般的な説明を提供するように意図される。適切な環境は、しかしながら、単に例示であり、本発明の利用又は機能の範囲に関するいかなる限定をも提示するものではない。
上記で開示されたシステム及び方法は、1つ以上のコンピューターで実行されるプログラムのコンピューター実行可能な命令の一般的なコンテキストで説明されているが、当業者であれば諸態様をその他のプログラムモジュールなどとの組み合わせで又は同等の方法で実装できることは理解され得るであろう。一般的に、プログラムモジュールはルーチン、プログラム、コンポーネント、データ構造、特定のタスクを実施するその他のもの及び/又は特定の抽象データタイプを実装するその他のものを含む。さらに、当業者であれば、上記のシステム及び方法は、例えば、シングルプロセッサー、マルチプロセッサー、又はマルチコアプロセッサーのコンピューターシステム、ミニコンピューティングデバイス、メインフレームコンピューター、ならびにパーソナルコンピューター、ハンドヘルドコンピューティングデバイス(例えば、PDA、電話、時計等)、マイクロプロセッサベース又はプログラマブル家庭用又は業務用電子機器などを含む、様々なコンピューターシステム構成において実施されることが理解されよう。同様に、諸実施形態を、通信ネットワークを通じて接続されたリモートの処理装置によってタスクが実行される、分散コンピューティング環境においても実施することができる。たとえ、請求項に係る主題の全ての態様をスタンドアロンのコンピューターで実施できなかったとしても、その一部は実施することができる。分散コンピューティング環境においては、プログラムモジュールを、ローカル及びリモートのメモリストレージデバイスのいずれか1つまたは双方に置くことができる。
図14を参照すると、図示されているのは、例示の汎用コンピューター1410又はコンピューターデバイス(例えば、デスクトップ、ラップトップ、サーバー、ハンドヘルド、プログラマブル家庭用又は業務用電子機器、セットトップボックス、ゲームシステム等)である。コンピューター1410は、1つ以上のプロセッサ1420、メモリ1430、システムバス1440、大容量ストレージ1450、そして1つ以上のインターフェースコンポーネント1470を含む。システムバス1440は、少なくとも上記のシステムコンポーネントを通信可能に連結する。しかしながら、この最も簡略化された形態において、コンピューター1410は、さまざまなコンピューター実行可能な動作、命令、及び又はメモリ1430に格納されたコンポーネントを実行する、1つ以上のメモリ1430と接続されたプロセッサ1420を含むことができる。
プロセッサ1420は、汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、FPGA(field programmable gate array)又はその他のプログラマブルな論理デバイス、個別のゲート又はトランジスタ論理回路、個別のハードウェアコンポーネント、あるいは本明細書で開示されている機能を実行するように設計されたものの任意の組み合わせで実装され得る。汎用プロセッサは、マイクロプロセッサであってもよく、あるいはまた、任意のプロセッサ、コントローラー、マイクロコントローラー、又は状態マシン(state machine)であってもよい。プロセッサ1420は、また、コンピューティングデバイスの組み合わせ、例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、マルチコアプロセッサ1420、1つ以上のマイクロプロセッサとDSPコア等からなる組み合わせ、また、その他の構成として実装されていてもよい。
コンピューター1410は、様々なコンピューター読取可能媒体を含み、又はやりとりをして、請求項に係る主題の1つ以上の態様を実施するようにコンピューター1410の制御を容易にすることができる。コンピューター読取可能媒体は、コンピューター1410がアクセスすることができる任意の利用可能な媒体とすることができ、揮発性及び不揮発性媒体、取り外し可能及び取り外し不能媒体を含む。限定ではなく例示であるが、コンピューター読取可能媒体は、コンピューター記憶媒体や通信媒体を備えていてもよい。
コンピューター記憶媒体は、コンピューター読取可能命令、データ構造、プログラムモジュール、又はその他のデータ等の情報を記憶するための手段又は技術で実装される、揮発性及び不揮発性、取り外し可能及び取り外し不能媒体を含む。コンピューター記憶媒体は、限定ではないが、メモリデバイス(例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、EEPROM等)、磁気記憶装置(例えば、ハードディスク、フロッピー(登録商標)ディスク、カセット、テープ等)、光学ディスク(例えば、コンパクトディスク(CD)、DVD等)そして、半導体装置(例えば、半導体ドライブ(SSD)、フラッシュメモリドライブ(例えば、カード、スティック、キードライブ等))又はコンピューター1410からアクセス可能であり、所望の情報の格納に使用することができる任意の他の媒体を含む。
通信用媒体は、典型的に、コンピューター読取可能な命令、データ構造、プログラムモジュール、又は搬送波やその他伝達メカニズムなどの変調されたデータ信号で他のデータを保持し、任意の情報伝送媒体を含む。「変調されたデータ信号」という言葉は、信号中の情報のエンコードに関する手法等によって設定又は変更された特徴の1つまたは複数を有する信号を意味する。限定ではなく例示であるが、通信用媒体は、有線ネットワーク又は直接有線接続等の有線媒体と、音響、RF、赤外線および等その他の無線媒体などの無線媒体を含む。上記の任意の組み合わせも、コンピューター読取可能媒体の範囲に含まれる。
メモリ1430及び大容量ストレージ1450は、コンピューター読取可能媒体の例である。特定の構成及びコンピューターデバイスの種類に応じて、メモリ1430は、揮発性(例えばRAM)、不揮発性(例えばROM、フラッシュメモリ)又はそれらの組み合わせとすることができる。例として、コンピューターの起動中等にコンピューター1410中の各要素間において情報を転送する基本ルーチンを含む基本入出力システム(BIOS)は、不揮発性メモリに格納され、一方、揮発性メモリは、特にプロセッサ1420による処理を容易にするために外部キャッシュメモリとして機能し得る。
大容量ストレージ1450は、メモリ1430に関連した大量のデータの格納のために、取り外し可能/取り外し不能、揮発性/不揮発性のコンピューター記憶媒体を含む。例えば、大容量ストレージ1450は、限定ではないが、1つ以上の装置、例えば磁気又は光学ディスクドライブ、フロッピーディスクドライブ、フラッシュメモリ、半導体ドライブ、またはメモリスティック等を含む。
メモリ1430及び大容量ストレージ1450は、オペレーティングシステム1460、1つ以上のアプリケーション1462、1つ以上のプログラムモジュール1464、そしてデータ1466を含むか、または格納し得る。オペレーティングシステム1460は、コンピューター1410のリソースを制御し割り当てるように動作する。アプリケーション1462は、システム及びアプリケーションソフトウェアの一方又は双方を含み、メモリ1430及び/又は大容量ストレージ1450に格納されたプログラムモジュール1464及びデータ1466を通じて、オペレーティングシステム1460によるリソース管理を利用して、1つ以上のアクションを実施することができる。したがって、アプリケーション1462は、それにより提供されるロジックに従って、汎用コンピューター1410を、特別なコンピューターに変化させることができる。
請求項に係る主題の全て又は一部を、標準的なプログラミング及び/又はエンジニアリング技術を使用して、開示された機能を実現するようにコンピューターを制御するようにソフトウェア、ファームウェア、ハードウェア、又はこれらの組み合わせを構成することにより実装することができる。限定ではなく例示であるが、マップコンポーネント110及びLINQコンポーネント210は、アプリケーショ1462の一部又は全てとすることができ、メモリ及び/又は大容量ストレージ1450に格納され、1つ以上のプロセッサ1420によって実行されるときにその機能が発揮される、1つ以上のモジュール1464及びデータ1466を含むことができる。
ある特定の実施形態によれば、プロセッサ1420は、単一の集積回路の基板上にハードウェアとソフトウェアの双方を含む、言い換えれば統合した、システムオンチップ(SOC)又は類似のアーキテクチャに対応し得る。ここでは、プロセッサ1420は、少なくともプロセッサ1420及びメモリ1430に類似するような1つ以上のプロセッサ及びメモリを含むことができる。一般的なプロセッサは、最小限のハードウェア及びソフトウェアを有し、外部のハードウェア及びソフトウェアの動作に大幅に依存する。一方、SOC実装のプロセッサは、よりパワフルであり、外部のハードウェア及びソフトウェアに最小限の依存で又は依存することなく特定の機能を実施し得るハードウェアおよびソフトウェアを組み込む。例えば、マップコンポーネント110、LINQコンポーネント210及び/又は関連する機能を、SOCアーキテクチャのハードウェア内に組み込むことができる。
コンピューター1410はまた、システムバス1440に通信可能に接続されコンピューターとのやりとりを容易にする1つ以上のインターフェースコンポーネント1470も含む。例示であるが、インターフェースコンポーネント1470は、ポート(例えば、シリアル、パラレル、PCMCIA、USB、ファイヤーワイヤー等)やインターフェースカード(例えば、サウンド、ビデオ等)等であってもよい。ある例示的な実装として、インターフェースコンポーネント1470は、ユーザーがコマンドや情報をコンピューターに1つ以上の入力装置(例えば、マウス等のポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、カメラ、その他等)を介して入力するのを可能にするユーザー入力/出力インターフェースとして構成されていてもよい。その他の例示的な実装として、インターフェースコンポーネント1470は、出力をディスプレイ(例えば、CRT、LCD、プラズマ等)、スピーカー、プリンター、及び/又はその他のコンポーネントに対して供給するための出力周辺インターフェースとして構成されていてもよい。さらに、インターフェースコンポーネント1470は、(図示されていない)その他のコンピューターデバイスとの有線又は無線通信リンクを介した通信を可能とする、ネットワークインターフェースとして構成されていてもよい。
説明された内容は、請求項に係る主題の諸態様の例示を含む。当然、請求項に係る主愛について説明するために、コンポーネント又は方法についてのすべての想定し得る組み合わせを開示することは不可能であるが、当業者であれば、開示された主題のさらなる組み合わせや順序変えが可能であることを認識し得る。したがって、開示された主題は、添付された特許請求の範囲の思想及び範囲内にある、全てのそのような代替、変更、バリエーションが包含されることが意図されている。

Claims (10)

  1. データのやりとりを容易にする方法であって、
    以下の動作を実施するために、メモリに格納されたコンピューター実行可能な命令を実行するように構成された、少なくとも1つのものを使用し、
    前記動作は、オブジェクトモデルと、1つ以上のワールドの概念をサポートするkey−valueデータモデルとの間のデータのマッピングすること、
    を含むことを特徴とする方法。
  2. 請求項1に記載の方法であって、前記オブジェクトモデルに対して指定された少なくとも1つのクエリ演算子を、前記key−valueデータモデルにマッピングすることをさらに含み、前記クエリ演算子は、前記key−valueデータモデル及びあるワールドに対するデータの作成、読み出し、更新、削除のうち少なくとも1つを行うことを特徴とする方法。
  3. 請求項2に記載の方法であって、少なくとも1つのkey−valueワールドに対して指定された前記少なくとも1つのクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。
  4. 請求項3に記載の方法であって、前記少なくとも1つのkey−valueワールドを個別のサブワールドに分割することを指定するクエリ演算子をマッピングすることをさらに含む
    ことを特徴とする方法。
  5. 請求項3に記載の方法であって、複数のkey−valueペアのワールドを結合して単一のkey−valueペアのワールドにすることを指定するクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。
  6. 請求項3に記載の方法であって、値によってkey−valueのペアをワールド間で移動させることを指定するクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。
  7. 請求項3に記載の方法であって、プロキシによる参照により、key−valueのペアをワールド間で移動させることを指定するクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。
  8. データのやりとりを容易にするシステムであって、
    メモリに結合されたプロセッサであって、前記メモリに格納されたコンピューター実行可能なコンポーネントを実行するように構成され、コンピューター実行可能なコンポーネントが、
    key−valueデータモデルをオブジェクトモデルにマッピングするように構成された第1のコンポーネントであって、前記オブジェクトモデルは、1つ以上のワールドに広がるkey−valueデータストアに対する統合言語クエリの指定を可能とするプログラミング言語で表現される、前記第1のコンポーネントを含むことを特徴とするシステム。
  9. 請求項8に記載のシステムであって、前記統合言語クエリは、key−valueワールドに関連する機能を表現するクエリ演算子を含むことを特徴とするシステム。
  10. 請求項9に記載のシステムであって、key−valueワールドに基づき、キーにより値がインデックスされることを特徴とするシステム。
JP2013537750A 2010-11-02 2011-10-31 オブジェクトモデルとkey−valueモデル間のマッピング Pending JP2014500544A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/938,168 US20120109935A1 (en) 2010-11-02 2010-11-02 Object model to key-value data model mapping
US12/938,168 2010-11-02
PCT/US2011/058633 WO2012061310A2 (en) 2010-11-02 2011-10-31 Object model to key-value data model mapping

Publications (2)

Publication Number Publication Date
JP2014500544A true JP2014500544A (ja) 2014-01-09
JP2014500544A5 JP2014500544A5 (ja) 2014-12-18

Family

ID=45997805

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013537750A Pending JP2014500544A (ja) 2010-11-02 2011-10-31 オブジェクトモデルとkey−valueモデル間のマッピング

Country Status (7)

Country Link
US (1) US20120109935A1 (ja)
EP (1) EP2635985A4 (ja)
JP (1) JP2014500544A (ja)
CN (1) CN102567457A (ja)
AU (1) AU2011323637B2 (ja)
CA (1) CA2815197A1 (ja)
WO (1) WO2012061310A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021516811A (ja) * 2018-03-19 2021-07-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ匿名化

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10262050B2 (en) 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US9128967B2 (en) * 2011-10-24 2015-09-08 Accenture Global Services Limited Storing graph data in a column-oriented data store
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
US11403317B2 (en) * 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US10169446B1 (en) 2012-09-10 2019-01-01 Amazon Technologies, Inc. Relational modeler and renderer for non-relational data
US9111012B2 (en) 2012-11-26 2015-08-18 Accenture Global Services Limited Data consistency management
US9141681B2 (en) 2012-11-29 2015-09-22 Red Hat, Inc. Creating a column family in a database
US9686118B1 (en) * 2013-06-04 2017-06-20 Amazon Technologies, Inc. Abstraction layer for streaming data sources
US9471711B2 (en) * 2013-09-23 2016-10-18 Teradata Us, Inc. Schema-less access to stored data
US10313438B1 (en) * 2013-12-30 2019-06-04 Emc Corporation Partitioned key-value store with one-sided communications for secondary global key lookup by range-knowledgeable clients
US9916357B2 (en) 2014-06-27 2018-03-13 Microsoft Technology Licensing, Llc Rule-based joining of foreign to primary key
CN105373561B (zh) 2014-08-28 2019-02-15 国际商业机器公司 识别非关系数据库中的记录模式的方法和设备
US9977812B2 (en) 2015-01-30 2018-05-22 Microsoft Technology Licensing, Llc Trie-structure formulation and navigation for joining
US10713275B2 (en) 2015-07-02 2020-07-14 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10303669B1 (en) * 2016-03-30 2019-05-28 Amazon Technologies, Inc. Simulating hierarchical structures in key value stores
US10460120B1 (en) 2016-03-30 2019-10-29 Amazon Technologies, Inc. Policy mediated hierarchical structures in key value stores
US10671496B2 (en) 2016-05-31 2020-06-02 Mongodb, Inc. Method and apparatus for reading and writing committed data
US10776220B2 (en) 2016-06-27 2020-09-15 Mongodb, Inc. Systems and methods for monitoring distributed database deployments
CN107765992B (zh) * 2016-08-22 2021-01-15 华为技术有限公司 一种处理数据的方法和装置
CN106445645B (zh) * 2016-09-06 2019-11-26 北京百度网讯科技有限公司 用于执行分布式计算任务的方法和装置
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
CN111444285A (zh) * 2018-12-29 2020-07-24 北京奇虎科技有限公司 运营数据的配置方法及装置
CN110850999B (zh) * 2019-11-12 2024-01-05 珠海市学思电子科技有限公司 键盘按键键值设置方法、计算机装置和计算机可读存储介质
CN111008189B (zh) * 2019-11-26 2023-08-25 浙江电子口岸有限公司 一种动态数据模型构建方法
CN115174314A (zh) * 2022-06-30 2022-10-11 广州鲁邦通物联网科技股份有限公司 一种智能网关、物联网数据的采集方法和物联网系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957228B1 (en) * 2000-01-07 2005-10-18 International Business Machines Corporation Object oriented apparatus and method for providing context-based class replacement in an object oriented system
US6907433B2 (en) * 2001-08-01 2005-06-14 Oracle International Corp. System and method for managing object to relational one-to-many mapping
US8122044B2 (en) * 2003-03-12 2012-02-21 Microsoft Corporation Generation of business intelligence entities from a dimensional model
US20040230555A1 (en) * 2003-05-16 2004-11-18 John Phenix System and method for representing a relational database as a java object
US20090063654A1 (en) * 2007-08-28 2009-03-05 International Business Machines Corporation Apparatus, system, and method for xml based disconnected data access for multivalued/hierarchical databases
US9336327B2 (en) * 2007-11-30 2016-05-10 Microsoft Technology Licensing, Llc Mapping and query translation between XML, objects, and relations
CN101452441A (zh) * 2008-12-05 2009-06-10 山东浪潮齐鲁软件产业股份有限公司 一种电子表格通用数据解析导入方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021516811A (ja) * 2018-03-19 2021-07-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ匿名化

Also Published As

Publication number Publication date
WO2012061310A3 (en) 2012-07-19
EP2635985A2 (en) 2013-09-11
AU2011323637B2 (en) 2015-02-12
EP2635985A4 (en) 2015-11-04
CN102567457A (zh) 2012-07-11
WO2012061310A2 (en) 2012-05-10
AU2011323637A1 (en) 2013-05-09
US20120109935A1 (en) 2012-05-03
CA2815197A1 (en) 2012-05-10

Similar Documents

Publication Publication Date Title
JP2014500544A (ja) オブジェクトモデルとkey−valueモデル間のマッピング
Fan et al. The Case Against Specialized Graph Analytics Engines.
US8396852B2 (en) Evaluating execution plan changes after a wakeup threshold time
US8601474B2 (en) Resuming execution of an execution plan in a virtual machine
CN102541992B (zh) 用于高效地查询数据库的同态定理
US8332389B2 (en) Join order for a database query
US9298829B2 (en) Performing a function on rows of data determined from transitive relationships between columns
Bu et al. Scaling datalog for machine learning on big data
US20140337373A1 (en) System for managing graph queries on relationships among entities using graph index
US9460189B2 (en) Data model dualization
US20160098446A1 (en) Limiting scans of loosely ordered and/or grouped relations in a database
US8812489B2 (en) Swapping expected and candidate affinities in a query plan cache
US8442971B2 (en) Execution plans with different driver sources in multiple threads
US20120096054A1 (en) Reading rows from memory prior to reading rows from secondary storage
US11899810B2 (en) Systems and methods for determining database permissions
US11726999B1 (en) Obtaining inferences to perform access requests at a non-relational database system
Pokorný Integration of relational and graph databases functionally
Alkowaileet et al. Large-scale complex analytics on semi-structured datasets using AsterixDB and Spark
US11822582B2 (en) Metadata clustering
Phuc SparkHINlog: extension of sparkDatalog for heterogeneous information network
Pokorny et al. Big graph storage, processing and visualization
Lu A study of an in-memory database system for real-time analytics on semi-structured data streams
Kim et al. Optimizing Query Predicates with Disjunctions for Column-Oriented Engines
Adhikari et al. A Novel Indexing Scheme Over Lattice of Cuboids and Concept Hierarchy in Data Warehouse
Maccioni et al. Information Discovery in Polystores: the Augmented Way (Discussion Paper)

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141027

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141027

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150930

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150930

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160303