JP2024501404A - システム間における表形式データロケーションの検索 - Google Patents

システム間における表形式データロケーションの検索 Download PDF

Info

Publication number
JP2024501404A
JP2024501404A JP2023532486A JP2023532486A JP2024501404A JP 2024501404 A JP2024501404 A JP 2024501404A JP 2023532486 A JP2023532486 A JP 2023532486A JP 2023532486 A JP2023532486 A JP 2023532486A JP 2024501404 A JP2024501404 A JP 2024501404A
Authority
JP
Japan
Prior art keywords
synopsis
descriptors
column
data
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023532486A
Other languages
English (en)
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 JP2024501404A publication Critical patent/JP2024501404A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

データロケーションを見つけるための手法を提供することができる。第1の表形式データに対応する第1のシノプシスを提供することができる。補助データストレージシステムをスキャンして、補助データストレージシステムに格納された第2の表形式データを識別することができる。第2のシノプシスを得ることができ、シノプシスは、第2の表形式データの第2の列に対応する。シノプシスは、第2の列の各第2の列について、各第2の列のセルのコンテンツの数値表現に従って計算することができる。計算されたシノプシスは、m個の記述子のベクトルを含むことができる。1つ又は複数の記述子の2つのセットを比較することができる。第2のシノプシスの記述子のサブセットが第1のシノプシスの対応する記述子と比較され、第2の表形式データと第1の表形式データのコーパスとの間の潜在的な一致を識別することができる。

Description

本発明は、一般にデータロケーションを見つけるためのコンピュータ実装技術に関する。特に、本発明は、表の列の統計的フィンガープリントに依拠して、異なるストレージシステムに格納された表形式データ間の潜在的な一致を識別するための計算の労力を低減する、表形式データを見つけるためのコンピュータプログラム製品及びコンピュータ実装方法に向けられている。
通常、企業は、多くのトランザクション・システム及び記録システムを有し、これは企業の業務に関連するデータを記録している。データは、リレーショナル・データベース表に格納されることが多い。このような表は、データが列状に配置されていることから「矩形」であると言われ、ユーザには表の行及び列として表示されるのが一般的である。これらのコア・リレーショナル・システムのデータを、例えば分析その他の通常業務のために、他のシステムにコピーすることはよくあることである。データのフォームは矩形のままであるが、異なるフォーマット、異なるファイル名で、様々なストレージシステムに格納されることがある。データがコピー又は再コピーされ、変換されるにつれて、そうしたデータがどこに移動したかを企業が把握することはますます難しくなる。
このことは、ユーザが適切に統治及び管理されたプロセスを通じて制限されたデータソースにアクセスし、これを認証又はガバナンス制御なしに他の文脈で利用できるようにし得るという事実によって、さらに悪化する。その結果、機密データを含むデータセットが、アクセス制御もしくは暗号化又はその両方を伴わないストレージシステムに格納されてしまうことがある。
これは、以下の例に示されるように、悪意というよりも過失によるもので、意図的でないことが多い。ユーザは、知らず知らずのうちに、適合する企業システムから不適合なシステムへとデータを移動させることがある。さらにユーザは、データの一部だけを取り出したり、いくつかの行又は列を削除したりして、データを変換してしまうことがある。さらに、ユーザは、データファイルの名前を変更し、その結果、データが保存されている名前が元のデータファイルの名前と関係ないものとなってしまうこともある。営業担当者は、会社の主要顧客の10%から無作為にサンプルを取り、住所フィールドを削除して、知らないうちに、第三者のストレージサービスに格納されているファイルに保存してしまうかもしれない。
このような問題に対処するために、主としてデータフィンガープリント法及びウォーターマーク法を伴うソリューションが開発されている。データフィンガープリント法は、データセットの小さなダイジェストを作成し、2つの同一のデータセットが同じダイジェストを有するようにするものである。これを行う一般的な方法は、ハッシュ(フィンガープリントとも呼ばれる)を作成することである。しかし、ハッシュは情報のあらゆるビットを入力として使用するため、1ビットの変化でまったく異なるダイジェストになる可能性がある。つまり、ハッシュは最小の変更に対してさえロバストではない。相異なるハッシュのスライディング・ウィンドウ及びデータセット内の最も代表的なビットパターンの測度(measure)を使用することによって、改善が得られる。しかし、このようなフィンガープリント法は、ビットのレベルで機能するものである。しかし、同じリレーショナルデータが、異なるデータレイアウトで様々なストレージシステムに格納されることがあるので、ビットレベルのフィンガープリント法では不十分であるか又は適用できないことがほとんどである。
より一般的には、データセットが異なるストレージシステムに移動されて変更されても認識できるように、ウォーターマークをデータに挿入することができる。このような技術には、組織内で作成されるすべての矩形データセットに、典型的にはデータを作成するためのツール上で利用可能ではない、所定のアルゴリズムを用いて、系統的にウォーターマークを入れる必要があるという大きな欠点がある。これは、大規模な組織で通常、その多くは組織自体によって管理されていない(例えば、クラウドプロバイダによる)多数のデータストレージシステムにわたって作成及び更新される数千ないし数十万のデータセットには非現実的である。
第1の態様によれば、本発明は、データロケーションを見つけるコンピュータ実装方法として具体化される。本方法は、第1のシノプシスが利用可能になっていると仮定したコンテキストで実行される。シノプシスは、1つ又は複数の参照データストレージシステムに格納された表形式データのコーパスの列に対応する。このような表形式データ及び対応する列は、区別のために「第1の表形式データ」及び「第1の列」と称される。補助データストレージシステムがスキャンされ、補助データストレージシステムに格納された更なる表形式データ(「第2の表形式データ」)を識別する。第2の表形式データは、「第2の列」と呼ばれる列を含む。次に、第2の表形式データの第2の列に対応するシノプシスが取得される(「第2のシノプシス」)。この目的のために、第2の列の各第2の列について、各第2の列のセルのコンテンツの数値表現に従ってシノプシスが計算される。計算されたシノプシスは、m個の記述子のベクトルを含み、mは1以上であるが、典型的にはより大きく、例えば、m≧6である。各記述子は、対応する列のセルのコンテンツの数値表現の測度である。記述子は、例えば、平均、標準偏差、歪度、エントロピー、平均頻度などの統計的測度とすることができる。最後に、1つ又は複数の記述子の2つのセットが比較される。すなわち、第2のシノプシスの記述子の少なくともサブセットが、第1のシノプシスの対応する記述子(すなわち、同じ型の記述子)と比較され、第2の表形式データと第1の表形式データのコーパスとの間の潜在的な一致を識別する。
好ましい実施形態では、比較は、記述子のサブセットのみに限定される。このサブセットは、2つのセットを比較する前に識別することができ、例えば、コーパス内の対応する記述子から見て最異常値(most unusual value)を有する記述子のみを含むものとすることができる。限られた記述子のセットに依拠することで、(比較を実行するために必要な)データ転送及びストレージの要件が緩和される。
別の態様によれば、本発明は、データロケーションを見つけるためのコンピュータプログラム製品として具体化される。コンピュータプログラム製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含む。プログラム命令は、処理手段によって実行可能であり、処理手段に上記方法のすべてのステップを実施させるようになっている。
以下、本発明を具体化するコンピュータ化された方法及びコンピュータプログラム製品を、非限定的な例として、添付の図面を参照しながら説明する。
添付の図は、同様の参照数字が別個の図全体を通して同一又は機能的に類似した要素を指し、以下の詳細な説明と共に本明細書に組み込まれ、その一部を構成するものであり、種々の実施形態をさらに例示し、すべて本開示に従う種々の原理及び利点を説明するのに役立つ。
2つのデータストレージシステムを模式的に示す。実施形態において、第1の表形式データのコーパスは参照データストレージシステムに格納され、一方、第2の表形式データは補助データストレージシステムに格納される。 実施形態において、補助データストレージシステム上で初期に識別される(小さい)表の一例を示す。 (A)は、実施形態において必要とされる、列の一部の変換後の図2の表の数値表現を示す。(B)は、実施形態による、(A)の数値表の列について得られる、列レベルのシノプシスのセットを示す。各シノプシスは、1つの列に対応し、統計的記述子のセットを含む。この例では、簡略化のために2つの統計的記述子のみが示されている。実施形態において、表のフィンガープリントを形成するために最異常記述子値(太字で示す)のサブセットが選択される。 実施形態において、所与の右側(RHS)の表と左側(LHS)の参照表との間の一致を識別するためにどのようにシノプシスを使用することができるかを模式的に示す。 実施形態による、表形式データロケーションを追跡する方法の高次ステップを示すフローチャートである。 図1の参照及び補助ストレージシステムのいずれか又は各々に関与し得る、また、本発明の実施形態に関与する1つ又は複数の方法ステップを実装するのに適した、汎用コンピュータ化ユニットを模式的に表す。
添付の図面は、実施形態に関与するデバイス又はその部分の簡略化された表現を示している。特に、説明を容易にするために、描かれた表は意図的に小さく、そのレコードは意図的に簡略化されている。図中の類似の(又は機能的に類似の)要素には、特に断りのない限り、同じ参照数字が割り当てられている。
以下の説明は、以下のように構成されている。まず、セクション1において、一般的な実施形態及び高次の変形例について説明する。セクション2は、より具体的な実施形態に向けられたものであり、特に図6のフローの詳細な説明を含む。セクション3は、技術的な実装の詳細に関する。本方法及びその変形例を総称して「本方法」と呼ぶことに留意されたい。すべての符号Sn(例えば、S10、S15など)は、図6のフローチャートの方法ステップを指し、参照数字は、本発明の実施形態に関与する、図1に示すシステムの物理的部分もしくはコンポーネント、又はデータ構造もしくはそのコンポーネントに関係する。
図1-図6を参照して、まず、データロケーションを見つけるコンピュータ実装方法に関する本発明の一態様が説明される。
図1は、本方法が実行される技術的コンテキストを示す。表形式データ14のコーパス12が1つ又は複数の参照データストレージシステム1に格納されている。システム1は、特に、多くの企業で一般的な、トランザクションのシステム、記録のシステム、(階層化された)ストレージシステムなどを含むことができる。すなわち、ストレージシステム1は、コンピュータ及びストレージ手段を含む。
表形式データは、列を含み、その列に対してシノプシスが利用可能であると仮定される。そのようなシノプシスは、以下で詳細に説明される。発明の概要において示したように、システム1に格納された表形式データは、「第1の表形式データ」と称され、これは「第1の列」を含む。補助データストレージシステム2も同様に、同じく列を含む更なる表形式データ24(「第2の表形式データ」と称される)を格納することができる。表形式データとは、データが列状に配置されていること、すなわち矩形データを意味する。表形式データは、典型的には(行及び列を有する)1つ又は複数の表として表すことができ、対応するデータ構造をキャプチャするファイルとして格納されることができる。図1のコンテキストでは、システム1、2の各々は、潜在的に、そのような表形式データ14、24を多数格納することができる。表形式データ24は、例えば、データベース又は任意のフォルダ22の一部を形成してもよい。
本明細書では、「列」という用語は、リレーショナル・データベースの場合と同様に定義される。すなわち、列は、レコードと呼ばれることもある、データ値のセットであるが、レコードは、行全体を指すために用いられることもある。このようなデータ値は、通常、同じ型(例えば、数値データ、テキスト又は任意の型の文字列、画像、音声ファイル、映像、等)である。列は、典型的には、名前又は任意の型の文字列、数字、又はコードによってラベル付けされ(それにより識別され)、それは、そのレコードではなく、列の属性とみなされる。各行は、列の各々に対するデータ値を含む。すなわち、各行はタプルのセットとして解釈することができる。セル(フィールドともいう)は、行と列との交点であり、列の特定の1レコードに対応する。
表形式データの一例を図2に示し、これは企業情報をキャプチャし、列は以下の名称「会社名」、「本社」、「従業員数」、「2019年の収益(十億、USドル)」、「主な事業」、及び「直近のイベント」で識別される。図2は、さらに、意図的に簡略化された、対応するレコードを示す。各列は、同じ型のデータを含む。添付図面では、列は、通例どおり(権利を損なうことなく(without prejudice))縦方向で表現されている。しかしながら、「列」という用語はその横方向表現を排除するものではなく、表の行と列は容易に入れ替えることができることに留意されたい。
本方法は、1つ又は複数のコンピュータ化エンティティ11、21によって、例えば、分散方式で実行することができる。そのようなエンティティは、主に補助システム2、参照システム1、又は参照システム及び補助システムの両方で動作することができる。例えば、本方法は、システム1、2の一方又は各々で動作するアプリケーションによって実装することができ、典型的には2つのシステム1、2間の交換を許容し又は要求する。変形例では、本方法は、本方法のステップを実行するために必要に応じて好適には各システム1、2と相互作用する、外部コンピュータ化エンティティによって実行される。実施形態において、本方法は、ストリーム処理式の分散型メッセージングシステムに依拠して、データを通信し、必要な動作を可能にする。しかしながら、変形例では、本方法は、例えば単にウェブサービスに依拠してもよい。
シノプシス(「第1のシノプシス」)は、第1の表形式データについて利用可能であると仮定されるが、補助システム2上の第2の表形式データについては、少なくとも本方法を実行する前には、必ずしも必要ではない(典型的には利用可能ではない)。したがって、補助データストレージシステム2をスキャンして(図6のステップS15)、そこに格納された表形式データ24、すなわち「第2の表形式データ」を識別する必要がある。第1の表形式データと同様に、第2の表形式データは「第2の列」と称される列を含む。
次に、ステップS20-S45において、シノプシス261-266(「第2のシノプシス」)を得る。第2のシノプシスは、第2の表形式データ24の第2の列にそれぞれ対応する。すなわち、第2のシノプシスは、第2の列の各々についてシノプシスを計算する(ステップS40)ことによって得られる。各シノプシスは、対応する列のセルのコンテンツの数値表現251-256に従って計算される。最終的に、シノプシスはm個の記述子のベクトルを含み、ここでm≧1である(ただし、mは典型的にはより大きく、例えば、m≧6である)。必要であれば、数十種類の記述子を想定することができ、詳細は後述する。各記述子は、対応する列の数値表現251-256の統計的測度などの測度である。図3(A)及び図3(B)を参照のこと。
最後に、ステップS70において、第2の表形式データ24と第1の表形式データ14のコーパスとの間の潜在的な一致を識別する観点から、1つ又は複数の記述子の2つのセットが(各々)比較される。すなわち、(ステップS20-S45で得られた)第2のシノプシス261-266の記述子の少なくともサブセットが第1のシノプシスの対応する記述子16、すなわち同じ型の記述子と比較S70される。すなわち、算術平均は別の算術平均と比較され、エントロピーは別のエントロピーと比較される、等である。比較された記述子が、全体として十分に対応する場合(S75:YES)、第2の表形式データ24とコーパス内の表形式データ14との間に一致が見いだされる。
上記の方法は、データロケーションを適切に見つけるために必要に応じて、典型的には複数の補助ストレージシステム2の複数の表について繰り返し実行される(図6のフローで示唆されるように。ステップS80-S10及びS90-S20を参照)。本方法は、特に表形式データのロケーションを追跡するために実行することができる。
なお、本方法の意図される用途は、個人ユーザーデータなどのデータを不適切に又は不当に追跡することではない。むしろ、こうした用途は、例えば、ビジネス、取引、及び技術上の秘密などの独占的データ及び機密データの拡散をセキュリティ保護する又は制限すること、又は重複して保存されたデータを識別することを目的としている。技術的に言えば、この方法の目的は、例えば企業の、いくつものストレージシステムにわたる表形式データを適切に見つけるために必要な計算を大幅に簡素化することである。異なるロケーションに格納された表間の一致を識別することは、特に、背景技術のセクションで説明したように、表が一部だけコピーされて他のロケーションにペーストされたり、その他変更されたりする場合があるので、計算の観点から言って非常に困難であり得る。このような場合、背景技術で説明したように、表全体の単なるハッシュ(フィンガープリント)を使用してもデータを見つけることはできない。
この課題に対処するため、本方法では、表全体ではなく列レコードに適用されるパーミッシブな(permissive)記述子を使用する。これは、典型的には、記述子を計算する前に列レコードの一部又は全部を変換することを必要とする。このような記述子は、特に統計的記述子とすることができ、表の列の数値表現の統計量の要約を可能にする。列は典型的には同じ型のデータを含むので、統計的記述子は、それらの数値表現の本質的な側面を適切にキャプチャすることができ、したがって、パーミッシブ・フィンガープリント26、すなわち、変更に対してパーミッシブなフィンガープリントとして機能する。統計的測度は、近い数値のセットが近い統計的測度をもたらす限りは、実際にパーミッシブである。好適な統計的測度は、例えば、統計的平均、例えば、算術平均、幾何平均、調和平均、又は一般化平均式又は一般化f平均から得られる任意の平均を含むことができる。他の記述子として、中央値、最頻値、範囲、分散、標準散布度、中心モーメント等を挙げることができる。一般に、好適な統計的記述子は、対応する数値のロケーション、広がり、もしくは形又はそれらの組合せに関連するものとすることができる。統計的記述子以外に、同様の特性を有する、局所性鋭敏型ハッシュ法及び局所性保存型ハッシュ法フィンガープリントなどの他の記述子を使用してもよい。
したがって、各列に対して記述子のセットをこの列のパーミッシブ・フィンガープリントとして使用することができる。列を部分的に複製しても、元の列と同じ統計的性質が本質的に保持され得る。さらに、使用される記述子の多重度(ここでm≧2)により、統計的記述における情報の損失を補償することが可能になり、比較S70における偽陽性が回避される。また、記述子は列に適用されるため、列のうちの幾つかを削除することによって変更された表も、元の表と部分的に一致し得る。理解されるように、提案される手法は、使用される記述子の性質(例えば、統計的記述子)のみならず、それらが適用される粒度(列)にも起因して、変更に対してパーミッシブである。
その結果、この手法は、表全体のハッシュに依存するフィンガープリント法とは異なり、部分的な一致を見つけることを可能にする。言い換えれば、本手法は、リロケートされた表形式データ24が表形式データ14に全体的又は部分的に対応するかどうかをある一定の確率で判定することを可能にする。
記述子の数であるmは、典型的には列に含まれるレコードの数よりもはるかに小さいので、本方法は、数十万以上の表を数千以上のコンピュータ化ストレージシステムを通じて格納する企業であっても依然として計算が扱いやすい。さらに、本方法は表を事後にスキャンするので、ウォーターマーク法とは異なり、ユーザは表形式データの作成又は更新の方法を変更する必要がない。
このすべてを、以下、本発明の特定の実施形態を参照して詳細に説明する。前述のように、シノプシスは数値データに基づいて計算S40されるが、図2に例示されるように、列のうちの一部が初期には他の型のデータを含んでいる場合がある。この例では、初期表は、整数値(「従業員数」、3番目の列)又は実数(「2019年の収益(十億、USドル)」、4番目の列)を収めた列を含む。このような列は、記述子を直接計算することができるため、変換を必要としない場合がある(ステップS30がNOの場合の後のステップS40)。すなわち、セルは既に数値で構成されており、対応するシノプシスを計算するのに既に適したものであり得る。しかし、列のうちの一部は、文字列(「会社名」、「本社」、1番目及び2番目の列)又は文字列のリスト(「主な事業」、後ろから2番目の列)を含む。他の列は、日付を含む場合があり、それは場合によっては記述子の直接計算を可能にしないフォーマット(例えば、「2020年11月6日」)で格納されていることがある。したがって、実施形態において、このような列のレコード(すなわち、セルのコンテンツ)は、それぞれの数値に変換S34される必要がある。そうすることで、対応する列の数値表現が導かれる。最終的に、図3(A)に示されているように、列の各々について適切な数値表現251-256が得られる。図3(A)において、参照数字25は、列の一部の変換後の、初期表形式データ24の数値表現を示す。
言い換えれば、各第2の列のセルのコンテンツは、そのセルが既にシノプシスを得るのに適した値で構成されている場合を除き、適切な数値表現を得るためにそれぞれの数値に変換される必要がある場合がある。典型的には、既に数値で構成されている列データは変換の必要がない。同様に、テキストデータの中には、メトリックをテキストから直接抽出することができるものがある(例えば、辞書にない単語の割合、ユニークな単語の数等)。このように、テキストデータは必ずしも変換する必要があるわけではない。また、日付は、典型的には多くのコンピュータ及びソフトウェアパッケージによって操作及び計算されて数値を生成することができるため、日付も必ずしも常に変換する必要があるわけではない。そのため、初期列データを変換するかどうかは、利用可能な変換方法にも依存する。
その点に関して、選択される変換方法は、好ましくは、列に格納されたデータ値の型に依存する。すなわち、本方法は、まず、列が数値に変換される必要があるかどうかS30判断し、必要がある場合(S30:YES)、この列のセルをそれぞれの数値に変換する。その目的のために、本方法は、列のセルに含まれるデータの型を表すデータ型値を識別しようとすることができる。このようなデータ型値は、例えば、表2で想定されているように、表の属性として既に格納されている(したがって利用可能である)場合があり、表2は、表の下部にそうしたデータ型を(斜体で、人間が読める文字列として)示している。データ型値は、列レコードの一部を形成しない。この例では、それらは、「文字列(1)」、「文字列(1)」、「整数」、「実数」、「文字列(2)」、及び「日付」によって示され、文字列(1)は単一の文字列を指し、文字列(2)は文字列のリスト(例えば、文字列の表)を指す。変形例では、このようなデータ型は、必要に応じて簡単なテストを用いて判定することができる。いずれの場合も、セルのコンテンツは、対応するデータ型に応じて選択S32された変換方法に基づいて、それぞれの数値に変換され得る。
例えば、S32で選択される変換方法は、ハッシュ法であってもよく、図2に示した表の1番目の列及び2番目の列について行われるように、会社名又は国コードといった非関連の文字列についてはハッシュ法で十分である。他の場合において、関連したレコード間の距離を保存するためには、局所性鋭敏型ハッシュ法又は局所性保存型ハッシュ法がより適切であり得る。なお、局所性保存型ハッシュ法及び局所性鋭敏型ハッシュ法は、元データの変換S34に用いられるだけでなく、その後、ダイジェスト、すなわち記述子を得るS40ために用いられることもある。さらに他の場合には、図2の後ろから2番目の列に対して行われるように、特徴抽出法が使用されてもよい。この場合、抽出は、各レコードの文字列の平坦化されたリストの単語セグメント化を使用し、得られたベクトルは、その後、次元削減技術を使用して1D空間に射影される。
密接に関連する埋込みアルゴリズムをテキスト等に使用することができる。他の特徴抽出/次元削減スキームを、必要に応じて、例えば、画像、混合データ型、又は数値表、並びに音声ファイル及び映像に使用することができる。なお、適切な特徴抽出器を、コーパスで利用可能であるような、同じ型の列に対して訓練することができることに留意されたい。注目する列の各セルについて単一の数値を得るように、特徴抽出に続いて、好ましくは、例えば1D空間への次元削減ステップが行われる。
最後の列に示したような日付については、単純な変換スキームが存在し、これを用いて、日付値(初期には任意のフォーマットで格納されている)を、例えば、図3(A)で行われているようにUnixタイムスタンプに変換することができる。
選択される変換方法だけでなく選択される記述子のセットも列のデータ値の型に依存し得る。図3(B)の例は、簡略化のために2種類の記述子(すなわち、fで示されるエントロピー及びfで示される歪度)のみを仮定している。このような記述子は、やはり簡略化のために、様々な列にわたって同じであるとさらに仮定されている。しかしながら、列に含まれるデータの型に基づいて異なる記述子のセットを選択することができることが当業者には明らかであろう。例えば、エントロピーは、通常、あらゆる種類の数値データに使用することができる満足のいく記述子である。しかし、算術平均はときとして有用ではなく、他の記述子(例えば、散布度統計量、自己相関、最小、最大、最頻値、等)が好ましい場合がある。
単純な実施形態において、(ステップS40で計算された)第2のシノプシス261-266のすべての記述子がステップS70で実行される比較で使用され、すなわち、第1のシノプシスの対応する記述子16と比較され、潜在的な一致が識別される。その点に関して、図5は、表形式データ14、24について計算されたシノプシスのセットを模式的に示す。LHSの表形式データ14は、列C1...Cnを含み、それはコーパスの表であり、参照システム1のどこかに適正に格納されている。RHSの表形式データ24は、2つの列X1,X2のみを含む。この表形式データ24は、この例では、系統的なスキャンプロセスS15を通じて発見されたものと仮定されている。すなわち、この表形式データ24は、補助ストレージシステム2に格納されている。表形式データ14についてn個の列がインデックス付けされているので、その場合、m個の記述子のn個のセット(すなわち、各々がm個の記述子を含むn個の第1のシノプシス)が利用可能である。2つの列X1、X2について同じ型の記述子に基づいてシノプシスを計算すると第2のシノプシスが与えられ、それは、この例では表形式データ14の最初の2つのシノプシスに偶然一致している。一致するシノプシスは、図5において破線で囲まれている。したがって、リロケートされた表形式データ24の列X1,X2との間に部分的な一致が見いだされる。
潜在的な一致について結論付けるために、任意の適切なメトリックを企図することができる。例えば、記述子の2つのセットを比較S70するとき、比較される表の任意のペアについて、このペアについて一致するシノプシスの数をカウントするメトリックに従って一致を推定S75することができる。この数を、好都合には、最小の表の列の数で除す。例えば、所与の比較される表のペアについて、第1の表が第2の表よりも少ない列数を有する場合、セクション2.1でさらに議論するように、メトリックは(2つの表について)一致するシノプシスの数を2つの表のうちの最小の列数で除したものとして記述することができる。変形例では、シノプシスのペア間の類似性測度に基づいて一致を判定することができ、部分的な一致をより正確に定量化することを可能にする。上記のメトリックに対する変形例において、ステップS70における比較は、記述子によって形成されるベクトル間、すなわちシノプシス間で計算される距離又は相関係数に基づいて実行することができる。
図3(B)において、符号26は、すべての記述子値を含むシノプシスの完全なセットを示す。シノプシスに関与する記述子の数は、ステップS70において実行される比較に必然的に影響を与える。記述子の数が多いと、多数の表及び列が関与するときには、場合によっては本方法が扱いにくくなる可能性がある。幸いなことに、セクション2.2でも議論されるように最適化が可能である。したがって、より高度な実施形態を企図することができ、その場合、シノプシス261-266の記述子のサブセットのみが第1のシノプシスの記述子16の対応するサブセット、すなわち同じ型の記述子と(ステップS70において)比較される。こうした比較は、同じ型の列に対応する記述子にさらに限定することができ、その目的は、第1の表形式データ14と第2の表形式データ24との間の潜在的な一致を効率的に識別S75することである。
ここで図3(B)及び図6を参照して議論されるように、そのような記述子のサブセットをさらに適切に判断して選択することができる。すなわち、実施形態において、サブセットを比較S70する前に、最も特徴的な記述子のサブセットを識別することができる(ステップS50)。例えば、そのような記述子は、コーパス12内の対応する記述子16から見て、最異常値を有する記述子に対応するものとすることができる。その目的のために、本方法は、特に、参照記述子のための参照値(例えば、平均及び標準偏差)を維持することができる。例えば、コーパスにおいて見いだされる平均値から標準偏差のq倍を超えて(ここで、例えばq=1、1.5、又は2)異なる記述子値は、保持するのに十分に異常であるとみなすことができる。より一般的には、異常度は、記述子値と参照値(例えば、コーパス内の同じ型の列の記述子についての算術平均)との間の距離から見て評価することができる。図3(B)の架空の例では、最異常記述子値が太字で示されている。一般に、記述子のサブセットを最異常の上位K個の記述子に制限することができ、ここでKは典型的には3以上又はそれより大きい。
したがって、ステップS70における比較を少数の選択された記述子に限定することができ、これによりストレージ及び転送の要件が緩和される。下記及びセクション2.2でさらに論じるように、様々な実装を企図することができ(例えば、非異常記述子の実際の値の代わりに参照値を使用する)、これにより系統的な比較を低い計算コストで実行することが可能になる。
いまや記述子の選択のみが関連するので、本方法では利用可能なすべての記述子値を恒久的に格納しておく必要はない。むしろ、(ステップS40で得られた)第2のシノプシス261-266を圧縮データ構造としてS55で格納することができ、これは異常記述子を含むが、残りの記述子値を棄却したものである。例えば、異常記述子値を記述子のインデックス(図3(B)の記述子のm×n表における位置に対応する)と共に格納してもよく、例えば、{{4.88,{1,5}},{0.13,{2,1}},{0.67,{2,5}}}として、又は線形インデックスを用いる場合には{{4.88,5},{0.13,7},{0.67,11}}として格納することができる。
別の可能性は、異常度が不十分であると判断されたすべての記述子値をコーパスからの参照値(例えば平均値)で置き換えることであり、例えば、図3(B)の例では{{<f1,1>,{1,1}},{<f1,2>,{1,2}},{<f1,3>,{1,3}},{<f1,4>,{1,4}},{4.88,{1,5}},{<f1,6>,{1,6}},{0.13,{2,1}},...,{0.67,{2,5}},{<f2,6>,{2,6}}}である。上記の配列において、表記<fi,j>は、コーパスから得られる列jと同じ型の列についてのi番目の記述子の平均値を指す。更なる可能性は、参照値を「キュー」、例えば文字列又は数字「0」で置き換えることであり、これは比較アルゴリズムでは対応する参照値を使用すべきであることを示すものであり、すなわち図3(B)の例では{0,0,0,0,{4.88,{1,5}},0,{0.13,{2,1}},...,{0.67,{2,5}},0}である。いずれの場合も、得られたデータ構造は、選択された記述子が第1のシノプシスの対応する記述子と比較されることを可能にし、それにより潜在的な一致が識別される。なお、第1のシノプシスの対応する記述子も同様に参照値によって置換されている(又は置換される必要がある)場合があることに留意されたい。記述子データ構造を圧縮する別の可能性は、シノプシスにわたる相関行列を計算し、結果として得られた行列を表のフィンガープリントとして保存することである。
上述のような圧縮データ構造、又は記述子値の単なるサブセット{4.88,0.13,0.67}は、別の値のサブセットとの衝突(collision)の確率が低いという前提で(十分に大きなK値が課されると仮定して)、表のフィンガープリントとして(ステップS70で行われる比較とは別の目的のために)さらに用いることができる。すなわち、このフィンガープリントは、選択された記述子のサブセットを含むが、他の記述子値を棄却したものである。
本方法は、不適切なストレージシステム、例えば、何らかの目的のために利用可能であるが、秘密又は機密データを格納するためには適切でないシステムに格納されている表形式データを識別しようとするために実施することができる。その場合、一致が見つかると、実施するエンティティは、見つかった一致する表形式データ24に関してアクションを取るS80ことができる。まず始めに、エンティティは、ファイルの所有者に通知することができるように、適切な場合には、場合によっては一致を報告する(例えば、データベースで見つかった一致のログを取る)。エンティティはまた、適切な対応策等を講じるよう所有者に促すこともできる。さらに、エンティティは、必要に応じて、場合により、対応するファイルに関連付けられたユーザ許可を変更したり(例えば、未承認ユーザがファイルにアクセスすることを防止する)、ファイルをリロケートしたり、さらにはファイルを削除したりすることもできる。
さらに、本方法は、ストレージを節約するために、無用な重複の検出に適用することもできる。さらに、図6を参照して議論されるアルゴリズムの一部(すなわち、ステップS15からS55)は、適切なシステム1に格納されている表形式データに初期インデックスを付けるために使用することができる。さらに、ステップS70、S75及びS90は、追加のストレージシステムをスキャンすることによって表形式データのインデックス付けを徐々に拡大しながら使用することができ、それによって、重複及び部分一致が検出される必要があり得る。特に、任意のスキャンされたストレージシステムの任意の新しい表についてステップS40で計算されたシノプシスを、コーパス12の既にインデックス付けされた(第1の)シノプシスを更新S90するために使用することができる。更新ステップS90は、有利には、圧縮データ構造として格納S55されたシノプシス261-266を利用することができる。
先に述べたように、本方法は、分散型アプリケーションを使用して実装することができる。様々なストレージシステム1、2間で必要とされる様々な交換を想定すると、本方法は、例えば、第2のシノプシス261-266の記述子を遠隔システムに送信S52して、遠隔システムがステップS70で比較を実行するために、Kafkaメッセージングシステムのようなストリーム処理式の分散型メッセージシステムを使用して有利に実行することができる。より一般的には、本方法は、Kafkaのようなストリーム処理ソフトウェアプラットフォームを使用して少なくとも部分的に実装することができる。
完全を期すために、本発明の別の態様は、コンピュータプログラム製品に関するものである。この製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含み、プログラム命令は、処理手段によって実行可能であり、処理手段に、本方法によるステップを実行させる、すなわち、補助データストレージシステムをスキャンさせ、シノプシスを取得させ、記述子のセットを比較させて、補助データストレージシステムに格納されている表形式データとコーパスに格納されているデータとの間の潜在的な一致を識別させるようになっている。この点に関してセクション3で詳しく説明する。
上記の実施形態は、添付の図面を参照して簡潔に説明され、多くの変形例に対応することができる。上記の特徴のいくつかの組合せを企図することができる。次のセクションで例を提示する。
このセクションは、矩形データセットにフィンガープリントを付すことを可能にして、コピーと派生データセットの両方をある程度の確率で識別できるようにする実施形態を説明する。このような実施形態は、組織が、その組織がアクセスを有するデータストア内で特定の矩形データセットがどこに格納されているかを、それがどのようにそこに移動したかにかかわらず、また、それが変形されたかもしれないという事実を見越して、ある確率で識別することを可能にする。
これは、データセット内のデータを変更することなく、すなわちウォーターマークを入れることなく、有利に実現することができる[2]。さらに、使用される技術は、ハッシュのスライディング・ウィンドウとは著しく異なる[1]。提案されるソリューションは、組織のストレージシステムをスキャンすることができることを仮定する。スキャンによって見つかった各矩形データセットについて、シノプシスが作成される。前のセクションで説明したように、シノプシス作成はビットレベルではなく、データレベルで、矩形データの列から行う。列は必要に応じて数値に変換される。すなわち、列によっては既に適切な数値を含んでいる場合がある。変換はさらに、列の型に依存する場合がある。例えば、整数値は全く変換されない場合があり、日付はUnixタイムスタンプのような数値タイムスタンプに変換される場合があり、文字列は局所性鋭敏型ハッシュ法を使用してハッシュされる場合がある、等である。列のシノプシスは、その列の1つ又は複数の統計的測度を含んでもよく、その元の型と関連付けられてもよい。シノプシスは、データセットのすべての値から引き出すことも、サンプルだけから引き出すこともできる。矩形データセットのシノプシス(これをスーパーシノプシスと呼ぶ)は、その列のシノプシスのセットとなる。
このようなシノプシスは、所与のデータセットを既存のコーパスのデータセットと容易に比較することを可能にする(セクション2.1)。必要であれば、スーパーシノプシスの最異常記述子を識別して、データセットのフィンガープリントとして使用することができる(セクション2.2)。どちらの場合も、新しいデータセットがスキャンされると、生成されたフィンガープリントが既存のデータセットのフィンガープリントと比較される。類似性メトリックを使用して類似度を推定することができる。
様々なタイプのn個の列を含み、多数の行を含む、リレーショナル・データベース表Tを考える。セクション1で説明したように、表のデータへのアクセスを有するエンティティが列のシノプシスを作成する。このエンティティは、専用エンティティとして実行されてもよく、又は、例えばメタデータカタログのようなより統合されたシステムの一部として実行されてもよい。作成されるシノプシスは、表の列に対する統計的測度から引き出される。列の型によっては、それに対する統計的測度をより簡単に測定できるように変換される場合もある。エントロピーなどの測度は、入力のエントロピーとハッシュ化された入力セットのエントロピーとが類似しているという点でロバストである。入力の他のいくつかの統計的性質がハッシュによって保存されることを保証するために、局所性保存型ハッシュ法などの技術を例えば文字列に対して使用してもよい。例えば、関数f(.)、f(.)、...、f(.)を列C1、...、Cnの各々に適用することによって、各列に対してm個の統計的測度を得ることができる。
n個の列のそれぞれについて、エンティティは、m個のシノプシスを列の元のデータ型と共に、実際に類似性の測度を測定するシステム、例えばバックエンドシステムに送信することができ、これはKafkaなどのメッセージングシステムを使用して都合よく実現することができる。
この手法により、2つのデータセットが同一であるか、又は一方が他方から派生したものであることを識別することが可能になる。これは以下のように進行する。あるデータセットの列が別のデータセット内に存在する場合、その列のシノプシスは同じになるはずである。2つの異なる列がすべてのシノプシスについて一致する値を有する可能性は極めて低い。したがって、2つのデータセットTとUとの間の一致を表す単純なメトリックは、Match(T,U)=100×#ColumnsWithSameSynopses(T,U)/#ColumnsInNarrower(T,U)という関数である。すなわち、この関数は、一致するシノプシスの数を2つの表のうちの最小の列数で除す。言い換えれば、Match(T,U)は2つのデータセット間の相対的な重なりをパーセントで測定したものである。2つの同一のデータセットは、100%一致をもたらす。
さらに興味深いことに、データセットVが2つのデータセットTとUとを結合することによって得られたものであり、Tの列がV内に存在している場合、Vは派生コピーであり、Tは最も狭い表であるから、VはデータセットTと100%一致することになる。Tから列を削除することによって別のデータセットWが得られた場合も、Wもまた派生コピーであり、Wは2つの表のうち最も狭い表であるため、100%一致することになる。これは、企業コーパスにおいて、コピーと派生データセットとがどのように識別されるかを示す。
明らかに、これでは、表の幅及び使用されるシノプシスの数によっては、転送、格納、及び操作するにはデータが多くなりすぎる場合がある。したがって、上記のスキームを以下のように最適化することができる。Tから引き出されたm×n個の記述子の中から最も特徴的な記述子のサブセットを識別し、これらを用いてTを識別することができる。選ばれる値は、同じ型の列に対して最も異常なものである。
すべての値は数値であるため、同じ列の型に適用される同じ統計型式のすべての測度の平均からの距離として、異なること(distinctness)の単純な測度を得ることができる。例えば、Tの列C1が「文字列」型を有し、C1のエントロピーEが計算されると、コーパス内に既に存在する「文字列」型の列のすべてのエントロピー測度の平均とEとを比較することができる。エントロピー値Eが平均から十分に離れている場合、最終的にそれを十分に異常な記述子として選択することができ、そのことは、例えば、セクション1で説明したように、標準偏差から見て評価することができる。Tのm×n個の記述子のすべての異常度を同様に測定し、上位K個の記述子(例えば、K=5)を選択し、そのような記述子をTのフィンガープリントとして使用することができる。
同様に、コーパス内のすべてのデータセットは、K個の記述子のセットによって特徴付けられる。したがって、いまやTをコーパス内の他のすべてのデータセットと比較することができる。すべての表を、独立に、K個の記述子すべてとの類似性によってランク付けすることができる。ランクは、比較対象が同じ列型に対して同じ統計的記述子を含む場合は値を直接比較することによって、そうでない場合には平均を使用することによって作成される。言い換えれば、平均値は、実際の記述子値を置き換える代替として使用され、それにより、比較の目的で記述子値を格納及び転送することが容易になる。
次いで、K個の独立したランキングを組み合わせることによって、例えば、各々の順序を合計し、その結果を順序付けることによって、Tに最も類似した表が識別される。Tに最も類似した表はリストの上位に表示され、Tに対する類似度は、フィンガープリントのK個の要素と表のフィンガープリントの要素(又は代替値)との間の正規化ユークリッド距離となる。
図6は、補助ストレージシステムが逐次的(S10)にスキャンされ、比較S70のために処理されるフローを説明するが、これらは並行して処理されてもよい。現在の補助システム2がステップS15でスキャンされ、表形式データを見つける。表形式データは、逐次的に(ステップS20参照)、列ごとに(ステップS25参照)処理される。現在の列が変換を必要とする場合(ステップS30:YES)、そのシノプシスを計算S40する前に、列の元のデータ型に応じて適切な変換方法が選択S32され、列のセルは、選択された方法に従って数値に変換S34される。そうでない場合には(ステップS30:NO)、シノプシスはステップS40で直接計算される。シノプシスは、先に説明したように、ベクトル、すなわち記述子のセットとして得られる。すべての列が処理されると(S45:YES)、コーパスにおける対応する(例えば、平均)値から見て、シノプシスの最異常記述子が識別される(ステップS50)。選択された記述子は、その後、場合によっては、比較S70を実行するために遠隔システムに送信される(ステップS52)。得られたすべてのシノプシスの圧縮表現は、ステップS55で格納され、それらを様々な目的で現在の表形式データのフィンガープリントとして利用することができる。ステップS70において、唯一選択された記述子がコーパスの記述子と比較され、潜在的な一致を識別する。先に述べたように、代替値は比較に関与し得るが、非異常記述子値は関与しない。一致が見つからない場合(S75:NO)、現在のストレージシステム2の別の表の処理S20を開始する前に、コーパスは、場合によっては、シノプシスの格納された(圧縮)表現に基づいてステップS90において更新されてもよい。一致が見つかった場合(ステップS75:YES)、比較するエンティティ(例えば、遠隔システム)は、ステップS80でこれを報告し、すべての必要なアクション(リロケート、削除、許可の変更等)を取ることができる。次いで、本方法は、次のストレージシステム2に移動S10し、以下同様に続く。変形例において、コーパスは、ステップS75で一致が見つかったかどうか関係なく、系統的に更新される。
このフローは、セクション2.2で説明したシナリオに対応する。このフローは、セクション2.1で説明したシナリオに従って簡略化することができる。すなわち、ステップS70ですべての記述子を比較することを考慮して、ステップS50ですべての記述子値を選択することができる。それに応じて、完全なデータ構造がステップS55で格納されることになる。
本明細書に記載された本発明の実施形態を実装するためにコンピュータ化されたシステム及び装置を好適に設計することができる。その点に関して、本明細書に記載される方法は、大部分が非対話式であり、自動化されていることを理解することができる。例示的な実施形態において、本明細書に記載の方法は、対話式、一部対話式、又は非対話式のいずれかのシステムで実装することができる。本明細書に記載される方法は、ソフトウェア、ハードウェア、又はそれらの組合せで実装することができる。例示的な実施形態では、本明細書で提案される方法は、実行可能プログラムとしてソフトウェアで実装され、実行可能プログラムは適切なデジタル処理デバイスによって実行される。より一般的には、本発明の実施形態は、仮想マシン、もしくはパーソナルコンピュータ、ワークステーションなどの汎用デジタルコンピュータ、又はその両方が使用されるところで実装することができる。
例えば、図7に描かれたシステムは、コンピュータ化ユニット101、例えば、汎用又は専用コンピュータを模式的に表し、これは参照ストレージシステム1及び補助システム2のうちの1つ又は複数の一部を形成することができる。
例示的な実施形態では、ハードウェアアーキテクチャの観点から、図7に示すように、ユニット101は、少なくとも1つのプロセッサ105と、キャッシュメモリ112と、メモリ・コントローラ115に結合されたメモリ110とを含む。場合によっては、複数のプロセッサが関与してもよい。その目的のために、処理ユニットに、それ自体知られているように、それぞれのメモリ・コントローラを割り当てることができる。
1つ又は複数の入力及び/又は出力(I/O)デバイス145、150、155(又は周辺機器)は、ローカル入力/出力コントローラ135を介して通信可能に結合される。I/Oコントローラ135は、当該技術分野で知られているように、1つ又は複数のバス及びシステムバス140に結合されてもよく、又はそれらを含んでもよい。入力/出力コントローラ135は、通信を可能にするために、コントローラ、バッファ(キャッシュ)、ドライバ、中継器、及び受信機などの、簡略化のために省略されている追加の要素を有することができる。さらに、ローカルインターフェースは、前述のコンポーネント間の適切な通信を可能にするために、アドレス、制御、もしくはデータ接続又はそれらの組合せを含むことができる。
プロセッサ105は、ソフトウェア、特にメモリ110に初期格納されているソフトウェアを実行するためのハードウェアデバイスである。プロセッサ105は、任意のカスタムメイド又は市販のプロセッサとすることができる。プロセッサは、1つ又は複数の中央処理装置(CPU)、並びに、場合によっては1つ又は複数のグラフィックス処理装置(GPU)を含む。一般に、そのようなプロセッサは、任意のタイプの半導体ベースの(マイクロチップ又はチップセットの形態の)マイクロプロセッサ、又は一般にソフトウェア命令を実行するための任意のデバイスを含むことができる。
メモリ110は、揮発性メモリ要素(例えば、ランダムアクセスメモリ)及び不揮発性メモリ要素の任意の1つ又は組合せを含むことができる。さらに、メモリ110は、電子、磁気、光学、もしくは他のタイプ又はそれらの組合せのストレージ媒体を組み入れることができる。メモリ110は、様々なコンポーネントが互いに遠隔に位置しているが、プロセッサ105によってアクセスすることができる、分散型アーキテクチャを有することができることに留意されたい。
メモリ110内のソフトウェアは、1つ又は複数の別個のプログラムを含むことができ、その各々は、論理機能を実装するための実行可能な命令の順序付けられたリストを含む。図7の例では、メモリ110内のソフトウェアは、例示的な実施形態に従って本明細書に記載された方法の一部又は全部を形成するコンピュータ化された方法と、特に、適切なオペレーティングシステム(OS)とを含む。OSは、本質的に他のコンピュータプログラムの実行を制御し、スケジューリング、入出力制御、ファイル及びデータ管理、メモリ管理、並びに通信制御及び関連サービスを提供する。
本明細書に記載された方法(又はその一部)は、ソースプログラム、実行可能プログラム(オブジェクトコード)、スクリプト、又は、実行されるべき命令のセットを含む他の任意のエンティティの形態であってもよい。ソースプログラムの形態である場合、そのプログラムは、OSに関連して適正に動作するように、メモリ110内に含まれていてもいなくてもよいそれ自体既知のコンパイラ、アセンブラ、インタプリタ等を介して翻訳される必要がある。さらに、本方法は、データ及び方法のクラスを有するオブジェクト指向プログラミング言語、又はルーチン、サブルーチン、もしくは関数又はそれらの組合せを有する手続き型プログラミング言語として記述することができる。
場合によっては、従来のキーボード及びマウスを入力/出力コントローラ135に結合することができる。他のI/Oデバイス145-155を含めてもよい。コンピュータ化ユニット101は、ディスプレイ130に結合されたディスプレイ・コントローラ125をさらに含むことができる。例示的な実施形態において、コンピュータ化ユニット101は、ネットワークに結合するためのネットワーク・インターフェース又は送受信機160をさらに含むことができ、それにより、外部コンポーネントとの間のデータ通信が可能になる。
ネットワークは、ユニット101と外部デバイスとの間でデータを送受信する。ネットワークは、場合によっては、例えば、Wifi、WiMax等どの無線プロトコル及び技術を使用して、無線方式で実装される。ネットワークは、固定無線ネットワーク、無線ローカルエリアネットワーク(LAN)、無線広域ネットワーク(WAN)パーソナルエリアネットワーク(PAN)、仮想プライベートネットワーク(VPN)、イントラネット又は他の適切なネットワークシステムとすることができ、信号を送受信するための機器を含む。
ネットワークはまた、ブロードバンド接続を介したユニット101と任意の外部サーバ、クライアント等との間の通信のためのIPベースのネットワークであってもよい。例示的な実施形態において、ネットワークは、サービスプロバイダによって管理されるマネージドIPネットワークとすることができる。そのほか、ネットワークは、LAN、WAN、インターネットネットワーク、Internet of thingsネットワーク等のパケット交換ネットワークであってもよい。
ユニット101がPC、ワークステーション、インテリジェントデバイス等である場合、メモリ110のソフトウェアは、さらにベーシック入出力システム(BIOS)を含んでもよい。BIOSは、ROMに格納されており、コンピュータ化ユニット101が起動したときにBIOSを実行できるようになっている。ユニット101が動作しているとき、プロセッサ105は、メモリ110内に格納されたソフトウェアを実行するように構成され、メモリ110との間でデータを通信し、ソフトウェアに従ってコンピュータ化ユニット101の動作を一般に制御する。
本明細書に記載された方法及びOSは、全体又は一部が、プロセッサ105によって読み出され、典型的にはプロセッサ105内でバッファされ、その後、実行される。本明細書に記載の方法がソフトウェアで実装される場合、本方法は、任意のコンピュータ関連システム又は方法によって、又はそれに関連して使用するために、ストレージ120などの任意のコンピュータ可読媒体に格納することができる。
本発明は、方法もしくはコンピュータプログラム製品又はその両方とすることができる。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有する1つ又は複数のコンピュータ可読ストレージ媒体を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のために命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のものの任意の適切な組合せとすることができるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブル・コンパクトディスク読み出し専用メモリ(CD-ROM)、デジタル多目的ディスク(DVD)、メモリスティック、フロッピーディスク、記録された命令を有するパンチカードもしくは溝内に隆起した構造等の機械式コード化デバイス、及び上記のものの任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で用いられる場合、無線波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通って伝搬する電磁波(例えば光ファイバケーブルを通る光パルス)、又は電線を通って伝送される電気信号のような一時的な信号自体と解釈すべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることも、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワークもしくは無線ネットワーク又はそれらの組合せを経由して、外部コンピュータもしくは外部ストレージデバイスにダウンロードすることもできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジサーバ又はそれらの組合せを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体にストレージのために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、又は、Smalltalk、もしくはC++などのオブジェクト指向プログラミング言語及び「C」プログラミング言語もしくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で独立型ソフトウェアパッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータもしくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカルエリアネットワーク(LAN)もしくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が行われる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えばプログラム可能論理回路、フィールドプログラム可能ゲートアレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装することができることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイス又はそれらの組合せを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、その中に格納された命令を有するコンピュータ可読媒体が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を含むようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置又は他のデバイス上で行わせてコンピュータ実装のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置又は他のデバイス上で実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作を実装するようにすることもできる。
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で行われることがある。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方の中のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステムによって実装することもでき、又は専用ハードウェアとコンピュータ命令との組合せを実行することもできることにも留意されたい。
本発明を、限られた数の実施形態、変形例及び添付図面を参照して説明してきたが、本発明の範囲から逸脱することなく、様々な変更を行うことができること、及び均等物で置き換えることができることが、当業者には理解されよう。特に、所与の実施形態、変形例で挙げられ、又は図面に示された特徴は、本発明の範囲から逸脱することなく、別の実施形態、変形例、又は図面における別の特徴と組み合わせたり、置き換えたりすることができる。それに応じて、添付の特許請求の範囲の範囲内にとどまる、上記の実施形態又は変形例のいずれかに関して説明された特徴の様々な組み合わせを企図することができ。さらに、特定の状況又は材料を本発明の教示に適合させるために、その範囲から逸脱することなく、多くの小さな修正を行うことができる。したがって、本発明は、開示された特定の実施形態に限定されるのではなく、本発明は、添付の特許請求の範囲に入るすべての実施形態を含むことが意図される。さらに、上記で明示的に触れた以外の多くの変形例も企図することができる。


Claims (20)

  1. データロケーションを見つけるコンピュータ実装方法であって、
    1つ又は複数の参照データストレージシステムに格納された第1の表形式データのコーパスの第1の列の第1のシノプシスが所与であることを前提として、補助データストレージシステムに格納された第2の表形式データを識別するために前記補助データストレージシステムをスキャンすることであって、前記第2の表形式データは第2の列を含む、スキャンすることと、
    前記第2の列の各第2の列について、前記各第2の列のセルのコンテンツの数値表現に従ってシノプシスを計算することによって、前記第2の表形式データの前記第2の列の第2のシノプシスを得ることであって、前記シノプシスは、それぞれが前記数値表現の測度であるm個の記述子(m≧1)のベクトルを含む、得ることと、
    1つ又は複数の記述子の2つのセットを比較することであって、それによって前記第2のシノプシスの前記記述子の少なくともサブセットが前記第1のシノプシスの対応する記述子と比較され、前記第2の表形式データと第1の表形式データの前記コーパスとの間の一致を識別する、比較することと、
    を含む、コンピュータ実装方法。
  2. 前記2つのセットを比較する際に、前記第2のシノプシスの前記記述子の前記サブセットのみが前記第1のシノプシスの対応する記述子と比較され、前記第1の表形式データと前記第2の表形式データとの間の一致を識別する、請求項1に記載のコンピュータ実装方法。
  3. 前記2つのセットを比較する前に、前記記述子の前記サブセットを、前記コーパスの前記第1のシノプシスの対応する記述子から見て最異常値を有する記述子として識別すること
    をさらに含む、請求項2に記載のコンピュータ実装方法。
  4. 得られた第2のシノプシスを圧縮データ構造として格納することであって、前記圧縮データ構造は、最異常値を有する記述子を含み、残りの記述子を棄却したものである、格納すること
    をさらに含む、請求項3に記載のコンピュータ実装方法。
  5. 圧縮データ構造として格納された前記第2のシノプシスに従って前記コーパスの前記第1のシノプシスを更新すること
    をさらに含む、請求項4に記載のコンピュータ実装方法。
  6. 前記2つのセットを比較する際に、前記第2のシノプシスのすべての記述子が前記第1のシノプシスの対応する記述子と比較され、前記一致を識別する、請求項1に記載のコンピュータ実装方法。
  7. 前記2つのセットを比較する際に、前記一致は、表の任意のペアについて、このペアについて一致するシノプシスの数をカウントするメトリックに従って識別される、請求項6に記載のコンピュータ実装方法。
  8. 1つ又は複数の記述子の前記2つのセットを比較することは、記述子の前記2つのセット間の相関測度、距離、及び類似性測度のうちの1つを計算することを含む、請求項1に記載のコンピュータ実装方法。
  9. ストリーム処理式の分散型メッセージングシステムを使用して、前記第2のシノプシスの前記記述子の前記少なくともサブセットを、前記2つのセットを比較するために遠隔システムに送信すること
    をさらに含む、請求項1に記載のコンピュータ実装方法。
  10. 前記シノプシスを計算することは、前記セルが既に前記シノプシスを得るのに適した値で構成されている場合を除き、前記数値表現を得るために前記各第2の列の前記セルのコンテンツをそれぞれの数値に変換することをさらに含む、請求項1に記載のコンピュータ実装方法。
  11. 前記シノプシスを計算することは、前記コンテンツを変換する前に、前記各第2の列の前記セルに含まれるデータ型を表すデータ型値を識別することをさらに含み、
    前記コンテンツは、前記データ型値に応じて選択された変換方法に基づいて前記それぞれの数値に変換される、請求項10に記載のコンピュータ実装方法。
  12. 前記変換方法は、ハッシュ法、局所性鋭敏型ハッシュ法、局所性保存型ハッシュ法、及び特徴抽出法から選ばれる1つ又は複数の方法である、請求項11に記載のコンピュータ実装方法。
  13. 前記補助データストレージシステムをスキャンする前に、
    前記第1の表形式データの前記コーパスを識別するために前記1つ又は複数の参照データストレージシステムをスキャンすることと、
    前記第1の列の各第1の列について、前記各第1の列のセルのコンテンツの数値表現に従ってシノプシスを計算することによって、前記第1のシノプシスを得ることであって、このシノプシスは、それぞれが前記数値表現の測度であるm個の記述子(m≧1)のベクトルを含む、得ることと
    をさらに含む、請求項1に記載のコンピュータ実装方法。
  14. 得られた前記第2のシノプシスの記述子に従って前記コーパスの前記第1のシノプシスを更新することをさらに含む、請求項13に記載のコンピュータ実装方法。
  15. 各第2の列について計算された前記シノプシスは、各々が前記数値表現の統計的測度である1つ又は複数の統計的記述子を含む、m≧2の記述子のベクトルを含む、請求項1に記載のコンピュータ実装方法。
  16. 前記統計的記述子の各々は、前記数値表現のデータ値のロケーション、広がり、及び形のうちの1つの測度に従って計算される、請求項15に記載のコンピュータ実装方法。
  17. 前記コーパス内の前記第1の表形式データのいずれかと一致することが判明した前記第2の表形式データに関してアクションを取ること
    をさらに含む請求項1に記載のコンピュータ実装方法。
  18. データロケーションを見つけるためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含み、前記プログラム命令は、処理手段によって実行可能であり、前記処理手段に、
    1つ又は複数の参照データストレージシステムに格納された第1の表形式データのコーパスの第1の列の第1のシノプシスが所与であることを前提として、補助データストレージシステムに格納された第2の表形式データを識別するために前記補助データストレージシステムをスキャンすることであって、前記第2の表形式データは第2の列を含む、スキャンすることと、
    前記第2の列の各第2の列について、前記各第2の列のセルのコンテンツの数値表現に従ってシノプシスを計算することによって、前記第2の表形式データの前記第2の列の第2のシノプシスを得ることであって、前記シノプシスは、それぞれが前記数値表現の測度であるm個の記述子(m≧1)のベクトルを含む、得ることと、
    1つ又は複数の記述子の2つのセットを比較することであって、それによって前記第2のシノプシスの前記記述子の少なくともサブセットが前記第1のシノプシスの対応する記述子と比較され、前記第2の表形式データと第1の表形式データの前記コーパスとの間の一致を識別する、比較することと、
    を行わせる、
    コンピュータプログム製品。
  19. 前記プログラム命令は、前記処理手段に、前記第2のシノプシスの記述子の前記サブセットと前記第1のシノプシスの対応する記述子との比較のみを行わせるように実行可能である、請求項18に記載のコンピュータプログラム製品。
  20. 前記プログラム命令は、前記処理手段によって実行可能であり、前記処理手段に、前記2つのセットを比較する前に、前記記述子の前記サブセットを、前記コーパスの前記第1のシノプシスの対応する記述子から見て最異常値を有する記述子として識別することを行わせる、請求項19に記載のコンピュータプログラム製品。
