JP7030831B2 - 最適化したビットマップ表現を用いる大規模の関連付けセットの管理 - Google Patents

最適化したビットマップ表現を用いる大規模の関連付けセットの管理 Download PDF

Info

Publication number
JP7030831B2
JP7030831B2 JP2019548553A JP2019548553A JP7030831B2 JP 7030831 B2 JP7030831 B2 JP 7030831B2 JP 2019548553 A JP2019548553 A JP 2019548553A JP 2019548553 A JP2019548553 A JP 2019548553A JP 7030831 B2 JP7030831 B2 JP 7030831B2
Authority
JP
Japan
Prior art keywords
segment
entity
association
entities
management module
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
JP2019548553A
Other languages
English (en)
Other versions
JP2020514899A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020514899A publication Critical patent/JP2020514899A/ja
Application granted granted Critical
Publication of JP7030831B2 publication Critical patent/JP7030831B2/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/2237Vectors, bitmaps or matrices
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、関連付け(association)及び解除(関連付けの解除、dissociation)データセットに関し、より具体的には、ビットマップ表現を用いる関連付け及び解除データセットの管理に関する。
エンタープライズコンテンツ管理における一般的な問題は、大量の第1のタイプのエンティティのセットを、1又は複数の第2のタイプのエンティティと関連付けることである。例えば、法的ドメインにおいて、会社又は組織は、多くの場合、大量の文書のセット(例えば、電子メール、報告書、通知、メモ等)を、大量の人のセット(例えば、従業員、契約者、管理者等)又は1又は複数の他のエンティティ(例えば、法的事項、監査、組織ユニット等)と関連付ける必要がある。
関連付けセット(association set)は、2つのエンティティの間の一対多又は多対多の関係である。例えば、従業員は、従業員と文書との間の関連付けとしてモデル化することができる電子メールを受送信する。ここで、従業員と関連付けられた全文書のセットを、関連付けセットとみなすことができる。電子メールの全送信者及び受信者のセットを関連付けセットとみなすこともできる。会社が何らかの種類の訴訟に関与し、従業員(又は、訴訟に関する「利害関係人(person of interest)」)のセットと関連付けられた全文書を生成しなければならない場合、求められる文書のセットを生成するには、所望の文書の取り出しを迅速かつ正確に行う方法で関連付けをモデル化し、持続することが必要である。
関連付けセットは、ひとたび非常に大きくなると管理が面倒になることがあり、それは、何十万もの従業員及び何百万もの文書を有する大企業にはよくあることである。従って、大企業の場合、文書、法的事項、管理人(custodian)、通知書等の数は非常に多くなり、それらの間の関連付けの数もさらに大きくなり得る。これらの関連付けセットの格納及び照会は、現在の企業において困難な問題であり、大きな規模で正確かつ効率的に実行できる解決法が必要である。
典型的な解決法において、エンティティを表すために第1の識別番号を使用し、一方、他のエンティティとの関連付けの各々を追跡するために第2の識別番号を使用することができる。例えば、電子メールと従業員との間の関連付けを、電子メールのIDと従業員のIDとの間の関係としてモデル化することができる。しかしながら、これにより、非常に多数の関係がもたらされ、開示手続き(discovery)プロセスの種々の段階中に、格納し、管理し、取り出し、照会を行わなければならない極めて多数の関係オブジェクトが生じ得る。これらの大量の関係オブジェクトの管理、格納、取り出し及び照会には費用がかかり得る。何万人もの従業員及び何百万もの文書を有する大企業又は組織においては、関連付けセットのサイズが極めて大きくなる。従来の手段を用い場合、これらの大量の関連付けセットを持続すると、ストレージの膨大な量をふさぎ得る。
ストレージのコストに加えて、これらの関連付けの作成及び管理にかかる時間に関するコストもある。トランザクションを用いて関連付けの作成を行う場合、実体化(materialization)の際に保持する必要があるロックにより、システムが、同時に発生しなければならない他の動作(例えば、エンティティの関連付けセットへの付加又これからの除去など)に使用できなくなることがある。
さらに、大量の関連付けセットの格納問題に直接関連するのは、多数の他のものから関心ある関連付けを取り出す問題である。n項(n-ary)の関連付けに照会を行うために、2項(binary)の関連付けセットのnウェイの結合が必要とされ得る。これには、迅速かつ柔軟でスケーラブルな解決法が必要である。
従来のデータベース・ストレージは、リンク・テーブルを用いて、エンティティ間の関連付けを表し、照会を行う。この方法での関連付けの格納、索引付け及び照会は最適ではなく、特に関連付けが同時に作成され、管理される場合、関連付けに関与するユーザ・クエリに対して長い応答時間をもたらし得る。トランザクションの保証が与えられる場合、データベースの多くは、作成又は削除動作が行われている間使用不能であり、そのことは、システム全体を、何日もではないにしても何時間もの間、読み取り専用クエリでさえ、ほとんど使用不能にすることがある。
例えば、訴訟に直面している会社は、一般的には、ケースに関係するデータを集める必要がある。これは、多くの場合、ケースを作成すること、多数の(関連)文書を関連付けること、及びこれらの何百万になり得る文書を保留にすることを必要とする。同じトランザクションにおいて、多数の管理人をケースと関連付ける必要があることもある。エラーの場合にシステムをロールバックできる方法でこうしたトランザクションを管理することは、非常に困難であり得る。同様に、ケースを削除する必要がある場合、同じトランザクションが、ケースから多数の文書及び管理人の解除、及びあらゆる保留の解放を要することがある。トランザクションの意味論を保証しながら、それを効率的に行うのは困難である。
文書の存続期間が出訴期限(例えば、連邦法、州法、地方自治体法、会社のポリシー等による)を超える場合、関連付けを作成し、時間の経過とともに修正し、さらに除去することができる。従って、これらの関連付けセットの管理は、クエリ性能を著しく低下させることなく、時間の経過に伴うこうした変化を処理できることが必要である。
データのセットに対するデータベース・クエリを処理する方法、システム及びコンピュータ・プログラムを提供する。
本発明の一実施形態によると、データのセットに対するデータベース・クエリを処理することが、整数空間からの一意の識別子をデータ内の各エンティティに割り当て、各々がデータ内の対応するエンティティに関係するエンティティの1つ又は複数のセットを作成することを含む。さらに、エンティティの各セットについてディスク上に表現を生成し、各表現は、対応するセット内のエンティティの一意の識別子の範囲を含みかつそれに適しており、その対応するセット内のエンティティの存在を示す。クエリを満足するデータを取り出すために、エンティティの各セットについての表現に基づいてクエリを処理し、表現は、クエリ時における削除されたエンティティ及び重複するエンティティの遅延した併合及び自動フィルタリングを伴う追記のみの(append-only)動作である関連付け及び解除動作を定数時間で提供する。本発明の実施形態は、実質的に上述の同じ方法でデータのセットに対するデータベース・クエリを処理するためのシステム及びコンピュータ・プログラム製品をさらに含む。
本発明の実施形態によると、エンティティは、人、文書、イベント及びオブジェクトの群からの1つ又は複数のインスタンスを表す。本発明の実施形態のエンティティの少なくとも1つのセットは、特定のエンティティと関連付けられエンティティ、及び/又は特定のエンティティと解除されたエンティティを含むことができる。さらに、本発明の実施形態のエンティティのセットは、エンティティのセットの物理的表現で保存される重複するエンティティ識別子を有する非一意のエンティティを含むマルチセットを含む。本発明の実施形態は、エンティティのセットのセグメントのエンティティ識別子についてのメタデータは、ペイロードとしてセグメントにインラインで格納されることを提供する。
本発明の実施形態は、エンティティ識別子により表されるエンティティのセットを複数のセグメントにパーティション化し、各セグメントについてのコンテンツ及び各セグメントについてのメタデータは、別個のデータ・オブジェクト内に格納される。さらに、各セグメントは、関連付けを示すためのinsertタイプ及び解除を示すためのdeleteタイプのうちの一方であり、セグメント・サイズは、要求サイズ、圧縮タイプ、及び実行時最適化に基づく。さらに、複数のセグメントを時間順に(chronologically)順序付け、これを用いて、セグメントを併合(merge)、挿入(insert)及び削除(delete)することにより、エンティティのセットのコンテンツを生成する。本発明の実施形態は、複数のセグメントに対する動作を同時に実行する。さらに、クエリを処理するとき、本発明の実施形態は、複数のセグメントに対するクエリを評価し、評価したセグメントの各々からの結果を結合する。
一般的に、種々の図における同様の参照番号は、同様の構成要素を示すために用いられる。
本発明の一般的な概念を具体化できる例示的な環境を示す。 本発明の実施形態による、データの関連付けセットを表す概略図である。 本発明の実施形態による、関連付けセット内の関連したエンティティを付加する新しいセグメントの作成の手順フローチャートである。 本発明の実施形態による、関連付けセット内の解除エンティティを付加する新しいセグメントの作成の手順フローチャートである。 本発明の実施形態による、関連付けセット内の併合セグメントのためのバックグラウンド併合器関数の手順フローチャートである。 本発明の実施形態による、関連付けセットのエンティティを取り出すための取り出し又はクエリ関数の手順フローチャートである。 本発明の実施形態による、関連付けセットのエンティティを取り出すための取り出し又はクエリ関数の手順フローチャートである。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。 本発明の実施形態による、関連付けセットの取り出しを示す一連の概略図である。
本開示の全体にわたって、同様の参照番号は、同様の要素を識別するために使用されている。
関連付け及び解除データセットを含むデータのセットに対するデータベース・クエリを処理するための技術が、本明細書で提示される。一般に、本明細書で与えられる技術は、一意の整数を有するデータセットの各エンティティを割り当て、表現する。本明細書に与えられる技術によると、各エンティティが一連の関連付けセットに割り当てられ、そこで、各関連付けセットは、関連付けセットに属する可能性があるエンティティ識別子の範囲をカバーする整数空間にわたってビットマップとして表される。関連付けセットを一連のブロック又はセグメントにパーティション化するために、各関連セットに対して、ブロック構造が用いられ、そこで、各セグメントは、セグメントのエンティティの識別子が、整数空間においてどのように分散されるかに基づいて格納される。大きい数の関連エンティティを有するセグメント(すなわち、高密度セグメント)は、物理的ビットマップを用いて格納することができるが、小さい数の関連エンティティを有するセグメント(すなわち、より低密度でより少ない識別子を有するセグメント)は、他の方法で格納され得る(例えば、実際のエンティティ識別子を格納する等)。
これらの技術は、システムのデータセットの関連付けセットのエンティティをナビゲートし、取り出すよりも効率的で時間のかからない方法をもたらす。さらに、本明細書で与えられる技術は、スケーラブルな大量の関連付けセットのストレージを作成する。本明細書で与えられる技術は、従来のリンクテーブル・データベース・ストレージのものと比べて、関連付けセットを格納して取り出す、より安価な方法を提供する。さらに、本明細書で与えられる技術は、関連付けセットの迅速な取り出しを可能にする。最後に、本明細書で与えられる技術は、関連付けセット全体をロックする必要なしに、セグメントの動作(例えば、作成、削除、移動、併合、照会等)を同時に行うことを可能にし、そのことは、ストレージ・システムの処理能力、性能及び機能全体を改善する。
本発明の実施形態と共に使用される例示的なコンピューティング環境が、図1に示される。具体的には、コンピューティング環境は、1つ又は複数のサーバ・システム10、及び1つ又は複数のクライアント・システム20を含む。サーバ・システム10及びクライアント・システム20は、互いに遠隔にあり、ネットワーク30を介して通信することができる。ネットワークは、任意の数のいずれかの適切な通信媒体(例えば、広域ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、インターネット、イントラネット等)により実装することができる。代替的に、サーバ・システム10及びクライアント・システム20は、互いにローカルにあり、いずれかの適切なローカル通信媒体(例えば、ローカル・エリア・ネットワーク(LAN)、配線接続、無線リンク、イントラネット等)を介して通信することができる。
サーバ・システム10は、ディスプレイ若しくはモニタ、ベース(例えば、少なくとも1つのCPU若しくはプロセッサ12)、1つ又は複数のメモリ16、及び/又は内部若しくは外部ネットワーク・インターフェース、又は通信デバイス14(例えば、モデム、ネットワーク・カード等))、随意的な入力デバイス(例えば、キーボード、マウス、若しくは他の入力デバイス)、及び任意の市販のカスタム・ソフトウェア(例えば、サーバ/通信ソフトウェア、データベース管理モジュール18等)を備えることが好ましい、いずれかの従来の又は他のコンピュータ・システムにより実装することができる。
クライアント・システム20は、少なくとも1つのCPU又はプロセッサ12、1つ又は複数のメモリ16、内部若しくは外部ネットワーク・インターフェース又は通信デバイス14(例えば、送受信機、ネットワーク・カード等)、及び/又は随意的な入力若しくは出力デバイス(例えば、キーボード、マウス、若しくは他の入力デバイス、ディスプレイ等)を装備できることが好ましい。クライアント・システム20は、特定のデバイスがデバイス動作を実行するための、いずれかの市販の又はカスタム・ソフトウェア、及び/又はハードウェア・モジュール(例えば、アプリケーション、ブラウザ、通信ソフトウェア、データベース・クエリ・モジュール22等)をさらに含むことができる。クライアント・システム20は、データのセットに対するデータベース・クエリを処理するために、サーバ・システム10と通信することができる。
データベース・クエリ・モジュール22は、クライアント・システム20のユーザが、データベース17上にサーバ・システム10により格納されるデータのセットに対する要求又はクエリをサーバ・システム10にサブミットすることを可能にする。サーバ・システム10は、システムのデータセットについての関連付けセットのデータベース17を構築し、管理するためのデータベース管理モジュール18を含む。1つ又は複数のデータベース17は、種々のタイプの情報(例えば、関連付けセット、データセットの各エンティティについてのエンティティ識別又は識別子、関連付けセットのメタデータ等)を格納することができる。データベース17は、任意の従来のストレージ・ユニットにより実装することができ、サーバ・システム10及びクライアント・システム20のローカルにあっても、又はこれらから遠隔にあってもよく、任意の適切な通信媒体(例えば、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、配線接続、無線リンク、イントラネット等)を介して通信することができる。クライアント・システム20は、データベース・クエリをサーバ・システム10に送るために、グラフィカル・ユーザ・インターフェース(例えば、GUI等)又は他のタイプのインターフェース(例えば、コマンドライン・プロンプト、メニュー画面等)を提示することができ、関連付けセットのエンティティを含む種々のタイプの情報を提供することができる。
データベース管理モジュール18は、関連付けセット(例えば、システムのエンティティの関連付け及び解除の両方)をモデル化し、追跡するように構成される。データベース管理モジュール18は、システムの各エンティティを一意の整数に割り当てることができ、ここで、一意の整数は、識別キー、識別子、又はアイデンティティとして働く。任意のサイズの整数をデータベース管理モジュール18により用いることができる。しかしながら、本発明の1つの例示的な実施形態において、一意の64ビット整数をシステムのデータセットの各エンティティに割り当てることができる。データセットのエンティティとして、これらに限定されるものではないが、文書、人、システムのオブジェクト、及びシステムの事項を含むことができる。例えば、文書は、これらに限定されるものではないが、システムの電子メール、報告書、通知書、メモ等を含む。システムの人は、これらに限定されるものではないが、従業員、契約者、及びシステムを所有し動作させる会社のマネージャを含む。システムの事項は、これらに限定されるものではないが、システムを所有し動作させる会社の法的事項、監査、及び組織ユニットを含む。
ひとたびデータベース管理モジュール18が、識別子を有するシステムの各エンティティを割り当てると、データベース管理モジュール18は、同じタイプの関係又は関連付けを互いに共有するエンティティのグループである関連付けセットを構築する。例えば、従業員は、電子メールを受送信することができ、電子メールは、従業員と文書との間の関連付けとしてモデル化することができる。この例によると、特定の従業員と関連した文書の全てを互いにグループ化し、1つの関連付けセットとして機能させることができる。さらに、電子メールの送信者及び受信者も互いにグループ化し、別の関連付けセットとして機能させることができる。データベース管理モジュール18は、関連付けセットに属する可能性があるエンティティ識別子の範囲をカバーする整数空間にわたりビットマップとして各関連付けセットを表すことができる。例えば、システムを所有し、動作させる組織の法的事項と関連したシステムの人のセットは、法的事項識別子と人のビットマップとの間の関係として表すことができ、ここで、ビットは、法的事項と関連した各々の人について設定される。本発明の1つの実施形態において、以下にさらに示され、説明されるように、関連付けセットは、ブロック構造によりパーティション化することができ、ここで、関連付けセットは、複数のブロック又はセグメントにパーティション化又は分割される。このことは、サーバ・システム10がクライアント・システム20からデータベース・クエリを受け取るとき、サーバ・システム10のデータベース管理モジュール18により設定される各関連付けセットに対してより迅速なアクセス及びスケーラビリティ(scalability)を与える。
モジュール18、22は、以下に説明される本発明の実施形態の種々の機能を実施するための、1つ又は複数のモジュール又はユニットを含むことができる。種々のモジュール(例えば、データベース管理モジュール18、データベース・クエリ・モジュール22等)は、いずれかの量のソフトウェア及び/又はハードウェア・モジュール又はユニットのいずれかの組み合わせにより、実装することができ、プロセッサ12による実行のために、サーバ・システム10及び/又はクライアント・システム20のメモリ16内に常駐することができる。
ここで図2を参照すると、データベース17内に格納される関連付けセット100の1つの例の概略図が示される。示されるように、各関連付けセット100は、テーブルのセットを含む。示される関連付けセット100の表現は、3つのセグメント110、120、130を含む。図2に示される例示的な実施形態は、3つのセグメントを有するように示されるが、任意の数のセグメントを有するように、関連付けセット100の他の実施形態を格納することもできる。セグメント110、120、130の各々は、それぞれ、5つのエンティティ112(1)~112(5)、122(1)~122(5)、132(1)~132(5)を含む。示されるように、セグメント110は、識別子1が割り当てられた第1のエンティティ112(1)、識別子4が割り当てられた第2のエンティティ112(2)、識別子6が割り当てられた第3のエンティティ112(3)、識別子7が割り当てられた第4のエンティティ112(4)、及び識別子10が割り当てられた第5のエンティティ112(5)を含む。セグメント120は、識別子13が割り当てられた第1のエンティティ122(1)、識別子24が割り当てられた第2のエンティティ122(2)、識別子26が割り当てられた第3のエンティティ122(3)、識別子29が割り当てられた第4のエンティティ122(4)、及び識別子40が割り当てられた第5のエンティティ122(5)を含む。最後に、セグメント130は、識別子47が割り当てられた第1のエンティティ132(1)、識別子62が割り当てられた第2のエンティティ132(2)、識別子71が割り当てられた第3のエンティティ132(3)、識別子80が割り当てられた第4のエンティティ132(4)、及び識別子92が割り当てられた第5のエンティティ132(5)を含む。関連付けセット100の各セグメント110、120、130は、5つのエンティティを含むが、他の関連付けセットの他の実施形態は、5つより多い又は少ないエンティティを含むセグメントを含むことができる。
図2の関連付けセット100の例示的な実施形態は、関連付けセット100がセグメント・ヘッダ・テーブル140及びセグメント・データ・テーブル150を含むことを示す。セグメント・データ・テーブル150は、各セグメント110、120、130のコンテンツ(すなわち、各セグメントのエンティティ)を格納する。セグメント・ヘッダ・テーブル140は、セグメント110、120、130についてのメタデータを格納する。幾つかの実施形態において、セグメント・ヘッダ・テーブル140は、各セグメント110、120、130について、エンティティの開始ID、エンティティの終了ID、圧縮タイプ、濃度(cardinality)、及びセグメントの状態を含む。セグメント・ヘッダ・テーブル140において、各セグメント110、120、130は、それぞれ、異なる行114、124、134として表される。さらに、セグメント・ヘッダ・テーブル140の行114、124、134は、セグメント・データ・テーブル150のそれぞれの行116、126、136と位置合わせすることができる。セグメント・データ・テーブル150の第1の行116は、第1のセグメント110のエンティティ112(1)~112(5)の識別子を格納する。セグメント・データ・テーブル150の第2の行126は、第2のセグメント120のエンティティ122(1)~122(5)の識別子を格納し、セグメント・データ・テーブル150の第3の行136は、エンティティ132(1)~132(5)の識別子を格納する。
他の実施形態において、関連付けセット100は、参加エンティティ112(1)~112(5)、122(1)~122(5)、132(1)~132(5)の識別子に加えて、他のメタデータを含むことができ、ここで、この付加的なメタデータを格納する必要性がある。例えば、メタデータのサイズが小さい場合(すなわち、関連付けセット100に対するエンティティの関連付けの日付、エンティティが互いに関連付けられる時間)、メタデータは、ペイロードを用いて、メタデータを関連付けセットと共にインラインで格納することができる。インライン・メタデータは、ディスク上のどこかからそれらを取り出す(例えば、入力/出力)付加的なオーバーヘッドを回避するために、データと同一場所に配置される。例えば、文書がアプリケーション内のフォルダと関連付けられ、各文書がいつフォルダに関連付けられたかを記録したいとアプリケーションが望むとき、各文書がフォルダに関連付けられた日付及び/又は時間を、関連付けセット100内のペイロードに格納することができる。これにより、付加的なディスク・シークを必要としないので、関連付けの日付に対するクエリを迅速に評価することが可能になる。
反対に、付加的なメタデータが大きいとき、付加的なメタデータを、関連付けセット100の平行セグメント内にまとめて格納することができる。大きいメタデータの例は、アプリケーションが法的事項に関与し、管理者(custodian)により、法的事項と管理者との間の各関連付けと共に、コメント又は説明を格納することが可能になる場合を含む。この例において、大きいテキスト・フィールドをペイロードとして格納することは、関連付けセットをあまりにも面倒で費用のかかるものにする。従って、付加的な大きいメタデータは、別個の平行セグメントとして格納することができる。
さらに、関連付けセット100が比較的小さい場合、関連付けセット100は、関連付けられたエンティティを格納するために、別個のテーブルを必要としないことがある。従って、エンティティ及びあらゆる小さいメタデータを含むその全体の関連付けセットの両方を、単一のテーブル内に格納することができる。小量の関連付けセット100の例は、これらの関連付けセット100が一般に小さく不変であるので、各電子メールと関連付けられた送信者及び受信者とすることができる。
付加的なタイプの関連付けセット100は、同じエンティティ識別子の複数のインスタンスを単一の関連付けセット100内に格納する必要性が存在するときに生じ得る。一般的に、関連付けセット100は、別個のエンティティ112(1)~112(5)、122(1)~122(5)、132(1)~132(5)のセットを含む(すなわち、いずれのエンティティも、複数回生じない)。エンティティが関係に複数回参加し、その参加の濃度が重要なものであり、キャプチャする必要があるとき、同じエンティティ識別子の複数のインスタンスを関連付けセット100内に格納することができる。例えば、関連付けセットの1つ又は複数の文書上にホールド(hold)を配置することができ、そこで、文書は、少なくとも1つのホールド要求がそれにある場合、削除することができない。ホールド上の文書のセットを表す関連付けセット100は、それが1つより多いホールド要求内に含まれる場合、単一の文書の複数のインスタンス(すなわち、エンティティの識別子の複数のインスタンス)を有することができる。別の実施形態において、関連付けセット100内の単一の識別子の複数の発生を格納する代わりに、参照カウントを、複数のインスタンスの格納を要求する各識別子と関連付けることができる。ホールド上に配置された文書についての関連付けセット100の例において、要求され、識別子が割り当てられた特定の文書上に配置された各ホールドについて、そのホールドの関連付けセット内の識別子についての参照カウントをインクリメントすることができる。さらに、ホールドが解放された場合、参照カウントをデクリメントすることができる。参照カウントがゼロの値に達したときのみ、エンティティ識別子を除去することができる。
ここで図3及び図4を参照すると、手順フローチャート200、300が、関連付けセット100を構築又は管理するための動作(例えば、データベース管理モジュール18)を示す。関連付けセット100の各セグメント110、120、130は、関連付けセット100と関連付けられた又は解除された一連のエンティティを表すことができる。関連付けセグメントは、エンティティと関連付けられた(例えば、関連付けセットに付加された)エンティティ識別子のリストとして機能するが、解除セットは、エンティティと解除されたエンティティ識別子(すなわち、エンティティといったん関連付けられたが、次に解除されるようになったエンティティ識別子;関連付けセットから除去されるエンティティ識別子)をキャプチャする。例えば、エンティティがシステムから削除される場合、その関連の全てを同様に削除することができる(すなわち、それぞれのエンティティを関連付けセットから解除しなければならない)。関連付けセグメントは、関連付け「INSERT(挿入)」又は「NEW(新しい)」と表記できるが、解除セグメントは、解除又は「DELETE(削除)」と表記できる。従って、関連付けセット100内のいずれのセグメントも除去する必要はなく、関連付けセット100の各セグメント110、120、130は、セグメント110、120、130がどのように表記されたかに基づいて、関連付けセット100から付加又は削除されたエンティティについてのリスト又は台帳として機能する。1つの例示的な実施形態において、解除セグメントは、ビットマスク又はブルームフィルタを用いて表すことができる。別の例示的な実施形態において、以下にさらに詳細に説明するように、解除セグメントは、優先度キューを用いて実装することができ、そこで、関連付けセット100のセグメント110、120、130の優先度は、逆時間順(reverse chronology)に決定される(すなわち、関連付けセグメントであっても又は解除セグメントであってもより最近のセグメントは、セグメントの優先度がより高い)。
さらに、関連付けセット100のセグメント110、120、130は、特定量のエンティティに固定することができる。図1に示される関連付けセット100の例示的な実施形態の場合、セグメント110、120、130は、5つのエンティティに限定される。しかしながら、他の関連付けセット100は、任意の数のセット・エンティティを含むセグメントを含むことができる。さらに、セグメント110、120、130に、状態を割り当てることができる。セグメント110、120、130の状態は、これらに限定されるものではないが、「NEW(新しい)」、「DELETE(削除)」、「MERGED(併合)」、「IN PROGRESS(進行中)」及び「LOCK(ロック)」を含む。これらの状態は、以下に詳細に説明される。
図3に示されるように、ステップ210において、データベース管理モジュール18は、最初に、関連付けセットと関連付けられるエンティティのエンティティ識別子を収集し、入力する。ステップ220において、データベース管理モジュール18は、関連付けセット100についての新しいセグメントを作成し、最大量のエンティティ識別子がセグメントに付加されるまで、エンティティ識別子を新しいセグメントに付加する。さらに、データベース管理モジュール18は、エンティティ識別子をセグメントに付加する前に、関連付けセットに付加されるエンティティ識別子をソートする(すなわち、時間順に)ことができる。さらに、エンティティ識別子を付加する新しいセグメントの各々には、「NEW」状態が割り当てられる。最大量のエンティティ識別子がセグメントに付加された後、ステップ230において、データベース管理モジュール18は、ステップ210で受け取ったエンティティ識別子の全てが関連付けセットと関連付けられたかどうかを判断する。ステップ230において、データベース管理モジュール18は、ステップ210で受け取ったエンティティ識別子の全ては関連付けセットと関連付けられていないと判断した場合、データベース管理モジュール18はステップ220に戻って付加的なセグメントを作成し、残りのエンティティ識別子をセグメントに付加する。しかしながら、ステップ230において、データベース管理モジュール18が、ステップ210で受け取ったエンティティ識別子の全てが関連付けセットと関連付けられていると判断した場合、データベース管理モジュール18は、ステップ240において、エンティティ識別子を関連付けセグメントに付加し、関連付けセットへの関連付けセグメントの付加を停止する。
図4に示されるように、ステップ310において、データベース管理モジュール18は、最初に、関連付けセットと解除するエンティティのエンティティ識別子を収集し、入力する。ステップ320において、データベース管理モジュール18は、関連付けセットの新しいセグメントを作成し、最大量のエンティティ識別子がセグメントに付加されるまで、エンティティ識別子を新しいセグメントに付加する。さらに、データベース管理モジュール18は、エンティティ識別子をセグメントに付加する前に、関連付けセットに付加されるエンティティ識別子をソートする(すなわち、番号順に)ことができる。さらに、エンティティ識別子を付加する各々の新しいセグメントには、「DELETE」状態が割り当てられる。最大量のエンティティ識別子がセグメントに付加された後、ステップ330において、データベース管理モジュール18は、ステップ310で受け取ったエンティティ識別子の全てが関連付けセットと解除されたかどうかを判断する。ステップ330において、データベース管理モジュール18は、ステップ310で受け取ったエンティティ識別子の全てが関連付けセットと解除していないと判断した場合、データベース管理モジュール18は、ステップ320に戻って、新しいセグメントを作成し、残りのエンティティ識別子をセグメントに付加する。しかしながら、ステップ330において、データベース管理モジュール18が、ステップ310において受け取ったエンティティ識別子の全てが関連付けセットと解除されていると判断した場合、データベース管理モジュール18は、ステップ340において、エンティティ識別子を解除セグメントに付加し、関連付けセットへの解除セグメントの付加を停止する。
幾つかの例示的な実施形態において、システムから削除されたエンティティは、多数の関連付けの一部であった可能性があり、それにより、従来の関連付けセット構造における削除が非常に高価な動作になる(すなわち、一括削除(bulk deletion))。本発明の実施形態は、各関連付けセットから各々の削除済みエンティティ識別子を個々に要求するのではなく、削除済みエンティティ識別子をグローバル削除セットなどの単一のセットに付加することを可能にする。関連付けに照会を行うたびに又は関連付けを他の方法で取り出すたびに、結果又は出力がグローバル削除セットのエンティティにより事後フィルタリングされる(post-filtered)ので、それらは、クエリ結果から適切に除外される。これは、従来の手法よりもずっと効率的に解除のスケール変更を可能にする。
関連付けセグメント又は解除セグメントに付加されたエンティティ識別子は、時間順である必要はないが(しかし、エンティティ識別子は、関連付け又は解除セグメント内で番号順でなければならない)、関連付け又は解除セグメントは、関連付けセット100内で時間順に順序付けられる。バックグラウンド併合器スレッド(background merger thread)と呼ばれるバックグラウンド・プロセスを用いて、データベース管理モジュール18により、定期的解除セグメントを関連付けセット100に非同期的に適用することができる。バックグラウンド併合器スレッドは、ストレージ及びクエリ性能を最適化するように、関連付けセット100のセグメント110、120、130を位置合わせする。バックグラウンド併合器スレッドは、セグメント110、120、130を併合して、コストを償却し、システム性能を改善しながら、データベース管理モジュール18が、複数のタスク(すなわち、計算及びセグメント・サイズのキャッシング)を実行することを可能にする。
図5は、関連付けセットの複数のセグメントのバックグラウンド併合器プロセス400を実行するために、データベース管理モジュール18により行われるステップの手順フローチャートを示す。バックグラウンド併合器プロセス400は、「NEW」、「DELETE」及び「MERGED」の状態を有すると表記された関連付けセットのセグメントを併合する。バックグラウンド併合器プロセス400を実行するとき、以下に説明されるように、セグメントは、「IN PROGRESS」の状態を有すると表記される。バックグラウンド併合器プロセス400は、重複するエンティティ識別子を除去し、既述のように、グローバル削除セットを併合されるセグメントに適用することにより、関連付けセットのセグメントを最適化する。バックグラウンド併合器プロセス400は、ロックフリー(lock free)であり、これは、データベース管理モジュール18が関連付けセットのセグメントの全て又は一部でバックグラウンド併合器プロセス400を実行する間、依然として関連付けセットに照会を行い得ることを意味する。
図5に示されるように、ステップ405において、データベース管理モジュール18は、最初に、データベース17内に格納される関連付けセットの全てを取り出す。ステップ410において、データベース管理モジュール18は、ステップ405で受け取った関連付けセットのリスト内の次の関連付けセットを読み取る又は分析する。関連付けセットのリストを最初に読み取るとき、次の関連付けセットは、ステップ405で取り出した第1の関連付けセットである。ステップ415において、データベース管理モジュール18は、ステップ410で読み取られた関連付けセットが併合を必要とするかどうかを判断する。関連付けセットが、「NEW」又は「DELETE」の状態を有すると表記されたいずれかのセグメントを含む場合、関連付けセットは、併合を必要とし得る。
ステップ415において、データベース管理モジュール18は、関連付けセットを併合する必要があると判断する場合、ステップ420において、データベース管理モジュール18は、「NEW」、「DELETE」及び「MERGED」の状態を有すると表記された関連付けセット内のセグメントの全てを取り出す。次に、ステップ425において、データベース管理モジュール18は、関連付けセットについての新しいセグメントを作成し、新しいセグメントは、「IN PROGRESS」の状態を有すると表記される。ステップ430において、データベース管理モジュール18は、ステップ420で取り出されたセグメントからのエンティティ識別子を、ステップ425で作成された新しいIN PROGRESSセグメントに付加する。後の時点で解除セグメントが関連付けセットに付加された場合、関連付けセグメント及び解除セグメントの両方の一部であったいずれのエンティティ識別子も、IN PROGRESSセグメントに付加されない。エンティティ識別子は、IN PROGRESSセグメントがエンティティ識別子の最大数に達するまで、ステップ430においてIN PROGRESSセグメントに付加される。ステップ435において、データベース管理モジュール18が、ステップ420の併合されるセグメントから依然として残っているかどうかを判断する。ステップ435において、データベース管理モジュール18が、併合する必要があるエンティティ識別子が依然として存在すると判断した場合、データベース管理モジュール18は、ステップ425に戻って新しいIN PROGRESSセグメントを作成し、これに残りのエンティティ識別子を付加する。
しかしながら、ステップ435において、データベース管理モジュール18が、エンティティ識別子の全てが併合されたと判断した場合、次に、ステップ440において、データベース管理モジュール18は、IN PROGRESSセグメントの全ての状態を「IN PROGRESS」から「MERGED」に変更する。次に、ステップ440において、データベース管理モジュール18は、関連付けセットから、「NEW」、「DELETE」及び「MERGED」の状態を有すると以前に表記されたセグメントの全てを削除又は除去する。
次に、ステップ450において、データベース管理モジュール18が、それ以上の関連付けセットが併合されるかどうかを判断する。ステップ450において、データベース管理モジュール18が、さらなる関連付けセットを併合する必要があると判断した場合、データベース管理モジュール18は、ステップ410に戻って、取り出した関連付けセットのリスト内の次の関連付けセットを読み取る。しかしながら、ステップ450において、データベース管理モジュール18が、それ以上の関連付けセットを併合する必要はないと判断した場合、データベース管理モジュール18は、バックグラウンド併合器プロセス400を終了する。
ここで図6及び図7を参照すると、関連付けセットについてデータベースに照会を行うための、データベース管理モジュール18により行われるステップ500の手順フローチャートが示される。以前に説明され、示されるように、関連付けセット100の各セグメント110、120、130は、エンティティのエンティティ識別子として働く整数のソートされたリストである。幾つかの実施形態において、クライアント・システム20は、データベース・クエリ・モジュール22を通じて、関連付けセットについてのクエリをサーバ・システム10に送る。他の実施形態において、サーバ・システム10は、クライアント・システム20からクエリ要求を受け取ることなく、データベース17に照会を行うことができる。これらの実施形態のいずれにおいても、サーバ・システム10は、データベース管理モジュール18を介して、データベース17に照会を行う。
図6に示されるように、ステップ510において、データベース管理モジュール18は、最初に、データベース17から取り出される関連付けセットの識別子又は識別を入力する、又はクライアント・システム20から受け取る。ステップ520において、データベース管理モジュール18は、ステップ510で識別された関連付けセット内の次のエンティティ識別子を取り出す。データベース管理モジュール18が、最初に、関連付けセットのエンティティ識別子を取り出そうと試みるとき、受け取るエンティティ識別子は、関連付けセットの第1のエンティティ識別子である。しかしながら、データベース管理モジュール18により関連付けセットからエンティティ識別子を取り出そうとする後の試行は、次のエンティティ識別子を返す。ステップ530において、データベース管理モジュール18は、ステップ510において識別され、取り出された関連付けセットから、それ以上のエンティティ識別子を取り出す必要があるかどうかを判断する。データベース管理モジュール18が、より多くのエンティティ識別子を取り出す必要があると判断した場合、データベース管理モジュール18は、ステップ520に戻り、関連付けセットから次のエンティティ識別子を取り出す。しかしながら、ステップ530において、データベース管理モジュール18が、エンティティ識別子の全てが関連付けセットから取り出されたと判断する場合、次に、データベース管理モジュール18によりクエリ・ステップ500が終了する。クライアント・システム20がクエリを受け取った場合、データベース管理モジュール18は、取り出したエンティティ識別子を、クエリを発したクライアント・システムに送ることができる。
図7は、図6に示されるクエリ・プロセス500のステップ520のより詳細な手順フローチャートを示す。より具体的には、図7は、関連付けセットから次のエンティティ識別子を取り出すための手順フローチャートを示す。ステップ550において、データベース管理モジュール18は、関連付けセットのセグメント(すなわち、「NEW」、「DELETE」及び「MERGED」の状態を有すると表記されたセグメント)の全てを逆時間順に配列する。従って、既述のように、関連付けセットのセグメントは、関連付けセットに付加された最新のセグメントから、関連付けセットに付加された最も古いセグメントの順に配置される。ステップ555において、データベース管理モジュール18は、関連付けセットの各セグメントの第1のエンティティ識別子を用いて、優先度キューを実施する。より具体的には、データベース管理モジュール18は、各セグメントの第1エンティティ識別子のヒープ(heap)を構築し、ここで、時間順が優先度である。次に、ステップ560において、データベース管理モジュール18は、そのセグメントから、ヒープの先頭に配置されたエンティティ識別子を除去する。このヒープの先頭の除去されたエンティティ識別子が、「先頭の」エンティティ識別子である。ステップ565において、データベース管理モジュール18は、セグメントに対してヒープ化(heapify)プロセスを実行し、ここで、データベース管理モジュール18は、先頭のエンティティ識別子がヒープ及びその関連したセグメントから除去された後、各セグメントの第1のエンティティ識別子を用いて、ヒープを再構成する。
ステップ570において、データベース管理モジュール18は、除去された「先頭の」エンティティ識別子が、解除セグメント(すなわち、「DELETE」の状態を有すると表記されたセグメント)からのものであるかどうかを判断する。ステップ570において、データベース管理モジュール18が、「先頭の」エンティティ識別子は、削除された又は解除セグメントからのものであると判断した場合、次に、ステップ575において、データベース管理モジュール18は、そのセグメントから、ヒープ内の「次の」エンティティ識別子を除去する。この「次の」エンティティ識別子は、「先頭の」エンティティ識別子と同じセグメントからのものであることもあり、又は関連付けセットのいずれか他のセグメントからのものであることもある。ひとたび「次の」エンティティ識別子がそのセグメントから除去されると、ステップ580において、データベース管理モジュール18は、関連付けセットのセグメントに対して別のヒープ化プロセスを実行する。従って、データベース管理モジュール18は、各セグメントの第1のエンティティ識別子を用いてヒープを再構成する。ステップ585において、データベース管理モジュール18は、「次の」エンティティ識別子が「先頭の」エンティティ識別子と等しくないことを検証する。ステップ585において、データベース管理モジュール18が、「次の」エンティティ識別子が「先頭の」エンティティ識別子と等しいと判断した場合、データベース管理モジュール18は、ステップ575に戻って、ヒープから次のエンティティ識別子を除去する。これは、「先頭の」エンティティ識別子が「次の」エンティティ識別子と等しく、かつ、「先頭の」エンティティ識別子が、「次の」エンティティ識別子が付加されたセグメントよりも最近関連付けセット100に付加された解除セグメントからのものであり、その次のエンティティ識別子が表すエンティティが関連付けセットから解除されているために、発生する。従って、次のエンティティ識別子を関連付けセットから出力すべきではない。
しかしながら、データベース管理モジュール18が、ステップ585において、「次の」エンティティ識別子が「先頭の」エンティティ識別子と等しくないと判断した場合、データベース管理モジュール18は、ステップ590において、「次の」エンティティ識別子を「先頭の」エンティティ識別子として設定する。次に、データベース管理モジュール18は、ステップ570に戻って、新しい「先頭の」エンティティ識別子が解除セグメント(すなわち、「DELETE」の状態を有すると表記されたセグメント)からのものであるかどうかを判断する。
ステップ570において、データベース管理モジュール18が、「先頭の」エンティティ識別子が削除されたセグメントからのものではないと判断した場合、次に、ステップ595において、データベース管理モジュール18は、「先頭の」エンティティ識別子の値を出力する。
図を参照すると、図8~図20は、図6及び図7の手順フローチャートにより示されるような関連付けセット100についてデータベース17に照会を行うプロセスの例示的な実施形態である。例示的な実施形態において、関連付けセット600は、6つのセグメント610、620、630、640、650、660を含む。第1のセグメント610は、セグメント・ヘッダ情報612及びセグメント・データ情報614を含む。セグメント・ヘッダ情報612及びセグメント・データ情報614により与えられるように、第1のセグメント610は、関連付けセット600と関連付けられた、2、4、10、23及び30のエンティティ識別子を含む。第2のセグメント620は、セグメント・ヘッダ情報622及びセグメント・データ情報624を含む。セグメント・ヘッダ情報622及びセグメント・データ情報624により与えられるように、第2のセグメント620は、関連付けセット600と関連付けられた、1、34、及び50のエンティティ識別子を含む。第3のセグメント630は、セグメント・ヘッダ情報632及びセグメント・データ情報634を含む。セグメント・ヘッダ情報632及びセグメント・データ情報634により与えられるように、第3のセグメント630は、関連付けセット600と関連付けられた、4、11、34及び56のエンティティ識別子を含む。第4のセグメント640は、セグメント・ヘッダ情報642及びセグメント・データ情報644を含む。セグメント・ヘッダ情報642及びセグメント・データ情報644により与えられるように、第4のセグメント640は、関連付けセット600と関連付けられた、2、11及び35のエンティティ識別子を含む。第5のセグメント650は、セグメント・ヘッダ情報652及びセグメント・データ情報654を含む。しかしながら、第5のセグメント650は、いずれのエンティティ識別子も含まず、セグメント・ヘッダ情報652が、含まれるエンティティ識別子をキャプチャするので、関連付けセット600からエンティティ識別子10及び11を解除する。最後に、第6のセグメント660は、セグメント・ヘッダ情報662及びセグメント・データ情報664を含む。しかしながら、第6のセグメント660は、いずれのエンティティ識別子も含まず、セグメント・ヘッダ情報662が、含まれるエンティティ識別子をキャプチャするので、エンティティ識別子10を関連付けセット600と関連付ける。
図8~図20にさらに示されるように、第6のセグメント660は、一番最近(most recently)関連付けセット600に付加されたセグメントであり、一方、第1のセグメント610は、関連付けセット600に付加された第1のセグメントであった。さらに、各セグメント610、620、630、640、650、660は、それぞれ、先頭のエンティティ識別子618、628、638、648、658、668も含む。関連付けセット600の各セグメント610、620、630、640、650、660の先頭のエンティティ識別子618、628、638、648、658、668は、それぞれのセグメント610、620、630、640、650、660の第1のエンティティ識別子であり、ここで、エンティティ識別子の時間順は優先度である。言い換えれば、関連付けセット600の各セグメント610、620、630、640、650、660の先頭のエンティティ識別子618、628、638、648、658、668は、各セグメント610、620、630、640、650、660のエンティティ識別子の最小値である。
図9に示されるように、データベース管理モジュール18が、関連付けセット600に対して、図7に示されるようなステップ560、565、570及び595を実行すると、第2のセグメント620のエンティティ識別子「1」が、関連付けセット600の第1のエンティティ識別子として出力される670。「1」のエンティティ識別子は、セグメント610、620、630、640、650の各々の最小のエンティティ識別子であるので、「1」のエンティティ識別子は、ヒープの「先頭の」エンティティ識別子(すなわち、各セグメント610、620、630、640、650、660についての618、628、638、648、658、668の各々の先頭のエンティティ識別子の群)である。さらに、データベース管理モジュール18は、エンティティ識別子「1」は、解除又はDELETEセグメント(すなわち、セグメント640、650)からのものではないと判断し、従って、「1」のエンティティ識別子を出力する。
図10に示されるように、エンティティ識別子「1」を除去され、出力された670後、ひとたびデータベース管理モジュール18がヒープ化プロセスを実行すると、それは第2のセグメント620の次の時間順のエンティティ識別子であるので、「34」のエンティティ識別子が第2のセグメント620の先頭のエンティティ識別子628として働く。
さらに、データベース管理モジュール18がヒープの先頭におけるエンティティ識別子を除去すると、1つは第4のセグメント640からのものであり、1つは第1のセグメント610のものからのである、2つの「2」のエンティティ識別子が存在する。第4のセグメント640は、第1のセグメント610よりも最近付加されたので、第4のセグメント640からの「2」のエンティティ識別子は、第1のセグメント610からの「2」のエンティティ識別子に先行する又はこれよりも優先される。データベース管理モジュール18が第4のセグメント640からの「2」のエンティティ識別子を評価するとき、データベース管理モジュール18は、第4のセグメント640からの「2」のエンティティ識別子がDELETEセグメントからのものであると判断する(すなわち、図7のステップ570)。図7に示されるプロセスの以下のステップ575、580及び585において、データベース管理モジュール18は、次のエンティティ識別子が第1のセグメント610からの「2」のエンティティ識別子であると判断する。第1のセグメント610からの「2」のエンティティ識別子は、第4のセグメント640からの「2」のエンティティ識別子と等しく、かつ、第4のセグメント640からの「2」のエンティティ識別子は図10に示されるように、第1のセグメント610よりも最近生じたDELETEセグメント640からのものなので、データベース管理モジュール18は、「2」のエンティティ識別子を出力670しないと決定する。
しかしながら、図11に示されるように、データベース管理モジュール18が第3の反復を実行し、ヒープから次のエンティティ識別子を除去すると(図7のステップ575)、データベース管理モジュール18は、第1及び第3のセグメント610、630の両方から「4」のエンティティ識別子を出力する。図11に示されるように、第3の反復において、「4」のエンティティ識別子は、第1及び第3のセグメント610、630の先頭のエンティティ識別子618、638として働く。「4」のエンティティ識別子は第1及び第3のセグメント610、630からのものであり、かつ、第1及び第3のセグメント610、630はどちらも関連付けセグメントであるので、データベース管理モジュール18は、反復3において、「4」のエンティティ識別子を出力する670。
図12を参照すると、データベース管理モジュール18が関連付けセット600に対して図7のプロセスの第4の反復を実行し、ヒープの先頭にあるエンティティ識別子を除去すると、第1のセグメント610からのもの、第5のセグメント650からのもの、及び第6のセグメント660からのものである、3つの「10」のエンティティ識別子が存在する。示されるように、第5のセグメント650は、DELETEセグメントであるが、第1及び第6のセグメント610、660は、関連付けセグメント(INSERTセグメント)である。第6のセグメント660は、第1のセグメント610及び第5のセグメント650より最近付加されたので、第6のセグメント660からの「10」のエンティティ識別子は、第1のセグメント610又は第5のセグメント650のいずれかからの「10」のエンティティ識別子に先行する又はこれよりも優先される。データベース管理モジュール18が第6のセグメント660からの「10」のエンティティ識別子を評価するとき、データベース管理モジュール18は、第6のセグメント660からの「10」のエンティティ識別子がDELETEセグメントからのものではないと判断する(すなわち、図7のステップ570)。第6のセグメント660はDELETEセグメントではないので、データベース管理モジュール18は、反復4において、「10」のエンティティ識別子を出力する670。
図13に示されるように、データベース管理モジュール18が、関連付けセット600に対して図7のプロセスの第5の反復を実行し、ヒープの先頭にあるエンティティ識別子を除去すると、1つは第3のセグメント630からのもの、1つは第4のセグメント640からのもの、及び1つは第5のセグメント650からのものである3つの「11」のエンティティ識別子が存在する。示されるように、第4及び第5のセグメント640、650は、DELETEセグメントであるが、第3のセグメント630は、関連付けセグメントである。第5のセグメント650及び第4のセグメント640の両方とも、第3のセグメント630より最近関連付けセット600に付加されたので、第5のセグメント650からの「11」のエンティティ識別子は、第4のセグメント640又は第3のセグメント630のいずれかからの「11」のエンティティ識別子に先行する又はこれより優先される。従って、データベース管理モジュール18が第5のセグメント650からの「11」のエンティティ識別子を評価するとき、データベース管理モジュール18は、第5のセグメント650からの「11」のエンティティ識別子がDELETEセグメントからのものであると判断する(すなわち、図7のステップ570)。第5のセグメント650はDELETEセグメントであるので、反復5において、データベース管理モジュール18は、図7に示されるプロセスの以下のステップ575、580及び585において、次のエンティティ識別子は、第4及び第3のセグメント640、630からの「11」のエンティティ識別子であると判断する。第3及び第4のセグメント630、640からの「11」のエンティティ識別子は、第5のセグメント650からの「11」のエンティティ識別子と等しく、かつ、図13に示されるように、第5のセグメント650からの「11」のエンティティ識別子は、第3又は第4のセグメント630、640よりも最近生じたDELETEセグメント640であるので、データベース管理モジュール18は、「11」のエンティティ識別子を出力しない670と判断する。
データベース管理モジュール18は、該データベース管理モジュール18が、次のエンティティ識別子が第5のセグメント650からの「11」のエンティティ識別子と等しくないことを見出すまで、図7に示されるプロセスのステップ575、580及び585を反復し続ける(すなわち、ヒープから次のエンティティ識別子を除去し、ヒープ化し、「次の」エンティティ識別子を「先頭の」エンティティ識別子と比較する等)。図14に示されるように、「11」のエンティティ識別子を出力すべきではないと評価した後、及び、ヒープ化(例えば、図7のステップ580)を実行した後、データベース管理モジュール18は、図7のステップ575において、ヒープ内の次のエンティティ識別子は、第1セグメント610からの「23」のエンティティ識別子であると判断する。「23」のエンティティ識別子は、第1のセグメント610においてのみ見出され、かつ、第1のセグメント610は、DELETEセグメントからのものではないので、データベース管理モジュール18は、次に「23」のエンティティ識別子を出力する670。
図15を参照すると、データベース管理モジュール18が、関連付けセット600に対して図7のプロセスの第7の反復を実行し、ヒープの先頭にあるエンティティ識別子を除去すると、データベース管理モジュール18は、第1のセグメント610からの「30」のエンティティ識別子を出力する670。図示され、既述したように、第1のセグメント610はDELETEセグメントではなく、従って、データベース管理モジュール18が第1のセグメント610からの「30」のエンティティ識別子を評価すると、データベース管理モジュール18は、第1のセグメント610からの「30」のエンティティ識別子が、DELETEセグメントからのものではないと判断し(すなわち、図7のステップ570)、「30」のエンティティ識別子を出力する670。
同様に、図16に示されるように、データベース管理モジュール18が、関連付けセット600に対して図7のプロセスの第8の反復を実行し、ヒープの先頭にあるエンティティ識別子を除去すると、データベース管理モジュール18は、第2及び第3のセグメント620、630の両方とも「34」のエンティティ識別子を含むことを見出す。示されるように、第3のセグメント630は、第2のセグメント620よりも最近関連付けセット600に付加され、第2のセグメント620に先行する又はこれより優先される。さらに、第2及び第3のセグメント620、630は両方とも関連付けセグメントである。従って、データベース管理モジュール18が第3のセグメント630からの「34」のエンティティ識別子を評価するとき、データベース管理モジュール18は、第3のセグメント630からの「34」のエンティティ識別子がDELETEセグメントからのものではないと判断し(すなわち、図7のステップ570)、「34」のエンティティ識別子を出力する670。
図17を参照すると、エンティティ識別子「34」が除去され、出力された後、ひとたびデータベース管理モジュール18がヒープ化プロセスを実行すると、それぞれ、第2、第3及び第4のセグメント620、630、640からの「50」、「56」及び「35」のエンティティ識別子が、ヒープ内に残されたエンティティ識別子である。第4のセグメント640からの「35」のエンティティ識別子は、ヒープの先頭にあるので、データベース管理モジュール18は、評価するヒープから、第4のセグメント640からの「35」のエンティティ識別子を除去する。データベース管理モジュール18が第4のセグメント640からの「35」のエンティティ識別子を評価すると、データベース管理モジュール18は、第4のセグメント640からの「35」のエンティティ識別子がDELETEセグメントからのものであり(すなわち、図7のステップ570)、従って、出力670できないと判断する。
図7に示されるプロセスの以下のステップ575、580及び585において、データベース管理モジュール18は、図18に示されるように、次のエンティティ識別子が、第2のセグメント620からの「50」のエンティティ識別子であると判断する。第2のセグメント620からの「50」のエンティティ識別子は、第4のセグメント640からの「35」のエンティティ識別子と等しくないので、データベース管理モジュール18は、「先頭の」エンティティ識別子を、第2のセグメント620からの「50」のエンティティ識別子に設定する。次に、図7に示されるプロセスのステップ570において、データベース管理モジュール18は、第2のセグメント620からの「50」のエンティティ識別子がDELETEセグメントからのものであるかどうかを評価する。第2のセグメント620は関連付けセグメントであり、DELETEセグメントではないので、データベース管理モジュール18は、「50」のエンティティ識別子を出力670する。
最後に、図19に示されるように、データベース管理モジュール18が、関連付けセット600において図7のプロセスの第11の反復を実行し、ヒープの先頭にあるエンティティ識別子を除去すると、データベース管理モジュール18は、第3のセグメント630からの「56」のエンティティ識別子を出力する670。示されるように、「56」のエンティティ識別子は、評価されるように残された唯一のエンティティ識別子である。さらに、第3のセグメント630はDELETEセグメントではなく、従って、データベース管理モジュール18が第3のセグメント630からの「56」のエンティティ識別子を評価すると、データベース管理モジュール18は、第3のセグメント630からの「56」のエンティティ識別子は、DELETEセグメントからのものではないと判断し(すなわち、図7のステップ570)、「56」のエンティティ識別子を出力670する。
図20は、データベース管理モジュール18が、図8~図20に示される関連付けセット600に照会を行うときの最終出力670を示す。エンティティ識別子の出力670は、関連付けセット600に照会を行うとき、「1」、「4」、「10」、「23」、「30」、「34」、「50」及び「56」である。
クライアント・システム20は、データベース・クエリ・モジュール22を通じて、サーバ・システム10のデータベース管理モジュール18に、様々な理由でデータベース17に照会を行うよう要求する。例えば、データベース17は、法的事項についての保留となっている文書の関連付けセットを含むことができ、従って、所定の文書が保留中であるかどうかを判断するとき、関連付けセットに照会を行い、所定の文書がその中にあるかどうかを調べる。別の例において、関連付けセット照会を行い、幾つの文書が所定のケース、事項、又はプロジェクトに関連するかを判断することができる。この例において、関連付けセットについての全ての関連付け及び解除セグメントが併合された場合、セット内のエンティティの数の単純カウントは、クエリに対して答えを提供し、そこで、全セグメントの数にセグメント・サイズを乗算することにより、計算の速度が上がる。別の例において、関連付けセットに照会を行い、所定の日付より前にどの文書が所定のケースに付加されたかを判断することができる。この例において、関連付けセットが、別個のテーブルではなくペイロードとして関連テーブル内に格納される場合、クエリに迅速かつ効率的に答えることができる。クエリは、最初に、関連付けセット内の全ての文書を取り出し、次に、文書を付加した日付に基づいて、それらの文書を事後フィルタリングすることができる。さらに別の例において、関連付けセットに照会を行い、どの文書が所定の管理人のセットの1又は複数により所有されるかを判断することができる。この例において、データが、全てのその所有者(例えば、管理人)の関連付けセットを含む文書としてモデル化される場合、各文書を走査し、文書の所有者の全ての関連付けセットとクエリ内の管理人のセットとの間の関連付けセットの共通部分の動作を実行することにより、クエリを完了することができる。
関連付けセグメント及び解除セグメントの両方を有する関連付けセットを有するため、いずれの関連付けセットのセグメントも修正する必要がない。関連付けセットのセグメントの各々は不変であり、そのことにより、動作のいずれか1つについて関連付けセット全体をロックすることを必要とすることなく、セグメントの作成、削除、移動、併合、及び照会などの動作を同時に行うことが可能になる。図2に示されるセグメント・データ・テーブル150内の各行は、関連付けセット100の1つのセグメントを示すので、トランザクショナル・ロックの範囲は、多くの場合、テーブル全体ではなく、1つの行だけである。例えば、リンク・テーブル手法を用いる場合、サイズ100,000の関連付けセットは、関連付けに関与するあらゆる動作に関してリンク・テーブル全体(すなわち、100,000行)のロックを必要とする。しかしながら、本発明の実施形態を用いる場合、関連付けセットのセグメントが5,000のエンティティ識別子のみを表す場合、動作が行われるとき、1行しか(すなわち、約5,000のエンティティ識別子)ロックする必要がない。従って、他のセグメント内のエンティティ識別子の関連付けに関与する他の動作は、いずれの並行処理の問題も生じずに、同時に行うことができる。
さらに、幾つかの本発明の実施形態において、関連付けセットのセグメントを読み取る必要があるとき、それをディスクからロードし、展開し、メモリ内にキャッシュして後のアクセスの速度を上げる。弱い参照(weak reference)を用いてこれらのセグメントをメモリ内に格納するので、メモリ使用率が大きい場合、これらのセグメントを廃棄して(例えば、ガベージコレクタにより)、他のスレッドのためにメモリを空けることができる。これにより、次にセグメントを必要とするとき、(例えば、ディスクから)再ロードする必要があるが、この手法は、システムのスケーラビリティ全体を改善することができる。
本明細書で提供される技術には、多数の利点がある。一例として、この技術は、迅速かつ効率的で費用対効果の高い方法で、関連付けセットに照会を行うこと可能にする。さらに、本明細書で与えられる技術は、大量の関連付けセットをモデル化し、効率的かつ迅速な方法で追跡することができる。この新しいシステムは、リンク・テーブル関連付けセットのような他の従来の関連付けセットと関連したコストをなくす。システムはさらに、修正する際、関連付けセット全体をロックし、使用不能にすることを必要とせずに、関連付けセットのエンティティを修正することが可能である。一般的に言うと、本明細書で提供される技術は、コンピュータ技術、特にデータベース内の関連付けセットのストレージに必然的に根ざしている技術的及び経済的問題を解決する。
上述され、図に示される実施形態は、データのセット、特にデータの関連付けセットに対するデータベース・クエリを処理するために実施形態を実施する多くの方法のうちのほんの一部を表すにすぎないことが理解されるであろう。
本発明の実施形態の環境は、任意の数のコンピュータ又は他の処理システム(例えば、クライアント又はエンドユーザ・システム、サーバ・システム等)及びいずれかの所望の方式で配置されたデータベース又は他のリポジトリを含むことができ、本発明の実施形態は、任意の所望のタイプのコンピューティング環境(例えば、クラウド・コンピューティング、クライアント・サーバ、ネットワーク・コンピューティング、メインフレーム、スタンドアロン・システム等)に適用することができる。本発明の実施形態により用いられるコンピュータ又は他の処理システムは、任意の数のいずれかのパーソナル又は他のタイプのコンピュータ又は処理システム(例えば、デスクトップ、ラップトップ、PDA、モバイル・デバイス等)により実装することができ、いずれかの市販のオペレーティング・システム、及びいずれかの市販の及び特化したソフトウェア(例えば、ブラウザ・ソフトウェア、通信ソフトウェア、サーバ・ソフトウェア、データベース管理モジュール18、データベース・クエリ・モジュール22等)の任意の組み合わせを含むことができる。これらのシステムは、情報を入力及び/又は表示するための、いずれかのタイプのモニタ及び入力デバイス(例えば、キーボード、マウス、音声認識等)を含むことができる。
本発明の実施形態のソフトウェア(例えば、データベース管理モジュール18、データベース・クエリ・モジュール22等)は、任意の所望のコンピュータ言語で実装することができ、明細書内に含まれる機能記述、及び図に示されるフローチャートに基づいて、コンピュータ技術分野の当業者により開発できることを理解されたい。さらに、種々の機能を実行するソフトウェアの本明細書でのいずれの参照も、一般に、ソフトウェア制御のもとでこれらの機能を実行するコンピュータ・システム又はプロセッサを指す。本発明の実施形態のコンピュータ・システムは、代替的に、いずれかのタイプのハードウェア及び/又は他の処理回路によっても実装することができる。
コンピュータ又は他の処理システムの種々の機能は、任意の数のソフトウェア及び/又はハードウェア・モジュール又はユニット、処理又はコンピュータ・システム、及び/又は回路の間で任意の方法で分散することができ、ここで、コンピュータ又は処理システムは、互いにローカルに又は遠隔に配置することができ、いずれかの適切な通信媒体(例えば、LAN、WAN、イントラネット、インターネット、配線接続、モデム接続、無線等)を介して通信することができる。例えば、本発明の実施形態の機能は、種々のエンドユーザ/クライアント及びサーバ・システム、及び/又はいずれかの他の中間処理デバイスの間で任意の方法で分散させることができる。フローチャートにおいて上述され、示されるソフトウェア及び/又はアルゴリズムは、本明細書で説明される機能を達成する任意の方法で修正することができる。さらに、フローチャート又は説明における機能は、所望の動作を達成する任意の順序で実行することができる。
本発明の実施形態のソフトウェア(例えば、データベース管理モジュール18、データベース・クエリ・モジュール22等)は、スタンドアロン・システム又はネットワーク若しくは他の通信媒体により接続されるシステムと共に用いられる固定又は携帯可能プログラム製品装置又はデバイスの非一時コンピュータ使用可能ストレージ媒体(例えば、磁気又は光媒体、光磁気媒体、フロッピー・ディスケット、CD-ROM、DVD、メモリ・デバイス等)上で利用可能であり得る。
通信ネットワークは、任意の数の任意のタイプの通信ネットワーク(例えば、LAN、WAN、インターネット、イントラネット、VPN等)により実装することができる。本発明の実施形態のコンピュータ又は他の処理システムは、いずれかの従来の若しくは他のプロトコルを介してネットワーク上で通信するためのいずれかの従来の若しくは他の通信デバイスを含むこともできる。コンピュータ又は他の処理システムは、ネットワークにアクセスするために任意のタイプの接続(例えば、有線、無線等)を用いることができる。ローカル通信媒体は、任意の適切な通信媒体(例えば、ローカル・エリア・ネットワーク(LAN)、ハードウェア、無線リンク、イントラネット等)により実装することができる。
システムは、情報(例えば、関連付けセット、関連付けセグメント、解除セグメント、エンティティ識別子、メタデータ等)を格納するための任意の数のいずれかの従来の若しくは他のデータベース、データストア、又はデータ構造(例えば、ファイル、データベース、データ構造、データ若しくは他のリポジトリ等)を用いることができる。データベース・システムは、情報(例えば、関連付けセット、関連付けセグメント、解除セグメント、エンティティ識別子、メタデータ等)を格納するための任意の数のいずれかの従来の若しくは他のデータベース、データストア、又はデータ構造(例えば、ファイル、データベース、データ構造、データ若しくは他のリポジトリ等)により実装することができる。データベース・システムは、サーバ及び/又はクライアント・システム内に含ませること、又はこれに結合することができる。データベース・システム及び/又はストレージ構造は、コンピュータ又は他の処理システムから遠隔にあっても、又はこれのローカルにあってもよく、いずれかの所望のデータ(例えば、関連付けセット、関連付けセグメント、解除セグメント、エンティティ識別子、メタデータ等)を格納することができる。
本発明の実施形態は、情報(例えば、関連付けセットのエンティティ識別子、エンティティ識別子が関連付けセットに付加された日付等)を取得又は提供するための任意の数のいずれかのタイプのユーザ・インターフェース(例えば、グラフィカル・ユーザ・インターフェース(GUI)、コマンド・ライン、プロンプト等)を用いることができ、ここで、インターフェースは、任意の方法で配置されたいずれかの情報を含むことができる。インターフェースは、情報を入力/表示し、かつ、いずれかの適切な入力デバイス(例えば、マウス、キーボード、タッチスクリーン等)を介して所望のアクションを開始する、任意の数のいずれかのタイプの作動機構(例えば、ボタン、アイコン、フィールド、ボックス、リンク等)を含むことができる。インターフェース画面は、画面の間を任意の方法でナビゲートするためのいずれかの適切なアクチュエータ(例えば、リンク、タブ等)を含むことができる。
本明細書で用いられる用語は、特定の実施形態を説明することのみを目的とし、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈がそうでないことを明確に示していない限り、複数形も含む。用語「含む(comprise)」、「含んでいる(comprising)」、「含む(include)」、「含んでいる(including)」、「有する(has、have)」、「有している(having)」、「備えた(with)」は、本開示で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はその群の存在又は付加を除外するものではないことが、さらに理解されるであろう。
以下の特許請求の範囲に存在する場合、「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物が、明確に特許請求された他の請求要素と組み合わせて機能を実行するための任意の構造、材料、又は動作を含むことを意図したものである。本発明の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲及び趣旨から逸脱することなく、多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。
本発明の様々な実施形態の説明は、例示の目的で提示されたものであり、網羅的であること又は開示される実施形態に限定することを意図したものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの変更及び変形が明らかとなるであろう。本明細書で用いられる用語は、実施形態の原理、実際の用途、又は市場で見出だされる技術に優る技術的改善を最もよく説明するため、又は他の当業者が本明細書に開示される実施形態を理解することを可能にするために選択されたものである。
本発明は、統合の任意の可能な技術的詳細レベルにおける、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語などの手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個人化することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
10:サーバ・システム
12:CPU又はプロセッサ
14:ネットワーク・インターフェース又は通信デバイス
16:メモリ
17:データベース
18:データベース管理モジュール
20:クライアント・システム
22:データベース・クエリ・モジュール
30:ネットワーク
100、600:関連付けセット
110、120、130、610、620、630、640、650、660:セグメント
140:セグメント・ヘッダ・テーブル
150:セグメント・データ・テーブル
400:バックグラウンド併合器プロセス
500:クエリ・プロセス
612、622、632、642、652、662:セグメント・ヘッダ情報
614、624、634、644、654、664:セグメント・データ情報
670:出力

