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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital 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
실시간으로 대용량 랭킹을 산정하기 위한 랭킹 데이터 시스템, 랭킹 질의 시스템 및 랭킹 산정 방법을 개시한다. 랭킹 데이터 시스템은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성하는 자료구조 생성부, 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재하는 랭킹 정보 적재부, 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 질의에 대한 요청을 수신하는 요청 수신부 및 수신된 요청에 따른 동작을 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 랭킹 질의 시스템으로 전송하는 요청 처리부를 포함한다.
랭킹(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.
Ranking, Game, Database, Real Time, Routing Table
Description
본 발명에 따른 실시예들은 실시간으로 대용량 랭킹을 산정하기 위한 랭킹 데이터 시스템, 랭킹 질의 시스템 및 랭킹 산정 방법에 관한 것이다.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
랭킹 관리 도구(110)는 랭킹 마스터 스킴(120)을 관리하기 위해 제작된 툴로서 일례로, 개발 업무와 랭킹 서비스 운영 업무를 분리하기 위해 이용될 수 있다. 이러한 랭킹 관리 도구(110)는 랭킹 마스터 스킴(120)에 대한 정보뿐만 아니라 부정사용자 랭킹 삭제 처리, 랭킹 로그 확인 등 운영에 필요한 제반적인 기능을 제공할 수 있다.The
랭킹 마스터 스킴(120)은 랭킹의 속성과 같이 랭킹에 대한 메타 정보를 설정되는 것으로, 랭킹 스킴 테이블로서 유지될 수 있다. 이때, 랭킹 서비스 시스템(100)에 포함되는 랭킹 데이터 서버에서 이러한 랭킹 스킴 테이블을 통해 자신이 서비스할 랭킹에 맞는 자료구조를 생성할 수 있다. 이때, 랭킹 스킴 테이블에는 랭킹 서비스 도메인 이름, 랭킹 기간 타입(일간, 주간, 월간 또는 누적), 랭킹 정렬 속성(오름차순 또는 내림차순), 랭킹 동점자 처리 방식(최초등록자 우선 또는 최근 등록자 우선), 랭킹 종류 개수 지정 등과 같은 다양한 메타 정보가 설정될 수 있다.The
데이터베이스(130)는 랭킹 데이터 서버의 메모리에 저장된 랭킹 정보를 백업 하는 외부 저장소로서, 최초 랭킹 데이터 서버는 자료구조를 생성한 후 데이터베이스로부터 필요한 랭킹 정보를 수신하여 메모리에 적재할 수 있다.The
어플리케이션(140)은 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체를 의미할 수 있다. 예를 들어, 사용자가 이용하는 단말기에서 동작하는 임의의 프로그램일 수 있다.The
도 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
이때, 어플리케이션(140)이 랭킹 서비스 시스템(100)으로 랭킹 정보를 요청하게 되면, 실제적으로는 복수의 랭킹 질의 시스템(220) 중 하나로 애니캐스트(anycast) 동작을 수행하게 된다. 이때, 애니캐스트는 L4(Layer-4) 스위치를 통해 수행되거나 어플리케이션(140)에서 소프트웨어적으로 수행될 수도 있다.At this time, when the
이때, 복수의 랭킹 질의 시스템(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
복수의 랭킹 데이터 시스템(210)은 실제적인 랭킹 정보를 저장하는 곳으로, 빠른 처리를 위해 메모리에 랭킹 정보를 저장한다. 이러한 복수의 랭킹 데이터 시스템(210)은 랭킹 스킴 테이블에 포함된 랭킹의 속성 정보를 이용하여 최적의 자료구조를 생성할 수 있다. 이때, 물리적인 메모리에도 역시 한계가 있기 때문에 복수의 랭킹 데이터 시스템(210) 또한 횡적으로 유언하게 확장될 수 있다.The ranking
도 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
자료구조 생성부(310)는 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성한다. 이때, 속성 정보는 관리자에게 제공되는 랭킹 관리 도구를 통해 생성될 수 있다.The data
랭킹 정보 적재부(320)는 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재한다. 보다 자세하게, 랭킹은 서비스 도메인별로 분할되고, 다시 랭킹 정보는 점수 구간에 따라 분할될 수 있다. 이때, 랭킹 데이터 시스템(300)은 자신에게 할당된 점수 구간에 대해서 만 순위를 계산할 수 있고, 이를 위해 랭킹 정보 적재부(320)는 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 메모리에 적재할 수 있다.The ranking
요청 수신부(330)는 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 질의에 대한 요청을 수신한다. 이때, 질의는 랭킹 질의 시스템에서 랭킹 라우팅 테이블에 기초하여 복수의 랭킹 데이터 시스템 중 결정된 하나로 전송될 수 있다. 이러한 랭킹 라우팅 테이블은 복수의 랭킹 질의 시스템 모두에서 동일한 값을 가질 수 있다. 일례로, 랭킹 데이터 시스템(300)은 적재된 랭킹 정보가 갱신되는 경우, 복수의 랭킹 질의 시스템으로 정보를 브로드캐스팅하여 랭킹 라우팅 테이블이 동일하게 갱신되도록 할 수 있다.The
요청 처리부(340)는 수신된 요청에 따른 동작을 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 랭킹 질의 시스템으로 전송한다. 요청 처리부(340)에서 처리한 결과 및 랭킹 라우팅 테이블에 저장된 복수의 랭킹 데이터 시스템 각각에 대한 카운트에 기초하여 랭킹 질의 시스템에서 랭킹이 산정될 수 있고, 카운트는 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수를 포함할 수 있다. 따라서, 랭킹 질의 시스템은 복수의 랭킹 데이터 시스템 각각에 해당하는 점수 구간에 포함된 이용 주체의 수를 랭킹 라우팅 테이블에 저장된 카운트를 통해 알 수 있기 때문에 복수의 랭킹 데이터 시스템 중 하나에서의 랭킹을 알면, 랭킹 서비스 이용 주체 전체에서 질의를 요청한 어플리케이션의 랭킹을 산정할 수 있다. 이러한 랭킹 산정에 대해서는 아래 도 5를 통해 더욱 자세히 설명한다.The
부하율 계산부(350)는 자신의 부하율(burst rate)을 계산한다. 여기서, 부 하율은 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 결정될 수 있다. 예를 들어 부하율은 하기 수학식 1과 같이 계산될 수 있다.The load
여기서, '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
백업부(370)는 주기적으로 자신의 랭킹 정보를 데이터베이스에 백업한다.The
도 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
테이블 관리부(410)는 복수의 랭킹 데이터 시스템으로부터 속성 정보 및 부하율 중 적어도 하나를 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신한다. 이때, 부하율은 상기 복수의 랭킹 데이터 시스템에서 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 각각 결정되어 브로드캐스트될 수 있다. 또한, 복수의 랭킹 데이터 시스템 각각은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성할 수 있다. 즉, 테이블 관리부(410)는 복수의 랭킹 데이터 시스템으로부터 각각 수신되는 속성 정보와 부하율을 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신할 수 있다.The
이때, 복수의 랭킹 데이터 시스템 각각은 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재할 수 있다. 이 경우, 복수의 랭킹 데이터 시스템 중 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 점수 구간의 일부가 서로 중복되도록 적재될 수 있고, 랭킹 라우팅 테이블은 중복되지 않게 적재된 랭킹 정보의 점수 구간을 읽기(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
응답 처리부(430)는 상기 질의에 대한 상기 랭킹 데이터 시스템의 응답을 수신하여 상기 어플리케이션으로 전송한다. 이때, 랭킹 라우팅 테이블은 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수인 카운트를 상기 복수의 랭킹 데이터 시스템별로 포함할 수 있고, 응답 및 카운트에 기초하여 랭킹이 산정될 수 있다.The
예를 들어, 전체 점수 구간이 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
점수 구간 갱신부(440)는 복수의 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 부하율에 기초하여 상기 랭킹 라우팅 테이블에 갱신한다. 이때, 점수 구간 갱신부(440)는 서로 인접한 랭킹 데이터 시스템의 부하율간의 비율이 A 이상인 경우, 상기 부하율에 기초하여 상기 서로 인접한 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 랭킹 라우팅 테이블에 갱신할 수 있다. 여기서, 서로 인접한 랭킹 데이터 시스템은 서로 인접한 점수 구간의 랭킹 정보를 각각 포함하는 랭킹 데이터 시스템을 의미할 수 있다.The
예를 들어, 점수 구간이 서로 인접한 랭킹 데이터 시스템 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
도 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
단계(710)에서 랭킹 데이터 시스템(300)은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성한다. 이때, 속성 정보는 관리자에게 제공되는 랭킹 관리 도구를 통해 생성될 수 있다.In
단계(720)에서 랭킹 데이터 시스템(300)은 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재한다. 보다 자세하게, 랭킹은 서비스 도메인별로 분할되고, 다시 랭킹 정보는 점수 구간에 따라 분할될 수 있다. 이때, 랭킹 데이터 시스템(300)은 자신에게 할당된 점수 구간에 대해서만 순위를 계산할 수 있고, 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 메모리에 적재할 수 있다.In
단계(730)에서 랭킹 데이터 시스템(300)은 복수의 랭킹 질의 시스템 중 어플리케이션으로부터 질의를 수신한 랭킹 질의 시스템으로부터 질의에 대한 요청을 수신한다. 이때, 질의는 랭킹 질의 시스템에서 랭킹 라우팅 테이블에 기초하여 복수의 랭킹 데이터 시스템 중 결정된 하나로 전송될 수 있다. 이러한 랭킹 라우팅 테이블은 복수의 랭킹 질의 시스템 모두에서 동일한 값을 가질 수 있다. 일례로, 랭킹 데이터 시스템(300)은 적재된 랭킹 정보가 갱신되는 경우, 복수의 랭킹 질의 시스템으로 정보를 브로드캐스팅하여 랭킹 라우팅 테이블이 동일하게 갱신되도록 할 수 있다.In
단계(740)에서 랭킹 데이터 시스템(300)은 수신된 요청에 따른 동작을 적재된 랭킹 정보에 대해 처리하고, 처리한 결과를 랭킹 질의 시스템으로 전송한다. 랭킹 데이터 시스템(300)에서 처리한 결과 및 랭킹 라우팅 테이블에 저장된 복수의 랭킹 데이터 시스템 각각에 대한 카운트에 기초하여 랭킹 질의 시스템에서 랭킹이 산정될 수 있고, 카운트는 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서 비스 이용 주체의 수를 포함할 수 있다. 따라서, 랭킹 질의 시스템은 복수의 랭킹 데이터 시스템 각각에 해당하는 점수 구간에 포함된 이용 주체의 수를 랭킹 라우팅 테이블에 저장된 카운트를 통해 알 수 있기 때문에 복수의 랭킹 데이터 시스템 중 하나에서의 랭킹을 알면, 랭킹 서비스 이용 주체 전체에서 질의를 요청한 어플리케이션의 랭킹을 산정할 수 있다. 이러한 랭킹 산정에 대해서는 아래 도 5를 통해 더욱 자세히 설명한다.In
단계(750)에서 랭킹 데이터 시스템(300)은 자신의 부하율(burst rate)을 계산한다. 여기서, 부하율은 TPS(Throughput Per Second) 및 여유 메모리 용량에 따라 결정될 수 있다.In
이때, 자신의 부하율 및 복수의 랭킹 데이터 시스템 중 인접한 점수 구간의 랭킹 정보가 적재된 다른 랭킹 데이터 시스템의 부하율에 기초하여 잭재된 랭킹 정보 중 일부가 다른 랭킹 데이터 시스템으로 이동되거나 다른 랭킹 데이터 시스템에 적재된 랭킹 정보의 일부가 이동될 수 있다. 보다 자세하게, 적재된 랭킹 정보 중 일부는 자신의 부하율의 다른 랭킹 데이터 시스템의 부하율에 대한 비율이 일정 비율 이상인 경우, 다른 랭킹 데이터 시스템으로 이동될 수 있다. 예를 들어, 점수 구간이 서로 인접한 랭킹 데이터 시스템 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
단계(770)에서 랭킹 데이터 시스템(300)은 주기적으로 자신의 랭킹 정보를 데이터베이스에 백업한다.In
상술한 단계(710) 내지 단계(770)는 랭킹 데이터 시스템(300)이 포함할 수 있는 자료구조 생성부, 랭킹 정보 적재부, 요청 수신부, 요청 처리부, 부하율 계산부, 부하율 전송부 및 백업부에 의해 각각 수행될 수 있다.The above-described
도 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
단계(810)에서 랭킹 질의 시스템(400)은 복수의 랭킹 데이터 시스템으로부터 속성 정보 및 부하율 중 적어도 하나를 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신한다. 이때, 부하율은 상기 복수의 랭킹 데이터 시스템에서 TPS 및 여유 메모리 용량에 따라 각각 결정되어 브로드캐스트될 수 있다. 또한, 복수의 랭킹 데이터 시스템 각각은 랭킹 스킴 테이블로부터 서비스할 랭킹의 속성 정보를 읽어, 메모리에 속성 정보에 해당하는 자료구조를 생성할 수 있다. 즉, 랭킹 질의 시스템(400)은 복수의 랭킹 데이터 시스템으로부터 각각 수신되는 속성 정보와 부하율을 수신하여 랭킹 라우팅 테이블을 생성 또는 갱신할 수 있다.In
이때, 복수의 랭킹 데이터 시스템 각각은 점수 구간에 따라 분할되어 복수의 랭킹 데이터 시스템에 분산 적재되는 랭킹 정보 중 해당하는 점수 구간의 랭킹 정보를 데이터베이스로부터 수신하여 생성된 자료구조를 통해 메모리에 적재할 수 있다. 이 경우, 복수의 랭킹 데이터 시스템 중 서로 인접한 점수 구간의 랭킹 정보를 적재하는 랭킹 데이터 시스템마다 점수 구간의 일부가 서로 중복되도록 적재될 수 있고, 랭킹 라우팅 테이블은 중복되지 않게 적재된 랭킹 정보의 점수 구간을 읽 기 구간으로서, 중복되지 않게 적재된 랭킹 정보의 점수 구간 및 중복되어 적재된 랭킹 정보의 점수 구간은 쓰기 구간으로서, 각각 저장할 수 있다. 즉, 쓰기 동작은 동시에 두 개의 랭킹 데이터 시스템에서 발생할 수 있지만, 읽기 동작은 반드시 하나의 랭킹 데이터 시스템에서 발생하도록 한정할 수 있다.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
단계(810)에서 랭킹 질의 시스템(400)은 상기 질의에 대한 상기 랭킹 데이터 시스템의 응답을 수신하여 상기 어플리케이션으로 전송한다. 이때, 랭킹 라우팅 테이블은 랭킹 정보를 요청하거나 랭킹 정보를 등록하는 랭킹 서비스 이용 주체의 수인 카운트를 상기 복수의 랭킹 데이터 시스템별로 포함할 수 있고, 응답 및 카운트에 기초하여 랭킹이 산정될 수 있다.In
예를 들어, 전체 점수 구간이 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
단계(810)에서 랭킹 질의 시스템(400)은 복수의 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 부하율에 기초하여 상기 랭킹 라우팅 테이블에 갱신한다. 이때, 랭킹 질의 시스템(400)은 서로 인접한 랭킹 데이터 시스템의 부하율간의 비율이 A 이상인 경우, 상기 부하율에 기초하여 상기 서로 인접한 랭킹 데이터 시스템이 각각 포함하는 랭킹 정보의 점수 구간을 상기 랭킹 라우팅 테이블에 갱신할 수 있다. 여기서, 서로 인접한 랭킹 데이터 시스템은 서로 인접한 점수 구간의 랭킹 정보를 각각 포함하는 랭킹 데이터 시스템을 의미할 수 있다.In
예를 들어, 점수 구간이 서로 인접한 랭킹 데이터 시스템 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
이와 같이, 본 발명의 실시예들에 따른 랭킹 산정 방법을 이용하면, 복수의 랭킹 데이터 시스템에 랭킹 정보를 분산 적재하고, 자신의 점수 구간에 대해서만 랭킹 정보를 처리하도록 함으로써, 실시간으로 대용량의 랭킹을 산정할 수 있고, 랭킹 라우트 테이블을 이용하여 어플리케이션의 질의에 맞는 랭킹 데이터 시스템으로 질의를 중계하고, 랭킹 데이터 시스템의 응답과 랭킹 라우트 테이블에 저장된 복수의 랭킹 데이터 시스템 각각의 카운터를 통해 순위를 결정함으로써, 실시간으로 대용량의 랭킹을 산정할 수 있다. 또한, 랭킹 데이터 시스템의 부하율에 기초하여 부하율이 높은 랭킹 데이터 시스템의 랭킹 정보 중 일부를 부하율이 낮은 랭킹 데이터 시스템으로 이동시킴으로써, 동적으로 부하를 분산시킬 수 있다.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
단계(930)에서는 랭킹 질의 시스템에서 각 랭킹 데이터 시스템에 생성된 속 성 정보를 읽어와 랭킹 라우팅 테이블을 생성할 수 있다. 단계(940)에서는 랭킹 질의 시스템에서 어플리케이션으로부터 랭킹 요청에 대한 질의를 수신하면, 랭킹 요청에 대해서 해당 랭킹 정보가 어느 랭킹 데이터 시스템에 있는지 랭킹 라우팅 테이블을 조회하고, 해당 랭킹 데이터 시스템에 요청을 중계할 수 있다. 이때, 어플리케이션으로부터의 랭킹 요청에 대한 질의는 복수의 랭킹 질의 시스템에 대한 애니캐스트 전송 방식을 통해 수신될 수 있다.In
단계(950)에서는 랭킹 데이터 시스템에서 요청에 따라 랭킹 정보가 저장된 내부 자료구조를 검색해, 필요한 동작을 수행하고 결과를 요청한 랭킹 질의 시스템으로 전달할 수 있다. 단계(960)에서는 랭킹 질의 시스템에서 랭킹 데이터 시스템으로부터 수신한 결과를 질의 전송한 어플리케이션으로 전달할 수 있다. 이때, 상술한 바와 같이, 전체에서의 랭킹은 랭킹 질의 시스템이 랭킹 라우팅 테이블과 수신한 결과를 이용하여 계산한 후 어플리케이션으로 전달할 수 있다.In
단계(970)에서는 어플리케이션에서 수신한 결과를 사용자에게 전달하고, 단계(980)에서는 랭킹 데이터 시스템에서 주기적으로 자신의 랭킹 정보를 데이터베이스에 백업할 수 있다.In
도 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
단계(1040)에서는 랭킹 질의 시스템에서 랭킹 라우팅 테이블의 읽기 구간 및 쓰기 구간의 값을 변경하여 인접버퍼의 영역을 조정한다. 이러한 인접버퍼는 서로 인접한 점수 구간의 랭킹 정보가 적재된 랭킹 데이터 시스템에서 중복되는 점수 구간의 랭킹 정보를 저장하기 위한 영역으로써, 부하율이 낮은 랭킹 데이터 시스템은 인접버퍼의 랭킹 정보를 전용 영역에 저장하여 새로운 인접버퍼 영역을 설정하고, 부하율이 높은 랭킹 데이터 시스템은 전용 영역 중 일부를 인접버퍼 영역으로 전환할 수 있다. 부하율에 따라 이러한 동작이 복수의 랭킹 데이터 시스템에 대해 재귀적으로 수행되면, 부하율이 높은 랭킹 데이터 시스템은 해당 점수 구간이 좁아지고, 부하율이 낮은 랭킹 데이터 시스템은 해당 점수 구간이 넓어져 전체 서비스 영역에 걸쳐 부하를 순차적으로 고루 분산시킬 수 있다.In
본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 파일 데이터, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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)
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)
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)
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)
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)
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 |
-
2009
- 2009-09-30 KR KR1020090093476A patent/KR101029416B1/en active IP Right Grant
-
2010
- 2010-09-30 WO PCT/KR2010/006654 patent/WO2011040765A2/en active Application Filing
Patent Citations (2)
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)
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 |