KR101940086B1 - 분산 이벤트를 처리하는 시스템, 디바이스 및 방법 - Google Patents

분산 이벤트를 처리하는 시스템, 디바이스 및 방법 Download PDF

Info

Publication number
KR101940086B1
KR101940086B1 KR1020140121841A KR20140121841A KR101940086B1 KR 101940086 B1 KR101940086 B1 KR 101940086B1 KR 1020140121841 A KR1020140121841 A KR 1020140121841A KR 20140121841 A KR20140121841 A KR 20140121841A KR 101940086 B1 KR101940086 B1 KR 101940086B1
Authority
KR
South Korea
Prior art keywords
data
data area
event
area
devices
Prior art date
Application number
KR1020140121841A
Other languages
English (en)
Other versions
KR20150032188A (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 KR20150032188A publication Critical patent/KR20150032188A/ko
Application granted granted Critical
Publication of KR101940086B1 publication Critical patent/KR101940086B1/ko

Links

Images

Classifications

    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer And Data Communications (AREA)
  • Alarm Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Abstract

본 발명의 분산 이벤트를 처리하는 방법은 복수의 보안 디바이스 중 제 1 디바이스에서 발생된 물리 접근 제어 시스템(110)의 이벤트 데이터를 메모리(350)의 제 1 데이터 영역(369)에 저장하는 단계를 포함한다. 방법은 상기 제 1 디바이스가 아닌 다른 디바이스에서 발생된 이벤트 데이터를 제 2 데이터 영역(368)에 저장하는 단계를 포함한다. 방법은 상기 제 1 데이터 영역(369)이 상기 제 1 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 제 1 데이터 영역(369)에서 이벤트 데이터를 제거하는 단계와 상기 제 2 데이터 영역(368)이 상기 제 2 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 제 2 데이터 영역(368)에서 이벤트 데이터를 제거하는 단계를 포함한다. 방법은 네트워크 인터페이스(218)를 통해 상기 제 1 데이터 영역(369)에서 다른 디바이스로 이벤트 데이터를 분산시키는 단계를 포함한다.

Description

분산 이벤트를 처리하는 시스템, 디바이스 및 방법{System, device and method for processing distributed events}
본 발명은 물리적인 접근 제어 시스템에서 이벤트 데이터를 분산하는 것에 관한 것이다.
접근 제어 시스템은 시설로의 물리적 접근을 제어하기 위하여 이용될 수 있다. (다른 종류의 제어 시스템뿐만 아니라) 접근 제어 시스템은 시스템의 서로 다른 부분을 제어하는 다양한 제어기를 구비할 수 있다. 각 제어기는 사용자가 올바른 인증서를 카드 리더기에 입력하였는지 여부 또는 카메라가 움직임을 감지하였는지 여부와 같은 이벤트에 대한 데이터를 저장할 수 있다.
본 발명은 물리적인 접근 제어 시스템에서 이벤트 데이터를 분산시키는데 그 목적이 있다.
본 발명의 실시예에 따른 분산 이벤트를 처리하는 시스템은 이벤트 데이터를 분산시키는 복수의 디바이스를 포함한다. 각 디바이스는 대응하는 디바이스에서 발생된 이벤트 데이터를 저장하는 제 1 데이터 영역, 및 복수의 디바이스 중 다른 디바이스에서 발생된 이벤트 데이터를 저장하는 제 2 데이터 영역을 포함하여 구성된 메모리를 포함할 수 있다. 본 발명의 실시예에 따르면, 상기 제 1 데이터 영역은 제 1 메모리 공간을 벗어나지 않는 한도 내에서 차지하고, 상기 제 2 데이터 영역은 제 2 메모리 공간을 벗어나지 않는 한도 내에서 차지한다. 각 디바이스는 상기 제 1 데이터 영역이 상기 제 1 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 디바이스에서 발생되어 저장된 이벤트 데이터를 상기 제 1 데이터 영역에서 제거하고, 상기 제 2 데이터 영역이 상기 제 2 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 하나 이상의 다른 디바이스에서 발생되어 저장된 이벤트 데이터를 상기 제 2 데이터 영역에서 제거하며, 네트워크 인터페이스를 통하여 상기 제 1 데이터 영역으로부터 이벤트 데이터를 또 다른 디바이스로 분산시키고, 상기 네트워크 인터페이스를 통하여 상기 또 다른 디바이스로부터 이벤트 데이터를 수신하여 상기 제 2 데이터 영역에 저장하는 프로세스를 포함할 수 있다.
본 발명의 실시예에 따르면, 상기 복수의 디바이스는 분산된 피어-투-피어 네트워크로 연결되어 있고, 상기 복수의 디바이스 중 적어도 하나에 포함된 각 프로세서는 각각의 제 1 데이터 영역에 있는 이벤트 데이터를 상기 피어-투-피어 네트워크상의 다른 디바이스로 분산시킨다. 본 발명의 실시예에 따르면, 상기 복수의 디바이스 중 적어도 하나에 포함된 각 프로세서는 각각의 제 2 데이터 영역에 있는 이벤트 데이터를 상기 피어-투-피어 네트워크상의 다른 디바이스로 분산시킨다.
본 발명의 실시예에 따르면, 복수의 디바이스 중 하나와 통신하여 제 1 데이터 영역에 저장된 이벤트 데이터 또는 제 2 데이터 영역에 저장된 이벤트 데이터를 요청하여 수신하는 추가 디바이스가 포함될 수 있다. 본 발명의 실시예에 따르면, 상기 제 1 메모리 공간은 상기 제 2 메모리 공간보다 크다. 본 발명의 실시예에 따르면, 복수의 디바이스는 물리 접근 제어 시스템(PACS; Physical Access Control System)의 복수의 제어기를 포함할 수 있다.
본 발명의 실시예에 따르면, 상기 프로세서는 상기 제 1 데이터 영역의 이벤트 데이터와 상기 제 2 데이터 영역의 이벤트 데이터를 규칙들과 비교하고, 상기 비교를 기초로 알람을 발생시킨다.
본 발명의 실시예에 따르면, 상기 프로세서는 상기 제 1 데이터 영역이 상기 제 1 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 제 1 데이터 영역에서 가장 오래된 이벤트 데이터를 제거하고, 상기 제 2 데이터 영역이 상기 제 2 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 제 2 데이터 영역에서 가장 오래된 이벤트 데이터를 제거한다.
본 발명의 실시예에 따르면, 상기 프로세서는 상기 제 1 데이터 영역에서 또 다른 디바이스 중 하나로 우선순위에 따라 이벤트 데이터를 분산시키되, 상기 또 다른 디바이스 중 하나는 상기 이벤트 데이터의 수신이 예약된 것이다.
본 발명의 실시예에 따르면, 상기 프로세서는 상기 네트워크의 트래픽 양을 기초로 대응하는 디바이스에서 발생된 이벤트 데이터를 다른 디바이스로 분산시킨다.
본 발명의 실시예에 따르면, 프로세서는 네트워크를 통하여 디바이스 중 하나로부터 이벤트 데이터의 분산을 중지하라는 통지가 수신된 경우 제 1 데이터 영역에서 이벤트 데이터를 다른 디바이스 중 하나로 분산시키는 것을 중지한다.
본 발명의 실시예에 따르면, 다른 디바이스 중 하나는 대응하는 다른 디바이스의 프로세서가 프로세서 부하 임계치를 초과한 경우 이벤트 데이터의 분산을 중지하라고 통지한다.
본 발명의 다른 실시예에 따른 디바이스는 디바이스에서 발생된 이벤트 데이터를 저장하는 제 1 데이터 영역, 및 상기 디바이스와 피어-투-피어(peer-to-peer) 네트워크로 연결된 하나 이상의 다른 디바이스에서 발생된 이벤트 데이터를 저장하는 제 2 데이터 영역을 포함하여 구성된 메모리를 포함하되, 상기 제 1 데이터 영역은 제 1 메모리 공간을 벗어나지 않는 한도 내에서 차지하고, 상기 제 2 데이터 영역은 제 2 메모리 공간을 벗어나지 않는 한도 내에서 차지한다. 디바이스는 상기 제 1 데이터 영역이 상기 제 1 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 디바이스에서 발생되어 저장된 이벤트 데이터를 상기 제 1 데이터 영역에서 제거하고, 상기 제 2 데이터 영역이 상기 제 2 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 하나 이상의 다른 디바이스에서 발생되어 저장된 이벤트 데이터를 상기 제 2 데이터 영역에서 제거하고, 네트워크 인터페이스를 통하여 상기 제 1 데이터 영역으로부터 이벤트 데이터를 또 다른 디바이스로 분산시키고, 상기 네트워크 인터페이스를 통하여 상기 또 다른 디바이스로부터 이벤트 데이터를 수신하여 상기 제 2 데이터 영역에 저장하는 프로세서를 포함한다.
본 발명의 실시예에 따르면, 상기 프로세서는 상기 제 1 데이터 영역에 있는 이벤트 데이터를 피어-투-피어 네트워크상의 다른 디바이스로 분산시키고, 상기 프로세서는 상기 제 2 데이터 영역에 있는 이벤트 데이터를 피어-투-피어 네트워크상의 다른 디바이스로 분산시킨다. 본 발명의 실시예에 따르면, 상기 제 1 메모리 공간은 상기 제 2 메모리 공간보다 크다.
본 발명의 실시예에 따르면, 상기 디바이스는 물리 접근 제어 시스템(PACS; Physical Access Control System)의 제어기를 포함할 수 있다.
본 발명의 실시예에 따르면, 상기 프로세서는 상기 제 1 데이터 영역의 이벤트 데이터와 상기 제 2 데이터 영역의 이벤트 데이터를 규칙들과 비교하고, 상기 비교를 기초로 알람을 발생시키고, 상기 제 1 데이터 영역이 상기 제 1 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 제 1 데이터 영역에서 가장 오래된 이벤트 데이터를 제거하고, 상기 제 2 데이터 영역이 상기 제 2 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 제 2 데이터 영역에서 가장 오래된 이벤트 데이터를 제거한다.
본 발명의 실시예에 따르면, 상기 프로세서는 상기 제 1 데이터 영역에서 또 다른 디바이스 중 하나로 우선순위에 따라 이벤트 데이터를 분산시키되, 상기 또 다른 디바이스 중 하나는 상기 이벤트 데이터의 수신이 예약된 것이다.
본 발명의 실시예에 따르면, 상기 프로세서는 상기 네트워크의 트래픽 양을 기초로 제 1 데이터 영역에서 다른 디바이스로 이벤트 데이터를 분산시킨다.
본 발명의 다른 실시예에 따른 분산 이벤트를 처리하는 방법은 복수의 디바이스 중 제 1 디바이스에서 발생된 이벤트 데이터를 메모리의 제 1 데이터 영역에 저장하는 단계를 포함한다. 상기 제 1 데이터 영역은 제 1 메모리 공간을 벗어나지 않는 한도 내에서 차지하고, 상기 복수의 디바이스는 분산 피어-투-피어 네트워크로 연결되어 있다. 방법은 상기 제 1 디바이스가 아닌 다른 디바이스에서 발생된 이벤트 데이터를 제 2 데이터 영역에 저장하는 단계를 포함하되, 상기 제 2 데이터 영역은 제 2 메모리 공간을 벗어나지 않는 한도 내에서 차지한다. 방법은 상기 제 1 데이터 영역이 상기 제 1 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 제 1 데이터 영역에서 이벤트 데이터를 제거하는 단계, 상기 제 2 데이터 영역이 상기 제 2 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 제 2 데이터 영역에서 이벤트 데이터를 제거하는 단계, 및 네트워크 인터페이스를 통해 상기 제 1 데이터 영역에서 다른 디바이스로 이벤트 데이터를 분산시키고, 상기 네트워크 인터페이스를 통하여 상기 다른 디바이스로부터 이벤트 데이터를 수신하여 상기 제 2 데이터 영역에 저장하는 단계를 포함한다.
본 발명의 실시예에 따르면, 상기 제 1 메모리 공간은 상기 제 2 메모리 공간보다 크다. 방법은 상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 제 1 데이터 영역에서 가장 오래된 이벤트 데이터를 제거하는 단계, 및 상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 상기 제 2 데이터 영역에서 가장 오래된 이벤트 데이터를 제거하는 단계를 포함할 수 있다. 방법은 상기 제 1 데이터 영역에서 또 다른 디바이스 중 하나로 우선순위에 따라 이벤트 데이터를 분산시키는 단계를 더 포함하되, 상기 또 다른 디바이스 중 하나는 상기 이벤트 데이터의 수신이 예약된 것이다.
도 1은 본 발명의 실시예에 따른 실시 환경을 나타낸 블록도이다.
도 2a 및 도 2b는 도 1에 도시된 시스템 유닛의 예시적인 구성요소를 나타낸 블록도이다.
도 3a 및 도 3b는 본 발명의 실시예에 따른 도 1에 도시된 시스템 유닛의 기능적 구성요소를 나타낸 블록도이다.
도 3c 및 도 3d는 본 발명의 실시예에 따른 도 3b에 도시된 저장 계층의 기능적 구성요소를 나타낸 블록도이다.
도 3e는 본 발명의 실시예에 따른 예시적인 예약 테이블에 대한 블록도이다.
도 4는 도 1에 도시된 시스템 유닛의 예시적인 물리 계층을 나타낸 평면도이다.
도 5는 도 1에 도시된 제어 시스템의 예시적인 물리 계층을 나타낸 평면도이다.
도 6은 도 1에 도시된 관리 디바이스의 예시적인 구성요소에 대한 평면도이다.
도 7은 본 발명의 실시예에 따른 분산 제어 시스템의 이벤트에 대한 데이터가 분산되는 예시적인 과정에 대한 흐름도이다.
도 8은 본 발명의 실시예에 따른 분산 제어 시스템의 이벤트에 대한 데이터가 수신되는 예시적인 과정에 대한 흐름도이다.
도 9는 도 3에 도시된 저장 계층이 오버플로(overflow)하지 않도록 하는 예시적인 과정에 대한 흐름도이다.
도 10은 본 발명의 실시예에 따른 분산 제어 시스템의 이벤트에 대한 데이터가 분산되는 예시적인 과정에 대한 흐름도이다.
도 11은 본 발명의 실시예에 따라 도 1의 제어기에 저장된 데이터로 관리자가 접근하는 예시적인 과정에 대한 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 서로 다른 도면에 포함된 동일 참조 부호는 동일 또는 유사한 구성요소를 지칭한다.
이하 기재된 일 실시예는 물리 접근 제어 시스템(PACS; Physical Access Control Systems)의 제어기에 관한 것이다. 다른 실시예는 빌딩 관리, 모니터링, 및 보안 시스템에 포함된 서로 다른 어플리케이션을 제어하는 시스템에서의 제어기와 같은 물리 접근 제어 시스템이 아닌 디바이스 또는 시스템을 포함할 수 있다. 일 실시예는 예를 들어 홈 오토메이션 시스템의 제어기를 포함할 수 있다.
전술한 바와 같이, 제어 시스템은 그 각각이 시스템의 서로 다른 부분을 제어하는 다수의 제어기를 구비할 수 있다. 각 제어기는 예를 들어 사용자가 올바른 인증서를 카드 리더기에 입력하였는지 여부 또는 카메라가 움직임을 감지하였는지 여부와 같은 이벤트에 대한 데이터를 저장할 수 있다. 아래에 기재된 일 실시예에 따르면, 제어기는 분산된 형태로 이벤트 데이터를 저장한다. 그러나, 커다란 크기의 이벤트 데이터에 의하여 네트워크가 분주한 시간 구간(busy time period)에 제어기의 능력을 벗어날 수 있다. 이하 기재된 일 실시예에 따르면, 다른 제어기가 이벤트 데이터에 대한 수신 예약을 한 경우 제어기는 덜 분주한 시간에 우선순위 등에 따라 이벤트 데이터를 분산시킴으로써 그 부하 및 네트워크 트래픽을 감소시킬 수 있다.
또 다른 실시예에 따르면, 제어기는 제어기에서 발생된 이벤트 데이터를 저장하는 제 1 메모리 영역 및 다른 제어기에서 발생된 이벤트 데이터를 저장하는 제 2 메모리 영역인 2개의 메모리 영역을 포함할 수 있다. 제 1 및 제 2 메모리 영역은 각각 제 1 및 제 2 메모리 공간을 벗어나지 않는 한도 내에서 차지할 수 있다. 메모리 관리의 형태로서(이에 한정될 수 있다), 제어기에서 발생된 이벤트 데이터를 저장하는 제 1 메모리 공간은 다른 제어기에서 발생된 이벤트 데이터를 저장하는 제 2 메모리 공간보다 클 수 있다. 따라서, 제어기는 다른 제어기 보다 (예를 들어) 긴 시간 구간 동안 이벤트 데이터를 자신이 직접 저장할 수 있다. 그렇다고 하더라도, 다른 제어기가 네트워크상에서 동일하게 동작하기 때문에(예를 들어, 각각이 자신에 대한 보다 많은 정보를 저장하고 있음), 전체(또는 전체에 가까운) 세트의 이벤트 데이터가 제어기의 네트워크상에 저장될 수 있다. 또한, 중앙 서버가 전체(또는 전체에 가까운) 세트의 이벤트 데이터를 저장하는 것이 필연적이지 않더라도 이러한 전체(또는 전체에 가까운) 세트의 이벤트 데이터는 저장될 수 있다. 그럼에도 불구하고, 관리 디바이스(또는 서버)는 여전히 전술한 다른 제어기로부터 이벤트 데이터를 다운로드 할 수 있는데, 예를 들어 제어기는 메모리가 고갈되지 않도록 하기 위하여 데이터를 제거한다. 이하 기재된 하나 이상의 실시예는 물리 접근 제어 시스템(예를 들어, 분산 물리 접근 제어 시스템)의 이벤트 데이터 분산에 관한 것이다. 전술한 바와 같이, 다른 실시예는 서로 다른 종류의 시스템(예를 들어, 물리 접근 제어 시스템이 아닌 것)에서의 이벤트 데이터 분산에 관한 것이다.
도 1은 이하에 기재된 시스템 및 방법이 구현되는 실시 환경(100)을 나타낸 블록도이다. 도 1에 도시된 바와 같이, 환경(100)은 분산 제어 시스템(110)(예를 들어, 분산 물리 접근 제어 시스템), 네트워크(120) 및 관리 디바이스(130)를 포함할 수 있다.
분산 제어 시스템(110)은 시스템 유닛들(115-A 내지 115-N)(집합적으로 "시스템 유닛들(115)" 또는 유닛들(115)"이라 하고, 개별적으로 "유닛(115)"이라 한다)을 포함하는 분산 연산 시스템을 포함할 수 있다. 분산 제어 시스템(100)은 네트워크(120)상에서 연결된 복수의 디바이스(유닛들(115))로 구성된다. 일 실시예에 따르면, 시스템 유닛(115)은 물리 접근 제어 디바이스를 포함한다. 예를 들어, 시스템 유닛(115)은 하나의 공간 또는 그룹화된 공간과 같은 보안 영역으로의 접근을 제어하는 제어기를 포함할 수 있다. 시스템 유닛(115)은 리더 디바이스를 통하여 인증서(예를 들어, 접근 카드 인증서)를 수신하고, 인증서가 진짜이고 보안 영역으로의 접근 권한이 있는 것인지 판단할 수 있다. 만일 그렇다면, 제어기는 도어에 대한 잠금을 해제하는 명령을 발행하거나 보안 영역으로의 접근을 허용하기 위한 다른 동작을 수행할 수 있다.
분산 제어 시스템(110)은 하나 이상의 분산 데이터세트를 포함할 수 있다. 분산 데이터세트는 분산 데이터세트와 관련된 시스템 유닛들(115)에 분산된(그리고 잠재적으로 여분인) 형태로 저장된 데이터를 포함한다. 일 실시예에 따르면, 분산 데이터세트는 하나 이상의 디바이스로 복제된다. 예를 들어, 전체 분산 데이터세트는 하나 이상의 유닛들(115)(예를 들어, 각 유닛)에 저장될 수 있다. 다른 실시예에 따르면, 하나 이상의 유닛들(115)은 분산 데이터세트의 서브셋을 저장할 수 있다. 또한, 분산 데이터세트는 모든 시스템 유닛들(115)과 관련되거나 시스템 유닛들(115)의 서브셋과 관련될 수 있다.
일 실시예에 따르면, 유닛들(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)은 분권화된 시스템 및 (서버 디바이스와 같은) 중앙 제어 디바이스를 모두 포함할 수 있다. 제어 시스템(110)에서의 변경은 어떠한 시스템 유닛(115)에서도 설정될 수 있으며, 변경이 분산 데이터세트와 관련된 경우 그 변경은 분산 데이터세트와 관련된 다른 시스템 유닛들(115)에게 전파될 수 있다. 또한, 단일 지점에서의 오류가 방지될 수 있는 것과 같이, 제어 시스템(110)은 디바이스 오류에 대한 강인함을 나타낼 수 있다. 예를 들어, 특정 시스템 유닛(115)이 오동작하면 다른 유닛들(115)은 데이터의 손실 없이(또는 최소한의 데이터 손실로) 동작을 지속할 수 있다. 다른 실시예에 따르면, 합의 없이 분산 데이터세트에 대한 변경이 수행될 수 있다.
네트워크(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) 디바이스, 및/또는 다른 종류의 무선 디바이스); 개인용 컴퓨터 또는 워크스테이션; 서버 디바이스; 랩탑; 태블릿, 또는 다른 종류의 휴대용 컴퓨터; 및/또는 통신 기능을 구비한 특정 종류의 디바이스를 포함할 수 있다. 일 실시예에 따르면, 관리 디바이스(130)는 유닛(115)의 일부일 수 있다. 그러한 경우 관리자는 하나 이상의 유닛들(115)의 제어 시스템(110)을 관리할 수 있다.
도 1이 환경(100)의 예시적인 구성요소를 나타내고 있으나, 다른 실시예에 따르면 환경(100)은 도 1에 도시된 것과는 다르게 적은 수의 구성요소, 다른 구성요소, 다르게 배치된 구성요소, 또는 추가 구성요소를 포함할 수 있다. 추가적으로 또는 선택적으로, 환경(100)(또는 디바이스들의 그룹)에 포함된 디바이스는 환경(100) 내에서 하나 이상의 다른 디바이스에 의하여 수행되도록 명시된 기능을 수행할 수 있다.
도 2a 및 도 2b는 유닛(115)의 예시적인 구성요소를 나타낸 블록도이다. 도 2a에 도시된 바와 같이, 유닛(115)은 제어기(210) 및 하나 이상의 주변 디바이스(230)를 포함할 수 있다. 제어기(210)는 유닛(115)의 동작을 제어하고 다른 유닛들(115)과 통신하고, 관리 디바이스(130)와 통신하고, 그리고/또는 주변 디바이스(230)를 제어할 수 있다. 제어기(210)에 의하여 제어되거나 제어기(210)와 통신하는 주변 디바이스(230)는 제어기(210)에게 정보를 제공하는 디바이스를 포함할 수 있다. 일 실시예에 따르면, 주변 디바이스(230)는 소정 종류의 보안 디바이스를 포함할 수 있다. 예를 들어, 주변 디바이스(230)는 리더 디바이스(240), 잠금 디바이스(250), 센서(260)(예를 들어, 카메라), 및/또는 액추에이터(270)와 같은 보안 디바이스를 포함할 수 있다.
도 2b에 도시된 바와 같이, 제어기(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)는 정보, 데이터, 및/또는 명령을 저장한다. 메모리(216)는 소정 종류의 동적이고, 휘발성이고, 및/또는 비휘발성의 저장 디바이스를 포함할 수 있다. 메모리(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)는 직렬 주변기기 인터페이스 버스 프로토콜(Serial Peripheral Interface Bus protocol)(예를 들어, 위건드(Wiegand) 프로토콜 및/또는 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 logic)를 통하여 이러한 동작을 수행할 수 있다. 제어기(210)는 또한 (또는 선택적으로) 메모리(216)과 같은 컴퓨터 판독 가능 매체에 기록되어 있는 소프트웨어 명령을 실행하는 프로세서(214)에 대한 응답으로 이러한 동작을 수행할 수 있다. 컴퓨터 판독 가능 매체는 일시적이지 않고(non-transitory) 및/또는 유형의 메모리 디바이스를 포함할 수 있다. 메모리(216)는 단일 물리 메모리 디바이스 또는 복수 개로 확장된 물리 메모리 디바이스 내에 구현될 수 있다. 소프트웨어 명령은 다른 컴퓨터 판독 매체 또는 다른 디바이스에서 판독되어 메모리(216)에 입력될 수 있다. 메모리(216)에 기록된 소프트웨어 명령에 의하여 프로세서(214)는 본 문서에 기재된 처리를 수행할 수 있다. 따라서, 본 문서에 기재된 구현은 하드웨어 회로 및 소프트웨어의 특정 조합에 한정되는 것이 아니다.
다시 주변 디바이스(230)를 설명하면, 리더 디바이스(240)는 사용자로부터 인증서를 판독하여 제어기9210)로 해당 인증서를 제공하는 디바이스를 포함할 수 있다. 예를 들어, 리더 디바이스(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)에 의하여 제어되는 모터가 구비된 기계식 잠금 수단; 전자 기계식 잠금 수단; 및/또는 다른 종류의 잠금 수단을 포함할 수 있다.
센서(260)는 센서 디바이스를 포함할 수 있다. 예시적인 것으로서, 센서(260)는 도어가 열려있는지 닫혀있는지를 감지하는 도어 센서; 가시광 모니터링 디바이스(예를 들어, 카메라); 적외선 모니터링 디바이스, 열 감지 모니터링 디바이스; 음성 모니터링 디바이스(예를 들어, 마이크로폰), 및/또는 다른 종류의 모니터링 디바이스; 움직임 센서, 열 센서, 압력 센서, 및/또는 다른 종류의 알람 센서와 같은 알람 센서; 유닛(115)의 내부에 구비된 위치 센서와 같은 접근 센서(tamper sensor); 및/또는 유닛(115)과 관련된 보안 영역 내에 위치하는 "퇴장 요청" 버튼; 및/또는 다른 종류의 센서 디바이스를 포함할 수 있다. 이하 예시적인 것으로서, 센서(260)는 "카메라(260)"를 지칭한 것일 수 있다.
액추에이터(270)는 액추에이터 디바이스를 포함할 수 있다. 예시적인 것으로서, 액추에이터(270)는 조명 디바이스를 제어할 수 있다. 다른 예시적인 것으로서, 액추에이터(270)는 도난 경보 동작기; 메시지를 재생하거나 알람 신호를 발생하는 스피커; 디스플레이 디바이스; (예를 들어, 카메라 또는 다른 모니터링 디바이스의 시야 제어를 위하여) 센서(260)를 움직이는 모터; 도어, 창문, HVAC 및/또는 보안 영역과 관련된 또 다른 입구의 열림/닫힘을 위한 모터; 잠겨있거나 잠겨있지 않은 위치에서의 잠금 디바이스(250)를 보호하는 모터; 소화 디바이스(fire extinguishing device); 및/또는 다른 종류의 액추에이터 디바이스를 포함할 수 있다.
도 2a 및 도 2b는 유닛(115)의 예시적인 구성요소를 나타내고 있으나, 다른 실시예로서 유닛(115)은 도 2a 및 도 2b와는 다르게 적은 수의 구성요소, 다른 구성요소, 추가 구성요소 또는 다르게 배치된 구성요소를 포함할 수 있다. 예를 들어, 하나의 리더 디바이스(240), 하나의 잠금 디바이스(250), 하나의 센서(260) 및 하나의 액추에이터(270)가 도 2a에 도시되어 있으나, 구현을 함에 있어서 주변 디바이스(230)는 복수의 리더 디바이스(240), 복수의 잠금 디바이스(250), 복수의 센서(260) 및/또는 복수의 엑추에이터(270)를 포함할 수 있다. 주변 디바이스(230)는 또한 도 2a에 도시된 것과 같은 하나 이상의 디바이스를 포함하지 않을 수 있다. 추가적으로 또는 선택적으로, 유닛(115)의 컴포넌트(또는 컴포넌트 그룹)는 유닛(115)의 하나 이상의 다른 컴포넌트에 의하여 수행되도록 명시된 작업 또는 작업들을 수행할 수 있다.
또한, 예시적인 분산 제어 시스템(110)은 분산 제어 시스템에 대한 물리 접근을 포함하고 있으나, 다른 예로서 물리 접근이 아닌 방식으로 시스템이 제어될 수 있다. 이에 반하여, 분산 제어 시스템(110)은 도어를 개방 및/또는 폐쇄하거나 빌딩 또는 시설로의 물리적인 접근을 제어하는 제어 시스템과 같은 소정 종류의 물리 접근 제어 시스템을 (예를 들어, 동작 환경 내에) 포함할 수 있다. 분산 제어 시스템(110)은 또한 팬(fan)을 제어하고(예를 들어, 동작 개시 또는 동작 중지), 빌딩 관리 시스템의 알람을 개시하고(예를 들어, 실패 인증, 성공 인증 등), 또는 산업 자동화 시스템에서 로봇 팔을 제어하는 시스템을 포함할 수 있다.
도 3a는 시스템 유닛(115)의 예시적인 기능적 구성요소를 나타낸 블록도이다. 도 3a에 도시된 바와 같이, 유닛(115)은 어플리케이션 프로그램 인터페이스(API; Application Program 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를 통하여 후술하기로 한다.
분산 계층(340)은 유닛들(115)과 관련된 하나 이상의 분배 데이터세트를 관리할 수 있다. 예를 들어, 분산 계층(340)은 데이터세트의 분배를 위하여 피어-투-피어 네트워크의 제어기들(210)을 연결할 수 있다. 분산 계층(340)은 프로토콜(예를 들어, 팍소스(PAXOS) 프로토콜)을 이용하여 특정 합의 기반 분산 데이터세트의 변경에 대한 합의를 구현할 수 있다. 예시적인 것으로서, 분산 계층(340)은 변경에 대한 제안을 분산 데이터세트와 관련된 다른 시스템 유닛들(115)에게 송신하고, 변경에 대한 정족수를 다른 시스템 유닛들(115)로부터 수신할 수 있다. 다른 예시적인 것으로서, 분산 계층(340)은 다른 유닛(115)으로부터 수신된 제안에 동의할 수 있다. 또 다른 예시적인 것으로서, 분산 계층(340)은 변경에 대한 동의 없이도 변경에 대한 합의가 수행되었음을 나타내는 통지를 수신할 수 있다. 변경에 대한 합의 통지가 수신된 경우, 분산 계층(340)은 분산 데이터세트에 대한 로컬 복제본의 변경을 수행할 수 있다. 분산 계층(340)은 네트워크(120)를 통한 다른 유닛들(115)과의 보안 연결(예를 들어, 전송 계층 보안(TLS; transport Layer Security) 연결)을 유지할 수 있다.
저장 계층(350)은 유닛(115)과 관련된 하나 이상의 데이터세트를 저장할 수 있다. 저장 계층(350)에 저장된 저장 계층은 로컬 데이터세트에 대응하거나 분산 데이터세트에 대응할 수 있다. 로컬 데이터세트는 로컬 데이터세트를 저장하고 있는 특정 유닛(115)과 관련된(및/또는 관련만 되어 있는) 정보를 저장할 수 있다. 분산 데이터세트는 분산 데이터세트와 관련된 다른 시스템 유닛들(115)에 분산되어 있는 정보를 저장할 수 있다.
도 3b는 제어기(210)의 예시적인 기능적 구성요소를 나타낸 블록도로서, 어플리케이션 계층(320) 및 저장 계층(350)에 대한 세부 사항을 포함하고 있다. 도 3b에 도시된 바와 같이, 어플리케이션 계층(320)은 제어 로직 어플리케이션(322)(또는 "제어 로직(322)"), 관리자 인증 로직(323), 도어 제어 어플리케이션(324), 리더 제어 어플리케이션(326), 이벤트 처리 어플리케이션(328), 및/또는 스케줄 처리 어플리케이션(330)을 포함할 수 있다. 다른 어플리케이션, 예를 들어 알람 및 제어 어플리케이션이 포함될 수도 있다.
제어 로직(322)은 수신된 인증서 및 저장된 접근 규칙을 기초로 사용자에게 물리적 접근을 허용할지를 판단할 수 있다. 관리 로직(323)은 관리자에게 접근(예를 들어, 원격 로그인과 같은 원격 접속)을 허용하고, 다른 관리 프로세스를 제공할 수 있다. 그러한 경우, 관리 로직(323)은 (예를 들어, 다른 관리자를 위하여 및/또는 물리적 접근을 허용 받고자 하는 사용자를 위하여) 인증서(예를 들어, 사용자 이름 및 암호)를 기초로 관리자를 인증하고, 관리자에게 접근하고 사용자 인증서를 갱신하는 등의 권리를 부여할 수 있다.
도어 제어 어플리케이션(324)은 하나 이상의 도어 및/또는 관련된 잠금 디바이스(250)를 제어할 수 있다. 예를 들어, 도어 제어 어플리케이션(324)은 도어가 열려있는지 닫혀있는지 및/또는 잠겨있는지 잠겨있지 않는지를 판단하고, 하나 이상의 디바이스가 도어를 열거나 닫거나 및/또는 잠그거나 잠금 해제하도록 동작시킬 수 있다. 리더 제어 어플리케이션(326)은 하나 이상의 리더 디바이스(240)를 제어하고, 하나 이상의 리더 디바이스(240)로부터 수신된 인증서를 획득하여 처리할 수 있다. 이벤트 처리 어플리케이션(328)은 도어 열림 이벤트, 알람 이벤트, 센서 이벤트, 및/또는 다른 종류의 로그 이벤트와 같은 유닛(115)에 의하여 저장된 이벤트를 처리할 수 있다. 이벤트 처리 어플리케이션(328)은 리포트 및/또는 알람을 발생시키고 리포트 및/또는 알람을 관리 디바이스(130)(및/또는 다른 유닛들(115)과 같은 또 다른 지정 디바이스)로 송신할 수 있다. 스케줄 처리 어플리케이션(330)은 유닛(115)과 관련된 하나 이상의 스케줄을 관리할 수 있다. 예를 들어, 특정 사용자 그룹에 대한 접근 규칙은 하루 중 특정 시간을 기초로 변경될 수 있다.
저장 계층(350)은 분산 데이터 영역(360) 및 비분산(non-distributed) 데이터 영역(370)을 포함할 수 있다. 일 실시예에 따르면, 분산 데이터 영역(360)은 분산된 합의 기반의 데이터(예를 들어, 데이터베이스) 및/또는 분산된 비합의 기반(non-consensus-based)의 데이터(예를 들어, 데이터베이스)를 포함할 수 있다. 비분산 데이터 영역(370)은 (즉, 전술한 로컬 데이터세트와 같은) 분산되지 않은 데이터(예를 들어, 데이터베이스) 및/또는 합의 기반이 아닌 데이터를 포함할 수 있다. "데이터 영역"은 예를 들어 데이터베이스 및/또는 메모리 영역을 의미하는 것일 수 있다.
도 3c는 저장 계층(350)의 예시적인 구성요소를 나타낸 블록도이다. 도시된 바와 같이, 분산 데이터 영역(360)은 합의 데이터 영역(361) 및 비합의 데이터 영역(363)을 포함할 수 있다. 합의 데이터 영역(361)은 전술한 바와 같이 데이터에 대한 변경이 허용되기 전에 피어간의 합의를 필요로 하는 데이터를 포함한다. 비합의 데이터 영역(363)은 전술한 바와 같이 데이터에 대한 변경이 허용되기 전에 피어간의 합의를 필요로 하지 않는 데이터를 포함한다. 일 실시예에 따르면, 비합의 데이터는 유닛(115)에서 발생한 이벤트를 포함할 수 있다. 이러한 경우, 해당 유닛(115)은 이벤트를 보유할 수 있으며, "스플릿 브레인 신드롬(split-brain syndrome)"을 회피하기 위한 합의는 필요하지 않을 수 있다. 스플릿 브레인 신드롬은 예를 들어 분산 데이터베이스를 분산하는 서로 다른 유닛들이 불일치하거나 충돌하는 데이터를 저장하고 있고, 그러한 불일치 또는 충돌을 해결하기 위한 합의가 이루어지지 않을 때 발생할 수 있다.
도 3c에 도시된 바와 같이, 합의 데이터 영역(361)은 디바이스 고유 데이터(362), 관리자 인증 DB(364), 접근 인증 DB(366), 및/또는 가입 테이블(367)을 포함할 수 있다. 전술한 바와 같이, 디바이스 고유 데이터(362)는 제어기(210)의 하드웨어 설정, 제어기(210)에 연결된 주변 디바이스(230), 어플리케이션 계층(320)에 설치된 어플리케이션, 또는 다른 종류의 정보와 같은 특정 유닛(115)과 관련된 설정 정보를 포함할 수 있다.
관리자 인증 DB(364)는 시스템 유닛(115)을 운영 및/또는 관리하는(예를 들어, 원격 로그인을 통하여) 사용자를 인증하기 위한 인증서(예를 들어, 사용자 이름 및 암호)를 저장할 수 있다. 일 실시예에 따르면, 관리자 인증 DB(364)는 (예를 들어, 합의 기반 데이터베이스에 따라) 다른 제어기(210)에게 분산되어, 동일한 관리자로 하여금 제어기(210) 또는 유닛들(115) 중 어느 하나로부터 시스템(110)을 운영할 수 있도록 한다.
접근 인증 DB(366)는 물리 영역(예를 들어, 카드 및 핀 정보, 지문 정보 등)에 접근하고자 하는 사용자에 대한 인증서를 저장할 수 있다. 일 실시예에 따르면, 접근 인증 DB(366)의 데이터는 (예를 들어, 합의 기반의 분산 데이터베이스에 따라) 네트워크상의 다른 제어기에게 분산될 수 있다.
가입 테이블(367)은 등록된 이벤트 및 다른 디바이스의 이벤트를 통지 받도록 등록된 디바이스의 리스트를 포함할 수 있다. 예를 들어, 스포트라이트(spotlight)에 대한 제어기(210)는 카메라에 대한 제어기(210)의 움직임 감지 이벤트를 등록하여 통지 받을 수 있다. 따라서, 일련의 규칙을 기초로 카메라에 의하여 움직임이 감지된 경우 스포트라이트는 켜질 수 있다(예를 들어, 전술한 "경보"). 가입 테이블(367)에 대한 자세한 설명은 도 3e를 통하여 후술하기로 한다.
도 3c에 도시된 바와 같이, 비합의 데이터 영역(363)은 디바이스-이벤트 데이터 영역(369)("디바이스-이벤트 영역(369)" 또는 "제 1 데이터 영역"이라 한다) 및 기타-이벤트 데이터 영역(368)("기타-이벤트 영역(368)" 또는 "제 2 데이터 영역"이라 한다)을 구비한다. 디바이스-이벤트 영역(369)은 특정 유닛(115) 및/또는 제어기(110)에서 발생된 이벤트 데이터를 저장한다(또는 기록한다)(예를 들어, 유닛(115-A)는 제어기(110-A)를 구비하는 유닛(115-A)에서 발생된 이벤트에 대한 데이터를 영역(369)에 저장한다). 기타-이벤트 영역(368)은 다른 유닛들(115) 및/또는 제어기(110)에서 발생된 이벤트 데이터를 저장한다(또는 기록한다)(예를 들어, 유닛(115-A)는 유닛(115-B) 내지 유닛(115-F) 중 어느 유닛에서 발생된 이벤트에 대한 데이터를 영역(368)에 저장한다). 전술한 바와 같이, 디바이스-이벤트 영역(369) 및 기타-이벤트 영역(368)에 저장된 이벤트는 태그가 부여되거나 대응하는 디바이스와 관련되고(예를 들어, 고유 디바이스 식별자), 스플릿 브레인 신드롬을 회피하기 위한 합의는 필요로 하지 않을 수 있다.
일 실시예에 따르면, 디바이스-이벤트 영역(369) 및/또는 기타-이벤트 영역(368)(및 저장 계층(350)의 기타 데이터 영역)은 최대 메모리 공간에 관련(또는 할당)될 수 있다. 즉, 디바이스-이벤트 영역(369)(제 1 데이터 영역)은 제 1 메모리 공간을 벗어나지 않는 한도 내에서 차지하도록 설정되고, 기타-이벤트 영역(368)(제 2 데이터 영역)은 제 2 메모리 공간을 벗어나지 않는 한도 내에서 차지하도록 설정된다. 일 실시예에 따르면, 디바이스-이벤트 영역(369)을 위하여 할당된 최대 메모리 공간(제 1 메모리 공간)은 기타-이벤트 영역(368)을 위하여 할당된 최대 메모리 공간(제 2 메모리 공간)보다 크다. 또한, 일 실시예에 따르면, 영역(368 및 369)은 텍스트 파일일 수 있는데, 예를 들어 텍스트 파일의 각 줄은 서로 다른 이벤트에 대응한다. 일 실시예에 따르면, 저장 계층(350)의 기타 데이터 영역은 또한 최대 메모리 공간(예를 들어, 디바이스-이벤트 데이터 영역(372))에 관련(할당)될 수 있다.
비분산 데이터 영역(370)은 또한 특정 유닛(115) 및/또는 제어기(110)에서 발생된 이벤트 데이터를 저장할 수 있다(예를 들어, 유닛(115-A)은 유닛(115-A) 및/또는 제어기(110-A)에서 발생된 이벤트에 관한 데이터를 영역(370)에 저장한다). 데이터 영역(368 및 369)와 마찬가지로, 디바이스-이벤트 데이터 영역(372)에 저장된 데이터는 태그가 부여되거나 대응하는 디바이스와 관련되고(예를 들어, 고유 디바이스 식별자), 스플릿 브레인 신드롬을 회피하기 위한 합의는 필요로 하지 않을 수 있다. 일 실시예에 따르면, 도 3c의 화살표로 도시된 바와 같이, 디바이스-이벤트 영역(372)의 데이터는 비분산 데이터 영역(370)에서 비합의 데이터 영역(363)으로 복제될 수 있다.
이와 같이, 도 3c는 대응하는 디바이스(제어기(210))에서 발생된 이벤트 데이터를 저장하는 제 1 데이터 영역(디바이스-이벤트 영역(369)) 및 복수의 디바이스 중 다른 디바이스(다른 제어기(210))에서 발생된 이벤트 데이터를 저장하는 제 2 데이터 영역(기타-이벤트 영역(368))을 포함하는 메모리(예를 들어, 저장 계층(350))는 나타낸다. 또한, 전술한 바와 같이, 일 실시예에 따르면 제 1 데이터 영역은 제 1 메모리 공간을 벗어나지 않는 한도 내에서 차지하도록 설정되고, 제 2 데이터 영역은 제 2 메모리 공간을 벗어나지 않는 한도 내에서 차지하도록 설정될 수 있다.
도 3d는 저장 계층(350)의 예시적인 구성요소를 나타낸 다른 블록도이다. 도시된 바와 같이, 저장 계층(350)은 휘발성 저장부(390) 및 비휘발성 저장부(392)를 포함할 수 있다. 휘발성 저장부(390)는 전력이 공급되는 동안 데이터를 저장한다. 즉, 휘발성 저장부(390)로의 전력이 중단되자마자 그 데이터는 삭제된다. 이에 반하여, 비휘발성 저장부(392)는 전력이 없어도 데이터를 저장할 수 있는데, 그럼에도 저장된 데이터를 변경하기 위해서는 비휘발성 저장부(392)는 전력을 필요로 한다. 일 실시예에 따르면, 휘발성 저장부(390)에 저장된 데이터를 변경하는데(또는 데이터를 저장하는데) 소요되는 시간은 비휘발성 저장부(392)에 저장된 데이터를 변경하는데(또는 데이터를 저장하는데) 소요되는 시간보다 짧다(또는, 상당히 짧다). 이와 마찬가지로, 휘발성 저장부(390)에 저장된 데이터를 변경하는데(또는 데이터를 저장하는데) 소요되는 연산력(computational power)은 비휘발성 저장부(392)에 저장된 데이터를 변경하는데(또는 데이터를 저장하는데) 소요되는 연산력보다 작다(또는, 상당히 작다). 도 3c에 도시된 서로 다른 데이터 영역(예를 들어, 디바이스-이벤트 데이터 영역(369), 기타-이벤트 데이터 영역(368), 분산 데이터 영역(360), 및/또는 비분산 데이터 영역(370))은 휘발성 저장 영역(390) 및 비휘발성 저장 영역(392)에 포함된 영역을 가질 수 있다.
도 3a 내지 도 3d가 유닛(115)의 예시적인 기능적 구성요소를 나타내고 있으나, 다른 실시예에 따르면 유닛(115)은 도 3a 내지 도 3c에 도시된 것과는 다르게 적은 수의 기능적 구성요소, 다른 기능적 구성요소, 다르게 배치된 기능적 구성요소, 또는 추가 기능적 구성요소를 포함할 수 있다. 또한, 유닛(115)의 구성 요소(또는, 어떠한 구성요소의 그룹) 중 어느 것이든 시스템 유닛(115)에 구비된 하나 이상의 다른 기능적 구성요소에 의하여 수행되도록 명시된 기능을 수행할 수 있다. 또한, 유닛(115)의 기능적 구성요소는 예를 들어, 하나 이상의 ASIC의 배선에 의한 회로를 통하여 구현될 수 있다. 추가적으로 또는 선택적으로, 유닛(115)의 기능적 구성요소는 메모리(216)의 명령을 실행하는 프로세서(214)에 의하여 구현될 수 있다.
도 3e는 예시적인 가입 테이블(367)을 나타낸 블록도이다. 가입 테이블(367)은 가입자 필드(392), 디바이스 필드(394), 및/또는 이벤트 필드(396)를 포함할 수 있다. 가입자 테이블(367)은 도 3에 도시된 것과는 다르게 더 많거나, 더 적거나, 다른 배치의 필드를 포함할 수 있다.
가입자 필드(392)는 디바이스의 이벤트를 통지 받도록 등록된 제어기(210)를 나타낸다. 이벤트 필드(396)는 가입자 필드(392)의 대응하는 제어기(210)가 통지 받도록 가입한 이벤트를 나타낸다. 디바이스 필드(394)는 대응하는 이벤트와 관련된 제어기(210)를 나타낸다. 예를 들어, 가입 테이블(367)의 첫 번째 행에 표시된 것과 같이, 제어기(210-C)는 카메라(260)에 의하여 감지된 움직임을 포함하여 제어기(210-A)에서 발생된 이벤트에 대한 데이터를 수신하도록 가입되어 있다. 따라서, 일련의 규칙을 기초로 제어기(210-C)가 카메라(260)에 의하여 감지되고 있는 움직임에 대한 데이터를 수신하면, 제어기(210-C)는 액추에이터를 동작시켜 감지됨 움직임을 향하여 스포트라이트가 켜지도록 할 수 있다.
일 실시예에 따르면, 가입 테이블(367)은 관리자에 의하여 수동으로 설정될 수 있다. 다른 실시예에 다르면, 관리자는 제어기에 대한 규칙(예를 들어, 카메라(260)에 의하여 감지된 움직임의 방향으로 스포트라이트를 움직이는 것)을 설정하고, 시스템(110)은 제어기(210-A)의 적절한 이벤트에 대하여 제어기(210-C)를 자동으로 가입시킬 수 있다.
도 4는 유닛(115-A)의 물리적 레이아웃을 나타낸 평면도이다. 도 4에 도시된 바와 같이, 유닛(115-A)는 벽(410), 도어(420), 제어기(210-A), 리더 디바이스(240), 잠금 디바이스(250), 센서(260) 및 액추에이터(270)를 포함할 수 있다.
벽(410)은 빌딩의 룸(room)과 같은 보안 영역(440)을 수용한다. 도어(420)는 사용자에게 보안 영역(440)으로의 접근을 제공한다. 일 실시예에 따르면, 제어기(210-A)는 보안 영역(440)의 내부에 설치된다. 다른 실시예에 따르면, 제어기(210-A)는 비보안 영역(450)의 내부에 설치될 수 있다. 리더 디바이스(240)는 보안 영역(440)의 외부에 설치되고, 잠금 디바이스(250)는 보안 영역(440) 내부의 벽(410) 및 도어(420)에 설치된다. 이와 같은 예에 따르면, 센서(260)는 보안 영역(440)의 외부, 비보안 영역(450)의 내부에 마운팅된 모니터링 디바이스이다. 액추에이터(270)는 이러한 예에 따른 모니터링 디바이스의 시야를 제어하기 위하여 사용되는 모터를 포함한다.
(예를 들어, PIN 번호 입력, 접속 카드 스캐닝, 홍채 스캐닝 등을 입력함으로써) 사용자가 리더 디바이스(240)에 인증서를 입력하면, 제어기(210-A)는 인증서를 사용하여 사용자의 신원을 확인하고, 접근 규칙 테이블을 검색하여 사용자의 신원 및 접근 규칙을 기초로 사용자에 의한 접근 허용 여부를 판단할 수 있다. 접근이 허용되는 것으로 제어기(210-A)가 판단하면, 제어기(210-A)는 잠금 디바이스(250)를 동작시켜 도어(420)의 잠금을 해제하여 사용자에 의한 보안 영역(440)으로의 접근을 허용한다.
도 4는 물리적 레이아웃(400)의 예시적인 구성요소를 나타내고 있으나, 다른 실시예에 따르면 물리적 레이아웃(400)는 도 4에 도시된 것과는 다르게 적은 수의 구성요소, 다른 구성요소, 추가 구성요소, 또는 다르게 배치된 구성요소를 포함할 수 있다. 추가적으로 또는 선택적으로, 물리적 레이아웃(400)의 어느 구성요소(또는 구성요소의 그룹)라도 물리적 레이아웃(400)에 구비된 하나 이상의 다른 구성요소에 의하여 수행하도록 명시된 하나의 작업 또는 복수의 작업을 수행할 수 있다.
도 5는 제어 시스템(110)의 예시적인 물리적 레이아웃(500)을 나타낸 평면도이다. 도 5에 도시된 바와 같이, 물리적 레이아웃(500)은 유닛(115-A)(도 4에 도시)을 포함한다. 물리적 레이아웃(500)은 또한 룸(520-A 내지 520-F)로 구성된 빌딩(510)을 포함할 수 있다. 이더넷 네트워크와 같은 로컬 네트워크(530)는 시스템 유닛(115-A 내지 115F)간에 상호 연결될 수 있다. 이러한 예에 따르면, 시스템 유닛(115-A)은 2개의 도어가 룸(520-F)을 향하도록 제어하고; 시스템 유닛(115-B)은 외부 도어가 룸(520-B)를 향하도록 제어하고; 시스템 유닛(115-C)는 하나의 도어가 룸(520-B)에서 룸(520-C)를 향하도록 제어하고, 시스템 유닛(115-D)는 하나의 도어가 룸(520-C)에서 룸(520-D)를 향하도록 제어하고; 시스템 유닛(115-E)는 하나의 도어가 룸(520-D)에서 룸(520-E)를 향하도록 제어하며; 유닛(115-F)는 외부 도어가 룸(520-F)를 향하도록 제어한다.
이러한 예에 따르면, 시스템 유닛들(115-A 내지 115-F)은 중앙 제어 디바이스(예를 들어, 서버)를 포함하지 않고, 하나 이상의 분산 데이터 세트를 포함할 수 있다. 예를 들어, 시스템 유닛(115-A 내지 115-F)은 분산 인증 테이블, 분산 접근 규칙 테이블, 및/또는 분산 이벤트 로그를 보관할 수 있다. 관리자가 관리 디바이스(130)를 이용하여 시스템 유닛(115-A)에 로그인하고, 사용자를 추가하고 사용자와 관련된 인증서를 추가하는 것을 가정하자. 이렇게 추가된 인증서는 사용자가 접근하고자 하는 룸의 도어를 제어하는 다른 시스템 유닛들(115)에게 분산될 수 있다. 예를 들어, 시스템 유닛(115-B)이 실패하면, 다른 시스템 유닛들에 포함된 분산 이벤트 로그에 의하여 시스템 유닛(115-B)에 의하여 수집된 데이터는 계속 유효할 수 있다.
도 5에서 각 유닛(115)은 제어기(210)와 관련된다. 또한, 이러한 도 5의 예에서 각 제어기(210)는 다른 제어기(210)와는 다른 위치(예를 들어, 서로 다른 룸(520))에 있게 된다. 다른 실시예에 따르면, 몇몇 제어기(210) 및 유닛들(115)은 다른 제어기 및 유닛들(115)에 대하여 서로 다른 빌딩, 서로 다른 지리학적 지역, 서로 다른 국가, 서로 다른 대륙 등에 위치할 수 있다. 다양한 위치에 있지만, 일 실시예에 따르면 유닛들(115) 및 제어기(210)는 상호간을 발견하여(또는 그러도록 최선의 시도를 수행하여) 피어-투-피어 네트워크를 형성하고, 데이터세트를 분배할 수 있다.
도 5는 물리적 레이아웃(500)의 예시적인 구성요소를 나타내고 있으나, 다른 실시예에 따르면 물리적 레이아웃(500)은 도 5에 도시된 것과는 다르게 적은 수의 구성요소, 다른 구성요소, 추가 구성요소 또는 다르게 배치된 구성요소를 포함할 수 있다. 예를 들어, 다른 실시예에 따르면, 중앙 제어 디바이스(예를 들어, 서버)가 하나 이상의 분산 데이터세트와 함께 이용될 수 있다. 추가적으로 또는 선택적으로, 물리적 레이아웃(500)의 하나 이상의 구성요소는 물리적 레이아웃(500)에 구비된 하나 이상의 다른 구성요소에 의하여 수행하도록 명시된 하나 이상의 작업을 수행할 수 있다.
도 6은 관리 디바이스(130)의 예시적인 구성요소를 나타낸 블록도이다. 도 6에 도시된 바와 같이, 관리 디바이스(130)는 버스(610), 프로세서(620), 메모리(630), 입력 디바이스(640), 출력 디바이스(650) 및 통신 인터페이스(660)를 포함할 수 있다.
버스(610)는 관리 디바이스(130)의 구성요소간 통신을 가능하게 하는 경로를 포함할 수 있다. 프로세서(620)는 명령을 인터프리트하고 실행하는 소정 종류의 싱글 코어 프로세서, 멀티 코어 프로세서, 마이크로 프로세서, 래치 기반 프로세서(latch-based processor), 및/또는 처리 로직 (또는, 프로세서, 마이크로 프로세서, 및/또는 처리 로직의 패밀리)를 포함할 수 있다. 다른 실시예에 따르면, 프로세서(620)는 ASIC, FPGA, 및/또는 다른 종류의 집적 회로 또는 처리 로직을 포함할 수 있다.
메모리(630)는 정보, 데이터, 및/또는 명령을 저장한다. 메모리(630)는 동적이고, 휘발성이고, 및/또는 비휘발성의 저장 디바이스를 포함할 수 있다. 메모리(630)는 프로세서(620)에 의한 실행을 위한 명령 또는 프로세서(620)에 의한 사용을 위한 정보를 저장할 수 있다. 예를 들어, 메모리(630)는 램(RAM), 롬(ROM), 내용 주소화 기억 장치(Content Addressable Memory), 자기 및/또는 광학 저장 메모리 디바이스 등을 포함할 수 있다.
입력 디바이스(640)는 조작자로 하여금 관리 디바이스(130)로 정보를 입력할 수 있도록 한다. 입력 디바이스(640)는 예를 들어, 키보드, 마우스, 펜, 마이크로폰, 터치 스크린 디바이스 등을 포함할 수 있다. 출력 디바이스(650)는 관리 디바이스(130)의 조작자에게 정보를 출력할 수 있다. 출력 디바이스(650)는 디스플레이, 프린터, 스피커, 및/또는 다른 종류의 출력 디바이스를 포함할 수 있다.
통신 인터페이스(660)는 유선 통신 링크, 무선 통신 링크 또는 무선 및 유선 통신 링크의 조합을 통하여 제어기(210)가 다른 디바이스 및/또는 시스템과 통신(예를 들어, 데이터의 송신 및/또는 수신)할 수 있도록 하는 송수신기(예를 들어, 송신기 및/또는 수신기)를 포함할 수 있다. 통신 인터페이스(660)는 유선 통신을 위한 네트워크 인터페이스 카드(예를 들어, 이더넷 카드) 및/또는 무선 통신을 위한 무선 네트워크 인터페이스(예를 들어, 와이파이) 카드를 포함할 수 있다.
관리 디바이스(130)는 관리 유닛들(115)와 관련된 동작을 수행할 수 있다. 관리 디바이스(130)는 메모리(630)과 같은 컴퓨터 판독 가능 매체에 기록되어 있는 소프트웨어 명령을 실행하는 프로세서(620)에 대한 응답으로 이러한 동작을 수행할 수 있다. 메모리(630)에 기록된 소프트웨어 명령은 프로세서(620)로 하여금 이러한 동작을 수행하도록 한다.
전술한 바와 같이, 제어기(210)는 분산된 형태로 이벤트 데이터를 저장한다. 도 7은 일 실시예에 따른 분산 제어 시스템에서의 이벤트에 대한 데이터를 분산시키는 예시적인 프로세스(700)를 나타낸 흐름도이다. 프로세스(700)는 예를 들어, 제어기(210)에서 동작하는 제어 로직(322), 분산 계층 로직(340), 및/또는 이벤트 처리 어플리케이션(328)에 의하여 수행될 수 있다.
프로세서(700)는 이벤트의 발생과 함께 시작된다(블록 702). 예를 들어, 유닛(115-A)의 카메라(260)는 그 시야 내에 있는 물체의 움직임을 감지할 수 있다. 이러한 이벤트는 카메라(260)에 의하여 제어기(210-A)로 통지되는데, 여기서 제어기(210-A)는 카메라(260)로부터 이벤트에 관한 데이터를 수신한다. 이벤트에 대한 데이터는 움직임이 감지되었다고 하는 사실, 움직임이 감지된 시간, 움직임의 크기에 대한 정보 등을 포함할 수 있다. 제어기(210-A)는 이벤트에 대한 가입자가 존재하는지를 판단한다(블록 703). 이러한 예에 따르면, 제어기(210-A)는 가입 테이블(367)을 참조할 수 있는데, 이는 제어기(210-C)가 "카메라(260)에 잡힌 움직임" 이벤트가 통지되도록 등록한 제어기(210-A)(칼럼 394에 리스트 됨)에게 정보를 제공한다. 이벤트에 대한 가입자가 존재하면(블록 704: 예), 이벤트에 대한 데이터가 분산 데이터 영역(360)에 저장될 수 있다(블록 706)(예를 들어, 비합의 데이터 영역(363)의 디바이스-이벤트 영역(369)에 저장될 수 있다). 계속적으로 이러한 예에 따르면, 제어기(210-A)는 "카메라(260)에 잡힌 움직임" 이벤트를 명시하고 있는 데이터를 디바이스-이벤트 영역(369)(제 1 데이터 영역)에 저장한다. 이벤트에 대한 데이터는 또한 제어기(210-A) 및/또는 카메라(260)의 식별 정보가 포함된 태그가 부여될 수 있다.
분산 데이터 영역(360)의 부분으로서, 이벤트에 대한 데이터는 다른 제어기(210)(예를 들어, 가입 제어기(210-C)를 포함한 제어기(210-B 내지 210-F))로 분배될 수 있다(블록 708). 전술한 바와 같이, 분배는 제어 로직(322) 및/또는 분산 계층(340)에 의하여 처리될 수 있다. 이벤트에 대한 데이터(예를 들어, 카메라(260)에 잡힌 움직임)는 제어기(210-A)의 디바이스-이벤트 영역(369)(제 1 데이터 영역)에 저장되기 때문에 제어기(210-C)는 분산 데이터 영역(360)의 비합의 데이터 영역(363)에 있는 데이터 분산의 일부로서 이벤트의 데이터에 대한 정보를 받게 된다. 일단 제어기(210-C)가 이벤트에 대한 데이터를 수신하면, 제어기(210-C)는 이벤트에 대한 데이터를 규칙과 비교하고, 비교를 기초로 한 적절한 규칙에 따라 이벤트에 대한 처리를 수행할 수 있다. 이와 같이, 다른 제어기(210)(예를 들어, 제어기(210-C))가 이벤트 데이터의 가입과 관련된 경우 제어기(210-A)는 우선순위에 따라 다른 제어기(예를 들어, 제어기(210-C))로 (예를 들어, 디바이스-이벤트 영역(369) 또는 제 1 데이터 영역에 저장되어 있는) 이벤트 데이터의 분배를 수행할 수 있다.
이와 같은 실시예에 따라, 제어기(210-A)가 분주한지 여부와 무관하게 제어기(210-A)는 이벤트에 대한 데이터를 디바이스-이벤트 영역(369)(제 1 데이터 영역)에 저장하고(블록 706), 다른 제어기(210)에게 데이터를 분배할 수 있다(블록 708). 다른 실시예에 따르면, 제어기(210-A)가 분주한 경우 이벤트에 대응하는 데이터는 제어기(210-A)의 분산 데이터 영역(360)의 디바이스-이벤트 영역(369)(제 1 데이터 영역)에 저장되지 않고(또는 저장되면서) 직접 가입된 제어기(210-C)로 분배될 수 있다. 이러한 경우, 제어기(210-A)(예를 들어, 네트워크 인터페이스(218))는 이벤트의 데이터와 함께 메시지를 직접 제어기(210-C)에게 송신할 수 있다. 이러한 실시예는 보다 적게 분주한 시간 구간에 이를 때까지 이벤트에 대한 데이터의 분배를 위한 (예를 들어, 제어기(210-A)의) 연산 자원, (예를 들어, 네트워크(120)의) 네트워크 자원을 감소시킬 수 있다. 다른 실시예에 따르면, 제어기(210-A)는 이벤트에 가입한 다른 제어기(210)에게 이벤트와 관련된 데이터를 송신하는 것만을 수행할 수 있다. 이러한 실시예는 제어기(210-A)의 자원을 절약할 수 있다. 제어기(210-A)는 상태 또는 트리거 이벤트를 기초로 분주한지 여부를 판단할 수 있다: 예를 들어, 프로세서의 부하 임계치, 네트워크(120)의 트래픽 양(예를 들어, 임계치 밑으로 떨어지는지 또는 임계치 위로 올라가는지), 처리 중인 이벤트의 수(예를 들어, 임계치의 위 또는 아래) 등을 기초로. 제어기(210-A)는 예를 들어 전부하(full load)의 이벤트를 발생하고 처리하기 때문에 분주할 수 있다(예를 들어, 잠금 디바이스(250)에 의하여 제어되는 도어로의 입장).
이벤트에 대한 가입자가 없는 경우(블록 704: 아니오), 제어기(210-A)는 자신이 분주한지 여부를 판단할 수 있다(블록 709). 제어기(210)가 분주한지에 대한 판단은 전술한 바와 같다. 제어기(210-A)가 분주하지 않으면(블록 710: 아니오), 이벤트에 대한 데이터는 분산 데이터 영역(360)(예를 들어, 비합의 데이터 영역(363)의 디바이스-이벤트 영역(369)(제 1 데이터 영역))저장될 수 있다(블록 712). 이러한 예에 따르면, 분산 데이터 영역(360)의 부분으로서, 이벤트에 대한 데이터는 다른 제어기(210)(예를 들어, 제어기(210-B 내지 210-F))로 분배된다(블록 712). 다른 실시예에 따르면, 제어기(210-A)는 다른 제어기(210)가 분주한지 여부를 판단할 수 있다(도 7에 미도시). 이러한 실시예에 따르면, 다른 제어기(210)가 분주하면 다른 제어기(210)에게 데이터를 분배하기 전에 제어기(210-A)는 다른 제어기(예를 들어, 제어기(210-C))가 분주하지 않을 때까지 대기할 수 있다. 도 10에 대하여 후술하는 바와 같이, 제어기(210-A)가 다른 제어기(210-C)로부터 분주하다고 하는 "대기 메시지(hold message)"를 수신하면 제어기(210-A)는 다른 제어기(210-C)가 분주한 것으로 판단할 수 있다. 또한, 도 10에 대하여 후술하는 바와 같이, 제어기(210-A)가 다른 제어기(210-C)로부터 분주하지 않다고 하는(또는 더 이상 분주하지 않다고 하는) "대기 중지 메시지(stop-hold message)"를 수신하면 제어기(210-A)는 다른 제어기(210-C)가 분주하지 않은 것으로 판단할 수 있다. 다른 실시예에 다르면, 다른 제어기(210-C)에 의하여 송신되거나 수신되거나 이벤트 데이터가 임계치(예를 들어, 제어기(210-C)의 이벤트 데이터에 대한 이력 분석이 판단된 임계치)를 초과하는 경우 제어기(210-A)는 다른 제어기(210-C)가 분주한 것으로 판단할 수 있다.
제어기(210-A)가 분주한 경우(블록 710: 예), 이벤트에 대한 데이터는 비분산 데이터 영역(370)(예를 들어, 디바이스-이벤트 영역(372))에 저장될 수 있다(블록 714). 전술한 바와 같이, 비분산 데이터 영역(370)에 저장된 데이터는 분산 계층(340)에 의한 분배 대상이 아닐 수 있으며, 이에 자원이 절약될 수 있다 - 제어기(210)가 분주하기 때문. 도 10에 대하여 이하 자세히 설명한 바와 같이, 예를 들어 제어기(210)가 분주하지 않은 경우 이벤트에 대한 데이터는 분산을 위하여 비분산 데이터 영역(370)에서 분산 데이터 영역(360)(예를 들어, 디바이스-이벤트 영역(369))으로 이동되거나 복제될 수 있다. 또한, 일 실시예에 따라 제어기(210-A)가 분주하면(블록 710: 예), 이벤트에 대한 데이터는 비휘발성 저장부(392)보다는 휘발성 저장부(390)에 저장될 수 있다. 전술한 바와 같이, 제어기(210-A)는 비휘발성 저장부가 아닌 휘발성 저장부(390)에 데이터를 저장함으로써 자원을 절약할 수 있다 - 제어기(210)가 분주하기 때문. 예를 들어, 제어기가 덜 분주한 경우 이벤트에 대한 데이터는 휘발성 저장부(390)에서 비휘발성 저장부(392)로 이동되거나 복제될 수 있다.
제어기(210-A)가 전력을 잃으면(예를 들어, 전력 오류), 휘발성 저장부(390)의 (예를 들어, 분산 데이터 영역(360)에 있는) 분산 데이터가 유실되고, 전력이 복구되면 다른 디바이스(예를 들어, 제어기(210-B 내지 210-F))로부터 분산 데이터가 복원될 수 있다. 따라서, 이러한 실시예에 따라, 데이터에 대한 위험성 없이 제어기(210-A)는 (예를 들어, 데이터를 비휘발성 저장부(390)로 복제하지 않음으로써) 자원을 절약할 수 있다. 따라서, 다른 실시예에 따르면, 이벤트에 대한 데이터가 비분산 데이터 영역(370)(예를 들어, 디바이스-이벤트 영역(372))에 저장되면(블록 714), 제어기(210-A)가 분주하더라도 이벤트 데이터는 비휘발성 저장부(392)에 저장된다(블록 710: 예). 이러한 실시예에 따르면, 제어기(210-A)가 전력을 잃고 (예를 들어, 데이터가 디바이스-이벤트 영역(369)에 저장되거나 복제되지 않음에 따라) 이벤트 데이터가 다른 디바이스에 분배되어 있지 않다면, 이벤트 데이터는 비휘발성 저장부(392)에서 복원될 수 있다.
제어기(210-A)는 이벤트의 데이터를 발생시키고 송신할 뿐만 아니라, (예를 들어, 자신의 네트워크 인터페이스(218)를 통하여 다른 제어기(210-B 내지 210-F)로부터) 이벤트의 데이터를 수신할 수도 있다. 도 8은 일 실시예에 따라 분산 제어 시스템이 이벤트에 대한 데이터를 수신하는 예시적인 프로세스(800)를 나타낸 흐름도이다. 프로세스(800)는 예를 들어, 제어기(210)에서 동작 중인 제어 로직(322), 분산 계층 로직(340), 및/또는 이벤트 처리 어플리케이션(328)에 의하여 수행될 수 있다.
프로세스(800)는 이벤트에 대한 데이터를 (예를 들어, 다른 유닛(115)으로부터) 수신함에 따라 시작된다(블록 802). 예를 들어, 제어기(210-A)는 제어기(210-D)로부터 제어기(210-D)와 관련된 리더기가 유효한 입력 코드를 수신하였다고 하는 이벤트의 데이터를 수신할 수 있다. 제어기(210-A)는 그러한 이벤트에 가입되었는지를 판단한다(블록 803). 제어기(210-A)는 그러한 이벤트에 가입하였는지를 판단하기 위하여 가입 테이블(367)을 참조할 수 있다. 가입 테이블(367)(의 셋째 줄)에 명시된 바와 같이, 제어기(210-A)는 제어기(210-D)에 대한 "리더기를 통하여 유효한 입력 코드가 사용자로부터 입력된 경우"에 가입되어 있다. 다른 실시예에 따르면, 제어기(210-A)는 자신이 가입한 이벤트에 대한 데이터의 수신만을 수행할 수 있다. 이와 마찬가지로, 다른 제어기(210)는 이벤트와 관련된 데이터를 해당 이벤트에 가입된 다른 제어기(210)에게 송신만을 수행할 수 있다. 이러한 경우, 제어기(210-A)는 자신이 수신된 데이터와 관련된 이벤트에 가입되었는지를 판단할 필요가 없을 수 있다(블록 803). 이러한 실시예에 의하여 제어기(210-A)의 자원이 절약될 수 있다.
제어기(210-A)가 그러한 이벤트에 가입되어 있으면(블록 804: 예), 제어기(210-A)는 이벤트의 데이터를 예를 들어, 비합의 데이터 영역(363)의 기타-이벤트 영역(368)에 저장할 수 있다(블록 806). 제어기(210-A)가 이벤트에 가입되어 있지 않더라도(블록 704: 아니오), 제어기(210-A)는 여전히 이벤트의 데이터를 수신하여 저장할 수 있다. 일 실시예에 따르면, 제어기(210)(예를 들어, 일 실시예에 따른 모든 제어기(210))는 결국 제어 시스템(110)의 모든 이벤트를 수신하여 저장할 수 있다. 제어기(210)가 이미 분주하다면 낮은 우선순위의 이벤트를 수신하여 분배하는 것은 제어기에게 부담을 주고 성능을 감소시킬 수 있다. 이에, 일 실시예에 따르면 제어기(210-A)는 자신이 분주한지를 판단한다(블록 807). 제어기(210)가 분주한지 여부에 대한 판단은 도 7을 통하여 전술하였다.
제어기(210-A)가 분주하지 않으면(블록 808: 아니오), 제어기(210)는 이벤트의 데이터를 예를 들어, 비합의 데이터 영역(363)의 기타 이벤트 영역(368)(제 2 데이터 영역)에 저장할 수 있다(블록 806). 제어기가 가입한 이벤트는 높은 우선순위를 가질 수 있는데, 이러한 이유로 인하여 제어기(210)가 분주하더라도 제어기(210)가 이벤트 데이터를 수신하였을 때 대응하는 이벤트 데이터가 처리될 수 있다. 제어기(210-A)가 분주하면(블록 808: 예), 제어기(210)는 이벤트의 데이터를 저장하지 않고(예를 들어, 휘발성 저장부(390)와 같은 저장부에 보관하지 않고) 폐기할 수 있다(블록 810). 그럼에도 불구하고, 분주한 경우 비휘발성 저장부(392)에 데이터를 저장하는 것은 지나치게 번거로울 수 있기 때문에 제어기(210-A)는 데이터를 폐기할 수 있다. 일 실시예에 따르면, (도 10에 대한 후술하는 바와 같이) 제어기(210-A)는 덜 분주할 때 (블록 810의 폐기된 데이터에 포함되어) 누락된 데이터를 요청할 수 있다. 또 다른 실시예에 따르면, 제어기(210-A)가 덜 분주할 때 이벤트 데이터는 다른 제어기(210)에서 제어기(210-A)(또는 모든 제어기(210))로 재송신될 수 있다. 다른 제어기(210)는 예를 들어, 제어기(210-A)에서 발생된 이벤트 데이터 활동을 모니터링 함으로써 제어기가(210-A)가 덜 분주한지를 판단할 수 있다. 따라서, 제어기(210)가 폐기하거나(블록 810) 수신하지 못한 이벤트 데이터는 제어기(210-A)의 이벤트 데이터를 완료하기 위하여 결국 제어기(210-A)에 의하여 요청될 수 있다(또는 제어기(210-A)로 재송신될 수 있다).
제어기(210)가 이벤트 데이터를 발생시키고 수신함에 따라, 데이터가 제어기(210)에게 과중할 수 있다(예를 들어, 메모리 고갈). 도 9는 (예를 들어, 디바이스-이벤트 영역(369) 및 기타-이벤트 영역(368)이 할당된 메모리 공간을 초과하여 차지하지 못하도록 함으로써) 저장 계층(350)이 데이터에 의하여 과적재되지 않도록 하는 예시적인 프로세스(900)의 흐름도이다. 프로세스(900)는 제어기(210)에서 동작 중인 제어 로직(322), 분산 계층 로직(340), 및/또는 이벤트 처리 어플리케이션(328)에 의하여 수행될 수 있다. 프로세스(900)는 연속적 또는 주기적으로 백그라운드 프로세스(background process)로서 실행될 수 있다. 일 실시예에 따르면, 이벤트 데이터가 디바이스-이벤트 영역(369), 기타-이벤트 영역(368), 및/또는 디바이스-이벤트 영역(372)에 기록된 때에 프로세스(900)가 실행될 수 있다. 예를 들어, 제어기(210)는 프로세스(700)의 블록 706, 블록 714, 및/또는 블록 712의 이후 및/또는 프로세스(800)의 블록 806의 이후에 프로세스(900)를 실행시킬 수 있다.
프로세스(900)는 데이터 영역이 가득 차있는지를 판단하면서 시작된다(블록 902). 여기서, 데이터 영역은 디바이스-이벤트 영역(369)(제 1 데이터 영역), 기타-이벤트 영역(368)(제 2 데이터 영역), 디바이스-이벤트 영역(372), 및/또는 다른 기타 데이터 영역에 대응할 수 있다. 이러한 실시예에 따르면, 상이한 데이터 영역들 각각은 최대 크기를 가질 수 있다. 이와 같은 상태에서, 예를 들어 디바이스-이벤트 영역(369)(제 1 데이터 영역)은 제 1 메모리 공간을 벗어나지 않는 한도 내에서 차지할 수 있고, 기타-이벤트 영역(368)(제 2 데이터 영역)은 제 2 메모리 공간을 벗어나지 않는 한도 내에서 차지할 수 있다. (디바이스-이벤트 영역(369)에 속한) 제 1 메모리 공간은 (기타-이벤트 영역(368)에 속한) 제 2 메모리 공간보다 클 수 있다. 선택적으로, 디바이스-이벤트 영역(372)과의 조합에 따른 디바이스-이벤트 영역(369)은 기타-이벤트 영역(368)보다 더 많은 공간을 할당 받을 수 있다. 데이터 영역이 가득 찬 경우, 또는 넘친 경우(블록 904: 예), 이벤트 데이터(예를 들어, 더 오래된 이벤트 데이터 또는 가장 오래된 이벤트 데이터)는 삭제될 수 있다(블록 906). 예를 들어, 제어기(210-A)가 이벤트 데이터를 디바이스-이벤트 영역(369)(제 1 데이터 영역)에 저장하고 있으면서, 영역(369)(제 1 데이터 영역)이 할당된 최대치(제 1 메모리 공간)를 초과하면, 디바이스-이벤트 영역(369)(제 1 데이터 영역)이 그 할당된 최대치를 초과하여 차지하는 것을 방지하기 위하여 제어기(210)는 더 오래된 이벤트 데이터 또는 가장 오래된 이벤트 데이터를 삭제할 수 있다. 이와 마찬가지로, 제어기(210-A)가 이벤트 데이터를 기타-이벤트 영역(368)(제 2 데이터 영역)에 저장하고 있으면서, 영역(368)(제 2 데이터 영역)이 할당된 최대치(제 2 메모리 공간)에 다다르면, 기타-이벤트 영역(368)(제 2 데이터 영역)이 그 할당된 최대치를 초과하여 차지하는 것을 방지하기 위하여 제어기(210)는 더 오래된 이벤트 데이터 또는 가장 오래된 이벤트 데이터를 삭제할 수 있다. 일 실시예에 따르면, 각 유닛(예를 들어, 제어기(210-A)를 갖는 유닛(115-A))은 다른 제어기(210)보다 더 많은 자신에 대한 이벤트 데이터를 저장할 수 있다. 즉, 각 디바이스-이벤트 영역(369)(제 1 데이터 영역의 제 1 메모리 공간)에 대하여 할당된 최대치는 대응하는 기타-이벤트 영역(368)(제 2 데이터 영역의 제 2 메모리 공간)에 대하여 할당된 최대치보다 클 수 있다.
프로세스(900)에 따라, 제 1 데이터 영역(디바이스-이벤트 영역(369))이 제 1 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 제어기(210-A)는 제 1 데이터 영역(디바이스-이벤트 영역(369))에서 이벤트 데이터를 제거할 수 있다. 제어기(210-A)는 또한 제 2 데이터 영역(기타-이벤트 영역(368))이 제 2 메모리 공간을 초과하여 차지하는 것을 방지하기 위하여 제어기(210-A)는 제 2 데이터 영역(기타-이벤트 영역(368))에서 이벤트 데이터를 제거할 수 있다. 일 실시예에 따르면, 제어기는 제 1 데이터 영역(디바이스-이벤트 영역(369))에서 가장 오래된 이벤트 데이터를 삭제할 수 있고, 제 2 데이터 영역(기타-이벤트 영역(368))에서 가장 오래된 이벤트 데이터를 삭제할 수 있다. 또한, 프로세스(700 및 800)에 따라 제어기(210-A)는 네트워크 인터페이스를 통해 제 1 데이터 영역(디바이스-이벤트 영역(369))에서 다른 제어기(210)로 이벤트 데이터를 분배하고, 네트워크 인터페이스를 통해 다른 제어기(210)로부터 이벤트 데이터를 수신하여 제 2 데이터 영역(기타-이벤트 영역(368))에 저장할 수 있다.
전술한 바와 같이, 제어기(210-A)는 분주하지 않을 때에 (또는 다른 때보다 덜 분주한 때에) 이벤트 데이터를 분배할 수 있다. 도 10은 일 실시예에 따라 제어기가 분배한지를 기초로 분산 제어 시스템에서 이벤트를 분배하는 예시적인 프로세스(1000)의 흐름도이다. 프로세스(1000)는 예를 들어, 제어기(210)에서 동작 중인 제어 로직(322), 분산 계층 로직(340), 및/또는 이벤트 처리 어플리케이션(328)에 의하여 수행될 수 있다. 프로세스(1000)는 예를 들어, 연속적 또는 주기적으로 백그라운드 프로세스(background process)로서 실행될 수 있다.
이러한 예에 따르면, 프로세스(1000)는 제어기(210-A)가 분주한지를 판단하면서 시작된다(블록 1002). 제어기(210-A)가 분주한지에 대한 판단은 전술한 바와 같다. 일 실시예에 따르면, 제어기(210-A)가 분주하면(블록 1004: 예), 제어기(210-A)는 다른 제어기(예를 들어, 제어기(210-B 내지 210-F))에게 대기 메시지를 브로드캐스트 할 수 있다. 다른 제어기(210-B 내지 210-F)가 그러한 통지(예를 들어, 대기 메시지)를 수신하면, 그러한 다른 제어기(210-B 내지 210-F)는 제어기(210-A)에게 낮은 우선순위의 데이터 및/또는 정보와 같은 이벤트 데이터의 일부 또는 전체를 송신하거나 분배하는 것을 중단할 수 있다. 일 실시예에 따르면, 예를 들어 합의 데이터 영역(361)에 저장된 데이터 및 정보는 비합의 데이터 영역(363)에 저장된 데이터보다 높은 우선순위를 갖는다. 비합의 데이터 영역(363)에 비하여 합의 데이터 영역(361)에 저장된 데이터와 관련된 정보에 높은 우선순위를 부여함에 따라 합의 데이터 영역에 저장된 데이터에 대한 합의에 이르지 못할 가능성이 감소된다. 또한, 전술한 바와 같이 제어기(210-A)가 가입한 것으로 관련된 이벤트의 데이터는 제어기(210-A)가 가입하지 않은 것으로 관련된 이벤트의 데이터보다 높은 우선순위를 갖도록 설정될 수 있다.
제어기(210-A)가 분주하지 않으면(블록 1004: 아니오), 제어기(210-A)는 (예를 들어, 특히 제어기(210-A)가 블록 1006에서 대기 메시지를 브로드캐스트한 실시예에서) 다른 제어기(예를 들어, 제어기(210-B 내지 210-F))에게 대기 중지 메시지를 브로드캐스트 할 수 있다(블록 1008). 제어기(210-A)가 분주하지 않으면(블록 1004: 아니오), 제어기(210-A)는 비분산 데이터 영역(370)에서 분산 데이터 영역(360)(예를 들어, 디바이스-이벤트 영역(369)(제 1 데이터 영역))으로 이벤트를 복제할 수 있다(블록 1010). 전술한 바와 같이, 분산 데이터 영역(360)에 저장된 데이터는 제어 로직(322) 및/또는 분산 계층(340)에 의하여 분배될 수 있다. 비분산 데이터 영역(370)에서 분산 데이터 영역(360)으로 복제된 데이터는 제어기(210-A)가 지나치게 분주함으로 인하여(블록 710: 예) 분산 데이터 영역(360)에 저장되지 않고, 비분산 데이터 영역(370)에 정보가 대신 저장되었던 데이터를 포함할 수 있다. 전술한 바와 같이, 제어기(210-A)는 덜 분주할 때 (블록 810의 폐기된 데이터에 포함되어) 누락된 데이터를 요청할 수 있다(블록 1012). 또 다른 실시예에 따르면, 제어기(210-A)가 덜 분주할 때 이벤트 데이터는 다른 제어기(210)에 의하여 재송신될 수 있다. 다른 제어기(210)는 제어기(210-A)에서 발생된 활동(예를 들어, 송신 이벤트)이 감소하면 제어기가(210-A)가 덜 분주한 것으로 판단할 수 있다. 따라서, 제어기(210)가 폐기하거나(블록 810) 수신하지 못한 이벤트 데이터는 제어기(210-A)의 이벤트 데이터를 완료하기 위하여 결국 제어기(210-A)에 의하여 요청될 수 있다(또는 제어기(210-A)로 재송신될 수 있다). 이와 같이, 이벤트 데이터의 분배는 분주한 시간 구간에서 분주하지 않은 시간 구간으로 이동될 수 있다.
프로세스(700, 800 및 1000) 및 전술한 내용에 따라, 통신 네트워크 인터페이스를 통하여 디바이스 중 다른 하나로부터 이벤트 데이터의 분배를 중지하라고 하는 통지가 수신된 때에, 제어기(210-A)는 이벤트 데이터를 제 1 데이터 영역(디바이스-이벤트 영역(369))에서 제어기(210) 중 다른 하나로 분배하는 것을 중단할 수 있다. 일 실시예에 따르면, 제어기(210) 중 다른 하나는 대응하는 다른 제어기(210)의 프로세서가 프로세서 부하 임계치를 초과한 경우 이벤트 데이터의 분배를 중지하도록 통지할 수 있다.
일 실시예에 따르면, 관리자는 관리 디바이스(130)을 이용하여 제어기(예를 들어, 제어기(210-A 내지 210-F) 중 어느 하나)에 로그인하고, 어느 또는 모든 제어기(210)에 저장된 데이터에 접근할 수 있다. 즉, 관리자는 관리 디바이스(130)를 이용하여 제어기(210-A)에 로그인하고, 제어기(210-A) 또는 다른 제어기(210-B 내지 210-F)에 저장된 데이터에 접근할 수 있는 것이다. 도 11은 일 실시예에 따라 제어기(210)에 저장된 데이터에 접근하고자 하는 관리자의 예시적인 프로세스(1100)의 흐름도이다. 프로세스(1100)는 예를 들어, 제어기(210)에서 동작 중인 제어 로직(322), 분산 계층 로직(340), 및/또는 이벤트 처리 어플리케이션(328)에 의하여 수행될 수 있다.
이러한 예에 따르면, 프로세스(1100)는 이벤트 데이터와 같은 데이터에 대한 요청을 수신하면서 시작된다(블록 1102). 예를 들어, 관리자는 관리 디바이스(130)를 이용하여 제어기(210) 중 어느 하나에 로그인하거나 통신하고, 디바이스-이벤트 영역(369(제 1 데이터 영역), 기타-이벤트 영역(368)(제 2 데이터 영역), 및/또는 디바이스-이벤트 영역(372)에 저장된 이벤트 데이터를 요청하여 수신한다. 이러한 경우, 관리자는 요청된 데이터에 대한 분석 및 통지를 원할 수 있다. 관리자가 관리 디바이스(130)(예를 들어, 시스템 유닛들(115)에 대한 추가 디바이스)를 통하여 제어기(210-A)에 로그인 한 경우를 가정하자. 제어기(210-A)가 요청된 데이터를 가지고 있으면(블록 1104: 예), 제어기(210-A)는 요청된 데이터를 요청한 디바이스(예를 들어, 관리 디바이스(130) 또는 "추가 디바이스")에게 송신할 수 있다(블록 1106). 그러나, 제어기(210-A)는 모든 요청된 이벤트 데이터를 디바이스-이벤트 영역(369)(제 1 데이터 영역), 기타-이벤트 영역(368)(제 2 데이터 영역) 또는 디바이스-이벤트 영역(372)에 저장하고 있지 않을 수 있다(예를 들어, 이벤트 데이터는 제어기(210-A)에게 아직 분배되지 않았거나 프로세스(900) 중에 제어기(210-A)에서 삭제되어 다른 곳에 저장된 것일 수 있다). 제어기(210-A)가 요청된 데이터를 가지고 있지 않으면(블록 1104: 아니오), 제어기(210-A)는 다른 제어기(210)(예를 들어, 제어기(210-B 내지 210-F))에게 데이터를 요청할 수 있다(블록 1110). 그리하여, 제어기(210-A)는 요청된 데이터를 수신하고(블록 1112), 이를 요청자에게 송신한다(블록 1114). 일 실시예에 따르면, 제어기(210-A)는 다른 제어기(210-B 내지 210-F)로 하여금 적절한 데이터를 관리 디바이스(130)에게 제어기(210-A)를 통하여 데이터가 전달되도록 하지 않고 (예를 들어, 직접) 송신할 것을 요청할 수 있다.
이에 따라, 프로세스(1100)는 제어기(210) 중 하나와 통신하고, 제 1 데이터 영역(디바이스-이벤트 영역(369))에 저장된 이벤트 데이터 또는 제 2 데이터 영역(기타-이벤트 영역(368))에 저장된 이벤트 데이터를 요청하여 수신하기 위하여 추가 디바이스(관리 디바이스(130))를 나타낸다.
이상과 같이, 첨부된 도면을 참조로 다양한 실시예가 설명되었다. 그러나, 후술하는 청구항을 통하여 제시한 발명의 범위를 벗어나지 않는 다양한 수정 및 변경이 적용될 수 있음은 자명하고, 추가적인 실시예가 구현될 수도 있다. 따라서, 상세한 설명 및 도면은 제한적이 아니라 예시적인 것으로 간주되어야 한다. 예를 들어, 일련의 블록이 도 7 및 도 8과 같이 도시되어 있으나, 블록 및/또는 신호의 순서는 다른 실시예에 따라 수정될 수 있는 것이다. 또한, 종속적이지 않은 블록 및/또는 신호 흐름은 병렬적으로 수행될 수 있다.
일 실시예에 따라, 방법 및 시스템은 합의 데이터 영역(361)을 포함하지 않을 수 있다(예를 들어, 합의 기반 데이터베이스를 포함하지 않을 수 있다). 다른 실시예에 따르면, 방법 및 시스템은 디바이스-이벤트 데이터 영역(369)의 배포 및/또는 기타-이벤트 데이터 영역(368)의 배포를 수행하지 않을 수 있다.
이상과 같이 설명한 시스템 및/또는 방법이 도면에 도시된 형태와 같이 소프트웨어, 펌웨어, 및 하드웨어의 다양한 형태로 구현될 수 있음은 명백할 것이다. 이러한 시스템 및 방법을 구현하는데 이용되는 실제 소프트웨어 코드 또는 특화된 제어 하드웨어는 실시예에 한정되지 않는다. 따라서, 시스템 및 방법의 동작 및 행동은 특별한 소프트웨어 코드를 참조하지 않고 설명된다 - 소프트웨어 및 제어 하드웨어는 여기세 설명된 것을 기초로 시스템 및 방법을 구현하도록 디자인된 것으로 이해될 수 있다.
또한, 이상의 내용 중 특정 부분은 하나 이상의 기능을 수행하는 구성요소로서 구현될 수 있다. 여기서 이용되는 구성요소는 프로세서, ASIC 또는 FPGA와 같은 하드웨어, 또는 하드웨어 및 소프트웨어(예를 들어, 프로세서 실행 소프트웨어)의 조합을 포함할 수 있다.
여기서 사용되고 있는 "포함하다" 및 "포함하는"과 같은 용어는 규정된 특징, 숫자(정수), 단계 또는 구성요소의 존재를 의미하지만, 하나 이상의 다른 특징, 숫자(정수), 단계, 구성요소 및 그 그룹의 존재 또는 추가를 부정하는 것은 아니다. 또한, "예시적인"(예를 들어, "예시적인 실시예", "예시적인 설정" 등)이라는 용어는 "예시적인 것으로서"를 의미하며, "선호되는", "최선의"와 같은 것을 의미하지 않는다.
본 명세서에서 이용되는 요소, 동작 또는 명령 중 어느 것도 이상과 같이 명확하게 설명되지 않으면 실시예에 대하여 중요하거나 본질적인 것으로 이해될 수 없다. 또한, 여기에서 사용된 것과 같이, "하나"는 하나 이상의 항목을 포함하는 것으로 이해될 수 있다. 또한, "기초로 하여"는 별도의 다른 설명이 없다면 "적어도 일부를 기초로 하여"를 의미하는 것으로 이해될 수 있다.

Claims (24)

  1. 분산된 피어-투-피어(peer-to-peer) 네트워크 내에 연결된 복수의 디바이스들을 포함하되, 상기 복수의 디바이스들 중에서 제1 디바이스는,
    합의 데이터 영역과 비합의 데이터 영역을 포함하는 메모리를 포함하되, 상기 복수의 디바이스들은 분산된 피어-투-피어 네트워크 내에 연결되어 상기 합의 데이터 영역에 데이터를 분산시키고 상기 비합의 데이터 영역에 데이터를 분산시키고,
    상기 비합의 데이터 영역은 제1 데이터 영역과 제2 데이터 영역을 포함하고,
    상기 제1 데이터 영역은 상기 메모리에 대응되는 상기 제1 디바이스로부터 발생되고 상기 복수의 디바이스들 중에서 제1 디바이스가 아닌 다른 디바이스들로부터는 발생되지 않는 제1 이벤트 데이터를 저장하고, 상기 제2 데이터 영역은 상기 다른 디바이스들로부터 발생된 제2 이벤트 데이터를 저장하도록 구성되고,
    상기 제 1 데이터 영역은 최대한으로 잡아도 제 1 최대 메모리 공간을 차지하고, 상기 제 2 데이터 영역은 최대한으로 잡아도 제 2 최대 메모리 공간을 차지하고, 그리고,
    상기 제1 이벤트 데이터는 발생된 이벤트를 통지하기 위한 데이터이고, 상기 제2 이벤트 데이터는 발생된 이벤트를 통지하기 위한 데이터이고,
    프로세서를 포함하되, 상기 프로세서는
    상기 합의 데이터 영역 내의 데이터를 변경하고, 상기 비합의 데이터 영역 내의 데이터를 변경하되, 상기 프로세서는 상기 합의 데이터 영역 내의 데이터를 변경하기 위해 정족수를 요구하고, 상기 비합의 영역 내의 데이터를 변경하기 위해 정족수를 요구하지 않고,
    상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간에 이르렀는지, 그리고 상기 제2 데이터 영역이 상기 제2 최대 메모리 공간에 이르렀는지를 판단하고,
    상기 프로세서가 상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간에 이른 것으로 판단한 때에, 상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 메모리에 대응되는 상기 제1 디바이스에서 발생된 상기 저장된 제1 이벤트 데이터를 상기 제 1 데이터 영역에서 제거하고,
    상기 프로세서가 상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간에 이른 것으로 판단한 때에, 상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 다른 디바이스들에서 발생되어 저장된 상기 제2 이벤트 데이터를 상기 제 2 데이터 영역에서 제거하며,
    네트워크 인터페이스를 통하여 상기 제1 이벤트 데이터를 상기 다른 디바이스들로 분산시키고, 상기 네트워크 인터페이스를 통하여 상기 다른 디바이스들로부터 상기 제2 이벤트 데이터를 수신하여 상기 제2 데이터 영역에 저장하는,
    시스템.
  2. 제 1항에 있어서,
    상기 복수의 디바이스들 중 하나 이상의 디바이스에서의 각 프로세서는, 상기 제1 이벤트 데이터를 상기 피어-투-피어 네트워크 내의 다른 디바이스들로 분산시키도록 구성되고,
    상기 복수의 디바이스들 중 하나 이상의 디바이스에서의 각 프로세서는, 상기 제2 이벤트 데이터를 상기 피어-투-피어 네트워크 내의 다른 디바이스들로 분산시키도록 구성되는,
    시스템.
  3. 제 1항에 있어서,
    상기 제 1 최대 메모리 공간은 상기 제 2 최대 메모리 공간보다 크고,
    상기 제1 이벤트 데이터는 상기 제1 디바이스에서 발생된 이벤트들을 통지하고, 상기 제2 이벤트 데이터는 상기 복수의 디바이스들 중에서 다른 디바이스들에서 발생된 이벤트들을 통지하는,
    시스템.
  4. 제 3항에 있어서,
    상기 복수의 디바이스들은 물리 접근 제어 시스템(PACS; Physical Access Control System) 내의 복수의 시스템 유닛들을 포함하고,
    상기 시스템 유닛들 중 하나는 제어기 및 주변 디바이스를 포함하고,
    상기 시스템 유닛에서 발생된 이벤트를 통지하는 상기 제1 이벤트 데이터는:
    상기 주변 디바이스가 리더 디바이스일 때, 리더 디바이스가 인증서(credential)를 받았다는 통지, 또는
    상기 주변 디바이스가 카메라일 때, 상기 카메라가 움직임을 감지하였다는 통지를 포함하고,
    상기 프로세서는 상기 제1 이벤트 데이터와 상기 제2 이벤트 데이터를 규칙들과 비교하여, 상기 비교를 기초로 알람을 발생시키는,
    시스템.
  5. 제 2항에 있어서, 상기 프로세서는,
    상기 제1 디바이스가 분주한지 여부를 결정하고,
    상기 프로세서가 상기 제1 디바이스는 분주하다고 결정하면, 상기 피어-투-피어 네트워크를 통해서 다른 디바이스들로 상기 제1 이벤트 데이터를 분산하는 것을 중지하고,
    상기 프로세서가 상기 제1 디바이스는 분주하다고 결정하면, 상기 제1 데이터 영역 내에 상기 제1 디바이스로부터 발생된 제1 이벤트 데이터를 저장하는 것을 지속하도록 구성되는,
    시스템.
  6. 제 1항에 있어서,
    상기 프로세서는 상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 제 1 데이터 영역에서 가장 오래된 제1 이벤트 데이터를 제거하도록 구성되고,
    상기 프로세서는 상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 제 2 데이터 영역에서 가장 오래된 제2 이벤트 데이터를 제거하도록 구성되는,
    시스템.
  7. 제 5항에 있어서, 상기 프로세서는
    상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나가 제1 이벤트 데이터에 대한 가입(subscription)과 관련된다고 결정하고; 및
    상기 프로세서가 상기 제1 디바이스가 분주하다고 결정한 때 그리고 상기 프로세서가 상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나가 상기 제1 이벤트 데이터에 대한 가입과 관련된다고 결정한 때, 상기 제1 이벤트 데이터를 상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나에 전송하도록 구성되는,
    시스템.
  8. 제 5항에 있어서, 상기 프로세서는
    제1 임계치를 통과하는, 상기 네트워크에서의 트래픽의 양을 기초로,
    제2 임계치를 통과하는 상기 프로세서의 부하를 기초로, 또는
    또는, 제3 임계치를 통과하는, 상기 프로세서에 의해서 처리되는 이벤트의 숫자를 기초로,
    상기 제1 디바이스가 분주한지 여부를 결정하도록 구성되는,
    시스템.
  9. 제 1항에 있어서, 상기 프로세서는
    상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나로부터 상기 네트워크 인터페이스를 통해서, 상기 제1 또는 제2 이벤트 데이터를 상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나에 분산시키는 것을 중지하라는 통지가 수신된 때, 상기 제1 또는 제2 이벤트 데이터를 상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나에 분산시키는 것을 중지하도록 구성되는,
    시스템.
  10. 제 5항에 있어서,
    상기 제1 데이터 영역은 휘발성 메모리 영역과 비휘발성 메모리 영역을 포함하고; 그리고
    상기 프로세서는,
    상기 프로세서가 상기 제1 디바이스가 분주하다고 결정한 때 상기 제1 이벤트 데이터를 상기 휘발성 메모리 영역 내에 저장하고, 상기 프로세서가 상기 제1 디바이스가 더 이상 분주하지 않다고 결정한 때 상기 프로세서는 상기 제1 이벤트 데이터를 상기 비휘발성 메모리 영역으로 이동시키도록 구성되는,
    시스템.
  11. 디바이스로서,
    합의 데이터 영역과 비합의 데이터 영역을 포함하는 메모리를 포함하고, 상기 디바이스는 분산된 피어-투-피어 네트워크 내에 연결되어 상기 합의 데이터 영역에 데이터를 분산시키고 상기 비합의 데이터 영역에 데이터를 분산시키고,
    상기 비합의 데이터 영역은 제1 데이터 영역과 제2 데이터 영역을 포함하고,
    상기 제1 데이터 영역은 상기 디바이스로부터 발생되고, 상기 디바이스와 피어-투-피어 네트워크 내에 연결되는 하나 이상의 다른 디바이스들로부터는 발생되지 않는 제1 이벤트 데이터를 저장하도록 구성되고,
    상기 제2 데이터 영역은 상기 디바이스와 피어-투-피어 네트워크 내에 연결되는 하나 이상의 다른 디바이스들로부터 발생된 제2 이벤트 데이터를 저장하도록 구성되고,
    상기 제 1 데이터 영역은 최대한으로 잡아도 제 1 최대 메모리 공간을 차지하고, 상기 제 2 데이터 영역은 최대한으로 잡아도 제 2 최대 메모리 공간을 차지하고, 그리고,
    상기 제1 이벤트 데이터는 발생된 이벤트들을 통지하기 위한 데이터이고, 상기 제2 이벤트 데이터는 발생된 이벤트들을 통지하기 위한 데이터이고,
    프로세서를 포함하되, 상기 프로세서는
    상기 합의 데이터 영역 내의 데이터를 변경하고, 상기 비합의 데이터 영역 내의 데이터를 변경하되, 상기 프로세서는 상기 합의 데이터 영역 내의 데이터를 변경하기 위해 정족수를 요구하고, 상기 비합의 영역 내의 데이터를 변경하기 위해 정족수를 요구하지 않고,
    상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간에 이르렀는지, 그리고 상기 제2 데이터 영역이 상기 제2 최대 메모리 공간에 이르렀는지를 판단하고,
    상기 프로세서가 상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간에 이른 것으로 판단한 때에, 상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 디바이스에서 발생된 상기 저장된 제1 이벤트 데이터를 상기 제 1 데이터 영역에서 제거하고,
    상기 프로세서가 상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간에 이른 것으로 판단한 때에, 상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 저장된 제2 이벤트 데이터를 상기 제 2 데이터 영역에서 제거하며,
    네트워크 인터페이스를 통하여 상기 제1 이벤트 데이터를 상기 다른 디바이스들로 분산시키고, 상기 네트워크 인터페이스를 통하여 상기 다른 디바이스들로부터 상기 제2 이벤트 데이터를 수신하여 상기 제 2 데이터 영역에 저장하는,
    디바이스.
  12. 제 11항에 있어서,
    상기 프로세서는, 상기 제1 이벤트 데이터를 상기 피어-투-피어 네트워크 내의 하나 이상의 다른 디바이스들로 분산시키도록 구성되고,
    상기 프로세서는, 상기 제2 이벤트 데이터를 상기 피어-투-피어 네트워크 내의 하나 이상의 다른 디바이스들로 분산시키도록 구성되고, 그리고,
    상기 제 1 최대 메모리 공간은 상기 제 2 최대 메모리 공간보다 큰,
    디바이스.
  13. 제 12항에 있어서,
    상기 디바이스는 물리 접근 제어 시스템(PACS; Physical Access Control System) 내의 시스템 유닛이고, 상기 시스템 유닛은 제어기 및 주변 디바이스를 포함하고,
    상기 제1 이벤트 데이터는 상기 시스템 유닛에서 발생된 이벤트들을 통지하고, 상기 제2 이벤트 데이터는 상기 피어-투-피어 네트워크 내에서 상기 하나 이상의 다른 디바이스들에서 발생되는 이벤트들을 통지하고, 그리고,
    상기 시스템 유닛에서 발생된 이벤트들을 통지하는 상기 제1 이벤트 데이터는:
    상기 주변 디바이스가 리더 디바이스일 때, 리더 디바이스가 인증서(credential)를 받았다는 통지, 또는
    상기 주변 디바이스가 카메라일 때, 상기 카메라가 움직임을 감지하였다는 통지를 포함하는,
    디바이스.
  14. 제 11항에 있어서,
    상기 프로세서는 상기 제1 이벤트 데이터와 상기 제2 이벤트 데이터를 규칙들과 비교하여, 상기 비교를 기초로 알람을 발생시키고,
    상기 프로세서는 상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 제 1 데이터 영역에서 가장 오래된 제1 이벤트 데이터를 제거하도록 구성되고,
    상기 프로세서는 상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 제 2 데이터 영역에서 가장 오래된 제2 이벤트 데이터를 제거하도록 구성되는,
    디바이스.
  15. 제 12항에 있어서, 상기 프로세서는,
    상기 디바이스가 분주한지 여부를 결정하고, 상기 하나 이상의 다른 디바이스들 중 다른 하나는 제1 이벤트 데이터에 대한 가입(subscription)과 관련된다고 결정하고;
    상기 프로세서가 상기 디바이스가 분주하다고 결정한 때, 피어-투-피어 네트워크를 통해서 다른 디바이스들에게 제1 이벤트 데이터의 분산하는 것을 중지시키고,
    상기 프로세서가 상기 디바이스가 분주하다고 결정한 때, 상기 제1 데이터 영역 내에 상기 디바이스로부터 발생된 제1 이벤트 데이터를 저장하는 것을 지속하고,
    상기 프로세서가 상기 디바이스가 분주하다고 결정한 때 그리고 상기 하나 이상의 다른 디바이스들 중 다른 하나가 제1 이벤트 데이터에 대한 가입과 관련된다고 결정한 때, 상기 제1 이벤트 데이터를 상기 하나 이상의 다른 디바이스들 중 다른 하나에 전송하도록 구성되는,
    디바이스.
  16. 제 15항에 있어서, 상기 프로세서는
    제1 임계치를 통과하는, 상기 피어-투-피어 네트워크에서의 트래픽의 양을 기초로,
    제2 임계치를 통과하는 상기 프로세서의 부하를 기초로, 또는
    또는, 제3 임계치를 통과하는, 상기 프로세서에 의해서 처리되는 이벤트의 숫자를 기초로,
    상기 디바이스가 분주한지 여부를 결정하도록 구성되는,
    디바이스.
  17. 복수의 디바이스들 중 제1 디바이스로부터 발생되고, 상기 제1 디바이스가 아닌 디바이스들로부터 발생되지 않은 제1 이벤트 데이터를, 메모리의 제1 데이터 영역 내에 저장하되,
    상기 메모리는 합의 데이터 영역과 비합의 데이터 영역을 포함하고,
    상기 복수의 디바이스들은 분산된 피어-투-피어 네트워크 내에 연결되어 상기 합의 데이터 영역에 데이터를 분산시키고 상기 비합의 데이터 영역에 데이터를 분산시키고,
    상기 비합의 데이터 영역은 제1 데이터 영역과 제2 데이터 영역을 포함하고,
    상기 제 1 데이터 영역은 최대한으로 잡아도 제 1 최대 메모리 공간을 차지하고, 상기 제1 이벤트 데이터는 발생된 이벤트를 통지하기 위한 데이터이고, 그리고 복수의 디바이스들은 분산된 피어-투-피어 네트워크 내에 연결되는, 단계;
    상기 제2 데이터 영역 내에 상기 제1 디바이스가 아닌 디바이스들로부터 발생된 제2 이벤트 데이터를 저장하되, 상기 제 2 데이터 영역은 최대한으로 잡아도 제 2 최대 메모리 공간을 차지하고, 상기 제2 이벤트 데이터는 발생된 이벤트를 통지하기 위한 데이터인, 단계;
    상기 합의 데이터 영역 내의 데이터를 변경하되, 상기 합의 데이터 영역 내에서 데이터를 변경하는 것은 정족수를 요구하는 단계와, 상기 비합의 데이터 영역 내의 데이터를 변경하되, 상기 비합의 영역 내의 데이터를 변경하기 위해 정족수를 요구하지 않는 단계;
    상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간에 이르렀는지 판단하는 단계와, 상기 제2 데이터 영역이 상기 제2 최대 메모리 공간에 이르렀는지를 판단하는 단계;
    상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간에 이른 것으로 판단된 때에, 상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 제1 이벤트 데이터를 상기 제 1 데이터 영역에서 제거하는 단계;
    상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간에 이른 것으로 판단된 때에, 상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 제2 이벤트 데이터를 상기 제 2 데이터 영역에서 제거하는 단계; 및
    네트워크 인터페이스를 통하여 상기 제1 이벤트 데이터를 다른 디바이스들로 분산시키고, 상기 네트워크 인터페이스를 통하여 상기 다른 디바이스들로부터 상기 제2 이벤트 데이터를 수신하여 상기 제 2 데이터 영역에 저장하는 단계를 포함하는,
    방법.
  18. 제 17항에 있어서,
    상기 제 1 최대 메모리 공간은 상기 제 2 최대 메모리 공간보다 크고,
    상기 제1 디바이스는 물리 접근 제어 시스템(PACS; Physical Access Control System) 내의 시스템 유닛이고, 상기 시스템 유닛은 제어기 및 주변 디바이스를 포함하고,
    상기 제1 이벤트 데이터는 상기 시스템 유닛에서 발생된 이벤트들을 통지하고, 상기 제2 이벤트 데이터는 상기 제1 디바이스가 아닌 디바이스들에서 발생되는 이벤트들을 통지하고, 그리고,
    상기 시스템 유닛에서 발생된 이벤트들을 통지하는 상기 제1 이벤트 데이터는:
    상기 주변 디바이스가 리더 디바이스일 때, 리더 디바이스가 인증서(credential)를 받았다는 통지, 또는
    상기 주변 디바이스가 카메라일 때, 상기 카메라가 움직임을 감지하였다는 통지를 포함하는,
    방법.
  19. 제 17항에 있어서,
    상기 제 1 데이터 영역이 상기 제 1 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 제 1 데이터 영역에서 가장 오래된 제1 이벤트 데이터를 제거하는 단계와,
    상기 제 2 데이터 영역이 상기 제 2 최대 메모리 공간 이상으로 차지하는 것을 방지하기 위하여 상기 제 2 데이터 영역에서 가장 오래된 제2 이벤트 데이터를 제거하는 단계를 더 포함하는,
    방법.
  20. 제 19항에 있어서,
    상기 제1 디바이스가 분주한지 여부를 결정하는 단계와, 상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나는 제1 이벤트 데이터에 대한 가입(subscription)과 관련된다고 결정하는 단계;
    상기 제1 디바이스가 분주하다고 결정된 때, 피어-투-피어 네트워크를 통해서 다른 디바이스들에게 제1 이벤트 데이터의 분산을 중지시키는 단계;
    상기 제1 디바이스가 분주하다고 결정된 때, 상기 제1 데이터 영역 내에 상기 제1 디바이스로부터 발생된 제1 이벤트 데이터를 저장하는 것을 지속하는 단계;
    분주하다고 결정되고 그리고 상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나가 제1 이벤트 데이터에 대한 가입과 관련된다고 결정된 때, 상기 제1 이벤트 데이터를 상기 제1 디바이스가 아닌 다른 디바이스들 중 다른 하나에 전송하는 단계를 더 포함하는,
    방법.
  21. 제 5항에 있어서,
    상기 프로세서는 상기 제1 디바이스가 분주하다고 결정한 때, 상기 프로세서는 상기 비합의 데이터 영역에 데이터를 분산하는 것을 중지하는 반면 상기 합의 데이터 영역에 데이터를 분산하는 것은 지속하도록 구성되고,
    상기 프로세서는 상기 제1 데이터 영역이 가득 차거나 넘친 경우에, 상기 제1 데이터 영역은 제1 최대 메모리 공간에 이르렀다고 결정하도록 구성되고,
    상기 프로세서는 상기 제2 데이터 영역이 가득 차거나 넘친 경우에, 상기 제2 데이터 영역은 제2 최대 메모리 공간에 이르렀다고 결정하도록 구성되는,
    시스템.
  22. 제 1항에 있어서,
    상기 합의 데이터 영역은, 사용자들이 물리 영역에 접근하기 위한 사용자 인증서들의 데이터베이스를 포함하는,
    시스템.
  23. 제 11항에 있어서,
    상기 합의 데이터 영역은, 사용자들이 물리 영역에 접근하기 위한 사용자 인증서들의 데이터베이스를 포함하는,
    디바이스.
  24. 제 17항에 있어서,
    상기 합의 데이터 영역은, 사용자들이 물리 영역에 접근하기 위한 사용자 인증서들의 데이터베이스를 포함하는,
    방법.
KR1020140121841A 2013-09-16 2014-09-15 분산 이벤트를 처리하는 시스템, 디바이스 및 방법 KR101940086B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/028,198 US9807161B2 (en) 2013-09-16 2013-09-16 Distributed events in an access control system
US14/028,198 2013-09-16

Publications (2)

Publication Number Publication Date
KR20150032188A KR20150032188A (ko) 2015-03-25
KR101940086B1 true KR101940086B1 (ko) 2019-01-18

Family

ID=49263127

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140121841A KR101940086B1 (ko) 2013-09-16 2014-09-15 분산 이벤트를 처리하는 시스템, 디바이스 및 방법

Country Status (6)

Country Link
US (1) US9807161B2 (ko)
EP (1) EP2849068B1 (ko)
JP (1) JP6307393B2 (ko)
KR (1) KR101940086B1 (ko)
CN (1) CN104468689B (ko)
TW (1) TW201523451A (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150100378A1 (en) * 2013-10-04 2015-04-09 Caterpillar Inc. Supply chain management method and system
KR20160052240A (ko) * 2014-11-04 2016-05-12 삼성전자주식회사 복수의 메모리 장치들을 관리하기 위한 방법 및 장치
JP6785305B2 (ja) 2015-07-15 2020-11-18 15 セカンズ オブ フェイム,インコーポレイテッド 顔認識及びコンテキストビデオストリームで個人を識別するためのビデオ解析技術のための装置及び方法
SG10201912947XA (en) 2015-10-21 2020-02-27 15 Seconds Of Fame Inc Methods and apparatus for false positive minimization in facial recognition applications
GB201707050D0 (en) 2017-05-03 2017-06-14 British American Tobacco Investments Ltd Data communication
KR101956882B1 (ko) 2017-11-01 2019-06-19 국민대학교산학협력단 비트맵 기반의 분산 네트워크 빈발 이벤트 수집 장치 및 방법, 이를 저장하는 기록매체
GB201722278D0 (en) 2017-12-29 2018-02-14 British American Tobacco Investments Ltd Device identification and method
GB201722241D0 (en) * 2017-12-29 2018-02-14 British American Tobacco Investments Ltd Data capture across devices
US10936856B2 (en) 2018-08-31 2021-03-02 15 Seconds of Fame, Inc. Methods and apparatus for reducing false positives in facial recognition
CN111611193B (zh) * 2019-02-22 2023-06-20 阿里巴巴集团控股有限公司 事件处理方法、装置和设备
US11010596B2 (en) 2019-03-07 2021-05-18 15 Seconds of Fame, Inc. Apparatus and methods for facial recognition systems to identify proximity-based connections
US10997206B2 (en) * 2019-04-08 2021-05-04 Sap Se Subscription-based change data capture mechanism using database triggers
US11341351B2 (en) 2020-01-03 2022-05-24 15 Seconds of Fame, Inc. Methods and apparatus for facial recognition on a user device
US11997112B1 (en) 2020-11-06 2024-05-28 Wells Fargo Bank, N.A. Access control threat detection
JP2023173646A (ja) * 2022-05-26 2023-12-07 株式会社日立製作所 データ共有システム、データ共有方法、及びデータ共有プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185613B1 (en) 1996-03-15 2001-02-06 Netvision, Inc. System and method for global event notification and delivery in a distributed computing environment
US6885898B1 (en) 2001-05-18 2005-04-26 Roy-G-Biv Corporation Event driven motion systems

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4581606A (en) * 1982-08-30 1986-04-08 Isotec Industries Limited Central monitor for home security system
US5276867A (en) * 1989-12-19 1994-01-04 Epoch Systems, Inc. Digital data storage system with improved data migration
US5555404A (en) 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
JP4309480B2 (ja) * 1995-03-07 2009-08-05 株式会社東芝 情報処理装置
US6347335B1 (en) 1995-09-22 2002-02-12 Emc Corporation System using a common and local event logs for logging event information generated by plurality of devices for determining problem in storage access operations
US7716486B2 (en) * 1995-10-02 2010-05-11 Corestreet, Ltd. Controlling group access to doors
EP0864028A1 (en) * 1995-12-02 1998-09-16 Ji-Tae Kim Intelligent safe system
US9230375B2 (en) * 2002-04-08 2016-01-05 Assa Abloy Ab Physical access control
US6108684A (en) * 1996-12-23 2000-08-22 Lsi Logic Corporation Methods and apparatus for balancing loads on a storage subsystem among a plurality of controllers
US6145045A (en) * 1998-01-07 2000-11-07 National Semiconductor Corporation System for sending and receiving data on a Universal Serial Bus (USB) using a memory shared among a number of end points
GB2341249A (en) * 1998-08-17 2000-03-08 Connected Place Limited A method of generating a difference file defining differences between an updated file and a base file
US8266266B2 (en) * 1998-12-08 2012-09-11 Nomadix, Inc. Systems and methods for providing dynamic network authorization, authentication and accounting
US6389510B1 (en) * 2000-04-25 2002-05-14 Lucent Technologies Inc. Method and apparatus for caching web-based information
US6504479B1 (en) * 2000-09-07 2003-01-07 Comtrak Technologies Llc Integrated security system
WO2002071241A1 (en) 2001-02-09 2002-09-12 Roy-G-Biv Corporation Event management systems and methods for the distribution of motion control commands
US20030101155A1 (en) * 2001-11-23 2003-05-29 Parag Gokhale Method and system for scheduling media exports
US7386376B2 (en) * 2002-01-25 2008-06-10 Intelligent Mechatronic Systems, Inc. Vehicle visual and non-visual data recording system
AU2003228468B2 (en) * 2002-04-08 2009-10-01 Assa Abloy Ab Physical access control
JP2004062630A (ja) * 2002-07-30 2004-02-26 Fujitsu Ltd Fifoメモリ及び半導体装置
US7197662B2 (en) * 2002-10-31 2007-03-27 Ring Technology Enterprises, Llc Methods and systems for a storage system
US20050010518A1 (en) * 2003-07-07 2005-01-13 Friedman Allen R. Method and system for transfer of employee stock options
US7370089B2 (en) * 2003-07-11 2008-05-06 International Business Machines Corporation Autonomic learning method to load balance output transfers of two peer nodes
US7826614B1 (en) * 2003-11-05 2010-11-02 Globalfoundries Inc. Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation
US7444379B2 (en) * 2004-06-30 2008-10-28 International Business Machines Corporation Method for automatically setting chat status based on user activity in local environment
US8301938B2 (en) * 2005-03-21 2012-10-30 Hewlett-Packard Development Company, L.P. Managing memory health
US20110010518A1 (en) * 2005-12-19 2011-01-13 Srinivas Kavuri Systems and Methods for Migrating Components in a Hierarchical Storage Network
US20080028230A1 (en) * 2006-05-05 2008-01-31 Tri-D Systems, Inc. Biometric authentication proximity card
US7917471B2 (en) * 2006-07-14 2011-03-29 Nokia Corporation Method for obtaining information objects in a communication system
JP2008112293A (ja) * 2006-10-30 2008-05-15 Hitachi Ltd 管理計算機及び電源制御方法並びに計算機システム
CN101174337A (zh) * 2006-11-03 2008-05-07 上海银晨智能识别科技有限公司 基于人脸识别的监控装置及嵌入式门禁监控系统
EP2119235A4 (en) * 2007-02-02 2011-12-21 Honeywell Int Inc SYSTEMS AND METHODS FOR MANAGING LIVE VIDEO DATA
KR100871711B1 (ko) * 2007-05-03 2008-12-08 삼성전자주식회사 싱글-엔디드 시그널링과 차동 시그널링을 지원하는 다중위상 송/수신 회로 및 차동 시그널링에서 싱글-엔디드시그널링 전환을 위한 클럭킹 방법
US7920843B2 (en) * 2007-06-15 2011-04-05 Alarm.Com Incorporated Alarm system with two-way voice
US8203426B1 (en) 2007-07-11 2012-06-19 Precision Edge Access Control, Inc. Feed protocol used to report status and event information in physical access control system
US8122497B2 (en) 2007-09-10 2012-02-21 Redcloud, Inc. Networked physical security access control system and method
JP4995064B2 (ja) * 2007-12-21 2012-08-08 キヤノン株式会社 画像出力装置及び画像出力方法
US7965195B2 (en) * 2008-01-20 2011-06-21 Current Technologies, Llc System, device and method for providing power outage and restoration notification
JP4896057B2 (ja) * 2008-03-26 2012-03-14 ルネサスエレクトロニクス株式会社 送信タイミング変更型ネットワーク装置及びシステム
CN101630370B (zh) * 2008-07-14 2012-07-18 中兴通讯股份有限公司 一种射频识别系统的控制方法及射频识别系统
US8090692B2 (en) * 2008-09-10 2012-01-03 Infinite Memory Ltd Method for using an OTP storage device
TW201101020A (en) * 2009-06-30 2011-01-01 Jmicron Technology Corp Data backup apparatus and data backup method
SE534135C2 (sv) * 2009-09-17 2011-05-10 Phoniro Ab Distribution av låsåtkomstdata för elektromekaniska lås i ett åtkomstkontrollsystem
US20110225312A1 (en) * 2010-03-10 2011-09-15 Thomson Licensing Unified cache and peer-to-peer method and apparatus for streaming media in wireless mesh networks
US8463788B2 (en) * 2010-09-03 2013-06-11 Marvell World Trade Ltd. Balancing caching load in a peer-to-peer based network file system
US8396963B2 (en) * 2010-09-29 2013-03-12 Schneider Electric USA, Inc. Networked devices for monitoring utility usage and methods of using the same
WO2012098656A1 (ja) * 2011-01-19 2012-07-26 富士通株式会社 伝送装置、伝送方法および伝送システム
US9036444B1 (en) * 2011-03-10 2015-05-19 Netapp, Inc. Redundant memory system and associated method thereof
US20120246303A1 (en) * 2011-03-23 2012-09-27 LogRhythm Inc. Log collection, structuring and processing
KR20120112965A (ko) * 2011-04-04 2012-10-12 삼성전자주식회사 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법
US8930647B1 (en) * 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
CA2841104C (en) * 2011-09-07 2019-06-04 Orega Inc. File management sysyetm and file management method
US8695047B2 (en) * 2011-11-08 2014-04-08 Qualcomm Incorporated Video stream protection
US20130258110A1 (en) * 2012-04-03 2013-10-03 Honeywell International Inc. System and Method for Providing Security on Demand
JP5906950B2 (ja) * 2012-06-06 2016-04-20 富士通株式会社 コンテンツ配信のための情報処理方法及び装置
US9039523B2 (en) * 2012-06-22 2015-05-26 Igt Avatar as security measure for mobile device use with electronic gaming machine
US9471245B1 (en) * 2012-10-31 2016-10-18 Emc Corporation Method and apparatus for transferring modified data efficiently
US9467368B2 (en) * 2013-03-04 2016-10-11 Dell Products, Lp System and method for routing data to devices within an information handling system
US9092338B1 (en) * 2013-03-20 2015-07-28 Google Inc. Multi-level caching event lookup
WO2014190216A1 (en) * 2013-05-22 2014-11-27 Thompson David S Fantasy sports interleaver

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185613B1 (en) 1996-03-15 2001-02-06 Netvision, Inc. System and method for global event notification and delivery in a distributed computing environment
US6885898B1 (en) 2001-05-18 2005-04-26 Roy-G-Biv Corporation Event driven motion systems

Also Published As

Publication number Publication date
EP2849068A1 (en) 2015-03-18
US20150081785A1 (en) 2015-03-19
TW201523451A (zh) 2015-06-16
JP6307393B2 (ja) 2018-04-04
CN104468689A (zh) 2015-03-25
US9807161B2 (en) 2017-10-31
JP2015057703A (ja) 2015-03-26
CN104468689B (zh) 2019-11-19
KR20150032188A (ko) 2015-03-25
EP2849068B1 (en) 2020-07-01

Similar Documents

Publication Publication Date Title
KR101940086B1 (ko) 분산 이벤트를 처리하는 시스템, 디바이스 및 방법
AU2019275589B2 (en) Self-provisioning access control
KR102076796B1 (ko) 익명의 접근을 제어하는 방법 및 디바이스
KR101908988B1 (ko) 어플리케이션 데이터를 관리하는 방법 및 디바이스
JP6254499B2 (ja) 分散制御システムにおける合意の欠損
KR101757345B1 (ko) 분산형 데이터베이스를 조인하는 디바이스 및 방법

Legal Events

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