KR20080047161A - P2p 시스템에서 피어 관리 서버 및 피어 관리 방법 - Google Patents

P2p 시스템에서 피어 관리 서버 및 피어 관리 방법 Download PDF

Info

Publication number
KR20080047161A
KR20080047161A KR1020060117170A KR20060117170A KR20080047161A KR 20080047161 A KR20080047161 A KR 20080047161A KR 1020060117170 A KR1020060117170 A KR 1020060117170A KR 20060117170 A KR20060117170 A KR 20060117170A KR 20080047161 A KR20080047161 A KR 20080047161A
Authority
KR
South Korea
Prior art keywords
peer
query
information
content
request message
Prior art date
Application number
KR1020060117170A
Other languages
English (en)
Other versions
KR100836619B1 (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 KR1020060117170A priority Critical patent/KR100836619B1/ko
Priority to PCT/KR2007/005660 priority patent/WO2008062961A1/en
Priority to JP2009538314A priority patent/JP5178734B2/ja
Publication of KR20080047161A publication Critical patent/KR20080047161A/ko
Application granted granted Critical
Publication of KR100836619B1 publication Critical patent/KR100836619B1/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 P2P 시스템에서의 피어 관리 서버에 관한 것으로서, 본 발명의 피어 관리 서버는 P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지를 수신하고, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 프로세스로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 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 시스템 이용 시 사용자 클라이언트의 부하를 최소화할 수 있는 P2P 시스템을 제안하는 것이다.
상기한 바와 같은 목적을 달성하기 위하여, 본 발명의 일 측면에 따르면, P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지를 수신하고, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 프로세스로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 프로세스; 및 액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 프로세스에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함하는 P2P 시스템에서의 피어 관리 서버가 제공된다.
또한, 상기 피어 관리 서버는 사용자 접속 및 메시지 처리 상태와 쿼리문 생성 상태를 체크하는 상태 판단부; 및 상기 상태 판단부의 판단 결과에 상응하여 상기 사용자 접속 및 메시지 처리를 위한 프론트 엔드 프로세스 및 상기 쿼리문 생성을 위한 SQL 맵 프로세스의 생성 및 소멸을 제어하는 프로세스 생성 제어부를 더 포함할 수 있다.
상기 피어들에는 상기 피어 관리 서버 및 다른 피어와의 통신을 위한 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 피어가 다운로드 상태인지 여부를 판단하여 피어를 액티브 피어로 등록하기 위한 피어 등록 요청 메시지 및 피어 등록 해제 요청 메시지를 전송한다.
상기 SQL 맵 프로세스는 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 XML 문서로 저장한다.
상기 등록 요청 메시지는 사용자 아이디, 주소 및 보유한 컨텐츠 정보를 포함하며, 상기 프론트 엔드 프로세스는 상기 피어 등록 요청 메시지에 상응하는 미리 설정된 쿼리명 및 상기 사용자 아이디, 주소 및 보유한 컨텐츠 정보에 대한 파라미터를 생성하며, 상기 SQL 맵 프로세스는 상기 프론트 엔드 프로세스로부터의 쿼리명 및 파라미터를 분석하여 쿼리문을 생성하여 상기 피어 데이터베이스로부터 피어 정보를 추출한다.
본 발명의 다른 측면에 따르면, P2P 시스템에서 피어 정보 관리 방법으로서, P2P 시스템에 접속한 피어로부터 등록 요청 메시지를 수신하는 단계(a); 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 피어 등록 메시지를 분석하여 파라미터를 생성하는 단계(b); 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 이용하여 상기 등록 요청 메시지에 상응하는 쿼리문을 생성하는 단계(c); 상기 쿼리문에 의해 피어 정보 데이터베이스에 상기 피어를 액티브 피어로 등록하는 단계(d)를 포함하는 피어 정보 관리 방법이 제공된다.
상기 피어에는 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 상기 피어가 컨텐츠 다운로드 상태인지 여부를 판단하여 상기 등록 요청 메시지를 전송한다.
상기 피어 등록 요청 메시지를 분석하여 생성되는 파라미터는 사용자 아이디, 주소 및 보유한 컨텐츠 정보를 포함할 수 있다.
상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보는 XML 형태 로 저장되는 것이 바람직하다.
한편, 상술한 방법은, 특정 피어로부터 컨텐츠 요청 메시지를 수신하는 단계; 상기 컨텐츠 요청 메시지에 상응하는 쿼리명 및 컨텐츠 요청 메시지에 포함된 컨텐츠 아이디에 대한 파라미터를 생성하는 단계; 상기 매핑 정보를 이용하여 상기 컨텐츠 요청 메시지에 상응하는 쿼리명 및 상기 파라미터에 상응하는 피어 선택 쿼리문을 생성하는 단계; 및 상기 피어 선택 쿼리문에 의해 상기 피어 데이터베이스로부터 상기 컨텐츠 아이디와 연관된 컨텐츠를 보유한 피어를 선택하는 단계를 더 포함할 수 있다.
본 발명의 다른 측면에 따르면, 상술한 방법들을 수행하는 명령어들의 프로그램이 유형적으로 구현되어 있으며, 디지털 데이터 처리 장치에 설치되어 상기 디지털 데이터 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록 매체가 제공된다.
본 발명의 또 다른 측면에 따르면, P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지를 수신하며, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 서버; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 서버로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 서버; 및 액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 서버에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함할 수 있다.
이하에서, 첨부된 도면을 참조하여 본 발명에 의한 피어 관리 서버의 바람직한 실시예를 상세히 설명한다.
도 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 시스템에 접속한 피어 정보를 데이터베이스에 의해 효율적으로 관리할 수 있는 장점이 있다.
또한, 본 발명의 바람직한 실시예에 따르면, 프론트 엔드 프로세스 및 SQL 맵 프로세스를 서버 상태에 따라 생성함으로써 서버 리소스를 보다 효율적으로 활용할 수 있는 장점이 있다.
아울러, 본 발명의 바람직한 실시예에 따르면, 데이터베이스의 관리와 클라이언트의 메시지 처리를 이원화함으로써 데이터베이스의 확장 및 시스템 업그레이드 시 최소한의 수정으로 확장 및 업그레이드가 가능한 장점이 있다.
나아가, 본 발명의 바람직한 실시예에 따르면, 다운로드 시에만 사용자 클라이언트가 액티브 피어로 동작하도록 함으로써 P2P 시스템 이용 시 사용자 클라이언트의 부하를 최소화할 수 있는 장점이 있다.

Claims (13)

  1. P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지를 수신하고, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스;
    상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 프로세스로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 프로세스; 및
    액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 프로세스에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  2. 제1항에 있어서,
    사용자 접속 및 메시지 처리 상태와 쿼리문 생성 상태를 체크하는 상태 판단부; 및
    상기 상태 판단부의 판단 결과에 상응하여 상기 사용자 접속 및 메시지 처리를 위한 프론트 엔드 프로세스 및 상기 쿼리문 생성을 위한 SQL 맵 프로세스의 생성 및 소멸을 제어하는 프로세스 생성 제어부를 더 포함하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  3. 제1항에 있어서,
    상기 피어들에는 상기 피어 관리 서버 및 다른 피어와의 통신을 위한 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 피어가 다운로드 상태인지 여부를 판단하여 피어를 액티브 피어로 등록하기 위한 피어 등록 요청 메시지 및 피어 등록 해제 요청 메시지를 전송하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  4. 제1항에 있어서,
    상기 SQL 맵 프로세스는 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 XML 문서로 저장하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  5. 제3항에 있어서,
    상기 등록 요청 메시지는 사용자 아이디, 주소 및 보유한 컨텐츠 정보를 포함하며, 상기 프론트 엔드 프로세스는 상기 피어 등록 요청 메시지에 상응하는 미리 설정된 쿼리명 및 상기 사용자 아이디, 주소 및 보유한 컨텐츠 정보에 대한 파라미터를 생성하며, 상기 SQL 맵 프로세스는 상기 프론트 엔드 프로세스로부터의 쿼리명 및 파라미터를 분석하여 쿼리문을 생성하여 상기 피어 데이터베이스로부터 피어 정보를 추출하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버.
  6. P2P 시스템에서 피어 정보 관리 방법으로서,
    P2P 시스템에 접속한 피어로부터 등록 요청 메시지를 수신하는 단계(a);
    상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 피어 등록 메시지를 분석하여 파라미터를 생성하는 단계(b);
    상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 이용하여 상기 등록 요청 메시지에 상응하는 쿼리문을 생성하는 단계(c);
    상기 쿼리문에 의해 피어 정보 데이터베이스에 상기 피어를 액티브 피어로 등록하는 단계(d)를 포함하는 것을 특징으로 하는 피어 정보 관리 방법.
  7. 제 6항에 있어서,
    상기 피어에는 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 상기 피어가 컨텐츠 다운로드 상태인지 여부를 판단하여 상기 등록 요청 메시지를 전송하는 것을 특징으로 하는 피어 정보 관리 방법.
  8. 제7항에 있어서,
    상기 피어 등록 요청 메시지를 분석하여 생성되는 파라미터는 사용자 아이디, 주소 및 보유한 컨텐츠 정보를 포함하는 것을 특징으로 하는 피어 정보 관리 방법.
  9. 제1항에 있어서,
    상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보는 XML 형태로 저장되는 것을 특징으로 하는 피어 정보 관리 방법.
  10. 제1항에 있어서,
    특정 피어로부터 컨텐츠 요청 메시지를 수신하는 단계;
    상기 컨텐츠 요청 메시지에 상응하는 쿼리명 및 컨텐츠 요청 메시지에 포함된 컨텐츠 아이디에 대한 파라미터를 생성하는 단계;
    상기 매핑 정보를 이용하여 상기 컨텐츠 요청 메시지에 상응하는 쿼리명 및 상기 파라미터에 상응하는 피어 선택 쿼리문을 생성하는 단계; 및
    상기 피어 선택 쿼리문에 의해 상기 피어 데이터베이스로부터 상기 컨텐츠 아이디와 연관된 컨텐츠를 보유한 피어를 선택하는 단계를 더 포함하는 것을 특징으로 하는 피어 정보 관리 방법.
  11. 제1항에 있어서,
    상기 단계(b) 및 상기 단계(c)는 별도의 프로세스에 의해 처리되며, 상기 단계(b) 처리를 위한 프로세스와 상기 단계 (c) 처리를 위한 프로세스의 생성 및 소멸을 제어하는 단계를 더 포함하는 것을 특징으로 하는 피어 정보 관리 방법.
  12. P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지 를 수신하며, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 서버;
    상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 서버로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 서버; 및
    액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 서버에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함하는 것을 특징으로 하는 피어 정보 관리 시스템.
  13. 제6항 내지 제 11항 중 어느 한 항의 방법을 수행하는 명령어들의 프로그램이 유형적으로 구현되어 있으며, 디지털 데이터 처리 장치에 설치되어 상기 디지털 데이터 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록 매체.
KR1020060117170A 2006-11-24 2006-11-24 P2p 시스템에서 피어 관리 서버 및 피어 관리 방법 KR100836619B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060117170A KR100836619B1 (ko) 2006-11-24 2006-11-24 P2p 시스템에서 피어 관리 서버 및 피어 관리 방법
PCT/KR2007/005660 WO2008062961A1 (en) 2006-11-24 2007-11-12 Peer management server in p2p system and peer management method
JP2009538314A JP5178734B2 (ja) 2006-11-24 2007-11-12 P2pシステムにおけるピア管理サーバー及びピア管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060117170A KR100836619B1 (ko) 2006-11-24 2006-11-24 P2p 시스템에서 피어 관리 서버 및 피어 관리 방법

Publications (2)

Publication Number Publication Date
KR20080047161A true KR20080047161A (ko) 2008-05-28
KR100836619B1 KR100836619B1 (ko) 2008-06-10

Family

ID=39429868

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060117170A KR100836619B1 (ko) 2006-11-24 2006-11-24 P2p 시스템에서 피어 관리 서버 및 피어 관리 방법

Country Status (3)

Country Link
JP (1) JP5178734B2 (ko)
KR (1) KR100836619B1 (ko)
WO (1) WO2008062961A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6887746B2 (ja) * 2015-01-19 2021-06-16 エヌ・ティ・ティ・コミュニケーションズ株式会社 端末管理システム、端末制御装置、端末管理方法及び通信制御プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3808941B2 (ja) * 1996-07-22 2006-08-16 株式会社日立製作所 並列データベースシステム通信回数削減方法
US20030233455A1 (en) * 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
US7451217B2 (en) * 2002-12-19 2008-11-11 International Business Machines Corporation Method and system for peer-to-peer authorization
KR100475668B1 (ko) * 2002-12-23 2005-03-10 한국과학기술정보연구원 그리드 네트워크에서 그리드 자원에 대한 정보를 제공하는장치 및 방법과 그 프로세스를 기록한 컴퓨터 판독가능한기록매체
US7895338B2 (en) 2003-03-18 2011-02-22 Siemens Corporation Meta-search web service-based architecture for peer-to-peer collaboration and voice-over-IP
US7409400B2 (en) * 2003-10-22 2008-08-05 Intel Corporation Applications of an appliance in a data center
JP3838248B2 (ja) * 2004-07-26 2006-10-25 株式会社日立製作所 データ格納方法およびデータ管理システム
US7174385B2 (en) * 2004-09-03 2007-02-06 Microsoft Corporation System and method for receiver-driven streaming in a peer-to-peer network
KR101094586B1 (ko) * 2005-01-21 2011-12-15 에스케이 텔레콤주식회사 단말 피어의 상태 모니터링 시스템 및 방법
WO2006080083A1 (ja) * 2005-01-28 2006-08-03 Argo-Notes, Inc. BitTorrentプロトコルによるファイルのダウンロード方法

Also Published As

Publication number Publication date
KR100836619B1 (ko) 2008-06-10
JP5178734B2 (ja) 2013-04-10
WO2008062961A1 (en) 2008-05-29
JP2010511222A (ja) 2010-04-08

Similar Documents

Publication Publication Date Title
US8261059B2 (en) Secure file transfer and secure file transfer protocol
US7089313B2 (en) Protocol independent communication system for mobile devices
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
US7395536B2 (en) System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment
US7627867B2 (en) Change management of interfaces in distributed computer systems
US7533141B2 (en) System and method for unique naming of resources in networked environments
US7509424B2 (en) Load-balancing device and computer-readable recording medium in which load-balancing program is recorded
US7903656B2 (en) Method and system for message routing based on privacy policies
EP1872523B1 (en) System and method of device-to-server registration
US20030145093A1 (en) System and method for peer-to-peer file exchange mechanism from multiple sources
KR20080068647A (ko) 이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스애플리케이션 실행 환경에서 실행하는 사용자 친화적데이터 전달 서비스 애플리케이션
US20040264471A1 (en) Method and system for accessing a peer-to-peer network
US7237235B2 (en) Application distribution system, and distribution server and distribution method thereof
KR100656222B1 (ko) 일시 네트워크에 있어서 동적 어드레싱 방법
KR100823730B1 (ko) 피투피 기반의 스트리밍 서비스 제공 방법 및 장치, 이를이용한 스트리밍 서비스 시스템
JP4098723B2 (ja) サーバシステムの再構成(reconfiguring)方法及び装置
JP2012118709A (ja) 配信システム、ストレージ容量決定プログラム、及びストレージ容量決定方法
CN114390044A (zh) 一种文件上传方法、系统、设备及存储介质
EP2309390B1 (en) Data distribution system
KR101305397B1 (ko) P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법
KR100836619B1 (ko) P2p 시스템에서 피어 관리 서버 및 피어 관리 방법
KR20020048548A (ko) 개인 컴퓨터간의 자료검색 시스템 및 그 운영방법
JP2004295652A (ja) 分散処理システム、情報処理装置、分散処理支援装置、及び制御プログラム
WO2005116855A1 (en) Dual web server system and method using host server in p2p web server configuration

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: 20110414

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160329

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170328

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 12