(57)【要約】  データ書込み操作用のファイルを識別するための技法を説明する。様々な実施形態によれば、混合データのストリームが、様々な判定基準および／またはフィルタに基づいてソーティングされて、同様のデータの個々のセットを生成する。このデータセットは、永続記憶装置に書き込むのに備えて、個々のデータキューにバッファリングされる。様々な実施形態によれば、データセットを記憶するためのファイルが要求される。たとえば、データセットにおける書込みパラメータを含むファイル要求が実行依頼される。この書込みパラメータに基づいて、データセットを記憶するために、ファイルが識別および選択される。このデータセットをファイルに書き込めるようにするファイルの識別子が提供される。
2017520845.tif 000002
【特許請求の範囲】
【請求項１】
データ書込み操作用のデータのカテゴリに基づいて、前記データ書込み操作に利用可能なファイルを識別するためのシステムであって、
少なくとも１つのプロセッサと、
命令が記憶された１つまたは複数のコンピュータ読取り可能な記憶媒体と
を備え、
前記命令が、前記少なくとも１つのプロセッサによって実行されるのに応答して、
データセットに対するデータ書込み操作用のファイルの要求を受信するステップであって、前記データセットに含まれるデータのカテゴリを識別する前記要求を受信するステップと、
一群の利用可能なファイルをスキャンして、前記利用可能なファイルのうち少なくとも１つのファイルが、前記要求によって示されるデータの前記カテゴリにマッチするかどうか確認することによって、前記データ書込み操作に利用可能なファイルを識別するステップと、
前記ファイルにポインタを伝達するステップであって、前記ポインタが、前記データセットを前記ファイルに書き込むのに使用可能であるステップと、
前記ファイルへの前記データ書込み操作が実行されたとの指示を受信するステップと、
前記ファイルへの前記データ書込み操作が正常終了したかどうか確認するステップと、
前記データ書込み操作が正常終了したことを示す通知を伝達するステップと
を含む操作を前記システムが実行できるようにするシステム。
【請求項２】
前記一群の利用可能なファイルが、複数の様々な記憶位置からのファイルを含む、請求項１に記載のシステム。
【請求項３】
前記要求がさらに、前記データセットのサイズを含み、前記識別するステップがさらに、前記ファイルが、前記データセットを記憶するのに十分な記憶空間を有することに基づいて前記ファイルを識別するステップを含む、請求項１に記載のシステム。
【請求項４】
前記識別するステップは、
前記一群の利用可能なファイルが、前記データ書込み操作に利用可能な既存のファイルを含む場合に、前記データ書込み操作に利用可能な前記ファイルとして前記既存のファイルを選択するステップと、
前記一群の利用可能なファイルが、前記データ書込み操作に利用可能な既存のファイルを含まない場合に、前記要求によって示されたデータの前記カテゴリにマッチするタイムアウトしたファイルが識別されるかどうか確認するステップと、
前記要求によって示されたデータの前記カテゴリにマッチするタイムアウトしたファイルが識別される場合に、前記データ書込み操作に利用可能な前記ファイルとして、前記タイムアウトしたファイルを選択するステップと、
前記要求によって示されたデータの前記カテゴリにマッチするタイムアウトしたファイルが識別されない場合に、前記データ書込み操作用の新規のファイルを作成できるようにするステップと
を含む、請求項１に記載のシステム。
【請求項５】
前記識別するステップが、
前記一群の利用可能なファイルから、前記要求によって示されたデータの前記カテゴリにマッチする候補ファイルのバッチを識別するステップと、
候補ファイルの前記バッチから、前記ファイルを無作為に選択するステップと
を含む、請求項１に記載のシステム。
【請求項６】
前記確認するステップが、
前記ファイルへの前記データ書込み操作のロック時間を延長しようと試みるステップと、
前記試みるステップが失敗した場合に、前記データ書込み操作が失敗したことを確認するステップと、
前記試みるステップが正常終了した場合に、前記データ書込み操作に起因する前記ファイルへの変更を持続するステップと
を含む、請求項１に記載のシステム。
【請求項７】
前記試みるステップによって、前記データ書込み操作に起因する前記ファイルへの前記変更が持続している個別の時間だけ、前記ロックタイマを延長できるようになる、請求項６に記載のシステム。
【請求項８】
前記操作はさらに、前記データ書込み操作が失敗したことを確認するのに応答して、前記データ書込み操作が失敗したことを示すために前記通知を伝達するステップを含む、請求項６に記載のシステム。
【請求項９】
データセットを記憶するためのファイルの要求に応答して、候補ファイルのバッチを識別するステップであって、前記要求によって指定された前記データセット用の書込みパラメータに基づいて前記候補ファイルを識別するステップを含むステップと、
候補ファイルの前記バッチからファイルを無作為に選択するステップと、
前記選択されたファイルへのポインタを用いて前記要求に応答するステップと
を含む、コンピュータ実施方法。
【請求項１０】
前記書込みパラメータが、前記データセットに含まれるデータのカテゴリ、前記データセットのデータが収集された日付、または前記データセットのサイズのうち１つまたは複数を示す、請求項９に記載の方法。
【請求項１１】
候補ファイルの前記バッチが、利用可能なファイル、タイムアウトしたファイル、または両方の組合せを含む、請求項９に記載の方法。
【請求項１２】
前記識別するステップが、前記書込みパラメータのうちの１つまたは複数を、前記候補ファイルに含まれるデータの属性にマッチされるステップを含む、請求項９に記載の方法。
【請求項１３】
データ書込み操作用のデータのカテゴリに基づいて前記データ書込み操作を実行するためのコンピュータ実施方法であって、
データセットが記憶装置に書き込まれることを確認するステップと、
前記データセットを記憶するためのファイルを要求するステップであって、前記データセットに含まれるデータのカテゴリ、および前記データセットのサイズを含むファイル問合せを伝達するステップを含むステップと、
前記要求に応答してファイルへのポインタを受信するステップと、
前記データセットを前記ファイルに書き込むために前記ポインタを使用してデータ書込み操作を実行するステップと
を含む、方法。
【請求項１４】
前記ファイル問合せがさらに、前記データセット用の日付パラメータ、または前記データセットのサイズのうち１つまたは複数を含む、請求項１３に記載の方法。
【請求項１５】
前記データ書込み操作が完了したとの通知を伝達するステップと、
前記データ書込み操作が正常終了したかどうかを示す通知を受信するステップと、
前記データ書込み操作が正常終了したことを前記通知が示す場合に、記憶装置に首尾よくコミットされたものとして前記データセットにマーキングするステップと、
前記データ書込み操作が正常終了しなかったことを前記通知が示す場合に、前記データセットに対して新規のデータ書込み操作を開始するステップと
をさらに含む、請求項１３に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  今日の接続環境では、大量のデータが生成される。たとえばクラウドベースのアーキテクチャおよびサービスでは、システムの分析や診断など、様々な目的に使用できるデータが生成される。分散環境で大量のデータを取り扱うには、いくつかの実装上の課題がある。
【発明の概要】
【０００２】
[0002]  この発明の概要は、発明を実施するための形態において以下でさらに説明する簡略化された形態での選ばれた概念を紹介するために提示される。この概要は、特許請求される主題の重要な特徴または本質的な特徴を識別するものではなく、特許請求される主題の範囲を決定する際の手助けとして使用されるものでもない。
【０００３】
[0003]  データ書込み操作用のファイルを識別するための技法を説明する。様々な実施形態によれば、混合データのストリームが、様々な判定基準および／またはフィルタに基づいてソーティングされて、同様のデータの個々のセットを生成する。このデータセットは、永続記憶装置に書き込むのに備えて、個々のデータキューにバッファリングされる。様々な実施形態によれば、データセットを記憶するためのファイルが要求される。たとえば、データセットにおける書込みパラメータを含むファイル要求が実行依頼される。この書込みパラメータに基づいて、データセットを記憶するために、ファイルが識別および選択される。このデータセットをファイルに書き込めるようにするファイルの識別子が提供される。
【０００４】
[0004]  添付図面を参照しながら、詳細な説明をおこなう。各図において、参照番号の最も左の桁は、その参照番号が最初に現れる図を識別するものである。この説明および各図における様々な具体例に同じ参照番号を使用することで、同様または同一の要素を示してもよい。
【図面の簡単な説明】
【０００５】
【図１】[0005]本明細書において述べる技法を利用するよう動作可能な、例示的な一実装形態での環境を示す図である。
【図２】[0006]１つまたは複数の実装形態に従ってデータをデータセット中にソーティングための、例示的な実装形態のシナリオを示す図である。
【図３】[0007]１つまたは複数の実装形態に従ってデータセットを記憶するためのファイルを取得するための、例示的な実装形態のシナリオを示す図である。
【図４】[0008]１つまたは複数の実施形態に従ってデータをソーティングするための方法での、各ステップを説明する流れ図である。
【図５】[0009]１つまたは複数の実施形態に従ってデータセットを記憶するためのファイルを取得するための方法での、各ステップを説明する流れ図である。
【図６】[0010]１つまたは複数の実施形態に従ってデータ書込み操作用のファイルを識別するための方法での、各ステップを説明する流れ図である。
【図７】[0011]１つまたは複数の実施形態に従ってデータ書込み操作用のファイルを選択するための方法での、各ステップを説明する流れ図である。
【図８】[0012]１つまたは複数の実施形態に従って、データ書込み操作が正常終了したかどうか確認するための方法での、各ステップを説明する流れ図である。
【図９】[0013]１つまたは複数の実施形態に従ってデータ書込み操作用のファイルを選択するための方法での、各ステップを説明する流れ図である。
【図１０】[0014]本明細書に記載の技法の実施形態を実施するように構成された、図１を参照して説明する例示的なシステムおよびコンピューティング装置を示す図である。
【発明を実施するための形態】
【０００６】
[0015]  データ書込み操作用のファイルを識別するための技法を説明する。様々な実装形態によれば、様々なタイプ、カテゴリ、日付などのデータを含む、混合データのストリームが受信される。この混合データは、様々な判定基準および／またはフィルタに基づいてソーティングされて、同様のデータの個々のセット、たとえば個々の一様なデータセットを生成する。このデータセットは、永続記憶装置に書き込まれるのに備えて、個々のデータキューにバッファリングされる。
【０００７】
[0016]  様々な実装形態によれば、データセットを記憶するためのファイルが要求される。たとえば、データセット内のデータのカテゴリ、データセットのサイズ、データセット用の日付パラメータ（たとえば、データセットのデータが収集された日付）など、データセット用の書込みパラメータを含むファイル要求が実行依頼される。この書込みパラメータに基づいて、データセットを記憶するために、ファイルが識別および選択される。このデータセットをファイルに書き込めるようにするファイルの識別子（たとえばポインタ）が提供される。本明細書において述べる各技法は、多くの様々なデータセット向けの多くのファイル要求を実行依頼および実行できるようにするために拡張性が非常に高く、したがって、データを大量に収集する際のデータ書込みプロセスの効率が上がる。さらに、多くの様々なファイル要求が同時に発生することがあり、本明細書において述べる各技法によって、様々なファイル要求間での衝突を回避しながら、このような同時発生の要求を実行できるようになる。
【０００８】
[0017]  様々な実装形態によれば、様々な地理的位置および物理的な位置で保持されるファイルなど、ファイルを多くの様々な記憶位置から選択してもよい。さらに、少なくともいくつかの実装形態では、様々なファイルシステム上に存在するファイルについての状態認識を保持するエンティティによってファイル要求を管理できるように、複数の分散ファイルシステムにわたって記憶されるファイルの集中表示が実現する。したがって、非常に分散されたファイル収集を管理する複雑さをなくすことができ、その結果、書き込むべきデータを有するエンティティは、様々な個々のファイルシステムと交渉する必要もなくファイルを単に要求および受信してもよい。これらの機能を使用可能にする様々な態様および実装形態を以下に説明する。
【０００９】
[0018]  以下の考察では、本明細書に記載の各技法を利用するよう動作可能な、例示的な環境をまず説明する。次に「例示的な実装形態のシナリオ」と題する段落では、１つまたは複数の実装形態に従ってデータ書込み操作用のファイルを識別するための、いくつかの例示的な実装形態のシナリオが説明してある。これに続いて、「例示的な手順」と題する段落では、１つまたは複数の実装形態に従ってデータ書込み操作用のファイルを識別するための、いくつかの例示的な手順の状況が説明してある。最後に、「例示的なシステムおよび装置」と題する段落では、１つまたは複数の実装形態に従って、本明細書において述べる各技法を利用するよう動作可能な、例示的なシステムおよび装置が説明してある。
【００１０】
[0019]  １つまたは複数の実装形態による例示的な実装形態の概要を述べてきたが、次に、例示的な実装形態を利用してもよい例示的な環境を考えてみる。
【００１１】
[0020]例示的な環境
図１は、本明細書に記載のデータ書込み操作用のファイルを識別するための各技法を利用するよう動作可能な、例示的な一実装形態での環境１００を示す図である。一般に、環境１００は、本明細書において述べる各技法を実施するよう利用することができる、様々な装置、サービス、および機能を含む。環境１００はデータ発生器１０２を備え、これは様々なタイプのデータを生成する機能を表している。少なくともいくつかの実装形態では、データ発生器１０２は、従来のコンピュータ（たとえば、デスクトップパーソナルコンピュータ、ラップトップコンピュータなど）、移動局、娯楽機器、スマートフォン、ネットブック、ゲーム機、ハンドヘルド装置（たとえばタブレット）、ウェアラブルコンピューティング装置などの個別の装置を表す。データ発生器１０２はまた、データセンタ内で実行されるサービス、分散プロセス、環境データを収集する機能など、データを生成する様々なサービスおよびプロセスを含んでもよい。
【００１２】
[0021]  環境１００はさらに、記憶装置マネージャ１０４を備え、これは、データ発生器１０２によって生成されたデータを受信および処理し、処理済みデータを記憶装置システム１０６が記憶できるようにするための機能を示す。少なくともいくつかの実装形態では、記憶装置マネージャ１０４は、ネットワーク１０８を介して、データ発生器１０２からのデータを受信する。一般に、ネットワーク１０８は、様々なエンティティ間でデータ伝送するための接続機能を実現するインフラストラクチャおよび構成要素を示す。ネットワーク１０８は、有線およびワイヤレスのネットワーク、ローカルエリアネットワーク（LAN）、広域ネットワーク（WAN）、インターネットなどの組合せなど、様々な方式で実施してもよい。
【００１３】
[0022]  記憶装置システム１０６は様々な方式で実施してもよい。たとえば、記憶装置システム１０６の様々な具体例は、互いに異なる様々な物理的および／または地理的な位置にわたって分散してもよい。個々の記憶装置システム１０６は、たとえば記憶装置マネージャ１０４の具体的を維持してもよい。したがって、単一の記憶装置マネージャ１０４が図示してあるが、様々なエンティティによって、および／または様々な位置において、記憶装置マネージャ１０４の複数の具体例を利用してもよいことを理解されたい。別法として、またはさらに、記憶装置マネージャ１０４は、分散された複数の様々な記憶装置システム１０６にサービス提供できる集中型サービスとして実施してもよい。少なくともいくつかの実装形態では、記憶装置マネージャ１０４および／または記憶装置システム１０６は、データセンタ、企業施設、クラウドベースのストレージサービスなどを介して実施してもよい。
【００１４】
[0023]  記憶装置マネージャ１０４は、データソータ１１０、データライタ１１２、およびファイルブローカ１１４を含め、本明細書において述べるデータ書込み操作用のファイルを識別するための各技法を実施するための様々な構成要素を含む。データソータ１１０は、データ発生器１０２から受信したデータをソーティングし、ソーティングされたデータを様々なデータキュー１１６に配置するための機能を示す。様々な異なる判定基準に基づいてデータをソーティングしてもよく、その例を以下に説明する。一般に、データキュー１１６は、様々なカテゴリおよび／またはタイプのデータを一時記憶するための機能を示す。たとえば、個々のデータキュー１１６はそれぞれ、互いに異なりカテゴリおよび／またはタイプのデータと関連づけてもよい。したがって、少なくともいくつかの実装形態では、データソータ１１０は、データの異種のストリームを取得し、それを個々の同種のデータセットおよび／またはデータストリームにソーティングするマルチプレクサとみなしてもよい。
【００１５】
[0024]  データライタ１１２は、データキュー１１６からのデータを検索し、このデータを物理的な記憶位置に記憶できるようにする機能を示す。たとえば、データライタ１１２は、特定のデータキュー１１６からのデータを記憶するための記憶位置をファイルブローカ１１４に要求する。本明細書において述べる実装形態によれば、ファイルブローカ１１４はファイルテーブル１１８にアクセスし、この表は、記憶装置システム１０６が記憶するファイル１２０についての状況情報を含む。少なくともいくつかの実装形態では、ファイルテーブル１１８は、非構造化照会言語（SQL）記憶構造、たとえば非ＳＱＬおよび／またはＳＱＬだけでない記憶構造として実施される。
【００１６】
[0025]  様々な実装形態によれば、ファイルテーブル１１８は、個別のファイル１２０およびこのファイル１２０の状況情報を識別する。たとえば、ファイルテーブル１１８は、ファイルの（たとえばバイトでの）現在のサイズ、ファイルの最大メモリサイズ、ファイルには利用可能な記憶空間がどの程度あるのかなど、個々のファイルについてのメモリサイズ情報を示す。ファイルテーブル１１８はまた、ファイルを書き込めるかどうか（たとえば、ファイルが現在使用中および／またはロックされているかどうか）、ファイルがタイムアウトしたかどうかなどを示してもよい。ファイルテーブル１１８はまた、個々のファイルに記憶されるデータのタイプおよび／またはカテゴリなど、個々のファイルについての記述的情報を含む。ファイルテーブルはまた、個々のファイルにアクセスするのに使用してもよいポインタなど、個々のファイルについての識別情報および／またはアクセス情報を含んでもよい。
【００１７】
[0026]  データライタ１１２からの要求に応答して、ファイルブローカ１１４が、データキュー１１６からデータを受信するのに適した候補ファイルをファイル１２０から識別する。ファイルブローカ１１４は、データライタ１１２がデータをファイルに書き込めるように、このファイルをデータライタ１１２に通知する。このプロセスおよび関連するプロセスの詳細を、さらに以下に説明する。
【００１８】
[0027]  記憶装置マネージャ１０４の様々な機能は統合されたものとして示してあるが、機能の少なくともいくつかは、様々な物理的位置において、および／または様々なエンティティによって実施してもよいことを理解されたい。様々な実装形態によれば、環境１００に示した様々なエンティティは、ハードウェア、ソフトウェア、および／またはそれらの組合せを用いて実施してもよい。
【００１９】
[0028]  本明細書に記載の各技法が動作できる例示的な環境の属性を説明してきたが、次に、１つまたは複数の実装形態に従ってデータ書込み操作用のファイルを識別するためのいくつかの例示的な実装形態のシナリオを考えてみる。
【００２０】
[0029]例示的な実装形態のシナリオ
以下の段落では、１つまたは複数の実装形態に従ってデータ書込み操作用のファイルを識別するための、いくつかの例示的な実装形態のシナリオが説明してある。例示的な実装形態のシナリオは、前述の環境１００および／または他の任意の適切な環境内で実施してもよい。
【００２１】
[0030]  図２には、１つまたは複数の実装形態に従ってデータをデータセット中にソーティングための、例示的な実装形態のシナリオ２００が示してある。シナリオ２００は、環境１００に関連して先に紹介した様々なエンティティおよび構成要素を含む。
【００２２】
[0031]  シナリオ２００では、データソータ１１０が、データ発生器１０２からデータストリーム２０２を受信する。データストリーム２０２は、任意の適切なタイプのデータを含んでもよい。少なくともいくつかの実装形態では、データストリーム２０２は、様々な装置、システム、センサ、および／または他のデータ生成メカニズムもしくはプロセスから収集されるテレメトリデータを含む。本明細書において考察するために、データストリーム２０２は、ボイスオーバインターネットプロトコル（VoIP）通話、ビデオ通話、チャットセッション、ユニファイドコミュニケーション（UC）セッションなど、様々なユーザ装置間の通信事象から収集されるテレメトリデータ（たとえばメタデータ）を表す。しかし、これは限定的なものと解釈すべきではなく、データストリーム２０２は任意のタイプのデータを含んでもよい。
【００２３】
[0032]  シナリオ２００に付け加えると、データストリーム２０２は、多種多様な互いに異なるタイプおよびカテゴリのデータを含む、異種の一群のデータを表す。したがって、データソータ１１０は、データストリーム２０２を、データセット２０４ａ、データセット２０４ｂ、およびデータセット２０４ｎに構文解析する。一般に、データセット２０４ａ〜２０４ｎは、様々な属性を有する様々なカテゴリのデータに対応する。データソータ１１０は、データセット２０４ａ〜２０４ｎを、それぞれのデータキュー１１６に記憶する（たとえばバッファリングする）。この具体的な例では、データセット２０４ａは、データキュー２０６ａに記憶され、データセット２０４ｂは、データキュー２０６ｂに記憶され、データセット２０４ｎは、データキュー２０６ｎに記憶される。一般に、データキュー２０４ａ〜２０４ｎは、データストリーム２０２から抽出される特定のカテゴリのデータが個々に取り込まれる、一時的なデータ記憶装置（たとえばバッファ）を表す。
【００２４】
[0033]  通信事象に関連して、たとえば、データセット２０４ａ〜２０４ｎはそれぞれ、数多くの互いに異なる個々の通信セッションから収集される様々なテレメトリデータを表す。このようなテレメトリデータの例には、事象タイプ（たとえば、音声、ビデオ、メッセージングなど）、事象の日付、事象の持続時間、個々の事象がどのように開始されたか、事象の品質属性（たとえば、事象が損失した場合であろうとなかろうとパケットの損失率、その事象が事象品質に関するユーザフィードバックなど）、通信事象中に利用された特徴などが含まれる。これら特定カテゴリのデータは、例示目的のみで提示され、様々な実装形態に従って、多種多様な互いに異なるタイプおよびカテゴリのデータを認識および／または規定してもよい。
【００２５】
[0034]  シナリオ２００は、単一のデータストリーム２０２に関連して説明してあるが、このデータストリーム２０２は、多くの様々なデータ発生器１０２から受信され、その成分データカテゴリに構文解析される多くの様々な離散的データストリームを表してもよいことを理解されたい。通信事象に関連して、たとえば、データストリーム２０２は、何百万以上もの様々な離散的通信事象からのテレメトリデータを表してもよい。
【００２６】
[0035]  図３には、１つまたは複数の実装形態に従ってデータセットを記憶するためのファイルを取得するための、例示的な実装形態のシナリオ３００が示してある。シナリオ３００は、環境１００に関連して先に紹介した様々なエンティティおよび構成要素を含む。少なくともいくつかの実装形態では、シナリオ３００は、シナリオ２００の例示的な継続である。
【００２７】
[0036]  シナリオ３００では、データライタ１１２は、データキュー２０６ａ〜２０６ｎには、永続記憶装置に書き込まれるデータセット２０４ａ〜２０４ｎが取り込まれることを確認する。たとえば、データライタ１１２は、記憶装置に書き込まれるデータをデータキュー１１６が有しているかどうか確認するため、データソータ１１０に問い合わせる。別法として、またはさらに、データソータ１１０は、記憶装置に書き込まれるデータセット２０４ａ〜２０４ｂをデータキュー１１６が有していることを、データライタ１１２に通知する。
【００２８】
[0037]  記憶されるデータをデータキュー１１６が含むことを確認するのに応答して、データライタ１１２は、ファイル問合せ３０２をファイルブローカ１１４に伝達する。様々な実装形態によれば、ファイル問合せ３０２は書込みパラメータ３０４を含み、このパラメータは、データのカテゴリ、データが収集された（１つまたは複数の）日付、（たとえばバイトでの）データ量など、データセット２０４ａ〜２０４ｎについての情報を指定する。ファイルブローカ１１４は、ファイル問合せ３０２を受信し、要求を検査して書込みパラメータを決定する。
【００２９】
[0038]  書込みパラメータ３０４に基づいて、ファイルブローカ１１４は、書込みパラメータ３０４に対応するファイル１２０のファイル３０６ａ、ファイル３０６ｂ、およびファイル３０６ｎを、ファイルテーブル１１８から識別する。たとえば、ファイル３０６ａ〜３０６ｎは、データセット２０４ａ〜２０４ｎについて、それぞれのデータカテゴリ、日付などに対応し、データセット２０４ａ〜２０４ｎのデータに対して利用可能な記憶空間が十分にある。少なくともいくつかの実装形態では、ファイル３０６ａ〜３０６ｎは、データセット２０４ａ〜２０４ｎに対して同じまたは同様のカテゴリのデータでこれまでに書き込まれた既存ファイルである。別法として、またはさらに、既存ファイル１２０が特定のデータセットで利用可能でない（たとえば、ファイルテーブル１１８で識別されない）場合、このデータセットに対して新規のファイルを作成することができる。候補ファイルを選択するための詳細手順を以下に説明する。
【００３０】
[0039]  シナリオ３００に付け加えると、次いで、ファイルブローカ１１４は、ファイル３０６ａ〜３０６ｎにロックをかけ、その結果、他のエンティティ（たとえば、ファイルブローカ１１４の他の具体例）は、このファイル３０６ａ〜３０６ｎにアクセスせず、および／または、このファイル３０６ａ〜３０６ｎをデータ書込みに利用可能であると識別しない。様々な実装形態によれば、ファイルブローカ１１４は、ファイルテーブル１１８を更新して、ファイル３０６ａ〜３０６ｎがロックされていること、たとえばファイル３０６ａ〜３０６ｎが利用可能ではなく、および／または現在使用されていることを示す。ファイルブローカ１１４は、各ファイル３０６ａ〜３０６ｎへのポインタ３１０を含む問合せ応答３０８を生成する。一般に、ポインタ３１０は、ファイル３０６ａ〜３０６ｎを識別し、および／またはファイル１２０内でファイル３０６ａ〜３０６ｎのそれぞれの位置を識別するデータを表す。
【００３１】
[0040]  ファイルブローカ１１４は、問合せ応答３０８をデータライタ１１２に伝達する。データライタ１１２は、問合せ応答３０８を構文解析して、ポインタ３１０を得る。データライタ１１２は、ポインタ３１０を使用して、データセット２０４ａ〜２０４ｎを、ファイル３０６ａ〜３０６ｎのそれぞれのファイルに書き込む。
【００３２】
[0041]  様々な実装形態によれば、データライタ１１２は、データセット２０４ａ〜２０４ｎのそれぞれのファイル３０６ａ〜３０６ｎへの書込みを終了した後、ファイル３０６ａ〜３０６ｎへの書込みを終了したことをファイルブローカ１１４に通知する。それに応じて、ファイルブローカ１１４は、データセット２０４ａ〜２０４ｎが、それぞれのファイル３０６ａ〜３０６ｎに首尾よく書き込まれたことを確認検査することができる。たとえば、ファイルブローカ１１４は、ファイル３０６ａ〜３０６ｎへの書込み操作中に、何らかの書込み誤りが発生したかどうか確認する。データセット２０４ａ〜２０４ｎをファイル３０６ａ〜３０６ｎに首尾よく書き込めないなどのエラーが発生した場合、データセット２０４ａ〜２０４ｎが首尾よく記憶されなかったことを、ファイルブローカ１１４がデータライタ１１２に通知する。少なくともいくつかの実装形態では、データ書込みに失敗したのに応答して、シナリオ３００を再び実行して、新規のファイルを選択し、この新規ファイルにデータセット２０４ａ〜２０４ｎを書き込んでもよい。
【００３３】
[0042]  ファイルブローカ１１４は、ファイル３０６ａ〜３０６ｎへのデータ書込みが正常終了したと確認すると、この書込み操作が正常終了したことをデータライタ１１２に通知する。次いで、データライタ１１２は、データキュー１１６からの他のデータセットを用いてシナリオ２００から開始することなど、他のデータ書込み操作を実行してもよい。ファイルブローカ１１４はまた、ファイルテーブル１１８を更新して、次に候補ファイル１２０を書き込めることを示し、たとえばファイル３０６ａ〜３０６ｎのロックを外してもよい。ファイルブローカ１１４はまた、ファイルテーブル１１８を更新して、それぞれのファイル３０６ａ〜３０６ｎで利用可能な記憶空間の量を示してもよい。少なくともいくつかの実装形態では、たとえば、ファイル１２０のうち少なくともいくつかのサイズ閾値が最大でもよい。したがって、ファイル書込み操作によって、ファイル１２０のサイズ閾値がその最大値を超える場合、ファイル１２０は、その書込み操作において候補ではないものとして示してもよい。
【００３４】
[0043]  様々な実装形態によれば、たとえば同時に多くの様々な記憶位置にわたってシナリオ２００および３００の多くの具体例を実行して、本明細書において述べる各技法に従って、多くの様々な異種データストリームを永続記憶用のデータセットへとソーティングしてもよい。さらに、シナリオ２００および３００は、生成される新規のデータストリームを処理するためのある期間にわたって、繰り返し（たとえば連続的に）実行してもよい動的プロセスを表す。
【００３５】
[0044]  例示的な実装形態のシナリオを説明してきたが、ここで、１つまたは複数の実装形態によるいくつかの例示的な手順を考察してみる。
【００３６】
[0045]例示的な手順
以下の考察では、１つまたは複数の実装形態に従ってデータ書込み操作用のファイルを識別するための、いくつかの例示的な手順が説明してある。この例示的な手順は、図１の環境１００、図１０のシステム１０００、および／または他の任意の適切な環境で利用してもよい。さらに、この例示的な手順は、例示的な実装形態のシナリオで先に述べた各態様の実装形態を表してもよい。少なくともいくつかの実装形態では、様々な手順について述べたステップは、自動的かつユーザ対話と無関係に実施することができる。
【００３７】
[0046]  図４は、１つまたは複数の実装形態による方法での各ステップを説明する流れ図である。この方法では、１つまたは複数の実装形態に従ってデータをソーティングするための、例示的な手順を説明する。
【００３８】
[0047]  ステップ４００で、異種データのストリームを受信する。たとえば、データソータ１１０が、データ発生器１０２からデータストリーム２０２を受信する。
【００３９】
[0048]  ステップ４０２で、異種データのストリームを、様々なデータカテゴリに対応するデータセットにソーティングする。たとえば、様々なフィルタリング判定基準に基づいてこの異種データをフィルタリングして、同種データおよび／または半同種データの様々なセットにすることができる。データをソーティングするのに利用できる様々な判定基準および／またはカテゴリの例を上に述べた。少なくともいくつかの実装形態では、ソーティングは、ソーティングされたデータを完全に順序づけることは含んでおらず、特定のカテゴリのデータを他の同様のデータとバケット化することで簡単に実施してもよい。
【００４０】
[0049]  ステップ４０４では、データセットを永続的に記憶するのに備えて、このデータセットをバッファリングする。データセットは、それぞれのデータキューに記憶することができ、この例を上に述べた。
【００４１】
[0050]  図５は、１つまたは複数の実装形態による方法での各ステップを説明する流れ図である。この方法では、１つまたは複数の実装形態に従ってデータセットを記憶するためのファイルを取得するための、例示的な手順を説明する。少なくともいくつかの実装形態では、この方法は、図４に関連して先に述べた方法の例示的な拡張を説明する。
【００４２】
[0051]  ステップ５００では、データセットが記憶装置に書き込まれることを確認する。たとえば、データライタ１１２は、永続記憶装置に書き込まれるデータセットをデータキュー１１６が含むことを確認する。少なくともいくつかの実装形態では、データセットが特定サイズの（たとえばバイトでの）閾値を超えるのに応答して、データキュー１１６からのデータセットを記憶装置に書き込むためのプロセスを開始することができる。たとえば、図４を参照して先に述べた方法を実行して、特定のデータキュー１１６が閾値サイズを超えるまで、データキュー１１６にデータを付加してもよい。データキューが閾値サイズを超えるのに応答して、データキューからのデータを永続記憶装置に（たとえばファイル１２０に）書き込むためのプロセスを開始することができる。
【００４３】
[0052]  ステップ５０２では、データセット用のファイルを要求する。たとえば、データライタ１１２は、データセット用の書込みパラメータ３０４を有するファイル問合せ３０２をファイルブローカ１１４に伝達する。
【００４４】
[0053]  ステップ５０４では、ファイルへのポインタを受信する。たとえば、データライタ１１２は、このファイルを指すポインタ３１０を含む問合せ応答３０８を受信する。たとえば、ポインタ３１０は、メモリアドレス、ファイルへのリンクなどに基づいて、ファイルの個別の具体例を識別する。少なくともいくつかの実装形態では、ポインタ３１０は、ファイルの始まりからのオフセット値など、データ書込み操作が開始するファイル内の位置を示す。
【００４５】
[0054]  ステップ５０６では、ポインタを使用して書込み操作を実行して、データセットをファイルに書き込む。たとえば、データライタ１１２は、ポインタ３１０によって識別された記憶位置にデータセットを書き込む。
【００４６】
[0055]  ステップ５０８では、データ書込み操作が完了したとの通知を伝達する。たとえば、データライタ１１２は、データライタ１１２がデータセットのファイルへの書込みを終了したことを、ファイルブローカ１１４に通知する。
【００４７】
[0056]  ステップ５１０では、データ書込み操作が正常終了したかどうかを示す通知を受信する。たとえば、データライタ１１２は、データ書込み操作が正常終了したこと、またはデータ書込み操作が失敗したことのいずれかを示す通知をファイルブローカ１１４から受信する。本明細書において他で先に述べた通り、操作の一環としてエラーが生じるとデータ書込み操作が失敗することがある。
【００４８】
[0057]  ステップ５１２では、データ書込み操作が正常終了したことを通知が示すかどうか確認する。データ書込み操作が正常終了した（「はい」）ことを通知が示す場合、ステップ５１４で、記憶装置に首尾よくコミットされたものとしてデータセットにマーキングする。たとえば、データライタ１１２は、データセットが記憶されるデータキュー１１６を使用して他のデータを記憶すること、たとえばデータセットを他のデータで上書きしてもよいことをデータソータ１１０に通知する。
【００４９】
[0058]  データ書込み操作が正常終了していない（「いいえ」）ことをこの通知が示している場合、このプロセスは、ステップ５０２に戻って、データセットに対する新規のデータ書込み操作を開始する。少なくともいくつかの実装形態では、データセットに対してデータ書込み操作が正常終了した通知を受信するまで、この方法を何度でも実行してよい。
【００５０】
[0059]  図６は、１つまたは複数の実装形態による方法での各ステップを説明する流れ図である。この方法では、１つまたは複数の実装形態に従ってデータ書込み操作用のファイルを識別するための、例示的な手順を説明する。
【００５１】
[0060]  ステップ６００では、データセットに対するデータ書込み操作用のファイルの要求を受信する。たとえば、この要求は、書込み操作用のデータのカテゴリ、書き込まれるデータの（たとえばバイトでの）量、書き込まれるデータの様々な記述的属性など、データ書込み操作についてのパラメータを含む。たとえば、この要求は、図３に関連して先に述べたファイル問合せ３０２を介して実施してもよい。たとえば、この要求は、図４に関連して先に述べた方法に従って生成されたバッファリング済みのデータセットを記憶するためのファイルの要求でもよい。
【００５２】
[0061]  ステップ６０２では、データ書込み操作に利用可能なファイルを識別する。たとえば、ファイルブローカ１１４は、データ書込み操作を受信する候補であるファイル１２０向けのファイルテーブル１１８の索引をスキャンする。少なくともいくつかの実装形態では、ファイルブローカ１１４は、データ書込み操作に関連するデータと同じまたは同様のカテゴリのデータを有するファイルなど、利用可能なファイル１２０のパラメータに、要求からのパラメータをマッチさせる。たとえば、ファイルブローカ１１４は、ファイル問合せ３０２からの書込みパラメータ３０４を、様々なファイル１２０の属性にマッチさせて、この書込みパラメータ３０４のうちの１つまたは複数にマッチするファイルを識別する。データ書込み操作用のファイルを選択するための詳細な手順を以下に説明する。
【００５３】
[0062]  ステップ６０４では、ファイル用のポインタを伝達する。たとえば、ファイルブローカ１１４は、候補ファイルへのポインタ３１０を含む問合せ応答３０８を、データライタ１１２に伝達する。ポインタ３１０は、ファイルのメモリアドレス、ファイルへのリンク（たとえば、ファイルのユニフォームリソースインジケータ（URI）、ファイルのユニフォームリソースロケータ（URL）など）など、候補ファイルにアクセスできるようにする様々な情報を含んでもよい。
【００５４】
[0063]  ステップ６０６では、ファイルへのデータ書込み操作が実行されたとの指示を受信する。たとえば、ファイルブローカ１１４は、データ書込み操作が完了しているとの通知をデータライタ１１２から受信する。
【００５５】
[0064]  ステップ６０８では、データ書込み操作が正常終了しているかどうか確認する。たとえば、ファイルブローカ１１４は、ファイルを検査して、データ破壊、ファイル破壊、データ書込み障害など、データ書込み操作の一環として何らかのエラーが発生したかどうか確認する。データ書込み操作か正常終了しているかどうか判定する例示的な方式を、以下に詳しく述べる。
【００５６】
[0065]  データ書込み操作が正常終了している（「はい」）場合、ステップ６１０では、データ書込み操作が正常終了したとの通知を伝達する。たとえば、ファイルブローカ１１４は、データ書込み操作が正常終了しているとの通知をデータライタ１１２に伝達する。少なくともいくつかの実装形態では、追加のデータセットを記憶装置に書き込むためのバッファ空間を解放するため、データ書込み操作用に使用されるデータを記憶するデータキュー１１６は、正常終了したデータ書込み操作の通知に応答して消去してもよい。
【００５７】
[0066]  データ書込み操作が正常終了していない（「いいえ」）場合、ステップ６１２では、データ書込み操作が失敗したとの通知を伝達する。たとえば、ファイルブローカ１１４は、データ書込み操作の一環としてエラーが発生したと決定すると、データ書込み操作が失敗したことをデータライタ１１２に通知する。少なくともいくつかの実装形態では、図５に関連して先に述べたように、データライタ１１２は、失敗したことを通知するのに応答して、データセット用の別のデータ書込み操作を開始してもよい。
【００５８】
[0067]  図７は、１つまたは複数の実装形態による方法での各ステップを説明する流れ図である。この方法では、１つまたは複数の実装形態に従ってデータ書込み操作用のファイルを選択するための、例示的な手順を説明する。少なくともいくつかの実装形態では、この方法は、図６に関連して先に述べた方法の様々な態様を実施する詳細な方式を説明する。
【００５９】
[0068]  ステップ７００では、データセットに対するデータ書込み操作に既存のファイルが利用可能かどうか確認する。たとえば、ファイルブローカ１１４は、データセット用の１つまたは複数の書込みパラメータにマッチし、このデータセットを記憶するのに利用可能な記憶空間を十分に有するファイル１２０のレコードを、ファイルテーブル１１８が含んでいるかどうか確認する。データセット用の様々な書込みパラメータの例を先に述べた。
【００６０】
[0069]  既存のファイルがデータ書込み操作に利用可能である（「はい」）場合、ステップ７０２では、この既存のファイルを選択する。たとえば、ファイルブローカ１１４は、データセット用の書込みパラメータにマッチするものとしてファイルテーブル１１８内で識別された既存のファイルを選択し、このファイルは、データセットを記憶するのに十分な記憶空間を有し、書込みに利用可能であり、たとえば別のプロセスによってロックされない。
【００６１】
[0070]  既存のファイルがデータ書込み操作に利用可能でない（「いいえ」）場合、ステップ７０４では、データ書込み操作用の書込みパラメータにマッチするタイムアウトしたファイルが識別されるかどうか確認する。少なくともいくつかの実装形態では、タイムアウトしたファイルは、様々な書込み操作のためにロックされたが、その割当て時間を超えてしまったファイルを指す。たとえば、データ書込み操作用のファイルが選択されると、このファイルは、データ読取り／書込み操作など、他のプロセスがそのファイルにアクセスできないようにロックされる。ファイルをロックする一環として、ファイル用のロックタイマが開始する。一般に、ロックタイマは、ファイルへのデータ書込み操作を実行するために、関連するプロセス（たとえばデータライタ１１２）にファイルが貸し出される時間に対応する。ロックタイマには、分、秒などの個別の数での任意の適切な時間を指定してもよい。
【００６２】
[0071]  ロックタイマが期限切れになると、データ読取り／書込み操作用など、他のプロセスがファイルと対話してもよいように、ファイルはタイムアウトしたものとして示してもよい。たとえば、元のタイムアウトしたデータ書込み操作が完了していない場合でも、それとは異なるデータ書込み操作についてタイムアウトしたファイルを取得し、それをロックしてもよい。データ書込み操作が完了し、別のプロセスがファイルを取得する前に、データ書込み操作がタイムアウトする場合、このデータ書込み操作は失敗した可能性があり、したがって、異なるファイルでこの操作を再開（たとえば再試行）してもよい。
【００６３】
[0072]  様々な実装形態によれば、ファイルテーブル１１８は、ロックされたファイルのロックタイマ状況を追跡することができる。したがって、ファイルのロックタイマが期限切れになると、このファイルは、タイムアウトしたものとしてファイルテーブル１１８でマーキングすることができ、したがって、他のデータ書込み操作など他のプロセスからアクセスすることができる。
【００６４】
[0073]  この方法に戻ると、ファイル用の書込みパラメータにマッチするタイムアウトしたファイルが識別される（「はい」）場合、ステップ７０６では、このタイムアウトしたファイルを選択する。ファイル用の書込みパラメータにマッチするタイムアウトしたファイルが識別されない（「いいえ」）場合、ステップ７０８では、書込み操作用の新規ファイルを選択する。たとえば、ファイルブローカ１１４は、特定の記憶装置システム１０６と通信し、データ書込み操作用の書込みパラメータに対応する新規のファイル１２０を作成できるようにする。
【００６５】
[0074]  ステップ７１０では、データ書込み操作用の選択されたファイルをロックする。たとえば、ファイルブローカ１１４は、特定のデータ書込み操作においてロックされたものとして、ファイルテーブル１１８でファイルにマーキングし、その結果、データ書込み操作のみがファイルにアクセスできるようになる。
【００６６】
[0075]  図８は、１つまたは複数の実装形態による方法での各ステップを説明する流れ図である。この方法では、１つまたは複数の実装形態に従って、データ書込み操作が正常終了しているかどうか確認するための、例示的な手順を説明する。少なくともいくつかの実装形態では、この方法は、図７に関連して先に述べた方法の拡張および／または継続を説明する。
【００６７】
[0076]  ステップ８００では、データ書込み操作に使用可能なファイルの通知を伝達する。たとえば、ファイルブローカ１１４は、ポインタ３１０を有する問合せ応答３０８を、データライタ１１２に伝達する。少なくともいくつかの実装形態では、このファイルは、図７関連して先に述べた方法に従って選択されたファイルに対応する。
【００６８】
[0077]  ステップ８０２では、ファイルへのデータ書込み操作が完了しているとの指示を受信する。たとえば、ファイルブローカ１１４は、ファイルへのデータの書込みをデータライタ１１２が終了したとの通知を受信する。
【００６９】
[0078]  ステップ８０４では、ファイルへのデータ書込み操作のロック時間を延長しようとする。たとえば、ファイルブローカ１１４は、ファイルテーブル１１８と対話して、データ書込み操作でのロックタイマに残っている時間を延長しようと試みる。少なくともいくつかの実装形態では、ロックタイマを延長するステップは、現在経過していて、たとえば期限切れになっていないロックタイマに追加時間を加えるステップを含む。ロックタイマを延長するステップはまた、期限切れになったロックタイマをリフレッシュまたは再始動するステップを含む。様々な実装形態によれば、たとえば秒、分など、事前指定された時間だけロックタイマを延長してもよい。別法として、またはさらに、ロックタイマが延長される時間は、様々なデータ書込み属性などに基づいて動的に決定してもよい。このようなデータ書込み属性の例には、データ書込み操作に関わるデータの量、データのタイプ、データの優先順位などが含まれる。
【００７０】
[0079]  ステップ８０６では、ロック時間を延長する試みが成功するかどうか確認する。ロック時間を延長する試みが成功しない（「いいえ」）場合、ステップ８０８では、データ書込み操作が失敗したとの指示を生成する。少なくともいくつかの実装形態では、ロックタイマが期限切れになり、データ書込みおよび／または読取りの操作などにおいて別のプロセスがファイルをロックする場合、ロックタイマを延長する試みが失敗する可能性がある。たとえば、別のプロセスは、データ書込み操作中にタイムアウトしたファイルを「奪う」ことがある。上記参照したように、ロックタイマが期限切れになるファイルは、タイムアウトしたファイルとしてファイルテーブル１１８で示してもよく、したがって、他のプロセス（たとえば、他のデータ書込み操作）が、使用するためこのファイルをロックしてもよい。たとえば、図７に関連して先に述べたステップ７０４を参照されたい。
【００７１】
[0080]  様々な実装形態によれば、ファイルブローカ１１４は、データ書込み操作が失敗したことを、データライタ１１２に通知してもよい。したがって、データ書込み操作に関わるデータは、後続のデータ書込み操作についてマーキングしてもよい。さらに、失敗したデータ書込み操作の一環として書き込まれたファイルの各部分は、後続のデータ書込みに利用可能なものとして示してもよい。たとえば、失敗したデータ書込み操作の一環としてファイルに書き込まれたデータは、このデータがファイル内で永続性をもつようにするコミット操作を受ける必要がない。したがって、このデータは、他のデータで上書きしてもよく、読取り操作などにおいて見えなくてもよい。
【００７２】
[0081]  この方法に戻ると、ロック時間を延長する試みが成功する（「はい」）場合、ステップ８１０では、データ書込み操作に起因するファイルへの変更を持続する。たとえば、ファイルブローカ１１４は、個別の時間だけロックタイマを延長し、その時間においてファイルに対してデータが持続するよう、データにコミット操作を実行できるようにする。様々な実装形態によれば、これにより、他のプロセスに対してデータが見えるようになり、その結果、様々な方式でこのデータを読み取り、および／または処理することができる。
【００７３】
[0082]  ステップ８１２では、ファイルをアンロックする。たとえば、ファイルブローカ１１４は、他のデータ書込み操作に利用可能なものとして、ファイルテーブル１１８でこのファイルにマーキングする。少なくともいくつかの実装形態では、ファイルブローカ１１４は、ファイルに残っている記憶空間の量、ファイルに記憶されたデータのカテゴリなど、ファイルについての状況情報をファイルテーブル１１８で更新してもよい。
【００７４】
[0083]  ステップ８１４では、ファイルに対してデータ書込み操作が持続するとの確認を伝達する。たとえば、ファイルブローカ１１４は、データ書込み操作に関わるデータがファイルに対して持続している（たとえばコミットしている）との通知をデータライタ１１２に伝達する。
【００７５】
[0084]  図９は、１つまたは複数の実装形態による方法での各ステップを説明する流れ図である。この方法では、１つまたは複数の実装形態に従ってデータ書込み操作用のファイルを選択するための、例示的な手順を説明する。少なくともいくつかの実装形態では、この方法は、図６に関連して述べたステップ６０２の詳細な実装形態、および／または、図７に関連して述べた方法に従ってファイルを選択するための実装形態詳細を説明する。
【００７６】
[0085]  ステップ９００では、ファイルの要求に応答して候補ファイルのバッチを識別する。たとえば、ファイルブローカ１１４は、ファイル要求に関連する書込みパラメータにマッチする利用可能な（たとえばアンロックされた）複数のファイルを、ファイルテーブル１１８から識別する。別法として、またはさらに、ファイルブローカ１１４は、ファイル要求に関連する書込みパラメータにマッチするタイムアウトしたファイルを、ファイルテーブル１１８から識別してもよい。様々な実装形態では、ファイルのバッチは、利用可能なファイル、タイムアウトしたファイル、またはその両方の組合せを含んでもよい。
【００７７】
[0086]  ステップ９０２では、候補ファイルのバッチからファイルを無作為に選択する。たとえば、ファイルブローカ１１４は、任意の適切な無作為選択アルゴリズムを利用して、候補ファイルのバッチからファイルの具体例を選択してもよい。少なくともいくつかの実装形態では、無作為のファイル選択は、他のプロセス、たとえば他のデータ書込み操作用のファイルを識別している他のファイルブローカ１１４とのファイル衝突を回避するのに役立つ。
【００７８】
[0087]  ステップ９０４では、選択されたファイルへのポインタを用いて要求に応答する。たとえば、ファイルブローカ１１４は、データ書込み操作の一環として使用するために、ポインタをデータライタ１１２に伝達する。様々なファイルポインタの例を先に述べた。
【００７９】
[0088]  先に提示した様々な例を個々のデータ書込み操作に関連して論じているが、本明細書において述べる各技法は、数多くの様々なデータセットに対して（たとえば同時に）、数多くのデータ書込み操作を開始および管理することができるように拡張性があることを理解されたい。
【００８０】
[0089]  いくつかの例示的な手順を説明してきたが、ここで、１つまたは複数の実装形態による例示的なシステムおよび装置を考察してみる。
【００８１】
[0090]例示的なシステムおよび装置
図１０には、本明細書に記載の様々な技法を実施してもよい、１つまたは複数のコンピューティングシステムおよび／または装置を表す例示的なコンピューティング装置１００２を備える例示的なシステムが、全体として１０００で示してある。たとえば、前述のクライアント装置１０２、ネットワーク制御装置１１８、および／または遠隔構成サービス１２８を、コンピューティング装置１００２として実施することができる。コンピューティング装置１００２は、たとえば、サービスプロバイダのサーバ、クライアントに関連する装置（たとえばクライアント装置）、オンチップシステム、および／または他の任意の適切なコンピューティング装置もしくはコンピューティングシステムでもよい。
【００８２】
[0091]  図示した例示的コンピューティング装置１００２は、処理システム１００４、１つまたは複数のコンピュータ読取り可能な媒体１００６、および１つまたは複数の入力／出力（I/O）インターフェース１００８を備え、これらが互いに通信するように結合されている。図示しないが、コンピューティング装置１００２はさらに、様々な構成要素を互いに結合する、システムバスまたは他のデータおよびコマンド転送システムを備えてもよい。システムバスは、メモリバスもしくはメモリ制御装置、周辺バス、ユニバーサルシリアルバス、および／または、様々なバスアーキテクチャのうち任意のものを利用するプロセッサバスもしくはローカルバスなど、様々なバス構成のうちの任意の１つまたはその組合せを備えることができる。制御ラインやデータラインなど、様々な他の例も企図される。
【００８３】
[0092]  処理システム１００４は、ハードウェアを使用して１つまたは複数の操作を実行するための機能を表す。したがって、処理システム１００４は、プロセッサ、機能ブロックなどとして構成してもよい、ハードウェア要素１０１０を備えるものとして示してある。これは、特定用途向け集積回路、または１つもしくは複数の半導体を使用して形成される他の論理デバイスとして、ハードウェアでの実装を含んでもよい。ハードウェア要素１０１０は、それが形成される元になる材料、または内部で利用される処理メカニズムによって限定されることはない。たとえば、プロセッサは、（1つまたは複数の）半導体および／またはトランジスタ（たとえば、電子的な集積回路（IC））から構成されてもよい。このような事情で、プロセッサ実行可能命令は、電子的に実行可能な命令でもよい。
【００８４】
[0093]  コンピュータ読取り可能な媒体１００６は、メモリ／記憶装置１０１２を含むものとして示してある。メモリ／記憶装置１０１２は、１つまたは複数のコンピュータ読取り可能な媒体に関連するメモリ／記憶装置の容量を表す。メモリ／記憶装置１０１２は、揮発性媒体（ランダムアクセスメモリ（RAM）など）、および／または不揮発性媒体（リードオンリメモリ（ROM）、フラッシュメモリ、光ディスク、磁気ディスクなど）を含んでもよい。メモリ／記憶装置１０１２は、固定媒体（たとえば、RAM、ROM、固定ハードドライブなど）、ならびに取外し可能な媒体（たとえば、フラッシュメモリ、取外し可能なハードドライブ、光ディスクなど）を含んでもよい。以下でさらに述べるように、コンピュータ読取り可能な媒体１００６は、様々な他の方式で構成してもよい。
【００８５】
[0094]  （1つまたは複数の）入力／出力インターフェース１００８は、ユーザが、コマンドおよび情報をコンピューティング装置１００２に入力できるようにし、また様々な入力／出力装置を使用して、情報をユーザおよび／または他の構成要素もしくは装置に提供できるようにする機能を表す。入力装置の例には、キーボード、カーソル制御装置（たとえばマウス）、マイクロホン（たとえば音声認識および／または発声入力）、スキャナ、タッチ機能（たとえば、物理的な接触を検出するように構成された容量センサまたは他のセンサ）、カメラ（たとえば、可視波長または赤外線周波数などの不可視波長を利用して、ジェスチャとして接触を含まない動きを検出する）が含まれる。出力装置の例には、表示装置（たとえば、モニタまたはプロジェクタ）、スピーカ、プリンタ、ネットワークカード、触覚応答装置などが含まれる。したがって、コンピューティング装置１００２は、以下でさらに述べるような様々な他の方式で構成して、ユーザとの対話を支援してもよい。
【００８６】
[0095]  ソフトウェア、ハードウェア構成要素、またはプログラムモジュールの一般的背景において、本明細書で様々な技法を説明することができる。一般に、このようなモジュールには、ルーチン、プログラム、オブジェクト、要素、構成要素、データ構造などが含まれており、これらは、特定のタスクを実行し、または特定の抽象データ型を実装する。本明細書での用語「モジュール」、「機能」、「サービス」、および「構成要素」は、全体としてソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せを表す。本明細書に記載の各技法の特徴は、プラットフォームに依存しないことであり、様々なプロセッサを備える様々な市販のコンピューティングプラットフォーム上に、これらの技法を実装してもよいことを意味する。
【００８７】
[0096]  説明したモジュールおよび技法の一実装形態は、何らかの形のコンピュータ読取り可能な媒体上に記憶または伝送してもよい。コンピュータ読取り可能な媒体には、コンピューティング装置１００２がアクセスできる様々な媒体が含まれ得る。一例として、また限定することなく、コンピュータ読取り可能な媒体には、「コンピュータ読取り可能な記憶媒体」および「コンピュータ読取り可能な信号媒体」が含まれ得る。
【００８８】
[0097]  「コンピュータ読取り可能な記憶媒体」は、単なる信号伝送、搬送波、または信号とは本来対照的に、情報を永続記憶できるようにする媒体および／または装置を指してもよい。コンピュータ読取り可能な記憶媒体は、本来、信号を含まない。コンピュータ読取り可能な記憶媒体には、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、論理素子／回路、または他のデータなど、情報を記憶するのに適した方法または技術で実装された、揮発性および不揮発性、取外し可能および取外し不可能な媒体、ならびに／または記憶装置などのハードウェアが含まれる。コンピュータ読取り可能な記憶媒体の例には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（DVD）、もしくは他の光ディスク記憶装置、ハードディスク、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置、または他の記憶装置、有形媒体、または所望の情報を記憶するのに適していて、コンピュータからアクセスできる製品が含まれ得る。
【００８９】
[0098]  「コンピュータ読取り可能な信号媒体」は、ネットワークなどを介して、コンピューティング装置１００２のハードウェアに命令を伝送するように構成された信号搬送媒体を指してもよい。信号媒体は通常、搬送波、データ信号、または他の搬送メカニズムなど変調されたデータ信号内に、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、または他のデータを含んでもよい。信号媒体はまた、任意の情報送達媒体を含む。用語「変調データ信号」は、信号内の情報を符号化するように設定または変更された、その特性のうち１つまたは複数の特性を有する信号を意味する。一例として、それには限定しないが、通信媒体は、有線ネットワークまたは直接配線の接続などの有線媒体、および、音波、無線周波数（RF）、赤外線、他のワイヤレス媒体などのワイヤレス媒体を含む。
【００９０】
[0099]  前述の通り、ハードウェア要素１０１０およびコンピュータ読取り可能な媒体１００６は、命令、モジュール、プログラマブル論理デバイス、および／またはハードウェア形式で実装される固定論理デバイスを表し、実装形態によっては、これらを利用して、本明細書に記載の技法の少なくともいくつかの態様を実施してもよい。ハードウェア要素には、集積回路またはオンチップシステム、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、複合プログラマブル論理デバイス（CPLD）、およびシリコンまたは他のハードウェアデバイスでの他の実装形態の構成要素が含まれ得る。これに関連して、ハードウェア要素は、命令によって規定されたプログラムタスクを実行する処理装置、モジュール、および／またはハードウェア要素によって実施される論理回路、ならびに実行命令を記憶するのに利用されるハードウェア装置、たとえば先に述べたコンピュータ読取り可能な記憶媒体の役割を果たしてもよい。
【００９１】
[00100]  前述の組合せを利用して、本明細書に記載の様々な技法およびモジュールを実装してもよい。したがって、ソフトウェア、ハードウェア、またはプログラムモジュールおよび他のプログラムモジュールは、１つもしくは複数の命令、および／または何らかの形態のコンピュータ読取り可能な記憶媒体上に、および／または１つもしくは複数のハードウェア要素１０１０によって実施される論理回路として実装してもよい。コンピューティング装置１００２は、ソフトウェアおよび／またはハードウェアのモジュールに対応する特定の命令および／または機能を実装するように構成してもよい。したがって、ソフトウェアとしてコンピューティング装置１００２によって実行可能なモジュールの実装は、少なくとも部分的にはハードウェアで実現してもよく、たとえば、コンピュータ読取り可能な記憶媒体および／または処理システムのハードウェア要素１０１０を使用することによって実現してもよい。命令および／または機能は、本明細書に記載の技法、モジュール、および各例を実施するため、１つまたは複数の製品（たとえば、1つもしくは複数のコンピューティング装置１００２、および／または処理システム１００４）によって実行可能／動作可能でもよい。
【００９２】
[00101]  図１０にさらに示すように、例示的なシステム１０００により、パーソナルコンピュータ（PC）、テレビジョン装置、および／またはモバイル装置でアプリケーションを実行すると、シームレスなユーザ体験の環境がいたるところで可能になる。アプリケーションを利用したり、ビデオゲームで遊んだり、ビデオを観たりなどしながら、ある装置から次の装置に遷移するとき、サービスおよびアプリケーションは、共通のユーザ体験のために３つ全ての環境でほぼ同様に実行される。
【００９３】
[00102]  例示的なシステム１０００では、中央のコンピューティング装置を介して、複数の装置が相互接続されている。中央のコンピューティング装置は、複数の装置に対してローカルでもよく、または複数の装置から離れて配置されてもよい。一実施形態では、中央のコンピューティング装置は、ネットワーク、インターネット、または他のデータ通信リンクを介して複数の装置に接続された、１つまたは複数のサーバコンピュータのクラウドでもよい。
【００９４】
[00103]  一実施形態では、この相互接続アーキテクチャによって、複数の装置にわたって各機能を提供して、この複数の装置のユーザに共通のシームレスな体験を実現できるようになる。複数の装置のそれぞれは、様々な物理的要求条件および機能を有してもよく、中央のコンピューティング装置が、プラットフォームを使用して、装置に合わせて調整され、なおかつ全ての装置に共通である体験を装置に提供することを可能にする。一実施形態では、ターゲット装置のクラスが作成され、各体験が、装置の包括的なクラスに合わせて調整される。装置のクラスは、物理的特徴、使用タイプ、または装置の他の共通の特性によって定義してもよい。
【００９５】
[00104]  様々な実装形態では、コンピューティング装置１００２は、コンピュータ１０１４、モバイル１０１６、テレビジョン１０１８の使用など、様々な異なる構成を前提としてもよい。これら構成のそれぞれは、概ね異なる構造および機能を有してもよい装置を備え、したがって、コンピューティング装置１００２は、様々な装置クラスのうちの１つまたは複数に従って構成してもよい。たとえば、コンピューティング装置１００２は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブックなどを含む装置の、コンピュータ１０１４のクラスとして実装してもよい。
【００９６】
[00105]  コンピューティング装置１００２はまた、携帯電話、ウェアラブル装置、携帯用音楽プレーヤ、携帯ゲーム機、タブレットコンピュータ、マルチスクリーンコンピュータなどのモバイル装置を含む装置の、モバイル１０１６のクラスとして実装してもよい。コンピューティング装置１００２はまた、普段の視聴環境では概ね比較的大きい画面を有する、またはその画面に接続された装置を含む装置の、テレビジョン１０１８のクラスとして実装してもよい。これらの装置には、テレビジョン、セットトップボックス、ゲーム機などが含まれる。
【００９７】
[00106]  本明細書に記載の各技法は、コンピューティング装置１００２のこれら様々な構成に対応していてもよく、本明細書に記載の各技法の具体例に限定されるものではない。たとえば、クライアント装置１０２、ネットワーク制御装置１１８、および／または遠隔構成サービス１２８に関連して論じた機能は、以下に述べるようにプラットフォーム１０２２を介して「クラウド」１０２０上などで、分散システムを使用して、その全てまたは一部を実施してもよい。
【００９８】
[00107]  クラウド１０２０は、リソース１０２４用のプラットフォーム１０２２を含み、および／またはそれを表す。プラットフォーム１０２２は、ハードウェア（たとえばサーバ）の基本機能、およびクラウド１０２０のソフトウェアリソースを要約したものである。リソース１０２４には、コンピューティング装置１００２から離れているサーバ上でコンピュータ処理が実行されているときに利用できる、アプリケーションおよび／またはデータが含まれ得る。リソース１０２４はまた、インターネット上で、および／または、携帯電話もしくはＷｉ−Ｆｉ（商標）のネットワークなど、加入者ネットワークを介して提供されるサービスを含むことができる。
【００９９】
[00108]  プラットフォーム１０２２は、コンピューティング装置１００２と他のコンピューティング装置とを接続するための、リソースおよび／または機能を要約したものでもよい。プラットフォーム１０２２はまた、プラットフォーム１０２２を介して実施されるリソース１０２４に対して生じる要求に対応するスケールのレベルを提供するためのリソースのスケーリングを要約する働きをしてもよい。したがって、相互接続された装置の実施形態では、本明細書に記載の機能の実装は、システム１０００全体を通して分散してもよい。たとえば、この機能は、コンピューティング装置１００２上で、ならびにクラウド１０２０の機能を要約するプラットフォーム１０２２を介して部分的に実施してもよい。
【０１００】
[00109]  本明細書において述べる各技法を実行するように実装してもよい、いくつかの方法を本明細書において述べる。各方法の態様は、ハードウェア、ファームウェア、もしくはソフトウェア、またはそれらの組合せで実装してもよい。各方法は、１つまたは複数の装置によって実行される操作を指定する１組のステップとして示してあり、それぞれのブロックによって操作を実行するように示した順序には必ずしも限定されない。さらに、特定の方法に関連して示した操作は、１つまたは複数の実装形態による異なる方法の操作と組み合わせてもよく、および／またはそれと交換してもよい。各方法の態様は、環境１００に関連して先に述べた様々なエンティティ間の対話を介して実施することができる。
【０１０１】
[00110]結論
データ書込み操作用のファイルを識別するための技法を説明する。構造上の特徴および／または方法論的な作用に特有の用語で各実装形態を述べているが、添付の特許請求の範囲に定義された各実装形態は、前述の具体的な特徴または作用に必ずしも限定されるものではないことを理解されたい。むしろ、具体的な特徴および作用は、特許請求の範囲に記載されている実装形態を実施する例示的な形態として開示されている。
【図１】
2017520845.tif 000003
【図２】
2017520845.tif 000004
【図３】
2017520845.tif 000005
【図４】
2017520845.tif 000006
【図５】
2017520845.tif 000007
【図６】
2017520845.tif 000008
【図７】
2017520845.tif 000009
【図８】
2017520845.tif 000010
【図９】
2017520845.tif 000011
【図１０】
2017520845.tif 000012
【国際調査報告】
2017520845.tif 000013
2017520845.tif 000014
2017520845.tif 000015