(57)【特許請求の範囲】
【請求項１】
複数の装置から、複数のレコードと該レコードの各々に関連付けられた時間識別とを含む時系列データのストリームを受信するステップと、
１つ以上のタグを、前記レコードのうちの個々のレコードに関連付けるステップと、
前記ストリームを、複数の連続チャンクへとチャンクにするステップであって、該連続チャンクの各々は複数のレコードを含む、ステップと、
前記時間識別と前記１つ以上のタグとを関連付ける索引を作成するステップと、
前記連続チャンクの各々を、第１のリモートの記憶場所に送信するステップと、
前記索引を第２の記憶場所に記憶するステップと、
を含む方法。
【請求項２】
前記複数の装置は、第１のユーザに関連付けられた第１の物理的場所に関連付けられ、
前記索引のクエリを、第２の物理的場所に関連付けられた第２のユーザから受信するステップと、
前記クエリを満足する１つ以上のレコードを含む１つ以上のチャンクを決定するステップと、
前記第１のリモートの記憶場所から、前記クエリを満足する前記１つ以上のレコードを含む前記１つ以上のチャンクを取り出すステップと、
をさらに含む請求項１に記載の方法。
【請求項３】
取り出された前記１つ以上のチャンクは、前記クエリを満足する前記１つ以上のレコードに対して追加的なレコードを含む、請求項２に記載の方法。
【請求項４】
前記第１の物理的場所は第１の家であり、前記複数の装置は前記第１の家における監視装置であり、前記第２の物理的場所は第２の家である、請求項２又は請求項３に記載の方法。
【請求項５】
１つ以上のモニタリング装置に通信可能に結合される１つ以上のコンピューティング装置であって、前記モニタリング装置の各々は１つ以上のセンサを有し、前記１つ以上のコンピューティング装置は、
前記センサからデータレコードのストリームを受信する通信インターフェースと、
１つ以上のタグを前記データレコード内のオブジェクトに関連付けて、タグ付けされたデータレコードを作成するタグ付けモジュールと、
前記タグと前記タグ付けされたデータレコード内のタイムスタンプとにおける関連付けを含む検索可能な索引を作成する索引付けモジュールと、
前記タグ付けされたデータレコードを複数の連続チャンクに分けるチャンク化モジュールであって、各チャンクは複数の前記タグ付けされたデータレコードを含む、チャンク化モジュールと、
を含む、
システム。
【請求項６】
前記１つ以上のコンピューティング装置に通信可能に結合されて前記連続チャンクを記憶する第１の記憶装置と、
前記１つ以上のコンピューティング装置に通信可能に結合されて前記検索可能な索引を記憶する第２の記憶装置と、
をさらに含む請求項５に記載のシステム。
【請求項７】
前記１つ以上のコンピューティング装置は、前記連続チャンクを暗号化する暗号化モジュールをさらに含む、請求項５又は請求項６に記載のシステム。
【請求項８】
プロセッサによって実行されると、前記プロセッサに、
第１のユーザに関連付けられた第１の場所を監視する監視装置から時系列データのストリームを受信することであって、前記時系列データは、前記監視装置により感知された１つ以上のレコードと、該１つ以上のレコードの個々についての１つ以上のタイムスタンプとを含み、
前記第１の場所に対してローカルの記憶装置に、前記１つ以上のタイムスタンプのうちの個々のタイムスタンプを１つ以上のタグに関連付ける索引を記憶することであって、前記タグの各々は前記１つ以上のオブジェクトの１つ以上の特徴を識別し、
前記時系列データのストリームの少なくとも部分をリモートの記憶装置に記憶させることと、
前記索引のクエリを、前記第１の場所とは異なる第２の場所に関連付けられた第２のユーザから受信することと、
前記クエリに応答して、前記クエリを満足する１つ以上のレコードを含む前記時系列データの１つ以上のセグメントを識別することと、
前記リモートの記憶装置から、前記クエリを満足する前記１つ以上のレコードを含む前記時系列データの前記１つ以上のセグメントを取り出すことと、
を含む動作を実行させる、コンピュータプログラム。
【請求項９】
前記監視装置はカメラを含み、前記レコードは、前記カメラにより捕捉された画像を含む、請求項８に記載のコンピュータプログラム。
【請求項１０】
前記タグは、前記カメラにより捕捉された前記画像内のオブジェクトのテキスト識別子である、請求項９に記載のコンピュータプログラム。
【請求項１１】
前記監視装置は、温度計、近接検出器、又は需給計器のうち、少なくとも１つを含む、請求項８乃至１０のうちいずれか１項に記載のコンピュータプログラム。
【請求項１２】
前記タグは、前記時系列データのストリームと共に受信される、請求項８乃至１１のうちいずれか１項に記載のコンピュータプログラム。
【請求項１３】
前記ストリームの少なくとも一部を記憶させるステップは、前記ストリームをチャンクにすることと、該チャンクを記憶装置に送信することとを含む、請求項８乃至１２のうちいずれか１項に記載のコンピュータプログラム。
【請求項１４】
前記ストリームの少なくとも一部を記憶させるステップは、前記チャンクを圧縮することと、前記チャンクを暗号化することとのうち、少なくとも一方をさらに含む請求項１３に記載のコンピュータプログラム。
【請求項１５】
前記索引は前記チャンクの索引を含む、請求項１３又は請求項１４に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年７月２４日に申請された米国出願第１４／３４０，５１４号の利益を主張するものであり、上記出願は、２０１３年１０月３０日に申請された米国仮出願第６１／８９７，５５５号の利益を主張するものであり、双方の開示全体が、本明細書において参照により援用される。
【０００２】
本開示は、データ管理の技術分野に関する。
【背景技術】
【０００３】
建物、例えば、住宅、倉庫、及びオフィスなどは、ますます、接続された装置で満たされつつある。例えば、監視カメラ、温度センサ、及び／又はモーションセンサが、より一般的になってきている。したがって、こうした装置からのデータを操作するアプリケーションもまた、より普及してきている。しかしながら、上記のアプリケーションにおけるデータ記憶、取り出し、及び共有のためにこれまでに実施又は提案されたシステムは、不十分であり、非効率である可能性がある。
【発明の概要】
【０００４】
本出願は、接続された装置システムにおいてデータを管理するための、例えば、記憶し、操作し、及び／又は取り出すための、改良されたフレームワーク及び方法を説明する。少なくとも１つの例において、本明細書に説明される手法は、ホームモニタリングシステムから受信されたデータを整形し（format）、記憶する。上記ホームモニタリングシステムには、監視カメラ、モーションセンサ、温度センサ、及び同様のものを含み得る。いくつかの例において、上記方法は、データにタグを付け、タグ／データの索引を作成することができる。索引及びデータは、リモートに、例えば、クラウドベースのストレージ上などに記憶されることができる。いくつかの実施において、索引はローカルに取得され、クエリが、データの関連部分を取得する前に、索引に対してローカルに発行される。下記の議論は、接続されたモニタリング装置システムにわたるデータ取り扱いについての上記及び他の非限定的な例を説明する。いくつかの実施は、アプリケーション設計の柔軟性、ユーザ間での情報の共有、及び／又はデータの改良された保護を可能にすることができる。
【０００５】
本発明の概要は、以下に詳細な説明においてさらに説明される概念のうち選択されたものを簡素化された形式で紹介するために提供される。本発明の概要は、請求される対象事項の重要な特徴又は必須の特徴を識別するものではなく、請求される対象事項の範囲を限定するために使用されるべきものでもない。
【図面の簡単な説明】
【０００６】
詳細な説明は、添付図面を参照して説明される。図面において、参照番号のうち最も左の（１又は複数の）桁は、その参照番号が最初に出現する図を識別する。異なる図における同じ参照番号は同様の又は同一の項目を示す。
【図１】本明細書に説明される接続された装置のデータ管理を実施する一例示的環境を表すブロック図である。
【図２】図１の環境に例示されたコンピューティング装置などの一例示的なコンピューティング装置を表すブロック図である。
【図３】接続された装置のデータ管理を実行することができる一例示的な処理アーキテクチャを表すブロック図である。
【図４】接続された装置のデータ取り出しを実行することができる一例示的な処理アーキテクチャを表すブロック図である。
【図５】本明細書に説明される接続された装置のデータ管理を実施する一例示的なデータレイアウトを表すブロック図である。
【図６】本明細書に説明される接続された装置のデータ管理を実施する一例示的なデータレイアウトを表すブロック図である。
【発明を実施するための形態】
【０００７】
本明細書に説明される例は、処理ユニット及びアクセラレータを例として含むリソースを用いて、接続された装置からのデータなどのデータを管理する手法及び構成を提供する。上記リソースは、指定された機能を実施するための専用のプログラミング及び／又は特定の命令でプログラムされたハードウェアを用いて実施されることができる。例えば、リソースは、グラフィックス処理ユニット（ＧＰＵ）とコンピュータ処理ユニット（ＣＰＵ）との場合のように、異なる実行モデルを有することができる。
【０００８】
本開示の実施において、情報を記憶する方法が、複数の装置から、複数のオブジェクトと該オブジェクトの各々に関連付けられた時間識別とを含む時系列データのストリームを受信することを含む。オブジェクトは、例えば、値（例えば、温度値）、画像（例えば、監視カメラから）、及び／又は２値の指標（例えば、モーション検出器からの存在／不在）であり得る。
【０００９】
上記方法は、１つ以上のタグを、オブジェクトの各々に関連付けることをさらに含むことができる。いくつかの実施において、タグは、オブジェクトの属性を説明することができ、検索可能であって、例えば、タグ付けされたオブジェクトを後の日付又は時間において取り出す（retrieve）ことができる。タグは、例えば、装置／センサ上で実行されるアプリケーションによってなどで、装置／センサにおいて適用されることができる。他の実施において、ユーザがタグを手動で入力することができ、あるいは、タグが他の方法で、装置／センサ上以外で、データストリームに関連付けられてもよい。上記方法は、タグ付けされたオブジェクトのストリームを複数の連続チャンクへとチャンクにすることをさらに含むことができ、連続チャンクの各々は、複数の上記オブジェクトを含む。本開示による手法は、チャンクを圧縮し及び／又は暗号化し、チャンクを記憶することができる。いくつかの実施において、上記方法は、データストリームの索引を作成することをさらに含む。索引は、時間識別とタグとにおける関連付けを含むことができ、本開示の方法は、チャンクとは別個に索引を記憶することができる。一例において、チャンクはリモートに記憶されることができ、一方で、索引はローカルに検索される。他の例示的な実施において、ユーザが、索引のローカルクエリを作ることができ、上記方法は、クエリを満足するオブジェクトを有するチャンクを取り出すことができる。
【００１０】
本明細書に説明される手法は、さらに、ユーザ選好を利用してデータを記憶することができる。例えば、ユーザは、関連付けられた装置に由来するデータが他のユーザに利用可能であるかを決めることができる。すなわち、ユーザが、自身に由来する情報へのアクセスを承認することになる。ユーザは、さらに、情報の記憶タイプを選択して、例えば、データをユーザの装置及び／又は記憶制約に合わせることができる。他の態様において、本明細書に説明されるフレームワークに従って記憶されるデータは、機密性があり、改ざんが明白であり（tamper  evident）、及び／又は新鮮であり得る。
【００１１】
データ管理フレームワークの例が、下記の説明及び添付の図面において、さらに詳細に提示される。
【００１２】
本明細書に説明される例は、装置／センサからのデータを維持すること及び操作することに適用可能な手法及び構成を提供する。様々な事例において、本明細書に説明される手法を実行するようにモジュール又はＡＰＩからのプログラミングを介して構成される処理ユニットには、ＧＰＵ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、別のクラスのデジタルシグナルプロセッサ（ＤＳＰ）、又は他のハードウェアロジックコンポーネントのうち、１つ以上を含むことができ、上記は、いくつかの事例において、ＣＰＵにより駆動され得る。限定ではなく、例えば、使用され得る例示的なタイプのハードウェアロジックコンポーネントには、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップ・システム（ＳＯＣ）、複合プログラマブルロジックデバイス（ＣＰＬＤ）等が含まれる。
【００１３】
様々な例、シナリオ、及び態様が、図１〜図６を参照してさらに説明される。
【００１４】
図１は、一例示的な環境１００を示しており、環境１００を使用して、データ記憶及び取り出しを含む、監視システムにおけるデータ管理及び取り扱いを実施することができる。環境１００は、監視されるべき場所に配設された複数のモニタリング装置１０２を含む。示される例では、２つの場所が監視されることになり、ゆえに、２セットのモニタリング装置１０２がある。モニタリング装置１０２は、個々に、センサ１０４と通信インターフェース１０６とを含み、センサ１０４により感知されたオブジェクトと該オブジェクトに関連付けられたタイムスタンプとを含む時系列データのストリームを出力する。例示的なモニタリング装置１０２は、これらに限られないが、カメラ、モーションセンサ、温度センサ、及び同様のものを含み得る。
【００１５】
環境１００は複数のコンピューティング装置１０８をさらに含み、各々が１つ以上のモニタリング装置に関連付けられる。一実施において、各コンピューティング装置１０８は異なるユーザ又は異なる場所に関連付けられる。例えば、モニタリング装置１０２が住宅監視装置である事例において、各住宅はその独自のコンピューティング装置１０８を有する。他の例において、例えば、複数の住宅及び／又は監視装置に対して、単一のコンピューティング装置１０８のみが使用されてもよい。一例において、コンピューティング装置１０８は、例えばホームセキュリティ又は監視会社などの、サードパーティサービスプロバイダに存在し、あるいは他の方法で該サービスプロバイダによって制御されてもよい。
【００１６】
コンピューティング装置１０８は、様々なカテゴリ又はクラスの装置、例えば、従来のクライアントタイプ装置、デスクトップコンピュータタイプ装置、モバイルタイプ装置、専用目的タイプ装置、組み込みタイプ装置、及び／又はウェアラブルタイプ装置などに属し得る。コンピューティング装置１０８は、異なる様々な装置タイプを含むことができ、いかなる特定タイプの装置にも限定されない。コンピューティング装置１０８は、これらに限られないが、モバイルフォンなどの電気通信装置、タブレットコンピュータ、モバイルフォン／タブレットハイブリッド装置、パーソナルデジタルアシスタント（ＰＤＡ）、ラップトップコンピュータ、他のモバイルコンピュータ、ウェアラブルコンピュータ、埋め込みコンピューティング装置、デスクトップコンピュータ、パーソナル（例えば、デスクトップ）コンピュータ、自動車用コンピュータ、ネットワーク対応テレビジョン、シンクライアント、端末、ゲームコンソール、ゲーム用装置、ワークステーション、メディアプレーヤ、パーソナルビデオレコーダ（ＰＶＲ）、セットトップボックス、カメラ、コンピューティング装置に含めるための統合コンポーネント、電化製品、又は任意の他の種類のコンピューティング装置を含み得る。
【００１７】
コンピューティング装置１０８の各々は、少なくとも１つのプロセッサ１１０とメモリ１１２とを有する。１つのプロセッサ１１０と１つのメモリ１１２とだけが例示されているが、複数のプロセッサ１１０、複数のメモリ装置１１２、又は双方があってもよい。プロセッサ１１０は単一の処理ユニット又は複数のユニットであってよく、上記ユニットの各々が複数の異なる処理ユニットを含み得る。プロセッサ１１０は、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタルシグナルプロセッサ、中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、セキュリティプロセッサ等を含み得る。別法として、又はさらに、本明細書に説明される手法のうちいくつか又はすべてが、少なくとも部分的に、１つ以上のハードウェアロジックコンポーネントによって実行されることができる。限定ではなく、例えば、使用され得る例示的なタイプのハードウェアロジックコンポーネントには、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、ステートマシン、複合プログラマブルロジックデバイス（ＣＰＬＤ）、他のロジック回路、システムオンチップ（ＳＯＣ）、及び／又は命令に基づいて動作を実行する任意の他の装置が含まれる。他の能力の中でも、プロセッサ１１０は、メモリ１１２に記憶されたコンピュータ可読命令を取得し及び／又は実行するように構成されることができる。
【００１８】
メモリは、コンピュータ可読媒体のうち１つ又は組み合わせを含み得る。本明細書において使用されるとき、「コンピュータ可読媒体」は、コンピュータ記憶媒体と通信媒体とを含む。
【００１９】
コンピュータ可読媒体には、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報の記憶のために任意の方法又はテクノロジーにおいて実施される揮発性及び不揮発性の、取外し可能及び取外し不能の媒体が含まれる。コンピュータ可読媒体は、これらに限られないが、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ若しくは他のメモリテクノロジー、コンパクトディスクＲＯＭ（ＣＤ‐ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶装置、又はコンピューティング装置によるアクセスのために情報を記憶することに使用することができる任意の他の媒体が含まれる。
【００２０】
対照的に、通信媒体は、搬送波などの変調されたデータ信号に、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを含む。本明細書において定義されるとき、コンピュータ記憶媒体は通信媒体を含まない。
【００２１】
メモリ１１２のコンピュータ可読媒体に記憶される実行可能命令には、例えば、オペレーティングシステム、データ管理フレームワーク１１４、及び／又は、処理ユニット１１０によりロード可能及び実行可能な他のモジュール、プログラム、若しくはアプリケーションを含み得る。別法として、又はさらに、本明細書に説明される機能性は、少なくとも部分的に、アクセラレータなどの１つ以上のハードウェアロジックコンポーネントによって実行されることができる。限定ではなく、例えば、使用され得る例示的なタイプのハードウェアロジックコンポーネントには、ＦＰＧＡ、ＡＳＩＣ、ＡＳＳＰ、ＳＯＣ、ＣＰＬＤ等が含まれる。例えば、アクセラレータは、ＦＰＧＡファブリックに組み込まれたＣＰＵコースを含むＺＹＬＥＸ又はＡＬＴＥＲＡのうちの１つなどの、ハイブリッド装置を表し得る。
【００２２】
図１にさらに例示されるとおり、コンピューティング装置１０８はさらに、例えばネットワーク１２０を介して、互いに、並びにローカル記憶装置１１６及びリモート記憶装置１１８に、通信可能に結合される。
【００２３】
例えば、ネットワーク１２０は、インターネットなどのパブリックネットワーク、機関及び／又は個人のイントラネットなどのプライベートネットワーク、又は、プライベートネットワークとパブリックネットワークとの何らかの組み合わせを含むことができる。ネットワーク１２０は、任意タイプの有線及び／又はワイヤレスネットワークをさらに含むことができ、これらに限られないが、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、衛星ネットワーク、ケーブルネットワーク、Ｗｉ‐Ｆｉネットワーク、ＷｉＭａｘネットワーク、モバイル通信ネットワーク（例えば、３Ｇ、４Ｇ、及び同様のもの）、又はこれらの任意の組み合わせが含まれる。ネットワーク１２０は、インターネットプロトコル（ＩＰ）、トランスミッションコントロールプロトコル（ＴＣＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、又は他のタイプのプロトコルなどの、パケットベース及び／又はデータグラムベースのプロトコルを含む通信プロトコルを利用することができる。さらに、ネットワーク１２０は、スイッチ、ルータ、ゲートウェイ、アクセスポイント、ファイアウォール、基地局、リピータ、バックボーン装置、及び同様のものなどの、ネットワーク通信を容易にし及び／又はネットワークのハードウェア基盤を形成する複数の装置をさらに含むことができる。
【００２４】
いくつかの例において、ネットワーク１２０は、ワイヤレスアクセスポイント（ＷＡＰ）などのワイヤレスネットワークに対する接続を可能にする装置をさらに含むことができる。ネットワークは、電気電子技術者協会（ＩＥＥＥ）８０２．１１標準（例えば、８０２．１１ｇ、８０２．１１ｎ、及び同様のもの）及び他の標準をサポートするＷＡＰを含む、様々な電磁気的周波数（例えば、無線周波数）を通じてデータを送信及び受信するＷＡＰによる接続性をサポートし得る。
【００２５】
ローカル記憶装置１１６は、概して、コンピューティング装置１０８に関連付けられたデータベースなどのメモリ及び／又はデータストレージを参照する。一例において、ローカル記憶装置は、コンピューティング装置１０８のハードドライブ上に記憶されたメモリを参照し得る。いくつかの他の実施において、ローカル記憶装置１１６は、コンピューティング装置１０８のうち１つ以上とネットワークを共有するデータベース及び／又はメモリを参照し得る。ローカル記憶装置１１６は、ファイアウォールについて、コンピューティング装置１０８と同じ側にあり得る。
【００２６】
リモート記憶装置１１８は、概して、コンピューティング装置１０８から遠隔のメモリ及び／又はデータ記憶装置を参照し得る。リモート記憶装置１１８は、別個の場所における記憶装置又はクラウドベースのストレージを含み得る。
【００２７】
例示されるとおり、コンピューティング装置１０８‐１、１０８‐２の双方が、同じ記憶装置１１６、１１８にアクセスすることができる。本開示のいくつかの実施において、１つのコンピューティング装置１０８‐１に関連付けられたユーザが、第２のコンピューティング装置１０８‐２に由来する情報にアクセスすることを承認されることができる。例えば、各コンピューティング装置１０８が、特定の近隣の家と監視カメラを含むモニタリング装置とに関連付けられる事例において、近隣のある家が、隣人の監視カメラからの監視映像をダウンロードし、見ることが可能であり得る。当然ながら、それぞれの装置１０８‐１、１０８‐２の所有者／ユーザは、隣人によるこうしたアクセスを承認する必要があることになる。
【００２８】
図２は、コンピューティング装置１０８をより詳細に示している。例示されるとおり、プロセッサ１１０及びメモリ１１２に対して追加して、コンピューティング装置１０８は、通信インターフェース２０２をさらに含む。通信インターフェース２０２は、装置１０２、１０８と、並びにローカル記憶装置１１６及びリモート記憶装置１１８と通信する。インターフェース２０２は、有線又はワイヤレスのインターフェースなどの、複数の異なるインターフェースを含み得る。さらに、インターフェース２０２は、１つ以上の入出力（Ｉ／Ｏ）インターフェースを含み、コンピューティング装置１０８が入力／出力装置、例えば、周辺入力装置（例えば、キーボード、マウス、ペン、ゲームコントローラ、音声入力装置、タッチ入力装置、ジェスチャの（gestural）入力装置、及び同様のもの）を含むユーザ入力装置、及び／又は周辺出力装置（例えば、ディスプレイ、プリンタ、オーディオスピーカ、触覚に関する（haptic）出力、及び同様のもの）を含む出力装置などと、通信することを可能にすることができる。インターフェース２０２は１つ以上のネットワークインターフェースをさらに含むことができ、このことは、例えば、ネットワークを通じて通信を送信し及び受信するネットワークインターフェースコントローラ（ＮＩＣ）又は他のタイプの送受信器装置を表すことができる。
【００２９】
図２にさらに例示されるとおり、メモリ１１２はオペレーティングシステム２０４を含み、オペレーティングシステム２０４は、装置内の、及び該装置に結合されたハードウェア及びサービスを、他のモジュール、コンポーネント、及び装置の利益のために管理するように構成される。
【００３０】
メモリ１１２はデータ管理フレームワーク１１４をさらに含む。フレームワーク１１４は、プロセッサ１１０上で実行可能な１つ以上のソフトウェア及び／又はファームウェアのモジュール及び／又はＡＰＩを含み、本明細書に説明されるデータ管理機能及び手法を含む様々な機能を実施することができる。モジュール及び／又はＡＰＩはブロック２０６、２０８、２１０、２１２、及び２１４として例示されているが、これは単に一例であり、ブロックの数はより多く又はより少なく変化してもよい。ブロック２０６、２０８、２１０、２１２、及び２１４に関連付けられて説明される機能性は、組み合わせられて、より少ない数のモジュール及び／又はＡＰＩによって実行されてもよく、あるいは、分割され、より多い数のモジュール及び／又はＡＰＩによって実行されてもよい。モジュール／ＡＰＩは、プロセッサ上で実行可能なソフトウェア及び／又はファームウェアであるとして説明されているが、他の例において、モジュールのうち任意のもの又はすべてが、全体として又は部分的に、ハードウェアによって（例えば、ＡＳＩＣ、専用処理ユニット等として）実施されて説明される機能を実行してもよい。
【００３１】
図２の例において、ブロック２０６はタグ付けモジュールを概して表し、該モジュールは、モニタリング装置１０２などのセンサ又は感知装置から受信されたデータストリームにタグを付けるようにプロセッサ１１０をプログラムするロジックを有する。例えば、タグは、データストリーム内の情報のテキスト説明を含むことができる。タグは、アプリケーション固有であってもよい。例えば、データストリームが監視カメラなどのカメラからの画像を含むとき、タグ付けモジュールは、画像内のオブジェクトに対応する１つ以上のタグを適用することができる。例えば、「自動車」、「動物」、及び／又は「人間」などのタグが、こうした特徴を含むデータストリーム内の上記画像に適用されてもよい。いくつかの実施において、タグ付けモジュールはモニタリング装置１０２又はセンサ０１４において動作し得る。こうした実施において、装置１０８は、既にタグ付けされたデータストリームを受信することができる。
【００３２】
ブロック２０８は索引付けモジュールを概して表し、該モジュールは、タグ付けされたデータストリームの索引を作成するように処理ユニット１１０をプログラムするロジックを有する。索引は、データ上のタイムスタンプとデータ内のオブジェクトに関連付けられたタグとの関連付けを含むことができる。索引は検索可能であり、データストリームから別個に維持されることができる。一実施において、索引はローカルに存在すると同時に、データストリームは、クラウドベースのストレージ内などに、リモートに記憶されることができる。
【００３３】
ブロック２１０はチャンク化モジュール（chunking  module）を表し、該モジュールは、データストリームを複数の連続チャンクへと分割するようにプロセッサ１１０をプログラムするロジックを有する。チャンクは、各々、連続した時間についてのオブジェクト／タグペアを包含する。チャンクのサイズは、例えばアプリケーション開発者によって、構成可能であり得る。サイズは様々な要因に基づいてよく、該要因は、これに限られないが、データオブジェクトのサイズを含む。チャンクは、記憶の前に、他の方法で処理されてもよい。例えば、チャンクは、より効率的な記憶のために圧縮されてもよい。チャンクは、具体的に図４を参照して、以下により詳細に説明される。
【００３４】
ブロック２１２は暗号化モジュールを表し、該モジュールは、チャンクを暗号化するように処理ユニット１１０をプログラムするロジックを有する。いくつかの例において、チャンクはリモートに記憶されることが意図され、暗号化モジュールは記憶の前にチャンクを暗号化することができる。例示されていないが、暗号化モジュールは、信頼された鍵サーバ（図示されていない）又は同様のものと通信して、チャンクを暗号化／解読するスキームを確立してもよい。例示的なスキームが、以下により詳細に論じられる。
【００３５】
ブロック２１４はユーザインターフェースモジュールを表し、該モジュールは、ユーザが本明細書に説明されるシステムと相互作用するために１つ以上のインターフェースのディスプレイに命令するように処理ユニット１１０をプログラムするロジックを有する。例えば、上記モジュールは、ディスプレイ又は他のユーザインターフェースと関連して、ユーザがデータストリームに対して規則を設定することを可能にするインターフェースを提供することができる。例えば、インターフェースを通して、ユーザは、チャンクサイズを定義し、チャンクのために使用される記憶装置のタイプを規定し、あるいはデータストリームに対する他の属性又はポリシーを入力することができる。
【００３６】
他の実施において、ユーザインターフェースモジュールは、さらに、上記で説明された索引付けモジュールによって作成された索引などの索引をユーザが問い合わせることができるインターフェースを容易にすることができる。いくつかの実施において、索引は、ユーザの装置からのデータストリームに関連付けられることができ、一方、別の実施において、索引は、他の、すなわち、ユーザにより所有／稼働されていないモニタリング装置からの、データストリームに関連付けられることができる。例えば、ある住宅所有者が、近隣における他の住宅からの監視映像の索引を問い合わせることができ得る。当然ながら、ユーザ及び隣人は、自身の映像をアクセス可能にするか又はプライベートを保たせることを可能にするオプションを有することになる。こうしたオプションは、ユーザインターフェースモジュールによって容易にされた制御を通して行使されることができる。さらに、チャンクは暗号化されてもよく、ユーザは、例えば鍵の受信を通して、データにアクセスすることを承認される。
【００３７】
複数のモジュールがコンピューティング装置１０８のメモリ１１２に存在するものとして例示されたが、このことは必要とはされない。上記モジュールのうちいくつか又はすべてが、コンピューティング装置１０８以外に存在してもよい。例えば、タグ付けモジュール、又は同様のタグ付けスキームを実行するモジュールが、モニタリング装置１０２において実施されてもよく、したがって、モニタリング装置１０２から出力されるストリームは、タグを既に含む。同様に、タグ付けは、モニタリング装置１０２とコンピューティング装置１０８との間のアプリケーション動作によって行われてもよい。同様の変更が、本開示の利益と共に、当業者に明らかになるであろう。
【００３８】
例示されているコンピューティング装置１０８はバス２１６をさらに含み、いくつかの事例において、バス２１６は、システムバス、データバス、アドレスバス、ＰＣＩバス、ミニＰＣＩバス、並びに任意の様々なローカルの、ペリフェラルの、及び／又は独立のバスうち、１つ以上を含み得る。バス２１６は、コンピュータ可読媒体１１２を処理ユニット１１０に動作可能に接続することができる。
【００３９】
図３は、データ管理を容易にするようにデータ管理フレームワークが実行することができる処理の、一例示的なアーキテクチャ３００を表すブロック図である。いくつかの例において、データ管理フレームワーク１１４は、すべての処理を実行することになる。他の実施において、アーキテクチャ３００のうちいくつか又はすべてが、装置１０２において、又は他の場所で実行されてもよい。
【００４０】
アーキテクチャ３００は、概して、上記で説明された感知装置１０４から受信されたデータなどの、センサデータ３０２を含む。例示的な実施において、センサデータ３０２は、各レコードがタイムスタンプと１つ以上のタグ値とのペアを有する、データストリームである。例えば、データストリームは、＜タイムスタンプ，＜値１＞，［＜値２＞，．．．］＞の形式を取ることができる。このタイプのデータは、単一のライタ、例えばモニタリング装置１０２によって書かれてもよい。単一のライタは、新しいデータを生成するだけでもよく、例えば、ライタは、ランダムアクセス更新又は削除を実行しなくてもよい。
【００４１】
アーキテクチャ３００は、３０４において、センサデータ３０２にタグを付けることを含む。タグは、概して、データストリーム内のデータのオブジェクトタイプに関する情報を含むことができる。例えば、監視カメラからのデータストリームについて、タグは、「動物」、「人間」、「自動車」、及び同様のものを含み得る。エネルギーデータ解析システムにおいて、タグは、「加熱消費」、「水消費」、及び同様のものを含み得る。こうして、タグは、アプリケーション固有であり得る。センサデータにタグを付けるアプリケーションは、モニタリング装置１０２上で、コンピューティング装置１０８上で、又は他のいずれかの場所で実行されることができる。
【００４２】
３０８において、アーキテクチャ３００は、タグ付けされたセンサデータを受信する。本開示の例示的な実施において、タグを有するデータストリームは、＜タイムスタンプ，＜タグ１，値１＞，［＜タグ２，値２＞，．．．］＞の形式を有する。別個のストリームが、複数の異なる基準によって識別可能であり得る。例えば、ストリームは、３つのタプル（three-tuple）、すなわち、＜ＨｏｍｅＩＤ，ＡｐｐＩＤ，ＳｔｒｅａｍＩＤ＞によって一意に識別されることができる。上記で述べられたとおり、アーキテクチャ３００は、装置１０８においてセンサデータ３０４にタグを付けることを含み得る。
【００４３】
アーキテクチャ３００は、３０６において、データ管理情報を受信することをさらに含む。データ管理情報は、概して、感知装置１０２から受信されたデータストリームが取り扱われるやり方を制御することになる任意の情報を含む。データ管理情報は、プログラマによって、ユーザによって、及び／又はいずれかの他の人若しくは手段によって決定されてよい。
【００４４】
いくつかの例において、データ管理情報は、データストリームのタイプを識別することができる。いくつかの実施において、データストリームのタイプは、データストリームに包含されるデータ値のサイズに基づいて区別することができる。例えば、温度値及び存在／不在指標は、一般に、画像及びビデオストリームよりかなり小さい。したがって、いくつかの実施は、小さいデータ値と大きいデータ値との間で区別することになる。
【００４５】
データ管理情報は、別法として、又はさらに、データストリームが記憶されるべき場所を指定することができる。例えば、データストリーム、データストリームの一部、又はデータストリームに関連付けられた情報（例えば、索引、タグ、及び同様のものなど）が、ローカルに及び／又はリモートに記憶されることができる。さらに、データのうちいくらか又はすべてが、複製されてもよい。
【００４６】
データ管理情報は、別法として、又はさらに、データストリーム又は同様のものなどのデータが保護されるべきかを指定することができる。例えば、データは暗号化されてもよく、あるいは、保護されていなくてもよい。さらに、多数の暗号化スキームのうちの１つ以上が、データ管理情報によって指定されてもよい。
【００４７】
データ管理情報は、さらに、又は別法として、データへのアクセスに関する情報を含むことができる。一例において、ユーザが、他のアプリケーション又はユーザに対して、データストリーム又は関連付けられた情報に対する読み出しアクセスを承諾し、あるいは取り消すことができる。例えば、上記情報は、あるユーザに関連付けられた装置１０２からのデータが他のユーザと共有されるべきかを命令することができる。ここで説明されたデータ管理情報は、単に例を提供することが意図される。データについての他の属性がデータ管理情報の中に記憶されてもよい。
【００４８】
３１０において、アーキテクチャ３００は、タグ付けされたセンサデータをチャンクにする（chunks）。上記で述べられたとおり、データは、連続したタイムスタンプのオブジェクトエントリから成るデータストリームを含む。データレコードが、ストリームごとにログに記録されることができ、このことは、効率的なアペンド専用書き込み（append-only  writes）を可能にすることができる。本明細書において使用されるとき、チャンクは、いくらかの長さ又はレコードの連続シーケンスで形成される。本開示の態様に従い、チャンクは、記憶及び取り出しのためのデータの伝送の基本単位である。例えば、データライタが、個々のレコードに代わってチャンクをアップロードし、リーダが、チャンクを取得する（fetch）。いくつかの事例において、例えば、単一の既知のレコードにのみ関心があるため、チャンクを取り出すことが非効率である可能性がある。しかしながら、より頻繁に、時間ウィンドウからのすべてのレコードに関心があり、チャンクは、時間的局所性を有する共通のクエリをより効率的にすることを、経験が示している。
【００４９】
３１２において、チャンクは、圧縮され、かつ／あるいは暗号化されることができる。圧縮すること及び／又は暗号化することに対する命令が、３０６において受信されるデータ管理情報に包含されてもよい。一般に、チャンクを圧縮することは、伝送及び記憶効率を向上させる。一例示的な暗号化スキームにおいて、所有者（すなわち、装置１０２又は装置１０８の所有者）により生成される暗号鍵を使用して、チャンクが暗号化される。さらに、上記暗号鍵を使用して、索引が暗号化されてもよい。上記の例は、ゆったりした取り消し（レイジーリボケーション）（lazy  revocation）を使用して暗号法動作の計算オーバーヘッドを低減させる。レイジーリボケーションは、追い払われたリーダが将来のコンテンツにアクセスすることのみ防止する。リボケーションの前のコンテンツは、上記リーダによってすでにアクセスされ、キャッシュされている可能性があるからである。さらに、上記の例において、ハッシュベースの鍵の回帰（キーリグレッション）（key  regression）が、鍵管理スキームとして使用される。このスキームは、どのリーダがすべての事前の鍵を導出してコンテンツを解読することができるかに基づいて、所有者が、承認されたリーダと、最も直近の鍵のみ共有することを可能にする。上記の例において、信頼された鍵サーバを使用して、鍵が配布されてもよい。こうして、いったんストリームがオープンされると、すべての後続の読み出し及び書き込みが、記憶サーバとアプリケーションとの間で直接発生する。さらに、上記の例において、所有者はストリームコンテンツのハッシュを生成することができ、上記ハッシュはリーダによって検証されることができる。ストリームメタデータの一部として鮮度時間ウィンドウを含むことによって、鮮度がチェックされることができる。このウィンドウは、データが新鮮であると見なされ得るときまでの時間を表すことができ、こうした時間は、所有者が新しいデータの生成を予期する周期性に基づくことができる。時間ウィンドウは、３０６において受信されるデータ管理情報の一部であってもよい。所有者は、周期的に時間ウィンドウを更新し、署名することができ、このことを、ストリームがいつオープンされるかに対して、リーダがチェックすることができる。
【００５０】
３１４において、アーキテクチャ３００は、ストリーム内のチャンクの索引を作成する。索引は、例えば時間及び／又はタグによって、検索可能である。
【００５１】
３１６及び３１８において、チャンク及び索引はそれぞれ記憶される。本開示の実施において、チャンクは、例えばリモート記憶装置１１８上に、リモートに記憶され、索引は、例えばローカル記憶装置１１６上に、ローカルに記憶され、あるいは他の方法で利用可能である。いくつかの実施において、索引はリモート記憶装置から取得され、コピーがリーダ及びライタにおいてローカルに記憶される。データは、依然としてリモートに存在してもよい。索引をローカルに記憶することによって、エンドポイントにおけるクエリが、ローカル索引に対して作られることができる。チャンクの識別がローカルでされることができるため、リモート記憶装置において計算（クエリエンジン）は必要とされない。こうした実施において、記憶サーバは、データ読み出し／書き込みＡＰＩを提供するだけでもよい。このことは、記憶システムのコストを低減させることができる。
【００５２】
さらに、索引とチャンクとを別個に記憶することは、データ管理フレームワーク１１４が記憶サーバについてのその信頼の仮定を緩めることを可能にすることができる。例えば、チャンクを暗号化することによって、いくつかの実施は、データ機密性を損なうことなしに、信頼されていないリモートの、例えばクラウドの、プロバイダをサポートすることができる。チャンクは、アップロードにおいて暗号化され、ダウンロードの後に解読されてもよい。リモート記憶装置においてルックアップが行われてもよいが、こうした配置は、記憶装置プロバイダがより多くの情報を有し、潜在的にチャンクのセキュリティを減少させることを恐らく要することになる。
【００５３】
いくつかの実施において、書き込まれるデータのみが、既存のストリームにアペンドされる新しいデータであるため、ストリームは、かなり大きく成長する可能性がある。上記で説明されたチャンク化及び記憶手法は、効率的な問い合わせを依然として可能にすると同時に、ストリームの連続部分をセグメントへとアーカイブすることをサポートする。各チャンクの記憶場所は構成されることができ、同じストリーム内のデータが異なる記憶装置プロバイダにわたって記憶されることが可能になる。ゆえに、本開示の様々な実施において、ストリームは、ローカルに又は信頼されていないサーバ上にリモートに記憶され、信頼性のために複製され、かつ／あるいはコスト効率性のために複数の記憶装置プロバイダにわたってストライプにされる（striped）ことができる。上記フレームワークを使用するアプリケーションは、スペース、パフォーマンス、コスト、及び信頼性の記憶要件に優先順位をつけることができ得る。
【００５４】
図４は、データ管理フレームワークにおけるデータの取り出しを容易にするようにデータ管理フレームワークが実行することができる処理の一例示的なアーキテクチャ４００を表すブロック図である。いくつかの例において、データ管理フレームワーク１１４は、すべての処理を実行することになる。他の実施において、アーキテクチャ４００のうちいくつか又はすべてが、装置１０２において、又は他の場所で実行されてもよい。
【００５５】
４０２において、アーキテクチャ４００は、索引のクエリを受信する。いくつかの例において、クエリは、３１４において作成される索引などのローカル索引に対して作られる。別法として、又はさらに、クエリは複数の索引に対して行われてもよい。索引は、任意数のモニタリング装置１０２からのストリームから成ってもよく、該ストリームは、適切な認証を仮定して、問い合わせているユーザ以外のユーザに関連付けられた装置に関連付けられたストリームを含み得る。例示されていない、４０２に対する事前のカーソルが、索引をローカルに受信することであり得る。例えば、索引、又は、索引のより新しいバージョンが、リモートに記憶される場合である。他の実施において、１つの索引が、すべてのセンサからのすべてのデータストリームに関する情報を含んでもよく、検索は、該索引に対して行われる。
【００５６】
索引は、少なくとも、索引付けされたデータに関する時間及びタグ情報を含み得る。したがって、クエリは、特定の時間期間からのエントリ、若しくは特定のタグでタグ付けされたエントリ、又は双方を要求することができる。索引は、クエリを介して検索可能であり得る追加情報をさらに記憶してもよい。
【００５７】
４０４において、アーキテクチャ４００は、クエリを満足する情報を包含する１つ又は複数のチャンクを決定する。いくつかの例において、クエリへの応答において、個々のレコードは検索されない。代わって、複数のレコードを包含するチャンクが返される。チャンクの性質のため、決定されたチャンクは、クエリを満足するレコードに対して追加で、検索クエリにマッチしない１つ以上のレコードを包含し得る。
【００５８】
４０６において、アーキテクチャ４００は、４０２において作られたクエリを満足するレコードを含むよう、４０４において決定された１つ以上のチャンクを要求する。いくつかの例において、チャンクは、クラウドベースのストレージシステムなどにリモートに記憶され、ゆえにチャンクは、リモートの記憶システムから要求される。他の実施において、チャンクは、その他の方法で記憶装置から取り出されてもよい。
【００５９】
４０８において、要求されたチャンクはアーキテクチャ４００によって受信され、必要とされる場合、４１０において、チャンクは解読される。上記で論じられたとおり、チャンクを暗号化することは、特にローカルに索引が記憶され、すべてのクエリが行われるとき、リモート記憶装置におけるより緩くされたセキュリティ標準を容易にし得る。
【００６０】
アーキテクチャ３００、４００の例示的な実施は、複数のストリームＡＰＩを用いて実行されることができる。一実施に従うこうしたストリームＡＰＩには、下記が含まれる。
【００６１】
【表１】
0006426174.tif 000002
上記の例示的な実施において、アプリケーションは、＜ＨｏｍｅＩＤ，ＡｐｐＩＤ＞ペアによって識別され、読み出し又は書き込みを行うプリンシパルである。アプリケーションは、例えば、装置１０８上に記憶され、かつ／あるいは装置１０８上で実行されることができる。上記の例では、ｃｒｅａｔｅ及びｏｐｅｎにおいて、アプリケーションはポリシーを指定する。上記ポリシーは、ストリームのタイプ、記憶場所、並びに保護及び共有要件を含み得る。他の例において、追加の又は他のポリシーがアプリケーションによってさらに指定されてもよい。さらに、複数の例が、アプリケーションがポリシーを指定することを説明しているが、ユーザ、例えば所有者などが、ポリシーを指定してもよい。上記の例において、２つのタイプのストリーム、すなわち、ＶａｌｕｅＳｔｒｅａｍ又はＦｉｌｅＳｔｒｅａｍが指定され得る。この実施において、ＶａｌｕｅＳｔｒｅａｍは、温度読み出しなどの小さいデータ値に有用であり、ＦｉｌｅＳｔｒｅａｍは、画像又はビデオなどのより大きい値に有用である。２つのストリームは別様に記憶されてもよい。
【００６２】
上記の例示的な実施において、各ストリームは、１つのライタ（例えば、所有者）と１つ以上のリーダとを有する。ライタは、ａｐｐｅｎｄを用いてストリームに時間・タグ・値レコードを追加する。レコードは、複数のタグ・値ペアと１つの値のための複数のタグとを有することができる。タグ及び値は、一例示的な実施においてＩＫｅｙ及びＩＶａｌｕｅインターフェースを実施する、アプリケーションにより定義されたタイプであり、ハッシュすること、比較すること、及び／又はシリアライズすることを可能にする。さらに、上記の実施において、ライタは、他のアプリケーションに対して／他のアプリケーションからの、読み出しアクセスを承諾し（ｇｒａｎｔ）、取り消す（ｒｅｖｏｋｅ）ことができる。リーダは、タグ及び時間を用いて、データをフィルタし、問い合わせることができる（ｇｅｔ＊）。上記で列挙され説明されたＡＰＩは、最新の（latest）レコード、あるタグについての最新のレコード、時間範囲及びサンプリングクエリ、並びに複数タグにおける範囲クエリについて、問い合わせることをサポートする。このフレームワークにおいて、範囲クエリはイテレータを返し、該イテレータは、アクセスされたときにオンデマンドでデータを取得する。
【００６３】
上記の例示的な実施において、所有者は、新しいデータストリームを最初作成し、それに対してデータレコードをアペンドする。図５は、ストリームのデータレイアウト５００を例示している。このストリームは、住宅又は他の建物の外部に設置され得るセキュリティカメラなどの監視カメラからの情報についてのＶａｌｕｅＳｔｒｅａｍに関する画像データを含む。図示されるとおり、５００は、データレコードのログ５０２と索引５０４とを含み、索引５０４は、タグ５０６をデータ項目識別子５０８のリストにマップする。この例において、項目識別子５０８は固定サイズのエントリであり、索引の中の項目識別子のリストは時間（例えば、タイムスタンプｔｓ）でソートされる。この配置は、範囲及びサンプリングクエリについて、効率的な２値検索を可能にすることができる。この例示的な配置において、索引はメモリ常駐であり、ファイルによって裏付けられ（backed）てもよい。ログ５０２の中のレコードは、ディスク上に、例えばリモートに記憶され、アプリケーションによって参照されるときに取り出されることができる。ログ５０２は、連続したデータレコード５１２のチャンク５１０へと分割される。チャンク５１０は、サイズにおいて固定されてもよい。
【００６４】
時間と共に大きく成長する可能性がある索引のメモリフットプリントを低減するために、ストリームはアーカイブされてもよい。いくつかの例において、ストリームはセグメント化され、各セグメントはその独自のログと対応する索引とを有する。ゆえに、ストリームは、セグメントについての時間で順序付けされたリストとして見ることができる。この例において、メモリにおける索引のサイズが、構成可能な閾値（ｉｎｄｅｘｔｒｅｓｈ）を超える場合、最新のセグメントは封印され（sealed）、その索引はディスクにフラッシュされ、メモリ常駐の索引を有する新しいセグメントが作成される。このフレームワークにおいて、ストリームに対する書き込みは最新のセグメントに進み、ストリームのすべての他のセグメントは読取専用エントリである。ストリームの最新セグメントの索引は、メモリ常駐とすることができ、例えばリモートに記憶され、ファイルによって裏付けられてもよい。
【００６５】
図６には、封印されたセグメントのレイアウトが示されている。図６は、コンパクトな索引６０２がローカルの記憶のために作成されていることを除き、図５と同様である。コンパクト索引６０２は、タグ５０６と、各タグについての、対応する項目識別子リスト内の最初及び最後の識別子のタイムスタンプ（ｔｓ）と、索引内での該リストの場所とを含む。この例において、コンパクト索引がローカルに記憶され、索引５０４がさらにディスクに記憶されてもよい。いくつかの実施において、索引はリモートに記憶されてもよいが、ローカルクエリのためにローカルに取得されることができる。
【００６６】
次に、一例に従うストリームデータのアップロードが説明される。説明される例において、各々のプリンシパル（principal）（例えば、＜ＨｏｍｅＩＤ，ＡｐｐＩＤ＞ペア）は、秘密・公開（private-public）鍵ペアに関連付けられることができ、各ストリームは、秘密鍵Ｋｃｏｎで暗号化されることができる。秘密鍵は、所有者によって生成されることができる。ストリームが同期され、あるいはクローズされるとき、フレームワークは、ディスクに対して索引をフラッシュし、セグメントログをチャンクにし、チャンクを圧縮し及び暗号化し、チャンクのリスト、本明細書においてＣｈｕｎｋＬｉｓｔを生成することができる。ＣｈｕｎｋＬｉｓｔは、各セグメントについての、セグメント内のすべてのチャンクについての順序付けされたリストと、該チャンクの対応するハッシュ（図６においてハッシュ（チャンク＃１）、ハッシュ（チャンク＃２）等として示されている）である。上記の機能は、好ましくは、データアペンドに起因して変更されている可能性があるすべての新しいセグメントに対して実行される。
【００６７】
上記の例において、フレームワークは、ストリームの完全性メタデータ（ＭＤｉｎｔ）を生成して、ストリームデータと共にアップロードする。ｎが、ストリーム内のセグメントの数であるとき、ＭＤｉｎｔは、下記のとおり、式（１）に従って計算される。
【００６８】
【数１】
0006426174.tif 000003
ＴＴＬは、データ鮮度に対する保証を提供し、ゆえに、記憶サーバから取得されたデータが、構成可能なライタ指定の一貫性期間より古くなく、いかなる事前に取り出されたデータよりも古くないことを確保することができる。ＭＤｉｎｔは、所有者がデータ鮮度（ＴＴＬ）を保証する継続時間と、セグメントごとの索引及びＣｈｕｎｋＬｉｓｔのハッシュとの、署名されたハッシュである。チャンク、更新されたＣｈｕｎｋＬｉｓｔ、及び変更された索引は、記憶サーバに対してアップロードされることができる。その後、ＭＤｉｎｔがアップロードされてもよい。それから、ストリームメタデータはメタデータサーバにアップロードされてもよい。メタデータサーバは、承認されていない更新を防止する、信頼された鍵サーバであり得る。メタデータ／鍵サーバは、鍵と、ストリームのメタデータとを配布することができる。他の実施において、メタデータサーバ上に記憶される情報は、２ｆ＋１のサーバ上に複製されて、最大ｆの悪意のあるサーバに耐えることができる。別法として、ビザンチンクォーラムシステム（Byzantine  quorum  system）が採用されてもよい。
【００６９】
メタデータ／鍵サーバは、使用されるとき、プリンシパル対公開鍵のマッピングと、データを暗号化し及び解読するための対称コンテンツ鍵（Ｋｃｏｎ）と、データに対するアクセスを有するプリンシパル（所有者を含む）と、ＭＤｉｎｔの場所と、セグメントごとの場所及び鍵バージョンとを維持し得る。Ｋｃｏｎは、記憶のために暗号化されてもよく、公開鍵を用いてストリームに対するアクセスを有する各プリンシパルについて１つのエントリがあり得る。
【００７０】
アプリケーション読み出しアクセスを承諾するために、一実施において、所有者は、リーダの公開鍵を用いて暗号化されたＫｃｏｎを用いてストリームメタデータを更新する。読み出しアクセスを取り消すことは、上記で説明されたＡＰＩを用いてストリームメタデータを更新することをさらに含む。一実施において、所有者は、アクセス者のリストから適切なプリンシパルを除去し、暗号化されたコンテンツ鍵を除去し、すべての有効なプリンシパルのためのコンテンツ鍵及び鍵バージョンをロールフォワードする。この例において、セグメント内のすべてのチャンクが、同じバージョンのコンテンツ鍵を用いて暗号化される。
【００７１】
チャンクからストリームデータを読み出すために、フレームワークは、ストリームをオープンし、ストリームメタデータを取得し得る。それから、この情報を用いて、ストリームの完全性メタデータＭＤｉｎｔは、例えば、信頼されていない記憶装置から取得され得る。完全性メタデータは、所有者の公開鍵を用いて検証されることができ、鮮度は、ＭＤｉｎｔ内のＴＴＬを用いて検証されることができる。それから、リーダは、ストリームのセグメントごとの索引及びＣｈｕｎｋＬｉｓｔを取得し、その完全性をＭＤｉｎｔを用いて検証する。
【００７２】
所有者は、索引データの完全性を検証するにおいて、ストリーム内に新しいデータレコードを記憶することができる。リーダにおいて、すべてのセグメントの索引及びＣｈｕｎｋＬｉｓｔ完全性検証が完了すると、索引を使用して、取得されるべきチャンクが識別される。上記で説明されたとおり、この例において、チャンクレベル完全性は、例えば、チャンクをダウンロードすることとその完全性をセグメントのＣｈｕｎｋＬｉｓｔを用いて検証することとによって、ゆったりと（lazily）チェックされる。この例において、検証されたチャンクは解読され、かつ／あるいは解凍されてもよく、チャンクは、後続の読み出しのためにローカルに、例えばキャッシュに記憶されてもよい。上記で述べられたとおり、取り出されたチャンクは、クエリにより実際に要求された情報に対して追加的な情報を有し得る。より具体的に、各チャンクは複数のレコードを有することがあり、該レコードのうちいくつかがクエリを満足し、該レコードのうちいくつかは満足しない可能性がある。ゆえに、チャンクがキャッシュに記憶されるとき、後続の異なるクエリもまた、キャッシュされたチャンクによって満足され、要求された情報のより効率的な取り出しをもたらす可能性がある。
【００７３】
上記で説明されたシステムなどの例示的なシステムは、．ＮＥＴフレームワークｖ４．５上でＣ＃を用いて実施されてもよい。上記の例示的な実施は、ＨｏｍｅＯＳプラットフォームに統合されてもよいが、さらに、独立のライブラリとして使用されてもよい。クライアントライブラリは、データのシリアライゼーションに対してＰｒｏｔｏｃｏｌ  Ｂｕｆｆｅｒを使用してもよく、リモート記憶装置に対してＷｉｎｄｏｗｓ  Ａｚｕｒｅ及びＡｍａｚｏｎ  Ｓ３を使用することが可能であり得る。実施は、リモートにデータを読み出し及び書き込むためのそれぞれのライブラリを使用してもよい。いくつかのタイプのリモート記憶装置において、各セグメントはコンテナにマップされることができ、データの索引及びログがブロブ（blob）にマップされ、個々のチャンクはデータのログを包含するブロブの一部にマップされる。別のタイプのリモート記憶装置において、各セグメントはバケットにマップされ、索引はオブジェクトにマップされ、ログのチャンクは個々のオブジェクトにマップされる。
【００７４】
例示的な節
Ａ：複数の装置から、複数のレコードと該レコードの各々に関連付けられた時間識別とを含む時系列データのストリームを受信するステップと、１つ以上のタグを、上記レコードのうちの個々のレコードに関連付けるステップと、上記ストリームを、複数の連続チャンクへとチャンクにするステップであって、上記連続チャンクの各々は複数のレコードを含む、ステップと、上記時間識別と上記１つ以上のタグとを関連付ける索引を作成するステップと、上記チャンクの各々を、第１のリモートの記憶場所に送信するステップと、上記索引を第２のローカルの記憶場所に記憶するステップと、を含む方法。
【００７５】
Ｂ：上記複数の装置は、第１のユーザに関連付けられた第１の物理的場所に関連付けられ、上記索引のクエリを受信するステップと、上記クエリを満足する１つ以上のレコードを決定するステップと、上記第１のリモートの記憶場所から、上記クエリを満足する上記１つ以上のレコードを含む１つ以上のチャンクを取り出すステップと、をさらに含む段落Ａに記載の方法。
【００７６】
Ｃ：上記クエリは、時間的要件又はタグ識別のうち少なくとも１つを含む、段落Ａ又はＢのいずれかに記載の方法。
【００７７】
Ｄ：取り出された上記チャンクは、上記クエリを満足する上記１つ以上のレコードに対して追加的なレコードを含む、段落Ａ乃至Ｃのうちいずれか１つに記載の方法。
【００７８】
Ｅ：ユーザが上記索引を問い合わせることができるためのユーザインターフェースの提示を命令するステップ、をさらに含み、上記索引のクエリを受信するステップは、上記ユーザインターフェースとのユーザインタラクションに基づく、段落Ａ乃至Ｄのうちいずれか１つに記載の方法。
【００７９】
Ｆ：上記第１の物理的場所は第１の家であり、上記複数の装置は上記第１の家における監視装置であり、上記第２の物理的場所は第２の家である、段落Ｂ乃至Ｅのうちいずれか１つに記載の方法。
【００８０】
Ｇ：上記索引は上記レコードがない（free  of）、段落Ａ乃至Ｆのうちいずれか１つに記載の方法。
【００８１】
Ｈ：コンピュータ実行可能命令を有するコンピュータ可読媒体であって、上記コンピュータ実行可能命令は、段落Ａ乃至Ｇのうちいずれか１つに記載の方法を実行するようにコンピュータを構成する、媒体。
【００８２】
Ｉ：段落Ａ乃至Ｇのうちいずれか１つに記載の方法を実行するようにコンピュータを構成するコンピュータ実行可能命令を有するコンピュータ可読媒体と、段落Ａ乃至Ｇのうちいずれか１つに記載の方法を実行する命令を実行するように適合された処理ユニットと、を含む装置。
【００８３】
Ｊ：１つ以上のモニタリング装置に通信可能に結合された１つ以上のコンピューティング装置であって、上記モニタリング装置の各々は１つ以上のセンサを有し、上記１つ以上のコンピューティング装置は、上記センサからデータレコードのストリームを受信する通信インターフェースと、１つ以上のタグを上記データレコード内のオブジェクトに関連付けて、タグ付けされたデータレコードを作成するタグ付けモジュールと、上記タグと上記タグ付けされたデータレコード内のタイムスタンプとにおける関連付けを含む検索可能な索引を作成する索引付けモジュールと、上記タグ付けされたデータレコードを複数の連続チャンクに分けるチャンク化モジュールであって、各チャンクは複数の上記タグ付けされたデータレコードを含む、モジュールと、を含む、システム。
【００８４】
Ｋ：上記１つ以上のコンピューティング装置に通信可能に結合された、上記検索可能な索引が問い合わせられるためのクエリインターフェース、をさらに含む段落Ｊに記載のシステム。
【００８５】
Ｌ：上記１つ以上のコンピューティング装置に通信可能に結合されて上記複数のチャンクを記憶する第１の記憶装置と、上記１つ以上のコンピューティング装置に通信可能に結合されて上記検索可能な索引を記憶する第２の記憶装置と、をさらに含む段落Ｊ又は段落Ｋに記載のシステム。
【００８６】
Ｍ：上記１つ以上のコンピューティング装置は、上記チャンクを暗号化する暗号化モジュールをさらに含む、段落Ｊ乃至Ｌのうちいずれか１つに記載の装置。
【００８７】
Ｎ：コンピュータ実行可能命令を有する１つ以上のコンピュータ可読媒体であって、上記コンピュータ実行可能命令は、実行されると、第１のユーザに関連付けられた第１の場所を監視する監視装置から時系列データのストリームを受信することであって、上記時系列データは、上記監視装置により感知された１つ以上のレコードと、該１つ以上のレコードの個々についての１つ以上のタイムスタンプとを含む、ことと、上記第１の場所に対してローカルの記憶装置に、上記１つ以上のタイムスタンプのうちの個々のタイムスタンプを１つ以上のタグに関連付ける索引を記憶することであって、上記タグの各々は上記１つ以上のオブジェクトの１つ以上の特徴を識別する、ことと、上記時系列データのストリームの少なくとも部分をリモートの記憶装置に記憶させることと、上記索引のクエリを、上記第１の場所とは異なる第２の場所に関連付けられた第２のユーザから受信することと、上記クエリに応答して、上記クエリを満足する上記時系列データの１つ以上のセグメントを識別することと、上記リモートの記憶装置から、上記クエリを満足する上記時系列データの上記１つ以上のセグメントを取り出すことと、を含む動作を実行するようにコンピュータを構成する、媒体。
【００８８】
Ｏ：上記監視装置はカメラを含み、上記レコードは、上記カメラにより捕捉された画像を含む、段落Ｎに記載の媒体。
【００８９】
Ｐ：上記タグは、上記カメラにより捕捉された上記画像内のオブジェクトのテキスト識別子である、段落Ｎ又はＯに記載の媒体。
【００９０】
Ｑ：上記監視装置は、温度計、近接検出器、又は需給計器のうち、少なくとも１つを含む、段落Ｎに記載の媒体。
【００９１】
Ｒ：上記タグは、上記時系列データのストリームと共に受信される、段落Ｎ乃至Ｑのうちいずれか１つに記載の媒体。
【００９２】
Ｓ：上記ストリームの少なくとも部分を記憶させることは、上記ストリームをチャンクにすることと、上記チャンクを記憶装置に送信することとを含む、段落Ｎ乃至Ｒのうちいずれか１つに記載の媒体。
【００９３】
Ｔ：上記チャンクを圧縮すること、をさらに含む段落Ｓに記載の媒体。
【００９４】
Ｕ：上記チャンクを暗号化すること、をさらに含む段落Ｓ又は段落Ｔに記載の媒体。
【００９５】
Ｖ：上記索引は上記チャンクの索引を含む、段落Ｓ乃至Ｕのうちいずれか１つに記載の媒体。
【００９６】
結び
上記手法は、構造的特徴及び／又は方法論動作に固有の言語において説明されたが、別記の請求項は必ずしも説明された具体的な特徴又は動作に限定されないことが理解されるべきである。むしろ、特徴及び動作は、上記手法の実施例として説明されている。
【００９７】
例示的な処理の動作が個々のブロックにおいて例示され、該ブロックを参照して要約されている。処理は、ブロックの論理フローとして例示されており、そのうちの各ブロックは、ハードウェア、ソフトウェア、又はこれらの組み合わせにおいて実施することができる１つ以上の動作を表現し得る。ソフトウェアの文脈において、動作は、１つ以上のコンピュータ可読媒体に記憶されたコンピュータ実行可能命令を表現し、該命令は、１つ以上のプロセッサによって実行されるときに、１つ以上のプロセッサが列挙された動作を実行することを可能にする。概して、コンピュータ実行可能命令には、特定の機能を実行し又は特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造、及び同様のものが含まれる。動作が説明されている順序は、限定として見なされることは意図されず、説明された動作のうち任意数のものが、説明された処理を実施するように、任意の順序において実行され、任意の順序において組み合わせられ、複数のサブ動作へと細分され、かつ／あるいは並列に実行されることができる。説明された処理は、１つ以上の装置１０２及び／又は１０８に関連付けられたリソース、例えば、１つ以上の内部若しくは外部のＣＰＵ若しくはＧＰＵ、及び／又は、ＦＰＧＡ、ＤＳＰ、若しくは他のタイプのアクセラレータなどのハードウェアロジックの１つ以上のピースなどによって、実行されることができる。
【００９８】
上記で説明された方法及び処理のすべては、１つ以上の汎用目的コンピュータ又はプロセッサによって実行されるソフトウェアコードモジュールにおいて具現化され、該コードモジュールを介して十分に自動化され得る。コードモジュールは、任意タイプのコンピュータ可読記憶媒体又は他のコンピュータ記憶装置に記憶されてよい。方法のうちいくつか又はすべてが、別法として、専用のコンピュータハードウェアにおいて具現化されてもよい。
【００９９】
仮定的言語、中でも、「できる」、「可能性がある」、「恐れがある」、又は「し得る」などは、特に明記されない限り、その文脈内で理解され、特定の例が特定の特徴、要素、及び／又はステップを含み、一方で他の例が含まないことを提示する。ゆえに、概して、こうした仮定的言語では、特定の特徴、要素、及び／又はステップがいずれかの方法において１つ以上の例に必要とされること、又は、ユーザ入力又はプロンプトの有無にかかわらず、特定の特徴、要素、及び／又はステップがいずれかの特定の例において含まれ、あるいは実行されるべきであるかを決めるロジックを１つ以上の例が必ず含むことを伴うことは、意図されない。接続言語、例えば、フレーズ「Ｘ、Ｙ、又はＺのうち少なくとも１つ」などは、特に明記されない限り、項目、用語等がＸ、Ｙ、又はＺのうち任意のもの、又はこれらの組み合わせ若しくはサブ組み合わせであり得ること提示するように理解されるべきである。
【０１００】
本明細書において説明され及び／又は添付の図面に表されたフロー図における、いずれのルーチン説明、要素、又はブロックも、ルーチン内で特定の論理機能又は要素を実施するための１つ以上の実行可能命令を含むモジュール、セグメント、又はコードの部分を潜在的に表現するものと理解されるべきである。代替的な実施が、本明細書に説明された例の範囲内に含まれ、これにおいて、要素又は機能は、当業者により理解されるであろう、含まれる機能性に依存して、削除されてもよく、図示され又は論じられた順序以外の順序で、実質的に同期的に含まれて又は逆の順序において実行されてもよい。上記で説明された例に対して、多くのバリエーション及び変更がなされ得ることが強調されるべきであり、そのための要素は、他の許容可能な例の中にあるものと理解されるべきである。すべてのこうした変更及びバリエーションは、本明細書において本開示の範囲内に含まれ、別記の請求項によって保護されることが意図される。
【図１】
0006426174.tif 000004
【図２】
0006426174.tif 000005
【図３】
0006426174.tif 000006
【図４】
0006426174.tif 000007
【図５】
0006426174.tif 000008
【図６】
0006426174.tif 000009