KR20150032190A - 어플리케이션 데이터를 관리하는 방법 및 디바이스 - Google Patents

어플리케이션 데이터를 관리하는 방법 및 디바이스 Download PDF

Info

Publication number
KR20150032190A
KR20150032190A KR20140121847A KR20140121847A KR20150032190A KR 20150032190 A KR20150032190 A KR 20150032190A KR 20140121847 A KR20140121847 A KR 20140121847A KR 20140121847 A KR20140121847 A KR 20140121847A KR 20150032190 A KR20150032190 A KR 20150032190A
Authority
KR
South Korea
Prior art keywords
data set
application data
application
distributed
distributed system
Prior art date
Application number
KR20140121847A
Other languages
English (en)
Other versions
KR101908988B1 (ko
Inventor
브루스 마티어스
로젠그렌 로버트
Original Assignee
엑시스 에이비
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엑시스 에이비 filed Critical 엑시스 에이비
Publication of KR20150032190A publication Critical patent/KR20150032190A/ko
Application granted granted Critical
Publication of KR101908988B1 publication Critical patent/KR101908988B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C9/00Individual registration on entry or exit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Selective Calling Equipment (AREA)

Abstract

디바이스(115)는 분산 물리 접근 제어 시스템(110)에 있는 물리 접근 제어기(115)에 대응할 수 있다. 분산 시스템에 있는 디바이스는 어플리케이션 데이터세트로 접근하는 어플리케이션에 의한 요청을 감지하고, 상기 어플리케이션 데이터세트에 대한 식별자가 상기 분산 시스템(110)의 분산 시스템 데이터세트에 리스트되어 있는지를 판단하는 로직(210)을 포함하되, 여기서 상기 어플리케이션 데이터세트는 분산 데이터세트에 대응한다.
추가적으로, 어플리케이션 데이터세트가 상기 분산 시스템(110)에 존재하고 있지 않는 것으로 판단한 것에 대한 응답으로, 상기 로직은(210)은 상기 분산 시스템(110)에 상기 어플리케이션 데이터세트를 생성하고, 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는 것으로 판단한 것에 대한 응답으로, 상기 어플리케이션 데이터세트와 관련된 디바이스(115)를 포함하는 데이터세트 그룹으로의 참여 요청을 상기 분산 시스템(110)에 있는 다른 디바이스(115)에게 송신할 수 있다.

Description

어플리케이션 데이터를 관리하는 방법 및 디바이스{Method and device for managing application data}
본 발명은 접근 제어 시스템에 관한 것으로서, 더욱 상세하게는 접근 제어 시스템에서의 어플리케이션 데이터 관리에 관한 것이다.
분산 시스템은 일련의 작업을 성취하기 위하여 그 동작을 통신하고 조정하는 구성요소를 포함할 수 있다. 예를 들어, 알고리즘 해결을 위한 조정을 수행하기 위하여 분산 시스템의 컴퓨터는 네트워크를 통하여 통신할 수 있다. 데이터 및 자원 관리 또는 프로세싱 단계 동기화와 같은 독립된 컴퓨터에서의 동작을 동시에 성공적으로 조정하기 위하여, 분산 알고리즘의 구현이 필요할 수 있다. 분산 시스템의 구성요소를 조정하기 위하여 다양한 분산 알고리즘이 발전되어 왔다.
본 발명은 접근 제어 시스템에서의 어플리케이션 데이터를 관리하는데 그 목적이 있다.
본 발명의 실시예에 따라, 분산 시스템의 디바이스에 의하여 수행되는 어플리케이션 데이터를 관리하는 방법은 어플리케이션 데이터세트로 접근하는 어플리케이션에 의한 요청을 상기 디바이스가 감지하는 단계로서, 상기 어플리케이션 데이터세트는 분산 데이터세트에 대응하고; 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는지를 상기 디바이스가 판단하는 단계; 상기 어플리케이션 데이터세트가 상기 분산 시스템 데이터세트에 존재하는 것으로 판단한 것에 대한 응답으로 상기 디바이스가 상기 분산 시스템에 상기 어플리케이션 데이터세트를 생성하는 단계; 및 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는 것으로 판단한 것에 대한 응답으로, 상기 어플리케이션 데이터세트와 관련된 디바이스를 포함하는 데이터세트 그룹으로의 참여 요청을 상기 디바이스가 상기 분산 시스템의 다른 디바이스에게 송신하는 단계를 포함한다.
또한, 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는지를 상기 디바이스가 판단하는 단계는 상기 분산 시스템 데이터세트에 있는 분산 데이터세트의 식별자 리스트에 접근하는 단계; 및 상기 분산 데이터세트의 식별자에 대한 리스트가 상기 요청된 어플리케이션 데이터세트에 대한 식별자를 포함하는지 판단하는 단계를 포함한다.
또한, 본 발명의 실시예에 따른 방법은 상기 어플리케이션 데이터세트를 생성한 것에 대한 응답으로, 상기 어플리케이션의 정보를 상기 생성된 어플리케이션 데이터세트에 추가하는 단계를 포함할 수 있다.
또한, 본 발명의 실시예에 따른 방법은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 디바이스가 상기 데이터세트 그룹에 추가되어 있다고 하는 통지를 수신하는 단계; 상기 분산 시스템에 있는 상기 다른 디바이스로부터 상기 어플리케이션 데이터세트를 수신하는 단계; 및 상기 수신된 어플리케이션 데이터세트를 상기 디바이스에 저장하는 단계를 포함할 수 있다.
또한, 상기 수신된 어플리케이션 데이터세트는 상기 데이터세트 그룹의 멤버인 상기 디바이스의 리스트를 포함하되, 상기 방법은 상기 어플리케이션 데이터세트로 어플리케이션 데이터를 추가하기 위하여 상기 데이터세트 그룹의 멤버인 상기 디바이스로 제안을 송신하는 단계; 상기 제안을 송신한 것에 대한 응답으로, 상기 어플리케이션 데이터를 상기 어플리케이션 데이터세트에 추가하기 위한 합의를 획득하는 단계; 상기 합의를 획득한 것에 대한 응답으로, 상기 어플리케이션 데이터를 상기 어플리케이션 데이터세트에 추가하는 단계를 더 포함할 수 있다.
또한, 본 발명의 실시예에 따른 방법은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로의 참여 요청을 수신하는 단계; 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득하는 단계; 및 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득한 것에 대한 응답으로, 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 단계를 포함할 수 있다.
또한, 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득하는 단계는 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스에게 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로 상기 다른 디바이스를 추가하는 것에 대한 제안을 송신하는 단계; 및 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 표결의 정족수를 획득하는 단계를 포함할 수 있다.
또한, 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 단계는 상기 다른 디바이스로 상기 어플리케이션 데이터세트를 송신하는 단계; 및 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 대한 합의에 요구되는 정족수를 조정하는 단계를 포함할 수 있다.
또한, 본 발명의 실시예에 따른 방법은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 생성된 어플리케이션 데이터세트의 어플리케이션 데이터에 대한 변경 요청을 수신하는 단계; 및 상기 생성된 어플리케이션 데이터세트의 상기 어플리케이션 데이터를 변경하라는 합의를 획득한 것에 대한 응답으로, 상기 생성된 어플리케이션 데이터세트의 상기 어플리케이션 데이터를 변경하는 단계를 포함할 수 있다.
또한, 본 발명의 실시예에 따른 방법은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에서의 제거 요청을 수신하는 단계; 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로부터 상기 다른 디바이스를 제거하라는 합의를 획득하는 단계; 및 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로부터 상기 다른 디바이스를 제거하라는 합의를 획득한 것에 대한 응답으로, 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로부터 상기 다른 디바이스를 제거하는 단계를 포함할 수 있다.
또한, 상기 분산 시스템은 분산 물리 접근 제어 시스템을 포함하고, 상기 디바이스 및 상기 다른 디바이스는 물리 접근 제어 유닛에 대응한다.
본 발명의 다른 실시예에 따른 어플리케이션 데이터를 관리하는 디바이스는 어플리케이션 데이터세트로 접근하는 어플리케이션에 의한 요청을 감지하되, 여기서 상기 어플리케이션 데이터세트는 분산 데이터세트에 대응하고; 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는지를 판단하고; 상기 어플리케이션 데이터세트가 상기 분산 시스템 데이터세트에 존재하는 것으로 판단한 것에 대한 응답으로 상기 분산 시스템에 상기 어플리케이션 데이터세트를 생성하며; 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는 것으로 판단한 것에 대한 응답으로, 상기 어플리케이션 데이터세트와 관련된 디바이스를 포함하는 데이터세트 그룹으로의 참여 요청을 상기 분산 시스템의 다른 디바이스에게 송신하는 로직을 포함할 수 있다.
또한, 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는 것으로 상기 로직이 판단한 경우, 추가적으로 상기 로직은 상기 분산 시스템 데이터세트에 있는 분산 데이터세트의 식별자 리스트에 접근하고; 상기 분산 데이터세트의 리스트가 상기 요청된 어플리케이션 데이터세트에 대한 식별자를 포함하는지 판단할 수 있다.
또한, 추가적으로 상기 로직은 상기 어플리케이션 데이터세트를 생성한 것에 대한 응답으로, 상기 어플리케이션의 정보를 상기 생성된 어플리케이션 데이터세트에 추가할 수 있다.
또한, 추가적으로 상기 로직은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 디바이스가 상기 데이터세트 그룹에 추가되어 있다고 하는 통지를 수신하고; 상기 분산 시스템에 있는 상기 다른 디바이스로부터 상기 어플리케이션 데이터세트를 수신하며; 상기 수신된 어플리케이션 데이터세트를 상기 디바이스에 저장할 수 있다.
또한, 상기 수신된 어플리케이션 데이터세트는 상기 데이터세트 그룹의 멤버인 상기 디바이스의 리스트를 포함하되, 추가적으로 상기 로직은 상기 어플리케이션 데이터세트로 어플리케이션 데이터를 추가하기 위하여 상기 데이터세트 그룹의 멤버인 상기 디바이스로 제안을 송신하고; 상기 제안을 송신한 것에 대한 응답으로, 상기 어플리케이션 데이터를 상기 어플리케이션 데이터세트에 추가하기 위한 합의를 획득하며; 상기 합의를 획득한 것에 대한 응답으로, 상기 어플리케이션 데이터를 상기 어플리케이션 데이터세트에 추가할 수 있다.
또한, 추가적으로 상기 로직은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로의 참여 요청을 수신하고; 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득하며; 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득한 것에 대한 응답으로, 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가할 수 있다.
또한, 추가적으로 상기 로직은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에서의 제거 요청을 수신하고; 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로부터 상기 다른 디바이스를 제거하라는 합의를 획득하며; 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로부터 상기 다른 디바이스를 제거하라는 합의를 획득한 것에 대한 응답으로, 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로부터 상기 다른 디바이스를 제거할 수 있다.
또한, 상기 분산 시스템은 분산 물리 접근 제어 시스템을 포함하고, 상기 디바이스 및 상기 다른 디바이스는 물리 접근 제어 유닛에 대응한다.
본 발명의 또 다른 실시예에 따른 분산 시스템은 복수의 물리 접근 제어 디바이스를 포함할 수 있는데, 여기서 상기 복수의 물리 접근 제어 디바이스 중 특정 하나는 어플리케이션 데이터세트로 접근하는 어플리케이션에 의한 요청을 감지하되, 여기서 상기 어플리케이션 데이터세트는 분산 데이터세트에 대응하고; 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는지를 판단하고; 상기 어플리케이션 데이터세트가 상기 분산 시스템 데이터세트에 존재하는 것으로 판단한 것에 대한 응답으로 상기 분산 시스템에 상기 어플리케이션 데이터세트를 생성하며; 상기 어플리케이션 데이터세트가 상기 분산 시스템에 존재하는 것으로 판단한 것에 대한 응답으로, 상기 어플리케이션 데이터세트와 관련된 디바이스를 포함하는 데이터세트 그룹으로의 참여 요청을 상기 분산 시스템의 다른 디바이스에게 송신하는 로직을 포함할 수 있다.
도 1은 본 발명의 실시예에 따른 예시적인 환경을 나타낸 블록도이다.
도 2는 도 1에 도시된 분산 시스템 유닛의 예시적인 구성요소를 나타낸 블록도이다.
도 3a 및 도 3b는 도 1에 도시된 분산 시스템 유닛의 예시적인 기능적 구성요소를 나타낸 블록도이다.
도 4a는 도 3b에 도시된 시스템 데이터세트에 저장될 수 있는 예시적인 정보를 나타낸 도면이다.
도 4b는 도 3b에 도시된 어플리케이션 데이터세트에 저장될 수 있는 예시적인 정보를 나타낸 도면이다.
도 5는 본 발명의 하나 이상의 실시예에 따라 분산 제어 시스템의 데이터세트 그룹에 참여하거나 어플리케이션 데이터세트에 접근하는 것을 나타낸 흐름도이다.
도 6은 본 발명의 하나 이상의 실시예에 따라 분산 제어 시스템의 어플리케이션 데이터세트에 어플리케이션 데이터를 추가하는 것을 나타낸 흐름도이다.
도 7은 본 발명의 하나 이상의 실시예에 따라 분산 제어 시스템의 어플리케이션 데이터세트와 관련된 데이터세트 그룹에 시스템 유닛이 추가되도록 하는 요청을 처리하는 것을 나타낸 흐름도이다.
도 8은 도 1에 도시된 분산 제어 시스템의 예시적인 물리 레이아웃을 나타낸 평면도이다.
도 9는 도 1에 도시된 분산 시스템의 예시적인 물리 레이아웃을 나타낸 평면도이다.
도 10a 내지 도 10c는 본 발명의 하나 이상의 실시예에 따라 예시적 어플리케이션 데이터세트의 시나리오를 나타낸 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 서로 다른 도면에 포함된 동일 참조 부호는 동일 또는 유사한 구성요소를 지칭한다.
분산 제어 시스템은 분산 물리 접근 제어 시스템을 포함할 수 있다. 물리 접근 제어 시스템은 하나 이상의 접근 제어 유닛을 포함할 수 있는데, 각 접근 제어 유닛은 시설의 영역으로의 물리적 접근을 제어한다. 예를 들어, 접근 제어 유닛은 사용자로부터 인증서를 획득하고, 사용자의 인증서가 인증된 경우 도어의 잠금을 해제할 수 있다. 다른 실시예에 따르면, 분산 제어 시스템은 분산 빌딩 관리 시스템, 분산 모니터링 시스템, 분산 보안 시스템 및/또는 다른 종류의 분산 제어 시스템을 포함할 수 있다.
분산 제어 시스템은 분산 알고리즘을 이용하여 분산 컴퓨팅 동작을 수행할 수 있다. 예를 들어, 분산 제어 시스템은 분산 데이터베이스를 관리할 수 있다. 분산 알고리즘은 합의 기반일 수 있다. 합의 알고리즘은 동작이 수행되기 이전에 분산 시스템에 있는 노드간의 합의를 성취하는데 이용된다. 예를 들어, 일 실시예에 다르면 분산 데이터세트를 업데이트하기 위하여, 분산 시스템에 있는 노드들은 업데이트를 수행하기 위하여 합의하여야 한다. 합의는 제안된 동작(예를 들어, 분산 데이터베이스에 대한 변경)에 (예를 들어, 모두, 정족수만큼) 동의하는 노드에 대응한다. 제안된 동작에 대한 정족수가 획득된 경우 합의에 이를 수 있다. 노드의 대다수가 제안된 동작에 동의하는 경우 합의에 이를 수 있다. 변경에 동의하는 대다수의 노드를 요구함에 따라, 예를 들어 2개의 충돌하는 제안된 변경이 고려될 때, 적어도 하나의 노드가 2개의 제안된 변경을 수신하고, 먼저 수신된 제안 변경을 선택하고 동의하는 것이 보장된다. 다른 실시예에 따르면, 노드는 제안된 변경 중 하나를 선택하고 동의함에 있어서 (먼저 수신된 제안 변경에 따른 것이 아닌) 다른 기준을 이용할 수 있다.
분산 데이터세트는 분산 시스템에 있는 노드 중 적어도 일부에 의하여 이용될 수 있다. 예를 들어, 어플리케이션은 어플리케이션 분산 데이터세트를 이용하고, 어플리케이션은 분산 시스템에 있는 노드 중 적어도 일부에 설치될 수 있다. 특정 어플리케이션 데이터세트를 이용하는 노드 중 적어도 일부는 이하 데이터세트 그룹이라 한다. 본 발명에서 제시되는 구현 예들은 특정 어플리케이션과 관련된 분산 데이터세트를 관리하는 것에 관한 것이다. 분산 시스템에 있는 디바이스는 어플리케이션과 관련된 분산 데이터세트에 대응하는 어플리케이션 데이터세트로 접근하는 어플리케이션으로부터의 요청을 감지하고, 어플리케이션 데이터세트가 분산 시스템에 존재하는지를 판단할 수 있다. 어플리케이션 데이터세트가 존재하지 않는 경우 어플리케이션 데이터세트가 생성될 수 있다. 어플리케이션 데이터세트가 존재하는 경우, 어플리케이션 데이터세트와 관련된 디바이스를 포함하는 데이터세트 그룹으로의 참여 요청이 분산 시스템에 있는 다른 디바이스로 송신될 수 있다.
분산 시스템에 있는 다른 디바이스는 데이터세트 그룹에 추가되고자 하는 요청 디바이스로부터 요청을 수신하고, 요청 디바이스를 데이터세트 그룹에 추가하는 것에 대한 제안을 발생시킬 수 있다. 데이터세트 그룹에 있는 다른 디바이스는 제안에 동의할 수 있으며, 합의에 이른 경우 요청 디바이스는 데이터세트 그룹에 추가될 수 있게 된다. 그리하여, 요청 디바이스는 데이터세트 그룹과 관련된 어플리케이션 데이터세트를 수신하고, 및/또는 데이터세트 그룹과 관련된 어플리케이션 데이터세트에 어플리케이션을 추가하거나 및/또는 다른 변경이 반영되도록 할 것을 제안할 수 있다.
도 1은 아래에 설명된 시스템 및/또는 방법이 구현되는 예시적인 환경을 나타낸 블록도이다. 도 1에 도시된 바와 같이, 환경(100)은 분산 제어 시스템(100)(예를 들어, 분산 물리 접근 제어 시스템), 네트워크(120) 및 관리 디바이스(130)를 포함할 수 있다.
분산 제어 시스템(DCS; Distributed Control System)(110)은 시스템 유닛들(115-A 내지 115-N)(집합적으로 "시스템 유닛들(115)"이라 하고, 개별적으로 "시스템 유닛(115)"이라 한다)을 포함하는 분산 연산 시스템을 포함할 수 있다. 시스템 유닛(115)는 임베디스 시스템으로 구현될 수 있다. 몇몇 구현에서 시스템 유닛(115)는 물리 접근 제어 디바이스를 포함할 수 있다. 예를 들어, 시스템 유닛(115)은 룸(room) 또는 그룹으로 이루어진 룸과 같은 보안 영역으로의 접근을 제어하는 접근 제어기를 포함할 수 있다. 시스템 유닛(115)는 리더 디바이스를 통하여 인증서(예를 들어, 접근 카드 인증서)를 수신하고, 인증서가 진짜이고 보안 영역으로의 접근 권한이 있는 것인지 판단할 수 있다. 만일 그렇다면, 접근 제어기는 도어에 대한 잠금을 해제하는 명령을 발행하거나 보안 영역으로의 접근을 허용하기 위한 다른 동작을 수행할 수 있다. 다른 실시예에 따르면, 시스템 유닛(115)은 모니터링 디바이스, 기계의 동작을 제어하는 디바이스와 같은 서로 다른 종류의 보안 디바이스를 포함할 수 있다. 다른 실시예에 따르면, 시스템 유닛(115)은 또 다른 종류의 임베디드 시스템을 포함할 수 있다.
분산 제어 시스템(110)은 하나 이상의 분산 데이터세트를 포함할 수 있다. 분산 데이터세트는 다수의 디바이스와 관련된 데이터세트를 포함한다. 일 실시예에 따르면, 다수의 디바이스는 데이터세트에 대한 변경을 위하여 상호간에 통신하고 조정한다. 몇몇 구현에서 분산 데이터세트는 분산 데이터세트와 관련된 각 디바이스에 의하여 보관되고, 디바이스들에 의한 변경 동의가 있으면 각 디바이스에 의하여 분산 데이터세트에 대한 변경이 적용된다. 다른 실시예에 따르면, 분산 데이터세트와 관련된 모든 디바이스가 실제 분산 데이터세트를 저장하는 것은 아니다.
몇몇 실시예에 따르면, 분산 데이터세트(예를 들어, 합의 기반의 분산 데이터베이스)에 대한 변경을 수행하기 위하여 합의에 이르게 된다. 다른 실시예에 따르면, 합의 없이 분산 데이터세트에 대한 변경이 수행될 수 있다. 분산 데이터세트는 모든 시스템 유닛들(115)과 관련되거나 시스템 유닛들(115)의 서브셋과 관련될 수 있다. 시스템 유닛(115)은 합의 기반의 분산 데이터세트의 변경을 제안할 수 있다. 분산 데이터세트와 관련된 시스템 유닛들(115)의 정족수에 의하여 변경이 수용되면, 합의에 이를 수 있게 되고, 각 관련 시스템 유닛(115)의 분산 데이터세트로 변경이 전파될 수 있다. 따라서, 관련 시스템 유닛들(115)의 정족수가 변경에 동의하면, 분산 데이터세트의 변경에 대한 합의에 이를 수 있게 된다. 정족수는 관련 시스템 유닛들(115)의 최소 다수(smallest majority)에 대응할 수 있다. 따라서, 분산 데이터세트가 N개의 시스템 유닛들(115)과 관련된 경우 N/2+1개의 관련 시스템 유닛들(115)이 변경에 동의하고 N이 짝수이거나, (N-1)/2+1개의 관련 시스템 유닛들(115)이 변경에 동의하고 N이 홀수이면 정족수를 만족한다. 정족수를 만족하기 위하여 최소 다수를 요구함에 따라 2개의 상충되는 제안이 고려될 때 적어도 하나의 시스템 유닛(115)이 2개의 제안을 수신하고 합의에 따라 제안들 중 하나를 선택할 수 있게 된다. 몇몇 실시예에 따르면, 시스템 유닛(115)은 첫 번째로 수신한 제안을 선택한다. 다른 실시예에 따르면, 제안은 다른 기준이 이용되어 선택될 수 있다.
몇몇 실시예에 따르면, 분산 데이터세트와 관련된 모든 시스템 유닛들(115)은 분산 데이터세트를 저장할 수 있다. 예를 들어, 분산 데이터세트는 접근 규칙을 포함할 수 있는데, 접근 규칙은 분산 데이터세트와 관련된 모든 시스템 유닛에게 유효할 수 있다. 따라서, 일 실시예에 따르면 하나 이상의 분산 데이터세트의 결과에 따라 분산 제어 시스템(110)은 서버 디바이스와 같은 중앙 제어 디바이스가 아닌 분권화된 시스템에 대응할 수 있다. 다른 실시예에 따르면, 분산 제어 시스템(110)은 분권화된 시스템 및 (서버 디바이스와 같은) 중앙 제어 디바이스를 모두 포함할 수 있다. 일 실시예에 따르면, 분산 데이터세트에 대한 변경은 어떠한 시스템 유닛(115)에 의해서도 설정될 수 있고, 분산 데이터세트와 관련된 다른 시스템 유닛들(115)에게 전파될 수 있다. 또한, 단일 지점에서의 오류가 방지될 수 있는 것과 같이, 분산 제어 시스템(110)은 디바이스 오류에 대한 강인함을 나타낼 수 있다. 예를 들어, 특정 시스템 유닛(115)이 오동작하면 다른 시스템 유닛들(115)은 데이터의 손실 없이(또는 최소한의 데이터 손실로) 동작을 지속할 수 있다. 또한, 분산 제어 시스템(110)은 동적으로 변경될 수 있다. 예를 들어, 어플리케이션은 어느 시점에서도 추가될 수 있고, 새로운 데이터세트는 필요한 만큼 시스템 유닛들(115)에 저장될 수 있다. 다른 실시예에 따르면, 분산 데이터세트와 관련된 모든 시스템 유닛들(115)이 분산 데이터세트를 저장하는 것은 아니다.
분산 데이터 시스템(110)은 또한 분산되지 않은 데이터세트를 포함할 수 있다. 예시적인 것으로서, 제 1 시스템 유닛(115)은 다른 시스템 유닛(115) 어디에도 포함되어 있지 않은 로컬 데이터세트를 포함할 수 있다. 다른 예시적인 것으로서, 제 1 시스템 유닛(115)은 미러링(mirroring)과 같이 비분산 형태의 제 2 시스템 유닛(115)으로 복제된 로컬 데이터세트를 포함할 수 있다. 또 다른 예시적인 것으로서, 제 1 시스템 유닛(115)은 제 1 버전의 로컬 데이터세트를 포함할 수 있고, 제 2 시스템 유닛(115)은 제 2 버전의 로컬 데이터세트를 포함할 수 있는데, 여기서 제 1 시스템 유닛(115)은 제 1 버전의 로컬 데이터세트를 보관하고, 제 2 시스템 유닛(115)은 제 2 버전의 로컬 데이터세트를 보관한다. 또 다른 예시적인 것으로서, 제 1 시스템 유닛(115)은 분산 데이터세트에서 제 1 로컬 데이터세트를 추출하고, 제 2 시스템 유닛(115)은 분산 데이터세트에서 제 2 로컬 데이터세트를 추출할 수 있는데, 여기서 제 1 로컬 데이터세트는 제 2 로컬 데이터세트와 상이한 것이다.
네트워크(120)에 의하여 시스템 유닛들(115)은 서로간에 통신할 수 있으며, 관리 디바이스(130)가 특정 시스템 유닛들(115)과 통신할 수 있다. 네트워크(120)는 하나 이상의 회선 교환 방식의 네트워크(circuit-switched network) 및/또는 패킷 교환 방식의 네트워크(packet-switched network)를 포함할 수 있다. 예를 들어, 네트워크(120)는 근거리 통신망(LAN; Local Area Network), 광대역 통신망(WAN; Wide Area Network), 거대 도시 통신망(MAN; Metropolitan Area Network), 공중전화 교환망(PSTN; Public Switched Telephone Network), 애드혹(adhoc) 네트워크, 인트라넷(intranet), 인터넷(Internet), 광섬유(fiber optic) 기반 네트워크, 무선 네트워크 및/또는 이러한 네트워크 또는 다른 네트워크간의 조합을 포함할 수 있다.
관리 디바이스(130)는 관리자로 하여금 특정 시스템 유닛(115)에 연결하여 분산 제어 시스템(110)을 설정하고, 분산 제어 시스템(110)의 설정을 변경하고, 분산 제어 시스템(110)으로부터 정보를 수신하며, 그리고/또는 분산 제어 시스템(110)을 관리할 수 있도록 한다. 관리 디바이스(130)는 하나 이상의 시스템 유닛들(115)과의 통신을 위하여 설정된 어떠한 디바이스라도 포함할 수 있다. 예를 들어, 관리 디바이스(130)는 휴대용 통신 디바이스(예를 들어, 휴대폰, 스마트폰, 패블릿 디바이스(phablet device), GPS(Global Positioning System) 디바이스, 및/또는 다른 종류의 무선 디바이스); 개인용 컴퓨터 또는 워크스테이션; 서버 디바이스; 랩탑; 태블릿, 또는 다른 종류의 휴대용 컴퓨터; 및/또는 통신 기능을 구비한 특정 종류의 디바이스를 포함할 수 있다.
도 1이 환경(100)의 예시적인 구성요소를 나타내고 있으나, 다른 실시예에 따르면 환경(100)은 도 1에 도시된 것과는 다르게 적은 수의 구성요소, 다른 구성요소, 다르게 배치된 구성요소, 또는 추가 구성요소를 포함할 수 있다. 추가적으로 또는 선택적으로, 환경(100)(또는 디바이스들의 그룹)에 포함된 디바이스는 환경(100) 내에서 하나 이상의 다른 디바이스에 의하여 수행되도록 명시된 기능을 수행할 수 있다. 예를 들어, 몇몇 실시예에 따르면 시스템 유닛들(115)은 입력 및/또는 출력 디바이스(예를 들어, 키보드/키패드 및 디스플레이, 터치스크린 등)를 포함하고, 관리 디바이스(130)는 필요하지 않을 수 있다.
도 2는 시스템 유닛(115)의 예시적인 구성요소를 나타낸 블록도이다. 도 2에 도시된 바와 같이, 시스템 유닛(115)은 제어기(210) 및 하나 이상의 주변 디바이스(230)를 포함할 수 있다. 제어기(210)는 시스템 유닛(115)의 동작을 제어하고 다른 시스템 유닛들(115)과 통신하고, 관리 디바이스(130)와 통신하고, 그리고/또는 주변 디바이스(230)를 제어할 수 있다. 제어기(210)는 버스(212), 프로세서(214), 메모리(216), 네트워크 인터페이스(218), 주변기기 인터페이스(220) 및 하우징(222)을 포함할 수 있다.
버스(212)는 제어기(210)의 구성요소간 통신을 가능하게 하는 경로를 포함할 수 있다. 프로세서(214)는 명령을 인터프리트하고 실행하는 소정 종류의 싱글 코어 프로세서, 멀티 코어 프로세서, 마이크로 프로세서, 래치 기반 프로세서(latch-based processor), 및/또는 처리 로직 (또는, 프로세서, 마이크로 프로세서, 및/또는 처리 로직의 패밀리)를 포함할 수 있다. 다른 실시예에 따르면, 프로세서(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)는 유선 통신 링크(예를 들어, 도전성 와이어, 트위스트 페어 케이블(twisted pair cable), 동축 케이블, 송전선, 광섬유 케이블 및/또는 도파관 등), 무선 통신 링크(예를 들어, 무선 주파수(RF; Radio Frequency), 적외선, 및/또는 비주얼 옵틱(visual optics) 등) 또는 무선 및 유선 통신 링크의 조합을 통하여 제어기(210)가 다른 디바이스 및/또는 시스템과 통신할 수 있도록 하는 송수신기(예를 들어, 송신기 및/또는 수신기)를 포함할 수 있다. 네트워크 인터페이스(218)는 기저대역 신호를 무선 주파수 신호로 변환하는 송신기 및/또는 무선 주파수 신호를 기저대역 신호로 변환하는 수신기를 포함할 수 있다. 네트워크 인터페이스(218)는 무선 주파수 신호를 송신 및 수신하기 위하여 안테나와 커플링 될 수 있다.
네트워크 인터페이스(218)는 다른 디바이스로의 데이터 송신을 수행하는 입력 및/또는 출력 포트, 입력 및/또는 출력 시스템으로 구성된 논리 구성요소, 및/또는 다른 입력 및 출력 구성요소를 포함할 수 있다. 예를 들어, 네트워크 인터페이스(218)는 유선 통신을 위한 네트워크 인터페이스 카드(예를 들어, 이더넷 카드) 및/또는 무선 통신을 위한 무선 네트워크 인터페이스(예를 들어, 와이파이) 카드를 포함할 수 있다. 네트워크 인터페이스(218)는 데이터를 특정 형태에서 다른 형태로 변환하기 위하여 케이블을 통한 통신을 위하여 범용 직렬 버스(USB; Universal Serial Bus) 포트를 포함하고, 블루투스 무선 인터페이스, RFID(Radio-Frequency Identification) 인터페이스, 근거리 무선 통신(NFC; Near-Field Communications) 인터페이스 및/또는 다른 종류의 인터페이스를 포함할 수 있다.
주변기기 인터페이스(220)는 하나 이상의 주변 디바이스(230)와 통신하도록 설정될 수 있다. 예를 들어, 주변기기 인터페이스(220)는 주변 디바이스(230)로의 데이터 송신을 수행하는 입력 및/또는 출력 포트, 입력 및/또는 출력 시스템 및/또는 다른 입력 및 출력 구성요소로 구성된 하나 이상의 논리 구성요소를 포함할 수 있다. 예시적인 것으로서, 주변기기 인터페이스(220)는 위건드(Wiegand) 프로토콜 및/또는 RS-485 프로토콜 및/또는 다른 종류의 프로토콜과 같은 직렬 주변기기 인터페이스 버스 프로토콜(Serial Peripheral Interface Bus protocol)을 이용하여 주변 디바이스(230)와 통신할 수 있다. 또 다른 예시적인 것으로서, 주변기기 인터페이스(220)는 서로 다른 종류의 프로토콜을 이용할 수 있다. 일 실시예에 따르면, 네트워크 인터페이스(218)는 주변 디바이스(230)를 제어기(210)에 커플링하는 주변기기 인터페이스로도 동작할 수 있다.
하우징(222)은 제어기(210)의 구성요소를 수용하고, 제어기(210)의 구성요소를 환경으로부터 보호할 수 있다. 일 실시예에 따르면, 하우징(222)은 하나 이상의 주변 디바이스(230)를 포함할 수 있다. 다른 실시예에 따르면, 하우징(222)은 관리 디바이스(130)를 포함할 수 있다. 하우징(222)은 다수의 시스템 유닛들(115) 및/또는 다수의 제어기(210)로 구성된 시스템에 있는 다른 시스템 유닛들(115) 및/또는 제어기(210)에 대한 하나의 시스템 유닛(115) 및/또는 제어기(210)의 경계를 정의할 수 있다.
후술하는 바와 같이, 제어기(210)는 분산 시스템에 있는 어플리케이션 데이터세트 및/또는 데이터세트 그룹과 관련된 특정 동작을 수행할 수 있다. 제어기(210)는 ASIC의 배선에 의한 회로(hardwired logic)를 통하여 이러한 동작을 수행할 수 있다. 제어기(210)는 또한 (또는 선택적으로) 메모리(216)과 같은 컴퓨터 판독 가능 매체에 기록되어 있는 소프트웨어 명령을 실행하는 프로세서(214)에 대한 응답으로 이러한 동작을 수행할 수 있다. 컴퓨터 판독 가능 매체는 일시적이지 않은(non-transitory) 메모리 디바이스를 포함한다. 메모리 디바이스는 단일 물리 메모리 디바이스 또는 복수 개로 확장된 물리 메모리 디바이스 내에 구현될 수 있다. 소프트웨어 명령은 다른 컴퓨터 판독 매체 또는 다른 디바이스에서 판독되어 메모리(216)에 입력될 수 있다. 메모리(216)에 기록된 소프트웨어 명령에 의하여 프로세서(214)는 본 문서에 기재된 처리를 수행할 수 있다. 따라서, 본 문서에 기재된 구현은 하드웨어 회로 및 소프트웨어의 특정 조합에 한정되는 것이 아니다.
주변 디바이스(230)는 제어기(210)에게 정보를 제공하고, 제어기(210)에 의하여 제어되며, 그리고/또는 제어기(210)와 통신하는 하나 이상의 디바이스를 포함할 수 있다. 예를 들어, 주변 디바이스(230)는 리더 디바이스(240), 잠금 디바이스(250), 센서(260) 및/또는 액추에이터(270)를 포함할 수 있다. 도 2는 하나의 리더 디바이스(240), 하나의 잠금 디바이스9250), 하나의 센서(260) 및 하나의 액추에이터(270)를 도시하고 있으나, 이는 예시적인 것으로서, 실제로 주변 디바이스(230)는 다수의 리더 디바이스(240), 다수의 잠금 디바이스(250), 다수의 센서(260) 및/또는 다수의 액추에이터(270)를 포함할 수 있다. 몇몇 실시예에 따르면, 주변 디바이스(230)는 도 2에 도시된 것과 같은 하나 이상의 디바이스를 포함하지 않을 수 있다. 추가적으로 또는 선택적으로, 주변 디바이스(230)는 도 2에 도시되지 않은 다른 종류의 보안 디바이스를 포함할 수 있다.
리더 디바이스(240)는 사용자로부터 인증서를 판독하여 제어기(210)로 해당 인증서를 제공하는 디바이스를 포함할 수 있다. 예를 들어, 리더 디바이스(240)는 글자와 숫자로 구성된(alphanumeric) 개인 식별 번호(PIN; Personal Identification Number)를 사용자로부터 입력 받도록 설정된 키패드 또는 키보드; 자기 띠 또는 RFID 태그와 같은 다른 종류의 저장 디바이스에 코드를 저장하는 카드를 판독하도록 설정된 카드 리더기; 사용자의 지문을 판독하도록 설정된 지문 리더기; 사용자의 홍채를 판독하도록 설정된 홍채 리더기; 사용자의 음성 서명을 녹음하도록 설정된 마이크로폰 및 음성 서명 식별기(voice signature identifier); NFC 리더기; 및/또는 다른 종류의 리더 디바이스를 포함할 수 있다. 리더 디바이스(240)는 인증서를 제공하는 소정 종류의 보안 디바이스를 포함하고, 하나 이상의 센서 디바이스를 포함할 수 있는데, 그러한 센서 디바이스는 아래에 기재된 센서(260)를 참조한다. 예를 들어, 리더 디바이스(240)는 얼굴 인식에 이용되는 카메라 및/또는 음성 인식에 이용되는 마이크로폰을 포함할 수 있다.
잠금 디바이스(250)는 제어기(210)에 의하여 제어되는 잠금 수단을 포함할 수 있다. 잠금 디바이스(250)는 도어, 창문, HVAC(Heating, Ventilating, and Air Conditioning), 및/또는 보안 영역의 입구에 대한 다른 종류의 접근을 잠글 수 있다(예를 들어, 도어가 열리거나 닫히는 것을 방지할 수 있다). 예를 들어, 잠금 디바이스(250)는 전자기 잠금 수단; 제어기(210)에 의하여 제어되는 모터가 구비된 기계식 잠금 수단; 전자 기계식 잠금 수단; 및/또는 다른 종류의 잠금 수단을 포함할 수 있다. 또한, 잠금 디바이스(250)는 기계, 운송 수단, 엘리베이터 및/또는 전기 디바이스의 동작에 대한 잠금/잠금 해제를 수행할 수 있다.
센서(260)는 센서 디바이스를 포함할 수 있다. 예시적인 것으로서, 센서(260)는 도어가 열려있는지 닫혀있는지를 감지하는 도어 센서; 가시광 모니터링 카메라; 적외선 모니터링 카메라, 열 감지 모니터링 카메라, 및/또는 다른 종류의 모니터링 디바이스; 움직임 센서, 열 센서, 압력 센서, 및/또는 다른 종류의 알람 센서와 같은 알람 센서; 오디오 레코딩 디바이스(예를 들어, 마이크로폰); 시스템 유닛(115)의 내부에 구비된 위치 센서와 같은 접근 센서(tamper sensor); 및/또는 시스템 유닛(115)과 관련된 보안 영역 내에 위치하는 "퇴장 요청" 버튼; 및/또는 다른 종류의 센서 디바이스를 포함할 수 있다.
액추에이터(270)는 액추에이터 디바이스를 포함할 수 있다. 예시적인 것으로서, 액추에이터(270)는 조명 디바이스를 제어할 수 있다. 다른 예시적인 것으로서, 액추에이터(270)는 도난 경보 동작기; 메시지를 재생하거나 알람 신호를 발생하는 스피커; 디스플레이 디바이스; (예를 들어, 카메라 또는 다른 모니터링 디바이스의 시야 제어를 위하여) 센서(260)를 움직이는 모터; 도어, 창문, HVAC 및/또는 보안 영역과 관련된 또 다른 입구의 열림/닫힘을 위한 모터; 잠겨있거나 잠겨있지 않은 위치에서의 잠금 디바이스(250)를 보호하는 모터; 소화 디바이스(fire extinguishing device); 및/또는 다른 종류의 액추에이터 디바이스를 포함할 수 있다.
도 2는 시스템 유닛(115)의 예시적인 구성요소를 나타내고 있으나, 다른 실시예로서 시스템 유닛(115)은 도 2에 도시된 것과는 다르게 적은 수의 구성요소, 다른 구성요소, 추가 구성요소 또는 다르게 배치된 구성요소를 포함할 수 있다. 추가적으로 또는 선택적으로, 시스템 유닛(115)의 컴포넌트(또는 컴포넌트 그룹)는 시스템 유닛(115)의 하나 이상의 다른 컴포넌트에 의하여 수행되도록 명시된 작업 또는 작업들을 수행할 수 있다. 예를 들어, 몇몇 실시예에 따르면 주변기기 인터페이스(220)는 네트워크 인터페이스에 대응할 수 있다. 다른 예시적인 것으로서, 몇몇 실시예에 따르면 주변 디바이스(230)는 주변기기 인터페이스(220)보다는 네트워크 인터페이스(218)을 통하여 제어기(210)에 연결될 수 있다.
또한, 분산 제어 시스템(110)은 분산 제어 시스템에 대한 물리 접근을 포함하고 있으나, 다른 예로서 물리 접근이 아닌 방식으로 시스템이 제어될 수 있다. 이에 반하여, 분산 제어 시스템(110)은 도어를 개방 및/또는 폐쇄하거나 빌딩 또는 시설로의 물리적인 접근을 제어하는 제어 시스템과 같은 소정 종류의 물리 접근 제어 시스템을 (예를 들어, 동작 환경 내에) 포함할 수 있다. 분산 제어 시스템(110)은 또한 팬(fan)을 제어하고(예를 들어, 동작 개시 또는 동작 중지), 빌딩 관리 시스템의 알람을 개시하고(예를 들어, 실패 인증, 성공 인증 등), 또는 산업 자동화 시스템에서 로봇 팔을 제어하는 시스템을 포함할 수 있다.
도 3a 및 도 3b는 시스템 유닛(115)의 예시적인 기능적 구성요소를 나타낸 블록도이다. 시스템 유닛(115)의 기능적 구성요소는 예를 들어, 하나 이상의 ASIC의 배선에 의한 회로를 통하여 구현될 수 있다. 추가적으로 또는 선택적으로, 시스템 유닛(115)의 기능적 구성요소는 메모리(216)의 명령을 실행하는 프로세서(214)에 의하여 구현될 수 있다. 도 3a는 시스템 유닛(115)의 기능적 계층을 나타내고 있다. 도 3a에 도시된 바와 같이, 시스템 유닛(115)는 어플리케이션 프로그래밍 인터페이스(API; Application Programming Interface) 계층(310), 어플리케이션 계층(320), 분산 계층(340) 및 저장 계층(350)을 포함할 수 있다.
API 계층(310)은 예를 들어 관리 디바이스(310)와 통신하도록 설정된 API를 포함한다. 예를 들어, 관리자가 관리 디바이스(130)를 이용하여 시스템 유닛(115)에 로그인 한 경우, API 계층(310)은 관리 디바이스(130)와 통신하여 관리자를 인증할 수 있다. 다른 예로서, API 계층(310)은 관리 디바이스(130)와 통신하여 시스템 유닛(115)의 설정을 변경할 수 있다. API 계층(310)은 관리 디바이스(130)로부터 데이터를 수신하고, 해당 데이터를 분산 계층(340) 및/또는 저장 계층(350)에 제공할 수 있다. API 계층(310)은 또한 관리 디바이스(130)와 통신하여 어플리케이션 계층(320)에 어플리케이션을 설치할 수 있다. API 계층(310)은 서로 다른 관리자 종류를 처리하도록 설정될 수 있다. 예를 들어, API 계층(310)은 웹 서비스 관리자, 리눅스(Linux) 관리자, ONVIF(Open Network Video Interface Forum)를 처리하는 API, 및/또는 다른 종류의 API를 포함할 수 있다.
어플리케이션 계층(320)은 시스템 유닛(115)에 설치된 하나 이상의 어플리케이션을 포함할 수 있다. 도 3b는 실시예에 따른 어플리케이션을 나타내고 있다. 도 3b에 도시된 바와 같이, 어플리케이션 계층(320)은 접근 제어 로직 어플리케이션(322), 도어 제어 어플리케이션(324), 리더 제어 어플리케이션(326), 이벤트 처리 어플리케이션(328) 및/또는 어플리케이션(332)를 포함할 수 있다.
접근 제어 로직 어플리케이션(322)는 수신된 인증서 및 저장된 접근 규칙을 기초로 접근이 허용되는지를 판단할 수 있다. 도어 제어 어플리케이션(324)는 하나 이상의 도어 및/또는 관련 잠금 디바이스(250)를 제어할 수 있다. 예를 들어, 도어 제어 어플리케이션(324)은 도어가 열려있는지 닫혀있는지 및/또는 잠겨있는지 잠겨있지 않는지를 판단하고, 하나 이상의 디바이스가 도어를 열거나 닫거나 및/또는 잠그거나 잠금 해제하도록 동작시킬 수 있다. 리더 제어 어플리케이션(326)은 하나 이상의 리더 디바이스(240)를 제어하고, 하나 이상의 리더 디바이스(240)로부터 수신된 인증서를 획득하여 처리할 수 있다. 이벤트 처리 어플리케이션(328)은 시스템 유닛(115)에 의하여 기록 또는 생성되거나, 다른 시스템 유닛(115)에 의하여 기록된 이벤트의 로그를 보관할 수 있다. 이벤트 처리 어플리케이션(328)은 모든(또는 적어도 일부) 시스템 유닛들(115)에 분산 시스템 이벤트 로그를 보관하기 위하여 로컬상에서 기록되거나 발생된 이벤트가 분산 제어 시스템(110)상의 다른 시스템 유닛들(115)로 분산되도록 할 수 있다. 따라서, 로깅된 이벤트는 시스템 이벤트 로그와 관련된 어느 시스템 유닛(115)으로부터 라도 추출될 수 있다. 스케줄 처리 어플리케이션(330)은 시스템 유닛(115)과 관련된 하나 이상의 스케줄을 관리할 수 있다. 예를 들어, 특정 사용자 그룹에 대한 접근 규칙은 하루 중 특정 시간을 기초로 변경될 수 있다.
어플리케이션(332)은 시스템 유닛(115)의 어플리케이션 계층(320)에 설치된 특정 어플리케이션에 대응할 수 있는데, 이는 분산 데이터세트를 이용한다. 예를 들어, 어플리케이션(332)는 어플리케이션을 제어하는 카메라와 같은 특정 센서(260)와 관련된 어플리케이션; 도어 모터 어플리케이션과 같은 특정 액추에이터(270)와 관련된 어플리케이션; 인원수 카운팅 어플리케이션과 같이 정보 처리를 수행하는 어플리케이션; 주변 디바이스(230)을 제어하는 서드 파티(third party) 어플리케이션에 대한 플랫폼을 제공하는 어플리케이션; 네트워크를 통한 원격 디바이스와의 통신을 설정하는 어플리케이션; 및/또는 다른 종류의 어플리케이션에 대응할 수 있다.
다른 종류의 어플리케이션(도 3b에 도시되어 있지 않음)은 어플리케이션 계층(320)에 포함될 수 있다. 예시적으로서, 알람 어플리케이션이 리포트 및/또는 알람을 생성하여 리포트 및/또는 알람을 관리 디바이스(130)(및/또는 다른 지정 디바이스) 및/또는 하나 이상의 다른 시스템 유닛들(115)에게 송신할 수 있다. 다른 예시적인 것으로서, 작업 고유의 제어 어플리케이션은 도어 열림 이벤트, 센서 이벤트, 액추에이터 이벤트 및/또는 다른 종류의 이벤트와 같은 시스템 유닛(115)에 관련된 이벤트를 처리할 수 있다.
분산 계층(340)은 시스템 유닛들(115)과 관련된 하나 이상의 분배 데이터세트를 관리할 수 있다. 예를 들어, 분산 계층(340)은 네트워크(120)를 통한 다른 시스템 유닛들(115)과의 보안 연결(예를 들어, 전송 계층 보안(TLS; transport Layer Security) 연결)을 유지할 수 있다. 또한, 분산 계층(340)은 데이터세트의 분배를 위하여 피어-투-피어 네트워크의 제어기들(210)을 연결할 수 있다. 분산 계층(340)은 프로토콜(예를 들어, 팍소스(PAXOS) 프로토콜)을 이용하여 특정 합의 기반 분산 데이터세트의 변경에 대한 합의를 구현할 수 있다. 예시적인 것으로서, 분산 계층(340)은 변경에 대한 제안을 분산 데이터세트와 관련된 다른 시스템 유닛들(115)에게 송신하고, 변경에 대한 정족수를 다른 시스템 유닛들(115)로부터 수신할 수 있다. 다른 예시적인 것으로서, 분산 계층(340)은 다른 시스템 유닛(115)으로부터 수신된 제안에 동의할 수 있다. 또 다른 예시적인 것으로서, 분산 계층(340)은 변경에 대한 동의 없이도 변경에 대한 합의가 수행되었음을 나타내는 통지를 수신할 수 있다. 변경에 대한 합의 통지가 수신된 경우, 분산 계층(340)은 저장 계층(350)에 있는 분산 데이터세트에 변경을 적용할 수 있다. 분산 계층(340)은 어플리케이션 데이터세트에 접근하고자 하는 어플리케이션(332)로부터 요청을 수신하고, 어플리케이션 데이터세트가 존재하는지를 판단하기 위하여 시스템 데이터세트를 확인할 수 있다. 어플리케이션 데이터세트가 존재하는 경우 분산 계층(340)은 분산 제어 시스템(110)에 있는 다른 시스템 유닛들(115)에게 요청을 송신함으로써 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로의 참여를 요청할 수 있다. 어플리케이션 데이터세트가 존재하지 않으면, 분산 계층(340)은 어플리케이션(332)을 대신하여 어플리케이션 데이터세트를 생성할 수 있다.
저장 계층(350)은 유닛(115)과 관련된 하나 이상의 데이터세트를 저장할 수 있다. 저장 계층(350)에 저장된 저장 계층은 로컬 데이터세트에 대응하거나 분산 데이터세트에 대응할 수 있다. 로컬 데이터세트는 로컬 데이터세트를 저장하고 있는 특정 유닛(115)과 관련된(및/또는 관련만 되어 있는) 정보를 저장할 수 있다. 분산 데이터세트는 분산 데이터세트와 관련된 다른 시스템 유닛들(115)과 관련된 정보를 저장할 수 있다.
저장 계층(350)에 포함될 수 있는 실시예에 따른 정보가 도 3b에 도시되어 있다. 도 3b에 도시된 바와 같이, 저장 계층(350)은 설정 데이터(352), 인증서 데이터(354), 접근 규칙 데이터(356), 시스템 데이터세트(358), 및 어플리케이션 데이터세트(360)를 포함할 수 있다. 설정 데이터(352)는 제어기(210)의 하드웨어 설정, 제어기(210)에 연결된 주변 디바이스(230), 어플리케이션 계층(320)에 설치된 어플리케이션, 및/또는 다른 종류의 설정 정보와 같은 특정 시스템 유닛(115)과 관련된 설정 데이터를 저장할 수 있다. 인증서 데이터(354)는 시스템 유닛(115)과 관련된 인증서를 저장할 수 있다. 접근 규칙(356)은 시스템 유닛(115)와 관련된 접근 규칙을 저장할 수 있다.
시스템 데이터세트(358)은 시스템 유닛들(115)(예를 들어, 모든 시스템 유닛들(115))과 관련된 분산 데이터세트에 대응할 수 있다. 따라서, 시스템 데이터세트(358)는 분산 제어 시스템(110)에 있는 각 시스템 유닛(115)에 저장될 수 있다. 시스템 데이터세트(358)에 저장될 수 있는 실시예에 따른 정보는 도 4a를 참조하여 후술하기로 한다.
어플리케이션 데이터세트(360)은 어플리케이션(332)와 같은 특정 어플리케이션과 관련된 분산 데이터세트에 대응할 수 있다. 어플리케이션 데이터세트(360)에 저장될 수 있는 실시예에 따른 정보는 도 4b를 참조하여 후술하기로 한다.
도 3a 및 도 3b가 시스템 유닛(115)의 예시적인 기능적 구성요소를 나타내고 있으나, 다른 실시예에 따르면 시스템 유닛(115)은 도 3a 및 도 3b에 도시된 것과는 다르게 적은 수의 기능적 구성요소, 다른 기능적 구성요소, 다르게 배치된 기능적 구성요소, 또는 추가 기능적 구성요소를 포함할 수 있다. 예를 들어, 하나의 어플리케이션(332) 및 하나의 어플리케이션 데이터세트(360)가 도 3b에 도시되어 있으나, 이는 예시적인 것으로서, 실제로 어플리케이션 계층(320)은 다수의 어플리케이션(332)을 포함할 수 있으며, 저장 계층(350)은 다수의 어플리케이션 데이터세트(360)를 포함할 수 있다. 추가적으로, 시스템 유닛(115)의 구성 요소(또는, 어떠한 구성요소의 그룹) 중 어느 것이든 시스템 유닛(115)에 구비된 하나 이상의 다른 기능적 구성요소에 의하여 수행되도록 명시된 기능을 수행할 수 있다.
도 4a는 시스템 데이터세트(358)에 저장될 수 있는 예시적인 정보의 도면이다. 도 4a에 도시된 바와 같이, 시스템 데이터세트(358)은 시스템 유닛 리스트(410) 및 하나 이상의 분배 데이터세트 식별자(ID) 필드(420)를 포함할 수 있다. 시스템 유닛 리스트(410)는 분산 제어 시스템(110)이 포함된 시스템 유닛들(115)의 리스트를 저장할 수 있다.
분산 데이터세트 식별자 필드(420)는 분산 제어 시스템(110)에 존재하는 분산 데이터세트를 확인하기 위한 정보를 저장할 수 있다. 분산 데이터세트 필드(420)는 하나 이상의 분산 데이터세트 엔트리를 포함할 수 있다. 각 분산 데이터세트 식별자 필드(420)는 분산 제어 시스템(110)의 특정 분산 데이터세트와 관련된 하나 이상의 식별자를 포함할 수 있다. 하나 이상의 식별자는 데이터세트 그룹의 명칭; 분산 데이터세트와 관련된 식별자, 이름, 및/또는 어플리케이션에 대한 설명; 데이터세트의 내용을 설명하는 메타데이터; 및/또는 특정 분산 데이터세트를 확인하는데 이용될 수 있는 다른 정보를 포함할 수 있다. 분산 데이터세트 식별자는 어플리케이션(332)가 어플리케이션 데이터세트로의 접근을 요청할 때 특정 어플리케이션을 확인하고자 하는 분산 계층(340)에 의하여 이용될 수 있다.
도 4a는 시스템 데이터세트(358)에 저장될 수 있는 예시적인 구성요소를 나타내고 있으나, 다른 실시예에 따르면 시스템 데이터세트(358)는 도 4a에 도시된 것과는 다르게 적은 수의 구성요소, 다른 구성요소, 다르게 배치된 구성요소, 또는 추가 구성요소를 포함할 수 있다.
도 4b는 어플리케이션 데이터세트(360)에 저장될 수 있는 예시적인 정보의 도면이다. 도 4b에 도시된 바와 같이, 어플리케이션 데이터세트(360)는 분산 데이터세트 식별자 필드(430), 하나 이상의 시스템 유닛 필드(440-A 내지 440-N), 정족수 필드(450) 및 어플리케이션 데이터 필드(460)를 포함할 수 있다. 분산 데이터세트 식별자(430)는 특정 어플리케이션 데이터세트(360)를 확인할 수 있도록 하고, 시스템 데이터세트(358)의 분산 데이터세트 식별자 필드(420)에 저장된 분산 데이터세트 식별자에 대응할 수 있다.
시스템 유닛 필드(440)는 어플리케이션 데이터세트(360)와 관련된 데이터세트 그룹에 있는 시스템 유닛들(115)을 확인할 수 있도록 하는 정보를 저장할 수 있다. 정족수 필드(450)는 합의에 이르기 위하여 어플리케이션 데이터세트(360)에 대하여 제안되는 변경에 대한 표결을 함에 있어서 데이터세트 그룹에 있는 시스템 유닛들(115)에 의하여 요구되는 동의 표의 수를 확인할 수 있도록 하는 정보를 저장할 수 있다. 어플리케이션 데이터 필드(640)는 어플리케이션 데이터세트(360)와 관련된 어플리케이션 데이터를 저장할 수 있다.
도 4b는 어플리케이션 데이터세트(360)에 저장될 수 있는 예시적인 구성요소를 나타내고 있으나, 다른 실시예에 따르면 어플리케이션 데이터세트(360)는 도 4b에 도시된 것과는 다르게 적은 수의 기능적 구성요소, 다른 기능적 구성요소, 다르게 배치된 기능적 구성요소, 또는 추가 기능적 구성요소를 포함할 수 있다.
도 5는 본 발명의 하나 이상의 실시예에 따라 데이터세트 그룹으로 참여하거나 분산 제어 시스템에 있는 어플리케이션 데이터세트로 접속하는 것에 대한 흐름도이다. 몇몇 실시예에 따르면 도 5의 프로세스는 제어기(210)에 의하여 수행될 수 있다. 다른 실시예에 따르면, 도 5의 프로세스 중 일부 또는 전체는 제어기(210)와는 분리된, 및/또는 제어기(210)에 포함되어 있는 다른 디바이스 또는 디바이스 그룹에 의하여 수행될 수 있다.
도 5의 프로세스는 데이터세트 그룹에 참여하는 단계 또는 어플리케이션 데이터세트에 접속하는 단계를 포함할 수 있다(블록 510). 예를 들어, 관리자는 특정 시스템 유닛(115)에 로그인하기 위하여 관리 디바이스(130)를 이용하고, 해당 시스템 유닛(115)에 어플리케이션(332)을 설치할 수 있다. 어플리케이션(332)은 데이터를 분산 데이터세트에 저장하거나, 및/또는 분산 데이터세트에서 데이터를 추출하도록 설정될 수 있다. 따라서, 어플리케이션(332)이 설치된 이후에는 어플리케이션(332)는 어플리케이션(332)과 관련된 분산 데이터세트로 접근하기 위하여 분산 계층(340)에 요청을 송신할 수 있다. 어플리케이션 데이터세트 식별자가 시스템 데이터세트에 존재하는지에 대한 판단이 수행될 수 있다(블록 515). 전술한 바와 같이, 시스템 데이터세트(358)는 분산 제어 시스템(110)에 포함된 분산 데이터세트의 식별자를 저장하는 분산 데이터세트 식별자 필드(420)를 포함한다. 분산 계층(340)은 어플리케이션(332)에 대한 식별자가 분산 데이터세트 식별자 필드(420)에 리스트되어 있는지를 판단하기 위하여 분산 데이터세트 식별자 필드(420)에 접속할 수 있다.
어플리케이션 데이터세트 식별자가 시스템 데이터세트에 존재하지 않는 것으로 판단되면(블록 515 - 아니오), 시스템 데이터세트에 어플리케이션 데이터세트 엔트리가 생성되어 분산될 수 있다(블록 520). 시스템 데이터세트(358)는 분산 제어 시스템(110)에 있는 분산 데이터세트이기 때문에, 시스템 데이터세트(358)에 대한 변경을 수행하기 위하여 시스템 유닛(115)은 시스템 데이터세트(358)의 분산 데이터세트 식별자 필드(420)의 변경을 수행하기 위한 합의를 획득한다. 시스템 유닛(115)의 제어기(210)는 분산 제어 시스템(110)에 있는 다른 시스템 유닛들(115)로 변경에 대한 제안을 송신할 수 있는데, 시스템 데이터세트(358)에 대하여 다른 시스템 유닛들(115)로부터 동의 표의 정족수가 수신된 경우 어플리케이션 데이터세트 엔트리가 시스템 데이터세트(358)의 분산 데이터세트 식별자 필드(420)에 추가될 수 있다.
어플리케이션 데이터세트가 생성되어(블록 530), 어플리케이션 데이터가 어플리케이션 데이터세트에 추가될 수 있다(블록 540). 예를 들어, 분산 계층(340)은 저장 계층(350)에 어플리케이션 데이터세트(360)를 생성하고, 어플리케이션(332)로부터 어플리케이션 데이터를 수신하며, 수신된 어플리케이션 데이터를 어플리케이션 데이터세트(360)에 추가할 수 있다. 또한, 시스템 데이터세트(358)의 분산 데이터세트 식별자 필드(420)에 어플리케이션 데이터세트 엔트리를 생성한 특정 시스템 유닛(115)이 어플리케이션 데이터세트와 관련된 첫 번째 시스템 유닛(115)이고, 다른 시스템 유닛들(115)은 어플리케이션 데이터세트와 관련된 데이터세트 그룹에 속하지 않은 경우, 분산 계층(340)은 어플리케이션 데이터세트(360)과 관련된 데이터세트 그룹에 대한 정족수 요건을 1로 설정할 수 있다. 따라서, 어플리케이션 데이터세트(360)에 어플리케이션 데이터를 추가하기 위하여 다른 시스템 유닛들(115)로부터의 동의 표를 획득하는 것이 필요하지 않게 된다.
다시 블록 515를 설명하면, 어플리케이션 데이터세트 식별자가 시스템 데이터세트에 존재하는 것으로 판단되는 경우(블록 515 - 예), 어플리케이션 데이터세트와 관련된 데이터세트 그룹으로의 추가를 요청하기 위하여 분산 제어 시스템(110)에 있는 다른 시스템 유닛들(115)에게 요청이 송신될 수 있다(블록 550). 분산 데이터세트 식별자 필드(420)는 어떠한 시스템 유닛들(115)이 특정 분산 데이터세트와 관련되어 있는지를 나타내고 있는 정보를 포함하고 있지 않을 수 있기 때문에 제어기(210)는 분산 제어 시스템(110)에 있는 다른 시스템 유닛들(115)(예를 들어, 다른 모든 시스템 유닛들(115))에게 데이터세트 그룹으로의 추가 요청을 송신해야 할 수 있다.
요청 시스템 유닛이 분산 데이터세트에 추가되었다고 하는 통지가 다른 시스템 유닛으로부터 수신될 수 있다(블록 560). 예를 들어, 분산 제어 시스템(110)에서 어플리케이션 데이터세트와 관련된 데이터세트 그룹에 있는 하나 이상의 다른 시스템 유닛들(115)은 요청을 처리하여 요청 시스템 유닛(115)을 데이터세트 그룹에 추가할 수 있다. 존재하고 있는 데이터세트 그룹에 시스템 유닛(115)을 추가하는 처리는 도 7을 통하여 후술하기로 한다. 일단 요청 시스템 유닛(115)이 데이터세트 그룹에 추가되면, 요청 시스템 유닛(115)을 추가한 특정 시스템 유닛(115)은 요청 시스템 유닛(115)에게 통지를 송신할 수 있다.
데이터세트 그룹에 추가되었다고 하는 통지를 수신함에 대한 응답으로, 다른 시스템 유닛으로부터 어플리케이션 데이터세트가 수신되고(블록 570), 수신된 어플리케이션 데이터세트가 저장 계층에 추가될 수 있다(블록 580). 예를 들어, 분산 계층(340)은 다른 시스템 유닛(115)으로부터 어플리케이션 데이터세트를 수신하고, 수신된 어플리케이션 데이터세트를 저장 계층(350)에 저장할 수 있다. 어플리케이션 데이터세트는 데이터세트 그룹과 관련되고, 어플리케이션 데이터세트에 대한 동작을 수행함에 있어서의 정족수 요건과 관련된 시스템 유닛들(115)의 리스트를 포함할 수 있다.
도 6은 본 발명의 하나 이상의 실시예에 따라 분산 제어 시스템의 어플리케이션 데이터세트에 존재하고 있는 어플리케이션 데이터의 변경에 대한 흐름도이다. 몇몇 실시예에 따르면, 도 6의 프로세스 중 일부 또는 전체는 제어기(210)와는 분리된, 및/또는 제어기(210)에 포함되어 있는 다른 디바이스 또는 디바이스 그룹에 의하여 수행될 수 있다.
도 6의 프로세스는 어플리케이션 데이터세트에 있는 어플리케이션 데이터에 대한 변경 요청을 감지하는 단계를 포함할 수 있다(블록 610). 예시적인 것으로서, 어플리케이션(332)은 특정 주변 디바이스(230)로부터의 데이터 수신, 특정 주변 디바이스(230)로 송신된 명령 기록, 연산의 결과 기록과 같은 어플리케이션 데이터 및/또는 어플리케이션(332)에 의하여 생성된 다른 종류의 어플리케이션 데이터를 생성할 수 있다. 다른 예시적인 것으로서, 어플리케이션(332)은 어플리케이션 데이터세트(360)에 존재하고 있는 어플리케이션 데이터를 수정하고, 갱신하고, 삭제하고, 및/또는 변경할 것을 선택할 수 있다. 어플리케이션(332)은 어플리케이션 데이터 변경을 분산 계층(340)에 제공할 수 있다.
어플리케이션 데이터세트와 관련된 데이터세트 그룹에 있는 다른 시스템 유닛들이 확인될 수 있으며(블록 620), 어플리케이션 데이터세트의 어플리케이션 데이터를 변경하기 위하여 확인된 다른 시스템 유닛들에게 제안이 송신될 수 있다(블록 630). 예를 들어, 분산 계층(340)은 어플리케이션 데이터세트(360)에 접근하고, 시스템 유닛 필드(440)에서 시스템 유닛들(115)이 확인되었는지를 판단하며, 시스템 유닛 필드(440)에서 확인된 시스템 유닛들(115)에게 어플리케이션 데이터 변경에 대한 제안을 송신할 수 있다.
어플리케이션 데이터세트에 있는 어플리케이션 데이터를 변경하기 위하여 합의가 획득될 수 있는데(블록 640), 획득된 합의에 대한 응답으로 제안된 변경이 어플리케이션 데이터세트에 적용될 수 있다(블록 650). 시스템 유닛(115)은 제안된 변경에 동의한다고 하는 정족수의 동의 표를 수신할 수 있다. 예를 들어, 10개의 시스템 유닛들(115)이 데이터세트 그룹에 관련되어 있으면, 요청 시스템 유닛(115)은 어플리케이션 데이터세트(360)의 어플리케이션 데이터를 변경하기 위하여 관련된 6개의 시스템 유닛들(115)로부터 동의 표를 수신해야 할 수 있다. 일단 6개의 동의 표가 수신되면, 제안된 변경에 대한 합의에 이르게 되고, 제안된 변경이 수행된다. 제안된 변경에 대한 합의를 획득한 것에 대한 응답으로, 분산 계층(340)은 전술한 추가, 변경, 갱신, 삭제, 및/또는 저장 계층(350)에 있는 어플리케이션 데이터세트(360)의 어플리케이션 데이터에 대한 변경을 수행할 수 있다.
도 7은 본 발명의 하나 이상의 실시예에 따라 분산 제어 시스템의 어플리케이션 데이터세트와 관련된 데이터세트 그룹에 시스템 유닛이 추가되도록 하는 요청을 처리하는 것을 나타낸 흐름도이다. 몇몇 실시예에 따르면, 도 7의 프로세스는 제어기(210)에 의하여 수행될 수 있다. 다른 실시예에 따르면, 도 7의 프로세스 중 일부 또는 전체는 제어기(210)와는 분리된, 및/또는 제어기(210)에 포함되어 있는 다른 디바이스 또는 디바이스 그룹에 의하여 수행될 수 있다.
도 7의 프로세스는 어플리케이션 데이터세트와 관련된 데이터세트 그룹으로 추가되고자 하는 다른 시스템 유닛으로부터 요청을 수신하는 단계(블록 710)를 포함할 수 있다. 예를 들어, 시스템 유닛(115)의 제어기(210)는 어플리케이션 데이터세트와 관련된 데이터세트 그룹으로 추가되고자 하는 요청 시스템 유닛으로부터 요청을 수신할 수 있다. 시스템 유닛(115)은 요청을 수신하고, 시스템 유닛(115)이 데이터세트 그룹과 관련된 경우 해당 요청이 적절한지를 판단할 수 있다. 예를 들어, 시스템 유닛(115)은 요청에 의하여 확인된 어플리케이션(332)과 관련된 어플리케이션 데이터세트(360)가 저장 계층(350)에 존재하고 있는지 판단할 수 있다.
데이터세트 그룹에 있는 다른 시스템 유닛들이 확인될 수 있으며(블록 720), 데이터세트 그룹에 요청 시스템 유닛을 추가하기 위하여 확인된 다른 시스템 유닛들에게 제안이 송신될 수 있다(블록 730). 예를 들어, 분산 계층(340)은 어플리케이션 데이터세트(360)에 접근하고, 시스템 유닛 필드(440)에서 시스템 유닛들(115)이 확인되었는지를 판단하며, 요청 시스템 유닛(115)의 추가에 대한 제안을 시스템 유닛 필드(440)에서 확인된 시스템 유닛들(115)에게 송신할 수 있다.
요청 시스템 유닛을 데이터세트 그룹에 추가하기 위하여 합의가 획득될 수 있으며(블록 740), 획득된 합의에 대한 응답으로 요청 시스템 유닛이 데이터세트 그룹에 추가될 수 있다(블록 750). 또한, 데이터세트 그룹에 대한 정족수 요건이 조정될 수 있다(블록 760). 시스템 유닛(115)은 요청 시스템 유닛(115)을 추가하기 위하여 제안된 변경에 동의한다고 하는 정족수의 동의 표를 수신할 수 있다. 예를 들어, 10개의 시스템 유닛들(115)이 데이터세트 그룹에 있으면, 제안 시스템 유닛(115)은 데이터세트 그룹에 요청 시스템 유닛(115)을 추가하기 위하여 관련된 6개의 시스템 유닛들(115)로부터 동의 표를 수신해야 할 수 있다. 일단 6개의 동의 표가 수신되면, 제안된 추가에 대한 합의에 이르게 되고, 요청 시스템 유닛(115)은 어플리케이션 데이터세트(360)와 관련된 데이터세트 그룹에 추가될 수 있게 된다. 예를 들어, 분산 계층(340)은 어플리케이션 데이터세트(360)의 요청 시스템 유닛(115)을 위하여 시스템 유닛 필드(440)를 생성할 수 있다. 또한, 분산 계층(340)은 어플리케이션 데이터세트(360)의 정족수 필드(450)에 있는 정족수 요건을 조정할 수 있다. 예를 들어, 10개의 시스템 유닛들(110)이 데이터세트 그룹과 관련되어 있었고, 현재 11개의 시스템 유닛들(115)이 데이터세트 그룹과 관련되어 있으면, 6인 정족수 요건은 변경되지 않을 수 있다. 그러나, 다른 시스템 유닛(115)이 데이터세트 그룹에 추가되어 총 12개의 시스템 유닛들이 되면, 정족수 요건은 6에서 7로 변경될 수 있다.
몇몇 실시예에 따르면, 특정 시스템 유닛(115)이 어플리케이션 데이터세트와 관련된 데이터세트 그룹에서의 삭제를 요청하면 삭제 프로세스가 수행될 수 있다. 예를 들어, 어플리케이션(332)이 특정 시스템 유닛(115)에서 제거(uninstall)될 수 있다. 제거 프로세스의 일부로서, 어플리케이션(332)은 특정 시스템 유닛(115)이 어플리케이션 데이터세트(360)에서 삭제될 것을 요청할 수 있다. 따라서, 특정 시스템 유닛(115)은 어플리케이션 데이터세트(360)와 관련된 데이터세트 그룹에 있는 다른 시스템 유닛들(115)에게 삭제되는 것에 대한 제안을 송신할 수 있다. 제안에 대한 합의가 획득되면, 특정 시스템 유닛(115)이 데이터세트 그룹에서 삭제되고, 어플리케이션 데이터세트(360)가 저장 계층(350)에서 제거될 수 있다.
몇몇 실시예에 따르면, 어플리케이션(332)의 설치는 자동화될 수 있다. 따라서, 한번에 한번씩 각각의 시스템 유닛(115)에 어플리케이션(332)을 설치하기 위하여 관리자가 관리 디바이스(130)를 이용하기 보다는 어플리케이션(332)은 하나의 시스템 유닛(115)에 설치되고, 일련의 설치 명령이 시스템 유닛(115)에 설치될 수 있다. 설치 명령은 어플리케이션(332)의 일부 또는 별도의 프로그램, 어플리케이션 및/또는 스크립트 파일로서 포함될 수 있다. 설치 명령은 어플리케이션(332)을 설치하기 위한 하나 이상의 기준을 포함할 수 있으며, 특정 시스템 유닛(115)이 하나 이상의 기준을 만족하면 어플리케이션(332)을 설치하라는 명령이 분산 제어 시스템(110)의 다른 시스템 유닛들(115)에게 송신될 수 있다. 따라서, 특정 시스템 유닛(115)에 의하여 하나 이상의 기준이 만족되면, 해당 시스템 유닛(115)은 어플리케이션(332)을 설치할 수 있다. 어플리케이션(332)이 해당 시스템 유닛(115)에 설치된 이후에는 해당 시스템 유닛(115)은 어플리케이션(332)와 관련되고, 어플리케이션 데이터세트(360)와 관련된 데이터세트 그룹으로 추가되기 위하여 도 5의 프로세스를 수행할 수 있다. 특정 시스템 유닛(115)에 어플리케이션(332)를 설치하기 위한 하나 이상의 기준은 해당 시스템 유닛(115)과 관련된 하드웨어 설정; 해당 시스템 유닛(115)에 연결된 주변 디바이스의 특정 종류; 해당 시스템 유닛(115)과 관련된 위치 유형; 해당 시스템 유닛(115)에 의하여 기록된 이벤트 종류; 해당 시스템 유닛(115)에 설치된 특정 어플리케이션; 및/또는 다른 종류의 기준을 포함할 수 있다.
도 8은 시스템 유닛(115)의 예시적인 물리 레이아웃(800)을 나타낸 평면도이다. 도 8에 도시된 바와 같이, 물리 레이아웃(800)은 벽(810), 도어(820), 제어기(210), 리더 디바이스(240), 잠금 디바이스(250), 센서(260) 및 액추에이터(270)를 포함할 수 있다.
벽(810)은 빌딩의 룸(room)과 같은 보안 영역(830)을 수용한다. 도어(820)는 사용자에게 보안 영역(830)으로의 접근을 제공한다. 일 실시예에 따르면, 제어기(210)는 보안 영역(830)의 내부에 설치된다. 다른 실시예에 따르면, 제어기(210)는 보안 영역(830)의 외부에 설치될 수 있다. 리더 디바이스(240)는 보안 영역(830)의 외부에 설치되고, 잠금 디바이스(250)는 보안 영역(440) 내부의 벽(810) 및 도어(820)에 설치된다. 이와 같은 예에 따르면, 센서(260)는 보안 영역(830)의 외부에 마운팅된 모니터링 디바이스이다. 액추에이터(270)는 이러한 예에 따른 모니터링 디바이스의 시야를 제어하기 위하여 사용되는 모터를 포함한다.
(예를 들어, PIN 번호 입력, 접속 카드 스캐닝, 홍채 스캐닝 등을 입력함으로써) 사용자가 리더 디바이스(240)에 인증서를 입력하면, 제어기(210)는 인증서를 사용하여 사용자의 신원을 확인하고, 접근 규칙 테이블을 검색하여 사용자의 신원 및 접근 규칙을 기초로 사용자에 의한 접근 허용 여부를 판단할 수 있다. 접근이 허용되는 것으로 제어기(210)가 판단하면, 제어기(210)는 잠금 디바이스(250)를 동작시켜 도어(820)의 잠금을 해제하여 사용자에 의한 보안 영역(830)으로의 접근을 허용한다.
도 8은 물리적 레이아웃(800)의 예시적인 구성요소를 나타내고 있으나, 다른 실시예에 따르면 물리적 레이아웃(800)는 도 8에 도시된 것과는 다르게 적은 수의 구성요소, 다른 구성요소, 추가 구성요소, 또는 다르게 배치된 구성요소를 포함할 수 있다. 추가적으로 또는 선택적으로, 물리적 레이아웃(800)의 어느 구성요소(또는 구성요소의 그룹)라도 물리적 레이아웃(800)에 구비된 하나 이상의 다른 구성요소에 의하여 수행하도록 명시된 하나의 작업 또는 복수의 작업을 수행할 수 있다.
도 9는 분산 제어 시스템(110)의 예시적인 물리적 레이아웃(900)을 나타낸 평면도이다. 도 9에 도시된 바와 같이, 물리적 레이아웃(900)은 룸(920-A 내지 920-F)로 구성된 빌딩(910)을 포함할 수 있다. 이더넷 네트워크와 같은 로컬 네트워크(930)는 시스템 유닛(115-A 내지 115F)간에 상호 연결될 수 있다. 이러한 예에 따르면, 시스템 유닛(115-A)은 2개의 도어가 룸(920-A)을 향하도록 제어하고; 시스템 유닛(115-B)은 외부 도어가 룸(920-B)를 향하도록 제어하고; 시스템 유닛(115-C)는 하나의 도어가 룸(920-B)에서 룸(920-C)를 향하도록 제어하고, 시스템 유닛(115-D)는 하나의 도어가 룸(920-C)에서 룸(920-D)를 향하도록 제어하고; 시스템 유닛(115-E)는 하나의 도어가 룸(920-D)에서 룸(920-E)를 향하도록 제어하며; 시스템 유닛(115-F)는 외부 도어가 룸(920-F)를 향하도록 제어한다.
이러한 예에 따르면, 시스템 유닛(115-A 내지 115-F)은 중앙 제어 디바이스(예를 들어, 서버)를 포함하지 않고, 하나 이상의 분산 데이터 세트를 포함할 수 있다. 예를 들어, 시스템 유닛(115-A 내지 115-F)은 분산 인증 테이블, 분산 접근 규칙 테이블, 및/또는 분산 이벤트 로그를 보관할 수 있다. 관리자가 관리 디바이스(130)를 이용하여 시스템 유닛(115-A)에 로그인하고, 사용자를 추가하고 사용자와 관련된 인증서를 추가하는 것을 가정하자. 이렇게 추가된 인증서는 사용자가 접근하고자 하는 룸의 도어를 제어하는 다른 시스템 유닛들(115)에게 분산될 수 있다. 예를 들어, 시스템 유닛(115-B)이 실패하면, 다른 시스템 유닛들에 포함된 분산 이벤트 로그에 의하여 시스템 유닛(115-B)에 의하여 수집된 데이터는 계속 유효할 수 있다.
도 9는 물리적 레이아웃(900)의 예시적인 구성요소를 나타내고 있으나, 다른 실시예에 따르면 물리적 레이아웃(900)은 도 9에 도시된 것과는 다르게 적은 수의 구성요소, 다른 구성요소, 추가 구성요소 또는 다르게 배치된 구성요소를 포함할 수 있다. 예를 들어, 다른 실시예에 따르면, 중앙 제어 디바이스(예를 들어, 서버)가 하나 이상의 분산 데이터세트와 함께 이용될 수 있다. 추가적으로 또는 선택적으로, 물리적 레이아웃(900)의 하나 이상의 구성요소는 물리적 레이아웃(900)에 구비된 하나 이상의 다른 구성요소에 의하여 수행하도록 명시된 하나 이상의 작업을 수행할 수 있다.
도 10a 내지 도 10c는 본 발명의 하나 이상의 실시예에 따라 예시적 어플리케이션 데이터세트의 시나리오를 나타낸 도면이다. 예를 들어, 도 9의 룸(920-C)에 인원수 카운팅 어플리케이션이 필요한 경우를 가정해 보자. 룸(920-C)에 있는 사람의 수를 카운팅하기 위해서는 어떠한 도어를 통해서든 룸(920-C)에 드나드는 사람을 카운팅 해야 할 필요가 있다. 따라서, 인원수 카운팅 어플리케이션은 시스템 유닛들(115-A, 115-C 및 115-D)의 제어기(210)에 설치되어야 한다.
도 10a는 카운팅 어플리케이션(1010-A)이 시스템 유닛(115-A)에 설치된 이후의 신호 흐름 시나리오(1000)를 도시하고 있다. 카운팅 어플리케이션(1010-A)이 시스템 유닛(115-A)에 설치된 이후에는 카운팅 어플리케이션(1010-A)은 분산 계층(340-A)을 통하여 카운팅 어플리케이션(1010-A)와 관련된 분산 어플리케이션 데이터세트로의 접근을 요청할 수 있다(신호 1012). 분산 계층(340-A)은 카운팅 어플리케이션(1010)에 대한 어플리케이션 데이터세트 엔트리가 시스템 데이터세트(358)에 존재하지 않은 것을 확인할 수 있다. 이에, 분산 계층(340-A)은 시스템 데이터세트(358)에 있는 카운팅 어플리케이션 데이터세트에 대한 엔트리의 추가 제안을 분배할 수 있다(신호 1014). 제안된 변경에 대한 합의가 획득된 이후, 분산 계층(340-A)은 카운팅 어플리케이션 데이터세트 식별자 엔트리(1017)을 생성하기 위하여 시스템 데이터세트(358)에 새로운 엔트리를 생성할 수 있다. 합의에 이른 이후에 수락된 제안을 통하여 시스템 데이터세트(358)에 대한 갱신이 다른 시스템 유닛들(115-B 내지 115-F)에게 분배될 수 있다. 분산 계층(340-A)은 저장 계층(350)에 카운팅 어플리케이션 데이터세트(1020-A)의 생성을 수행할 수 있다(신호 1018). 이에, 카운팅 어플리케이션(1010-A)는 분산 계층(340-A)을 통하여 카운팅 어플리케이션 데이터세트(1020-A)를 사용할 수 있게 된다.
도 10b는 카운팅 어플리케이션(1010-C)이 시스템 유닛(115-C)에 설치된 이후의 신호 흐름 시나리오(1030)를 도시하고 있다. 카운팅 어플리케이션(1010-C)이 시스템 유닛(115-C)에 설치된 이후에는 카운팅 어플리케이션(1010-C)은 분산 계층(340-C)을 통하여 카운팅 어플리케이션(1010-C)와 관련된 분산 어플리케이션 데이터세트로의 접근을 요청할 수 있다(신호 1031). 분산 계층(340-C)은 어플리케이션 데이터세트 엔트리(1017)가 시스템 데이터세트(358)에 존재하는 것으로 판단할 수 있다. 이에, 시스템 유닛(115-C)은 카운팅 어플리케이션 데이터세트(1020)와 관련된 데이터세트 그룹으로 추가되도록 하는 요청을 시스템 유닛(115-A)에게 송신하고(신호 1032-A), 시스템 유닛(115-B)에게 송신하고(신호 1032-B), 시스템 유닛(115-D)에게 송신하고(신호 1032-D), 시스템 유닛(115-E)에게 송신하며(신호 1032-E), 시스템 유닛(115-F)에게 송신할 수 있다(신호 1032-F). 시스템 유닛(115-A)만이 카운팅 어플리케이션 데이터세트(1020)와 관련된 데이터세트 그룹에 포함되어 있기 때문에 시스템 유닛(115-A)만이 요청에 응답하게 된다.
시스템 유닛(115-A)이 카운팅 어플리케이션 데이터세트(1020)와 관련된 데이터세트에 있는 유일한 시스템 유닛이기 때문에 카운팅 어플리케이션 데이터세트(1020)에 대하여 제안된 어떠한 변경되 자동적으로 합의로 수신된다. 따라서, 시스템 유닛(115-A)은 요청을 수락하고, 시스템 유닛(115-C)을 카운팅 어플리케이션 데이터세트(1020)와 관련된 데이터세트 그룹에 추가하고자 하는 합의를 갖게 된다. 시스템 유닛(115-A)은 카운팅 어플리케이션 데이터세트(1020-A)와 관련된 데이터세트 그룹에 시스템 유닛(115-C)을 추가하고(신호 1034), 시스템 유닛(115-C)이 카운팅 데이터세트 그룹(1020)에 추가되었다고 하는 통지를 시스템 유닛(115-C)에 송신할 수 있다(신호 1036). 이에, 시스템 유닛(115-C)은 카운팅 어플리케이션 데이터세트(1020)를 수신하고(신호 1038), 시스템 유닛(115-C)은 수신된 카운팅 어플리케이션 데이터세트(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는 카운팅 어플리케이션(1010-D)이 시스템 유닛(115-D)에 설치된 이후의 신호 흐름 시나리오(1050)를 도시하고 있다. 카운팅 어플리케이션(1010-D)이 시스템 유닛(115-D)에 설치된 이후에는 카운팅 어플리케이션(1010-D)은 분산 계층(340-D)을 통하여 카운팅 어플리케이션(1010-D)와 관련된 분산 어플리케이션 데이터세트로의 접근을 요청할 수 있다(신호 1051). 분산 계층(340-D)은 카운팅 어플리케이션 데이터세트 식별자 엔트리(1017)가 시스템 데이터세트(358)에 존재하는 것으로 판단할 수 있다. 이에, 시스템 유닛(115-C)은 카운팅 어플리케이션 데이터세트(1020)와 관련된 데이터세트 그룹으로 추가되도록 하는 요청을 시스템 유닛(115-A)에게 송신하고(신호 1052-A), 시스템 유닛(115-B)에게 송신하고(신호 1052-B), 시스템 유닛(115-C)에게 송신하고(신호 1052-C), 시스템 유닛(115-E)에게 송신하며(신호 1052-E), 시스템 유닛(115-F)에게 송신할 수 있다(신호 1052-F). 시스템 유닛들(115-A 및 115-C)만이 카운팅 어플리케이션 데이터세트(1020)와 관련되어 있기 때문에 시스템 유닛(115-A 및 115-C)만이 요청에 응답하게 된다.
시스템 유닛(115-A) 및 시스템 유닛(115-C)만이 요청을 수신하였기 때문에 시스템 유닛(115-A) 및 시스템 유닛(115-C)은 시스템 유닛(115-D)를 카운팅 어플리케이션 데이터세트(1020)와 관련된 데이터세트 그룹에 추가할 것을 제안할 수 있다. 시스템 유닛(115-C) 이전에 시스템 유닛(115-A)이 요청을 수신하고, 수신된 요청에 따라 동작하는 것을 가정하자. 시스템 유닛(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)이 카운팅 어플리케이션 데이터세트(1020)와 관련된 데이터세트 그룹에 추가되었다고 하는 통지를 시스템 유닛(115-D)에게 송신하고(신호 1060), 카운팅 어플리케이션 데이터세트(1020)를 시스템 유닛(115-D)에게 제공하게 된다(신호 1062). 분산 계층(340-D)은 저장 계층(350)에 수신된 카운팅 어플리케이션 데이터세트(1020)를 저장할 수 있다(신호 1064). 이러한 경우 카운팅 어플리케이션 데이터세트(1020)와 관련된 데이터세트 그룹에 대한 정족수 요건은 변경될 필요가 없다.
이상과 같이, 첨부된 도면을 참조로 다양한 실시예가 설명되었다. 그러나, 후술하는 청구항을 통하여 제시한 발명의 범위를 벗어나지 않는 다양한 수정 및 변경이 적용될 수 있음은 자명하고, 추가적인 실시예가 구현될 수도 있다. 따라서, 상세한 설명 및 도면은 제한적이 아니라 예시적인 것으로 간주되어야 한다.
예를 들어, 일련의 블록이 도 5 내지 도 7과 같이 도시되어 있으나, 블록 및/또는 신호의 순서는 다른 실시예에 따라 수정될 수 있는 것이다. 또한, 종속적이지 않은 블록 및/또는 신호 흐름은 병렬적으로 수행될 수 있다.
이상과 같이 설명한 시스템 및/또는 방법이 도면에 도시된 형태와 같이 소프트웨어, 펌웨어, 및 하드웨어의 다양한 형태로 구현될 수 있음은 명백할 것이다. 이러한 시스템 및 방법을 구현하는데 이용되는 실제 소프트웨어 코드 또는 특화된 제어 하드웨어는 실시예에 한정되지 않는다. 따라서, 시스템 및 방법의 동작 및 행동은 특별한 소프트웨어 코드를 참조하지 않고 설명된다 - 소프트웨어 및 제어 하드웨어는 여기세 설명된 것을 기초로 시스템 및 방법을 구현하도록 디자인된 것으로 이해될 수 있다.
또한, 이상의 내용 중 특정 부분은 하나 이상의 기능을 수행하는 구성요소로서 구현될 수 있다. 여기서 이용되는 구성요소는 프로세서, ASIC 또는 FPGA와 같은 하드웨어, 또는 하드웨어 및 소프트웨어(예를 들어, 프로세서 실행 소프트웨어)의 조합을 포함할 수 있다.
여기서 사용되고 있는 "포함하다" 및 "포함하는"과 같은 용어는 규정된 특징, 숫자(정수), 단계 또는 구성요소의 존재를 의미하지만, 하나 이상의 다른 특징, 숫자(정수), 단계, 구성요소 및 그 그룹의 존재 또는 추가를 부정하는 것은 아니다.
본 명세서에서 이용되는 요소, 동작 또는 명령 중 어느 것도 이상과 같이 명확하게 설명되지 않으면 실시예에 대하여 중요하거나 본질적인 것으로 이해될 수 없다. 또한, 여기에서 사용된 것과 같이, "하나"는 하나 이상의 항목을 포함하는 것으로 이해될 수 있다. 또한, "기초로 하여"는 별도의 다른 설명이 없다면 "적어도 일부를 기초로 하여"를 의미하는 것으로 이해될 수 있다.

Claims (15)

  1. 분산 시스템의 디바이스에 의하여 수행되는 방법으로서,
    어플리케이션 데이터세트로 접근하는 어플리케이션에 의한 요청을 상기 디바이스가 감지하는 단계로서, 상기 어플리케이션 데이터세트는 분산 데이터세트에 대응하고;
    상기 어플리케이션 데이터세트에 대한 식별자가 상기 분산 시스템의 분산 시스템 데이터세트에 리스트되어 있는지를 상기 디바이스가 판단하는 단계;
    상기 어플리케이션 데이터세트에 대한 식별자가 상기 분산 시스템 데이터세트에 리스트되어 있지 않은 것으로 판단한 것에 대한 응답으로 상기 분산 시스템 데이터세트의 상기 어플리케이션 데이터세트에 대한 식별자의 엔트리를 상기 디바이스가 생성하는 단계; 및
    상기 어플리케이션 데이터세트에 대한 식별자가 상기 분산 시스템 데이터세트에 존재하는 것으로 판단한 것에 대한 응답으로 상기 어플리케이션 데이터세트와 관련된 디바이스를 포함하는 데이터세트 그룹으로의 참여 요청을 상기 디바이스가 상기 분산 시스템의 다른 디바이스에게 송신하는 단계를 포함하는 어플리케이션 데이터를 관리하는 방법.
  2. 제 1항에 있어서,
    상기 어플리케이션 데이터세트에 대한 식별자가 상기 분산 시스템의 분산 시스템 데이터세트에 리스트되어 있는지를 판단하는 단계는
    상기 분산 시스템 데이터세트에 있는 분산 데이터세트의 식별자 리스트에 접근하는 단계; 및
    상기 분산 데이터세트의 식별자에 대한 리스트가 상기 요청된 어플리케이션 데이터세트에 대한 식별자를 포함하는지 판단하는 단계를 포함하는 어플리케이션 데이터를 관리하는 방법.
  3. 제 1항 또는 제 2항에 있어서,
    상기 분산 시스템 데이터세트의 상기 어플리케이션 데이터세트에 대한 식별자의 엔트리를 생성한 것에 대한 응답으로 상기 디바이스의 저장 계층에 상기 어플리케이션 데이터세트를 생성하는 단계; 및
    상기 어플리케이션 데이터세트를 생성한 것에 대한 응답으로, 상기 어플리케이션의 정보를 상기 생성된 어플리케이션 데이터세트에 추가하는 단계를 더 포함하는 어플리케이션 데이터를 관리하는 방법.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 분산 시스템에 있는 다른 디바이스로부터 상기 디바이스가 상기 데이터세트 그룹에 추가되어 있다고 하는 통지를 수신하는 단계;
    상기 분산 시스템에 있는 상기 다른 디바이스로부터 상기 어플리케이션 데이터세트를 수신하는 단계; 및
    상기 수신된 어플리케이션 데이터세트를 상기 디바이스에 저장하는 단계를 더 포함하는 어플리케이션 데이터를 관리하는 방법.
  5. 제 4항에 있어서,
    상기 수신된 어플리케이션 데이터세트는 상기 데이터세트 그룹의 멤버인 상기 디바이스의 리스트를 포함하되, 상기 방법은
    상기 어플리케이션 데이터세트로 어플리케이션 데이터를 추가하기 위하여 상기 데이터세트 그룹의 멤버인 상기 디바이스로 제안을 송신하는 단계;
    상기 제안을 송신한 것에 대한 응답으로, 상기 어플리케이션 데이터를 상기 어플리케이션 데이터세트에 추가하기 위한 합의를 획득하는 단계;
    상기 합의를 획득한 것에 대한 응답으로, 상기 어플리케이션 데이터를 상기 어플리케이션 데이터세트에 추가하는 단계를 더 포함하는 어플리케이션 데이터를 관리하는 방법.
  6. 제 1항 내지 제 5항 중 어느 한 항에 있어서,
    상기 분산 시스템에 있는 다른 디바이스로부터 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로의 참여 요청을 수신하는 단계;
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득하는 단계; 및
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득한 것에 대한 응답으로, 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 단계를 더 포함하는 어플리케이션 데이터를 관리하는 방법.
  7. 제 6항에 있어서,
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득하는 단계는
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스에게 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로 상기 다른 디바이스를 추가하는 것에 대한 제안을 송신하는 단계; 및
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 표결의 정족수를 획득하는 단계를 포함하는 어플리케이션 데이터를 관리하는 방법.
  8. 제 6항에 있어서,
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 단계는
    상기 다른 디바이스로 상기 어플리케이션 데이터세트를 송신하는 단계; 및
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 대한 합의에 요구되는 정족수를 조정하는 단계를 포함하는 어플리케이션 데이터를 관리하는 방법.
  9. 제 1항 내지 제 8항 중 어느 한 항에 있어서,
    상기 분산 시스템은 분산 물리 접근 제어 시스템을 포함하고, 상기 디바이스 및 상기 다른 디바이스는 물리 접근 제어 유닛에 대응하는 어플리케이션 데이터를 관리하는 방법.
  10. 분산 시스템(110)에 있는 디바이스(115)로서,
    어플리케이션 데이터세트로 접근하는 어플리케이션에 의한 요청을 감지하되, 여기서 상기 어플리케이션 데이터세트는 분산 데이터세트에 대응하고;
    상기 어플리케이션 데이터세트에 대한 식별자가 상기 분산 시스템(110)의 분산 시스템 데이터세트에 리스트되어 있는지를 판단하고;
    상기 어플리케이션 데이터세트에 대한 식별자가 상기 분산 시스템 데이터세트에 리스트되어 있지 않은 것으로 판단한 것에 대한 응답으로 상기 분산 시스템 데이터세트의 상기 어플리케이션 데이터세트에 대한 식별자의 엔트리를 생성하며;
    상기 어플리케이션 데이터세트에 대한 식별자가 상기 분산 시스템 데이터세트에 존재하는 것으로 판단한 것에 대한 응답으로 상기 어플리케이션 데이터세트와 관련된 디바이스(115)를 포함하는 데이터세트 그룹으로의 참여 요청을 상기 분산 시스템(110)에 있는 다른 디바이스(115)에게 송신하는 로직(210)을 포함하는 어플리케이션 데이터를 관리하는 디바이스.
  11. 제 10항에 있어서,
    추가적으로 상기 로직은 상기 분산 시스템 데이터세트의 상기 어플리케이션 데이터세트에 대한 식별자의 엔트리를 생성한 것에 대한 응답으로 상기 디바이스의 저장 계층에 상기 어플리케이션 데이터세트를 생성하고;
    상기 어플리케이션 데이터세트를 생성한 것에 대한 응답으로, 상기 어플리케이션의 정보를 상기 생성된 어플리케이션 데이터세트에 추가하는 어플리케이션 데이터를 관리하는 디바이스.
  12. 제 10항 또는 제 11항에 있어서,
    추가적으로 상기 로직은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 디바이스가 상기 데이터세트 그룹에 추가되어 있다고 하는 통지를 수신하고;
    상기 분산 시스템에 있는 상기 다른 디바이스로부터 상기 어플리케이션 데이터세트를 수신하며;
    상기 수신된 어플리케이션 데이터세트를 상기 디바이스에 저장하는 어플리케이션 데이터를 관리하는 디바이스.
  13. 제 12항에 있어서,
    상기 수신된 어플리케이션 데이터세트는 상기 데이터세트 그룹의 멤버인 상기 디바이스의 리스트를 포함하되, 추가적으로 상기 로직은
    상기 어플리케이션 데이터세트로 어플리케이션 데이터를 추가하기 위하여 상기 데이터세트 그룹의 멤버인 상기 디바이스로 제안을 송신하고;
    상기 제안을 송신한 것에 대한 응답으로, 상기 어플리케이션 데이터를 상기 어플리케이션 데이터세트에 추가하기 위한 합의를 획득하며;
    상기 합의를 획득한 것에 대한 응답으로, 상기 어플리케이션 데이터를 상기 어플리케이션 데이터세트에 추가하는 어플리케이션 데이터를 관리하는 디바이스.
  14. 제 10항 내지 제 13항 중 어느 한 항에 있어서,
    추가적으로 상기 로직은 상기 분산 시스템에 있는 다른 디바이스로부터 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹으로의 참여 요청을 수신하고;
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득하며;
    상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 것에 대한 합의를 획득한 것에 대한 응답으로, 상기 생성된 어플리케이션 데이터세트와 관련된 디바이스의 데이터세트 그룹에 상기 다른 디바이스를 추가하는 어플리케이션 데이터를 관리하는 디바이스.
  15. 제 10항 내지 제14항 중 어느 한 항에 있어서,
    상기 분산 시스템은 분산 물리 접근 제어 시스템을 포함하고, 상기 디바이스 및 상기 다른 디바이스는 물리 접근 제어 유닛에 대응하는 어플리케이션 데이터를 관리하는 디바이스.
KR1020140121847A 2013-09-16 2014-09-15 어플리케이션 데이터를 관리하는 방법 및 디바이스 KR101908988B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/028,230 2013-09-16
US14/028,230 US9619668B2 (en) 2013-09-16 2013-09-16 Managing application data in distributed control systems

Publications (2)

Publication Number Publication Date
KR20150032190A true KR20150032190A (ko) 2015-03-25
KR101908988B1 KR101908988B1 (ko) 2018-10-17

Family

ID=49263128

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140121847A KR101908988B1 (ko) 2013-09-16 2014-09-15 어플리케이션 데이터를 관리하는 방법 및 디바이스

Country Status (6)

Country Link
US (1) US9619668B2 (ko)
EP (1) EP2849063B1 (ko)
JP (1) JP6400990B2 (ko)
KR (1) KR101908988B1 (ko)
CN (1) CN104462172B (ko)
TW (1) TWI623839B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190092483A (ko) * 2017-05-22 2019-08-07 알리바바 그룹 홀딩 리미티드 블록체인 서비스 수락 및 합의 방법과 디바이스

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017032422A1 (en) * 2015-08-27 2017-03-02 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for scaling of big data analytics
US9977786B2 (en) * 2015-12-23 2018-05-22 Github, Inc. Distributed code repository with limited synchronization locking
EP3553735A4 (en) * 2017-05-02 2019-11-06 Sustainable Medicine, Inc. SAFETY SYSTEM AND NODE DEVICE USED THEREIN
TWI784393B (zh) * 2021-01-15 2022-11-21 台達電子工業股份有限公司 工業設備監控方法及工業設備監控系統
CN114765558B (zh) 2021-01-15 2024-04-09 台达电子工业股份有限公司 工业设备监控方法及工业设备监控系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014669A (en) * 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
US5999712A (en) * 1997-10-21 1999-12-07 Sun Microsystems, Inc. Determining cluster membership in a distributed computer system
US6738772B2 (en) * 1998-08-18 2004-05-18 Lenel Systems International, Inc. Access control system having automatic download and distribution of security information
US7188145B2 (en) * 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
US20030014465A1 (en) 2001-07-16 2003-01-16 Antonio Mugica True distributed control
US7181450B2 (en) * 2002-12-18 2007-02-20 International Business Machines Corporation Method, system, and program for use of metadata to create multidimensional cubes in a relational database
US7334154B2 (en) * 2004-06-18 2008-02-19 Microsoft Corporation Efficient changing of replica sets in distributed fault-tolerant computing system
US7210060B2 (en) * 2004-12-30 2007-04-24 Emc Corporation Systems and methods for restoring data
JP4808173B2 (ja) * 2007-03-23 2011-11-02 株式会社日立製作所 分散システム、データ管理サーバ及びデータ流通方法
US8122497B2 (en) * 2007-09-10 2012-02-21 Redcloud, Inc. Networked physical security access control system and method
US8554865B2 (en) * 2007-09-21 2013-10-08 Honeywell International Inc. System and method for remotely administering and synchronizing a clustered group of access control panels
JP2010122773A (ja) * 2008-11-18 2010-06-03 Hitachi Ltd 分散処理システム、処理割当方法、および情報処理装置
EP2408984B1 (en) 2009-03-19 2019-11-27 Honeywell International Inc. Systems and methods for managing access control devices
US20110153737A1 (en) 2009-12-17 2011-06-23 Chu Thomas P Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network
WO2012042607A1 (ja) * 2010-09-29 2012-04-05 株式会社トライテック 分散コンピューティングシステム
US8538934B2 (en) * 2011-10-28 2013-09-17 Microsoft Corporation Contextual gravitation of datasets and data services

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190092483A (ko) * 2017-05-22 2019-08-07 알리바바 그룹 홀딩 리미티드 블록체인 서비스 수락 및 합의 방법과 디바이스
US10938577B2 (en) 2017-05-22 2021-03-02 Advanced New Technologies Co., Ltd. Blockchain service acceptance and consensus method and devices

Also Published As

Publication number Publication date
JP2015057696A (ja) 2015-03-26
US9619668B2 (en) 2017-04-11
CN104462172B (zh) 2019-05-17
CN104462172A (zh) 2015-03-25
EP2849063B1 (en) 2020-08-12
JP6400990B2 (ja) 2018-10-03
EP2849063A1 (en) 2015-03-18
US20150081737A1 (en) 2015-03-19
TW201527999A (zh) 2015-07-16
KR101908988B1 (ko) 2018-10-17
TWI623839B (zh) 2018-05-11

Similar Documents

Publication Publication Date Title
KR102076796B1 (ko) 익명의 접근을 제어하는 방법 및 디바이스
KR101908988B1 (ko) 어플리케이션 데이터를 관리하는 방법 및 디바이스
JP2020013591A (ja) 自己プロビジョニングアクセス制御
JP6307393B2 (ja) アクセス制御システムにおける分散されたイベント
JP2016515784A5 (ko)
KR101809994B1 (ko) 분산 제어 시스템의 컨센서스 로스
JP6147234B2 (ja) 分散データベースの結合

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant