JP6998928B2 - データを記憶およびクエリするための方法、装置、設備、および媒体 - Google Patents

データを記憶およびクエリするための方法、装置、設備、および媒体 Download PDF

Info

Publication number
JP6998928B2
JP6998928B2 JP2019211257A JP2019211257A JP6998928B2 JP 6998928 B2 JP6998928 B2 JP 6998928B2 JP 2019211257 A JP2019211257 A JP 2019211257A JP 2019211257 A JP2019211257 A JP 2019211257A JP 6998928 B2 JP6998928 B2 JP 6998928B2
Authority
JP
Japan
Prior art keywords
index
data
row
entity
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019211257A
Other languages
English (en)
Other versions
JP2020140699A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2020140699A publication Critical patent/JP2020140699A/ja
Application granted granted Critical
Publication of JP6998928B2 publication Critical patent/JP6998928B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/23Updating
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • 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/2455Query execution
    • G06F16/24552Database cache management
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

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)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示の実施形態は、コンピュータの分野に関し、より詳しくは、データを記憶およびクエリするための方法、装置、設備、およびコンピュータ可読記憶媒体に関する。
知識ベース(Knowledge Base)としても知られる知識マップは、現実世界に存在するさまざまなエンティティ、それらの間の関係、およびそれぞれの属性を記述するために使用される。現在、知識マップは、検索、人工知能、深層学習などの分野で幅広く使用されている。
知識マップにおけるデータ数の劇的な増加とデータに対する応用に伴って、知識マップにおけるエンティティデータは頻繁に更新される可能性がある。さらに、知識マップ生成のさまざまな段階で、知識マップにおけるエンティティデータを段階的に変更することが必要になることがよくある。したがって、エンティティデータが頻繁に更新されるシナリオで、データ書き込みおよびデータクエリのパフォーマンスが低下しないことを保証するために、知識マップにおけるエンティティデータを記憶およびクエリする技術を提供することが望ましい。
本開示の例示的な実施形態によれば、データを記憶およびクエリするための技術案が提供される。
本開示の第1の態様において、データを記憶するための方法を提供する。該方法は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するステップと、プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むステップと、データテーブルのクエリルールと前記データに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するステップと、セカンダリインデックスとプライマリインデックスを前記データテーブルにおけるインデックス行に書き込むステップとを含む。
本開示の第2の態様において、データのクエリ方法を提供する。該方法は、データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、前記データテーブルの一つ又は複数のインデックス行から、前記クエリリクエストとマッチングするインデックス行を確定するステップであって、前記インデックス行には、データにインデックスを付けるためのプライマリインデックスと、プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているステップと、前記インデックス行におけるプライマリインデックスに基づいて、データテーブルの一つ又は複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定するステップであって、前記データ行には、プライマリインデックスとデータが記憶されているステップと、前記インデックス行と前記データ行がマッチングするかどうかを判定するステップと、前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、前記クエリリクエストへの応答として前記データ行からデータを取得するステップとを含む。
本開示の第3の態様において、データ記憶装置を提供する。該装置は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するように構成されたプライマリインデックス生成モジュールと、プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むように構成されたデータ行書き込みモジュールと、データテーブルのクエリルールと前記データに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するように構成されたセカンダリインデックス生成モジュールと、セカンダリインデックスとプライマリインデックスをデータテーブルにおけるインデックス行に書き込むように構成されたインデックス行書き込みモジュールとを含む。
本開示の第4の態様において、データクエリ装置を提供する。該装置は、データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、データテーブルの一つ又は複数のインデックス行から前記クエリリクエストとマッチングするインデックス行を確定するように構成されたインデックス行確定モジュールであって、前記インデックス行には、データにインデックスを付けるためのプライマリインデックスと、プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているインデックス行確定モジュールと、インデックス行におけるプライマリインデックスに基づいて、データテーブルの一つ又は複数のデータ行から、該インデックス行に関連付けられたデータ行を確定するように構成されたデータ行確定モジュールであって、前記データ行には、プライマリインデックスとデータが記憶されているデータ行確定モジュールと、前記インデックス行と前記データ行がマッチングするかどうかを判定するように構成されたマッチングモジュールと、前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、クエリリクエストへの応答として前記データ行からデータを取得するように構成されたデータ取得モジュールとを含む。
本開示の第5の態様において、データ記憶設備を提供する。該設備は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに本開示の第1の態様に記載の方法を実施させる記憶装置とを含む。
本開示の第6の態様において、データクエリ設備を提供する。該設備は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに本開示の第2の態様に記載の方法を実施させる記憶装置とを含む。
本開示の第7の態様において、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、前記プログラムがプロセッサによって実行されると、本開示の第1の態様に記載の方法が実施されるコンピュータ可読記憶媒体を提供する。
本開示の第8の態様において、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、前記プログラムがプロセッサによって実行されると、本開示の第2の態様に記載の方法が実施されるコンピュータ可読記憶媒体を提供する。
発明の概要に記載されている内容は、本開示の実施形態の主要なまたは重要な特徴を限定することを意図するものではなく、本開示の範囲を限定することを意図するものでもない。本開示のその他の特徴は、以下の説明により容易に理解されるであろう。
本開示の実施形態の上記およびその他の特徴、利点、および態様は、添付の特許請求の範囲の態様からより明らかになるであろう。図において、同じまたは類似の要素に対して、同じまたは類似の符号を付与する。
図1は、本開示の実施形態による例示的なシステムのブロック図を示す。 図2は、本開示の実施形態による、データを記憶およびクエリするための例示的なサーバーのブロック図を示す。 図3は、本開示の実施形態による、データを記憶するための方法のフローチャートを示す。 図4Aおよび4Bは、本開示の実施形態による例示的なデータテーブルの概略図を示す。 図5は、本開示の実施形態による、データをクエリするための方法のフローチャートを示す。 図6は、本開示の実施形態による、データを記憶するための装置のブロック図を示す。 図7は、本開示の実施形態による、データをクエリするための装置のブロック図を示す。 図8は、本開示の実施形態が実施され得るコンピューティングデバイスのブロック図を示す。
本開示の実施形態は、図面を参照して以下でより詳細に説明される。本開示の特定の実施形態が図面に示されているが、本発明はさまざまな形態で具現化することができ、本明細書に記載された実施形態に限定されると解釈されるべきではない。本開示の特定の実施形態は、本開示がより正確かつ完全に理解されるために提供されたものである。本開示の図面および実施形態は、単に例示として見なされるべきであり、本開示の範囲を限定するものではない。
本開示の実施形態の説明において、「含む」という用語およびこれに類似する用語は、非限定(open-ended)、すなわち「含むがこれに限定されない」を意味すると理解されるべきである。用語「に基づいて」という用語は、「少なくとも部分的に基づいて」を意味すると理解されるべきである。「一実施形態」または「該実施形態」という用語は、「少なくとも一つの実施形態」を意味すると理解されるべきである。「第1の」、「第2の」などの用語は、異なる対象または同一の対象を指す場合がある。以下では、他の明示的および暗黙的な定義も含まれる場合がある。
前述のように、知識マップにおけるデータ数の劇的な増加とデータに対する応用に伴って、知識マップにおけるデータは頻繁に更新される可能性がある。さらに、知識マップ生成のさまざまなステップで、知識マップにおけるデータを段階的に変更することが必要になることがよくある。これらの更新と変更は、多くの場合、知識マップにおけるデータをクエリするストレージシステムの機能に依存している。
知識マップにおけるデータは、通常、主語・述語・目的語(SPO)の形式のトリプレットで表される。エンティティ「ポトス(Epipremnum aureum)」を例にとると、それに関連するデータ(「エンティティデータ」とも呼ばれる)には、例えば「ポトスの生物学的分類は単子葉植物である」(「ポトス」は主語、「生物学的分類」は述語、「単子葉植物」は目的語)、「ポトスの所属科目はサトイモ科(Araceae)である」(「ポトス」は主語、「生物学的分類」は述語、「単子葉植物」は目的語)などがある。
SPOデータ「ポトスの生物学的分類は単子葉植物である」を例にとると、エンティティ「ポトス」とエンティティ「単子葉植物」が2つのノードと見なされ、関係「生物学的分類」がこれらの2つのノードを連結するためのエッジと見なされる場合に、このエッジはエンティティ「ポトス」を表すノードの「アウトエッジ(out edge)」または「ポジティブエッジ(positive edge)」と言えるとともに、エンティティ「単子葉植物」を表すノードの「インエッジ(in edge)」または「リバースエッジ(inverse edge)」と言える。エンティティ「単子葉植物」は、エンティティ「ポトス」の「アウトエッジエンティティ」または「ポジティブエッジエンティティ」とも呼ばれる。エンティティ「ポトス」は、エンティティ「単子葉植物」の「インエッジエンティティ」または「リバースエッジエンティティ」とも呼ばれる。エンティティ「ポトス」からエンティティ「単子葉植物」に向かっての関係は、「アウトエッジ関係」または「ポジティブエッジ関係」とも呼ばれる。エンティティ「単子葉植物」からエンティティ「ポトス」に向かっての関係は、「インエッジ関係」または「リバースエッジ関係」とも呼ばれる。さらに、説明の便宜上、SPOトリプレットにおける目的語としてのエンティティは、本明細書では、「対象」または「対象エンティティ」と呼ばれる。
知識マップにおけるエンティティデータは、さまざまな形式で表すことができる。 例えば、JASON形式のエンティティデータの例は次のとおりである。
Figure 0006998928000001
上記JASON形式のエンティティデータでは、主語の名前(name)は「ポトス」であり、対応するエンティティ識別子(id)は「01rzqh7j」である。述語は「生物学的分類(biologyClass)」であり、目的語の値(value)は「単子葉植物」であり、対応するエンティティ識別子は「01702179」である。別の述語は「所属科目(biologyFamily)」であり、目的語の値は「サトイモ科」であり、対応するエンティティ識別子は「01mmz9lr」である。
知識マップの生成および使用において、上記のエンティティデータを記憶し、記憶されたエンティティデータに対してさまざまなクエリ操作を実行できることが望ましい。例えば、ポトスに関連するすべての情報をクエリすることは、特定の主語(S)のすべてのSPOデータをクエリすることである。別の例では、ポトスの生物学的分類情報をクエリすることは、主語と述語の組み合わせ(SP)を特定し、該組み合わせに関連するSPOデータをクエリすることである。別の例では、「単子葉植物」を目的語とするすべてのエンティティ(インエッジエンティティ)をクエリすることは、目的語(O)を特定し、この目的語に関連付けられた主語(S)をクエリすることである。別の例では、生物学的分類が単子葉植物であるすべてのエンティティをクエリすることは、目的語(O)と述語(P)の組み合わせを特定し、該組み合わせに関連付けられた主語(S)をクエリすることである。
一部の従来の解決手段では、monogoDBなどのデータベースを使用してエンティティデータの記憶およびクエリを行う。monogoDBベースのストレージシステムは、通常、単一のデータテーブルに複数のインデックスを構築し、複数のインデックスのクエリによって、リバースエッジエンティティに対するクエリを実施する。ただし、複数のインデックスはデータテーブルの書き込みパフォーマンスに深刻な影響を与える傾向があるため、エンティティデータが頻繁に更新されるアプリケーションシナリオに適応できない。別の従来の解決手段では、GraphIndexなどのグラフ検索システムを使用してエンティティデータの記憶およびクエリを行う。このような解決手段は静的エンティティデータセットに対するグラフクエリ技術を実現できるが、任意のエンティティノードが更新されると、それに対応して、該エンティティノードと連結するエッジもそれに伴って更新する必要があることが多く、更新のオーバーヘッドが大きくなるため、エンティティデータが頻繁に更新されるアプリケーションシナリオに適応できない。
本開示の一実施形態によれば、データを記憶およびクエリするための解決手段が提案される。この解決手段により、知識マップにおけるエンティティデータに対する低コストでスケーラブルな記憶およびクエリ技術が可能となり、上記の課題および/または他の潜在的な課題に対処することができる。この解決手段は、エンティティデータと、エンティティデータにインデックスを付けるためのプライマリインデックスとをデータテーブルにおけるデータ行に記憶し、データテーブルのクエリルールに基づいてプライマリインデックスにインデックスを付けるためのセカンダリインデックスを構築する。セカンダリインデックスとプライマリインデックスは、同じデータテーブルにおけるインデックス行に記憶される。エンティティデータが更新されると、新しいセカンダリインデックスが生成され、プライマリインデックスとともに該データテーブルの新しいインデックス行に書き込まれる。古いインデックス行の削除は、実際のデータクエリが実行される前に遅延される。このようにして、本開示の実施形態では、知識マップにおけるエンティティデータが頻繁に更新される場合に、データ書き込みおよびデータクエリのパフォーマンスが低下しないことが保証される。
以下、図面を参照して本開示の実施形態について具体的に説明する。
図1は、本開示の実施形態による例示的なシステム100のブロック図を示す。図1に示されるように、例示的なシステム100は一般に、クライアント120と複数のサーバー130-1、130-2、…、130-N(集合的または個別に「サーバー130」と呼ばれる。Nは自然数である)を含むことができる。複数のサーバー130は、それぞれ複数のデータテーブル140-1、140-2、…、140-N(集合的または個別に「データテーブル140」と呼ばれる。Nは自然数である)に関連付けられている。図1においては、単に例示する目的でシステム100の構造および機能を記載しており、本開示の範囲に対するあらゆる限定を暗示していないことを理解されたい。本開示の実施形態はまた、異なる構造および/または機能を有する環境にも適用できる。
エンティティデータの記憶を実行するとき、ユーザー110は、記憶対象のデータ(例えば、上述のJASON形式のエンティティデータ)をクライアント120に入力することができる。クライアント120は、記憶対象のデータをサーバー130-1などの一つまたは複数のサーバー130に転送することができる。サーバー130-1は、受信したエンティティデータをデータテーブル140-1に記憶することができる。
図1は、各サーバー130が単一のデータテーブル140に関連付けられていることを示しているが、これはあくまでも例示または説明目的のものであって、本開示の範囲を限定することを意図するものではないことを理解されたい。いくつかの実施形態では、各サーバー130は、複数のデータテーブルに関連付けられてもよい。別の実施形態では、単一のデータテーブルを複数のデータフラグメントに分割することができ、各サーバー130は、複数のデータフラグメントの少なくとも一部のみに関連付けられてもよい。すなわち、単一のデータテーブルを複数のサーバー130にわたって記憶することができる。
エンティティデータのクエリを実行する場合、ユーザー110はクエリリクエストをクライアント120に入力することができる。クエリリクエストは、特定の属性値を持つエンティティのクエリ、特定の対象と特定の関係を持つエンティティのクエリ、特定のエンティティと特定の対象の間のアウトエッジ関係のクエリ、特定のエンティティと特定の対象の間のインエッジ関係のクエリ、特定のエンティティに関連するデータのクエリ、特定のアウトエッジ関係を持つエンティティのクエリ、特定のインエッジ関係を持つエンティティのクエリなどを含むが、これらに限定されない。クライアント120は、該クエリリクエストを複数のサーバー130に転送することができる。各サーバー130は、記憶したデータテーブル140からエンティティデータをクエリして、クエリ結果を取得することができる。各サーバー130は、そのクエリ結果をクライアント120にフィードバックすることができる。クライアント120は、各サーバー130からのクエリ結果をマージし、マージされたクエリ結果をユーザー110にフィードバックすることができる。
図2は、本開示の実施形態による例示的なサーバー130のブロック図を示している。図2に示されるように、例示的なサーバー130は、一般に、データ記憶装置210、データクエリ装置220、キャッシュ装置230、および記憶装置240を含んでいてもよい。図2は、サーバー130の構造および機能を示しているが、これはあくまでも例示または説明目的のものであって、本開示の範囲を限定することを意図するものではないことを理解されたい。本開示の実施形態はまた、異なる構造および/または機能を有するサーバーにも適用できる。
図2に示されるように、データ記憶装置210は、クライアント120から記憶対象のデータを受信し、サーバー130のデータテーブル140に記憶対象のデータを記憶することができる。データテーブル140が記憶装置240に記憶されてもよい。データテーブル140のクエリパフォーマンスを改善するために、データテーブル140におけるデータの少なくとも一部をキャッシュ装置230にキャッシュすることができる。以下、図3を参照して、データ記憶装置210の動作をさらに詳しく説明する。
図2に示されるように、データクエリ装置220は、クライアント120からクエリリクエストを受信し、該クエリリクエストに従ってサーバー130に記憶されたデータテーブル140に対してクエリ動作を実行することができる。以下、図5を参照して、データクエリ装置220の動作をさらに詳しく説明する。
図3は、本開示の実施形態による、データを記憶するための方法300のフローチャートを示している。例えば、方法300は、図2に示されるデータ記憶装置210によって実行されてもよい。以下、図2を参照して、方法300を詳しく説明する。方法300は、図示されていない追加のブロックを含んでもよく、および/または図示されたブロックを省略してもよいことを理解されたい。本開示の範囲は、この点で限定されない。
ブロック310において、データ記憶装置210は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成する。
いくつかの実施形態では、記憶対象のデータは、知識ベースにおけるエンティティに関連する情報を記録することができる。以下、上記のエンティティ「ポトス」に関するJASON形式のデータを記憶対象のデータの例とする。いくつかの実施形態では、例えば、データ記憶装置210は、該データからエンティティ「ポトス」の識別子(すなわち、「01rzqh7j」)を抽出し、該識別子を該データにインデックスを付けるためのプライマリインデックスとすることができる。これは、あくまでもプライマリインデックスを生成する方法の一例にすぎないことを理解されたい。別の実施形態では、データ記憶装置210は、エンティティの識別子および/または他の情報に基づいて、データにインデックスを付けるためのプライマリインデックスを生成することもできる。
ブロック320において、データ記憶装置210は、生成されたプライマリインデックスおよび記憶対象のデータをデータテーブル140におけるデータ行に書き込む。
いくつかの実施形態では、データテーブル140は、例えば、分散ストレージシステムHBaseにおけるデータテーブル(またはHBaseデータテーブルにおける一つのデータフラグメント)である。HBaseは、行単位でデータを記憶する高信頼性、高性能、列指向のスケーラブルな分散ストレージシステムである。いくつかの実施形態では、データテーブル140における行は、データ行とインデックス行に分けられてもよい。本明細書で使用される「データ行」は、ターゲットデータが記憶される行を指し、「インデックス行」は、インデックス情報のみが記憶される行を指す。図4Aは、本開示の実施形態による例示的なデータテーブル140の概略図を示している。図4Aに示されるように、データテーブル140(HBaseデータテーブルまたはHBaseデータテーブルにおけるデータフラグメント)は、インデックスエリア440およびデータエリア450を含むことができる。データエリア450は、複数のデータ行451、452などを含むことができる。インデックスエリア440は、複数のインデックス行441、442などを含むことができる。
いくつかの実施形態では、データ記憶装置210は、生成されたプライマリインデックスをデータ行の行キー(rowkey)とするとともに、記憶対象のデータをデータ行の値とすることにより、両者をデータ行に書き込むことができる。例えば、図4Aのデータ行451を例にとると、プライマリインデックス420-1は該データ行451の行キーとされ、対応するデータ430-1は該データ行451の値とされる。図4Aのデータ行452を例にとると、プライマリインデックス420-2は該データ行452の行キーとされ、対応するデータ430-2は該データ行452の値とされる。
ブロック330において、データ記憶装置210は、データテーブル140のクエリルールと記憶対象のデータに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成する。
いくつかの実施形態では、データストレージ210は、データテーブル140のインデックス構成情報を取得することができる。例えば、データテーブル140のインデックス構成情報は、データテーブル140に関連付けられたリレーショナルデータベース(例えば、MySQL)に事前に記憶されていてもよい。いくつかの実施形態では、該インデックス構成情報は、例えば、関連付けられたデータテーブル140の識別子(例えば、テーブル名)、データテーブル140によってサポートされるクエリルール、データテーブル140におけるダーティインデックス行(すなわち、関連付けられているデータ行とマッチングしないインデックス行)の処理ルールなどの情報を示すことができる。いくつかの実施形態では、データ記憶装置210は、インデックス構成情報に示されたデータテーブル140のクエリルールと記憶対象のデータ自体に基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成することができる。
いくつかの実施形態では、データテーブル140のクエリルールは、例えば、データテーブル140によってサポートされるクエリパターンを示すことができる。データテーブル140に記憶されているターゲットデータは、知識ベースにおけるエンティティデータである。上記のエンティティ「ポトス」に関するJASON形式のエンティティデータを例にとると、それはエンティティ「ポトス」の一つまたは複数の属性値、および/またはエンティティ「ポトス」と一つまたは複数の対象エンティティ(例えば、対象エンティティ「単子葉植物」、「サトイモ科」)の間の対応関係を示している。いくつかの実施形態では、データテーブル140によってサポートされるクエリパターンは、例えば、クエリテーブルデータ140における特定の属性値を有するエンティティ(例えば、クエリパターンが「植物」であるエンティティ)のクエリ、特定の対象と特定の関係を持つエンティティ(例えば、「生物学的分類」が「単子葉植物」であるエンティティ)のクエリ、特定のエンティティと特定の対象の間のアウトエッジ関係(例えば、「ポトス」と「単子葉植物」の間のアウトエッジ関係、すなわち、「ポトス」の「単子葉植物」に対する関係)のクエリ、特定のエンティティと特定の対象の間のインエッジ関係(例えば、「ポトス」と「単子葉植物」の間のインエッジ関係、すなわち、「単子葉植物」の「ポトス」に対する関係)のクエリ、特定のエンティティに関連するデータ(例えば、「ポトス」に関するすべてのSPOデータ)のクエリ、特定のアウトエッジ関係を持つエンティティ(例えば、アウトエッジ関係が「生物学的分類」であるエンティティ)のクエリ、特定のインエッジ関係を持つエンティティ(例えば、インエッジ関係が「生物学的分類」であるエンティティ)のクエリのうちのいずれか一つであってもよい。
いくつかの実施形態では、データ記憶装置210は、データテーブル140のクエリルールに基づいて、エンティティデータにおける個々のSPOのセマンティクスを解析することにより、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成することができる。加えて、いくつかの実施形態では、データ記憶装置210は、データテーブル140の開始プライマリキーをセカンダリインデックスのプレフィックスとすることにより、該セカンダリインデックスを生成することができる。
クエリルール「生物学的分類が単子葉植物であるエンティティのクエリ」を例にとると、該クエリルールは、SPOのトリプレットにおける目的語Оと述語Pが特定された前提で、主語Sとしてのエンティティをクエリすることを示す。例えば、セカンダリインデックスは三つのセグメントに分割することができる。各セグメントは記号「|」で区切られる。第1のセグメントは、データテーブル140の開始主キーおよび目的語Oのidを格納するために使用することができ、両者は記号「'」で区切られる。データテーブル140の開始主キーが「01akbg1g」であると仮定すると、第1のセグメントは、例えば「01akbg1g'01702l79」である。第2のセグメントは、クエリルールに関連するJasonPathの式であってもよい。この例では、第2のセグメントは、例えば、「$.biologyClass.@id」である。第3のセグメントは、主語Sとしてのエンティティのid、すなわち、クエリ対象のエンティティデータの行キーであってもよい。この例では、第3のセグメントは、例えば、「01rzqh7j」である。すなわち、クエリルール「生物学的分類が単子葉植物であるエンティティのクエリ」について生成されたセカンダリインデックスは「01akbg1g'01702l79|$.biologyClass.@id|01rzqh7j」である。また、クエリルール「所属科目がサトイモ科であるエンティティのクエリ」を例にとると、生成されたセカンダリインデックスは「01akbg1g'01mmz9lr|$.biologyFamily.@id|01rzqh7j」である。
ブロック340において、データ記憶装置210は、セカンダリインデックスとプライマリインデックスをデータテーブル140におけるインデックス行に書き込む。
いくつかの実施形態では、データ記憶装置210は、生成されたセカンダリインデックスをインデックス行の行キーとし、インデックス行の行キーとしてのプライマリインデックスをインデックス行の値とすることにより、両者をデータ行に書き込むことができる。例えば、図4Aにおけるインデックス行441を例にとると、それがデータ行451に関連付けられている。セカンダリインデックス410-1は、該インデックス行441の行キーとされ、データ行451の行キーとしてのプライマリインデックス420-1は、該インデックス行441の値とされる。図4Aにおけるインデックス行442を例にとると、それがデータ行452に関連付けられている。セカンダリインデックス410-2は、該インデックス行442の行キーとされ、データ行452の行キーとしてのプライマリインデックス420-2は、該インデックス行442の値とされる。
追加または代替として、いくつかの実施形態では、データ記憶装置210は、データ行およびインデックス行の書き込みの原子性(atomicity)と、データ行およびインデックス行の一貫性を保証するために、互いに関連付けられたデータ行およびインデックス行の書き込みをバッチトランザクションオペレーションとして実行できる。
追加または代替として、いくつかの実施形態では、データテーブル140に複数のデータフラグメントがある場合、クエリ時にインデックスとデータが同じサーバーでアクセスされるように、データ記憶装置210は、互いに関連付けられたインデックス行およびデータ行(例えば、インデックス行441およびデータ行451)が常に同じデータフラグメントに記憶されていることを確保する必要がある。これにより、インデックスとデータのオフサイトアクセスによるオーバーヘッドを回避することができる。これを実現するために、例えば、インデックス行の行キー(すなわち、セカンダリインデックス)を生成する場合、データ記憶装置210は、データ行が配置されているデータフラグメントの開始プライマリキーをインデックス行の行キーのプレフィックスとして使用することができる。このようにして、データ記憶装置210は、互いに関連付けられたインデックス行およびデータ行が常に同じデータテーブルにおける同じデータフラグメントに記憶されることを確保することできる。さらに、データテーブル140のデータフラグメントが分割されるか、または複数のデータフラグメントがマージされる場合、データ記憶装置210は、互いに関連付けられたインデックス行とデータ行を同期的に分割またはマージし、互いに関連付けられたインデックス行とデータ行が常に同じデータテーブルの同じデータフラグメントに記憶されることを確保することができる。
いくつかの実施形態では、例えば、データ行およびインデックス行をHBaseデータテーブルに書き込む場合、データ記憶装置210は、インデックス行の行キーをデータ行の行キーの前に常に辞書式にランク付けさせることができる。これにより、同じデータテーブル(またはデータテーブルの同じデータフラグメント)の前半領域はインデックスエリアとなり、後半領域はデータエリアとなる。さらに、インデックス行の値とデータ行の値をそれぞれHBaseデータテーブルの異なる列クラスターに記憶できるため、インデックス行とデータ行を物理的に分離することができる。
このようにして、後続のクエリのために、知識マップのエンティティデータをデータテーブル140に書き込むことができる。
いくつかの実施形態では、データ記憶装置210は、クライアント120からエンティティデータを更新する旨のリクエストを受信することもできる。例えば、図4Bに示されるように、データ記憶装置210は、図4Aに示されるデータ行451における元のデータ430-1をデータ430-3に更新する旨のリクエストを受信すると、データ記憶装置210はデータ430-3をデータ行451に書き込むことができる。データ記憶装置210は、更新されたデータ430-3およびデータテーブル140のクエリルールに基づいて、元のプライマリインデックス420-1にインデックスを付けるための新しいセカンダリインデックス420-3を生成するとともに、新しいセカンダリインデックス420-3および元のプライマリインデックス420-1を新しいインデックス行443に書き込むことができる。図4Bに示されるように、古いインデックス行441は、すぐにデータテーブル140から削除されない。図5を参照して以下でさらに詳細に説明されるように、古いインデックス行441の削除は、実際のクエリが実行される前に遅延される。これにより、頻繁に更新される場合に、データテーブル140の書き込みパフォーマンスが低下しないことが保証される。追加または代替として、いくつかの実施形態では、更新されたデータ行および新しいインデックス行の一貫性を保証するために、データ行の更新および新しいインデックス行の書き込みをバッチトランザクションオペレーションとして実行できる。
いくつかの実施形態では、データ記憶装置210は、データテーブル140を図2に示される記憶装置240に記憶することができる。記憶装置240は、例えば、第1の記憶媒体によって実現されてもよい。データテーブル140のクエリパフォーマンスを改善するために、データテーブル140におけるインデックスエリア440は、例えば、図2に示されるレベル1キャッシュ231にキャッシュされてもよい。レベル1キャッシュ231は、例えば、第2の記憶媒体によって実現されてもよい。さらに、データテーブル140におけるデータエリア450は、例えば、図2に示されるレベル2キャッシュ232にキャッシュされてもよい。レベル2キャッシュ232は、例えば、第3の記憶媒体によって実現されてもよい。
いくつかの実施形態では、レベル1キャッシュ231を実現するための第2の記憶媒体のアクセス速度は、レベル2キャッシュ232を実現するための第3の記憶媒体のアクセス速度を超え、第3の記憶媒体のアクセス速度は、記憶装置240を実現するための第1の記憶媒体のアクセス速度を超える。例えば、第1の記憶媒体の例は磁気ディスクであり、第2の記憶媒体の例はメモリであり、第3の記憶媒体の例はソリッドステートディスクである。上に列記したものは、あくまでも第1の記憶媒体、第2の記憶媒体、および第3の記憶媒体の例に過ぎず、これらの例は、本開示の範囲を限定することを意図するものではない。図2に示されるように、記憶装置240およびキャッシュ装置230を実現するために、他の記憶媒体も利用できることを理解されたい。
図5は、本開示の実施形態による、データをクエリするための方法500のフローチャートを示している。例えば、方法500は、図2に示されるデータクエリ装置220によって実行できる。以下、図2を参照して、方法500を詳細に説明する。方法500は、図示されていない追加のブロックを含んでもよく、および/または図示されたブロックを省略してもよいことを理解されたい。本開示の範囲はこの点で限定されない。
ブロック510において、データクエリ装置220は、データテーブル140に記憶されたデータについてのクエリリクエストの受信に対応して、データテーブル140の一つまたは複数のインデックス行から該クエリリクエストとマッチングするインデックス行を決定する。該インデックス行には、データにインデックスを付けるためのプライマリインデックスと、プライマリインデックスにインデックスを付けるためのセカンダリインデックスが記憶される。
いくつかの実施形態では、データクエリ装置220は、少なくともクエリリクエストにおけるキーワードに基づいてセカンダリインデックスの少なくとも一部を決定するとともに、データテーブル140の一つ又は複数のインデックス行から、決定されたセカンダリインデックスの少なくとも一部とマッチングするインデックス行を決定することができる。
クエリリクエスト「単子葉植物のリバースエッジエンティティのクエリ」を例にとると、該クエリリクエストは、例えば、SPOトリプレットにおける目的語ОのID(すなわち、01702l79)を特定した。データクエリ装置220は、データテーブル140(またはデータテーブルの特定のデータフラグメント)の開始プライマリキー(例えば、01akbg1g)と目的語Оのidを接続することにより、セカンダリインデックスのプレフィックス「01akbg1g'01702l79」を決定することができる。データクエリ装置220は、決定されたセカンダリインデックスのプレフィックスに基づいてデータテーブル140のインデックスエリア440をスキャンし、決定されたセカンダリインデックスのプレフィックスとマッチングするインデックス行を決定することができる。
いくつかの実施形態では、データテーブル140のインデックスエリア440の少なくとも一部は、例えば、図2に示されるレベル1キャッシュ231にキャッシュされている。この場合、データクエリ装置220は、まずレベル1キャッシュ231においてインデックス行のスキャンを実行することができる。決定されたセカンダリインデックスのプレフィックスとマッチングするインデックス行がレベル1キャッシュ231にキャッシュされている場合、データクエリ装置220はレベル1キャッシュ231において該インデックス行を決定することができる。そうでない場合、データクエリ装置220は、記憶装置240においてインデックス行のスキャンを実行して、記憶装置240から該インデックス行を決定することができる。いくつかの実施形態では、記憶装置240から該インデックス行が決定されると、データクエリ装置220は、該インデックス行をレベル1キャッシュ231に埋め戻し、後続のクエリの効率を高めることができる。
ブロック520において、データクエリ装置220は、前記インデックス行におけるプライマリインデックスに基づいて、データテーブルの一つまたは複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定する。該データ行には、プライマリインデックスとデータが記憶される。
いくつかの実施形態では、データクエリ装置220は、決定されたインデックス行におけるプライマリインデックスに基づいてデータテーブル140のデータエリア450をスキャンし、該プライマリインデックスとマッチングするデータ行を決定することができる。
いくつかの実施形態では、データテーブル140のデータエリア450の少なくとも一部は、例えば、図2に示されるレベル2キャッシュ232にキャッシュされている。この場合、データクエリ装置220は、まずレベル2キャッシュ232においてデータ行のスキャンを実行することができる。決定されたプライマリインデックスとマッチングするデータ行がレベル2キャッシュ232にキャッシュされている場合、データクエリ装置220はレベル2キャッシュ232において該データ行を決定することができる。そうでない場合、データクエリ装置220は、記憶装置240においてデータ行のスキャンを実行して、決定されたプライマリインデックスとマッチングするデータの行を記憶装置240から決定することができる。いくつかの実施形態では、記憶装置240から該データ行が決定されると、データクエリ装置220は、該データ行をレベル2キャッシュ232に埋め戻し、後続のクエリの効率を高めることができる。
ブロック530において、データクエリ装置220は、該インデックス行と該データ行がマッチングするかどうかを判定する。
いくつかの実施形態では、インデックス行は、該インデックス行がデータテーブル140に書き込まれた時間を識別する第1のタグを有していてもよく、同時に、データ行は、該データ行が最後に更新された時間を識別する第2のタグを有していてもよい。いくつかの実施形態では、データクエリ装置220は、第1のタグと第2のタグがマッチングするかどうかを判定することができる。第1のタグと第2のタグがマッチングしない場合、データクエリ装置220は、該インデックス行と該データ行がマッチングしないと判定することができる(例えば、図4Bにおいて、データ行451の更新時間とインデックス行441の書き込み時間がマッチングしないため、データ行451とインデックス行441がマッチングしない)。
追加または代替として、第1のタグと第2のタグがマッチングする場合、データクエリ装置220は、インデックス情報の比較をさらに実行して、該インデックス行と該データ行がマッチングするかどうかを判定することができる。図4Bのデータ行451とインデックス行443を例にとると、両者の時間タグはマッチングする。この場合、データクエリ装置220は、データ行451におけるデータ430-3およびデータテーブル140のクエリルールに基づいて、セカンダリインデックスのセットを新たに生成することができる。データクエリ装置220は、インデックス行443におけるセカンダリインデックスが、新たに生成されたセカンダリインデックスのセットに含まれているかどうかを判定することができる。インデックス行443におけるセカンダリインデックスがこの新たに生成されたセカンダリインデックスのセットに含まれている場合、データクエリ装置220は、データ行451とインデックス行443の両者がマッチングすると判定することができる。そうでない場合、データクエリ装置220は、データ行451とインデックス行443の両者がマッチングしないと判定することができる。
インデックス行とデータ行がマッチングすると判定された場合、ブロック540において、データクエリ装置220はクエリリクエストへの応答として該データ行からデータを取得する。例えば、データクエリ装置220は、図4Bに示されるデータ行451とインデックス行443の両者がマッチングすると判定した場合、データクエリ装置220は、クエリリクエストへの応答としてデータ行451からデータ430-3を取得することができる。
インデックス行とデータ行がマッチングしない場合、ブロック550において、データクエリ装置220はデータテーブル140から該インデックス行を削除する。例えば、データクエリ装置220は、図4Bに示されるデータ行451とインデックス行441の両者がマッチングしないと判定した場合、データテーブル140からインデックス行441を削除することができる。
上記の説明から分かるように、本開示の実施形態は、知識マップにおけるエンティティデータに対する低コストでスケーラブルな記憶およびクエリ技術を実現し、従来技術に存在している問題および/または他の潜在的な問題の解決を可能にした。本開示の実施形態は、エンティティデータと、エンティティデータにインデックスを付けるためのプライマリインデックスとをデータテーブルにおけるデータ行に記憶するとともに、データテーブルのクエリルールに基づいてプライマリインデックスにインデックスを付けるためのセカンダリインデックスを構築する。セカンダリインデックスとプライマリインデックスは、同じデータテーブルにおけるインデックス行に記憶される。エンティティデータが更新されると、新しいセカンダリインデックスが生成され、プライマリインデックスとともに該データテーブルの新しいインデックス行に書き込まれる。古いインデックス行の削除は、実際のデータクエリが実行される前に遅延される。このようにして、本開示の実施形態では、知識マップにおけるエンティティデータが頻繁に更新される場合に、データ書き込みおよびデータクエリのパフォーマンスが低下しないことが保証される。
図6は、本開示の実施形態による、データを記憶するための装置600の概略ブロック図を示している。該装置600は、図2に示されるデータ記憶装置210を実現するために使用されてもよい。図6に示されるように、装置600は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するように構成されたプライマリインデックス生成モジュール610と、プライマリインデックスと該データをデータテーブルにおけるデータ行に書き込むように構成されたデータ行書き込みモジュール620と、データテーブルのクエリルールと該データに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するように構成されたセカンダリインデックス生成モジュール630と、セカンダリインデックスとプライマリインデックスをデータテーブルにおけるインデックス行に書き込むように構成されたインデックス行書き込みモジュール640とを含んでいてもよい。
いくつかの実施形態では、該データは、知識ベースにおけるエンティティに関連する情報を記録し、プライマリインデックス生成モジュール610は、該データからエンティティの識別子を取得するように構成された識別子取得ユニットと、エンティティの前記識別子に基づいてプライマリインデックスを生成するように構成されたプライマリインデックス生成ユニットとを含んでいてもよい。
いくつかの実施形態では、データ行書き込みモジュールは、プライマリインデックスをデータ行のキーとして該データ行に書き込むように構成された第1のデータ行書き込みユニットと、該データをデータ行の値として該データ行に書き込むように構成された第2のデータ行書き込みユニットとを含んでいてもよい。
いくつかの実施形態では、セカンダリインデックス生成モジュールは、データテーブルのクエリルールを示すための該データテーブルのインデックス構成情報を取得するように構成された構成情報取得ユニットと、インデックス構成情報とデータに基づいてセカンダリインデックスを生成するように構成された第1の生成ユニットとを含んでいてもよい。
いくつかの実施形態では、データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および/または該エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、データテーブルのクエリルールは、特定の属性値を持つエンティティのクエリ、特定の対象と特定の関係を持つエンティティのクエリ、特定のエンティティの特定の対象に対するポジティブエッジ関係のクエリ、特定の対象の特定のエンティティに対するリバースエッジ関係のクエリ、特定のエンティティに関連するデータのクエリ、特定のポジティブエッジ関係に関連付けられたエンティティのクエリ、特定のリバースエッジに関連付けられたエンティティのクエリのうちの少なくとも一つを含む。
いくつかの実施形態では、セカンダリインデックス生成モジュールは、データテーブルの開始プライマリキーを決定するように構成された開始プライマリキー決定ユニットと、開始プライマリキーをセカンダリインデックスのプレフィックスとすることによりセカンダリインデックスを生成するように構成された第2の生成ユニットとを含む。
いくつかの実施形態において、インデックス行書き込みモジュールは、セカンダリインデックスをインデックス行のキーとして該インデックス行に書き込むように構成された第1のインデックス行書き込みユニットと、プライマリインデックスを該インデックス行の値として該インデックス行に書き込むように構成された第2のインデックス行書き込みユニットとを含む。
いくつかの実施形態では、装置600は、データ行に記憶されたデータを更新する旨のリクエストの受信に対応して該データを更新するように構成されたデータ更新モジュールと、更新されたデータとクエリルールに基づいて、プライマリインデックスにインデックスを付けるための新しいセカンダリインデックスを生成するように構成された新しいセカンダリインデックス生成モジュールと、新しいセカンダリインデックスとプライマリインデックスをデータテーブルにおける別のインデックス行に書き込むように構成された新しいインデックス行書き込みモジュールとをさらに含む。
いくつかの実施形態では、装置600は、データテーブルを第1の記憶媒体によって実現された記憶装置に記憶するように構成された記憶モジュールと、インデックス行を第2の記憶媒体によって実現されたレベル1キャッシュにキャッシュするように構成された第1のインデックス行キャッシュモジュールと、データ行を第3の記憶媒体によって実現されたレベル2キャッシュにキャッシュするように構成された第1のデータ行キャッシュモジュールとをさらに含む。
いくつかの実施形態では、第2の記憶媒体のアクセス速度は第3の記憶媒体のアクセス速度を超え、第3の記憶媒体のアクセス速度は第1の記憶媒体のアクセス速度を超える。
装置600に記載されたモジュールはそれぞれ図3を参照して説明された方法300における各ステップに対応しており、方法300における対応する動作および特徴と同じ効果を達成できることを理解されたい。ここでは、その詳細な説明を省略する。
図7は、本開示の一実施形態による、データクエリ装置700の概略ブロック図を示している。該装置700は、図2に示されるデータクエリ装置220を実現するために使用されてもよい。図7に示されるように、装置700は、データテーブルに記憶されたデータについてのクエリリクエストの受信に対応して、データテーブルの一つ又は複数のインデックス行から該クエリリクエストとマッチングするインデックス行を確定するように構成されたインデックス行確定モジュール710であって、前記インデックス行には、データにインデックスを付けるためのプライマリインデックスと、プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されるインデックス行確定モジュール710と、インデックス行におけるプライマリインデックスに基づいて、データテーブルの一つ又は複数のデータ行から、該インデックス行に関連付けられたデータ行を確定するように構成されたデータ行確定モジュール720であって、前記データ行には、プライマリインデックスとデータが記憶されるデータ行確定モジュール720と、インデックス行とデータ行がマッチングするかどうかを判定するように構成されたマッチングモジュール730と、インデックス行とデータ行がマッチングするという判定に対応して、クエリリクエストへの応答としてデータ行からデータを取得するように構成されたデータ取得モジュール740とを含んでいてもよい。
いくつかの実施形態では、データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および/または該エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、該クエリリクエストは、特定の属性値を持つエンティティ、特定の対象と特定の関係を持つエンティティ、特定のエンティティと特定の対象の間のアウトエッジ関係、特定のエンティティと特定の対象の間のインエッジ関係、特定のエンティティに関連するデータ、特定のアウトエッジ関係を持つエンティティ、特定のインエッジ関係を持つエンティティのうちの少なくとも一つをクエリするために使用される。
いくつかの実施形態では、装置700は、インデックス行とデータ行がマッチングしないという判定に対応して、データテーブルから該インデックス行を削除するように構成されたインデックス行削除モジュールをさらに含む。
いくつかの実施形態では、インデックス行確定モジュール710は、クエリリクエストにおけるキーワードに基づいてセカンダリインデックスの少なくとも一部を確定するように構成されたセカンダリインデックス確定ユニットと、一つ又は複数のインデックス行からセカンダリインデックスの少なくとも一部とマッチングするインデックス行を確定するように構成されたインデックス行確定ユニットとを含む。
いくつかの実施形態では、マッチングモジュール730は、該インデックス行がデータテーブルに書き込まれた第1の時間を識別するためのインデックス行の第1のタグを取得するように構成された第1のタグ取得ユニットと、該データ行が更新された第2の時間を識別するためのデータ行の第2のタグを取得するように構成された第2のタグ取得ユニットと、第1のタグと第2のタグがマッチングするかどうかを判定するように構成されたタグマッチングユニットと、第1のタグと第2のタグがマッチングしないという判定に対応して、インデックス行とデータ行がマッチングしないと判定するように構成された第1のマッチング判定ユニットとを含む。
いくつかの実施形態では、マッチングモジュール730は、第1のタグと第2のタグがマッチングするという判定に対応して、データ行におけるデータに基づいてセカンダリインデックスのセットを生成するように構成されたセカンダリインデックス生成ユニットと、インデックス行におけるセカンダリインデックスが該セカンダリインデックスのセットに含まれているかどうかを判定するように構成されたセカンダリインデックスマッチングユニットと、インデックス行におけるセカンダリインデックスがセカンダリインデックスのセットに含まれているという判定に対応して、インデックス行とデータ行がマッチングすると判定するように構成された第2のマッチング判定ユニットと、インデックス行におけるセカンダリインデックスが該セカンダリインデックスのセットに含まれていないという判定に対応して、インデックス行とデータ行がマッチングしないと判定するように構成された第3のマッチング判定ユニットとをさらに含む。
いくつかの実施形態では、データテーブルは、第1の記憶媒体によって実現された記憶装置に記憶され、一つ又は複数のインデックス行における少なくとも一部は、第2の記憶媒体によって実現されたレベル1キャッシュにキャッシュされる。インデックス行判定モジュール710は、インデックス行がレベル1キャッシュにキャッシュされているかどうかを判定するように構成されたレベル1キャッシュ検索ユニットと、インデックス行がレベル1キャッシュにキャッシュされているという判定に対応して、レベル1キャッシュから該インデックス行を確定するように構成された第1のインデックス行確定ユニットと、インデックス行がレベル1キャッシュにキャッシュされていないという判定に対応して、記憶装置から該インデックス行を確定するように構成された第2のインデックス行確定ユニットとを含む。
いくつかの実施形態において、装置700は、記憶装置からインデックス行が確定されたことに対応して、該インデックス行をレベル1キャッシュにキャッシュするように構成された第2のインデックス行キャッシュモジュールをさらに含む。
いくつかの実施形態では、一つまたは複数のデータ行における少なくとも一部は、第3の記憶媒体によって実現されたレベル2キャッシュにキャッシュされる。データ行確定モジュール720は、該データ行がレベル2キャッシュにキャッシュされているかどうかを判定するように構成されたレベル2キャッシュ検索ユニットと、該データ行がレベル2キャッシュにキャッシュされているという判定に対応して、レベル2キャッシュから該データ行を確定するように構成された第1のデータ行確定ユニットと、該データ行がレベル2キャッシュにキャッシュされていないという判定に対応して、記憶装置から該データ行を確定するように構成された第2のデータ行確定ユニットとを含む。
いくつかの実施形態では、装置700は、記憶装置からデータ行が確定されたことに対応して、該データ行をレベル2キャッシュにキャッシュするように構成された第2のデータ行キャッシングモジュールをさらに含む。
いくつかの実施形態では、第2の記憶媒体のアクセス速度が第3の記憶媒体のアクセス速度を超え、第3の記憶媒体のアクセス速度が第1の記憶媒体のアクセス速度を超える。
装置700に記載されたモジュールはそれぞれ図5を参照して説明された方法500における各ステップに対応しており、方法500における対応する動作および特徴と同じ効果を達成できることを理解されたい。ここでは、その詳細な説明を省略する。
さらに、装置600および/または700に含まれるモジュールおよび/またはユニットは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせを含むさまざまな方法で実施されてもよい。いくつかの実施形態では、一つ又は複数のユニットは、記憶媒体に記憶された機械実行可能命令などのソフトウェアおよび/またはファームウェアを使用して実施されてもよい。機械実行可能命令に加えて、またはその代わりに、装置600および/または700における一部またはすべてのユニットは、少なくとも部分的に、一つまたは複数のハードウェアロジックコンポーネントによって実施されてもよい。限定されない例として、使用できる例示的なタイプのハードウェアロジックコンポーネントには、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)などが含まれる。
図6および/または図7に示されるこれらのモジュールおよび/またはユニットは、部分的または全体的にハードウェアモジュール、ソフトウェアモジュール、ファームウェアモジュール、またはそれらの任意の組み合わせとして実施されてもよい。特に、いくつかの実施形態では、上述のプロセス、方法またはプロセスは、ストレージシステムまたはストレージシステムに対応するホストまたはストレージシステムに依存しない他のコンピューティングデバイスにおけるハードウェアによって実施されてもよい。
図8は、本開示の実施形態を実施するための例示的な設備800の概略ブロック図を示している。設備800は、図1に示されるサーバー130を実装するために使用できる。図8に示されるように、設備800は、読み取り専用メモリ(ROM)802に記憶されたコンピュータプログラム命令、または記憶ユニット808からランダムアクセスメモリ(RAM)803にロードされたコンピュータプログラム命令に基づいて、さまざまな適切なアクションとプロセスを実行することができる中央処理装置(CPU)801を含む。RAM803には、設備800の動作に必要なさまざまなプログラムおよびデータも記憶できる。CPU801、ROM802、およびRAM803は、バス804を介して相互に接続されている。入力/出力(I/O)インターフェース805もバス804に接続されている。
設備800における複数のコンポーネントは、キーボード、マウスなどの入力ユニット806、さまざまなタイプのディスプレイ、スピーカーなどの出力ユニット807、磁気ディスク、光ディスクなどの記憶ユニット808、およびネットワークカード、モデム、無線通信トランシーバなどの通信ユニット809を含むI/Oインターフェース805に接続されている。通信ユニット809は、設備800がインターネットなどのコンピュータネットワークおよび/またはさまざまな電気通信ネットワークを介して他の設備と情報/データを交換することを可能にする。
処理ユニット801は、方法300および/または500など、上述のさまざまな方法およびプロセスを実行する。例えば、いくつかの実施形態では、方法300および/または500は、記憶ユニット808などの機械可読媒体に具体的に組み込まれているコンピュータソフトウェアプログラムとして実施されてもよい。いくつかの実施形態では、コンピュータプログラムの一部またはすべては、ROM802および/または通信ユニット809を介して設備800にロードおよび/またはインストールされてもよい。コンピュータプログラムがRAM803にロードされ、CPU501によって実行されると、上述の方法300および/または500の一つまたは複数のステップが実行できる。あるいは、別の実施形態では、CPU801は、他の任意の適切な手段(例えば、ファームウェア)によって方法300および/または500を実行するように構成されてもよい。
以上説明した機能は、少なくとも部分的に、一つまたは複数のハードウェアロジックコンポーネントによって実行できる。例えば、使用できるハードウェアロジックコンポーネントの典型的なタイプには、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンシステム(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)などが含まれるが、これらに限定されない。
本開示の方法を実施するためのプログラムコードは、一つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサまたはコントローラーに提供されてもよい。プログラムコードがプロセッサまたはコントローラーによって実行されると、フローチャートおよび/またはブロック図に規定される機能/動作が実施される。プログラムコードは、完全にマシン上で実行されることも、部分的にマシン上で実行されることも可能であり、スタンドアロンソフトウェアパッケージとして部分的にマシン上で実行されるとともに部分的にリモートマシン上で実行されること、または完全にリモートマシンもしくはサーバー上で実行されることも可能である。
本開示の文脈において、機械可読媒体は、命令実行システム、装置または設備の使用に供する、または命令実行システム、装置または設備と組み合わせて使用されるためのプログラムを含むまたは記憶することができる有形の媒体であってもよい。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であってもよい。機械可読媒体は、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置または設備、またはこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。機械可読記憶媒体のより具体的な例には、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、コンパクトディスク読み取り専用メモリ(CD-ROM)、光記憶装置、磁気記憶装置、またはこれらの任意の適切な組み合わせが含まれる。
さらに、各動作は特定の順序で示されているが、これは、所望の結果を得るために、示された特定の順序または順番でそのような動作を実行すること、または示されたすべての動作を実行することが必要であると理解されるべきである。特定の状況では、マルチタスクと並列処理が有利である場合がある。同様に、上記説明にはいくつかの特定の実装の詳細が含まれているが、これらは本開示の範囲を限定するものとして解釈されるべきでない。別個の実施形態の文脈で説明された特定の特徴は、単一の実装として組み合わせて実装することもできる。逆に、単一の実施形態の文脈で説明されたさまざまな特徴は、個別にまたは任意の適切なサブコンビネーションにより複数の実装に実装することもできる。
構造的特徴および/または方法ロジック動作に特有の言語で本主題を説明してきたが、添付された特許請求の範囲で定義された主題は必ずしも説明された特定の特徴または動作に限定されず、むしろ、上記特定の特徴および動作は、あくまでも特許請求の範囲を実施する例示的な形態にすぎないと理解されるべきである。

