(57)【要約】      （修正有）【課題】ストレージレイヤの第１のデータエリア内に、複数のセキュリティ装置のうちの第１の装置から生じる、物理アクセス制御システムにおけるイベントデータを格納する方法を提供する。【解決手段】第２のデータエリア３６８内に、第１の装置とは異なる他の装置から生じるイベントデータを格納する。第１のデータエリアが第１のメモリスペースより多くを占めることを阻止するために、第１のデータエリア３６９からイベントデータを除去することと、第２のデータエリア３６８が第２のメモリスペースより多くを占めることを阻止するために、第２のデータエリア３６８からイベントデータを除去する。ネットワークインタフェースを通じて、第１のデータエリア３６９から他の装置にイベントデータを分散させる。【選択図】図３Ｃ
2015057703.tif 000002
【特許請求の範囲】
【請求項１】
装置から生じるイベントデータを格納するための第１のデータエリア（３６９）及び当該装置とピアツーピアネットワークで接続された１つ以上の他の装置から生じるイベントデータを格納するための第２のデータエリア（３６８）を含み、
前記第１のデータエリア（３６９）は、多くとも第１の最大メモリスペースを占めるように構成され、前記第２のデータエリア（３６８）は、多くとも第２の最大メモリスペースを占めるように構成される、メモリ（３５０）と、
前記第１のデータエリアが、前記第１の最大メモリスペースに近づいているかどうかを判定し、
プロセッサ（２１４）が前記第１のデータエリアが前記第１の最大メモリスペースに近づいていると判定する場合に、前記第１のデータエリア（３６９）が前記第１の最大メモリスペースより多くを占めることを阻止するために、前記装置から生じた格納されたイベントデータを第１のデータエリア（３６９）から除去し、
前記第２のデータエリアが、前記第２の最大メモリスペースに近づいているかどうかを判定し、
前記プロセッサ（２１４）が前記第２のデータエリアが前記第２の最大メモリスペースに近づいていると判定する場合に、前記第２のデータエリア（３６８）が前記第２の最大メモリスペースより多くを占めることを阻止するために、前記１つ以上の他の装置から生じた格納されたイベントデータを第２のデータエリア（３６８）から除去し、
ネットワークインタフェース（２１８）を通じて、前記第１のデータエリア（３６９）から前記他の装置に前記イベントデータを分散させるための、
及び、前記第２のデータエリア（３６８）に格納するために、前記ネットワークインタフェース（２１８）を通じて前記他の装置から前記イベントデータを受信するためのプロセッサ（２１４）と、
を含む装置（１１５）。
【請求項２】
前記プロセッサは、前記ピアツーピアネットワークにおいて、前記第１のデータエリア内の前記イベントデータを他の装置に分散させるように構成され、
前記プロセッサは、前記ピアツーピアネットワークにおいて、前記第２のデータエリア内の前記イベントデータを他の装置に分散させるように構成され、
前記第１の最大メモリスペースは、前記第２の最大メモリスペースより大きい、
請求項１に記載のの装置。
【請求項３】
前記装置は、物理アクセス制御システム（ＰＡＣＳ：physical  access  control  system）内のコントローラであり、
前記装置から生じる前記イベントデータは、前記装置で発生するイベントに関するデータを含み、
１つ以上の他の装置から生じる前記イベントデータは、前記１つ以上の他の装置で発生するイベントに関するデータを含む、
請求項１又は２に記載の装置。
【請求項４】
前記プロセッサは、前記第１のデータエリア内のイベントデータ及び前記第２のデータエリア内のイベントデータをルールと比較し、前記比較に基づいて警報を出すように構成される、
請求項１〜３のいずれか１項に記載の装置。
【請求項５】
前記プロセッサは、前記第１のデータエリアが前記第１の最大メモリスペースより多くを占めることを阻止するために、前記第１のデータエリアから最も古い前記イベントデータを除去するように構成され、
前記プロセッサは、前記第２のデータエリアが前記第２の最大メモリスペースより多くを占めることを阻止するために前記第２のデータエリアから最も古い前記イベントデータを除去するように構成される、
請求項１〜４のいずれか１項に記載の装置。
【請求項６】
前記プロセッサは、前記第１のデータエリアから前記装置のうち別の１つへのイベントデータの分散に優先順位をつけるように構成され、
前記装置のうち他の１つは、前記イベントデータへのサブスクリプション（subscription）に関連付けられる、
請求項１〜５のいずれか１項に記載の装置。
【請求項７】
前記プロセッサは、前記ピアツーピアネットワーク内のトラフィック量に基づいて、前記第１のデータエリアから前記他の装置へ前記イベントデータを分散させるように構成される、
請求項１〜６のいずれか１項に記載の装置。
【請求項８】
請求項１〜７のいずれか１項に記載の装置を複数含み、前記複数の装置が前記イベントデータを分散させるシステム。
【請求項９】
前記複数の装置は、分散されたピアツーピアネットワーク内で接続され、
前記複数の装置のうち１つより多くの中の各プロセッサは、前記ピアツーピアネットワーク内で、各々の前記第１のデータエリア内の前記イベントデータを他の装置に分散させるように構成され、
前記複数の装置のうち１つより多くの中の各プロセッサは、前記ピアツーピアネットワーク内で、各々の前記第２のデータエリア内の前記イベントデータを他の装置に分散させるように構成させる、
請求項８に記載のシステム。
【請求項１０】
複数の装置のうちの第１の装置から生じるイベントデータを、メモリの第１のデータエリア内に格納することであって、前記第１のデータエリアは、多くとも前記第１の最大メモリスペースを占めるように構成され、前記複数の装置は、分散されたピアツーピアネットワーク内に接続されることと、
前記第１の装置とは別の装置から生じるイベントデータを第２のデータエリアに格納することであって、前記第２のデータエリアは、多くとも第２の最大メモリスペースを占めるように構成されることと、
前記第１のデータエリアが、前記第１の最大メモリスペースに近づいているかどうかを判定することと、
前記第１のデータエリアが前記第１の最大メモリスペースに近づいていると判定される場合に、前記第１のデータエリアが前記第１の最大メモリスペースより多くを占めることを阻止するために、前記第１のデータエリアから前記イベントデータを除去することと、
前記第２のデータエリアが、前記第２の最大メモリスペースに近づいているかどうかを判定することと、
前記第２のデータエリアが前記第２の最大メモリスペースに近づいていると判定される場合に、前記第２のデータエリアが前記第２の最大メモリスペースより多くを占めることを阻止するために、前記第２のデータエリアから前記イベントデータを除去することと、
ネットワークインタフェースを通じて、前記第１のデータエリアから前記他の装置に前記イベントデータを分散させること、及び、前記第２のデータエリアに格納するために、前記ネットワークインタフェースを通じて前記他の装置から前記イベントデータを受信することと、
を含む、方法。
【請求項１１】
前記第１の最大メモリスペースは、前記第２の最大メモリスペースより大きい、
請求項１０に記載の方法。
【請求項１２】
前記第１のデータエリアが前記第１の最大メモリスペースより多くを占めることを阻止するために、前記第１のデータエリアから最も古い前記イベントデータを除去することをさらに含む、請求項１０又は１１に記載の方法。
【請求項１３】
前記第２のデータエリアが前記第２の最大メモリスペースより多くを占めることを阻止するために、前記第２のデータエリアから最も古い前記イベントデータを除去すること
をさらに含む、請求項１０〜１２のいずれか１項に記載の方法。
【請求項１４】
前記第１のデータエリアから前記装置のうち別の１つへの前記イベントデータの分散に優先順位をつけることであって、前記装置のうち別の１つは、前記イベントデータへのサブスクリプションに関連付けられることをさらに含む、
請求項１０〜１３のいずれか１項に記載の方法。
【請求項１５】
前記複数の装置の各々は、物理アクセス制御システム（ＰＡＣＳ）内のコントローラである、請求項１０〜１４のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、物理アクセス制御システムにおけるイベントデータの分散に関する。
【背景技術】
【０００２】
施設への物理アクセスを制御するためにアクセス制御システムが使用される場合がある。アクセス制御システム（及び、他の種類の制御システム）は、システムの異なる部分を各々制御する、多数のコントローラを有し得る。各コントローラは、例えば、ユーザが正しい認証情報（credential）をカードリーダに入力したかどうか、又はカメラが動きを検知したかどうかといった、イベントに関するデータを格納し得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
一実施形態では、システムはネットワークに接続される複数の装置を含み得る。各装置は、対応する装置から生じるイベントデータを格納するための第１のデータエリア及び当該複数の装置のうち他の装置から生じるイベントデータを格納するための第２のデータエリアを含むメモリを含み得る。一実施形態では、  第１のデータエリアは、多くとも第１のメモリスペースを占めるように構成され、第２のデータエリアは、多くとも第２のメモリスペースを占めるように構成される。各装置は、第１のデータエリアが第１のメモリスペースより多くを占めることを阻止するために、第１のデータエリアからイベントデータを除去し（remove）、第２のデータエリアが第２のメモリスペースより多くを占めることを阻止するために、第２のデータエリアからイベントデータを除去し、ネットワークインタフェースを通じて、第１のデータエリアから他の装置にイベントデータを分散させ、及び、第２のデータエリアに格納するために、ネットワークインタフェースを通じて他の装置からイベントデータを受信するためのプロセッサを含み得る。
【０００４】
一実施形態では、複数の装置は、分散されたピアツーピアネットワークに接続され、複数の装置のうち１つより多くの装置の各プロセッサは、ピアツーピアネットワークにおいて、各々の第１のデータエリア内のイベントデータを他の装置に分散させるように構成される。一実施形態では、複数の装置のうち１つより多くの装置の各プロセッサは、ピアツーピアネットワークにおいて、各々の第２のデータエリア内のイベントデータを他の装置に分散させるように構成される。
【０００５】
一実施形態は、第１のデータエリアに格納されるイベントデータ及び第２のデータエリアに格納されるイベントデータを要求及び受信するための複数の装置のうちの１つと通信する追加的な装置を含み得る。一実施形態では、第１のメモリスペースは、第２の最大メモリスペースより大きい。一実施形態では、複数の装置は、物理アクセス制御システム（ＰＡＣＳ：physical  access  control  system）内の複数のコントローラを含み得る。
【０００６】
一実施形態では、プロセッサは、第１のデータエリアのイベントデータ及び第２のデータエリアのイベントデータをルールと比較し、比較に基づいて警報を出すように構成される。
【０００７】
一実施形態では、プロセッサは、第１のデータエリアが第１のメモリスペースより多くを占めることを阻止するために、第１のデータエリアから最も古いイベントデータを除去し、第２のデータエリアが第２のメモリスペースより多くを占めることを阻止するために第２のデータエリアから最も古いイベントデータを除去するように構成される。
【０００８】
一実施形態では、プロセッサは、第１のデータエリアから装置のうち別の１つへのイベントデータの分散に優先順位をつけるように構成され、当該装置のうち別の１つは、イベントデータへのサブスクリプション（subscription）に関連付けられる。
【０００９】
一実施形態では、プロセッサは、ネットワーク内のトラフィック量に基づいて、対応する装置から生じるイベントデータを他の装置へ分散させるように構成される。
【００１０】
一実施形態では、イベントデータの分散を停止するために、装置のうちの他の１つからネットワークインタフェースを通じて標識（indication）が受信された場合に、プロセッサは、第１のデータエリアから装置のうちの別の１つにイベントデータを分散することを停止するように構成される。
【００１１】
一実施形態では、対応する他の装置内のプロセッサが、プロセッサ負荷閾値を超過する場合に、装置のうちの他の１つは、イベントデータの分散を停止することを指示する。
【００１２】
別の実施形態では、装置から生じるイベントデータを格納するための第１のデータエリア及び当該装置とピアツーピアネットワークで接続された１つ以上の他の装置から生じるイベントデータを格納するための第２のデータエリアを含み、第１のデータエリアは、多くとも第１のメモリスペースを占めるように構成され、第２のデータエリアは、多くとも第２のメモリスペースを占めるように構成される、メモリを含み得る。当該装置は、第１のデータエリアが第１のメモリスペースより多くを占めることを阻止するために、第１のデータエリアから格納されたイベントデータを除去し、第２のデータエリア第２のメモリスペースより多くを占めることを阻止するために、第２のデータエリアから格納されたイベントデータを除去し、ネットワークインタフェースを通じて、第１のデータエリアから他の装置にイベントデータを分散させ、第２のデータエリアに格納するために、ネットワークインタフェースを通じて他の装置からイベントデータを受信するためのプロセッサを含み得る。
【００１３】
一実施形態では、プロセッサは、ピアツーピアネットワークにおいて、第１のデータエリア内のイベントデータを他の装置に分散させ、ピアツーピアネットワークにおいて、第２のデータエリア内のイベントデータを他の装置に分散させるように構成される。一実施形態では、第１のメモリスペースは、第２のメモリスペースより大きい。
【００１４】
一実施形態では、当該装置は、物理アクセス制御システム（ＰＡＣＳ）内のコントローラを含み得る。
【００１５】
一実施形態では、プロセッサは、第１のデータエリア内のイベントデータ及び第２のデータエリア内のイベントデータをルールと比較し、比較に基づいて警報を出し、第１のデータエリアが第１のメモリスペースより多くを占めることを阻止するために、第１のデータエリアから最も古いイベントデータを除去し、第２のデータエリアが第２のメモリスペースより多くを占めることを阻止するために、第２のデータエリアから最も古いイベントデータを除去するように構成される。
【００１６】
一実施形態では、プロセッサは、第１のデータエリアから装置のうち別の１つへのイベントデータの分散に優先順位をつけるように構成され、装置のうち他の１つは、前記イベントデータへのサブスクリプションに関連付けられる。
【００１７】
一実施形態では、プロセッサは、ピアツーピアネットワーク内のトラフィック量に基づいて、第１のデータエリアから他の装置へイベントデータを分散させるように構成される。
【００１８】
別の実施形態では、方法は、複数の装置のうちの第１の装置から生じるイベントデータを、メモリの第１のデータエリア内に格納することを含み得る。第１のデータエリアは、多くとも第１のメモリスペースを占めるように構成され、複数の装置は、分散されたピアツーピアネットワーク内に接続される。当該方法は、第１の装置とは別の装置から生じるイベントデータを第２のデータエリアに格納することであって、第２のデータエリアは、多くとも第２のメモリスペースを占めるように構成されることを含み得る。当該方法は、第１のデータエリアが第１のメモリスペースより多くを占めることを阻止するために、第１のデータエリアからイベントデータを除去することと、第２のデータエリアが第２のメモリスペースより多くを占めることを阻止するために、第２のデータエリアからイベントデータを除去することと、ネットワークインタフェースを通じて、第１のデータエリアから他の装置にイベントデータを分散させること、及び、第２のデータエリアに格納するために、ネットワークインタフェースを通じて他の装置からイベントデータを受信することと、を含み得る。
【００１９】
一実施形態では、第１のメモリスペースは、第２のメモリスペースより大きい。当該方法は、第１のデータエリアが第１のメモリスペースより多くを占めることを阻止するために、第１のデータエリアから最も古いイベントデータを除去することと、第２のデータエリアが第２のメモリスペースより多くを占めることを阻止するために、第２のデータエリアから最も古いイベントデータを除去することと、を含み得る。当該方法は、第１のデータエリアから装置のうちの別の１つへのイベントデータの分散に優先順位をつけることであって、装置のうちの他の１つはイベントデータへのサブスクリプションと関連付けられることを含み得る。
【図面の簡単な説明】
【００２０】
【図１】本明細書に記載される実施形態による例示的な環境を示すブロック図である。
【図２Ａ】図１のシステムユニットの例示的なコンポーネントを示すブロック図である。
【図２Ｂ】図１のシステムユニットの例示的なコンポーネントを示すブロック図である。
【図３Ａ】一実施形態における図１のシステムユニットの機能コンポーネントを示すブロック図である。
【図３Ｂ】一実施形態における図１のシステムユニットの機能コンポーネントを示すブロック図である。
【図３Ｃ】一実施形態における図３Ｂのストレージレイヤの機能コンポーネントを示すブロック図である。
【図３Ｄ】一実施形態における図３Ｂのストレージレイヤの機能コンポーネントを示すブロック図である。
【図３Ｅ】一実施形態における例示的なサブスクリプションテーブル（subscription  table）のブロック図である。
【図４】図１のシステムユニットの例示的な物理レイアウトを示す平面図である。
【図５】図１の制御システムの例示的な物理レイアウトを示す平面図である。
【図６】図１の管理装置の例示的なコンポーネントのブロック図である。
【図７】一実施形態における分散制御システム内のイベントのデータの分散についての例示的なプロセスのフローチャートである。
【図８】一実施形態における分散制御システム内のイベントのデータの受信についての例示的なプロセスのフローチャートである。
【図９】図３のストレージレイヤがオーバーフローしないことを保証するための例示的なプロセスのフローチャートである。
【図１０】一実施形態における分散制御システム内のイベントのデータの分散についての例示的なプロセスのフローチャートである。
【図１１】一実施形態における図１のコントローラに格納されるデータに管理者がアクセスするための例示的なプロセスのフローチャートである。
【発明を実施するための形態】
【００２１】
以下の詳細な説明は、添付図面を参照する。異なる図面における同一の参照番号は、同一又は類似のエレメントを識別する。
【００２２】
以下に記載する一実施形態は、物理アクセス制御システム（ＰＡＣＳ：physical  access  control  system）におけるコントローラに関する。他の実施形態は、建物の管理システム内、監視システム内、及びセキュリティシステム内の異なるアプリケーションを制御するためのシステムにおけるコントローラといった、ＰＡＣＳ以外の装置又はシステムを含んでもよい。一実施形態は、例えば、ホームオートメーションシステムにおけるコントローラを含んでもよい。
【００２３】
上述したように、制御システムは、システムの異なる部分を各々制御する多数のコントローラを有し得る。各コントローラは、例えば、ユーザがカードリーダに正しい認証情報（credential）を入力したかどうか、又はカメラが動きを検知したかどうかといった、イベントに関するデータを格納し得る。以下に述べる一実施形態では、コントローラは、分散方式（distributed  manner）でイベントデータを格納する。しかしながら、大量のイベントデータは、ビジータイムの期間において、コントローラ又はネットワークを圧倒する恐れがある。以下に述べる一実施形態では、別のコントローラが、優先順位等に基づいてイベントデータにサブスクライブ（subscribe）する場合に、コントローラは、あまりビジーでない時間にイベントデータを分散することによりコントローラ自身の負荷及びネットワークトラフィックを減少させ得る。
【００２４】
別の実施形態では、コントローラは、２つのメモリエリア、当該コントローラで生じるイベントデータを格納するための第１のメモリエリアと、他のコントローラから生じるイベントデータを格納するための第２のメモリエリアとを含み得る。第１及び第２のメモリエリアは、多くとも第１及び第２のメモリスペースを占有するように構成され得る。（限定され得る）メモリ管理の形態として、当該コントローラから生じるイベントデータを格納するための第１のメモリスペースは、他のコントローラから生じるイベントデータを格納するための第２のメモリスペースよりも大きくてもよい。したがって、コントローラは、（例えば）他のコントローラよりも長期間それ自身のイベントデータを格納し得る。にもかかわらず、他のコントローラがネットワーク内で同じことをする（例えば、各々それ自身に関する情報をより多く格納する）ため、完全な（又はより完全な）イベントデータの集合が、コントローラのネットワーク内に格納され得る。さらに、完全な（又はより完全な）イベントデータの集合を格納するための中央サーバを必ずしも維持しないものの、この完全な（又はより完全な）イベントデータの集合は格納され得る。にもかかわらず、管理装置（administrative  device）（又はサーバ）は、なお、例えば、コントローラがメモリの不足から努力してデータを除去する前に、異なるコントローラからイベントデータをダウンロードする可能性がある。以下の１つ以上の実施形態は、特定の環境における物理アクセス制御システム（例えば、分散型物理アクセス制御システム）内のイベントデータの分散に関する。述べたように、他の実施形態は、（例えば、物理アクセス制御システム以外の）他の種類のシステム内のイベントデータの分散に関連してもよい。
【００２５】
図１は、以下に記載するシステム及び方法が実装されうる例示的な環境１００のブロック図である。図１に示すように、環境１００は、分散制御システム１１０（例えば、分散型物理アクセス制御システム）、ネットワーク１２０、及び管理装置（administration  device）１３０を含んでもよい。
【００２６】
分散制御システム１１０は、システムユニット１１５−Ａ〜１１５−Ｎ（集合としては“システムユニット１１５”又は“ユニット１１５”と呼び、個別には“ユニット１１５”と呼ぶ）を含む分散コンピューティングシステムを含み得る。分散制御システム１００は、ネットワーク１２０内で接続される複数の装置（ユニット１１５）を有する。一実施形態では、システムユニット１１５は、物理アクセス制御装置を含む。例えば、システムユニット１１５は、部屋や部屋の集合といったセキュアな領域へのアクセスを制御するコントローラを含み得る。システムユニット１１５は、リーダ（reader）装置を介して認証情報（例えば、アクセスカード認証情報）を受信し、認証情報が真正であり、セキュアな領域にアクセスする権限と関連付けられているかどうか判定し得る。認証情報が真正である場合、コントローラは、ドアのロックを開くコマンドを発行し、又はセキュアな領域へのアクセスを許可することと関連付けられる他の動作を実行し得る。
【００２７】
分散制御システム１１０は、１つ以上の分散されたデータセットを含み得る。分散されたデータセットは、分散されたデータセットと関連付けられるシステムユニット１１５に分散されて（おそらくは重複して）記憶されたデータを含む。一実施形態では、分散されたデータセットは、複数の装置上で複製される。例えば、分散されたデータセット全体を複数のユニット１１５（例えば、各ユニット１１５）に記憶させてもよい。別の実施形態では、１つ以上のユニット１１５が、分散されたデータセットのサブセットを記憶してもよい。また、分散されたデータセットは、全てのシステムユニット１１５と関連付けられていてもよく、システムユニット１１５のサブセットと関連付けられてもよい。
【００２８】
一実施形態では、ユニット１１５は、分散されたデータセット（例えば、合意ベース（consensus  based）の分散データベース）に変更をもたらすために、合意に達し得る。システムユニット１１５は、合意ベースの分散されたデータセットに変更を提案することができる。分散されたデータセットと関連付けられた定足数のユニット１１５によって変更が受け入れられる場合、ユニット１１５は合意に達することができ、関連付けられる各ユニット１１５内の分散されたデータセットの各ローカルコピーに変更を伝播し得る。すなわち、定足数の関連付けられるユニット１１５が変更について賛成票を投じる場合に、分散されたデータセットにおける変更に関する合意が達成され得る。
【００２９】
本文脈において、定足数とは、関連付けられるユニット１１５を支配する最小限の数に相当し得る。例えば、分散されたデータセットがＮ個のユニット１１５と関連付けられている場合、且つＮが偶数の場合は、Ｎ／２＋１個の関連付けられるユニット１１５が変更に賛成票を投じれば定足数に達し、Ｎが奇数の場合は（Ｎ−１）／２＋１個の関連付けられるユニット１１５が変更に賛成票を投じれば定足数に達し得る。定足数を達成するのに最小限の多数を必要とすることによって、２つの競合する提案が検討される場合に、少なくとも１つのシステムユニット１１５が双方の提案を受信し、合意のためにそれらの提案のうちの１つを選択することが保証され得る。
【００３０】
合意ベースの分散されたデータセットは、分散されたデータセットと関連付けられる任意のシステムユニット１１５が、分散されたデータセットによって管理される情報（例えば、一実施形態におけるすべての情報）を含むことを保証し得る。例えば、分散されたデータセットはアクセスルールを含んでもよく、アクセスルールは、分散されたデータセットと関連付けられる任意のシステムユニット１１５にとって利用可能であってもよい。このように、１つ以上の分散されたデータセットの結果として、一実施形態では、制御システム１１０は、サーバ装置といった中央制御装置のない非集中型システムに対応しうる。他の実施形態では、制御システム１１０は、非集中型システムと、（サーバ装置といった）中央制御装置の両方を含み得る。制御システム１１０への変更は任意のシステムユニット１１５において構成されることができ、変更が分散されたデータセットと関連付けられる場合には、変更は分散されたデータセットと関連付けられた他のシステムユニット１１５に伝播され得る。さらに、制御システム１１０は、デバイス障害に関して、シングルポイントの障害が回避され得るようなロバスト性を呈し得る。例えば、特定のシステムユニット１１５に障害が発生した場合、他のユニット１１５は、データのロスなしで（又はデータの最小限のロスのみで）動作を継続し得る。別の実施形態では、合意なしで分散されたデータセットへの変更が行われてもよい。
【００３１】
ネットワーク１２０は、ユニット１１５が相互に通信することを可能にすることができ、及び／又は管理装置１３０が特定のユニット１１５と通信することを可能にすることができる。ネットワーク１２０は、１つ以上の回線交換ネットワーク及び／又はパケット交換ネットワークを含み得る。例えば、ネットワーク１２０は、ローカルエリアネットワーク（ＬＡＮ：local  area  network）、広域ネットワーク（ＷＡＮ：wide  area  network）、メトロポリタンエリアネットワーク（ＭＡＮ：metropolitan  area  network）、公衆交換電話網（ＰＳＴＮ：Public  Switched  Telephone  Network）、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワーク、無線ネットワーク、及び／又はこれらの若しくは他の種類のネットワークの組み合わせを含み得る。
【００３２】
管理装置（administration  device）１３０は、制御システム１１０を構成し、制御システム１１０の構成を変更し、制御システム１１０から情報を受信し、及び／又はそれ以外に制御システム１１０を管理するために、管理者が特定のユニット１１５に接続することを可能にする。管理装置１３０は、ユニット１１５のうちの１つ以上と通信するように構成される任意の装置を含み得る。例えば、管理装置１３０は、携帯用通信機器（携帯電話、スマートフォン、ファブレット機器、ＧＰＳ（global  positioning  system）装置、及び／若しくは別の種類の無線装置など）、パーソナルコンピュータ若しくはワークステーション、サーバ装置、ラップトップ、タブレット、若しくは別の種類の携帯用コンピュータ、並びに／又は通信ケイパビリティを有する任意の種類の装置を含み得る。一実施形態では、管理装置１３０は、ユニット１１５の一部であってもよい。よって、管理者は、ユニット１１５のうちの１つ以上から制御システム１１０を管理することができる。
【００３３】
図１には環境１００の例示的なコンポーネントが示されているが、他の実装では、環境１００は、図１に示すものと比べてより少ないコンポーネント、異なるコンポーネント、異なる配置のコンポーネント、又は追加的なコンポーネントを含んでもよい。追加的又は代替的に、環境１００内の任意の１つの装置（又は任意の装置群）は、環境１００内の１つ以上の他の装置によって実行されるとして記載されている機能を実行し得る。
【００３４】
図２Ａ及び図２Ｂは、ユニット１１５の例示的なコンポーネントを示すブロック図である。図２Ａに示すように、ユニット１１５は、コントローラ２１０、及び１つ以上の周辺装置２３０を含み得る。コントローラ２１０は、ユニット１１５の動作を制御することができ、他のユニット１１５と通信することができ、管理装置１３０と通信することができ、及び／又は周辺装置２３０を制御することができる。周辺装置２３０は、コントローラ２１０に情報を提供し、コントローラ２１０によって制御され、及び／又はそうでなければコントローラ２１０と通信する装置を含み得る。一実施形態では、周辺装置２３０は、任意の種類のセキュリティ装置を含み得る。例えば、周辺装置２３０は、リーダ装置２４０、ロック装置２５０、センサ２６０（カメラなど）、及び／又はアクチュエータ２７０といったセキュリティ装置を含み得る。
【００３５】
図２Ｂに示すように、コントローラ２１０は、バス２１２、プロセッサ２１４、メモリ２１６、ネットワークインタフェース２１８、周辺インタフェース２２０、及びハウジング２２２を含み得る。バス２１２は、コントローラ２１０のコンポーネント間の通信を可能にするパスを含む。プロセッサ２１４は、命令を解釈し、実行する任意の種類のシングルコアプロセッサ、マルチコアプロセッサ、マイクロプロセッサ、ラッチベースのプロセッサ、及び／若しくは処理ロジック（又はプロセッサ、マイクロプロセッサ、及び／若しくは処理ロジックのファミリ）を含み得る。他の実施形態では、プロセッサ２１４は、ＡＳＩＣ（application-specific  integrated  circuit）、ＦＰＧＡ（field-programmable  gate  array）、及び／又は別の種類の集積回路若しくは処理ロジックを含み得る。
【００３６】
メモリ２１６は、情報、データ、及び／又は命令を記憶する。メモリ２１６は、任意の種類の動的記憶デバイス、揮発性記憶デバイス、及び／又は不揮発性記憶デバイスを含み得る。メモリ２１６は、プロセッサ２１４が実行するための命令、又はプロセッサ２１４が使用するための情報を記憶することができる。例えば、メモリ２１６は、ＲＡＭ（random  access  memory）若しくは別の種類の動的記憶デバイス、ＲＯＭ（read-only  memory）若しくは別の種類の静的記憶デバイス、ＣＡＭ（content  addressable  memory）、磁気的記録メモリデバイス及び／若しくは光学的記録メモリデバイス及びそれに対応するドライブ（例えばハードディスクドライブ、光学的ドライブなど）、並びに／又はフラッシュメモリといった着脱可能な形態のメモリを含み得る。
【００３７】
ネットワークインタフェース２１８は、有線通信リンク（例えば、導線、ツイストペアケーブル、同軸ケーブル、伝送回線、光ファイバケーブル、及び／若しくは導波管など）、無線通信リンク（例えば、ＲＦ（radio  ｆｒｅｑｕｅｎｃｙ）、赤外線、及び／若しくは可視光線など）、又は有線通信リンクと無線通信リンクとの組み合わせを介して、コントローラ２１０が他の装置及び／又はシステムと通信する（データの送信及び／又は受信を行う）送受信機（送信機及び／又は受信機など）を含んでもよい。ネットワークインタフェース２１８は、ベースバンド信号をＲＦ信号に変換する送信機、及び／又はＲＦ信号をベースバンド信号に変換する受信機を含み得る。ネットワークインタフェース２１８は、ＲＦ信号を送受信するためのアンテナと連結されてもよい。
【００３８】
ネットワークインタフェース２１８は、他の装置へのデータの送信を遂行する入力ポート及び／若しくは出力ポート、入力システム及び／若しくは出力システム、並びに／又は他の入力コンポーネント及び出力コンポーネントを含むロジックコンポーネントを含み得る。例えば、ネットワークインタフェース２１８は、有線通信のためのネットワークインタフェースカード（イーサネット（登録商標）カードなど）及び／又は無線通信のための無線ネットワークインタフェース（例えば、ＷｉＦｉ）カードを含み得る。またネットワークインタフェース２１８は、ケーブル上の通信のためのＵＳＢ（universal  serial  bus）ポート、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線インタフェース、ＲＦＩＤ（radiofrequency  identification）インタフェース、ＮＦＣ（near-field  communication）無線インタフェース、及び／又はある形態から別の形態へデータを変換する任意の他の種類のインタフェースをも含み得る。
【００３９】
周辺インタフェース２２０は、１つ以上の周辺装置２３０と通信するように構成され得る。例えば、周辺インタフェース２２０は、周辺装置２３０へのデータの送信を遂行する入力ポート及び／若しくは出力ポート、入力システム及び／若しくは出力システム、並びに／又は他の入力コンポーネント及び出力コンポーネントを含む１つ以上のロジックコンポーネントを含み得る。一例として、周辺インタフェース２２０は、ＳＰＩ（Serial  Peripheral  Interface）バスプロトコル（例えば、Wiegandプロトコル及び／又はＲＳ−４８５プロトコル）を用いて周辺装置２３０と通信し得る。別の例として、周辺インタフェース２２０は、異なる種類のプロトコルを使用してもよい。一実施形態では、ネットワークインタフェース２１８は、周辺装置２３０をコントローラ２１０と連結するための周辺インタフェースとして作動することもできる。
【００４０】
ハウジング２２２は、コントローラ２１０のコンポーネント群を収容し、コントローラ２１０のコンポーネント群を環境から保護し得る。一実施形態では、ハウジング２２２は、周辺装置２３０のうちの１つ以上を含んでもよい。別の実施形態では、ハウジング２２２は、管理装置１３０を含んでもよい。ハウジング２２２は、複数のユニット１１５又はコントローラ１１０を有するシステムにおいて１つのシステムユニット１１５及び／又はコントローラ２１０の他のシステムユニット１１５及び／又はコントローラ２１０からの境界を定義しうる。
【００４１】
以下に記載するように、コントローラ２１０は、１つ以上の装置上の１つ以上のサービスのためのユーザ認証情報の配信に関連した動作を実行し得る。コントローラ２１０はこれらの動作を、ＡＳＩＣの配線回路の結果として実行してもよい。コントローラ２１０はまた（あるいは代替的に）、これらの動作を、プロセッサ２１４がメモリ２１６といったコンピュータ可読媒体に含まれるソフトウェア命令を実行したことに応答して実行してもよい。コンピュータ可読媒体は、非一時的及び／又は有形のメモリデバイスを含み得る。メモリ２１６は、単一の物理的なメモリデバイス内で実装されてもよく、複数の物理的なメモリデバイスにまたがって拡散されてもよい。ソフトウェア命令は、別のコンピュータ可読媒体から又は別の装置からメモリ２１６に読み込まれてもよい。メモリ２１６に含まれるソフトウェア命令は、プロセッサ２１４に、本明細書に記載されるプロセスを実行させ得る。よって、本明細書に記載する実装は、ハードウェア回路とソフトウェアとのいかなる特定の組み合わせにも限定されない。
【００４２】
周辺装置２３０に戻って、リーダ装置２４０は、ユーザから認証情報を読み取り、当該認証情報をコントローラ２１０に提供する装置を含み得る。例えば、リーダ装置２４０は、ユーザから英数字の個人識別番号（ＰＩＮ：personal  identification  number）を受け取るように構成されるキーパッド又はキーボード、磁気ストリップ又はＲＦＩＤタグといった別の種類の記憶デバイス上にコードを記憶するカードを読み取るように構成されるカードリーダ、ユーザの指紋を読み取るように構成される指紋リーダ、ユーザの虹彩を読み取るように構成される虹彩リーダ、ユーザの声紋を記録するように構成されるマイクロフォン及び声紋識別器；ＮＦＣリーダ、顔認識ソフトウェアと関連付けられるカメラ、音声認識ソフトウェアと関連付けられるマイクロフォン、並びに／又は別の種類のリーダ装置を含み得る。リーダ装置２４０は、認証情報を提供することのできる任意の種類のセキュリティ装置を含んでもよく、センサ２６０を参照して以下で説明する任意のセンサ装置といった１つ以上のセンサ装置を含んでもよい。例えば、リーダ装置２４０は、顔認識に使用されるカメラ及び／又は音声認識に使用されるマイクロフォンを含んでもよい。この場合、ユーザの顔又は音声を認証情報として使用し得る。
【００４３】
ロック装置２５０は、コントローラ２１０によって制御されるロック（錠）を含み得る。ロック装置２５０は、ドア（例えば、ドアが開閉しないようにする）、窓、ＨＶＡＣ通気孔、及び／又はセキュアな領域への別の種類のアクセス開口部をロック（施錠）し得る。例えば、ロック装置２５０は、電磁式ロック、コントローラ２１０によって制御されるモータを備える機械式ロック、電気機械式ロック、及び／又は別の種類のロックを含み得る。
【００４４】
センサ２６０は、感知（sensing）装置を含み得る。例として、センサ２６０は、ドアが開いているかそれとも閉じているか感知するドアセンサ、可視光監視装置（カメラ）、赤外（ＩＲ）光監視装置、熱シグ二チャ監視装置、オーディオ監視装置（マイクロフォンなど）、及び／若しくは別の種類の監視装置、動きセンサ、熱センサ、圧力センサ、及び／若しくは別の種類の警報センサといった警報センサ、ユニット１１５内部に位置する位置センサといったタンパセンサ、並びに／又はユニット１１５と関連付けられるセキュリティ保護される領域内に位置する“退出要求（request-to-exit）”ボタン、並びに／又は別の種類のセンサ装置を含んでもよい。以下の例では、センサ２６０を“カメラ２６０”と呼ぶこともある。
【００４５】
アクチュエータ２７０は、アクチュエータ装置を含み得る。一例として、アクチュエータ２７０は、照明装置を制御し得る。他の例として、アクチュエータ２７０は、侵入警報起動器（burglar  alarm  activator）、メッセージを再生し、若しくは警報信号を発生させるスピーカ、ディスプレイ装置、センサ２６０を動かす（例えば、カメラ若しくは他の監視装置の視野を制御する）モータ、ドア、窓、ＨＶＡＣ通気孔及び／若しくはセキュアな領域と関連付けられる別の開口部を開閉するためのモータ、ロック装置２５０を施錠位置若しくは開錠位置で固定するモータ、消火装置、並びに／又は別の種類のアクチュエータ装置を含んでもよい。
【００４６】
図２Ａ及び図２Ｂには、ユニット１１５の例示的なコンポーネントが示されているが、他の実装では、ユニット１１５は、図２Ａ及び図２Ｂに示すものと比べてより少数のコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は異なる配置のコンポーネントを含んでもよい。例えば、図２Ａには単一のリーダ装置２４０、単一のロック装置２５０、単一のセンサ２６０、及び単一のアクチュエータ２７０が示されているが、実際には、周辺装置２３０は、複数のリーダ装置２４０、複数のロック装置２５０、複数のセンサ２６０、及び／又は複数のアクチュエータ２７０を含んでもよい。また周辺装置２３０は、図２Ａに示す装置のうちの１つ以上を含まなくてもよい。追加的又は代替的に、ユニット１１５の任意のコンポーネント（又は任意のコンポーネント群）が、ユニット１１５の１つ以上の他のコンポーネントによって実行されるものとして記載される１つ以上のタスクを実行してもよい。
【００４７】
さらに、例示的な分散制御システム１１０は物理アクセス分散制御システムを含むが、他の実装は、物理アクセス以外のシステムを制御してもよい。一方で、分散制御システム１１０は、（例えば、動作環境に）ドアを開閉するための制御システム及び／又は建物若しくは施設への物理的アクセスを制御するための制御システムといった、任意の種類の物理アクセス制御システムを含んでもよい。また、分散制御システム１１０は、ファン（fan）を制御する（例えば始動若しくは停止する）システム、建物管理システムで警報を始動させるシステム（例えば、認証失敗、認証成功など）、又は産業オートメーションシステムでロボットアームを制御するシステムを含んでもよい。
【００４８】
図３Ａは、システムユニット１１５の例示的な機能レイヤを示すブロック図である。図３Ａに示すように、ユニット１１５は、ＡＰＩ（application  program  interface）レイヤ３１０、アプリケーションレイヤ３２０、分散制御（distribution）レイヤ３４０、及びストレージレイヤ３５０を含み得る。
【００４９】
ＡＰＩレイヤ３１０は、例えば、管理装置１３０と通信するように構成されるＡＰＩを含む。管理者が管理装置１３０を使用してユニット１１５にログインするときに、ＡＰＩレイヤ３１０は、管理装置１３０と通信して管理者を認証し得る。別の例として、ＡＰＩレイヤ３１０は、管理装置１３０と通信してユニット１１５の構成を変更することもできる。ＡＰＩレイヤ３１０は、管理装置１３０からデータを受信し、当該データを分散制御レイヤ３４０及び／又はストレージレイヤ３５０に提供し得る。また、ＡＰＩレイヤ３１０は、管理装置１３０と通信してアプリケーションレイヤ３２０にアプリケーションをインストールすることもできる。ＡＰＩレイヤ３１０は、様々な管理者タイプを取り扱うように構成されてもよい。例えば、ＡＰＩレイヤ３１０は、ウェブサービス管理者、Ｌｉｎｕｘ管理者、ＯＮＶＩＦ（Open  Network  Video  Interface  Forum）管理者を取り扱うためのＡＰＩ、及び／又は別の種類のＡＰＩを含んでもよい。
【００５０】
アプリケーションレイヤ３２０は、ユニット１１５上にインストールされる１つ以上のアプリケーションを含み得る。アプリケーションは、他のアプリケーションの中で、制御ロジックアプリケーション、ドアを開閉するためのドア制御アプリケーション、及びユーザ認証情報を受け取るためのリーダ制御アプリケーションを含み得る。アプリケーションについては図３Ｂに関連してより詳細に論じる。
【００５１】
分散制御レイヤ３４０は、ユニット１１５と関連付けられる１つ以上の分散されたデータセットを管理し得る。例えば、分散制御レイヤ３４０は、データセットの配信のためにピアツーピア（peer-to-peer）ネットワークでコントローラ２１０を接続することができる。分散制御レイヤ３４０は、プロトコル（ＰＡＸＯＳプロトコルなど）を使用して、特定の合意ベースの分散されたデータセットの変更に関する合意を確立することができる。一例として、分散制御レイヤ３４０は、分散されたデータセットと関連付けられる他のシステムユニット１１５へ変更の提案を送信することができ、他のシステムユニット１１５から変更のための定足数を受信し得る。別の例として分散制御レイヤ３４０は、別のユニット１１５から受け取った提案に賛成投票してもよい。さらに別の例として、分散制御レイヤ３４０は、変更に賛成投票せずに、変更についての合意に達したという指示を受信する場合もある。変更についての合意の指示が受信されると、分散制御レイヤ３４０は、分散されたデータセットのローカルコピーの変更を行うことができる。分散制御レイヤ３４０は、ネットワーク１２０上で他のユニット１１５とのセキュアな接続（ＴＬＳ（Transport  Layer  Security）接続）を維持することができる。
【００５２】
ストレージレイヤ３５０は、ユニット１１５と関連付けられる１つ以上のデータセットを記憶し得る。ストレージレイヤ３５０に記憶されたデータセットは、ローカルデータセットに対応してもよく、又は分散されたデータセットに対応してもよい。ローカルデータセットは、ローカルデータセットを記憶する特定のユニット１１５と関連付けられる（及び／又は特定のユニット１１５とのみ関連付けられる）情報を記憶し得る。分散されたデータセットは、分散されたデータセットと関連付けられる他のシステムユニット１１５の間で分散される情報を記憶し得る。
【００５３】
図３Ｂは、アプリケーションレイヤ３２０及びストレージレイヤ３５０についてさらなる詳細を示す、コントローラ２１０の例示的な機能コンポーネントのブロック図である。図３Ｂに示すように、アプリケーションレイヤ３２０は、制御ロジックアプリケーション３２２（若しくは“制御ロジック３２２”）、管理者認証ロジック３２３、ドア制御アプリケーション３２４、リーダ制御アプリケーション３２６、イベント処理アプリケーション３２８、及び／又はスケジュール処理アプリケーション３３０を含み得る。他のアプリケーションは、例えば、警報アプリケーションや制御アプリケーションを含んでもよい。
【００５４】
制御ロジック３２２は、受信した認証情報に基づいて、また記憶されたアクセスルールに基づいて、ユーザに物理的アクセスを許可すべきかどうかを判定し得る。管理者ロジック３２３は、管理者にアクセス（例えばリモートログインといったリモートアクセス）を許可し、他の管理プロセスを提供することができる。そのように、管理ロジック３２３は、認証情報（ユーザ名とパスワードなど）に基づいて管理者を認証し、（例えば、他の管理者のために、及び／又は物理的アクセスの許可を得ようとするユーザのために）ユーザ認証情報へのアクセス、及びユーザ認証情報の更新を管理者に承認することができる。
【００５５】
ドア制御アプリケーション３２４は、１つ以上のドア及び／又は関連付けられるロック装置２５０を制御し得る。例えば、ドア制御アプリケーション３２４は、ドアが開いているか若しくは閉じているか、及び／又は施錠されているか若しくは開錠されているか判定することができ、１つ以上の装置を、ドアを開き若しくは閉じるように、及び／又はドアを施錠し若しくは開錠するように動作させ得る。リーダ制御アプリケーション３２６は、１つ以上のリーダ装置２４０を制御することができ、１つ以上のリーダ装置２４０から受信される認証情報を取得し、処理し得る。イベント処理アプリケーション３２８は、ドア開けイベント、警報イベント、センサイベント、及び／又は他の種類のログに記録されたイベントといった、ユニット１１５によって記録されたイベントを処理し得る。イベント処理アプリケーション３２８は、報告及び／又は警報を生成し、当該報告及び／又は警報を管理装置１３０へ（及び／又は他のユニット１１５といった別の指定の装置へ）送信し得る。スケジュール処理アプリケーション３３０は、ユニット１１５と関連付けられる１つ以上のスケジュールを管理し得る。例えば、特定のユーザの集合についてのアクセスルールが、特定の時刻に基づいて変化してもよい。
【００５６】
ストレージレイヤ３５０は、分散データエリア３６０及び非分散データエリア３７０を含み得る。一実施形態では、分散データエリア３６０は、分散された合意ベースの（consensus-based）データ（例えばデータベース）及び／又は分散された非合意ベース（non-consensus-based）のデータ（例えばデータベース）を含み得る。非分散データエリア３７０は、（即ち、上述したローカルデータセットのような）分散されていない、及び／又は合意ベースではないデータ（例えばデータベース）を含み得る。“データエリア”とは、例えば、データベース及び／又はメモリエリアを参照し得る。
【００５７】
図３Ｃは、ストレージレイヤ３５０の例示的なコンポーネントのブロック図である。図示するように、分散データエリア３６０は、合意データエリア３６１及び非合意データエリア３６３を含み得る。上述したように、合意データエリア３６１は、データの変更が受け入れられる前にピア間での合意を必要とし得るデータを含む。上述したように、非合意データエリア３６３は、データの変更が受け入れられる前にピア間での合意を必要としなくてもよいデータを含む。一実施形態では、非合意データは、ユニット１１３において発生するイベントを含み得る。この場合、対応するユニット１１５は、イベントを“所有”してもよく、合意は、“スプリットブレインシンドローム（split-brain  syndrome）”を回避する必要がないかもしれない。例えば、分散されたデータベースを分散する異なるユニットが、一致しない又は競合するデータを格納し、不一致又は競合を解消するため合意が達せられない場合に、スプリットブレインシンドロームが発生しうる。
【００５８】
図３Ｃに示すように、合意データエリア３６１は、装置固有データ３６２、管理者認証情報ＤＢ３６４、アクセス認証情報ＤＢ３６６、及び／又はサブスクリプションテーブル（subscription  table）３６７を含み得る。上述したように、装置固有データ３６２は、コントローラ２１０のハードウェア構成、コントローラ２１０に接続される周辺装置２３０、アプリケーションレイヤ３２０にインストールされるアプリケーション、又は他の種類の情報といった、特定のユニット１１５に関連付けられる構成情報（configuration  information）を含み得る。
【００５９】
管理者認証情報ＤＢ３６４は、システムユニット１１５を管理し、及び／又は運用することができるユーザを認証するための認証情報（例えば、ユーザ名及びパスワード）を格納し得る。一実施形態では、同一の管理者がコントローラ２１０又はユニット１１５のいずれかからシステム１１０を管理できるようにするために、管理者認証情報ＤＢ３６４は、他のコントローラ２１０の間で（例えば、合意ベースのデータベースにおいて）分散される。
【００６０】
アクセス認証情報ＤＢ３６６は、物理エリアにアクセスしたいユーザについての認証情報（カード及びpin情報、指紋情報、等）を格納し得る。一実施形態では、アクセス認証情報ＤＢ３６６内のデータは、ネットワーク内の他のコントローラに対し（例えば、合意ベースの分散されたデータベースに）分散され得る。
【００６１】
サブスクリプションテーブル３６７は、他の装置におけるイベントへのサブスクライブを登録したイベント及び装置のリストを含み得る。例えば、スポットライトのためのコントローラ２１０は、カメラのためのコントローラ２１０の動作検知イベントに登録しサブスクライブしてもよい。よって、ルールの集合に基づいて、カメラにより動きが検知されるとき、スポットライトは、（例えば、上述したように“警報（alarm）”を）オンにしてもよい。サブスクリプションテーブル３６７については、図３Ｅを参照して以下でより詳細に説明する。
【００６２】
図３Ｃに示すように、非合意データエリア３６３は、（“装置イベントエリア３６９”又は“第１のデータエリア”と呼ばれる）装置イベントデータエリア３６９、及び（“他のイベントエリア３６８”又は“第２のデータエリア”）と呼ばれる）他のイベントデータエリア３６８を格納する。デバイスイベントエリア３６９は、特定のユニット１１５及び／又はコントローラ１１０から生じる（又は発生する）イベントデータを格納する（又はログ（log）を取る）（例えば、ユニット１１５−Ａは、コントローラ１１０−Ａを有するユニット１１５−Ａで発生するイベントに関するデータを、それ自身のエリア３６９に格納する）。他のイベントエリア３６８は、他のユニット１１５及び／又はコントローラ１１０から生じる（又は発生する）イベントデータを格納する（又はログ（log）を取る）（例えば、ユニット１１５−Ａは、ユニット１１５−Ｂ〜１１５−Ｆのいずれかで発生するイベントに関するデータを、それ自身のエリア３６８に格納する）。上述したように、装置イベントエリア３６９及び他のイベントエリア３６８に記録されるイベントは、対応する装置（例えば、固有の装置識別子）にタグ付け又は関連付けされてもよく、合意は、スプリットブレインシンドロームを回避するために必要とされないかもしれない。
【００６３】
一実施形態では、装置イベントエリア３６９及び／又は他のイベントエリア３６８（及びストレージレイヤ３５０内の他のデータエリア）は、最大メモリスペースに関連付けられ（又は割り当てられ）得る。即ち、装置イベントエリア３６９（第１のデータエリア）は、多くとも第１のメモリスペースを占めるように構成され、他のイベントエリア３６８（第２のデータエリア）は、多くとも第２のメモリスペースを占めるように構成される。ある実装においては、装置イベントエリア３６９のために割り当てられる最大メモリスペース（第１のメモリスペース）は、他のイベントエリア３６８のために割り当てられる最大メモリスペース（第２のメモリスペース）よりも大きい。さらに、一実施形態では、エリア３６８及び３６９は、例えば、テキストファイルの各行が異なるイベントに対応する、テキストファイルであってもよい。一実施形態では、ストレージレイヤ３５０内の他のデータエリアは、また、最大メモリスペース（例えば、装置イベントデータエリア３７２）に関連付けられ（又は割り当てられ）てもよい。
【００６４】
非合意データエリア３７０は、また、特定のユニット１１５及び／又はコントローラ１１０で生じるイベントデータを格納し得る（例えば、ユニット１１５−Ａは、ユニット１１５−Ａ及び／又はコントローラ１１０−Ａで発生するイベントに関するデータをエリア３７０に格納する）。データエリア３６８及び３６９のような、装置イベントデータエリア３７２に格納されるデータは、対応する装置（例えば、固有の装置識別子）にタグ付け又は関連付けられてもよく、合意は、スプリットブレインシンドロームを回避するために必要ではないかもしれない。一実施形態では、図３Ｃにおいて矢印で示すように、装置イベントエリア３７２からのデータは、非分散データエリア３７０から非合意データエリア３６３にコピーされてもよい。
【００６５】
したがって、図３Ｃは、対応する装置（コントローラ２１０）で生じるイベントデータを格納するための第１のデータエリア（装置イベントエリア３６９）及び複数の装置のうちの他の装置（他のコントローラ２１０）から生じるイベントデータを格納するための第２のデータエリア（他のイベントエリア３６８）を含む、メモリ（例えば、ストレージレイヤ３５０）を示す。さらに、述べたように、一実施形態では、第１のデータエリアは、多くとも第１のメモリスペースを占めるように構成されてもよく、第２のデータエリアは、多くとも第２のメモリスペースを占めるように構成されてもよい。
【００６６】
図３Ｄは、ストレージレイヤ３５０の例示的なコンポーネントの別のブロック図である。図示するように、ストレージレイヤ３５０は、揮発性記憶装置３９０及び不揮発性記憶装置３９２を含み得る。揮発性記憶装置３９０は、電力が供給される限りデータを記憶する。即ち、揮発性記憶装置３９０が電源を失うとすぐに、そのデータは消去される。他方、不揮発性記憶装置３９２は、格納されたデータの変更には電力を必要とし得るが、不揮発性記憶装置３９２は電力がなくでもデータを記憶することができる。一実施形態では、揮発性記憶装置３９０に格納されたデータ（又は格納するためのデータ）を変更するのに要する時間は、不揮発性記憶装置３９２に格納されたデータ（又は格納するためのデータ）を変更するのに要する時間よりも短い（例えば、著しく短い）。同様に、揮発性記憶装置３９０に格納されたデータ（又は格納するためのデータ）を変更するのに要する計算能力は、不揮発性記憶装置３９２に格納されたデータ（又は格納するためのデータ）を変更するのに要する計算能力よりも少ない（例えば、著しく少ない）かもしれない。図３Ｃに示される別のデータエリア（例えば、装置イベントデータエリア３６９、他のイベントデータエリア３６８、分散データエリア３６０、及び／又は非分散データエリア３７０）は、揮発性記憶エリア３９０及び不揮発性記憶エリア３９２の両方においてエリアを有し得る。
【００６７】
図３Ａ〜３Ｄには、ユニット１１５の例示的な機能コンポーネントが示されているが、他の実装では、ユニット１１５は、図３Ａ〜３Ｃに示すものと比べてより少ない機能コンポーネント、異なる機能コンポーネント、異なる配置の機能コンポーネント、又は追加的な機能コンポーネントを含んでもよい。追加的に、ユニット１１５内の任意の１つのコンポーネント（又は任意のコンポーネント群）は、ユニット１１５内の１つ以上の他の機能コンポーネントによって実行されるとして記載されている機能を実行し得る。さらに、ユニット１１５の機能コンポーネントは、例えば、１つ以上のＡＳＩＣの配線回路（hard-wired  circuitry）を介して実装されてもよい。追加的又は代替的に、ユニット１１５の機能コンポーネントは、メモリ２１６から命令を実行するプロセッサ２１４によって実装されてもよい。
【００６８】
図３Ｅは、例示的なサブスクリプションテーブル３６７のブロック図である。サブスクリプションテーブル３６７は、サブスクライバフィールド（subscriber  field）３９２、装置フィールド３９４、及び／又はイベントフィールド３９６を含み得る。サブスクリプションテーブル３６７は、図３Ｅに示されるものよりも多い、少ない、又は異なる配置のフィールドを含んでもよい。
【００６９】
サブスクライバフィールド３９２は、装置におけるイベントにサブスクライブするように登録されているコントローラ２１０を識別する。イベントフィールド３９２は、サブスクライバフィールド３９２内の対応するコントローラ２１０がサブスクライブしているイベントを識別する。装置フィールド３９４は、対応するイベントが関連付けられているコントローラ２１０を識別する。例えば、サブスクリプションテーブル３６７の最初の行に示されるように、コントローラ２１０−Ｃは、カメラ２６０により検知される動きを伴うコントローラ２１０−Ａからのイベントに関するデータを受信するためにサブスクライブしている。よって、ルールの集合に基づいて、コントローラ２１０−Ｃが、カメラ２６０により検知されている動きに関するデータを受信するとき、コントローラ２１０−Ｃは、検知された動きに向かってそのスポットライトを点灯するためにそのアクチュエータを起動し得る。
【００７０】
一実施形態では、サブスクリプションテーブル３６７は、管理者によって手動で設定され得る。別の実施形態では、管理者は、コントローラのためのルールを設定してもよく（例えば、カメラ２６０により検知された動きに向かってスポットライトを動かす等）、システム１１０は、コントローラ２１０−Ｃをコントローラ２１０−Ａの適切なイベントに自動的にサブスクライブするであろう。
【００７１】
図４は、ユニット１１５−Ａの例示的な物理レイアウトを示す平面図である。図４に示すように、ユニット１１５−Ａは、壁４１０、ドア４２０、コントローラ２１０−Ａ、リーダ装置２４０、ロック装置２５０、センサ２６０、及びアクチュエータ２７０を含み得る。
【００７２】
壁４１０は、建物内の部屋といったセキュアな領域４４０を囲む。ドア４２０は、セキュアな領域４４０へのユーザのためのアクセスを提供する。この実施形態では、コントローラ２１０−Ａは、セキュアな領域４４０の内部に設置されている。他の実施形態では、コントローラ２１０−Ａは、セキュアでない領域４５０に設置されてもよい。リーダ装置２４０は、セキュアな領域４４０の外部に設置されており、ロック装置２５０はセキュアな領域４４０の内部において壁４１０及びドア４２０に設置されている。センサ２６０は、この例では、セキュアな領域４４０の外部のセキュアでない領域４５０に取り付けられた監視装置である。アクチュエータ２７０は、この例の監視装置の視野を制御するのに使用されるモータを含む。
【００７３】
ユーザが（例えば、ＰＩＮを入力する、アクセスカードをスキャンする、虹彩をスキャンするなどによって）リーダ装置２４０に認証情報を入力すると、コントローラ２１０−Ａは認証情報を使用してユーザのアイデンティティを認証し、アクセスルールテーブルでルックアップを実行して、ユーザのアイデンティティ及びアクセスルールに基づいてユーザにアクセスを許可すべきかどうかを判定し得る。コントローラ２１０−Ａは、アクセスが許可されるべきであると判定した場合、ロック装置２５０を作動させてドア４２０を開錠し、ユーザにセキュアな領域４４０へのアクセスを許可する。
【００７４】
図４には、物理レイアウト４００の例示的なコンポーネントが示されているが、他の実装では、物理レイアウト４００は、図４に示すものと比べて、より少数のコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は異なる配置のコンポーネントを含んでもよい。追加的又は代替的に、物理レイアウト４００内のいずれか１つのコンポーネント（又はコンポーネント群）は、物理レイアウト４００の１つ以上の他のコンポーネントによって実行されるものとして記載されている１つ以上のタスクを実行してもよい。
【００７５】
図５は、制御システム１１０の例示的な物理レイアウト５００を示す平面図である。図５に示すように、物理レイアウト５００は、（図４に示す）ユニット１１５−Ａを含む。物理レイアウト５００は、また、部屋５２０−Ａ〜部屋５２０−Ｆを有する建物５１０を含み得る。イーサネット（登録商標）ネットワークといったローカルネットワーク５３０は、システムユニット１１５−Ａ〜システムユニット１１５−Ｆを相互接続し得る。この例では、システムユニット１１５−Ａは部屋５２０−Ａに通じる２つのドアを制御し、システムユニット１１５−Ｂは部屋５２０−Ｂに通じる外側のドアを制御し、システムユニット１１５−Ｃは部屋５２０−Ｂから部屋５２０−Ｃへの１つのドアを制御し、システムユニット１１５−Ｄは部屋５２０−Ｃから部屋５２０−Ｄへの１つのドアを制御し、システムユニット１１５−Ｅは部屋５２０−Ｄから部屋５２０−Ｅへの１つのドアを制御し、システムユニット１１５−Ｆは部屋５２０−Ｆに通じる外側のドアを制御する。
【００７６】
この例では、システムユニット１１５−Ａ〜システムユニット１１５−Ｆは、中央制御装置（サーバなど）を含まず、１つ以上の分散されたデータセットを含み得る。例えば、システムユニット１１５−Ａ〜システムユニット１１５−Ｆは、分散された認証情報テーブル、分散されたアクセスルールテーブル、及び／又は分散されたイベントログを維持し得る。管理者が管理装置１３０を使用して、ユーザを追加するためにシステムユニット１１５−Ａにログインし、ユーザと関連付けられる認証情報を追加するものと仮定する。それらの追加された認証情報は、ユーザがアクセス権を有する部屋に通じるドアを制御する他のシステムユニット１１５に配信され得る。例えば、システムユニット１１５−Ｂに障害が発生した場合、システムユニット１１５−Ｂによって収集されたデータは、他のシステムユニットに含まれる分散されたイベントログの結果として、利用可能であり続け得る。
【００７７】
図５では、各ユニット１１５はコントローラ２１０と関連付けられている。さらに、図５の実装では、各コントローラ２１０は、他のコントローラ２１０とは異なる場所（例えば異なる部屋５２０）にある。他の実装では、いくつかのコントローラ２１０及びユニット１１５は、他のコントローラ及びユニット１１５とは異なる建物、異なる地理的区域、異なる国、異なる大陸などに位置してもよい。一実施形態では、ユニット１１５及びコントローラ２１０は、それらが多様な場所にあるにもかかわらず、相互に探索し合い（又はそうするよう最善を尽くし）、ピアツーピアネットワークを形成し、データセットを配信することができる。
【００７８】
図５には、物理レイアウト５００の例示的コンポーネントが示されているが、他の実装では、物理レイアウト５００は、図５に示すものと比べて、より少ないコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は異なる配置のコンポーネントを含んでもよい。例えば、別の実施形態では、中央制御装置（サーバなど）が、１つ以上の分散されたデータセットと併用されてもよい。追加的又は代替的に、物理レイアウト５００の１つ以上のコンポーネントは、物理レイアウト５００の１つ以上の他のコンポーネントによって実行されるものとして記載されている１つ以上のタスクを実行してもよい。
【００７９】
図６は、管理装置１３０の例示的なコンポーネントを示すブロック図である。図６に示すように、管理装置１３０は、バス６１０、プロセッサ６２０、メモリ６３０、入力装置６４０、出力装置６５０、及び通信インタフェース６６０を含み得る。
【００８０】
バス６１０は、管理装置１３０のコンポーネント間の通信を可能にするパスを含む。プロセッサ６２０は、命令を解釈し、実行する任意の種類のシングルコアプロセッサ、マルチコアプロセッサ、マイクロプロセッサ、ラッチベースのプロセッサ、及び／若しくは処理ロジック（又はプロセッサ、マイクロプロセッサ、及び／若しくは処理ロジックのファミリ）を含んでもよい。他の実施形態では、プロセッサ６２０は、ＡＳＩＣ、ＦＰＧＡ、及び／又は別の種類の集積回路若しくは処理ロジックを含んでもよい。
【００８１】
メモリ６３０は、情報、データ、及び／又は命令を記憶する。メモリ６３０は、動的記憶デバイス、揮発性記憶デバイス、及び／又は不揮発性記憶デバイスを含んでもよい。メモリ６３０は、プロセッサ６２０が実行するための命令、又はプロセッサ６２０が使用するための情報を記憶し得る。例えば、メモリ６２０は、ＲＡＭ、ＲＯＭ、ＣＡＭ、磁気的記録メモリデバイス及び／又は光学的記録メモリデバイスなどを含んでもよい。
【００８２】
入力装置６４０は、オペレータが管理装置１３０へ情報を入力することを可能にする。入力装置６４０は、例えば、キーボード、マウス、ペン、マイクロフォン、タッチスクリーンディスプレイなどを含んでもよい。出力装置６５０は、管理装置１３０のオペレータに情報を出力し得る。出力装置６５０は、ディスプレイ、プリンタ、スピーカ、及び／又は別の種類の出力装置を含んでもよい。
【００８３】
通信インタフェース６６０は、コントローラ２１０が、有線通信リンク、無線通信リンク、又は無線通信リンクと有線通信リンクとの組み合わせを介して他の装置と通信する（例えば、データを送信し、及び／又は受信する）ことを可能にする送受信機（送信機及び／又は受信機など）を含んでもよい。通信インタフェース６６０は、有線通信のためのネットワークインタフェースカード（イーサネット（登録商標）カードなど）及び／又は無線通信のための無線ネットワークインタフェース（例えばＷｉＦｉ）カードを含んでもよい。
【００８４】
管理装置１３０は、システム１１０内のユニット１１５の管理に関連する動作を実行し得る。管理装置１３０は、これらの動作を、プロセッサ６２０がメモリ６３０といったコンピュータ可読媒体に含まれるソフトウェア命令を実行したことに応答して実行してもよい。メモリ６３０に含まれるソフトウェア命令は、プロセッサ６２０にこれらの動作を実行させ得る。
【００８５】
上述のように、コントローラ２１０は、分散方式でイベントデータを格納する。図７は、一実施形態における分散された制御システムでのイベントのデータを分散するための例示的なプロセス７００のフローチャートである。プロセス７００は、例えば、制御ロジック３２２、分散制御レイヤロジック３４０、コントローラ２１０内で実行される及び／又はイベント処理アプリケーション３２８により実行され得る。
【００８６】
プロセス７００は、イベントの生成で開始する（ブロック７０２）。例えば、ユニット１１５−Ａ内のカメラ２６０は、その視界内の物体の動きを検知し得る。このイベントがカメラ２６０からコントローラ２１０−Ａに報告され得ることにより、コントローラ２１０−Ａは、カメラ２６０からイベントに関するデータを受信する。イベントについてのデータは、動きが検知された事実、動きが検知された時間、動きの大きさなどといった情報を含み得る。コントローラ２１０−Ａは、イベントについてサブスクライバが存在するかどうかを判定する（ブロック７０３）。この例では、コントローラ２１０−Ａは、サブスクリプションテーブル３６７に問い合わせ得る。サブスクリプションテーブル３６７は、コントローラ２１０Ｃが“カメラ２６０上の動き”のイベントにサブスクライブすることが登録されていることを、（列３９４にリストされている）コントローラ２１０−Ａに通知する。イベントに対するサブスクライバが存在する場合（ブロック７０４：ＹＥＳ）、イベントについてのデータは、分散データエリア３６０（例えば、非合意データエリア３６３の装置イベントエリア３６９）に格納され得る（ブロック７０６）。引き続きこの例では、コントローラ２１０−Ａは、装置イベントエリア３６９（第１のデータエリア）に、“カメラ２６０上の動き”のイベントを記述するデータを格納する。イベントについてのデータは、また、コントローラ２１０−Ａ及び／又はカメラ２６０のアイデンティティにタグ付けされてもよい。
【００８７】
分散データエリア３６０の一部として、イベントについてのデータは、他のコントローラ２１０（例えば、サブスクライブするコントローラ２１０−Ｃを含む、コントローラ２１０−Ｂ〜２１０−Ｆ）に分散され得る（ブロック７０８）。上述のように、分散は、制御ロジック３２２及び／又は分散制御レイヤ３４０により処理され得る。イベントに関するデータ（例えば、カメラ２６０上の動き等）は、コントローラ２１０−Ａ内の装置イベントエリア３６９に保存されるため、コントローラ２１０−Ｃは、分散データエリア３６０の非合意データエリア３６３内のデータの分散の一部としてイベントのデータを知らされるようになる。コントローラ２１０−Ｃがイベントに関するデータを受信すると、コントローラ２１０−Ｃは、イベントに関するデータをルールと比較し、比較に基づき適当なルールに従ってイベントに作用し得る。このように、他のコントローラ（例えば、コントローラ２１０−Ｃ）が、イベントデータへのサブスクリプション（subscription）に関連付けられている場合に、コントローラ２１０−Ａは、（例えば、装置イベントエリア３６９又は第１のデータエリアに格納された）イベントデータの他のコントローラ２１０への分散に優先順位をつけ得る。
【００８８】
上述の実施形態では、コントローラ２１０−Ａは、コントローラ２１０−Ａがビジーであるか否かに関わらず、装置イベントエリア３６９（第１のデータエリア）にイベントについてのデータを格納し（ブロック７０６）、他のコントローラ２１０に対しデータを分散する（ブロック７０８）。別の実施形態では、コントローラ２１０−Ａがビジーである場合、イベントに対応するデータは、コントローラ２１０−Ａ内の分散データエリア３６０の装置イベントエリア３６９に格納されることなく（又は、格納されることに加えて）、サブスクライブしているコントローラ２１０−Ｃに直接分散され得る。この場合、コントローラ２１０−Ａ（例えば、ネットワークインタフェース２１８）は、イベントのデータと共にコントローラ２１０−Ｃに直接メッセージを送信し得る。この実施形態は、あまりビジーでないタイムピリオドまで、（例えば、コントローラ２１０−Ａの）計算能力及びイベントのデータの分散についての（例えば、ネットワーク１２０の）ネットワークリソースを減少させ得る。別の実施形態では、コントローラ２１０−Ａは、イベントにサブスクライブした他のコントローラ２１０にイベントについてのデータを送信するだけであってもよい。この実施形態は、コントローラ２１０−Ａのリソースを節約し得る。コントローラ２１０−Ａは、状態又はトリガイベント、例えば、プロセッサの負荷閾値、ネットワーク１２０内のトラフィック量（例えば、閾値より落ちる、又は閾値を上回っている）、処理しているイベントの数（例えば、閾値を上回る、又は下回る）等に基づいて、ビジーかどうかを判定し得る。例えば、満載のイベントを生成し処理している（例えば、ロック装置２５０により制御されるドアから入る）ため、コントローラ２１０−Ａは、ビジーであるかもしれない。
【００８９】
イベントに対するサブスクライバが存在しない場合（ブロック７０４：ＮＯ）、コントローラ２１０−Ａは、ビジーであるか否かを判定し得る（ブロック７０９）。コントローラ２１０−Ａがビジーであるか否かの判定は、上述の通りである。コントローラ２１０−Ａがビジーでない場合（ブロック７１０：ＮＯ）イベントについてのデータは、分散データエリア３６０（例えば、非合意データエリア３６３の装置イベントエリア３６９（第１のデータエリア））に格納され得る（ブロック７１２）。この例では、分散データエリア３６０の一部として、イベントについてのデータが他のコントローラ２１０（例えば、コントローラ２１０−Ｂ〜２１０−Ｆ）に分散される（ブロック７１２）。別の実施形態では、コントローラ２１０−Ａは、他のコントローラ２１０がビジーであるか否かを判定し得る（図７には示さず）。本実施形態では、別のコントローラ２１０がビジーである場合、コントローラ２１０−Ａは、他のコントローラ２１０にデータを分散する前に、他のコントローラ（例えば、コントローラ２１０−Ｃ）がビジーでなくなるまで待機し得る。図１０を参照して後述するように、コントローラ２１０−Ａが他のコントローラ２１０−Ｃからそれがビジーであることを示す“ホールドメッセージ（hold  message）”を受信した場合、コントローラ２１０−Ａは、別のコントローラ２１０−Ｃがビジーであると判定し得る。図１０を参照して後述するように、コントローラ２１０−Ａが他のコントローラ２１０−Ｃからそれがビジーでない（又はもはやビジーでなくなる）ことを示す“ストップホールドメッセージ（stop-hold  message）”を受信した場合、コントローラ２１０−Ａは、別のコントローラ２１０−Ｃがビジーでないと判定し得る。別の実施形態では、他のコントローラ２１０−Ｃにより送信され、かつコントローラ２１０−Ｃから受信されるイベントデータが閾値（例えば、コントローラ２１０−Ｃからのイベントデータの歴史的な分析により判定される閾値等）を上回る場合、コントローラ２１０−Ａは、別のコントローラ２１０−Ｃがビジーであると判定し得る。
【００９０】
コントローラ２１０−Ａがビジーである場合（ブロック７１０：ＹＥＳ）、イベントについてのデータは、非分散データエリア３７０（例えば、装置イベントエリア３７２）に格納されることができる（ブロック７１４）。上述のように、非分散データエリア３７０に格納されるデータは、分散制御レイヤ３４０による分散の影響を受けず、コントローラ２１０がビジーであるためこのことがリソースを節約し得る。図１０を参照して以下で詳細に述べるように、例えば、コントローラ２１０があまりビジーでないときに、イベントについてのデータは、分散のために非分散データエリア３７０から分散データエリア３６０（例えば、装置イベントエリア３６９）に移動（move）又はコピーされ得る。さらに、一実施形態では、コントローラ２１０−Ａがビジーである場合（ブロック７１０：ＹＥＳ）、イベントについてのデータは、不揮発性記憶装置３９２よりもむしろ揮発性記憶装置３９０に格納されることができる。上述のように、コントローラ２１０がビジーであるため、コントローラ２１０−Ａは、不揮発性記憶装置よりもむしろ揮発性記憶装置３９０にデータを保存することによりリソースを節約し得る。例えば、コントローラ２１０があまりビジーでないときに、イベントについてのデータは、揮発性記憶装置３９０から不揮発性記憶装置３９２に移動又はコピーされてもよい。
【００９１】
コントローラ２１０−Ａが（例えば、停電等で）電源を失い、揮発性記憶装置３９０内の（例えば、分散データエリア３６０の）分散されたデータが失われた場合、分散されたデータは、電力が回復したとき他の装置（例えば、コントローラ２１０−Ｂ〜２１０−Ｆ）から再構築され得る。したがって、本実施形態では、データが危険にさらされていない間、コントローラ２１０−Ａは、（データを不揮発性記憶装置３９０にコピーしないことにより）リソースを節約し得る。よって、別の実施形態では、イベントについてのデータが非分散データエリア３７０（例えば、装置イベントエリア３７２）に格納される場合（ブロック７１４）、コントローラ２１０−Ａがビジーであるとき（ブロック７１０：ＹＥＳ）でさえ、イベントデータは不揮発性記憶装置３９２に格納され得る。本実施形態では、コントローラ２１０−Ａが電源を失い、（例えば、データが装置イベントエリア３６９に格納又はコピーされていないために）イベントデータが他の装置に分散されていない場合に、イベントデータは不揮発性記憶装置３９２から回復され得る。
【００９２】
コントローラ２１０−Ａは、イベントのデータを生成及び送信することができるだけでなく、（例えば、そのネットワークインタフェース２１８を通じて他のコントローラ２１０−Ｂ〜２１０−Ｆから）イベントのデータを受信することができる。図８は、一実施形態における分散制御システムでのイベントのデータを受信するための例示的なプロセスのフローチャートである。プロセス８００は、例えば、制御ロジック３２２、分散制御レイヤロジック３４０、及び／又はコントローラ２１０内で実行されるイベント処理アプリケーション３２８により実行され得る。
【００９３】
プロセス８００は、（例えば、別のユニット１１５からの）イベントに関するデータの受信で開始する（ブロック８０２）。例えば、コントローラ２１０−Ａは、コントローラ２１０−Ｄに関連付けられるリーダが有効なエントリーコードを受信したことを示すイベントのデータをコントローラ２１０−Ｄから受信し得る。コントローラ２１０−Ａは、そのようなイベントにサブスクライブされているか否かを判定し得る（ブロック８０３）。コントローラ２１０−Ａは、そのようなイベントにサブスクライブされているか否かを判定するために、サブスクリプションテーブル３６７に問い合わせし得る。サブスクリプションテーブル３６７（３行目）に示されるように、コントローラ２１０−Ａは、コントローラ２１０−Ｄについての“リーダを介してユーザから受信される有効なエントリーコード”にサブスクライブしている。別の実施形態では、コントローラ２１０−Ａは、サブスクライブしているイベントに関するデータのみ受信し得る。同様に、他のコントローラ２１０は、イベントにサブスクライブしている他のコントローラ２１０に対してだけ、イベントに関するデータを送信し得る。この場合、コントローラ２１０−Ａは、受信されたデータに関連付けられるイベントにサブスクライブされているか否かを判定（ブロック８０３）する必要がないかもしれない。この実施形態は、コントローラ２１０−Ａのリソースを節約し得る。
【００９４】
コントローラ２１０−Ａがそのようなイベントにサブスクライブされている場合（ブロック８０４：ＹＥＳ）、コントローラ２１０−Ａは、イベントのデータを、例えば非合意データエリア３６３の他のイベントエリア３６８に格納し得る（ブロック８０６）。コントローラ２１０−Ａがイベントにサブスクライブされていない場合（ブロック８０４：ＮＯ）、コントローラ２１０−Ａは、それにもかかわらず依然としてイベントのデータを受信し格納し得る。一実施形態では、コントローラ２１０（例えば、ある実装における全てのコントローラ２１０）は、最終的には制御システム１１０内の全てのイベントを受信し格納し得る。しかしながら、コントローラ２１０が既にビジーである場合、優先度の低いイベントを受信し分散することは、コントローラに過負荷をかけ、パフォーマンスを低下させる恐れがある。したがって、一実施形態では、コントローラ２１０−Ａは、それがビジーであるかを判定する（ブロック８０７）。コントローラ２１０がビジーであるか否かの判定は、図７を参照して上述されている。
【００９５】
コントローラ２１０−Ａがビジーでない場合（ブロック８０８：ＮＯ）、コントローラ２１０は、例えば非合意データエリア３６３の他のイベントエリア３６８（第２のデータエリア）に、イベントのデータを格納し得る（ブロック８０６）。コントローラ２１０がサブスクライブしているイベントは、より高い優先度を有することができ、したがってコントローラ２１０がビジーである場合であっても、コントローラ２１０がイベントデータを受信するときに、対応するイベントデータが扱われ得る。コントローラ２１０−Ａがビジーである場合（ブロック８０８：ＹＥＳ）、コントローラ２１０は、イベントのデータを格納するよりもむしろ（例えば、揮発性記憶装置３９０のような記憶装置にそれを保持するよりもむしろ）、破棄し得る（ブロック８１０）。不揮発性記憶装置３９２にデータを格納することは、ビジーである間は、あまりにも負担となる恐れがあるため、それにもかかわらずコントローラ２１０−Ａは、データを破棄し得る。（図１０を参照して後述される）一実施形態では、コントローラ２１０−Ａは、あまりビジーでないときに、（ブロック８１０から破棄されたデータを含む）なくなったイベントのデータを要求し得る。さらに別の実施形態では、コントローラ２１０−Ａがあまりビジーでないときに、イベントデータは、他のコントローラ２１０によって、コントローラ２１０−Ａ（又は全てのコントローラ２１０）に再送信され得る。他のコントローラ２１０は、例えば、コントローラ２１０−Ａにより生成されたイベントデータ活動を監視することにより、コントローラ２１０−Ａがあまりビジーでないことを判定し得る。したがって、コントローラ２１０が破棄し（ブロック８１０）又はそうでなければ受信していないイベントデータは、コントローラ２１０−Ａ内でイベントデータを完結させるのを助けるために、最終的には、コントローラ２１０−Ａにより要求され（又はコントローラ２１０−Ａに再送信され）得る。
【００９６】
コントローラ２１０がイベントデータを生成及び受信するため、コントローラ２１０は、データで圧倒されるようになる（例えば、メモリを使い果たす）恐れがある。図９は、（例えば、装置イベントエリア３６９及び他のイベントエリア３６８が割り当てられたメモリスペースよりも多くを占めることを阻止するために）ストレージレイヤ３５０がデータで圧倒されないことを保証するための、例示的なプロセス９００のフローチャートである。プロセス９００は、制御ロジック３２２、分散制御レイヤロジック３４０、及び／又はコントローラ２１０で実行されるイベント処理アプリケーション３２８により実行されてもよい。プロセス９００は、バックグラウンドプロセスとして継続的又は定期的に実行され得る。一実施形態では、イベントデータが、装置イベントエリア３６９、他のイベントエリア３６８及び／又は装置イベントエリア３７２に書き込まれるときに、プロセス９００は実行され得る。例えば、コントローラ２１０は、プロセス７００のブロック７０６、ブロック７１４、及び／若しくはブロック７１２、並びに／又はプロセス８００のブロック８０６の後に、プロセス９００を実行してもよい。
【００９７】
プロセス９００は、データエリアが一杯であるかの判定（ブロック９０２）で開始する。この場合のデータエリアは、装置イベントエリア３６９（第１のデータエリア）、他のイベントエリア３６８（第２のデータエリア）、装置イベントエリア３７２、及び／又は任意の他のデータエリアに対応し得る。本実施形態では、別々のデータエリアは、各々最大サイズを有し得る。上述したように、例えば、装置イベントエリア３６９（第１のデータエリア）は、多くとも第１のメモリスペースを占め、他のイベントエリア３６８（第２のデータエリア）は、多くとも第２のメモリスペースを占め得る。（装置イベントエリア３６９に属している）第１のメモリスペースは、（他のイベントエリア３６８に属している）第２のメモリスペースより大きくてもよい。代替的に、装置イベントエリア３６９は装置イベントエリア３７２と組み合わせて、他のイベントエリア３６８よりも多くのスペースを割り当てられ得る。データエリアが一杯、一杯に近い、又は一杯より多い場合（ブロック９０４：ＹＥＳ）、イベントデータ（例えば、より古いイベントデータ又は最も古いイベントデータ）は、除去され得る（ブロック９０６）。例えば、コントローラ２１０−Ａが、装置イベントエリア３６９（第１のデータエリア）にイベントデータを格納しているが、エリア３６９（第１のデータエリア）がその割り当てられた最大値（第１のメモリスペース）を超過する場合、コントローラ２１０は、装置イベントエリア３６９（第１のデータエリア）がその割り当てられた最大値（第１のメモリスペース）よりも多くを占めることを阻止するために、より古いイベントデータ又は最も古いイベントデータを除去し得る。同様に、コントローラ２１０−Ａが他のイベントエリア３６８にイベントデータを格納しているが、エリア３６８（第２のデータエリア）が、その割り当てられた最大値（第２のメモリスペース）に達しようとしている場合、コントローラ２１０は、他のイベントエリア３６８（第２のメモリスペース）がその割り当てられた最大値（第２のメモリスペース）よりも多くを占めることを阻止するために、より古いイベントデータ又は最も古いイベントデータを除去し得る。一実施形態では、各ユニット（例えば、コントローラ２１０−Ａを有するユニット１１５−Ａ）は、他のコントローラ２１０よりも、それ自身に関するイベントデータをより多く格納する。即ち、各装置イベントエリア３６９について割り当てられた最大値（第１のデータエリアの第１のメモリスペース）は、対応する他のイベントエリア３６８について割り当てられた最大値（第２のデータエリアの第２のメモリスペース）よりも大きくてもよい。
【００９８】
したがって、プロセス９００によれば、コントローラ２１０−Ａは、第１のデータエリア（装置イベントエリア３６９）が第１のメモリスペースより多くを占めることを阻止するために、第１のデータエリア（装置イベントエリア３６９）からイベントデータを除去し得る。コントローラ２１０−Ａは、また、第２のデータエリアが、第２のメモリスペースより多くを占めることを阻止するために、第２のデータエリア（他のイベントエリア３６８）からイベントデータを除去し得る。一実施形態では、コントローラ２１０は、第１のデータエリア（装置イベントエリア３６９）から最も古いイベントデータを除去し、第２のデータエリア（他のイベントエリア３６８）から最も古いイベントデータを除去し得る。プロセス７００及び８００によれば、コントローラ２１０−Ａは、ネットワークインタフェースを通じて、第１のデータエリア（装置イベントエリア３６９）から他のコントローラ２１０にイベントデータを分散し、及び、第２のデータエリア（他のイベントエリア３６８）に格納するためにネットワークインタフェースを通じて他のコントローラ２１０からイベントデータを受信し得る。
【００９９】
上述のように、コントローラ２１０−Aは、それがビジーでない場合（又はビジーでないよりも少しビジーである場合）に、イベントデータを分散し得る。図１０は、一実施形態において、コントローラがビジーであるか否かに基づいて、分散制御システムでイベントを分散するための例示的なプロセス１０００のフローチャートである。プロセス１０００は、例えば、制御ロジック３２２、分散制御レイヤロジック３４０、及び／又はコントローラ２１０で実行されるイベント処理アプリケーション３２８により実行され得る。例えば、プロセス１０００は、バックグラウンドプロセスとして、継続的又は定期的に実行されてもよい。
【０１００】
この例では、プロセス１００は、コントローラ２１０がビジーであるかの判定で開始する（ブロック１００２）コントローラ２１０−Ａがビジーであるかの判定については、上述の通りである。一実施形態では、コントローラ２１０−Ａがビジーである場合（ブロック１００４：ＹＥＳ）、コントローラ２１０−Ａは、他のコントローラ（例えば、コントローラ２１０−Ｂ〜２１０−Ｆ）にホールドメッセージをブロードキャストし得る。他のコントローラ２１０−Ｂ〜２１０−Ｆがそのような標識（indication）を受信する場合、それらの他のコントローラ２１０−Ｂ〜２１０−Ｆは、優先度がより低いデータ及び／又は情報といった、いくつか又は全てのイベントデータのコントローラ２１０−Ａへの送信又は分散を停止し得る。一実施形態では、例えば、合意データエリア３６１に格納されたデータ及び情報は、非合意データエリア３６３に格納されたデータよりも高い優先度を有する。非合意データエリア３６３を超えて合意データエリア３６１に格納されたデータに関する情報に優先順位をつけることは、合意データエリアがそこに格納されたデータに関する合意を達成しない可能性を減少させることができる。さらに、上述のように、コントローラ２１０−Ａが関連付けられるサブスクリプションに対するイベントのデータは、コントローラ２１０−Ａが関連付けられていないサブスクリプションに対するイベントのデータよりも優先度が高いと考えられ得る。
【０１０１】
コントローラ２１０−Ａがビジーでない場合（ブロック１００４：ＮＯ）コントローラ２１０−Ａは、他のコントローラ（例えば、コントローラ２１０−Ｂ〜２１０−Ｆ）にストップホールドメッセージをブロードキャストし得る（ブロック１００８）（例えば、特に、コントローラ２１０−Ａがブロック１００６でホールドメッセージをブロードキャストした実施形態において）。コントローラ２１０−Ａがビジーでない場合（ブロック１００４：ＮＯ）、コントローラ２１０−Ａは、非分散データエリア３７０から分散データエリア３６０（例えば、装置イベントエリア３６９（第１のデータエリア））にイベントデータをコピーし得る（ブロック１０１０）。上述のように、分散データエリア３６０に保存されたデータは、制御ロジック３２２及び／又は分散制御レイヤ３４０により分散されることができる。非分散データエリア３７０から分散データエリア３６０にコピーされるデータは、コントローラ２１０−Ａがあまりにビジーであった（ブロック７１０：ＹＥＳ）ために、分散データエリア３６０に保存されなかったデータを含むことができる。上述のように、コントローラ２１０−Ａは、それがあまりビジーでないときに、失われたイベントのデータ（ブロック８１０から破棄されたデータを含む）についての要求を送信し得る（ブロック１０１２）。さらに別の実施形態では、コントローラ２１０−Ａがあまりビジーでないときに、イベントデータは他のコントローラ２１０により再送信され得る。他のコントローラ２１０は、コントローラ２１０−Ａからの活動（例えば、送信されたイベント）が減少しているときにコントローラ２１０−Ａがあまりビジーでないかどうかを判定し得る。したがって、コントローラ２１０が破棄し（ブロック８１０）、又はそうでなければ受信していないイベントデータは、コントローラ２１０−Ａ内でイベントデータを完結させるのを助けるために、最終的には、コントローラ２１０−Ａにより要求され（又はコントローラ２１０−Ａに再送信され）得る。このように、イベントデータの分散は、ビジーな期間からビジーでない期間にシフトされる。
【０１０２】
プロセス７００、８００、及び１０００及び上述の説明により、イベントデータの分散を停止するために、通信ネットワークを通じて装置の中の他の１つから標識が受信される場合、コントローラ２１０−Ａは、第１のデータエリア（装置イベントエリア３６９）からコントローラ２１０の中の別の１つにイベントデータを分散することを停止し得る。一実施形態では、対応する他のコントローラ２１０内のプロセッサがプロセッサ負荷閾値を超過する場合、コントローラ２１０の中の他の１つは、イベントデータの分散を停止することを示し得る。
【０１０３】
一実施形態は、管理者が管理装置１３０を使用して、コントローラ２１０のうちのいずれか又は全てに格納されるデータにアクセスするためにコントローラ（例えば、コントローラ２１０−Ａ〜２１０−Ｆのうちいずれか１つ）にログインできるようにする。即ち、管理者は、管理装置１３０を使用して、コントローラ２１０−Ａ又はコントローラ２１０−Ｂ〜２１０−Ｆのうちのいずれかに格納されているデータにアクセスするためにコントローラ２１０−Ａにログインすることができる。図１１は、一実施形態において、管理者がコントローラ２１０に格納されているデータにアクセスするための例示的なプロセス１１００のフローチャートである。プロセス１１００は、例えば、制御ロジック３２２、分散制御レイヤロジック３４０、及び／又はコントローラ２１０で実行されるイベント処理アプリケーション３２８により実行されてもよい。
【０１０４】
この例では、プロセス１１００は、イベントデータなどのデータについての要求を受信することで開始する（ブロック１１０２）。例えば、管理者は、管理装置１３０を使用して、装置イベントエリア３６９（第１のデータエリア）、他のイベントエリア３６８（第２のデータエリア）、及び／又は装置イベントエリア３７２内のイベントデータを要求及び受信するために、コントローラ２１０のうちの任意の１つにログイン又は任意の１つと通信する。ある場合において、管理者は、要求されたデータを分析し、及びデータについて報告することを望むかもしれない。管理者が、管理装置１３０（例えば、システムユニット１１５に関連する追加の装置）からコントローラ２１０−Ａにログインすると仮定する。コントローラ２１０−Ａが、要求されたデータを有する場合（ブロック１１４：ＹＥＳ）、コントローラ２１０−Ａは、要求している装置（例えば、管理装置１３０又は“追加の装置”）に対し要求されたデータを送信することができる（ブロック１１０６）。しかし、コントローラ２１０−Ａは、装置イベントエリア３６９（第１のデータエリア）、他のイベントエリア３６８（第２のデータエリア）、又は装置イベントエリア３７２に格納されている、要求されたイベントデータの全てを有していないかもしれない（例えば、イベントデータがコントローラ２１０−Ａにまだ分散されていないかもしれず、又は、プロセス９００の間にコントローラ２１０−Ａ内で除去されて他の場所に格納されているかもしれない）。コントローラ２１０−Ａが要求されたデータを有していない場合（ブロック１１０４：ＮＯ）、コントローラ２１０−Ａは、他のコントローラ２１０（例えば、コントローラ２１０−Ｂ〜２１０−Ｆ）からデータを要求することができる（ブロック１１１０）。コントローラ２１０−Ａは、その後、要求されたデータを受信し（ブロック１１１２）、それを要求元に送信するであろう（ブロック１１４）。一実施形態では、コントローラ２１０−Ａは、データがコントローラ２１０−Ａを通過することなく、管理装置１３０に（例えば、直接）関連するデータを送信するように他のコントローラ２１０−Ｂ〜２１０−Ｆに要求し得る。
【０１０５】
したがって、プロセス１１００は、第１のデータエリア（装置イベントエリア３６９）に格納されたイベントデータ又は第２のデータエリア（他のイベントエリア３６８）に格納されたイベントデータを要求及び受信するために、コントローラ２１０のうち１つと通信する追加の装置（管理装置１３０）を開示する。
【０１０６】
以上の明細書では、添付の図面を参照して様々な実施形態を説明した。しかし、添付の特許請求の範囲に記載される本発明の広範な範囲から逸脱することなく、実施形態に様々な改変及び変更を加えることができ、追加的な実施形態を実現することができることは明らかであろう。本明細書及び図面は、したがって、限定としてではなく例示とみなされるべきである。例えば、図７及び８に関連して一連のブロックが記載されているが、ブロック及び／又は信号フローの順序は、他の実装では変更されてもよい。さらに、依存関係の無いブロック及び／又は信号フローは並列に実行されてもよい。
【０１０７】
一実施形態では、方法及びシステムは、合意データエリア３６１を省略し得る（例えば、合意ベースのデータベースを含まない）。別の実施形態では、方法及びシステムは、装置イベントデータエリア３６９を分散しなくてもよく、及び／又は、他のイベントデータエリア３６８を分散しなくてもよい。
【０１０８】
前述のシステム及び／又は方法は、各図に示す実装形態において、多くの異なる形態のソフトウェア、ファームウェア、及びハードウェアで実装され得ることが理解されるであろう。これらのシステム及び方法を実装するのに使用される実際のソフトウェアコード又は専用の制御ハードウェアは、各実施形態を限定するものではない。よって、システム及び方法の動作及び振る舞いは、特定のソフトウェアコードを参照せずに記載された。すなわち、ソフトウェア及び制御ハードウェアは、本明細書の記載に基づくシステム及び方法を実装するように設計することができることが理解される。
【０１０９】
さらに、前述のある特定の部分が、１つ以上の機能を実行するコンポーネントとして実装されてもよい。コンポーネントとは、本明細書で使用する場合、プロセッサ、ＡＳＩＣ、ＦＰＧＡといったハードウェア、又はハードウェアとソフトウェアの組み合わせ（ソフトウェアを実行するプロセッサなど）を含み得る。
【０１１０】
“含む（comprises及び／又はcomprising）”という用語は、本明細書で使用する場合、記述される特徴、整数、ステップ又はコンポーネントの存在を指定するが、１つ以上の他の特徴、整数、ステップ、コンポーネント又はそのグループを排除するものではない。さらに、“例示的な（exemplary）”（“例示的な実施形態”、“例示的な構成”など）という用語は、“一例として（as  an  example）”を意味し、“好ましい（preferred）”、“最善の（best）”などを意味するものではない。
【０１１１】
本出願で使用されるいかなる要素、動作、又は命令も、特に明示しない限り、実施形態にとって不可欠又は本質的であると解釈すべきではない。また、本明細書で使用する場合、冠詞の“ａ”は１つ以上の項目を含むことが意図されている。さらに、“〜に基づいて（based  on）”という句は、特に明示しない限り、“少なくとも一部は〜に基づいて”を意味するものである。
【図１】
2015057703.tif 000003
【図２Ａ】
2015057703.tif 000004
【図２Ｂ】
2015057703.tif 000005
【図３Ａ】
2015057703.tif 000006
【図３Ｂ】
2015057703.tif 000007
【図３Ｃ】
2015057703.tif 000008
【図３Ｄ】
2015057703.tif 000009
【図３Ｅ】
2015057703.tif 000010
【図４】
2015057703.tif 000011
【図５】
2015057703.tif 000012
【図６】
2015057703.tif 000013
【図７】
2015057703.tif 000014
【図８】
2015057703.tif 000015
【図９】
2015057703.tif 000016
【図１０】
2015057703.tif 000017
【図１１】
2015057703.tif 000018