(57)【要約】      （修正有）【課題】データセットへのアクセスを集中管理するノードがシステム内に存在しなくても、デバイス間で協調的にデータセットへのアクセスを管理可能とする。【解決手段】分散制御システム１１０内のデバイス（システムユニットに相当）１１５は、アプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出し、アプリケーションデータセットが分散制御システム１１０内に存在するかを判定し、存在しないという判定に応じて分散制御システム１１０内にアプリケーションデータセットを生成し、存在するという判定に応じて分散制御システム内の他のデバイス１１５へアプリケーションデータセットに関連付けられるデバイス群１１５を含むデータセットグループへの参加を求めるリクエストを送信する。【選択図】図１
2015057696.tif 000002
【特許請求の範囲】
【請求項１】
分散システム内のデバイスにより実行される方法であって、
前記デバイスにより、アプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出することと、前記アプリケーションデータセットは、分散されたデータセットに相当することと、
前記デバイスにより、前記アプリケーションデータセットについての識別子が前記分散システムの分散システムデータセット内のリストに含まれているかを判定することと、
前記アプリケーションデータセットについての前記識別子が前記分散システムデータセット内のリストに含まれていないという判定に応じて、前記デバイスにより、前記分散システムデータセット内に、前記アプリケーションデータセットについての前記識別子のためのエントリを生成することと、
前記アプリケーションデータセットについての前記識別子が前記分散システムデータセット内に存在するという判定に応じて、前記デバイスにより、前記分散システム内の他のデバイスへ、前記アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストを送信することと、
を含む方法。
【請求項２】
前記アプリケーションデータセットについての前記識別子が前記分散システムの前記分散システムデータセット内のリストに含まれているかを判定することは、
前記分散システムデータセット内の分散されたデータセットの識別子のリストへアクセスすることと、
分散されたデータセットの識別子の前記リストがリクエストされた前記アプリケーションデータセットについての前記識別子を含むかを判定することと、
を含む、請求項１の方法。
【請求項３】
前記分散システムデータセット内の前記アプリケーションデータセットについての前記識別子のための前記エントリの生成に応じて、前記デバイスのストレージレイヤ内に前記アプリケーションデータセットを生成することと、
前記アプリケーションデータセットの生成に応じて、生成された前記アプリケーションデータセットへ、前記アプリケーションからの情報を追加することと、
をさらに含む、請求項１又は請求項２の方法。
【請求項４】
前記分散システム内の他のデバイスから、前記データセットグループに前記デバイスが追加されたという標識を受信することと、
前記分散システム内の前記他のデバイスから、前記アプリケーションデータセットを受信することと、
受信される前記アプリケーションデータセットを前記デバイス上に記憶することと、
をさらに含む、請求項１〜３のいずれか１項の方法。
【請求項５】
受信される前記アプリケーションデータセットは、前記データセットグループのメンバーであるデバイス群のリストを含み、前記方法は、
前記アプリケーションデータセットにアプリケーションデータを追加するという提案を、前記データセットグループのメンバーである前記デバイス群へ送信することと、
前記提案の送信に応じて、前記アプリケーションデータセットに前記アプリケーションデータを追加することの合意を取得することと、
前記合意の取得に応じて、前記アプリケーションデータセットに前記アプリケーションデータを追加することと、
をさらに含む、請求項４の請求項の方法。
【請求項６】
前記分散システム内の他のデバイスから、生成された前記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループへの参加を求めるリクエストを受信することと、
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへの前記他のデバイスの追加についての合意を取得することと、
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへの前記他のデバイスの追加についての前記合意の取得に応じて、生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへ前記他のデバイスを追加することと、
をさらに含む、請求項１〜５のいずれか１項の方法。
【請求項７】
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへの前記他のデバイスの追加についての合意を取得することは、
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへの前記他のデバイスの追加の提案を、生成された前記アプリケーションデータセットに関連付けられる前記デバイス群へ送信することと、
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへの前記他のデバイスの追加について定足数の賛成票を取得することと、
を含む、請求項６の方法。
【請求項８】
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへ前記他のデバイスを追加することは、
前記他のデバイスへ前記アプリケーションデータセットを送信することと、
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループに関連して合意を取得するために要する定足数の数値を調整することと、
を含む、請求項６の方法。
【請求項９】
前記分散システムは、分散された物理アクセス制御システムを含み、前記デバイス及び前記他のデバイスは、物理アクセス制御ユニットに相当する、請求項１〜８のいずれか１項の方法。
【請求項１０】
分散システム（１１０）内のデバイスであって、
分散されたデータセットに相当するアプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出し、
前記アプリケーションデータセットについての識別子が前記分散システム（１１０）の分散システムデータセット内のリストに含まれているかを判定し、
前記アプリケーションデータセットについての前記識別子が前記分散システムデータセット内のリストに含まれていないという判定に応じて、前記分散システムデータセット内に、前記アプリケーションデータセットについての前記識別子のためのエントリを生成し、
前記アプリケーションデータセットについての前記識別子が前記分散システムデータセット内に存在するという判定に応じて、前記分散システム（１１０）内の他のデバイス（１１５）へ、前記アプリケーションデータセットに関連付けられるデバイス群（１１５）を含むデータセットグループへの参加を求めるリクエストを送信する、
ように構成されるロジック（２１０）、を備えるデバイス。
【請求項１１】
前記ロジックは、
前記分散システムデータセット内の前記アプリケーションデータセットについての前記識別子のための前記エントリの生成に応じて、前記デバイスのストレージレイヤ内に前記アプリケーションデータセットを生成し、
前記アプリケーションデータセットの生成に応じて、生成された前記アプリケーションデータセットへ、前記アプリケーションからの情報を追加する、
ようにさらに構成される、請求項１０のデバイス。
【請求項１２】
前記ロジックは、
前記分散システム内の他のデバイスから、前記データセットグループに前記デバイスが追加されたという標識を受信し、
前記分散システム内の前記他のデバイスから、前記アプリケーションデータセットを受信し、
受信される前記アプリケーションデータセットを前記デバイス上に記憶する、
ようにさらに構成される、請求項１０又は請求項１１のデバイス。
【請求項１３】
受信される前記アプリケーションデータセットは、前記データセットグループのメンバーであるデバイス群のリストを含み、前記ロジックは、
前記アプリケーションデータセットにアプリケーションデータを追加するという提案を、前記データセットグループのメンバーである前記デバイス群へ送信し、
前記提案の送信に応じて、前記アプリケーションデータセットに前記アプリケーションデータを追加することの合意を取得し、
前記合意の取得に応じて、前記アプリケーションデータセットに前記アプリケーションデータを追加する、
ようにさらに構成される、請求項１２のデバイス。
【請求項１４】
前記ロジックは、
前記分散システム内の他のデバイスから、生成された前記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループへの参加を求めるリクエストを受信し、
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへの前記他のデバイスの追加についての合意を取得し、
生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへの前記他のデバイスの追加についての前記合意の取得に応じて、生成された前記アプリケーションデータセットに関連付けられるデバイス群の前記データセットグループへ前記他のデバイスを追加する、
ようにさらに構成される、請求項１０〜１３のいずれか１項のデバイス。
【請求項１５】
前記分散システムは、分散された物理アクセス制御システムを含み、前記デバイス及び前記他のデバイスは、物理アクセス制御ユニットに相当する、請求項１０〜１４のいずれか１項のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般的にアクセス制御システムに関し、より具体的には、アクセス制御システムにおいてアプリケーションデータを管理することに関する。
【背景技術】
【０００２】
分散システムは、タスクのセットを達成するために通信し及び自身のアクションを協調させる複数のコンポーネントを含み得る。例えば、分散システム内のコンピュータは、アルゴリズムを解決するために協調することを目的として、ネットワーク上で通信し得る。データ及びリソースの管理、又は処理ステップの同期といった、独立したコンピュータ上で同時に行われる動作を成功裏に協調させるために、分散アルゴリズムを実装することが必要であり得る。多様な分散アルゴリズムが、分散システムのコンポーネントを協調させるために開発されてきた。
【発明の概要】
【０００３】
１つの観点によれば、分散システム内のデバイスにより実行される方法は、上記デバイスにより、アプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出することと、上記アプリケーションデータセットは、分散されたデータセットに相当することと、上記デバイスにより、上記アプリケーションデータセットが上記分散システム内に存在するかを判定することと、上記アプリケーションデータセットが上記分散システム内に存在しないという判定に応じて、上記デバイスにより、上記分散システムデータセット内で上記アプリケーションデータセットを生成することと、上記アプリケーションデータセットが上記分散システム内に存在するという判定に応じて、上記デバイスにより、上記分散システム内の他のデバイスへ、上記アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストを送信することと、を含み得る。
かかる構成によれば、複数のデバイス上のアプリケーションによりアクセスされ得る特定のデータセットへのアクセスを集中的に管理するノード（例えば、データサーバなど）がシステム内に配備されていない場合であっても、デバイス間で協調的にそうしたデータセットへのアクセスを管理することができる。
【０００４】
追加的に、上記アプリケーションデータセットが上記分散システム内に存在するかを判定することは、上記分散システム内の分散されたデータセットの識別子のリストへアクセスすることと、分散されたデータセットの識別子の上記リストがリクエストされた上記アプリケーションデータセットについての識別子を含むかを判定することと、を含み得る。
それにより、いずれのデバイスでも未だ稼動していないアプリケーションがシステム内で初めて動作する場合には、分散されたデータセットにおける当該アプリケーションのためのデータセットの不在が確認された上で、新たなアプリケーションデータセットを生成することができる。
【０００５】
追加的に、本方法は、上記アプリケーションデータセットの生成に応じて、生成された上記アプリケーションデータセットに上記アプリケーションからの情報を追加すること、を含み得る。
【０００６】
追加的に、本方法は、上記分散システム内の他のデバイスから、上記データセットグループに上記デバイスが追加されたという標識を受信することと、上記分散システム内の上記他のデバイスから、上記アプリケーションデータセットを受信することと、受信される上記アプリケーションデータセットを上記デバイス上に記憶することと、を含み得る。
それにより、いずれかのデバイスで既に稼動しているアプリケーションがシステム内の他のデバイスで新たに利用される場合には、分散的に保持されている当該アプリケーションのためのデータセットを、新たに当該アプリケーションを利用しようとするデバイスが受け取ることができる。
【０００７】
追加的に、受信される上記アプリケーションデータセットは、上記データセットグループのメンバーであるデバイス群のリストを含んでもよく、上記方法は、上記アプリケーションデータセットにアプリケーションデータを追加するという提案を、上記データセットグループのメンバーである上記デバイス群へ送信することと、上記提案の送信に応じて、上記アプリケーションデータセットに上記アプリケーションデータを追加することの合意を取得することと、上記合意の取得に応じて、上記アプリケーションデータセットに上記アプリケーションデータを追加することと、をさらに含み得る。
それにより、複数のデバイス上で分散的に保持されているデータセットについてアプリケーションデータの追加の必要性が生じた場合には、それらデータセット間で整合性を維持しつつ、データセットにアプリケーションデータを追加することができる。
【０００８】
追加的に、本方法は、上記分散システム内の他のデバイスから、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループへの参加を求めるリクエストを受信することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての合意を取得することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての上記合意の取得に応じて、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへ上記他のデバイスを追加することと、をさらに含み得る。
【０００９】
追加的に、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての合意を取得することは、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加の提案を、生成された上記アプリケーションデータセットに関連付けられる上記デバイス群へ送信することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加について定足数の賛成票を取得することと、を含み得る。
このような定足数の要件を設けることで、データセットグループへのデバイスの追加（あるいはデータの変更など）といったイベントが異なるデバイス上で並行的に検出された場合に、イベントの競合に起因してデータの更新が失敗し又はデータの一貫性が失われるといった不具合を防止することができる。
【００１０】
追加的に、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへ上記他のデバイスを追加することは、上記他のデバイスへ上記アプリケーションデータセットを送信することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループに関連して合意を取得するために要する定足数の数値を調整することと、を含み得る。
【００１１】
追加的に、本方法は、上記分散システム内の上記他のデバイスから、生成された上記アプリケーションデータセット内のアプリケーションデータを変更することを求めるリクエストを受信することと、生成された上記アプリケーションデータセット内の上記アプリケーションデータの変更について合意を取得することと、生成された上記アプリケーションデータセット内の上記アプリケーションデータの変更についての上記合意の取得に応じて、生成された上記アプリケーションデータセット内の上記アプリケーションデータを変更することと、を含み得る。
【００１２】
追加的に、本方法は、上記分散システム内の上記他のデバイスから、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループから削除されることを求めるリクエストを受信することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループからの上記他のデバイスの削除について合意を取得することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループからの上記他のデバイスの削除についての上記合意の取得に応じて、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループから上記他のデバイスを削除することと、を含み得る。
【００１３】
追加的に、上記分散システムは、分散された物理アクセス制御システムを含んでよく、上記デバイス及び上記他のデバイスは、物理アクセス制御ユニットに相当する。
【００１４】
他の観点によれば、分散システム内のデバイスは、分散されたデータセットに相当するアプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出し、上記アプリケーションデータセットが上記分散システム内に存在するかを判定し、上記アプリケーションデータセットが上記分散システム内に存在しないという判定に応じて、上記分散システム内に上記アプリケーションデータセットを生成し、上記アプリケーションデータセットが上記分散システム内に存在するという判定に応じて、上記分散システム内の他のデバイスへ、上記アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストを送信する、ように構成されるロジック、を備え得る。
【００１５】
追加的に、上記ロジックは、上記アプリケーションデータセットが上記分散システム内に存在するかを判定する際に、上記分散システム内の分散されたデータセットの識別子のリストへアクセスし、分散データセットの上記リストがリクエストされた上記アプリケーションデータセットについての識別子を含むかを判定する、ようにさらに構成され得る。
【００１６】
追加的に、上記ロジックは、上記アプリケーションデータセットの生成に応じて、生成された上記アプリケーションデータセットへ、上記アプリケーションからの情報を追加する、ようにさらに構成され得る。
【００１７】
追加的に、上記ロジックは、上記分散システム内の他のデバイスから、上記データセットグループに上記デバイスが追加されたという標識を受信し、上記分散システム内の上記他のデバイスから、上記アプリケーションデータセットを受信し、受信される上記アプリケーションデータセットを上記デバイス上に記憶する、ようにさらに構成され得る。
【００１８】
追加的に、受信される上記アプリケーションデータセットは、上記データセットグループのメンバーであるデバイス群のリストを含んでもよく、上記ロジックは、上記アプリケーションデータセットにアプリケーションデータを追加するという提案を、上記データセットグループのメンバーである上記デバイス群へ送信し、上記提案の送信に応じて、上記アプリケーションデータセットに上記アプリケーションデータを追加することの合意を取得し、上記合意の取得に応じて、上記アプリケーションデータセットに上記アプリケーションデータを追加する、ようにさらに構成され得る。
【００１９】
追加的に、上記ロジックは、上記分散システム内の他のデバイスから、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループへの参加を求めるリクエストを受信し、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての合意を取得し、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての上記合意の取得に応じて、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへ上記他のデバイスを追加する、ようにさらに構成され得る。
【００２０】
追加的に、上記ロジックは、上記分散システム内の上記他のデバイスから、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループから削除されることを求めるリクエストを受信し、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループからの上記他のデバイスの削除について合意を取得し、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループからの上記他のデバイスの削除についての上記合意の取得に応じて、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループから上記他のデバイスを削除する、ようにさらに構成され得る。
【００２１】
追加的に、上記分散システムは、分散された物理アクセス制御システムを含んでよく、上記デバイス及び上記他のデバイスは、物理アクセス制御ユニットに相当してもよい。
【００２２】
また別の観点によれば、分散システムは、複数の物理アクセス制御デバイスを含んでよく、当該複数の物理アクセス制御デバイスのうちの特定の１つは、分散されたデータセットに相当するアプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出し、上記アプリケーションデータセットが上記分散システム内に存在するかを判定し、上記アプリケーションデータセットが上記分散システム内に存在しないという判定に応じて、上記デバイスにより、上記分散システム内で上記アプリケーションデータセットを生成し、上記アプリケーションデータセットが上記分散システム内に存在するという判定に応じて、上記複数の物理アクセス制御デバイスのうちの他の１つへ、上記アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストを送信する、ように構成される。
【図面の簡単な説明】
【００２３】
【図１】ここで説明される実施形態に係る例示的な環境を示すブロック図である。
【図２】図１の分散システムユニットの例示的なコンポーネントを示すブロック図である。
【図３Ａ】図１の分散システムユニットの例示的な機能コンポーネントを示すブロック図である。
【図３Ｂ】図１の分散システムユニットの例示的な機能コンポーネントを示すブロック図である。
【図４Ａ】図３Ｂのシステムデータセット内に記憶され得る例示的な情報の図である。
【図４Ｂ】図３Ｂのアプリケーションデータセット内に記憶され得る例示的な情報の図である。
【図５】ここで説明される１つ以上の実装に従って分散制御システムにおいてデータセットグループへ参加し又はアプリケーションデータセットへアクセスするためのフローチャートである。
【図６】ここで説明される１つ以上の実装に従って分散制御システムにおいてアプリケーションデータセットへアプリケーションデータを追加するためのフローチャートである。
【図７】ここで説明される１つ以上の実装に従って分散制御システムにおいてアプリケーションデータセットに関連付けられるデータセットグループへのシステムユニットの追加を求めるリクエストを処理するためのフローチャートである。
【図８】図１の分散システムユニットの例示的な物理レイアウトを示す平面図である。
【図９】図１の分散システムの例示的な物理レイアウトを示す平面図である。
【図１０Ａ】１つ以上の実装に係る例示的なアプリケーションデータセットのシナリオの図である。
【図１０Ｂ】１つ以上の実装に係る例示的なアプリケーションデータセットのシナリオの図である。
【図１０Ｃ】１つ以上の実装に係る例示的なアプリケーションデータセットのシナリオの図である。
【発明を実施するための形態】
【００２４】
以下の詳細な説明は、添付図面へ言及する。異なる図面における同一の参照番号は、同一の又は類似のエレメントを識別する。
【００２５】
分散制御システムは、分散型の（distributed）物理アクセス制御システムを含み得る。物理アクセス制御システムは、１つ以上のアクセス制御ユニットを含んでよく、各アクセス制御ユニットは、ある施設のエリアへの物理的なアクセスを制御する。例えば、あるアクセス制御ユニットは、ユーザから認証情報（credential）を取得し、ユーザの認証情報が検証され、真正なものとして証明され、又は特定の条件を充足する場合にドアのロックを解除し得る。他の実装において、分散制御システムは、分散型のビル管理システム、分散型の監視システム、分散型のセキュリティシステム及び／又は他のタイプの分散制御システムを含み得る。
【００２６】
分散制御システムは、分散アルゴリズムを用いて、分散型のコンピューティング動作を実行し得る。例えば、分散制御システムは、分散されたデータベースを管理（manage）し得る。分散アルゴリズムは、合意ベース（consensus  based）であり得る。ある動作が実行される前に分散システム内のノードの間で合意を形成するために、合意アルゴリズムが使用される。例えば、１つの実施形態において、分散されたデータセットを更新するために、分散システム内のノード群は、更新の実行についての合意に到達する必要がある。合意は、提案された動作（例えば、分散されたデータベースの変更）について（例えば、全ての、定足数の、など）ノード群が同意していることに対応する。合意は、提案された動作について定足数が獲得された場合に達せられ得る。定足数（quorum）は、提案された動作についてノード群のうちの多数（majority）が賛意を示す場合に達せられ得る。賛意は、例えば、賛成票（あるいは同意、承認など）を意味するメッセージ又は信号の送信によって示され得る。変更について賛意を示すことをノード群のうちの多数に要求することで、例えば、２つの競合する提案された変更が検討されている場合に、少なくとも１つのノードが提案された変更の双方を受信し、最初に受信された方の提案された変更を選択して賛成票を投じるなどの動作を行うことが保証される。他の実装において、ノードは提案された変更のうちの１つの選択及び投票において異なる（最初に受信された提案された変更とは別の）基準を使用してもよい。
【００２７】
分散されたデータセットは、分散システム内のノードのサブセットにより使用され得る。例えば、アプリケーションは分散されるアプリケーションのデータセットを使用し、当該アプリケーションは分散システム内のノードのサブセット上にインストールされ得る。特定のアプリケーションデータセットを用いるノードのサブセットを、ここではデータセットグループという。ここで説明される実装は、特定のアプリケーションに関連付けられる分散されたデータセットを管理することに関連し得る。分散システム内のデバイスは、アプリケーションに関連付けられる分散されたデータセットに相当するアプリケーションデータセットへのアクセスを求める、アプリケーションからのリクエストを検出し、分散システム内に当該アプリケーションデータセットが存在するかを判定し得る。アプリケーションデータセットが存在しない場合、アプリケーションデータセットが生成され得る。アプリケーションデータセットが存在する場合、アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストが、分散システム内の他のデバイスへ送信され得る。
【００２８】
分散システム内の他のデバイスは、データセットグループへの追加のリクエストをリクエスト元デバイスから受信し、データセットグループへ当該リクエスト元デバイスを追加するという提案を生成し得る。データセットグループ内の他のデバイスは当該提案について投票を行い、合意が達せられた場合には、リクエスト元デバイスがデータセットグループへ追加され得る。そして、リクエスト元デバイスは、当該データセットグループに関連付けられるアプリケーションデータセットを受信し、並びに／又はアプリケーションデータの追加、及び／若しくはデータセットグループに関連付けられるアプリケーションデータセットへの他の変更について提案を行い得る。
【００２９】
図１は、以下に説明するシステム及び／又は方法が実装され得る例示的な環境１００のブロック図である。図１に示したように、環境１００は、分散制御システム１１０（例えば、分散された物理アクセス制御システム）、ネットワーク１２０及び管理デバイス１３０を含み得る。
【００３０】
分散制御システム（ＤＣＳ）１１０は、システムユニット１１５−Ａ〜１１５−Ｎ（“システムユニット群１１５”と総称され、及び個別に“システムユニット１１５”とも称される）を含む分散コンピューティングシステムを含み得る。システムユニット１１５は、組込み型の（embedded）システムとして実装されてもよい。いくつかの実装では、システムユニット１１５は、物理アクセス制御デバイスを含み得る。例えば、システムユニット１１５は、部屋（room）又は部屋の集合といった保護されるエリアへのアクセスを制御するアクセスコントローラを含み得る。システムユニット１１５は、リーダ（reader）デバイスを介して認証情報（例えば、アクセスカードの認証情報）を受信し、当該認証情報が真正であってセキュアエリアへアクセスする権限に関連付けられているかを判定し得る。判定結果が真であれば、アクセスコントローラは、ドアのロックを解除し又はセキュアエリアへのアクセスを許可することに関連付けられる他の動作を実行するためのコマンドを発行し得る。他の実装において、システムユニット１１５は、監視デバイス又は機械の動作を制御するデバイスなどといった異なるタイプのセキュリティデバイスを含んでもよい。他の実装において、システムユニット１１５は、他のタイプの組込み型システムを含んでもよい。
【００３１】
ＤＣＳ１１０は、１つ以上の分散されたデータセットを含み得る。分散されたデータセットは、複数のデバイスに関連付けられるデータセットを含む。１つの実施形態において、当該複数のデバイスは、データセットの変更を行うために、互いに通信し及び協調する。いくつかの実装において、分散されたデータセットは、当該分散されたデータセットに関連付けられる各デバイスにより維持され、デバイス群によって変更が同意されると、その変更がデバイス群の各々により当該分散されたデータセットへ適用される。他の実装において、分散されたデータセットに関連付けられるデバイスの全てが実際の分散されたデータセットを記憶するとは限らない。
【００３２】
いくつかの実施形態において、分散されたデータセット（例えば、合意ベースの分散データベース）内で変更を行うために、合意が達せられる。他の実施形態において、合意が無くとも、分散されたデータセットへの変更がなされてもよい。分散されたデータセットは、全てのシステムユニット１１５に関連付けられてもよく、又はシステムユニット１１５のサブセットに関連付けられてもよい。システムユニット１１５は、合意ベースの分散されたデータセットへの変更を提案し得る。分散されたデータセットに関連付けられる定足数のシステムユニット１１５により変更が受け入れられる場合、合意は達せられ、関連付けられる各システムユニット１１５内の分散されたデータセットへ変更が伝播され得る。よって、定足数の関連付けられるシステムユニット１１５が変更について賛成票を投じる場合に、分散されたデータセットにおける変更に関する合意が達せられ得る。定足数とは、関連付けられるシステムユニット群１１５を支配する最小限の数（例えば、過半数）に相当してよい。よって、過半数の例では、分散されたデータセットがＮ個のシステムユニット１１５に関連付けられる場合、Ｎが偶数ならばＮ／２＋１個の関連付けられるシステムユニット１１５が変更に賛成票を投じれば定足数に達し、Ｎが奇数ならば（Ｎ−１）／２＋１個の関連付けられるシステムユニット１１５が変更に賛成票を投じれば定足数に達する。定足数に達するために例えば過半数を要求することで、２つの競合する提案が検討される場合に、少なくとも１つのシステムユニット１１５が双方の提案を受信し、合意のためにそれら提案のうちの１つを選択することが保証され得る。いくつかの実装において、システムユニット１１５は、最初に受信された提案を選択する。他の実装において、他の基準を用いて提案が選択されてもよい。
【００３３】
いくつかの実装において、分散されたデータセットに関連付けられる全てのシステムユニット１１５が、分散されたデータセットを記憶してもよい。例えば、分散されたデータセットはアクセスルールを含んでもよく、アクセスルールは、当該分散されたデータセットに関連付けられる任意のシステムユニット１１５にとって利用可能であってよい。このように、１つ以上の分散されたデータセットの結果として、１つの実施形態において、ＤＣＳ１１０は、サーバデバイスといった中央制御デバイスを伴わない非集中化型のシステムに相当し得る。他の実施形態において、ＤＣＳ１１０は、非集中化型のシステム及び（サーバデバイスといった）中央制御デバイスの双方を含んでもよい。１つの実施形態において、分散されたデータセットへの変更は、任意のシステムユニット１１５において構成され、当該分散されたデータセットに関連付けられる他のシステムユニット１１５へ伝播され得る。さらに、ＤＣＳ１１０は、デバイス障害に関して、シングルポイントの障害が回避され得るようなロバスト性を呈し得る。例えば、特定のシステムユニット１１５が障害を起こした場合に、他のシステムユニット１１５は、データのロスなく（又はデータの最小限のロスのみで）動作を継続し得る。さらに、ＤＣＳ１１０は、動的に変化してもよい。例えば、任意の時点でアプリケーションは追加されてよく、必要に応じて新たなデータセットがシステムユニット１１５内に記憶されてよい。他の実装において、分散されたデータセットに関連付けられる全てのシステムユニット１１５が必ずしも当該分散されたデータセットを記憶するわけではない。
【００３４】
ＤＣＳ１１０は、分散されないデータセットをも含んでよい。一例として、第１のシステムユニット１１５は、他のいかなるシステムユニット１１５にも含まれないローカルデータセットを含み得る。他の例として、第１のシステムユニット１１５は、ミラーリングといった非分散的な手法で第２のシステムユニット１１５へと複製されるローカルデータセットを含んでもよい。また別の例として、第１のシステムユニット１１５がローカルデータセットの第１のバージョンを含み、第２のシステムユニット１１５が当該ローカルデータセットの第２のバージョンを含んでもよい。この場合、第１のシステムユニット１１５はローカルデータセットの第１のバージョンを維持し、第２のシステムユニット１１５は当該ローカルデータセットの第２のバージョンを維持する。また別の例において、第１のシステムユニット１１５が分散されたデータセットから第１のローカルデータセットを導出し、第２のシステムユニット１１５が分散されたデータセットから第１のローカルデータセットとは異なる第２のローカルデータセットを導出してもよい。
【００３５】
ネットワーク１２０は、システムユニット１１５が互いに通信することを可能とし、及び／又は管理デバイス１３０が個々のシステムユニット１１５と通信することを可能とし得る。ネットワーク１２０は、１つ以上の回線交換ネットワーク及び／又はパケット交換ネットワークを含み得る。例えば、ネットワーク１２０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、公衆交換電話網（ＰＳＴＮ）、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワーク、無線ネットワーク、及び／又はこれらの若しくは他のタイプのネットワークの組合せ、を含み得る。
【００３６】
管理（administration）デバイス１３０は、ＤＣＳ１１０を構成／設定し、ＤＣＳ１１０の構成／設定を変更し、ＤＣＳ１１０から情報を受信し、及び／又はＤＣＳ１１０について他の管理を実行するために、管理者（administrator）が個別のシステムユニット１１５へ接続することを可能とし得る。管理デバイス１３０は、システムユニット１１５との通信のために構成される任意のデバイスを含み得る。例えば、管理デバイス１３０は、可搬性の通信デバイス（例えば、携帯電話、スマートフォン、ファブレットデバイス、ＧＰＳ（Global  Positioning  System）デバイス、及び／若しくは他のタイプの無線デバイス）、ＰＣ（Personal  Computer）若しくはワークステーション、サーバデバイス、ラップトップ、タブレット、若しくは他のタイプのポータブルコンピュータ、並びに／又は通信ケイパビリティを有する他のタイプのデバイスを含み得る。
【００３７】
図１は環境１００の例示的なコンポーネント群を示しているが、他の実装において、環境１００は、より少ない数のコンポーネント、異なるコンポーネント、異なる配置のコンポーネント、又は図１に描かれたもの以外の追加的なコンポーネントを含んでもよい。追加的に又は代替的に、環境１００内のいかなる１つのデバイスも（又はいかなるデバイスの集合も）、環境１００内の１つ以上の他のデバイスにより実行されるものとして説明された機能を実行してよい。例えば、いくつかの実装において、システムユニット１１５は、入出力デバイス（例えば、キーボード／キーパッド及びディスプレイ、タッチスクリーンなど）を含んでもよく、管理デバイス１３０は必要とされなくてもよい。
【００３８】
図２は、システムユニット１１５の例示的なコンポーネント群を示すブロック図である。図２に示したように、システムユニット１１５は、コントローラ２１０と、１つ以上の周辺デバイス２３０とを含み得る。コントローラ２１０は、システムユニット１１５の動作を制御し、他のシステムユニット１１５と通信し、管理デバイス１３０と通信し、及び／又は周辺デバイス２３０を制御し得る。コントローラ２１０は、バス２１２、プロセッサ２１４、メモリ２１６、ネットワークインタフェース２１８、周辺インタフェース２２０及び筐体２２２を含み得る。
【００３９】
バス２１２は、コントローラ２１０のコンポーネント間の通信を許容するパスを含み得る。プロセッサ２１４は、命令を解釈し及び実行する、任意のタイプのシングルコアプロセッサ、マルチコアプロセッサ、マイクロプロセッサ、ラッチベースのプロセッサ並びに／又は処理ロジック（若しくはプロセッサ、マイクロプロセッサ、及び／若しくは処理ロジックの集合）を含み得る。他の実施形態において、プロセッサ２１４は、ＡＳＩＣ（application-specific  integrated  circuit）、ＦＰＧＡ（field-programmable  gate  array）及び／又は他のタイプの集積回路若しくは処理ロジックを含み得る。
【００４０】
メモリ２１６は、プロセッサ２１４による実行のための情報及び／若しくは命令を記憶し得る任意のタイプの動的記憶デバイス、並びに／又は、プロセッサ２１４による使用のための情報を記憶し得る任意のタイプの不揮発性記憶デバイスを含み得る。例えば、メモリ２１６は、ＲＡＭ（random  access  memory）若しくは他のタイプの動的記憶デバイス、ＲＯＭ（read-only  memory）デバイス若しくは他のタイプの静的記憶デバイス、ＣＡＭ（content  addressable  memory）、磁気的及び／若しくは光学的記録メモリデバイス、及びその対応するドライブ（例えば、ハードディスクドライブ、光学的ドライブなど）、並びに／又は、フラッシュメモリといった着脱可能な形態のメモリ、を含み得る。
【００４１】
ネットワークインタフェース２１８は、有線通信リンク（例えば、導電性ワイヤ、ツイストペアケーブル、同軸ケーブル、伝送線、光ファイバケーブル、及び／若しくは導波管など）、無線通信リンク（例えば、無線周波数（ＲＦ）、赤外線、及び／若しくは可視光線など）、又は無線通信リンクと有線通信リンクとの組合せを介して、コントローラ２１０が他のデバイス及び／又はシステムと通信する（例えば、データを送受信する）ことを可能とする送受信器（例えば、送信器及び／又は受信器）、を含み得る。ネットワークインタフェース２１８は、ベースバンド信号をＲＦ信号へ変換する送信器、及び／又はＲＦ信号をベースバンド信号へ変換する受信器、を含み得る。ネットワークインタフェース２１８は、ＲＦ信号を送受信するためのアンテナと連結されてもよい。
【００４２】
ネットワークインタフェース２１８は、データの他のデバイスへの送信を遂行する入出力ポート、入出力システム及び／又は他の入出力コンポーネント、を含む論理的なコンポーネントを含み得る。例えば、ネットワークインタフェース２１８は、有線通信用のネットワークインタフェースカード（例えば、イーサネット（登録商標）カード）、及び／又は無線通信用の無線ネットワークインタフェース（例えば、Ｗｉ−Ｆｉ）カードを含み得る。ネットワークインタフェース２１８は、ケーブル上の通信用のＵＳＢ（universal  serial  bus）ポート、Bluetooth（登録商標）無線インタフェース、ＲＦＩＤ（radiofrequency  identification）インタフェース、ＮＦＣ（near-field  communications）無線インタフェース、及び／又はデータをある形態から他の形態へ変換する任意の他のタイプのインタフェースをも含み得る。
【００４３】
周辺インタフェース２２０は、１つ以上の周辺デバイス２３０と通信するように構成され得る。例えば、周辺インタフェース２２０は、周辺デバイス２３０へのデータの送信を遂行する入出力ポート、入出力システム及び／又は他の入出力コンポーネント、を含む１つ以上の論理的なコンポーネントを含み得る。一例として、周辺インタフェース２２０は、WiegandプロトコルなどのＳＰＩ（Serial  Peripheral  Interface）バスプロトコル、ＲＳ−４８５プロトコル、及び／又は他のタイプのプロトコルを用いて、周辺デバイスと通信し得る。他の例として、周辺インタフェース２２０は、異なるタイプのプロトコルを用いてもよい。１つの実施形態において、ネットワークインタフェース２１８もまた、周辺機器２３０をコントローラ２１０と連結するための周辺インタフェースとして作動してもよい。
【００４４】
筐体２２２は、コントローラ２１０のコンポーネント群を収容し、コントローラ２１０のコンポーネント群を環境から保護し得る。１つの実施形態において、筐体２２２は、１つ以上の周辺デバイス２３０を含み得る。他の実施形態において、筐体２２２は、管理デバイス１３０を含んでもよい。筐体２２２は、複数のシステムユニット１１５及び／又はコントローラ２１０を伴うシステムにおいて、１つのシステムユニット１１５及び／又はコントローラ２１０の他のシステムユニット１１５及び／又はコントローラ２１０からの境界を定義し得る。
【００４５】
以下に説明するように、コントローラ２１０は、分散システム内でアプリケーションデータセット及び／又はデータセットグループを管理することに関する何らかの動作を実行し得る。コントローラ２１０は、それら動作を、ＡＳＩＣのハードウェア回路の結果として実行してもよい。また（あるいは代替的に）、コントローラ２１０は、メモリ２１６といったコンピュータ読取可能な媒体に含まれるソフトウェア命令を実行するプロセッサ２１４に応じて、それら動作を実行してもよい。コンピュータ読取可能な媒体は、非一時的なメモリデバイスを含み得る。メモリデバイスは、単一の物理的なメモリデバイスの範囲内で実装されてもよく、又は複数の物理的なメモリデバイスをまたいで拡散されてもよい。ソフトウェア命令は、他のコンピュータ読取可能な媒体から又は他のデバイスからメモリ２１６へ読み込まれてもよい。メモリ２１６内に含まれるソフトウェア命令は、プロセッサ２１４に、ここで説明される処理を実行させる。よって、ここで説明される実装は、いかなる特定のハードウェア回路及びソフトウェアの組合せにも限定されない。
【００４６】
周辺デバイス２３０は、コントローラ２１０へ情報を提供し、コントローラ２１０により制御され、及び／又はさもなくばコントローラ２１０と通信する１つ以上のデバイスを含み得る。例えば、周辺デバイス２３０は、リーダ（reader）デバイス２４０、ロック（lock）デバイス２５０、センサ２６０、及び／又はアクチュエータ２７０を含み得る。図２には例示の目的で単一のリーダデバイス２４０、単一のロックデバイス２５０、単一のセンサ２６０、及び単一のアクチュエータ２７０が示されているが、実際には、一群の周辺デバイス２３０は、複数のリーダデバイス２４０、複数のロックデバイス２５０、複数のセンサ２６０、及び／又は複数のアクチュエータ２７０を含んでもよい。いくつかの実装において、周辺デバイス２３０は、図２に示したデバイスのうちの１つ以上を含まなくてもよい。追加的に又は代替的に、周辺デバイス２３０は、図２に示していない任意の他のタイプのセキュリティデバイスを含んでもよい。
【００４７】
リーダデバイス２４０は、ユーザから認証情報を読取り、認証情報をコントローラ２１０へ提供するデバイスを含み得る。例えば、リーダデバイス２４０は、アルファベット又は数字のＰＩＮ（personal  identification  number）をユーザから受け付けるように構成されるキーパッド、磁気ストリップ上にカードコードを格納するカード若しくはＲＦＩＤタグといった他のタイプの記憶デバイスを構成するカードリーダ、ユーザの指紋を読み取るように構成される指紋リーダ、ユーザの虹彩を読み取るように構成される虹彩リーダ、ユーザの声紋を記録するように構成されるマイクロフォン及び声紋識別器、ＮＦＣ（near  field  communication）リーダ、並びに／又は他のタイプのリーダデバイスを含み得る。リーダデバイス２４０は、認証情報を提供可能な任意のタイプのセキュリティデバイスを含んでもよく、センサ２６０を参照しながら以下に説明される任意のセンサデバイスといった１つ以上のセンサデバイスを含んでもよい。例えば、リーダデバイス２４０は、顔認識のために使用されるカメラ、及び／又は音声認識のために使用されるマイクロフォンを含んでもよい。
【００４８】
ロックデバイス２５０は、コントローラ２１０により制御されるロック（鍵）を含み得る。ロックデバイス２５０は、ドア（例えば、ドアの開閉が妨げられる）、窓、ＨＶＡＣベント（空調、通気、排気など）、及び／又はセキュアエリアの開放可能部への他のタイプのアクセス、をロック（施錠）し得る。例えば、ロックデバイス２５０は、電磁式ロック、コントローラ２１０により制御されるモータを伴う機械式ロック、電気機械式ロック、及び／又は他のタイプのロックを含み得る。さらに、ロックデバイス２５０は、機械、輸送車両、エレベータ、及び／又は電気デバイスの動作をロック（施錠）し／アンロック（開錠）してもよい。
【００４９】
センサ２６０は、センサデバイスを含み得る。例として、センサ２６０は、ドアが開いているか閉じているかを感知するドアセンサ、可視光モニタリングカメラ、赤外（ＩＲ）光モニタリングカメラ、熱シグニチャモニタリングカメラ及び／若しくは他のタイプのモニタリングデバイス、動きセンサ、熱センサ、圧力センサ及び／若しくは他のタイプの警報センサといった警報センサ、音声記録デバイス（例えば、マイクロフォン）、システムユニット１１５の内部に位置する位置センサ、及び／若しくはシステムユニット１１５に関連付けられる保護されるエリア内に位置する“退出要求（request  to  exit）”ボタンといったタンパ（tamper）センサ、並びに／又は、他のタイプのセンサデバイス、を含み得る。
【００５０】
アクチュエータ２７０は、アクチュエータデバイスを含み得る。一例として、アクチュエータ２７０は、照明／発光デバイスを制御し得る。他の例として、アクチュエータ２７０は、侵入警報起動器（burglar  alarm  activator）、メッセージを再生し若しくは警報信号を生成するスピーカ、ディスプレイデバイス、センサ２６０を動かす（例えば、カメラ若しくは他の監視デバイスの視界を制御する）モータ、ドア、窓、ＨＶＡＣベント及び／若しくはセキュアエリアに関連付けられる他の開放可能部を開閉するためのモータ、ロックデバイス２５０をロック位置若しくはアンロック位置に固定するモータ、消火デバイス、並びに／又は他のタイプのアクチュエータデバイスを含み得る。
【００５１】
図２はシステムユニット１１５の例示的なコンポーネント群を示しているが、他の実装において、システムユニット１１５は、より少ない数のコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は図２に描かれたものとは異なる配置のコンポーネントを含んでもよい。追加的に又は代替的に、システムユニット１１５のいかなるコンポーネントも（又はいかなるコンポーネントの集合も）、システムユニット１１５の１つ以上の他のコンポーネントにより実行されるものとして説明された１つ又は複数のタスクを実行してよい。例えば、いくつかの実装において、周辺インタフェース２２０は、ネットワークインタフェースに相当し得る。他の例として、いくつかの実装において、周辺デバイス２３０は、周辺インタフェース２２０を介するよりもむしろ、ネットワークインタフェース２１８を介してコントローラ２１０へ接続され得る。
【００５２】
さらに、ＤＣＳ１１０は物理アクセス分散制御システムを含み得るものの、他の実装では、物理アクセスシステムとは別のシステムが制御されてもよい。一方で、ＤＣＳ１１０は、ドアを開閉し又は建物若しくは施設への物理的なアクセスを制御するための制御システムといった、（例えば、運用環境における）任意のタイプの物理アクセス制御システムを含んでもよい。また、ＤＣＳ１１０は、ファン（fan）を制御（例えば、起動若しくは停止）し、ビル管理システム内の警報を開始させ（例えば、認証失敗、成功裏の認証など）、又は産業オートメーションシステム内のロボットアームを制御するシステムを含んでもよい。
【００５３】
図３Ａ及び図３Ｂは、システムユニット１１５の例示的な機能コンポーネントを示すブロック図である。システムユニット１１５の機能コンポーネントは、例えば、１つ以上のＡＳＩＣのハードワイヤ回路を介して実装されてもよい。追加的に又は代替的に、システムユニット１１５の機能コンポーネントは、メモリ２１６からの命令を実行するプロセッサ２１４により実装されてもよい。図３Ａは、システムユニット１１５の機能的なレイヤ群を示している。図３Ａに示したように、システムユニット１１５は、ＡＰＩ（application  programming  interface）レイヤ３１０、アプリケーションレイヤ３２０、分散制御レイヤ３４０及びストレージレイヤ３５０を含み得る。
【００５４】
ＡＰＩレイヤ３１０は、例えば、管理デバイス１３０と通信するように構成されるＡＰＩを含む。一例として、管理者が管理デバイス１３０を用いてシステムユニット１１５にログインする際、ＡＰＩレイヤ３１０は、管理者を認証するために管理デバイス１３０と通信し得る。他の例として、ＡＰＩレイヤ３１０は、システムユニット１１５の構成を変更するために管理デバイス１３０と通信し得る。ＡＰＩレイヤ３１０は、管理デバイス１３０からデータを受信し、当該データを分散制御レイヤ３４０及び／又はストレージレイヤ３５０へ提供し得る。また、ＡＰＩレイヤ３１０は、アプリケーションレイヤ３２０内にアプリケーションをインストールするために管理デバイス１３０と通信し得る。ＡＰＩレイヤ３１０は、様々な管理者タイプを扱うように構成されてもよい。例えば、ＡＰＩレイヤ３１０は、ウェブサービス管理者、リナックス管理者若しくはＯＮＶＩＦ（Open  Network  Video  Interface  Forum）管理者を扱うためのＡＰＩ、及び／又は他のタイプのＡＰＩを含んでもよい。
【００５５】
アプリケーションレイヤ３２０は、システムユニット１１５にインストールされる１つ以上のアプリケーションを含む。図３Ｂは、例示的なアプリケーション群を示す。図３Ｂに示したように、アプリケーションレイヤ３２０は、アクセス制御ロジックアプリケーション３２２、ドア制御アプリケーション３２４、リーダ制御アプリケーション３２６、イベントハンドリングアプリケーション３２８、スケジュールハンドリングアプリケーション３３０、及び／又はアプリケーション３３２を含み得る。
【００５６】
アクセス制御ロジックアプリケーション３２２は、受信される認証情報に基づいて、及び記憶されるアクセスルールに基づいて、アクセスを許可するべきかを判定し得る。ドア制御アプリケーション３２４は、１つ以上のドア及び／又は関連付けられるロックデバイス２５０を制御し得る。例えば、ドア制御アプリケーション３２４は、ドアが開いているか閉じているか及び／若しくは施錠されているか開錠されているかを判定し、並びに１つ以上のデバイスを操作してドアを開閉し及び／若しくはドアを施錠し若しくは開錠し得る。リーダ制御アプリケーション３２６は、１つ以上のリーダデバイス２４０を制御し、１つ以上のリーダデバイス２４０から受信される認証情報を取得し及び処理し得る。イベントハンドリングアプリケーション３２８は、システムユニット１１５により記録され若しくは生成され、及び／又は他のシステムユニット１１５により記録されるイベントのログを維持し得る。イベントハンドリングアプリケーション３２８は、全ての（又は少なくともいくつかの）システムユニット１１５において分散システムイベントログを維持する目的で、ローカルで記録され又は生成されたイベントがＤＣＳ１１０内の他のシステムユニット１１５へと配信されること、を保証してもよい。そのようにして、ログに記録されたイベントは、システムイベントログに関連付けられる任意のシステムユニット１１５から引き出され得る。スケジュールハンドリングアプリケーション３３０は、システムユニット１１５に関連付けられる１つ以上のスケジュールを管理し得る。例えば、特定のユーザのグループについてのアクセスルールが、特定の日時に基づいて変化し得る。
【００５７】
アプリケーション３３２は、システムユニット１１５のアプリケーションレイヤ３２０にインストールされる個別のアプリケーションに相当し、分散されるデータセットを使用する。例えば、アプリケーション３３２が相当し得るのは、カメラ制御アプリケーションといった個別のセンサ２６０に関連付けられるアプリケーション、ドアモータアプリケーションといった個別のアクチュエータ２７０に関連付けられるアプリケーション、人数カウントアプリケーションといった情報処理を実行するアプリケーション、サードパーティアプリケーションが周辺デバイス２３０を制御するためのプラットフォームを提供するアプリケーションといったＡＰＩアプリケーション、ネットワークをまたいで遠隔デバイスと通信するように構成されるアプリケーション、及び／又は他のタイプのアプリケーションである。
【００５８】
他のアプリケーション（図３Ｂには示していない）がアプリケーションレイヤ３２０に含まれてもよい。一例として、警報アプリケーションは、レポート及び／又は警報を生成し、当該レポート及び／又は警報を管理デバイス１３０へ（及び／若しくは他の指定されたデバイスへ）並びに／又は１つ以上の他のシステムユニット１１５へ送信し得る。他の例として、タスク固有の制御アプリケーションは、ドア開放イベント、センサイベント、アクチュエータイベント及び／又は他のタイプのイベントといったシステムユニット１１５に関連付けられるイベントを処理し得る。
【００５９】
分散制御レイヤ３４０は、システムユニット１１５に関連付けられる１つ以上の分散されるデータセットを管理し得る。例えば、分散制御レイヤ３４０は、ネットワーク１２０上の他のシステムユニット１１５とのセキュア接続（例えば、ＴＬＳ（Transport  Layer  Security）接続）を維持し得る。さらに、分散制御レイヤ３４０は、個別の合意ベースの分散データセットにおける変更に関する合意を確立するために、プロトコル（例えば、ＰＡＸＯＳプロトコル）を使用し得る。一例として、分散制御レイヤ３４０は、分散されたデータセットに関連付けられる他のシステムユニット１１５へ変更についての提案を送信し、他のシステムユニット１１５から当該変更のための定足数を受信し得る。他の例として、分散制御レイヤ３４０は、他のシステムユニット１１５から受信される提案について（例えば応答メッセージを送信することにより）賛成票を投じてもよい。また別の例として、分散制御レイヤ３４０は、変更について投票しなかったとしても、当該変更について合意が達せられたという標識を受信してもよい。変更についての合意の標識が受信された場合、分散制御レイヤ３４０は、ストレージレイヤ３５０内の分散されたデータセットへ当該変更を適用し得る。分散制御レイヤ３４０は、アプリケーション３３２からアプリケーションデータセットへのアクセスを求めるリクエストを受信し、システムデータセットをチェックして当該アプリケーションデータセットが存在するかを判定し得る。アプリケーションデータセットが存在する場合、分散制御レイヤ３４０は、ＤＣＳ１１０内の他のシステムユニット１１５へリクエストを送信することにより、アプリケーションデータセットに関連付けられるデバイス群のデータセットグループへの参加をリクエストし得る。アプリケーションデータセットが存在しない場合、分散制御レイヤ３４０は、アプリケーション３３２のために、アプリケーションデータセットを生成し得る。
【００６０】
ストレージレイヤ３５０は、システムユニット１１５に関連付けられる１つ以上のデータセットを記憶し得る。ストレージレイヤ３５０に記憶されるデータセットは、ローカルデータセットに相当してもよく、又は分散されたデータセットに相当してもよい。ローカルデータセットには、当該ローカルデータセットを記憶する個別のシステムユニット１１５に関連付けられる（及び／又は、個別のシステムユニット１１５にのみ関連付けられる）情報が格納され得る。分散されたデータセットには、当該分散されたデータセットに関連付けられる他のシステムユニット１１５にも関連付けられる情報が格納され得る。
【００６１】
ストレージレイヤ３５０に含まれ得る例示的な情報が図３Ｂに示されている。図３Ｂに示したように、ストレージレイヤ３５０は、構成データ３５２、認証情報データ３５４、アクセスルールデータ３５６、システムデータセット３５８及びアプリケーションデータセット３６０を含み得る。構成データ３５２には、コントローラ２１０若しくはコントローラ２１０に接続される周辺デバイス２３０のハードウェア構成及び設定、若しくはアプリケーションレイヤ３２０にインストールされるアプリケーションのソフトウェア構成及び設定といった、個別のシステムユニット１１５に関連付けられる構成データ、並びに／又は他のタイプの構成情報が格納され得る。認証情報データ３５４には、システムユニット１１５に関連付けられる認証情報が格納され得る。アクセスルール３５６には、システムユニット１１５に関連付けられるアクセスルールが格納され得る。
【００６２】
システムデータセット３５８は、ＤＣＳ１１０内のシステムユニット群１１５（例えば、全てのシステムユニット１１５）に関連付けられている分散されたデータセットに相当し得る。よって、システムデータセット３５８は、ＤＣＳ１１０内の各システムユニット１１５内に記憶され得る。システムデータセット３５８に格納され得る例示的な情報について、後に図４Ａを参照しながら説明する。
【００６３】
アプリケーションデータセット３６０は、アプリケーション３３２といった個別のアプリケーションに関連付けられる分散されたデータセットに相当し得る。アプリケーションデータセット３６０に格納され得る例示的な情報について、後に図４Ｂを参照しながら説明する。
【００６４】
図３Ａ及び図３Ｂはシステムユニット１１５の例示的な機能コンポーネント群を示しているが、他の実装において、システムユニット１１５は、より少ない数の機能コンポーネント、異なる機能コンポーネント、異なる配置の機能コンポーネント、又は図３Ａ及び図３Ｂに描かれたものとは別の追加的な機能コンポーネントを含んでもよい。例えば、図３Ｂには例示の目的で単一のアプリケーション３３２及び単一のアプリケーションデータセット３６０が示されているが、実際には、アプリケーションレイヤ３２０は複数のアプリケーション３３２を含んでもよく、ストレージレイヤ３５０は複数のアプリケーションデータセット３６０を含んでもよい。追加的に、システムユニット１１５のコンポーネント群のうちのいかなる１つも（又はいかなるコンポーネントの集合も）、システムユニット１１５の１つ以上の他の機能コンポーネントにより実行されるものとして説明された機能を実行してよい。
【００６５】
図４Ａは、システムデータセット３５８に格納され得る例示的な情報の図である。図４Ａに示したように、システムデータセット３５８は、システムユニットリスト４１０及び１つ以上の分散データセット識別子（ＩＤ）フィールド４２０を含み得る。システムユニットリスト４１０には、ＤＣＳ１１０に含まれるシステムユニット１１５のリストが格納され得る。
【００６６】
分散データセットＩＤフィールド４２０には、ＤＣＳ１１０内に存在する分散されたデータセットを識別する情報が格納され得る。分散データセットＩＤフィールド４２０は、１つ以上の分散データセットエントリを含み得る。各分散データセットＩＤフィールド４２０は、ＤＣＳ１１０内の個別の分散されたデータセットに関連付けられる１つ以上の識別情報を含み得る。当該識別情報は、データセットグループの名称、ＩＤ、その他の名称、及び／若しくは当該分散されたデータセットに関連付けられるアプリケーションの情報（例えば、識別子、名称、バージョン及び説明など）、データセットの内容を記述するメタデータ、並びに／又は、個別の分散されたデータセットを識別するために使用され得る任意の他の情報、を含み得る。分散データセットＩＤは、アプリケーション３３２がアプリケーションデータセットへのアクセスをリクエストする場合に、個別のアプリケーションデータセットを識別するために分散制御レイヤ３４０により使用され得る。
【００６７】
図４Ａはシステムデータセット３５８に格納され得る例示的なコンポーネントを示しているが、他の実装において、システムデータセット３５８は、より少ない数のコンポーネント、異なるコンポーネント、異なる配置のコンポーネント、又は図４Ａに描かれたものとは別の追加的なコンポーネントを含んでもよい。
【００６８】
図４Ｂは、アプリケーションデータセット３６０に格納され得る例示的な情報の図である。図４Ｂに示したように、アプリケーションデータセット３６０は、分散データセットＩＤフィールド４３０、１つ以上のシステムユニットフィールド４４０−Ａ〜４４０−Ｎ、定足数フィールド４５０、及びアプリケーションデータフィールド４６０を含み得る。分散データセットＩＤフィールド４３０は、個別のアプリケーションデータセット３６０を識別し、システムデータセット３５８の分散データセットＩＤフィールド４２０に格納される分散データセットＩＤに対応し得る。
【００６９】
システムユニットフィールド４４０には、アプリケーションデータセット３６０に関連付けられるデータセットグループ内の１つ以上のシステムユニット１１５を識別する情報が格納され得る。定足数フィールド４５０には、アプリケーションデータセット３６０への提案された変更について投票を行う際に合意に達するために要求される、データセットグループ内のシステムユニット１１５からの賛成票の数を識別する情報、が格納され得る。アプリケーションデータフィールド４６０には、アプリケーションデータセット３６０に関連付けられるアプリケーションデータが格納され得る。
【００７０】
図４Ｂはアプリケーションデータセット３６０に格納され得る例示的なコンポーネントを示しているが、他の実装において、アプリケーションデータセット３６０は、より少ない数のコンポーネント、異なるコンポーネント、異なる配置のコンポーネント、又は図４Ｂに描かれたものとは別の追加的なコンポーネントを含んでもよい。
【００７１】
図５は、ここで説明される１つ以上の実装に従って分散制御システムにおいてデータセットグループへ参加し又はアプリケーションデータセットへアクセスするためのフローチャートである。いくつかの実装において、図５の処理は、コントローラ２１０により実行され得る。他の実装において、図５の処理のいくつか又は全てが、コントローラ２１０とは別個の及び／又はコントローラ２１０を含む、他のデバイス又はデバイスの集合により実行されてもよい。
【００７２】
図５の処理は、データセットグループへ参加（join）し又はアプリケーションデータセットへアクセスすること、を含み得る（ブロック５１０）。例えば、管理者は、管理デバイス１３０を用いて特定のシステムユニット１１５へログインし、当該特定のシステムユニット１１５にアプリケーション３３２をインストールし得る。アプリケーション３３２は、分散されたデータセットへデータを格納し、及び／又は分散されたデータセットからデータを取得するように構成され得る。よって、アプリケーション３３２がインストールされた後、アプリケーション３３２は、分散制御レイヤ３４０へ、アプリケーション３３２に関連付けられる分散されたデータセットへのアクセスを求めるリクエストを送信し得る。次に、システムデータセット内に当該アプリケーションのためのアプリケーションデータセットのデータセットＩＤが存在するかの判定が行われ得る（ブロック５１５）。前に説明したように、システムデータセット３５８は、ＤＣＳ１１０に含まれる分散されたデータセットのＩＤを格納する分散データセットＩＤフィールド４２０を含む。分散制御レイヤ３４０は、分散データセットＩＤフィールド４２０にアクセスして、アプリケーション３３２のためのＩＤが分散データセットＩＤフィールド４２０のリストに含まれているかを判定し得る。
【００７３】
システムデータセット内にアプリケーションデータセットＩＤが存在しないと判定された場合（ブロック５１５−ＮＯ）、アプリケーションデータセットエントリが生成され、システムデータセット内に配信／登録され得る（ブロック５２０）。システムデータセット３５８はＤＣＳ１１０内の分散されたデータセットであることから、システムデータセット３５８の変更を行うために、システムユニット１１５は、システムデータセット３５８の分散データセットＩＤフィールド４２０内の変更を行うことについて合意を取得する。システムユニット１１５のコントローラ２１０は、ＤＣＳ１１０内の他のシステムユニット１１５へ変更についての提案を送信し、システムデータセット３５８に関する定足数の賛成票が他のシステムユニット１１５から受信されると、アプリケーションデータセットエントリがシステムデータセット３５８の分散データセットＩＤフィールド４２０に追加され得る。
【００７４】
次に、アプリケーションデータセットが生成され（ブロック５３０）、当該アプリケーションデータセットにアプリケーションデータが追加され得る（ブロック５４０）。例えば、分散制御レイヤ３４０は、アプリケーションデータセット３６０をストレージレイヤ３５０内に生成し、アプリケーション３３２からアプリケーションデータを受け取り、受け取ったアプリケーションデータをアプリケーションデータセット３６０に追加し得る。さらに、分散制御レイヤ３４０は、システムデータセット３５８の分散データセットＩＤフィールド４２０内のアプリケーションデータセットエントリを生成した個別のシステムユニット１１５が当該アプリケーションデータセットに関連付けられる最初のシステムユニット１１５であって、他のシステムユニット１１５は当該アプリケーションデータセットに関連付けられるデータセットグループに属していないことから、当該アプリケーションデータセット３６０に関連付けられるデータセットグループについての定足数要件を、１に設定し得る。よって、アプリケーションデータセット３６０にアプリケーションデータを追加するために、他のシステムユニット１１５からの投票は取得されなくてもよい。
【００７５】
ブロック５１５に戻り、アプリケーションデータセットＩＤがシステムデータセット内に存在すると判定された場合（ブロック５１５−ＹＥＳ）、当該アプリケーションデータセットに関連付けられるデータセットグループへ追加されることを求めるリクエストが、ＤＣＳ１１０内の他のシステムユニット１１５へ送信され得る（ブロック５５０）。分散データセットＩＤフィールド４２０が個別の分散されたデータセットにどのシステムユニット１１５が関連付けられているかをリスト化する情報を含まない場合には、コントローラ２１０は、ＤＣＳ１１０内の他のシステムユニット群１１５（例えば、他の全てのシステムユニット１１５）へ、データセットグループへの追加を求めるリクエストを送信してもよい。
【００７６】
他のシステムユニットから、分散されたデータセットへリクエスト元のシステムユニットが追加されたという標識が受信され得る（ブロック５６０）。例えば、ＤＣＳ１１０内の、アプリケーションデータセットに関連付けられるデータセットグループ内の他のシステムユニット１１５のうちの１つ以上が、リクエストを処理し、リクエスト元のシステムユニット１１５をデータセットグループへ追加してもよい。既存のデータセットグループへのシステムユニット１１５の追加の処理は、図７を参照しながら後に説明される。一度リクエスト元のシステムユニット１１５がデータセットグループへ追加されると、リクエスト元のシステムユニット１１５を追加した当該特定のシステムユニット１１５は、リクエスト元のシステムユニット１１５へ標識を送信し得る。
【００７７】
データセットグループへ追加されたという標識の受信に応じて、他のシステムユニットからアプリケーションデータセットが受信され得る（ブロック５７０）。そして、受信されたアプリケーションデータセットがストレージレイヤ３５０に追加され得る（ブロック５８０）。例えば、分散制御レイヤ３４０は、他のシステムユニット１１５からアプリケーションデータセットを受信し、受信したアプリケーションデータセットをストレージレイヤ３５０に記憶させ得る。アプリケーションデータセットは、データセットグループに関連付けられるシステムユニット１１５（即ち、データセットグループのメンバーであるデバイス群）のリストと、当該アプリケーションデータセットの操作を行うための定足数要件とを含み得る。
【００７８】
図６は、ここで説明される１つ以上の実装に従って分散制御システムにおいて既存のアプリケーションデータセット内のアプリケーションデータを変更するためのフローチャートである。いくつかの実施形態において、図６の処理は、コントローラ２１０により実行され得る。他の実装において、図６の処理のいくつか又は全てが、コントローラ２１０とは別個の及び／又はコントローラ２１０を含む、他のデバイス又はデバイスの集合により実行されてもよい。
【００７９】
図６の処理は、アプリケーションデータセット内のアプリケーションデータを変更するためのリクエストを検出すること、を含み得る（ブロック６１０）。一例として、アプリケーション３３２は、特定の周辺デバイス２３０からデータを受信し、特定の周辺デバイス２３０へ送信された命令を記録し、計算の結果を記録し、及び／又はアプリケーション３３２により生成された他のタイプのアプリケーションデータを記録するなどして、アプリケーションデータを生成し得る。他の例として、アプリケーション３３２は、アプリケーションデータセット３６０内の既存のアプリケーションデータを編集し、更新し、削除し及び／又はさもなくば変更し得る。アプリケーション３３２は、分散制御レイヤ３４０へアプリケーションデータの変更を提供し得る。
【００８０】
次に、アプリケーションデータセットに関連付けられるデータセットグループ内の１つ以上の他のシステムユニットが識別され得る（ブロック６２０）。次に、アプリケーションデータセット内のアプリケーションデータを変更するという提案が、識別された当該１つ以上のシステムユニットへ送信され得る（ブロック６３０）。例えば、分散制御レイヤ３４０は、アプリケーションデータセット３６０にアクセスし、システムユニットフィールド４４０において識別されるシステムユニット１１５を判定し、システムユニットフィールド４４０において識別される当該システムユニット１１５へ、アプリケーションデータの変更のための提案を送信し得る。
【００８１】
次に、アプリケーションデータセット内のアプリケーションデータを変更することについて合意が取得され得る（ブロック６４０）。そして、合意の取得に応じて、提案された変更がアプリケーションデータセットに適用され得る（ブロック６５０）。システムユニット１１５は、提案された変更を受け入れるために、定足数の賛成票を受信し得る。例えば、１０個のシステムユニット１１５がデータセットグループに関連付けられている場合、リクエスト元のシステムユニット１１５は、アプリケーションデータセット３６０内のアプリケーションデータを変更するために、６個の関連付けられるシステムユニット１１５から賛成票を受信する必要があり得る。６個の賛成票が一度受信されると、提案された変更について合意に達したことになり、提案された変更が行われ得る。分散制御レイヤ３４０は、提案された変更についての合意の取得に応じて、ストレージレイヤ３５０におけるアプリケーションデータセット３６０内のアプリケーションデータの追加、変更、更新、削除及び／又はそれ以外の変更を実行し得る。
【００８２】
図７は、ここで説明される１つ以上の実装に従って分散制御システムにおいてアプリケーションデータセットに関連付けられるデータセットグループへのシステムユニットの追加を求めるリクエストを処理するためのフローチャートである。いくつかの実施形態において、図７の処理は、コントローラ２１０により実行され得る。他の実装において、図７の処理のいくつか又は全てが、コントローラ２１０とは別個の及び／又はコントローラ２１０を含む、他のデバイス又はデバイスの集合により実行されてもよい。
【００８３】
図７の処理は、他のシステムユニットから、アプリケーションデータセットに関連付けられるデータセットグループへ当該他のシステムユニットを追加することを求めるリクエストを受信すること、を含み得る（ブロック７１０）。例えば、システムユニット１１５のコントローラ２１０は、特定のアプリケーションデータセットに関連付けられるデータセットグループへ追加されるべきリクエスト元のシステムユニットから、リクエストを受信し得る。システムユニット１１５は、リクエストを受信し、自身がそのリクエスト対象のデータセットグループに関連付けられている場合には、当該リクエストに関係性がある（例えば、ユニット追加の提案をすべきである）と判定し得る。例えば、システムユニット１１５は、リクエスト内で識別されたアプリケーション３３２に関連付けられているアプリケーションデータセット３６０がストレージレイヤ３５０内に存在するか、を判定してもよい。
【００８４】
次に、データセットグループ内の１つ以上の他のシステムユニットが識別される（ブロック７２０）。そして、リクエスト元のシステムユニットをデータセットグループへ追加するという提案が、識別された当該１つ以上の他のシステムユニットへ送信され得る（ブロック７３０）。例えば、分散制御レイヤ３４０は、アプリケーションデータセット３６０にアクセスし、システムユニットフィールド４４０において識別されるシステムユニット１１５を判定し、アプリケーションデータセット３６０のシステムユニットフィールド４４０において識別される当該システムユニット１１５へ、リクエスト元のシステムユニット１１５を追加する提案を送信し得る。
【００８５】
次に、データセットグループへリクエスト元のシステムユニットを追加することについて合意が取得され得る（ブロック７４０）。そして、合意の取得に応じて、リクエスト元のシステムユニットがデータセットグループへ追加され得る（ブロック７５０）。また、当該データセットグループのための定足数要件が調整され得る（ブロック７６０）。システムユニット１１５は、リクエスト元のシステムユニット１１５を追加するという提案された変更を受け入れるために、定足数の賛成票を受信し得る。例えば、データセット内に１０個のシステムユニット１１５がある場合、提案を行ったシステムユニット１１５は、データセットグループへリクエスト元のシステムユニット１１５を追加するために、６個の関連付けられるシステムユニット１１５から賛成票を受信する必要があり得る。６個の賛成票が一度受信されると、提案された追加について合意に達したことになり、リクエスト元のシステムユニット１１５がアプリケーションデータセット３６０に関連付けられるデータセットグループへ追加され得る。例えば、分散制御レイヤ３４０は、アプリケーションデータセット３６０内にリクエスト元のシステムユニット１１５のためのシステムユニットフィールド４４０を生成し得る。さらに、分散制御レイヤ３４０は、アプリケーションデータセット３６０の定足数フィールド４５０内の定足数要件を調整し得る。例えば、データセットグループに１０個のシステムユニット１１５が関連付けられていたが、今や当該データセットグループに１１個のシステムユニット１１５が関連付けられる場合、６個という定足数要件は変更されなくてよい。一方で、また別のシステムユニット１１５が当該データセットグループに追加されると、システムユニットの合計数は１２個になり、定足数要件は６個から７個へと変更され得る。
【００８６】
いくつかの実装において、特定のシステムユニット１１５がアプリケーションデータセットに関連付けられるデータセットグループから当該システムユニット１１５を削除することをリクエストした場合、削除処理が実行され得る。例えば、特定のシステムユニット１１５からアプリケーション３３２がアンインストールされ得る。アンインストール処理の一部として、アプリケーション３３２は、アプリケーションデータセット３６０から当該特定のシステムユニット１１５を削除することをリクエストし得る。そこで、特定のシステムユニット１１５は、アプリケーションデータセット３６０に関連付けられるデータセットグループ内の１つ以上の他のシステムユニット１１５へ、削除についての提案を送信し得る。その提案について合意が取得されると、当該特定のシステムユニット１１５はデータセットグループから削除され、ストレージレイヤ３５０からアプリケーションデータセット３６０が消し去られ得る。
【００８７】
いくつかの実装において、アプリケーション３３２のインストールは、自動化され得る。よって、管理者が管理デバイス１３０を用いて各システムユニット１１５上に１つずつアプリケーション３３２をインストールするよりもむしろ、アプリケーション３３２は１つのシステムユニット１１５上にインストールされ、及びそのシステムユニット１１５上にインストール命令のセットがインストールされ得る。インストール命令は、アプリケーション３３２の一部として含まれてもよく、又は別個のプログラム、アプリケーション及び／又はスクリプトファイルとして含まれてもよい。インストール命令は、アプリケーション３３２をインストールするための１つ以上の基準を含み、アプリケーション３３２をインストールせよという命令がＤＣＳ１１０内の他のシステムユニット１１５へと送信され得る。それら命令は、個別のシステムユニット１１５が１つ以上の基準を満たす場合に、当該システムユニットへ送信されてもよい。そのようにして、１つ以上の基準を個別のシステムユニット１１５が満たす場合に、当該個別のシステムユニット１１５はアプリケーション３３２をインストールし得る。個別のシステムユニット１１５によりアプリケーション３３２がインストールされた後、当該個別のシステムユニット１１５は、アプリケーション３３２に関連付けられるアプリケーションデータセット３６０に関連付けられるデータセットグループへ自装置を追加するために、図５の処理を実行し得る。特定のシステムユニット１１５上にアプリケーション３３２をインストールするための１つ以上の基準は、個別のシステムユニット１１５に関連付けられるハードウェア構成、個別のシステムユニット１１５に接続されている周辺デバイスの特定のタイプ、個別のシステムユニット１１５に関連付けられるロケーションタイプ、個別のシステムユニット１１５によりログに記録されたイベントタイプ、個別のシステムユニット１１５上にインストール済みの特定のアプリケーション、及び／又は他のタイプの基準を含み得る。
【００８８】
図８は、システムユニット１１５の例示的な物理レイアウト８００を示す平面図である。図８に示したように、物理レイアウト８００は、壁８１０、ドア８２０、コントローラ２１０、リーダデバイス２４０、ロックデバイス２５０、センサ２６０及びアクチュエータ２７０を含み得る。
【００８９】
壁８１０は、建物内の部屋といったセキュアエリア８３０を囲む。ドア８２０は、セキュアエリア８３０へのユーザのためのアクセスを提供する。本実施形態において、コントローラ２１０は、セキュアエリア８３０の内部に取り付けられる。他の実施形態において、コントローラ２１０は、セキュアエリア８３０の外部に取り付けられてもよい。リーダデバイス２４０は、セキュアエリア８３０の外部に取り付けられ、ロックデバイス２５０はセキュアエリア８３０の内部において壁８１０及びドア８２０に取り付けられる。センサ２６０は、この例では、セキュアエリア８３０の外部に向けて搭載される監視デバイスである。アクチュエータ２７０は、この例では、監視デバイスの視界を制御するために使用されるモータを含む。
【００９０】
ユーザがリーダデバイス２４０へ（例えば、ＰＩＮを入力し、アクセスカードをスキャンし、虹彩をスキャンする等により）認証情報を入力すると、コントローラ２１０は、その認証情報を用いてユーザのアイデンティティを認証し、アクセスルールテーブルをルックアップして、ユーザのアイデンティティとアクセスルールとに基づいて、ユーザにアクセスを許可すべきかを判定する。コントローラ２１０は、アクセスが許可されるべきであると判定すると、ロックデバイス２５０を起動してドア８２０をアンロック（開錠）し、そのようにしてユーザのセキュアエリア８３０へのアクセスを許可する。
【００９１】
図８は物理レイアウト８００の例示的なコンポーネント群を示しているが、他の実装において、物理レイアウト８００は、より少ない数のコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は図８に描かれたものとは異なる配置のコンポーネントを含んでもよい。追加的に又は代替的に、物理レイアウト８００内のいかなるコンポーネントも（又はいかなるコンポーネントの集合も）、物理レイアウト８００の１つ以上の他のコンポーネントにより実行されるものとして説明された１つ又は複数のタスクを実行してよい。
【００９２】
図９は、ＤＣＳ１１０の例示的な物理レイアウト９００を示す平面図である。図９に示したように、物理レイアウト９００は、部屋９２０−Ａ〜９２０−Ｆを有する建物９１０を含み得る。イーサネット（登録商標）ネットワークといったローカルネットワーク９３０は、システムユニット１１５Ａ〜１１５Ｆを相互接続し得る。この例において、システムユニット１１５−Ａは部屋９２０−Ａへの２つのドアを制御し、システムユニット１１５−Ｂは部屋９２０−Ｂへの外側のドアを制御し、システムユニット１１５−Ｃは部屋９２０−Ｂから部屋９２０−Ｃへの１つのドアを制御し、システムユニット１１５−Ｄは部屋９２０−Ｃから部屋９２０−Ｄへの１つのドアを制御し、システムユニット１１５−Ｅは部屋９２０−Ｄから部屋９２０−Ｅへの１つのドア及び部屋９２０−Ｅから部屋９２０−Ｆへの１つのドアを制御し、システムユニット１１５−Ｆは部屋９２０−Ｆへの外側のドアを制御する。
【００９３】
この例において、システムユニット１１５Ａ〜１１５Ｆは、中央制御デバイス（例えば、サーバ）を含まず、１つ以上の分散されたデータセットを含み得る。例えば、システムユニット１１５Ａ〜１１５Ｆは、分散される認証情報テーブル、分散されるアクセスルールテーブル、及び／又は分散されるイベントログを維持し得る。ここで、管理者が管理デバイス１３０を使用して、ユーザを追加するためにシステムユニット１１５−Ａへログインし、ユーザに関連付けられる認証情報を追加することを想定する。それら追加された認証情報は、ユーザがアクセス権を有する部屋へのドアを制御する他のシステムユニット１１５へ配信され得る。例えば、システムユニット１１５−Ｂに障害が起きると、システムユニット１１５−Ｂにより収集されたデータは、他のシステムユニットに含まれる分散されたイベントログの結果として、利用可能であり続け得る。
【００９４】
図９は物理レイアウト９００の例示的なコンポーネント群を示しているが、他の実装において、物理レイアウト９００は、より少ない数のコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は図９に描かれたものとは異なる配置のコンポーネントを含んでもよい。例えば、他の実施形態では、１つ以上の分散されるデータセットに関連して中央制御デバイス（例えば、サーバ）が使用されてもよい。追加的に又は代替的に、物理レイアウト９００内の１つ以上のコンポーネントが、物理レイアウト９００の１つ以上の他のコンポーネントにより実行されるものとして説明された１つ以上のタスクを実行してもよい。
【００９５】
図１０Ａ〜図１０Ｃは、１つ以上の実装に係る例示的なアプリケーションデータセットのシナリオの図である。例えば、人数カウントアプリケーションが図９の部屋９２０−Ｃについて設計されることを想定する。部屋９２０−Ｃ内の人々の数をカウントするために、部屋９２０−Ｃにいずれのドアを通じて出入りする人々もカウントされなければならない。よって、システムユニット１１５−Ａ、１１５−Ｃ及び１１５−Ｄのコントローラ２１０に、人数カウントアプリケーションがインストールされる必要がある。
【００９６】
図１０Ａは、システムユニット１１５−Ａにカウントアプリケーション１０１０−Ａがインストールされた後の信号フローシナリオ１０００を示している。システムユニット１１５−Ａにカウントアプリケーション１０１０−Ａがインストールされた後、カウントアプリケーション１０１０−Ａは、分散制御レイヤ３４０を介して、カウントアプリケーション１０１０−Ａに関連付けられる分散されたアプリケーションデータセットへのアクセスをリクエストし得る（信号１０１２）。分散制御レイヤ３４０−Ａは、システムデータセット３５８内にカウントアプリケーション１０１０のためのアプリケーションデータセットエントリが存在しないと判定し得る。そこで、分散制御レイヤ３４０−Ａは、システムデータセット３５８内にカウントアプリケーションのデータセットのためのエントリを追加するという提案を配信し得る（信号１０１４）。提案された変更について合意を取得した後、分散制御レイヤ３４０−Ａは、システムデータセット３５８内に新たなエントリを追加して、カウントアプリケーションデータセットＩＤエントリ１０１７を生成し得る（信号１０１６）。システムデータセット３５８の更新は、提案（信号１０１４）を介して他のシステムユニット１１５−Ｂ〜１１５−Ｆへ配信されたはずであり、合意に達した後に今や受け入れられている。分散制御レイヤ３４０−Ａは、処理を進めて、ストレージレイヤ３５０内にカウントアプリケーションデータセット１０２０−Ａを生成し得る（信号１０１８）。カウントアプリケーション１０１０−Ａは、このようにして、分散制御レイヤ３４０−Ａを介してカウントアプリケーションデータセット１０２０−Ａを使用できるようになる。
【００９７】
図１０Ｂは、システムユニット１１５−Ｃにカウントアプリケーション１０１０−Ｃがインストールされた後の信号フローシナリオ１０３０を示している。システムユニット１１５−Ｃにカウントアプリケーション１０１０−Ｃがインストールされた後、カウントアプリケーション１０１０−Ｃは、分散制御レイヤ３４０−Ｃを介して、カウントアプリケーション１０１０−Ｃに関連付けられる分散されたアプリケーションデータセットへのアクセスをリクエストし得る（信号１０３１）。分散制御レイヤ３４０−Ｃは、システムデータセット３５８内にアプリケーションデータセットエントリ１０１７が存在することを判定し得る。それに応じて、システムユニット１１５−Ｃは、カウントアプリケーションデータセット１０２０に関連付けられるデータセットグループへシステムユニット１１５−Ｃを追加することを求めるリクエストを、システムユニット１１５−Ａへ（信号１０３２−Ａ）、システムユニット１１５−Ｂへ（信号１０３２−Ｂ）、システムユニット１１５−Ｄへ（信号１０３２−Ｄ）、システムユニット１１５−Ｅへ（信号１０３２−Ｅ）及びシステムユニット１１５−Ｆへ（信号１０３２−Ｆ）送信し得る。カウントアプリケーションデータセット１０２０に関連付けられるデータセットグループ内にいるのはこの時点でシステムユニット１１５−Ａのみであることから、システムユニット１１５−Ａだけがそのリクエストに応答することになる。
【００９８】
システムユニット１１５−Ａは、カウントアプリケーションデータセット１０２０に関連付けられるデータセットグループ内の唯一のシステムユニットであるため、カウントアプリケーションデータセット１０２０へのいかなる提案された変更も、自動的に合意を受ける。よって、システムユニット１１５−Ａは、リクエストを受け入れてカウントアプリケーションデータセット１０２０に関連付けられるデータセットグループにシステムユニット１１５−Ｃを追加することについて合意を有する。システムユニット１１５−Ａは、カウントアプリケーションデータセット１０２０−Ａに関連付けられるデータセットグループにシステムユニット１１５−Ｃを追加し（信号１０３４）、システムユニット１１５−Ｃへ、システムユニット１１５−Ｃがカウントアプリケーション用のデータセットグループに追加されたという標識を送信し得る（信号１０３６）。それに応じて、システムユニット１１５−Ｃは、カウントアプリケーションデータセット１０２０を受信し（信号１０３８）、受信したカウントアプリケーションデータセット１０２０をストレージレイヤ３５０内に記憶し得る。
【００９９】
より遅い時点で、カウントアプリケーション１０１０−Ｃは、アプリケーションデータを生成し得る。例えば、ある人がシステムユニット１１５−Ｃに関連付けられるドアを通じて部屋９２０−Ｃから退出し、システムユニット１１５−Ｃに関連付けられるセンサデバイスが退出する人を検出し得る。カウントアプリケーション１０１０−Ｃは、分散制御レイヤ３４０−Ｃを介して、生成されたアプリケーションデータをアプリケーションデータセット１０２０−Ｃに追加することを提案し得る（信号１０４０）。カウントアプリケーションデータセット１０２０に関連付けられるデータセットグループ内の唯一のシステムユニットはシステムユニット１１５−Ａであるため、データを追加するための提案は、システムユニット１１５−Ａへ送信される（信号１０４２）。システムユニット１１５−Ａは変更について賛成票を投じ、よって、システムユニット１１５−Ｃは、必要とされる２個の定足数に達したことにより（自身で提案した変更については自動的に賛成票が投じられる）、合意を取得する。よって、結果として、提案された変更がシステムユニット１１５−Ａ及びシステムユニット１１５−Ｃの双方に適用され得る（信号１０４４）。
【０１００】
図１０Ｃは、システムユニット１１５−Ｄにカウントアプリケーション１０１０−Ｄがインストールされた後の信号フローシナリオ１０５０を示している。システムユニット１１５−Ｄにカウントアプリケーション１０１０−Ｄがインストールされた後、カウントアプリケーション１０１０−Ｄは、分散制御レイヤ３４０−Ｄを介して、カウントアプリケーション１０１０−Ｄに関連付けられる分散されたアプリケーションデータセットへのアクセスをリクエストし得る（信号１０５１）。分散制御レイヤ３４０−Ｄは、システムデータセット３５８内にカウントアプリケーションデータセットＩＤエントリ１０１７が存在することを判定し得る。それに応じて、システムユニット１１５−Ｄは、カウントアプリケーションデータセット１０２０に関連付けられるデータセットグループへシステムユニット１１５−Ｄを追加することを求めるリクエストを、システムユニット１１５−Ａへ（信号１０５２−Ａ）、システムユニット１１５−Ｂへ（信号１０５２−Ｂ）、システムユニット１１５−Ｃへ（信号１０５２−Ｃ）、システムユニット１１５−Ｅへ（信号１０５２−Ｅ）及びシステムユニット１１５−Ｆへ（信号１０５２−Ｆ）送信し得る。カウントアプリケーションデータセット１０２０に関連付けられているのはこの時点でシステムユニット１１５−Ａ及びシステムユニット１１５−Ｃのみであることから、システムユニット１１５−Ａ及びシステムユニット１１５−Ｃだけがそのリクエストに応答することになる。
【０１０１】
システムユニット１１５−Ａ及びシステムユニット１１５−Ｃの双方がリクエストを受信したことから、システムユニット１１５−Ａ及びシステムユニット１１５−Ｃの双方が、カウントアプリケーションデータセット１０２０に関連付けられるデータセットグループへシステムユニット１１５−Ｄを追加することを提案することになる。システムユニット１１５−Ａがシステムユニット１１５−Ｃよりも先にリクエストを受信し、受信したリクエストについての動作を行うことを想定する。システムユニット１１５−Ａは、システムユニット１１５−Ｄを追加するための提案を、システムユニット１１５−Ｃ（信号１０５４）及び自身へと送信するであろう。システムユニット１１５−Ｃは、システムユニット１１５−Ｄを追加するための提案を、システムユニット１１５−Ａ及び自身へと送信するであろう（図１０Ｃには示されていない）。システムユニット１１５−Ａにより送信された提案が先に受信されるため、後続するシステムユニット１１５−Ｃからの提案は拒絶される。よって、システムユニット１１５−Ｃは、システムユニット１１５−Ａからの提案に賛成票を投じて（信号１０５６）自身の提案を拒絶し、システムユニット１１５−Ａは、自身の提案に賛成票を投じてシステムユニット１１５−Ｃからの提案を拒絶するであろう（図１０Ｃには示されていない）。このようにして、システムユニット１１５−Ａが自身の提案について合意に達し、システムユニット１１５−Ｄがカウントアプリケーションデータセット１０２０に関連付けられるデータセットグループへ追加され（信号１０５８）、受け入れられた提案の結果として、変更が分散的に遂行されることになる。
【０１０２】
システムユニット１１５−Ａは、システムユニット１１５−Ｄへ、システムユニット１１５−Ｄがカウントアプリケーションデータセット１０２０に関連付けられるデータセットグループへ追加されたという標識を送信し（信号１０６０）、カウントアプリケーションデータセット１０２０をシステムユニット１１５−Ｄへ提供し得る（信号１０６２）。分散制御レイヤ３４０−Ｄは、受信されたカウントアプリケーションデータセット１０２０をストレージレイヤ３５０内に記憶させ得る（信号１０６４）。このケースでは、カウントアプリケーションデータセット１０２０に関連付けられるデータセットグループについての定足数要件は変更されなくてよい。
【０１０３】
ここまでの明細書において、好適な多様な実施形態を添付図面を参照しながら説明した。しかしながら、多様な修正及び変更をそこに加えることが可能であり、以下の特許請求の範囲に記載された発明の広範な範囲から逸脱することなく、追加的な実施形態が実装され得る。従って、明細書及び図面は、限定的というよりも例示的な意味で扱われるべきである。
【０１０４】
例えば、図５〜図７を基準として一連のブロックが説明されているが、ブロックの順序は、他の実装において修正されてもよい。さらに、依存関係の無いブロックは並列的に実行されてもよい。
【０１０５】
上述したシステム及び／又は方法は、図面に示した実装に限らず、ソフトウェア、ファームウェア及びハードウェアの多くの様々な形式で実装され得ることが理解されるであろう。それらシステム及び方法を実装するために使用される実際のソフトウェアコード又は専用の制御ハードウェアは、実施形態を限定するものではない。よって、システム及び方法の動作及び振る舞いは特定のソフトウェアコードを参照することなく説明されているが、ここでの説明に基づけば、それらシステム及び方法を実装するようにソフトウェア及び専用の制御ハードウェアを設計することができることが理解される。
【０１０６】
さらに、上述したある要素は、１つ以上の機能を実行するコンポーネントとして実装され得る。ここでのコンポーネントとは、プロセッサ、ＡＳＩＣ若しくはＦＰＧＡといったハードウェア、又はハードウェア及びソフトウェアの組合せ（例えば、ソフトウェアを実行するプロセッサ）を含み得る。
【０１０７】
“comprises”及び“comprising”（含む／備える）との用語は、記述された特徴、整数、ステップ又はコンポーネントの存在を特定するが、１つ以上の他の特徴、整数、ステップ、コンポーネント又はそれらの集合の存在又は追加を除外しない。
【０１０８】
本出願におけるいかなるエレメント、動作又は命令も、そのように明示的に説明されていない限り、実施形態にとって決定的又は必要不可欠であると解釈されるべきではない。また、ここでの冠詞“a”は１つ以上の項目を含むものと意図される。さらに、“based  on”（基づいて）とのフレーズは、他の明示的な説明が無い限り、「少なくとも部分的に基づく」ことを意味するものと意図される。
【図１】
2015057696.tif 000003
【図２】
2015057696.tif 000004
【図３Ａ】
2015057696.tif 000005
【図３Ｂ】
2015057696.tif 000006
【図４Ａ】
2015057696.tif 000007
【図４Ｂ】
2015057696.tif 000008
【図５】
2015057696.tif 000009
【図６】
2015057696.tif 000010
【図７】
2015057696.tif 000011
【図８】
2015057696.tif 000012
【図９】
2015057696.tif 000013
【図１０Ａ】
2015057696.tif 000014
【図１０Ｂ】
2015057696.tif 000015
【図１０Ｃ】
2015057696.tif 000016