Nothing Special   »   [go: up one dir, main page]

KR101029416B1 - Ranking data system, ranking query system and ranking computation method for computing large scale ranking in real time - Google Patents

Ranking data system, ranking query system and ranking computation method for computing large scale ranking in real time Download PDF

Info

Publication number
KR101029416B1
KR101029416B1 KR1020090093476A KR20090093476A KR101029416B1 KR 101029416 B1 KR101029416 B1 KR 101029416B1 KR 1020090093476 A KR1020090093476 A KR 1020090093476A KR 20090093476 A KR20090093476 A KR 20090093476A KR 101029416 B1 KR101029416 B1 KR 101029416B1
Authority
KR
South Korea
Prior art keywords
ranking
query
information
data
score
Prior art date
Application number
KR1020090093476A
Other languages
Korean (ko)
Other versions
KR20110035665A (en
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 KR1020090093476A priority Critical patent/KR101029416B1/en
Priority to PCT/KR2010/006654 priority patent/WO2011040765A2/en
Publication of KR20110035665A publication Critical patent/KR20110035665A/en
Application granted granted Critical
Publication of KR101029416B1 publication Critical patent/KR101029416B1/en

Links

Images

Classifications

    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

실시간으로 대용량 랭킹을 산정하기 위한 랭킹 데이터 시스템, 랭킹 질의 시스템 및 랭킹 산정 방법을 개시한다. 랭킹 데이터 시스템은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성하는 자료구조 생성부, 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재하는 랭킹 정보 적재부, 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 질의에 대한 요청을 수신하는 요청 수신부 및 수신된 요청에 따른 동작을 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 랭킹 질의 시스템으로 전송하는 요청 처리부를 포함한다.

Figure R1020090093476

랭킹(ranking), 게임, 데이터베이스, 실시간, 라우팅 테이블

A ranking data system, a ranking query system, and a ranking estimation method for estimating a large capacity ranking in real time are disclosed. The ranking data system reads the attribute information of the ranking to be serviced from the ranking scheme table and generates a data structure corresponding to the attribute information in the memory. The ranking is divided according to the score intervals and distributed in a plurality of ranking data systems. A ranking information loading unit which loads ranking information of a corresponding score section among information from a database and loads it into a memory through a data structure generated, and requests a query from a ranking query system that receives a query from an application among a plurality of ranking query systems. And a request processing unit which processes the received request information and the operation according to the received request on the loaded ranking information, and transmits the processed result to the ranking query system.

Figure R1020090093476

Ranking, Game, Database, Real Time, Routing Table

Description

실시간으로 대용량 랭킹을 산정하기 위한 랭킹 데이터 시스템, 랭킹 질의 시스템 및 랭킹 산정 방법{RANKING DATA SYSTEM, RANKING QUERY SYSTEM AND RANKING COMPUTATION METHOD FOR COMPUTING LARGE SCALE RANKING IN REAL TIME}RANKING DATA SYSTEM, RANKING QUERY SYSTEM AND RANKING COMPUTATION METHOD FOR COMPUTING LARGE SCALE RANKING IN REAL TIME}

본 발명에 따른 실시예들은 실시간으로 대용량 랭킹을 산정하기 위한 랭킹 데이터 시스템, 랭킹 질의 시스템 및 랭킹 산정 방법에 관한 것이다.Embodiments according to the present invention relate to a ranking data system, a ranking query system and a ranking calculation method for estimating a large capacity ranking in real time.

종래기술에 따른 랭킹 시스템은 일반적으로 아래와 같은 2가지 방법으로 구현된다.The ranking system according to the prior art is generally implemented in two ways as follows.

첫 번째로, 데이터베이스에 의존하는 랭킹 시스템을 이용하는 방법이 있다. 이러한 랭킹 시스템은 일반적인 DBMS를 이용하여 랭킹을 계산하기 위한 숫자값을 저장하고, 정해진 시간마다 데이터베이스 질의 연산을 통해 랭킹을 산출해서 저장해두는 방식이다. 랭킹 시스템은 기본적인 데이터베이스 연산만으로 랭킹을 계산할 수 있고, 어플리케이션 입장에서도 데이터베이스에 저장된 랭킹 정보만 읽어가면 되기 때문에 가장 구현이 쉬운 방식이다.First, there is a way to use a ranking system that depends on the database. The ranking system stores a numerical value for calculating a ranking using a general DBMS, and calculates and stores the ranking through a database query operation at a predetermined time. The ranking system can calculate the ranking only by the basic database operation, and it is the easiest way to implement because the application only needs to read the ranking information stored in the database.

그러나, 데이터베이스에 의존하는 랭킹 시스템을 활용하는 경우, 데이터베이스에 소모되는 연산부하로 인해 실시간으로 랭킹을 계산하기 어렵다. 따라서, 랭 킹 시스템에서 랭킹을 계산하기 위한 숫자값을 저장해 둔 후, 정해진 시간마다(예를 들어, 하루 한번) 랭킹을 집계하고, 어플리케이션에서 집계된 랭킹 정보를 읽어간다. 실시간으로 계산하는 것이 불가능한 것은 아니나 그렇게 할 경우 데이터베이스에 부하가 되지 않을 정도로 랭킹 집계 범위를 축소할 필요가 있다. 결국 데이터베이스는 상대적으로 느린 반응성으로 인해 실시간 랭킹을 집계하기에는 적절치 않다.However, when using a ranking system that depends on the database, it is difficult to calculate the ranking in real time due to the computational load consumed in the database. Therefore, after storing a numerical value for calculating the ranking in the ranking system, the ranking is aggregated every predetermined time (for example, once a day), and the ranking information collected by the application is read. It is not impossible to calculate in real time, but doing so would reduce the scope of the ranking aggregates so that it would not overload the database. After all, the database is not suitable for aggregating real-time rankings because of its relatively slow reactivity.

두 번째로, 랭킹 서버를 직접 구축하는 방법이 있다. 이러한 방법은 비용이 많이 들고, 반응성이 느린 DBMS 대신 직접 랭킹 서버를 구현해서 랭킹 정보를 관리한다. 이때, 어플리케이션은 랭킹 서버와 정의된 인터페이스를 통해, 요청과 응답을 주고 받을 수 있다. 이 경우, 랭킹 서버는 개념상 랭킹 정보에 대해서 일종의 데이터베이스 캐시로 동작한다. 이러한 랭킹 서버는 내부에서 관리하고 있는 랭킹 정보를 영구적으로 저장할 필요가 있다. 이때, 랭킹 정보는 내/외부의 별도 DBMS를 활용하든가, 운영체제의 파일시스템을 이용해 직접 데이터 파일로 관리될 수 있다.Second, there is a way to build a ranking server yourself. This method manages the ranking information by implementing the ranking server directly instead of the expensive and responsive DBMS. In this case, the application may exchange a request and a response through the interface defined with the ranking server. In this case, the ranking server conceptually operates as a kind of database cache for the ranking information. Such a ranking server needs to permanently store ranking information managed internally. At this time, the ranking information may be managed as a data file directly by using a separate DBMS inside / outside, or using the file system of the operating system.

그러나, 하나의 단일 서버에서 랭킹 정보를 모두 처리해야 하므로, 랭킹 요청에 대한 트래픽이 아주 많거나, 저장된 랭킹 정보의 개수가 아주 많을 경우에는 물리적인 성능 한계에 직면하게 된다. 서비스 도메인별로 랭킹서버를 분리해서 분산처리할 수 있겠지만 그럴 경우 어플리케이션에서 서비스 도메일별로 할당된 랭킹 서버에 대한 정보를 모두 알고 있어야 하는 단점이 있다. 또한 단일 서비스 도메인에서 역시 성능 문제에 직면하게 되면 분산처리가 불가능하다. 또한, 랭킹 서버 개발에 시간이 걸리는 만큼이나, 랭킹을 새로운 서비스에 적용하기도 쉽지 않다. 랭킹 자체에 대한 스키마가 하드 코딩되어 있기 때문에 스키마를 바꾸거나 새로운 랭킹을 적용하기 위해서는 추가개발이 필요한 경우가 많다.However, since all of the ranking information must be processed by one single server, when the traffic for the ranking request is very large or the number of stored ranking information is very large, physical performance limitations are encountered. Although the ranking servers can be distributed and processed by service domains, there is a disadvantage in that the application must know all the information about the ranking servers assigned by service domains. In addition, if a performance problem is encountered in a single service domain as well, it cannot be distributed. In addition, as the ranking server development takes time, it is not easy to apply the ranking to new services. Because the schema for the ranking itself is hard-coded, additional development is often required to change the schema or apply a new ranking.

본 명세서에서는 이러한 대용량 랭킹을 실시간으로 그리고 효율적으로 산정할 수 있는 랭킹 데이터 시스템, 랭킹 질의 시스템 및 랭킹 산정 방법을 제안한다.In the present specification, a ranking data system, a ranking query system, and a ranking calculation method capable of calculating such a large-capacity ranking in real time and efficiently are proposed.

복수의 랭킹 데이터 시스템에 랭킹 정보를 분산 적재하고, 자신의 점수 구간에 대해서만 랭킹 정보를 처리하도록 함으로써, 실시간으로 대용량의 랭킹 산정이 가능한 랭킹 데이터 시스템 및 랭킹 산정 방법이 제공된다.There is provided a ranking data system and a ranking calculation method capable of calculating a large amount of ranking in real time by distributing and loading ranking information in a plurality of ranking data systems and processing the ranking information only for its own score section.

랭킹 라우트 테이블을 이용하여 어플리케이션의 질의에 맞는 랭킹 데이터 시스템으로 질의를 중계하고, 랭킹 데이터 시스템의 응답과 랭킹 라우트 테이블에 저장된 복수의 랭킹 데이터 시스템 각각의 카운터를 통해 순위를 결정함으로써, 실시간으로 대용량의 랭킹 산정이 가능한 랭킹 질의 시스템 및 랭킹 산정 방법이 제공된다.By using the ranking route table, the query is relayed to the ranking data system that matches the query of the application, and the ranking is determined through the counters of the ranking data system's responses and the plurality of ranking data systems stored in the ranking route table. A ranking query system and a ranking estimation method are provided that enable ranking estimation.

랭킹 데이터 시스템의 부하율(burst rate)에 기초하여 부하율이 높은 랭킹 데이터 시스템의 랭킹 정보 중 일부를 부하율이 낮은 랭킹 데이터 시스템으로 이동시킴으로써, 동적으로 부하를 분산시킬 수 있는 랭킹 데이터 시스템, 랭킹 질의 시스템 및 랭킹 산정 방법이 제공된다.A ranking data system, a ranking query system, which can dynamically distribute loads by moving some of the ranking information of the ranking data system with a high load rate to the ranking data system with a low load rate based on the burst rate of the ranking data system; A ranking calculation method is provided.

본 발명의 일실시예에 따른 랭킹 데이터 시스템은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성하는 자료구조 생성부, 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재하는 랭킹 정보 적재부, 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 질의에 대한 요청을 수신하는 요청 수신부 및 수신된 요청에 따른 동작을 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 랭킹 질의 시스템으로 전송하는 요청 처리부를 포함한다.The ranking data system according to an embodiment of the present invention reads attribute information of a ranking to be serviced from a ranking scheme table, and generates a data structure corresponding to the attribute information in a memory. The ranking information loading unit which receives the ranking information of the corresponding score section among the ranking information distributed in the ranking data system and loads it into the memory through the data structure generated, and the ranking which receives the query from the application among the plurality of ranking query systems. A request receiving unit for receiving a request for a query from the query system, and a request processing unit for processing the operation according to the received request for the loaded ranking information, and transmits the processing result to the ranking query system.

본 발명의 일측면에 따르면, 랭킹 데이터 시스템은 자신의 부하율(burst rate)을 계산하는 부하율 계산부를 포함할 수 있고, 상기 자신의 부하율 및 상기 복수의 랭킹 데이터 시스템 중 인접한 점수 구간의 랭킹 정보가 적재된 다른 랭킹 데이터 시스템의 부하율에 기초하여 상기 잭재된 랭킹 정보 중 일부가 상기 다른 랭킹 데이터 시스템으로 이동되거나 상기 다른 랭킹 데이터 시스템에 적재된 랭킹 정보의 일부가 이동될 수 있다.According to an aspect of the invention, the ranking data system may include a load rate calculation unit for calculating its own load rate (burst rate), the load information and the ranking information of the adjacent score interval of the plurality of ranking data system is loaded Some of the jacked ranking information may be moved to the other ranking data system or a part of the ranking information loaded in the other ranking data system based on the load rate of the other ranking data system.

본 발명의 일측면에 따르면, 적재된 랭킹 정보 중 일부는 자신의 부하율의 다른 랭킹 데이터 시스템의 부하율에 대한 비율이 일정 비율 이상인 경우, 다른 랭킹 데이터 시스템으로 이동될 수 있다.According to an aspect of the present invention, some of the loaded ranking information may be moved to another ranking data system when the ratio of the load ratio of the other ranking data system of its load rate is more than a certain ratio.

본 발명의 일측면에 따르면, 복수의 랭킹 데이터 시스템에서 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 점수 구간의 일부가 서로 중복되도록 적재될 수 있고, 이동되는 일부의 랭킹 정보는 다른 랭킹 데이터 시스템과 서로 중복되는 랭킹 정보를 포함할 수 있다.According to an aspect of the present invention, a plurality of ranking data systems may be loaded so that some of the score sections overlap each other for each ranking data system that loads the ranking information of the adjacent score sections, and some of the ranking information moved may be different rankings. The data system may include ranking information overlapping each other.

