(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-08
(45)【発行日】2024-02-19
(54)【発明の名称】移動中のデータの処理技術
(51)【国際特許分類】
G06F 16/907 20190101AFI20240209BHJP
【FI】
G06F16/907
(21)【出願番号】P 2021550703
(86)(22)【出願日】2020-01-23
(86)【国際出願番号】 US2020014762
(87)【国際公開番号】W WO2020180409
(87)【国際公開日】2020-09-10
【審査請求日】2021-08-27
(32)【優先日】2019-03-01
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】ミルニコフ, アレックス
(72)【発明者】
【氏名】マハジャン, ロヒト
【審査官】酒井 恭信
(56)【参考文献】
【文献】特開2001-043237(JP,A)
【文献】特開2007-241378(JP,A)
【文献】特表2002-533809(JP,A)
【文献】特開2002-024281(JP,A)
【文献】米国特許出願公開第2019/0018855(US,A1)
【文献】米国特許出願公開第2018/0082082(US,A1)
【文献】米国特許出願公開第2019/0026307(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 - 16/958
(57)【特許請求の範囲】
【請求項1】
データソースに移動中のデータに対してハッシュバケッティング処理を実行するコンピュータによる処理方法であって、
前記移動中のデータである入力データセットをバケットにマッピングするために、前記入力データセットに第1ハッシュ関数を適用することであって、前記第1ハッシュ関数は第1ハッシュ値をもたらすものであることと、
前記入力データセットを前記バケット内のレコードにマッピングするために、前記第1ハッシュ値に第2ハッシュ関数を適用すること
であって、前記第2ハッシュ関数は前記バケット内のレコードを示す第2ハッシュ値をもたらすものであることと、
前記入力データセットに基づいて、メタデータを生成することであって、前記メタデータは、前記データソース中の前記入力データセットのオリジナルの場所を少なくとも示すことと、
前記生成されたメタデータを前記バケット内の前記レコードに保存することと、
を含む、処理方法。
【請求項2】
前記バケットは、複数のバケットの1つであり、各バケットは、複数のレコードを含む、請求項1に記載の処理方法。
【請求項3】
各バケットは、データストアにおけるデータ構造である、請求項2に記載の処理方法。
【請求項4】
前記複数のバケット及びそれらのコンテンツが、データベース内にテーブルとして論理的にセーブされる、請求項2に記載の処理方法。
【請求項5】
1又は複数のデータソースから前記入力データセットを同時に受信することをさらに含む、請求項1に記載の処理方法。
【請求項6】
前記第1ハッシュ関数及び前記第2ハッシュ関数は同じ関数である、請求項1に記載の処理方法。
【請求項7】
前記第1ハッシュ関数は、128ビットのハッシュ関数であり、前記第2ハッシュ関数は、32ビットのハッシュ関数である、請求項1に記載の処理方法。
【請求項8】
前記メタデータは、少なくとも識別子(ID)列、属性列、及びデータ列を含む、請求項1に記載の処理方法。
【請求項9】
前記識別子(ID)列は、前記バケットのバケット識別子(ID)、及び前記データソース中の前記入力データセットのオリジナルの場所に対する完全認定経路を含む、請求項8に記載の処理方法。
【請求項10】
前記データ列は、近似されたデータセット値を保持する、請求項8に記載の処理方法。
【請求項11】
前記移動中のデータは、リアルタイムで処理される、請求項1に記載の処理方法。
【請求項12】
前記移動中のデータを、複数の前記データを機密又は非機密に少なくとも分類するためにタグ付けすることをさらに含む、請求項1に記載の処理方法。
【請求項13】
前記タグ付けは、機密情報を示す辞書を保持する知識リポジトリを使用して実行される、請求項12に記載の処理方法。
【請求項14】
処理回路をデータソースに移動中のデータに対してハッシュバケッティング処理を実行する処理を実行させる命令を保存している非一時的なコンピュータ可読記憶媒体であって、前記ハッシュバケッティング処理は、
前記移動中のデータである入力データセットをバケットにマッピングするために、前記入力データセットに第1ハッシュ関数を適用することであって、前記第1ハッシュ関数が、第1ハッシュ値をもたらすことと、
前記入力データセットを前記バケット内のレコードにマッピングするために、前記第1ハッシュ値に第2ハッシュ関数を適用すること
であって、前記第2ハッシュ関数は前記バケット内のレコードを示す第2ハッシュ値をもたらすものであることと、
前記入力データセットに基づいて、メタデータを生成することであって、前記メタデータは、前記データソース中の前記入力データセットのオリジナルの場所を少なくとも示すことと、
前記生成されたメタデータを前記バケット内の前記レコードに保存することと、
を含む、非一時的なコンピュータ可読記憶媒体。
【請求項15】
データソースに移動中のデータに対してハッシュバケッティング処理を行うシステムであって、
処理回路と、
メモリであって、前記処理回路によって実行されると、
前記移動中のデータである入力データセットをバケットにマッピングするために、前記入力データセットに第1ハッシュ関数を適用し、前記第1ハッシュ関数は、第1ハッシュ値をもたらし、
前記入力データセットを前記バケット内のレコードにマッピングするために、前記第1ハッシュ値に第2ハッシュ関数を適用し
、前記第2ハッシュ関数は前記バケット内のレコードを示す第2ハッシュ値をもたらし、
前記入力データセットに基づいて、メタデータを生成し、前記メタデータは、前記データソース中の前記入力データセットのオリジナルの場所を少なくとも示し、
前記生成されたメタデータを前記バケット内の前記レコードに保存するように前記システムを構成する命令を含む、メモリと、
を含む、システム。
【請求項16】
前記バケットは、複数のバケットの1つであり、各バケットは、複数のレコードを含む、請求項15に記載のシステム。
【請求項17】
各バケットは、データストアにおけるデータ構造である、請求項16に記載のシステム。
【請求項18】
前記複数のバケット及びそれらのコンテンツは、データベース内にテーブルとして論理的にセーブされる、請求項16に記載のシステム。
【請求項19】
前記システムは、1又は複数のデータソースから前記入力データセットを同時に受信するようにさらに構成される、請求項15に記載のシステム。
【請求項20】
前記システムが、前記第1ハッシュ関数及び前記第2ハッシュ関数が同じ関数であるようにさらに構成される、請求項15に記載のシステム。
【請求項21】
前記システムが、前記第1ハッシュ関数が、128ビットのハッシュ関数であり、前記第2ハッシュ関数が、32ビットのハッシュ関数であるようにさらに構成される、請求項15に記載のシステム。
【請求項22】
前記メタデータが、少なくとも識別子(ID)列、属性列、及びデータ列を含むように、前記システムがさらに構成される、請求項15に記載のシステム。
【請求項23】
前記識別子(ID)列は、前記バケットのバケット識別子(ID)、及び前記データソース中の前記入力データセットのオリジナルの場所に対する完全認定経路を含むように、前記システムがさらに構成される、請求項22に記載のシステム。
【請求項24】
前記システムは、前記データ列に、近似されたデータセット値を保持するようにさらに構成される、請求項22に記載のシステム。
【請求項25】
前記システムは、前記移動中のデータをリアルタイムで処理するようにさらに構成される、請求項15に記載のシステム。
【請求項26】
前記システムは、前記移動中のデータを、複数の前記データを少なくとも機密又は非機密に分類するためにタグ付けするようにさらに構成される、請求項15に記載のシステム。
【請求項27】
前記タグ付けは、機密情報を示す辞書を保持する知識リポジトリを使用して実行されるように、前記システムがさらに構成される、請求項26に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2019年3月1日に出願された米国仮特許出願第62/812,573号明細書の利益を主張するものであり、その内容は、本明細書に援用される。
【0002】
本開示は、概して、移動中のデータの処理に関し、特に、移動中のデータのタグ付けに関する。
【背景技術】
【0003】
ビッグデータから洞察を得るためのアプリケーション及び製品が人気となっている。このようなアプリケーション及び製品は、予測目的でデータの収集、管理、及び分析を行うため、又はリアルタイムの洞察を取り出すために使用される。異なるタイプのデータは、意味のある洞察を提供するために、異なる計算プラットフォームを必要とし得る。洞察は、保存されているデータ、又は移動中のデータから抽出され得る。保存されているデータとは、様々なソースから収集され、その後、事象が生じた後に分析されるデータを指す。データが分析される時点、及びそのデータに対してアクションが起こされる時点は、2つの離れた時点で順次生じる。これに対して、移動中のデータの分析は、事象が生じるときにリアルタイムで生じる。
【0004】
移動中のデータのどのような処理も、リアルタイムで行われるべきである。したがって、移動中のデータを処理するためのソリューションを実装する際に、レイテンシーが重要要素である。他の制約は、移動中のデータが、それぞれが独自の形式又は構造を有し得る、異なるデータソースから収集され得る点である。さらに、複数の異なるソースからのデータは、同時に、且つリアルタイムで処理されるべきである。このような制約により、異なるソースから収集された、大量の移動中のデータを処理できるソリューションは、現在存在しない。具体的には、リアルタイムで、移動中のデータにインデックスを付ける、又はタグを付けることができるソリューションは存在しない。
【0005】
したがって、上記の課題を克服するソリューションを提供することは有益であるだろう。
【発明の概要】
【課題を解決するための手段】
【0006】
本開示の幾つかの例示的実施形態の概要が以下に続く。この概要は、そのような実施形態の基本的理解を提供するために、読み手の利便性のために提供されるものであり、本開示の広さを完全に定義するものではない。本概要は、企図される全ての実施形態の広範囲の概要ではなく、全ての実施形態のうちの主要又は不可欠な要素を識別すること、又は何れかの観点、若しくは全ての観点の範囲を詳述することのどちらも意図していない。その唯一の目的は、後に提示される、より詳細な説明への序章として、簡略化された形で、1又は複数の実施形態の幾つかの概念を提示することである。便宜上、「幾つかの実施形態」又は「特定の実施形態」という用語は、本明細書では、本開示の単一の実施形態又は複数の実施形態を指すために使用され得る。
【0007】
本明細書に開示される特定の実施形態は、移動中のデータに対してハッシュバケッティング処理を実行する方法を含む。本方法は、入力データセットをバケットにマッピングするために、入力データセットに第1ハッシュ関数を適用することであって、第1ハッシュ関数は、第1ハッシュ値をもたらすものであることと、入力データセットをバケット内のレコードにマッピングするために、第1ハッシュ値に第2ハッシュ関数を適用することと、入力データセットに基づいて、メタデータを生成することであって、メタデータが、入力データセットのオリジナルの場所を少なくとも示すことと、生成されたメタデータをバケット内のレコードに保存すること、とのステップを含む。
加えて、本明細書に開示される実施形態は、移動中のデータに対してハッシュバケッティング処理を実行するシステムを含む。本システムは、処理回路と、メモリであって、処理回路によって実行されると、入力データセットをバケットにマッピングするために、入力データセットに第1ハッシュ関数を適用し、そこで、第1ハッシュ関数は、第1ハッシュ値をもたらし、入力データセットをバケット内のレコードにマッピングするために、第1ハッシュ値に第2ハッシュ関数を適用し、入力データセットに基づいて、メタデータを生成し、そこで、メタデータが、入力データセットのオリジナルの場所を少なくとも示し、生成されたメタデータをバケット内のレコードに保存するようにシステムを構成する命令を含む、メモリと、を含む。
【0008】
本明細書に開示される主題は、本明細書の最後の特許請求の範囲において、具体的に指摘され、明確に請求される。開示される実施形態の上述及び他の目的、特徴、及び利点は、添付の図面と併せて、以下の詳細な説明から明らかとなるだろう。
【図面の簡単な説明】
【0009】
【
図1】
図1は、様々な実施形態を説明するために利用されるネットワーク図である。
【0010】
【
図2】
図2は、一実施形態に係るハッシュバケッティングを示す例示的図である。
【0011】
【
図3】
図3は、一実施形態に係るメタデータ構造を示す例示的図である。
【0012】
【
図4】
図4は、一実施形態に係るハッシュバケッティング処理を実行する方法を示す例示的フローチャートである。
【0013】
【
図5】
図5は、様々な実施形態に係る、開示されたコマンドを使用した、連続ストリーミング処理を示す例示的図である。
【0014】
【
図6】
図6は、一実施形態に係る、グラフ実行を実演する図である。
【0015】
【
図7】
図7は、開示される実施形態を実行するように構成されたシステムのブロック図である。
【発明を実施するための形態】
【0016】
本明細書に開示される実施形態が、本明細書の革新的教示の多数の有益な用途の例に過ぎないことに留意することが重要である。一般に、本出願の明細書の記述は、必ずしも、様々な請求された実施形態の何れも限定しない。また、一部の記述は、一部の発明的特徴に当てはまり得るが、他の発明的特徴には当てはまらないことがある。一般に、別段の記載のない限り、一般性を失うことなく、単数の要素は、複数形でもよく、逆の場合も同じである。図面では、幾つかの図を通して、同様の数字は、同様の部分を指す。
【0017】
図1は、様々な実施形態を説明するために利用される例示的
図100である。
図100は、ネットワーク120上で通信する、複数のデータソース110-1~110-Q(以下、簡潔にするために、個々に、データソース110と呼ばれ、まとめて、複数のデータソース110と呼ばれる)と、システム130と、データストア140とを示す。ネットワーク120は、無線、セルラー、又は有線ネットワーク、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、メトロエリアネットワーク(MAN)、インターネット、ワールドワイドウェブ(WWW)、類似のネットワーク、及びそれらの任意の組み合わせでもよいが、これらに限定されない。
【0018】
ある例示的実施形態では、各データソース110は、データレイク、データウェアハウス、ストリーミングデータ、データセット、データベースなどでもよいが、これらに限定されない。データベースは、リレーショナルデータベース、又はMongoDB(ただし、これに限定されない)などのNoSQLタイプのデータベースでもよい。リレーショナルデータベースの例は、Oracle(登録商標)、Sybase(登録商標)、Microsoft SQL Server(登録商標)、Access(登録商標)、Ingres(登録商標)などが含まれてもよいが、これらに限定されない。実施形態では、複数のデータソース110は、同じ物理構造に存在する論理エンティティでもよい。各データソース110に保存されたデータは、構造化データ、非構造化データ、半構造化データ、又はそれらの組み合わせの形式でもよい。
【0019】
タグ付けを含む(ただし、これに限定されない)処理は、移動中のデータのもの、すなわち、データが複数のデータソース110の何れかにセーブされるときの、又は複数のデータソース110の1つから、1又は複数の他のデータソース110へとデータが転送されるときのリアルタイム処理によるものであってもよい。
【0020】
システム130は、本明細書に開示される様々な実施形態を実行するように構成される。具体的には、システム130は、移動中のデータにタグ付けする処理を実装するように構成される。上記の通り、全ての移動中のデータは、リアルタイムで処理されるべきである。実施形態では、タグ付けを可能にするために、システム130は、知識リポジトリ135に接続されてもよい。知識リポジトリ135は、複数のデータソース110中のデータのタグ付けに利用される辞書を保持する。例えば、知識リポジトリ135は、機密情報にタグ付けするための辞書を含んでもよい。知識リポジトリ135は、分散データベースでもよい。機密情報は、不当な開示に対して保護されるあらゆる情報である。現在、組織は、個人情報又は機密情報に対するアクセスを保護することが必要とされている。機密情報の保護は、法的若しくは倫理的理由から、個人のプライバシーに関する問題のため、又は所有権の配慮から必要とされ得る。
【0021】
システム130は、複数のデータソース110の何れかにセーブされたコンテンツを迅速にサーチするために利用されてもよい。このために、システム130は、異なるデータソース110に保存された、異なるタイプのデータを表す、異なって構造化されたメタデータをサポートするために柔軟性のある構造を生成するように構成される。メタデータは、データソース110の何れかに保存されたオリジナルのデータを参照する。さらに別の実施形態では、システム130は、メタデータの並列処理、より具体的には、異なるデータソースのメタデータの並列マッチングをサポートするように構成される。
【0022】
以下に詳細に説明するように、システム130は、コンテンツアドレス可能なハッシュバケットのための処理(以下、「ハッシュバケッティング」)を実装するように構成される。予め定義されたコマンドセットを使用して、ハッシュ化データに対してリアルタイムでアクションが行われ得る。
【0023】
システム130は、物理マシン、仮想マシン、又はそれらの組み合わせとして実装されてもよい。物理マシン実施態様を示す、
図7に示される一例のブロック図を以下に説明する。仮想マシンは、ソフトウェアコンテナ、マイクロサービス、ハイパーバイザなどの任意の仮想ソフトウェアエンティティでもよい。
【0024】
本明細書に開示される実施形態は、
図1に示される特定のアーキテクチャに限定されないこと、及び開示される実施形態の範囲から逸脱することなく、他のアーキテクチャが等しく使用されてもよいことに留意されたい。具体的には、システム130は、クラウド計算プラットフォーム、データセンタなどに存在してもよい。クラウド計算プラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウドなどでもよい。また、ある実施形態では、分散システムとして動作する複数のシステムが存在してもよい。さらに、データストア140も同様に分散されてもよい。幾つかの実施態様では、システム130は、複数のデータソース110の何れかの内部コンポーネント又はインスタンスでもよい。
【0025】
幾つかの実施形態によれば、修正コンテンツアドレス可能なストレージ(CAS)プロセスに基づいたハッシュバケッティング処理が開示される。この処理は、システム130によって行われ、データソース110にセーブされた任意の情報をバケット及びバケット内のある特定の場所(レコード)へとマッピングすることを含む。マッピングは、ハッシュ関数を使用して行われる。すなわち、マッピングは、以下のように表現され得る。
Data_Address=H(dataset)
ここで、Hは、ハッシュ関数であり、「dataset」は、マッピングされる情報であり、複数のデータソース110の1つに由来し、Data_Addressは、バケット内の情報のレコードである。
【0026】
バケットの数は、予め定義されるが、マッピングに利用されるデータの最上位ビット(MSB)の数に応じて拡張可能でもよい。例えば、2最上位バイトを考慮すると、256個のバケットの数を、65536個のバケットに拡張され得る。ある実施形態では、任意の2つのバケットのコンテンツは、相互排他的である。すなわち、任意の2つのバケットの共通部分は、空となる。
【0027】
開示された実施形態によれば、マッピングは、バケット、及びバケット内の(レコード)に対するものである。このために、データセットをバケットにマッピングするための第1ハッシュ関数、及び第1関数によって計算されたハッシュ値をバケット内のレコードにマッピングするための第2ハッシュ関数の2つの異なるハッシュ関数が利用されてもよい:ある例示的実施態様では、第1ハッシュ関数は、ある特定のバケットに対するテラバイト単位のデータを一意に識別するのに十分な16バイトハッシュ値を生成する128ビットのハッシュである。この例示的実施態様では、第2ハッシュ関数は、データセットを各バケット内のレコードにマッピングするために使用される32ビットの関数である。バケットの数に応じて、単一のバケット内のデータ全体のサイズは、約1/Nであるべきであることに留意されたい。Nは、バケットの数を指定する整数である。上記の通り、バケットの数「N」は、予め定義され得る。さらに、第1及び第2ハッシュ関数は変化せず、したがって、これらのハッシュ関数は、それらのオリジナルのデータソース110にかかわらず、全てのデータセットに適用されることに留意されたい。
【0028】
ある実施形態では、ハッシュ化されるデータ中の互いに異なる要素の数を近似するために、生データ近似が利用される。近似は、これらに限定されないが、HyperLogLog(HLL)、ビットセット、ビットマップなどの技術を使用して行われ得る。
【0029】
図2は、ある実施形態に係るハッシュバケッティングを示す例示的
図200である。
図200は、多数のN個のバケット210-1~210-N(以下、簡潔にするために、個々に、1つのバケット210と呼ばれ、まとめて、複数のバケット210と呼ばれる)を示す。各バケットは、多数のレコード220-1~220-R(以下、簡潔にするために、個々に、1つのレコード220と呼ばれ、まとめて、複数のレコード220と呼ばれ、Rは、整数値である)を含む。
【0030】
各レコード220は、バケット中のハッシュ化データの場所(レコード)を複数のデータソース110(
図1)の1つにおけるオリジナルの場所にマッピングすることを可能にするメタデータを保持する。バケット、レコード、及びメタデータはデータストア140内にセーブされ、例えば単一のテーブルに論理的に保持され得ることに留意されたい。
【0031】
図3は、ある実施形態に係るメタデータ構造300を示す例示的図である。メタデータ構造300は、以下の列(又はフィールド):識別子(ID)310、属性320、及びデータ330を含む。
【0032】
ID列310は、1又は複数のデータソース中のオリジナルのデータセットの場所に対する参照を保持する。ID列310の形式は、バケット識別子(ID)及びURLを含む。ある例示的構成では、URLは、オリジナルのデータソース中の所与のデータエントリのURIに関連付けられ得る。例えば、URIは、特定の列に対して、リレーショナルデータベースからのデータが記録される際のデータベース、テーブル、及び列名、ファイルシステムからのディレクトリ及びファイル、又はウェブページ、ストリーミングデータなどへのハイパーリンクを含む完全認定経路を指定してもよい。
【0033】
属性列320は、所与のデータセットの全ての属性を保持する。属性のリストには、列のメタデータ(例えば、列名、列のタイプ、列のタイプ名など)、他の列に対する参照、統計値、データセット中の要素の総数、互いに異なる値の数などが含まれてもよいが、これらに限定されない。属性のリストは固定されず、オリジナルのデータのタイプに依存することに留意されたい。例えば、データベース中のデータストレージの属性は、文書又はストリーミングデータの属性とは異なってもよい。
【0034】
データ列330は、例えば、HLL値、ビットマップ値、又はその両方である近似されたデータセット値を保持するように構成される。幾つかの実施態様では、近似表現の代わりに、実際の生データがセーブされる。
【0035】
ある実施形態では、メタデータを保持する全てのレコード220が、ID列の値に基づいて、順番に辞書的にソートされる。リレーショナルデータベースに保存されるメタデータデータセットを保持するレコードの例示的セットが、表1に提供される。
【表1】
【0036】
各メタデータにおける値は、典型的には異なる。本明細書に開示されるようなメタデータ及びレコード構造により、バケット中のデータを見つける一定のアクセス時間が可能となることを認識されたい。アクセス時間は、1のオーダーであるO(1)と、RのオーダーであるO(R)との間であり得、Rは、バケット内のレコードの数である。ID列が、複数のデータソース(110、
図1)の1つに保存されたオリジナルのデータセットに対する直接的な完全認定経路(又はポインタ)を提供するので、オリジナルのデータに対するアクセス時間も一定である。
【0037】
ある実施形態では、ハッシュ関数を適用する前に、データセットのビットがスライスされる(すなわち、ビットスライシング動作)。これは、処理時間を加速させるため、及びメモリ及びCPUなどの計算資源を節約するために実行される。ある実施形態では、データセット全体が、複数のサブセットにスライスされる。各サブセットは、ハッシュ関数によって生成されたハッシュ値の限定範囲に関してのみ信頼できる。具体的には、ハッシュ関数は、各サブセットにわたり計算される。例えば、32ビットのハッシュ関数の場合、1024個のサブセットが作成される。さらに、これらのサブセットにわたり計算されたハッシュ値は、パーティションにセーブされる。パーティションの数は、サブセットの数よりも大幅に少ない。例えば、パーティションの数は、16であり得る。サブセット及びパーティションの数は、2の累乗である任意の数であってもよいことに留意されたい。
【0038】
パーティションへの分散は、ハッシュの値のMSBに基づく。非限定例として、もしハッシュ値のMSBビット(例えば、最初の4ビット)が「0000」であれば、ハッシュ値は、パーティション#0に向けられ、もしハッシュ値の最初の4ビットが「0001」であれば、ハッシュ値は、パーティション#1に向けられるなどである。
【0039】
特定の実施形態では、スライスされたサブセット、それらのそれぞれのハッシュ値、又はその両方に対して、算術演算が行われる。このような演算には、濃度、連結、共通集合、結合、調和などが含まれてもよい。
【0040】
図4は、ある実施形態に係る、移動中のデータに対してハッシュバケッティング処理を実行する方法の例示的フローチャート400である。このプロセスは、リアルタイムで行われる。S410では、入力データセットが受信される。入力データセットは、任意のデータソース(例えば、複数のデータソース110のうちの1又は複数、
図1)から読み出され、取り出され、又は他の方法で受信されてもよい。入力データセットには、例えば、ファイル、ファイルの一部、データベーステーブル、データベーステーブルの1又は複数の列、データエントリ、データオブジェクト(例えば、画像、ビデオファイルなど)などが含まれてもよい。
【0041】
S420では、データセットをバケットにマッピングするために、第1ハッシュ関数が適用される。ある例示的実施態様では、第1ハッシュ関数は、128ビットのハッシュ関数である。
【0042】
S430では、S420で決定されたバケット内のレコードを識別するために、第2ハッシュ関数が、第1関数によって計算されたハッシュ値に適用される。ある例示的実施態様では、第2ハッシュ関数は、各バケット内のデータを識別するために使用される32ビットの関数である。さらに、特定の実施形態では、1つのハッシュ関数が、データセットを、決定されたバケット内の各レコードにマッピングするために利用され得ることに留意されたい。
【0043】
幾つかの実施態様では、データセットは、第2ハッシュ関数を適用する前に、スライスされる。上記の通り、データセットは、複数のサブセットにスライスされる。各サブセットは、ハッシュ関数によって生成されたハッシュ値の限定範囲に関してのみ信頼できる。
【0044】
ある実施形態では、ハッシュ関数を適用する前に、データセットは、予め定義された数のサブセットにスライスされ、第2ハッシュ関数は、各サブセットにわたり計算される。これらのサブセットにわたり計算されたハッシュ値は、それぞれのハッシュの値に基づいて、パーティションに保存される。
【0045】
S440では、データセットに関する情報(メタデータ)は、データセットに基づいて生成される。メタデータは、一般的に、各データセットに関連付けられ、データセットのソースのアドレス(例えば、URL又はURI)、データセットの形式(例えば、text、doc、pdf、sound、video、jpegなど)、このデータセットを生成したソフトウェアのタイプ(例えば、ワードプロセッサ、関係データベース、データストリームなど)を含む。場合によっては、ほとんどのファイルの最初に、データセット内のデータのタイプを識別するのに役立つマジックバイトが存在する。ここでの表形式データセットは、テーブル名、列及び列の名、タイプ、サイズなどの構造である。
【0046】
ある実施形態では、S440は、メタデータの構造(列)のコンテンツを決定する入力データセットのメタデータを抽出することを含む。このような列は、ID、属性、及びデータ列を含む。メタデータの列の例及び定義は、上に記載されている。
【0047】
S450では、生成されたメタデータは、決定されたバケット内の各レコードに格納される。上記の通り、各バケット内のレコードは、順番にソートされてもよい。
【0048】
幾つかの実施形態では、本明細書で述べたハッシュバケッティング処理は、これに限定されないが、機密情報を含む情報の効率的且つ高速のタグ付けに利用できる。上記の通り、機密情報は、不当な開示に対して保護される、あらゆる情報である。
【0049】
機密情報(又はその他のタイプの情報)のタグ付けは、上記のようなハッシュバケッティング処理を使用して実行される。ある実施形態では、知識リポジトリ(例えば、リポジトリ知識135、
図1)は、例えば機密情報として分類された情報のメタデータを含む。タグ付け処理は、入力データセットをハッシュ化すること、及びハッシュ値をリポジトリ知識のコンテンツとマッチングすることを含んでもよい。マッチが見つかった場合、そのデータセットは、機密情報としてタグ付けされてもよい。メタデータは、入力データセットに対して生成されることに留意されたい。ある例示的実施態様では、機密情報タグは、メタデータの属性の一部として保存されてもよい。マッチングされるデータセットは、移動中のデータであるように構成される。さらに、知識リポジトリが機密情報(又はその他の情報)のメタデータを保持することに留意されたい。メタデータの生成は、本明細書で述べたハッシュバケッティング処理を使用して作成される
【0050】
特定の実施形態では、知識リポジトリのコンテンツに対するマッチングは、これらに限定されないが、自然言語処理(NLP)、パターンマッチング、機械学習などを含む技術を使用して実行されてもよい。
【0051】
移動中のデータの処理は、リアルタイムで実行される。複数のデータソースが存在する計算環境は、本質的に分散されており、ストリーム処理を実施する。データソースのタイプ及び計算環境にかかわらず、このような環境において移動中のデータの処理をサポートするために、モジュラー処理アーキテクチャが本明細書に開示される。
【0052】
モジュールアーキテクチャは、本明細書で定義されるコマンドの実行により実現される。ある例示的実施形態では、コマンドは、以下のインタフェースを使用して定義される。
コマンド<I,O,P,S>
ここで、「I」は、コマンドに対する入力を表すジェネリックタイプであり、「O」は、コマンドの出力を表すジェネリックタイプであり、「P」は、コマンドのパラメータであり、「S」は、コマンドの順次コール間の中間データの管理を提供する持続的サービスである。
【0053】
入力及び出力は、外部データソースへの参照として提示され得る。ある実施形態では、コマンドの実行は、ランタイム環境からのそれぞれのインスタンスによるものである。ランタイム環境は、適切なコマンドの属性を割り当ててもよい。本明細書で定義される何れのコマンドも、ステートレスであり、そのため、分散計算に適する。しかし、コマンドは、スタンドアロンプログラム又はアプリケーションとして走ることはできない。
【0054】
具体的には、コマンドは、ステートレスインスタンスであり、したがって、外部のデータ及びパラメータに依存する。パラメータ及び持続的サービスに対する参照は、通常、明示的に提供される。入力データは、明示的に、データの集まりとして、又は外部データソースに対する完全認定経路としての参照により、コマンドへ送られてもよい。
【0055】
コマンドは、データの集まりとして、計算結果を出力し、又はそれらの結果を保存するための外部データセットを使用し得る。コマンドは、プロキシとしても機能し得る。プロキシとして機能するコマンドは、Apache Flink、Spark、Stormなどの外部計算フレームワークにリクエストをリダイレクトし得る。
【0056】
幾つかの実施形態によれば、パイプラインのコマンドは、例えば、ソースコマンド、シンク、及び処理コマンドを含んでもよい。
【0057】
以下は、ソースコマンドの幾つかの例である:データをストリーミングフレームワーク(例えば、Kafka)に取り込むこと;ローカルファイルシステムをサポートすること(例えば、順次読み出し、スキャニング、及びフィルタリング);データストアとしてローカルファイルシステムを備えたHBaseをサポートすること(データに対してクエリー、スキャン、及びフィルタリングを行うこと);及びグラフデータベースをサポートすること(グラフデータベースに対してクエリー及び横断を行うこと)。
【0058】
以下は、データ変換コマンドの幾つかの例である:サーチコマンド:ソースデータのインデックス作成及びマッピング;データのサーチ及びクエリー;カスタムフィルタリング及びアグリゲーション;データサンプリング及び基礎統計:ローカルファイルシステムからのサンプルの生成;統計値(例えば、平均(mean)、中央値、平均(average)、標準偏差など)の計算;統計モデル;機械学習処理;並びにエージェント及び外部計算フレームワークを実行するためのプロキシコマンド。
【0059】
以下は、シンクコマンドの幾つかの例である:データをローカルファイルシステムに投げ込むこと;データをHDFS/HBase/Cassandraに書き込む/投げ込むこと;並びにグラフのノード及びエッジとして、データをグラフデータベースに書き込むこと。
【0060】
パイプラインコマンドは、2つのモード、すなわち、順次及び非同期的に、実行され得る。パイプラインの次のコマンドが、前のコマンドの実行が終了して初めて実行される場合に、コマンドは、順次実行される。パイプラインの全てのコマンドが、同時に実行されることが可能であり、非同期メッセージング層を使用して互いにデータをやり取りすることができ、及び入力オブジェクトが必要なデータを提供するとすぐに処理を行うことができる場合に、コマンドは非同期的に実行される。メッセージング層は、後で処理を行うことを可能にするためにバッファを使用する任意のシステムであってもよい。これは、処理が、先送りすることができず、配信時に、又はこのメッセージの喪失時に行われるべきである、同期メッセージングシステムとは対照的である。
【0061】
ある実施形態では、コマンドは、外部システム/フレームワークと通信し、それらの間で通信する際に、標準化された入力及び出力オブジェクトを使用する。構造的に、入力及び出力は共に同じであり、したがって、コマンド間で通信される出力に関して、追加の処理は必要ない。パイプラインコマンドは、入力オブジェクトにおけるパラメータとして、他のコマンドへの参照のリストを受理し、その後、これらのコマンドを実行し得る。
【0062】
図5は、様々な実施形態に係る、開示されたコマンドを使用した、連続ストリーミング処理を示す例示的
図500を示す。
図5に例示される処理は、パターンマイニングコマンド(501)、ドメインプロファイリングコマンド(502)、及び関係プロファイリングコマンド(503)を並行して実行するコマンドフローである。トランスポート層510は、データソース520からデータを転送する。コマンド501~503は、トランスポート層510によって、結果をデータシンク530に送る。
【0063】
ある例示的実施態様では、データソース520は、Oracle(登録商標)データベースでもよく、データシンク530は、Cassandra及びGraph DBでもよい。トランスポート層510は、例えば、Kafkaを使用して実現されてもよい。Kafkaは、リアルタイムデータ供給を取り扱うための、統一された、高スループットの、低遅延プラットフォームを提供するように設計されたオープンソースプラットフォームである。
【0064】
ある実施形態では、コマンドの並列実行をサポートするために、グラフ実行エンジンが実装される。複数の計算ノードにわたってデータが分散される場合に、グラフ実行エンジンが、分散システムにおいて必要とされる。
【0065】
ある実施形態によれば、グラフ実行に関する新規の手法が開示される。既存のグラフ実行技術とは対照的に、開示されるグラフ処理は、複数のグラフノードにわたる、直接的な横断を使用しない。代わりに、グラフ処理は、実行グラフノード(又は単に「ノード」)ごとに実行ステータスを定義するキューを使用する。
【0066】
ある実施形態では、処理の異なるフェーズを指定するために、各キューは、コード化される(例えば、色分けされる)。例えば、キューは、緑、白、青、灰色、赤、及び黒で色分けされてもよい。各キューは、先入れ先出し(FIFO)キューとして実現されてもよい。キューは、対応する実行状態にあるグラフ中のノードに対する参照(ポインタ)を保持する。
【0067】
ある例示的実施態様では、緑色キューは、ソースとして機能し、黒キューは、シンクとして機能し、灰色キューは、「インプロセス(in-process)」状態を表す。白、青、及び赤のキューは、開始ステータスと終了ステータスとの間のノードの異なる処理状態を表す。開始ステータス及び終了ステータスは、それぞれ、緑キュー及び黒キューによって表される。
【0068】
キューに配置された実行グラフノードは、暗黙的に関連付けられてもよい。各ノードは、同じキュー、又は異なるキューに存在し得る「インノード」及び「アウトノード」のコンテキストを保持してもよい。このようなノードは、それらのステータス及び現在のノードの処理の結果に基づいて、あるキューから別のキューへと転送される。アウトノードは、そのエッジにソースとしての現在のノードからのデータを有するノードである。
【0069】
白キューは、結果の状態に応じて、現在のノードのアウトノードを黒キュー又は赤キューのどちらかに移動させてもよい。青キューは、赤キューからのノードを処理するように構成され、結果の状態に応じて、ノードを黒キュー又は赤キューのどちらかに移動させる。赤キューは、現在のノードの未処理のインノードを処理し、及び青キューへ移動する。ある構成では、各ノード内の処理は、非同期的であってもよい。
【0070】
図6に例示されるように、本明細書に開示されるグラフ実行は、実行グラフの各ノードを緑キュー610から黒キュー660に移動させようとする。
【0071】
グラフ実行エンジンによって実行される処理は、全てのノードを緑キュー610に配置する。次いで、グラフ内の全ての開始ノードが、(図示された)白キュー620又は(図示されない)青キュー640に配置される。白キュー620内の全てのノードは、処理されるのを待っている。処理される準備ができているノードは、ノードの処理を開始するために、灰色キュー630に移動される。キューがFIFOキューであるので、キュー内の第1ノードは、処理、すなわち、灰色キュー630に転送される。ノードの処理が完了すると、ノードは、黒キュー660に転送される。同時に、現在のノードのアウトノードが、緑キュー610から白キュー620へと移動される。
【0072】
白キュー620におけるノードの処理が完了すると、赤キュー650内のノードの処理が実行される。まず、赤キュー650内の各ノードに関係する、緑キュー610内の全てのインノードが、検出される。このようなノードは、青キュー640に転送される。青キュー640内のノードは、白キュー620内のノードと同じように処理される。次に、ノードは、赤キュー650から黒キュー660へと移動され得る。
【0073】
グラフ実行エンジンは、他のタイプのデータ構造を利用することができ、色分けキューに限定されないことを認識されたい。例えば、上述の色分けキューの代わりに、ステートマシンが利用され得る。
【0074】
図7は、ある実施形態に係る、実装されたシステム130の例示的ブロック図を示す。システム130は、メモリ715、ストレージ720、及びネットワークインタフェース730に接続された処理回路710を含む。ある実施形態では、システム130のコンポーネントは、バス740を介して通信可能に接続されてもよい。
【0075】
処理回路710は、1又は複数のハードウェア論理コンポーネント及び回路として実現されてもよい。例えば、限定されることなく、使用され得るハードウェア論理コンポーネントの実例的タイプは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)など、又は計算、若しくは情報の他の操作を行うことができる、その他のハードウェア論理コンポーネントが含む。
【0076】
メモリ715は、揮発性(例えば、RAMなど)、不揮発性(例えば、ROM、フラッシュメモリなど)、又はそれらの組み合わせでもよい。ある構成では、本明細書に開示される1又は複数の実施形態を実装するためのコンピュータ可読命令が、ストレージ720に保存されてもよい。
【0077】
別の実施形態では、メモリ715は、ソフトウェアを保存するように構成される。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、或いはその他の名称で呼ばれるかにかかわらず、あらゆるタイプの命令を意味すると広く解釈されるものとする。命令は、(例えば、ソースコード形式、バイナリコード形式、実行可能コード形式、又はコードのその他の適切な形式の)コードを含んでもよい。命令は、1又は複数のプロセッサによって実行されると、処理回路610に、本明細書に記載される様々な処理を実行させる。具体的には、命令は、実行されると、処理回路710に上述のようなハッシュバケッティング処理を行わせる。処理回路710は、コマンド及びグラフ実行エンジンも実行するように構成される。
【0078】
ストレージ720は、磁気ストレージ、光学式ストレージなどでもよく、例えば、フラッシュメモリ、又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、又は所望の情報を保存するために使用され得るその他の媒体として実現されてもよい。
【0079】
ネットワークインタフェース730は、システム130が、少なくとも様々な複数のデータソース(
図1、110)と通信することを可能にする。
【0080】
本明細書に記載される実施形態は、
図7に示される特定のアーキテクチャに限定されないこと、及び開示される実施形態の範囲から逸脱することなく、他のアーキテクチャが等しく使用されてもよいことを理解されたい。
【0081】
本明細書に開示される様々な実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの任意の組み合わせとして実装され得る。また、ソフトウェアは、好ましくは、部分、又は特定のデバイス及び/又はデバイスの組み合わせから構成される、プログラムストレージ装置又はコンピュータ可読媒体上で有形的に具現化されたアプリケーションプログラムとして実装される。アプリケーションプログラムは、任意の適切なアーキテクチャを含むマシンにアップロードされ、そのマシンによって実行されてもよい。好ましくは、マシンは、1又は複数の中央処理装置(CPU)、メモリ、及び入出力インタフェースなどのハードウェアを有するコンピュータプラットフォームに実装される。コンピュータプラットフォームは、オペレーティングシステム及びマイクロ命令コードも含んでもよい。本明細書に記載される様々な処理及び機能は、そのようなコンピュータ又はプロセッサが明示的に示されているかどうかにかかわらず、CPUによって実行され得る、マイクロ命令コードの一部、或いはアプリケーションプログラムの一部のどちらか、又はそれらの任意の組み合わせでもよい。加えて、追加のデータストレージ装置及び印刷装置などの様々な他の周辺装置が、計算プラットフォームに接続されてもよい。さらに、非一時的なコンピュータ可読媒体は、一時的な伝搬信号を除く、任意のコンピュータ可読媒体である。
【0082】
本明細書では、アイテムのリストの後に続く「少なくとも1つ」という表現は、リストされたアイテムの何れも個々に利用することができ、又はリストされたアイテムの2つ以上の任意の組み合わせを利用することができることを意味する。例えば、システムが、「A、B、及びCの少なくとも1つ」を含むと記載される場合、システムは、Aのみ、Bのみ、Cのみ、A及びBの組み合わせ、B及びCの組み合わせ、A及びCの組み合わせ、又はA、B、及びCの組み合わせを含み得る。
【0083】
本明細書に記載される全ての例及び条件文言語は、開示される実施形態の原理及び当該分野を前進させるために本発明者によって寄与される概念を読者が理解することを助ける教育上の目的を意図したものであり、このような具体的に記載された例及び条件に限定されないと解釈されるものである。また、開示される実施形態の原理、局面、及び実施形態、並びにそれらの具体的な例を記載する本明細書の全ての記述は、それらの構造的及び機能的均等物の両方を包含することが意図される。加えて、このような均等物は、現在知られている均等物、並びに今後開発される均等物の両方を含むこと、すなわち、構造にかかわらず、同じ機能を行う、開発されたあらゆる要素を含むことが意図される。