(57)【要約】      （修正有）【課題】データを記憶およびクエリするための方法、装置、設備、および媒体を提供する。【解決手段】データを記憶するための方法は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成し３１０、プライマリインデックスとデータをデータテーブルにおけるデータ行に書き込み３２０、データテーブルのクエリルールとデータに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成し３３０、セカンダリインデックスとプライマリインデックスをデータテーブルにおけるインデックス行に書き込む３４０。知識ベースにおけるエンティティデータが頻繁に更新される場合に、データ書き込みおよびデータクエリのパフォーマンスが低下しないことが保証される。【選択図】図３
2020140699.tif 000002
【特許請求の範囲】
【請求項１】
記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するステップと、
前記プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むステップと、
前記データテーブルのクエリルールと前記データに基づいて、前記プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するステップと、
前記セカンダリインデックスと前記プライマリインデックスを前記データテーブルにおけるインデックス行に書き込むステップと
を含む、データを記憶するための方法。
【請求項２】
前記データは、知識ベースにおけるエンティティに関連する情報を記録し、
前記プライマリインデックスを生成するステップは、
前記データから前記エンティティの識別子を取得することと、
前記エンティティの前記識別子に基づいて前記プライマリインデックスを生成することとを含む請求項１に記載の方法。
【請求項３】
前記プライマリインデックスと前記データを前記データ行に書き込むステップは、
前記プライマリインデックスを前記データ行のキーとして前記データ行に書き込むことと、
前記データを前記データ行の値として前記データ行に書き込むこととを含む請求項１に記載の方法。
【請求項４】
前記セカンダリインデックスを生成するステップは、
前記データテーブルの前記クエリルールを示すための前記データテーブルのインデックス構成情報を取得することと、
前記インデックス構成情報と前記データに基づいて前記セカンダリインデックスを生成することとを含む請求項１に記載の方法。
【請求項５】
前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
前記クエリルールは、
特定の属性値を持つエンティティをクエリすることと、
特定の対象と特定の関係を持つエンティティをクエリすることと、
特定のエンティティと特定の対象の間のアウトエッジ関係をクエリすることと、
特定のエンティティと特定の対象の間のインエッジ関係をクエリすることと、
特定のエンティティに関連するデータをクエリすることと、
特定のアウトエッジ関係を持つエンティティをクエリすることと、
特定のインエッジ関係を持つエンティティをクエリすることのうちの少なくとも一つを含む請求項１に記載の方法。
【請求項６】
前記セカンダリインデックスを生成するステップは、
前記データテーブルの開始プライマリキーを決定することと、
前記開始プライマリキーを前記セカンダリインデックスのプレフィックスとすることにより前記セカンダリインデックスを生成することとを含む請求項１に記載の方法。
【請求項７】
前記セカンダリインデックスと前記プライマリインデックスを前記インデックス行に書き込むステップは、
前記セカンダリインデックスを前記インデックス行のキーとして前記インデックス行に書き込むことと、
前記プライマリインデックスを前記インデックス行の値として前記インデックス行に書き込むこととを含む請求項１に記載の方法。
【請求項８】
前記データ行に記憶されている前記データを更新する旨のリクエストの受信に対応して前記データを更新するステップと、
更新されたデータと前記クエリルールに基づいて、前記プライマリインデックスにインデックスを付けるための新しいセカンダリインデックスを生成するステップと、
前記新しいセカンダリインデックスと前記プライマリインデックスを前記データテーブルの別のインデックス行に書き込むステップと
をさらに含む請求項１に記載の方法。
【請求項９】
前記データテーブルを第１の記憶媒体によって実現された記憶装置に記憶するステップと、
前記インデックス行を第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュするステップと、
前記データ行を第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュするステップと
をさらに含む請求項１に記載の方法。
【請求項１０】
前記第２の記憶媒体のアクセス速度が前記第３の記憶媒体のアクセス速度を超え、前記第３の記憶媒体の前記アクセス速度が前記第１の記憶媒体のアクセス速度を超える請求項９に記載の方法。
【請求項１１】
データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、前記データテーブルの一つ又は複数のインデックス行から、前記クエリリクエストとマッチングするインデックス行を確定するステップであって、前記インデックス行には、前記データにインデックスを付けるためのプライマリインデックスと、該プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているステップと、
前記インデックス行における前記プライマリインデックスに基づいて、前記データテーブルの一つ又は複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定するステップであって、前記データ行には、前記プライマリインデックスと前記データが記憶されているステップと、
前記インデックス行と前記データ行がマッチングするかどうかを判定するステップと、
前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、前記クエリリクエストへの応答として前記データ行から前記データを取得するステップと
を含む、データのクエリ方法。
【請求項１２】
前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
前記クエリリクエストは、
特定の属性値を持つエンティティ、
特定の対象と特定の関係を持つエンティティ、
特定のエンティティと特定の対象の間のアウトエッジ関係、
特定のエンティティと特定の対象の間のインエッジ関係、
特定のエンティティに関連するデータ、
特定のアウトエッジ関係を持つエンティティ、および
特定のインエッジ関係を持つエンティティのうちの少なくとも一つをクエリするために使用される請求項１１に記載の方法。
【請求項１３】
前記インデックス行と前記データ行がマッチングしていないと判定されたことに対応して、前記データテーブルから前記インデックス行を削除するステップをさらに含む請求項１１に記載の方法。
【請求項１４】
前記一つ又は複数のインデックス行から前記インデックス行を確定するステップは、
少なくとも前記クエリリクエストにおけるキーワードに基づいて前記セカンダリインデックスの少なくとも一部を確定することと、
前記一つ又は複数のインデックス行から前記セカンダリインデックスの前記少なくとも一部とマッチングするインデックス行を確定することとを含む請求項１１に記載の方法。
【請求項１５】
前記インデックス行と前記データ行がマッチングするかどうかを判定するステップは、
前記インデックス行が前記データテーブルに書き込まれた第１の時間を識別するための前記インデックス行の第１のタグを取得することと、
前記データ行が更新された第２の時間を識別するための前記インデックス行の第２のタグを取得することと、
前記第１のタグと前記第２のタグがマッチングするかどうかを判定することと、
前記第１のタグと前記第２のタグがマッチングしていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしないと判定することとを含む請求項１１に記載の方法。
【請求項１６】
前記インデックス行と前記データ行がマッチングするかどうかを判定するステップは、
前記第１のタグと前記第２のタグがマッチングしていると判定されたことに対応して、前記データ行における前記データに基づいてセカンダリインデックスのセットを生成することと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれているかどうかを判定することと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていると判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていると判定することと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていないと判定することとをさらに含む請求項１５に記載の方法。
【請求項１７】
前記データテーブルは、第１の記憶媒体によって実現された記憶装置に記憶され、前記一つ又は複数のインデックス行における少なくとも一部は、第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュされ、
前記一つ又は複数のインデックス行から前記インデックス行を確定するステップは、
前記インデックス行が前記レベル１キャッシュにキャッシュされているかどうかを判定することと、
前記インデックス行が前記レベル１キャッシュにキャッシュされていると判定されたことに対応して、前記レベル１キャッシュから前記インデックス行を確定することと、
前記インデックス行が前記レベル１キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記インデックス行を確定することとを含む請求項１１に記載の方法。
【請求項１８】
前記記憶装置から前記インデックス行が確定されたことに対応して、前記インデックス行を前記レベル１キャッシュにキャッシュするステップをさらに含む請求項１７に記載の方法。
【請求項１９】
前記一つ又は複数のデータ行における少なくとも一部が、第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュされ、
前記一つ又は複数のデータ行から前記データ行を確定するステップは、
前記データ行が前記レベル２キャッシュにキャッシュされているかどうかを判定することと、
前記データ行が前記レベル２キャッシュにキャッシュされていると判定されたことに対応して、前記レベル２キャッシュから前記データ行を確定することと、
前記データ行が前記レベル２キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記データ行を確定することとを含む請求項１７に記載の方法。
【請求項２０】
前記記憶装置から前記データ行が確定されたことに対応して、前記データ行を前記レベル２キャッシュにキャッシュするステップをさらに含む請求項１９に記載の方法。
【請求項２１】
前記第２の記憶媒体のアクセス速度が前記第３の記憶媒体のアクセス速度を超え、前記第３の記憶媒体のアクセス速度が前記第１の記憶媒体のアクセス速度を超える請求項１９に記載の方法。 
【請求項２２】
記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するように構成されたプライマリインデックス生成モジュールと、
前記プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むように構成されたデータ行書き込みモジュールと、
前記データテーブルのクエリルールと前記データに基づいて、前記プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するように構成されたセカンダリインデックス生成モジュールと、
前記セカンダリインデックスと前記プライマリインデックスを前記データテーブルにおけるインデックス行に書き込むように構成されたインデックス行書き込みモジュールと
を含むデータ記憶装置。
【請求項２３】
前記データは、知識ベースにおけるエンティティに関連する情報を記録し、
前記プライマリインデックス生成モジュールは、
前記データから前記エンティティの識別子を取得するように構成された識別子取得ユニットと、
前記エンティティの前記識別子に基づいて前記プライマリインデックスを生成するように構成されたプライマリインデックス生成ユニットとを含む請求項２２に記載の装置。
【請求項２４】
前記データ行書き込みモジュールは、
前記プライマリインデックスを前記データ行のキーとして前記データ行に書き込むように構成された第１のデータ行書き込みユニットと、
前記データを前記データ行の値として前記データ行に書き込むように構成された第２のデータ行書き込みユニットとを含む請求項２２に記載の装置。
【請求項２５】
前記セカンダリインデックス生成モジュールは、
前記データテーブルの前記クエリルールを示すための前記データテーブルのインデックス構成情報を取得するように構成された構成情報取得ユニットと、
前記インデックス構成情報と前記データに基づいて前記セカンダリインデックスを生成するように構成された第１の生成ユニットとを含む請求項２２に記載の装置。
【請求項２６】
前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
前記クエリルールは、
特定の属性値を持つエンティティをクエリすることと、
特定の対象と特定の関係を持つエンティティをクエリすることと、
特定のエンティティと特定の対象の間のアウトエッジ関係をクエリすることと、
特定のエンティティと特定の対象の間のインエッジ関係をクエリすることと、
特定のエンティティに関連するデータをクエリすることと、
特定のアウトエッジ関係を持つエンティティをクエリすることと、
特定のインエッジ関係を持つエンティティをクエリすることのうちの少なくとも一つを含む請求項２２に記載の装置。
【請求項２７】
前記セカンダリインデックス生成モジュールは、
前記データテーブルの開始プライマリキーを決定するように構成された開始プライマリキー決定ユニットと、
前記開始プライマリキーを前記セカンダリインデックスのプレフィックスとすることにより前記セカンダリインデックスを生成するように構成された第２の生成ユニットとを含む請求項２２に記載の装置。
【請求項２８】
前記インデックス行書き込みモジュールは、
前記セカンダリインデックスを前記インデックス行のキーとして前記インデックス行に書き込むように構成された第１のインデックス行書き込みユニットと、
前記プライマリインデックスを前記インデックス行の値として前記インデックス行に書き込むように構成された第２のインデックス行書き込みユニットとを含む請求項２２に記載の装置。
【請求項２９】
前記データ行に記憶された前記データを更新する旨のリクエストの受信に対応して前記データを更新するように構成されたデータ更新モジュールと、
更新されたデータと前記クエリルールに基づいて、前記プライマリインデックスにインデックスを付けるための新しいセカンダリインデックスを生成するように構成された新しいセカンダリインデックス生成モジュールと、
前記新しいセカンダリインデックスと前記プライマリインデックスを前記データテーブルにおける別のインデックス行に書き込むように構成された新しいインデックス行書き込みモジュールと
をさらに含む請求項２２に記載の装置。
【請求項３０】
前記データテーブルを第１の記憶媒体によって実現された記憶装置に記憶するように構成された記憶モジュールと、
前記インデックス行を第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュするように構成された第１のインデックス行キャッシュモジュールと、
前記データ行を第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュするように構成された第１のデータ行キャッシングモジュールと
をさらに含む請求項２２に記載の装置。
【請求項３１】
前記第２の記憶媒体のアクセス速度が前記第３の記憶媒体のアクセス速度を超え、前記第３の記憶媒体の前記アクセス速度が前記第１の記憶媒体のアクセス速度を超える請求項３０に記載の装置。
【請求項３２】
データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、前記データテーブルの一つ又は複数のインデックス行から、前記クエリリクエストとマッチングするインデックス行を確定するように構成されたインデックス行確定モジュールであって、前記インデックス行には、前記データにインデックスを付けるためのプライマリインデックスと、該プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているインデックス行確定モジュールと、
前記インデックス行における前記プライマリインデックスに基づいて、前記データテーブルの一つ又は複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定するように構成されたデータ行確定モジュールであって、前記データ行には、前記プライマリインデックスと前記データが記憶されているデータ行確定モジュールと、
前記インデックス行と前記データ行がマッチングするかどうかを判定するように構成されたマッチングモジュールと、
前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、前記クエリリクエストへの応答として前記データ行から前記データを取得するように構成されたデータ取得モジュールと
を含むデータクエリ装置。
【請求項３３】
前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
前記クエリリクエストは、
特定の属性値を持つエンティティ、
特定の対象と特定の関係を持つエンティティ、
特定のエンティティと特定の対象の間のアウトエッジ関係、
特定のエンティティと特定の対象の間のインエッジ関係、
特定のエンティティに関連するデータ、
特定のアウトエッジ関係を持つエンティティ、および
特定のインエッジ関係を持つエンティティのうちの少なくとも一つをクエリするために使用される請求項３２に記載の装置。
【請求項３４】
前記インデックス行と前記データ行がマッチングしていないと判定されたことに対応して、前記データテーブルから前記インデックス行を削除するように構成されたインデックス行削除モジュールをさらに含む請求項３２に記載の装置。
【請求項３５】
前記インデックス行確定モジュールは、
少なくとも前記クエリリクエストにおけるキーワードに基づいて前記セカンダリインデックスの少なくとも一部を確定するように構成されたセカンダリインデックス確定ユニットと、
前記一つ又は複数のインデックス行から前記セカンダリインデックスの前記少なくとも一部とマッチングするインデックス行を確定するように構成されたインデックス行確定ユニットとを含む請求項３２に記載の装置。
【請求項３６】
前記マッチングモジュールは、
前記インデックス行が前記データテーブルに書き込まれた第１の時間を識別するための前記インデックス行の第１のタグを取得するように構成された第１のタグ取得ユニットと、
前記データ行が更新された第２の時間を識別するための前記データ行の第２のタグを取得するように構成された第２のタグ取得ユニットと、
前記第１のタグと前記第２のタグがマッチングするかどうかを判定するように構成されたタグマッチングユニットと、
前記第１のタグと前記第２のタグがマッチングしていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしないと判定するように構成された第１のマッチング判定ユニットとを含む請求項３２に記載の装置。
【請求項３７】
前記マッチングモジュールは、
前記第１のタグと前記第２のタグがマッチングしていると判定されたことに対応して、前記データ行における前記データに基づいてセカンダリインデックスのセットを生成するように構成されたセカンダリインデックス生成ユニットと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれているかどうかを判定するように構成されたセカンダリインデックスマッチングユニットと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていると判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていると判定するように構成された第２のマッチング判定ユニットと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていないと判定するように構成された第３のマッチング判定ユニットとをさらに含む請求項３６に記載の装置。
【請求項３８】
前記データテーブルは、第１の記憶媒体によって実現された記憶装置に記憶され、前記一つ又は複数のインデックス行における少なくとも一部は、第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュされ、
前記インデックス行確定モジュールは、
前記インデックス行が前記レベル１キャッシュにキャッシュされているかどうかを判定するように構成されたレベル１キャッシュ検索ユニットと、
前記インデックス行が前記レベル１キャッシュにキャッシュされていると判定されたことに対応して、前記レベル１キャッシュから前記インデックス行を確定するように構成された第１のインデックス行確定ユニットと、
前記インデックス行が前記レベル１キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記インデックス行を確定するように構成された第２のインデックス行確定ユニットとを含む請求項３２に記載の装置。
【請求項３９】
前記記憶装置から前記インデックス行が確定されたことに対応して、前記インデックス行を前記レベル１キャッシュにキャッシュするように構成された第２のインデックス行キャッシュモジュールをさらに含む請求項３８に記載の装置。
【請求項４０】
前記一つ又は複数のデータ行における少なくとも一部は、第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュされ、
前記データ行確定モジュールは、
前記データ行が前記レベル２キャッシュにキャッシュされているかどうかを判定するように構成されたレベル２キャッシュ検索ユニットと、
前記データ行が前記レベル２キャッシュにキャッシュされていると判定されたことに対応して、前記レベル２キャッシュから前記データ行を確定するように構成された第１のデータ行確定ユニットと、
前記データ行が前記レベル２キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記データ行を確定するように構成された第２のデータ行確定ユニットとを含む請求項３８に記載の装置。
【請求項４１】
前記記憶装置から前記データ行が確定されたことに対応して、前記データ行を前記レベル２キャッシュにキャッシュするように構成された第２のデータ行キャッシングモジュールをさらに含む請求項４０に記載の装置。
【請求項４２】
前記第２の記憶媒体のアクセス速度が前記第３の記憶媒体のアクセス速度を超え、前記第３の記憶媒体の前記アクセス速度が前記第１の記憶媒体のアクセス速度を超える請求項４０に記載の装置。
【請求項４３】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに請求項１〜１０のいずれか一項に記載の方法を実施させる記憶装置と
を含むデータ記憶設備。
【請求項４４】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに請求項１１〜２１のいずれか一項に記載の方法を実施させる記憶装置と
を含むデータクエリ設備。
【請求項４５】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
前記プログラムがプロセッサによって実行されると、請求項１〜１０のいずれか一項に記載の方法が実施されるコンピュータ可読記憶媒体。
【請求項４６】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
前記プログラムがプロセッサによって実行されると、請求項１１〜２１のいずれか一項に記載の方法が実施されるコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、コンピュータの分野に関し、より詳しくは、データを記憶およびクエリするための方法、装置、設備、およびコンピュータ可読記憶媒体に関する。
【背景技術】
【０００２】
知識ベース（Ｋｎｏｗｌｅｄｇｅ  Ｂａｓｅ）としても知られる知識マップは、現実世界に存在するさまざまなエンティティ、それらの間の関係、およびそれぞれの属性を記述するために使用される。現在、知識マップは、検索、人工知能、深層学習などの分野で幅広く使用されている。
【０００３】
知識マップにおけるデータ数の劇的な増加とデータに対する応用に伴って、知識マップにおけるエンティティデータは頻繁に更新される可能性がある。さらに、知識マップ生成のさまざまな段階で、知識マップにおけるエンティティデータを段階的に変更することが必要になることがよくある。したがって、エンティティデータが頻繁に更新されるシナリオで、データ書き込みおよびデータクエリのパフォーマンスが低下しないことを保証するために、知識マップにおけるエンティティデータを記憶およびクエリする技術を提供することが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の例示的な実施形態によれば、データを記憶およびクエリするための技術案が提供される。
【０００５】
本開示の第１の態様において、データを記憶するための方法を提供する。該方法は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するステップと、プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むステップと、データテーブルのクエリルールと前記データに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するステップと、セカンダリインデックスとプライマリインデックスを前記データテーブルにおけるインデックス行に書き込むステップとを含む。
【０００６】
本開示の第２の態様において、データのクエリ方法を提供する。該方法は、データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、前記データテーブルの一つ又は複数のインデックス行から、前記クエリリクエストとマッチングするインデックス行を確定するステップであって、前記インデックス行には、データにインデックスを付けるためのプライマリインデックスと、プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているステップと、前記インデックス行におけるプライマリインデックスに基づいて、データテーブルの一つ又は複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定するステップであって、前記データ行には、プライマリインデックスとデータが記憶されているステップと、前記インデックス行と前記データ行がマッチングするかどうかを判定するステップと、前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、前記クエリリクエストへの応答として前記データ行からデータを取得するステップとを含む。
【０００７】
本開示の第３の態様において、データ記憶装置を提供する。該装置は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するように構成されたプライマリインデックス生成モジュールと、プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むように構成されたデータ行書き込みモジュールと、データテーブルのクエリルールと前記データに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するように構成されたセカンダリインデックス生成モジュールと、セカンダリインデックスとプライマリインデックスをデータテーブルにおけるインデックス行に書き込むように構成されたインデックス行書き込みモジュールとを含む。
【０００８】
本開示の第４の態様において、データクエリ装置を提供する。該装置は、データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、データテーブルの一つ又は複数のインデックス行から前記クエリリクエストとマッチングするインデックス行を確定するように構成されたインデックス行確定モジュールであって、前記インデックス行には、データにインデックスを付けるためのプライマリインデックスと、プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているインデックス行確定モジュールと、インデックス行におけるプライマリインデックスに基づいて、データテーブルの一つ又は複数のデータ行から、該インデックス行に関連付けられたデータ行を確定するように構成されたデータ行確定モジュールであって、前記データ行には、プライマリインデックスとデータが記憶されているデータ行確定モジュールと、前記インデックス行と前記データ行がマッチングするかどうかを判定するように構成されたマッチングモジュールと、前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、クエリリクエストへの応答として前記データ行からデータを取得するように構成されたデータ取得モジュールとを含む。
【０００９】
本開示の第５の態様において、データ記憶設備を提供する。該設備は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに本開示の第１の態様に記載の方法を実施させる記憶装置とを含む。
【００１０】
本開示の第６の態様において、データクエリ設備を提供する。該設備は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに本開示の第２の態様に記載の方法を実施させる記憶装置とを含む。
【００１１】
本開示の第７の態様において、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、前記プログラムがプロセッサによって実行されると、本開示の第１の態様に記載の方法が実施されるコンピュータ可読記憶媒体を提供する。
【００１２】
本開示の第８の態様において、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、前記プログラムがプロセッサによって実行されると、本開示の第２の態様に記載の方法が実施されるコンピュータ可読記憶媒体を提供する。
【００１３】
発明の概要に記載されている内容は、本開示の実施形態の主要なまたは重要な特徴を限定することを意図するものではなく、本開示の範囲を限定することを意図するものでもない。本開示のその他の特徴は、以下の説明により容易に理解されるであろう。
【００１４】
本開示の実施形態の上記およびその他の特徴、利点、および態様は、添付の特許請求の範囲の態様からより明らかになるであろう。図において、同じまたは類似の要素に対して、同じまたは類似の符号を付与する。
【図面の簡単な説明】
【００１５】
【図１】図１は、本開示の実施形態による例示的なシステムのブロック図を示す。
【図２】図２は、本開示の実施形態による、データを記憶およびクエリするための例示的なサーバーのブロック図を示す。
【図３】図３は、本開示の実施形態による、データを記憶するための方法のフローチャートを示す。
【図４】図４Ａおよび４Ｂは、本開示の実施形態による例示的なデータテーブルの概略図を示す。
【図５】図５は、本開示の実施形態による、データをクエリするための方法のフローチャートを示す。
【図６】図６は、本開示の実施形態による、データを記憶するための装置のブロック図を示す。
【図７】図７は、本開示の実施形態による、データをクエリするための装置のブロック図を示す。
【図８】図８は、本開示の実施形態が実施され得るコンピューティングデバイスのブロック図を示す。
【発明を実施するための形態】
【００１６】
本開示の実施形態は、図面を参照して以下でより詳細に説明される。本開示の特定の実施形態が図面に示されているが、本発明はさまざまな形態で具現化することができ、本明細書に記載された実施形態に限定されると解釈されるべきではない。本開示の特定の実施形態は、本開示がより正確かつ完全に理解されるために提供されたものである。本開示の図面および実施形態は、単に例示として見なされるべきであり、本開示の範囲を限定するものではない。
【００１７】
本開示の実施形態の説明において、「含む」という用語およびこれに類似する用語は、非限定（ｏｐｅｎ−ｅｎｄｅｄ）、すなわち「含むがこれに限定されない」を意味すると理解されるべきである。用語「に基づいて」という用語は、「少なくとも部分的に基づいて」を意味すると理解されるべきである。「一実施形態」または「該実施形態」という用語は、「少なくとも一つの実施形態」を意味すると理解されるべきである。「第１の」、「第２の」などの用語は、異なる対象または同一の対象を指す場合がある。以下では、他の明示的および暗黙的な定義も含まれる場合がある。
【００１８】
前述のように、知識マップにおけるデータ数の劇的な増加とデータに対する応用に伴って、知識マップにおけるデータは頻繁に更新される可能性がある。さらに、知識マップ生成のさまざまなステップで、知識マップにおけるデータを段階的に変更することが必要になることがよくある。これらの更新と変更は、多くの場合、知識マップにおけるデータをクエリするストレージシステムの機能に依存している。
【００１９】
知識マップにおけるデータは、通常、主語・述語・目的語（ＳＰＯ）の形式のトリプレットで表される。エンティティ「ポトス（Ｅｐｉｐｒｅｍｎｕｍ  ａｕｒｅｕｍ）」を例にとると、それに関連するデータ（「エンティティデータ」とも呼ばれる）には、例えば「ポトスの生物学的分類は単子葉植物である」（「ポトス」は主語、「生物学的分類」は述語、「単子葉植物」は目的語）、「ポトスの所属科目はサトイモ科（Ａｒａｃｅａｅ）である」（「ポトス」は主語、「生物学的分類」は述語、「単子葉植物」は目的語）などがある。
【００２０】
ＳＰＯデータ「ポトスの生物学的分類は単子葉植物である」を例にとると、エンティティ「ポトス」とエンティティ「単子葉植物」が２つのノードと見なされ、関係「生物学的分類」がこれらの２つのノードを連結するためのエッジと見なされる場合に、このエッジはエンティティ「ポトス」を表すノードの「アウトエッジ（ｏｕｔ  ｅｄｇｅ）」または「ポジティブエッジ（ｐｏｓｉｔｉｖｅ  ｅｄｇｅ）」と言えるとともに、エンティティ「単子葉植物」を表すノードの「インエッジ（ｉｎ  ｅｄｇｅ）」または「リバースエッジ（ｉｎｖｅｒｓｅ  ｅｄｇｅ）」と言える。エンティティ「単子葉植物」は、エンティティ「ポトス」の「アウトエッジエンティティ」または「ポジティブエッジエンティティ」とも呼ばれる。エンティティ「ポトス」は、エンティティ「単子葉植物」の「インエッジエンティティ」または「リバースエッジエンティティ」とも呼ばれる。エンティティ「ポトス」からエンティティ「単子葉植物」に向かっての関係は、「アウトエッジ関係」または「ポジティブエッジ関係」とも呼ばれる。エンティティ「単子葉植物」からエンティティ「ポトス」に向かっての関係は、「インエッジ関係」または「リバースエッジ関係」とも呼ばれる。さらに、説明の便宜上、ＳＰＯトリプレットにおける目的語としてのエンティティは、本明細書では、「対象」または「対象エンティティ」と呼ばれる。
【００２１】
知識マップにおけるエンティティデータは、さまざまな形式で表すことができる。 例えば、ＪＡＳＯＮ形式のエンティティデータの例は次のとおりである。
【００２２】
【数１】
2020140699.tif 000003
【００２３】
上記ＪＡＳＯＮ形式のエンティティデータでは、主語の名前（ｎａｍｅ）は「ポトス」であり、対応するエンティティ識別子（ｉｄ）は「０１ｒｚｑｈ７ｊ」である。述語は「生物学的分類（ｂｉｏｌｏｇｙＣｌａｓｓ）」であり、目的語の値（ｖａｌｕｅ）は「単子葉植物」であり、対応するエンティティ識別子は「０１７０２１７９」である。別の述語は「所属科目（ｂｉｏｌｏｇｙＦａｍｉｌｙ）」であり、目的語の値は「サトイモ科」であり、対応するエンティティ識別子は「０１ｍｍｚ９ｌｒ」である。
【００２４】
知識マップの生成および使用において、上記のエンティティデータを記憶し、記憶されたエンティティデータに対してさまざまなクエリ操作を実行できることが望ましい。例えば、ポトスに関連するすべての情報をクエリすることは、特定の主語（Ｓ）のすべてのＳＰＯデータをクエリすることである。別の例では、ポトスの生物学的分類情報をクエリすることは、主語と述語の組み合わせ（ＳＰ）を特定し、該組み合わせに関連するＳＰＯデータをクエリすることである。別の例では、「単子葉植物」を目的語とするすべてのエンティティ（インエッジエンティティ）をクエリすることは、目的語（Ｏ）を特定し、この目的語に関連付けられた主語（Ｓ）をクエリすることである。別の例では、生物学的分類が単子葉植物であるすべてのエンティティをクエリすることは、目的語（Ｏ）と述語（Ｐ）の組み合わせを特定し、該組み合わせに関連付けられた主語（Ｓ）をクエリすることである。
【００２５】
一部の従来の解決手段では、ｍｏｎｏｇｏＤＢなどのデータベースを使用してエンティティデータの記憶およびクエリを行う。ｍｏｎｏｇｏＤＢベースのストレージシステムは、通常、単一のデータテーブルに複数のインデックスを構築し、複数のインデックスのクエリによって、リバースエッジエンティティに対するクエリを実施する。ただし、複数のインデックスはデータテーブルの書き込みパフォーマンスに深刻な影響を与える傾向があるため、エンティティデータが頻繁に更新されるアプリケーションシナリオに適応できない。別の従来の解決手段では、ＧｒａｐｈＩｎｄｅｘなどのグラフ検索システムを使用してエンティティデータの記憶およびクエリを行う。このような解決手段は静的エンティティデータセットに対するグラフクエリ技術を実現できるが、任意のエンティティノードが更新されると、それに対応して、該エンティティノードと連結するエッジもそれに伴って更新する必要があることが多く、更新のオーバーヘッドが大きくなるため、エンティティデータが頻繁に更新されるアプリケーションシナリオに適応できない。
【００２６】
本開示の一実施形態によれば、データを記憶およびクエリするための解決手段が提案される。この解決手段により、知識マップにおけるエンティティデータに対する低コストでスケーラブルな記憶およびクエリ技術が可能となり、上記の課題および／または他の潜在的な課題に対処することができる。この解決手段は、エンティティデータと、エンティティデータにインデックスを付けるためのプライマリインデックスとをデータテーブルにおけるデータ行に記憶し、データテーブルのクエリルールに基づいてプライマリインデックスにインデックスを付けるためのセカンダリインデックスを構築する。セカンダリインデックスとプライマリインデックスは、同じデータテーブルにおけるインデックス行に記憶される。エンティティデータが更新されると、新しいセカンダリインデックスが生成され、プライマリインデックスとともに該データテーブルの新しいインデックス行に書き込まれる。古いインデックス行の削除は、実際のデータクエリが実行される前に遅延される。このようにして、本開示の実施形態では、知識マップにおけるエンティティデータが頻繁に更新される場合に、データ書き込みおよびデータクエリのパフォーマンスが低下しないことが保証される。
【００２７】
以下、図面を参照して本開示の実施形態について具体的に説明する。
【００２８】
図１は、本開示の実施形態による例示的なシステム１００のブロック図を示す。図１に示されるように、例示的なシステム１００は一般に、クライアント１２０と複数のサーバー１３０−１、１３０−２、…、１３０−Ｎ（集合的または個別に「サーバー１３０」と呼ばれる。Ｎは自然数である）を含むことができる。複数のサーバー１３０は、それぞれ複数のデータテーブル１４０−１、１４０−２、…、１４０−Ｎ（集合的または個別に「データテーブル１４０」と呼ばれる。Ｎは自然数である）に関連付けられている。図１においては、単に例示する目的でシステム１００の構造および機能を記載しており、本開示の範囲に対するあらゆる限定を暗示していないことを理解されたい。本開示の実施形態はまた、異なる構造および／または機能を有する環境にも適用できる。
【００２９】
エンティティデータの記憶を実行するとき、ユーザー１１０は、記憶対象のデータ（例えば、上述のＪＡＳＯＮ形式のエンティティデータ）をクライアント１２０に入力することができる。クライアント１２０は、記憶対象のデータをサーバー１３０−１などの一つまたは複数のサーバー１３０に転送することができる。サーバー１３０−１は、受信したエンティティデータをデータテーブル１４０−１に記憶することができる。
【００３０】
図１は、各サーバー１３０が単一のデータテーブル１４０に関連付けられていることを示しているが、これはあくまでも例示または説明目的のものであって、本開示の範囲を限定することを意図するものではないことを理解されたい。いくつかの実施形態では、各サーバー１３０は、複数のデータテーブルに関連付けられてもよい。別の実施形態では、単一のデータテーブルを複数のデータフラグメントに分割することができ、各サーバー１３０は、複数のデータフラグメントの少なくとも一部のみに関連付けられてもよい。すなわち、単一のデータテーブルを複数のサーバー１３０にわたって記憶することができる。
【００３１】
エンティティデータのクエリを実行する場合、ユーザー１１０はクエリリクエストをクライアント１２０に入力することができる。クエリリクエストは、特定の属性値を持つエンティティのクエリ、特定の対象と特定の関係を持つエンティティのクエリ、特定のエンティティと特定の対象の間のアウトエッジ関係のクエリ、特定のエンティティと特定の対象の間のインエッジ関係のクエリ、特定のエンティティに関連するデータのクエリ、特定のアウトエッジ関係を持つエンティティのクエリ、特定のインエッジ関係を持つエンティティのクエリなどを含むが、これらに限定されない。クライアント１２０は、該クエリリクエストを複数のサーバー１３０に転送することができる。各サーバー１３０は、記憶したデータテーブル１４０からエンティティデータをクエリして、クエリ結果を取得することができる。各サーバー１３０は、そのクエリ結果をクライアント１２０にフィードバックすることができる。クライアント１２０は、各サーバー１３０からのクエリ結果をマージし、マージされたクエリ結果をユーザー１１０にフィードバックすることができる。
【００３２】
図２は、本開示の実施形態による例示的なサーバー１３０のブロック図を示している。図２に示されるように、例示的なサーバー１３０は、一般に、データ記憶装置２１０、データクエリ装置２２０、キャッシュ装置２３０、および記憶装置２４０を含んでいてもよい。図２は、サーバー１３０の構造および機能を示しているが、これはあくまでも例示または説明目的のものであって、本開示の範囲を限定することを意図するものではないことを理解されたい。本開示の実施形態はまた、異なる構造および／または機能を有するサーバーにも適用できる。
【００３３】
図２に示されるように、データ記憶装置２１０は、クライアント１２０から記憶対象のデータを受信し、サーバー１３０のデータテーブル１４０に記憶対象のデータを記憶することができる。データテーブル１４０が記憶装置２４０に記憶されてもよい。データテーブル１４０のクエリパフォーマンスを改善するために、データテーブル１４０におけるデータの少なくとも一部をキャッシュ装置２３０にキャッシュすることができる。以下、図３を参照して、データ記憶装置２１０の動作をさらに詳しく説明する。
【００３４】
図２に示されるように、データクエリ装置２２０は、クライアント１２０からクエリリクエストを受信し、該クエリリクエストに従ってサーバー１３０に記憶されたデータテーブル１４０に対してクエリ動作を実行することができる。以下、図５を参照して、データクエリ装置２２０の動作をさらに詳しく説明する。
【００３５】
図３は、本開示の実施形態による、データを記憶するための方法３００のフローチャートを示している。例えば、方法３００は、図２に示されるデータ記憶装置２１０によって実行されてもよい。以下、図２を参照して、方法３００を詳しく説明する。方法３００は、図示されていない追加のブロックを含んでもよく、および／または図示されたブロックを省略してもよいことを理解されたい。本開示の範囲は、この点で限定されない。
【００３６】
ブロック３１０において、データ記憶装置２１０は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成する。
【００３７】
いくつかの実施形態では、記憶対象のデータは、知識ベースにおけるエンティティに関連する情報を記録することができる。以下、上記のエンティティ「ポトス」に関するＪＡＳＯＮ形式のデータを記憶対象のデータの例とする。いくつかの実施形態では、例えば、データ記憶装置２１０は、該データからエンティティ「ポトス」の識別子（すなわち、「０１ｒｚｑｈ７ｊ」）を抽出し、該識別子を該データにインデックスを付けるためのプライマリインデックスとすることができる。これは、あくまでもプライマリインデックスを生成する方法の一例にすぎないことを理解されたい。別の実施形態では、データ記憶装置２１０は、エンティティの識別子および／または他の情報に基づいて、データにインデックスを付けるためのプライマリインデックスを生成することもできる。
【００３８】
ブロック３２０において、データ記憶装置２１０は、生成されたプライマリインデックスおよび記憶対象のデータをデータテーブル１４０におけるデータ行に書き込む。
【００３９】
いくつかの実施形態では、データテーブル１４０は、例えば、分散ストレージシステムＨＢａｓｅにおけるデータテーブル（またはＨＢａｓｅデータテーブルにおける一つのデータフラグメント）である。ＨＢａｓｅは、行単位でデータを記憶する高信頼性、高性能、列指向のスケーラブルな分散ストレージシステムである。いくつかの実施形態では、データテーブル１４０における行は、データ行とインデックス行に分けられてもよい。本明細書で使用される「データ行」は、ターゲットデータが記憶される行を指し、「インデックス行」は、インデックス情報のみが記憶される行を指す。図４Ａは、本開示の実施形態による例示的なデータテーブル１４０の概略図を示している。図４Ａに示されるように、データテーブル１４０（ＨＢａｓｅデータテーブルまたはＨＢａｓｅデータテーブルにおけるデータフラグメント）は、インデックスエリア４４０およびデータエリア４５０を含むことができる。データエリア４５０は、複数のデータ行４５１、４５２などを含むことができる。インデックスエリア４４０は、複数のインデックス行４４１、４４２などを含むことができる。
【００４０】
いくつかの実施形態では、データ記憶装置２１０は、生成されたプライマリインデックスをデータ行の行キー（ｒｏｗｋｅｙ）とするとともに、記憶対象のデータをデータ行の値とすることにより、両者をデータ行に書き込むことができる。例えば、図４Ａのデータ行４５１を例にとると、プライマリインデックス４２０−１は該データ行４５１の行キーとされ、対応するデータ４３０−１は該データ行４５１の値とされる。図４Ａのデータ行４５２を例にとると、プライマリインデックス４２０−２は該データ行４５２の行キーとされ、対応するデータ４３０−２は該データ行４５２の値とされる。
【００４１】
ブロック３３０において、データ記憶装置２１０は、データテーブル１４０のクエリルールと記憶対象のデータに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成する。
【００４２】
いくつかの実施形態では、データストレージ２１０は、データテーブル１４０のインデックス構成情報を取得することができる。例えば、データテーブル１４０のインデックス構成情報は、データテーブル１４０に関連付けられたリレーショナルデータベース（例えば、ＭｙＳＱＬ）に事前に記憶されていてもよい。いくつかの実施形態では、該インデックス構成情報は、例えば、関連付けられたデータテーブル１４０の識別子（例えば、テーブル名）、データテーブル１４０によってサポートされるクエリルール、データテーブル１４０におけるダーティインデックス行（すなわち、関連付けられているデータ行とマッチングしないインデックス行）の処理ルールなどの情報を示すことができる。いくつかの実施形態では、データ記憶装置２１０は、インデックス構成情報に示されたデータテーブル１４０のクエリルールと記憶対象のデータ自体に基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成することができる。
【００４３】
いくつかの実施形態では、データテーブル１４０のクエリルールは、例えば、データテーブル１４０によってサポートされるクエリパターンを示すことができる。データテーブル１４０に記憶されているターゲットデータは、知識ベースにおけるエンティティデータである。上記のエンティティ「ポトス」に関するＪＡＳＯＮ形式のエンティティデータを例にとると、それはエンティティ「ポトス」の一つまたは複数の属性値、および/またはエンティティ「ポトス」と一つまたは複数の対象エンティティ（例えば、対象エンティティ「単子葉植物」、「サトイモ科」）の間の対応関係を示している。いくつかの実施形態では、データテーブル１４０によってサポートされるクエリパターンは、例えば、クエリテーブルデータ１４０における特定の属性値を有するエンティティ（例えば、クエリパターンが「植物」であるエンティティ）のクエリ、特定の対象と特定の関係を持つエンティティ（例えば、「生物学的分類」が「単子葉植物」であるエンティティ）のクエリ、特定のエンティティと特定の対象の間のアウトエッジ関係（例えば、「ポトス」と「単子葉植物」の間のアウトエッジ関係、すなわち、「ポトス」の「単子葉植物」に対する関係）のクエリ、特定のエンティティと特定の対象の間のインエッジ関係（例えば、「ポトス」と「単子葉植物」の間のインエッジ関係、すなわち、「単子葉植物」の「ポトス」に対する関係）のクエリ、特定のエンティティに関連するデータ（例えば、「ポトス」に関するすべてのＳＰＯデータ）のクエリ、特定のアウトエッジ関係を持つエンティティ（例えば、アウトエッジ関係が「生物学的分類」であるエンティティ）のクエリ、特定のインエッジ関係を持つエンティティ（例えば、インエッジ関係が「生物学的分類」であるエンティティ）のクエリのうちのいずれか一つであってもよい。
【００４４】
いくつかの実施形態では、データ記憶装置２１０は、データテーブル１４０のクエリルールに基づいて、エンティティデータにおける個々のＳＰＯのセマンティクスを解析することにより、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成することができる。加えて、いくつかの実施形態では、データ記憶装置２１０は、データテーブル１４０の開始プライマリキーをセカンダリインデックスのプレフィックスとすることにより、該セカンダリインデックスを生成することができる。
【００４５】
クエリルール「生物学的分類が単子葉植物であるエンティティのクエリ」を例にとると、該クエリルールは、ＳＰＯのトリプレットにおける目的語Оと述語Ｐが特定された前提で、主語Ｓとしてのエンティティをクエリすることを示す。例えば、セカンダリインデックスは三つのセグメントに分割することができる。各セグメントは記号「｜」で区切られる。第１のセグメントは、データテーブル１４０の開始主キーおよび目的語Ｏのｉｄを格納するために使用することができ、両者は記号「'」で区切られる。データテーブル１４０の開始主キーが「０１ａｋｂｇ１ｇ」であると仮定すると、第１のセグメントは、例えば「０１ａｋｂｇ１ｇ'０１７０２ｌ７９」である。第２のセグメントは、クエリルールに関連するＪａｓｏｎＰａｔｈの式であってもよい。この例では、第２のセグメントは、例えば、「＄.ｂｉｏｌｏｇｙＣｌａｓｓ．＠ｉｄ」である。第３のセグメントは、主語Ｓとしてのエンティティのｉｄ、すなわち、クエリ対象のエンティティデータの行キーであってもよい。この例では、第３のセグメントは、例えば、「０１ｒｚｑｈ７ｊ」である。すなわち、クエリルール「生物学的分類が単子葉植物であるエンティティのクエリ」について生成されたセカンダリインデックスは「０１ａｋｂｇ１ｇ'０１７０２l７９|＄.ｂｉｏｌｏｇｙＣｌａｓｓ．＠ｉｄ|０１ｒｚｑｈ７ｊ」である。また、クエリルール「所属科目がサトイモ科であるエンティティのクエリ」を例にとると、生成されたセカンダリインデックスは「０１ａｋｂｇ１ｇ'０１ｍｍｚ９ｌｒ|＄.ｂｉｏｌｏｇｙＦａｍｉｌｙ．＠ｉｄ|０１ｒｚｑｈ７ｊ」である。
【００４６】
ブロック３４０において、データ記憶装置２１０は、セカンダリインデックスとプライマリインデックスをデータテーブル１４０におけるインデックス行に書き込む。
【００４７】
いくつかの実施形態では、データ記憶装置２１０は、生成されたセカンダリインデックスをインデックス行の行キーとし、インデックス行の行キーとしてのプライマリインデックスをインデックス行の値とすることにより、両者をデータ行に書き込むことができる。例えば、図４Ａにおけるインデックス行４４１を例にとると、それがデータ行４５１に関連付けられている。セカンダリインデックス４１０−１は、該インデックス行４４１の行キーとされ、データ行４５１の行キーとしてのプライマリインデックス４２０−１は、該インデックス行４４１の値とされる。図４Ａにおけるインデックス行４４２を例にとると、それがデータ行４５２に関連付けられている。セカンダリインデックス４１０−２は、該インデックス行４４２の行キーとされ、データ行４５２の行キーとしてのプライマリインデックス４２０−２は、該インデックス行４４２の値とされる。
【００４８】
追加または代替として、いくつかの実施形態では、データ記憶装置２１０は、データ行およびインデックス行の書き込みの原子性（ａｔｏｍｉｃｉｔｙ）と、データ行およびインデックス行の一貫性を保証するために、互いに関連付けられたデータ行およびインデックス行の書き込みをバッチトランザクションオペレーションとして実行できる。
【００４９】
追加または代替として、いくつかの実施形態では、データテーブル１４０に複数のデータフラグメントがある場合、クエリ時にインデックスとデータが同じサーバーでアクセスされるように、データ記憶装置２１０は、互いに関連付けられたインデックス行およびデータ行（例えば、インデックス行４４１およびデータ行４５１）が常に同じデータフラグメントに記憶されていることを確保する必要がある。これにより、インデックスとデータのオフサイトアクセスによるオーバーヘッドを回避することができる。これを実現するために、例えば、インデックス行の行キー（すなわち、セカンダリインデックス）を生成する場合、データ記憶装置２１０は、データ行が配置されているデータフラグメントの開始プライマリキーをインデックス行の行キーのプレフィックスとして使用することができる。このようにして、データ記憶装置２１０は、互いに関連付けられたインデックス行およびデータ行が常に同じデータテーブルにおける同じデータフラグメントに記憶されることを確保することできる。さらに、データテーブル１４０のデータフラグメントが分割されるか、または複数のデータフラグメントがマージされる場合、データ記憶装置２１０は、互いに関連付けられたインデックス行とデータ行を同期的に分割またはマージし、互いに関連付けられたインデックス行とデータ行が常に同じデータテーブルの同じデータフラグメントに記憶されることを確保することができる。
【００５０】
いくつかの実施形態では、例えば、データ行およびインデックス行をＨＢａｓｅデータテーブルに書き込む場合、データ記憶装置２１０は、インデックス行の行キーをデータ行の行キーの前に常に辞書式にランク付けさせることができる。これにより、同じデータテーブル（またはデータテーブルの同じデータフラグメント）の前半領域はインデックスエリアとなり、後半領域はデータエリアとなる。さらに、インデックス行の値とデータ行の値をそれぞれＨＢａｓｅデータテーブルの異なる列クラスターに記憶できるため、インデックス行とデータ行を物理的に分離することができる。
【００５１】
このようにして、後続のクエリのために、知識マップのエンティティデータをデータテーブル１４０に書き込むことができる。
【００５２】
いくつかの実施形態では、データ記憶装置２１０は、クライアント１２０からエンティティデータを更新する旨のリクエストを受信することもできる。例えば、図４Ｂに示されるように、データ記憶装置２１０は、図４Ａに示されるデータ行４５１における元のデータ４３０−１をデータ４３０−３に更新する旨のリクエストを受信すると、データ記憶装置２１０はデータ４３０−３をデータ行４５１に書き込むことができる。データ記憶装置２１０は、更新されたデータ４３０−３およびデータテーブル１４０のクエリルールに基づいて、元のプライマリインデックス４２０−１にインデックスを付けるための新しいセカンダリインデックス４２０−３を生成するとともに、新しいセカンダリインデックス４２０−３および元のプライマリインデックス４２０−１を新しいインデックス行４４３に書き込むことができる。図４Ｂに示されるように、古いインデックス行４４１は、すぐにデータテーブル１４０から削除されない。図５を参照して以下でさらに詳細に説明されるように、古いインデックス行４４１の削除は、実際のクエリが実行される前に遅延される。これにより、頻繁に更新される場合に、データテーブル１４０の書き込みパフォーマンスが低下しないことが保証される。追加または代替として、いくつかの実施形態では、更新されたデータ行および新しいインデックス行の一貫性を保証するために、データ行の更新および新しいインデックス行の書き込みをバッチトランザクションオペレーションとして実行できる。
【００５３】
いくつかの実施形態では、データ記憶装置２１０は、データテーブル１４０を図２に示される記憶装置２４０に記憶することができる。記憶装置２４０は、例えば、第１の記憶媒体によって実現されてもよい。データテーブル１４０のクエリパフォーマンスを改善するために、データテーブル１４０におけるインデックスエリア４４０は、例えば、図２に示されるレベル１キャッシュ２３１にキャッシュされてもよい。レベル１キャッシュ２３１は、例えば、第２の記憶媒体によって実現されてもよい。さらに、データテーブル１４０におけるデータエリア４５０は、例えば、図２に示されるレベル２キャッシュ２３２にキャッシュされてもよい。レベル２キャッシュ２３２は、例えば、第３の記憶媒体によって実現されてもよい。
【００５４】
いくつかの実施形態では、レベル１キャッシュ２３１を実現するための第２の記憶媒体のアクセス速度は、レベル２キャッシュ２３２を実現するための第３の記憶媒体のアクセス速度を超え、第３の記憶媒体のアクセス速度は、記憶装置２４０を実現するための第１の記憶媒体のアクセス速度を超える。例えば、第１の記憶媒体の例は磁気ディスクであり、第２の記憶媒体の例はメモリであり、第３の記憶媒体の例はソリッドステートディスクである。上に列記したものは、あくまでも第１の記憶媒体、第２の記憶媒体、および第３の記憶媒体の例に過ぎず、これらの例は、本開示の範囲を限定することを意図するものではない。図２に示されるように、記憶装置２４０およびキャッシュ装置２３０を実現するために、他の記憶媒体も利用できることを理解されたい。
【００５５】
図５は、本開示の実施形態による、データをクエリするための方法５００のフローチャートを示している。例えば、方法５００は、図２に示されるデータクエリ装置２２０によって実行できる。以下、図２を参照して、方法５００を詳細に説明する。方法５００は、図示されていない追加のブロックを含んでもよく、および／または図示されたブロックを省略してもよいことを理解されたい。本開示の範囲はこの点で限定されない。
【００５６】
ブロック５１０において、データクエリ装置２２０は、データテーブル１４０に記憶されたデータについてのクエリリクエストの受信に対応して、データテーブル１４０の一つまたは複数のインデックス行から該クエリリクエストとマッチングするインデックス行を決定する。該インデックス行には、データにインデックスを付けるためのプライマリインデックスと、プライマリインデックスにインデックスを付けるためのセカンダリインデックスが記憶される。
【００５７】
いくつかの実施形態では、データクエリ装置２２０は、少なくともクエリリクエストにおけるキーワードに基づいてセカンダリインデックスの少なくとも一部を決定するとともに、データテーブル１４０の一つ又は複数のインデックス行から、決定されたセカンダリインデックスの少なくとも一部とマッチングするインデックス行を決定することができる。
【００５８】
クエリリクエスト「単子葉植物のリバースエッジエンティティのクエリ」を例にとると、該クエリリクエストは、例えば、ＳＰＯトリプレットにおける目的語ОのＩＤ（すなわち、０１７０２l７９）を特定した。データクエリ装置２２０は、データテーブル１４０（またはデータテーブルの特定のデータフラグメント）の開始プライマリキー（例えば、０１ａｋｂｇ１ｇ）と目的語Оのｉｄを接続することにより、セカンダリインデックスのプレフィックス「０１ａｋｂｇ１ｇ'０１７０２l７９」を決定することができる。データクエリ装置２２０は、決定されたセカンダリインデックスのプレフィックスに基づいてデータテーブル１４０のインデックスエリア４４０をスキャンし、決定されたセカンダリインデックスのプレフィックスとマッチングするインデックス行を決定することができる。
【００５９】
いくつかの実施形態では、データテーブル１４０のインデックスエリア４４０の少なくとも一部は、例えば、図２に示されるレベル１キャッシュ２３１にキャッシュされている。この場合、データクエリ装置２２０は、まずレベル１キャッシュ２３１においてインデックス行のスキャンを実行することができる。決定されたセカンダリインデックスのプレフィックスとマッチングするインデックス行がレベル１キャッシュ２３１にキャッシュされている場合、データクエリ装置２２０はレベル１キャッシュ２３１において該インデックス行を決定することができる。そうでない場合、データクエリ装置２２０は、記憶装置２４０においてインデックス行のスキャンを実行して、記憶装置２４０から該インデックス行を決定することができる。いくつかの実施形態では、記憶装置２４０から該インデックス行が決定されると、データクエリ装置２２０は、該インデックス行をレベル１キャッシュ２３１に埋め戻し、後続のクエリの効率を高めることができる。
【００６０】
ブロック５２０において、データクエリ装置２２０は、前記インデックス行におけるプライマリインデックスに基づいて、データテーブルの一つまたは複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定する。該データ行には、プライマリインデックスとデータが記憶される。
【００６１】
いくつかの実施形態では、データクエリ装置２２０は、決定されたインデックス行におけるプライマリインデックスに基づいてデータテーブル１４０のデータエリア４５０をスキャンし、該プライマリインデックスとマッチングするデータ行を決定することができる。
【００６２】
いくつかの実施形態では、データテーブル１４０のデータエリア４５０の少なくとも一部は、例えば、図２に示されるレベル２キャッシュ２３２にキャッシュされている。この場合、データクエリ装置２２０は、まずレベル２キャッシュ２３２においてデータ行のスキャンを実行することができる。決定されたプライマリインデックスとマッチングするデータ行がレベル２キャッシュ２３２にキャッシュされている場合、データクエリ装置２２０はレベル２キャッシュ２３２において該データ行を決定することができる。そうでない場合、データクエリ装置２２０は、記憶装置２４０においてデータ行のスキャンを実行して、決定されたプライマリインデックスとマッチングするデータの行を記憶装置２４０から決定することができる。いくつかの実施形態では、記憶装置２４０から該データ行が決定されると、データクエリ装置２２０は、該データ行をレベル２キャッシュ２３２に埋め戻し、後続のクエリの効率を高めることができる。
【００６３】
ブロック５３０において、データクエリ装置２２０は、該インデックス行と該データ行がマッチングするかどうかを判定する。
【００６４】
いくつかの実施形態では、インデックス行は、該インデックス行がデータテーブル１４０に書き込まれた時間を識別する第１のタグを有していてもよく、同時に、データ行は、該データ行が最後に更新された時間を識別する第２のタグを有していてもよい。いくつかの実施形態では、データクエリ装置２２０は、第１のタグと第２のタグがマッチングするかどうかを判定することができる。第１のタグと第２のタグがマッチングしない場合、データクエリ装置２２０は、該インデックス行と該データ行がマッチングしないと判定することができる（例えば、図４Ｂにおいて、データ行４５１の更新時間とインデックス行４４１の書き込み時間がマッチングしないため、データ行４５１とインデックス行４４１がマッチングしない）。
【００６５】
追加または代替として、第１のタグと第２のタグがマッチングする場合、データクエリ装置２２０は、インデックス情報の比較をさらに実行して、該インデックス行と該データ行がマッチングするかどうかを判定することができる。図４Ｂのデータ行４５１とインデックス行４４３を例にとると、両者の時間タグはマッチングする。この場合、データクエリ装置２２０は、データ行４５１におけるデータ４３０−３およびデータテーブル１４０のクエリルールに基づいて、セカンダリインデックスのセットを新たに生成することができる。データクエリ装置２２０は、インデックス行４４３におけるセカンダリインデックスが、新たに生成されたセカンダリインデックスのセットに含まれているかどうかを判定することができる。インデックス行４４３におけるセカンダリインデックスがこの新たに生成されたセカンダリインデックスのセットに含まれている場合、データクエリ装置２２０は、データ行４５１とインデックス行４４３の両者がマッチングすると判定することができる。そうでない場合、データクエリ装置２２０は、データ行４５１とインデックス行４４３の両者がマッチングしないと判定することができる。
【００６６】
インデックス行とデータ行がマッチングすると判定された場合、ブロック５４０において、データクエリ装置２２０はクエリリクエストへの応答として該データ行からデータを取得する。例えば、データクエリ装置２２０は、図４Ｂに示されるデータ行４５１とインデックス行４４３の両者がマッチングすると判定した場合、データクエリ装置２２０は、クエリリクエストへの応答としてデータ行４５１からデータ４３０−３を取得することができる。
【００６７】
インデックス行とデータ行がマッチングしない場合、ブロック５５０において、データクエリ装置２２０はデータテーブル１４０から該インデックス行を削除する。例えば、データクエリ装置２２０は、図４Ｂに示されるデータ行４５１とインデックス行４４１の両者がマッチングしないと判定した場合、データテーブル１４０からインデックス行４４１を削除することができる。
【００６８】
上記の説明から分かるように、本開示の実施形態は、知識マップにおけるエンティティデータに対する低コストでスケーラブルな記憶およびクエリ技術を実現し、従来技術に存在している問題および／または他の潜在的な問題の解決を可能にした。本開示の実施形態は、エンティティデータと、エンティティデータにインデックスを付けるためのプライマリインデックスとをデータテーブルにおけるデータ行に記憶するとともに、データテーブルのクエリルールに基づいてプライマリインデックスにインデックスを付けるためのセカンダリインデックスを構築する。セカンダリインデックスとプライマリインデックスは、同じデータテーブルにおけるインデックス行に記憶される。エンティティデータが更新されると、新しいセカンダリインデックスが生成され、プライマリインデックスとともに該データテーブルの新しいインデックス行に書き込まれる。古いインデックス行の削除は、実際のデータクエリが実行される前に遅延される。このようにして、本開示の実施形態では、知識マップにおけるエンティティデータが頻繁に更新される場合に、データ書き込みおよびデータクエリのパフォーマンスが低下しないことが保証される。
【００６９】
図６は、本開示の実施形態による、データを記憶するための装置６００の概略ブロック図を示している。該装置６００は、図２に示されるデータ記憶装置２１０を実現するために使用されてもよい。図６に示されるように、装置６００は、記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するように構成されたプライマリインデックス生成モジュール６１０と、プライマリインデックスと該データをデータテーブルにおけるデータ行に書き込むように構成されたデータ行書き込みモジュール６２０と、データテーブルのクエリルールと該データに基づいて、プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するように構成されたセカンダリインデックス生成モジュール６３０と、セカンダリインデックスとプライマリインデックスをデータテーブルにおけるインデックス行に書き込むように構成されたインデックス行書き込みモジュール６４０とを含んでいてもよい。
【００７０】
いくつかの実施形態では、該データは、知識ベースにおけるエンティティに関連する情報を記録し、プライマリインデックス生成モジュール６１０は、該データからエンティティの識別子を取得するように構成された識別子取得ユニットと、エンティティの前記識別子に基づいてプライマリインデックスを生成するように構成されたプライマリインデックス生成ユニットとを含んでいてもよい。
【００７１】
いくつかの実施形態では、データ行書き込みモジュールは、プライマリインデックスをデータ行のキーとして該データ行に書き込むように構成された第１のデータ行書き込みユニットと、該データをデータ行の値として該データ行に書き込むように構成された第２のデータ行書き込みユニットとを含んでいてもよい。
【００７２】
いくつかの実施形態では、セカンダリインデックス生成モジュールは、データテーブルのクエリルールを示すための該データテーブルのインデックス構成情報を取得するように構成された構成情報取得ユニットと、インデックス構成情報とデータに基づいてセカンダリインデックスを生成するように構成された第１の生成ユニットとを含んでいてもよい。
【００７３】
いくつかの実施形態では、データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または該エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、データテーブルのクエリルールは、特定の属性値を持つエンティティのクエリ、特定の対象と特定の関係を持つエンティティのクエリ、特定のエンティティの特定の対象に対するポジティブエッジ関係のクエリ、特定の対象の特定のエンティティに対するリバースエッジ関係のクエリ、特定のエンティティに関連するデータのクエリ、特定のポジティブエッジ関係に関連付けられたエンティティのクエリ、特定のリバースエッジに関連付けられたエンティティのクエリのうちの少なくとも一つを含む。
【００７４】
いくつかの実施形態では、セカンダリインデックス生成モジュールは、データテーブルの開始プライマリキーを決定するように構成された開始プライマリキー決定ユニットと、開始プライマリキーをセカンダリインデックスのプレフィックスとすることによりセカンダリインデックスを生成するように構成された第２の生成ユニットとを含む。
【００７５】
いくつかの実施形態において、インデックス行書き込みモジュールは、セカンダリインデックスをインデックス行のキーとして該インデックス行に書き込むように構成された第１のインデックス行書き込みユニットと、プライマリインデックスを該インデックス行の値として該インデックス行に書き込むように構成された第２のインデックス行書き込みユニットとを含む。
【００７６】
いくつかの実施形態では、装置６００は、データ行に記憶されたデータを更新する旨のリクエストの受信に対応して該データを更新するように構成されたデータ更新モジュールと、更新されたデータとクエリルールに基づいて、プライマリインデックスにインデックスを付けるための新しいセカンダリインデックスを生成するように構成された新しいセカンダリインデックス生成モジュールと、新しいセカンダリインデックスとプライマリインデックスをデータテーブルにおける別のインデックス行に書き込むように構成された新しいインデックス行書き込みモジュールとをさらに含む。
【００７７】
いくつかの実施形態では、装置６００は、データテーブルを第１の記憶媒体によって実現された記憶装置に記憶するように構成された記憶モジュールと、インデックス行を第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュするように構成された第１のインデックス行キャッシュモジュールと、データ行を第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュするように構成された第１のデータ行キャッシュモジュールとをさらに含む。
【００７８】
いくつかの実施形態では、第２の記憶媒体のアクセス速度は第３の記憶媒体のアクセス速度を超え、第３の記憶媒体のアクセス速度は第１の記憶媒体のアクセス速度を超える。
【００７９】
装置６００に記載されたモジュールはそれぞれ図３を参照して説明された方法３００における各ステップに対応しており、方法３００における対応する動作および特徴と同じ効果を達成できることを理解されたい。ここでは、その詳細な説明を省略する。
【００８０】
図７は、本開示の一実施形態による、データクエリ装置７００の概略ブロック図を示している。該装置７００は、図２に示されるデータクエリ装置２２０を実現するために使用されてもよい。図７に示されるように、装置７００は、データテーブルに記憶されたデータについてのクエリリクエストの受信に対応して、データテーブルの一つ又は複数のインデックス行から該クエリリクエストとマッチングするインデックス行を確定するように構成されたインデックス行確定モジュール７１０であって、前記インデックス行には、データにインデックスを付けるためのプライマリインデックスと、プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されるインデックス行確定モジュール７１０と、インデックス行におけるプライマリインデックスに基づいて、データテーブルの一つ又は複数のデータ行から、該インデックス行に関連付けられたデータ行を確定するように構成されたデータ行確定モジュール７２０であって、前記データ行には、プライマリインデックスとデータが記憶されるデータ行確定モジュール７２０と、インデックス行とデータ行がマッチングするかどうかを判定するように構成されたマッチングモジュール７３０と、インデックス行とデータ行がマッチングするという判定に対応して、クエリリクエストへの応答としてデータ行からデータを取得するように構成されたデータ取得モジュール７４０とを含んでいてもよい。
【００８１】
いくつかの実施形態では、データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または該エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、該クエリリクエストは、特定の属性値を持つエンティティ、特定の対象と特定の関係を持つエンティティ、特定のエンティティと特定の対象の間のアウトエッジ関係、特定のエンティティと特定の対象の間のインエッジ関係、特定のエンティティに関連するデータ、特定のアウトエッジ関係を持つエンティティ、特定のインエッジ関係を持つエンティティのうちの少なくとも一つをクエリするために使用される。
【００８２】
いくつかの実施形態では、装置７００は、インデックス行とデータ行がマッチングしないという判定に対応して、データテーブルから該インデックス行を削除するように構成されたインデックス行削除モジュールをさらに含む。
【００８３】
いくつかの実施形態では、インデックス行確定モジュール７１０は、クエリリクエストにおけるキーワードに基づいてセカンダリインデックスの少なくとも一部を確定するように構成されたセカンダリインデックス確定ユニットと、一つ又は複数のインデックス行からセカンダリインデックスの少なくとも一部とマッチングするインデックス行を確定するように構成されたインデックス行確定ユニットとを含む。
【００８４】
いくつかの実施形態では、マッチングモジュール７３０は、該インデックス行がデータテーブルに書き込まれた第１の時間を識別するためのインデックス行の第１のタグを取得するように構成された第１のタグ取得ユニットと、該データ行が更新された第２の時間を識別するためのデータ行の第２のタグを取得するように構成された第２のタグ取得ユニットと、第１のタグと第２のタグがマッチングするかどうかを判定するように構成されたタグマッチングユニットと、第１のタグと第２のタグがマッチングしないという判定に対応して、インデックス行とデータ行がマッチングしないと判定するように構成された第１のマッチング判定ユニットとを含む。
【００８５】
いくつかの実施形態では、マッチングモジュール７３０は、第１のタグと第２のタグがマッチングするという判定に対応して、データ行におけるデータに基づいてセカンダリインデックスのセットを生成するように構成されたセカンダリインデックス生成ユニットと、インデックス行におけるセカンダリインデックスが該セカンダリインデックスのセットに含まれているかどうかを判定するように構成されたセカンダリインデックスマッチングユニットと、インデックス行におけるセカンダリインデックスがセカンダリインデックスのセットに含まれているという判定に対応して、インデックス行とデータ行がマッチングすると判定するように構成された第２のマッチング判定ユニットと、インデックス行におけるセカンダリインデックスが該セカンダリインデックスのセットに含まれていないという判定に対応して、インデックス行とデータ行がマッチングしないと判定するように構成された第３のマッチング判定ユニットとをさらに含む。
【００８６】
いくつかの実施形態では、データテーブルは、第１の記憶媒体によって実現された記憶装置に記憶され、一つ又は複数のインデックス行における少なくとも一部は、第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュされる。インデックス行判定モジュール７１０は、インデックス行がレベル１キャッシュにキャッシュされているかどうかを判定するように構成されたレベル１キャッシュ検索ユニットと、インデックス行がレベル１キャッシュにキャッシュされているという判定に対応して、レベル１キャッシュから該インデックス行を確定するように構成された第１のインデックス行確定ユニットと、インデックス行がレベル１キャッシュにキャッシュされていないという判定に対応して、記憶装置から該インデックス行を確定するように構成された第２のインデックス行確定ユニットとを含む。
【００８７】
いくつかの実施形態において、装置７００は、記憶装置からインデックス行が確定されたことに対応して、該インデックス行をレベル１キャッシュにキャッシュするように構成された第２のインデックス行キャッシュモジュールをさらに含む。
【００８８】
いくつかの実施形態では、一つまたは複数のデータ行における少なくとも一部は、第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュされる。データ行確定モジュール７２０は、該データ行がレベル２キャッシュにキャッシュされているかどうかを判定するように構成されたレベル２キャッシュ検索ユニットと、該データ行がレベル２キャッシュにキャッシュされているという判定に対応して、レベル２キャッシュから該データ行を確定するように構成された第１のデータ行確定ユニットと、該データ行がレベル２キャッシュにキャッシュされていないという判定に対応して、記憶装置から該データ行を確定するように構成された第２のデータ行確定ユニットとを含む。
【００８９】
いくつかの実施形態では、装置７００は、記憶装置からデータ行が確定されたことに対応して、該データ行をレベル２キャッシュにキャッシュするように構成された第２のデータ行キャッシングモジュールをさらに含む。
【００９０】
いくつかの実施形態では、第２の記憶媒体のアクセス速度が第３の記憶媒体のアクセス速度を超え、第３の記憶媒体のアクセス速度が第１の記憶媒体のアクセス速度を超える。
【００９１】
装置７００に記載されたモジュールはそれぞれ図５を参照して説明された方法５００における各ステップに対応しており、方法５００における対応する動作および特徴と同じ効果を達成できることを理解されたい。ここでは、その詳細な説明を省略する。
【００９２】
さらに、装置６００および／または７００に含まれるモジュールおよび／またはユニットは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせを含むさまざまな方法で実施されてもよい。いくつかの実施形態では、一つ又は複数のユニットは、記憶媒体に記憶された機械実行可能命令などのソフトウェアおよび／またはファームウェアを使用して実施されてもよい。機械実行可能命令に加えて、またはその代わりに、装置６００および/または７００における一部またはすべてのユニットは、少なくとも部分的に、一つまたは複数のハードウェアロジックコンポーネントによって実施されてもよい。限定されない例として、使用できる例示的なタイプのハードウェアロジックコンポーネントには、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップ（ＳＯＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などが含まれる。
【００９３】
図６および／または図７に示されるこれらのモジュールおよび／またはユニットは、部分的または全体的にハードウェアモジュール、ソフトウェアモジュール、ファームウェアモジュール、またはそれらの任意の組み合わせとして実施されてもよい。特に、いくつかの実施形態では、上述のプロセス、方法またはプロセスは、ストレージシステムまたはストレージシステムに対応するホストまたはストレージシステムに依存しない他のコンピューティングデバイスにおけるハードウェアによって実施されてもよい。
【００９４】
図８は、本開示の実施形態を実施するための例示的な設備８００の概略ブロック図を示している。設備８００は、図１に示されるサーバー１３０を実装するために使用できる。図８に示されるように、設備８００は、読み取り専用メモリ（ＲＯＭ）８０２に記憶されたコンピュータプログラム命令、または記憶ユニット８０８からランダムアクセスメモリ（ＲＡＭ）８０３にロードされたコンピュータプログラム命令に基づいて、さまざまな適切なアクションとプロセスを実行することができる中央処理装置（ＣＰＵ）８０１を含む。ＲＡＭ８０３には、設備８００の動作に必要なさまざまなプログラムおよびデータも記憶できる。ＣＰＵ８０１、ＲＯＭ８０２、およびＲＡＭ８０３は、バス８０４を介して相互に接続されている。入力/出力（Ｉ／Ｏ）インターフェース８０５もバス８０４に接続されている。
【００９５】
設備８００における複数のコンポーネントは、キーボード、マウスなどの入力ユニット８０６、さまざまなタイプのディスプレイ、スピーカーなどの出力ユニット８０７、磁気ディスク、光ディスクなどの記憶ユニット８０８、およびネットワークカード、モデム、無線通信トランシーバなどの通信ユニット８０９を含むＩ／Ｏインターフェース８０５に接続されている。通信ユニット８０９は、設備８００がインターネットなどのコンピュータネットワークおよび／またはさまざまな電気通信ネットワークを介して他の設備と情報／データを交換することを可能にする。
【００９６】
処理ユニット８０１は、方法３００および／または５００など、上述のさまざまな方法およびプロセスを実行する。例えば、いくつかの実施形態では、方法３００および／または５００は、記憶ユニット８０８などの機械可読媒体に具体的に組み込まれているコンピュータソフトウェアプログラムとして実施されてもよい。いくつかの実施形態では、コンピュータプログラムの一部またはすべては、ＲＯＭ８０２および／または通信ユニット８０９を介して設備８００にロードおよび／またはインストールされてもよい。コンピュータプログラムがＲＡＭ８０３にロードされ、ＣＰＵ５０１によって実行されると、上述の方法３００および／または５００の一つまたは複数のステップが実行できる。あるいは、別の実施形態では、ＣＰＵ８０１は、他の任意の適切な手段（例えば、ファームウェア）によって方法３００および／または５００を実行するように構成されてもよい。
【００９７】
以上説明した機能は、少なくとも部分的に、一つまたは複数のハードウェアロジックコンポーネントによって実行できる。例えば、使用できるハードウェアロジックコンポーネントの典型的なタイプには、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンシステム（ＳＯＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などが含まれるが、これらに限定されない。
【００９８】
本開示の方法を実施するためのプログラムコードは、一つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサまたはコントローラーに提供されてもよい。プログラムコードがプロセッサまたはコントローラーによって実行されると、フローチャートおよび／またはブロック図に規定される機能／動作が実施される。プログラムコードは、完全にマシン上で実行されることも、部分的にマシン上で実行されることも可能であり、スタンドアロンソフトウェアパッケージとして部分的にマシン上で実行されるとともに部分的にリモートマシン上で実行されること、または完全にリモートマシンもしくはサーバー上で実行されることも可能である。
【００９９】
本開示の文脈において、機械可読媒体は、命令実行システム、装置または設備の使用に供する、または命令実行システム、装置または設備と組み合わせて使用されるためのプログラムを含むまたは記憶することができる有形の媒体であってもよい。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であってもよい。機械可読媒体は、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置または設備、またはこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。機械可読記憶媒体のより具体的な例には、一本又は複数のワイヤに基づく電気接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバー、コンパクトディスク読み取り専用メモリ（ＣＤ-ＲＯＭ）、光記憶装置、磁気記憶装置、またはこれらの任意の適切な組み合わせが含まれる。
【０１００】
さらに、各動作は特定の順序で示されているが、これは、所望の結果を得るために、示された特定の順序または順番でそのような動作を実行すること、または示されたすべての動作を実行することが必要であると理解されるべきである。特定の状況では、マルチタスクと並列処理が有利である場合がある。同様に、上記説明にはいくつかの特定の実装の詳細が含まれているが、これらは本開示の範囲を限定するものとして解釈されるべきでない。別個の実施形態の文脈で説明された特定の特徴は、単一の実装として組み合わせて実装することもできる。逆に、単一の実施形態の文脈で説明されたさまざまな特徴は、個別にまたは任意の適切なサブコンビネーションにより複数の実装に実装することもできる。
【０１０１】
構造的特徴および／または方法ロジック動作に特有の言語で本主題を説明してきたが、添付された特許請求の範囲で定義された主題は必ずしも説明された特定の特徴または動作に限定されず、むしろ、上記特定の特徴および動作は、あくまでも特許請求の範囲を実施する例示的な形態にすぎないと理解されるべきである。
【図１】
2020140699.tif 000004
【図２】
2020140699.tif 000005
【図３】
2020140699.tif 000006
【図４】
2020140699.tif 000007
【図５】
2020140699.tif 000008
【図６】
2020140699.tif 000009
【図７】
2020140699.tif 000010
【図８】
2020140699.tif 000011
【手続補正書】
【提出日】令和2年2月5日(2020.2.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するステップと、
前記プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むステップと、
前記データテーブルのクエリルールと前記データに基づいて、前記プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するステップと、
前記セカンダリインデックスと前記プライマリインデックスを前記データテーブルにおけるインデックス行に書き込むステップと
を含む、データを記憶するための方法。
【請求項２】
前記データは、知識ベースにおけるエンティティに関連する情報を記録し、
前記プライマリインデックスを生成するステップは、
前記データから前記エンティティの識別子を取得することと、
前記エンティティの前記識別子に基づいて前記プライマリインデックスを生成することとを含む請求項１に記載の方法。
【請求項３】
前記プライマリインデックスと前記データを前記データ行に書き込むステップは、
前記プライマリインデックスを前記データ行のキーとして前記データ行に書き込むことと、
前記データを前記データ行の値として前記データ行に書き込むこととを含む請求項１に記載の方法。
【請求項４】
前記セカンダリインデックスを生成するステップは、
前記データテーブルの前記クエリルールを示すための前記データテーブルのインデックス構成情報を取得することと、
前記インデックス構成情報と前記データに基づいて前記セカンダリインデックスを生成することとを含む請求項１に記載の方法。
【請求項５】
前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
前記クエリルールは、
特定の属性値を持つエンティティをクエリすることと、
特定の対象と特定の関係を持つエンティティをクエリすることと、
特定のエンティティと特定の対象の間のアウトエッジ関係をクエリすることと、
特定のエンティティと特定の対象の間のインエッジ関係をクエリすることと、
特定のエンティティに関連するデータをクエリすることと、
特定のアウトエッジ関係を持つエンティティをクエリすることと、
特定のインエッジ関係を持つエンティティをクエリすることのうちの少なくとも一つを含む請求項１に記載の方法。
【請求項６】
前記セカンダリインデックスを生成するステップは、
前記データテーブルの開始プライマリキーを決定することと、
前記開始プライマリキーを前記セカンダリインデックスのプレフィックスとすることにより前記セカンダリインデックスを生成することとを含む請求項１に記載の方法。
【請求項７】
前記セカンダリインデックスと前記プライマリインデックスを前記インデックス行に書き込むステップは、
前記セカンダリインデックスを前記インデックス行のキーとして前記インデックス行に書き込むことと、
前記プライマリインデックスを前記インデックス行の値として前記インデックス行に書き込むこととを含む請求項１に記載の方法。
【請求項８】
前記データ行に記憶されている前記データを更新する旨のリクエストの受信に対応して前記データを更新するステップと、
更新されたデータと前記クエリルールに基づいて、前記プライマリインデックスにインデックスを付けるための新しいセカンダリインデックスを生成するステップと、
前記新しいセカンダリインデックスと前記プライマリインデックスを前記データテーブルの別のインデックス行に書き込むステップと
をさらに含む請求項１に記載の方法。
【請求項９】
前記データテーブルを第１の記憶媒体によって実現された記憶装置に記憶するステップと、
前記インデックス行を第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュするステップと、
前記データ行を第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュするステップと
をさらに含む請求項１に記載の方法。
【請求項１０】
前記第２の記憶媒体のアクセス速度が前記第３の記憶媒体のアクセス速度を超え、前記第３の記憶媒体の前記アクセス速度が前記第１の記憶媒体のアクセス速度を超える請求項９に記載の方法。
【請求項１１】
データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、前記データテーブルの一つ又は複数のインデックス行から、前記クエリリクエストとマッチングするインデックス行を確定するステップであって、前記インデックス行には、前記データにインデックスを付けるためのプライマリインデックスと、該プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているステップと、
前記インデックス行における前記プライマリインデックスに基づいて、前記データテーブルの一つ又は複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定するステップであって、前記データ行には、前記プライマリインデックスと前記データが記憶されているステップと、
前記インデックス行と前記データ行がマッチングするかどうかを判定するステップと、
前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、前記クエリリクエストへの応答として前記データ行から前記データを取得するステップと
を含む、データのクエリ方法。
【請求項１２】
前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
前記クエリリクエストは、
特定の属性値を持つエンティティ、
特定の対象と特定の関係を持つエンティティ、
特定のエンティティと特定の対象の間のアウトエッジ関係、
特定のエンティティと特定の対象の間のインエッジ関係、
特定のエンティティに関連するデータ、
特定のアウトエッジ関係を持つエンティティ、および
特定のインエッジ関係を持つエンティティのうちの少なくとも一つをクエリするために使用される請求項１１に記載の方法。
【請求項１３】
前記インデックス行と前記データ行がマッチングしていないと判定されたことに対応して、前記データテーブルから前記インデックス行を削除するステップをさらに含む請求項１１に記載の方法。
【請求項１４】
前記一つ又は複数のインデックス行から前記インデックス行を確定するステップは、
少なくとも前記クエリリクエストにおけるキーワードに基づいて前記セカンダリインデックスの少なくとも一部を確定することと、
前記一つ又は複数のインデックス行から前記セカンダリインデックスの前記少なくとも一部とマッチングするインデックス行を確定することとを含む請求項１１に記載の方法。
【請求項１５】
前記インデックス行と前記データ行がマッチングするかどうかを判定するステップは、
前記インデックス行が前記データテーブルに書き込まれた第１の時間を識別するための前記インデックス行の第１のタグを取得することと、
前記データ行が更新された第２の時間を識別するための前記インデックス行の第２のタグを取得することと、
前記第１のタグと前記第２のタグがマッチングするかどうかを判定することと、
前記第１のタグと前記第２のタグがマッチングしていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしないと判定することとを含む請求項１１に記載の方法。
【請求項１６】
前記インデックス行と前記データ行がマッチングするかどうかを判定するステップは、
前記第１のタグと前記第２のタグがマッチングしていると判定されたことに対応して、前記データ行における前記データに基づいてセカンダリインデックスのセットを生成することと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれているかどうかを判定することと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていると判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていると判定することと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていないと判定することとをさらに含む請求項１５に記載の方法。
【請求項１７】
前記データテーブルは、第１の記憶媒体によって実現された記憶装置に記憶され、前記一つ又は複数のインデックス行における少なくとも一部は、第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュされ、
前記一つ又は複数のインデックス行から前記インデックス行を確定するステップは、
前記インデックス行が前記レベル１キャッシュにキャッシュされているかどうかを判定することと、
前記インデックス行が前記レベル１キャッシュにキャッシュされていると判定されたことに対応して、前記レベル１キャッシュから前記インデックス行を確定することと、
前記インデックス行が前記レベル１キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記インデックス行を確定することとを含む請求項１１に記載の方法。
【請求項１８】
前記記憶装置から前記インデックス行が確定されたことに対応して、前記インデックス行を前記レベル１キャッシュにキャッシュするステップをさらに含む請求項１７に記載の方法。
【請求項１９】
前記一つ又は複数のデータ行における少なくとも一部が、第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュされ、
前記一つ又は複数のデータ行から前記データ行を確定するステップは、
前記データ行が前記レベル２キャッシュにキャッシュされているかどうかを判定することと、
前記データ行が前記レベル２キャッシュにキャッシュされていると判定されたことに対応して、前記レベル２キャッシュから前記データ行を確定することと、
前記データ行が前記レベル２キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記データ行を確定することとを含む請求項１７に記載の方法。
【請求項２０】
前記記憶装置から前記データ行が確定されたことに対応して、前記データ行を前記レベル２キャッシュにキャッシュするステップをさらに含む請求項１９に記載の方法。
【請求項２１】
前記第２の記憶媒体のアクセス速度が前記第３の記憶媒体のアクセス速度を超え、前記第３の記憶媒体のアクセス速度が前記第１の記憶媒体のアクセス速度を超える請求項１９に記載の方法。 
【請求項２２】
記憶対象のデータについて該データにインデックスを付けるためのプライマリインデックスを生成するように構成されたプライマリインデックス生成モジュールと、
前記プライマリインデックスと前記データをデータテーブルにおけるデータ行に書き込むように構成されたデータ行書き込みモジュールと、
前記データテーブルのクエリルールと前記データに基づいて、前記プライマリインデックスにインデックスを付けるためのセカンダリインデックスを生成するように構成されたセカンダリインデックス生成モジュールと、
前記セカンダリインデックスと前記プライマリインデックスを前記データテーブルにおけるインデックス行に書き込むように構成されたインデックス行書き込みモジュールと
を含むデータ記憶装置。
【請求項２３】
前記データは、知識ベースにおけるエンティティに関連する情報を記録し、
前記プライマリインデックス生成モジュールは、
前記データから前記エンティティの識別子を取得するように構成された識別子取得ユニットと、
前記エンティティの前記識別子に基づいて前記プライマリインデックスを生成するように構成されたプライマリインデックス生成ユニットとを含む請求項２２に記載の装置。
【請求項２４】
前記データ行書き込みモジュールは、
前記プライマリインデックスを前記データ行のキーとして前記データ行に書き込むように構成された第１のデータ行書き込みユニットと、
前記データを前記データ行の値として前記データ行に書き込むように構成された第２のデータ行書き込みユニットとを含む請求項２２に記載の装置。
【請求項２５】
前記セカンダリインデックス生成モジュールは、
前記データテーブルの前記クエリルールを示すための前記データテーブルのインデックス構成情報を取得するように構成された構成情報取得ユニットと、
前記インデックス構成情報と前記データに基づいて前記セカンダリインデックスを生成するように構成された第１の生成ユニットとを含む請求項２２に記載の装置。
【請求項２６】
前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
前記クエリルールは、
特定の属性値を持つエンティティをクエリすることと、
特定の対象と特定の関係を持つエンティティをクエリすることと、
特定のエンティティと特定の対象の間のアウトエッジ関係をクエリすることと、
特定のエンティティと特定の対象の間のインエッジ関係をクエリすることと、
特定のエンティティに関連するデータをクエリすることと、
特定のアウトエッジ関係を持つエンティティをクエリすることと、
特定のインエッジ関係を持つエンティティをクエリすることのうちの少なくとも一つを含む請求項２２に記載の装置。
【請求項２７】
前記セカンダリインデックス生成モジュールは、
前記データテーブルの開始プライマリキーを決定するように構成された開始プライマリキー決定ユニットと、
前記開始プライマリキーを前記セカンダリインデックスのプレフィックスとすることにより前記セカンダリインデックスを生成するように構成された第２の生成ユニットとを含む請求項２２に記載の装置。
【請求項２８】
前記インデックス行書き込みモジュールは、
前記セカンダリインデックスを前記インデックス行のキーとして前記インデックス行に書き込むように構成された第１のインデックス行書き込みユニットと、
前記プライマリインデックスを前記インデックス行の値として前記インデックス行に書き込むように構成された第２のインデックス行書き込みユニットとを含む請求項２２に記載の装置。
【請求項２９】
前記データ行に記憶された前記データを更新する旨のリクエストの受信に対応して前記データを更新するように構成されたデータ更新モジュールと、
更新されたデータと前記クエリルールに基づいて、前記プライマリインデックスにインデックスを付けるための新しいセカンダリインデックスを生成するように構成された新しいセカンダリインデックス生成モジュールと、
前記新しいセカンダリインデックスと前記プライマリインデックスを前記データテーブルにおける別のインデックス行に書き込むように構成された新しいインデックス行書き込みモジュールと
をさらに含む請求項２２に記載の装置。
【請求項３０】
前記データテーブルを第１の記憶媒体によって実現された記憶装置に記憶するように構成された記憶モジュールと、
前記インデックス行を第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュするように構成された第１のインデックス行キャッシュモジュールと、
前記データ行を第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュするように構成された第１のデータ行キャッシングモジュールと
をさらに含む請求項２２に記載の装置。
【請求項３１】
前記第２の記憶媒体のアクセス速度が前記第３の記憶媒体のアクセス速度を超え、前記第３の記憶媒体の前記アクセス速度が前記第１の記憶媒体のアクセス速度を超える請求項３０に記載の装置。
【請求項３２】
データテーブルに記憶されているデータについてのクエリリクエストの受信に対応して、前記データテーブルの一つ又は複数のインデックス行から、前記クエリリクエストとマッチングするインデックス行を確定するように構成されたインデックス行確定モジュールであって、前記インデックス行には、前記データにインデックスを付けるためのプライマリインデックスと、該プライマリインデックスにインデックスを付けるためのセカンダリインデックスとが記憶されているインデックス行確定モジュールと、
前記インデックス行における前記プライマリインデックスに基づいて、前記データテーブルの一つ又は複数のデータ行から、前記インデックス行に関連付けられたデータ行を確定するように構成されたデータ行確定モジュールであって、前記データ行には、前記プライマリインデックスと前記データが記憶されているデータ行確定モジュールと、
前記インデックス行と前記データ行がマッチングするかどうかを判定するように構成されたマッチングモジュールと、
前記インデックス行と前記データ行がマッチングしていると判定されたことに対応して、前記クエリリクエストへの応答として前記データ行から前記データを取得するように構成されたデータ取得モジュールと
を含むデータクエリ装置。
【請求項３３】
前記データテーブルは、知識ベースにおけるエンティティの一つ又は複数の属性値、および／または前記エンティティと一つ又は複数の対象の間の対応関係を記憶するためのものであり、
前記クエリリクエストは、
特定の属性値を持つエンティティ、
特定の対象と特定の関係を持つエンティティ、
特定のエンティティと特定の対象の間のアウトエッジ関係、
特定のエンティティと特定の対象の間のインエッジ関係、
特定のエンティティに関連するデータ、
特定のアウトエッジ関係を持つエンティティ、および
特定のインエッジ関係を持つエンティティのうちの少なくとも一つをクエリするために使用される請求項３２に記載の装置。
【請求項３４】
前記インデックス行と前記データ行がマッチングしていないと判定されたことに対応して、前記データテーブルから前記インデックス行を削除するように構成されたインデックス行削除モジュールをさらに含む請求項３２に記載の装置。
【請求項３５】
前記インデックス行確定モジュールは、
少なくとも前記クエリリクエストにおけるキーワードに基づいて前記セカンダリインデックスの少なくとも一部を確定するように構成されたセカンダリインデックス確定ユニットと、
前記一つ又は複数のインデックス行から前記セカンダリインデックスの前記少なくとも一部とマッチングするインデックス行を確定するように構成されたインデックス行確定ユニットとを含む請求項３２に記載の装置。
【請求項３６】
前記マッチングモジュールは、
前記インデックス行が前記データテーブルに書き込まれた第１の時間を識別するための前記インデックス行の第１のタグを取得するように構成された第１のタグ取得ユニットと、
前記データ行が更新された第２の時間を識別するための前記データ行の第２のタグを取得するように構成された第２のタグ取得ユニットと、
前記第１のタグと前記第２のタグがマッチングするかどうかを判定するように構成されたタグマッチングユニットと、
前記第１のタグと前記第２のタグがマッチングしていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしないと判定するように構成された第１のマッチング判定ユニットとを含む請求項３２に記載の装置。
【請求項３７】
前記マッチングモジュールは、
前記第１のタグと前記第２のタグがマッチングしていると判定されたことに対応して、前記データ行における前記データに基づいてセカンダリインデックスのセットを生成するように構成されたセカンダリインデックス生成ユニットと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれているかどうかを判定するように構成されたセカンダリインデックスマッチングユニットと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていると判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていると判定するように構成された第２のマッチング判定ユニットと、
前記インデックス行における前記セカンダリインデックスが前記セカンダリインデックスのセットに含まれていないと判定されたことに対応して、前記インデックス行と前記データ行がマッチングしていないと判定するように構成された第３のマッチング判定ユニットとをさらに含む請求項３６に記載の装置。
【請求項３８】
前記データテーブルは、第１の記憶媒体によって実現された記憶装置に記憶され、前記一つ又は複数のインデックス行における少なくとも一部は、第２の記憶媒体によって実現されたレベル１キャッシュにキャッシュされ、
前記インデックス行確定モジュールは、
前記インデックス行が前記レベル１キャッシュにキャッシュされているかどうかを判定するように構成されたレベル１キャッシュ検索ユニットと、
前記インデックス行が前記レベル１キャッシュにキャッシュされていると判定されたことに対応して、前記レベル１キャッシュから前記インデックス行を確定するように構成された第１のインデックス行確定ユニットと、
前記インデックス行が前記レベル１キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記インデックス行を確定するように構成された第２のインデックス行確定ユニットとを含む請求項３２に記載の装置。
【請求項３９】
前記記憶装置から前記インデックス行が確定されたことに対応して、前記インデックス行を前記レベル１キャッシュにキャッシュするように構成された第２のインデックス行キャッシュモジュールをさらに含む請求項３８に記載の装置。
【請求項４０】
前記一つ又は複数のデータ行における少なくとも一部は、第３の記憶媒体によって実現されたレベル２キャッシュにキャッシュされ、
前記データ行確定モジュールは、
前記データ行が前記レベル２キャッシュにキャッシュされているかどうかを判定するように構成されたレベル２キャッシュ検索ユニットと、
前記データ行が前記レベル２キャッシュにキャッシュされていると判定されたことに対応して、前記レベル２キャッシュから前記データ行を確定するように構成された第１のデータ行確定ユニットと、
前記データ行が前記レベル２キャッシュにキャッシュされていないと判定されたことに対応して、前記記憶装置から前記データ行を確定するように構成された第２のデータ行確定ユニットとを含む請求項３８に記載の装置。
【請求項４１】
前記記憶装置から前記データ行が確定されたことに対応して、前記データ行を前記レベル２キャッシュにキャッシュするように構成された第２のデータ行キャッシングモジュールをさらに含む請求項４０に記載の装置。
【請求項４２】
前記第２の記憶媒体のアクセス速度が前記第３の記憶媒体のアクセス速度を超え、前記第３の記憶媒体の前記アクセス速度が前記第１の記憶媒体のアクセス速度を超える請求項４０に記載の装置。
【請求項４３】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに請求項１〜１０のいずれか一項に記載の方法を実施させる記憶装置と
を含むデータ記憶設備。
【請求項４４】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するための記憶装置であって、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行されると、前記一つ又は複数のプロセッサに請求項１１〜２１のいずれか一項に記載の方法を実施させる記憶装置と
を含むデータクエリ設備。
【請求項４５】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
前記プログラムがプロセッサによって実行されると、請求項１〜１０のいずれか一項に記載の方法が実施されるコンピュータ可読記憶媒体。
【請求項４６】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
前記プログラムがプロセッサによって実行されると、請求項１１〜２１のいずれか一項に記載の方法が実施されるコンピュータ可読記憶媒体。
【請求項４７】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１〜１０のいずれか一項に記載の方法が実施されるコンピュータプログラム。
【請求項４８】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１１〜２１のいずれか一項に記載の方法が実施されるコンピュータプログラム。
【外国語明細書】
Title of Invention
2020140699.tif 000012
2020140699.tif 000013
2020140699.tif 000014
2020140699.tif 000015
2020140699.tif 000016
2020140699.tif 000017
2020140699.tif 000018
2020140699.tif 000019
2020140699.tif 000020
2020140699.tif 000021
2020140699.tif 000022
2020140699.tif 000023
2020140699.tif 000024
2020140699.tif 000025
2020140699.tif 000026
2020140699.tif 000027
2020140699.tif 000028
2020140699.tif 000029
2020140699.tif 000030
2020140699.tif 000031
2020140699.tif 000032
2020140699.tif 000033
2020140699.tif 000034
2020140699.tif 000035
2020140699.tif 000036
2020140699.tif 000037
2020140699.tif 000038
2020140699.tif 000039
2020140699.tif 000040
2020140699.tif 000041
2020140699.tif 000042
2020140699.tif 000043
2020140699.tif 000044
Figure1
2020140699.tif 000045
Figure2
2020140699.tif 000046
Figure3
2020140699.tif 000047
Figure4
2020140699.tif 000048
Figure5
2020140699.tif 000049
Figure6
2020140699.tif 000050
Figure7
2020140699.tif 000051
Figure8
2020140699.tif 000052