JP2023532486A 2020-12-11 2021-11-21 システム間における表形式データロケーションの検索 Pending JP2024501404A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/119,704 US11500886B2 (en) 2020-12-11 2020-12-11 Finding locations of tabular data across systems
US17/119,704 2020-12-11
PCT/IB2021/060784 WO2022123370A1 (en) 2020-12-11 2021-11-21 Finding locations of tabular data across systems

Publications (1)

Publication Number Publication Date
JP2024501404A true JP2024501404A (ja) 2024-01-12

Family

ID=81941476

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023532486A Pending JP2024501404A (ja) 2020-12-11 2021-11-21 システム間における表形式データロケーションの検索

Country Status (6)

Country Link
US (1) US11500886B2 (ja)
JP (1) JP2024501404A (ja)
CN (1) CN116635845A (ja)
DE (1) DE112021006042T5 (ja)
GB (1) GB2616577A (ja)
WO (1) WO2022123370A1 (ja)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802528A (en) 1996-05-24 1998-09-01 Oracle Corporation Method and apparatus for data comparisons
US8666998B2 (en) 2010-09-14 2014-03-04 International Business Machines Corporation Handling data sets
US9734223B2 (en) 2013-06-14 2017-08-15 International Business Machines Corporation Difference determination in a database environment
US9836526B2 (en) 2013-12-17 2017-12-05 International Business Machines Corporation Selecting a structure to represent tabular information
US9928281B2 (en) 2015-03-20 2018-03-27 International Business Machines Corporation Lightweight table comparison
US10824637B2 (en) * 2017-03-09 2020-11-03 Data.World, Inc. Matching subsets of tabular data arrangements to subsets of graphical data arrangements at ingestion into data driven collaborative datasets
US10445062B2 (en) 2016-09-15 2019-10-15 Oracle International Corporation Techniques for dataset similarity discovery
US10942947B2 (en) 2017-07-17 2021-03-09 Palantir Technologies Inc. Systems and methods for determining relationships between datasets
US11561973B2 (en) * 2017-09-29 2023-01-24 Oracle International Corporation Statistics based query transformation
US11474978B2 (en) 2018-07-06 2022-10-18 Capital One Services, Llc Systems and methods for a data search engine based on data profiles
US20200175559A1 (en) * 2018-12-04 2020-06-04 Sap Se Representing sets of entitites for matching problems
US11461671B2 (en) * 2019-06-03 2022-10-04 Bank Of America Corporation Data quality tool
CN110427992A (zh) 2019-07-23 2019-11-08 杭州城市大数据运营有限公司 数据匹配方法、装置、计算机设备及存储介质
US11604797B2 (en) * 2019-11-14 2023-03-14 Microstrategy Incorporated Inferring joins for data sets
US12014286B2 (en) * 2020-06-29 2024-06-18 Oracle International Corporation Enabling efficient machine learning model inference using adaptive sampling for autonomous database services
US11782928B2 (en) * 2020-06-30 2023-10-10 Microsoft Technology Licensing, Llc Computerized information extraction from tables