본 발명의 일측면에 따르면, 랭킹 데이터 시스템은 부하율을 복수의 랭킹 질의 시스템으로 브로드캐스팅하는 부하율 전송부를 더 포함할 수 있고, 부하율은 복수의 랭킹 질의 시스템이 포함하는 랭킹 라우팅 테이블에 갱신될 수 있다.According to one aspect of the invention, the ranking data system may further include a load rate transmission unit for broadcasting the load rate to a plurality of ranking query system, the load rate may be updated in the ranking routing table included in the plurality of ranking query system .

본 발명의 일측면에 따르면, 상기 점수 구간은 상기 복수의 랭킹 질의 시스템에서 상기 부하율에 기초하여 변경될 수 있고, 이동되는 일부의 랭킹 정보는 점수 구간의 변경에 따라 결정된 랭킹 정보를 포함할 수 있다.According to an aspect of the present invention, the score section may be changed based on the load ratio in the plurality of ranking query systems, and some of the ranking information moved may include ranking information determined according to the change of the score section. .

본 발명의 일측면에 따르면, 속성 정보는 관리자에게 제공되는 랭킹 관리 도구를 통해 생성될 수 있다.According to an aspect of the present invention, the attribute information may be generated through a ranking management tool provided to the administrator.

본 발명의 일측면에 따르면, 부하율은 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 결정될 수 있다.According to an aspect of the present invention, the load ratio may be determined according to the throughput per second (TPS) and the free memory capacity.

본 발명의 일측면에 따르면, 랭킹 데이터 시스템은 주기적으로 자신의 랭킹 정보를 상기 데이터베이스에 백업하는 백업부를 더 포함할 수 있다.According to an aspect of the invention, the ranking data system may further include a backup unit for periodically backing up its ranking information to the database.

본 발명의 일측면에 따르면, 질의는 랭킹 질의 시스템에서 랭킹 라우팅 테이블에 기초하여 복수의 랭킹 데이터 시스템 중 결정된 하나의 랭킹 데이터 시스템으로 전송될 수 있다.According to an aspect of the present invention, a query may be transmitted to a ranking data system determined from a plurality of ranking data systems based on the ranking routing table in the ranking query system.

본 발명의 일측면에 따르면, 요청 처리부에서 처리한 결과 및 랭킹 라우팅 테이블에 저장된 복수의 랭킹 데이터 시스템 각각에 대한 카운트에 기초하여 랭킹 질의 시스템에서 랭킹이 산정될 수 있고, 카운트는 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수를 포함할 수 있다.According to an aspect of the present invention, the ranking may be calculated in the ranking query system based on the results processed by the request processing unit and the counts for each of the plurality of ranking data systems stored in the ranking routing table, and the count may request ranking information or It may include the number of ranking service using the subject to register the ranking information.

본 발명의 일실시예에 따른 랭킹 산정 방법은 랭킹 데이터 시스템의 자료구조 생성부에서 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성하는 단계, 랭킹 데이터 시스템의 랭킹 정보 적재부에서 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적 재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재하는 단계, 랭킹 데이터 시스템의 요청 수신부에서 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 질의에 대한 요청을 수신하는 단계 및 랭킹 데이터 시스템의 요청 처리부에서 수신된 요청에 따른 동작을 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 랭킹 질의 시스템으로 전송하는 단계를 포함한다.In a ranking calculation method according to an embodiment of the present invention, a data structure generation unit of a ranking data system reads attribute information of a ranking to be serviced from a ranking scheme table, and generates a data structure corresponding to the attribute information in a memory. Receiving the ranking information of a corresponding score section among the ranking information divided by the score section in the ranking information loading unit of the system and distributed to the plurality of ranking data systems, and loading the memory into the memory through a data structure generated; Receiving a request for a query from the ranking query system that received a query from the application among the plurality of ranking query system in the request receiving unit of the ranking data system and the operation according to the request received in the request processing unit of the ranking data system For and process the results Transmitting a query King system.

본 발명의 일실시예에 따른 랭킹 질의 시스템은 복수의 랭킹 데이터 시스템으로부터 속성 정보 및 부하율 중 적어도 하나를 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신하는 테이블 관리부, 어플리케이션으로부터 수신된 질의를 분석하고, 랭킹 라우팅 테이블에 기초하여 복수의 랭킹 데이터 시스템 중 질의에 해당하는 랭킹 정보를 포함하는 랭킹 데이터 시스템으로 질의를 전송하는 질의 처리부, 질의에 대한 랭킹 데이터 시스템의 응답을 수신하여 어플리케이션으로 전송하는 응답 처리부 및 복수의 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 부하율에 기초하여 랭킹 라우팅 테이블에 갱신하는 점수 구간 갱신부를 포함한다.The ranking query system according to an embodiment of the present invention receives at least one of attribute information and a load rate from a plurality of ranking data systems to create or update a ranking routing table, analyzes a query received from an application, and rank routing A query processor for transmitting a query to a ranking data system including ranking information corresponding to a query among a plurality of ranking data systems, a response processor for receiving a response of the ranking data system for the query and transmitting the response to an application; And a score section updating unit for updating the score section of the ranking information included in the ranking data system to the ranking routing table based on the load ratio.

본 발명의 일실시예에 따른 랭킹 산정 시스템은 랭킹 질의 시스템의 테이블 관리부에서 복수의 랭킹 데이터 시스템으로부터 속성 정보 및 부하율 중 적어도 하나를 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신하는 단계, 랭킹 질의 시스템의 질의 처리부에서 어플리케이션으로부터 수신된 질의를 분석하고, 랭킹 라우팅 테이블에 기초하여 복수의 랭킹 데이터 시스템 중 질의에 해당하는 랭킹 정보를 포 함하는 랭킹 데이터 시스템으로 질의를 전송하는 단계, 랭킹 질의 시스템의 응답 처리부에서 질의에 대한 랭킹 데이터 시스템의 응답을 수신하여 어플리케이션으로 전송하는 단계 및 랭킹 질의 시스템의 점수 구간 갱신부에서 복수의 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 부하율에 기초하여 랭킹 라우팅 테이블에 갱신하는 점수 구간 갱신부를 포함한다.The ranking calculation system according to an embodiment of the present invention comprises generating or updating a ranking routing table by receiving at least one of attribute information and a load rate from a plurality of ranking data systems in a table management unit of a ranking query system, and querying a ranking query system. Analyzing the query received from the application in the processing unit and transmitting the query to a ranking data system including ranking information corresponding to the query among the plurality of ranking data systems based on the ranking routing table, in the response processing unit of the ranking query system Receiving a response of the ranking data system for the query and transmitting the response to the application and the score interval updating unit of the ranking query system updates the score interval of the ranking information each of the plurality of ranking data system in the ranking routing table based on the load ratio Ha Score section includes updating unit.

복수의 랭킹 데이터 시스템에 랭킹 정보를 분산 적재하고, 자신의 점수 구간에 대해서만 랭킹 정보를 처리하도록 함으로써, 실시간으로 대용량의 랭킹을 산정할 수 있다.A large capacity ranking can be calculated in real time by distributing and loading ranking information in a plurality of ranking data systems and processing the ranking information only for its own score section.

랭킹 라우트 테이블을 이용하여 어플리케이션의 질의에 맞는 랭킹 데이터 시스템으로 질의를 중계하고, 랭킹 데이터 시스템의 응답과 랭킹 라우트 테이블에 저장된 복수의 랭킹 데이터 시스템 각각의 카운터를 통해 순위를 결정함으로써, 실시간으로 대용량의 랭킹을 산정할 수 있다.By using the ranking route table, the query is relayed to the ranking data system that matches the query of the application, and the ranking is determined through the counters of the ranking data system's responses and the plurality of ranking data systems stored in the ranking route table. The ranking can be calculated.

랭킹 데이터 시스템의 부하율(burst rate)에 기초하여 부하율이 높은 랭킹 데이터 시스템의 랭킹 정보 중 일부를 부하율이 낮은 랭킹 데이터 시스템으로 이동시킴으로써, 동적으로 부하를 분산시킬 수 있다.Based on the load rate of the ranking data system, by moving some of the ranking information of the ranking data system with a high load rate to the ranking data system with a low load rate, the load can be distributed dynamically.

이하 첨부된 도면을 참조하여 본 발명에 따른 다양한 실시예를 상세히 설명하기로 한다.Hereinafter, various embodiments of the present disclosure will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 일실시예에 있어서, 랭킹 서비스를 제공하는 전체 시스템 의 개괄적인 모습을 도시한 도면이다.1 is a view showing an overview of an overall system for providing a ranking service according to an embodiment of the present invention.

여기서, 랭킹 서비스 시스템(100)은 복수의 랭킹 질의 서버 및 복수의 랭킹 데이터 서버로 구성되어 실시간 랭킹 서비스를 제공하는 서버군을 의미할 수 있다. 이때, 대용량의 랭킹 정보를 빠른 속도로 실시간 서비스 하기 위해 내부적으로 랭킹 정보를 분산 처리한다. 이때, 랭킹 서비스의 사용자는 내부 구조를 알 필요 없이 서비스로써 제공된 인터페이스를 이용하여 랭킹 서비스를 이용할 수 있다.Here, the ranking service system 100 may refer to a server group configured of a plurality of ranking query servers and a plurality of ranking data servers to provide a real-time ranking service. At this time, the ranking information is internally distributed in order to provide a large amount of ranking information in real time at a high speed. At this time, the user of the ranking service can use the ranking service using an interface provided as a service without knowing the internal structure.

랭킹 관리 도구(110)는 랭킹 마스터 스킴(120)을 관리하기 위해 제작된 툴로서 일례로, 개발 업무와 랭킹 서비스 운영 업무를 분리하기 위해 이용될 수 있다. 이러한 랭킹 관리 도구(110)는 랭킹 마스터 스킴(120)에 대한 정보뿐만 아니라 부정사용자 랭킹 삭제 처리, 랭킹 로그 확인 등 운영에 필요한 제반적인 기능을 제공할 수 있다.The ranking management tool 110 is a tool designed to manage the ranking master scheme 120. For example, the ranking management tool 110 may be used to separate a development task from a ranking service operation task. The ranking management tool 110 may provide general functions necessary for operation such as information on the ranking master scheme 120 as well as the process of deleting the illegal user ranking and checking the ranking log.

랭킹 마스터 스킴(120)은 랭킹의 속성과 같이 랭킹에 대한 메타 정보를 설정되는 것으로, 랭킹 스킴 테이블로서 유지될 수 있다. 이때, 랭킹 서비스 시스템(100)에 포함되는 랭킹 데이터 서버에서 이러한 랭킹 스킴 테이블을 통해 자신이 서비스할 랭킹에 맞는 자료구조를 생성할 수 있다. 이때, 랭킹 스킴 테이블에는 랭킹 서비스 도메인 이름, 랭킹 기간 타입(일간, 주간, 월간 또는 누적), 랭킹 정렬 속성(오름차순 또는 내림차순), 랭킹 동점자 처리 방식(최초등록자 우선 또는 최근 등록자 우선), 랭킹 종류 개수 지정 등과 같은 다양한 메타 정보가 설정될 수 있다.The ranking master scheme 120 sets meta information about the ranking, such as an attribute of the ranking, and may be maintained as a ranking scheme table. In this case, the ranking data server included in the ranking service system 100 may generate a data structure corresponding to the ranking to be serviced through the ranking scheme table. At this time, the ranking scheme table includes the ranking service domain name, the ranking period type (daily, weekly, monthly or cumulative), the ranking sort attribute (ascending or descending), the ranking tie processing method (first registrant first or latest registrant first), and the number of ranking types. Various meta information such as designation may be set.

데이터베이스(130)는 랭킹 데이터 서버의 메모리에 저장된 랭킹 정보를 백업 하는 외부 저장소로서, 최초 랭킹 데이터 서버는 자료구조를 생성한 후 데이터베이스로부터 필요한 랭킹 정보를 수신하여 메모리에 적재할 수 있다.The database 130 is an external storage for backing up the ranking information stored in the memory of the ranking data server. The first ranking data server may generate the data structure and receive the necessary ranking information from the database and load it into the memory.

어플리케이션(140)은 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체를 의미할 수 있다. 예를 들어, 사용자가 이용하는 단말기에서 동작하는 임의의 프로그램일 수 있다.The application 140 may refer to a ranking service user that requests ranking information or registers the ranking information. For example, it may be any program that runs on a terminal used by a user.

도 2는 본 발명의 일실시예에 있어서, 랭킹 서비스 시스템의 개괄적인 모습을 도시한 도면이다. 도 1을 통해 간단히 설명한 바와 같이, 랭킹 서비스 시스템(100)은 복수의 랭킹 데이터 시스템(210) 및 복수의 랭킹 질의 시스템(220)을 포함할 수 있다. 이때, 복수의 랭킹 데이터 시스템(210)은 도 1을 통해 설명한 복수의 랭킹 데이터 서버에, 복수의 랭킹 질의 시스템(220)은 도 1을 통해 설명한 복수의 랭킹 질의 서버에 각각 대응될 수 있다.2 is a view showing an overview of a ranking service system according to an embodiment of the present invention. As briefly described with reference to FIG. 1, the ranking service system 100 may include a plurality of ranking data systems 210 and a plurality of ranking query systems 220. In this case, the plurality of ranking data systems 210 may correspond to the plurality of ranking data servers described with reference to FIG. 1, and the plurality of ranking query systems 220 may correspond to the plurality of ranking query servers described with reference to FIG. 1.

이때, 어플리케이션(140)이 랭킹 서비스 시스템(100)으로 랭킹 정보를 요청하게 되면, 실제적으로는 복수의 랭킹 질의 시스템(220) 중 하나로 애니캐스트(anycast) 동작을 수행하게 된다. 이때, 애니캐스트는 L4(Layer-4) 스위치를 통해 수행되거나 어플리케이션(140)에서 소프트웨어적으로 수행될 수도 있다.At this time, when the application 140 requests the ranking information to the ranking service system 100, it actually performs an anycast operation with one of the plurality of ranking query systems 220. In this case, anycast may be performed through the Layer-4 (L4) switch or may be performed in software in the application 140.

