KR101321664B1 - 무선 통신 디바이스들 간의 그룹 통신들을 지원하는 개선된 데이터베이스 아키텍처 - Google Patents

무선 통신 디바이스들 간의 그룹 통신들을 지원하는 개선된 데이터베이스 아키텍처 Download PDF

Info

Publication number
KR101321664B1
KR101321664B1 KR1020117001130A KR20117001130A KR101321664B1 KR 101321664 B1 KR101321664 B1 KR 101321664B1 KR 1020117001130 A KR1020117001130 A KR 1020117001130A KR 20117001130 A KR20117001130 A KR 20117001130A KR 101321664 B1 KR101321664 B1 KR 101321664B1
Authority
KR
South Korea
Prior art keywords
data
dataset
server
ordering information
checkpointing
Prior art date
Application number
KR1020117001130A
Other languages
English (en)
Other versions
KR20110020302A (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 KR20110020302A publication Critical patent/KR20110020302A/ko
Application granted granted Critical
Publication of KR101321664B1 publication Critical patent/KR101321664B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/18Processing of user or subscriber data, e.g. subscribed services, user preferences or user profiles; Transfer of user or subscriber data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/06Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services
    • H04W4/10Push-to-Talk [PTT] or Push-On-Call services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/40Connection management for selective distribution or broadcast
    • H04W76/45Connection management for selective distribution or broadcast for Push-to-Talk [PTT] or Push-to-Talk over cellular [PoC] services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/14Backbone network devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W92/00Interfaces specially adapted for wireless communication networks
    • H04W92/04Interfaces between hierarchically different network devices
    • H04W92/12Interfaces between hierarchically different network devices between access points and access point controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

무선 통신 디바이스의 통신 그룹들 내의 멤버들의 그룹 아이덴티티 데이터베이스와 같이, 다중 애플리케이션 스레드들에 의해 액세스되는 크고 실질적으로 계속해서 변하는 데이터세트를 계속해서 업데이트하는 시스템 및 방법이 개시된다. 제 1 서버는 그룹 아이덴티티 데이터베이스를 보유하고, 제 1 서버 상의 애플리케이션 스레드들이 그룹 통신들을 설정하기 위해 데이터베이스를 액세스함에 따라, 제 2 서버는 데이터베이스를 업데이트하기 위해 새로운 그룹 아이덴티티 데이터를 전송하고, 새로운 데이터는 별개의 순서화된 블록들로서 도착한다. 제 1 서버-상주 데이터-인덱스 테이블은 새로운 데이터 블록들의 순서화 정보로 업데이트되고, 제 1 서버-상주 체크포인팅 스레드는 새로운 데이터 블록들의 순서화 정보를 체크포인팅 캐시에 배치하고, 새로운 데이터 블록들이 그룹 아이덴티티 데이터베이스로 업데이트됨에 따라 순서화 정보를 체크포인팅하고, 데이터-인덱스 테이블에 대해 데이터의 순서화 (또는 버전) 를 검증한다.

Description

무선 통신 디바이스들 간의 그룹 통신들을 지원하는 개선된 데이터베이스 아키텍처{IMPROVED DATABASE ARCHITECTURE FOR SUPPORTING GROUP COMMUNICATIONS AMONG WIRELESS COMMUNICATION DEVICES}
1. 본 발명의 분야
본 발명은 컴퓨터 데이터베이스 구조들에 관한 것이다. 더욱 상세하게, 본 발명은, 무선 통신의 통신 그룹 간의 그룹 통신 제어에서 사용하기 이롭고 특히 고장을 방지하는 스케일링 가능 및 다중 스레드 데이터베이스 아키텍처에 관한 것이다.
2. 관련된 기술의 설명
"푸시-투-토크" (PTT) 기능으로서 일반적으로 지칭되는 빠른 일대일 또는 일대다 통신을 제공하는 무선 통신 서비스가 존재한다. 통신 무선 디바이스용 수신 디바이스들의 특정 PTT 그룹은 흔히 캐리어에 의해 설정되고, 그룹 통신들을 설정 및 제어하는 서버에 액세스 가능한 데이터베이스 상에서 유지된다. PTT 통신 접속은, 스피커 및 그룹의 각각의 멤버 디바이스 간의 하프-듀플렉스 링크를 활성화하는 무선 디바이스 상의 단일의 버튼-푸시에 의해 통상적으로 개시되고, 버튼을 풀면, 상기 디바이스는 인입하는 PTT 전송들을 수신할 수 있다. 일부 디바이스들에서, PTT 스피커는, 스피커가 말하는 동안에 어떠한 다른 그룹 멤버도 말하지 않는 "플로어 (floor)"를 가질 것이고, 어떠한 디바이스가 플로어를 갖는지를 결정하는 것은 통신 서버에 달려 있다. 스피커가 PTT 버튼을 풀면, 그룹의 임의의 다른 별개의 멤버가 그들의 PTT 버튼을 맞물리게 하고, 그들은 플로어를 가질 수 있다.
PTT 그룹들의 그룹 정보를 유지하는 데이터베이스와 같은 데이터베이스는 새로운 정보, 예를 들면, 캐리어에서 부가되는 새로운 PTT 그룹들로 끊임없이 업데이트되고, 또한 새로운 그룹 통신들이 발생함에 따라 액세스될 필요가 있다. 따라서, 캐리어 (또는 다른 서버) 는 그룹 통신 서버에 의해 통상적으로 액세스 가능한 데이터베이스에 새로운 그룹 데이터를 전송할 필요가 있고, 그룹 통신 서버는 그의 기록들을 메모리에 순서대로 업데이트할 수 있고, 또한 그의 데이터베이스 내의 데이터를 순서대로 체크포인팅할 수 있고, 즉, 캐리어 또는 다른 엔티티에 의해 제공된 정확한 그룹 정보를 매칭시킬 수 있다.
이러한 업데이팅은 통상적으로, 캐리어 서버가 새로운 데이터를 다중 패킷들로 전송하는 것과 동시에 발생하고, 각각의 패킷은 순서대로 저장된 다중 기록들을 갖는다. 그룹 통신 서버 (또는 다른 수신 서버) 는 각각의 인입하는 패킷에 대한 새로운 스레드를 생기게 하고, 그 후 서버의 메모리를 업데이트하고, 이를 데이터베이스에 체크포인팅한다. 업데이트됨에 따라 매우 많은 수의 데이터 베이스의 기록들 및 가상적으로 일정한 액세스로 인해, 업데이트의 실패 가능성이 증가한다. 또한, 수신 서버가 재시작할 필요가 있도록 새로운 데이터를 순서대로 전송할 시에 고장 또는 실패 전송이 발생하면, 수신 서버는 순서대로 저장된 체크포인트로부터 그들의 기록들만을 판독할 수 있고, 그렇지 않다면, 캐리어 서버가 체크포인트로부터 순서대로 판독되는 최종 기록으로부터의 데이터로 수신 서버를 다시 업데이트하라고 요청할 필요가 있을 것이다.
끊임없이 업데이트되고 액세스될 필요가 있는 데이터베이스에서의 이러한 문제점에 대한 보통의 해결책은, 인입하는 패킷들에 대한 큐 (queue) 를 사용하고 그 후 순서대로 업데이트하기 위한 특정 패킷을 선택하는 것이다. 애플리케이션 스레드가 패킷을 제어하면, 순서대로, 패킷 순서는 캐시에서 업데이트될 것이고, 또한 업데이트가 얼마나 진행되었는지를 결정하기 위해 체크포인트를 형성한다. 그러나, 인터넷 또는 다른 TCP/IP 스위칭 네트워크와 같은 패킷 네트워크에서 흔한 패킷들의 순서대로의 수신에서의 에러는, 정확히 순서화된 패킷이 업데이팅 프로세스에 대해 배치되기 전에 큐가 채워진다면 저장이 실패하게 될 것이다.
따라서, 상당한 실패 위험성 및 전체 새로운 데이터 전송을 재전송할 필요성 없이 새로운 순서화된 데이터의 수신 및 새로운 데이터의 정확한 순서로 데이터베이스의 업데이팅을 신뢰할 수 있게 허용하는 개선된 데이터베이스 아키텍처를 제공하는 것이 이롭다. 데이터베이스 내의 데이터의 업데이팅은 다른 애플리케이션들에 의한 업데이팅 데이터베이스의 액세싱과 간섭해서는 안 된다. 따라서, 본 발명은 주로 그러한 개선된 데이터베이스 아키텍처를 제공하는 것이다.
발명의 개요
요약하면, 본 발명은, 무선 통신 디바이스들의 통신 그룹들 내의 멤버들의 그룹 아이덴티티 데이터베이스와 같이, 다중 애플리케이션 스레드들에 의해 액세스되는 크고 실질적으로 계속해서 변하는 데이터세트의 계속적인 업데이팅을 허용하는 아키텍처에 대한 것이다. 제 1 서버는 그룹 아이덴티티 데이터베이스에 대한 액세스를 갖고, 애플리케이션 스레드들이 멤버 무선 통신 디바이스들 사이에서 그룹 통신들을 확립하기 위해 데이터베이스를 액세스함에 따라, 캐리어 서버와 같은 제 2 서버는 데이터베이스를 업데이트하기 위해 새로운 그룹 아이덴티티 데이터를 전송하고, 새로운 데이터는 별개의 순서화된 블록들로서 도착한다. 제 1 서버에서의 데이터-인덱스 테이블은 새로운 데이터 블록들의 순서화 정보로 업데이트되고, 제 1 서버 상의 체크포인팅 스레드는 새로운 데이터 블록들의 순서화 정보를 체크포인트 캐시에 배치하고, 새로운 데이터 블록들이 그룹 아이덴티티 데이터베이스로 업데이트됨에 따라 순서화 정보를 체크포인팅하여, 이로써, 데이터가 메모리 내의 데이터세트를 업데이트하기 위해 체크포인팅 캐시로부터 취해질 때 데이터-인덱스 테이블에 대해 데이터의 순서화 (또는 버전) 를 검증한다. 이러한 방법에서, 본 아키텍처는 인입하는 데이터 블록들을 수신하고 메모리로의 블록들 삽입을 체크포인팅하기 위해 단일의 캐시, 버퍼, 또는 큐의 사용에 의지하지 않는다.
일 실시형태에서, 다중 애플리케이션 스레드들에 의해 액세스되는 크고 실질적으로 계속해서 변하는 데이터세트를 계속해서 업데이트하는 시스템은, 실질적으로 계속해서 변하는 제 1 데이터세트 (통신 그룹 아이덴티티 데이터베이스) 를 선택적으로 제어하도록 구성된 제 1 서버를 포함하고, 제 1 서버는 체크포인팅 스레드를 포함하여 그 안에 상주하는 복수의 애플리케이션 스레드들을 포함하고, 제 1 서버는 체크포인팅 캐시 및 데이터-인덱스 테이블을 더 포함하고, 제 1 데이터세트는 제 1 서버 상에 상주하는 적어도 애플리케이션 스레드들에 의해 실질적으로 끊임없이 액세스된다. 상기 시스템은 새로운 그룹 식별 정보와 같이 제 1 데이터세트에 포함시키기 위해 제 2 데이터세트로부터의 새로운 데이터를 제 1 서버에 선택적으로 전송하도록 구성된 제 2 서버를 갖고, 새로운 데이터는 별개의 순서화된 블록들을 포함한다. 새로운 데이터가 수신될 때, 데이터-인덱스 테이블이 업데이트되고, 적어도, 데이터 블록들의 순서화 정보가 체크포인팅 캐시에 배치된다. 제 1 데이터세트에 포함될 (또는 업데이트될) 새로운 데이터의 각각의 블록에서, 체크포인팅 스레드는 데이터-인덱스 테이블 내의 데이터 블록의 순서화 정보와 캐시포인팅 캐시 내의 데이터 블록에 대한 순서화 정보를 비교하고, 비교가 제 1 데이터세트에 포함될 데이터 블록의 순서에 대한 정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드는 데이터 블록을 제 1 데이터세트에 포함시키고, 비교가 제 1 데이터세트에 포함될 데이터 블록에 대한 부정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드는 데이터 블록을 폐기하고, 체크포인팅 캐시로부터 정확한 순서의 데이터 블록을 대기한다. 또한, 체크포인팅 스레드는 제 2 서버로부터 분실 데이터 블록 (들) 을 요청할 수 있다.
일 실시형태에서, 다중 애플리케이션 스레드들에 의해 액세스되는 크고 실질적으로 계속해서 변하는 데이터세트를 계속해서 업데이트하는 방법은, 실질적으로 계속해서 변하는 제 1 데이터세트를 선택적으로 제어하도록 구성된 제 1 서버에서 별개의 순서화된 블록들에 포함되는 새로운 데이터, 제 2 데이터세트로부터의 새로운 데이터를 수신하는 단계를 포함하고, 제 1 서버는 체크포인팅 스레드를 포함하여 그 안에 상주하는 복수의 애플리케이션 스레드들을 포함하고, 제 1 서버는 체크포인팅 캐시 및 데이터-인덱스 테이블을 더 포함하고, 제 1 데이터세트는 적어도 제 1 서버에 상주하는 애플리케이션 스레드들에 의해 실질적으로 계속해서 액세스된다. 그 후, 새로운 데이터 블록들로서 데이터-인덱스 테이블은 제 1 서버에서 수신되고, 데이터-인덱스 테이블은 제 2 데이터세트 내에 보유된 데이터 블록들의 순서화 정보를 포함하고, 데이터 블록들의 순서화 정보를 체크포인팅 캐시에 배치한다. 그 후, 제 1 데이터세트에 포함될 새로운 데이터의 각각의 블록에서, 체크포인팅 스레드는 데이터-인덱스 테이블 내의 데이터 블록의 순서화 정보와 체크포인팅 캐시 내의 데이터 블록에 대한 순서화 정보를 비교하고, 비교가 제 1 데이터세트 내에 포함될 데이터 블록의 순서에 대한 정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드는 데이터 블록을 제 1 데이터세트에 포함시키고, 비교가 제 1 데이터세트에 포함될 데이터 블록에 대한 부정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드는 데이터 블록을 폐기하고, 체크포인팅 캐시로부터 정확한 순서의 데이터 블록을 대기한다.
일 실시형태에서, 실질적으로 계속해서 업데이트되고 변하는 상주 데이터세트를 선택적으로 제어하도록 구성된 서버가 제공되고, 서버는 체크포인팅 스레드, 캐시포인팅 캐시, 데이터-인덱스 테이블, 및 적어도, 제 1 서버 상에 상주하는 애플리케이션 스레드들에 의해 실질적으로 계속해서 액세스되는 제 1 데이터세트를 포함하여 복수의 상주 애플리케이션 스레드들을 포함한다. 제 1 데이터세트는 제 2 데이터세트로부터의 데이터 블록들에 의해 적어도 주기적으로 업데이트되고, 제 2 데이터세트는 별개의 순서화 블록들을 포함한다. 서버 상에서, 제 2 데이터세트로부터의 새로운 데이터 블록들이 수신됨에 따라 데이터-인덱스 테이블이 업데이트되고, 데이터-인덱스 테이블은 제 2 데이터세트 내에 보유된 데이터 블록들의 순서화 정보를 포함한다. 따라서, 새로운 데이터 블록들이 서버에서 수신됨에 따라, 적어도 데이터 블록들의 순서화 정보는 체크포인팅 캐시에 배치되고 (대안으로, 데이터의 전체 블록들이 그 안에 배치될 수 있음), 그 후 제 1 데이터세트에 포함될 새로운 데이터의 각각의 블록에서, 체크포인팅 스레드는 데이터-인덱스 테이블 내의 데이터 블록의 순서화 정보와 체크포인팅 캐시 내의 데이터 블록에 대한 순서화 정보를 비교하고, 비교가 제 1 데이터세트에 포함될 데이터 블록의 순서에 대한 정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드는 데이터 블록을 제 1 데이터세트에 포함시킨다. 그렇지 않다면, 비교가 제 1 데이터세트에 포함될 데이터 블록에 대한 부정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드는 데이터 블록을 폐기하고 (또는 상기 블록이 기록되지 않도록 함), 체크포인팅 캐시로부터 정확한 순서의 데이터 블록을 대기한다.
따라서, 본 아키텍처, 및 대응하는 시스템들, 방법들, 및 구성요소들은, 그들이 새로운 데이터의 정확한 순서로 새로운 순서화된 데이터를 수신 및 데이터세트의 업데이팅을 허용하여, 실패 위험 및 전체 새로운 데이터 전송을 재송할 필요성을 최소화한다. 데이터세트 (데이터베이스) 는 여전히 다른 애플리케이션들에 의해 액세스될 수 있고, 정확히 순서화된 새로운 데이터가 부가된다. 또한, 데이터세트는 본 아키텍처에 의해 쉽게 스케일링 가능하다.
본 발명의 다른 목적들, 특징들, 및 이점들은 도면의 간단한 설명, 본 발명의 상세한 설명 및 특허청구범위의 리뷰 후에 명백해질 것이다.
도면의 간단한 설명
도 1은, 그룹 통신 서버와 통신하는 무선 통신 디바이스들의 지정 PTT 그룹 및 업데이트된 그룹 기록들을 그룹 통신 서버에 전송하는 캐리어 서버를 갖는 무선 네트워크의 대표도.
도 2는 PTT 그룹 멤버들의 무선 통신 디바이스들 간의 그룹 통신 서버 제어 통신들을 갖는, 공통 셀룰러 통신 구성의 무선 네트워크의 일 실시형태의 대표도.
도 3은 캐리어 서버로부터 새로운 그룹 데이터를 검색하고, 국부적으로 저장된 그룹 정보를 업데이트하는 그룹 통신 서버 (또는 지역 그룹 권한) 를 예시하는 대표도.
도 4는 그룹 통신 서버에서 그룹 아이덴티티 데이터베이스를 업데이트하기 위한 프로세스의 일 실시형태의 흐름도.
도 5는 그룹 통신 서버가 인입하는 패킷들을 처리하고 인입하는 패킷으로 상주 캐시를 업데이트하는 프로세스의 일 실시형태의 대표도.
도 6a는 패킷이 순서대로 되어 있지 않다면, 패킷들이 메모리에 기록될 체크포인팅 캐시로부터 취해짐에 따라 그룹 통신 서버가 패킷들을 체크포인팅하는 프로세스의 일 실시형태의 대표도.
도 6b는 패킷이 순서대로 되어 있다면, 메모리에 대한 패킷을 업데이트하고, 패킷들이 메모리에 기록될 체크포인팅 캐시로부터 취해짐에 따라 그룹 통신 서버가 패킷들을 체크포인팅하는 프로세스의 일 실시형태의 대표도.
본 발명의 상세한 설명
본 명세서에서, 용어들, "통신 디바이스", "무선 디바이스", "무선 통신 디바이스", "PTT 통신 디바이스" "핸드헬드 디바이스", "이동 디바이스" 및 "핸드셋"은 상호 교환 가능하게 사용된다. 용어들 "호" 및 "통신" 은 또한 교환가능하게 사용된다. 용어들, 본원에 사용된 "애플리케이션"은 실행 가능하고 비실행 가능한 소프트웨어 파일들, 미가공 데이터, 통합 데이터, 패치들, 및 다른 코드 세그먼트들을 포함하도록 의도된다. 용어, "예시"는 개시된 요소 또는 실시형태가 단지 예라는 것을 의미하고, 사용자의 임의의 선호를 나타내지 않는다. 또한, 동일한 번호는 몇몇 도면들에 걸쳐 동일한 요소들을 지칭하고, 관사 "하나" 및 "상기"는, 상세한 설명에서 지정되지 않는다면, 복수의 참조들을 포함한다.
유사한 번호들이 전반에 걸쳐 유사한 엘리먼트들을 나타내는 도면들을 참조하면, 도 1은 무선 전화기 (14), 스마트 페이저 (16) 및 PDA (personal digital assistant) (18) 와 같은, PTT 그룹 (12) 내의 무선 통신 디바이스들에 대한 그룹 아이덴티티 데이터베이스의 업데이트 및 액세스를 위한 개선된 아키텍처를 무선 네트워크 (20) 를 통해 다른 무선 통신 디바이스들에 제공하는 시스템 (10) 의 일 실시형태를 예시한다. 시스템 (10) 에서, 각각의 무선 통신 디바이스 (14, 16, 18) 는 복수의 다른 무선 통신 디바이스들 중 하나 이상의 다른 무선 통신 디바이스들의 타겟 세트와 무선 통신 네트워크 (20) 를 통해 선택적으로 직접 또는 간접적으로 통신할 수 있다. 예를 들면, 이동 전화기 (14) 에 대한 타겟 세트는, 통신 그룹 (12) 내의 모든 디바이스들 또는 페이저 (16) 및 PDA (18) 와 같은 통신 그룹 (12) 의 서브세트일 수 있다.
통상적으로, (이동 전화기 (14) 와 같은) 무선 통신 디바이스는, 무선 네트워크 (20) 에 걸친 서버측 LAN (30) 상에 존재하는, 그룹 통신 서버 (32) 로서 여기서 도시된, 그룹 통신 컴퓨터 디바이스에 무선 디바이스가 무선 네트워크 (20) 상에 존재, 즉, 액세스 가능하다는 것을 통지한다. 그룹 통신 컴퓨터 디바이스는, 무선 네트워크 (20) 상의 그룹 멤버 디바이스들에 대한 정보를 유지하거나 또는 이러한 정보를 제 1 무선 통신 디바이스에 의해 지정된 타겟 무선 통신 디바이스들의 세트와 공유하거나, 또는 이러한 정보를 서버측 LAN (30) 상에 상주하거나 또는 무선 네트워크 (20) 를 통해 액세스 가능한 다른 컴퓨터 디바이스들과 공유한다. 그룹 통신 서버 (32) 는 무선 디바이스들에 대한 그룹 식별 데이터를 저장하기 위해 연결되거나 또는 액세스 가능한 그룹 아이덴티티 데이터베이스 (34) 를 가질 수 있다. 여기서, 서버측 LAN (30) 상에 존재하거나 또는 그룹 통신 서버 (32) 에 전자적으로 액세스 가능한 캐리어 서버 (36) 는, 서버가 호스팅을 담당하는 그룹 멤버 정보의 업데이트를 위해 그룹 통신 서버 (32) 에 그룹 아이덴티티 정보를 전송할 것이다. 서버측 LAN (30) 상에 상주하거나 또는 무선 네트워크 (20), 또는 일반적으로 인터넷에 걸친 컴퓨터 컴포넌트들의 수가 제한되지 않는다는 것이 이해되어야 한다.
PTT 음성 통신과 같은 그룹 통신은 통신하는 무선 통신 디바이스 (14, 16, 18) 와 타겟 세트의 하나 이상의 다른 무선 통신 디바이스들 간의 하프-듀플렉스 채널을 통해 확립될 수 있다. 또한, 그룹 통신 컴퓨터 디바이스 (32) 는, 전송된 PTT 통신을 실제 수신하는 타겟 세트의 무선 통신 디바이스들의 지식 없이, 타겟 세트에 요청된 직접 통신을 브리지하도록 시도할 수 있다. 다르게는, 그룹 통신 컴퓨터 디바이스 (32) 는 타겟 세트 (12) 에 직접 통신을 브리지할 수 없다는 것을 PTT 송신 무선 통신 디바이스 (14, 16, 18) 에 통지할 수 있다. 또한, 그룹 통신 컴퓨터 디바이스 (32) 가 그룹 식별 데이터의 연결된 데이터베이스 (34) 를 갖는 것으로 여기서 도시되었지만, 다른 컴퓨터 디바이스들이 그 디바이스들 상에 상주하는 그룹 아이덴티티 데이터를 가질 수 있고, 상술된 모든 저장 기능들을 수행할 수 있다. 예를 들면, 그룹 통신 서버 (32) 는, 통신 그룹들을 제어하는 다른 서버로부터 요청된 바와 같은 그룹 정보를 관리하도록 단독으로 전용된 지역 그룹 권한일 수 있다. 따라서, 본 시스템 (10) 은 PTT 환경에서 2 개의 서버들 사이에서 데이터를 송신하기 위한 스케일링 가능한, 다중 스레드 및 내고정성 아키텍처이다.
도 2는, PTT 시스템 내의 세트 그룹 멤버들 (디바이스들 (70, 72, 74, 76)) 의 무선 통신 디바이스들 간의 통신들을 제어하는 일련의 그룹 통신 컴퓨터 디바이스들 (그룹 통신 서버들) (32) 을 갖는, 공통 셀룰러 통신 구성의 무선 네트워크의 일 실시형태의 대표도이다. 무선 네트워크는 단지 예시적인 것이며, 임의의 시스템을 포함할 수 있고, 이로써, 원격 모듈들은, 제한 없이 무선 네트워크 캐리어들 및/또는 서버들을 포함하여, 서로 간에 및 사이에 및/또는 무선 네트워크 (20) 의 구성요소들 간에 및 사이에서 방송으로 통신한다. 일련의 그룹 통신 서버들 (32) 은 그룹 통신 서버 LAN (50) 에 접속된다. 무선 통신 디바이스들 (14, 16, 18) 은 EvDO 또는 CDMA2000 표준에서의 신호들과 같이, 데이터 서비스 옵션을 사용하여 그룹 통신 서버 (들) 로부터 패킷 데이터 세션들을 요청할 수 있다.
그룹 통신 서버 (들) (32) 는 본원에서 캐리어 네트워크 (54) 상에 존재하는 것으로 도시된 PDSN (52) 과 같은 무선 서비스 제공자의 패킷 데이터 서비스 노드 (PDSN) 에 접속된다. 각각의 PDSN (52) 은 패킷 제어 기능 (PCF) (62) 을 통해 기지국 (60) 의 기지국 제어기 (64) 와 인터페이싱할 수 있다. PCF (62) 는 통상적으로 기지국 (60) 내에 배치된다. 캐리어 네트워크 (54) 는 메시징 서비스 제어기 ("MSC") (58) 에 전송되는 메시지들 (일반적으로 데이터 패킷들의 형태) 을 제어한다. 캐리어 네트워크 (54) 는 네트워크, 인터넷 및/또는 POTS ("plain ordinary telephone system") 에 의해 MSC (58) 와 통신한다. 통상적으로, 캐리어 네트워크 (54) 와 MSC (58) 간의 네트워크 또는 인터넷 접속은 데이터를 전송하고, POTS는 음성 정보를 전송한다. MSC (58) 는 하나 이상의 기지국들 (60) 에 접속될 수 있다. 캐리어 네트워크와 유사한 방법에서, MSC (58) 은 통상적으로 데이터 전송을 위한 네트워크 및/또는 인터넷 및 음성 정보를 위한 POTS 양자에 의해 BTS (branch-to-source) (66) 에 접속된다. BTS (66) 는 궁극적으로 단문 메시징 서비스 ("SMS") 또는 당분야에 공지된 다른 방송 방법들에 의해 셀룰러 전화기들 (70, 72, 74, 76) 과 같은 무선 디바이스들에 메시지를 무선으로 전송하고 무선 디바이스들로부터 메시지를 무선으로 수신한다. 또한, 캐리어 경계들 및/또는 PTT 운영자 네트워크 경계들이 상술된 데이터의 공유를 억제 또는 금지한다는 것을 유의해야 한다.
도 3은, 캐리어 서버 (102) 로부터 새로운 그룹 데이터를 검색하고 그룹 아이덴티티 데이터베이스 (108) 상의 국부적으로 저장된 그룹 정보를 업데이트하는 지역 그룹 권한 (RGA) (100) (또는 대안으로 그룹 통신 서버) 를 예시하는 대표도이다. 본원에서 하나 이상의 서버들인 RGA (100) 는 그룹 아이덴티티 데이터베이스 (108) 내의 실질적으로 계속해서 변하는 제 1 데이터세트를 선택적으로 제어하도록 구성된다. RGA (100) 는 스레드들 (112, 114, 116) 과 같이 그 안에 존재하는 복수의 애플리케이션 스레드들을 포함하고, 또한 체크포인팅 스레드 (118) 를 포함한다. RGA (100) 는 체크포인팅 캐시 (104) 및 데이터-인덱스 테이블 (106) 을 갖고, 그룹 아이덴티티 데이터베이스 (108) 는, 그룹 통신들을 설정하는 RGA (100) 상에 존재하는 데이터 베이스 액세스 스레드 (38) 와 같은, 적어도, 애플리케이션 스레드들에 의해 실질적이고 끊임없이 (반드시 계속해서 액세스되지는 않지만) 액세스된다.
캐리어 서버 (102) (또는 서버들 또는 다른 컴퓨터 디바이스들) 는, 그룹 아이덴티티 데이터베이스 (108) (또는 다른 데이터세트) 에 포함시키기 위해 새로운 통신 그룹 기록들의 형태로 새로운 데이터를 RGA (100) 에 선택적으로 전송한다. 새로운 그룹 데이터는 별개의 순서화된 블록들로 구성되고, 데이터-인덱스 테이블 (106) 은, 새로운 데이터 블록들이 RGA (100) 에서 수신됨에 따라 새로운 데이터 블록들의 순서화 정보를 반영하도록 업데이트될 것이다. 새로운 데이터 블록들이 캐리어 서버 (102) 로부터 RGA (100) 에서 수신됨에 따라, 적어도, 데이터 블록들의 순서화 정보, 및 바람직하게는 데이터 블록이 체크포인팅 캐시 (104) 에 배치된다. 그룹 아이덴티티 데이터베이스 (108) 에 포함될 새로운 데이터의 각각의 블록에 대해, 체크포인팅 스레드 (118) 는 데이터-인덱스 테이블 (106) 내의 데이터 블록의 순서화 정보와 체크포인팅 캐시 (104) 내의 데이터 블록에 대한 순서화 정보를 비교하고, 비교가 그룹 아이덴티티 데이터베이스 (108) 에 포함될 데이터 블록의 순서에 대한 정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드 (118) 는 데이터 블록을 그룹 아이덴티티 데이터베이스 (108) 에 포함시킨다. 그렇지 않다면, 비교가 그룹 아이덴티티 데이터베이스 (108) 에 포함될 데이터 블록에 대한 부정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드 (118) 는 데이터 블록을 폐기하고, 체크포인팅 캐시 (104) 로부터 정확한 순서의 데이터 블록을 대기한다.
일 실시형태에서, 체크포인팅 스레드 (118) 는 또한 정확한 순서화 정보를 갖는 데이터 블록을 RGA (100) 의 그룹 아이덴티티 데이터베이스 (108) 에 배치한다. RGA (100) 는 또한 요청 스레드 (110) 를 통해 캐리어 서버 (102) 로부터 새로운 데이터를 선택적으로 요청하도록 구성될 수 있다. 캐리어 서버 (102) 는 또한 새로운 기록들을 캐리어 서버 (102) 에 제공하는 2 차 운영자 데이터베이스 (120) 와 접촉하는 것으로 여기서 도시된다. 또한, 비교가 그룹 아이덴티티 데이터베이스 (108) 에 포함될 데이터 블록에 대한 부정확한 순서화 정보를 나타낼 시에, 체크포인팅 스레드 (118) 는 또한 캐리어 서버 (102) 로부터 정확한 순서의 데이터 블록을 요청할 수 있다.
동작 시에, RGA (100) 의 메모리를 업데이트하는 것은 임의의 순서로 수행될 수 있지만, 그룹 아이덴티티 데이터베이스 (108) 가 정확하고 최신인지를 검증하기 위해 최종 업데이트된 버전 넘버 (데이터 아이템으로서 "LastUpdatedVersionNumber") 의 속성이 추적되어야만 한다. 이는, 업데이팅이 타임아웃되는 경우에, 업데이팅 프로세스가 중단된 정확한 기록 넘버에 대한 요청이 캐리어 서버 (102) 에 대해 이루어질 수 있도록 또한 요구된다.
일 실시형태에서, 애플리케이션 스레드들 (112, 114, 116) 은 캐리어 서버 (102) 로부터 데이터 패킷들을 대기하고, 패킷이 도착하면, 패킷이 순서대로 인지 여부에 상관없이 임의의 스레드가 그 패킷을 프로세싱할 수 있다. 패킷에는 글로벌 카운터, "LastUpdatedVersionNumber" 및 또한 (시작 기록 넘버, 종료 기록 넘버) 로서 (키, 값) 쌍을 갖는 해시 맵이 포함된다. 따라서, 스레드가 "updateGroupDefReq" 패킷을 수신하는 경우에, 즉, 새로운 데이터가 인입하는 경우에, 체크포인팅 스레드 (118) 는 먼저 기록 넘버를 체크하고, 그 기록 번호를 "LastUpdatedVersionNumber"와 매칭시킨다. 매칭하는 경우에, 이러한 패킷의 종료 기록 넘버로 LastUpdatedVersionNumber를 업데이트한다. 매칭하지 않는 경우에, 그 패킷을 해시 테이블에 부가한다. 이러한 패킷의 프로세싱이 끝난 후에, 스레드는 예상하는 다음 패킷에 대해 해시 테이블에서 빠른 룩업 O(1) 을 행한다 (일부 다른 스레드가 그 패킷 전에 패킷을 업데이트하였을 수도 있다). 스레드가 다음 패킷을 발견하는 경우에, 스레드는 해시 테이블에서 발견된 기록의 종료 버전 넘버로 LastUpdatedVersionNumber를 업데이트하고, 해시 테이블로부터 기록을 제거한다. 따라서, 데이터 인덱스 테이블 (106) 에서 "LastUpdatedVersionNumber"에 대한 엄격한 순서화를 유지한다.
메모리 (또는 그룹 아이덴티티 데이터베이스 (108)) 에 대한 업데이트들의 체크포인팅은 RGA (100) 장애 극복 이후에 엄격히 순서대로 되어야만 하고, 프로세스는 체크포인트로부터 최종 업데이트된 버전 넘버를 판독할 수 있고, 그 후 캐리어 서버 (102) 에 나머지 버전 넘버들을 문의할 수 있다. 일 실시형태에서, "mysql" 데이터베이스에 저장된 2 개의 테이블들: 즉, 캐리어 서버 (102) 의 기록들의 현재 버전에 존재하는 모든 데이터를 포함하는 데이터 인덱스 테이블 (106) Table-Cache, 및 "LastVersionNumberCheckpointed"의 테이블일 수 있는 체크포인트 캐시 (104) 가 존재할 것이다. 체크포인팅 캐시 (104) (테이블) 는 RGA (100) 의 일반적인 메모리 캐시를 업데이트하는데 사용되는 테이블과 상이하다. LastVersionNumberCheckpointed의 버전 넘버는, 그룹 아이덴티티 데이터베이스 (108) 내의 체크포인팅 스레드 (118) 에 의해 차례로 체크포인팅되었던 최종 동작을 의미하고, 그 이전에 임의의 정보 손실 없이 체크포인트로부터 안전하게 판독된다.
체크포인팅 스레드 (118) 가 체크포인팅 큐 (104) 로부터 메시지를 판독할 때, 체크포인팅 스레드는 먼저 속성 "LastVersionNumberCheckpointedinMemory" (그룹 아이덴티티 데이터베이스 (108) 내의 "LastVersionNumberCheckpointed"와 동일) 를 검토하고, 메시지가 순서대로 인지 여부를 결정한다. 메시지가 순서대로가 아닌 경우에, 체크포인팅 스레드 (118) 는 시작 버전 넘버 및 종료 버전 넘버를 키, 값 쌍으로서 맵에 저장한다. 체크포인팅 스레드 (118) 가 현재 체크포인팅 중이면 0으로 설정하고, 체크포인팅을 마쳤다면 1로 설정하는 부가적인 필드가 맵에 존재하는 것이 바람직하다. 체크포인팅 스레드 (118) 가 (LastVersionNumberCheckpointed를 검토함으로써) 결국 순서대로인 패킷을 획득하는 경우에, 체크포인팅 스레드 (118) 는 그 패킷을 체크포인팅하고, 다음 시작 버전 넘버에 대해 데이터 인덱스 테이블 (106) 을 회귀적으로 검토하고, 마지막으로, 이를 그룹 아이덴티티 데이터베이스 (108) 테이블 "LastVersionNumberCheckpointed"에 체크포인팅한다. 따라서, 기록 넘버 "LastVersionNumberCheckpointed" 이하의 모든 기록은 그룹 아이덴티티 데이터베이스 (108) 에 체크포인팅된다.
따라서, 그룹 아이덴티티 데이터베이스 (108) 의 업데이트 동안에 체크포인팅의 이러한 프로세스의 일 실시형태가 도 4의 흐름도에 도시된다. 단계 (130) 에 도시된 바와 같이, 인입하는 데이터 블록 (또는 패킷) 이 수신되고, 그 후, 단계 (132) 에 도시된 바와 같이, 데이터 블록이 메모리 캐시에 배치되고, 이는 작업자 스레드 (112, 114) 에 의해 이루어진다. 단계 (134) 에 도시된 바와 같이, 데이터 블록의 버전이 (데이터-인덱스 테이블 (106) 과 같은) 메모리 맵에서 업데이트되고, 그 후 단계 (134) 에 도시된 바와 같이, 그룹 아이덴티티 데이터베이스 (108) 에 대한 업데이트를 위해 체크포인팅 스레드 (118) 에 의해 데이터 블록이 검색된다.
판정 (136) 에 도시된 바와 같이, 버전 넘버가 데이터 블록에 대해 정확한지에 대한 판정이 먼저 이루어지고, 그렇지 않은 경우에, 단계 (140) 에 도시된 바와 같이, 데이터 블록이 폐기되고, 단계 (142) 에 도시된 바와 같이, 다음 버전 넘버 (또는 정확한 버전) 가 캐리어 서버 (102) 로부터 요청될 수 있고, 프로세스는 단계 (136) 에서 다음 데이터 블록을 검색하는 것으로 복귀한다. 그렇지 않다면, 버전 넘버가 판정 (138) 에서 정확한 경우에, 판정 (144) 에 도시된 바와 같이, 체크포인팅 캐시 (104) 내의 체크포인트 넘버가 메모리에서 업데이트될 이러한 블록에 대해 정확한지에 대해 판정이 이루어진다.
블록이 이미 기록되었거나 블록이 손실된 것과 같이, 체크포인팅 넘버가 판정 (144) 에서 부정확한 경우에, 단계 (146) 에 도시된 바와 같이, 체크포인팅 스레드 (118) 는 정확한 블록에 대해 체크포인팅 큐 (또는 대안으로 체크포인팅 캐시) (104) 를 체크하고, 그 후, 판정 (148) 에서 정확한 체크포인팅의 결정이 이루어진다. 정확한 체크포인팅된 데이터 블록이 발견된 경우에, 단계 (150) 에 도시된 바와 같이, 데이터 블록은 데이터세트 (또는, 그룹 아이덴티티 데이터베이스 (108)) 에서 업데이트되고, 체크포인팅 큐에서 체크포인트가 업데이트되고, 프로세스는 단계 (136) 에서 업데이트를 위한 다음 데이터 블록을 검색하도록 복귀한다. 그렇지 않다면, 정확히 체크포인팅된 데이터 블록이 판정 (148) 에서 발견되지 않은 경우에, 프로세스는 단계 (142) 에서 캐리어 서버 (102) 로부터 원하는 데이터 블록에 대한 정확한 버전 넘버를 요청할 것이고, 그 후, 단계 (136) 에서 업데이트를 위한 다음 데이터 블록을 검색하도록 복귀한다.
판정 (144) 에서 정확히 체크포인팅된 데이터 블록이 존재하는 경우에, 그 후, 단계 (150) 에 도시된 바와 같이, 데이터 블록이 업데이트되고, 단계 (152) 에 도시된 바와 같이 체크포인트가 체크포인트 큐에서 업데이트되고, 프로세스는 단계 (136) 에서 업데이트를 위해 다음 데이터 블록을 검색하도록 복귀한다. 새로운 그룹 기록들이 RGA (100) 에 거의 끊임없이 도착함에 따라, 본 프로세스는 거의 모든 경우들에서 계속될 것이지만, 업데이트할 데이터 블록들이 존재하지 않을 때 프로세스가 종료할 수 있고, 새로운 데이터 블록들의 수신 시에 재시작할 수 있다.
도 5는, 그룹 통신 서버가 인입하는 패킷들을 처리하고, 인입하는 패킷으로 상주 캐시를 업데이트하는 프로세스의 타임라인의 일 실시형태의 대표도이다. 여기서, 인입하는 메시지들 (데이터 블록들 또는 패킷들) 을 보유하는 펜딩 스레드 큐 (160) 가 존재하고, 작업자 스레드들 (112, 114) 은 작업자 스레드 큐 (162) 를 활용하고, 작업자 스레드는 그룹 캐시 (164) 를 업데이트하고, 스레드가 메시지를 메모리 맵에 배치할 수 있는지를 결정하고, 그렇다면, 캐리어 서버 (102) 에 수신을 확인 응답하고, 메모리 맵 (166) 에서 다음 시작 넘버를 검토하고, 데이터 인덱스 테이블 (106) 과 같은 메모리 (168) 에서 최종 버전 넘버를 업데이트한다. 그 후, 작업자 스레드는 기록을 프로세싱하고, 데이터 인덱스 테이블 (106) 이 현재인 체크포인팅 큐 (170) 에 메시지를 부가한다.
도 6a는 메시지가 그룹 아이덴티티 데이터베이스 (108) 에 기록되기 위해 체크포인팅 큐 (180) 로부터 취해짐에 따라 그룹 통신 서버 또는 RGA가 메시지를 체크포인팅하는 프로세스의 일 실시형태의 대표도이다. 여기서, 체크포인팅 스레드 (182) 는 체크포인팅 큐 (180) 로부터 메시지 (또는 데이터 블록, 패킷 등) 를 픽업하고, 체크포인팅 스레드 (182) 는 패킷이 순서대로, 즉, 현재인지를 결정하기 위해 메모리 (186) 로부터 최종 버전 넘버를 획득한다. 메시지가 순서대로가 아닌 경우에, 더티 비트 값을 제로로 설정함으로써 메모리 맵 (184) 이 업데이트되고, 체크포인팅 스레드 (182) 가 가진 버전 넘버가 부정확하고 메시지가 폐기될 것이라는 것을 나타낸다. 이러한 실시형태에서, 체크포인트 스레드 (182) 는 또한, 메시지의 부정확한 버전이 그룹 아이덴티티 데이터베이스 (188) 에 기록되지 않는지를 검증하거나, 또는 정확한 업데이트를 위해 어떠한 새로운 데이터가 요구되는지를 결정할 수 있다.
도 6b는 도 6a에서의 정확한 버전 매치 이후의 프로세스의 일 실시형태의 대표도이다. 따라서, 체크포인팅 스레드 (182) 가 체크포인팅 큐 (180) 로부터 메시지 (또는 데이터 블록, 패킷 등) 를 픽업하고, 체크포인팅 스레드 (182) 가 패킷이 순서대로 인지를 결정하기 위해 메모리 (186) 로부터 최종 버전 넘버를 획득한 후에, 체크포인트 스레드 (182) 는 메모리 (184) 내의 활성 맵 내의 다음 시작 버전 넘버를 결정하고, 메모리 (186) (물론 체크포인팅 큐 (180) 를 업데이트함) 내의 최종 버전 넘버를 업데이트하고, 그 후 실제 데이터를 그룹 아이덴티티 데이터베이스 (188) 에 업데이트한다. 그룹 아이덴티티 데이터베이스 (188) 에 대한 업데이트로부터의 단일의 메모리 업데이트 기능이 데이터 인덱스 테이블 (106) 및 체크포인팅 큐 (또는 캐시) (104) 를 동시에 업데이트할 수 있다는 것이 이해되어야 한다.
상기 방법들이 컴퓨터 플랫폼들 상에서 실행 가능하다는 관점에서, 이러한 단계들은 컴퓨터 판독 가능한 매체에 존재하는 프로그램에 의해 수행될 수 있고, 프로그램은, 상술된 단계들을 수행하기 위한 컴퓨터 플랫폼을 갖는 하나 이상의 컴퓨터 디바이스들을 나타낸다. 컴퓨터 판독 가능한 매체는 서버의 메모리일 수 있거나, 접속형 데이터베이스일 수 있다. 또한, 컴퓨터 판독 가능한 매체는, 자기 디스크 또는 테이프, 광학 디스크, 하드 디스크, 플래시 메모리 또는 당분야에 공지된 다른 저장 매체와 같이, 무선 통신 디바이스 컴퓨터 플랫폼 상에서 로딩 가능한 2 차 저장 매체일 수 있다.
하나 이상의 예시적인 실시형태들에서, 상술된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 상기 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능한 매체에 저장 또는 전송될 수 있다. 컴퓨터 판독 가능한 매체는 컴퓨터 저장 매체 및 한 장소에서 다른 장소로의 컴퓨터 프로그램 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용한 매체일 수 있다. 예의 방법으로, 제한하지 않고, 그러한 컴퓨터 판독 가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 디바이스, 자기 디스크 저장 디바이스 또는 다른 자기 저장 디바이스, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 전달 또는 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속은 컴퓨터 판독 가능한 매체로 적절히 지칭된다. 예를 들면, 소프트웨어가 웹사이트, 서버 또는 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 라인 (DSL) 또는 적외선, 무선, 및 마이크로웨이브와 같은 무선 기술들을 사용하는 다른 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 라인 (DSL) 또는 적외선, 무선, 및 마이크로웨이브와 같은 무선 기술들은 매체의 정의에 포함된다. 본원에 사용된 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하고, 디스크들 (disks) 은 항상 자기적으로 데이터를 재생하고, 디스크들 (disc) 은 레이저들로 광학적으로 데이터를 재생한다. 상기 조합들은 또한 컴퓨터 판독 가능한 매체의 범위에 포함되어야 한다.
본 발명이 특히 바람직한 실시형태를 참조하여 도시 및 기재되었지만, 다음의 특허청구범위에 설명된 바와 같이, 본 발명의 범위를 벗어나지 않고, 형태 및 세부사항에서 다양한 변경들이 이루어질 수 있다는 것을 당업자는 이해할 것이다. 또한, 본 발명의 요소들이 단수로 기재 또는 청구되었지만, 단수로의 제한이 명시적으로 언급되지 않는다면, 복수가 고려된다.

Claims (20)

  1. 다수의 애플리케이션 스레드들에 의해 액세스되는, 계속 변하는 데이터세트를 계속 업데이트하는 시스템으로서,
    계속 변하는 제 1 데이터세트를 선택적으로 제어하도록 구성된 제 1 서버; 및
    상기 제 1 데이터세트로의 포함을 위해 상기 제 1 서버에 제 2 데이터세트로부터의 새로운 데이터를 선택적으로 전송하도록 구성된 제 2 서버로서, 상기 새로운 데이터는 별개의 순서화된 블록들로 구성되는, 상기 제 2 서버를 포함하며,
    상기 제 1 서버는,
    상기 제 2 데이터세트 내에 보유된 데이터 블록들의 순서화 정보를 포함하는 데이터-인덱스 테이블;
    상기 제 2 서버로부터 상기 제 1 서버에서 새로운 데이터 블록들이 수신됨에 따라 업데이트되는 상기 데이터-인덱스 테이블을 업데이트하는 수단;
    체크포인팅 캐시; 및
    체크포인팅 스레드를 포함하며,
    상기 체크포인팅 스레드는,
    적어도, 상기 제 2 서버로부터 상기 제 1 서버에서 수신되는 새로운 데이터 블록들의 순서화 정보를 상기 체크포인팅 캐시 내에 배치하고,
    상기 제 1 데이터세트 내에 포함될 새로운 데이터의 각각의 블록에 대해, 상기 데이터-인덱스 테이블에서의 순서화 정보를 상기 체크포인팅 캐시에서의 데이터 블록에 대한 순서화 정보와 비교하고,
    상기 비교가 정확한 (correct) 순서화 정보를 나타낼 시에, 상기 데이터 블록을 상기 제 1 데이터세트 내에 포함시키고,
    상기 비교가 부정확한 (incorrect) 순서화 정보를 나타낼 시에, 상기 데이터 블록을 폐기하고, 상기 체크포인팅 캐시로부터 정확한 순서의 데이터 블록을 대기하도록 구성되는, 데이터세트를 계속 업데이트하는 시스템.
  2. 제 1 항에 있어서,
    상기 체크포인팅 스레드는 또한, 정확한 순서화 정보를 갖는 데이터 블록을 상기 제 1 서버의 메모리 내에 배치하도록 구성되는, 데이터세트를 계속 업데이트하는 시스템.
  3. 제 1 항에 있어서,
    상기 제 1 서버는 또한, 상기 제 2 서버로부터 새로운 데이터를 선택적으로 요청하도록 구성되는, 데이터세트를 계속 업데이트하는 시스템.
  4. 제 1 항에 있어서,
    상기 비교가 상기 제 1 데이터세트 내에 포함될 데이터 블록에 대한 부정확한 순서화 정보를 나타낼 시에, 상기 체크포인팅 스레드는 또한, 상기 제 2 서버로부터 정확한 순서의 데이터 블록을 요청하도록 구성되는, 데이터세트를 계속 업데이트하는 시스템.
  5. 제 1 항에 있어서,
    상기 제 1 데이터세트는 무선 통신 디바이스들의 통신 그룹에 대한 그룹 아이덴티티 데이터베이스인, 데이터세트를 계속 업데이트하는 시스템.
  6. 제 5 항에 있어서,
    상기 제 1 서버는 상기 무선 통신 디바이스들의 통신 그룹에 대한 그룹 통신 서버인, 데이터세트를 계속 업데이트하는 시스템.
  7. 제 5 항에 있어서,
    상기 애플리케이션 스레드들은 상기 무선 통신 디바이스들의 통신 그룹들에 대한 그룹 통신들을 설정하기 위해 상기 제 1 데이터세트에 액세스하는, 데이터세트를 계속 업데이트하는 시스템.
  8. 다수의 애플리케이션 스레드들에 의해 액세스되는, 계속 변하는 데이터세트를 계속 업데이트하는 방법으로서,
    계속 변하는 제 1 데이터세트를 선택적으로 제어하도록 구성된 제 1 서버에서 제 2 데이터세트로부터의 별개의 순서화된 블록들로 구성된 새로운 데이터를 수신하는 단계로서, 상기 제 1 서버는 상기 제 2 데이터세트 내에 보유된 데이터 블록들의 순서화 정보를 포함하는 데이터-인덱스 테이블 및 체크포인팅 캐시를 포함하는, 상기 수신하는 단계;
    상기 제 1 서버에서 새로운 데이터 블록들이 수신됨에 따라 상기 데이터-인덱스 테이블을 업데이트하는 단계;
    적어도, 상기 새로운 데이터 블록들의 순서화 정보를 상기 체크포인팅 캐시 내에 배치하는 단계;
    상기 제 1 데이터세트 내에 포함될 새로운 데이터의 각각의 블록에 대해, 상기 데이터-인덱스 테이블에서의 데이터 블록의 순서화 정보를 상기 체크포인팅 캐시에서의 데이터 블록에 대한 순서화 정보와 비교하는 단계; 및
    상기 비교가 상기 제 1 데이터세트 내에 포함될 데이터 블록의 순서에 대한 정확한 (correct) 순서화 정보를 나타낼 시에, 상기 제 1 데이터세트에 상기 데이터 블록을 포함시키고,
    상기 비교가 상기 제 1 데이터세트 내에 포함될 데이터 블록에 대한 부정확한 (incorrect) 순서화 정보를 나타낼 시에, 상기 데이터 블록을 폐기하고, 상기 체크포인팅 캐시로부터 정확한 순서의 데이터 블록을 대기하는 단계를 포함하는, 데이터세트를 계속 업데이트하는 방법.
  9. 제 8 항에 있어서,
    정확한 순서화 정보를 갖는 데이터 블록을 상기 제 1 서버의 메모리 내에 배치하는 단계를 더 포함하는, 데이터세트를 계속 업데이트하는 방법.
  10. 제 8 항에 있어서,
    제 2 서버에서의 상기 제 2 데이터세트로부터 새로운 데이터를 선택적으로 요청하는 단계를 더 포함하는, 데이터세트를 계속 업데이트하는 방법.
  11. 제 10 항에 있어서,
    상기 비교가 상기 제 1 데이터세트 내에 포함될 데이터 블록에 대한 부정확한 순서화 정보를 나타낼 시에, 상기 제 2 서버로부터 정확한 순서의 데이터 블록을 요청하는 단계를 더 포함하는, 데이터세트를 계속 업데이트하는 방법.
  12. 제 8 항에 있어서,
    상기 제 1 데이터세트는 무선 통신 디바이스들의 통신 그룹에 대한 그룹 아이덴티티 데이터베이스이며,
    상기 무선 통신 디바이스들의 통신 그룹들에 대한 그룹 통신들을 설정하기 위해 하나 이상의 애플리케이션 스레드들에 의해 상기 제 1 데이터세트에 액세스하는 단계를 더 포함하는, 데이터세트를 계속 업데이트하는 방법.
  13. 계속 업데이트되고 변하는 상주 데이터세트를 선택적으로 제어하도록 구성된 서버로서,
    제 2 데이터세트 내에 보유된 데이터 블록들의 순서화 정보를 포함하는 데이터-인덱스 테이블;
    체크포인팅 캐시; 및
    체크포인팅 스레드를 포함하며,
    상기 체크포인팅 스레드는,
    적어도, 제 2 서버로부터 제 1 서버에서 수신되는 새로운 데이터 블록들의 순서화 정보를 상기 체크포인팅 캐시 내에 배치하고,
    제 1 데이터세트 내에 포함될 새로운 데이터의 각각의 블록에 대해, 상기 데이터-인덱스 테이블에서의 순서화 정보를 상기 체크포인팅 캐시에서의 데이터 블록에 대한 순서화 정보와 비교하고,
    상기 비교가 정확한 (correct) 순서화 정보를 나타낼 시에, 상기 데이터 블록을 상기 제 1 데이터세트 내에 포함시키며,
    상기 비교가 부정확한 (incorrect) 순서화 정보를 나타낼 시에, 상기 데이터 블록을 폐기하고, 상기 체크포인팅 캐시로부터 정확한 순서의 데이터 블록을 대기하도록 구성되는, 상주 데이터세트를 선택적으로 제어하도록 구성된 서버.
  14. 제 13 항에 있어서,
    상기 체크포인팅 스레드는 또한, 정확한 순서화 정보를 갖는 데이터 블록을 상기 서버의 메모리 내에 배치하도록 구성되는, 상주 데이터세트를 선택적으로 제어하도록 구성된 서버.
  15. 제 13 항에 있어서,
    상기 제 1 서버는 또한, 상기 제 2 서버로부터 새로운 데이터를 선택적으로 요청하도록 구성되는, 상주 데이터세트를 선택적으로 제어하도록 구성된 서버.
  16. 제 15 항에 있어서,
    상기 비교가 상기 제 1 데이터세트 내에 포함될 데이터 블록에 대한 부정확한 순서화 정보를 나타낼 시에, 상기 체크포인팅 스레드는 또한, 상기 제 2 서버로부터 정확한 순서의 데이터 블록을 요청하도록 구성되는, 상주 데이터세트를 선택적으로 제어하도록 구성된 서버.
  17. 제 13 항에 있어서,
    상기 제 1 데이터세트는 무선 통신 디바이스들의 통신 그룹에 대한 그룹 아이덴티티 데이터베이스인, 상주 데이터세트를 선택적으로 제어하도록 구성된 서버.
  18. 제 13 항에 있어서,
    상기 제 1 서버는 무선 통신 디바이스들의 통신 그룹에 대한 그룹 통신 서버인, 상주 데이터세트를 선택적으로 제어하도록 구성된 서버.
  19. 제 17 항에 있어서,
    상기 무선 통신 디바이스들의 통신 그룹들에 대한 그룹 통신들을 설정하기 위해, 애플리케이션 스레드들이 상기 제 1 데이터세트에 액세스하는, 상주 데이터세트를 선택적으로 제어하도록 구성된 서버.
  20. 계속 업데이트되고 변하는 데이터세트를 선택적으로 제어하도록 구성된 서버로서,
    상기 서버 상에 상주하는 복수의 상주 애플리케이션 스레드들을 제어하는 수단;
    체크포인팅 데이터를 저장하는 수단;
    데이터-인덱스를 저장하는 수단;
    적어도, 상기 애플리케이션 스레드들을 제어하는 수단에 의해 계속 액세스되는 제 1 데이터세트를 저장하는 수단;
    제 2 데이터세트로부터의 데이터 블록들로 적어도 주기적으로 상기 제 1 데이터세트를 업데이트하는 수단으로서, 상기 데이터-인덱스를 저장하는 수단은, 상기 서버에서 새로운 데이터 블록들이 수신됨에 따라 상기 데이터-인덱스를 업데이트하는 수단을 포함하고, 상기 데이터-인덱스는 상기 제 2 데이터세트 내에 보유된 데이터 블록들의 순서화 정보를 포함하고, 상기 체크포인팅 데이터를 저장하는 수단은, 상기 제 2 데이터세트로부터의 데이터 블록들의 순서화 정보를 저장하는 수단을 포함하는, 상기 제 1 데이터세트를 업데이트하는 수단; 및
    상기 데이터-인덱스를 저장하는 수단에서의 데이터 블록의 순서화 정보를 상기 체크포인팅 데이터를 저장하는 수단에서의 데이터 블록에 대한 순서화 정보와 비교하는 수단을 포함하며,
    상기 제 1 데이터세트 내에 포함될 새로운 데이터의 각각의 블록에 대해, 상기 비교가 상기 제 1 데이터세트 내에 포함될 데이터 블록의 순서에 대한 정확한 (correct) 순서화 정보를 나타낼 시에, 상기 제 1 데이터세트를 업데이트하는 수단은, 상기 데이터 블록으로 상기 제 1 데이터세트를 업데이트하며,
    상기 비교가 상기 제 1 데이터세트 내에 포함될 데이터 블록에 대한 부정확한 (incorrect) 순서화 정보를 나타낼 시에, 상기 제 1 데이터세트를 업데이트하는 수단은, 상기 데이터 블록을 폐기하고, 상기 체크포인팅 데이터를 저장하는 수단으로부터 정확한 순서의 데이터 블록을 대기하는, 데이터세트를 선택적으로 제어하도록 구성된 서버.
KR1020117001130A 2008-06-17 2009-06-09 무선 통신 디바이스들 간의 그룹 통신들을 지원하는 개선된 데이터베이스 아키텍처 KR101321664B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/140,981 US8655833B2 (en) 2008-06-17 2008-06-17 Database architecture for supporting group communications among wireless communication devices
US12/140,981 2008-06-17
PCT/US2009/046673 WO2009155162A2 (en) 2008-06-17 2009-06-09 Improved database architecture for supporting group communications among wireless communication devices

Publications (2)

Publication Number Publication Date
KR20110020302A KR20110020302A (ko) 2011-03-02
KR101321664B1 true KR101321664B1 (ko) 2013-10-23

Family

ID=41395824

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117001130A KR101321664B1 (ko) 2008-06-17 2009-06-09 무선 통신 디바이스들 간의 그룹 통신들을 지원하는 개선된 데이터베이스 아키텍처

Country Status (6)

Country Link
US (1) US8655833B2 (ko)
EP (1) EP2300907A2 (ko)
JP (1) JP5341183B2 (ko)
KR (1) KR101321664B1 (ko)
CN (1) CN102067641A (ko)
WO (1) WO2009155162A2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8615678B1 (en) 2008-06-30 2013-12-24 Emc Corporation Auto-adapting multi-tier cache
US20110138177A1 (en) * 2009-12-04 2011-06-09 General Instrument Corporation Online public key infrastructure (pki) system
CA2795433A1 (en) 2010-04-15 2011-10-20 General Instrument Corporation Online secure device provisioning framework
JP5593841B2 (ja) * 2010-05-28 2014-09-24 富士通株式会社 データベース装置
MX2013013763A (es) * 2011-05-26 2014-07-30 Google Inc Metodo y sistema para proporcionar informacion contextual y permitir comunicacion de grupo para participantes en una conversacion.
CN103714090B (zh) * 2012-10-09 2018-04-10 阿里巴巴集团控股有限公司 多索引数据库事务处理方法及数据库
US9232431B2 (en) * 2012-12-19 2016-01-05 Marvell World Trade Ltd. Selective layer-2 flushing in mobile communication terminals
EP3110182A4 (en) * 2014-02-18 2017-09-27 Kyocera Corporation Communication system, server device, communication device, and communication method
US10691661B2 (en) * 2015-06-03 2020-06-23 Xilinx, Inc. System and method for managing the storing of data
US10733167B2 (en) 2015-06-03 2020-08-04 Xilinx, Inc. System and method for capturing data to provide to a data analyser
CN110019179A (zh) * 2017-07-31 2019-07-16 北京嘀嘀无限科技发展有限公司 更新索引库的方法及装置、电子设备、存储介质
CN113099397B (zh) * 2021-05-08 2022-05-17 儒安物联科技集团有限公司 一种基于ptt控制的多分组语音传输方法、终端及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004177995A (ja) * 2002-11-22 2004-06-24 Ntt Data Corp メッセージ到達順序保証方法、コンピュータ、メッセージ受信システム及びプログラム
US7065618B1 (en) * 2003-02-14 2006-06-20 Google Inc. Leasing scheme for data-modifying operations
US20080034164A1 (en) * 2005-06-29 2008-02-07 Jinquan Dai Methods, appartus, and systems for caching

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996013912A1 (en) * 1994-10-28 1996-05-09 Motorola Inc. Method of facilitating talkgroup communication in a peer-to-peer communication network
JP2904100B2 (ja) 1996-01-26 1999-06-14 日本電気株式会社 複数のデータベース間の整合方式
US6704737B1 (en) 1999-10-18 2004-03-09 Fisher-Rosemount Systems, Inc. Accessing and updating a configuration database from distributed physical locations within a process control system
GB2394816B (en) 1999-10-18 2004-08-11 Fisher Rosemount Systems Inc Accessing and updating a configuration database from distributed physical locations within a process control system
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US7418441B2 (en) * 2001-02-28 2008-08-26 International Business Machines Corporation Data loading from a remote data source record by record
JP4772197B2 (ja) 2001-03-23 2011-09-14 株式会社西部技研 ガス吸着濃縮装置
GB2374951B (en) * 2001-04-24 2005-06-15 Discreet Logic Inc Asynchronous database updates
JP2003244142A (ja) 2002-02-14 2003-08-29 Nec Corp Ipネットワークにおけるトラップ抜け検出方式及び検出方法
US7308607B2 (en) * 2003-08-29 2007-12-11 Intel Corporation Periodic checkpointing in a redundantly multi-threaded architecture
US7620660B2 (en) * 2005-06-30 2009-11-17 Microsoft Corporation Pre-image logging for database recovery
US7404041B2 (en) * 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core
JP2008059114A (ja) 2006-08-30 2008-03-13 Fujitsu Ltd Snmpを利用した自動ネットワーク監視システム
EP2003556A1 (fr) 2007-05-25 2008-12-17 Axalto SA Procédé de traitement par un dispositif électronique portable de commandes applicatives issues de canaux physiques, dispositif et système correspondants
US8015362B2 (en) * 2008-02-15 2011-09-06 International Business Machines Corporation Method and system for handling cache coherency for self-modifying code
US7934080B2 (en) * 2008-05-28 2011-04-26 Oracle America, Inc. Aggressive store merging in a processor that supports checkpointing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004177995A (ja) * 2002-11-22 2004-06-24 Ntt Data Corp メッセージ到達順序保証方法、コンピュータ、メッセージ受信システム及びプログラム
US7065618B1 (en) * 2003-02-14 2006-06-20 Google Inc. Leasing scheme for data-modifying operations
US20080034164A1 (en) * 2005-06-29 2008-02-07 Jinquan Dai Methods, appartus, and systems for caching

Also Published As

Publication number Publication date
CN102067641A (zh) 2011-05-18
WO2009155162A2 (en) 2009-12-23
US8655833B2 (en) 2014-02-18
KR20110020302A (ko) 2011-03-02
WO2009155162A3 (en) 2010-02-25
EP2300907A2 (en) 2011-03-30
JP2011524718A (ja) 2011-09-01
US20090313252A1 (en) 2009-12-17
JP5341183B2 (ja) 2013-11-13

Similar Documents

Publication Publication Date Title
KR101321664B1 (ko) 무선 통신 디바이스들 간의 그룹 통신들을 지원하는 개선된 데이터베이스 아키텍처
WO2016061898A1 (zh) 直播间的频道访问方法和系统
US9069835B2 (en) Organizing data in a distributed storage system
US8521783B2 (en) Highly reliable and scalable architecture for data centers
US8195130B2 (en) Visual voicemail network architecture
US20070288484A1 (en) Method and download agent for implementing parallel download
KR100984599B1 (ko) 어플리케이션 디스에이블/복원 관리를 위한 시스템 및 방법
KR101854365B1 (ko) 전화 번호 기반의 sns 계정 관리 시스템 및 방법
KR20110050424A (ko) 발명의 피어-투-피어 네트워크필드를 통해서 공유하는 인스톨된 게임 소프트웨어
US7840528B2 (en) System and method for integrating continuous synchronization on a host handheld device
US20120102556A1 (en) Method and System for Smart Card Migration
WO2018001063A1 (zh) 文件的发送方法、装置及系统
KR101475111B1 (ko) 무선 통신 디바이스 사이의 그룹 통신에서 통화 셋업 대기시간을 최소화하기 위한 시스템 및 방법
KR101184246B1 (ko) 하나 이상의 무선 통신 디바이스들로부터 데이터를 검색하는 방법 및 장치
US9338232B2 (en) Method and system for synchronizing status of member servers belonging to same replication group
US11470469B2 (en) Method, apparatus, computer program, and computer readable medium for managing subscription profile
CN110780944B (zh) 一种应用权限的启动方法、设备及机器可读存储介质
CN110049360B (zh) 跨平台内容控制方法、装置、终端、服务器及存储介质
WO2017045454A1 (zh) 一种实现终端接入的方法、装置和系统
CN108076130B (zh) 一种移动互联网跨平台用户管理方法及装置
US11582610B1 (en) Automated security control using log information
KR101758337B1 (ko) 메시지의 중복알림을 방지하는 방법, 저장 매체 및 이를 운용하는 사용자 장치
EP3378202B1 (en) Archiving messages without message copying
CN105009097A (zh) 消息发射装置、消息发射方法和消息发射程序
CN109992447A (zh) 数据复制方法、装置及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

Patent event date: 20110114

Patent event code: PA01051R01D

Comment text: International Patent Application

PA0201 Request for examination
PG1501 Laying open of application
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20120731

Patent event code: PE09021S01D

PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20130228

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20130830

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20131017

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20131017

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20160929

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20170929

Start annual number: 5

End annual number: 5

LAPS Lapse due to unpaid annual fee