特許第6890721号(P6890721)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アルテリックス インコーポレイテッドの特許一覧

<>
  • 特許6890721-連続するデータブロックの非同期処理 図000002
  • 特許6890721-連続するデータブロックの非同期処理 図000003
  • 特許6890721-連続するデータブロックの非同期処理 図000004
  • 特許6890721-連続するデータブロックの非同期処理 図000005
  • 特許6890721-連続するデータブロックの非同期処理 図000006
  • 特許6890721-連続するデータブロックの非同期処理 図000007
  • 特許6890721-連続するデータブロックの非同期処理 図000008
  • 特許6890721-連続するデータブロックの非同期処理 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6890721
(24)【登録日】2021年5月27日
(45)【発行日】2021年6月18日
(54)【発明の名称】連続するデータブロックの非同期処理
(51)【国際特許分類】
   G06F 9/30 20180101AFI20210607BHJP
   G06F 13/12 20060101ALI20210607BHJP
   G06F 13/28 20060101ALI20210607BHJP
   G06F 13/38 20060101ALI20210607BHJP
【FI】
   G06F9/30 390
   G06F13/12 330D
   G06F13/28 310E
   G06F13/38 310B
【請求項の数】20
【全頁数】21
(21)【出願番号】特願2020-520647(P2020-520647)
(86)(22)【出願日】2018年10月15日
(65)【公表番号】特表2020-537261(P2020-537261A)
(43)【公表日】2020年12月17日
(86)【国際出願番号】US2018055898
(87)【国際公開番号】WO2019079190
(87)【国際公開日】20190425
【審査請求日】2020年4月10日
(31)【優先権主張番号】15/785,357
(32)【優先日】2017年10月16日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】519405569
【氏名又は名称】アルテリックス インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】エドワード ピー.ハーディング ジュニア
(72)【発明者】
【氏名】アダム ディー.ライリー
(72)【発明者】
【氏名】クリストファー エイチ.キングズリー
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 特開平06−187100(JP,A)
【文献】 特開2001−014139(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30
G06F 13/12
G06F 13/28
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
データ解析システムでデータブロックを処理するコンピュータで実施する方法であって、
複数の連続するデータブロックをブロックキャッシュに格納することであって、各データブロックは、1つ以上のデータレコードを含み、各データレコードは、1つ以上の値および前記データレコードの終わりをマークするレコードマーカーを含む、ことと、
前記ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることと、
前記ワーカースレッドによって前記データブロックを分析して、前記データブロック内に含まれている前記1つ以上のデータレコードを識別することと、
前記データブロックが正しく分析されたかどうかを決定することであって、
前記データブロック内の真の最初のレコードマーカーロケーションを決定すること、
推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致するかどうかを決定すること、および
前記推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致することに応答して、前記データブロックが正しく分析されたと決定すること
によって、決定することと、
前記データブロックが正しく分析されたとの決定に応じて、前記データブロック内に含まれている前記1つ以上のデータレコードを、前記データ解析システムで実行されているデータ解析ワークフローに提供することと
を含む、方法。
【請求項2】
前記複数の連続するデータブロックを前記ブロックキャッシュに格納することは、
複数の入出力(I/O)要求をデータソースに発行することであって、前記複数のI/O要求は複数の連続して順序付けされたデータブロックを要求する、ことと、
前記複数のI/O要求に応答して、前記データソースから前記複数の連続して順序付けされたデータブロックを受信することであって、前記複数の連続して順序付けされたデータブロックは、当該データブロックの連続した順序と異なる順序で、前記データソースから受信される、ことと、
前記受信した複数の連続して順序付けされたデータブロックを前記ブロックキャッシュに格納することと
を含む、請求項1に記載の方法。
【請求項3】
前記複数の連続して順序付けされたデータブロックは、前記データブロックの前記連続した順序に応じて決定された前記ブロックキャッシュ内のロケーションに格納される、請求項2に記載の方法。
【請求項4】
複数のワーカースレッドがあり、前記ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることは、
複数のデータブロックを複数のワーカースレッドに割り当てることであって、前記複数のワーカースレッドは、前記割り当てられた複数のデータブロックを同時に分析するように適合されている、こと
を含む、請求項1に記載の方法。
【請求項5】
前記ワーカースレッドによって前記データブロックを分析して、前記データブロック内に含まれている前記1つ以上のデータレコードを識別することは、
前記データブロックをスキャンして前記データブロック内の最初のレコードマーカーロケーションを識別することと、
前記最初のレコードマーカーロケーションの後に位置する前記データブロック内のデータレコードを分析することと、
前記ワーカースレッドにより、次の連続するデータブロック内の最初のレコードマーカーロケーションの前に出現する当該次の連続するデータブロック中のデータレコードを分析すること
を含む、請求項1に記載の方法。
【請求項6】
記データブロックの前記推定された最初のレコードマーカーロケーションは前記データブロックを分析する前記ワーカースレッドによって見出され、前記データブロック内の前記真の最初のレコードマーカーロケーションは他のワーカースレッドにより見出される、請求項1に記載の方法。
【請求項7】
前記推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致しないことに応答して、前記データブロックが正しく分析されなかったと決定することと、
前記データブロックが正しく分析されなかったと決定することに応じて、前記データブロック内の前記真の最初のレコードマーカーロケーションを使用して前記データブロックを再分析することと
さらに含む、請求項1に記載の方法。
【請求項8】
データブロックを処理するためのコンピュータ実装されたデータ解析システムであって、
コンピュータプログラム命令を実行するためのコンピュータプロセッサと、
非一時的コンピュータ可読メモリであって、
複数の連続するデータブロックをブロックキャッシュに格納することであって、各データブロックは、1つ以上のデータレコードを含み、各データレコードは、1つ以上の値および前記データレコードの終わりをマークするレコードマーカーを含む、ことと、
前記ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることと、
前記ワーカースレッドによって前記データブロックを分析して、前記データブロック内に含まれている前記1つ以上のデータレコードを識別することと、
前記データブロックが正しく分析されたかどうかを決定することであって、
前記データブロック内の真の最初のレコードマーカーロケーションを決定すること、
推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致するかどうかを決定すること、および
前記推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致することに応答して、前記データブロックが正しく分析されたと決定すること
によって、決定することと、
前記データブロックが正しく分析されたとの決定に応じて、前記データブロック内に含まれている前記1つ以上のデータレコードを、前記データ解析システムで実行されているデータ解析ワークフローに提供することと
を含む動作を実行するために前記コンピュータプロセッサによって実行可能なコンピュータプログラム命令を格納する、非一時的コンピュータ可読メモリと
を備えた、システム。
【請求項9】
前記複数の連続するデータブロックを前記ブロックキャッシュに格納することは、
複数の入出力(I/O)要求をデータソースに発行することであって、前記複数のI/O要求は複数の連続して順序付けされたデータブロックを要求する、ことと、
前記複数のI/O要求に応答して、前記データソースから前記複数の連続して順序付けされたデータブロックを受信することであって、前記複数の連続して順序付けされたデータブロックは、当該データブロックの連続した順序と異なる順序で、前記データソースから受信される、ことと、
前記受信した複数の連続して順序付けされたデータブロックを前記ブロックキャッシュに格納することと
を含む、請求項8に記載のシステム。
【請求項10】
前記複数の連続して順序付けされたデータブロックは、前記データブロックの前記連続した順序に応じて決定された前記ブロックキャッシュ内のロケーションに格納される、請求項9に記載のシステム。
【請求項11】
複数のワーカースレッドがあり、前記ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることは、
複数のデータブロックを複数のワーカースレッドに割り当てることであって、前記複数のワーカースレッドは、前記割り当てられた複数のデータブロックを同時に分析するように適合されている、こと
を含む、請求項8に記載のシステム。
【請求項12】
前記ワーカースレッドによって前記データブロックを分析して、前記データブロック内に含まれている前記1つ以上のデータレコードを識別することは、
前記データブロックをスキャンして前記データブロック内の最初のレコードマーカーロケーションを識別することと、
前記最初のレコードマーカーロケーションの後に位置する前記データブロック内のデータレコードを分析することと、
前記ワーカースレッドにより、次の連続するデータブロック内の最初のレコードマーカーロケーションの前に出現する当該次の連続するデータブロック中のデータレコードを分析すること
を含む、請求項8に記載のシステム。
【請求項13】
記データブロックの前記推定された最初のレコードマーカーロケーションは前記データブロックを分析する前記ワーカースレッドによって見出され、前記データブロック内の前記真の最初のレコードマーカーロケーションは他のワーカースレッドにより見出される請求項8に記載のシステム。
【請求項14】
前記推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致しないことに応答して、前記データブロックが正しく分析されなかったと決定することと、
前記データブロックが正しく分析されなかったと決定することに応じて、前記データブロック内の前記真の最初のレコードマーカーロケーションを使用して前記データブロックを再分析することと
さらに含む、請求項8に記載のシステム。
【請求項15】
データ解析システム内でデータブロックを処理するために実行可能なコンピュータプログラム命令を格納する非一時的コンピュータ可読メモリであって、前記命令は、
複数の連続するデータブロックをブロックキャッシュに格納することであって、各データブロックは、1つ以上のデータレコードを含み、各データレコードは、1つ以上の値および前記データレコードの終わりをマークするレコードマーカーを含む、ことと、
前記ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることと、
前記ワーカースレッドによって前記データブロックを分析して、前記データブロック内に含まれている前記1つ以上のデータレコードを識別することと、
前記データブロックが正しく分析されたかどうかを決定することであって、
前記データブロック内の真の最初のレコードマーカーロケーションを決定すること、
推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致するかどうかを決定すること、および
前記推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致することに応答して、前記データブロックが正しく分析されたと決定すること
によって、決定することと、
前記データブロックが正しく分析されたとの決定に応じて、前記データブロック内に含まれている前記1つ以上のデータレコードを、前記データ解析システムで実行されているデータ解析ワークフローに提供することと
を含む動作を実行するために実行可能である、非一時的コンピュータ可読メモリ。
【請求項16】
前記複数の連続するデータブロックを前記ブロックキャッシュに格納することは、
複数の入出力(I/O)要求をデータソースに発行することであって、前記複数のI/O要求は複数の連続して順序付けされたデータブロックを要求する、ことと、
前記複数のI/O要求に応答して、前記データソースから前記複数の連続して順序付けされたデータブロックを受信することであって、前記複数の連続して順序付けされたデータブロックは、当該データブロックの連続した順序と異なる順序で、前記データソースから受信される、ことと、
前記受信した複数の連続して順序付けされたデータブロックを前記ブロックキャッシュに格納することと
を含む、請求項15に記載の非一時的コンピュータ可読メモリ。
【請求項17】
複数のワーカースレッドがあり、前記ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることは、
複数のデータブロックを複数のワーカースレッドに割り当てることであって、前記複数のワーカースレッドは、前記割り当てられた複数のデータブロックを同時に分析するように適合されている、こと
を含む、請求項15に記載の非一時的コンピュータ可読メモリ。
【請求項18】
前記ワーカースレッドによって前記データブロックを分析して、前記データブロック内に含まれている前記1つ以上のデータレコードを識別することは、
前記データブロックをスキャンして前記データブロック内の最初のレコードマーカーロケーションを識別することと、
前記最初のレコードマーカーロケーションの後に位置する前記データブロック内のデータレコードを分析することと、
前記ワーカースレッドにより、次の連続するデータブロック内の最初のレコードマーカーロケーションの前に出現する当該次の連続するデータブロック中のデータレコードを分析すること
を含む、請求項15に記載の非一時的コンピュータ可読メモリ。
【請求項19】
記データブロックの前記推定された最初のレコードマーカーロケーションは前記データブロックを分析する前記ワーカースレッドによって見出され、前記データブロック内の前記真の最初のレコードマーカーロケーションは他のワーカースレッドにより見出される、請求項15に記載の非一時的コンピュータ可読メモリ。
【請求項20】
前記推定された最初のレコードマーカーロケーションが前記真の最初のレコードマーカーロケーションと一致しないことに応答して、前記データブロックが正しく分析されなかったと決定することと、
前記データブロックが正しく分析されなかったと決定することに応じて、前記データブロック内の前記真の最初のレコードマーカーロケーションを使用して前記データブロックを再分析することと
さらに含む、請求項15に記載の非一時的コンピュータ可読メモリ。
【発明の詳細な説明】
【技術分野】
【0001】
説明される実施形態は、一般に、コンピュータシステムでのデータを処理することに関し、特に、ストレージデバイスから取り出されたデータのブロックを非同期に処理することに関する。
【背景技術】
【0002】
データ解析は、大きなデータセットからビジネス価値のある情報を取り出すことを含む。たとえば、小規模企業は、専用のコンピューティングおよび人的資源を使用するサードパーティのデータ解析環境を利用して、外部データプロバイダー、内部データソース(ローカルコンピュータのファイルなど)、ビッグデータストア、クラウドベースのデータ(ソーシャルメディア情報など)のような、様々なデータソースからの膨大な量のデータを、収集、処理、および解析する。データ解析で使用されるこのような大きなデータセットを、有用な定量的および定性的情報を抽出する方法で処理することは、典型的に、強力なコンピューティングプラットフォームに実装された複雑なソフトウェアツールが必要である。
【0003】
さらに、異なるデータソースからのデータの大量のセットにアクセスし、処理し、解析するにために、効率的なデータ処理技術が必要とされる。さもないと、パフォーマンスのボトルネックが発生し、データ解析プラットフォームの機能を妨げ、データの処理を遅延させ、データから抽出される情報の品質を低下させる可能性が生じる場合がある。たとえば、データ解析システムへの入力のためにデータレコードが処理されるスループットは、重要な考慮事項である。データレコードがゆっくり処理される場合、データレコードを消費するデータ解析プラットフォームの部分がレコードを待機する必要があり、プラットフォームを通じて遅延が発生し得る。
【発明の概要】
【0004】
上記およびその他の問題は、データ解析システムでデータブロックを処理するための方法、コンピュータ実装のデータ解析システム、およびコンピュータ読み取り可能なメモリによって対処される。本方法の一実施形態は、複数の連続するデータブロックをブロックキャッシュに格納することを含む。各データブロックは、1つ以上のデータレコードを含む。各データレコードは、1つ以上の値、およびデータレコードの終わりをマークするレコードマーカーを含む。この方法は、ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることをさらに含む。この方法は、ワーカースレッドによってデータブロックを分析(parse)して、データブロック内に含まれている1つ以上のデータレコードを識別することをさらに含む。この方法は、データブロックが正しく分析されたかどうかを決定することをさらに含む。この方法は、データブロックが正しく分析されたとの決定に応じて、データブロック内に含まれている1つ以上のデータレコードを、データ解析システムで実行されているデータ解析ワークフローに提供することも含む。
【0005】
コンピュータ実装されたデータ解析システムの一実施形態は、コンピュータプログラム命令を実行するためのコンピュータプロセッサを含む。このシステムは、操作を実行するコンピュータプロセッサによって実行可能なコンピュータプログラム命令を格納する非一時的なコンピュータ可読メモリも含む。操作は、ブロックキャッシュに複数の連続するデータブロックを格納することを含む。各データブロックは、1つ以上のデータレコードを含む。各データレコードは、1つ以上の値、およびデータレコードの終わりをマークするレコードマーカーを含む。操作は、ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることをさらに含む。この操作は、ワーカースレッドによってデータブロックを分析して、データブロック内に含まれている1つ以上のデータレコードを識別することをさらに含む。この操作は、データブロックが正しく分析されたかどうかを決定することをさらに含む。この操作は、データブロックが正しく分析されたとの決定に応じて、データブロック内に含まれている1つ以上のデータレコードを、データ解析システムで実行するデータ解析ワークフローに提供することも含む。
【0006】
非一時的なコンピュータ可読メモリの実施形態は、実行可能なコンピュータプログラム命令を格納する。この命令は、操作を実行するために実行可能である。操作は、ブロックキャッシュに複数の連続するデータブロックを格納することを含む。各データブロックは、1つ以上のデータレコードを含む。各データレコードは、1つ以上の値、およびデータレコードの終わりをマークするレコードマーカーを含む。この操作は、ブロックキャッシュ内のデータブロックをワーカースレッドに割り当てることをさらに含む。この操作は、ワーカースレッドによってデータブロックを分析して、データブロック内に含まれている1つ以上のデータレコードを識別することをさらに含む。この操作は、データブロックが正しく分析されたかどうかを決定することをさらに含む。この操作は、データブロックが正しく分析されたとの決定に応じて、データブロック内に含まれている1つ以上のデータレコードを、データ解析システムで実行するデータ解析ワークフローに提供することも含む。
【図面の簡単な説明】
【0007】
図1図1は、一実施形態によるデータ解析システムを含むデータ解析環境を示すブロック図である。
図2図2は、一実施形態による、データを処理するデータ解析システムを使用して作成されたワークフローを示すブロック図である。
図3図3は、実施形態による図1のデータ解析システムとして使用するための典型的なコンピュータシステムの機能図を示すハイレベルブロック図である。
図4図4は、一実施形態によるデータ解析システムのデータ解析アプリケーションのより詳細な図を示すブロック図である。
図5図5は、一実施形態によるデータ解析アプリケーションのデータ受信モジュールのより詳細な図を示すブロック図である。
図6図6は、データブロックとデータレコードとの間の例示的な関係を示す図である。
図7図7は、一実施形態による、データソースから受信したデータブロックを処理する方法を示すフローチャートである。
図8図8は、一実施形態によるデータブロックを分析する方法を示すフローチャートである。
【0008】
図面は、例示のみを目的としてさまざまな実施形態を示す。当業者は、本明細書に例示された構造および方法の代替的実施形態が、本明細書に記載の本発明原理から逸脱することなく利用することができることを以下の説明から容易に認識する。種々の図面における同様の参照記号および表示は、同様の要素を指す。
【発明を実施するための形態】
【0009】
図1は、一実施形態によるデータ解析システム110を含むデータ解析環境100を示すブロック図である。環境100は、ネットワーク130を介してデータ解析システム110に接続された複数のデータソース120をさらに含む。例示された環境100は、複数のデータソース120に結合された1つのデータ解析システム110のみを含むが、実施形態は、複数のデータ解析システムおよび単一のデータソースを有することができる。
【0010】
上述のように、データソース120は、電子データをデータ解析システム110に提供する。データソース120は、ハードディスクドライブ(HDD)またはソリッドステートドライブ(SSD)などのストレージデバイス、複数のストレージデバイスへのアクセスを管理および提供するコンピュータ、ストレージエリアネットワーク(SAN)、データベース、またはクラウドストレージシステムであり得る。データソース120は、別のソースからデータを取り出すことができるコンピュータシステムであってもよい。データソース120は、データ解析システム110から離れていてもよく、ネットワーク130を介してデータを提供してもよい。さらに、データソース120の一部またはすべてはデータ解析システムに直接結合され、ネットワーク130を介してデータを渡すことなく、データを提供してもよい。
【0011】
データソース120によって提供されるデータは典型的に、データレコードに編成され、各データレコードは1つ以上の値を含む。たとえば、データソース120によって提供されるデータレコードは、一連のコンマ区切りされた値を含む場合がある。データは、データ解析システム100を使用する企業に関連する情報を記述する。例えば、データソース120からのデータは、ウェブサイト上でアクセス可能なコンテンツおよび/またはソーシャルメディアアプリケーションとのコンピュータベースの相互作用(例えば、クリック追跡データ)を記述することができる。
【0012】
データ解析システム110は、大量のデータを処理および解析するために利用されるコンピュータベースのシステムである。データは、ネットワーク130を介して複数のデータソース120から回収(collect)、収集(gather)、またはアクセスされる。データ解析システム110は、多種多様なデータソースからのデータにアクセスし、準備し、混合し、解析する際に使用されるスケーラブルなソフトウェアツールおよびハードウェアリソースを実装することができる。例えば、データ解析システム110は、データ集約型のプロセスとワークフローの実行をサポートする。データ解析システム110は、本明細書で説明される非同期データ処理技術を含むデータ解析機能を実装するために使用されるコンピューティングデバイスとすることができる。
【0013】
データ解析システム110は、データ解析アプリケーション140として図1に示される1つ以上のソフトウェアアプリケーションをサポートするように構成することもできる。データ解析アプリケーション140は、1つ以上のデータソース120から取得した大量のデータを処理および解析する。場合によっては、データ解析アプリケーション140は、複数のエンドユーザにネットワークまたはクラウドベースのデータ解析ツールおよびマクロへのアクセスをサポートするソフトウェアを提供する。一例として、データ解析アプリケーション140は、ユーザが、モバイルアプリケーションストアまたは他のクラウドベースのサービスと同様の方法で、解析を共有、閲覧、および消費することを可能にする。解析データ、マクロ、およびワークフローは、たとえば、データ解析システム110の他のユーザがアクセスできる、小規模でカスタマイズ可能な解析アプリケーション(つまり、アプリ)としてパッケージ化されて実行されることができる。場合によっては、公開された解析アプリへのアクセスは、データ解析システム110によって管理されることができる。つまり、アクセスを許可することまたは取り消すことにより、アクセス制御およびセキュリティ機能を提供する。データ解析アプリケーション140は、作成、展開、公開、反復、更新などの解析アプリに関連付けられた機能を実行できる。さらに、データ解析アプリケーション140は、アクセス、準備、ブレンド、解析、および解析結果を出力する機能など、データ解析に関係するさまざまな段階で実行される機能をサポートできる。
【0014】
データ解析アプリケーション140はまた、視覚的グラフィカルユーザーインターフェース(GUI)を介して、反復可能なワークフローを設計および実行するソフトウェアツールをサポートすることができる。一例として、データ解析アプリケーション140に関連付けられたGUIは、データ混合、データ処理、および高度なデータ解析のためのドラッグアンドドロップのワークフロー環境を提供する。さらに、ワークフローには、特定の処理操作またはデータ解析機能を実行する一連のデータ処理ツールを含めることができる。ワークフローの一部である各ツールは、ツールに固有のデータに関連する機能を実行する。例として、ワークフローは、入力/出力操作、準備操作、参加操作、予測的操作、空間的操作、調査操作、ならびに分析および変換(parse and transform)操作のうちの1つ以上を含むさまざまなデータ解析機能を実装するツールを含めることができる。ワークフローの詳細は、図2に関連して説明される。
【0015】
データ解析アプリケーション140は、データソース120からデータのブロックを読み込む。たとえば、データ解析アプリケーション140は、SSDからデータのブロックを読み込み得る。データ解析アプリケーション140は、各データブロックを処理して、そこに含まれるデータレコードを取り出す。これらのデータレコードは、データ解析アプリケーション140によって実装されるデータ解析ワークフローによって処理される。
【0016】
一実施形態では、データ解析アプリケーション140は、データソース120から受信されたデータの複数のブロックを非同期的に処理する。データ解析アプリケーション140は、並行して実行している複数のワーカースレッドを使用して、データブロックを同時に処理し、データレコードを生成する。典型的に各データブロックは複数のデータレコードを含み、しばしばデータレコードの境界はデータブロックの境界と一致しない。したがって、データレコードは2つの隣接するブロックにまたがること場合がある。さらに、スレッドはデータブロックを順不同で処理でき、そして、異なるスレッドが隣接するブロックを処理する場合がある。
【0017】
データ解析アプリケーション140は、特定のデータレコードを推論的に処理し、その後にその処理が正しいことを確認することにより、隣接するブロックにまたがるデータレコードを把握する。推論的処理が正しくない場合、誤って処理されたデータレコードの部分のみを再処理する必要がある。以下でより詳細に説明するこの手法は、データ解析アプリケーション140が、データブロックをデータレコードに処理し、データレコードを高スループットでデータ解析ワークフローに提供することを可能にする。スループットは、他の手法を使用した場合の約0.1GB/秒と比較して、一実施形態では2.0GB/秒である。実際、この技術は典型的に、データソース120がデータブロックを物理的に提供できるレートに等しい持続的なデータ転送をサポートできる。この技法は、データ解析アプリケーション140が、データブロックの処理の遅延によるパフォーマンスペナルティを受けることなく、効率的に動作することを可能にする。
【0018】
ネットワーク130は、データ解析システム110とデータソース120との間の通信経路を表す。一実施形態では、ネットワーク130はインターネットであり、標準の通信技術および/またはプロトコルを使用する。したがって、ネットワーク130は、イーサネット、802.11、WiMAX(worldwide interoperability for microwave accesss)、3G、ロングタームエボリューション(LTE)、デジタル加入者線(DSL)、非同期転送モード(ATM)、InfiniBand、PCI Express Advanced Switchingなどの技術を使用するリンクを含むことができる。同様に、ネットワーク130で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザーデータグラムプロトコル(UDP)、ハイパーテキストトランスポートプロトコル(HTTP)、シンプルメール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)などを含むことができる。
【0019】
ネットワーク130を介して交換されるデータは、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)などを含む技術および/またはフォーマットを使用して表されることができる。さらに、セキュアソケットレイヤー(SSL)、トランスポートレイヤーセキュリティ(TLS)、仮想プライベートネットワーク(VPN)、インターネットプロトコルセキュリティ(IPsec)などの確立された暗号化技術を使用して、すべてまたは一部のリンクが暗号化されることができる。別の実施形態では、エンティティは、上記の技術の代わりに、またはそれに加えて、カスタムおよび/または専用のデータ通信技術を使用することができる。
【0020】
図2は、一実施形態による、データを処理するデータ解析システム110を使用して作成されたワークフロー200を示すブロック図である。一実施形態では、ワークフロー200は、データ解析システム110のGUIによってサポートされる視覚的なワークフロー環境を使用して作成される。視覚的なワークフロー環境は、ワークフローを設計するためのソフトウェアコードを提供する必要をなくす、およびワークフローによって実装される複雑な数式を識別する必要をなくす、ドラッグアンドドロップツールのセットを動作させる。別の実施形態では、ワークフロー200は、拡張マークアップ言語(XML)文書などの文書で作成および記述される。ワークフロー200は、データ解析システム110のコンピュータデバイスによって実行される。しかしながら、他の実施形態では、ワークフロー200は、ネットワーク(例えば、ネットワーク130)を介してデータ解析システム110に通信可能に接続され得る別のコンピュータデバイスに配備される。
【0021】
ワークフローは、特定の処理操作またはデータ解析機能を実行する一連のツールを含むことができる。一般的な例として、ワークフローのツールは、入力/出力操作、準備操作、参加操作、予測的操作、空間的操作、調査操作、ならびに分析および変換操作のうちの、データ解析機能の1つ以上を実行できる。ワークフローの実装は、データ解析プロセスの定義、実行、自動化を含むことができ、データがワークフロー内の各ツールに渡され、各ツールは受信したデータに対してそれぞれの処理操作を実行する。個々のレコードの集約グループを含むパケットは、ワークフローのツールを通して渡されることができ、このことは、個々の処理操作がデータに対してより効率的に動作することを可能にする。このような集約技術は、大量のデータを処理する場合でも、ワークフローの開発と実行の速度を上げることができる。ワークフローは、指定されたツールの操作シーケンスを指定して、反復可能な一連の操作を定義または構造化できる。場合によっては、ワークフローに含まれるツールが線型順序で実行される。別の場合、複数のツールは並行して実行される。
【0022】
図示のように、図2のワークフロー200は、入力ツール205および206、ならびにブラウズツール230として示される入力/出力ツールを含む。入力ツール205および206は、特定のデータソース120からのレコードにアクセスするように機能する。入力ツール205および206は、アクセスされたレコードをワークフローに取り込み、ワークフロー200の後続のツールにレコードを提供する。この例では、入力ツール205はアクセスされたレコードをフィルタツール210に提供し、入力ツール206はアクセスされたレコードを選択ツール211に提供する。ブラウズツール230は、ワークフロー200の最後に位置し、ワークフロー200の上流のツールのそれぞれの実行から生じる出力を受け取る。この例では、ブラウズツール230は、ワークフロー200の最後に配置されているが、ワークフローの任意の点にブラウズツール230が追加され、ワークフローの上流ツールの実行の様々な結果をレビューおよび検証することができる。
【0023】
図2の例を続けると、ワークフロー200は、フィルタツール210、選択ツール211、フォーミュラツール215、およびサンプルツール212として示される準備ツールを含む。フィルタツール210は、式に基づいてレコードをクエリし、式を満たすレコードを含む真のストリームおよび式を満たさないレコードを含む偽のストリームの2つのストリームにデータを分ける。選択ツール211は、フィールドの選択、選択解除、並べ替え、および名前変更、フィールドタイプまたはサイズの変更、ならびに説明の割り当てを行うために使用されることができる。フォーミュラツール215は、多種多様な計算および/または演算を実行する1つ以上の式を使用してフィールドを作成または更新する。サンプルツール212は、受信したレコードのストリームを、レコードの数、割合、またはランダムなセットに限定する。ワークフロー200は、複数のデータソースをブレンドするジョインツール220も含む。具体的には、ジョインツール220は、共通のフィールド(またはレコード位置)に基づいて2つの入力データストリームを組み合わせる。
【0024】
図2のワークフロー200は、さらなる解析で使用されるフォーマットにデータを再構築および再形成することができる分析および変換ツールであるサマライズツール225を含むように示されている。サマライズツール225は、グループ化、合計、カウント、空間処理、および文字列連結によってデータの要約化を実行することもできる。一実施形態では、サマライズツール225によって生成された出力は、計算の結果を含む。
【0025】
いくつかの実施形態では、ワークフロー200の実行は、入力ツール205が、フィルタツール210およびフォーミュラツール215を通じて、すべてのレコードが処理されてジョインツール220に到達するまで、レコードを一度に1つ渡すことを生じさせる。その後、入力ツール206は、選択ツール211およびサンプルツール212を通じて、レコードが同じジョインツール220に渡されるまで、レコードを一度に1つ渡し始める。ワークフロー200のいくつかの個々のツールは、データの最後のブロックを処理しながらデータのブロックの読み込みを開始したり、ソートツールなどのコンピュータ集約的な操作を複数の部分に分割したりするなど、独自の並列操作を実装する機能を持つことができる。ただし、一部の既存のワークフローテクニックでは、レコードのセットからの各レコードは、ワークフローのツールが複数のレコードを必要とする処理操作(たとえば、ソートツール、ジョインツール、サマライズツールなど)に到達するまで、ワークフローの各ツールによってパイプライン方式で一度に1レコードずつ個別に処理される。
【0026】
図3は、実施形態による図1のデータ解析システム110として使用するための典型的なコンピュータシステム300の機能図を示すハイレベルブロック図である。コンピュータシステム300は、図2のワークフローを実装するためにデータ解析アプリケーション140を実行することができる。
【0027】
例示されるコンピュータシステムは、チップセット304に結合された少なくとも1つのプロセッサ302を含む。プロセッサ302は、同じダイ上に複数のプロセッサコアを含むことができる。チップセット 304は、メモリコントローラハブ320および入出力(I/O)コントローラハブ322を含む。メモリ306およびグラフィックスアダプタ312はメモリコントローラハブ320に結合され、ディスプレイ318はグラフィックスアダプタ312に結合される。ストレージデバイス308、キーボード310、ポインティングデバイス314、およびネットワークアダプタ316は、I/Oコントローラハブ322に結合されている。いくつかの別の実施形態では、コンピュータシステム300は、追加のコンポーネント、より少ないコンポーネント、または異なるコンポーネントを有してもよく、コンポーネントは違うように結合されていてもよい。例えば、コンピュータシステム300の実施形態は、ディスプレイおよび/またはキーボードを欠く場合がある。加えて、コンピュータシステム300は、いくつかの実施形態では、ラックマウント型ブレードサーバーとして、またはクラウドサーバーインスタンスとしてインスタンス化されてもよい。
【0028】
メモリ306は、プロセッサ302によって使用される命令およびデータを保持する。いくつかの実施形態では、メモリ360はランダムアクセスメモリである。ストレージデバイス308は、非一時的なコンピュータ可読記憶媒体である。ストレージデバイス308は、HDD、SSD、または他のタイプの非一時的なコンピュータ可読記憶媒体とすることができる。データ解析システム110によって処理および解析されたデータは、メモリ306および/またはストレージデバイス308に格納されることができる。
【0029】
ポインティングデバイス314は、マウス、トラックボール、または他のタイプのポインティングデバイスであり得、キーボード310と組み合わせて使用して、データをコンピュータシステム300に入力する。グラフィックスアダプタ312は、ディスプレイ318上に画像および他の情報を表示する。いくつかの実施形態では、ディスプレイ318は、ユーザ入力および選択を受信するためのタッチスクリーン機能を含む。ネットワークアダプタ316は、コンピュータシステム300をネットワーク130に結合する。
【0030】
コンピュータシステム300は、本明細書で説明される機能を提供するためのコンピュータモジュールを実行するように適合されている。本明細書で使用される「モジュール」という用語は、特定の機能を提供するためのコンピュータプログラム命令およびその他のロジックを指す。モジュールはハードウェア、ファームウェア、および/またはソフトウェアで実装されることができる。モジュールは、1つ以上のプロセスを含むことができ、および/またはプロセスの一部のみによって提供されることができる。モジュールは典型的に、ストレージデバイス308に格納され、メモリ306にロードされ、プロセッサ302によって実行される。
【0031】
図4は、一実施形態によるデータ解析システム110のデータ解析アプリケーション140のより詳細な図を示すブロック図である。データ解析アプリケーション140は、データ受信モジュール410、ツールモジュール420、およびデータ出力モジュール430を含む。当業者は、他の実施形態がここで説明したものとは異なるおよび/または他のコンポーネントを有することができ、機能が異なる方法でコンポーネントの間に分散できることを認識するであろう。
【0032】
データ受信モジュール410は、データソース120からデータを受信する。一実施形態では、データ受信モジュール410は、データソースからデータブロックを受信し、データブロックを分析してデータレコードを生成する。たとえば、データ受信モジュール410は、各データブロックが複数のデータレコードを含み、いくつかのデータレコードが複数のデータブロックにまたがる場合がある、SSDから読み取られたデータブロックを受信し得る。データ受信モジュール410は、データ解析アプリケーション140内の他のモジュールにデータレコードを渡す。
【0033】
ツールモジュール420は、入力/出力操作、準備操作、参加操作、予測的操作、空間的操作、調査操作、ならびに分析および変換操作のうちの1つ以上を含む特定の処理操作またはデータ解析機能を実行するデータ処理ツールのセットを提供する。ツールは、データ受信モジュール410によってデータソース120から受信されたデータレコードを操作する。ツールモジュール420は、図2に関連して説明したワークフロー200に含まれるツールを提供する。
【0034】
データ出力モジュール430は、データ解析アプリケーション140によって実行された処理の結果を出力する。すなわち、データ出力モジュール430は、ワークフロー200の実行によって生成された処理済みデータレコードを受信し、他のシステムおよび/または人間のレビュアーがデータレコードを利用できるようにする。たとえば、データ出力モジュール430は、企業に関連付けられた人間のレビュアーが企業に関連付けられたデータレコードの処理から生じるワークフロー200の出力をレビューできるGUIを提供してもよい。
【0035】
図5は、一実施形態によるデータ解析アプリケーション140のデータ受信モジュール410のより詳細な図を示すブロック図である。データ受信モジュール410は、ファイル読み込みモジュール510、ブロックキャッシュ520、複数のワーカースレッド530、分析状態キャッシュ540、および報告モジュール550を含む。当業者は、他の実施形態がここで説明したものとは異なるおよび/または他のコンポーネントを有することができ、機能が異なる方法でコンポーネントの間に分散できることを認識するであろう。
【0036】
ファイル読み込みモジュール510は、データブロックから構成されるファイルをデータソース120から読み込み、データブロックの処理を管理する。たとえば、ファイル読み込みモジュール510は、SSDから1つ以上のファイルを読み込むことができる。ファイルは、一連のデータブロックのセットとしてデータソース120に保存されている。ブロックのサイズは異なる場合があり、一実施形態では256KBである。ファイル読み込みモジュール510は、ファイルの特定のデータブロックに対する1つ以上の入出力(I/O)要求をデータソース120に送信することによりファイルを読み取る。一実施形態では、ファイル読み込みモジュール510は、多くの別個のI/O要求を同時に発行することにより、ファイル内の一連の順序のすべてのブロックを要求し、各要求は特定のブロックを要求する。たとえば、ファイル読み込みモジュール510は、ファイルの最初の100個のブロックに対して100個のI/O要求のバッチを同時に発行し、最初のバッチの要求が満たされると次の一連のブロックに対して追加の要求を発行し得る。I/O要求は一連の順序でブロックを要求するが、データソース120は異なる順序で要求を完了し、非連続的なブロックを返してもよい。
【0037】
ファイル読み込みモジュール510は、データソース120によって返されたデータブロックをブロックキャッシュ520に格納する。ブロックキャッシュ520は、ブロックがワーカースレッド530によって処理されている間、ブロックを格納する。一実施形態では、ブロックキャッシュ520は固定サイズを有し、したがって固定数のブロックを保持する。加えて、ファイル読み込みモジュール510は、(そのシーケンス番号によって識別される)所与のブロックがブロックキャッシュ内の特定の場所にあることが保証されるようにブロックキャッシュ520を管理する。この位置は、ブロックキャッシュ520に保持されることができるブロックの数を法とするブロックのシーケンス番号として計算される。
【0038】
このようにブロックキャッシュ520を管理することは、ワーカースレッド530によるブロックの非同期並列処理中に発生する可能性のあるリソース競合を減らす。ブロックキャッシュ520は固定サイズであり、ブロックがキャッシュ内にある場合、ブロックは既知の場所にあるため、キャッシュにグローバルロックを保持する必要はない。キャッシュ内の各ブロックは、他のブロックとは独立してそのブロックの管理を容易にする3つのアトミック変数である、1)そのブロックを参照するワーカースレッドの数、2)所与の時間におけるそのキャッシュの場所によって表されるブロックのシーケンス番号、および3)ブロックが配置されているキャッシュ場所のステータス(使用可能、保留、未使用、割り当て解除など)を含む。これらの変数は、ロックを取得する必要なく、キャッシュ内の所与のブロックの可用性が一定の時間で決定されることを可能にする。
【0039】
ファイル読み込みモジュール510は、ブロックキャッシュ520内のブロックを処理のためにワーカースレッド530に渡す。複数の独立に実行するワーカースレッド530がある。各スレッドは、プロセッサ302の別々のプロセッサコアで実行し得る。ワーカースレッド530は、ブロックキャッシュ520内のデータブロックを分析して、そこに含まれるデータレコードを取り出す。
【0040】
ワーカースレッド530は一度に1つのデータブロックを分析し、複数のスレッドは同時に複数のブロックをまとめて処理する。所与のスレッド530は、ファイル読み込みモジュール510によって提供されるアプリケーションプログラミングインターフェース(API)を使用して「ブロック取得」要求を行うことにより、ブロックキャッシュ530からデータブロックを要求する。スレッド530は、リクエストに応答して、ブロックキャッシュ520内のブロック(同等に、ブロックへのポインタまたは参照)を受け取る。このAPI呼び出しに応答して受信したブロックは、別のスレッドによって処理されていないものであり、ブロックは、スレッドによって処理された前のブロックに必ずしも連続して関連しているわけではない。API呼び出しは、現在処理可能なブロックがないことを示すメッセージを返す場合がある。この場合、スレッドは、ブロックが使用可能になるのを待っている間に他のタスクを実行してもよい。
【0041】
ワーカースレッド530は、ブロックを最初から最後まで連続して読み込み、そこに含まれるデータレコードおよびデータレコードの一部を識別することにより、データブロックを分析する。一実施形態では、各データレコードは、叙述されたデータ値のセットを含み、レコードマーカーによって終了する。たとえば、データレコードはコンマ区切り値(CSV)のセットを含み得る。レコードマーカーは、改行文字または復帰文字とそれに続く改行文字など、レコードの終わりをマークする特別なである。したがって、ワーカースレッド530は、レコードマーカーの直後の位置から開始し、次のレコードマーカーに及ぶデータレコードを分析する。所与のデータブロックは複数のレコードを保持する場合があり、データレコードは複数のデータブロックにまたがることがある。
【0042】
分析状態キャッシュ540は、ワーカースレッド530によって分析されたデータブロックを記述する情報を格納する。一実施形態では、分析状態キャッシュ540は、ワーカースレッド530によって分析されたデータブロックに対応するデータオブジェクトを保持する。データオブジェクト内の情報は、関連するデータブロック内の最初のレコードマーカーの推定されたロケーションおよび最初のレコードマーカーの実際のロケーションを含み、またブロック内で開始する分析済みのデータレコードも含む。データオブジェクト内の情報は、関連するデータブロックが正しく分析されたかどうか、およびデータブロックが再分析される必要があるかどうかも示す場合がある。
【0043】
ワーカースレッド530は、スレッドがデータブロックを分析するときにオブジェクトの情報を更新する。動作中、ワーカースレッド530は、ブロックキャッシュ520からデータブロックを取得するために、ファイル読み込みモジュール510に対して「ブロック取得」API呼び出しを行う。次に、ワーカースレッド530は、連続する順にデータブロックをスキャンして最初のレコードマーカーを見つける。ワーカースレッド530は、最初のレコードマーカーの直後のデータレコードから開始して、データブロックを最後まで分析する。ワーカースレッド530は、分析されたデータレコードを分析状態キャッシュ540内の関連するオブジェクトに格納する。ワーカースレッド530はまた、分析状態キャッシュ540にデータブロックで見つかった最初のレコードマーカーのロケーションを格納する。
【0044】
この格納されたロケーションは、データブロック内の「推定された」最初のレコードマーカーと呼ばれる。これは、ワーカースレッドが当該ロケーションで終了するレコードの部分的なコンテキストしか有していないために、このロケーションが誤って検出された可能性があるためである。たとえば、一部のCSVファイルでは、データが引用符で囲まれている場合がある。したがって、引用符で囲まれた改行文字は、レコード内のデータであり、レコードマーカーでない。レコードを分析するワーカースレッド530は、前のレコードが引用テキストで終了したかどうかを知らないため、したがって、文字が引用の一部であっても、改行文字をレコードマーカーとして誤って解析する可能性がある。
【0045】
ワーカースレッド530がデータブロックの最後まで分析すると、ワーカースレッドはファイル読み取りモジュール510に対して「次のブロックを取得」API呼び出しを行う。この呼び出しは、次に連続するデータブロック、つまりワーカースレッド530が分析したばかりのブロックに連続して続くデータブロックを要求する。さらに、「次のブロックを取得」API呼び出しは、ワーカースレッドが分析した前のブロックを解放する。
【0046】
ワーカースレッド530は、要求された次に連続するデータブロックを受信し、このブロックを最初から最初のレコードマーカーまで分析する。分析されたデータは、先行するデータブロックの最後の分析されたデータレコードに追加され、分析状態キャッシュ540に格納される。さらに、ワーカースレッド530は、次の連続するブロックに対応する分析状態キャッシュオブジェクトに最初のレコードマーカーのロケーションを記録する。このロケーションは、ブロック内の最初のレコードマーカーの実際のロケーションとして分析状態オブジェクトに記録される。つまり、ワーカースレッドはこのロケーションで終わるレコードの完全なコンテキストを有しているため、ロケーションが正確であることがわかる。
【0047】
一実施形態では、ワーカースレッド530は、真の最初のレコードマーカーロケーションがデータブロック(すなわち、次の連続するデータブロック)の推定された最初のレコードマーカーロケーションと一致するかどうかを決定する。ロケーションが一致する場合、これは推定された最初のレコードマーカーのロケーションが正しいこと、およびデータブロックが正しく分析されたことを意味する。この場合、ワーカースレッド530は、ブロックの分析状態キャッシュオブジェクトに、ブロックが正しく分析されたことを示すインジケーションを格納する。
【0048】
真の最初のレコードマーカーのロケーションが推定された最初のレコードマーカーのロケーションと一致しない場合、これはデータブロックが正しく分析されなかったことを意味する。この場合、ワーカースレッド530は、ブロックの分析状態キャッシュオブジェクトに、ブロックが誤って分析されたこと、および再分析が必要であることを示すインジケーションを格納する。一実施形態では、ワーカースレッド530は、ファイル読み込みモジュール510に対するAPI呼び出しを行い、再度分析する必要があるとしてデータブロックにフラグを立てる。次いで、ファイル読み込みモジュール510は、正しい最初のレコードマーカーロケーションを使用してデータブロックを分析するためにワーカースレッド530を割り当てることができる。
【0049】
ファイル読み込みモジュール510は、ブロックキャッシュ520および分析状態キャッシュ540内の情報を使用して、ワークフロー200のツールモジュール420に対するデータレコードを解放する。一実施形態では、ファイル読み込みモジュール510は、ブロックを使用するワーカースレッドがなくなり、ファイル内のすべての以前のブロックが解放され、および分析状態キャッシュ540がブロックは正しく解析されたこと示すことを示すと、ブロックキャッシュ520から所与のブロックのデータレコードを解放する。また、ファイル読み込みモジュール510は、データブロックをブロックキャッシュ520から同時に解放する。したがって、ファイル読み取りモジュール510は、ワーカースレッド530のためにブロックを(ファイル読み込みモジュールI/O要求を介して)プリロードし、ブロックの処理が完了するとブロックを解放する、ファイル全体にわたって移動するスライディングウィンドウとして、ブロックキャッシュ520を本質的に使用する。ファイル読み込みモジュール510は、多くの独立したワーカースレッドのニーズを効率的に満たし、他のソリューションよりも少ないメモリを使用する、これにより、データ解析システム110およびアプリケーション140のパフォーマンスを向上する。
【0050】
報告モジュール550は、レコードが解放されたときにメッセージを選択的に出力する。メッセージは、データ解析アプリケーション140の別のコンポーネント、たとえば特定のツールモジュール420に出力される。一例では、報告モジュール550は、特定のレコードが解放されたとき、および/または特定のレコードより前のすべてのレコードが解放されたときにメッセージを出力する。したがって、報告モジュール550は、特定のレコードが解放されたとき、または他のイベントが発生したときに、データ解析アプリケーション140のコンポーネントに通知する容易さを提供する。
【0051】
図6は、データブロックとデータレコードとの間の例示的な関係を示す図である。図6は、3つの一連のデータブロック610、620、および630と、7つの一連のデータレコード615、625、635、645、655、665、および675を示す。データレコードは、データブロックと完全には整合していない。たとえば、データブロック610は、レコード615および625のすべて、およびレコード635の一部を含む。レコード635はブロック610で始まり、ブロック620の途中で終わる。ブロック620を分析するワーカースレッド530は、最初にデータレコード635の一部を読み込み、次いでレコード635のレコードマーカーを読み込み、次いでレコードマーカーを含むレコード645のすべてを読み込み、次いでレコード655の一部を読み込む。
【0052】
ファイル読み込みモジュール510がブロック620をワーカースレッド530に割り当てると仮定する。ブロック620を分析するワーカースレッド530は、レコード635の終わりをマークするレコードマーカーを見つけるまでデータブロックをスキャンする。ワーカースレッド350は、ブロック620に対応する分析状態キャッシュオブジェクト内にレコードマーカーのロケーションを、このブロックの推定された最初のレコードマーカーロケーションとして記録する。次いで、レコード645の始まり(最初のレコードマーカーロケーションの直後から開示する)から当該ブロックの終わりまで、データブロック620を分析し、分析結果をブロックの分析状態キャッシュオブジェクトに格納する。
【0053】
データブロック620を分析する間、ワーカースレッド530は、データブロック620の終わりまでデータレコード655の一部を解析する。次いで、ワーカースレッド530は、データブロック630を要求および取得し、データブロック620を解放する。ワーカースレッド530は、データブロック630を最初から分析して、レコード655の終わりを示すレコードマーカー(すなわち、データブロック内の最初のレコードマーカー)に到達するまで続ける。ブロック630からの分析されたデータは、ブロック620からのレコード655のデータに追加され、それにより完全なデータレコードを形成し、この情報はブロック620の分析状態キャッシュオブジェクトに格納される。ワーカースレッド530は、レコード655の終わりをマークするマーカーを、ブロック630の真の最初のレコードマーカーロケーションとしてブロックに対応する分析状態キャッシュオブジェクト内に記録する。
【0054】
ワーカースレッド530は、ブロック630の推定された最初のレコードマーカーロケーション(異なるワーカースレッドによって解析状態キャッシュオブジェクトに記録された)がブロックの真の最初のレコードマーカーロケーションと一致するかどうかを決定する。ロケーションが一致する場合、ワーカースレッド530は、ブロック630の分析状態キャッシュオブジェクトに、ブロックが正しく分析されたことを示すインジケーションを格納する。ロケーションが一致しない場合、ワーカースレッド530は、真の最初のレコードマーカーロケーションから再度分析される必要があるとしてデータブロック630にフラグを立てるファイル読み込みモジュール510に対するAPI呼び出しを行う。
【0055】
図7は、一実施形態による、データソース120から受信したデータブロックを処理する方法700を示すフローチャートである。いくつかの実施形態では、方法はデータ受信モジュール410によって実行されるが、方法の動作の一部または全部は他の実施形態の他のエンティティによって実行されてもよい。いくつかの実施形態では、フローチャートの操作は異なる順序で実行され、異なるおよび/または追加のステップを含む。
【0056】
データ受信モジュール410は、データソース120からデータブロックを受信する710。とえば、データ受信モジュール410は、SSDに発行されたI/O要求に応答してデータブロックを受信し得る。データブロックは連続であるが、データ受信モジュール410は、ブロックを順不同で受信し得る710。データ受信モジュール410は、ブロックキャッシュ520にデータブロックを格納する720。データ受信モジュール410は、ブロックをワーカースレッド530に割り当てる730。各データブロックは、個々のワーカースレッド530に割り当てられる。ワーカースレッド530はデータブロックを分析し、複数のワーカースレッドは複数のデータブロックをまとめて並行して分析する。データ受信モジュール410は、分析状態キャッシュ540内のワーカースレッド530の分析アクティビティを記述する分析状態情報を維持する740。データ受信モジュール410は、ブロックキャッシュおよび分析状態キャッシュ540内の情報に基づいて、分析されたデータブロックからデータ解析ワークフローにデータレコードを解放し、ブロックキャッシュ520からデータブロックを解放する750。図7に示されるように、データ受信モジュール410は、データブロックがブロックキャッシュ520から解放されるときに、データソース120からさらなるデータブロックを受信し得る。
【0057】
図8は、一実施形態によるデータブロックを分析する方法800を示すフローチャートである。いくつかの実施形態では、この方法は、ファイル読み込みモジュール510およびワーカースレッド530を含むデータ受信モジュール410のコンポーネントによって実行される。本方法の動作の一部またはすべては、他の実施形態の他のエンティティによって実行されてもよい。いくつかの実施形態では、フローチャートの操作は異なる順序で実行され、異なるおよび/または追加のステップを含む。
【0058】
ファイル読み込みモジュール510は、ブロックキャッシュ520内のデータブロックをワーカースレッド530に割り当てる810。ワーカースレッド530は、データブロックを連続する順にスキャンして、その中の最初のレコードマーカーの推定されたロケーションを見つける820。ワーカースレッド530は、データブロック内の、最初のレコードマーカーの直後から開始するデータレコードを分析する830。ワーカースレッド530は、解析結果をデータブロックの分析状態キャッシュオブジェクトに保存する。また、ワーカースレッド530は、最初のレコードマーカーのロケーションをオブジェクト内に、そのデータブロックの推定された最初のレコードマーカーのロケーションとして保存する。
【0059】
ワーカースレッド530は、次に連続するデータブロックを取得し、最初のレコードマーカーに対してそのブロックを分析する840。ワーカースレッド530は、分析されたレコードを、そのレコードの残りのデータとともに、前のデータブロックの分析状態キャッシュオブジェクトに保存する。さらに、ワーカースレッド530は、分析状態キャッシュ540内の最初のレコードマーカーのロケーションを、次に連続するデータブロックの真の最初のレコードマーカーロケーションとして格納する850。
【0060】
ワーカースレッド530は、次に連続するデータブロックの真の最初のレコードロケーションが、別のワーカースレッドによってそのデータブロックの分析状態キャッシュオブジェクトに格納された推定された最初のレコードロケーションと一致するかどうかの決定もする860および870。2つのロケーションが一致しない場合、ワーカースレッド530は、ブロックの分析状態キャッシュオブジェクトに、誤って分析されたこと、および再分析される必要があることを示すインジケーションを格納する890。ファイル読み込みモジュール510は、インジケーションを検出し、真の最初のレコードロケーションを使用して分析するためにワーカースレッド530にブロックを割り当てる。2つのロケーションが一致する場合、次に連続するデータブロックは正しく解析され、ファイル読み込みモジュール510はデータレコードをブロックからツールモジュール420に解放する。ステップ830でワーカースレッド530によって分析された以前のデータブロックは、そのブロックの推定された最初のレコードマーカーロケーションが検証されると解放される。
【0061】
コンポーネントの特定の命名、用語の大文字化、属性、データ構造、またはその他のプログラミングまたは構造的側面は必須または重要ではなく、説明されている実施形態を実装するメカニズムは異なる名前、フォーマット、またはプロトコルを持っていてもよい。さらに、システムは、説明したようにハードウェアとソフトウェアの組み合わせを介して、または完全にハードウェア要素で実装され得る。また、本明細書で説明されるさまざまなシステムコンポーネント間の機能の特定の分割は単なる例示であり、必須ではない。単一のシステムコンポーネントによって実行される機能は、代わりに複数のコンポーネントによって実行され、複数のコンポーネントによって実行される機能は、代わりに単一のコンポーネントによって実行されてもよい。
【0062】
上記の説明のいくつかの部分は、情報の操作のアルゴリズムおよび記号表現の観点から機能を示している。これらのアルゴリズムの説明と表現は、データ処理技術の当業者によって一般的に使用され、彼らの仕事の内容を他の当業者に効果的に伝える手段である。これらの操作は、機能的または論理的に説明されているが、コンピュータプログラムによって実装されると理解される。さらに、一般性を失うことなく、これらの操作の配置をモジュールと呼ぶこと、または機能名で呼ぶことが便利な場合もある。
【0063】
上記の議論から明白であると特に明記しない限り、説明全体を通して、「処理」または「計算」または「計算」または「決定」または「表示」などの用語を利用する議論は、コンピュータシステムのメモリまたはレジスタ、またはその他の情報ストレージ、送信、表示デバイス内の物理(電子)量として表されるデータを操作および変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスのアクションとプロセスと関連する。
【0064】
本明細書で説明される特定の実施形態は、アルゴリズムの形で説明されるプロセスステップおよび命令を含む。実施形態のプロセスステップおよび命令は、ソフトウェア、ファームウェア、またはハードウェアで実施でき、ソフトウェアで実施した場合、ダウンロードしてリアルタイムネットワークオペレーティングシステムで使用される異なるプラットフォームに常駐し、そこから操作できることに留意されたい。
【0065】
最後に、明細書で使用される文言は、主に読みやすさと教育目的のために選択されたものであり、本発明の主題を描写または制限するために選択されていない場合がある。したがって、実施形態の開示は、例示的であることを意図しているが、限定を意図するものでない。
図1
図2
図3
図4
図5
図6
図7
図8