이때, 복수의 랭킹 질의 시스템(220) 중 랭킹 정보의 요청에 따른 질의를 수신하는 랭킹 질의 시스템은 수신된 질의를 분석하고, 복수의 랭킹 데이터 시스템(210) 중 해당 랭킹 정보를 포함하는 랭킹 데이터 시스템으로 요청을 중계하여 질의를 전달하고, 랭킹 데이터 시스템으로부터 응답을 받아 다시 어플리케이션(140)으로 전달할 수 있다. 이때, 복수의 랭킹 질의 시스템(220)은 많은 트래픽 을 분산 처리할 필요가 있으므로 횡적으로 유연하게 확장될 수 있다.At this time, the ranking query system for receiving a query according to the request of the ranking information among the plurality of ranking query system 220 analyzes the received query, the ranking data system including the corresponding ranking information among the plurality of ranking data system 210 In response to the request, the query may be delivered, the response may be received from the ranking data system, and then transferred back to the application 140. In this case, since the plurality of ranking query system 220 needs to distribute a large amount of traffic, the ranking query system 220 may be flexibly expanded laterally.

복수의 랭킹 데이터 시스템(210)은 실제적인 랭킹 정보를 저장하는 곳으로, 빠른 처리를 위해 메모리에 랭킹 정보를 저장한다. 이러한 복수의 랭킹 데이터 시스템(210)은 랭킹 스킴 테이블에 포함된 랭킹의 속성 정보를 이용하여 최적의 자료구조를 생성할 수 있다. 이때, 물리적인 메모리에도 역시 한계가 있기 때문에 복수의 랭킹 데이터 시스템(210) 또한 횡적으로 유언하게 확장될 수 있다.The ranking data system 210 stores actual ranking information, and stores the ranking information in a memory for fast processing. The plurality of ranking data systems 210 may generate an optimal data structure by using attribute information of the ranking included in the ranking scheme table. In this case, since the physical memory is also limited, the plurality of ranking data systems 210 may also be horizontally extended.

도 3은 본 발명의 일실시예에 있어서, 랭킹 데이터 시스템의 내부 구성을 설명하기 위한 블록도이다. 본 실시예에 따른 랭킹 데이터 시스템(300)은 도 2를 통해 설명한 복수의 랭킹 데이터 시스템(210) 중 하나일 수 있다. 또한, 랭킹 데이터 시스템(300)은 도 3에 도시된 바와 같이, 자료구조 생성부(310), 랭킹 정보 적재부(320), 요청 수신부(330), 요청 처리부(340), 부하율 계산부(350), 부하율 전송부(360) 및 백업부(370)를 포함할 수 있다.3 is a block diagram illustrating an internal configuration of a ranking data system according to an embodiment of the present invention. The ranking data system 300 according to the present embodiment may be one of the plurality of ranking data systems 210 described with reference to FIG. 2. In addition, as shown in FIG. 3, the ranking data system 300 includes a data structure generator 310, a ranking information loader 320, a request receiver 330, a request processor 340, and a load factor calculator 350. ), The load factor transmitter 360 and the backup unit 370 may be included.

자료구조 생성부(310)는 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성한다. 이때, 속성 정보는 관리자에게 제공되는 랭킹 관리 도구를 통해 생성될 수 있다.The data structure generation unit 310 reads the attribute information of the ranking to be serviced from the ranking scheme table, and generates a data structure corresponding to the attribute information in the memory. At this time, the attribute information may be generated through a ranking management tool provided to the administrator.

랭킹 정보 적재부(320)는 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재한다. 보다 자세하게, 랭킹은 서비스 도메인별로 분할되고, 다시 랭킹 정보는 점수 구간에 따라 분할될 수 있다. 이때, 랭킹 데이터 시스템(300)은 자신에게 할당된 점수 구간에 대해서 만 순위를 계산할 수 있고, 이를 위해 랭킹 정보 적재부(320)는 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 메모리에 적재할 수 있다.The ranking information loading unit 320 receives the ranking information of the corresponding score section among the ranking information divided by the score section distributed in a plurality of ranking data systems from the database and loads the ranking information into the memory through the data structure generated. In more detail, the ranking may be divided by service domain, and again, the ranking information may be divided according to a score section. At this time, the ranking data system 300 may calculate the ranking only for the score section assigned to it, for this purpose, the ranking information loading unit 320 receives the ranking information of the corresponding score section from the database and loads it into the memory. Can be.

요청 수신부(330)는 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 질의에 대한 요청을 수신한다. 이때, 질의는 랭킹 질의 시스템에서 랭킹 라우팅 테이블에 기초하여 복수의 랭킹 데이터 시스템 중 결정된 하나로 전송될 수 있다. 이러한 랭킹 라우팅 테이블은 복수의 랭킹 질의 시스템 모두에서 동일한 값을 가질 수 있다. 일례로, 랭킹 데이터 시스템(300)은 적재된 랭킹 정보가 갱신되는 경우, 복수의 랭킹 질의 시스템으로 정보를 브로드캐스팅하여 랭킹 라우팅 테이블이 동일하게 갱신되도록 할 수 있다.The request receiving unit 330 receives a request for a query from a ranking query system that receives a query from an application among a plurality of ranking query systems. In this case, the query may be transmitted to one of the plurality of ranking data systems based on the ranking routing table in the ranking query system. This ranking routing table may have the same value in all of the plurality of ranking query systems. For example, when the ranking information loaded is updated, the ranking data system 300 may broadcast the information to a plurality of ranking query systems so that the ranking routing table may be updated in the same manner.

요청 처리부(340)는 수신된 요청에 따른 동작을 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 랭킹 질의 시스템으로 전송한다. 요청 처리부(340)에서 처리한 결과 및 랭킹 라우팅 테이블에 저장된 복수의 랭킹 데이터 시스템 각각에 대한 카운트에 기초하여 랭킹 질의 시스템에서 랭킹이 산정될 수 있고, 카운트는 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수를 포함할 수 있다. 따라서, 랭킹 질의 시스템은 복수의 랭킹 데이터 시스템 각각에 해당하는 점수 구간에 포함된 이용 주체의 수를 랭킹 라우팅 테이블에 저장된 카운트를 통해 알 수 있기 때문에 복수의 랭킹 데이터 시스템 중 하나에서의 랭킹을 알면, 랭킹 서비스 이용 주체 전체에서 질의를 요청한 어플리케이션의 랭킹을 산정할 수 있다. 이러한 랭킹 산정에 대해서는 아래 도 5를 통해 더욱 자세히 설명한다.The request processor 340 processes an operation according to the received request with respect to the loaded ranking information, and transmits the processed result to the ranking query system. The ranking may be calculated in the ranking query system based on the results processed by the request processing unit 340 and the counts for each of the plurality of ranking data systems stored in the ranking routing table, and the count may be used to request ranking information or register ranking information. It may include the number of users using the ranking service. Therefore, since the ranking query system can know the number of users included in the score interval corresponding to each of the plurality of ranking data systems through the count stored in the ranking routing table, knowing the ranking in one of the plurality of ranking data systems, The ranking of the application requesting the query can be calculated in the entire ranking service subject. This ranking calculation will be described in more detail with reference to FIG. 5 below.

부하율 계산부(350)는 자신의 부하율(burst rate)을 계산한다. 여기서, 부 하율은 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 결정될 수 있다. 예를 들어 부하율은 하기 수학식 1과 같이 계산될 수 있다.The load rate calculation unit 350 calculates its own burst rate. Here, the load rate may be determined according to the throughput per second (TPS) and the free memory capacity. For example, the load factor may be calculated as in Equation 1 below.

부하율 = Exceed TPS * 100 + (1,000,000/ 여유 메모리 용량)Load factor = Exceed TPS * 100 + (1,000,000 free memory capacity)

여기서, 'Exceed TPS'는 '현재 TPS - 5000'의 값을 가질 수 있고, 'Exceed TPS'가 음수인 경우, '0'으로 보정될 수 있다. 또한, 여유 메모리 용량의 단위는 메가 바이트일 수 있다.Here, the 'Exceed TPS' may have a value of 'Current TPS-5000', and when 'Exceed TPS' is negative, it may be corrected to '0'. In addition, the unit of the free memory capacity may be megabytes.

이때, 자신의 부하율 및 복수의 랭킹 데이터 시스템 중 인접한 점수 구간의 랭킹 정보가 적재된 다른 랭킹 데이터 시스템의 부하율에 기초하여 잭재된 랭킹 정보 중 일부가 다른 랭킹 데이터 시스템으로 이동되거나 다른 랭킹 데이터 시스템에 적재된 랭킹 정보의 일부가 이동될 수 있다. 보다 자세하게, 적재된 랭킹 정보 중 일부는 자신의 부하율의 다른 랭킹 데이터 시스템의 부하율에 대한 비율이 일정 비율 이상인 경우, 다른 랭킹 데이터 시스템으로 이동될 수 있다. 예를 들어, 점수 구간이 서로 인접한 랭킹 데이터 시스템 H와 I에서 H의 부하율이 I의 부하율보다 1.5배 이상 큰 경우, H에 적재된 랭킹 정보 중 일부를 I로 이동시킴으로써, H의 부하를 줄일 수 있다. 이때, I 또한 점수 구간이 인접한 랭킹 데이터 시스템 J와 부하율을 비교할 수 있고, 순차적으로 점수 구간이 서로 인접한 모든 랭킹 데이터 시스템의 부하율을 비교함으로써, 동적으로 부하를 분산시킬 수 있다.At this time, part of the ranking information jacked based on its load rate and the load rate of another ranking data system in which ranking information of adjacent score sections among the plurality of ranking data systems is loaded is moved to another ranking data system or loaded in another ranking data system. A part of the ranked ranking information may be moved. In more detail, some of the loaded ranking information may be moved to another ranking data system when the ratio of its load rate to the load rate of another ranking data system is more than a certain ratio. For example, in the ranking data systems H and I where the score intervals are adjacent to each other, if the load ratio of H is 1.5 times larger than the load ratio of I, some of the ranking information loaded in H may be moved to I, thereby reducing the load of H. have. In this case, I may also compare the load ratio with the ranking data system J adjacent to the score section, and load may be dynamically distributed by sequentially comparing the load rates of all the ranking data systems with adjacent score sections.

또한, 복수의 랭킹 데이터 시스템에서 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 점수 구간의 일부가 서로 중복되도록 적재될 수 있고, 이때 이동되는 일부의 랭킹 정보는 다른 랭킹 데이터 시스템과 서로 중복되는 랭킹 정보를 포함할 수 있다. 이는 점수 구간의 종단에 위치한 랭킹 정보에 대해서 인접한 랭킹 정보를 요청하게 되는 경우, 두 개의 랭킹 데이터 서버로 읽기 요청을 해야 하는 것을 방지하기 위해 점수 구간을 서로 중복되게 설정함으로써, 리스트에 대한 읽기 요청이 반드시 한 개의 랭킹 데이터 서버에 대해서만 발생하도록 한정하기 위함이다. 이때, 부하율에 따라 중복된 랭킹 정보가 이동되도록 할 수 있다.In addition, for each of the ranking data systems that load the ranking information of the score sections adjacent to each other in the plurality of ranking data systems, some of the score sections may be stacked to overlap each other, and at this time, some of the ranking information may be overlapped with other ranking data systems. The ranking information may be included. When requesting the adjacent ranking information for the ranking information located at the end of the score interval, the score interval is set to overlap each other to prevent the reading request to the two ranking data server, so that the read request for the list is This is to limit the occurrence to only one ranking data server. In this case, the overlapping ranking information may be moved according to the load ratio.

부하율 전송부(360)는 부하율을 복수의 랭킹 질의 시스템으로 브로드캐스팅한다. 이때, 부하율은 복수의 랭킹 질의 시스템이 포함하는 랭킹 라우팅 테이블에 갱신될 수 있다. 이 경우, 점수 구간은 복수의 랭킹 질의 시스템에서 부하율에 기초하여 변경될 수 있고, 이동되는 일부의 랭킹 정보는 점수 구간의 변경에 따라 결정된 랭킹 정보를 포함할 수 있다. 즉, 부하율에 따른 랭킹 정보의 이동이 랭킹 데이터 시스템간의 데이터 이동을 통해서 이루어질 수도 있지만, 랭킹 라우팅 테이블에서 변경된 점수 구간의 랭킹 정보를 각각의 랭킹 데이터 시스템에서 데이터베이스로부터 다시 수신하여 적재함으로써 이루어질 수도 있다.The load rate transmitter 360 broadcasts the load rate to a plurality of ranking query systems. In this case, the load ratio may be updated in a ranking routing table included in a plurality of ranking query systems. In this case, the score section may be changed based on the load ratio in the plurality of ranking query systems, and the some ranking information moved may include ranking information determined according to the change of the score section. That is, the movement of the ranking information according to the load ratio may be performed through data movement between the ranking data systems, but may also be achieved by receiving and loading the ranking information of the score section changed in the ranking routing table from the database in each ranking data system.

백업부(370)는 주기적으로 자신의 랭킹 정보를 데이터베이스에 백업한다.The backup unit 370 periodically backs up its ranking information to the database.

