1つの観点によれば、分散システム内のデバイスにより実行される方法は、上記デバイスにより、アプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出することと、上記アプリケーションデータセットは、分散されたデータセットに相当することと、上記デバイスにより、上記アプリケーションデータセットが上記分散システム内に存在するかを判定することと、上記アプリケーションデータセットが上記分散システム内に存在しないという判定に応じて、上記デバイスにより、上記分散システムデータセット内で上記アプリケーションデータセットを生成することと、上記アプリケーションデータセットが上記分散システム内に存在するという判定に応じて、上記デバイスにより、上記分散システム内の他のデバイスへ、上記アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストを送信することと、を含み得る。
かかる構成によれば、複数のデバイス上のアプリケーションによりアクセスされ得る特定のデータセットへのアクセスを集中的に管理するノード(例えば、データサーバなど)がシステム内に配備されていない場合であっても、デバイス間で協調的にそうしたデータセットへのアクセスを管理することができる。
追加的に、上記アプリケーションデータセットが上記分散システム内に存在するかを判定することは、上記分散システム内の分散されたデータセットの識別子のリストへアクセスすることと、分散されたデータセットの識別子の上記リストがリクエストされた上記アプリケーションデータセットについての識別子を含むかを判定することと、を含み得る。
それにより、いずれのデバイスでも未だ稼動していないアプリケーションがシステム内で初めて動作する場合には、分散されたデータセットにおける当該アプリケーションのためのデータセットの不在が確認された上で、新たなアプリケーションデータセットを生成することができる。
追加的に、本方法は、上記アプリケーションデータセットの生成に応じて、生成された上記アプリケーションデータセットに上記アプリケーションからの情報を追加すること、を含み得る。
追加的に、本方法は、上記分散システム内の他のデバイスから、上記データセットグループに上記デバイスが追加されたという標識を受信することと、上記分散システム内の上記他のデバイスから、上記アプリケーションデータセットを受信することと、受信される上記アプリケーションデータセットを上記デバイス上に記憶することと、を含み得る。
それにより、いずれかのデバイスで既に稼動しているアプリケーションがシステム内の他のデバイスで新たに利用される場合には、分散的に保持されている当該アプリケーションのためのデータセットを、新たに当該アプリケーションを利用しようとするデバイスが受け取ることができる。
追加的に、受信される上記アプリケーションデータセットは、上記データセットグループのメンバーであるデバイス群のリストを含んでもよく、上記方法は、上記アプリケーションデータセットにアプリケーションデータを追加するという提案を、上記データセットグループのメンバーである上記デバイス群へ送信することと、上記提案の送信に応じて、上記アプリケーションデータセットに上記アプリケーションデータを追加することの合意を取得することと、上記合意の取得に応じて、上記アプリケーションデータセットに上記アプリケーションデータを追加することと、をさらに含み得る。
それにより、複数のデバイス上で分散的に保持されているデータセットについてアプリケーションデータの追加の必要性が生じた場合には、それらデータセット間で整合性を維持しつつ、データセットにアプリケーションデータを追加することができる。
追加的に、本方法は、上記分散システム内の他のデバイスから、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループへの参加を求めるリクエストを受信することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての合意を取得することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての上記合意の取得に応じて、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへ上記他のデバイスを追加することと、をさらに含み得る。
追加的に、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての合意を取得することは、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加の提案を、生成された上記アプリケーションデータセットに関連付けられる上記デバイス群へ送信することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加について定足数の賛成票を取得することと、を含み得る。
このような定足数の要件を設けることで、データセットグループへのデバイスの追加(あるいはデータの変更など)といったイベントが異なるデバイス上で並行的に検出された場合に、イベントの競合に起因してデータの更新が失敗し又はデータの一貫性が失われるといった不具合を防止することができる。
追加的に、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへ上記他のデバイスを追加することは、上記他のデバイスへ上記アプリケーションデータセットを送信することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループに関連して合意を取得するために要する定足数の数値を調整することと、を含み得る。
追加的に、本方法は、上記分散システム内の上記他のデバイスから、生成された上記アプリケーションデータセット内のアプリケーションデータを変更することを求めるリクエストを受信することと、生成された上記アプリケーションデータセット内の上記アプリケーションデータの変更について合意を取得することと、生成された上記アプリケーションデータセット内の上記アプリケーションデータの変更についての上記合意の取得に応じて、生成された上記アプリケーションデータセット内の上記アプリケーションデータを変更することと、を含み得る。
追加的に、本方法は、上記分散システム内の上記他のデバイスから、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループから削除されることを求めるリクエストを受信することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループからの上記他のデバイスの削除について合意を取得することと、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループからの上記他のデバイスの削除についての上記合意の取得に応じて、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループから上記他のデバイスを削除することと、を含み得る。
追加的に、上記分散システムは、分散された物理アクセス制御システムを含んでよく、上記デバイス及び上記他のデバイスは、物理アクセス制御ユニットに相当する。
他の観点によれば、分散システム内のデバイスは、分散されたデータセットに相当するアプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出し、上記アプリケーションデータセットが上記分散システム内に存在するかを判定し、上記アプリケーションデータセットが上記分散システム内に存在しないという判定に応じて、上記分散システム内に上記アプリケーションデータセットを生成し、上記アプリケーションデータセットが上記分散システム内に存在するという判定に応じて、上記分散システム内の他のデバイスへ、上記アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストを送信する、ように構成されるロジック、を備え得る。
追加的に、上記ロジックは、上記アプリケーションデータセットが上記分散システム内に存在するかを判定する際に、上記分散システム内の分散されたデータセットの識別子のリストへアクセスし、分散データセットの上記リストがリクエストされた上記アプリケーションデータセットについての識別子を含むかを判定する、ようにさらに構成され得る。
追加的に、上記ロジックは、上記アプリケーションデータセットの生成に応じて、生成された上記アプリケーションデータセットへ、上記アプリケーションからの情報を追加する、ようにさらに構成され得る。
追加的に、上記ロジックは、上記分散システム内の他のデバイスから、上記データセットグループに上記デバイスが追加されたという標識を受信し、上記分散システム内の上記他のデバイスから、上記アプリケーションデータセットを受信し、受信される上記アプリケーションデータセットを上記デバイス上に記憶する、ようにさらに構成され得る。
追加的に、受信される上記アプリケーションデータセットは、上記データセットグループのメンバーであるデバイス群のリストを含んでもよく、上記ロジックは、上記アプリケーションデータセットにアプリケーションデータを追加するという提案を、上記データセットグループのメンバーである上記デバイス群へ送信し、上記提案の送信に応じて、上記アプリケーションデータセットに上記アプリケーションデータを追加することの合意を取得し、上記合意の取得に応じて、上記アプリケーションデータセットに上記アプリケーションデータを追加する、ようにさらに構成され得る。
追加的に、上記ロジックは、上記分散システム内の他のデバイスから、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループへの参加を求めるリクエストを受信し、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての合意を取得し、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへの上記他のデバイスの追加についての上記合意の取得に応じて、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループへ上記他のデバイスを追加する、ようにさらに構成され得る。
追加的に、上記ロジックは、上記分散システム内の上記他のデバイスから、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループから削除されることを求めるリクエストを受信し、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループからの上記他のデバイスの削除について合意を取得し、生成された上記アプリケーションデータセットに関連付けられるデバイス群のデータセットグループからの上記他のデバイスの削除についての上記合意の取得に応じて、生成された上記アプリケーションデータセットに関連付けられるデバイス群の上記データセットグループから上記他のデバイスを削除する、ようにさらに構成され得る。
追加的に、上記分散システムは、分散された物理アクセス制御システムを含んでよく、上記デバイス及び上記他のデバイスは、物理アクセス制御ユニットに相当してもよい。
また別の観点によれば、分散システムは、複数の物理アクセス制御デバイスを含んでよく、当該複数の物理アクセス制御デバイスのうちの特定の1つは、分散されたデータセットに相当するアプリケーションデータセットへのアクセスを求めるアプリケーションからのリクエストを検出し、上記アプリケーションデータセットが上記分散システム内に存在するかを判定し、上記アプリケーションデータセットが上記分散システム内に存在しないという判定に応じて、上記デバイスにより、上記分散システム内で上記アプリケーションデータセットを生成し、上記アプリケーションデータセットが上記分散システム内に存在するという判定に応じて、上記複数の物理アクセス制御デバイスのうちの他の1つへ、上記アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストを送信する、ように構成される。
以下の詳細な説明は、添付図面へ言及する。異なる図面における同一の参照番号は、同一の又は類似のエレメントを識別する。
分散制御システムは、分散型の(distributed)物理アクセス制御システムを含み得る。物理アクセス制御システムは、1つ以上のアクセス制御ユニットを含んでよく、各アクセス制御ユニットは、ある施設のエリアへの物理的なアクセスを制御する。例えば、あるアクセス制御ユニットは、ユーザから認証情報(credential)を取得し、ユーザの認証情報が検証され、真正なものとして証明され、又は特定の条件を充足する場合にドアのロックを解除し得る。他の実装において、分散制御システムは、分散型のビル管理システム、分散型の監視システム、分散型のセキュリティシステム及び/又は他のタイプの分散制御システムを含み得る。
分散制御システムは、分散アルゴリズムを用いて、分散型のコンピューティング動作を実行し得る。例えば、分散制御システムは、分散されたデータベースを管理(manage)し得る。分散アルゴリズムは、合意ベース(consensus based)であり得る。ある動作が実行される前に分散システム内のノードの間で合意を形成するために、合意アルゴリズムが使用される。例えば、1つの実施形態において、分散されたデータセットを更新するために、分散システム内のノード群は、更新の実行についての合意に到達する必要がある。合意は、提案された動作(例えば、分散されたデータベースの変更)について(例えば、全ての、定足数の、など)ノード群が同意していることに対応する。合意は、提案された動作について定足数が獲得された場合に達せられ得る。定足数(quorum)は、提案された動作についてノード群のうちの多数(majority)が賛意を示す場合に達せられ得る。賛意は、例えば、賛成票(あるいは同意、承認など)を意味するメッセージ又は信号の送信によって示され得る。変更について賛意を示すことをノード群のうちの多数に要求することで、例えば、2つの競合する提案された変更が検討されている場合に、少なくとも1つのノードが提案された変更の双方を受信し、最初に受信された方の提案された変更を選択して賛成票を投じるなどの動作を行うことが保証される。他の実装において、ノードは提案された変更のうちの1つの選択及び投票において異なる(最初に受信された提案された変更とは別の)基準を使用してもよい。
分散されたデータセットは、分散システム内のノードのサブセットにより使用され得る。例えば、アプリケーションは分散されるアプリケーションのデータセットを使用し、当該アプリケーションは分散システム内のノードのサブセット上にインストールされ得る。特定のアプリケーションデータセットを用いるノードのサブセットを、ここではデータセットグループという。ここで説明される実装は、特定のアプリケーションに関連付けられる分散されたデータセットを管理することに関連し得る。分散システム内のデバイスは、アプリケーションに関連付けられる分散されたデータセットに相当するアプリケーションデータセットへのアクセスを求める、アプリケーションからのリクエストを検出し、分散システム内に当該アプリケーションデータセットが存在するかを判定し得る。アプリケーションデータセットが存在しない場合、アプリケーションデータセットが生成され得る。アプリケーションデータセットが存在する場合、アプリケーションデータセットに関連付けられるデバイス群を含むデータセットグループへの参加を求めるリクエストが、分散システム内の他のデバイスへ送信され得る。
分散システム内の他のデバイスは、データセットグループへの追加のリクエストをリクエスト元デバイスから受信し、データセットグループへ当該リクエスト元デバイスを追加するという提案を生成し得る。データセットグループ内の他のデバイスは当該提案について投票を行い、合意が達せられた場合には、リクエスト元デバイスがデータセットグループへ追加され得る。そして、リクエスト元デバイスは、当該データセットグループに関連付けられるアプリケーションデータセットを受信し、並びに/又はアプリケーションデータの追加、及び/若しくはデータセットグループに関連付けられるアプリケーションデータセットへの他の変更について提案を行い得る。
図1は、以下に説明するシステム及び/又は方法が実装され得る例示的な環境100のブロック図である。図1に示したように、環境100は、分散制御システム110(例えば、分散された物理アクセス制御システム)、ネットワーク120及び管理デバイス130を含み得る。
分散制御システム(DCS)110は、システムユニット115−A〜115−N(“システムユニット群115”と総称され、及び個別に“システムユニット115”とも称される)を含む分散コンピューティングシステムを含み得る。システムユニット115は、組込み型の(embedded)システムとして実装されてもよい。いくつかの実装では、システムユニット115は、物理アクセス制御デバイスを含み得る。例えば、システムユニット115は、部屋(room)又は部屋の集合といった保護されるエリアへのアクセスを制御するアクセスコントローラを含み得る。システムユニット115は、リーダ(reader)デバイスを介して認証情報(例えば、アクセスカードの認証情報)を受信し、当該認証情報が真正であってセキュアエリアへアクセスする権限に関連付けられているかを判定し得る。判定結果が真であれば、アクセスコントローラは、ドアのロックを解除し又はセキュアエリアへのアクセスを許可することに関連付けられる他の動作を実行するためのコマンドを発行し得る。他の実装において、システムユニット115は、監視デバイス又は機械の動作を制御するデバイスなどといった異なるタイプのセキュリティデバイスを含んでもよい。他の実装において、システムユニット115は、他のタイプの組込み型システムを含んでもよい。
DCS110は、1つ以上の分散されたデータセットを含み得る。分散されたデータセットは、複数のデバイスに関連付けられるデータセットを含む。1つの実施形態において、当該複数のデバイスは、データセットの変更を行うために、互いに通信し及び協調する。いくつかの実装において、分散されたデータセットは、当該分散されたデータセットに関連付けられる各デバイスにより維持され、デバイス群によって変更が同意されると、その変更がデバイス群の各々により当該分散されたデータセットへ適用される。他の実装において、分散されたデータセットに関連付けられるデバイスの全てが実際の分散されたデータセットを記憶するとは限らない。
いくつかの実施形態において、分散されたデータセット(例えば、合意ベースの分散データベース)内で変更を行うために、合意が達せられる。他の実施形態において、合意が無くとも、分散されたデータセットへの変更がなされてもよい。分散されたデータセットは、全てのシステムユニット115に関連付けられてもよく、又はシステムユニット115のサブセットに関連付けられてもよい。システムユニット115は、合意ベースの分散されたデータセットへの変更を提案し得る。分散されたデータセットに関連付けられる定足数のシステムユニット115により変更が受け入れられる場合、合意は達せられ、関連付けられる各システムユニット115内の分散されたデータセットへ変更が伝播され得る。よって、定足数の関連付けられるシステムユニット115が変更について賛成票を投じる場合に、分散されたデータセットにおける変更に関する合意が達せられ得る。定足数とは、関連付けられるシステムユニット群115を支配する最小限の数(例えば、過半数)に相当してよい。よって、過半数の例では、分散されたデータセットがN個のシステムユニット115に関連付けられる場合、Nが偶数ならばN/2+1個の関連付けられるシステムユニット115が変更に賛成票を投じれば定足数に達し、Nが奇数ならば(N−1)/2+1個の関連付けられるシステムユニット115が変更に賛成票を投じれば定足数に達する。定足数に達するために例えば過半数を要求することで、2つの競合する提案が検討される場合に、少なくとも1つのシステムユニット115が双方の提案を受信し、合意のためにそれら提案のうちの1つを選択することが保証され得る。いくつかの実装において、システムユニット115は、最初に受信された提案を選択する。他の実装において、他の基準を用いて提案が選択されてもよい。
いくつかの実装において、分散されたデータセットに関連付けられる全てのシステムユニット115が、分散されたデータセットを記憶してもよい。例えば、分散されたデータセットはアクセスルールを含んでもよく、アクセスルールは、当該分散されたデータセットに関連付けられる任意のシステムユニット115にとって利用可能であってよい。このように、1つ以上の分散されたデータセットの結果として、1つの実施形態において、DCS110は、サーバデバイスといった中央制御デバイスを伴わない非集中化型のシステムに相当し得る。他の実施形態において、DCS110は、非集中化型のシステム及び(サーバデバイスといった)中央制御デバイスの双方を含んでもよい。1つの実施形態において、分散されたデータセットへの変更は、任意のシステムユニット115において構成され、当該分散されたデータセットに関連付けられる他のシステムユニット115へ伝播され得る。さらに、DCS110は、デバイス障害に関して、シングルポイントの障害が回避され得るようなロバスト性を呈し得る。例えば、特定のシステムユニット115が障害を起こした場合に、他のシステムユニット115は、データのロスなく(又はデータの最小限のロスのみで)動作を継続し得る。さらに、DCS110は、動的に変化してもよい。例えば、任意の時点でアプリケーションは追加されてよく、必要に応じて新たなデータセットがシステムユニット115内に記憶されてよい。他の実装において、分散されたデータセットに関連付けられる全てのシステムユニット115が必ずしも当該分散されたデータセットを記憶するわけではない。
DCS110は、分散されないデータセットをも含んでよい。一例として、第1のシステムユニット115は、他のいかなるシステムユニット115にも含まれないローカルデータセットを含み得る。他の例として、第1のシステムユニット115は、ミラーリングといった非分散的な手法で第2のシステムユニット115へと複製されるローカルデータセットを含んでもよい。また別の例として、第1のシステムユニット115がローカルデータセットの第1のバージョンを含み、第2のシステムユニット115が当該ローカルデータセットの第2のバージョンを含んでもよい。この場合、第1のシステムユニット115はローカルデータセットの第1のバージョンを維持し、第2のシステムユニット115は当該ローカルデータセットの第2のバージョンを維持する。また別の例において、第1のシステムユニット115が分散されたデータセットから第1のローカルデータセットを導出し、第2のシステムユニット115が分散されたデータセットから第1のローカルデータセットとは異なる第2のローカルデータセットを導出してもよい。
ネットワーク120は、システムユニット115が互いに通信することを可能とし、及び/又は管理デバイス130が個々のシステムユニット115と通信することを可能とし得る。ネットワーク120は、1つ以上の回線交換ネットワーク及び/又はパケット交換ネットワークを含み得る。例えば、ネットワーク120は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、公衆交換電話網(PSTN)、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワーク、無線ネットワーク、及び/又はこれらの若しくは他のタイプのネットワークの組合せ、を含み得る。
管理(administration)デバイス130は、DCS110を構成/設定し、DCS110の構成/設定を変更し、DCS110から情報を受信し、及び/又はDCS110について他の管理を実行するために、管理者(administrator)が個別のシステムユニット115へ接続することを可能とし得る。管理デバイス130は、システムユニット115との通信のために構成される任意のデバイスを含み得る。例えば、管理デバイス130は、可搬性の通信デバイス(例えば、携帯電話、スマートフォン、ファブレットデバイス、GPS(Global Positioning System)デバイス、及び/若しくは他のタイプの無線デバイス)、PC(Personal Computer)若しくはワークステーション、サーバデバイス、ラップトップ、タブレット、若しくは他のタイプのポータブルコンピュータ、並びに/又は通信ケイパビリティを有する他のタイプのデバイスを含み得る。
図1は環境100の例示的なコンポーネント群を示しているが、他の実装において、環境100は、より少ない数のコンポーネント、異なるコンポーネント、異なる配置のコンポーネント、又は図1に描かれたもの以外の追加的なコンポーネントを含んでもよい。追加的に又は代替的に、環境100内のいかなる1つのデバイスも(又はいかなるデバイスの集合も)、環境100内の1つ以上の他のデバイスにより実行されるものとして説明された機能を実行してよい。例えば、いくつかの実装において、システムユニット115は、入出力デバイス(例えば、キーボード/キーパッド及びディスプレイ、タッチスクリーンなど)を含んでもよく、管理デバイス130は必要とされなくてもよい。
図2は、システムユニット115の例示的なコンポーネント群を示すブロック図である。図2に示したように、システムユニット115は、コントローラ210と、1つ以上の周辺デバイス230とを含み得る。コントローラ210は、システムユニット115の動作を制御し、他のシステムユニット115と通信し、管理デバイス130と通信し、及び/又は周辺デバイス230を制御し得る。コントローラ210は、バス212、プロセッサ214、メモリ216、ネットワークインタフェース218、周辺インタフェース220及び筐体222を含み得る。
バス212は、コントローラ210のコンポーネント間の通信を許容するパスを含み得る。プロセッサ214は、命令を解釈し及び実行する、任意のタイプのシングルコアプロセッサ、マルチコアプロセッサ、マイクロプロセッサ、ラッチベースのプロセッサ並びに/又は処理ロジック(若しくはプロセッサ、マイクロプロセッサ、及び/若しくは処理ロジックの集合)を含み得る。他の実施形態において、プロセッサ214は、ASIC(application-specific integrated circuit)、FPGA(field-programmable gate array)及び/又は他のタイプの集積回路若しくは処理ロジックを含み得る。
メモリ216は、プロセッサ214による実行のための情報及び/若しくは命令を記憶し得る任意のタイプの動的記憶デバイス、並びに/又は、プロセッサ214による使用のための情報を記憶し得る任意のタイプの不揮発性記憶デバイスを含み得る。例えば、メモリ216は、RAM(random access memory)若しくは他のタイプの動的記憶デバイス、ROM(read-only memory)デバイス若しくは他のタイプの静的記憶デバイス、CAM(content addressable memory)、磁気的及び/若しくは光学的記録メモリデバイス、及びその対応するドライブ(例えば、ハードディスクドライブ、光学的ドライブなど)、並びに/又は、フラッシュメモリといった着脱可能な形態のメモリ、を含み得る。
ネットワークインタフェース218は、有線通信リンク(例えば、導電性ワイヤ、ツイストペアケーブル、同軸ケーブル、伝送線、光ファイバケーブル、及び/若しくは導波管など)、無線通信リンク(例えば、無線周波数(RF)、赤外線、及び/若しくは可視光線など)、又は無線通信リンクと有線通信リンクとの組合せを介して、コントローラ210が他のデバイス及び/又はシステムと通信する(例えば、データを送受信する)ことを可能とする送受信器(例えば、送信器及び/又は受信器)、を含み得る。ネットワークインタフェース218は、ベースバンド信号をRF信号へ変換する送信器、及び/又はRF信号をベースバンド信号へ変換する受信器、を含み得る。ネットワークインタフェース218は、RF信号を送受信するためのアンテナと連結されてもよい。
ネットワークインタフェース218は、データの他のデバイスへの送信を遂行する入出力ポート、入出力システム及び/又は他の入出力コンポーネント、を含む論理的なコンポーネントを含み得る。例えば、ネットワークインタフェース218は、有線通信用のネットワークインタフェースカード(例えば、イーサネット(登録商標)カード)、及び/又は無線通信用の無線ネットワークインタフェース(例えば、Wi−Fi)カードを含み得る。ネットワークインタフェース218は、ケーブル上の通信用のUSB(universal serial bus)ポート、Bluetooth(登録商標)無線インタフェース、RFID(radiofrequency identification)インタフェース、NFC(near-field communications)無線インタフェース、及び/又はデータをある形態から他の形態へ変換する任意の他のタイプのインタフェースをも含み得る。
周辺インタフェース220は、1つ以上の周辺デバイス230と通信するように構成され得る。例えば、周辺インタフェース220は、周辺デバイス230へのデータの送信を遂行する入出力ポート、入出力システム及び/又は他の入出力コンポーネント、を含む1つ以上の論理的なコンポーネントを含み得る。一例として、周辺インタフェース220は、WiegandプロトコルなどのSPI(Serial Peripheral Interface)バスプロトコル、RS−485プロトコル、及び/又は他のタイプのプロトコルを用いて、周辺デバイスと通信し得る。他の例として、周辺インタフェース220は、異なるタイプのプロトコルを用いてもよい。1つの実施形態において、ネットワークインタフェース218もまた、周辺機器230をコントローラ210と連結するための周辺インタフェースとして作動してもよい。
筐体222は、コントローラ210のコンポーネント群を収容し、コントローラ210のコンポーネント群を環境から保護し得る。1つの実施形態において、筐体222は、1つ以上の周辺デバイス230を含み得る。他の実施形態において、筐体222は、管理デバイス130を含んでもよい。筐体222は、複数のシステムユニット115及び/又はコントローラ210を伴うシステムにおいて、1つのシステムユニット115及び/又はコントローラ210の他のシステムユニット115及び/又はコントローラ210からの境界を定義し得る。
以下に説明するように、コントローラ210は、分散システム内でアプリケーションデータセット及び/又はデータセットグループを管理することに関する何らかの動作を実行し得る。コントローラ210は、それら動作を、ASICのハードウェア回路の結果として実行してもよい。また(あるいは代替的に)、コントローラ210は、メモリ216といったコンピュータ読取可能な媒体に含まれるソフトウェア命令を実行するプロセッサ214に応じて、それら動作を実行してもよい。コンピュータ読取可能な媒体は、非一時的なメモリデバイスを含み得る。メモリデバイスは、単一の物理的なメモリデバイスの範囲内で実装されてもよく、又は複数の物理的なメモリデバイスをまたいで拡散されてもよい。ソフトウェア命令は、他のコンピュータ読取可能な媒体から又は他のデバイスからメモリ216へ読み込まれてもよい。メモリ216内に含まれるソフトウェア命令は、プロセッサ214に、ここで説明される処理を実行させる。よって、ここで説明される実装は、いかなる特定のハードウェア回路及びソフトウェアの組合せにも限定されない。
周辺デバイス230は、コントローラ210へ情報を提供し、コントローラ210により制御され、及び/又はさもなくばコントローラ210と通信する1つ以上のデバイスを含み得る。例えば、周辺デバイス230は、リーダ(reader)デバイス240、ロック(lock)デバイス250、センサ260、及び/又はアクチュエータ270を含み得る。図2には例示の目的で単一のリーダデバイス240、単一のロックデバイス250、単一のセンサ260、及び単一のアクチュエータ270が示されているが、実際には、一群の周辺デバイス230は、複数のリーダデバイス240、複数のロックデバイス250、複数のセンサ260、及び/又は複数のアクチュエータ270を含んでもよい。いくつかの実装において、周辺デバイス230は、図2に示したデバイスのうちの1つ以上を含まなくてもよい。追加的に又は代替的に、周辺デバイス230は、図2に示していない任意の他のタイプのセキュリティデバイスを含んでもよい。
リーダデバイス240は、ユーザから認証情報を読取り、認証情報をコントローラ210へ提供するデバイスを含み得る。例えば、リーダデバイス240は、アルファベット又は数字のPIN(personal identification number)をユーザから受け付けるように構成されるキーパッド、磁気ストリップ上にカードコードを格納するカード若しくはRFIDタグといった他のタイプの記憶デバイスを構成するカードリーダ、ユーザの指紋を読み取るように構成される指紋リーダ、ユーザの虹彩を読み取るように構成される虹彩リーダ、ユーザの声紋を記録するように構成されるマイクロフォン及び声紋識別器、NFC(near field communication)リーダ、並びに/又は他のタイプのリーダデバイスを含み得る。リーダデバイス240は、認証情報を提供可能な任意のタイプのセキュリティデバイスを含んでもよく、センサ260を参照しながら以下に説明される任意のセンサデバイスといった1つ以上のセンサデバイスを含んでもよい。例えば、リーダデバイス240は、顔認識のために使用されるカメラ、及び/又は音声認識のために使用されるマイクロフォンを含んでもよい。
ロックデバイス250は、コントローラ210により制御されるロック(鍵)を含み得る。ロックデバイス250は、ドア(例えば、ドアの開閉が妨げられる)、窓、HVACベント(空調、通気、排気など)、及び/又はセキュアエリアの開放可能部への他のタイプのアクセス、をロック(施錠)し得る。例えば、ロックデバイス250は、電磁式ロック、コントローラ210により制御されるモータを伴う機械式ロック、電気機械式ロック、及び/又は他のタイプのロックを含み得る。さらに、ロックデバイス250は、機械、輸送車両、エレベータ、及び/又は電気デバイスの動作をロック(施錠)し/アンロック(開錠)してもよい。
センサ260は、センサデバイスを含み得る。例として、センサ260は、ドアが開いているか閉じているかを感知するドアセンサ、可視光モニタリングカメラ、赤外(IR)光モニタリングカメラ、熱シグニチャモニタリングカメラ及び/若しくは他のタイプのモニタリングデバイス、動きセンサ、熱センサ、圧力センサ及び/若しくは他のタイプの警報センサといった警報センサ、音声記録デバイス(例えば、マイクロフォン)、システムユニット115の内部に位置する位置センサ、及び/若しくはシステムユニット115に関連付けられる保護されるエリア内に位置する“退出要求(request to exit)”ボタンといったタンパ(tamper)センサ、並びに/又は、他のタイプのセンサデバイス、を含み得る。
アクチュエータ270は、アクチュエータデバイスを含み得る。一例として、アクチュエータ270は、照明/発光デバイスを制御し得る。他の例として、アクチュエータ270は、侵入警報起動器(burglar alarm activator)、メッセージを再生し若しくは警報信号を生成するスピーカ、ディスプレイデバイス、センサ260を動かす(例えば、カメラ若しくは他の監視デバイスの視界を制御する)モータ、ドア、窓、HVACベント及び/若しくはセキュアエリアに関連付けられる他の開放可能部を開閉するためのモータ、ロックデバイス250をロック位置若しくはアンロック位置に固定するモータ、消火デバイス、並びに/又は他のタイプのアクチュエータデバイスを含み得る。
図2はシステムユニット115の例示的なコンポーネント群を示しているが、他の実装において、システムユニット115は、より少ない数のコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は図2に描かれたものとは異なる配置のコンポーネントを含んでもよい。追加的に又は代替的に、システムユニット115のいかなるコンポーネントも(又はいかなるコンポーネントの集合も)、システムユニット115の1つ以上の他のコンポーネントにより実行されるものとして説明された1つ又は複数のタスクを実行してよい。例えば、いくつかの実装において、周辺インタフェース220は、ネットワークインタフェースに相当し得る。他の例として、いくつかの実装において、周辺デバイス230は、周辺インタフェース220を介するよりもむしろ、ネットワークインタフェース218を介してコントローラ210へ接続され得る。
さらに、DCS110は物理アクセス分散制御システムを含み得るものの、他の実装では、物理アクセスシステムとは別のシステムが制御されてもよい。一方で、DCS110は、ドアを開閉し又は建物若しくは施設への物理的なアクセスを制御するための制御システムといった、(例えば、運用環境における)任意のタイプの物理アクセス制御システムを含んでもよい。また、DCS110は、ファン(fan)を制御(例えば、起動若しくは停止)し、ビル管理システム内の警報を開始させ(例えば、認証失敗、成功裏の認証など)、又は産業オートメーションシステム内のロボットアームを制御するシステムを含んでもよい。
図3A及び図3Bは、システムユニット115の例示的な機能コンポーネントを示すブロック図である。システムユニット115の機能コンポーネントは、例えば、1つ以上のASICのハードワイヤ回路を介して実装されてもよい。追加的に又は代替的に、システムユニット115の機能コンポーネントは、メモリ216からの命令を実行するプロセッサ214により実装されてもよい。図3Aは、システムユニット115の機能的なレイヤ群を示している。図3Aに示したように、システムユニット115は、API(application programming interface)レイヤ310、アプリケーションレイヤ320、分散制御レイヤ340及びストレージレイヤ350を含み得る。
APIレイヤ310は、例えば、管理デバイス130と通信するように構成されるAPIを含む。一例として、管理者が管理デバイス130を用いてシステムユニット115にログインする際、APIレイヤ310は、管理者を認証するために管理デバイス130と通信し得る。他の例として、APIレイヤ310は、システムユニット115の構成を変更するために管理デバイス130と通信し得る。APIレイヤ310は、管理デバイス130からデータを受信し、当該データを分散制御レイヤ340及び/又はストレージレイヤ350へ提供し得る。また、APIレイヤ310は、アプリケーションレイヤ320内にアプリケーションをインストールするために管理デバイス130と通信し得る。APIレイヤ310は、様々な管理者タイプを扱うように構成されてもよい。例えば、APIレイヤ310は、ウェブサービス管理者、リナックス管理者若しくはONVIF(Open Network Video Interface Forum)管理者を扱うためのAPI、及び/又は他のタイプのAPIを含んでもよい。
アプリケーションレイヤ320は、システムユニット115にインストールされる1つ以上のアプリケーションを含む。図3Bは、例示的なアプリケーション群を示す。図3Bに示したように、アプリケーションレイヤ320は、アクセス制御ロジックアプリケーション322、ドア制御アプリケーション324、リーダ制御アプリケーション326、イベントハンドリングアプリケーション328、スケジュールハンドリングアプリケーション330、及び/又はアプリケーション332を含み得る。
アクセス制御ロジックアプリケーション322は、受信される認証情報に基づいて、及び記憶されるアクセスルールに基づいて、アクセスを許可するべきかを判定し得る。ドア制御アプリケーション324は、1つ以上のドア及び/又は関連付けられるロックデバイス250を制御し得る。例えば、ドア制御アプリケーション324は、ドアが開いているか閉じているか及び/若しくは施錠されているか開錠されているかを判定し、並びに1つ以上のデバイスを操作してドアを開閉し及び/若しくはドアを施錠し若しくは開錠し得る。リーダ制御アプリケーション326は、1つ以上のリーダデバイス240を制御し、1つ以上のリーダデバイス240から受信される認証情報を取得し及び処理し得る。イベントハンドリングアプリケーション328は、システムユニット115により記録され若しくは生成され、及び/又は他のシステムユニット115により記録されるイベントのログを維持し得る。イベントハンドリングアプリケーション328は、全ての(又は少なくともいくつかの)システムユニット115において分散システムイベントログを維持する目的で、ローカルで記録され又は生成されたイベントがDCS110内の他のシステムユニット115へと配信されること、を保証してもよい。そのようにして、ログに記録されたイベントは、システムイベントログに関連付けられる任意のシステムユニット115から引き出され得る。スケジュールハンドリングアプリケーション330は、システムユニット115に関連付けられる1つ以上のスケジュールを管理し得る。例えば、特定のユーザのグループについてのアクセスルールが、特定の日時に基づいて変化し得る。
アプリケーション332は、システムユニット115のアプリケーションレイヤ320にインストールされる個別のアプリケーションに相当し、分散されるデータセットを使用する。例えば、アプリケーション332が相当し得るのは、カメラ制御アプリケーションといった個別のセンサ260に関連付けられるアプリケーション、ドアモータアプリケーションといった個別のアクチュエータ270に関連付けられるアプリケーション、人数カウントアプリケーションといった情報処理を実行するアプリケーション、サードパーティアプリケーションが周辺デバイス230を制御するためのプラットフォームを提供するアプリケーションといったAPIアプリケーション、ネットワークをまたいで遠隔デバイスと通信するように構成されるアプリケーション、及び/又は他のタイプのアプリケーションである。
他のアプリケーション(図3Bには示していない)がアプリケーションレイヤ320に含まれてもよい。一例として、警報アプリケーションは、レポート及び/又は警報を生成し、当該レポート及び/又は警報を管理デバイス130へ(及び/若しくは他の指定されたデバイスへ)並びに/又は1つ以上の他のシステムユニット115へ送信し得る。他の例として、タスク固有の制御アプリケーションは、ドア開放イベント、センサイベント、アクチュエータイベント及び/又は他のタイプのイベントといったシステムユニット115に関連付けられるイベントを処理し得る。
分散制御レイヤ340は、システムユニット115に関連付けられる1つ以上の分散されるデータセットを管理し得る。例えば、分散制御レイヤ340は、ネットワーク120上の他のシステムユニット115とのセキュア接続(例えば、TLS(Transport Layer Security)接続)を維持し得る。さらに、分散制御レイヤ340は、個別の合意ベースの分散データセットにおける変更に関する合意を確立するために、プロトコル(例えば、PAXOSプロトコル)を使用し得る。一例として、分散制御レイヤ340は、分散されたデータセットに関連付けられる他のシステムユニット115へ変更についての提案を送信し、他のシステムユニット115から当該変更のための定足数を受信し得る。他の例として、分散制御レイヤ340は、他のシステムユニット115から受信される提案について(例えば応答メッセージを送信することにより)賛成票を投じてもよい。また別の例として、分散制御レイヤ340は、変更について投票しなかったとしても、当該変更について合意が達せられたという標識を受信してもよい。変更についての合意の標識が受信された場合、分散制御レイヤ340は、ストレージレイヤ350内の分散されたデータセットへ当該変更を適用し得る。分散制御レイヤ340は、アプリケーション332からアプリケーションデータセットへのアクセスを求めるリクエストを受信し、システムデータセットをチェックして当該アプリケーションデータセットが存在するかを判定し得る。アプリケーションデータセットが存在する場合、分散制御レイヤ340は、DCS110内の他のシステムユニット115へリクエストを送信することにより、アプリケーションデータセットに関連付けられるデバイス群のデータセットグループへの参加をリクエストし得る。アプリケーションデータセットが存在しない場合、分散制御レイヤ340は、アプリケーション332のために、アプリケーションデータセットを生成し得る。
ストレージレイヤ350は、システムユニット115に関連付けられる1つ以上のデータセットを記憶し得る。ストレージレイヤ350に記憶されるデータセットは、ローカルデータセットに相当してもよく、又は分散されたデータセットに相当してもよい。ローカルデータセットには、当該ローカルデータセットを記憶する個別のシステムユニット115に関連付けられる(及び/又は、個別のシステムユニット115にのみ関連付けられる)情報が格納され得る。分散されたデータセットには、当該分散されたデータセットに関連付けられる他のシステムユニット115にも関連付けられる情報が格納され得る。
ストレージレイヤ350に含まれ得る例示的な情報が図3Bに示されている。図3Bに示したように、ストレージレイヤ350は、構成データ352、認証情報データ354、アクセスルールデータ356、システムデータセット358及びアプリケーションデータセット360を含み得る。構成データ352には、コントローラ210若しくはコントローラ210に接続される周辺デバイス230のハードウェア構成及び設定、若しくはアプリケーションレイヤ320にインストールされるアプリケーションのソフトウェア構成及び設定といった、個別のシステムユニット115に関連付けられる構成データ、並びに/又は他のタイプの構成情報が格納され得る。認証情報データ354には、システムユニット115に関連付けられる認証情報が格納され得る。アクセスルール356には、システムユニット115に関連付けられるアクセスルールが格納され得る。
システムデータセット358は、DCS110内のシステムユニット群115(例えば、全てのシステムユニット115)に関連付けられている分散されたデータセットに相当し得る。よって、システムデータセット358は、DCS110内の各システムユニット115内に記憶され得る。システムデータセット358に格納され得る例示的な情報について、後に図4Aを参照しながら説明する。
アプリケーションデータセット360は、アプリケーション332といった個別のアプリケーションに関連付けられる分散されたデータセットに相当し得る。アプリケーションデータセット360に格納され得る例示的な情報について、後に図4Bを参照しながら説明する。
図3A及び図3Bはシステムユニット115の例示的な機能コンポーネント群を示しているが、他の実装において、システムユニット115は、より少ない数の機能コンポーネント、異なる機能コンポーネント、異なる配置の機能コンポーネント、又は図3A及び図3Bに描かれたものとは別の追加的な機能コンポーネントを含んでもよい。例えば、図3Bには例示の目的で単一のアプリケーション332及び単一のアプリケーションデータセット360が示されているが、実際には、アプリケーションレイヤ320は複数のアプリケーション332を含んでもよく、ストレージレイヤ350は複数のアプリケーションデータセット360を含んでもよい。追加的に、システムユニット115のコンポーネント群のうちのいかなる1つも(又はいかなるコンポーネントの集合も)、システムユニット115の1つ以上の他の機能コンポーネントにより実行されるものとして説明された機能を実行してよい。
図4Aは、システムデータセット358に格納され得る例示的な情報の図である。図4Aに示したように、システムデータセット358は、システムユニットリスト410及び1つ以上の分散データセット識別子(ID)フィールド420を含み得る。システムユニットリスト410には、DCS110に含まれるシステムユニット115のリストが格納され得る。
分散データセットIDフィールド420には、DCS110内に存在する分散されたデータセットを識別する情報が格納され得る。分散データセットIDフィールド420は、1つ以上の分散データセットエントリを含み得る。各分散データセットIDフィールド420は、DCS110内の個別の分散されたデータセットに関連付けられる1つ以上の識別情報を含み得る。当該識別情報は、データセットグループの名称、ID、その他の名称、及び/若しくは当該分散されたデータセットに関連付けられるアプリケーションの情報(例えば、識別子、名称、バージョン及び説明など)、データセットの内容を記述するメタデータ、並びに/又は、個別の分散されたデータセットを識別するために使用され得る任意の他の情報、を含み得る。分散データセットIDは、アプリケーション332がアプリケーションデータセットへのアクセスをリクエストする場合に、個別のアプリケーションデータセットを識別するために分散制御レイヤ340により使用され得る。
図4Aはシステムデータセット358に格納され得る例示的なコンポーネントを示しているが、他の実装において、システムデータセット358は、より少ない数のコンポーネント、異なるコンポーネント、異なる配置のコンポーネント、又は図4Aに描かれたものとは別の追加的なコンポーネントを含んでもよい。
図4Bは、アプリケーションデータセット360に格納され得る例示的な情報の図である。図4Bに示したように、アプリケーションデータセット360は、分散データセットIDフィールド430、1つ以上のシステムユニットフィールド440−A〜440−N、定足数フィールド450、及びアプリケーションデータフィールド460を含み得る。分散データセットIDフィールド430は、個別のアプリケーションデータセット360を識別し、システムデータセット358の分散データセットIDフィールド420に格納される分散データセットIDに対応し得る。
システムユニットフィールド440には、アプリケーションデータセット360に関連付けられるデータセットグループ内の1つ以上のシステムユニット115を識別する情報が格納され得る。定足数フィールド450には、アプリケーションデータセット360への提案された変更について投票を行う際に合意に達するために要求される、データセットグループ内のシステムユニット115からの賛成票の数を識別する情報、が格納され得る。アプリケーションデータフィールド460には、アプリケーションデータセット360に関連付けられるアプリケーションデータが格納され得る。
図4Bはアプリケーションデータセット360に格納され得る例示的なコンポーネントを示しているが、他の実装において、アプリケーションデータセット360は、より少ない数のコンポーネント、異なるコンポーネント、異なる配置のコンポーネント、又は図4Bに描かれたものとは別の追加的なコンポーネントを含んでもよい。
図5は、ここで説明される1つ以上の実装に従って分散制御システムにおいてデータセットグループへ参加し又はアプリケーションデータセットへアクセスするためのフローチャートである。いくつかの実装において、図5の処理は、コントローラ210により実行され得る。他の実装において、図5の処理のいくつか又は全てが、コントローラ210とは別個の及び/又はコントローラ210を含む、他のデバイス又はデバイスの集合により実行されてもよい。
図5の処理は、データセットグループへ参加(join)し又はアプリケーションデータセットへアクセスすること、を含み得る(ブロック510)。例えば、管理者は、管理デバイス130を用いて特定のシステムユニット115へログインし、当該特定のシステムユニット115にアプリケーション332をインストールし得る。アプリケーション332は、分散されたデータセットへデータを格納し、及び/又は分散されたデータセットからデータを取得するように構成され得る。よって、アプリケーション332がインストールされた後、アプリケーション332は、分散制御レイヤ340へ、アプリケーション332に関連付けられる分散されたデータセットへのアクセスを求めるリクエストを送信し得る。次に、システムデータセット内に当該アプリケーションのためのアプリケーションデータセットのデータセットIDが存在するかの判定が行われ得る(ブロック515)。前に説明したように、システムデータセット358は、DCS110に含まれる分散されたデータセットのIDを格納する分散データセットIDフィールド420を含む。分散制御レイヤ340は、分散データセットIDフィールド420にアクセスして、アプリケーション332のためのIDが分散データセットIDフィールド420のリストに含まれているかを判定し得る。
システムデータセット内にアプリケーションデータセットIDが存在しないと判定された場合(ブロック515−NO)、アプリケーションデータセットエントリが生成され、システムデータセット内に配信/登録され得る(ブロック520)。システムデータセット358はDCS110内の分散されたデータセットであることから、システムデータセット358の変更を行うために、システムユニット115は、システムデータセット358の分散データセットIDフィールド420内の変更を行うことについて合意を取得する。システムユニット115のコントローラ210は、DCS110内の他のシステムユニット115へ変更についての提案を送信し、システムデータセット358に関する定足数の賛成票が他のシステムユニット115から受信されると、アプリケーションデータセットエントリがシステムデータセット358の分散データセットIDフィールド420に追加され得る。
次に、アプリケーションデータセットが生成され(ブロック530)、当該アプリケーションデータセットにアプリケーションデータが追加され得る(ブロック540)。例えば、分散制御レイヤ340は、アプリケーションデータセット360をストレージレイヤ350内に生成し、アプリケーション332からアプリケーションデータを受け取り、受け取ったアプリケーションデータをアプリケーションデータセット360に追加し得る。さらに、分散制御レイヤ340は、システムデータセット358の分散データセットIDフィールド420内のアプリケーションデータセットエントリを生成した個別のシステムユニット115が当該アプリケーションデータセットに関連付けられる最初のシステムユニット115であって、他のシステムユニット115は当該アプリケーションデータセットに関連付けられるデータセットグループに属していないことから、当該アプリケーションデータセット360に関連付けられるデータセットグループについての定足数要件を、1に設定し得る。よって、アプリケーションデータセット360にアプリケーションデータを追加するために、他のシステムユニット115からの投票は取得されなくてもよい。
ブロック515に戻り、アプリケーションデータセットIDがシステムデータセット内に存在すると判定された場合(ブロック515−YES)、当該アプリケーションデータセットに関連付けられるデータセットグループへ追加されることを求めるリクエストが、DCS110内の他のシステムユニット115へ送信され得る(ブロック550)。分散データセットIDフィールド420が個別の分散されたデータセットにどのシステムユニット115が関連付けられているかをリスト化する情報を含まない場合には、コントローラ210は、DCS110内の他のシステムユニット群115(例えば、他の全てのシステムユニット115)へ、データセットグループへの追加を求めるリクエストを送信してもよい。
他のシステムユニットから、分散されたデータセットへリクエスト元のシステムユニットが追加されたという標識が受信され得る(ブロック560)。例えば、DCS110内の、アプリケーションデータセットに関連付けられるデータセットグループ内の他のシステムユニット115のうちの1つ以上が、リクエストを処理し、リクエスト元のシステムユニット115をデータセットグループへ追加してもよい。既存のデータセットグループへのシステムユニット115の追加の処理は、図7を参照しながら後に説明される。一度リクエスト元のシステムユニット115がデータセットグループへ追加されると、リクエスト元のシステムユニット115を追加した当該特定のシステムユニット115は、リクエスト元のシステムユニット115へ標識を送信し得る。
データセットグループへ追加されたという標識の受信に応じて、他のシステムユニットからアプリケーションデータセットが受信され得る(ブロック570)。そして、受信されたアプリケーションデータセットがストレージレイヤ350に追加され得る(ブロック580)。例えば、分散制御レイヤ340は、他のシステムユニット115からアプリケーションデータセットを受信し、受信したアプリケーションデータセットをストレージレイヤ350に記憶させ得る。アプリケーションデータセットは、データセットグループに関連付けられるシステムユニット115(即ち、データセットグループのメンバーであるデバイス群)のリストと、当該アプリケーションデータセットの操作を行うための定足数要件とを含み得る。
図6は、ここで説明される1つ以上の実装に従って分散制御システムにおいて既存のアプリケーションデータセット内のアプリケーションデータを変更するためのフローチャートである。いくつかの実施形態において、図6の処理は、コントローラ210により実行され得る。他の実装において、図6の処理のいくつか又は全てが、コントローラ210とは別個の及び/又はコントローラ210を含む、他のデバイス又はデバイスの集合により実行されてもよい。
図6の処理は、アプリケーションデータセット内のアプリケーションデータを変更するためのリクエストを検出すること、を含み得る(ブロック610)。一例として、アプリケーション332は、特定の周辺デバイス230からデータを受信し、特定の周辺デバイス230へ送信された命令を記録し、計算の結果を記録し、及び/又はアプリケーション332により生成された他のタイプのアプリケーションデータを記録するなどして、アプリケーションデータを生成し得る。他の例として、アプリケーション332は、アプリケーションデータセット360内の既存のアプリケーションデータを編集し、更新し、削除し及び/又はさもなくば変更し得る。アプリケーション332は、分散制御レイヤ340へアプリケーションデータの変更を提供し得る。
次に、アプリケーションデータセットに関連付けられるデータセットグループ内の1つ以上の他のシステムユニットが識別され得る(ブロック620)。次に、アプリケーションデータセット内のアプリケーションデータを変更するという提案が、識別された当該1つ以上のシステムユニットへ送信され得る(ブロック630)。例えば、分散制御レイヤ340は、アプリケーションデータセット360にアクセスし、システムユニットフィールド440において識別されるシステムユニット115を判定し、システムユニットフィールド440において識別される当該システムユニット115へ、アプリケーションデータの変更のための提案を送信し得る。
次に、アプリケーションデータセット内のアプリケーションデータを変更することについて合意が取得され得る(ブロック640)。そして、合意の取得に応じて、提案された変更がアプリケーションデータセットに適用され得る(ブロック650)。システムユニット115は、提案された変更を受け入れるために、定足数の賛成票を受信し得る。例えば、10個のシステムユニット115がデータセットグループに関連付けられている場合、リクエスト元のシステムユニット115は、アプリケーションデータセット360内のアプリケーションデータを変更するために、6個の関連付けられるシステムユニット115から賛成票を受信する必要があり得る。6個の賛成票が一度受信されると、提案された変更について合意に達したことになり、提案された変更が行われ得る。分散制御レイヤ340は、提案された変更についての合意の取得に応じて、ストレージレイヤ350におけるアプリケーションデータセット360内のアプリケーションデータの追加、変更、更新、削除及び/又はそれ以外の変更を実行し得る。
図7は、ここで説明される1つ以上の実装に従って分散制御システムにおいてアプリケーションデータセットに関連付けられるデータセットグループへのシステムユニットの追加を求めるリクエストを処理するためのフローチャートである。いくつかの実施形態において、図7の処理は、コントローラ210により実行され得る。他の実装において、図7の処理のいくつか又は全てが、コントローラ210とは別個の及び/又はコントローラ210を含む、他のデバイス又はデバイスの集合により実行されてもよい。
図7の処理は、他のシステムユニットから、アプリケーションデータセットに関連付けられるデータセットグループへ当該他のシステムユニットを追加することを求めるリクエストを受信すること、を含み得る(ブロック710)。例えば、システムユニット115のコントローラ210は、特定のアプリケーションデータセットに関連付けられるデータセットグループへ追加されるべきリクエスト元のシステムユニットから、リクエストを受信し得る。システムユニット115は、リクエストを受信し、自身がそのリクエスト対象のデータセットグループに関連付けられている場合には、当該リクエストに関係性がある(例えば、ユニット追加の提案をすべきである)と判定し得る。例えば、システムユニット115は、リクエスト内で識別されたアプリケーション332に関連付けられているアプリケーションデータセット360がストレージレイヤ350内に存在するか、を判定してもよい。
次に、データセットグループ内の1つ以上の他のシステムユニットが識別される(ブロック720)。そして、リクエスト元のシステムユニットをデータセットグループへ追加するという提案が、識別された当該1つ以上の他のシステムユニットへ送信され得る(ブロック730)。例えば、分散制御レイヤ340は、アプリケーションデータセット360にアクセスし、システムユニットフィールド440において識別されるシステムユニット115を判定し、アプリケーションデータセット360のシステムユニットフィールド440において識別される当該システムユニット115へ、リクエスト元のシステムユニット115を追加する提案を送信し得る。
次に、データセットグループへリクエスト元のシステムユニットを追加することについて合意が取得され得る(ブロック740)。そして、合意の取得に応じて、リクエスト元のシステムユニットがデータセットグループへ追加され得る(ブロック750)。また、当該データセットグループのための定足数要件が調整され得る(ブロック760)。システムユニット115は、リクエスト元のシステムユニット115を追加するという提案された変更を受け入れるために、定足数の賛成票を受信し得る。例えば、データセット内に10個のシステムユニット115がある場合、提案を行ったシステムユニット115は、データセットグループへリクエスト元のシステムユニット115を追加するために、6個の関連付けられるシステムユニット115から賛成票を受信する必要があり得る。6個の賛成票が一度受信されると、提案された追加について合意に達したことになり、リクエスト元のシステムユニット115がアプリケーションデータセット360に関連付けられるデータセットグループへ追加され得る。例えば、分散制御レイヤ340は、アプリケーションデータセット360内にリクエスト元のシステムユニット115のためのシステムユニットフィールド440を生成し得る。さらに、分散制御レイヤ340は、アプリケーションデータセット360の定足数フィールド450内の定足数要件を調整し得る。例えば、データセットグループに10個のシステムユニット115が関連付けられていたが、今や当該データセットグループに11個のシステムユニット115が関連付けられる場合、6個という定足数要件は変更されなくてよい。一方で、また別のシステムユニット115が当該データセットグループに追加されると、システムユニットの合計数は12個になり、定足数要件は6個から7個へと変更され得る。
いくつかの実装において、特定のシステムユニット115がアプリケーションデータセットに関連付けられるデータセットグループから当該システムユニット115を削除することをリクエストした場合、削除処理が実行され得る。例えば、特定のシステムユニット115からアプリケーション332がアンインストールされ得る。アンインストール処理の一部として、アプリケーション332は、アプリケーションデータセット360から当該特定のシステムユニット115を削除することをリクエストし得る。そこで、特定のシステムユニット115は、アプリケーションデータセット360に関連付けられるデータセットグループ内の1つ以上の他のシステムユニット115へ、削除についての提案を送信し得る。その提案について合意が取得されると、当該特定のシステムユニット115はデータセットグループから削除され、ストレージレイヤ350からアプリケーションデータセット360が消し去られ得る。
いくつかの実装において、アプリケーション332のインストールは、自動化され得る。よって、管理者が管理デバイス130を用いて各システムユニット115上に1つずつアプリケーション332をインストールするよりもむしろ、アプリケーション332は1つのシステムユニット115上にインストールされ、及びそのシステムユニット115上にインストール命令のセットがインストールされ得る。インストール命令は、アプリケーション332の一部として含まれてもよく、又は別個のプログラム、アプリケーション及び/又はスクリプトファイルとして含まれてもよい。インストール命令は、アプリケーション332をインストールするための1つ以上の基準を含み、アプリケーション332をインストールせよという命令がDCS110内の他のシステムユニット115へと送信され得る。それら命令は、個別のシステムユニット115が1つ以上の基準を満たす場合に、当該システムユニットへ送信されてもよい。そのようにして、1つ以上の基準を個別のシステムユニット115が満たす場合に、当該個別のシステムユニット115はアプリケーション332をインストールし得る。個別のシステムユニット115によりアプリケーション332がインストールされた後、当該個別のシステムユニット115は、アプリケーション332に関連付けられるアプリケーションデータセット360に関連付けられるデータセットグループへ自装置を追加するために、図5の処理を実行し得る。特定のシステムユニット115上にアプリケーション332をインストールするための1つ以上の基準は、個別のシステムユニット115に関連付けられるハードウェア構成、個別のシステムユニット115に接続されている周辺デバイスの特定のタイプ、個別のシステムユニット115に関連付けられるロケーションタイプ、個別のシステムユニット115によりログに記録されたイベントタイプ、個別のシステムユニット115上にインストール済みの特定のアプリケーション、及び/又は他のタイプの基準を含み得る。
図8は、システムユニット115の例示的な物理レイアウト800を示す平面図である。図8に示したように、物理レイアウト800は、壁810、ドア820、コントローラ210、リーダデバイス240、ロックデバイス250、センサ260及びアクチュエータ270を含み得る。
壁810は、建物内の部屋といったセキュアエリア830を囲む。ドア820は、セキュアエリア830へのユーザのためのアクセスを提供する。本実施形態において、コントローラ210は、セキュアエリア830の内部に取り付けられる。他の実施形態において、コントローラ210は、セキュアエリア830の外部に取り付けられてもよい。リーダデバイス240は、セキュアエリア830の外部に取り付けられ、ロックデバイス250はセキュアエリア830の内部において壁810及びドア820に取り付けられる。センサ260は、この例では、セキュアエリア830の外部に向けて搭載される監視デバイスである。アクチュエータ270は、この例では、監視デバイスの視界を制御するために使用されるモータを含む。
ユーザがリーダデバイス240へ(例えば、PINを入力し、アクセスカードをスキャンし、虹彩をスキャンする等により)認証情報を入力すると、コントローラ210は、その認証情報を用いてユーザのアイデンティティを認証し、アクセスルールテーブルをルックアップして、ユーザのアイデンティティとアクセスルールとに基づいて、ユーザにアクセスを許可すべきかを判定する。コントローラ210は、アクセスが許可されるべきであると判定すると、ロックデバイス250を起動してドア820をアンロック(開錠)し、そのようにしてユーザのセキュアエリア830へのアクセスを許可する。
図8は物理レイアウト800の例示的なコンポーネント群を示しているが、他の実装において、物理レイアウト800は、より少ない数のコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は図8に描かれたものとは異なる配置のコンポーネントを含んでもよい。追加的に又は代替的に、物理レイアウト800内のいかなるコンポーネントも(又はいかなるコンポーネントの集合も)、物理レイアウト800の1つ以上の他のコンポーネントにより実行されるものとして説明された1つ又は複数のタスクを実行してよい。
図9は、DCS110の例示的な物理レイアウト900を示す平面図である。図9に示したように、物理レイアウト900は、部屋920−A〜920−Fを有する建物910を含み得る。イーサネット(登録商標)ネットワークといったローカルネットワーク930は、システムユニット115A〜115Fを相互接続し得る。この例において、システムユニット115−Aは部屋920−Aへの2つのドアを制御し、システムユニット115−Bは部屋920−Bへの外側のドアを制御し、システムユニット115−Cは部屋920−Bから部屋920−Cへの1つのドアを制御し、システムユニット115−Dは部屋920−Cから部屋920−Dへの1つのドアを制御し、システムユニット115−Eは部屋920−Dから部屋920−Eへの1つのドア及び部屋920−Eから部屋920−Fへの1つのドアを制御し、システムユニット115−Fは部屋920−Fへの外側のドアを制御する。
この例において、システムユニット115A〜115Fは、中央制御デバイス(例えば、サーバ)を含まず、1つ以上の分散されたデータセットを含み得る。例えば、システムユニット115A〜115Fは、分散される認証情報テーブル、分散されるアクセスルールテーブル、及び/又は分散されるイベントログを維持し得る。ここで、管理者が管理デバイス130を使用して、ユーザを追加するためにシステムユニット115−Aへログインし、ユーザに関連付けられる認証情報を追加することを想定する。それら追加された認証情報は、ユーザがアクセス権を有する部屋へのドアを制御する他のシステムユニット115へ配信され得る。例えば、システムユニット115−Bに障害が起きると、システムユニット115−Bにより収集されたデータは、他のシステムユニットに含まれる分散されたイベントログの結果として、利用可能であり続け得る。
図9は物理レイアウト900の例示的なコンポーネント群を示しているが、他の実装において、物理レイアウト900は、より少ない数のコンポーネント、異なるコンポーネント、追加的なコンポーネント、又は図9に描かれたものとは異なる配置のコンポーネントを含んでもよい。例えば、他の実施形態では、1つ以上の分散されるデータセットに関連して中央制御デバイス(例えば、サーバ)が使用されてもよい。追加的に又は代替的に、物理レイアウト900内の1つ以上のコンポーネントが、物理レイアウト900の1つ以上の他のコンポーネントにより実行されるものとして説明された1つ以上のタスクを実行してもよい。
図10A〜図10Cは、1つ以上の実装に係る例示的なアプリケーションデータセットのシナリオの図である。例えば、人数カウントアプリケーションが図9の部屋920−Cについて設計されることを想定する。部屋920−C内の人々の数をカウントするために、部屋920−Cにいずれのドアを通じて出入りする人々もカウントされなければならない。よって、システムユニット115−A、115−C及び115−Dのコントローラ210に、人数カウントアプリケーションがインストールされる必要がある。
図10Aは、システムユニット115−Aにカウントアプリケーション1010−Aがインストールされた後の信号フローシナリオ1000を示している。システムユニット115−Aにカウントアプリケーション1010−Aがインストールされた後、カウントアプリケーション1010−Aは、分散制御レイヤ340を介して、カウントアプリケーション1010−Aに関連付けられる分散されたアプリケーションデータセットへのアクセスをリクエストし得る(信号1012)。分散制御レイヤ340−Aは、システムデータセット358内にカウントアプリケーション1010のためのアプリケーションデータセットエントリが存在しないと判定し得る。そこで、分散制御レイヤ340−Aは、システムデータセット358内にカウントアプリケーションのデータセットのためのエントリを追加するという提案を配信し得る(信号1014)。提案された変更について合意を取得した後、分散制御レイヤ340−Aは、システムデータセット358内に新たなエントリを追加して、カウントアプリケーションデータセットIDエントリ1017を生成し得る(信号1016)。システムデータセット358の更新は、提案(信号1014)を介して他のシステムユニット115−B〜115−Fへ配信されたはずであり、合意に達した後に今や受け入れられている。分散制御レイヤ340−Aは、処理を進めて、ストレージレイヤ350内にカウントアプリケーションデータセット1020−Aを生成し得る(信号1018)。カウントアプリケーション1010−Aは、このようにして、分散制御レイヤ340−Aを介してカウントアプリケーションデータセット1020−Aを使用できるようになる。
図10Bは、システムユニット115−Cにカウントアプリケーション1010−Cがインストールされた後の信号フローシナリオ1030を示している。システムユニット115−Cにカウントアプリケーション1010−Cがインストールされた後、カウントアプリケーション1010−Cは、分散制御レイヤ340−Cを介して、カウントアプリケーション1010−Cに関連付けられる分散されたアプリケーションデータセットへのアクセスをリクエストし得る(信号1031)。分散制御レイヤ340−Cは、システムデータセット358内にアプリケーションデータセットエントリ1017が存在することを判定し得る。それに応じて、システムユニット115−Cは、カウントアプリケーションデータセット1020に関連付けられるデータセットグループへシステムユニット115−Cを追加することを求めるリクエストを、システムユニット115−Aへ(信号1032−A)、システムユニット115−Bへ(信号1032−B)、システムユニット115−Dへ(信号1032−D)、システムユニット115−Eへ(信号1032−E)及びシステムユニット115−Fへ(信号1032−F)送信し得る。カウントアプリケーションデータセット1020に関連付けられるデータセットグループ内にいるのはこの時点でシステムユニット115−Aのみであることから、システムユニット115−Aだけがそのリクエストに応答することになる。
システムユニット115−Aは、カウントアプリケーションデータセット1020に関連付けられるデータセットグループ内の唯一のシステムユニットであるため、カウントアプリケーションデータセット1020へのいかなる提案された変更も、自動的に合意を受ける。よって、システムユニット115−Aは、リクエストを受け入れてカウントアプリケーションデータセット1020に関連付けられるデータセットグループにシステムユニット115−Cを追加することについて合意を有する。システムユニット115−Aは、カウントアプリケーションデータセット1020−Aに関連付けられるデータセットグループにシステムユニット115−Cを追加し(信号1034)、システムユニット115−Cへ、システムユニット115−Cがカウントアプリケーション用のデータセットグループに追加されたという標識を送信し得る(信号1036)。それに応じて、システムユニット115−Cは、カウントアプリケーションデータセット1020を受信し(信号1038)、受信したカウントアプリケーションデータセット1020をストレージレイヤ350内に記憶し得る。
より遅い時点で、カウントアプリケーション1010−Cは、アプリケーションデータを生成し得る。例えば、ある人がシステムユニット115−Cに関連付けられるドアを通じて部屋920−Cから退出し、システムユニット115−Cに関連付けられるセンサデバイスが退出する人を検出し得る。カウントアプリケーション1010−Cは、分散制御レイヤ340−Cを介して、生成されたアプリケーションデータをアプリケーションデータセット1020−Cに追加することを提案し得る(信号1040)。カウントアプリケーションデータセット1020に関連付けられるデータセットグループ内の唯一のシステムユニットはシステムユニット115−Aであるため、データを追加するための提案は、システムユニット115−Aへ送信される(信号1042)。システムユニット115−Aは変更について賛成票を投じ、よって、システムユニット115−Cは、必要とされる2個の定足数に達したことにより(自身で提案した変更については自動的に賛成票が投じられる)、合意を取得する。よって、結果として、提案された変更がシステムユニット115−A及びシステムユニット115−Cの双方に適用され得る(信号1044)。
図10Cは、システムユニット115−Dにカウントアプリケーション1010−Dがインストールされた後の信号フローシナリオ1050を示している。システムユニット115−Dにカウントアプリケーション1010−Dがインストールされた後、カウントアプリケーション1010−Dは、分散制御レイヤ340−Dを介して、カウントアプリケーション1010−Dに関連付けられる分散されたアプリケーションデータセットへのアクセスをリクエストし得る(信号1051)。分散制御レイヤ340−Dは、システムデータセット358内にカウントアプリケーションデータセットIDエントリ1017が存在することを判定し得る。それに応じて、システムユニット115−Dは、カウントアプリケーションデータセット1020に関連付けられるデータセットグループへシステムユニット115−Dを追加することを求めるリクエストを、システムユニット115−Aへ(信号1052−A)、システムユニット115−Bへ(信号1052−B)、システムユニット115−Cへ(信号1052−C)、システムユニット115−Eへ(信号1052−E)及びシステムユニット115−Fへ(信号1052−F)送信し得る。カウントアプリケーションデータセット1020に関連付けられているのはこの時点でシステムユニット115−A及びシステムユニット115−Cのみであることから、システムユニット115−A及びシステムユニット115−Cだけがそのリクエストに応答することになる。
システムユニット115−A及びシステムユニット115−Cの双方がリクエストを受信したことから、システムユニット115−A及びシステムユニット115−Cの双方が、カウントアプリケーションデータセット1020に関連付けられるデータセットグループへシステムユニット115−Dを追加することを提案することになる。システムユニット115−Aがシステムユニット115−Cよりも先にリクエストを受信し、受信したリクエストについての動作を行うことを想定する。システムユニット115−Aは、システムユニット115−Dを追加するための提案を、システムユニット115−C(信号1054)及び自身へと送信するであろう。システムユニット115−Cは、システムユニット115−Dを追加するための提案を、システムユニット115−A及び自身へと送信するであろう(図10Cには示されていない)。システムユニット115−Aにより送信された提案が先に受信されるため、後続するシステムユニット115−Cからの提案は拒絶される。よって、システムユニット115−Cは、システムユニット115−Aからの提案に賛成票を投じて(信号1056)自身の提案を拒絶し、システムユニット115−Aは、自身の提案に賛成票を投じてシステムユニット115−Cからの提案を拒絶するであろう(図10Cには示されていない)。このようにして、システムユニット115−Aが自身の提案について合意に達し、システムユニット115−Dがカウントアプリケーションデータセット1020に関連付けられるデータセットグループへ追加され(信号1058)、受け入れられた提案の結果として、変更が分散的に遂行されることになる。
システムユニット115−Aは、システムユニット115−Dへ、システムユニット115−Dがカウントアプリケーションデータセット1020に関連付けられるデータセットグループへ追加されたという標識を送信し(信号1060)、カウントアプリケーションデータセット1020をシステムユニット115−Dへ提供し得る(信号1062)。分散制御レイヤ340−Dは、受信されたカウントアプリケーションデータセット1020をストレージレイヤ350内に記憶させ得る(信号1064)。このケースでは、カウントアプリケーションデータセット1020に関連付けられるデータセットグループについての定足数要件は変更されなくてよい。
ここまでの明細書において、好適な多様な実施形態を添付図面を参照しながら説明した。しかしながら、多様な修正及び変更をそこに加えることが可能であり、以下の特許請求の範囲に記載された発明の広範な範囲から逸脱することなく、追加的な実施形態が実装され得る。従って、明細書及び図面は、限定的というよりも例示的な意味で扱われるべきである。
例えば、図5〜図7を基準として一連のブロックが説明されているが、ブロックの順序は、他の実装において修正されてもよい。さらに、依存関係の無いブロックは並列的に実行されてもよい。
上述したシステム及び/又は方法は、図面に示した実装に限らず、ソフトウェア、ファームウェア及びハードウェアの多くの様々な形式で実装され得ることが理解されるであろう。それらシステム及び方法を実装するために使用される実際のソフトウェアコード又は専用の制御ハードウェアは、実施形態を限定するものではない。よって、システム及び方法の動作及び振る舞いは特定のソフトウェアコードを参照することなく説明されているが、ここでの説明に基づけば、それらシステム及び方法を実装するようにソフトウェア及び専用の制御ハードウェアを設計することができることが理解される。
さらに、上述したある要素は、1つ以上の機能を実行するコンポーネントとして実装され得る。ここでのコンポーネントとは、プロセッサ、ASIC若しくはFPGAといったハードウェア、又はハードウェア及びソフトウェアの組合せ(例えば、ソフトウェアを実行するプロセッサ)を含み得る。
“comprises”及び“comprising”(含む/備える)との用語は、記述された特徴、整数、ステップ又はコンポーネントの存在を特定するが、1つ以上の他の特徴、整数、ステップ、コンポーネント又はそれらの集合の存在又は追加を除外しない。
本出願におけるいかなるエレメント、動作又は命令も、そのように明示的に説明されていない限り、実施形態にとって決定的又は必要不可欠であると解釈されるべきではない。また、ここでの冠詞“a”は1つ以上の項目を含むものと意図される。さらに、“based on”(基づいて)とのフレーズは、他の明示的な説明が無い限り、「少なくとも部分的に基づく」ことを意味するものと意図される。