導入
本明細書で説明するいくつかの例は、トランザクション処理における使用のための機械学習システムにおける使用のための方策に関する。いくつかの例では、機械学習システムは、アクティビティまたはアクションの以前に観測および/または予測されたパターンにトランザクションまたはエンティティが整合するかどうかの表示、たとえば、トランザクションまたはエンティティが「正常」であるのかそれとも「異常」であるのかの表示を提供するために、大量トランザクション処理パイプラインがリアルタイムに適用される。「挙動の」という用語は、アクティビティまたはアクションのこのパターンを指すために本明細書では使用される。その表示は、次に支払いシステムの不正行為および他の誤用を防止するために使用可能である、既定の範囲内(たとえば、0~1)で正規化されたスカラー値を備えてよい。機械学習システムは、偽陽性を低減するとともに出力メトリックの確度を維持するように、より多くのトランザクションデータが取得されるにつれて更新される、たとえば、新たなデータに基づいて絶えず訓練される、機械学習モデルを適用してよい。本明細書で説明する例は、たとえば、1つまたは複数のデータストアの中のそのようなデータを探索および記憶するという点で、そのようなデータの改善された処理に関する。本例は特に、支払いカードの物理的な存在が確認され得ない(たとえば、「カード非提示(card-not-present)」と呼ばれるオンライントランザクション)場合での不正行為を防止するために、または価値の大きいトランザクションが日常的であってよく挙動のパターンを「予想外」として分類することが困難なことがある商取引にとって、有用であってよい。したがって、これらのトランザクションが、主に「オンライン」であり、すなわち、1つまたは複数の公衆通信ネットワークを介してデジタル的に伝えられるとき、本例はトランザクションの処理を容易にする。
本明細書で説明するいくつかの例は、口座保有者および小売商などのいくつかのエンティティに固有となるように機械学習モデルが仕立てられることを可能にする。たとえば、機械学習モデルは、劣悪な確度をもたらす全体的なグループまたは集約した挙動ではなく、挙動のエンティティ固有のパターンをモデリングしてよい。本明細書で説明する方策および機械学習システムは、大きいトランザクションフローにもかかわらず、かつ/または異なるデータソースの隔離の必要にもかかわらず、機械学習モデルを動的に更新することを行うことができる。再び、本明細書で説明する例は、そのような機械学習モデルの中で使用されるべき機械学習モデルデータを読み取るとともに記憶するための、改善された方策を提供する。
本例は、限定はしないが、カード支払い、いわゆる「ワイヤ」トランスファ、ピアツーピア支払い、銀行自動決済システム(BACS:Bankers' Automated Clearing System)支払い、および自動手形交換所(ACH:Automated Clearing House)支払いを含む、多種多様なデジタルトランザクションに適用されてよい。機械学習システムの出力は、カード不正行為、アプリケーション不正行為、支払い不正行為、小売商不正行為、賭博不正行為、および不正資金洗浄などの、多種多様な不正な犯罪的挙動を防止するために使用されてよい。
たとえば、以下の図1A~図18に従って構成および/または訓練されるような、この例示的な機械学習システムは、1秒または1秒未満の処理レイテンシを提供するために、また大規模な処理量(たとえば、年間数十億のトランザクション)を管理するために、容易に並列化され得る高速な推論を可能にする。
より詳細には、本明細書で説明する例は、履歴データが複製されることなくデータの共通の履歴セットに基づいて、データの複数の発散するセットが(データベースなどの)データストアの中に記憶されることを可能にする。例は、1つのセットからのすべてのデータが別のセットの中のデータの上部にコピーされることなく、データの1つのセットがデータの別のセットと論理的に置き換えられることを可能にする。例は、データストア内でデータがコピーされることを必要とすることなく、単一のアトミックな動作としてクライアントにとってアクセス可能なデータの新たなセットを作ることを可能にする。そのようなデータが機械学習モデルデータを備える場合、機械学習システム処理レイテンシは短縮されることが可能であり、スループットは増大されることが可能である。以下でより詳細に説明するように、「状態ID」メタデータへの単一のアトミックな変更の一部として大部分のデータ変更を認識可能にさせる、様々な方策が提供される。たとえば、「ライブ」データセットの中にコピーされるのではなく、動作しているプロセスによって使用されるライブデータセットとは別個のデータセットの中に、データの大規模なセットがコピーされ得る。別個のデータセットは、ライブデータセットによって使用されるライブ状態IDとは異なる、ライブ状態IDから独立した状態IDを有することができる。新規データセットの新たな状態IDは、ライブデータセットのオーバーレイとして新規データセットを設定すること、および状態メタデータ変更をクライアントに通知することによって、既存のプロセスにとってアトミックに認識可能にされ得る。クライアントは、次いで、結合された単一のデータセットからデータが読み取られ得る前に手作業のコピー動作が実行されることを必要とするのではなく、ライブデータセットと新規データセットとの混合物からデータを読み取ることができる。このようにして別個のデータセットを維持することはまた、たとえば、トランザクション処理に悪影響を及ぼす場合がある、ライブデータセットへの不注意による望ましくない変更のリスクを減らす。
いくつかの用語定義
「データ」という用語は、限定はしないが、1つまたは複数のプログラミング言語内の知られているビット構造によって表されるものなどのデジタル情報を指すために、本明細書では様々なコンテキストにおいて使用される。使用の際、データとは、コンピュータメモリ内でビットシーケンスとして記憶されるデジタル情報を指してよい。いくつかの機械学習モデルは、既定のビットフォーマットのデータの構造化アレイに対して動作してよい。当技術分野の用語を使用すると、これらは多次元アレイまたは「テンソル」と呼ばれることがある。機械学習方法のために、たとえば、複数の次元における規定された範囲を有する多次元アレイが、既定のフォーマット(たとえば、nビットの整数または浮動小数点数、符号付きまたは符号なし)に従って記憶された値の配列またはベクトルとして(たとえば、メモリ内で)表されるように「平坦化」されてよいことに、留意されたい。したがって、本明細書で使用する「テンソル」という用語は、1つまたは複数の次元を有する多次元アレイ(たとえば、ベクトル、行列、容積測定アレイなど)をカバーする。ただし、データは他の形式を取ってよい。
「構造化数値表現」という用語は、整数値または浮動小数点値などの一般のデータタイプを有する数値を記憶する1次元または複数次元のアレイなどの、構造化形式をなす数値データを指すために使用される。構造化数値表現は、(機械学習用語内で使用されるような)テンソルを備えてよい。構造化数値表現は、通常、インデックス付けされかつ/または連続するメモリロケーションのセットとして記憶され、たとえば、64ビット浮動小数点の1次元アレイは、64ビットコンピューティングシステムにおける64ビットメモリロケーションの連続する配列としてコンピュータメモリの中で表されてよい。
「トランザクションデータ」という用語は、トランザクションに関連付けられている電子データを指すために本明細書では使用される。トランザクションは、支払いまたは両替を実施するための、異なる電子システム間での一連の通信を備える。一般に、トランザクションデータは、トランザクション処理に関係するとともにトランザクション処理のための情報を与えてよいイベント(たとえば、適時に着手されるアクション)を示すデータを備えてよい。トランザクションデータは、構造化データ、非構造化データ、および半構造化データを備えてよい。場合によっては、トランザクションデータは、1つまたは複数の電子デバイスに関して取られるアクションを指すために広く使用されてよい。トランザクションデータは、厳密な実装形態に応じて様々な形式を取ってよい。ただし、異なるデータタイプおよびフォーマットが、適宜に前処理または後処理によって変換されてよい。
「インターフェース」という用語は、データ入力およびデータ出力のうちの1つまたは複数を可能にする任意の物理的かつ/または論理的なインターフェースを指すために本明細書では使用される。インターフェースは、データを送りかつ/もしくは受信するように適合されたネットワークインターフェースによって、またはプロセッサが命令のセットを実行することによって実装されるような、1つもしくは複数のメモリロケーションからデータを取り出すことによって、実装されてよい。インターフェースはまた、特定の媒体を介した有線通信またはワイヤレス通信を可能にするためのハードウェアなどの、データがそれを介して受信される物理的な(ネットワーク)結合を備えてよい。インターフェースは、アプリケーションプログラミングインターフェース、ならびに/またはメソッドコールもしくはリターンを備えてよい。たとえば、ソフトウェア実装形態では、インターフェースは、メソッドコールを介して開始された関数にデータを渡すこと、および/またはそうした関数へのメモリ参照を備えてよく、ここで、関数は、1つまたは複数のプロセッサによって実行されるコンピュータプログラムコードを備え、ハードウェア実装形態では、インターフェースは、異なるチップ、チップセット、またはチップの部分の間の有線の相互接続部を備えてよい。図面の中で、インターフェースは、データ転送を表す内向き矢印および/または外向き矢印を有する、処理ブロックの境界によって示されてよい。
「コンポーネント」および「モジュール」という用語は、(たとえば、入力データを出力データにマッピングする形態をなす)特定の機能を有するハードウェア構造、または汎用のハードウェアと特定のソフトウェア(たとえば、1つまたは複数の汎用プロセッサにおいて実行される特定のコンピュータプログラムコード)との組合せのいずれかを指すために、互換的に使用される。コンポーネントまたはモジュールは、特定のパッケージ化チップセット、たとえば、特定用途向け集積回路(ASIC)もしくはプログラムされたフィールドプログラマブルゲートアレイ(FPGA)として、かつ/またはプロセッサによる使用時に実行されるような、ソフトウェアオブジェクト、クラス、クラスインスタンス、スクリプト、コードなどとして、実装されてよい。
「機械学習モデル」という用語は、機械学習モデルまたは機能の、少なくともハードウェア実行型の実装形態を指すために本明細書では使用される。機械学習の分野内の知られているモデルは、ロジスティック回帰モデル、ナイーブベイズモデル、ランダムフォレスト、サポートベクターマシン、および人工ニューラルネットワークを含む。限定はしないが、scikit-learn、TensorFlow、およびPyTorchを含む、1つまたは複数の機械学習プログラミングライブラリ内で、分類器の実装が行われてよい。
「マップ」という用語は、データ値の第2のセットへの、データ値の第1のセットの変換(transformation)または変換(conversion)を指すために本明細書では使用される。データ値の2つのセットは、出力アレイが入力アレイよりも小さい次元数のものであって、異なるサイズのアレイであってよい。入力アレイおよび出力アレイは、共通のまたは異なるデータタイプを有してよい。いくつかの例では、マッピングは、スカラー値への一方向マッピングである。
「データストア」という用語は、データを記憶するためのリポジトリを指すために本明細書では使用される。データストアの一例はデータベースである。ただし、データストアは、たとえば、実装詳細に応じて、異なる形態を取ってよい。別の例示的なタイプのデータストアは、ファイル記憶システムである。
「データセット」という用語は、データの集合を指すために本明細書では使用される。データセットは、たとえば、その作成時には、空であってよい。
「データ項目」という用語は、データストアの中で探索中の情報を指すために本明細書では使用される。データ項目は、データストアの中のレコードを固有に識別してよい。「キー」および「探索キー」という用語は、「データ項目」という用語と互換的に本明細書では使用されることがある。データは、データストアの中のデータ項目に関連して記憶されてよい。
「データ要素」という用語は、データストアの中に記憶された所与のデータの全体または一部に関係するように本明細書では使用される。データは、この点で1つまたは複数のデータ要素を備えてよい。
「メタデータ」という用語は、他のデータについての情報を提供する情報に関係するように本明細書では使用される。メタデータは、状態データと同じデータストアの中に記憶されてよく、または異なるデータストアの中に記憶されてもよい。
例示的なトランザクション処理システム
図1A~図1Cは、例示的なトランザクション処理システム100、102、104のセットを示す。これらの例示的なトランザクション処理システムは、本明細書で説明する発明に対するコンテキストを提供するために説明されるが、限定的として見られるべきでなく、任意の1つの実装形態の構成は、その実装形態の特定の要件に基づいて異なることがある。しかしながら、説明する例示的なトランザクション処理システムは、以下の説明にとって重要ないくつかの高レベルな技術的特徴を当業者が識別することを可能にする。3つの例示的なトランザクション処理システム100、102、104は、変形が起こり得る様々な領域を示す。
図1A~図1Cは、トランザクションを開始するように構成されているクライアントデバイス110のセットを示す。この例では、クライアントデバイス110のセットは、スマートフォン110-A、コンピュータ110-B、ポイントオブセール(POS)システム110-C、およびポータブル小売商デバイス110-Dを備える。これらのクライアントデバイス110は、1組の非網羅的な例を提供する。一般に、トランザクションに着手するために、任意の電子デバイスまたはデバイスのセットが使用されてよい。ある場合には、トランザクションは購入または支払いを備える。たとえば、購入または支払いは、スマートフォン110-Aもしくはコンピュータ110-Bを介して行われるオンラインもしくはモバイルの購入もしくは支払いであってよく、またはPOSシステム110-Cもしくはポータブル小売商デバイス110-Dを介するような、小売商構内において行われる購入もしくは支払いであってもよい。購入または支払いは、商品および/またはサービスのためのものであってよい。
図1A~図1Cでは、クライアントデバイス110は、1つまたは複数のコンピュータネットワーク120に通信可能に結合される。クライアントデバイス110は、電気通信ネットワークを含む1つまたは複数の有線ネットワークおよび/またはワイヤレスネットワークによることを含む、様々な方法で通信可能に結合されてよい。好適な例では、1つまたは複数のコンピュータネットワークを横断するすべての通信は、たとえば、トランスポートレイヤセキュリティ(TLS)プロトコルを使用してセキュアにされる。図1Aでは、2つのコンピュータネットワークが120-Aおよび120-Bと示される。これらは、別個のネットワーク、または共通のネットワークの異なる部分であってよい。第1のコンピュータネットワーク120-Aは、クライアントデバイス110を小売商サーバ130に通信可能に結合する。小売商サーバ130は、トランザクションのためのプロセスフローを実施するコンピュータプロセスを実行してよい。たとえば、小売商サーバ130は、POSシステム110-Cもしくはポータブル小売商デバイス110-Dから受信されたトランザクション要求を処理するか、または購入が行われてよいウェブサイトを実施するためにオンライン小売商によって使用され得る、バックエンドサーバであってよい。図1A~図1Cの例が、実際のアーキテクチャの必要な簡略化であり、たとえば、製品および/またはサービスを詳述するハイパーテキストマークアップ言語(HTML)ページを提供するための、かつ支払いプロセスを処理するための、別個のサーバデバイスを含む、オンライン小売商を実施する相互作用するいくつかのサーバデバイスがあってよいことが、諒解されよう。
図1Aでは、小売商サーバ130は、トランザクションを処理するためのバックエンドサーバデバイスのさらなるセットに通信可能に結合される。図1Aでは、小売商サーバ130は、第2のネットワーク120-Bを介して支払いプロセッササーバ140に通信可能に結合される。支払いプロセッササーバ140は、トランザクションデータ146を記憶する第1のデータ記憶デバイス142、および補助データ148を記憶する第2のデータ記憶デバイス144に通信可能に結合される。トランザクションデータ146は、ある時間期間にわたって着手される、異なるトランザクションに関係する、トランザクションデータのバッチを備えてよい。補助データ148は、小売商データおよび/またはエンドユーザデータを記憶するレコードなどの、トランザクションに関連付けられたデータを備えてよい。図1Aでは、支払いプロセッササーバ140は、第2のネットワーク120-Bを介して機械学習サーバ150に通信可能に結合される。機械学習サーバ150は、トランザクションデータの処理のために機械学習システム160を実施する。機械学習システム160は、入力データ162を受信し、これを、クライアントデバイス110から生じるトランザクションなどの、特定のトランザクションを処理するために支払いプロセッササーバ140によって使用される出力データ164にマッピングするように構成される。ある場合には、機械学習システム160は、特定のトランザクションに関連付けられた少なくともトランザクションデータを受信し、トランザクションが認可(すなわち、承認)されることになるのかそれとも拒絶されることになるのかを決定するために支払いプロセッササーバ140によって使用される、警報または数値出力を提供する。したがって、機械学習システム160の出力は、不正行為または一般的な悪意があるかもしくは異常なアクティビティの、ラベル、警報、または他の表示を備えてよい。出力は、スコアまたは確率などの確率表示を備えてよい。ある場合には、出力データ164はスカラー数値を備えてよい。入力データ162は、トランザクションデータ146および補助データ148のうちの1つまたは複数から導出されたデータをさらに備えてよい。ある場合には、出力データ164は、過去の観測または測定に基づく、挙動の特定の予想パターンからの逸脱のレベルを示す。たとえば、これは、しばしば、特に大規模での、挙動の観測されたパターンとは著しく異なるとき、不正行為または犯罪的挙動を示してよい。出力データ164は、挙動の尺度を形成してよい。挙動の予想パターンは、エンドユーザまたは顧客、小売商(これらが異なることがある場合、ポイントオブセールおよびバックエンドのロケーションまたはエンティティを含む)、および銀行などの、トランザクションプロセスフロー内の異なるエンティティ間での観測された相互作用に基づいて、明示的または暗黙的のいずれかで規定されてよい。
機械学習システム160は、トランザクション処理パイプラインの一部として実装されてよい。例示的なトランザクション処理パイプラインは、図5Aおよび図5Bに関して後で説明される。トランザクション処理パイプラインは、クライアントデバイス110、小売商サーバ130、支払いプロセッササーバ140、および機械学習サーバ150の間の電子通信を備えてよい。発行銀行からの認可を与えるバンキングサーバなどの、他のサーバデバイスも関与してよい。場合によっては、クライアントデバイス110は、支払いプロセッササーバ140と直接通信してよい。使用時には、トランザクション処理パイプラインは、通常、100または200ミリ秒以内に完了される必要がある。一般に、1秒未満の処理時間はリアルタイムと見なされてよい(たとえば、人間は一般に400msという時間スパンにおいてイベントを知覚する)。さらに、トランザクション処理に対する完全なラウンドトリップ時間の所望の最大レイテンシが100~200msであってよく、この時間スパン内で、機械学習システム160のために割り当てられる時間は、その時間の大部分がトランザクション処理フローの中の他の動作のために確保されることがあるので、10ms(すなわち、ターゲット処理時間の5~10%未満)などの、この全量のうちの小部分であってよい。このことは、機械学習システム160の実装形態に対する技術的制約を提示する。さらに、現実世界の実装形態では、平均処理ボリュームは毎秒1000~2000程度であってよい。このことは、大部分の「既製(off-the-shelf)の」機械学習システムが機械学習システム160を実施するのに適していないことを意味する。そのことは、学術論文の中で記載される大部分の機械学習手法が、非自明な適合を伴わずに上述のトランザクション処理パイプライン内で実施され得ないことを、さらに意味する。異常がそれらのまさに性質によってまれなイベントであり、そのため、正確な機械学習システムは訓練するのが困難であるという問題もある。
図1Bは、図1Aの例示的なトランザクション処理システム100の変形形態102を示す。この変形形態102では、機械学習システム160は、たとえば、支払いプロセッササーバ140によって実行され、かつ/または支払いプロセッササーバ140と同じローカルネットワーク内の局所的に結合されたサーバ上で実行される、支払いプロセッサコンピュータ基盤内に実装される。図1Bの変形形態102は、より高速な応答時間、より大きな制御、および改善されたセキュリティを可能にするので、より大規模な支払いプロセッサにとって好ましいことがある。しかしながら、機能的には、トランザクション処理パイプラインは図1Aのものと類似であってよい。たとえば、図1Aの例では、機械学習システム160は、ハイパーテキスト転送プロトコルセキュア(HTTPS)を使用するレプレゼンテーションステートトランスファ(REST:Representation State Transfer)APIコールなどの、セキュアな外部アプリケーションプログラミングインターフェース(API)コールによって開始されてよく、図1Bでは、機械学習システム160は、内部APIコールによって、ただし、共通端APIが両方の要求(たとえば、REST HTTPS APIは、内部API用の外部ラッパーを提供してよい)を処理し得る場合に、開始されてよい。
図1Cは、図1Aの例示的なトランザクション処理システム100の別の変形形態104を示す。この変形形態104では、機械学習システム160は、ローカルデータ記憶デバイス170に通信可能に結合される。たとえば、データ記憶デバイス170は、機械学習サーバ150と同じローカルネットワーク上にあってよく、または機械学習サーバ150にとってアクセス可能なローカルストレージネットワークを備えてもよい。この場合、複数のローカルデータ記憶デバイス170-A~170-Nがあり、ここで、各データ記憶デバイスは区分された補助データ172を記憶する。区分された補助データ172は、1つまたは複数の機械学習モデル用のパラメータを備えてよい。ある場合には、補助データ172は、機械学習モデルに対する状態を備えてよく、ここで、状態は、ユーザまたは小売商などの1つまたは複数の特定のエンティティに関係してよい。補助データ172の区分は、支払いプロセッサ、1つもしくは複数の銀行、および/または1つもしくは複数の小売商などのサードパーティによって設定されたセキュリティ要件を満たすように適用される必要があり得る。使用時には、機械学習システム160は、入力データ162に基づいて複数のローカルデータ記憶デバイス170-A~170-Nを介して補助データ172-A~172-Nにアクセスする。たとえば、入力データ162は、特定のソースからのAPI要求を介して受信されてよく、かつ/またはAPI要求を処理するために特定のパーティションが使用されるべきであることを識別するデータを備えてよい。セキュリティ要件を満たすように適用され得る異なる記憶システムのより詳細が、図2Aおよび図2Bの中に提示される。
例示的なデータ記憶構成
図2Aおよび図2Bは、トランザクションデータの処理のために例示的な機械学習システム210によって使用され得る2つの例示的なデータ記憶構成200および202を示す。図2Aおよび図2Bの例は、実装のために利用可能な異なるオプションを示す2つの非限定的な例であり、個々の事情に従って特定の構成が選択されてよい。機械学習システム210は、図1A~図1Cの以前の例の中で説明された機械学習システム160の実装形態を備えてよい。図2Aおよび図2Bの例は、たとえば、機械学習システム210が異種エンティティ用のトランザクションデータをセキュアに処理するために、異種暗号パラメータを使用してセキュアにされるトランザクションデータの処理を可能にする。機械学習システム160が、たとえば、内部のトランザクション処理システム内で、または単一の支払いプロセッサによる使用のためのホストされるシステムとして、セキュアなトランザクションおよび補助データの単一のセットのために実施される場合、図2Aおよび図2Bの構成が使用されなくてよいことが諒解されよう。
図2Aは、データバス220に通信可能に結合された機械学習システム210を示す。データバス220は、機械学習サーバ150の内部データバスを備えてよく、またはストレージエリアネットワークの一部を形成してもよい。データバス220は、機械学習システム210を複数のデータ記憶デバイス230、232に通信可能に結合する。データ記憶デバイス230、232は、磁気ハードディスクおよびソリッドステートデバイスなどの任意の知られているデータ記憶デバイスを備えてよい。データ記憶デバイス230、232は図2Aの中で異なるデバイスとして示されるが、代替として、共通のデータ記憶デバイス内に異なる物理的領域またはストレージの部分を形成してもよい。図2Aでは、複数のデータ記憶デバイス230、232は、履歴トランザクションデータ240および補助データ242を記憶する。図2Aでは、データ記憶デバイス230の第1のセットは、履歴トランザクションデータ240を記憶し、データ記憶デバイス232の第2のセットは、補助データ242を記憶する。補助データ242は、(ニューラルネットワークアーキテクチャ用の訓練されたパラメータ、および/またはランダムフォレストモデル用の構成パラメータなどの)機械学習モデルのセット用のモデルパラメータ、およびそれらのモデル用の状態データのうちの、1つまたは複数を備えてよい。ある場合には、履歴トランザクションデータ240-A~Nおよび補助データ242-A~Nの様々なセットは、機械学習システム210によって提供されるサービスをセキュアかつ集合的に使用する様々なエンティティに関連付けられ、たとえば、これらは、それらのエンティティに機械学習サービスを提供する条件の一部として別個に保たれる必要がある、様々な銀行のためのデータを表してよい。
図2Bは、履歴トランザクションデータ240-A~Nおよび補助データ242-A~Nの異なるセットが記憶され得る別の方法を示す。図2Bでは、機械学習システム210は、少なくとも1つのデータ記憶デバイス260にデータ転送チャネル250を介して通信可能に結合される。データ転送チャネル250は、ローカルストレージバス、ローカルストレージエリアネットワーク、および/または(たとえば、インターネットなどのセキュアでないネットワークの上に置かれるような)リモートセキュアストレージ結合を備えてよい。図2Bでは、物理的なデータ記憶デバイス260を使用して、セキュアな論理記憶層270が設けられる。セキュアな論理記憶層270は、機械学習システム210には別個の物理記憶デバイスとして見える仮想化されたシステムであってよいが、実際には少なくとも1つのデータ記憶デバイス260上に独立して実装される。論理記憶層270は、エンティティのグループに関係する(たとえば、異なる発行銀行などに関係する)データ用の別個の暗号化パーティション280を提供してよく、履歴トランザクションデータ240-A~Nおよび補助データ242-A~Nの異なるセットが、対応するパーティション280-A~Nの中に記憶されてよい。場合によっては、図1A~図1Cに示すサーバシステムのうちの1つまたは複数によって記憶されるデータに基づく処理のためにトランザクションが受信されるとき、エンティティが動的に作成されてよい。
例示的なトランザクションデータ
図3Aおよび図3Bは、160または210などの機械学習システムによって処理され得るトランザクションデータの例を示す。図3Aは、トランザクションデータがレコード300のセットをどのように備えてよいのかを示し、ここで、各レコードはタイムスタンプを有し、複数のトランザクションフィールドを備える。レコード300は、時間順序付けされてよく、または別の方式で厳密に順序付けされてもよい。いくつかの例では、トランザクションデータは、随意に、タイムスタンプに基づいてグループ化および/またはフィルタ処理されてよい。たとえば、図3Aは、現在のトランザクションに関連付けられている現在のトランザクションデータ310、および現在のトランザクションの既定の時間範囲内にある「より古い」すなわち履歴トランザクションデータ320への、トランザクションデータの区分を示す。時間範囲は、任意の機械学習システムのハイパーパラメータとして設定されてよい。代替として、「より古い」すなわち履歴トランザクションデータ320は、いくつかの個数のトランザクションとして設定されてもよい。2つの手法の混合も可能である。
図3Bは、特定のトランザクションのためのトランザクションデータ330が1つまたは複数の機械学習モデルによる処理のために数値形式でどのように記憶されてよいのかを示す。たとえば、図3Bでは、トランザクションデータは、少なくともフィールド、すなわち、トランザクション金額、タイムスタンプ(たとえば、Unixエポックとして)、トランザクションタイプ(たとえば、カード支払いまたは口座引き落とし)、製品説明または識別子(すなわち、購入中の品目に関係する)、小売商識別子、発行銀行識別子、文字のセット(たとえば、既定の文字長のフィールド内のUnicode文字)、国識別子などを有する。多種多様なデータタイプおよびフォーマットが受信および前処理されて適切な数値表現になってよいことに留意されたい。場合によっては、クライアントデバイスによって生成され小売商サーバ130へ送られるものなどの、発信トランザクションデータは、英数字データタイプを1つまたは複数の機械学習モデルの適用のための数値データタイプに変換するために前処理される。トランザクションデータの中に存在する他のフィールドは、限定はしないが、口座番号(たとえば、クレジットカード番号)、トランザクションがどこで行われているかというロケーション、およびトランザクションが実行される方式(たとえば、本人の、電話を介した、ウェブサイト上の)を含むことができる。
例示的な機械学習システム
図4は、トランザクションデータを処理するために使用され得る機械学習システム402の一例400を示す。機械学習システム402は、機械学習システム160および210のうちの1つまたは複数を実施してよい。機械学習システム402は入力データ410を受信する。入力データ410の形式は、どの機械学習モデルが機械学習システム402によって適用中であるのかに依存してよい。トランザクション、たとえば、上記で説明したように進行中のトランザクションに関して、機械学習システム402が不正行為検出または異常検出を実行するように構成される場合には、入力データ410は、330などのトランザクションデータ(すなわち、トランザクション用のデータパッケージの一部を形成するデータ)、ならびに(図3Aの中の300などの)履歴トランザクションデータから導出されたデータおよび/または(図1A~図1Cの中の148または図2Aおよび図2Bの中の242などの)補助データから導出されたデータを備えてよい。補助データは、トランザクションに関連付けられた1次データの中で識別される1つまたは複数のエンティティにリンクされた2次データを備えてよい。たとえば、進行中のトランザクション用のトランザクションデータが、トランザクションデータの中に存在する一意識別子などを介して、ユーザ、小売商、および(ユーザのための発行銀行および小売商銀行などの)そのトランザクションに関連付けられた1つまたは複数の銀行を識別する場合、補助データは、これらのトランザクションエンティティに関係するデータを備えてよい。補助データはまた、対話ログおよび/または認証レコードなどの、アクティビティのレコードから導出されたデータを備えてよい。ある場合には、補助データは、1つまたは複数の静的データレコードの中に記憶され、受信されたトランザクションデータに基づいてこれらのレコードから取り出される。追加または代替として、補助データは、トランザクションデータの内容に基づいて取り出される機械学習モデルパラメータを備えてよい。たとえば、機械学習モデルは、ユーザ、小売商、および発行銀行のうちの1つまたは複数に固有のパラメータを有してよく、これらのパラメータは、これらのうちのどれがトランザクションデータの中で識別されるのかに基づいて取り出されてよい。たとえば、ユーザ、小売商、および発行銀行のうちの1つまたは複数は、対応する埋込みを有してよく、そうした埋込みは、前記エンティティに対する取出し可能またはマッピング可能なテンソル表現を備えてよい。たとえば、各ユーザまたは小売商は、データベースもしくは他のデータストレージから取り出され得るか、または、たとえば、ユーザもしくは小売商インデックスに基づいて、埋込み層によって生成され得るかのいずれかの、テンソル表現(たとえば、サイズ128~1024の浮動小数点ベクトル)を有してよい。
入力データインターフェース412において入力データ410が受信される。入力データインターフェース412は、上記で説明したように内部または外部APIインターフェースなどのAPIインターフェースを備えてよい。ある場合には、図1A~図1Cに示すような支払いプロセッササーバ140が、このインターフェースへの要求を行い、ここで、要求ペイロードはトランザクションデータを含む。APIインターフェースは、トランザクションデータの形式またはそのソースに関して、アグノスティックとなるように定義されてよい。入力データインターフェース412は、機械学習モデルプラットフォーム414に通信可能に結合される。ある場合には、入力データインターフェース412に行われた要求が、インターフェースに供給されたトランザクションデータを使用する機械学習モデルプラットフォーム414の実行をトリガする。機械学習モデルプラットフォーム414は、入力データ410への1つまたは複数の機械学習モデルの適用のための実行環境として構成される。ある場合には、機械学習モデルプラットフォーム414は、複数の異なる選択可能な機械学習モデルのための実行ラッパーとして構成される。たとえば、機械学習モデルは、(たとえば、拡張マークアップ言語- XMLなどのマークアップ言語と類似の、またはそれを使用する)モデル定義言語を使用して規定されてよい。モデル定義言語は、(特に、独立して、または組合せで)SQL、TensorFlow、Caffe、Thinc、およびPyTorchを含んでよい。ある場合には、モデル定義言語は、定義される機械学習モデルの訓練および推論のうちの1つまたは複数を実施するために実行可能なコンピュータプログラムコードを備える。機械学習モデルは、たとえば、特に、人工ニューラルネットワークアーキテクチャ、アンサンブルモデル、回帰モデル、ランダムフォレストなどの決定木、グラフモデル、およびベイズネットワークを備えてよい。機械学習モデルプラットフォーム414は、異なる機械学習モデルが共通の(すなわち、共有される)方式で適用されるような共通の(すなわち、共有される)入力定義および出力定義を定義してよい。
本例では、機械学習モデルプラットフォーム414は、少なくとも単一のスカラー出力416を提供するように構成される。これは0~1などの既定の範囲内で正規化されてよい。正規化されると、スカラー出力416は、入力データ410に関連付けられたトランザクションが不正または異常である確率として見られてよい。この場合、「0」という値は、ユーザ、小売商、および発行銀行のうちの1つまたは複数に対してアクティビティの正常なパターンに整合するトランザクションを表してよく、「1」という値は、トランザクションが不正または異常であること、すなわち、アクティビティの予想パターンに整合しないことを示してよい(けれども、反転されるかまたは異なる境界内にあるなどの、正規化される範囲が異なってよく、かつ同じ機能的効果を有することを、当業者はわかっている)。値の範囲は0~1として定義され得るが、出力値はこの範囲内で一様分布しないことがあり、たとえば、「0.2」という値が「正常な」イベントに対する共通の出力であってよく、「0.8」という値が典型的な「異常な」または不正なイベントに対するしきい値を超えるものとして見られてよいことに、留意されたい。機械学習プラットフォーム414によって実施される機械学習モデルは、次元数が大きい入力データ(たとえば、トランザクションデータおよび任意の取出し補助データ)と単一値出力との間で、ある形態のマッピングをそのように実施してよい。ある場合には、たとえば、機械学習プラットフォーム414は、数値フォーマットをなす機械学習モデル用の入力データを受信するように構成されてよく、定義される各機械学習モデルは、同様にして定義された入力データをマッピングするように構成される。機械学習モデルプラットフォーム414によって適用される厳密な機械学習モデル、およびそのモデル用のパラメータは、構成データに基づいて決定されてよい。構成データは、入力データ410内に含まれてよく、かつ/もしくは入力データ410を使用して識別されてよく、かつ/または機械学習プラットフォーム414によって構文解析される1つもしくは複数の構成ファイルに基づいて設定されてよい。
場合によっては、機械学習モデルプラットフォーム414は、コンテキストに応じて追加の出力を提供してよい。いくつかの実装形態では、機械学習モデルプラットフォーム414は、疑わしい入力属性に関して機械学習モデルの出力の、人間に親切な説明をキャプチャする、「理由コード」を戻すように構成されてよい。たとえば、機械学習モデルプラットフォーム414は、入力表現内の1つまたは複数の入力要素または入力単位のうちのどれがモデル出力に影響を及ぼしたのか、たとえば、学習されたしきい値を「金額」チャネルが超えることと、「小売商」要素または(埋込みまたはインデックスなどの)単位のセットが所与のクラスタの外側にあることとの組合せを示してよい。機械学習モデルプラットフォーム414が決定木を実施する場合には、これらの追加の出力は、木のアンサンブルに基づく、決定木を通る経路または集約した特徴重要度を備えてよい。ニューラルネットワークアーキテクチャの場合、これは、層出力活性化、および/または正の活性化を伴う層フィルタを備えてよい。
図4では、いくつかの実装形態は、スカラー出力416を受信する随意の警報システム418を備えてよい。他の実装形態では、スカラー出力416は、後処理を伴わずに出力データインターフェース420に直接渡されてよい。この後者の場合には、スカラー出力416は、入力データインターフェース412への元の要求への応答の中にパッケージ化されてよい。どちらの場合も、スカラー出力416から導出される出力データ422は、機械学習システム402の出力として提供される。出力データ422は、トランザクションデータの最終処理を可能にするために戻される。たとえば、出力データ422は、支払いプロセッササーバ140に戻されてよく、トランザクションを承認または拒絶するための決定の基礎として使用されてよい。実装要件に応じて、ある場合には、警報システム418は、トランザクションが承認されるべきかそれとも拒絶されるべきかを示すバイナリ値(たとえば、「1」が、拒絶するに等しい)を戻すために、スカラー出力416を処理してよい。場合によっては、スカラー出力416にしきい値を適用することによって決定が行われてよい。このしきい値はコンテキスト依存であってよい。場合によっては、警報システム418および/または出力データインターフェース420はまた、説明データ(たとえば、上記で説明した「理由コード」)および/または元の入力データなどの、追加の入力を受信してよい。出力データインターフェース420は、これらの入力をスカラー出力416と結合する、出力データ422のための出力データパッケージを生成してよい(たとえば、少なくともログ記録および/またはもっと後の検討のために)。同様に、警報システム418によって生成される警報は、たとえば、スカラー出力416に加えて、上述の追加の入力を含んでよく、かつ/または追加として、上述の追加の入力に基づいてよい。
好ましい実装形態では、機械学習システム402は、狭く規定された時間範囲内で大容量のトランザクションを処理するために、「オンライン」モードで使用される。たとえば、正常処理条件では、機械学習システム402は、7~12ms以内に要求を処理してよく、毎秒1000~2000個の要求を管理できる場合がある(これらは現実世界の動作状態からの中央値の制約である)。しかしながら、機械学習システム402はまた、たとえば、選択された履歴トランザクションを入力データインターフェース412に提供することによって、「オフライン」モードで使用されてよい。オフラインモードでは、入力データは、バッチ(すなわち、グループ)をなして入力データインターフェースに渡されてよい。機械学習システム402はまた、トランザクションと同様に、またはトランザクションの代わりに、エンティティに対するスカラー出力を提供する、機械学習モデルを実施できる場合がある。たとえば、機械学習システム402は、識別されたユーザ(たとえば、カード保有者または支払い口座保有者)または識別された小売商に関連付けられた要求を受信してよく、ユーザまたは小売商が不正であるか、悪意があるか、または異常(すなわち、一般の脅威またはリスク)である可能性を示すスカラー出力416を提供するように構成されてよい。たとえば、これは、継続的もしくは周期的な監視プロセスの一部、または(たとえば、サービスのためのアプリケーションの一部としての)1回限りの要求を形成してよい。特定のエンティティへのスカラー出力の供給は、トランザクションデータ(たとえば、図3Aの中でそうであるべきエンティティと類似のエンティティのためのトランザクションデータ)のシーケンス内の、それを含めて最後に承認されたトランザクションまでのトランザクションデータのセットに基づいてよい。
例示的なトランザクションプロセスフロー
図5Aおよび図5Bは、2つの可能な例示的なトランザクションプロセスフロー500および550を示す。これらのプロセスフローは、図1A~図1Cに示す例示的なトランザクションプロセスシステム100、102、104ならびに他のシステムのコンテキストにおいて行われてよい。プロセスフロー500および550は、機械学習トランザクション処理システムが適用され得るコンテキストの一例として提供されるが、すべてのトランザクションプロセスフローが、必ずしも図5Aおよび図5Bに示すプロセスに従うとは限らず、プロセスフローは、実装形態の間で、システムの間で、かつ経時的に変化することがある。例示的なトランザクションプロセスフロー500および550は、2つの可能な事例、すなわち、トランザクションが承認されるトランザクションプロセスフロー500によって表される第1の事例、およびトランザクションが拒絶されるトランザクションプロセスフロー550によって表される第2の事例を反映する。各トランザクションプロセスフロー500、550は、相互作用する5つのシステムおよびデバイスの同じセット、すなわち、POSまたはユーザデバイス502、小売商システム504、支払いプロセッサ(PP:payment processor)システム506、機械学習(ML:machine learning)システム508、および発行銀行システム510を伴う。POSまたはユーザデバイス502はクライアントデバイス110のうちの1つを備えてよく、小売商システム504は小売商サーバ130を備えてよく、支払いプロセッサシステム506は支払いプロセッササーバ140を備えてよく、機械学習システム508は、機械学習システム160、210、および/または402の実装形態を備えてよい。発行銀行システム510は、発行銀行に代わってトランザクション機能を実施する1つまたは複数のサーバデバイスを備えてよい。相互作用する5つのシステムおよびデバイス502~510は、ネットワーク120などの1つまたは複数の内部または外部の通信チャネルによって通信可能に結合されてよい。場合によっては、これらのシステムのうちのいくつかのシステムが組み合わせられてよく、たとえば、発行銀行がまた、支払いプロセッサの働きをしてよく、そのため、システム506および510は共通システムを用いて実装されてよい。他の場合には、特に小売商に対して(たとえば、支払いプロセッサまたは発行銀行を伴うことなく)、類似のプロセスフローが実行されてよい。この場合、機械学習システム508は、小売商システム504と直接通信してよい。これらの変形形態では、概略的な機能トランザクションプロセスフローは、以下で説明するものと類似のままであってよい。
図5Aと図5Bの両方の中のトランザクションプロセスフローは、いくつかの共通の(すなわち、共有される)プロセス512~528を備える。ブロック512において、POSまたはユーザデバイス502がトランザクションを開始する。POSデバイスの場合、このことは、レジ係がフロントエンドデバイスを使用して電子支払いを受け取ることを試みることを備えてよく、ユーザデバイス502の場合、このことは、ユーザがクレジットカードもしくはデビットカードまたはオンライン支払い口座を使用してオンライン購入を行うこと(たとえば、オンラインバスケット内で「完了」をクリックすること)を備えてよい。ブロック514において、支払い詳細が小売商システム504によって電子データとして受信される。ブロック516において、小売商システム504によってトランザクションが処理され、支払いを認可するために支払いプロセッサシステム506に要求が行われる。ブロック518において、支払いプロセッサシステム506は、小売商システム504から要求を受信する。要求は、プロプライエタリな通信チャネルを介して、または公衆ネットワークを介したセキュアな要求(たとえば、インターネットを介したHTTPS要求)として行われてよい。支払いプロセッサシステム506は、次いで、トランザクションを処理する際の使用に対するスコアまたは確率を求めて、機械学習システム508に要求を行う。ブロック518は、追加として、要求の一部として機械学習システム508へ送られるトランザクションデータと結合するための補助データを取り出すことを備えてよい。他の場合には、機械学習システム508は、(たとえば、図2Aおよび図2Bの構成と類似の)補助データを記憶するデータ記憶デバイスへのアクセスを有してよく、そのため、このデータを(たとえば、トランザクションデータ内で提供される識別子に基づく、かつ/または実施される機械学習モデルの一部として規定されるような)内部動作の一部として取り出してよい。
ブロック520は、支払いプロセッサシステム506からの任意の要求の前に行われるモデル初期化動作を示す。たとえば、モデル初期化動作は、定義された機械学習モデルおよび定義された機械学習モデルをインスタンス化するパラメータをロードすることを備えてよい。ブロック522において、機械学習システム508は、(たとえば、図4の中の412などのデータ入力インターフェースを介して)支払いプロセッサシステム506から要求を受信する。ブロック522において、機械学習システム508は、ブロック520において初期化された機械学習モデルの適用の前に、定義された任意の前処理を実行してよい。たとえば、文字列または文字トランザクション説明によって識別される小売商などの文字データをトランザクションデータが依然として保持する場合には、これは、(たとえば、ルックアップ動作もしくは他のマッピングを介してストリングカテゴリーデータを識別子に変換することによって、かつ/または文字もしくは文字のグループをベクトル埋込みにマッピングすることによって)好適な構造化数値データに変換されてよい。次いで、ブロック524において、機械学習システム506は、受信された要求から導出された入力データをモデルに供給して、インスタンス化された機械学習モデルを適用する。このことは、図4を参照しながら説明したような機械学習モデルプラットフォーム414を適用することを備えてよい。ブロック526において、インスタンス化された機械学習モデルによってスカラー出力が生成される。これは、機械学習システム508において「承認する」もしくは「拒絶する」のバイナリ決定を決定するために処理されてよく、または好ましい場合には、ブロック518において行われた要求への応答として支払いプロセッサシステム506に戻される。
ブロック528において、機械学習システム508の出力が、支払いプロセッサシステム506によって受信され、トランザクションを承認または拒絶するために使用される。図5Aは、機械学習システム508の出力に基づいてトランザクションが承認されるプロセスを示し、図5Bは、機械学習システム508の出力に基づいてトランザクションが拒絶されるプロセスを示す。図5Aでは、ブロック528において、トランザクションが承認される。次いで、ブロック530において、発行銀行システム510に要求が行われる。ブロック534において、発行銀行システム510は要求を承認または拒絶する。たとえば、エンドユーザまたはカード保有者が、トランザクションコストをカバーするための十分な資金および承認を有する場合、発行銀行システム510は要求を承認してよい。場合によっては、発行銀行システム510は第2のレベルのセキュリティを適用してよいが、このことは、機械学習システム508を使用して支払いプロセッサによって実行される異常検出に発行銀行が依拠する場合には必要とされなくてよい。ブロック536において、発行銀行システム510からの認可が支払いプロセッサシステム506に戻され、支払いプロセッサシステム506は、ブロック538において小売商システム504へ応答を送り、小売商システム504は、次に、ブロック540においてPOSまたはユーザデバイス502に応答する。ブロック534において発行銀行システム510がトランザクションを承認する場合、トランザクションは完了されてよく、肯定的な応答が、小売商システム504を介してPOSまたはユーザデバイス502に戻されてよい。エンドユーザは、POSまたはユーザデバイス502のスクリーン上の「認可されました」メッセージとしてこのことに遭遇してよい。小売商システム504は、次いで、購入を完了(たとえば、購入を果たすための内部処理を開始)してよい。
もっと後の時点において、小売商システム504および機械学習システム508のうちの1つまたは複数は、たとえば、以前の例におけるトランザクションデータ146、240、または300の一部として、トランザクションに関係するデータをセーブしてよい。このことは、破線ブロック542および544において示される。トランザクションデータは、機械学習システム508の出力(たとえば、スカラーの不正確率または異常確率)およびトランザクションの最終結果(たとえば、それが承認されたのかそれとも拒絶されたのか)のうちの1つまたは複数と一緒にセーブされてよい。セーブされるデータは、機械学習システム508によって実施される機械学習モデル用の訓練データとしての使用のために記憶されてよい。セーブされるデータはまた、ブロック524の将来のイタレーションの一部としてアクセスされてもよく、たとえば、将来の補助データの一部を形成してよい。場合によっては、トランザクションの最終結果すなわち成果は、トランザクションの時間において知られていないことがある。たとえば、トランザクションは、アナリストおよび/もしくは自動化システムによるもっと後の検討を介して、または(たとえば、ユーザが、不正行為を報告するか、または支払いカードまたは口座がいくつかの日付から脅かされたことを示すとき)ユーザからのフィードバックに基づいて、異常としてラベル付けされるだけでよい。これらの場合には、機械学習システム508を訓練するという目的のためのグラウンドトゥルースラベルが、トランザクション自体に続いて経時的に収集されてよい。
次に図5Bの代替プロセスフローを参照すると、この場合、機械学習システム508および支払いプロセッサシステム506のうちの1つまたは複数が、機械学習システム508の出力に基づいてトランザクションを拒絶する。たとえば、機械学習システム508のスカラー出力が、取り出されたしきい値を超える場合、トランザクションは拒絶されてよい。ブロック552において、支払いプロセッサシステム506は、小売商システム504への応答を発行し、その応答がブロック554において受信される。ブロック554において、小売商システム504は、トランザクションが完了することを防止するためのステップに着手し、適切な応答をPOSまたはユーザデバイス502に戻す。この応答はブロック556において受信され、エンドユーザまたは顧客は、たとえば、スクリーン上の「拒絶されました」メッセージを介して、彼らの支払いが拒絶されたことが知らされてよい。エンドユーザまたは顧客は、異なる支払い方法を使用するように促されてよい。図5Bの中に図示しないが、場合によっては、発行銀行システム510は、特定の口座保有者に関係するトランザクションが拒絶されたことが知らされてよい。発行銀行システム510は、図5Bに示すプロセスの一部として知らされてよく、または定期的な(たとえば、毎日の)更新の一部として知らされてもよい。しかし、トランザクションは、(承認されなかったので)トランザクションデータ146、240、または300の一部にならなくてよく、ブロック544によって示すように、少なくとも機械学習システム508によって依然としてログ記録されてよい。たとえば、図5Aの場合のように、トランザクションデータは、機械学習システム508の出力(たとえば、スカラーの不正確率または異常確率)およびトランザクションの最終結果(たとえば、それが拒絶されたこと)と一緒にセーブされてよい。
例示的なデータストア構造
上記で説明したように、本明細書で説明する例示的な機械学習システムは、1つまたは複数のデータ記憶デバイスの中の1つまたは複数のデータストアの中にデータを記憶し、そこからデータを取り出す。次に説明する例は、そのようなデータストアがどのように作成され、維持され、かつ使用されるのか、ならびにそのようなデータストアの構造および内容に関する。そのような例は、機械学習システム、および特にリアルタイムトランザクション処理を容易にする機械学習システムのコンテキストにおける、特定のデータベース関連の問題に対処するか、または少なくともそれを改善する。より詳細には、次に説明する例は、状態データ(本明細書では「データ」とも呼ばれる)の複数の異なる「層」がデータストアの中に記憶される「階層状態」データストア構成に関する。各層は、状態データを記憶する1つまたは複数の状態データセット(本明細書では「データセット」または「状態」とも呼ばれる)を備える。そのような階層状態構成は、様々な異なるタイプの状態実装形態、すなわち、たとえば、本明細書で説明する例示的な機械学習システムによる使用のために、状態が記憶されるとともに取り出されることになる、実装形態の中で使用されてよい。例では、データストアの中に記憶されるデータは、上記で説明したような履歴トランザクションデータおよび/または補助データを備える。ただし、本明細書で説明する技法が他のタイプのデータに適用されてよい。
階層状態は、個々の状態データを1つずつ修正する必要なく、異なる状態データセットなどのいくつかの異なる状態データソースからの状態データを使用して「有効状態」が動的に構築されることを可能にする。事実上、階層状態は、単一の状態データセットの中に状態データがあることを必要とするのではなく、複数の異なる状態データセットからの状態データを融合する。このことは、限定はしないが、異なるデータセットの中に大量の状態データが存在する場合に、また単一の手順の中で別個のデータセットを結合して単一のデータセットにすることが時間などの著しい量のリソースを伴うことになる場合に、特に有効であり得る。そのようなデータセットは、様々な理由で、たとえば、異なる機械学習モデルがテストされることを可能にするために、データ成熟環境を提供するなどのために、別個であることがある。しかしながら、それらの別個のデータセットの中の状態データは、そうは言っても関連することがあり、本明細書で説明する例示的な機械学習システムは、たとえば、より正確な結果をもたらすという観点から、単一のデータセットを使用することに制約されるのではなく、別個のデータセットからの状態データを使用することから恩恵を受けることがある。本明細書で説明するいくつかの例示的な実装形態は、データベースをベースとした状態タイプのために使用されてよい。記憶されたデータがデータベースにおけるようなランダムアクセスであるのではなく時間的に順序付けられるデータ待ち行列に対して、他の例示的な実装形態が説明される。そのような例示的な一実装形態は、Apache Kafka(本明細書では単に「Kafka」と呼ばれることがある)上にある。ただし、そのような例示的な実装形態が他の形態を取ってよい。
階層状態は、本明細書で説明するように、親およびオーバーレイを含む様々な概念を使用し、それらは次に説明される。大まかに言えば、子データセットの親データセットとは、子データセットが作成される前に作成される、親メタデータを通じて子データセットがリンクされる先のデータセットである。大まかに言えば、所与のデータセットのオーバーレイデータセットとは、オーバーレイデータセットおよび所与のデータセットが作成された後に所与のデータセットに適用される、オーバーレイメタデータを通じて所与のデータセットがリンクされる先のデータセットである。
図6Aは、例示的なデータストアを表す状態グラフ(本明細書では単に「グラフ」と呼ばれることがある)600を示す。例示的なデータストアは、状態データを記憶する第1のデータセット611を備える。第1のデータセット611は、状態ID「state1」という形式をなす識別データを使用して識別される。グラフ600の中で表される例示的なデータストアは1つのデータセットしか含まないが、以下で明らかになるように、状態IDは、同じ集合の中の状態の異なるセット、すなわち、同じデータストアの中の異なるデータセットを抽出するために、例示的な状態実装形態の中で使用される。この例では、「state1」とは、「ルート」または「ライブ」状態IDと呼ばれることもある「現在の」状態IDである。データストアの中に書き込むとき、すべてのデータは、指定されたライブデータセットの中に書き込まれる。この例では、項目620によって示されるように、第1のデータセット611がデータストアのルートデータセットである。この例では、第1のデータセット611が例示的なデータストアの中の唯一のデータセットであるので、すべてのデータは第1のデータセット611から読み取られる。
図6Bは、別の例示的なデータストアを表す別の状態グラフ602を示す。グラフ602によって表されるデータストアは、グラフ600によって表されるがもっと後の時点における、データストアに相当してよい。例示的なグラフ602は、親状態を論証する。この例では、データストアは第1のデータセット611および第2のデータセット612を備え、第1のデータセット611は第2のデータセット612の親データセット(または、単に「親」)であり、第2のデータセット612は第1のデータセット611の子データセット(または、単に「子」)である。したがって、親データセット611および子データセット612は、630において示されるように、状態グラフ602の中で階層関係を有する。この例では、親データセット611および子データセット612は、それぞれ、状態ID「state1」および「state2」という形式をなす識別データを使用して識別される。前述のように、状態ID「state2」を有するルート(子)データセット612の中に新たなデータが書き込まれる。新たなデータは、状態ID「state1」を有する親データセット611の中には書き込まれないが、親データセット611から(履歴的な)データが読み取られてよい。例では、新たな状態IDを有する新規データセットは、空のデータセットとして出発する。この具体例では、子データセット612は、新たな状態ID(「state2」)が割り振られたことになり、その作成時に当初は空であったことになる。したがって、新たな状態IDを伴う新規データセットは、新たなデータが新規データセットの中に書き込まれるようになるので、(修正された)データで充満する。項目630によって示される親リンクは、データストアからデータを読み取ると作用し始める。読取り動作を実行するとき、探索中のデータ項目(「キー」と呼ばれることもある)が現在のデータセットの中で発見されない場合、親データセットの中でデータ項目が探索される。例では、親リンクは、データストアの中に記憶された親メタデータを介する。しかし、この例では、メタデータはデータストアの中に記憶され、メタデータは、必ずしも状態データと同じデータストアの中に記憶されるとは限らない。メタデータは、状態データがその中に記憶されるものとは異なるタイプのデータストアの中に記憶されることがある。たとえば、状態データがデータベースの中に記憶されることがあり、メタデータがファイルの中、すなわち、Apache Kafka待ち行列などの中に記憶されることがある。代替として、メタデータおよび状態データは、互いと同じタイプのデータストアの中に記憶されることがある。
図6Cは、別の例示的なデータストアを表す別の状態グラフ604を示す。グラフ604によって表されるデータストアは、グラフ602によって表されるがもっと後の時点における、データストアに相当してよい。例示的なグラフ604は、複数親状態を論証する。この例では、データストアは、第1のデータセット611、第1のデータセット611の子である第2のデータセット612、および第2のデータセット612の子(したがって、第1のデータセット611の孫)である第3のデータセット613を備える。したがって、第1のデータセット611、第2のデータセット612、および第3のデータセット613は、それぞれ、祖父母データセット611、親データセット612、および子データセット613と呼ばれる。この例では、祖父母データセット611、親データセット612、および子データセット613は、それぞれ、状態ID「state1」、「state2」、および「state3」という形式をなす識別データを使用して識別される。この例では、項目620によって示されるように、子データセット613がデータストアのルートである。親リンク630、631は、それぞれ、祖父母データセット611と親データセット612との間、および親データセット612と子データセット613との間に存在する。第1の親メタデータは、祖父母データセット611と親データセット612との間のリンクを規定してよく、第2の親メタデータは、親データセット612と子データセット613との間のリンクを規定してよい。このことは、祖父母データセット611と子データセット613との間のリンクしか規定しないことになるメタデータとは対照的であり、以下で説明するように、データセットの探索を包括的なものとして行わないことになる。読取り動作を実行するとき、探索中のデータ項目が現在のデータセット(この例では、子データセット613)の中で発見されない場合、状態グラフの上方へ祖父母データセット611まで、データ項目などを求めて親データセット612が探索される。事実上、このことは、各データセットが、ルートから離れて、新規データセットが分岐される点におけるコピーオンライト状態スナップショットであることを意味する。子データセットがそこから作成されると親データセットはもはや修正されず、すなわち、子データセットがそこから作成されると親データセットは不変になる。
図6Dは、別の例示的なデータストアを表す別の状態グラフ606を示す。例示的なグラフ606は、複数ルート状態を論証する。この例では、データストアは、第1のデータセット611、第1のデータセット611の子である第2のデータセット612、第2のデータセット612の子(したがって、第1のデータセット611の孫)である第3のデータセット613、および同じく第2のデータセット612の子(したがって、同じく第1のデータセット611の孫)である第4のデータセット614を備える。したがって、第1のデータセット611、第2のデータセット612、第3のデータセット613、および第4のデータセット614は、それぞれ、祖父母データセット611、親データセット612、第1の子データセット613、および第2の子データセット614と呼ばれる。この例では、祖父母データセット611、親データセット612、第1の子データセット613、および第2の子データセット614は、それぞれ、状態ID「state1」、「state2」、「state3」、および「state4」という形式をなす識別データを使用して識別される。この例では、項目620、621によって示されるように、子データセット613、614の両方がデータストアのルートデータセットである。したがって、新たなデータが、子データセット613、614のうちの一方または両方に書き込まれ得る。詳細には、第1の子データセット613にデータを書き込むために状態ID「state3」が使用されてよく、第2の子データセット614にデータを書き込むために状態ID「state4」が使用されてよい。同様に、状態ID「state3」を使用するデータストアへの読取りアクセスは、第1の子データセット613において最初に開始することになるが、状態ID「state4」を使用するデータストアへの読取りアクセスは、第2の子データセット614において最初に開始することになる。異なるクライアントは、たとえば、データセキュリティ目的のために、異なる状態IDを有してよく、異なる状態IDを使用してよい。親リンク630、631、632は、それぞれ、祖父母データセット611と親データセット612との間、親データセット612と第1の子データセット613との間、および親データセット612と第2の子データセット614との間に存在する。この複数ルート例でわかるように、複数の子状態ID、すなわち、「state3」および「state4」は、単一の親状態ID、すなわち、「state2」を指し示すことができる。
図6Eは、別の例示的なデータストアを表す別の状態グラフ608を示す。例示的なグラフ608は、図6Dに示す例示的なグラフ606に相当するが、状態発散を論証するために例示的な状態データ値が示される。この例では、親データセット612は、所与のデータ項目(図6Eに示さず)に対して記憶された「10」という例示的な値を有する単一のデータ要素を備えるデータ640を記憶し、第1の子データセット613は、同じ所与のデータ項目に対して記憶された「15」という例示的な値を有する単一のデータ要素を備えるデータ641を記憶し、第2の子データセット614は、同じ所与のデータ項目に対して再び記憶された「13」という例示的な値を有する単一のデータ要素を備えるデータ642を記憶する。2つの子データセット613、614は、その両方が作成時に空であり、その両方が同じ親データセット612を共有するので、両方とも当初は同等で出発する。しかしながら、それらは、次いで、異なるデータ641、642が各ルート620、621の中に、したがって、各子データセット613、614に書き込まれるにつれて、経時的にゆっくりと発散する。
例に従ってデータストアが探索されるとき、探索はデータ項目を探しており、データ項目に関連付けられたデータが戻される。たとえば、実装詳細に応じて、データ項目は様々な形式を取ることができる。しかしながら、1つの可能な形式では、データ項目は、(特定の銀行を識別する)bankID、(特定のタイプのエンティティを示す)entityType、および(特定のエンティティを識別する)entityIdに基づくタプルである。
図7は、別の例示的なデータストアを表す別の状態グラフ700を示す。例示的なグラフ700は、オーバーレイおよびオーバーレイ状態を論証する。
この例では、状態グラフ700は、祖父母状態711、および(タイムスタンプデータ740によって示されるように)タイムスタンプ「50」において作成され、データが(項目750によって示されるように)タイムスタンプ「100」においてデータ項目「E1」に関連して記憶された、親データセット712を備える。状態グラフ700はまた、それぞれ、タイムスタンプデータ741、742によって示されるように、タイムスタンプ「150」において作成された第1の子データセット713および第2の子データセット714を備える。項目751、752によって示されるように、タイムスタンプ「160」におけるデータ項目「E2」に関連して第1の子データセット713および第2の子データセット714の中にデータが記憶されており、タイムスタンプ「210」におけるデータ項目「E3」に関連して第1の子データセット713の中にデータが記憶された。図6Eにおけるものとは異なり、記憶されるデータの値は図7に示さない。タイムスタンプ「160」におけるデータ項目「E2」に関連して第1の子データセット713および第2の子データセット714の各々の中に記憶されるデータの値は、互いに異なってよい。この例では、第2の子データセット714は、項目760によって示されるように、タイムスタンプ「180」において第1の子データセット713のオーバーレイになった。上記で説明したように、データ要素は、データストアの中に記憶された所与のデータの全体または一部を表し、この点で、データは1つまたは複数のデータ要素を備えてよい。この例では、オーバーレイデータ要素選択メタデータは、項目760によって示されるように、第2の子データセット714からのオーバーレイデータ要素「m1」および「m2」が第1の子データセット713に適用されるべきであることを示す。オーバーレイデータ要素「m1」および「m2」は、異なる機械学習モデルに関係してよく、異なる機械学習モデルデータを備えてよい。オーバーレイデータ要素選択メタデータは、オーバーレイデータセットとして第2の子データセット714から使用されることになる特定のデータ要素を示す。第2の子データセット714は、オーバーレイを介して適用されないデータ要素を含むことができる。たとえば、第2の子データセット714は、オーバーレイされていない追加のデータ要素「m3」を含む場合がある。このことは、対応する「m3」データ要素を第1の子データセット713も備える場合でさえ、事実であり得る。例では、機械学習システム動作を改善するオーバーレイデータセットからの特定のデータ要素が適用のために選択されてよく、機械学習システム動作を改善し得ない他のデータ要素は、適用されることを抑止されてよい。
したがって、例によれば、オーバーレイデータセットは、あるデータセットからのいかなるデータも他のデータセットに実際にコピーすることなく、あるデータセットの中のデータを別のデータセットの中のデータを用いて更新するために使用される。このことは、例では、データが、潜在的に、オーバーレイデータセットが適用された先のデータセットからではなく、オーバーレイデータセットから読み取られることになることを示すために、オーバーレイターゲットデータセット(オーバーレイデータセットが適用された先のデータセット)に対するメタデータを修正することによって、達成される。データは、オーバーレイデータセットに関連付けられた2つの所与のタイムスタンプの間でこのようにして読み取られてよい。タイムスタンプは、オーバーレイデータセットが(オーバーレイされる前に)いつ作成されたのかに対応する下位タイムスタンプを含んでよい。タイムスタンプは、オーバーレイデータセットがいつオーバーレイされたのかに対応する上位タイムスタンプを含む。
この例では、階層状態タイプをなすデータのすべての断片が、タイムスタンプを記憶する。例では、タイムスタンプは、データがいつ更新されたのかを表す狭義増加整数である。しかしながら、タイムスタンプは、更新が行われた順序を依然として示しながら、様々な異なる形式を取ってよい。タイムスタンプは、データがいつ最後に更新されたのかを示す、最終修正タイムスタンプであってよいが、タイムスタンプは、必ずしもすべての例において最も最近の更新を示すとは限らない。
オーバーレイデータセットが適用された所与のデータセットから状態データ項目を読み取るとき、所与のデータセットから読み取られたデータが、オーバーレイデータセットが作成された時間とオーバーレイデータセットが所与のデータセットに適用された(「促進された」とも呼ばれる)ときとの間で(最後に)修正された場合、オーバーレイされたデータは、オーバーレイデータセットから読み取られ、所与のデータセットから読み取られたデータの上部に適用される。上記で説明したように、オーバーレイされたデータは、たとえば、状態タイプに応じて、特定のオーバーレイデータ要素に限定されてよい。
例示的な状態グラフ700を生成するための動作の例示的なシーケンスが次に説明される。最初に、状態ID「state1」を有する第1のデータセット711が、空であり親を伴わずに作成される。タイムスタンプ「50」において、状態ID「state2」を有する第2のデータセット712が第1のデータセット711の子として作成される。第2のデータセット712は、その作成時に空であり、第1のデータセット711は、第2のデータセット712の作成時に不変になる。タイムスタンプ「100」において第2のデータセット712がルート状態であって、タイムスタンプ「100」においてデータ項目「E1」が第2のデータセット712の中に書き込まれる。それぞれ、状態ID「state3」および「state4」を有する、第3のデータセット713および第4のデータセット714が、タイムスタンプ「150」において、第2のデータセット712の子として作成される。第3のデータセット713および第4のデータセット714は、それらの作成時に空であり、第2のデータセット712は、第3のデータセット713および第4のデータセット714の作成時に不変になる。タイムスタンプ「160」において第3のデータセット713および第4のデータセット714が両方ともルートであって、タイムスタンプ「160」においてデータ項目「E2」が第3のデータセット713および第4のデータセット714の中に書き込まれる。タイムスタンプ「180」において、第3のデータセット713上へのオーバーレイ適用のためにオーバーレイデータ要素「m1」および「m2」が選択されて、第4のデータセット714が第3のデータセット713上にオーバーレイされる。第4のデータセット714は、第3のデータセット713のオーバーレイになるときに不変になる。タイムスタンプ「210」において第3のデータセット713が唯一のルートデータセットであって(したがって、不変でなくて)、タイムスタンプ「210」においてデータ項目「E3」が第3のデータセット713の中に書き込まれる。
状態グラフ700によって表される例示的なデータストアは、以下のデータを記憶してよい。
{ stateId: state2, key: E1, data: {[m1(E1)2, m2(E1)2, m3(E1)2]}, timestamp: 100 }、
{ stateId: state3, key: E2, data: {[m1(E2)3, m2(E2)3, m3(E2)3]}, timestamp: 160 }、
{ stateId: state4, key: E2, data: {[m1(E2)4, m2(E2)4, m3(E2)4]}, timestamp: 160 }、および
{ stateId: state3, key: E3, data: {[m1(E3)3, m2(E3)3, m3(E3)3]}, timestamp: 210 }。
そのような例示的なデータでは、「mi(Ej)k」は、第kのデータセットの中の、キーEjに関連して記憶された、第iの機械学習モデルに関係するもう1つの値を備えるデータ要素を示す。
状態グラフ700によって表される例示的なデータストアは、以下のメタデータを記憶してよい。
{ stateId: state1, startTime: 0, endTime: 50 }、
{ stateId: state2, startTime: 50, endTime: 150, parent: state1 }、
{ stateId: state3, startTime: 150, parent: state2, overlay: { state4, [m1, m2], (150, 180) } }、および
{ stateId: state4, startTime: 150, endTime: 180, parent: state2 }。
この例では、第3のデータセット713は第2のデータセット712の子であるが、それ自体は第2のデータセット712のデータ項目「E1」を備えない。また、第4のデータセット714が第3のデータセット713のオーバーレイであっても、第4のデータセット714の中の、データ項目「E2」に関連付けられたデータは、実際には第3のデータセット713の中にコピーされていない。代わりに、メタデータが第2のデータセット712、第3のデータセット713、および第4のデータセット714をリンクし、その結果、以下で説明するように、データは、そのような1つのデータセットから別のデータセットにデータがコピーされていることなく、これらのデータセットの混合物から読み取られ得る。
したがって、メタデータは、データストアの中に記憶されたデータとは別個であり、そうしたデータについての情報を提供する。例では、メタデータは、データレベルまたはデータ要素レベルではなく、データセットレベルにおいて情報を提供する。例では、メタデータは、他のデータから独立して修正可能である。行うことが迅速であり得るメタデータへのわずかな変更は、著しい量のデータがコピーされる必要なく、データストアから読み取られ得る有効データへの著しい変更をもたらすことができる。
この例では、第1のデータセット711はタイムスタンプ「0」と「50」との間でルートであり、第2のデータセット712はタイムスタンプ「50」と「150」との間でルートであり、第4のデータセット714はタイムスタンプ「150」と「180」との間でルートであった。第3のデータセット713は、タイムスタンプ「150」においてルートになっており現在のルートである。
状態グラフ700から読み取るための例示的な(簡略化された)読取り論理が次に説明される。例示的な書込み論理も以下で説明される。読取り動作および書込み動作が本明細書では一緒に説明されることがあるが、読取りは、必ずしも書込みが直ちに発生することを暗示するとは限らない。ルートデータセットの中へ書込みが実行される前に、同じデータ項目が複数回数、読み取られてよい。
「E1」データ項目を読み取るために、現在のデータセット、すなわち、第3のデータセット713が探索される(「照会される」とも呼ばれる)。「E1」は第3のデータセット713の中で発見されない。第2のデータセット712は、親メタデータを介して識別されるとともに第3のデータセット713の親データセットとして照会され、「E1」は、「100」という修正タイムスタンプを伴って発見される。この点においてオーバーレイは適用可能でなく、そのため、「E1」に関連付けられたデータが戻される。上記の例を参照すると、戻されるデータは、[m1(E1)2, m2(E1)2, m3(E1)2]であることになる。戻されるデータは、データ項目「E1」に関連してルートデータセット、すなわち、第3のデータセット713に直接書き込まれてよい。第3のデータセット713の中に書き戻されるとき、データ項目「E1」は、「180」よりも大きいタイムスタンプを有する。「E1」に対する後続の読取り要求は、データを再び第2のデータセット712から取り出すのではなく、戻されたデータを第3のデータセット713から取り出すことになる。
「E2」データ項目を読み取るために、現在のデータセット、すなわち、第3のデータセット713が探索され、「160」という修正タイムスタンプを伴って「E2」が発見される。第3のデータセット713から読み取られた、「160」という修正タイムスタンプは、第4のデータセット714のためのアクティブなオーバーレイ期間の中に、すなわち、「150」から「180」までにある。したがって、第4のデータセット714はオーバーレイメタデータを介して識別され、データ要素「m1(E2)4」および「m2(E2)4」が第4のデータセット714から読み取られる。この例では、データ要素「m3(E2)4」は、オーバーレイデータ要素選択メタデータに鑑みて、第4のデータセット714から読み取られない。この例では、第4のデータセット714から読み取られるような「m1(E2)4」および「m2(E2)4」が、第3のデータセット713から読み取られるデータ要素「m1(E2)3」および「m2(E2)3」を置き換えるが、第3のデータセット713から読み取られるようなデータ要素「m3(E2)3」は、第4のデータセット714からのデータによって置き換えられない。修正されるような「E2」に関連付けられたデータ、すなわち、[m1(E2)4, m2(E2)4, m3(E2)3]が戻される。第4のデータセット714から読み取られる「E2」データ、すなわち、「m1(E2)4」および「m2(E2)4」、または修正されたそのようなデータ、すなわち、「m1(E2)4_mod」および「m2(E2)4_mod」は、次いで、「m3(E2)3」と一緒に、かつ「180」というオーバーレイ適用タイムスタンプよりも大きい修正タイムスタンプを伴って、ルートデータセット、すなわち、第3のデータセット713に直接書き戻される。第3のデータセット713および/または第4のデータセット714から読み取られるデータは、ルートデータセットに書き戻される前に機械学習システムによって修正されてよい。一般に、書込みは、データストアから読み取られるデータが機械学習システムによって修正された後に実行される。したがって、ルートデータセットに書き込まれるデータは、読み取られるようなデータ、または読み取られるようなデータの修正されたバージョンであってよい。オーバーレイデータセットが別のデータセットに適用されるとき、オーバーレイされたデータセットのために適用されるのか、それともオーバーレイデータセットが適用される先のデータセットに適用されるのかにかかわらず、新たな状態IDは作成されない。適用可能な場合、オーバーレイデータセットに読取りをリダイレクトするために、既存のルートデータセットのメタデータだけが修正される。その点から、オーバーレイデータセットは、事実上、ルートデータセットの内容のうちの変更できない部分になる。
「E3」データ項目を読み取るために、現在のデータセット、すなわち、第3のデータセット713が探索され、「E3」が、「210」という修正タイムスタンプを伴って発見される。第4のデータセット714が(タイムスタンプ「180」において)第3のデータセット713上にオーバーレイされた後、「E3」が(タイムスタンプ「210」において)第3のデータセット713の中に書き込まれたので、この点においてオーバーレイは適用可能でない。したがって、第3のデータセット713の中の「E3」は、第4のデータセット714の中の「E3」に加えられたいかなる変更も、それらが存在することになるならすでに含むはずである。「E3」に関連付けられたデータ、すなわち、[m1(E3)3, m2(E3)3, m3(E3)3]は、修正を伴わずに第3のデータセット713から戻される。
オーバーレイはまた、子状態への変更にわたって適用され得る。状態読取りは、適用可能なすべてのオーバーレイを考慮に入れ、適宜に有効状態を再構築する。
データ項目を探索する(「読み取る」とも呼ばれる)とき、データ項目が最後に処理された後に追加されたオーバーレイが、依然としてデータ項目に対してチェックされてよい。このことは、オーバーレイ開始時間が、データ項目が(最後に)修正されたタイムスタンプの後である場合でも、データ項目が(最後に)修正されたタイムスタンプよりもオーバーレイ終了時間が大きい場合であることになる。なぜなら、たとえば、データ項目が解決された方法をオーバーレイが変更した場合、データ項目は、オーバーレイの中にあり得るが、主な親データセットのいずれの中にもなくてよいからである。それによって、データ項目が(最後に)修正されたタイムスタンプがオーバーレイの時間範囲の外側にあっても、その情報は、データ項目を戻すときに依然として含まれることが可能である。
より詳細には、状態ストアが、第1のデータセット、タイムスタンプ「150」において第1のデータセットの子として作成された、ルートデータセットである第2のデータセット、およびタイムスタンプ「150」において第1のデータセットの子として同じく作成されたが、タイムスタンプ「180」において第2のデータセットのオーバーレイになった第3のデータセットを備えることを考える。第1のデータセットが、値「15」を有するデータ要素「m1」を備える「E1」データ項目を含むこと、第3のデータセットが、値「20」を有するデータ要素「m1」を備える「E1」データ項目を含むこと、ならびにオーバーレイデータ要素選択メタデータが、第2のデータセットにデータ要素「m1」および「m2」が適用されるべきであることを示すことも考える。この例では、「E1」は、タイムスタンプ「150」の前にいくつかの回数、第1のデータセットの中に書き込まれており、次いで、「E1」は、タイムスタンプ「150」と「180」との間で第3のデータセットの中だけに書き込まれており、すなわち、「E1」は、同じく第2のデータセットに書き込まれなかった。読取り論理は、たとえば、タイムスタンプ「75」を伴う、「E1」を第1のデータセットの中で発見すると、(タイムスタンプ「180」においてオーバーレイとして追加された)第3のデータセットも探索し、第1のデータセットから読み取られるデータにそのオーバーレイを適用する。このことはまた、データ項目がオーバーレイの中にしか存在しないとき、たとえば、「E1」が第1のデータセットにまったく書き込まれていなかった場合に適用される。そのようなデータ項目がルートデータセットのいかなる親データセットの中でも発見されないとき、データ項目は、オーバーレイをチェックするときに「0」という有効な読取りタイムスタンプ(または、可能な異なる最小タイムスタンプ値)を有する。
図8Aおよび図8Bは、例に従ってデータおよびメタデータがデータストアの中にどのように記憶され得るのかを示す。
この例では、「レコード」と呼ばれることがあるエンティティ800が、データストアの中に記憶された例示的な情報を表す。この例では、エンティティ800は、エンティティ800の中で示される情報が、状態ID「state1」が割り振られているデータセットに関連付けられていることを示す、値「state1」を有するstateIdフィールド801を含む。この例では、エンティティ800はまた、エンティティ800が、データ項目「E1」に関係するデータを記憶することを示す、値「E1」を有するデータ項目フィールド802を含む。この例では、エンティティ800はまた、データ要素[m1, m2, m3]を有するdataフィールド803を含む。この例では、「m1」、「m2」、および「m3」は各々、それぞれの機械学習モデルに関連付けられた1つまたは複数のそれぞれの値を備える。この例では、エンティティ800はまた、「E1」がタイムスタンプ「100」において更新されたことを示す、値「100」を有するtimestampフィールド804を含む。
この例では、エンティティ810は例示的なメタデータを表す。この例では、エンティティ810は、エンティティ810の中で示されるメタデータが、状態ID「state3」が割り振られているデータセットに関連付けられていることを示す、値「state3」を有するstateIdフィールド811を含む。この例では、エンティティ810はまた、状態ID「state3」を有するデータセットがタイムスタンプ「150」において作成されたことを示す、値「150」を有するstartTimeフィールド812を含む。この例では、エンティティ810はまた、状態ID「state2」を有するデータセットが状態ID「state3」を有するデータセットの親であることを示す、値「state2」を有するparentフィールド813を含む。この例では、エンティティ810はまた、(i)状態ID「state4」を有するデータセットが状態ID「state3」を有するデータセットのオーバーレイであること、(ii)(状態ID「state4」を有する)オーバーレイデータセットからデータ要素「m1」および「m2」だけが適用されるべきであること、ならびに(iii)(状態ID「state4」を有する)オーバーレイデータセットが、いつ状態ID「state3」を有するデータセットのオーバーレイになったのかを、「180」という上位タイムスタンプが示して、(状態ID「state4」を有する)オーバーレイデータセットが、それぞれ、「150」および「180」という上位および下位タイムスタンプを有することを示す、値「state4, [m1, m2], (150, 180)」を有するoverlayフィールド814を含む。図8Bに示さないが、エンティティ810は、たとえば、所与のデータセットがいつ不変になったのかを示すendTimeフィールド、および/または所与のデータセットの1つもしくは複数の追加のオーバーレイに関連付けられた1つもしくは複数の追加のoverlayフィールドを含んでよい。
図9は、別の例示的なデータセットを表す別の状態グラフ900を示す。例示的なグラフ900は、非関連状態を論証する。この例では、データストアは、曾祖父母データセット911、祖父母データセット912、親データセット913、親オーバーレイデータセット914、子データセット915、および子オーバーレイデータセット916を備える。この例では、データセット911~916は、それぞれ、状態ID「state1」~「state6」という形式をなす識別データを使用して識別される。この例では、親オーバーレイデータセット914は祖父母データセット912の子であり、親データセット913のオーバーレイでもある。この例では、子オーバーレイデータセット916は、子データセット915のオーバーレイであるが親データセット913の子ではない。詳細には、この例では、親データセット913自体は、親オーバーレイデータセット914の形式をなすオーバーレイデータセットを有する。図9に示す構成では、親データセット913と親オーバーレイデータセット914の両方は、それでも不変である。
オーバーレイは、しばしば、親データセットをオーバーレイターゲットデータセット(オーバーレイが適用されるデータセット)と共有するが、そのことは必ずしも事実であるとは限らない。非関連データセットがオーバーレイされることがある。そのような例では、オーバーレイは「0」というオーバーレイ開始時間を使用してよい。この特徴は、たとえば、成熟した新たなモデルから既存のシステムの中にすべてのデータをコピーする必要なく、成熟した新たなモデルデータを既存のシステムの中に挿入するために使用され得る。例示的なグラフ900では、子オーバーレイデータセット916は、(当初は)非関連状態に相当する。
したがって、状態の定義への親状態関係の関連性が見られ得る。状態IDに対する状態関係メタデータは、その状態に関連付けられた有効データが親データセットおよびオーバーレイからの状態の混合物の結果であるので、その状態の中でアクセス可能なデータを大幅に変更することなく変更され得ない。
図10は、別の例示的なデータセットを表す別の状態グラフ1000を示す。状態グラフ1000によって表される例示的なデータセットは、状態グラフ900によって表される例示的なデータセットと類似である。ただし、第4のデータセット1014は、第3のデータセット1013のオーバーレイである代わりに、第5のデータセット1015のオーバーレイである。したがって、この例では、第5のデータセット1015は、2つのオーバーレイ、すなわち、第4のデータセット1014および第6のデータセット1016を有する。追加として、この例では、第6のデータセット1016は第3のデータセット1013の子である。具体例として、(i)第4のデータセット1014が、データ要素「m14」および「m24」を有するデータ項目「E1」を備え、第4のデータセット1014が、「50」というタイムスタンプにおいて第5のデータセット1015のオーバーレイになったこと、(ii)第6のデータセット1016がまた、データ要素「m16」および「m26」を有するデータ項目「E1」を備え、第6のデータセット1016が、「100」というもっと後のタイムスタンプにおいて第5のデータセット1015のオーバーレイになったこと、ならびに(iii)第5のデータセット1015がまた、「75」という修正されたタイムスタンプを伴うデータ要素「m15」および「m25」を有するデータ項目「E1」を備えることを考える。すべてのオーバーレイデータ要素が第4のデータセット1014および第6のデータセット1016から読み取られることになることをさらに想定すると、読取り論理は、(i)「75」という修正されたタイムスタンプを伴う第5のデータセット1015の中でデータ項目「E1」を最初に発見することになり、(ii)オーバーレイメタデータに基づいて第5のデータセット1015のオーバーレイとして第4のデータセット1014を識別することになるが、第4のデータセット1014に対する「50」というオーバーレイタイムスタンプが「75」という修正されたタイムスタンプよりも前であるので、第4のデータセット1014の中でデータ項目「E1」を探索することにはならず、(iii)オーバーレイメタデータに基づいて第5のデータセット1015のオーバーレイとして第6のデータセット1016を識別することになり、第6のデータセット1016に対する「100」というオーバーレイタイムスタンプが「75」という修正されたタイムスタンプよりも後であるので、第6のデータセット1016の中でデータ項目「E1」を探索することになり、(iv)データ項目「E1」に対して、第5のデータセット1015からデータ要素「m15」および「m25」を戻すのではなく、第6のデータセット1016からデータ要素「m16」および「m26」を戻すことになる。データ要素「m16_mod」および「m26_mod」、すなわち、修正されたような「m16」および「m26」は、データ項目「E1」に関連して第5のデータセット1015の中に書き込まれることになる。上記で説明したように、そのような書込みは、そのような読取りの直後に行われなくてよい。
実行に関して、別個のデータセットおよびオーバーレイの中への各読取りは、データストアへの別個の読取り動作である。親論理およびオーバーレイ論理は比較的複雑であり、データストア上での単一の照会として実行するのが困難である場合がある。したがって、何個のデータセットが関与するのかに応じて、いくつかの読取り動作は所与のデータが戻される前に実行されてよい。しかしながら、すべての書込みはルートデータセットの中へ行われる。したがって、データが読み取られる次回に、データは単一の読取りとしてルートデータセットから直接読み取られる。しかしながら、新規データセットが(空のデータセットとして)作成されるとき、すべての読取りは少なくとも2つの読取り動作を伴う親からのものである。いくつかの実装形態では、新規データセットは、最も頻繁に修正されるデータを用いて比較的迅速にポピュレートされるようになってよい。追加として、読取り動作の数は経時的に減少し、以前の動作レートに偏りがちな場合がある。とはいえ、特定のデータ項目が有効データセット(グラフの中の適用可能なデータセットの混合物)の中に存在しないことを決定することは、最も早いデータセットが読み取られてしまうまで関連するすべてのデータセットから読み取ることを伴う。このことは、現在のルートから新規データセットが作成されるときはいつでも読取り動作を増やす。このことを軽減するために、古いデータセットを一緒に統合して階層の中のデータセットの数を減らすことを実行するために、クリーンアップ動作が構成され得る。このことは、必要とされる読取り動作の数に上限を設けることができる。クリーンアップ動作は、周期的に、または別のやり方で実行されてよい。
図11は、例示的なデータストアを表す別の状態グラフ1100を示す。例示的なグラフ1100は、適格状態を論証する。
階層状態クリーンアップ動作は、絶えず増大する数の階層状態によって引き起こされる、潜在的な性能劣化とデータストアサイズの両方に対処する。示されるように、より多くの状態層が作成され互いにリンクされるにつれて、性能は潜在的に劣化する。増大する数の親データセットが探索される必要があるかもしれないので、データ項目を発見することは、増大する時間量がかかる場合がある。このことはデータセット履歴全体に出向くことをルックアップに強いるので、このことは特にデータ項目がデータセット層のいずれの中にも存在しない場合に真実である。照会の数はデータセットの数とともに線形に増加する。この問題はデータセットが促進されるにつれて大きくなり、より多くのオーバーレイを作成する。データ項目は、状態木の主な分岐の中で発見されないとき、依然としてオーバーレイの中で発見される場合があり、そのため、オーバーレイもチェックされる。
そのような潜在的な性能劣化を管理するために、特定のデータ項目を探すときに実行されるべき照会の数を低減するための階層状態クリーンアップ動作の一部として、より古いデータセットがクリーンアップされ得る。この動作はまた、データストアの中の空間を節約する。例では、非階層データセットはクリーンアップされない。このことは、非階層データセットが小さい場合の性能には顕著に影響を及ぼさない。階層状態クリーンアップ動作手順に関して、クリーンアップにとって適格なデータセット層は、本明細書で「ターゲット状態」と呼ぶ単一のデータセット層の中に折りたたまれ、したがって、余分な読取りを防止する。ターゲット状態は、構成可能なカットオフの前にロックされている(言い換えれば、不変になっている)親を伴うルートによって指し示されるデータセット層の、最も低い共通の祖先である。クリーンアップにとって適格なデータセットとは、(i)ターゲットデータセットの厳密な祖先、(ii)ターゲットデータセットの厳密な祖先のオーバーレイ、および(iii)ターゲットデータセットのオーバーレイである。
例示的なグラフ1100では、第2のデータセット1112は、カットオフ1170の前にロックされている親(データセット1111)を伴う、ルートデータセット(第4のデータセット1114および第5のデータセット1115)によって指し示されるデータセットの、最も低い共通の祖先である。したがって、データセット1112がターゲット状態である。必ずしもそれ自体がクリーンアップにとって適格であるとは限らない。データセット1113、1114、および1115は、ターゲットデータセット、すなわち、データセット1112の、子孫である。したがって、それらもクリーンアップにとって適格でない。データセット1111は、ターゲットデータセット、すなわち、データセット1112の、厳密な祖先である。したがって、データセット1111はクリーンアップにとって適格である。
この例では、クリーンアップ手順は、ターゲットデータセットを識別することとともに開始する。クリーンアップにとって適格なデータセットが識別される。クリーンアップにとって適格なデータセットからの関連するデータのすべてがターゲットデータセットの中にマージされる。関連するときにオーバーレイが適用され、その結果、データは失われない。ターゲットデータセットの親参照が除去され、ターゲットデータセットを、ルートによって指し示されるデータセットの最も遠い新たな祖先にさせる。また、ターゲットデータセット上に適用された、いかなるオーバーレイも除去される。クリーンアップにとって適格なデータセットは、完全に除去される。
図12Aは、別の例示的なデータストアを表す別の状態グラフ1200を示す。例示的なグラフ1200は、階層状態クリーンアップを論証する。例示的なグラフ1200は、クリーンアップが実行される前のデータストアを表す。
この例では、データストアは、曾祖父母データセット1211、祖父母データセット1212、親データセット1213、および子データセット1214を備える。4つの連続の状態層を伴うこの例では、データセット1211および1212がクリーンアップにとって適格なデータセットである。データセット1213がターゲットデータセットである。データセット1211、1212、および1213のデータがマージされ、データセット1213に書き込まれる。様々なステップが実行される順序は、クリーンアップ手順全体にわたってデータの一貫性をもたらす。ターゲットデータセットの中にデータをマージするために、「仮想ルート」としてターゲットデータセットからデータを読み取ることによってターゲットの中の有効データが決定される。クリーンアップにとって適格なデータセットおよびターゲットデータセットの中に存在するデータ項目ごとに、上記で説明した階層状態読取り論理により仮想ルートからデータ項目が読み取られる。得られたデータは、次いで、ターゲットデータセットに書き込まれる。ターゲットデータセットは必ずしもロックされるとは限らない。そのような場合、ターゲットデータセットはライブルートデータセットでもある。この特別な場合には、ターゲットデータセットが含むデータは、依然として修正の対象となる。そのような例では、クリーンアップ動作は並行した書込みに取って代わられる。並行した書込みは、最も最新のデータがターゲットライブルートデータセットに書き込まれることを保証する。そのような事例では、その特定のデータ項目のためのマージステップは、過去のものにされ中止される。書込みがアトミックであるので、クリーンアップおよび外部ソースによって書き込まれるデータの混合に起因することになる、破損したデータを得るというリスクがない。概して、移動されるべきデータ項目が、移動されるべきデータ項目のタイムスタンプよりも大きい修正されたタイムスタンプを伴うターゲットデータセットの中にすでに存在する場合、ターゲットデータセットの中のデータ項目は上書きされない。このことは、ターゲットデータセットがロックされる場合に依然として起こることになる。より詳細には、データ項目がターゲットデータセットの中にすでに存在しないこと、またはすでにターゲットの中にあるデータ項目の修正されたタイムスタンプが、ターゲットデータセットに書き込まれつつあるデータの修正されたタイムスタンプ以下であることを条件として、書込みはアトミックに行われる。カットオフラインが破線1270によって示される。
例では、統合されたデータ項目に書き戻されるタイムスタンプは、統合されたデータ項目の中にマージされたすべてのデータ項目のタイムスタンプのうちの最大のタイムスタンプである。例では、最新のデータ項目が、統合されたデータ項目の中の最終データのサブセットしか有しないオーバーレイデータセットからのものである場合でも、このことは事実である。
図12Bは、別の例示的なデータストアを表す別の状態グラフ1202を示す。図12Bに示す例示的なグラフ1202は、クリーンアップ動作が実行された後の、図12Aに示す例示的なグラフ1200に相当する。
図13Aは、別の例示的なデータストアを表す別の状態グラフ1300を示す。例示的なグラフ1300は、具体例を使用して階層状態クリーンアップを論証する。
クリーンアップの前に状態グラフ1300を生成するための動作の例示的なシーケンスは次の通りである。データセット1311が、空であり親状態を伴わずに作成される。タイムスタンプ「30」においてデータ項目「E1」がデータセット1311の中に書き込まれる。タイムスタンプ「40」においてデータ項目「E2」がデータセット1311の中に書き込まれる。タイムスタンプ「50」においてデータセット1312および1313がデータセット1311の子として作成され(空)、タイムスタンプ「50」においてデータセット1311が不変になる。タイムスタンプ「60」においてデータ項目「E3」がデータセット1312および1313の中に書き込まれる。タイムスタンプ「65」においてデータ項目「E4」がデータセット1312の中に書き込まれる。オーバーレイデータ要素「m1」および「m2」が選択されて、タイムスタンプ「70」においてデータセット1312がデータセット1313上にオーバーレイされる。ここでオーバーレイされたデータセット1312は、タイムスタンプ「70」において不変になる。タイムスタンプ「80」においてデータ項目「E2」がデータセット1313の中に書き込まれる。タイムスタンプ「100」においてデータセット1314がデータセット1313の子として作成される(空)。タイムスタンプ「100」において、データセット1313が不変になる。
この例では、ターゲットデータセットはデータセット1313であり、クリーンアップにとって適格なデータセットはデータセット1311および1312である。データセット1311、1312、および1313の中に存在するデータ項目ごとに、有効データが、データセット1313を指し示す仮想ルートから読み取られ、次いで、データセット1313に書き込まれる。オーバーレイデータセット1312は、「70」までのタイムスタンプにおいてセーブされたデータにとって有効である。
簡略化されたクリーンアップ論理は次の通りである。「E1」をマージすることに対して、データセット1313の中で「E1」は発見されない。適用可能なオーバーレイデータセット1312の中でデータが発見されなくて、データセット1311の中で「E1」が発見される。データセット1311の中で発見されるような「E1」が、データセット1313の中にコピーされる。「E2」をマージすることに対して、データセット1313の中で「E2」が発見される。データセット1313の中で発見されるような「E2」は、適用可能なオーバーレイを伴わずにすでにデータセット1313の中にあるので修正されない。「E3」をマージすることに対して、データセット1313の中で「E3」が発見される。ただし、データセット1313の中で発見されたデータは、適用可能なオーバーレイデータセット1312の中で発見されたオーバーレイデータ要素「m1」および「m2」に関係するデータを用いて更新される。有効データがデータセット1313に書き込まれる。「E4」をマージすることに対して、データセット1313の中で「E4」は発見されない。データセット1311の中でも「E4」は発見されない。データセット1312の中で「E4」が発見される。有効データは、「m1」および「m2」に関係するデータしか含まない。有効データがデータセット1313に書き込まれる。データ項目がデータセット1313にマージされてしまうと、データセット1311および1312が削除される。
図13Bは、別の例示的なデータストアを表す別の状態グラフ1302を示す。図13Bに示す例示的なグラフ1302は、クリーンアップ動作が実行された後の、図13Aに示す例示的なグラフ1300に相当する。事実上、データセット1311の中の「E1」データは、その全体がデータセット1313に移動されている。データセット1313の中の「E2」データは未修正である。データセット1313の中の「E3」データは、「m1」および「m2」に関係するデータセット1312の中で発見されたデータを用いて更新されている。「m1」および「m2」に関係するデータセット1312の中の「E4」データは、データセット1313に移動されている。
階層状態クリーンアップ動作が実行する頻度は、たとえば、操作者によって設定されてよい。それらをクリーンアップする前に保つべき状態スナップショットの履歴の長さも、たとえば、操作者によって設定されてよい。
比較的長い時間(たとえば、数時間)であり得る、データがマージされつつある間、アクティブなクリーンアップ動作に対してカットオフの後に任意の修正が加えられる限り、依然としてデータストアに追加の変更が加えられることがある。例では、並行した書込みが必然的に最も最近のデータを提供しつつあるので、常に階層状態クリーンアップ動作は並行した書込みに取って代わられる。
いくつかの例では、本明細書で説明するタイムスタンプのソースがリセットされてよい。例は、タイムスタンプが複数の部分を備えるこの点について、タイムスタンプ時期(timestamp era)技法を提供する。他の部分が一定のままでありながら、その部分のうちの1つがインクリメントされてよい。トリガ、たとえば、タイムスタンプソースがリセットすることに応答して、一定であった部分がインクリメントされることが可能であり、インクリメントされつつあった部分がリセットされることが可能である。たとえば、複数部分タイムスタンプは、最初に(0,0)、(0,1)、(0,2)、および(0,3)のようにインクリメントしてよく、トリガに応答して、(1,0)、(1,1)、(1,2)などのようにインクリメントしてよい。さらなるトリガに応答して、タイムスタンプは(2,0)、(2,1)、(2,2)などのようにインクリメントしてよい。
上記で説明したように、データストレージおよび/またはデータストアは、たとえば、セキュリティ理由のために、複数の異なるパーティションに区分されてよい。異なるパーティションは、異なるpartitionIdに基づいて識別されてよい。タイムスタンプは、全体的なシステムレベルにおいてではなくパーティションレベルにおいてインクリメントするという点でパーティションベースであってよい。例では、エンティティまたはデータ項目は、そのエンティティまたはデータ項目に対してタイムスタンプが厳密にインクリメント中であるような特定のパーティションに決定論的にハッシュする。
データ削除に関して、データは階層状態から削除されてよい。データが現在のルートの中にしか存在しない場合、データは単にデータストアから除去され得る。しかしながら、データが親状態および/またはオーバーレイ状態の中に存在する場合、データは直接除去され得ない。なぜならルート以外のすべての状態が不変だからである。代わりに、削除されたと見なされるべきデータおよびそのような削除がいつ行われたのかを示すマーカーが、現在のルート状態の中に挿入される。次いで、後続の読取りは、削除マーカーを発見すると、その点において読み取ることをやめ、データを戻さない。しかしながら、削除されたと見なされるべき古いデータが、依然として親状態および/またはオーバーレイ状態の中に存在する。したがって、スナップショット状態から新たなルートが作成される場合、削除されたと見なされるべきデータが、依然としてスナップショット状態の中に存在する。削除マーカーは、追加として、それが最新であることを条件として、もし当該のデータ項目が再び削除されるなら、将来のルートの中に別のマーカーを挿入しないためのインジケータの働きをする。例では、当該のデータ項目が、促進されていないデータ要素、たとえば、モデルに対するオーバーレイの中にしか存在しない場合のみ、削除マーカーが挿入されない。オーバーレイは、事実上、削除マーカーが他のデータセットの中にあったデータにわたって(オーバーレイからの)データをオーバーレイすることによって、別のデータセットに関して行われた削除を元に戻すことができる。
削除マーカーを用いてデータ項目をクリーンアップすると、削除マーカーは、事実上、クリーンアップ動作に、その点の前のそのデータ項目に対するすべての状態を無視させる。第1の例において、データストアがクリーンアップ動作のために、ターゲットデータセット、ターゲットデータセットの親データセット、およびターゲットデータセットの祖父母データセットを含むことを考える。親データセットが、削除マーカーを伴うデータ項目「E1」を備えること、および祖父母データセットもデータ項目「E1」を備えるが値「30」を有するデータ要素「m1」を伴うこと(そのことは、「E1: {m1: 30}」として示されてよい)も考える。クリーンアップの後、ターゲットデータセットは、削除マーカーに鑑みて「E1」に対するいかなるデータもまったく有しないことになり、親データセットおよび祖父母データセットは、それらの中に任意の削除マーカーを含むデータストアから除去されることになる。第2の例において、第1の例のデータストアが親データセットとターゲットデータセットとの間に追加のデータセットを含んでいたこと、および追加のデータセットもデータ項目「E1」備えていたが値「10」を有するデータ要素「m1」を伴うこと(そのことは「E1: {m1: 10}」と示されてよい)を考える。第2の例では、クリーンアップ動作は、追加のデータセットからコピーされた「E1: {m1: 10}」をターゲットデータセットの中に置くことになり、次いで、追加のデータセット、親データセット、および祖父母データセットがデータストアから除去されることになる。
オーバーレイが削除マーカーを元に戻すことも可能である。たとえば、データストアが、値「15」を伴うデータ要素「m1」および値「20」を伴うデータ要素「m2」を有するデータ項目「E1」ならびに「75」という更新されたタイムスタンプを伴う(そのことは「E1: {m1: 15, m2: 20}, timestamp 75」と示されてよい)親データセットを備えることを考える。親データセットの第1の子データセットが、タイムスタンプ「150」において作成されており、データストアのルートであり、削除マーカーを有するデータ項目「E1」および「160」という更新されたタイムスタンプを備える(そのことは「E1: delete, timestamp 160」と示されてよい)ことも考える。親データセットの第2の子データセットが、タイムスタンプ「150」において作成されており、値「20」を伴うデータ要素「m1」、値「25」を伴うデータ要素「m2」、および「170」という更新されたタイムスタンプを有するデータ項目「E1」を備える(そのことは「E1: {m1: 20, m2: 25}, timestamp 170」と示されてよい)ことをさらに考える。追加として、オーバーレイデータ要素選択メタデータが、データ要素「m1」だけが第1の子データセットに適用されるべきであることを示して、第2の子データセットがタイムスタンプ「180」において第1の子データセットのオーバーレイになったことを考える。そのような例では、読取り論理は、第1の子データセットの中で「E1」に対する削除マーカーを発見し、それに応答して第1の子データセットの祖先を探索するのをやめる。読取り論理は、次いで、オーバーレイをチェックし、「150」~「180」をカバーする第2の子データセットからのオーバーレイを識別し、第2の子データセットから「m1」を読み取る。したがって、戻されるデータは「E1: {m1: 20}」である。本明細書で説明するようなクリーンアップ動作において、同じ論理が使用されてよい。そのような論理はまた、削除マーカーが第1の子データセットではなく第2の子データセットの中にあるなら適用されることになり、それらを戻す前に、オーバーレイされたデータ要素をデータ項目から除去する。削除マーカーが「E1」とともに第1のデータセットの中にあるなら、かつ第2の子セットが適用可能な時間期間にわたって「E1」に対するデータをまったく伴わないオーバーレイとして適用されるなら、第1の子データセットの任意の祖先の中の「E1」の中にある(もし何かあれば)どんなものも読取り論理が読み取って、「E1」に対する削除は、事実上、元に戻されてよい。しかしながら、他の例では、削除マーカーは使用され続けることになる。
図14は、データストアを表す状態グラフ1400の別の例を示す。例示的なグラフ1400は、再帰的なオーバーレイを論証する。この例では、第1のデータセット1411は祖父母データセットである。第2のデータセット1412および第3のデータセット1413は両方とも、祖父母データセットの子データセットである。第4のデータセット1414は第2のデータセット1412の子であり、したがって、第2のデータセットは第4のデータセット1413の親である。第3のデータセット1413は、2つの子データセット、すなわち、第5のデータセット1415および第6のデータセット1416を有する。第5のデータセット1415は第4のデータセット1414のオーバーレイである。第6のデータセット1416は第5のデータセット1415のオーバーレイである。この例では、第5のデータセット1415は、(i)第4のデータセット1414のオーバーレイであり、(ii)親データセットとして第3のデータセット1413を有し、(iii)祖父母データセットとして第1のデータセット1411を有し、(iv)第5のデータセット1415自体がオーバーレイであってもオーバーレイとして第6のデータセット1416を有する。データ項目を求めて第5のデータセット1415が探索される場合、第3のデータセット1413、第1のデータセット1411、および/または第6のデータセット1416は、第4のデータセット1413に関して探索が実行されるやり方と同様の方法で探索されてよい。
図15は、データストアを表す状態グラフ1500の別の例を示す。状態グラフ1500によって表される例示的なデータストアは、前者では第6のデータセット1516が第4のデータセット1514のオーバーレイであり第5のデータセット1515のオーバーレイでないことを除いて、状態グラフ1400によって表される例示的なデータストアに相当する。したがって、第4のデータセット1514は、2つのオーバーレイ、すなわち、第5のデータセット1515および第6のデータセット1516を有する。
上記で説明した例は、データベースの形態をなすデータストアに関する。データ待ち行列に関する例が次に説明される。例では、そのようなデータ待ち行列は、機械学習モデルによる特徴ベクトルを記憶する。しかしながら、そのようなデータ待ち行列は、機械学習モデルによって出力されるべき他のデータを記憶してよい。
イベントの処理の一部として、モデルは、次に読み取られ得る1つまたは複数のモデル固有のデータ待ち行列上にデータを出力することができる。待ち行列を定義することの一部として、モデルはまた、データがその間に待ち行列の中に保たれるべき最小持続時間を定義する。ライブシステムでは、データ待ち行列は持続的なメッセージ待ち行列の中に記憶されてよい。この具体例では、データ待ち行列はApache Kafkaの中に記憶される。ただし、他の例ではデータは別の方式で記憶されてよい。より詳細には、たとえば、メッセージ待ち行列を使用して、状態層を実施するための他の方法がある。データを記憶するApache Kafkaトピックの場合、データ保持期間は待ち行列保持期間上にマッピングする。トピックは、モデルがエンジンの中にアップロードされるとき、コントローラによって必要に応じて作成される。しかしながら、トピックはモデルが削除されるときに削除されない。なぜならモデルは、直後に再生成されてよく、データが依然としてそこにあることを予想することになるからである。モデルが永続的に削除される場合、トピックの中のすべてのデータは経時的にタイムアウトし、最小ディスク空間を占有する空のトピックをApache Kafkaの中に残す。階層待ち行列状態の観点から、データ待ち行列は上記で説明した状態階層化原理に従う。このことは、各状態におけるアクティブな待ち行列ごとに別個のトピックを維持すること、および完全な内容を読み取るために待ち行列を一緒にスティッチして1つの論理待ち行列にすることによって、Apache Kafka上で達成される。Apache Kafkaを詳細に参照すると、データはApache Kafka待ち行列から削除され得ず、そのため、そのようなものとして実行されるべきデータクリーンアップ動作がない。代わりに、待ち行列はタイムアウトしてしまうと除去される。未使用の任意の空の待ち行列を除去するために、また一般には、使用されておらずリンクされていない任意の状態をデータストアまたはメタデータから除去するために、別個の動作が行われてよい。
図16Aは、単一のApache Kafkaトピック、すなわち、「queue1-state1: [ topic1: 0 ]」として表される、単一の状態の中の例示的な待ち行列1600を示す。
図16Bは、例示的な待ち行列1602を示し、子状態が作成されると、その状態に対して新たなトピックが作成され、全体としての待ち行列用のメタデータが、待ち行列を一緒にリンクするように更新される。新たなメッセージは、最も最近のトピック、すなわち、「queue1-state2: [ topic1: 0, topic2: 23 ]」の末尾に置かれる。待ち行列メタデータの一部として、各トピックは、待ち行列全体の中でのトピック内容のオフセットを指定する「オフセットオフセット」を有する。このオフセットは、全体としての待ち行列内でのメッセージオフセットを得るために、各トピック内でメッセージのオフセットに追加される。
図16Cは、別の例示的な待ち行列1604を示す。階層状態と同様に、同じ親トピックに基づく複数の子トピック、すなわち、「queue1-state2: [ topic1: 0, topic2: 23 ]」および「queue1-state3: [ topic1: 0, topic3: 23 ]」があり得る。
図16Dは、別の例示的な待ち行列1606を示す。状態がオーバーレイされるようになると、ルートポインタは、オーバーレイされたトピックを直接指し示すように変化し、過去のものになったトピックは削除され、すなわち、「queue1-state2: [ topic1: 0, topic3: 23 ]」となる。
図16Eは、別の例示的な待ち行列1608を示す。現在のトピックが空であるとき、新たなトピックの「親」リンクが、空のトピックを全体にバイパスして現在のトピックの親を直接指し示すように、これらの状態動作のすべてにおいて特別な事例がある。たとえば、「queue1-state3: [ topic1: 0, topic3: 23]」である。このことは、それらの中にデータを有しない待ち行列の中央にトピックがないことを保証することになる。
データ待ち行列の中のデータは、他の状態タイプとは異なる状態実装形態を有する。したがって、クリーンアップ動作は、この状態タイプに対して異なって動作する。データ保持の保証により、エンジンは、モデル待ち行列、およびデータが記憶される方法(データベースではなくApache Kafka)を提供し、状態は、モデル待ち行列が空であると見いだされるときにしかクリーンアップされない。そのことが事実であるとき、過去のものにされたモデル待ち行列に対応するメタデータ、ならびに対応するトピック自体が削除され得る。メッセージ待ち行列は、それらが含むすべてのメッセージが最終的にタイムアウトすると空になる。具体例では、モデルデータ待ち行列は、次の条件、すなわち、(i)それ自体を含めて、その祖先のすべてが空であり、(ii)それがルートによって指し示される待ち行列の祖先であり、かつ(ii)それがルートによって直接指し示されないことを満たす場合、クリーンアップにとって適格である。ただし、他の例では他の状態が使用されてよい。
図17Aは、クリーンアップにとって適格な例示的なモデル待ち行列1700を示す。「topic1」は空であり、それが含んでいたすべての項目がタイムアウトしている。「topic1」は祖先を有さず、そのため、その祖先のすべてが空であると見なされ得る。「topic1」は、ルートによって指し示される「topic8」の厳密な祖先である。したがって、「topic1」は、クリーンアップにとって適格である。「topic2」も空である。「topic2」の祖先のすべて(すなわち、「topic1」)も空である。「topic2」は、「topic8」の厳密な祖先である。したがって、「topic2」は、クリーンアップにとって適格である。「topic3」も空である。「topic3」の祖先のすべて(すなわち、「topic1」)も空である。「topic3」はまた、ルートによって指し示されるトピック(すなわち、「topic5」)の祖先である。したがって、「topic3」は、クリーンアップにとって適格である。「topic4」は空である。しかしながら、「topic4」は、ルートによって指し示されるいかなるトピックの祖先でもない。したがって、「topic4」は、クリーンアップにとって適格でない。「topic5」は空でない。その上、「topic5」は、ルートによって指し示される。したがって、「topic5」は、クリーンアップにとって適格でない。「topic6」は空であり、その祖先のすべて(すなわち、「topic1」および「topic2」)も空であり、「topic6」は、ルートによって指し示される「topic8」の厳密な祖先である。したがって、「topic6」は、クリーンアップにとって適格である。「topic7」は空でない。したがって、「topic7」は、クリーンアップにとって適格でない。「topic8」は空である。しかしながら、「topic8」の祖先のうちの1つ(すなわち、「topic7」)が空でなく、「topic8」は、ルートによって直接指し示される。したがって、「topic8」は、クリーンアップにとって適格でない。「topic9」は空である。「topic9」は祖先を有さず、そのため、「topic9」の祖先は空であると見なされる。しかしながら、「topic9」は、ルートによって直接指し示される。したがって、「topic9」は、クリーンアップにとって適格でない。
図17Bは、クリーンアップ手順が完了した後の、例示的なモデル待ち行列グラフ1702を示す。上の例からの「topic4」のような、トピックが完全に空白であるとき(言い換えれば、いかなるメッセージもまったく含まなかったとき)、その子は、(もしあれば)その親を直接参照するためにそれをバイパスする。この具体例では、また上記で提示した例示的な条件によれば、そのような空白のトピックはクリーンアップされない。しかしながら、そのようなトピックは、比較的まれなままであるはずである。より一般的には、この具体例では、ルートから到達可能でないトピックはクリーンアップされない。しかしながら、他の例では、「topic4」などの空のトピックはクリーンアップされ得る。
したがって、本明細書で説明する例は、階層的な関係を用いて、データの複数の独立したセットを(データベースなどの)データストアの中に記憶させるための能力を提供する。
データの特定のセットが、状態IDを使用してアクセスされる。いくつかの例では、メタデータは、異なる状態IDの間の関係についての情報とともにデータストアの中に記憶される。しかしながら、上述のように、メタデータは、必ずしも状態データと同じデータストアの中に記憶されるとは限らない。関係とは、親関係またはオーバーレイ関係であり得る。単一の状態IDが、0または1個の親、および0~「N」個のオーバーレイを有することができる。データストアにアクセスする外部のクライアントは、特定のルート状態IDを使用してそうする。
データ要素「m1」、「m2」、「m3」を伴うデータ項目「E」に対するデータをセーブするとき、データは、単にルート状態の中に書き込まれ、それが存在する場合、「E」に対するルート状態の中に記憶された他のどんなものも潜在的に上書きする。データストアにおける他の変更に対してデータがいつ修正されたのかを示す、タイムスタンプまたは他の厳密にインクリメントする数も記憶される。
読み取るとき、クライアントは特定のデータ項目、すなわち、「E」を探している。「E」がルート状態の中に存在する場合、「E」に関連してルート状態の中に記憶されたデータがクライアントに戻される。そうでない場合、「E」が発見されるまで親階層の上方へ親状態が探索などされ、または木の末尾(すなわち、上部)における状態が探索され、「E」は存在しないものと決定される。
追加として、探索する間、適用可能なオーバーレイが探索されてよい。状態は、別の状態へのオーバーレイとして適用されるとき、少なくとも1つのタイムスタンプとともに適用される。いくつかの例では、オーバーレイは、オーバーレイが他の状態にいつ適用されたのかを示す第1の(「上位」)タイムスタンプ「u」とともに適用され、随意に、オーバーレイがいつ作成されたのかを示す第2の(「下位」)タイムスタンプ「t」とともに適用されてよい。オーバーレイから適用されるべきデータ要素のセットを示すデータも記憶される。
「E」が発見されてしまうと、どのオーバーレイが適用されるべきであるのかを決定するために、そのタイムスタンプ「tE」が検査される。上位タイムスタンプに基づく年代順にt<tE≦uとなるすべてのオーバーレイに対して、各オーバーレイからのデータ要素「mn」が適用される。そのようなデータ要素は、親状態階層の中のどこかから読み取られるデータにわたってコピーされてよい。得られたデータは、次いで、照会しているアプリケーションに戻される。「tE」がすべての既存のオーバーレイの上位タイムスタンプよりも大きい場合、「E」は適用されたオーバーレイとともにすでにセーブされており、そのため、そのまま(as-is)戻されてよい。しかしながら、例では、データ項目が解決された方法をそのようなオーバーレイが変更した場合には、もっと後のオーバーレイが依然としてチェックされる。
クリーンアップ動作は、クライアント読取りおよびクライアント書込みと並行して実行され得る。このことは、ターゲット状態、たとえば、ルート状態の中に存在しない任意のデータを前方へコピーして、古い状態を一緒に折りたたむ。このことは、動作しているクライアントによってルート状態の中に並行してセーブされた、いかなるデータも上書きされないような、アトミックな挿入動作を使用する。
本明細書で説明する技法は、Mongo、SQL、およびApache Kafkaの上部に実装されてよい。異なる実装詳細が関与してよい。
データストアの中のすべてのデータセットの中に存在するデータ項目のすべて、または特定のルートからの階層の中の少なくともすべてのデータ項目を列挙し、次いで、そのルートからのその有効データを見るためにルートデータセットを通じてデータ項目ごとに照会することによって、データセットの内容全体が識別されてよい。
図18は、別の例示的なデータストアを表す別の状態グラフ1800を示す。本明細書で説明する特徴の様々な機能および効果を要約するために、例示的な状態グラフ1800が参照される。
データストアの中のデータを探索するために、様々な方策(たとえば、方法、装置、システム、コンピュータプログラム、およびコンピュータ可読媒体)が提供される。データストアは、第1のデータセット1811および第2のデータセット1812を備える。第1のデータセット1811および/または第2のデータセット1812の中でデータ項目が探索される。前記探索することがデータ項目を発見することに応答して、データ項目に関連して記憶されたデータが戻される。データ項目が第1のデータセット1811の中で発見される場合、かつ第2のデータセット1812が第1のデータセット1811のオーバーレイになった後にデータ項目が第1のデータセット1811の中で更新された場合、前記戻すことは、第1のデータセット1811の中のデータ項目に関連して記憶された第1のデータを戻すことを備える。データ項目が第1のデータセット1811および第2のデータセット1812の中で発見される場合、かつデータ項目が第1のデータセット1811の中で更新された後に第2のデータセット1812が第1のデータセット1811のオーバーレイになった場合、前記戻すことは、第2のデータセット1812の中のデータ項目に関連して記憶された第2のデータを戻すことを備える。オーバーレイメタデータに基づいて第2のデータセット1812が識別される。オーバーレイメタデータは、第2のデータセット1812が第1のデータセット1811のオーバーレイであることを示す。
データストアの中にデータを記憶するために、同じく様々な方策(たとえば、方法、装置、システム、コンピュータプログラム、およびコンピュータ可読媒体)が提供される。データストアは、第1のデータセット1811および第2のデータセット1812を備える。第1のデータセット1811および/または第2のデータセット1812の中のデータ項目に関連してデータが記憶される。第1のデータセット1811のオーバーレイとして第2のデータセット1812が適用される。オーバーレイメタデータが記憶される。オーバーレイメタデータは、第2のデータセット1812が第1のデータセット1811のオーバーレイであることを示す。
そのような方策は、データストアの中のデータ項目を探索することまたは取り出すことを容易にするためにオーバーレイおよびオーバーレイメタデータを使用し、ここで、データ項目は、第1のデータセット1811および第2のデータセット1812のうちの一方または両方の中にあってよい。第1のデータセット1811および第2のデータセット1812は、それらのデータが単一のデータセットにマージされていないという点で別個のデータセットであるが、それらはオーバーレイメタデータを介して関連する。第1のデータセット1811と第2のデータセット1812との混合物は、このようにして、第1のデータセット1811および第2のデータセット1812がマージされていることなく、第1のデータセット1811および第2のデータセット1812のうちの一方または両方から有効データが識別されるとともに戻されることを可能にする。したがって、オーバーレイメタデータは、探索動作がデータストアの中でどのように実行されるのかを制御するデータ構造である。
そのような方策は、異なる(潜在的に極めて大きい)データセットがマージされる間に遅延させられる必要がある照会応答と比較して、異なる(潜在的に極めて大きい)データセットからのデータを使用して応答が構築されることを可能にすることによって照会応答時間を改善することがある。
そのような方策は、探索されるべきデータ項目に基づく構造化された照会を実行する。そのような照会は、探索されるべきデータ項目を備えてよくまたはさもなければ識別してよい。データ項目は、データストアから取り出されるべきデータを固有に識別してよい。
そのような方策は特に、限定はしないが本明細書で説明する他の特徴と組み合わせて、メモリ読取り動作を低減することに関して改善された計算効率をもたらしてよく、改善されたセキュリティをもたらしてよく、改善されたスケーラビリティをもたらしてよく、改善されたスループットをもたらしてよく、かつ/または改善されたデータ保持をもたらしてよい。
第1のデータセット1811および第2のデータセット1812は、異なる技術的特性を有してよい。たとえば、第1のデータセット1811がルートデータセットであってよく、第2のデータセット1812が非ルートデータセットであってよい。そのような例では、データは、第1のデータセット1811に書き込まれてよく、かつ第1のデータセット1811から読み取られてよいが、第2のデータセット1812からはデータが読み取られ得るにすぎない。
例によれば、ライブデータは、テストデータなどの他のデータとは別個に記憶されてよい。単一のコピー動作の中でライブデータにわたってテストデータがコピーされる必要なく、テストデータはオーバーレイとしてライブデータに適用されてよい。リアルタイムトランザクション処理の場合には、コピーすることに関連する休止時間を伴わずに、適切な場合にテストデータが並行して作成および適用され得る間、トランザクション処理はライブデータに基づいて継続してよい。ライブデータおよびテストデータは、たとえば、テストデータがオーバーレイとして適用されるまで、独立して作成されることおよび書き込まれることが可能である。
例によれば、コピーオンライト履歴スナップショットが提供されてよい。古い状態から子状態が作成され得る。それらが利用可能であることを想定して、異なる機械学習構成を用いてイベントが再度行われ得る。何が起きたのかと比較して、変更が有していたことになる影響が、次に見られ得る。それらの変更は、すべてのデータを再び成熟させ直す必要なく、現在のライブシステムにマージされ得る。
いくつかの例では、探索中のデータ項目は、リアルタイム異常検出がそれに関して実行中であるエンティティに関連付けられる。上記で説明したように、本明細書で提供する方策は、照会応答時間を短縮することができ、そのことは、リアルタイム異常検出のコンテキストにおいて特に有効であり得る。
いくつかの例では、データストアの中のデータは、機械学習モデル用のパラメータデータおよび/または状態データを備える。
いくつかの例では、第2のデータが戻される場合、第2のデータは、第1のデータセット1811の中のデータ項目に関連して記憶される。データを求める探索は、最初に第1のデータセット1811の中で開始してよい。そのような場合、データ項目を求める将来の探索において、第2のデータが第1のデータセット1811から取り出されてよい。このことは、第2のデータセット1812からデータを読み取るための追加の読取り動作が必要とされなくてよいので、データ項目を求めて第1のデータセット1811と第2のデータセット1812の両方を探索することと比較して探索時間および応答時間を短縮することができる。
いくつかの例では、第1のデータが第1のデータセット1811の中のデータ項目に関連して記憶されることに加えて、第2のデータが第1のデータセット1811の中のデータ項目に関連して記憶される。そのような例は、第1のデータが第2のデータによって上書きされることとは対照的に、第1のデータの選択的な保持を可能にする。このことは、機械学習モデルデータがライブデータセット(たとえば、第1のデータセット1811)の中で使用され得るとともに、機械学習モデルデータがテストデータセット(たとえば、第2のデータセット1812)の中でテストされ得るので、データが機械学習モデルデータを備える例において特に有効であり得、ライブデータセットの中の有効な機械学習モデルデータが選択的に保持されてよいが、テスト設定の中で有効であると見いだされる、テストデータセットの中の機械学習モデルデータが、ライブ設定の中で機械学習モデルデータと組み合わせて適用されてよい。
いくつかの例では、タイムスタンプデータがデータストアの中に記憶される。タイムスタンプデータは、いつ第2のデータが第1のデータセット1811の中のデータ項目に関連して記憶されたのかを示してよい。タイムスタンプデータは、データ項目を将来探索することが、第1のデータセット1811に加えて他のデータセットを含めるべきかどうかを示してよい。たとえば、任意のオーバーレイデータセットが第1のデータセット1811に適用された後に第2のデータが第1のデータセット1811の中のデータ項目に関連して記憶されたことを、タイムスタンプデータが示す場合、データ項目を将来探索することは、任意のそのような他のオーバーレイデータセットを含める必要がなくてよい。このことは、今度は、照会応答時間を短縮することができ、データ項目に関連付けられた有効データを戻すことに関与する、読取り動作の数を減らすことができる。
いくつかの例では、第2のデータセット1812はさらなるデータを備える。さらなるデータは、第2のデータ項目が第1のデータセット1811の中のデータ項目に関連して記憶されることと並行して第1のデータセット1811の中に記憶されない場合がある。第2のデータセット1812の中のすべてのデータが並行して第1のデータセット1811の中にコピーされることになる技法とは対照的に、そのような例は、必要に応じてデータがデータセット1811の中に記憶されることを可能にする。
いくつかのそのような例では、さらなるデータは、第2のセット1812の中のデータ項目に関連して記憶される。オーバーレイデータ要素選択メタデータは、第2のデータが第1のデータセット1811の中のデータ項目に関連して記憶されるべきであること、およびさらなるデータが第1のデータセット1811の中のデータ項目に関連して記憶されるべきでないことを示してよい。オーバーレイデータ要素選択データに基づいて、さらなるデータは、第1のデータセット1811の中のデータ項目に関連して記憶されることを抑止されてよい。そのような例が、データ要素レベルにおいて第1のデータセット1811の中に構築されることになる有効データの、厳密に定義された信頼できる表示を提供する。
そのような他の例では、さらなるデータは、第2のデータセット1812の中のさらなるデータ項目に関連して記憶される。再び、第2のデータセット1812の中のすべてのデータが並行して第1のデータセット1811の中にコピーされることになる技法とは対照的に、そのような例は、データ項目レベルにおいて必要に応じてデータがデータセット1811の中に記憶されることを可能にする。
いくつかの例では、第1のデータセット1811は子データセットである。データストアは、第3のデータセット1813をさらに備えてよい。第3のデータセット1813は、第1のデータセット1811の親であってよい。そのような例は、時間的なデータの分離を可能にする。たとえば、第3の(親)データセット1813は履歴データを備えてよいが、第1の(子)データセット1811は、もっと新しい、たとえば、現在のデータを備えてよい。
いくつかの例では、第1のデータセット1811は、第3のデータセット1813の中に備えられないデータを潜在的に備える。したがって、第3の(親)データセット1813は履歴データを備えてよいが、第1の(子)データセット1811は、履歴データの中にない、もっと新しい、たとえば、現在のデータを備えてよい。このことは、子データセットが親データセットのデータのサブセットを備える他のデータストア構成とは異なる。
いくつかの例では、前記探索することが第1のデータセット1811の中でデータ項目を発見しないことに応答して、第3のデータセット1813の中でデータ項目が探索される。第3のデータセット1813は、親メタデータを使用して識別されてよい。親メタデータは、第3のデータセット1813が第1のデータセット1811の親であることを示してよい。親メタデータは、第3のデータセット1813の中の潜在的に大量のデータが第1のデータセット1811の中にコピーされていることなく、第3のデータセット1813が探索されることを可能にする。
いくつかの例では、データストアは、第3のデータセット1813のオーバーレイであるデータセット1814をさらに備える。データ項目は、第3のデータセット1813のオーバーレイであるデータセット1814の中で探索されてよい。このことは、たとえば、異なるテストデータセットからの特に有効なデータが選択的に適用されて、複数の異なるテストデータセットがオーバーレイとして第1のデータセット1811に適用され得るという点で、システムにおける確度を改善することができる
図18に示すような、いくつかの例では、第3のデータセット1813はまた、第2のデータセット1812の親である。したがって、潜在的に発散する複数の異なるデータセットが、共通の親データセットから導出されることが可能であり、それらを共有することができる。
図18に示さない他の例では、第3のデータセット1813は第2のデータセット1812の親でない。したがって、たとえば、データ成熟のために、独立したデータセットが使用され得る。図18に示す第5のデータセット1815は、共通の親を第1のデータセット1811と共有しない第1のデータセット1811のオーバーレイの一例である。
いくつかの例では、第3のデータセット1813は、第1のデータセット1811および/または第2のデータセット1812の作成時に不変になった。したがって、データの履歴レコードが維持され得る。
いくつかの例では、第2のデータセット1812は、第1のデータセット1811のオーバーレイになるときに不変になった。追加として、新たなデータ書込みは、ライブデータセットに限定されてよい。
いくつかの例では、データストアの中の所与のデータセットに対してクリーンアップ動作が実行される。クリーンアップ動作は、別のデータセットからのデータを所与のデータセットの中に書き込ませることを備えてよい。クリーンアップ動作は、その別のデータセットと所与のデータセットとの間のリンクを示すメタデータを除去させることを備えてよい。クリーンアップ動作は、他のデータセットをデータストアから除去させることを備えてよい。そのような例は、肯定的または否定的な探索結果を戻すための読取り動作の数を減らすことによって、探索照会時間を短縮することができる。
いくつかの例では、第1のデータセット1811は、第1のデータセット1811の作成時に空であった。いくつかの例では、第2のデータセット1812は、第2のデータセット1812の作成時に空であった。第1のデータセット1811および/または第2のデータセット1812が別のデータセットの子である例では、第1のデータセット1811および/または第2のデータセット1812とその親データセットとの混合物が、親データセットの(潜在的に履歴的な)データへのアクセスを依然として効果的に提供して、第1のデータセット1811および/または第2のデータセット1812は、空のセットとして迅速に作成され得る。
いくつかの例では、データストアは、第2のデータセット1812が第1のデータセット1811のオーバーレイになる前に、第1のデータセット1811のオーバーレイになった、データセット1815をさらに備える。第2のデータセット1812が第1のデータセット1811のオーバーレイになる前に、第1のデータセット1811のオーバーレイになった、データセット1815の中のデータ項目に関連して記憶されたデータを戻すことに優先して、第2のデータが戻されてよい。したがって、直近に更新されたデータが使用されてよい。
いくつかの例では、データストアは、第2のデータセット1812のオーバーレイであるデータセット1816をさらに備える。データ項目は、第2のデータセット1812のオーバーレイであるデータセット1816の中で探索されてよい。したがって、再帰的なオーバーレイが探索されてよい。
いくつかの例では、データ項目が第1のデータセット1811の中で発見されない場合、かつデータ項目が第2のデータセット1812の中で発見される場合、前記戻すことは、第2のデータセット1812の中のデータ項目に関連して記憶された第2のデータを戻すことを備える。したがって、オーバーレイが、ライブデータセットの中に存在しなかったデータ項目を追加する場合、たとえば、データ項目がオーバーレイの中にしか存在せず第1のデータセット1811の中に存在しない場合、処理が実行されてよい。
いくつかの例では、データストアの中に記憶された所与のデータに関連付けられた削除マーカーが識別される。所与のデータを戻すことは、削除マーカーに基づいて抑止されてよい。したがって、データが削除されると見なされるための効果的な技法が提供され得るが、そのようなデータは、依然として他の目的のためにデータストアとともに保持され得る。
データベースの中で機械学習モデルデータを探索するために、同じく様々な方策(たとえば、方法、装置、システム、コンピュータプログラム、およびコンピュータ可読媒体)が提供される。データベースは、ライブ状態1811およびオーバーレイ状態1812を備える。ライブ状態1811および/またはオーバーレイ状態1812の中でキーが探索される。キーは、リアルタイム異常検出がそれに関して実行中である1つまたは複数のエンティティに関連付けられる。前記探索することがキーを発見することに応答して、キーに関連して記憶された機械学習モデルデータが戻される。機械学習モデルデータは、前記リアルタイム異常検出を実行するために使用されるべき機械学習モデル用のパラメータデータおよび/または状態データを備える。キーがライブ状態1811の中で発見される場合、かつオーバーレイ状態1812がライブ状態1811のオーバーレイになった後にキーがライブ状態1811の中で更新された場合、前記戻すことは、ライブ状態1811の中のキーに関連して記憶された第1の機械学習モデルデータを戻すことを備える。キーがライブ状態1811およびオーバーレイ状態1812の中で発見される場合、かつキーがライブ状態1811の中で更新された後にオーバーレイ状態1812がライブ状態1811のオーバーレイになった場合、前記戻すことは、オーバーレイ状態1812の中のキーに関連して記憶された第2の機械学習モデルデータを戻すことを備える。オーバーレイメタデータに基づいてオーバーレイ状態1812が識別される。オーバーレイメタデータは、オーバーレイ状態1812がライブ状態1811のオーバーレイであることを示す。
上記で説明した例では、データ項目を求めてルートデータセットが探索され、データ項目がルートデータセットの中で発見されない場合(のみ)、別のデータセットが、次いで、メタデータを使用して識別され、データ項目を求めて探索される。そのような例では、他のデータセットは、それが探索されるべきである場合にしか読み取られない。他の例では、ルートデータセットおよび他のデータセットが、データ項目を求めて他のデータセットが探索される必要があるかどうかが決定される前に読み取られる。
本明細書で説明するいくつかの例は、非一時的コンピュータ可読媒体などのコンピュータ可読記憶媒体内に記憶されている命令を介して実施されてよい。コンピュータ可読媒体は、回転磁気ディスク、回転光ディスク、フラッシュランダムアクセスメモリ(RAM)チップ、および他の機械的に動く記憶媒体またはソリッドステート記憶媒体のうちの1つまたは複数を備えてよい。使用時に、命令は、上記で説明した動作をプロセッサに実行させるために、前記プロセッサのうちの1つまたは複数によって実行される。上記の実施形態、変形形態、および例は、例示的として理解されるべきである。さらなる実施形態、変形形態、および例が想定される。各例のいくつかの構成要素が別個に説明されているが、ある例を参照しながら説明する機能性が別の例において好適に実施されてよいこと、および実装形態に応じていくつかの構成要素が省略されてよいことを理解されたい。任意の一例に関して説明される任意の特徴が、単独で、または説明される他の特徴と組み合わせて使用されてよく、同じく例のうちのいずれか他のものの1つもしくは複数の特徴と組み合わせて、または例のうちのいずれか他のものの任意の組合せで使用されてもよいことを理解されたい。たとえば、システム構成要素に関して説明した特徴はまた、説明した方法の一部として実行されるように適合されてよい。さらに、上記で説明されない均等物および修正形態も、添付の請求項の中で定義される本発明の範囲から逸脱することなく、採用されてよい。