도 4는 본 발명의 일실시예에 있어서, 랭킹 질의 시스템의 내부 구성을 설명하기 위한 블록도이다. 본 실시예에 따른 랭킹 질의 시스템(400)은 도 2를 통해 설명한 복수의 랭킹 질의 시스템(220) 중 하나일 수 있다. 또한, 랭킹 질의 시스템(400)은 도 4에 도시된 바와 같이 테이블 관리부(410), 질의 처리부(420), 응답 처리부(430) 및 점수 구간 갱신부(440)를 포함할 수 있다.4 is a block diagram illustrating an internal configuration of a ranking query system according to an embodiment of the present invention. The ranking query system 400 according to the present embodiment may be one of the plurality of ranking query systems 220 described with reference to FIG. 2. In addition, the ranking query system 400 may include a table manager 410, a query processor 420, a response processor 430, and a score interval update unit 440 as shown in FIG. 4.

테이블 관리부(410)는 복수의 랭킹 데이터 시스템으로부터 속성 정보 및 부하율 중 적어도 하나를 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신한다. 이때, 부하율은 상기 복수의 랭킹 데이터 시스템에서 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 각각 결정되어 브로드캐스트될 수 있다. 또한, 복수의 랭킹 데이터 시스템 각각은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성할 수 있다. 즉, 테이블 관리부(410)는 복수의 랭킹 데이터 시스템으로부터 각각 수신되는 속성 정보와 부하율을 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신할 수 있다.The table manager 410 receives at least one of the attribute information and the load factor from the plurality of ranking data systems to generate or update the ranking routing table. In this case, the load ratio may be determined and broadcasted according to throughput per second (TPS) and free memory capacity in the plurality of ranking data systems, respectively. In addition, each of the plurality of ranking data systems may read attribute information of ranking to be serviced from the ranking scheme table, and generate a data structure corresponding to the attribute information in the memory. That is, the table manager 410 may generate or update the ranking routing table by receiving attribute information and load rates respectively received from the plurality of ranking data systems.

이때, 복수의 랭킹 데이터 시스템 각각은 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재할 수 있다. 이 경우, 복수의 랭킹 데이터 시스템 중 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 점수 구간의 일부가 서로 중복되도록 적재될 수 있고, 랭킹 라우팅 테이블은 중복되지 않게 적재된 랭킹 정보의 점수 구간을 읽기(read) 구간으로서, 중복되지 않게 적재된 랭킹 정보의 점수 구간 및 중복되어 적재된 랭킹 정보의 점수 구간은 쓰기(right) 구간으로서, 각각 저장할 수 있다. 즉, 쓰기 동작은 동시에 두 개의 랭킹 데이터 시스템에서 발생할 수 있지만, 읽기 동작은 반드시 하나의 랭킹 데이터 시스템에서 발생하도록 한정할 수 있다.In this case, each of the plurality of ranking data systems may be divided according to the score section and loaded into the memory through the data structure generated by receiving the ranking information of the corresponding score section among the ranking information distributed in the plurality of ranking data systems from the database. have. In this case, each of the ranking data systems for loading the ranking information of the score section adjacent to each other among the plurality of ranking data system may be stacked so that a part of the score section is overlapped with each other, the ranking routing table is the score section of the ranking information loaded without overlapping Denotes a read interval, and a score interval of non-overlapping ranking information and a score interval of overlapped stacked ranking information are stored as right intervals, respectively. That is, the write operation may occur in two ranking data systems at the same time, but the read operation may be limited to occur in one ranking data system.

질의 처리부(420)는 어플리케이션으로부터 수신된 질의를 분석하고, 상기 랭 킹 라우팅 테이블에 기초하여 상기 복수의 랭킹 데이터 시스템 중 상기 질의에 해당하는 랭킹 정보를 포함하는 랭킹 데이터 시스템으로 상기 질의를 전송한다. 이때, 어플리케이션으로부터의 질의는 애니캐스트(anycast) 전송 방식을 통해 복수의 랭킹 질의 시스템 중 하나로 전송될 수 있다.The query processor 420 analyzes a query received from an application and transmits the query to a ranking data system including ranking information corresponding to the query among the plurality of ranking data systems based on the ranking routing table. In this case, the query from the application may be transmitted to one of a plurality of ranking query systems through an anycast transmission scheme.

응답 처리부(430)는 상기 질의에 대한 상기 랭킹 데이터 시스템의 응답을 수신하여 상기 어플리케이션으로 전송한다. 이때, 랭킹 라우팅 테이블은 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수인 카운트를 상기 복수의 랭킹 데이터 시스템별로 포함할 수 있고, 응답 및 카운트에 기초하여 랭킹이 산정될 수 있다.The response processor 430 receives a response of the ranking data system for the query and transmits the response to the application. In this case, the ranking routing table may include a count, which is the number of ranking service users who request ranking information or register ranking information, for each of the plurality of ranking data systems, and the ranking may be calculated based on the response and the count.

예를 들어, 전체 점수 구간이 0점부터 99점까지이고, 10점 단위로 10개의 점수 구간으로 분류되고, 각각 제1 랭킹 데이터 시스템 내지 제10 랭킹 데이터 시스템의 10개의 랭킹 데이터 시스템에서 해당 점수 구간의 랭킹 정보를 포함한다고 가정하자. 이때, 질의가 70점 내지 79점의 점수 구간에 포함된 랭킹을 요청한다면, 랭킹 질의 시스템(400)은 제8 랭킹 데이터 시스템으로 질의를 중계하여 응답을 수신함으로써 70점 내지 79점의 점수 구간 내에서의 순위를 얻을 수 있다. 또한, 랭킹 질의 시스템(400)은 랭킹 라우팅 테이블에서 제9 랭킹 데이터 시스템 및 제10 랭킹 데이터 시스템의 카운트를 확인함으로써, 80점 내지 89점의 점수 구간과 90점 내지 99점의 점수 구간에 포함된 랭킹 서비스 이용 주체의 수를 확인하여 원하는 점수 구간 외에서의 순위를 얻을 수 있다. 즉, 랭킹 질의 시스템(400)은 제9 랭킹 데이터 시스템 및 제10 랭킹 데이터 시스템의 카운트와 70점 내지 79점의 점수 구 간 내에서의 순위를 합산함으로써 간단히 어플리케이션의 랭킹을 계산할 수 있다.For example, the total score section is from 0 to 99 points, and is divided into 10 score sections in units of 10 points, and corresponding score sections in the 10 ranking data systems of the first ranking data system to the tenth ranking data system, respectively. Suppose we include ranking information for. At this time, if the query requests the ranking included in the score interval of 70 to 79 points, the ranking query system 400 relays the query to the eighth ranking data system to receive a response within the score interval of 70 to 79 points You can get a rank at. In addition, the ranking query system 400 checks the counts of the ninth ranking data system and the tenth ranking data system in the ranking routing table, and is included in the score section of 80 to 89 points and the score section of 90 to 99 points. The number of subjects using the ranking service may be checked to obtain a ranking outside the desired score section. That is, the ranking query system 400 may simply calculate the ranking of the application by summing the counts of the ninth ranking data system and the tenth ranking data system and rankings within a score section of 70 to 79 points.

점수 구간 갱신부(440)는 복수의 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 부하율에 기초하여 상기 랭킹 라우팅 테이블에 갱신한다. 이때, 점수 구간 갱신부(440)는 서로 인접한 랭킹 데이터 시스템의 부하율간의 비율이 A 이상인 경우, 상기 부하율에 기초하여 상기 서로 인접한 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 랭킹 라우팅 테이블에 갱신할 수 있다. 여기서, 서로 인접한 랭킹 데이터 시스템은 서로 인접한 점수 구간의 랭킹 정보를 각각 포함하는 랭킹 데이터 시스템을 의미할 수 있다.The score section updater 440 updates the score section of the ranking information included in each of the ranking data systems in the ranking routing table based on the load ratio. In this case, when the ratio between the load ratios of the ranking data systems adjacent to each other is equal to or greater than A, the score interval update unit 440 may include the score intervals of the ranking information included in the ranking data systems adjacent to each other based on the load ratios in the ranking routing table. Can be updated. Here, the ranking data systems adjacent to each other may mean a ranking data system including ranking information of score sections adjacent to each other.

예를 들어, 점수 구간이 서로 인접한 랭킹 데이터 시스템 H와 I에서 H의 부하율이 I의 부하율보다 1.5배 이상 큰 경우, H에 적재된 랭킹 정보 중 일부를 I로 이동시킴으로써, H의 부하를 줄일 수 있다. 이때, I 또한 점수 구간이 인접한 랭킹 데이터 시스템 J와 부하율을 비교할 수 있고, 순차적으로 점수 구간이 서로 인접한 모든 랭킹 데이터 시스템의 부하율을 비교함으로써, 동적으로 부하를 분산시킬 수 있다.For example, in the ranking data systems H and I where the score intervals are adjacent to each other, if the load ratio of H is 1.5 times larger than the load ratio of I, some of the ranking information loaded in H may be moved to I, thereby reducing the load of H. have. In this case, I may also compare the load ratio with the ranking data system J adjacent to the score section, and load may be dynamically distributed by sequentially comparing the load rates of all the ranking data systems with adjacent score sections.

이와 같이, 본 발명의 실시예들에 따른 랭킹 질의 시스템 및 랭킹 데이터 시스템을 이용하면, 복수의 랭킹 데이터 시스템에 랭킹 정보를 분산 적재하고, 자신의 점수 구간에 대해서만 랭킹 정보를 처리하도록 함으로써, 실시간으로 대용량의 랭킹을 산정할 수 있고, 랭킹 라우트 테이블을 이용하여 어플리케이션의 질의에 맞는 랭킹 데이터 시스템으로 질의를 중계하고, 랭킹 데이터 시스템의 응답과 랭킹 라우트 테이블에 저장된 복수의 랭킹 데이터 시스템 각각의 카운터를 통해 순위를 결정함으로써, 실시간으로 대용량의 랭킹을 산정할 수 있다. 또한, 랭킹 데이터 시스템의 부하율에 기초하여 부하율이 높은 랭킹 데이터 시스템의 랭킹 정보 중 일부를 부하율이 낮은 랭킹 데이터 시스템으로 이동시킴으로써, 동적으로 부하를 분산시킬 수 있다.As such, when using the ranking query system and the ranking data system according to the embodiments of the present invention, the ranking information is distributed and loaded in the plurality of ranking data systems, and the ranking information is processed only for its own score section in real time. A large amount of ranking can be calculated, and the ranking route system relays the query to the ranking data system suitable for the application's query, and the counter of each ranking data system stored in the ranking route system's response and the ranking route system By determining the ranking, a large capacity ranking can be calculated in real time. Further, by moving some of the ranking information of the ranking data system having a high load ratio to the ranking data system having a low load ratio based on the load ratio of the ranking data system, the load can be distributed dynamically.

도 5는 본 발명의 일실시예에 따른 랭킹 질의 시스템이 포함하는 랭킹 라우팅 테이블의 일례이다. 제1 테이블(510)은 각각의 게임 식별자와 테이블 포인터를 포함하고 있다. 즉, 제1 테이블(510)은 일차적으로 랭킹 정보를 서비스 도메인별로 분류한 모습을 나타낸다. 제2 테이블(520)은 하나의 게임에 대해 점수 구간을 읽기 구간 및 쓰기 구간으로 나누어서 각 점수 구간에 대한 최소값 및 최대값, 점수 구간에 포함된 랭킹 서비스 이용 주체의 수를 나타내는 카운트, 해당 점수 구간의 랭킹 정보가 적재된 랭킹 데이터 시스템의 주소 및 각 랭킹 데이터 시스템의 부하율을 포함하고 있다.5 is an example of a ranking routing table included in a ranking query system according to an embodiment of the present invention. The first table 510 includes respective game identifiers and table pointers. That is, the first table 510 primarily shows ranking information classified by service domains. The second table 520 divides the score section into a reading section and a writing section for one game, so that the minimum and maximum values for each score section, the count representing the number of ranking service users included in the score section, and the corresponding score section It includes the address of the ranking data system loaded with the ranking information of and the load ratio of each ranking data system.

만약, 제2 테이블(520)에 나타난 3개의 랭킹 데이터 시스템만이 존재하고, 전체 점수 구간이 '0'점에서 '10000'점이라고 가정하자. 이때, 랭킹 질의 시스템이 읽기 구간이 '4000'점에서 '6000'점 사이인 제2 랭킹 데이터 시스템으로부터 응답으로써, 랭킹 '100'을 수신하였다면, 어플리케이션의 랭킹은 읽기 구간이 '7000'점에서 '9000'점 사이인 제3 랭킹 데이터 시스템의 카운트 '734'와 응답 '100'의 합인 '834'임을 확인할 수 있다.Suppose that there are only three ranking data systems shown in the second table 520, and the total score interval is '0' to '10000'. In this case, if the ranking query system receives the ranking '100' as a response from the second ranking data system having the read interval between '4000' and '6000', the ranking of the application is' at the read interval '7000'. It can be seen that the sum '734' of the third ranking data system between 9000 'points and' 834 'is the sum of the responses' 100'.