Also Published As

Publication number Publication date
GB202309412D0 (en) 2023-08-09
US11500886B2 (en) 2022-11-15
WO2022123370A1 (en) 2022-06-16
DE112021006042T5 (de) 2023-12-07
CN116635845A (zh) 2023-08-22
GB2616577A (en) 2023-09-13
US20220188312A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
US20230126005A1 (en) Consistent filtering of machine learning data
US11194779B2 (en) Generating an index for a table in a database background
US10366053B1 (en) Consistent randomized record-level splitting of machine learning data
US20220245127A1 (en) Applications of automated discovery of template patterns based on received requests
US11100420B2 (en) Input processing for machine learning
US11288242B2 (en) Similarity-based search engine
US8706710B2 (en) Methods for storing data streams in a distributed environment
US8738572B2 (en) System and method for storing data streams in a distributed environment
US20170255709A1 (en) Atomic updating of graph database index structures
US10346398B2 (en) Grouping in analytical databases
US20170255708A1 (en) Index structures for graph databases
US10956453B2 (en) Method to estimate the deletability of data objects
US11429658B1 (en) Systems and methods for content-aware image storage
US11567995B2 (en) Branch threading in graph databases
US20190220441A1 (en) Method, device and computer program product for data migration
CN111538495B (zh) 识别项目中引用Python开源组件的方法及系统、设备
US10754859B2 (en) Encoding edges in graph databases
JP2024501404A (ja) システム間における表形式データロケーションの検索
US11126622B1 (en) Methods and apparatus for efficiently scaling result caching
US20120226657A1 (en) Generating bpel control flows
US11144518B2 (en) Detecting data mapping relationship within database system and optimizing data operation
KR100831550B1 (ko) 엑스엠엘 계층구조를 이용한 비디오 검색 시스템 및 그 방법
CN111459949A (zh) 针对数据库的数据处理方法、装置及设备和索引更新方法
JP2006072881A (ja) 文書管理システム、及び、文書管理方法
JP2006004236A (ja) データベースシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230613

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240516