Claims (10)

  1. コンピュータの情報処理により、データのセットに対するデータベース・クエリを処理する方法であって、
    整数空間からの一意の識別子をデータ内の各エンティティに割り当て、各々が前記データ内の対応するエンティティに関係するエンティティの1つ又は複数のセットを作成することと、
    エンティティの各セットについてディスク上に表現を生成することであって、各表現は、対応するセット内のエンティティの前記一意の識別子の範囲を含みかつそれに適しており、その対応するセット内のエンティティの存在を示す、生成することと、
    前記データベース・クエリを満足するデータを取り出すために、エンティティの各セットについての前記表現に基づいてクエリを処理することであって、前記表現は、クエリ時における削除されたエンティティ及び重複するエンティティの遅延した併合及び自動フィルタリングを伴う追記のみの動作である関連付け及び解除動作を定数時間で提供する、処理することと、
    エンティティ識別子により表されるエンティティのセットを複数のセグメントにパーティション化することであって、各セグメントについてのコンテンツ及び各セグメントについてのメタデータは、別個のデータ・オブジェクト内に格納され、各セグメントは、関連付けを示すためのinsert(挿入)タイプ及び解除を示すためのdelete(削除)タイプのうちの一方であり、セグメント・サイズは、要求サイズ、圧縮タイプ、及び実行時最適化に基づき、前記複数のセグメントは、時間順に順序付けられ、セグメントを併合、挿入及び削除することにより、前記エンティティのセットのコンテンツを生成するために用いられる、パーティション化することと、
    前記複数のセグメントに対する動作を同時に実行することと、
    を含む方法。
  2. エンティティの少なくとも1つのセットは、特定のエンティティと関連付けられたエンティティを含む、請求項1に記載の方法。
  3. エンティティの少なくとも1つのセットは、特定のエンティティと解除されたエンティティを含む、請求項1に記載の方法。
  4. エンティティは、人、文書、イベント及びオブジェクトの群からの1つ又は複数のインスタンスを表す、請求項1に記載の方法。
  5. 前記エンティティのセットの各々は、エンティティ識別子の複数のセグメントにパーティション化され、エンティティのセットのセグメントのエンティティ識別子についてのメタデータは、ペイロードとして前記セグメントにインラインで格納される、請求項1に記載の方法。
  6. 前記クエリを処理することは、
    前記複数のセグメントに対する前記クエリを評価し、前記評価したセグメントの各々からの結果を結合することをさらに含む、請求項に記載の方法。
  7. エンティティのセットは、前記エンティティのセットの物理的表現で保存される重複するエンティティ識別子を有する非一意のエンティティを含むマルチセットを含み、前記クエリは、前記セット又はマルチセットの表現を要求する、請求項1に記載の方法。
  8. 請求項1~7の何れか1項に記載の方法を、コンピュータ・ハードウェアによって実行する、システム。
  9. 請求項1~7の何れか1項に記載の方法を、コンピュータに実行させる、コンピュータ・プログラム。
  10. 請求項9に記載の前記コンピュータ・プログラムを、コンピュータ可読ストレージ媒体に記録した、ストレージ媒体