또한, 제3 랭킹 데이터 시스템의 부하율은 '7832'로 제2 랭킹 데이터 시스템의 부하율 '4423'보다 1.5배 이상 크기 때문에 제3 랭킹 데이터 시스템의 랭킹 정 보 중 일부를 제2 랭킹 데이터 시스템으로 전송해서 제3 랭킹 데이터 시스템의 부하를 줄일 수 있다. 이때, 제2 테이블(520)의 쓰기 구간 최소값 및 쓰기 구간 최대값을 통해 제3 랭킹 데이터 시스템과 제2 랭킹 데이터 시스템은 '6000'점에서 '7000'점 사이의 점수 구간에 해당하는 랭킹 정보가 서로 중복 적재되어 있음을 알 수 있다. 즉, 랭킹 질의 시스템은 제2 랭킹 데이터 시스템의 읽기 구간의 최대값을 기존 '6000'점에서 '7000'점으로 갱신하고, 쓰기 구간의 최대값을 '7000'점에서 '8000'점으로 갱신할 수 있다. 또한, 랭킹 질의 시스템은 제3 랭킹 데이터 시스템의 읽기 구간의 최소값을 '7000'점에서 '8000'점으로 갱신하고, 쓰기 구간의 최소값을 '6000'점에서 '7000'점으로 갱신할 수 있다. 즉, 갱신 전에 어플리케이션이 점수 '7500'점인 사용자의 랭킹을 요청한다면, 랭킹 질의 시스템은 제3 랭킹 데이터 시스템으로 해당 요청을 중계한다. 그러나, 갱신 후에는 제2 랭킹 데이터 시스템으로 해당 요청을 중계하게 되어 제3 랭킹 데이터 시스템의 부하가 감소한다. 이때, '7500'점은 제2 랭킹 데이터 시스템과 제3 랭킹 데이터 시스템 모두의 읽기 구간에는 해당하지 않으나 제2 랭킹 데이터 시스템과 제3 랭킹 데이터 시스템 모두에 해당 점수에 대한 랭킹 정보가 중복 적재되어 있기 때문에 랭킹 질의 시스템은 부하율에 따라 부하율이 작은 랭킹 데이터 시스템으로 요청을 중계할 수 있다. 이때, 제3 랭킹 데이터 시스템에서 제2 랭킹 데이터 시스템으로 해당 랭킹 정보를 직접 전송하거나 또는, 변경된 구간에 따라 데이터베이스로부터 해당 점수 구간에 따른 랭킹 정보를 다시 적재함으로써, 갱신이 적용될 수 있다.In addition, since the load rate of the third ranking data system is '7832' and is 1.5 times larger than the load rate of the second ranking data system '4423', some of the ranking information of the third ranking data system is transmitted to the second ranking data system. The load of the third ranking data system can be reduced. In this case, the third ranking data system and the second ranking data system have ranking information corresponding to a score section between '6000' points and '7000' points through the write section minimum value and the write section maximum value of the second table 520. It can be seen that they are stacked on top of each other. That is, the ranking query system may update the maximum value of the read interval of the second ranking data system from the existing '6000' point to '7000' point, and update the maximum value of the write interval from '7000' point to '8000' point. Can be. In addition, the ranking query system may update the minimum value of the read interval of the third ranking data system from '7000' to '8000' and the minimum value of the write interval from '6000' to '7000'. That is, if the application requests the ranking of the user having a score of '7500' before updating, the ranking query system relays the request to the third ranking data system. However, after the update, the request is relayed to the second ranking data system, thereby reducing the load of the third ranking data system. In this case, the '7500' points do not correspond to the reading intervals of both the second ranking data system and the third ranking data system, but the ranking information of the corresponding scores is overlapped in both the second ranking data system and the third ranking data system. Therefore, the ranking query system may relay the request to the ranking data system having a small load rate according to the load rate. In this case, the update may be applied by directly transmitting the corresponding ranking information from the third ranking data system to the second ranking data system or by reloading the ranking information according to the corresponding score section from the database according to the changed section.

제2 랭킹 데이터 시스템에서 변경된 점수 구간으로 인해 부하율이 높아지면, 읽기 구간이 '0점에서 '3000'점 사이인 제1 랭킹 데이터 시스템과 위 동작을 반복함으로써, 부하를 전체 서비스 영역에 고루 분산시킬 수 있다.If the load ratio is increased due to the changed score interval in the second ranking data system, the above operation is repeated with the first ranking data system having a read interval of '0 to' 3000 ', thereby spreading the load evenly over the entire service area. Can be.

도 6은 본 발명의 일실시예에 따른 랭킹 데이터 시스템에 적재되는 랭킹 정보의 일례이다. 제1 구간(601) 내지 제4 구간(604)은 4개의 랭킹 데이터 시스템 각각에 해당하는 점수 구간을 의미할 수 있다. 이때, 도 6에 도시된 바와 같이 각각의 랭킹 데이터 시스템은 점수 구간의 일부가 서로 중복될 수 있다. 이는, 점수 구간의 양종단에 위치한 랭킹 정보에 대해 인접한 랭킹 정보를 요청하게 되는 경우 두 개의 랭킹 데이터 시스템으로 요청을 중계해야 하는 상황을 방지하기 위한 것이다. 예를 들어, '2999'점의 랭킹 정보와 '3000'점의 랭킹 정보가 필요한 경우에는 제1 구간(601)에 대한 랭킹 데이터 시스템으로, '4000'점과 '4001'점에 대한 랭킹 정보가 필요한 경우에는 와 제2 구간(602)에 대한 랭킹 데이터 시스템으로 요청을 중계함으로써, 쓰기 요청이 최대 2개의 랭킹 데이터 시스템에서 일어나더라도 읽기 요청을 반드시 하나의 랭킹 데이터 서버로 한정시킬 수 있다.6 is an example of ranking information loaded into a ranking data system according to an embodiment of the present invention. The first section 601 to the fourth section 604 may mean a score section corresponding to each of the four ranking data systems. In this case, as shown in FIG. 6, each of the ranking data systems may overlap a part of the score intervals. This is to prevent a situation in which a request should be relayed to two ranking data systems when adjacent ranking information is requested for ranking information located at both ends of a score section. For example, if ranking information of '2999' points and ranking information of '3000' points are needed, the ranking information for the '4000' points and the '4001 points' is a ranking data system for the first section 601. If necessary, by relaying the request to the ranking data system for the second interval 602, the read request may be limited to one ranking data server even if a write request occurs in up to two ranking data systems.

도 7은 본 발명의 일실시예에 있어서, 랭킹 산정 방법을 도시한 흐름도이다. 본 실시예에 따른 랭킹 산정 방법은 도 3을 통해 설명한 랭킹 데이터 시스템(300)에 의해 수행될 수 있다. 도 3에서는 랭킹 데이터 시스템(300)에 의해 각각의 단계가 수행되는 과정을 설명함으로써, 랭킹 산정 방법을 설명한다.7 is a flowchart illustrating a ranking calculation method according to an embodiment of the present invention. The ranking calculation method according to the present embodiment may be performed by the ranking data system 300 described with reference to FIG. 3. In FIG. 3, a ranking calculation method will be described by describing a process in which each step is performed by the ranking data system 300.

단계(710)에서 랭킹 데이터 시스템(300)은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성한다. 이때, 속성 정보는 관리자에게 제공되는 랭킹 관리 도구를 통해 생성될 수 있다.In step 710, the ranking data system 300 reads the attribute information of the ranking to be serviced from the ranking scheme table, and creates a data structure corresponding to the attribute information in memory. At this time, the attribute information may be generated through a ranking management tool provided to the administrator.

단계(720)에서 랭킹 데이터 시스템(300)은 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재한다. 보다 자세하게, 랭킹은 서비스 도메인별로 분할되고, 다시 랭킹 정보는 점수 구간에 따라 분할될 수 있다. 이때, 랭킹 데이터 시스템(300)은 자신에게 할당된 점수 구간에 대해서만 순위를 계산할 수 있고, 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 메모리에 적재할 수 있다.In step 720, the ranking data system 300 is divided according to the score intervals and distributed to the plurality of ranking data systems among the ranking information of the corresponding score intervals among the ranking information received from the database to the memory structure through the data structure generated Load it. In more detail, the ranking may be divided by service domain, and again, the ranking information may be divided according to a score section. In this case, the ranking data system 300 may calculate the ranking only for the score section allocated to the ranking data system 300, and receive the ranking information of the corresponding score section from the database and load the ranking information in the memory.

단계(730)에서 랭킹 데이터 시스템(300)은 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 질의에 대한 요청을 수신한다. 이때, 질의는 랭킹 질의 시스템에서 랭킹 라우팅 테이블에 기초하여 복수의 랭킹 데이터 시스템 중 결정된 하나로 전송될 수 있다. 이러한 랭킹 라우팅 테이블은 복수의 랭킹 질의 시스템 모두에서 동일한 값을 가질 수 있다. 일례로, 랭킹 데이터 시스템(300)은 적재된 랭킹 정보가 갱신되는 경우, 복수의 랭킹 질의 시스템으로 정보를 브로드캐스팅하여 랭킹 라우팅 테이블이 동일하게 갱신되도록 할 수 있다.In operation 730, the ranking data system 300 receives a request for a query from a ranking query system that receives a query from an application among a plurality of ranking query systems. In this case, the query may be transmitted to one of the plurality of ranking data systems based on the ranking routing table in the ranking query system. This ranking routing table may have the same value in all of the plurality of ranking query systems. For example, when the ranking information loaded is updated, the ranking data system 300 may broadcast the information to a plurality of ranking query systems so that the ranking routing table may be updated in the same manner.

단계(740)에서 랭킹 데이터 시스템(300)은 수신된 요청에 따른 동작을 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 랭킹 질의 시스템으로 전송한다. 랭킹 데이터 시스템(300)에서 처리한 결과 및 랭킹 라우팅 테이블에 저장된 복수의 랭킹 데이터 시스템 각각에 대한 카운트에 기초하여 랭킹 질의 시스템에서 랭킹이 산정될 수 있고, 카운트는 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서 비스 이용 주체의 수를 포함할 수 있다. 따라서, 랭킹 질의 시스템은 복수의 랭킹 데이터 시스템 각각에 해당하는 점수 구간에 포함된 이용 주체의 수를 랭킹 라우팅 테이블에 저장된 카운트를 통해 알 수 있기 때문에 복수의 랭킹 데이터 시스템 중 하나에서의 랭킹을 알면, 랭킹 서비스 이용 주체 전체에서 질의를 요청한 어플리케이션의 랭킹을 산정할 수 있다. 이러한 랭킹 산정에 대해서는 아래 도 5를 통해 더욱 자세히 설명한다.In operation 740, the ranking data system 300 processes an operation according to the received request with respect to the loaded ranking information, and transmits the processed result to the ranking query system. The ranking may be calculated in the ranking query system based on the results processed by the ranking data system 300 and the counts for each of the plurality of ranking data systems stored in the ranking routing table, the counts requesting the ranking information or registering the ranking information. It may include the number of users using the ranking service. Therefore, since the ranking query system can know the number of users included in the score interval corresponding to each of the plurality of ranking data systems through the count stored in the ranking routing table, knowing the ranking in one of the plurality of ranking data systems, The ranking of the application requesting the query can be calculated in the entire ranking service subject. This ranking calculation will be described in more detail with reference to FIG. 5 below.

단계(750)에서 랭킹 데이터 시스템(300)은 자신의 부하율(burst rate)을 계산한다. 여기서, 부하율은 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 결정될 수 있다.In step 750, ranking data system 300 calculates its burst rate. Here, the load ratio may be determined according to the throughput per second (TPS) and the free memory capacity.

이때, 자신의 부하율 및 복수의 랭킹 데이터 시스템 중 인접한 점수 구간의 랭킹 정보가 적재된 다른 랭킹 데이터 시스템의 부하율에 기초하여 잭재된 랭킹 정보 중 일부가 다른 랭킹 데이터 시스템으로 이동되거나 다른 랭킹 데이터 시스템에 적재된 랭킹 정보의 일부가 이동될 수 있다. 보다 자세하게, 적재된 랭킹 정보 중 일부는 자신의 부하율의 다른 랭킹 데이터 시스템의 부하율에 대한 비율이 일정 비율 이상인 경우, 다른 랭킹 데이터 시스템으로 이동될 수 있다. 예를 들어, 점수 구간이 서로 인접한 랭킹 데이터 시스템 H와 I에서 H의 부하율이 I의 부하율보다 1.5배 이상 큰 경우, H에 적재된 랭킹 정보 중 일부를 I로 이동시킴으로써, H의 부하를 줄일 수 있다. 이때, I 또한 점수 구간이 인접한 랭킹 데이터 시스템 J와 부하율을 비교하고, 순차적으로 점수 구간이 서로 인접한 모든 랭킹 데이터 시스템의 부하율을 비교함으로써, 동적으로 부하를 분산시킬 수 있다.At this time, part of the ranking information jacked based on its load rate and the load rate of another ranking data system in which ranking information of adjacent score sections among the plurality of ranking data systems is loaded is moved to another ranking data system or loaded in another ranking data system. A part of the ranked ranking information may be moved. In more detail, some of the loaded ranking information may be moved to another ranking data system when the ratio of its load rate to the load rate of another ranking data system is more than a certain ratio. For example, in the ranking data systems H and I where the score intervals are adjacent to each other, if the load ratio of H is 1.5 times larger than the load ratio of I, some of the ranking information loaded in H may be moved to I, thereby reducing the load of H. have. In this case, I may also load balance dynamically by comparing the load rate with the ranking data system J adjacent to the score section and sequentially comparing the load rates of all the ranking data systems with adjacent score sections.

또한, 복수의 랭킹 데이터 시스템에서 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 점수 구간의 일부가 서로 중복되도록 적재될 수 있고, 이때 이동되는 일부의 랭킹 정보는 다른 랭킹 데이터 시스템과 서로 중복되는 랭킹 정보를 포함할 수 있다. 이는 점수 구간의 종단에 위치한 랭킹 정보에 대해서 인접한 랭킹 정보를 요청하게 되는 경우, 두 개의 랭킹 데이터 서버로 읽기 요청을 해야 하는 것을 방지하기 위해 점수 구간을 서로 중복되게 설정함으로써, 리스트에 대한 읽기 요청이 반드시 한 개의 랭킹 데이터 서버에 대해서만 발생하도록 한정하기 위함이다. 이때, 부하율에 따라 중복된 랭킹 정보가 이동되도록 할 수 있다.In addition, for each of the ranking data systems that load the ranking information of the score sections adjacent to each other in the plurality of ranking data systems, some of the score sections may be stacked to overlap each other, and at this time, some of the ranking information may be overlapped with other ranking data systems. The ranking information may be included. When requesting the adjacent ranking information for the ranking information located at the end of the score interval, the score interval is set to overlap each other to prevent the reading request to the two ranking data server, so that the read request for the list is This is to limit the occurrence to only one ranking data server. In this case, the overlapping ranking information may be moved according to the load ratio.

