KR20080047162A - P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법 - Google Patents

P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법 Download PDF

Info

Publication number
KR20080047162A
KR20080047162A KR1020060117171A KR20060117171A KR20080047162A KR 20080047162 A KR20080047162 A KR 20080047162A KR 1020060117171 A KR1020060117171 A KR 1020060117171A KR 20060117171 A KR20060117171 A KR 20060117171A KR 20080047162 A KR20080047162 A KR 20080047162A
Authority
KR
South Korea
Prior art keywords
peer
request message
query
parameter
query statement
Prior art date
Application number
KR1020060117171A
Other languages
English (en)
Other versions
KR101305397B1 (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 엔에이치엔(주)
Priority to KR1020060117171A priority Critical patent/KR101305397B1/ko
Publication of KR20080047162A publication Critical patent/KR20080047162A/ko
Application granted granted Critical
Publication of KR101305397B1 publication Critical patent/KR101305397B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/108Transfer of content, software, digital rights or licenses
    • G06F21/1085Content sharing, e.g. peer-to-peer [P2P]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 P2P 시스템에서의 피어 관리 서버에 관한 것으로서, 본 발명의 피어 관리 서버는 P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 피어 등록 요청 메시지를 수신할 경우, 해당 피어에 랜덤 번호 아이디를 부여하며 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스-상기 파라미터는 적어도 피어의 주소 및 상기 랜덤 번호 아이디를 포함함; 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 쿼리문으로 변환하는 SQL 맵 프로세스; 상기 SQL 맵 프로세스의 쿼리문에 따라 상기 피어 주소 및 랜덤 번호 아이디를 저장하는 피어 데이터베이스를 포함하되, 피어 선택을 요청받을 경우, 상기 프론트 엔드 프로세스는 번호 선택을 위한 특정 범위가 지정된 파라미터를 상기 SQL 맵 프로세스에 제공하며, 상기 SQL 맵 프로세스는 상기 파라미터에 지정된 범위의 피어를 선택하는 쿼리문을 생성한다.
P2P, 데이터베이스, 랜덤

Description

P2P 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버 및 피어 관리 방법 {Peer Management Server in P2P System and Peer Management Method}
도 1은 종래의 피어 정보를 관리하는 트리 구조의 자료 구조 일례를 도시한 도면.
도 2는 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버가 적용되는 P2P 시스템의 구성을 도시한 도면.
도 3은 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버의 구성을 도시한 블록도.
도 4는 본 발명의 바람직한 일 실시예에 따른 에이전트 프로그램의 모듈 구성을 도시한 블록도.
도 5는 본 발명의 바람직한 일 실시예에 따른 프론트 엔드 프로세스의 모듈 구성을 도시한 블록도.
도 6은 본 발명의 일 실시예에 따른 P2P 시스템의 전체적인 동작을 도시한 순서도.
도 7은 본 발명의 일 실시예에 따른 SQL 맵 프로세스의 동작 구조를 도시한 도면.
도 8은 본 발명의 일 실시예에 따른 SQL 맵 프로세스와 데이터베이스와의 연결 구조의 일례을 도시한 도면.
도 9는 본 발명의 바람직한 일 실시예에 따른 피어 등록 과정을 도시한 순서도.
도 10은 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버에서 피어 정보를 제공하는 과정을 도시한 순서도.
도 11은 본 발명의 바람직한 일 실시예에 따른 사용자가 요청한 컨텐츠를 보유한 피어를 랜덤하게 선택하기 위한 과정을 도시한 순서도.
도 12는 본 발명의 일 실시예에 따른 피어 등록 요청 메시지의 필드 구성을 도시한 도면.
본 발명은 P2P 시스템의 피어 관리 서버에 관한 것으로서, 보다 상세하게는 피어들간의 파일 송수신을 위해 피어 정보를 제공하는 피어 관리 서버 및 이를 피어 관리 방법에 관한 것이다.
P2P 시스템은 기존의 클라이언트-서버 개념을 벗어나 개인 컴퓨터(피어)끼리 직접 연결하고 검색함으로써 모든 참여자가 공급자인 동시에 수요자가 되는 형태의 통신 시스템이다.
이러한 P2P 시스템은 미국의 냅스터와 국내의 소리바다와 같은 서비스에 의해 음악 파일 공유를 위해 처음 시도되었으며, 근래에는 단순한 음악 파일 공유가 아닌 다양한 서비스에서 이용되고 있다.
예를 들어, P2P 시스템은 게임 시스템에서 클라이언트들 사이의 게임 패킷 교환에도 사용되고 있으며, 컨텐츠 제공업자가 서버의 부담을 경감하기 위한 방편으로도 활용되고 있다.
이러한 P2P 시스템은 개인 클라이언트들끼리의 연결을 위해 피어 정보를 제공하여야 하며, P2P 서비스 프로바이더는 피어 관리 서버를 이용하여 P2P 시스템에 접속한 피어들의 정보를 관리한다.
종래의 경우, P2P 시스템에 접속한 피어들의 정보는 트리 구조의 자료 구조에 의해 관리되는 것이 일반적이었다. 도 1은 종래의 피어 정보를 관리하는 트리 구조의 자료 구조 일례를 도시한 도면이다.
도 1에 도시된 바와 같이, 종래에는 부(parent) 노드와 자(Child) 노드가 유기적으로 연결된 트리 구조 리스트에 의해 접속한 피어들의 정보가 관리되었으며, 피어의 접속 및 해제를 처리하는 알고리즘에 의해 피어 정보가 갱신되었다.
이와 같이, 자료 구조에 의해 접속한 피어들의 정보가 관리될 경우 접속한 피어 정보의 일부가 유실되는 문제점이 있었으며, 피어 정보를 데이터베이스가 아닌 자료 구조에 의해 관리함으로써 서버의 메모리 공간을 지나치게 많이 차지하는 문제점이 있었다.
특히, 관리해야하는 피어 정보가 늘어날 경우에 서버의 메모리 공간은 한계 가 있는 바 자료 구조에 의해 피어 정보를 관리하는 것은 비효율적이었다.
종래에는 사용자 아이디와 신상 정보와 같이 정적인 정보만이 데이터베이스에 의해 관리되었으나, 피어 정보를 보다 효율적으로 처리하기 위해 데이터베이스에서 피어 정보를 관리하고 데이터베이스에서 피어 정보를 관리할 경우의 효율적인 처리를 위한 서버 프로세스가 요구되고 있다.
아울러, 데이터베이스에서 피어 정보가 관리될 경우 데이터베이스의 특성상 특정 피어를 랜덤하게 선택할 수 없는 바 피어들간의 커넥션이 균일하게 유지되지 않고 특정 피어에 커넥션이 편중될 가능성 역시 존재한다.
본 발명에서는 상기한 바와 같은 종래 기술의 문제점을 해결하기 위해, P2P 시스템에 접속한 피어 정보를 데이터베이스에 의해 효율적으로 관리할 수 있는 P2P 시스템에서의 피어 관리 서버를 제안하고자 한다.
본 발명의 다른 목적은 피어 정보가 데이터베이스에서 관리되더라도 특정 피어에 커넥션이 편중되지 않고 커넥션이 균일하게 분포될 수 있도록 피어를 랜덤하게 선택할 수 있는 P2P 시스템에서의 피어 관리 서버를 제안하는 것이다.
상기한 바와 같은 목적을 달성하기 위하여, 본 발명의 일 측면에 따르면, P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 피어 등록 요 청 메시지를 수신할 경우, 해당 피어에 랜덤 번호 아이디를 부여하며 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스-상기 파라미터는 적어도 피어의 주소 및 상기 랜덤 번호 아이디를 포함함; 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 쿼리문으로 변환하는 SQL 맵 프로세스; 상기 SQL 맵 프로세스의 쿼리문에 따라 상기 피어 주소 및 랜덤 번호 아이디를 저장하는 피어 데이터베이스를 포함하되, 피어 선택을 요청받을 경우, 상기 프론트 엔드 프로세스는 번호 선택을 위한 특정 범위가 지정된 파라미터를 상기 SQL 맵 프로세스에 제공하며, 상기 SQL 맵 프로세스는 상기 파라미터에 지정된 범위의 피어를 선택하는 쿼리문을 생성하는 P2P 시스템에서의 피어 관리 서버가 제공된다.
상기 피어 등록 요청 메시지에 상응하는 파라미터는 피어가 보유한 컨텐츠 정보를 더 포함할 수 있다.
사용자 클라이언트로부터 특정 컨텐츠를 요청하는 컨텐츠 요청 메시지를 수신할 경우, 상기 SQL 맵 프로세스는 상기 특정 범위의 번호를 가지는 피어를 선택하는 쿼리문을 생성하며, 상기 쿼리문은 상기 특정 컨텐츠 정보를 포함한다.
상기 특정 범위는 상기 프론트 엔드 프로세스에서 랜덤하게 지정될 수도 있으며, 프론트 엔드 프로세스에 미리 설정되어 있을 수도 있다.
상기 피어들에는 상기 피어 관리 서버 및 다른 피어와의 통신을 위한 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 피어가 다운로드 상태인지 여 부를 판단하여 피어를 액티브 피어로 등록하기 위한 피어 등록 요청 메시지 및 피어 등록 해제 요청 메시지를 전송한다.
상기 SQL 맵 프로세스는 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 XML 문서로 저장한다.
본 발명의 다른 측면에 따르면, P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 피어 등록 요청 메시지를 수신할 경우, 해당 피어에 순차적으로 번호 아이디를 부여하며 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스-상기 파라미터는 적어도 피어의 주소 및 상기 번호 아이디를 포함함-; 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 쿼리문으로 변환하는 SQL 맵 프로세스; 상기 SQL 맵 프로세스의 쿼리문에 따라 상기 피어 주소 및 번호 아이디를 저장하는 피어 데이터베이스를 포함하되, 피어 선택을 요청받을 경우, 상기 프론트 엔드 프로세스는 번호 선택을 위해 랜덤하게 설정된 범위를 지정한 파라미터를 상기 SQL 맵 프로세스에 제공하며, 상기 SQL 맵 프로세스는 상기 파라미터에 지정된 범위의 피어를 선택하는 쿼리문을 생성하는 P2P 시스템에서의 피어 관리 서버가 제공된다.
본 발명의 또 다른 측면에 따르면, P2P 시스템에서 피어 정보 관리 방법으로서, P2P 시스템에 접속한 피어로부터 등록 요청 메시지를 수신하는 단계(a); 상기 피어에 랜덤 번호 아이디를 부여하며, 상기 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 단계(b)-상기 파라미터는 적어도 피어의 주소 및 상기 랜 덤 번호 아이디를 포함함-; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 이용하여 상기 등록 요청 메시지에 상응하는 쿼리문을 생성하는 단계(c); 상기 쿼리문에 의해 피어 정보 데이터베이스에 상기 피어를 액티브 피어로 등록하는 단계(d); 및 피어 선택을 요청받을 경우, 번호 선택을 위한 특정 범위가 지정된 파라미터를 생성하고 상기 특정 범위의 피어를 선택하는 쿼리문을 생성하는 단계를 포함하는 P2P 시스템에서 피어 관리 방법이 제공된다.
본 발명의 또 다른 측면에 따르면, P2P 시스템에서 피어 정보 관리 방법으로서, P2P 시스템에 접속한 피어로부터 등록 요청 메시지를 수신하는 단계(a); 상기 피어에 순차적으로 번호 아이디를 부여하며, 상기 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 단계(b)-상기 파라미터는 적어도 피어의 주소 및 상기 번호 아이디를 포함함-; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 이용하여 상기 등록 요청 메시지에 상응하는 쿼리문을 생성하는 단계(c); 상기 쿼리문에 의해 피어 정보 데이터베이스에 상기 피어를 액티브 피어로 등록하는 단계(d); 및 피어 선택을 요청받을 경우, 번호 선택을 위해 랜덤하게 범위가 지정된 파라미터를 생성하고 상기 랜덤하게 설정된 범위의 피어를 선택하는 쿼리문을 생성하는 단계를 포함하는 것을 특징으로 하는 P2P 시스템에서 피어 관리 방법이 제공된다.
이하에서, 첨부된 도면을 참조하여 본 발명에 의한 피어 관리 서버의 바람직한 실시예를 상세히 설명한다.
도 2는 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버가 적용되는 P2P 시스템의 구성을 도시한 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 P2P 시스템은 복수의 사용자 클라이언트 및 피어 관리 서버(200)를 포함하며 각각의 사용자 클라이언트에는 P2P 에이전트 프로그램이 설치된다.
본 발명이 적용되는 P2P 시스템은 다양한 형태의 P2P 서비스에 적용될 수 있다. 본 발명의 P2P 시스템은 일반적인 음악 또는 동영상 파일의 파일 공유 서비스에 적용될 수 있다. 파일 공유 서비스는 사용자들이 가지고 있는 파일 목록을 P2P 서비스 시스템에 접속한 사용자들이 확인할 수 있고 특정 파일을 특정 피어로부터 다운받을 수 있도록 한 서비스이다.
이러한 일반적인 파일 공유 서비스 이외에도 본 발명은 P2P를 이용한 컨텐츠 전송 서비스에도 이용될 수 있다. 통상적으로 컨텐츠 제공 업체에서의 컨텐츠 제공은 CDN(Contents Delivery Network)를 이용하여 이루어지나, 본 발명에 의한 P2P 시스템을 이용하여 소정의 비용이 소요되는 CDN을 이용하지 않고 컨텐츠를 제공하는 것이 가능하다. 이 경우, 사용자가 서비스 제공 업체로부터 제공받으려는 컨텐츠를 저장하고 있는 피어 목록이 컨텐츠를 요청한 사용자에게 제공되며, 사용자는 피어 목록에 포함된 피어들 중 특정 피어로부터 컨텐츠를 다운로드함으로써 CDN을 이용하지 않고 컨텐츠를 제공하는 것이 가능하다.
상술한 서비스 이외에도 본 발명은 P2P를 이용하여 제공될 수 있는 다양한 서비스들에 적용될 수 있을 것이다.
이하에서는 P2P를 이용하여 컨텐츠 제공 업체가 사용자가 요청한 컨텐츠를 제공하는 경우를 주요한 예로 하여 본 발명을 설명하기로 한다.
사용자 클라이언트는 네트워크를 통해 통신 가능하고 P2P 에이전트 프로그램이 구동 가능한 어떠한 종류의 장치도 포함할 수 있다. 사용자 클라이언트로는 일반적인 PC는 물론 노트북, PDA 및 이동통신 단말기와 같은 장치가 사용될 수 있을 것이다.
P2P 시스템에 접속한 각각의 사용자 클라이언트는 하나의 피어로서 동작하며, 본 명세서에서 피어와 사용자 클라이언트란 용어를 혼용하여 사용하기로 한다.
피어 관리 서버(200)는 사용자가 특정 컨텐츠를 요청할 경우, 사용자가 요청한 컨텐츠를 제공할 수 있는 피어 정보를 제공하는 기능을 한다. 예를 들어, 사용자가 "물랑루즈"라는 영화를 요청할 경우, 피어 관리 서버(200)는 "물랑루즈"라는 영화 파일을 제공할 수 있는 피어 정보를 추출하여 해당 클라이언트에 제공하는 기능을 한다.
피어 관리 서버(200)는 사용자가 요청한 컨텐츠를 제공할 수 있는 피어 정보를 제공하기 위해 P2P 시스템에 접속하여 컨텐츠 제공이 가능한 피어 리스트 및 각 피어가 저장하고 있는 컨텐츠 정보를 관리한다.
전술한 바와 같이, 종래의 경우 피어 관리 서버는 P2P 시스템에 접속한 피어 리스트 및 각 피어가 저장하고 있는 컨텐츠 정보를 자료 구조의 형태로 관리하였다. 종래의 경우, 피어 리스트 및 각 피어가 저장하고 있는 컨텐츠를 자료 구조의 형태로 메모리에서 관리하였으며, 사용자 아이디와 같이 변하지 않는 정적인 정보 정도만을 데이터베이스에 관리하는 것이 일반적이었다. 또한, 피어 정보 메세지와 같이 사용자로부터 요청 메시지가 수신되는 경우, 피어 관리 서버는 자료 구조에 대해 미리 설정된 알고리즘을 수행하여 사용자의 요청 정보를 처리하였다.
그러나, 본 발명의 바람직한 실시예에 따른 피어 관리 서버는 P2P 시스템에 접속한 피어 리스트 및 각 피어가 저장하고 있는 컨텐츠 정보를 데이터베이스에서 관리하도록 한다.
본 발명의 바람직한 실시예에 따르면, 피어 정보를 데이터베이스에서 관리함으로써 관리하여야 할 피어 용량이 증가할 경우 다수의 데이터베이스에서 피어 정보를 관리하는 것이 가능하다.
또한, 본 발명의 바람직한 실시예에 따른 피어 관리 서버는 접속한 피어들의 정보를 데이터베이스에서 관리하기 위해 클라이언트 접속 및 클라이언트로부터의 메시지를 처리하는 프로세스와 데이터베이스의 쿼리문을 생성하는 프로세스를 독립적으로 운영한다.
피어 정보를 자료 구조를 이용하여 관리하던 종래의 경우, 클라이언트 접속 및 메시지 처리와 자료 구조에 데이터를 삽입, 추출 및 갱신하는 알고리즘은 하나의 프로세스에 의해 수행될 수밖에 없었다. 아울러, 종래의 경우 정적인 정보는 데이터베이스에서 관리되었으나, 데이터베이스에 대한 쿼리문 역시 동일한 단일의 프로세스에 의해 생성되었다. 그러나, 본 발명의 바람직한 실시예에 따르면, 이와 같이 하나의 프로세스에 의해 수행되던 기능이 별개의 프로세스에 의해 수행되도록 한다.
사용자 접속과 메시지 처리 및 데이터베이스 쿼리문 생성을 별도의 프로세스에 의해 처리하는 보다 상세한 방법 및 이로 인한 장점은 다른 도면들을 참조하여 설명하기로 한다.
각 사용자 클라이언트들에 설치되는 에이전트 프로그램은 사용자가 클라이언트가 P2P 네트워크에서 피어로 동작할 수 있도록 피어 관리 서버와의 통신을 통해 피어 등록을 수행한다.
본 발명의 바람직한 실시예에 따르면, 에이전트 프로그램은 사용자 클라이언트가 다른 피어로부터 컨텐츠를 다운로드하고 있는 경우에만 피어로서 동작하도록 피어 등록 및 피어 등록 해제를 수행한다.
종래의 경우, P2P를 위해 사용자 클라이언트에 설치되는 에이전트 프로그램은 사용자 클라이언트의 동작 중 사용자 클라이언트가 항상 컨텐츠를 제공하는 피어로서 동작하도록 제어하는 것이 일반적이었다.
그러나, 이와 같이 사용자 클라이언트가 항상 피어로서 동작하도록 설정될 경우, 사용자 클라이언트의 리소스가 P2P 통신에 의해 과도하게 낭비되는 문제점이 있었다. 예를 들어, P2P 커넥션의 처리로 인해 사용자가 수행하는 다른 작업의 처리가 지연되거나 CPU에 과도한 부하가 발생하는 문제점 등이 발생하였다.
본 발명에서는 이와 같은 종래의 문제점을 해결하기 위해 사용자 클라이언트가 다른 피어로부터 컨텐츠를 다운로드 중인 경우에만 다른 클라이언트들에 컨텐츠를 제공하는 피어로서 동작할 수 있도록 한다.
상술한 피어 등록 동작 이외에도, 에이전트 프로그램은 피어 관리 서버로부 터 사용자가 요청한 컨텐츠를 보유한 피어 정보를 수신하고, 해당 피어와 연결을 설정하여 컨텐츠를 다운로드하는 기능을 수행한다.
도 3은 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버의 구성을 도시한 블록도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 피어 관리 서버는 상태 판단부(300), 프로세스 생성 제어부(302), 프론트 엔드 프로세스(304), SQL 맵 프로세스(306) 및 피어 데이터베이스(308)를 포함할 수 있다.
도 3에서, 프론트 엔드 프로세스(304)는 각 피어에 설치되는 에이전트 프로그램과의 통신을 담당한다. 프론트 엔드 프로세스(304)는 사용자 클라이언트가 연결 설정을 요청할 경우 연결 설정을 처리하는 기능을 한다. 프론트 엔드 프로세스(304)는 사용자 클라이언트들과의 커넥션을 유지하며, 여기서 커넥션은 TCP 커넥션인 것이 바람직하며 필요에 따라 UDP 커넥션을 유지할 수도 있다.
또한, 프론트 엔드 프로세스(304)는 각 피어에 설치된 에이전트 프로그램으로부터 요청 메시지를 수신하며, 수신한 요청 메시지를 처리한다. 프론트 엔드 프로세스(304)가 에이전트 프로그램으로부터 수신하는 요청 메시지는 피어 등록 요청 메시지, 피어 등록 해제 요청 메시지 및 컨텐츠 요청 메시지를 포함할 수 있다.
피어 등록 요청 메시지는 피어가 자신을 컨텐츠를 제공할 수 있는 액티브 피어로 등록하도록 요청하는 메시지이다. 전술한 바와 같이, 본 발명의 바람직한 실시예에 따르면, 에이전트 프로그램은 사용자가 다른 피어로부터 컨텐츠를 다운로드하는 것을 감지한 경우 피어 등록 요청 메시지를 생성하여 프론트 엔드 프로세 스(304)에 전송한다.
피어 등록 해제 요청 메시지는 자신을 액티브 피어로 등록한 피어가 등록에 대한 해제를 요청하는 메시지이다. 본 발명의 바람직한 실시예에 따르면, 에이전트 프로그램은 에이전트 프로그램이 다른 피어로부터 더 이상 컨텐츠를 다운로드하는 상태가 아닌 경우 피어 등록 해제 요청 메시지를 생성하여 프론트 엔드 프로세스(304)에 전송한다.
컨텐츠 요청 메시지는 특정 컨텐츠를 저장하고 있는 피어 정보를 요청하는 메시지이다. 사용자가 특정 컨텐츠의 다운로드를 요청하는 경우, 에이전트 프로그램은 해당 컨텐츠의 아이디 정보를 포함하는 컨텐츠 요청 메시지를 생성하여 프론트 엔드 프로세스(304)에 전송한다.
상술한 메시지들 이외에도 다양한 종류의 메시지들이 피어로부터 프론트 엔드 프로세스에 전달될 수 있으며, 프론트 엔드 프로세스(304)는 에이전트 프로그램에 의해 생성된 메시지들을 수신하고 이에 상응하는 쿼리명/파라미터를 생성하는 기능을 한다.
종래의 경우, 피어 관리 서버는 피어로부터 상술한 요청 메시지들을 수신할 경우 요청에 상응하는 알고리즘을 수행하여 자료 구조 데이터에 피어를 등록하거나 자료구조 데이터로부터 피어를 선택하는 기능을 수행하였다. 또한, 데이터베이스와의 통신이 필요한 경우, 사용자의 요청 메시지를 분석하여 하나의 프로세스에서 쿼리문을 생성하였다.
그러나, 본 발명의 바람직한 실시예에 따른 프론트 엔드 프로세스(304)는 요 청 메시지를 수신할 경우 직접 쿼리문을 생성하지는 않으며, 요청 메시지에 상응하는 쿼리명 및 파라미터만을 생성하여 SQL 맵 프로세스(306)에 제공한다.
여기서, 쿼리명은 프론트 엔드 프로스세스(304) 및 SQL 맵 프로세스(306) 사이에 임의로 정해진 쿼리의 명칭이며, 파라미터는 컨텐츠 아이디, 사용자 아이디 등과 같이 쿼리문 생성에 필요한 정보를 의미한다.
SQL 맵 프로세스(306)는 프론트 엔드 프로세스(304)로부터 쿼리명/파라미터를 수신하여 쿼리명/파라미터에 상응하는 쿼리문을 생성하는 기능을 한다. 생성된 쿼리문은 피어 데이터베이스(308)에서 인식 가능한 언어로서 피어 데이터베이스(308)에 제공된다.
이와 같이 사용자로부터의 요청 메시지를 수신하여 처리하는 프로세스와 사용자의 요청 메시지에 상응하는 프로세스를 분리하는 본 발명의 실시예는 다양한 장점을 가지고 있다.
우선, 메시지 및 커넥션 처리 프로세스와 쿼리 프로세스를 분리함으로써 서버의 상태에 따라 프로세스를 효율적으로 생성하는 것이 가능하다. 예를 들어, 커넥션 처리 및 메시지 처리 요청이 쿼리 요청에 비해 많을 경우 피어 관리 서버는 더 많은 수의 프론트 엔드 프로세스를 생성하여 운용할 수 있다. 또한, 메시지 처리에 비해 쿼리문 생성에 보다 많은 리소스가 소요되는 경우, 피어 관리 서버는 더 많은 수의 SQL 맵 프로세스를 생성하여 운용할 수 있다. 즉, 서버의 상태에 따라 프론트 엔드 프로세스 및 SQL 맵 프로세스를 적절히 생성함으로써 서버 제한된 리소스를 효율적으로 활용할 수 있다.
아울러, 데이터베이스가 변경되더라도 SQL 맵 프로세스만 갱신될 뿐 프론트 엔드 프로세스는 갱신될 필요가 없으므로 데이터베이스의 업데이트 시 소요되는 시간 및 비용이 절감될 수 있으며, 다수의 데이터베이스가 사용될 경우 이들에 대한 중앙 집중적인 관리가 용이해진다.
피어 데이터베이스(308)에는 SQL 맵 프로세스의 쿼리문에 따라 접속한 피어들의 정보가 추가/삭제/갱신된다. 본 발명의 일 실시예에 따르면, 피어 데이터베이스(308)에는 등록된 피어의 사용자 아이디, 피어 주소, 피어가 저장하고 있는 컨텐츠 정보가 저장될 수 있다. 또한 피어 데이터베이스(308)에는 각 피어별로 차후에 설명할 랜덤 아이디 정보가 저장된다.
상태 판단부(300)는 피어 관리 서버의 상태를 판단하는 기능을 하며, 여기서 상태 판단은 메시지 및 커넥션 처리를 위해 서버 리소스가 많이 소요되는지 또는 쿼리문 생성을 위해 서버 리소스가 많이 소요되는지 여부를 판단한다.
프로세서 생성 제어부(302)는 상태 판단부(300)의 판단 결과에 따라 프론트 엔드 프로세스(304) 또는 SQL 맵 프로세스(306)를 생성 또는 소멸시키는 기능을 한다.
도 3에는 피어 관리 서버가 프론트 엔드 프로세스 및 SQL 맵 프로세스를 모두 수행하는 경우가 도시되어 있으나, 프론트 엔드 프로세스 및 SQL 맵 프로세스가 별개의 서버에 의해서 수행되는 시스템이 구현될 수도 있다는 점은 당업자에게 있어 자명할 것이다.
도 4는 본 발명의 바람직한 일 실시예에 따른 에이전트 프로그램의 모듈 구 성을 도시한 블록도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 에이전트 프로그램은 다운로드 체크 모듈(400), 연결 설정 모듈(402), 피어 등록/해제 모듈(404), 피어 정보 수신 모듈(406), 피어 연결 설정 모듈(408) 및 컨텐츠 저장 모듈(410)을 포함할 수 있다.
다운로드 체크 모듈(400)은 에이전트 프로그램이 다른 피어로부터 컨텐츠를 다운로드하는 상태인지 여부를 체크하는 기능을 한다. 전술한 바와 같이, 본 발명의 바람직한 실시예에 따르면, 다운로드 상태인지 여부에 따라 피어가 액티브 또는 인액티브 상태로 등록되는 바 다운로드 체크 모듈(400)은 에이전트 프로그램이 다운로드 상태인지 여부를 지속적으로 체크한다.
연결 설정 모듈(402)은 피어 관리 서버와의 연결을 설정하는 기능을 한다. 통상적으로, P2P 에이전트 프로그램은 연결 설정 시 피어 등록 요청 메시지를 전송하나, 본 발명의 바람직한 실시예에 따르면, 연결 설정 모듈(402)은 피어 관리 서버와의 연결 설정만을 수행하며, 연결 설정 시 피어 등록 요청 메시지를 전송하지는 않는다. 전술한 바와 같이, 연결 설정 모듈(402)은 피어 관리 서버(402)와 TCP 연결 설정을 수행할 수 있으며, 필요에 따라 UDP 커넥션을 설정할 수도 있다.
피어 등록/해제 모듈(404)은 다운로드 체크 모듈(400)의 다운로드 체크 결과에 따라 피어 등록 요청 메시지 또는 피어 등록 해제 요청 메시지를 생성하여 전송하는 기능을 한다.
다운로드 체크 모듈(400)에서 다운로드 상태가 감지된 경우, 피어 등록/해제 모듈(404)은 피어 등록 요청 메시지를 피어 관리 서버에 전송하며 피어 관리 서버는 피어 등록 절차를 수행한다. 피어 등록 요청 시, 클라이언트에 저장된 컨텐츠 정보가 피어 등록 요청 메시지에 포함된다.
다운로드 체크 모듈(400)에서 다운로드 완료 상태가 감지된 경우, 피어 등록/해제 모듈(404)은 피어 등록 해제 요청 메시지를 피어 관리 서버에 전송하며, 피어 관리 서버는 피어 등록 해제 절차를 수행한다.
피어 정보 수신 모듈(406)은 피어 관리 서버에 컨텐츠를 요청하고 피어 관리 서버로부터 피어 정보를 수신하는 기능을 한다. 피어 정보 수신 모듈(406)은 컨텐츠 요청 메시지를 생성하여 피어 관리 서버에 전송하며, 컨텐츠 요청 메시지에는 컨텐츠를 식별할 수 있는 컨텐츠 아이디 정보가 포함된다. 피어 정보 수신 모듈(406)은 컨텐츠 요청 메시지에 응답하는 피어 정보를 피어 관리 서버로부터 수신한다. 여기서 피어 정보는 하나의 피어만을 포함할 수도 있으며 복수의 피어 리스트를 포함할 수도 있다.
피어 연결 설정 모듈(408)은 피어 정보 수신 모듈(406)이 수신한 피어 정보에 기초하여 컨텐츠를 수신할 피어와 연결을 설정하여 컨텐츠를 다운로드하는 기능을 한다. 피어와 연결을 설정하여 컨텐츠를 다운로드하는 것을 일반적인 P2P 기술이므로 이에 대한 상세한 설명은 생략하기로 한다.
컨텐츠 저장 모듈(410)은 다른 피어로부터 수신하는 컨텐츠 정보를 미리 설정된 영역에 저장하는 기능을 한다. 사용자가 수신한 컨텐츠를 불법적으로 유용하지 못하도록 컨텐츠 저장 모듈(410)은 수신한 컨텐츠를 암호화하여 저장하는 것이 바람직하다.
도 5는 본 발명의 바람직한 일 실시예에 따른 프론트 엔드 프로세스의 모듈 구성을 도시한 블록도이다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 프론트 엔드 프로세스는 인증 모듈(500), 연결 설정 모듈(502), 에이전트 통신 모듈(504), 랜덤 아이디 할당 모듈(506), 쿼리명/파라미터 생성 모듈(508) 및 랜덤 범위 설정 모듈(510)을 포함할 수 있다.
인증 모듈(500)은 연결 설정을 요청하는 사용자가 인증된 사용자인지 여부를 판단하는 기능을 한다. 일례로, 인증 모듈(500)은 사용자 아이디 및 비밀번호 정보를 이용하여 인증된 사용자인지 여부를 판단할 수 있다. 물론, 이와 달리 인증서를 이용한 인증 방식과 같이 공지된 다양한 인증 방식이 이용될 수 있다. 인증 모듈(500)은 별도의 인증 서버와 연동하여 사용자 인증을 처리할 수 있다.
연결 설정 모듈(502)은 P2P 네트워크에 접속하려는 사용자 클라이언트와의 연결 설정을 수행한다. 연결 설정은 에이전트 프로그램에 의해 제어되는 사용자 클라이언트가 TCP 접속 요청 메시지를 전송하고 연결 설정 모듈(502)이 이를 수락하는 방식으로 수행될 수 있다. 물론 필요에 따라 UDP 커넥션이 설정될 수도 있다.
에이전트 통신 모듈(504)은 에이전트 프로그램이 생성하는 요청 메시지들을 수신하고 이에 대한 응답 메시지를 사용자 클라이언트에 전송하는 기능을 한다. 전술한 바와 같이, 요청 메시지는 피어 등록 요청 메시지, 피어 등록 해제 요청 메시지 및 컨텐츠 요청 메시지를 포함할 수 있으며, 에이전트 통신 모듈(504)은 상술한 메시지들에 대한 응답 메시지를 해당 사용자 클라이언트에 전송한다.
랜덤 아이디 할당 모듈(506)은 피어 등록 요청 메시지를 수신할 경우 각 피어에 랜덤 아이디를 할당하는 기능을 한다. 랜덤 아이디 할당은 피어 정보를 클라이언트에 제공 시 랜덤하게 피어 정보를 제공하기 위해 수행되는 작업이다. 본 발명의 실시예에 따라 동적으로 변하는 피어 정보가 데이터베이스에 저장될 경우, 데이터베이스 쿼리문을 통해 사용자의 요청에 상응하는 피어 정보를 랜덤하게 추출하는 것이 불가능하다. 랜덤 아이디 할당 모듈(506)은 이와 같은 문제점을 해결하기 위한 작업이다.
랜덤 범위 설정 모듈(510)은 컨텐츠 요청 메시지와 같이 피어 선택을 요청하는 메시지가 수신될 경우, 피어 선택을 위한 번호 범위를 랜덤하게 설정하는 기능을 한다. 랜덤하게 설정된 범위는 파라미터로 출력되며, SQL 맵 프로세스는 피어 선택 시 랜덤 범위 설정 모듈에서 설정한 범위를 이용하여 피어 선택 쿼리문을 생성한다.
도 5에는 각 피어의 번호도 랜덤하게 부여하고 피어를 선택하기 위한 범위도 랜덤하게 설정하는 실시예가 도시되어 있다.
그러나, 피어의 번호는 순차적으로 부여하되 범위를 랜덤하게 설정하는 실시예 및 피어의 번호는 랜덤하게 부여하되 범위는 고정적으로 설정하는 실시예에 의해서도 피어의 랜덤 선택이 가능할 것이다.
피어의 랜덤 선택을 위한 보다 상세한 방법은 별도의 도면을 통해 설명하기로 한다.
쿼리명/파라미터 생성 모듈(508)은 에이전트 통신 모듈이 수신한 메시지 처리를 위한 쿼리명 및 파라미터를 생성한다. 전술한 바와 같이, 프론트 엔드 프로세스는 메시지 처리를 위한 쿼리문을 직접 생성하지는 않으며, 수신한 메시지에 상응하는 쿼리명 및 파라미터만을 생성하여 SQL 맵 프로세스에 전달한다.
예를 들어, 피어 등록 요청 메시지를 수신한 경우, 쿼리명/파라미터 생성 모듈(508)은 RegisterPeer라는 미리 설정된 쿼리명고 피어 등록 요청 메시지에 포함된 사용자 아이디, 주소 및 컨텐츠 정보에 상응하는 파라미터를 생성하여 SQL 맵 프로세스에 전달한다.
도 7은 본 발명의 일 실시예에 따른 SQL 맵 프로세스의 동작 구조를 도시한 도면이다.
도 7을 참조하면, SQL 맵 프로세스는 프론트 엔드 프로세스로부터 쿼리명 및 파라미터를 수신한다. 도 7에는 쿼리명 "GetUserInfo"와 파라미터 "junny"가 표시되어 있다.
이와 같이, SQL 맵 프로세스는 쿼리명 및 파라미터를 SQL문으로 매핑하기 위한 정보를 가지고 있으며, 쿼리명 및 파라미터를 수신한 SQL 맵 프로세스는 상기 매핑 정보를 이용하여 데이터베이스 랭귀지인 쿼리문을 출력한다.
이러한 쿼리문은 데이터베이스의 스키마 또는 객체들간의 관계를 정의하는 데이터베이스 정의문, 데이터베이스 데이터의 삽입/삭제/갱신과 같은 조작을 위한 데이터베이스 조작문, 데이터베이스의 데이터를 올바르게 유지하고 무결성을 확보하기 위한 데이터베이스 제어문을 모두 포함할 수 있다.
본 발명의 일 실시예에 따르면, 매핑 정보는 XML 형태의 문서로 저장될 수 있다.
도 7에 도시된 바와 같이, 쿼리명 "GetUserInfo"에 대한 매핑을 위한 XML 문서는 다음과 같이 정의될 수 있다.
<select name= "GetUserInfo">
<param name = "id" type="string"/>
<![CDATA[
SELECT ..... WHERE ID....:id
]]>
</select>
상술한 바와 같은 XML 매핑 정보를 이용하여 도 7에 도시된 바와 같이 SELECT...WHERE ID+ : id, :id=foo라는 쿼리문을 생성하여 피어 데이터베이스에 제공한다.
피어 데이터베이스는 상술한 쿼리문을 수신하여 foo라는 사용자의 사용자 정보를 추출한다.
도 8은 본 발명의 일 실시예에 따른 SQL 맵 프로세스와 데이터베이스와의 연결 구조의 일례을 도시한 도면이다.
도 8에 도시된 바와 같이, SQL 맵 프로세스는 프론트 엔드 프로세스와는 독립적으로 다수의 데이터베이스와 연결될 수 있다. 또한, 데이터베이스가 추가되더라도 프론트 엔드 및 클라이언트의 에이전트 프로그램의 코드는 변경될 필요가 없 으며, SQL 맵 프로세스의 코드만 변경된다.
아울러, 코드 및 SQL이 섞이지 않고 SQL이 SQL 맵 프로세스에서 관리되므로 SQL 대한 중앙 집중적인 관리가 가능하다. 특히, 모니터링 및 통계 정보를 산출하기 용이하며 수행 시간이 긴 비정상 쿼리문 역시 쉽게 검출해낼 수 있다.
도 6은 본 발명의 일 실시예에 따른 P2P 시스템의 전체적인 동작을 도시한 순서도이다.
도 6을 참조하면, 우선 사용자 클라이언트는 에이전트 프로그램을 통해 특정 컨텐츠를 요청하는 컨텐츠 요청 메시지를 피어 관리 서버에 전송한다(S600).
컨텐츠 요청 메시지를 수신한 피어 관리 서버는 사용자 클라이언트가 요청한 컨텐츠를 저장하고 있는 피어 정보를 추출하고, 피어 정보를 사용자에게 전송하며, 사용자는 피어 정보를 수신한다(S602). 본 발명의 바람직한 실시예에 따르면, 특정 컨텐츠를 저장하고 있는 피어 정보가 사용자 클라이언트들에 유니폼하게 제공될 수 있도록 피어를 랜덤하게 선택하는 것이 바람직하며, 이를 위한 상세한 실시예는 후술하기로 한다.
피어 정보를 수신한 사용자 클라이언트는 에이전트 프로그램에 의해 피어 정보에 포함된 주소 정보를 이용하여 해당 피어와의 연결을 설정한다(S604). 해당 피어와의 연결이 설정되면, 사용자 클라이언트는 연결이 설정된 피어로부터 컨텐츠를 운로드한다(S606).
다른 피어로부터 다운로드를 개시하는 것이 감지되면, 에이전트 프로그램은 사용자 클라이언트가 액티브 피어로 등록되도록 피어 등록 절차를 수행한다(S608).
액티브 피어로 등록되면, 다른 사용자 클라이언트가 컨텐츠를 요청할 수 있으며, 다른 사용자 클라이언트의 컨텐츠 요청에 응답하여 컨텐츠를 전송하는 절차를 수행한다(S610).
에이전트 프로그램은 사용자 클라이언트의 다운로드가 완료되는지 여부를 모니터링한다(S612).
다운로드가 완료되면, 에이전트 프로그램은 피어 등록 해제 요청 메시지를 피어 관리 서버에 전달하여 피어 액티브 상태를 해제한다(S614).
도 9는 본 발명의 바람직한 일 실시예에 따른 피어 등록 과정을 도시한 순서도이다.
도 9를 참조하면, 사용자 클라이언트에 설치된 에이전트 프로그램은 사용자 클라이어트가 다른 피어로부터 컨텐츠를 다운로드하는 상태인지 여부를 모니터링한다(S900).
컨텐츠 다운로드가 감지될 경우, 에이전트 프로그램은 피어 등록 요청 메시지를 생성한다(S902). 도 12는 본 발명의 일 실시예에 따른 피어 등록 요청 메시지의 필드 구성을 도시한 도면이다.
도 12을 참조하면, 피어 등록 요청 메시지는 식별자(1200), 사용자 아이디(1202), 주소(1204) 및 컨텐츠 아이디(1206)를 포함할 수 있다.
식별자(1200)는 피어 등록 요청 메시지임을 식별하기 위한 미리 설정된 코드 정보이다.
사용자 아이디(1202)는 피어 등록을 요청하는 사용자의 아이디 정보이며, 주 소(1204)는 사용자 클라이언트의 아이피 주소 및 포트 번호를 포함할 수 있다. 컨텐츠 아이디(1206)는 사용자 클라이언트가 보유하고 있는 컨텐츠를 식별할 수 있는 아이디 정보이다. 컨텐츠는 서비스 제공자에 의해 제공되는 컨텐츠는 물론 사용자에 의해 제작된 컨텐츠(User Created Contents: UCC) 역시 포함할 수 있다.
생성된 피어 등록 요청 메시지는 프론트 엔드 프로세스에서 수신되며(S904), 프론트 엔드 프로세스는 피어 등록 요청 메시지에 상응하는 쿼리명 및 피어 등록 요청 메시지에 포함된 사용자 아이디, 주소 및 컨텐츠 아이디에 대한 파라미터를 생성한다(S906).
생성된 쿼리명 및 파라미터는 SQL 맵 프로세스에 전달되며, SQL 맵 프로세스는 매핑 정보를 이용하여 전달된 쿼리명 및 파라미터에 상응하는 쿼리문을 생성하며(S910), 생성되는 쿼리문은 새로운 피어 정보(사용자 아이디, 주소, 컨텐츠 아이디)를 데이터베이스에 삽입하기 위한 쿼리문이다.
도 10은 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버에서 피어 정보를 제공하는 과정을 도시한 순서도이다.
도 10을 참조하면, 사용자 클라이언트는 특정 컨텐츠의 아이디 정보를 포함하는 컨텐츠 요청 메시지를 프론트 엔드 프로세스에 전송한다(S1000).
프론트 엔드 프로세스는 컨텐츠 요청 메시지에 상응하는 쿼리명 및 컨텐츠 요청 메시지에 포함된 컨텐츠 아이디에 대한 파라미터를 생성한다(S1002).
생성된 쿼리명 및 파라미터는 SQL 맵 프로세스에 전달되며, SQL 맵 프로세스는 파라미터 및 쿼리명을 이용하여 요청된 컨텐츠를 보유하고 있는 피어를 랜덤하 게 선택하기 위한 쿼리문을 생성한다(S1006). 랜덤 선택을 위한 쿼리문은 도 11을 참조하여 후에 설명하기로 한다.
SQL 맵 프로세스는 생성된 쿼리문에 상응하는 데이터베이스의 피어 정보를 수신하고(1008), 수신된 피어 정보는 프론트 엔드 프로세스에 제공된다(S1010).
프론트 엔드 프로세스는 피어 정보를 사용자 클라이언트에 전송하며(S1012), 사용자 클라이언트는 제공된 피어 정보를 이용하여 해당 피어와 연결을 설정하고 컨텐츠를 다운로드한다(S1014).
도 11은 본 발명의 바람직한 일 실시예에 따른 사용자가 요청한 컨텐츠를 보유한 피어를 랜덤하게 선택하기 위한 과정을 도시한 순서도이다.
전술한 바와 같이, 본 발명과 같이 동적으로 계속 변하는 피어 정보가 데이터베이스에 의해 관리될 경우, 각 피어에 대한 커넥션이 균일하게 유지되도록 피어를 랜덤하게 선택하기가 어렵다. 이는 데이터베이스가 특정 조건에 해당하는 데이터를 추출하도록 구성되며, 랜덤 선택을 위한 데이터베이스 쿼리문이 제공되지 않기 때문이다.
이를 위해, 본 발명의 바람직한 실시예에 따르면, 사용자 클라이언트가 피어 등록 시 각 사용자에게 랜덤하게 번호 아이디를 할당한다(S1100). 프론트 엔드 프로세스는 데이터베이스 및 쿼리문과는 무관한 프로세스이므로 일반적인 랜덤 함수를 이용하여 각 피어에 랜덤 번호 아이디를 부여하는 것이 가능하다.
랜덤 아이디가 부여되면, SQL 맵 프로세스는 피어 정보에 포함되는 사용자 아이디, 주소 및 컨텐츠 정보에 추가하여 랜덤 아이디가 함께 데이터베이스에 저장 되도록 한다(S1102).
특정 컨텐츠를 저장하고 있는 피어 정보가 요청될 경우(S1104), 프론트 엔드 프로세스는 랜덤하게 피어 선택을 위한 범위를 설정하며, 랜덤하게 설정된 범위를 지정하는 파라미터를 출력하고, SQL 맵 프로세스는 상기 파라미터를 이용하여 지정된 범위에 있는 피어를 선택하기 위한 쿼리문을 생성한다(S1106).
이러한 쿼리문은 일반적인 SELECT 구문 및 SELECT 구문에서 제공하는 범위 지정(<=. >=, between) 방식을 이용하여 생성될 수 있을 것이다. 예를 들어, 랜덤 아이디 10 내지 20 사이의 피어를 선택하기 위한 쿼리문이 생성될 수도 있으며, 랜덤 아이디 5 이하의 피어를 선택하기 위한 쿼리문이 생성될 수도 있을 것이다.
피어 데이터베이스는 SELECT 구문에 상응하는 피어를 선택하여 제공한다(S1108).
전술한 바와 같이, 랜덤 아이디 부여 및 랜덤 범위 설정 중 어느 하나만을 랜덤하게 처리함으로써 랜덤 선택이 가능할 수도 있다. 예를 들어, 번호 아이디는 랜덤이 아닌 순차적으로 부여하되 피어 선택을 위한 번호 범위를 랜덤하게 설정함으로써 피어에 대한 랜덤 선택이 가능할 것이다.
또 다른 예로, 각 피어에게는 랜덤하게 번호 아이디를 부여하되, 피어 선택을 위한 범위는 고정적으로 설정함으로써 피어에 대한 랜덤 선택이 가능할 수도 있을 것이다.
이와 같이, 데이터베이스에서 랜덤 선택을 하기 어려운 문제점을 각 피어에 랜덤 아이디를 부여하고 부여된 랜덤 아이디가 데이터베이스에 함께 관리되도록 함 으로써 컨텐츠를 보유한 피어에 대한 랜덤 선택이 가능하며, 이로 인해 피어들간의 커넥션 설정 시 특정 피어에 커넥션이 편중되지 않고 커넥션이 균일하게 분포될 수 있도록 제어하는 것이 가능하다.
이상에서 설명한 바와 같이, 본 발명의 바람직한 실시예에 따르면, P2P 시스템에 접속한 피어 정보를 데이터베이스에 의해 효율적으로 관리할 수 있는 장점이 있다.
또한, 본 발명의 바람직한 실시예에 따르면, 피어 정보가 데이터베이스에서 관리되더라도 특정 피어에 커넥션이 편중되지 않고 커넥션이 균일하게 분포될 수 있도록 피어를 랜덤하게 선택할 수 있는 장점이 있다.

Claims (13)

  1. P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 피어 등록 요청 메시지를 수신할 경우, 해당 피어에 랜덤 번호 아이디를 부여하며 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스-상기 파라미터는 적어도 피어의 주소 및 상기 랜덤 번호 아이디를 포함함;
    쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 쿼리문으로 변환하는 SQL 맵 프로세스;
    상기 SQL 맵 프로세스의 쿼리문에 따라 상기 피어 주소 및 랜덤 번호 아이디를 저장하는 피어 데이터베이스를 포함하되,
    피어 선택을 요청받을 경우, 상기 프론트 엔드 프로세스는 번호 선택을 위한 특정 범위가 지정된 파라미터를 상기 SQL 맵 프로세스에 제공하며, 상기 SQL 맵 프로세스는 상기 파라미터에 지정된 범위의 피어를 선택하는 쿼리문을 생성하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  2. 제1항에 있어서,
    상기 피어 등록 요청 메시지에 상응하는 파라미터는 피어가 보유한 컨텐츠 정보를 더 포함하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  3. 제2항에 있어서,
    사용자 클라이언트로부터 특정 컨텐츠를 요청하는 컨텐츠 요청 메시지를 수신할 경우, 상기 SQL 맵 프로세스는 상기 특정 범위의 번호를 가지는 피어를 선택하는 쿼리문을 생성하며, 상기 쿼리문은 상기 특정 컨텐츠 정보를 포함하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  4. 제3항에 있어서,
    상기 특정 범위는 상기 프론트 엔드 프로세스에서 랜덤하게 지정되는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  5. 제3항에 있어서,
    상기 특정 범위는 상기 프론트 엔드 프로세스에 미리 설정되어 있는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  6. 제3항에 있어서,
    상기 피어들에는 상기 피어 관리 서버 및 다른 피어와의 통신을 위한 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 피어가 다운로드 상태인지 여부를 판단하여 피어를 액티브 피어로 등록하기 위한 피어 등록 요청 메시지 및 피어 등록 해제 요청 메시지를 전송하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  7. 제3항에 있어서,
    상기 SQL 맵 프로세스는 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 XML 문서로 저장하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  8. P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 피어 등록 요청 메시지를 수신할 경우, 해당 피어에 순차적으로 번호 아이디를 부여하며 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스-상기 파라미터는 적어도 피어의 주소 및 상기 번호 아이디를 포함함;
    쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 쿼리문으로 변환하는 SQL 맵 프로세스;
    상기 SQL 맵 프로세스의 쿼리문에 따라 상기 피어 주소 및 번호 아이디를 저장하는 피어 데이터베이스를 포함하되,
    피어 선택을 요청받을 경우, 상기 프론트 엔드 프로세스는 번호 선택을 위해 랜덤하게 설정된 범위를 지정한 파라미터를 상기 SQL 맵 프로세스에 제공하며, 상기 SQL 맵 프로세스는 상기 파라미터에 지정된 범위의 피어를 선택하는 쿼리문을 생성하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  9. 제8항에 있어서,
    상기 피어 등록 요청 메시지에 상응하는 파라미터는 피어가 보유한 컨텐츠 정보를 더 포함하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  10. 제9항에 있어서,
    사용자 클라이언트로부터 특정 컨텐츠를 요청하는 컨텐츠 요청 메시지를 수신할 경우, 상기 SQL 맵 프로세스는 상기 랜덤하게 설정된 범위의 번호를 가지는 피어를 선택하는 쿼리문을 생성하며, 상기 쿼리문은 상기 특정 컨텐츠 정보를 포함하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  11. P2P 시스템에서 피어 정보 관리 방법으로서,
    P2P 시스템에 접속한 피어로부터 등록 요청 메시지를 수신하는 단계(a);
    상기 피어에 랜덤 번호 아이디를 부여하며, 상기 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 단계(b)-상기 파라미터는 적어도 피어의 주소 및 상기 랜덤 번호 아이디를 포함함-;
    상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 이용하여 상기 등록 요청 메시지에 상응하는 쿼리문을 생성하는 단계(c);
    상기 쿼리문에 의해 피어 정보 데이터베이스에 상기 피어를 액티브 피어로 등록하는 단계(d); 및
    피어 선택을 요청받을 경우, 번호 선택을 위한 특정 범위가 지정된 파라미터 를 생성하고 상기 특정 범위의 피어를 선택하는 쿼리문을 생성하는 단계를 포함하는 것을 특징으로 하는 P2P 시스템에서 피어 관리 방법.
  12. 제11항에 있어서,
    상기 특정 범위는 랜덤하게 설정되는 것을 특징으로 하는 P2P 시스템에서 피어 관리 방법.
  13. P2P 시스템에서 피어 정보 관리 방법으로서,
    P2P 시스템에 접속한 피어로부터 등록 요청 메시지를 수신하는 단계(a);
    상기 피어에 순차적으로 번호 아이디를 부여하며, 상기 등록 요청 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 단계(b)-상기 파라미터는 적어도 피어의 주소 및 상기 번호 아이디를 포함함-;
    상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 이용하여 상기 등록 요청 메시지에 상응하는 쿼리문을 생성하는 단계(c);
    상기 쿼리문에 의해 피어 정보 데이터베이스에 상기 피어를 액티브 피어로 등록하는 단계(d); 및
    피어 선택을 요청받을 경우, 번호 선택을 위해 랜덤하게 범위가 지정된 파라미터를 생성하고 상기 랜덤하게 설정된 범위의 피어를 선택하는 쿼리문을 생성하는 단계를 포함하는 것을 특징으로 하는 P2P 시스템에서 피어 관리 방법.
KR1020060117171A 2006-11-24 2006-11-24 P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법 KR101305397B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060117171A KR101305397B1 (ko) 2006-11-24 2006-11-24 P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060117171A KR101305397B1 (ko) 2006-11-24 2006-11-24 P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법

Publications (2)

Publication Number Publication Date
KR20080047162A true KR20080047162A (ko) 2008-05-28
KR101305397B1 KR101305397B1 (ko) 2013-09-06

Family

ID=39663829

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060117171A KR101305397B1 (ko) 2006-11-24 2006-11-24 P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법

Country Status (1)

Country Link
KR (1) KR101305397B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101237341B1 (ko) * 2008-06-17 2013-02-28 퀄컴 인코포레이티드 피어-투-피어 오버레이 네트워크에서 디바이스들의 최적의 참여를 위한 방법들 및 장치들
CN109815294A (zh) * 2019-02-14 2019-05-28 北京谷数科技有限公司 一种无主节点分布并行数据存储方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613796B2 (en) * 2002-09-11 2009-11-03 Microsoft Corporation System and method for creating improved overlay network with an efficient distributed data structure

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101237341B1 (ko) * 2008-06-17 2013-02-28 퀄컴 인코포레이티드 피어-투-피어 오버레이 네트워크에서 디바이스들의 최적의 참여를 위한 방법들 및 장치들
CN109815294A (zh) * 2019-02-14 2019-05-28 北京谷数科技有限公司 一种无主节点分布并行数据存储方法和系统
CN109815294B (zh) * 2019-02-14 2019-12-20 北京谷数科技有限公司 一种无主节点分布并行数据存储方法和系统

Also Published As

Publication number Publication date
KR101305397B1 (ko) 2013-09-06

Similar Documents

Publication Publication Date Title
US7251689B2 (en) Managing storage resources in decentralized networks
US7533141B2 (en) System and method for unique naming of resources in networked environments
US7069318B2 (en) Content tracking in transient network communities
US7395536B2 (en) System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment
US7177929B2 (en) Persisting node reputations in transient network communities
US7039701B2 (en) Providing management functions in decentralized networks
US7127613B2 (en) Secured peer-to-peer network data exchange
US7143139B2 (en) Broadcast tiers in decentralized networks
US7181536B2 (en) Interminable peer relationships in transient communities
US20060248182A1 (en) Formatted and/or tunable QoS data publication, subscription, and/or distribution including dynamic network formation
US20060248181A1 (en) Formatted and/or tunable QOS data publication, subscription, and/or distribution servers and clients
US7206788B2 (en) Schema-based services for identity-based access to device data
US20070061282A1 (en) Data network information distribution
US20050144591A1 (en) Method and system for change management of interfaces in distributed computer systems
KR100656222B1 (ko) 일시 네트워크에 있어서 동적 어드레싱 방법
US20030037107A1 (en) Application distribution system, and distribution server and distribution method thereof
JP2012118709A (ja) 配信システム、ストレージ容量決定プログラム、及びストレージ容量決定方法
CN107003981B (zh) 与本地配对的设备同步以使用点到点通信从远程服务器获得数据
EP2309390B1 (en) Data distribution system
KR101305397B1 (ko) P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법
KR20090006504A (ko) 아이피 멀티미디어 서브시스템에서 피투피 서비스 제공방법 및 장치
KR100836619B1 (ko) P2p 시스템에서 피어 관리 서버 및 피어 관리 방법
Olson NET P2P Writing Peer-to-Peer Networked Apps with the Microsoft. NET Framework
JP2004295652A (ja) 分散処理システム、情報処理装置、分散処理支援装置、及び制御プログラム
KR20020048548A (ko) 개인 컴퓨터간의 자료검색 시스템 및 그 운영방법

Legal Events

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

Payment date: 20160628

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170628

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180626

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 7