JP2019548553A 2017-03-15 2018-02-20 最適化したビットマップ表現を用いる大規模の関連付けセットの管理 Active JP7030831B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/459,372 US10452631B2 (en) 2017-03-15 2017-03-15 Managing large scale association sets using optimized bit map representations
US15/459,372 2017-03-15
PCT/IB2018/051028 WO2018167584A1 (en) 2017-03-15 2018-02-20 Managing large scale association sets using optimized bit map representations

Publications (2)

Publication Number Publication Date
JP2020514899A JP2020514899A (ja) 2020-05-21
JP7030831B2 true JP7030831B2 (ja) 2022-03-07

Family

ID=63519295

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019548553A Active JP7030831B2 (ja) 2017-03-15 2018-02-20 最適化したビットマップ表現を用いる大規模の関連付けセットの管理

Country Status (6)

Country Link
US (2) US10452631B2 (ja)
JP (1) JP7030831B2 (ja)
CN (1) CN110178128B (ja)
DE (1) DE112018000456T5 (ja)
GB (1) GB2574537A (ja)
WO (1) WO2018167584A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452631B2 (en) 2017-03-15 2019-10-22 International Business Machines Corporation Managing large scale association sets using optimized bit map representations
US11050766B2 (en) * 2018-10-31 2021-06-29 EMC IP Holding Company LLC Generating unique virtual process identifiers for use in network security mechanisms
CN111488340B (zh) * 2019-01-29 2023-09-12 菜鸟智能物流控股有限公司 数据处理方法、装置及电子设备
CN110162543A (zh) * 2019-05-29 2019-08-23 北京奇艺世纪科技有限公司 一种信息查询方法及装置
US11429611B2 (en) * 2019-09-24 2022-08-30 International Business Machines Corporation Processing data of a database system
KR102177064B1 (ko) * 2019-11-18 2020-11-10 재단법인대구경북과학기술원 다항 조인 연산자를 이용한 쿼리 처리 방법 및 그 장치
US20230196882A1 (en) * 2021-12-17 2023-06-22 Amtote International, Inc. Virtual sports league
CN115062075A (zh) * 2022-06-21 2022-09-16 成都秦川物联网科技股份有限公司 基于时序数据处理的工业物联网及其控制方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002157227A (ja) 2000-11-20 2002-05-31 Sony Corp 情報処理装置、コンテンツ情報更新方法、およびコンテンツ情報更新プログラムを記録した記録媒体
JP2002528821A (ja) 1998-08-04 2002-09-03 エンフィッシュ テクノロジー, インコーポレイテッド 共用ファイル環境用の改良された情報格納および検索システムを有する物理格納アーキテクチャのための方法および装置
WO2009144941A1 (ja) 2008-05-30 2009-12-03 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
WO2013157099A1 (ja) 2012-04-18 2013-10-24 株式会社Murakumo データベースの管理方法、データベースシステム、及び、プログラム
US20160321376A1 (en) 2015-04-28 2016-11-03 Microsoft Technology Licensing, Llc Linked data processor for database storage

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790848A (en) * 1995-02-03 1998-08-04 Dex Information Systems, Inc. Method and apparatus for data access and update in a shared file environment
EP1349081A1 (en) * 2002-03-28 2003-10-01 LION Bioscience AG Method and apparatus for querying relational databases
US8577908B2 (en) 2003-03-20 2013-11-05 International Business Machines Corporation Automatic lock management in an abstract database
US20070150489A1 (en) 2005-12-22 2007-06-28 International Business Machines Corporation Method of representing continuum of data as a rolling column within a relational model
US9275129B2 (en) 2006-01-23 2016-03-01 Symantec Corporation Methods and systems to efficiently find similar and near-duplicate emails and files
US7840575B2 (en) * 2006-05-19 2010-11-23 Oracle International Corporation Evaluating event-generated data using append-only tables
US7765215B2 (en) * 2006-08-22 2010-07-27 International Business Machines Corporation System and method for providing a trustworthy inverted index to enable searching of records
US8396838B2 (en) 2007-10-17 2013-03-12 Commvault Systems, Inc. Legal compliance, electronic discovery and electronic document handling of online and offline copies of data
US8484211B2 (en) 2008-07-02 2013-07-09 Lexisnexis Risk Solutions Fl Inc. Batch entity representation identification using field match templates
US8762333B2 (en) * 2009-07-08 2014-06-24 Pivotal Software, Inc. Apparatus and method for read optimized bulk data storage
CN103229167A (zh) 2010-10-06 2013-07-31 星汇数据解决方案公司 用于为电子发现数据编索引的系统和方法
US9189549B2 (en) * 2010-11-08 2015-11-17 Microsoft Technology Licensing, Llc Presenting actions and providers associated with entities
US9244977B2 (en) * 2012-12-31 2016-01-26 Google Inc. Using content identification as context for search
US10621388B2 (en) * 2016-07-20 2020-04-14 Sap Se Automatic delta query support for backend databases
US10452631B2 (en) 2017-03-15 2019-10-22 International Business Machines Corporation Managing large scale association sets using optimized bit map representations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002528821A (ja) 1998-08-04 2002-09-03 エンフィッシュ テクノロジー, インコーポレイテッド 共用ファイル環境用の改良された情報格納および検索システムを有する物理格納アーキテクチャのための方法および装置
JP2002157227A (ja) 2000-11-20 2002-05-31 Sony Corp 情報処理装置、コンテンツ情報更新方法、およびコンテンツ情報更新プログラムを記録した記録媒体
WO2009144941A1 (ja) 2008-05-30 2009-12-03 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
WO2013157099A1 (ja) 2012-04-18 2013-10-24 株式会社Murakumo データベースの管理方法、データベースシステム、及び、プログラム
US20160321376A1 (en) 2015-04-28 2016-11-03 Microsoft Technology Licensing, Llc Linked data processor for database storage