단계(760)에서 랭킹 데이터 시스템(300)은 부하율을 복수의 랭킹 질의 시스템으로 브로드캐스팅한다. 이때, 부하율은 복수의 랭킹 질의 시스템이 포함하는 랭킹 라우팅 테이블에 갱신될 수 있다. 이 경우, 점수 구간은 복수의 랭킹 질의 시스템에서 부하율에 기초하여 변경될 수 있고, 이동되는 일부의 랭킹 정보는 점수 구간의 변경에 따라 결정된 랭킹 정보를 포함할 수 있다. 즉, 부하율에 따른 랭킹 정보의 이동이 랭킹 데이터 시스템간의 데이터 이동을 통해서 이루어질 수도 있지만, 랭킹 라우팅 테이블에서 변경된 점수 구간의 랭킹 정보를 각각의 랭킹 데이터 시스템에서 데이터베이스로부터 다시 수신하여 적재함으로써 이루어질 수도 있다.In step 760, ranking data system 300 broadcasts the load rate to a plurality of ranking query systems. In this case, the load ratio may be updated in a ranking routing table included in a plurality of ranking query systems. In this case, the score section may be changed based on the load ratio in the plurality of ranking query systems, and the some ranking information moved may include ranking information determined according to the change of the score section. That is, the movement of the ranking information according to the load ratio may be performed through data movement between the ranking data systems, but may also be achieved by receiving and loading the ranking information of the score section changed in the ranking routing table from the database in each ranking data system.

단계(770)에서 랭킹 데이터 시스템(300)은 주기적으로 자신의 랭킹 정보를 데이터베이스에 백업한다.In step 770, ranking data system 300 periodically backs up its ranking information to the database.

상술한 단계(710) 내지 단계(770)는 랭킹 데이터 시스템(300)이 포함할 수 있는 자료구조 생성부, 랭킹 정보 적재부, 요청 수신부, 요청 처리부, 부하율 계산부, 부하율 전송부 및 백업부에 의해 각각 수행될 수 있다.The above-described steps 710 to 770 may include a data structure generation unit, a ranking information loading unit, a request receiving unit, a request processing unit, a load rate calculating unit, a load rate transmitting unit, and a backup unit that the ranking data system 300 may include. Each can be performed.

도 8은 본 발명의 다른 실시예에 있어서, 랭킹 산정 방법을 도시한 흐름도이다. 본 실시예에 따른 랭킹 산정 방법은 도 4를 통해 설명한 랭킹 질의 시스템(400)을 통해 수행될 수 있다. 도 8에서는 랭킹 질의 시스템(400)을 통해 각각의 단계가 수행되는 과정을 설명함으로써, 랭킹 산정 방법을 설명한다.8 is a flowchart illustrating a ranking calculation method according to another embodiment of the present invention. The ranking calculation method according to the present embodiment may be performed through the ranking query system 400 described with reference to FIG. 4. In FIG. 8, a ranking calculation method will be described by describing a process of performing each step through the ranking query system 400.

단계(810)에서 랭킹 질의 시스템(400)은 복수의 랭킹 데이터 시스템으로부터 속성 정보 및 부하율 중 적어도 하나를 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신한다. 이때, 부하율은 상기 복수의 랭킹 데이터 시스템에서 TPS 및 여유 메모리 용량에 따라 각각 결정되어 브로드캐스트될 수 있다. 또한, 복수의 랭킹 데이터 시스템 각각은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성할 수 있다. 즉, 랭킹 질의 시스템(400)은 복수의 랭킹 데이터 시스템으로부터 각각 수신되는 속성 정보와 부하율을 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신할 수 있다.In step 810, the ranking query system 400 receives at least one of the attribute information and the load factor from the plurality of ranking data system to generate or update the ranking routing table. In this case, the load ratio may be determined and broadcasted according to the TPS and the free memory capacity in the plurality of ranking data systems, respectively. In addition, each of the plurality of ranking data systems may read attribute information of ranking to be serviced from the ranking scheme table, and generate a data structure corresponding to the attribute information in the memory. That is, the ranking query system 400 may generate or update the ranking routing table by receiving attribute information and load rates respectively received from the plurality of ranking data systems.

이때, 복수의 랭킹 데이터 시스템 각각은 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재할 수 있다. 이 경우, 복수의 랭킹 데이터 시스템 중 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 점수 구간의 일부가 서로 중복되도록 적재될 수 있고, 랭킹 라우팅 테이블은 중복되지 않게 적재된 랭킹 정보의 점수 구간을 읽 기 구간으로서, 중복되지 않게 적재된 랭킹 정보의 점수 구간 및 중복되어 적재된 랭킹 정보의 점수 구간은 쓰기 구간으로서, 각각 저장할 수 있다. 즉, 쓰기 동작은 동시에 두 개의 랭킹 데이터 시스템에서 발생할 수 있지만, 읽기 동작은 반드시 하나의 랭킹 데이터 시스템에서 발생하도록 한정할 수 있다.In this case, each of the plurality of ranking data systems may be divided according to the score section and loaded into the memory through the data structure generated by receiving the ranking information of the corresponding score section among the ranking information distributed in the plurality of ranking data systems from the database. have. In this case, each of the ranking data systems for loading the ranking information of the score section adjacent to each other among the plurality of ranking data system may be stacked so that a part of the score section is overlapped with each other, the ranking routing table is the score section of the ranking information loaded without overlapping As a reading section, the score section of the non-overlapping ranking information and the score section of the overlapping ranking information may be stored as write sections, respectively. That is, the write operation may occur in two ranking data systems at the same time, but the read operation may be limited to occur in one ranking data system.

단계(810)에서 랭킹 질의 시스템(400)은 어플리케이션으로부터 수신된 질의를 분석하고, 상기 랭킹 라우팅 테이블에 기초하여 상기 복수의 랭킹 데이터 시스템 중 상기 질의에 해당하는 랭킹 정보를 포함하는 랭킹 데이터 시스템으로 상기 질의를 전송한다. 이때, 어플리케이션으로부터의 질의는 애니캐스트(anycast) 전송 방식을 통해 복수의 랭킹 질의 시스템 중 하나로 전송될 수 있다.In operation 810, the ranking query system 400 analyzes a query received from an application, and includes a ranking data system including ranking information corresponding to the query among the plurality of ranking data systems based on the ranking routing table. Send the query. In this case, the query from the application may be transmitted to one of a plurality of ranking query systems through an anycast transmission scheme.

단계(810)에서 랭킹 질의 시스템(400)은 상기 질의에 대한 상기 랭킹 데이터 시스템의 응답을 수신하여 상기 어플리케이션으로 전송한다. 이때, 랭킹 라우팅 테이블은 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수인 카운트를 상기 복수의 랭킹 데이터 시스템별로 포함할 수 있고, 응답 및 카운트에 기초하여 랭킹이 산정될 수 있다.In step 810, ranking query system 400 receives the response of the ranking data system for the query and transmits to the application. In this case, the ranking routing table may include a count, which is the number of ranking service users who request ranking information or register ranking information, for each of the plurality of ranking data systems, and the ranking may be calculated based on the response and the count.

예를 들어, 전체 점수 구간이 0점부터 99점까지이고, 10점 단위로 10개의 점수 구간으로 분류되고, 각각 제1 랭킹 데이터 시스템 내지 제10 랭킹 데이터 시스템의 10개의 랭킹 데이터 시스템에서 해당 점수 구간의 랭킹 정보를 포함한다고 가정하자. 이때, 질의가 70점 내지 79점의 점수 구간에 포함된 랭킹을 요청한다면, 랭킹 질의 시스템(400)은 제8 랭킹 데이터 시스템으로 질의를 중계하여 응답을 수신함으로써 70점 내지 79점의 점수 구간 내에서의 순위를 얻을 수 있다. 또한, 랭 킹 질의 시스템(400)은 랭킹 라우팅 테이블에서 제9 랭킹 데이터 시스템 및 제10 랭킹 데이터 시스템의 카운트를 확인함으로써, 80점 내지 89점의 점수 구간과 90점 내지 99점의 점수 구간에 포함된 랭킹 서비스 이용 주체의 수를 확인하여 원하는 점수 구간 외에서의 순위를 얻을 수 있다. 즉, 랭킹 질의 시스템(400)은 제9 랭킹 데이터 시스템 및 제10 랭킹 데이터 시스템의 카운트와 70점 내지 79점의 점수 구간 내에서의 순위를 합산함으로써 간단히 어플리케이션의 랭킹을 계산할 수 있다.For example, the total score section is from 0 to 99 points, and is divided into 10 score sections in units of 10 points, and corresponding score sections in the 10 ranking data systems of the first ranking data system to the tenth ranking data system, respectively. Suppose we include ranking information for. At this time, if the query requests the ranking included in the score interval of 70 to 79 points, the ranking query system 400 relays the query to the eighth ranking data system to receive a response within the score interval of 70 to 79 points You can get a rank at. In addition, the ranking query system 400 checks the counts of the ninth ranking data system and the tenth ranking data system in the ranking routing table, and includes them in the score section of 80 to 89 points and the score section of 90 to 99 points. By checking the number of users using the ranking service, the ranking can be obtained outside the desired score section. That is, the ranking query system 400 may simply calculate the ranking of the application by summing the counts of the ninth ranking data system and the tenth ranking data system with the ranks within the score interval of 70 to 79 points.

단계(810)에서 랭킹 질의 시스템(400)은 복수의 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 부하율에 기초하여 상기 랭킹 라우팅 테이블에 갱신한다. 이때, 랭킹 질의 시스템(400)은 서로 인접한 랭킹 데이터 시스템의 부하율간의 비율이 A 이상인 경우, 상기 부하율에 기초하여 상기 서로 인접한 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 랭킹 라우팅 테이블에 갱신할 수 있다. 여기서, 서로 인접한 랭킹 데이터 시스템은 서로 인접한 점수 구간의 랭킹 정보를 각각 포함하는 랭킹 데이터 시스템을 의미할 수 있다.In step 810, the ranking query system 400 updates the score section of the ranking information included in each of the plurality of ranking data system in the ranking routing table based on the load ratio. In this case, when the ratio between the load ratios of the ranking data systems adjacent to each other is A or more, the ranking query system 400 updates the score intervals of the ranking information included in the ranking data systems adjacent to each other based on the load ratios in the ranking routing table. can do. Here, the ranking data systems adjacent to each other may mean a ranking data system including ranking information of score sections adjacent to each other.

예를 들어, 점수 구간이 서로 인접한 랭킹 데이터 시스템 H와 I에서 H의 부하율이 I의 부하율보다 1.5배 이상 큰 경우, H에 적재된 랭킹 정보 중 일부를 I로 이동시킴으로써, H의 부하를 줄일 수 있다. 이때, I 또한 점수 구간이 인접한 랭킹 데이터 시스템 J와 부하율을 비교할 수 있고, 순차적으로 점수 구간이 서로 인접한 모든 랭킹 데이터 시스템의 부하율을 비교함으로써, 동적으로 부하를 분산시킬 수 있다.For example, in the ranking data systems H and I where the score intervals are adjacent to each other, if the load ratio of H is 1.5 times larger than the load ratio of I, some of the ranking information loaded in H may be moved to I, thereby reducing the load of H. have. In this case, I may also compare the load ratio with the ranking data system J adjacent to the score section, and load may be dynamically distributed by sequentially comparing the load rates of all the ranking data systems with adjacent score sections.

여기서, 상술한 단계(810) 내지 단계(840)는 랭킹 데이터 시스템(400)이 포 함할 수 있는 테이블 관리부, 질의 처리부, 응답 처리부 및 점수 구간 갱신부에 의해 각각 수행될 수 있다.Here, the above-described steps 810 to 840 may be performed by the table manager, the query processor, the response processor, and the score interval update unit, which the ranking data system 400 may include.

이와 같이, 본 발명의 실시예들에 따른 랭킹 산정 방법을 이용하면, 복수의 랭킹 데이터 시스템에 랭킹 정보를 분산 적재하고, 자신의 점수 구간에 대해서만 랭킹 정보를 처리하도록 함으로써, 실시간으로 대용량의 랭킹을 산정할 수 있고, 랭킹 라우트 테이블을 이용하여 어플리케이션의 질의에 맞는 랭킹 데이터 시스템으로 질의를 중계하고, 랭킹 데이터 시스템의 응답과 랭킹 라우트 테이블에 저장된 복수의 랭킹 데이터 시스템 각각의 카운터를 통해 순위를 결정함으로써, 실시간으로 대용량의 랭킹을 산정할 수 있다. 또한, 랭킹 데이터 시스템의 부하율에 기초하여 부하율이 높은 랭킹 데이터 시스템의 랭킹 정보 중 일부를 부하율이 낮은 랭킹 데이터 시스템으로 이동시킴으로써, 동적으로 부하를 분산시킬 수 있다.As described above, using the ranking calculation method according to the embodiments of the present invention, the ranking information is distributed and stacked in a plurality of ranking data systems, and the ranking information is processed only for its own score section, thereby enabling a large-scale ranking in real time. By calculating the ranking, relay the query to the ranking data system that matches the query of the application using the ranking route table, and determine the ranking through the counter of each of the plurality of ranking data systems stored in the ranking data table's response and the ranking route table. In addition, large-scale ranking can be calculated in real time. Further, by moving some of the ranking information of the ranking data system having a high load ratio to the ranking data system having a low load ratio based on the load ratio of the ranking data system, the load can be distributed dynamically.

