KR20150032187A - 분산형 데이터베이스를 조인하는 디바이스 및 방법 - Google Patents

분산형 데이터베이스를 조인하는 디바이스 및 방법 Download PDF

Info

Publication number
KR20150032187A
KR20150032187A KR20140121839A KR20140121839A KR20150032187A KR 20150032187 A KR20150032187 A KR 20150032187A KR 20140121839 A KR20140121839 A KR 20140121839A KR 20140121839 A KR20140121839 A KR 20140121839A KR 20150032187 A KR20150032187 A KR 20150032187A
Authority
KR
South Korea
Prior art keywords
data
consensus
memory area
peer
specific data
Prior art date
Application number
KR20140121839A
Other languages
English (en)
Other versions
KR101757345B1 (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 KR20150032187A publication Critical patent/KR20150032187A/ko
Application granted granted Critical
Publication of KR101757345B1 publication Critical patent/KR101757345B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks

Abstract

본 발명의 방법은 분산형 물리적 접근 제어 시스템(distributed physical access control system)(110)의 분산형 데이터베이스를 조인하는 디바이스를 포함할 수 있다. 상기 방법은 메모리(350)의 제1 메모리 영역(360)에 제1 데이터(362)를 저장하는 것을 포함할 수 있다. 제1 메모리 영역(360)은 컨센서스 기반의(consensus-based) 분산형 데이터베이스(360)에 대해 데이터를 저장하도록 지정될 수 있고, 컨센서스 기반의 분산형 데이터베이스(360)는 네트워크(110)의 다른 디바이스들(115) 사이에 분산될 수 있다. 상기 방법은 제1 데이터(362)를 디바이스(115)의 메모리(350)의 제2 메모리 영역(370)에 복사하고, 디바이스(115)를 네트워크(110)에 추가하고, 네트워크의 다른 디바이스들로부터 데이터를 수신하고 수신된 데이터를 제1 메모리 영역(360)에 저장함에 의해 수신된 데이터를 컨센서스 기반의 분산형 데이터베이스(360)에 추가하고, 제1 데이터(372)를 제2 메모리 영역(370)으로부터 제1 메모리 영역(360)으로 복사함에 의해 제1 데이터(372)를 컨센서스 기반의 분산형 데이터베이스(360)에 추가하는 것을 포함할 수 있다.

Description

분산형 데이터베이스를 조인하는 디바이스 및 방법{DEVICE AND METHOD FOR JOINING A DISTRIBUTED DATABASE}
본 발명은 분산형 물리적 접근 제어 시스템(distributed physical access control system)의 분산형 데이터베이스를 조인하는 디바이스, 보다 일반적으로, 분산형 데이터베이스를 조인하는 디바이스에 관한 것이다.
접근 제어 시스템은 시설에 대한 물리적 접근을 제어하기 위해 사용될 수 있다. 접근 제어 시스템 (및 다른 타입의 제어 시스템)은 많은 컨트롤러를 포함할 수 있고, 각각의 컨트롤러는 시스템의 서로 다른 부분을 제어할 수 있다. 각각의 컨트롤러는 구성 정보(configuration information), 주변기기 설정(peripheral settings) 등과 같은 디바이스 별(device-specific) 정보를 저장할 수 있다.
본 발명의 목적은 분산형 데이터베이스를 조인하는 디바이스 및 방법을 제공하는 것이다.
본 발명의 일 실시예에서, 방법은 디바이스의 메모리의 제1 메모리 영역에 제1 데이터를 저장하는 것을 포함할 수 있다. 제1 메모리 영역은 컨센서스 기반의(consensus-based) 분산형 데이터베이스에 대해 데이터를 저장하도록 지정될 수 있다. 제1 데이터는 피어 투 피어(peer-to-peer) 네트워크의 다른 디바이스들 사이에 분산되는 컨센서스 기반의 데이터베이스에 추가될 수 있다. 상기 방법은 제1 데이터를 디바이스의 메모리의 제2 메모리 영역에 복사하고, 제1 데이터를 제2 메모리 영역에 복사한 후 디바이스를 피어 투 피어 네트워크에 추가하는 것을 포함할 수 있다. 상기 방법은 또한 피어 투 피어 네트워크의 다른 디바이스들로부터 데이터를 수신하고, 수신된 데이터를 제1 메모리 영역에 저장함에 의해 수신된 데이터를 컨센서스 기반의 분산형 데이터베이스에 추가하는 것을 더 포함할 수 있다. 상기 방법은 디바이스를 피어 투 피어 네트워크에 추가한 후, 제1 데이터를 제2 메모리 영역으로부터 제1 메모리 영역으로 복사함에 의해 제1 데이터를 컨센서스 기반의 분산형 데이터베이스에 추가하는 것을 포함할 수 있다. 또한, 상기 방법은 제1 데이터를 다른 피어 투 피어 네트워크 디바이스들에게 컨센서스 기반의 분산형 데이터베이스의 일부로서 분산시키는 것을 포함할 수 있다.
본 실시예에서, 제1 데이터는 디바이스 별 데이터(device-specific data)를 포함할 수 있고, 제2 메모리 영역은 비-컨센서스 기반의(non-consensus-based) 데이터베이스에 대해 데이터를 저장하도록 지정될 수 있다. 디바이스 별 데이터는 분산형 제어 시스템의 컨트롤러의 구성 데이터(configuration data)를 포함할 수 있다. 구성 데이터는 컨트롤러에 연결된 주변기기들(peripherals)을 정의하는 데이터를 포함할 수 있다.
본 실시예에서, 디바이스는 분산형 물리적 접근 제어 시스템(distributed physical access control system, DPACS)의 컨트롤러를 포함할 수 있다. 다른 디바이스들은 분산형 물리적 접근 제어 시스템의 다른 컨트롤러들을 포함할 수 있다. 본 실시예에서, 제1 데이터는 컨트롤러를 구성하기 위한 데이터를 포함할 수 있다.
본 발명의 다른 실시예에서, 방법은 컨센서스 기반의 분산형 데이터베이스를 디바이스의 메모리의 제1 메모리 영역에 저장하는 것을 포함할 수 있다. 디바이스는 컨센서스 기반의 분산형 데이터를 피어 투 피어 네트워크의 다른 디바이스들 사이에 분산시키는 피어 투 피어 네트워크에 연결될 수 있다. 상기 방법은 컨센서스 기반의 분산형 데이터베이스에 저장된 제1 데이터를 디바이스의 메모리의 제2 메모리 영역에 복사하고, 제1 데이터를 제2 메모리 영역에 복사한 후 디바이스를 피어 투 피어 네트워크로부터 제거하는 것을 포함할 수 있다. 상기 방법은 제1 데이터를 제2 메모리 영역에 복사하고 디바이스를 피어 투 피어 네트워크로부터 제거한 후, 컨센서스 기반의 분산형 데이터베이스의 데이터를 삭제하는 것을 포함할 수 있다. 상기 방법은 컨센서스 기반의 분산형 데이터베이스의 데이터를 삭제한 후, 제2 메모리 영역으로부터의 제1 데이터를 컨센서스 기반의 분산형 데이터베이스에 복사하는 것을 포함할 수 있다.
본 실시예에서, 제1 데이터는 디바이스 별 데이터를 포함하고, 제2 메모리 영역은 비-컨센서스 기반의 데이터베이스에 대해 데이터를 저장하도록 지정될 수 있다. 또한, 디바이스 별 데이터는 분산형 제어 시스템의 컨트롤러의 구성 정보를 포함할 수 있다. 본 실시예에서, 구성 데이터는 컨트롤러에 연결된 주변기기들을 정의하는 데이터를 포함할 수 있다. 또한, 디바이스는 분산형 물리적 접근 제어 시스템의 컨트롤러일 수 있고, 다른 디바이스들은 분산형 물리적 접근 제어 시스템의 다른 컨트롤러들을 포함할 수 있다. 본 실시예에서, 제1 데이터는 컨트롤러를 구성하기 위한 데이터를 포함할 수 있다.
본 발명의 다른 실시예에서, 디바이스는 컨센서스 기반의 분산형 데이터베이스에 대해 데이터를 저장하기 위한 디바이스의 메모리의 제1 메모리 영역을 포함할 수 있다. 제1 데이터는 피어 투 피어 네트워크의 다른 디바이스들 사이에 분산되는 컨센서스 기반의 분산형 데이터베이스에 추가될 것이다. 디바이스는 제1 데이터를 디바이스의 메모리의 제2 메모리 영역에 복사하고, 제1 데이터를 제2 메모리 영역에 복사한 후, 디바이스를 피어 투 피어 네트워크에 추가하기 위한 프로세서를 포함할 수 있다. 디바이스는 또한 피어 투 피어 네트워크의 다른 디바이스들로부터 데이터를 수신하는 수신기를 포함할 수 있다. 또한, 프로세서는 수신된 데이터를 제1 메모리 영역에 저장함에 의해 수신된 데이터를 컨센서스 기반의 분산형 데이터베이스에 추가하고, 디바이스를 피어 투 피어 네트워크에 추가한 후, 제2 메모리 영역으로부터 제1 데이터를 제1 메모리 영역으로 복사함에 의해 제1 데이터를 컨센서스 기반의 분산형 데이터베이스에 추가하도록 구성될 수 있다. 디바이스는 제1 데이터를 피어 투 피어 네트워크의 다른 디바이스들에 컨센서스 기반의 분산형 데이터베이스의 일부로서 전송하는 전송기를 포함할 수 있다.
본 실시예에서, 제1 데이터는 디바이스 별 데이터를 포함할 수 있고, 제2 메모리 영역은 비-컨센서스 기반의 데이터베이스에 대해 데이터를 저장하도록 지정될 수 있다. 디바이스 별 데이터는 분산형 제어 시스템의 컨트롤러의 구성 데이터를 포함할 수 있다. 디바이스 별 데이터는 컨트롤러에 연결된 주변기기들을 정의하는 데이터를 포함할 수 있다.
본 실시예에서, 디바이스는 분산형 물리적 접근 제어 시스템의 컨트롤러를 포함하고, 다른 디바이스들은 분산형 물리적 접근 제어 시스템의 다른 컨트롤러들을 포함할 수 있다. 본 실시예에서, 제1 데이터는 컨트롤러를 구성하기 위한 데이터를 포함할 수 있다.
본 발명의 다른 실시예에서, 디바이스는 컨센서스 기반의 분산형 데이터베이스를 저장하기 위한 디바이스의 메모리의 제1 메모리 영역을 포함할 수 있다. 디바이스는 피어 투 피어 네트워크의 다른 디바이스들 사이에 컨센서스 기반의 분산형 데이터베이스를 분산시키는 피어 투 피어 네트워크에 연결될 수 있다. 디바이스는 컨센서스 기반의 분산형 데이터베이스에 저장된 제1 데이터를 디바이스의 메모리의 제2 메모리 영역에 복사하기 위한 프로세서를 포함할 수 있다. 프로세서는 제1 데이터를 제2 메모리 영역에 복사한 후, 디바이스를 피어 투 피어 네트워크로부터 제거하도록 구성될 수 있다. 프로세서는 제1 데이터를 제2 메모리 영역에 복사하고 디바이스를 피어 투 피어 네트워크로부터 제거한 후, 컨센서스 기반의 분산형 데이터베이스의 데이터를 삭제하도록 구성될 수 있다. 프로세서는 컨센서스 기반의 분산형 데이터베이스의 데이터를 삭제한 후, 제2 메모리 영역으로부터의 제1 데이터를 컨센서스 기반의 분산형 데이터베이스로 복사하는 것을 포함할 수 있다.
본 실시예에서, 제1 데이터는 디바이스 별 데이터를 포함할 수 있고, 제2 메모리 영역은 비-컨센서스 기반의 데이터베이스에 대해 데이터를 저장하도록 지정될 수 있다. 디바이스 별 데이터는 분산형 제어 시스템의 컨트롤러의 구성 정보를 포함할 수 있다. 컨트롤러를 구성하기 위한 데이터는 컨트롤러에 연결된 주변기기들을 정의하는 데이터를 포함할 수 있다.
본 실시예에서, 디바이스는 분산형 물리적 접근 제어 시스템의 컨트롤러를 포함하고, 다른 디바이스들은 분산형 물리적 접근 제어 시스템의 다른 컨트롤러들을 포함할 수 있다. 본 실시예에서, 제1 데이터는 컨트롤러를 구성하기 위한 데이터를 포함할 수 있다.
다른 실시예들은 아래에서 설명된다. 즉, 상술한 실시예들은 단지 예로서 제공된 것들이다.
도 1은 본 발명의 일 실시예에 따른 환경(environment)의 예를 설명하기 위한 블록도이다.
도 2a 및 도 2b는 도 1의 시스템 유닛의 예시적인 구성요소들을 설명하기 위한 블록도이다.
도 3a 및 도 3b는 일 실시예에서 도 1의 시스템 유닛의 예시적인 기능적 구성요소들을 설명하기 위한 블록도이다.
도 3c는 일 실시예에서 도 3b의 스토리지 레이어의 예시적인 기능적 구성요소들을 설명하기 위한 블록도이다.
도 4a는 일 구성에서 예시적인 시스템 유닛을 설명하기 위한 블록도이다.
도 4b는 스탠드 얼론(stand-alone) 구성에서 도 4a의 시스템 유닛을 설명하기 위한 블록도이다.
도 5a 내지 도 5c는 네트워크 구성에서 도 4a의 시스템 유닛을 설명하기 위한 블록도이다.
도 6은 도 1의 관리 디바이스의 예시적인 구성요소들을 설명하기 위한 블록도이다.
도 7은 다른 시스템 유닛의 네트워크에 도 4a의 시스템 유닛을 추가하기 위한 예시적인 프로세스를 설명하기 위한 순서도이다.
도 8은 다른 시스템 유닛의 네트워크로부터 도 4a의 시스템 유닛을 제거하기 위한 예시적인 프로세스를 설명하기 위한 순서도이다.
이하에서는 첨부된 도면을 참조하여 상세히 설명되며, 여러 도면에서의 동일한 참조 번호는 동일하거나 유사한 구성 요소를 나타낸다.
아래에서 설명된 본 발명의 일 실시예는 물리적 접근 제어 시스템(physical access control system, PACS)에 관한 것이다. 본 발명의 다른 실시예들은, 건물 관리, 모니터링 및 보안 시스템 내의 여러 어플리케이션을 제어하기 위한 시스템의 컨트롤러와 같이, PACS가 아닌 디바이스 또는 시스템을 포함할 수 있다. 본 발명의 일 실시예는 예를 들어 가정 자동화 시스템(home automation system)의 컨트롤러를 포함할 수 있다.
상술된 바와 같이, 제어 시스템은 많은 컨트롤러를 가질 수 있고, 각각의 컨트롤러는 시스템의 여러 부분을 제어할 수 있다. 각각의 컨트롤러는 구성 데이터(configuration data), 주변기기 설정(peripheral settings) 등과 같은 디바이스 별 데이터(device-specific data)를 저장할 수 있다. 만일 이러한 디바이스 별 데이터가, 예컨대, 컨센서스 기반의(consensus-based) 데이터베이스에 분산형 방식으로 저장된다면, 대응하는 컨트롤러가 컨센서스 기반의 데이터베이스를 분산시키는 다른 컨트롤러의 다르거나 새로운 네트워크를 조인(join)하는 경우, 이러한 디바이스 별 데이터는 제거, 삭제 또는 오버라이트(overwrite)될 수 있다. 아래에서 설명되는 본 발명의 일 실시예에서, 컨트롤러가 컨센서스 기반의 데이터베이스를 조인하는 경우, 디바이스 별 정보는 (디바이스 별 데이터의 일부의 손실을 방지하기 위한 방식으로) 유지되고 컨센서스 기반의 데이터베이스에 도입될 수 있다.
마찬가지로, 만일 디바이스 별 데이터가, 예컨대, 컨센서스 기반의 데이터베이스에 분산형 방식으로 저장된다면, 대응하는 컨트롤러가 컨센서스 기반의 데이터베이스를 분산시키는 컨트롤러의 네트워크를 떠나는 경우, 이러한 디바이스 별 데이터는 제거, 삭제 또는 오버라이트될 수 있다. 아래에서 설명되는 본 발명의 일 실시예에서, 컨트롤러가 컨센서스 기반의 데이터베이스를 떠나는 경우, 디바이스 별 정보는 유지되고 컨센서스 기반의 데이터베이스에 재도입될 수 있다.
본 발명의 하나 이상의 실시예는 분산형 물리적 접근 제어 시스템(distributed physical access control system)의 분산형 데이터베이스를 조인하는 디바이스에 관한 것이다. 아래에서 설명되는 바와 같이, 본 발명의 다른 실시예들은 (예컨대, 물리적 접근 제어 시스템이 아닌) 다른 타입의 시스템의 분산형 데이터베이스를 조인하는 것에 관한 것이다.
도 1은 아래에서 설명되는 시스템 및 방법이 구현될 수 있는 예시적인 환경(environment)(100)을 설명하기 위한 블록도이다. 도 1에 도시된 바와 같이, 환경(100)은 분산형 제어 시스템(110)(예컨대, 분산형 물리적 접근 제어 시스템), 네트워크(120) 및 관리 디바이스(130)을 포함할 수 있다.
분산형 제어 시스템(110)은 분산형 컴퓨팅 시스템을 포함할 수 있고, 분산형 컴퓨팅 시스템은 시스템 유닛(115-A) 내지 시스템 유닛(115-N)(포괄하여 "시스템 유닛들(115)" 또는 "유닛들(115)"로, 그리고 개별적으로 "유닛(115)"으로 참조됨)을 포함한다. 본 발명의 일 실시예에서, 시스템 유닛(115)은 물리적 접근 제어 디바이스를 포함한다. 예를 들어, 시스템 유닛(115)은, 방 또는 방의 그룹과 같은 보안 영역에 대한 접근을 제어하는 컨트롤러를 포함할 수 있다. 시스템 유닛(115)은 리더 디바이스(reader device)를 통해 자격 증명(credential)(예컨대, 접근 카드 자격 증명)을 수신할 수 있고, 자격 증명이 진본인지 그리고 보안 영역에 접근하기 위한 권한과 연관된 것인지 여부를 판단할 수 있다. 만일 그렇다면, 컨트롤러는 문의 잠금장치(lock)를 열기 위한 명령을 발행하거나 보안 영역에 접근하는 것을 허가하는 것과 연관된 다른 작업을 수행할 수 있다.
분산형 제어 시스템(110)은 하나 이상의 분산형 데이터 세트(dataset)을 포함할 수 있다. 분산형 데이터 세트는, 분산형 데이터 세트와 연관된 시스템 유닛들(115)에 분산형 방식으로 (그리고 잠재적으로 중복되게(potentially redundant)) 저장된 데이터를 포함한다. 본 발명의 일 실시예에서, 분산형 데이터 세트는 둘 이상의 디바이스에 복제된다. 예를 들어, 분산형 데이터 세트 전체는 모든 유닛들(115)에 저장될 수 있다. 본 발명의 다른 실시예에서, 하나 이상의 유닛들(115)은 분산형 데이터 세트의 서브세트(subset)를 저장할 수 있다. 또한, 분산형 데이터 세트는 시스템 유닛들(115) 모두에 연관될 수 있거나, 시스템 유닛들(115)의 서브세트에 연관될 수 있다.
본 발명의 일 실시예에서, 유닛들(115)은, 분산된 데이터 세트(예컨대, 컨센서스 기반의 분산형 데이터베이스)의 변경에 영향을 미치기 위해 컨센서스(consnesus)에 도달할 수 있다. 시스템 유닛(115)은 컨센서스 기반의 분산형 데이터 세트에 대한 변경을 제안(propose)할 수 있다. 만일 분산형 데이터 세트와 연관된 유닛들(115)의 정족수(quorum)에 의해 상기 변경이 수용되면, 유닛들(115)는 컨센서스에 도달하고, 연관된 유닛(115)의 각각의 분산형 데이터 세트의 각각의 로컬 복사본에 대한 변경을 전파할 수 있다. 즉, 만일 연관된 유닛들(115)의 정족수가 상기 변경에 대해 투표한다면, 분산형 데이터 세트의 변경에 관한 컨센서스는 도달될 수 있다.
이와 관련하여, 정족수는 연관된 유닛들(115)의 최소 대다수(smallest majority)에 대응될 수 있다. 예를 들어, 만일 분산형 데이터 세트가 N 개의 유닛들(115)에 연관된다면, 만일 N이 짝수이고 N / 2 + 1 개의 연관된 유닛들(115)이 상기 변경에 대해 투표하거나, N이 홀수이고 (N - 1) / 2 + 1 개의 연관된 유닛들(115)이 상기 변경에 대해 투표한다면 정족수는 도달될 수 있다. 정족수에 도달하기 위해 최소 대다수를 요구하는 것은, 충돌하는 2 개의 제안(proposal)을 고려하는 경우, 시스템 유닛(115)의 적어도 하나가 제안들을 수신하고 컨센서스에 대한 제안들 중 하나를 선택하는 것을 보장할 수 있다.
컨센서스 기반의 분산형 데이터 세트는, 분산형 데이터 세트와 연관된 임의의 시스템 유닛(115)이 분산형 데이터 세트에 의해 관리되는 정보(예컨대, 본 발명의 실시예에서의 모든 정보)를 포함하는 것을 보장할 수 있다. 예를 들어, 분산형 데이터 세트는 접근 규칙을 포함할 수 있고, 접근 규칙은 분산형 데이터 세트와 연관된 임의의 시스템 유닛(115)에 대해 사용 가능할 수 있다. 따라서, 하나 이상의 분산형 데이터 세트의 결과로서, 본 발명의 일 실시예에서, 제어 시스템(110)은, 서버 디바이스와 같은 중앙 제어 디바이스가 없는 비중앙형(decentralized) 시스템에 대응할 수 있다. 본 발명의 다른 실시예에서, 제어 시스템(110)은 비중앙형 시스템과 (서버 디바이스와 같은) 중앙 제어 디바이스를 모두 포함할 수 있다. 제어 시스템(100)에 대한 변경은 임의의 시스템 유닛(115)에서 구성될 수 있고, 만일 상기 변경이 분산형 데이터 세트와 연관된다면, 상기 변경은 분산형 데이터 세트와 연관된 다른 시스템 유닛들(115)에 전파될 수 있다. 또한, 제어 시스템(110)은, 단일 지점의 고장을 방지할 수 있으므로, 디바이스 고장에 관해 견고성을 드러낼 수 있다. 예를 들어, 만일 특정 시스템 유닛(115)이 고장나면, 다른 유닛들(115)은 데이터의 손실 없이 (또는 데이터의 손실을 최소화하면서) 작동을 계속할 수 있다. 본 발명의 다른 실시예에서, 변경은 컨센서스 없는 분산형 데이터 세트에 대해 이루어질 수 있다.
네트워크(120)는 유닛들(115)이 서로 통신 가능하도록 할 수 있고, 및/또는 관리 디바이스(130)가 특정 유닛들(150)과 통신 가능하도록 할 수 있다. 네트워크(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), 애드 혹(ad hoc) 네트워크, 인트라넷, 인터넷, 광섬유 기반의 네트워크, 무선 네트워크 및/또는 이들의 조합 또는 다른 타입의 네트워크를 포함할 수 있다.
관리 디바이스(130)는 관리자가 제어 시스템(110)을 구성하고, 제어 시스템(110)의 구성을 변경하고, 제어 시스템(110)으로부터 정보를 수신하고, 및/또는 제어 시스템(110)을 관리하기 위해 특정 유닛(115)에 접속하는 것을 허용할 수 있다. 관리 디바이스(130)는 하나 이상의 유닛들(115)과 통신하도록 구성된 임의의 디바이스를 포함할 수 있다. 예를 들면, 관리 디바이스(130)는 휴대용 통신 디바이스(예컨대, 모바일 폰, 스마트 폰, 패블릿(phablet) 디바이스, GPS(global positioning system) 디바이스, 및/또는 다른 타입의 무선 디바이스); 개인용 컴퓨터 또는 워크스테이션; 서버 디바이스; 랩톱, 태블릿 또는 다른 타입의 휴대용 컴퓨터; 및/또는 통신 기능이 있는 임의의 타입의 디바이스를 포함할 수 있다. 본 발명의 일 실시예에서, 관리 디바이스(130)는 유닛(115)의 일부분일 수 있다. 이와 같이, 관리자는 하나 이상의 유닛들(115)로부터 제어 시스템(110)을 관리할 수 있다.
도 1은 환경(100)의 예시적인 구성요소들을 도시하고 있지만, 다른 구현에서, 환경(100)은 도 1에 도시된 것에 비해 더 적은 구성요소들, 다른 구성요소들, 다르게 배치된 구성요소들 또는 추가적인 구성요소들을 포함할 수 있다. 추가적으로 또는 이와 다르게, 환경(100)의 임의의 디바이스(또는 임의의 디바이스의 그룹)는 환경(100)의 하나 이상의 다른 디바이스에 의해 수행되는 것으로 설명된 기능을 수행할 수 있다.
도 2a 및 도 2b는 유닛(115)의 예시적인 구성요소들을 설명하기 위한 블록도이다. 도 2a에 도시된 바와 같이, 유닛(115)은 컨트롤러(210) 및 하나 이상의 주변 디바이스(230)를 포함할 수 있다. 컨트롤러(210)는 유닛(115)의 작동을 제어할 수 있고, 다른 유닛(115)과 통신할 수 있고, 관리 디바이스(130)와 통신할 수 있고, 및/또는 주변 디바이스(230)를 제어할 수 있다. 주변 디바이스(230)는 컨트롤러(210)에 정보를 제공하는 디바이스를 포함할 수 있고, 상기 디바이스는 컨르톨러(210)에 의해 제어되고, 및/또는 이와 다르게는 컨트롤러(210)와 통신할 수 있다. 본 발명의 일 실시예에서, 주변 디바이스(230)는 임의의 타입의 보안 디바이스를 포함할 수 있다. 예를 들어, 주변 디바이스(230)는 리더 디바이스(240), 잠금 디바이스(250), 센서(260)(예컨대, 카메라) 및/또는 액추에이터(actuator)(270)과 같은 보안 디바이스를 포함할 수 있다.
도 2b에 도시된 바와 같이, 컨트롤러(210)는 버스(212), 프로세서(214), 메모리(216), 네트워크 인터페이스(218), 주변기기 인터페이스(220) 및 하우징(222)을 포함할 수 있다. 버스(212)는 컨트롤러(210)의 구성요소들 사이에 통신을 허용하는 경로를 포함한다. 프로세서(214)는 임의의 타입의 단일 코어 프로세서, 다중 코어 프로세서, 마이크로프로세서, 래치 기반의 프로세서(latch-based processor) 및/또는 프로세싱 로직 (또는 프로세서, 마이크로프로세서 및/또는 프로세싱 로직의 패밀리(family))를 포함할 수 있고, 이들은 명령어를 해석하고 실행할 수 있다. 본 발명의 다른 실시예에서, 프로세서(214)는 ASIC(application-specific integrated circuit), FPGA(field-programmable gate array) 및/또는 다른 타입의 집적 회로 또는 프로세싱 로직을 포함할 수 있다.
메모리(216)는 정보, 데이터 및/또는 명령어를 저장한다. 메모리(216)는 임의의 타입의 동적, 휘발성 및/또는 비휘발성 스토리지 디바이스를 포함할 수 있다. 메모리(216)는 프로세서(214)에 의해 실행되는 명령 또는 프로세서(214)에 의해 사용되는 정보를 저장할 수 있다. 예를 들어, 메모리(216)는 RAM(random access memory) 또는 다른 타입의 동적 스토리지 디바이스, ROM(read-only memory) 또는 다른 타입의 정적 스토리지 디바이스, CAM(content addressable memory), 자기 및/또는 광학 레코딩 메모리 디바이스와 이에 대응되는 드라이브(예컨대, 하드 디스크 드라이브, 광학 드라이브 등) 및/또는 플래시 메모리와 같은 이동식 형태의 메모리를 포함할 수 있다.
네트워크 인터페이스(218)는 컨트롤러(210)가, 유선 통신 링크(예컨대, 도전성 와이어, 연선 케이블(twisted pair cable), 동축 케이블, 전송 선로(transmission line), 광섬유 케이블 및/또는 도파로(waveguide) 등), 무선 통신 링크(예컨대, 라디오주파수, 적외선 및/또는 가시 광 등) 또는 무선 및 유선 통신 링크의 조합을 통해 다른 디바이스들 및/또는 시스템들과 통신(예컨대, 데이터를 송신 및/또는 수신) 가능하도록 하는 송수신기(예컨대, 송신기 및/또는 수신기)를 포함할 수 있다. 네트워크 인터페이스(218)는 베이스밴드 신호를 RF(radiofrequency) 신호로 변환하는 송신기 및/또는 RF 신호를 베이스밴드 신호로 변환하는 수신기를 포함할 수 있다. 네트워크 인터페이스(218)는 RF 신호를 송수신하기 위한 안테나에 결합될 수 있다.
네트워크 인터페이스(218)는 입력 및/또는 출력 포트, 입력 및/또는 출력 시스템 및/또는 다른 디바이스에 대한 데이터의 전송을 용이하게 하는 다른 입력 및 출력 구성요소를 포함하는 논리적 구성요소를 포함할 수 있다. 예를 들면, 네트워크 인터페이스(218)는 유선 통신을 위한 네트워크 인터페이스 카드(예컨대, 이더넷(Ethernet) 카드) 및/또는 무선 통신을 위한 무선 네트워크 인터페이스(예컨대, 와이파이(WiFi)) 카드를 포함할 수 있다. 네트워크 인터페이스(218)는 또한 케이블을 거치는 통신을 위한 USB(universal serial bus), 블루투스(Bluetooth) 무선 인터페이스, RFID(radio-frequency identification) 인터페이스, NFC(near-field communications) 무선 인터페이스 및/또는 일 형태로부터 다른 형태로 데이터를 변환하는 임의의 다른 타입의 인터페이스를 포함할 수 있다.
주변기기 인터페이스(220)는 하나 이상의 주변 디바이스(230)와 통신하도록 구성될 수 있다. 예를 들어, 주변기기 인터페이스(220)는 입력 및/또는 출력 포트, 입력 및/또는 출력 시스템 및/또는 주변 디바이스(230)에 대한 데이터의 전송을 용이하게 하는 다른 입력 및 출력 구성요소를 포함하는 하나 이상의 논리적 구성요소를 포함할 수 있다. 일례로, 주변기기 인터페이스(220)는 직렬 주변기기 인터페이스 버스 프로토콜(Serial Peripheral Interface Bus protocol)(예컨대, 위갠드 프로토콜(Wiegand protocol) 및/또는 RS-485 프로토콜)을 사용하는 주변 디바이스(230)와 통신할 수 있다. 다른 예로, 주변기기 인터페이스(220)는 다른 타입의 프로토콜을 사용할 수 있다. 본 발명의 일 실시예에서, 네트워크 인터페이스(218)는 또한 주변 디바이스(230)를 컨트롤러(210)에 결합시키기 위한 주변기기 인터페이스로서 동작할 수 있다.
하우징(222)은 컨트롤러(210)의 구성요소들을 포함하고, 환경으로부터 컨트롤러(210)의 구성요소들을 보호할 수 있다. 본 발명의 일 실시예에서, 하우징(222)은 하나 이상의 주변 디바이스(230)를 포함할 수 있다. 본 발명의 다른 실시예에서, 하우징(222)은 관리 디바이스(130)를 포함할 수 있다. 하우징(222)은 다중 시스템 유닛(115)/컨트롤러(210) 시스템에서 다른 시스템 유닛들(115) 및/또는 컨트롤러(210)와 하나의 시스템 유닛(115) 및/또는 컨트롤러(210)의 경계를 정의할 수 있다.
아래에서 설명되는 바와 같이, 컨트롤러(210)는 하나 이상의 디바이스 상의 하나 이상의 서비스를 위한 사용자 자격 증명을 분산시키는 것과 관련된 작업들을 수행할 수 있다. 컨트롤러(210)는 이러한 작업들을 ASIC의 하드와이어드 회로(hardwired circuitry)의 결과로서 수행할 수 있다. 컨트롤러(210)는 또한 (또는 이와 다르게) 이러한 작업들을, 메모리(216)와 같은 컴퓨터로 판독 가능한 매체에 포함된 소프트웨어 명령어를 실행하는 프로세서(214)에 대한 응답으로 수행할 수 있다. 컴퓨터로 판독 가능한 매체는 비일시적(non-transitory) 및/또는 유형의(tangible) 메모리 디바이스를 포함할 수 있다. 메모리(216)는 단일의 물리적 메모리 디바이스 또는 다중의 물리적 메모리 디바이스에 걸친 스프레드(spread) 내에서 구현될 수 있다. 소프트웨어 명령어는 다른 컴퓨터로 판독 가능한 매체 또는 다른 디바이스로부터 판독되어 메모리(216)에 저장될 수 있다. 메모리(216)에 포함된 소프트웨어 명령어는 프로세서(214)로 하여금 본 명세서에서 설명된 프로세스들을 수행하도록 할 수 있다. 따라서, 본 명세서에서 설명된 구현예들은 하드웨어 회로 및 소프트웨어의 어떤 특정 조합에 한정되지 않는다.
주변 디바이스(230)로 돌아와서, 리더 디바이스(240)는 사용자로부터 자격 증명을 리드하는 디바이스를 포함할 수 있고, 상기 자격 증명을 컨트롤러(210)에 제공한다. 예를 들어, 리더 디바이스(240)는 사용자로부터 문자 숫자식의(alphanumeric) PIN(personal identification number)을 수신하도록 구성된 키패드; RFID(radiofrequency identification) 태그와 같은, 자기 스트립 또는 다른 타입의 스토리지 디바이스 상의 카드 코드를 저장하는 카드를 구성하기 위한 카드 리더; 사용자의 지문을 리드하도록 구성된 지문 리더; 사용자의 홍채를 리드하도록 구성된 홍채 리더; 사용자의 음성 서명(voice signature)를 녹취하기 위한 마이크 및 음성 서명 식별기(voice signature identifier); NFC 리더; 얼굴 인식 소프트웨어와 연관된 카메라; 음성 인식 소프트웨어와 연관된 마이크; 및/또는 다른 타입의 리더 디바이스를 포함할 수 있다. 리더 디바이스(240)는 자격 증명을 제공할 수 있는 임의의 타입의 보안 디바이스를 포함할 수 있고, 센서(260)를 참조하여 아래에서 설명되는 임의의 센서 디바이스와 같은 하나 이상의 센서 디바이스를 포함할 수 있다. 예를 들어, 리더 디바이스(240)는 얼굴 인식에 사용되는 카메라 및/또는 음성 인식에 사용되는 마이크를 포함할 수 있다. 이 경우, 사용자의 음성 또는 얼굴은 인증을 위한 자격 증명으로서 사용될 수 있다.
잠금 디바이스(250)는 컨트롤러(210)에 의해 제어되는 잠금장치를 포함할 수 있다. 잠금 디바이스(250)는 문, 창문, HVAC 벤트(vent) 및/또는 보안 영역에 대한 다른 타입의 접근 개구(access opening)을 잠글(예컨대, 개폐되는 것을 방지할) 수 있다. 예를 들어, 잠금 디바이스(250)는 전자기식 잠금장치; 컨트롤러(210)에 의해 제어되는 모터가 구비된 기계식 잠금장치; 전자기계식 잠금장치 및/또는 다른 타입의 잠금장치를 포함할 수 있다.
센서(260)는 센싱 디바이스를 포함할 수 있다. 예를 들어, 센서(260)는 문의 개폐 여부를 감지하는 문 센서; 가시광 모니터링 디바이스(예컨대, 카메라), 적외선 모니터링 디바이스, 열 서명 모니터링 디바이스(heat signature monitoring device), 오디오 모니터링 디바이스(예컨대, 마이크) 및/또는 다른 타입의 모니터링 디바이스; 움직임 센서, 열 센서, 압력 센서 및/또는 다른 타입의 알람 센서와 같은 알람 센서; 유닛(115) 내부에 위치한 위치 센서와 같은 탬퍼 센서(tamper sensor); 및/또는 유닛(115)과 연관된 보안 영역 내에 위치한 "퇴장 요청(request to exit)" 버튼 및/또는 다른 타입의 센서 디바이스를 포함할 수 있다. 아래에서 설명되는 실시예들에서, 센서(260)는 "카메라(260)"로서 참조될 수 있다.
액추에이터(270)는 액추에이터 디바이스를 포함할 수 있다. 예를 들어, 액추에이터(270)는 조명 디바이스를 제어할 수 있다. 다른 예로서, 액추에이터(270)는 도난 경보 작동기(burglar alarm activator); 메시지를 재생하거나 알람 신호를 발생시키는 스피커; 디스플레이 디바이스; 센서(260)를 이동시키는(예컨대, 카메라 또는 다른 모니터링 디바이스의 시야(field of view)를 제어하는) 모터; 문, 창문, HVAC 벤트 및/또는 보안 영역과 연관된 다른 개구를 개폐하는 모터; 잠금 디바이스(250)를 잠금 또는 잠금해제 위치에 고정시키는 모터; 소화 디바이스(fire extinguishing device) 및/또는 다른 타입의 액추에이터 디바이스를 포함할 수 있다.
도 2a 및 도 2b는 유닛(115)의 예시적인 구성요소들을 도시하고 있지만, 다른 구현에서, 유닛(115)은 도 2a 및 도 2b에 도시된 것에 비해 더 적은 구성요소들, 다른 구성요소들, 다르게 배치된 구성요소들 또는 추가적인 구성요소들을 포함할 수 있다. 예를 들어, 도 2a에는 단일 리더 디바이스(240), 단일 잠금 디바이스(250), 단일 센서(260) 및 단일 액추에이터(270)가 도시되어 있지만, 실제로, 주변 디바이스(230)는 다중 리더 디바이스(240), 다중 잠금 디바이스(250), 다중 센서(260) 및/또는 다중 액추에이터(270)를 포함할 수 있다. 주변 다비이스(230)는 또한 도 2a에 도시된 하나 이상의 디바이스를 포함하지 않을 수도 있다. 추가적으로 또는 이와 다르게, 유닛(115)의 임의의 구성요소(또는 임의의 구성요소의 그룹)는 유닛(115)의 하나 이상의 다른 구성요소에 의해 수행되는 것으로 설명된 작업(들)을 수행할 수 있다.
또한, 예시적인 분산형 제어 시스템(110)이 물리적 접근 문산 제어 시스템을 포함하지만, 다른 구현은 물리적 접근이 아닌 시스템을 제어할 수 있다. 한편, 분산형 제어 시스템(110)은 (예컨대, 작동적 환경(operational environment)에서) 임의의 타입의 물리적 접근 제어 시스템, 예컨대, 문을 개폐하거나 건물 또는 시설에 대한 물리적 접근을 제어하는 제어 시스템을 포함할 수 있다. 분산형 제어 시스템(110)은 또한 팬(fan)을 제어(예컨대, 동작 또는 정지)하거나, 건물 관리 시스템의 알람을 개시(예컨대, 인증 실패, 인증 성공 등)하거나, 산업 자동화 시스템(industrial automation system)의 로봇 팔을 제어하는 시스템을 포함할 수 있다.
도 3a는 시스템 유닛(115)의 예시적인 기능적 레이어를 설명하기 위한 블록도이다. 도 3a에 도시된 바와 같이, 유닛(115)은 어플리케이션 프로그램 인터페이스(application program interface, API) 레이어(310), 어플리케이션 레이어(320), 분산형 레이어(340) 및 스토리지 레이어(350)를 포함할 수 있다.
API 레이어(310)는, 예컨대 관리 디바이스(130)과 통신하도록 구성된 API를 포함할 수 있다. 관리자가 관리 디바이스(130)를 사용하여 유닛(115)에 접속하는 경우, API 레이어(310)는 관리 디바이스(130)와 통신하여 관리자를 인증할 수 있다. 다른 예로서, API 레이어(310)는 관리 디바이스(130)와 통신하여 유닛(115)의 구성을 변경할 수 있다. API 레이어(310)는 관리 디바이스(130)로부터 데이터를 수신하고, 상기 데이터를 분산형 레이어(340) 및/또는 스토리지 레이어(350)에 제공할 수 있다. API 레이어(310)는 또한 관리 디바이스(130)와 통신하여 어플리케이션 레이어(320)에 어플리케이션을 설치할 수 있다. API 레이어(310)는 웹 서비스(Web Services) 관리자, 리눅스(Linux) 관리자, ONVIF(Open Network Video Interface Forum) 관리자를 처리하는 API 및/또는 임의의 타입의 API을 포함할 수 있다.
어플리케이션 레이어(320)는 유닛(115)에 설치된 하나 이상의 어플리케이션을 포함할 수 있다. 어플리케이션은 다른 어플리케이션 중 제어 로직 어플리케이션, 문을 개폐하기 위한 문 제어 어플리케이션, 사용자 자격 증명을 수신하기 위한 리더 제어 어플리케이션을 포함할 수 있다. 어플리케이션에 대해서는 도 3b와 관련하여 더욱 상세하게 설명될 것이다.
분산형 레이어(340)는 유닛(115)과 연관된 하나 이상의 분산형 데이터 세트를 관리할 수 있다. 예를 들어, 분산형 레이어(340)는 데이터 세트의 분산을 위한 피어 투 피어(peer-to-peer) 네트워크에 컨트롤러(120)를 연결할 수 있다. 분산형 레이어(340)는 프로토콜(예컨대, PAXOS 프로토콜)을 사용하여 특정 컨센서스 기반의 분산형 데이터 세트의 변경에 관한 컨센서스를 구축할 수 있다. 예를 들어, 분산형 레이어(340)는 분산형 데이터 세트와 연관된 다른 시스템 유닛들(115)에 변경을 위한 제안을 송신할 수 있고, 다른 시스템 유닛들(115)오부터 변경을 위한 정족수를 수신할 수 있다. 다른 예로서, 분산형 레이어(340)는 다른 유닛(115)으로부터 수신한 제안에 대해 투표를 할 수 있다. 또 다른 예에서, 분산형 레이어(340)는 변경을 위한 컨센서스가, 변경을 위해 투표되지 않고 도달하였다는 표시를 수신할 수 있다. 변경을 위한 컨센서스의 표시가 수신된 경우, 분산형 레이어(340)는 분산형 데이터 세트의 로컬 복사본에 변경을 할 수 있다. 분산형 레이어(340)는 네트워크(120)를 통해 다른 유닛들(115)과 보안 연결(예컨대, TLS(Transport Layer Security) 연결)을 유지할 수 있다.
스토리지 레이어(350)는 유닛(115)과 연관된 하나 이상의 데이터 세트를 저장할 수 있다. 스토리지 레이어(350)에 저장된 데이터 세트는 로컬 데이터 세트에 대응할 수 있거나, 분산형 데이터 세트에 대응할 수 있다. 로컬 데이터 세트는, 로컬 데이터 세트를 저장하는 특정 유닛(115)과 연관된(및/또는 오로지 상기 특정 유닛(115)에만 연관된) 정보를 저장할 수 있다. 분산형 데이터 세트는, 분산형 데이터 세트와 연관된 다른 시스템 유닛들(115) 사이에 분산된 정보를 저장할 수 있다.
도 3b는, 어플리케이션 레이어(320) 및 스토리지 레이어(350)에 대해 더욱 상세하게 설명하기 위한 컨트롤러(210)의 예시적인 기능적 구성요소들을 나타낸 블록도이다. 도 3b에 도시된 바와 같이, 어플리케이션 레이어(320)는 제어 로직 어플리케이션(322)(또는 "제어 로직(322)"), 문 제어 어플리케이션(324), 리더 제어 어플리케이션(326), 이벤트 처리 어플리케이션(328) 및/또는 스케줄 처리 어플리케이션(330)을 포함할 수 있다. 다른 어플리케이션은, 예컨대 알람 및 제어 어플리케이션을 포함할 수 있다.
제어 로직(322)은 수신된 자격 증명 및 저장된 접근 규칙에 기초하여 사용자에게 물리적 접근을 허가할 것인지 여부를 결정할 수 있다. 제어 로직(322)은 또한 상기 결정에 기초하여 접근(예컨대, 원격 접속과 같은 원격 접근)을 허가할 수 있다. 이와 같이, 제어 로직(322)은 자격 증명(예컨대, 사용자명 및 암호)을 기초로 관리자를 인증할 수 있고, 관리자가 (예컨대, 다른 관리자를 위해 및/또는 물리적 접근에 대한 허가를 받기 원하는 사용자를 위해) 사용자 자격 증명을 갱신하는 것 등을 허용할 수 있다. 제어 로직(322)의 이러한 기능은 도 3c와 관련하여 아래에서 설명된다.
문 제어 어플리케이션(324)은 하나 이상의 문과 연관된 잠금 디바이스(250)를 제어할 수 있다. 예를 들어, 문 제어 어플리케이션(324)은 문의 개폐 상태 및/또는 잠금 상태를 판단하고, 하나 이상의 디바이스가 문을 개폐하거나, 및/또는 문을 잠금 또는 잠금 해체하도록 작동할 수 있다. 리더 제어 어플리케이션(326)은 하나 이상의 리더 디바이스(240)를 제어할 수 있고, 하나 이상의 리더 디바이스(240)로부터 수신한 자격 증명을 획득하고 프로세싱할 수 있다. 이벤트 처리 어플리케이션(328)은, 문 개방 이벤트, 알람 이벤트, 센서 이벤트 및/또는 다른 타입의 접속 이벤트와 같은, 유닛(115)에 의해 기록된 이벤트를 프로세싱할 수 있다. 이벤트 처리 어플리케이션(328)은 보고서 및/또는 알람을 생성하고, 상기 보고서 및/또는 알람을 관리 디바이스(130)에 (및/또는 다른 유닛(115)과 같은 지정된 다른 디바이스에) 송신할 수 있다. 스케줄 처리 어플리케이션(330)은 유닛(115)과 연관된 하나 이상의 스케줄을 관리할 수 있다. 예를 들어, 사용자의 특정 그룹의 접근 규칙은 해당 일의 특정 시간에 기초하여 변경될 수 있다.
스토리지 레이어(350)는 컨센서스 데이터 영역(consensus data area)(360) 및 비-컨센서스 데이터 영역(non-consensus data area)(370)을 포함할 수 있다. 본 발명의 일 실시예에서, 컨센서스 데이터 영역(360)은 컨센서스 기반의 분산형 데이터베이스를 포함하고; 비-컨센서스 데이터 영역(370)은 컨센서스 기반이 아니거나, 및/또는 분산형이 아닌(즉, 상술한 로컬 데이터 세트와 같은) 데이터베이스를 포함할 수 있다.
도 3c는 스토리지 레이어(350)의 예시적인 구성요소들을 설명하기 위한 블록도이다. 도시된 바와 같이, 컨센서스 데이터 영역(360)은 디바이스 별 데이터(362)(또는 제1 데이터(362)), 관리자 자격 증명 데이터베이스(364) 및 접근 자격 증명 데이터베이스(366)를 포함할 수 있다. 상술한 바와 같이, 디바이스 별 데이터(362)는, 유닛(115)의 하드웨어 구성과 같은 특정 유닛(115), 및/또는 컨트롤러(210), 컨트롤러(210)에 연결된 주변 디바이스(230), 어플리케이션 레이어(320)에 설치된 어플리케이션과 연관된 정보 또는 다른 타입의 정보를 포함할 수 있다. 본 발명의 다른 실시예에서, 디바이스 별 데이터(362)는 특정 유닛(115)과 연관되거나 반드시 구체적일 필요는 없는 정보를 포함할 수 있다(예컨대, 데이터(362)는 둘 이상의 유닛(115) 및/또는 컨트롤러(210)와 연관된 정보를 포함할 수 있다). 이와 같이, 데이터(362)는 또한 "제1 데이터(362)"로서 참조될 수 있다.
관리자 자격 증명 데이터베이스(364)는 (예컨대, 원격 접속으로) 시스템 유닛(115)을 관리할 수 있는 사용자를 인증하기 위한 자격 증명(예컨대, 사용자명 및 암호)을 저장할 수 있다. 본 발명의 일 실시예에서, 관리자 자격 증명 데이터베이스(364)는 (예컨대, 컨센서스 기반의 데이터베이스의) 다른 컨트롤러(210) 사이에 분산되어, 임의의 컨트롤러(210) 또는 유닛(115)으로부터 관리자 시스템(110)에 대한 동일한 관리자를 허용할 수 있다.
접근 자격 증명 데이터베이스(366)는 물리적 영역에 접근하기를 원하는 사용자에 대한 자격 증명(예컨대, 카드 및 핀 정보, 지문 정보 등)을 저장할 수 있다. 본 발명의 일 실시예에서, 접근 자격 증명 데이터베이스(366)의 데이터는 네트워크의 다른 컨트롤러에게 (예컨대, 컨센서스 기반의 분산형 데이터베이스에서) 분산될 수 있다.
도 3a 내지 도 3c는 유닛(115)의 예시적인 기능적 구성요소들을 도시하고 있지만, 다른 구현에서, 유닛(115)은 도 3a 내지 도 3c에 도시된 것에 비해 더 더 적은 기능적 구성요소들, 다른 기능적 구성요소들, 다르게 배치된 기능적 구성요소들 또는 추가적인 기능적 구성요소들을 포함할 수 있다. 추가적으로, 유닛(115)의 임의의 구성요소(또는 임의의 구성요소의 그룹)는 유닛(115)의 하나 이상의 다른 기능적 구성요소에 의해 수행되는 것으로 설명된 기능을 수행할 수 있다. 또한, 유닛(115)의 기능적 구성요소는, 예컨대, ASIC의 하드와이어드 회로를 통해 구현될 수 있다. 추가적으로 또는 이와 다르게, 유닛(115)의 기능적 구성요소는 메모리(216)로부터의 명령어를 실행하는 프로세서(214)에 의해 구현될 수 있다.
도 4a는 일 구성에서 시스템 유닛(115-A)을 설명하기 위한 블록도이다. 도 4a에 도시된 바와 같이, 유닛(115-A)은 컨트롤러(210-A), 리더 디바이스(240-A), 잠금 디바이스(250-A), 센서(260-A)(예컨대, 카메라) 및 액추에이터(270-A)를 포함한다. 유닛(115-A)은 유닛(115-A)이 설치될 수 있는 위치로부터 원격으로 구성될 수 있다. 설치자는 유닛(115-A)을 그의 작업장으로부터 설치를 위한 고객의 위치로 가져갈 수 있다. 이와 다르게, 유닛(115)은, 예컨대 배달 서비스를 통해 설치를 위한 위치로 올 수도 있다.
아래에서 설명된 바와 같이, 유닛(115-A)은 (하나의 네트워크에서 스스로 작동하는) 스탠드 얼론(stand-alone) 유닛으로서 설치될 수 있거나, 다른 유닛들(115)의 네트워크에 설치될 수 있다. 도 4b는 스탠드 얼론 구성에서 도 4a의 유닛(115-A)을 설명하기 위한 블록도이다. 한편, 도 5a 내지 도 5c는 다른 유닛들(115)의 네트워크 구성(500)에서 유닛(115-A)을 설명하기 위한 블록도이다. 만일 유닛(115-A)이 네트워크 구성(500)에 설치되면, 유닛(115-A)은 도 5b에 도시된 바와 같은 다른 유닛들(115-B 내지 115-F)의 기존의 네트워크로 도입될 수 있다. 이와 다르게, 도 5c에 도시된 바와 같이, 다른 유닛들(115-B 내지 115-F)은 스탠드 얼론 유닛으로서(예컨대, 하나의 유닛의 네트워크로서) 유닛(115-A)에 추가(또는 조인)될 수 있다.
도 4b는 스탠드 얼론 구성(400)에서 도 4a의 유닛(115-A)을 설명하기 위한 블록도이다. 도 4b에 도시된 바와 같이, 구성(400)은 벽(410), 문(420) 및 시스템 유닛(115-A)을 포함할 수 있다. 상술한 바와 같이, 시스템 유닛(115-A)은 컨트롤러(210-A), 리더 디바이스(240-A), 잠금 디바이스(250-A), 센서(260-A) 및 액추에이터(170-A)를 포함한다.
벽(410)은 건물의 방과 같은 보안 영역(440)을 감싼다. 문(420)은 보안 영역(440)에 대한 사용자의 접근을 제공한다. 본 실시예에서, 컨트롤러(210-A)는 보안 영역(440) 내부에 설치될 수 있다. 본 발명의 다른 실시예에서, 컨트롤러(210-A)는 비보안 영역(450)에 설치될 수 있다. 벽(410) 및 문(420)에 대해 리더 디바이스(240-A)는 보안 영역(440) 외부에 설치되고 잠금 디바이스(250-A)는 보안 영역(440) 내부에 설치된다. 본 실시예에서, 센서(260-A)는 비보안 영역(450)의 보안 영역(440) 외부에 장착된 모니터링 디바이스이다. 액추에이터(270-A)는 본 실시예의 모니터링 디바이스의 시야를 제어하기 위해 사용되는 모터를 포함한다.
사용자가 (예컨대, PIN을 입력하거나, 접근 카드를 스캔하거나, 홍채를 스캔하는 등에 의해) 리더 디바이스(240-A)에 자격 증명을 입력하는 경우, 컨트롤러(201-A)는 자격 증명을 사용하여 사용자의 신원을 인증할 수 있고, 접근 규칙 테이블에서 검색을 수행하여, 사용자의 신원과 접근 규칙을 기초로 사용자에 대해 접근을 허가할 것인지 여부를 결정할 수 있다. 만일 컨트롤러(210-A)가 접근이 허가되어야 한다고 결정하면, 컨트롤러(210-A)는 잠금 디바이스(250-A)를 활성화하여 문(420)의 잠금을 해제하고, 보안 영역(44)에 대한 사용자의 접근을 허가한다.
도 4b는 구성(400)의 예시적인 구성요소들을 도시하고 있지만, 다른 구현에서, 구성(400)은 도 4b에 도시된 것에 비해 더 적은 구성요소들, 다른 구성요소들, 다르게 배치된 구성요소들 또는 추가적인 구성요소들을 포함할 수 있다. 추가적으로 또는 이와 다르게, 구성(400)의 임의의 구성요소(또는 구성요소의 그룹)는 구성(400)의 하나 이상의 다른 구성요소에 의해 수행되는 것으로 설명된 작업(들)을 수행할 수 있다.
도 5a 내지 도 5c는 (예컨대, 도 4b의 스탠드 얼론 구성(400)이 아닌) 다른 유닛들(115-B 내지 115-F)의 네트워크 구성(500)의 유닛(115-A)을 설명하기 위한 블록도이다. 도 5a에 도시된 바와 같이, 구성(500)은 방(520-A) 내지 방(520-F)을 구비하는 건물(510)을 포함할 수 있다. 이더넷 네트워크와 같은, 로컬 네트워크(530)는 시스템 유닛들(115-A 내지 115-F)을 상호 연결할 수 있다. 본 실시예는 여러 환경에서의: 스탠드 얼론이 아닌 다른 유닛들(115-B 내지 115-F)의 네크워크에서의 도 4a에서 설명된 특정 유닛(115-A)을 포함한다. 도 5a의 유닛(115-A)은 (예컨대, 컨트롤러(210-A), 리더 디바이스(240-A), 잠금 디바이스(250-A), 센서(260-A) 및 액추에이터(270-A)를 포함하는) 도 4a의 유닛(115-A)과 유사하도록 구성된다. 유닛(115-A)은 여러 가지 방식으로 이러한 구성에 도달했을 수 있다. 예를 들어, 도 5c에 나타난 바와 같이, 유닛(115-A)은 시간이 흐름에 따라 유닛들(115-B 내지 115-F)이 추가(또는 조인)된 단일 유닛 시스템이었을 수 있다. 또는, 도 5b에 나타난 바와 같이, 유닛(115-A)은 이미 유닛들(115-B 내지 115-F)이 포함되어 있는 기존의 네트워크에 구성(500)에 추가(또는 조인)된 것일 수 있다.
본 실시예에서, 시스템 유닛(115-B)은 방(520-B)으로의 2 개의 문을 제어하고; 시스템 유닛(115-A)은 방(520-A)으로의 외부 문을 제어하고; 시스템 유닛(115-C)은 방(520-A)과 방(520-C) 사이의 문을 제어하고; 시스템 유닛(115-D)은 방(520-C)과 방(520-D) 사이의 문을 제어하고; 시스템 유닛(115-E)은 방(520-D)과 방(520-E) 사이의 문을 제어하고; 유닛(520-F)은 방(520-F)으로의 외부 문을 제어한다.
본 실시예에서, 시스템 유닛들(115-A 내지 115-F)은 중앙 컨트롤 디바이스(예컨대, 서버)를 포함하지 않고, 하나 이상의 분산형 데이터 세트를 포함할 수 있다. 예를 들어, 시스템 유닛들(115-A 내지 115-F)은 분산형 자격 증명 테이블, 분산형 접근 규칙 테이블 및/또는 분산형 이벤트 로그를 유지할 수 있다. 관리자가 관리 디바이스(130)를 이용하여 시스템 유닛(115-A)에 접속하여 사용자를 추가하고, 상기 사용자와 연관된 자격 증명을 추가한다고 가정하자. 추가된 자격 증명은 사용자가 접근한 방으로 향하는 문을 제어하는 다른 시스템 유닛(115)에 분산될 수 있다. 예를 들어, 만일 시스템 유닛(115-B)에 고장이 발생하면, 시스템 유닛(115-B)에 의해 수집된 데이터는 다른 시스템 유닛에 포함된 분산형 이벤트 로그의 결과로서 계속 사용 가능할 수 있다.
도 5a 내지 도 5c에서, 각각의 유닛(115)은 컨트롤러(210)와 연관된다. 또한, 도 5a 내지 도 5c의 구현에서, 각각의 컨트롤러(210)는 다른 컨트롤러(210)와 다른 위치(예컨대, 다른 방(520))에 있다. 본 발명의 다른 실시예에서, 일부 컨트롤러(210) 및 유닛들(115)은 다른 컨트롤러 및 유닛들(115)과 서로 다른 건물, 서로 다른 지역, 서로 다른 국가, 서로 다른 대륙 등에 위치할 수 있다. 이것들의 다양한 위치에도 불구하고, 본 발명의 일 실시예에서, 유닛들(115) 및 컨트롤러(210)는 서로를 발견하고(또는 서로를 발견하기 위해 최선의 노력을 하고), 피어 투 피어 네트워크를 형성하고, 데이터 세트를 분산시킬 수 있다.
도 5a 내지 도 5c는 구성(500)의 예시적인 구성요소들을 도시하고 있지만, 다른 구현에서, 구성(500)은 도 5a 내지 도 5c에 도시된 것에 비해 더 적은 구성요소들, 다른 구성요소들, 다르게 배치된 구성요소들 또는 추가적인 구성요소들을 포함할 수 있다. 예를 들어, 본 발명의 다른 실시예에서, 중앙 제어 디바이스(예컨대, 서버)가 하나 이상의 분산형 데이터 세트와 함께 사용될 수 있다. 추가적으로 또는 이와 다르게, 구성(500)의 하나 이상의 구성요소는 구성(500)의 하나 이상의 다른 구성요소에 의해 수행되는 것으로 설명된 하나 이상의 작업을 수행할 수 있다.
도 6은 관리 디바이스(130)의 예시적인 구성요소들을 설명하기 위한 블록도이다. 도 6에 도시된 바와 같이, 관리 디바이스(130)는 버스(610), 프로세서(620), 메모리(630), 입력 디바이스(640), 출력 디바이스(650) 및 통신 인터페이스(660)를 포함할 수 있다.
버스(610)는 관리 디바이스(130)의 구성요소들 사이의 통신을 허용하는 경로를 포함한다. 프로세서(620)는 임의의 타입의 단일 코어 프로세서, 다중 코어 프로세서, 마이크로프로세서, 래치 기반의 프로세서 및/또는 프로세싱 로직 (또는 프로세서, 마이크로프로세서 및/또는 프로세싱 로직의 패밀리)를 포함할 수 있고, 이들은 명령어를 해석하고 실행할 수 있다. 본 발명의 다른 실시예에서, 프로세서(620)는 ASIC, FPGA 및/또는 다른 타입의 집적 회로 또는 프로세싱 로직을 포함할 수 있다.
메모리(630)는 정보, 데이터 및/또는 명령어를 저장한다. 메모리(630)는 동적, 휘발성 및/또는 비휘발성 스토리지 디바이스를 포함할 수 있다. 메모리(630)는 프로세서(620)에 의해 실행되는 명령 또는 프로세서(620)에 의해 사용되는 정보를 저장할 수 있다. 예를 들어, 메모리(620)는 RAM, ROM, CAM, 자기 및/또는 광학 레코딩 메모리 디바이스 등을 포함할 수 있다.
입력 디바이스(640)는 작동자가 정보를 관리 디바이스(130)에 입력할 수 있도록 한다. 입력 디바이스(640)는, 예컨대, 키보드, 마우스, 펜, 마이크, 터치 스크린 디스플레이 등을 포함할 수 있다. 출력 디바이스(650)는 정보를 관리 디바이스(130)의 작동자에게 출력할 수 있다. 출력 디바이스(650)는 디스플레이, 프린터, 스피커 및/또는 다른 타입의 출력 디바이스를 포함할 수 있다.
통신 인터페이스(660)는 컨트롤러(210)가, 유선 통신 링크, 무선 통신 링크 또는 무선 및 유선 통신 링크의 조합을 통해 다른 디바이스들 및/또는 시스템들과 통신(예컨대, 데이터를 송신 및/또는 수신) 가능하도록 하는 송수신기(예컨대, 송신기 및/또는 수신기)를 포함할 수 있다. 통신 인터페이스(660)는 유선 통신을 위한 네트워크 인터페이스 카드(예컨대, 이더넷(Ethernet) 카드) 및/또는 무선 통신을 위한 무선 네트워크 인터페이스(예컨대, 와이파이(WiFi)) 카드를 포함할 수 있다.
관리 디바이스(130)는 시스템(110)의 유닛들(115)을 관리하는 것과 관련된 작업들을 수행할 수 있다. 관리 디바이스(130)는 이러한 작업들을, 메모리(630)와 같은 컴퓨터로 판독 가능한 매체에 포함된 소프트웨어 명령어를 실행하는 프로세서(620)에 대한 응답으로 수행할 수 있다. 메모리(630)에 포함된 소프트웨어 명령어는 프로세서(620)로 하여금 이러한 작업들을 수행하도록 할 수 있다.
도 7은 시스템 유닛(115-A)을 추가하여(또는 시스템 유닛(115-A)이 네트워크에 조인하도록 하여) 네트워크 구성(500)(예컨대, 다른 유닛들(115-B 내지 115-F)이 포함된 분산형 환경)을 생성하기 위한 예시적인 프로세스(700)를 설명하기 위한 순서도이다. 프로세스(700)는 유닛(115-A)이 스탠드 얼론 유닛(도 4b의 구성(400)) 또는 네트워크 구성(제1 유닛으로서, 또는 추가된 유닛으로서 도 5a 내지 도 5c의 구성(500))의 유닛이 되는 상황을 나타낸다. 프로세스(700)는, 예를 들어, 컨트롤러(210)에서 실행되는 분산형 레이어 로직(340) 및/또는 제어 로직(322)에 의해 수행될 수 있다.
본 실시예에서, 프로세스(700)는 디바이스 별 데이터 또는 다른 데이터(예컨대, 구성 데이터, 초기, 또는 컨트롤러(210)에 대한 제1 데이터)의 수신 또는 결정으로 시작된다(블록 702). 예를 들어, 관리 디바이스(130)를 사용하는 관리자는 리더 디바이스(240-A), 잠금 디바이스(250-A), 센서(260-A), 액추에이터(270-A)를 구비하는 (도 4a에 도시된) 컨트롤러(210-A)를 구성할 수 있다. 구성 (및 디바이스 별 데이터의 생성) 동안, 관리자는 시스템 유닛(115-A)이 구성(400)(도 4b에 도시된 스탠드 얼론) 또는 네트워크 구성(500)(도 5에 도시된 유닛들(115-B 내지 115-F)로 네트워킹된 구성)에 들어갈 지 여부를 알지 못할 수 있다. 또한, 만일 시스템 유닛(115-A)이 네트워크 구성(500)에 들어갈 경우에, 관리자는 유닛(115-A)이 네트워크의 제1 유닛이 될 지(구성(400)의 스탠드 얼론 디바이스로 시작하는 도 5c에 도시된 상황), 유닛들(115-B 내지 115-F)의 기존 네트워크에 추가될 것인지(도 5b에 도시된 상황) 여부를 알지 못할 수 있다.
이와 같은, 디바이스 별 데이터(예컨대, 제1 데이터의 구성 데이터)는 다른 컨트롤러(210)(또는 유닛들(115))에 대한 분산을 위한 데이터베이스의 제1 메모리 영역(예컨대, 컨센서스 데이터 영역(360))에 저장될 수 있다(블록 704). 본 실시에에서, 디바이스 별 데이터는 스토리지 레이어(350)의 컨센서스 데이터 영역(360)의 디바이스 별 데이터(362)로서 저장될 수 있다. 만일 유닛(115-A)이 스탠드 얼론 유닛이면, (하나의 디바이스의 네트워크의) 구성(400)에 들어갈 준비가 된 것이다. 또한, 유닛(115-A)은 유닛들(115)의 더 큰 네트워크를 형성하기 위해 다른 유닛들(115)이 유닛(115-A)에 조인하도록 할 준비가 된다(도 5c의 상황). 후자의 경우, 컨센서스 데이터 영역(360)의 데이터는 다른 유닛들(115)이 유닛(115-A)에 추가됨에 따라 다른 컨트롤러에 분산될 수 있다.
한편, 만일 시스템 유닛(115-A)이 유닛들(115-B 내지 115-F)의 기존 네트워크에 조인하는 경우(도 5b의 상황), 컨트롤러(210-A)(유닛(115-A))를 컨센서스 기반의 데이터베이스를 분산시키는 새로운 네트워크(예컨대, 피어 투 피어 네트워크)에 추가하기 위한 확인(confirmation)이 수신된다(블록 706). 이러한 경우에, 블록 702에서 관리자에 의해 제공되는 디바이스 별 데이터(362)를 제거, 삭제 또는 오버라이트하는 것을 방지하기 위한 주의가 필요하다. 다시 말해서, 만일 유닛(115-A)이 유닛들(115-B 내지 115-F)에 조인되면, 시스템은 유닛(115-A)에 대한 디바이스 별 데이터(362)가 컨센서스의 부족 때문에 오버라이트되는 위험을 수반한다. 이와 같이, 본 발명의 일 실시예는 디바이스 별 데이터(362)가, 오버라이트되지 않고 유닛들(115-B 내지 115-F)에 의해 분산된 컨센서스 기반의 데이터베이스에 도입되도록 할 수 있다. 본 발명의 다른 실시예에서, 기존 네트워크에 추가될 시스템 유닛(115-A)에 대해 확인이 수신될 필요가 없다.
분산형 데이터베이스로부터 오버라이트, 삭제 또는 제거되는 것으로부터 디바이스 별 (제1) 데이터(362)를 보호하기 위해, 디바이스 별 (제1) 데이터(362)는 비-컨센서스 데이터 영역(370)과 같은(도 3c 참조) 다른(즉, 제2) 메모리 영역에 저장될 수 있다(블록 708). 디바이스 별 데이터(362)를 복사한 후, 유닛(115-A)(즉, 컨트롤러(110-A))은, 유닛들(115-B 내지 115-F)(예컨대, 피어 투 피어 네트워크) 사이에 컨센서스 기반의 데이터베이스를 분산시키는(예컨대, 도 5b의 상황) 새로운 네트워크에 조인(또는 추가)될 수 있다(블록 710). 새로운 네트워크의 일부분으로서, 유닛(115-A)(즉, 컨트롤러(110-A))은 네트워크(예컨대, 피어 투 피어 네트워크)의 다른 디바이스들(유닛들(115-B 내지 115-F))로부터 데이터를 수신할 수 있고, 제1 메모리 영역(즉, 컨센서스 데이터 영역(360))에 수신된 데이터를 저장함으로써 컨센서스 기반의 데이터 영역에 수신된 데이터를 추가할 수 있다.
유닛(115-A)(예컨대, 컨트롤러(110-A))는 디바이스 별 (제1) 데이터를 컨센서스 기반의 데이터에 추가하기 위해 확인을 수신할 수 있다(블록 712). 예를 들어, 유닛(115-A)을 구성(500)의 네트워크에 추가하는 관리자는 디바이스 별 데이터가 구성(500)의 분산형 데이터베이스에 추가되어야 하는지 프롬프트된다(prompted). 만일 그렇다면, 컨트롤러(210-A)는 디바이스 별 (제1) 데이터(372)의 복사본을 비-컨센서스 데이터 영역(370)(즉, 제2 메모리 영역)으로부터, 유닛들(115-B 내지 115-F)에 의해 형성된 네트워크의 다른 유닛들(115)/컨트롤러(210)에 분산을 위한 컨센서스 데이터 영역(260)(예컨대, 제1 메모리 영역)에 추가 또는 복사한다(블록 714). 이와 같이, 시스템 유닛(115-A)은 온전하게 유지되고 적절하게 분산된 시스템 유닛(115-A)의 디바이스 별 데이터(362)와 함께 네트워크 구성(500)에 추가된다. 본 실시예에서, 분산형 레이어(340)는 (디바이스 별 데이터(362)를 포함하는) 컨센서스 데이터 영역(360)에 저장된 컨센서스 기반의 데이터를 분산시킨다. 본 발명의 일 실시예에서, 디바이스 별 데이터(362)는, 디바이스 별 데이터에 관한 컨센서스의 부족의 가능성을 낮추기 위해 디바이스 식별자(ID)(예컨대, 고유 디바이스 식별자)로 태깅된다(tagged).
시스템 유닛(115-A)이 네트워크 구성(500)의 일부분이 된 후, 관리자는 유닛(115-A)을 네트워크 구성(500)으로부터 제거하기를 원할 수 있다. 제거 후, 관리자는 유닛(115-A)이 도 4의 구성(400)에 도시된 바와 같이 스탠드 얼론 유닛으로서 작동하기를 원할 수 있다. 도 8은 도 5a에 도시된 네트워크 구성(500)으로부터 유닛(115-A)을 제거하기 위한 예시적인 프로세스(800)을 설명하기 위한 순서도이다.
프로세스(800)는 유닛(115-A)이 그것의 기존 네트워크 구성(500)으로부터 제거될 것(블록 802) 및 유닛(115-A)에 대한 디바이스 별 (제1) 데이터가 유지될 것(블록 804)에 대한 확인의 수신으로 시작된다. 만일 디바이스 별 (제1) 데이터가 유지될 것이면, 디바이스 별 (제1) 데이터는 (예컨대, 컨센서스 데이터 (제1 메모리) 영역(360)으로부터) 비-컨센서스 데이터 (제2 메모리) 영역(370)으로 복사된다(블록 806)(도 3c 참조).
그 후 시스템 유닛(115-A)은 네트워크 구성을 떠날(예컨대, 피어 투 피어 네트워크로부터 제거될) 수 있고, 분산형 데이터베이스는 리셋(reset)될 수 있다(블록 808). 분산형 데이터베이스를 리셋하는 것은 컨센서스 데이터 영역(360)에 저장된 데이터를 소거 또는 삭제하여 컨센서스 데이터 영역(360)을 리셋하는 것을 포함한다. 그 후 디바이스 별 (제1) 데이터(362)는 비-컨센서스 데이터 (제2 메모리) 영역(370)으로부터 컨센서스 데이터 (제1 메모리) 영역(360)으로 복사될 수 있다(블록 810). 이 경우에, 관리자는, 예컨대, (예컨대, 컨트롤러(210-A)에 연결된 주변기기에 관한 구성 정보와 같은) 유닛(115-A)의 디바이스 별 구성 정보를 유지하면서, 유닛(115-A)을 네트워크(500) 외부로 분리할 수 있다.
앞선 명세서에서, 첨부된 도면을 참조하여 다양한 실시예가 설명되었다. 그러나, 이어지는 청구범위에 기재된 바와 같은 발명의 더 넓은 범위를 벗어나지 않고, 다양한 실시예들에 다양한 수정 및 변경이 이루어질 수 있고, 추가적인 실시예들이 구현될 수 있음이 명백하다. 이에 따라 명세서 및 도면은 제한적인 의미가 아닌 설명적인 것으로 간주될 것이다. 예를 들어, 일련의 블록들이 도 7 및 도 8과 관련하여 설명되었지만, 블록들 및/또는 신호 흐름의 순서는 다른 구현에서 수정될 수 있다. 또한 비-의존적인(non-dependent) 블록 및/또는 신호 흐름은 평행하게 수행될 수 있다.
상술한 시스템 및/또는 방법은 도면에 도시된 실시예들의 많은 여러 형태의 소프트웨어, 펌웨어 및 하드웨어로 구현될 수 있음이 명백해질 것이다. 이러한 시스템 및 방법을 구현하기 위해 사용되는 실제 소프트웨어 코드 또는 전문화된 제어 하드웨어는 실시예들에 한정되지 않는다. 따라서, 시스템 및 방법의 작동 및 동작은 구체적인 소프트웨어 코드를 참조하지 않고 설명되었다. 소프트웨어 및 제어 하드웨어는 본 명세서의 설명에 기초하여 시스템 및 방법을 구현하기 위해 설계될 수 있음을 이해할 것이다.
또한, 상술한, 특정 부분은 하나 이상의 기능을 수행하는 구성요소로서 구현될 수 있다. 본 명세서에서 사용된 바와 같은 구성요소는, 프로세서, ASIC 또는 FPGA와 같은 하드웨어, 또는 하드웨어와 소프트웨어의 조합(예컨대, 소프트웨어를 실행하는 프로세서)을 포함할 수 있다.
본 명세서에 사용된 바와 같은 용어 "포함하는(comprises)" 및/또는 "포함하는(comprising)"은 설명된 특징, 정수, 단계 또는 이들의 조합의 존재를 명세하지만, 하나 이상의 다른 특징, 정수, 단계, 구성요소 또는 그 그룹의 존재 또는 추가를 배제하는 것은 아니라는 점이 강조되어야 한다. 또한, 용어 "예시적인(exemplary)"은 "예로서"를 의미하고 "바람직한", "최고의" 또는 이와 유사한 것을 의미하지 않는다.
본 출원에 사용된 어떤 요소, 동작 또는 명령도 명시적으로 기재되지 않는 한 실시예들에 있어 중점적 또는 필수적인 것으로 해석되지 않는다. 또한, 본 명세서에서 사용된 바와 같이, 단수는 하나 이상의 아이템을 포함하도록 의도된 것이다. 또한, "기반의, 기초하여(based on)"는 다르게 명시적으로 기재되지 않는한 "적어도 일부분 기반의, 기초하여"를 의미하도록 의도된 것이다.
100: 환경
110: 분산형 제어 시스템
120: 네트워크
130: 관리 디바이스
115, 115-A ~ 115-N: 시스템 유닛
210, 210-A ~ 210-F: 컨트롤러
212: 버스
214: 프로세서
216: 메모리
218: 네트워크 인터페이스
220: 주변기기 인터페이스
222: 하우징
230: 주변 디바이스
240, 240-A: 리더 디바이스
250, 250-A: 잠금 디바이스
260, 260-A: 센서
270, 270-A: 액추에이터
310: API 레이어
320: 어플리케이션 레이어
322: 제어 로직
324: 문 제어 어플리케이션
326: 리더 제어 어플리케이션
328: 이벤트 처리 어플리케이션
330: 스케줄 처리 어플리케이션
340: 분산 레이어
350: 스토리지 레이어
360: 컨센서스 데이터 영역(제1 메모리 영역)
362: 디바이스 별 데이터(제1 데이터)
364: 관리자 자격 증명 데이터베이스
366: 접근 자격 증명 데이터베이스
370: 비-컨센서스 데이터 영역(제2 메모리 영역)
372: 디바이스 별 데이터(제1 데이터)의 복사본
400: 구성
410: 벽
420: 문
440: 보안 영역
450: 비보안 영역
500: 구성
510: 건물
520, 520-A ~ 520-F: 방
530: 로컬 네트워크
610: 버스
620: 프로세서
630: 메모리
640: 입력 디바이스
650: 출력 디바이스
660: 통신 인터페이스

Claims (15)

  1. 컨센서스 기반의(consensus-based) 분산형 데이터베이스에 대해 데이터를 저장하도록 지정된, 디바이스의 메모리의 제1 메모리 영역에, 피어 투 피어(peer-to-peer) 네트워크의 다른 디바이스들 사이에 분산되는 상기 컨센서스 기반의 분산형 데이터베이스에 추가될 디바이스 별 데이터(device-specific data)를 저장하는 단계;
    상기 디바이스 별 데이터를 상기 디바이스의 상기 메모리의 제2 메모리 영역에 복사하는 단계;
    상기 디바이스 별 데이터를 상기 제2 메모리 영역에 복사한 후, 상기 디바이스를 상기 피어 투 피어 네트워크에 추가하는 단계;
    상기 피어 투 피어 네트워크의 다른 디바이스들로부터 데이터를 수신하고, 수신된 상기 데이터를 상기 제1 메모리 영역에 저장함에 의해 수신된 상기 데이터를 상기 컨센서스 기반의 분산형 데이터베이스에 추가하는 단계;
    상기 디바이스를 상기 컨센서스 기반의 분산형 데이터베이스에 추가한 후, 상기 디바이스 별 데이터를 상기 제2 메모리 영역으로부터 상기 제1 메모리 영역으로 복사함에 의해 상기 디바이스 별 데이터를 상기 컨센서스 기반의 분산형 데이터베이스에 추가하는 단계; 및
    상기 디바이스 별 데이터를 상기 피어 투 피어 네트워크의 다른 디바이스들에게 상기 컨센서스 기반의 분산형 데이터베이스의 일부로서 분산시키는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제2 메모리 영역은 비-컨센서스 기반의(non-consensus-based) 분산형 데이터베이스에 대해 데이터를 저장하도록 지정된 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 디바이스 별 데이터는 분산형 제어 시스템의 컨트롤러의 구성 데이터(configuration data)를 포함하거나,
    상기 디바이스 별 데이터는 상기 컨트롤러에 연결된 주변기기들(peripherals)을 정의하는 데이터를 포함하는 구성 데이터를 포함하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 디바이스는 분산형 물리적 접근 제어 시스템(distributed physical access control system, DPACS)의 컨트롤러를 포함하고, 상기 다른 디바이스들은 상기 분산형 물리적 접근 제어 시스템의 다른 컨트롤러들을 포함하고, 상기 디바이스 별 데이터는 상기 컨트롤러를 구성하기 위한 데이터를 포함하는 방법.
  5. 컨센서스 기반의(consensus-based) 분산형 데이터베이스를 피어 투 피어(peer-to-peer) 네트워크의 다른 디바이스들 사이에 분산시키는 상기 피어 투 피어 네트워크에 연결된 디바이스의 메모리의 제1 메모리 영역에 상기 컨센서스 기반의 분산형 데이터베이스를 저장하는 단계;
    상기 컨센서스 기반의 분산형 데이터베이스에 저장된 디바이스 별 데이터(device-specific data)를 상기 디바이스의 상기 메모리의 제2 메모리 영역에 복사하는 단계;
    상기 디바이스 별 데이터를 상기 제2 메모리 영역에 복사한 후, 상기 디바이스를 상기 피어 투 피어 네트워크로부터 제거하는 단계;
    상기 디바이스 별 데이터를 상기 제2 메모리 영역에 복사하고 상기 디바이스를 상기 피어 투 피어 네트워크로부터 제거한 후, 상기 컨센서스 기반의 분산형 데이터베이스의 데이터를 삭제하는 단계; 및
    상기 컨센서스 기반의 분산형 데이터베이스의 데이터를 삭제한 후, 상기 제2 메모리 영역으로부터의 상기 디바이스 별 데이터를 상기 컨센서스 기반의 분산형 데이터베이스에 복사하는 단계를 포함하는 방법.
  6. 제5항에 있어서,
    상기 디바이스 별 데이터는 디바이스 별 데이터를 포함하고, 상기 제2 메모리 영역은 비-컨센서스 기반의(non-consensus-based) 데이터베이스에 대해 상기 데이터를 저장하도록 지정된 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 디바이스 별 데이터는 분산형 제어 시스템의 컨트롤러의 구성 데이터(configuration data)를 포함하거나,
    상기 디바이스 별 데이터는 상기 디바이스에 연결된 주변기기들(peripherals)을 정의하는 데이터를 포함하는 구성 데이터를 포함하는 방법.
  8. 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 디바이스는 분산형 물리적 접근 제어 시스템(distributed physical access control system, DPACS)의 컨트롤러를 포함하고, 상기 다른 디바이스들은 상기 분산형 물리적 접근 제어 시스템의 다른 컨트롤러들을 포함하고, 상기 디바이스 별 데이터는 상기 컨트롤러를 구성하기 위한 데이터를 포함하는 방법.
  9. 디바이스(115)에 있어서,
    컨센서스 기반의(consensus-based) 분산형 데이터베이스에 대해, 피어 투 피어(peer to peer) 네트워크(110)의 다른 디바이스들(115) 사이에 분산되는 상기 컨센서스 기반의 분산형 데이터베이스(360)에 추가될 디바이스 별 데이터(device-specific data)(362)를 저장하기 위한 상기 디바이스(115)의 메모리(350)의 제1 메모리 영역(360);
    상기 디바이스 별 데이터(362)를 상기 디바이스(115)의 메모리(350)의 제2 메모리 영역(370)에 복사하고, 상기 디바이스 별 데이터(362)를 상기 제2 메모리 영역(370)에 복사한 후, 상기 디바이스(115)를 상기 피어 투 피어 네트워크(110)에 추가하는 프로세서(214);
    상기 피어 투 피어 네트워크(110)의 다른 디바이스들(115)로부터 데이터를 수신하는 수신기(218); 및
    상기 디바이스 별 데이터를 상기 피어 투 피어 네트워크의 다른 디바이스들에 상기 컨센서스 기반의 분산형 데이터베이스(360)의 일부로서 전송하는 전송기(218)를 포함하고,
    상기 프로세서는 수신된 상기 데이터를 상기 제1 메모리 영역(360)에 저장함에 의해 수신된 상기 데이터를 상기 컨센서스 기반의 분산형 데이터베이스(360)에 추가하고, 상기 디바이스(115)를 상기 피어 투 피어 네트워크에 추가한 후, 상기 디바이스 별 데이터(372)를 상기 제2 메모리 영역(370)으로부터 상기 제1 메모리 영역(360)으로 복사함에 의해 상기 디바이스 별 데이터(372)를 상기 컨센서스 기반의 분산형 데이터베이스(360)에 추가하도록 구성된 디바이스.
  10. 제9항에 있어서,
    상기 디바이스 별 데이터는 디바이스 별 데이터를 포함하고, 상기 제2 메모리 영역은 비-컨센서스 기반의(non-consensus-based) 데이터베이스에 대해 상기 데이터를 저장하도록 지정된 디바이스.
  11. 제10항에 있어서,
    상기 디바이스 별 데이터는 분산형 제어 시스템의 컨트롤러의 구성 데이터(configuration data)를 포함하거나,
    상기 디바이스 별 데이터는 상기 컨트롤러에 연결된 주변기기들(peripherals)을 정의하는 데이터를 포함하는 디바이스.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    분산형 물리적 접근 제어 시스템(distributed physical access control system, DPACS)의 컨트롤러를 더 포함하고, 상기 다른 디바이스들은 상기 분산형 물리적 접근 제어 시스템의 다른 컨트롤러들을 포함하고, 상기 디바이스 별 데이터는 상기 컨트롤러를 구성하기 위한 데이터를 포함하는 디바이스.
  13. 디바이스에 있어서,
    컨센서스 기반의(consensus-based) 분산형 데이터베이스를 저장하기 위한, 상기 컨센서스 기반의 분산형 데이터베이스를 피어 투 피어(peer-to-peer) 네트워크의 다른 디바이스들 사이에 분산시키는 상기 피어 투 피어 네트워크에 연결된 상기 디바이스의 메모리의 제1 메모리 영역; 및
    상기 컨센서스 기반의 분산형 데이터베이스에 저장된 디바이스 별 데이터(device-specific data)를 상기 디바이스의 상기 메모리의 제2 메모리 영역에 복사하고,
    상기 디바이스 별 데이터를 상기 제2 메모리 영역에 복사한 후, 상기 디바이스를 상기 피어 투 피어 네트워크로부터 제거하고,
    상기 디바이스 별 데이터를 상기 제2 메모리 영역에 복사하고 상기 디바이스를 상기 피어 투 피어 네트워크로부터 제거한 후, 상기 컨센서스 기반의 분산형 데이터베이스의 데이터를 삭제하고,
    상기 컨센서스 기반의 분산형 데이터베이스의 데이터를 삭제한 후, 상기 제2 메모리 영역으로부터의 상기 디바이스 별 데이터를 상기 컨센서스 기반의 분산형 데이터베이스에 복사하는 프로세서를 포함하는 디바이스.
  14. 제13항에 있어서,
    상기 제2 메모리 영역은 비-컨센서스 기반의(non-consensus-based) 데이터베이스에 대해 상기 데이터를 저장하도록 지정되거나,
    상기 디바이스 별 데이터는 분산형 제어 시스템의 컨트롤러의 구성 데이터(configuration data)를 포함하거나,
    상기 디바이스 별 데이터는 상기 컨트롤러에 연결된 주변기기들(peripherals)을 정의하는 데이터를 포함하는 상기 컨트롤러를 구성하기 위한 데이터를 포함하는 디바이스.
  15. 제13항 또는 제14항에 있어서,
    분산형 물리적 접근 제어 시스템(distributed physical access control system, DPACS)의 컨트롤러를 더 포함하고, 상기 다른 디바이스들은 상기 분산형 물리적 접근 제어 시스템의 다른 컨트롤러들을 포함하고, 상기 디바이스 별 데이터는 상기 컨트롤러를 구성하기 위한 데이터를 포함하는 디바이스.
KR1020140121839A 2013-09-16 2014-09-15 분산형 데이터베이스를 조인하는 디바이스 및 방법 KR101757345B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/028,059 US9621644B2 (en) 2013-09-16 2013-09-16 Joining a distributed database
US14/028,059 2013-09-16

Publications (2)

Publication Number Publication Date
KR20150032187A true KR20150032187A (ko) 2015-03-25
KR101757345B1 KR101757345B1 (ko) 2017-07-12

Family

ID=49223671

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140121839A KR101757345B1 (ko) 2013-09-16 2014-09-15 분산형 데이터베이스를 조인하는 디바이스 및 방법

Country Status (6)

Country Link
US (1) US9621644B2 (ko)
EP (1) EP2849062B1 (ko)
JP (1) JP6147234B2 (ko)
KR (1) KR101757345B1 (ko)
CN (1) CN104462171B (ko)
TW (1) TWI595370B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180147722A1 (en) * 2016-11-30 2018-05-31 Nanjing Avatarmind Robot Technology Co., Ltd. Method and system for managing wireless networking of units inside robot
US10831917B2 (en) 2018-10-29 2020-11-10 At&T Intellectual Property I, L.P. Database system consensus-based access control
TWI753716B (zh) * 2020-12-23 2022-01-21 財團法人工業技術研究院 運動數據收集方法及系統

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047332A (en) 1997-06-30 2000-04-04 Sun Microsystems, Inc. Global file system-based system and method for rendering devices on a cluster globally visible
US6243744B1 (en) 1998-05-26 2001-06-05 Compaq Computer Corporation Computer network cluster generation indicator
US7085805B1 (en) * 2000-07-07 2006-08-01 Sun Microsystems, Inc. Remote device management in grouped server environment
WO2004081818A1 (en) * 2003-03-10 2004-09-23 Koninklijke Philips Electronics N.V. Method and apparatus for ownership transfer of transactions in peer-to-peer systems
US20060195361A1 (en) * 2005-10-01 2006-08-31 Outland Research Location-based demographic profiling system and method of use
US7426653B2 (en) 2005-04-13 2008-09-16 Progress Software Corporation Fault tolerant distributed lock management
TWI291665B (en) * 2005-12-30 2007-12-21 Ind Tech Res Inst Product managing system and method using RFID technology
US20070240227A1 (en) * 2006-03-29 2007-10-11 Rickman Dale M Managing an entity
RU2009120689A (ru) * 2006-11-02 2010-12-10 Конинклейке Филипс Электроникс, Н.В. (Nl) Распределенная отмена полномочий устройств
US8856206B2 (en) 2007-08-28 2014-10-07 International Business Machines Corporation Maintaining message versions at nodes in a network
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
US10296937B2 (en) * 2009-06-29 2019-05-21 Excalibur Ip, Llc Operating a sensor recording marketplace
US20130124546A1 (en) * 2010-02-26 2013-05-16 Adobe Systems, Inc. Group access control for a distributed system
US8381017B2 (en) 2010-05-20 2013-02-19 International Business Machines Corporation Automated node fencing integrated within a quorum service of a cluster infrastructure

Also Published As

Publication number Publication date
CN104462171A (zh) 2015-03-25
CN104462171B (zh) 2019-07-26
EP2849062A1 (en) 2015-03-18
TW201528012A (zh) 2015-07-16
US20150081831A1 (en) 2015-03-19
JP2015057702A (ja) 2015-03-26
US9621644B2 (en) 2017-04-11
JP6147234B2 (ja) 2017-06-14
KR101757345B1 (ko) 2017-07-12
TWI595370B (zh) 2017-08-11
EP2849062B1 (en) 2019-06-26

Similar Documents

Publication Publication Date Title
JP6247618B2 (ja) アクセス制御システムにおける匿名の決定
KR101940086B1 (ko) 분산 이벤트를 처리하는 시스템, 디바이스 및 방법
EP2849061B1 (en) Distribution of user credentials
KR101908988B1 (ko) 어플리케이션 데이터를 관리하는 방법 및 디바이스
KR101809994B1 (ko) 분산 제어 시스템의 컨센서스 로스
KR101757345B1 (ko) 분산형 데이터베이스를 조인하는 디바이스 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
GRNT Written decision to grant