Also Published As

Publication number Publication date
US10452631B2 (en) 2019-10-22
US20190354514A1 (en) 2019-11-21
GB201913189D0 (en) 2019-10-30
CN110178128B (zh) 2023-05-12
DE112018000456T5 (de) 2019-10-02
WO2018167584A1 (en) 2018-09-20
US20180268009A1 (en) 2018-09-20
GB2574537A (en) 2019-12-11
CN110178128A (zh) 2019-08-27
US11372831B2 (en) 2022-06-28
JP2020514899A (ja) 2020-05-21

Similar Documents

Publication Publication Date Title
JP7030831B2 (ja) 最適化したビットマップ表現を用いる大規模の関連付けセットの管理
US20220277028A1 (en) Data relationships storage platform
US10909151B2 (en) Distribution of index settings in a machine data processing system
US8386466B2 (en) Log visualization tool for a data stream processing server
US8527458B2 (en) Logging framework for a data stream processing server
CN104781812B (zh) 策略驱动的数据放置和信息生命周期管理
US10417265B2 (en) High performance parallel indexing for forensics and electronic discovery
US20100293333A1 (en) Multiple cache directories
US20150120656A1 (en) Compacting data file histories
US7958167B2 (en) Integration of unstructed data into a database
JP6929388B2 (ja) クエリリソースキャッシングのためのシステムおよび方法
US20210232604A1 (en) Capturing data lake changes
US20150095340A1 (en) Information Sets for Data Management
WO2020192663A1 (zh) 一种数据管理方法及相关设备
US10747438B1 (en) Reporting using archived data
Manwal et al. Big data and hadoop—a technological survey
US20230017799A1 (en) Nested discovery and deletion of resources
US10713226B1 (en) Managing data using archiving
US10747461B1 (en) Updating objects for archived objects
Pereira et al. Mediator framework for inserting xDRs into Hadoop
Arora et al. Hadoop as a Service On premise Vs over Cloud
Carrión-Escobar et al. The efficiency that non-relational database modeling brings to software development
Rajadnye Is Datawarehouse Relevant in the Era of Big Data?
Huacarpuma et al. Evaluating NoSQL Databases for Big Data Processing within the Brazilian Ministry of Planning, Budget, and Management
Ivalo Data Lakehouse Architecture for Big Data with Apache Hudi

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191112

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200826

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211008

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220222

R150 Certificate of patent or registration of utility model

Ref document number: 7030831

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150