도 9는 본 발명의 일실시예에 따른 랭킹 데이터 시스템 및 랭킹 질의 시스템의 기본 동작을 설명하기 위한 일례이다.9 is an example for explaining the basic operation of the ranking data system and the ranking query system according to an embodiment of the present invention.

단계(910)에서 랭킹 관리 도구를 통해 입력되는 랭킹의 속성을 통해 생성하고자 하는 속성 정보가 생성될 수 있고, 랭킹 스킴 테이블에 랭킹의 속성 정보가 등록될 수 있다. 이때, 단계(920)에서 랭킹 서비스 가동 시 랭킹 데이터 시스템에서 랭킹 스킴 테이블로부터 자신이 서비스할 랭킹의 정보를 읽어온 후 그에 맞는 자료구조를 메인 메모리에 생성하고, 데이터베이스로부터 백업된 랭킹 정보들을 생성된 내부 자료구조에 로드할 수 있다.In operation 910, the attribute information to be generated may be generated through the attribute of the ranking input through the ranking management tool, and the attribute information of the ranking may be registered in the ranking scheme table. At this time, when the ranking service is started in step 920, the ranking data system reads the ranking information to be served from the ranking scheme table, and creates a data structure corresponding thereto in main memory, and generates ranking information backed up from the database. Can be loaded into internal data structures.

단계(930)에서는 랭킹 질의 시스템에서 각 랭킹 데이터 시스템에 생성된 속 성 정보를 읽어와 랭킹 라우팅 테이블을 생성할 수 있다. 단계(940)에서는 랭킹 질의 시스템에서 어플리케이션으로부터 랭킹 요청에 대한 질의를 수신하면, 랭킹 요청에 대해서 해당 랭킹 정보가 어느 랭킹 데이터 시스템에 있는지 랭킹 라우팅 테이블을 조회하고, 해당 랭킹 데이터 시스템에 요청을 중계할 수 있다. 이때, 어플리케이션으로부터의 랭킹 요청에 대한 질의는 복수의 랭킹 질의 시스템에 대한 애니캐스트 전송 방식을 통해 수신될 수 있다.In step 930, the ranking query system may read the attribute information generated in each ranking data system and generate a ranking routing table. In step 940, when the ranking query system receives a query for a ranking request from an application, the ranking request is queried for a ranking routing table in which ranking information corresponding information corresponds to the ranking request, and relays the request to the corresponding ranking data system. Can be. In this case, the query for the ranking request from the application may be received through an anycast transmission scheme for the plurality of ranking query systems.

단계(950)에서는 랭킹 데이터 시스템에서 요청에 따라 랭킹 정보가 저장된 내부 자료구조를 검색해, 필요한 동작을 수행하고 결과를 요청한 랭킹 질의 시스템으로 전달할 수 있다. 단계(960)에서는 랭킹 질의 시스템에서 랭킹 데이터 시스템으로부터 수신한 결과를 질의 전송한 어플리케이션으로 전달할 수 있다. 이때, 상술한 바와 같이, 전체에서의 랭킹은 랭킹 질의 시스템이 랭킹 라우팅 테이블과 수신한 결과를 이용하여 계산한 후 어플리케이션으로 전달할 수 있다.In operation 950, the ranking data system searches for an internal data structure in which the ranking information is stored, performs a required operation, and transfers the result to the requested ranking query system. In operation 960, the ranking query system may deliver the result received from the ranking data system to the application that has transmitted the query. In this case, as described above, the overall ranking may be calculated by using the ranking routing table and the received result by the ranking query system and then transferred to the application.

단계(970)에서는 어플리케이션에서 수신한 결과를 사용자에게 전달하고, 단계(980)에서는 랭킹 데이터 시스템에서 주기적으로 자신의 랭킹 정보를 데이터베이스에 백업할 수 있다.In operation 970, the result received by the application may be transmitted to the user, and in operation 980, the ranking data system may periodically back up its ranking information to the database.

도 10은 본 발명의 일실시예에 따른 랭킹 데이터 시스템 및 랭킹 질의 시스템에서 부하를 동적으로 분산하는 동작을 설명하기 위한 일례이다.10 is an example for explaining an operation of dynamically distributing a load in a ranking data system and a ranking query system according to an embodiment of the present invention.

단계(S1010)에서는 랭킹 데이터 시스템에서 주기적으로 자신의 부하율을 랭킹 질의 시스템으로 브로드캐스팅한다. 단계(1020)에서 랭킹 질의 시스템은 서로 인접한 점수 구간의 랭킹 정보를 포함하는 모든 랭킹 데이터 시스템에 대해 부하율 간의 비율이 A이상인지 확인한다. 이때, 단계(1030)를 통해 부하율간의 비율이 A이상일 때까지 단계(1020)이 반복 수행될 수 있다.In step S1010, the ranking data system periodically broadcasts its load rate to the ranking query system. In step 1020, the ranking query system checks whether a ratio between load rates is equal to or greater than A for all ranking data systems including ranking information of score sections adjacent to each other. In this case, step 1020 may be repeatedly performed until the ratio between the load ratios is equal to or greater than A through step 1030.

단계(1040)에서는 랭킹 질의 시스템에서 랭킹 라우팅 테이블의 읽기 구간 및 쓰기 구간의 값을 변경하여 인접버퍼의 영역을 조정한다. 이러한 인접버퍼는 서로 인접한 점수 구간의 랭킹 정보가 적재된 랭킹 데이터 시스템에서 중복되는 점수 구간의 랭킹 정보를 저장하기 위한 영역으로써, 부하율이 낮은 랭킹 데이터 시스템은 인접버퍼의 랭킹 정보를 전용 영역에 저장하여 새로운 인접버퍼 영역을 설정하고, 부하율이 높은 랭킹 데이터 시스템은 전용 영역 중 일부를 인접버퍼 영역으로 전환할 수 있다. 부하율에 따라 이러한 동작이 복수의 랭킹 데이터 시스템에 대해 재귀적으로 수행되면, 부하율이 높은 랭킹 데이터 시스템은 해당 점수 구간이 좁아지고, 부하율이 낮은 랭킹 데이터 시스템은 해당 점수 구간이 넓어져 전체 서비스 영역에 걸쳐 부하를 순차적으로 고루 분산시킬 수 있다.In step 1040, the area of the adjacent buffer is adjusted by changing the values of the read interval and the write interval of the ranking routing table in the ranking query system. The adjacent buffer is an area for storing ranking information of overlapping score sections in a ranking data system in which ranking information of adjacent score sections is loaded. A low-loading ranking data system stores ranking information of adjacent buffers in a dedicated area. The new adjacent buffer area is set, and the ranking data system having a high load ratio can convert a portion of the dedicated area into the adjacent buffer area. When the operation is performed recursively for a plurality of ranking data systems according to the load rate, the ranking data system with a high load rate narrows the corresponding score section, and the ranking data system with a low load rate widens the corresponding score section to the entire service area. The load can be evenly distributed evenly over time.