Claims (48)

  1. 記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するステップと、
    前記プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むステップと、
    前記データテーブルのクエリルールと前記データに基づいて、前記プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するステップと、
    前記セカンダリインデックスと前記プライマリインデックスを前記データテーブルにおけるインデックス行に書き込むステップと
    を含む、コンピュータにより実行される、データを記憶するための方法。
  2. 前記データは、知識ベースにおけるエンティティに関連する情報を記録し、
    前記プライマリインデックスを生成するステップは、
    前記データから前記エンティティの識別子を取得することと、
    前記エンティティの前記識別子に基づいて前記プライマリインデックスを生成することとを含む請求項1に記載の方法。
  3. 前記プライマリインデックスと前記データを前記データ行に書き込むステップは、
    前記プライマリインデックスを前記データ行のキーとして前記データ行に書き込むことと、
    前記データを前記データ行の値として前記データ行に書き込むこととを含む請求項1に記載の方法。
  4. 前記セカンダリインデックスを生成するステップは、
    前記データテーブルの前記クエリルールを示すための前記データテーブルのインデックス構成情報を取得することと、
    前記インデックス構成情報と前記データに基づいて前記セカンダリインデックスを生成することとを含む請求項1に記載の方法。
  5. 前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および/または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
    前記クエリルールは、
    特定の属性値を持つエンティティをクエリすることと、
    特定の対象と特定の関係を持つエンティティをクエリすることと、
    特定のエンティティと特定の対象の間のアウトエッジ関係をクエリすることと、
    特定のエンティティと特定の対象の間のインエッジ関係をクエリすることと、
    特定のエンティティに関連するデータをクエリすることと、
    特定のアウトエッジ関係を持つエンティティをクエリすることと、
    特定のインエッジ関係を持つエンティティをクエリすることのうちの少なくとも一つを含む請求項1に記載の方法。
  6. 前記セカンダリインデックスを生成するステップは、
    前記データテーブルの開始プライマリキーを決定することと、
    前記開始プライマリキーを前記セカンダリインデックスのプレフィックスとすることにより前記セカンダリインデックスを生成することとを含む請求項1に記載の方法。
  7. 前記セカンダリインデックスと前記プライマリインデックスを前記インデックス行に書き込むステップは、
    前記セカンダリインデックスを前記インデックス行のキーとして前記インデックス行に書き込むことと、
    前記プライマリインデックスを前記インデックス行の値として前記インデックス行に書き込むこととを含む請求項1に記載の方法。
  8. 前記データ行に記憶されている前記データを更新する旨のリクエストの受信に対応して前記データを更新するステップと、
    更新されたデータと前記クエリルールに基づいて、前記プライマリインデックスにインデックスを付けるための新しいセカンダリインデックスを生成するステップと、
    前記新しいセカンダリインデックスと前記プライマリインデックスを前記データテーブルの別のインデックス行に書き込むステップと
    をさらに含む請求項1に記載の方法。
  9. 前記データテーブルを第1の記憶媒体によって実現された記憶装置に記憶するステップと、
    前記インデックス行を第2の記憶媒体によって実現されたレベル1キャッシュにキャッシュするステップと、
    前記データ行を第3の記憶媒体によって実現されたレベル2キャッシュにキャッシュするステップと
    をさらに含む請求項1に記載の方法。
  10. 前記第2の記憶媒体のアクセス速度が前記第3の記憶媒体のアクセス速度を超え、前記第3の記憶媒体の前記アクセス速度が前記第1の記憶媒体のアクセス速度を超える請求項9に記載の方法。
  11. データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、前記データテーブルの一つ又は複数のインデックス行から、前記クエリリクエストとマッチングするインデックス行を確定するステップであって、前記インデックス行には、前記データにインデックスを付けるためのプライマリインデックスと、該プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているステップと、
    前記インデックス行における前記プライマリインデックスに基づいて、前記データテーブルの一つ又は複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定するステップであって、前記データ行には、前記プライマリインデックスと前記データが記憶されているステップと、
    前記インデックス行と前記データ行がマッチングするかどうかを判定するステップと、
    前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、前記クエリリクエストへの応答として前記データ行から前記データを取得するステップと
    を含む、コンピュータにより実行される、データクエリのための方法。
  12. 前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および/または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
    前記クエリリクエストは、
    特定の属性値を持つエンティティ、
    特定の対象と特定の関係を持つエンティティ、
    特定のエンティティと特定の対象の間のアウトエッジ関係、
    特定のエンティティと特定の対象の間のインエッジ関係、
    特定のエンティティに関連するデータ、
    特定のアウトエッジ関係を持つエンティティ、および
    特定のインエッジ関係を持つエンティティのうちの少なくとも一つをクエリするために使用される請求項11に記載の方法。
  13. 前記インデックス行と前記データ行がマッチングしていないと判定されたことに対応して、前記データテーブルから前記インデックス行を削除するステップをさらに含む請求項11に記載の方法。
  14. 前記一つ又は複数のインデックス行から前記インデックス行を確定するステップは、
    少なくとも前記クエリリクエストにおけるキーワードに基づいて前記セカンダリインデックスの少なくとも一部を確定することと、
    前記一つ又は複数のインデックス行から前記セカンダリインデックスの前記少なくとも一部とマッチングするインデックス行を確定することとを含む請求項11に記載の方法。
  15. 前記インデックス行と前記データ行がマッチングするかどうかを判定するステップは、
    前記インデックス行が前記データテーブルに書き込まれた第1の時間を識別するための前記インデックス行の第1のタグを取得することと、
    前記データ行が更新された第2の時間を識別するための前記インデックス行の第2のタグを取得することと、
    前記第1のタグと前記第2のタグがマッチングするかどうかを判定することと、
    前記第1のタグと前記第2のタグがマッチングしていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしないと判定することとを含む請求項11に記載の方法。
  16. 前記インデックス行と前記データ行がマッチングするかどうかを判定するステップは、
    前記第1のタグと前記第2のタグがマッチングしていると判定されたことに対応して、前記データ行における前記データに基づいてセカンダリインデックスのセットを生成することと、
    前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれているかどうかを判定することと、
    前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていると判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていると判定することと、
    前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていないと判定することとをさらに含む請求項15に記載の方法。
  17. 前記データテーブルは、第1の記憶媒体によって実現された記憶装置に記憶され、前記一つ又は複数のインデックス行における少なくとも一部は、第2の記憶媒体によって実現されたレベル1キャッシュにキャッシュされ、
    前記一つ又は複数のインデックス行から前記インデックス行を確定するステップは、
    前記インデックス行が前記レベル1キャッシュにキャッシュされているかどうかを判定することと、
    前記インデックス行が前記レベル1キャッシュにキャッシュされていると判定されたことに対応して、前記レベル1キャッシュから前記インデックス行を確定することと、
    前記インデックス行が前記レベル1キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記インデックス行を確定することとを含む請求項11に記載の方法。
  18. 前記記憶装置から前記インデックス行が確定されたことに対応して、前記インデックス行を前記レベル1キャッシュにキャッシュするステップをさらに含む請求項17に記載の方法。
  19. 前記一つ又は複数のデータ行における少なくとも一部が、第3の記憶媒体によって実現されたレベル2キャッシュにキャッシュされ、
    前記一つ又は複数のデータ行から前記データ行を確定するステップは、
    前記データ行が前記レベル2キャッシュにキャッシュされているかどうかを判定することと、
    前記データ行が前記レベル2キャッシュにキャッシュされていると判定されたことに対応して、前記レベル2キャッシュから前記データ行を確定することと、
    前記データ行が前記レベル2キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記データ行を確定することとを含む請求項17に記載の方法。
  20. 前記記憶装置から前記データ行が確定されたことに対応して、前記データ行を前記レベル2キャッシュにキャッシュするステップをさらに含む請求項19に記載の方法。
  21. 前記第2の記憶媒体のアクセス速度が前記第3の記憶媒体のアクセス速度を超え、前記第3の記憶媒体のアクセス速度が前記第1の記憶媒体のアクセス速度を超える請求項19に記載の方法。
  22. 記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するように構成されたプライマリインデックス生成モジュールと、
    前記プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むように構成されたデータ行書き込みモジュールと、
    前記データテーブルのクエリルールと前記データに基づいて、前記プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するように構成されたセカンダリインデックス生成モジュールと、
    前記セカンダリインデックスと前記プライマリインデックスを前記データテーブルにおけるインデックス行に書き込むように構成されたインデックス行書き込みモジュールと
    を含むデータ記憶装置。
  23. 前記データは、知識ベースにおけるエンティティに関連する情報を記録し、
    前記プライマリインデックス生成モジュールは、
    前記データから前記エンティティの識別子を取得するように構成された識別子取得ユニットと、
    前記エンティティの前記識別子に基づいて前記プライマリインデックスを生成するように構成されたプライマリインデックス生成ユニットとを含む請求項22に記載の装置。
  24. 前記データ行書き込みモジュールは、
    前記プライマリインデックスを前記データ行のキーとして前記データ行に書き込むように構成された第1のデータ行書き込みユニットと、
    前記データを前記データ行の値として前記データ行に書き込むように構成された第2のデータ行書き込みユニットとを含む請求項22に記載の装置。
  25. 前記セカンダリインデックス生成モジュールは、
    前記データテーブルの前記クエリルールを示すための前記データテーブルのインデックス構成情報を取得するように構成された構成情報取得ユニットと、
    前記インデックス構成情報と前記データに基づいて前記セカンダリインデックスを生成するように構成された第1の生成ユニットとを含む請求項22に記載の装置。
  26. 前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および/または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
    前記クエリルールは、
    特定の属性値を持つエンティティをクエリすることと、
    特定の対象と特定の関係を持つエンティティをクエリすることと、
    特定のエンティティと特定の対象の間のアウトエッジ関係をクエリすることと、
    特定のエンティティと特定の対象の間のインエッジ関係をクエリすることと、
    特定のエンティティに関連するデータをクエリすることと、
    特定のアウトエッジ関係を持つエンティティをクエリすることと、
    特定のインエッジ関係を持つエンティティをクエリすることのうちの少なくとも一つを含む請求項22に記載の装置。
  27. 前記セカンダリインデックス生成モジュールは、
    前記データテーブルの開始プライマリキーを決定するように構成された開始プライマリキー決定ユニットと、
    前記開始プライマリキーを前記セカンダリインデックスのプレフィックスとすることにより前記セカンダリインデックスを生成するように構成された第2の生成ユニットとを含む請求項22に記載の装置。
  28. 前記インデックス行書き込みモジュールは、
    前記セカンダリインデックスを前記インデックス行のキーとして前記インデックス行に書き込むように構成された第1のインデックス行書き込みユニットと、
    前記プライマリインデックスを前記インデックス行の値として前記インデックス行に書き込むように構成された第2のインデックス行書き込みユニットとを含む請求項22に記載の装置。
  29. 前記データ行に記憶された前記データを更新する旨のリクエストの受信に対応して前記データを更新するように構成されたデータ更新モジュールと、
    更新されたデータと前記クエリルールに基づいて、前記プライマリインデックスにインデックスを付けるための新しいセカンダリインデックスを生成するように構成された新しいセカンダリインデックス生成モジュールと、
    前記新しいセカンダリインデックスと前記プライマリインデックスを前記データテーブルにおける別のインデックス行に書き込むように構成された新しいインデックス行書き込みモジュールと
    をさらに含む請求項22に記載の装置。
  30. 前記データテーブルを第1の記憶媒体によって実現された記憶装置に記憶するように構成された記憶モジュールと、
    前記インデックス行を第2の記憶媒体によって実現されたレベル1キャッシュにキャッシュするように構成された第1のインデックス行キャッシュモジュールと、
    前記データ行を第3の記憶媒体によって実現されたレベル2キャッシュにキャッシュするように構成された第1のデータ行キャッシングモジュールと
    をさらに含む請求項22に記載の装置。
  31. 前記第2の記憶媒体のアクセス速度が前記第3の記憶媒体のアクセス速度を超え、前記第3の記憶媒体の前記アクセス速度が前記第1の記憶媒体のアクセス速度を超える請求項30に記載の装置。
  32. データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、
    前記データテーブルの一つ又は複数のインデックス行から、前記クエリリクエストとマッチングするインデックス行を確定するように構成されたインデックス行確定モジュールであって、前記インデックス行には、前記データにインデックスを付けるためのプライマリインデックスと、該プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているインデックス行確定モジュールと、
    前記インデックス行における前記プライマリインデックスに基づいて、前記データテーブルの一つ又は複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定するように構成されたデータ行確定モジュールであって、前記データ行には、前記プライマリインデックスと前記データが記憶されているデータ行確定モジュールと、
    前記インデックス行と前記データ行がマッチングするかどうかを判定するように構成されたマッチングモジュールと、
    前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、前記クエリリクエストへの応答として前記データ行から前記データを取得するように構成されたデータ取得モジュールと
    を含むデータクエリ装置。
  33. 前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および/または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
    前記クエリリクエストは、
    特定の属性値を持つエンティティ、
    特定の対象と特定の関係を持つエンティティ、
    特定のエンティティと特定の対象の間のアウトエッジ関係、
    特定のエンティティと特定の対象の間のインエッジ関係、
    特定のエンティティに関連するデータ、
    特定のアウトエッジ関係を持つエンティティ、および
    特定のインエッジ関係を持つエンティティのうちの少なくとも一つをクエリするために使用される請求項32に記載の装置。
  34. 前記インデックス行と前記データ行がマッチングしていないと判定されたことに対応して、前記データテーブルから前記インデックス行を削除するように構成されたインデックス行削除モジュールをさらに含む請求項32に記載の装置。
  35. 前記インデックス行確定モジュールは、
    少なくとも前記クエリリクエストにおけるキーワードに基づいて前記セカンダリインデックスの少なくとも一部を確定するように構成されたセカンダリインデックス確定ユニットと、
    前記一つ又は複数のインデックス行から前記セカンダリインデックスの前記少なくとも一部とマッチングするインデックス行を確定するように構成されたインデックス行確定ユニットとを含む請求項32に記載の装置。
  36. 前記マッチングモジュールは、
    前記インデックス行が前記データテーブルに書き込まれた第1の時間を識別するための前記インデックス行の第1のタグを取得するように構成された第1のタグ取得ユニットと、
    前記データ行が更新された第2の時間を識別するための前記データ行の第2のタグを取得するように構成された第2のタグ取得ユニットと、
    前記第1のタグと前記第2のタグがマッチングするかどうかを判定するように構成されたタグマッチングユニットと、
    前記第1のタグと前記第2のタグがマッチングしていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしないと判定するように構成された第1
    のマッチング判定ユニットとを含む請求項32に記載の装置。
  37. 前記マッチングモジュールは、
    前記第1のタグと前記第2のタグがマッチングしていると判定されたことに対応して、前記データ行における前記データに基づいてセカンダリインデックスのセットを生成するように構成されたセカンダリインデックス生成ユニットと、
    前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれているかどうかを判定するように構成されたセカンダリインデックスマッチングユニットと、
    前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていると判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていると判定するように構成された第2のマッチング判定ユニットと、
    前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていないと判定するように構成された第3のマッチング判定ユニットとをさらに含む請求項36に記載の装置。
  38. 前記データテーブルは、第1の記憶媒体によって実現された記憶装置に記憶され、前記一つ又は複数のインデックス行における少なくとも一部は、第2の記憶媒体によって実現されたレベル1キャッシュにキャッシュされ、
    前記インデックス行確定モジュールは、
    前記インデックス行が前記レベル1キャッシュにキャッシュされているかどうかを判定するように構成されたレベル1キャッシュ検索ユニットと、
    前記インデックス行が前記レベル1キャッシュにキャッシュされていると判定されたことに対応して、前記レベル1キャッシュから前記インデックス行を確定するように構成された第1のインデックス行確定ユニットと、
    前記インデックス行が前記レベル1キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記インデックス行を確定するように構成された第2のインデックス行確定ユニットとを含む請求項32に記載の装置。
  39. 前記記憶装置から前記インデックス行が確定されたことに対応して、前記インデックス行を前記レベル1キャッシュにキャッシュするように構成された第2のインデックス行キャッシュモジュールをさらに含む請求項38に記載の装置。
  40. 前記一つ又は複数のデータ行における少なくとも一部は、第3の記憶媒体によって実現されたレベル2キャッシュにキャッシュされ、
    前記データ行確定モジュールは、
    前記データ行が前記レベル2キャッシュにキャッシュされているかどうかを判定するように構成されたレベル2キャッシュ検索ユニットと、
    前記データ行が前記レベル2キャッシュにキャッシュされていると判定されたことに対応して、前記レベル2キャッシュから前記データ行を確定するように構成された第1のデータ行確定ユニットと、
    前記データ行が前記レベル2キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記データ行を確定するように構成された第2のデータ行確定ユニットとを含む請求項38に記載の装置。
  41. 前記記憶装置から前記データ行が確定されたことに対応して、前記データ行を前記レベル2キャッシュにキャッシュするように構成された第2のデータ行キャッシングモジュールをさらに含む請求項40に記載の装置。
  42. 前記第2の記憶媒体のアクセス速度が前記第3の記憶媒体のアクセス速度を超え、前記第3の記憶媒体の前記アクセス速度が前記第1の記憶媒体のアクセス速度を超える請求項40に記載の装置。
  43. 一つ又は複数のプロセッサと、
    一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに請求項1~10のいずれか一項に記載の方法を実施させる記憶装置と
    を含むデータ記憶設備。
  44. 一つ又は複数のプロセッサと、
    一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに請求項11~21のいずれか一項に記載の方法を実施させる記憶装置と
    を含むデータクエリ設備。
  45. コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
    前記プログラムがプロセッサによって実行されると、請求項1~10のいずれか一項に記載の方法が実施されるコンピュータ可読記憶媒体。
  46. コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
    前記プログラムがプロセッサによって実行されると、請求項11~21のいずれか一項に記載の方法が実施されるコンピュータ可読記憶媒体。
  47. コンピュータプログラムであって、
    前記コンピュータプログラムがプロセッサにより実行されると、請求項1~10のいずれか一項に記載の方法が実施されるコンピュータプログラム。
  48. コンピュータプログラムであって、
    前記コンピュータプログラムがプロセッサにより実行されると、請求項11~21のいずれか一項に記載の方法が実施されるコンピュータプログラム。
JP2019211257A 2019-02-27 2019-11-22 データを記憶およびクエリするための方法、装置、設備、および媒体 Active JP6998928B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910147197.4A CN109918472A (zh) 2019-02-27 2019-02-27 存储和查询数据的方法、装置、设备和介质
CN201910147197.4 2019-02-27

Publications (2)

Publication Number Publication Date
JP2020140699A JP2020140699A (ja) 2020-09-03
JP6998928B2 true JP6998928B2 (ja) 2022-01-18

Family

ID=66962601

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019211257A Active JP6998928B2 (ja) 2019-02-27 2019-11-22 データを記憶およびクエリするための方法、装置、設備、および媒体

Country Status (5)

Country Link
US (1) US11334544B2 (ja)
EP (1) EP3702932A1 (ja)
JP (1) JP6998928B2 (ja)
KR (1) KR102407510B1 (ja)
CN (1) CN109918472A (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297881A (zh) * 2019-07-08 2019-10-01 北京友缘在线网络科技股份有限公司 用于实现二级索引的方法和计算机可读介质
CN110489475B (zh) * 2019-08-14 2021-01-26 广东电网有限责任公司 一种多源异构数据处理方法、系统及相关装置
CN110737807A (zh) * 2019-10-18 2020-01-31 深圳市华宝电子科技有限公司 一种数据存储方法、行车记录仪、服务器和存储介质
CN113127416A (zh) * 2020-01-15 2021-07-16 北京沃东天骏信息技术有限公司 数据查询方法和装置
CN111427883A (zh) * 2020-02-18 2020-07-17 深圳壹账通智能科技有限公司 基于AeroSpike的数据处理方法、装置、计算机设备及存储介质
CN111506570A (zh) * 2020-03-05 2020-08-07 百度在线网络技术(北京)有限公司 数据存储及查询方法、装置、电子设备及存储介质
KR20220023202A (ko) 2020-08-20 2022-03-02 주식회사 엘지에너지솔루션 콘택터 관리 방법 및 그 방법을 제공하는 배터리 시스템
CN112883125A (zh) * 2021-04-28 2021-06-01 北京奇岱松科技有限公司 一种实体数据处理方法、装置、设备和存储介质
EP4092674A1 (en) * 2021-05-19 2022-11-23 Commissariat à l'Energie Atomique et aux Energies Alternatives A non-volatile memory programming circuit and a method of programming non-volatile memory devices
CN116108023B (zh) * 2023-04-12 2023-07-04 北京首信科技股份有限公司 一种用于HBase数据库的数据检索方法和装置
CN117131042A (zh) * 2023-08-01 2023-11-28 上海沄熹科技有限公司 一种数据库函数索引实现方法及装置
CN117688013B (zh) * 2024-02-01 2024-04-30 北方健康医疗大数据科技有限公司 一种基于缓存索引的主索引生成方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008533564A (ja) 2005-02-24 2008-08-21 ゼラウンド システムズ リミテッド データ管理のための方法および装置
JP6092493B1 (ja) 2015-08-26 2017-03-08 成仁 片山 データベース管理装置およびその方法
US20180276262A1 (en) 2016-01-29 2018-09-27 Huawei Technologies Co., Ltd. Data Storage Method and Apparatus

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61220027A (ja) 1985-03-27 1986-09-30 Hitachi Ltd 文書ファイリングシステム及び情報記憶検索システム
JPH0692493B2 (ja) * 1990-03-13 1994-11-16 タイガースポリマー株式会社 積層体用加硫ゴムシートの製造方法
US6993074B2 (en) * 2000-03-24 2006-01-31 Microsoft Corporation Methods and arrangements for handling concentric mosaic image data
US6708178B1 (en) 2001-06-04 2004-03-16 Oracle International Corporation Supporting B+tree indexes on primary B+tree structures with large primary keys
KR100834760B1 (ko) * 2006-11-23 2008-06-05 삼성전자주식회사 최적화된 인덱스 검색 방법 및 장치
CN100483420C (zh) * 2007-11-09 2009-04-29 清华大学 基于快照的细粒度文件与目录版本管理方法
CN101295323B (zh) * 2008-06-30 2011-11-02 腾讯科技(深圳)有限公司 一种用于索引更新的处理方法和系统
CN101435708B (zh) * 2008-12-05 2011-06-22 四川长虹电器股份有限公司 移动导航设备中矢量地图的实时漫游与缩放的方法
US20110029478A1 (en) * 2009-05-20 2011-02-03 Broeker Stephen A Stream Star Schema and Nested Binary Tree for Data Stream Analysis
CN102567314B (zh) * 2010-12-07 2015-03-04 中国电信股份有限公司 知识查询装置和方法
CN102768674B (zh) * 2012-06-12 2016-08-24 北大方正集团有限公司 一种基于路径结构的xml数据存储方法
WO2015027425A1 (zh) * 2013-08-29 2015-03-05 华为技术有限公司 存储数据的方法和装置
CN105159895A (zh) 2014-05-28 2015-12-16 国际商业机器公司 用于存储和查询数据的方法和系统
TWI526857B (zh) * 2014-11-06 2016-03-21 The database acceleration method is used to calculate the index value and the hybrid layer cache
CN105354255B (zh) 2015-10-21 2018-01-02 华为技术有限公司 数据查询方法和装置
US20170193041A1 (en) * 2016-01-05 2017-07-06 Sqrrl Data, Inc. Document-partitioned secondary indexes in a sorted, distributed key/value data store
US10936559B1 (en) * 2016-09-28 2021-03-02 Amazon Technologies, Inc. Strongly-consistent secondary index for a distributed data set
CN107273540B (zh) * 2017-07-05 2021-09-24 北京三快在线科技有限公司 分布式搜索及索引更新方法、系统、服务器及计算机设备
US11106697B2 (en) * 2017-11-15 2021-08-31 Hewlett Packard Enterprise Development Lp Reading own writes using context objects in a distributed database
CN109376173A (zh) * 2018-11-08 2019-02-22 郑州云海信息技术有限公司 一种数据查询方法、装置、电子设备及存储介质
CN109299110B (zh) * 2018-11-09 2020-09-25 东软集团股份有限公司 数据查询方法、装置、存储介质和电子设备
CN111506604B (zh) * 2019-01-31 2023-06-13 伊姆西Ip控股有限责任公司 访问数据的方法、装置和计算机程序产品

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008533564A (ja) 2005-02-24 2008-08-21 ゼラウンド システムズ リミテッド データ管理のための方法および装置
JP6092493B1 (ja) 2015-08-26 2017-03-08 成仁 片山 データベース管理装置およびその方法
US20180276262A1 (en) 2016-01-29 2018-09-27 Huawei Technologies Co., Ltd. Data Storage Method and Apparatus

Also Published As

Publication number Publication date
JP2020140699A (ja) 2020-09-03
CN109918472A (zh) 2019-06-21
KR20200104789A (ko) 2020-09-04
KR102407510B1 (ko) 2022-06-10
US20200272610A1 (en) 2020-08-27
US11334544B2 (en) 2022-05-17
EP3702932A1 (en) 2020-09-02

Similar Documents

Publication Publication Date Title
JP6998928B2 (ja) データを記憶およびクエリするための方法、装置、設備、および媒体
CN107247808B (zh) 一种分布式NewSQL数据库系统及图片数据查询方法
US9778991B2 (en) Exporting and importing database tables in a multi-user database environment
US9910877B2 (en) Query handling in a columnar database
US20150293958A1 (en) Scalable data structures
CN103678556A (zh) 列式数据库处理的方法和处理设备
US10296497B2 (en) Storing a key value to a deleted row based on key range density
US20170154067A1 (en) Real time big data master data management
JP6982049B2 (ja) インデックスを管理するための方法、装置、設備及び記憶媒体
CN109690522B (zh) 一种基于b+树索引的数据更新方法、装置及存储装置
CN110737682A (zh) 一种缓存操作方法、装置、存储介质和电子设备
WO2018097846A1 (en) Edge store designs for graph databases
CN111143368A (zh) 一种关系型数据库数据对比方法及系统
WO2023202394A1 (zh) 分区表建立、针对分区表的数据写入、读取方法及装置
US20150039558A1 (en) Database management method, database system and medium
US20180275961A1 (en) Method and system for fast data comparison using accelerated and incrementally synchronized cyclic data traversal algorithm
WO2015105043A1 (ja) 演算システム、データベース管理装置および演算方法
JP2009265840A (ja) データベースのキャッシュシステム
US20170031909A1 (en) Locality-sensitive hashing for algebraic expressions
CN115114297A (zh) 数据轻量存储及查找方法、装置、电子设备及存储介质
US20170031985A1 (en) Structural equivalence
CN111159218B (zh) 数据处理方法、装置及可读存储介质
US20230100289A1 (en) Searchable data processing operation documentation associated with data processing of raw data
WO2024016789A1 (zh) 日志数据查询方法、装置、设备和介质
CN117407391A (zh) 数据库的全文索引方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200205

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210622

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211221

R150 Certificate of patent or registration of utility model

Ref document number: 6998928

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150