본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 파일 데이터, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(Floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Embodiments according to the present invention can be implemented in the form of program instructions that can be executed by various computer means can be recorded on a computer readable medium. The computer readable medium may include program instructions, file data, data structures, etc. alone or in combination. Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.As described above, the present invention has been described by specific embodiments such as specific components and the like. For those skilled in the art to which the present invention pertains, various modifications and variations are possible.

따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.Therefore, the spirit of the present invention should not be limited to the described embodiments, and all of the equivalents or equivalents of the claims as well as the claims to be described later will belong to the scope of the present invention. .

도 1은 본 발명의 일실시예에 있어서, 랭킹 서비스를 제공하는 전체 시스템의 개괄적인 모습을 도시한 도면이다.1 is a view showing an overview of an entire system for providing a ranking service according to an embodiment of the present invention.

도 2는 본 발명의 일실시예에 있어서, 랭킹 서비스 시스템의 개괄적인 모습을 도시한 도면이다.2 is a view showing an overview of a ranking service system according to an embodiment of the present invention.

도 3은 본 발명의 일실시예에 있어서, 랭킹 데이터 시스템의 내부 구성을 설명하기 위한 블록도이다.3 is a block diagram illustrating an internal configuration of a ranking data system according to an embodiment of the present invention.

도 4는 본 발명의 일실시예에 있어서, 랭킹 질의 시스템의 내부 구성을 설명하기 위한 블록도이다.4 is a block diagram illustrating an internal configuration of a ranking query system according to an embodiment of the present invention.

도 5는 본 발명의 일실시예에 따른 랭킹 질의 시스템이 포함하는 랭킹 라우팅 테이블의 일례이다.5 is an example of a ranking routing table included in a ranking query system according to an embodiment of the present invention.

도 6은 본 발명의 일실시예에 따른 랭킹 데이터 시스템에 적재되는 랭킹 정보의 일례이다.6 is an example of ranking information loaded into a ranking data system according to an embodiment of the present invention.

도 7은 본 발명의 일실시예에 있어서, 랭킹 산정 방법을 도시한 흐름도이다.7 is a flowchart illustrating a ranking calculation method according to an embodiment of the present invention.

도 8은 본 발명의 다른 실시예에 있어서, 랭킹 산정 방법을 도시한 흐름도이다.8 is a flowchart illustrating a ranking calculation method according to another embodiment of the present invention.

도 9는 본 발명의 일실시예에 따른 랭킹 데이터 시스템 및 랭킹 질의 시스템의 기본 동작을 설명하기 위한 일례이다.9 is an example for explaining the basic operation of the ranking data system and the ranking query system according to an embodiment of the present invention.

도 10은 본 발명의 일실시예에 따른 랭킹 데이터 시스템 및 랭킹 질의 시스템에서 부하를 동적으로 분산하는 동작을 설명하기 위한 일례이다.10 is an example for explaining an operation of dynamically distributing a load in a ranking data system and a ranking query system according to an embodiment of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

210: 복수의 랭킹 데이터 시스템210: a plurality of ranking data systems

220: 복수의 랭킹 질의 시스템220: a plurality of ranking query system

300: 랭킹 데이터 시스템300: ranking data system

400: 랭킹 질의 시스템400: Ranking Query System

Claims (19)

랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 상기 속성 정보에 해당하는 자료구조를 생성하는 자료구조 생성부;A data structure generation unit reading attribute information of a ranking to be serviced from a ranking scheme table and generating a data structure corresponding to the attribute information in a memory; 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 상기 생성된 자료구조를 통해 상기 메모리에 적재하는 랭킹 정보 적재부;A ranking information stacker configured to receive ranking information of a corresponding score section among the ranking information divided by a score section and distributed in a plurality of ranking data systems from a database and load the ranking information into the memory through the generated data structure; 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 상기 질의에 대한 요청을 수신하는 요청 수신부; 및A request receiving unit which receives a request for the query from a ranking query system that receives a query from an application among a plurality of ranking query systems; And 상기 수신된 요청에 따른 동작을 상기 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 상기 랭킹 질의 시스템으로 전송하는 요청 처리부Request processing unit for processing the operation according to the received request for the loaded ranking information, and transmits the processing result to the ranking query system 를 포함하는, 랭킹 데이터 시스템.Including, ranking data system. 제1항에 있어서,The method of claim 1, 자신의 부하율(burst rate)을 계산하는 부하율 계산부Load rate calculation unit that calculates its own burst rate 를 포함하고,Including, 상기 자신의 부하율 및 상기 복수의 랭킹 데이터 시스템 중 인접한 점수 구간의 랭킹 정보가 적재된 다른 랭킹 데이터 시스템의 부하율에 기초하여 상기 잭재된 랭킹 정보 중 일부가 상기 다른 랭킹 데이터 시스템으로 이동되거나 상기 다른 랭킹 데이터 시스템에 적재된 랭킹 정보의 일부가 이동되는, 랭킹 데이터 시스템.Some of the jacked ranking information is moved to the other ranking data system or the other ranking data based on the load rate of the other ranking data system loaded with the own load rate and the ranking information of the adjacent score section among the plurality of ranking data systems. And a portion of the ranking information loaded in the system is moved. 제2항에 있어서,The method of claim 2, 상기 적재된 랭킹 정보 중 일부는 상기 자신의 부하율의 상기 다른 랭킹 데이터 시스템의 부하율에 대한 비율이 일정 비율 이상인 경우, 상기 다른 랭킹 데이터 시스템으로 이동되는, 랭킹 데이터 시스템.And some of the loaded ranking information is moved to the other ranking data system when the ratio of the own loading rate to the load rate of the other ranking data system is above a certain ratio. 제2항에 있어서,The method of claim 2, 상기 복수의 랭킹 데이터 시스템에서 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 상기 점수 구간의 일부가 서로 중복되도록 적재되고,A portion of the score intervals are stacked to overlap each other for each ranking data system for loading ranking information of score sections adjacent to each other in the plurality of ranking data systems, 상기 이동되는 일부의 랭킹 정보는 상기 다른 랭킹 데이터 시스템과 서로 중복되는 랭킹 정보를 포함하는, 랭킹 데이터 시스템.The ranking information of the moved portion includes ranking information overlapping with each other ranking data system, ranking data system. 제2항에 있어서,The method of claim 2, 상기 부하율을 복수의 랭킹 질의 시스템으로 브로드캐스팅하는 부하율 전송부A load rate transmitter for broadcasting the load rate to a plurality of ranking query systems 를 더 포함하고,More, 상기 부하율은 상기 복수의 랭킹 질의 시스템이 포함하는 랭킹 라우팅 테이블에 갱신되는, 랭킹 데이터 시스템.And the load factor is updated in a ranking routing table included in the plurality of ranking query systems. 제5항에 있어서,The method of claim 5, 상기 점수 구간은 상기 복수의 랭킹 질의 시스템에서 상기 부하율에 기초하여 변경되고,The score interval is changed based on the load ratio in the plurality of ranking query system, 상기 이동되는 일부의 랭킹 정보는 상기 점수 구간의 변경에 따라 결정된 랭킹 정보를 포함하는, 랭킹 데이터 시스템.The ranking information of the moved portion includes ranking information determined according to the change of the score interval, ranking data system. 제2항에 있어서,The method of claim 2, 상기 부하율은 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 결정되는, 랭킹 데이터 시스템.Wherein said load rate is determined in accordance with throughput per second (TPS) and free memory capacity. 제1항에 있어서,The method of claim 1, 상기 질의는 상기 랭킹 질의 시스템에서 랭킹 라우팅 테이블에 기초하여 상기 복수의 랭킹 데이터 시스템 중 결정된 하나로 전송되는, 랭킹 데이터 시스템.The query is sent to one of the plurality of ranking data systems based on a ranking routing table in the ranking query system. 제1항에 있어서,The method of claim 1, 상기 요청 처리부에서 처리한 결과 및 랭킹 라우팅 테이블에 저장된 상기 복수의 랭킹 데이터 시스템 각각에 대한 카운트에 기초하여 상기 랭킹 질의 시스템에서 랭킹이 산정되고,A ranking is calculated in the ranking query system based on a result processed by the request processing unit and a count for each of the plurality of ranking data systems stored in a ranking routing table. 상기 카운트는 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수를 포함하는, 랭킹 데이터 시스템.The count includes a number of ranking service usage subjects that request ranking information or register the ranking information. 복수의 랭킹 데이터 시스템으로부터 속성 정보 및 부하율 중 적어도 하나를 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신하는 테이블 관리부;A table manager which receives at least one of attribute information and a load factor from a plurality of ranking data systems to generate or update a ranking routing table; 어플리케이션으로부터 수신된 질의를 분석하고, 상기 랭킹 라우팅 테이블에 기초하여 상기 복수의 랭킹 데이터 시스템 중 상기 질의에 해당하는 랭킹 정보를 포함하는 랭킹 데이터 시스템으로 상기 질의를 전송하는 질의 처리부; 및A query processing unit for analyzing a query received from an application and transmitting the query to a ranking data system including ranking information corresponding to the query among the plurality of ranking data systems based on the ranking routing table; And 상기 질의에 대한 상기 랭킹 데이터 시스템의 응답을 수신하여 상기 어플리케이션으로 전송하는 응답 처리부A response processor that receives a response of the ranking data system to the query and transmits the response to the application 를 포함하는 랭킹 질의 시스템.Ranking query system comprising a. 제10항에 있어서,The method of claim 10, 상기 복수의 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 부하율에 기초하여 상기 랭킹 라우팅 테이블에 갱신하는 점수 구간 갱신부A score section updating unit for updating the score section of the ranking information included in the plurality of ranking data systems to the ranking routing table based on the load ratio 를 더 포함하는 랭킹 질의 시스템.Ranking query system further comprising. 제11항에 있어서,The method of claim 11, 상기 점수 구간 갱신부는,The score section update unit, 서로 인접한 랭킹 데이터 시스템의 부하율간의 비율이 A 이상인 경우, 상기 부하율에 기초하여 상기 서로 인접한 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 랭킹 라우팅 테이블에 갱신하는, 랭킹 질의 시스템.And when the ratio between the load rates of the adjacent ranking data systems is equal to or greater than A, updating the score intervals of ranking information included in the adjacent ranking data systems, respectively, in the ranking routing table based on the load rates. 제10항에 있어서,The method of claim 10, 상기 부하율은 상기 복수의 랭킹 데이터 시스템에서 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 각각 결정되어 브로드캐스트되는, 랭킹 질의 시스템.And the load ratio is determined and broadcasted according to throughput per second (TPS) and free memory capacity in the plurality of ranking data systems, respectively. 제10항에 있어서,The method of claim 10, 상기 복수의 랭킹 데이터 시스템 중 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 상기 점수 구간의 일부가 서로 중복되도록 적재되고,Some of the plurality of ranking data systems are stacked so that some of the score sections overlap each other for each ranking data system for loading ranking information of adjacent score sections, 상기 랭킹 라우팅 테이블은 중복되지 않게 적재된 랭킹 정보의 점수 구간을 읽기(read) 구간으로서, 상기 중복되지 않게 적재된 랭킹 정보의 점수 구간 및 상기 중복되어 적재된 랭킹 정보의 점수 구간은 쓰기(right) 구간으로서, 각각 저장하는, 랭킹 질의 시스템.The ranking routing table reads the score intervals of the non-overlapping ranking information, and reads the score intervals of the non-overlapping ranking information and the score intervals of the redundantly stacked ranking information. Ranking query system for storing the intervals, respectively. 제10항에 있어서,The method of claim 10, 상기 어플리케이션으로부터의 질의는 애니캐스트(anycast) 전송 방식을 통해 복수의 랭킹 질의 시스템 중 하나로 전송되는, 랭킹 질의 시스템.The query from the application is transmitted to one of a plurality of ranking query system through an anycast transmission scheme. 제10항에 있어서,The method of claim 10, 상기 랭킹 라우팅 테이블은 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수인 카운트를 상기 복수의 랭킹 데이터 시스템별로 포함하고,The ranking routing table includes a count for each of the plurality of ranking data systems, the count being a number of ranking service users who request ranking information or register ranking information. 상기 응답 및 상기 카운트에 기초하여 랭킹이 산정되는, 랭킹 질의 시스템.A ranking query system is calculated based on the response and the count. 랭킹 데이터 시스템에서 랭킹을 산정하는 방법에 있어서,In the method for calculating the ranking in the ranking data system, 상기 랭킹 데이터 시스템의 자료구조 생성부에서 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 상기 속성 정보에 해당하는 자료구조를 생성하는 단계;Reading, by a data structure generation unit of the ranking data system, attribute information of a ranking to be serviced from a ranking scheme table, and generating a data structure corresponding to the attribute information in a memory; 상기 랭킹 데이터 시스템의 랭킹 정보 적재부에서 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 상기 생성된 자료구조를 통해 상기 메모리에 적재하는 단계;The ranking information loading unit of the ranking data system is divided according to the score section and distributed among the ranking information of the plurality of ranking data system among the ranking information of the corresponding score section received from the database to the memory through the generated data structure Loading; 상기 랭킹 데이터 시스템의 요청 수신부에서 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 상기 질의에 대한 요청을 수신하는 단계; 및Receiving a request for the query from a ranking query system that receives a query from an application among a plurality of ranking query systems in a request receiving unit of the ranking data system; And 상기 랭킹 데이터 시스템의 요청 처리부에서 상기 수신된 요청에 따른 동작을 상기 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 상기 랭킹 질의 시스템으로 전송하는 단계A request processing unit of the ranking data system processes an operation according to the received request with respect to the loaded ranking information, and transmits the processed result to the ranking query system 를 포함하는 랭킹 산정 방법.Ranking calculation method comprising a. 랭킹 질의 시스템에서 랭킹을 산정하는 방법에 있어서,In the method for calculating the ranking in the ranking query system, 상기 랭킹 질의 시스템의 테이블 관리부에서 복수의 랭킹 데이터 시스템으로부터 속성 정보 및 부하율 중 적어도 하나를 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신하는 단계;Generating or updating a ranking routing table by receiving at least one of attribute information and a load factor from a plurality of ranking data systems in a table management unit of the ranking query system; 상기 랭킹 질의 시스템의 질의 처리부에서 어플리케이션으로부터 수신된 질의를 분석하고, 상기 랭킹 라우팅 테이블에 기초하여 상기 복수의 랭킹 데이터 시스템 중 상기 질의에 해당하는 랭킹 정보를 포함하는 랭킹 데이터 시스템으로 상기 질의를 전송하는 단계; 및The query processing unit of the ranking query system analyzes the query received from the application and transmits the query to a ranking data system including ranking information corresponding to the query among the plurality of ranking data systems based on the ranking routing table. step; And 상기 랭킹 질의 시스템의 응답 처리부에서 상기 질의에 대한 상기 랭킹 데이터 시스템의 응답을 수신하여 상기 어플리케이션으로 전송하는 단계Receiving, by the response processor of the ranking query system, the response of the ranking data system for the query and transmitting the response to the application; 를 포함하는, 랭킹 산정 방법.Including, ranking calculation method. 제17항 또는 제18항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.A computer-readable recording medium having recorded thereon a program for performing the method of claim 17 or 18.
KR1020090093476A 2009-09-30 2009-09-30 Ranking data system, ranking query system and ranking computation method for computing large scale ranking in real time KR101029416B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090093476A KR101029416B1 (en) 2009-09-30 2009-09-30 Ranking data system, ranking query system and ranking computation method for computing large scale ranking in real time
PCT/KR2010/006654 WO2011040765A2 (en) 2009-09-30 2010-09-30 Ranking data system for calculating mass ranking in real time, ranking inquiry system, and ranking calculation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090093476A KR101029416B1 (en) 2009-09-30 2009-09-30 Ranking data system, ranking query system and ranking computation method for computing large scale ranking in real time

Publications (2)

Publication Number Publication Date
KR20110035665A KR20110035665A (en) 2011-04-06
KR101029416B1 true KR101029416B1 (en) 2011-04-14

Family

ID=43826790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090093476A KR101029416B1 (en) 2009-09-30 2009-09-30 Ranking data system, ranking query system and ranking computation method for computing large scale ranking in real time

Country Status (2)

Country Link
KR (1) KR101029416B1 (en)
WO (1) WO2011040765A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160239777A1 (en) * 2015-02-13 2016-08-18 Atlassian Pty Ltd Issue and trigger rebalancing in a ranked issue management system

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101667796B1 (en) * 2015-07-21 2016-10-20 네이버 주식회사 Method, system and recording medium for providing real-time change aspect of search result
CN109241195B (en) * 2017-07-03 2022-03-18 北京国双科技有限公司 Ranking calculation method and device
CN110147944B (en) * 2019-04-30 2023-08-01 创新先进技术有限公司 Ranking method and device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050030156A (en) * 2003-09-24 2005-03-29 가부시키가이샤 세가 Program for generating ranking data
KR20090080209A (en) * 2008-01-21 2009-07-24 (주)드래곤플라이 System and method of providing real time ranking

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070003268A (en) * 2005-07-01 2007-01-05 메타냅주식회사 Dynamic search result priority generation method and system
US20090132515A1 (en) * 2007-11-19 2009-05-21 Yumao Lu Method and Apparatus for Performing Multi-Phase Ranking of Web Search Results by Re-Ranking Results Using Feature and Label Calibration

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050030156A (en) * 2003-09-24 2005-03-29 가부시키가이샤 세가 Program for generating ranking data
KR20090080209A (en) * 2008-01-21 2009-07-24 (주)드래곤플라이 System and method of providing real time ranking

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160239777A1 (en) * 2015-02-13 2016-08-18 Atlassian Pty Ltd Issue and trigger rebalancing in a ranked issue management system
US20160239786A1 (en) * 2015-02-13 2016-08-18 Atlassian Pty Ltd Issue and trigger rebalancing in a ranked issue management system
US10282686B2 (en) * 2015-02-13 2019-05-07 Atlassian Pty Ltd. Issue and trigger rebalancing in a ranked issue tracking system
US10289971B2 (en) * 2015-02-13 2019-05-14 Atlassian Pty Ltd Issue and trigger rebalancing in a ranked issue management system
US11544650B2 (en) 2015-02-13 2023-01-03 Atlassian Pty Ltd. Issue and trigger rebalancing in a ranked issue tracking system
US11934983B2 (en) 2015-02-13 2024-03-19 Atlassian Pty Ltd. Issue and trigger rebalancing in a ranked issue management system

Also Published As

Publication number Publication date
KR20110035665A (en) 2011-04-06
WO2011040765A2 (en) 2011-04-07
WO2011040765A3 (en) 2011-07-28

Similar Documents

Publication Publication Date Title
US10121169B2 (en) Table level distributed database system for big data storage and query
CN108090225B (en) Database instance running method, device and system and computer readable storage medium
CN108881348B (en) Service quality control method and device and storage server
CN104462225B (en) The method, apparatus and system of a kind of digital independent
CN107026881B (en) Method, device and system for processing service data
JP2019159685A (en) Shared vehicle management server, and shared vehicle management program
CN109408590B (en) Method, device and equipment for expanding distributed database and storage medium
JPWO2012131927A1 (en) Computer system and data management method
CN107004013A (en) System and method for providing distributed tree traversal using hardware based processing
CN103731498B (en) Big data real-time enquiry system load balancing method based on copy selection
JP2014112292A (en) Human flow survey support system and method
CN104391737A (en) Method for optimizing load balance in cloud platform
CN104462432A (en) Self-adaptive distributed computing method
US20180248772A1 (en) Managing intelligent microservices in a data streaming ecosystem
KR101029416B1 (en) Ranking data system, ranking query system and ranking computation method for computing large scale ranking in real time
US12058226B2 (en) Generalized resource accountant
US20210336809A1 (en) Api billing system and api billing management method
CN104077188A (en) Method and device for scheduling tasks
CN103853500A (en) Method, device and system for distributing mass data
CN112307065A (en) Data processing method and device and server
CN111159219A (en) Data management method, device, server and storage medium
CN111984677B (en) Resource data checking method, device, computer equipment and storage medium
WO2020222840A1 (en) Privacy preserving data collection and analysis
CN101247405A (en) Method, system and device for calculating download time and resource downloading
CN107786358A (en) The expansion method of distributed system and the distributed system

Legal Events

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

Payment date: 20170328

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 9