KR20220051574A - 리퀘스트 핸들링 방법 및 그 장치 - Google Patents
리퀘스트 핸들링 방법 및 그 장치 Download PDFInfo
- Publication number
- KR20220051574A KR20220051574A KR1020200135146A KR20200135146A KR20220051574A KR 20220051574 A KR20220051574 A KR 20220051574A KR 1020200135146 A KR1020200135146 A KR 1020200135146A KR 20200135146 A KR20200135146 A KR 20200135146A KR 20220051574 A KR20220051574 A KR 20220051574A
- Authority
- KR
- South Korea
- Prior art keywords
- query statement
- query
- data
- data storage
- request
- 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/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24557—Efficient disk access during query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
데이터 검색을 요구하는 리퀘스트가 수신되면 데이터 저장소의 스트레스 정도를 고려하여 선택적으로 데이터 저장소로 쿼리문을 전송하여 데이터 검색을 진행하는 리퀘스트 핸들링 방법 및 그 장치가 제공된다. 본 발명의 일 실시예에 따른 리퀘스트 핸들링 방법은 데이터 검색을 요청하는 리퀘스트를 통신 단말로부터 수신하는 단계; 데이터 저장소가 스트레스 상태인지를 판별하는 단계; 상기 판별 결과 상기 데이터 저장소가 스트레스 상태이면 상기 데이터 검색에 이용되는 쿼리문을 상기 데이터 저장소로 전송하는 것을 보류하는 단계; 및 상기 판별 결과 상기 데이터 저장소가 스트레스 상태가 아니면 상기 쿼리문을 상기 데이터 저장소로 전송하여, 상기 쿼리문을 기초로 검색된 검색 데이터를 상기 데이터 저장소로부터 수신하고, 상기 검색 데이터를 포함하는 리퀘스트 응답을 상기 통신 단말로 전송하는 단계를 포함한다.
Description
본 발명은 데이터 검색을 요청하는 리퀘스트(request)를 처리하기 위한 리퀘스트 핸들링 방법 및 그 장치에 관한 것이다. 보다 자세하게는 데이터 검색을 요구하는 리퀘스트가 수신되면 데이터 저장소의 스트레스 정도를 고려하여 선택적으로 데이터 저장소로 쿼리문을 전송하여 데이터 검색을 진행하는 리퀘스트 핸들링 방법 및 그 장치에 관한 것이다.
통신망과 통신 기기의 발전으로 인하여, 통신망에는 대량의 데이터가 발생하고 있다. 더불어, 사업자들은 사용자의 데이터를 보관하기 위하여, 대규모의 데이터베이스를 독자적으로 운영하기도 한다.
근래에는 빅 데이터를 분석하여, 교통 사항 예측, 재해 예측, 날씨 예측, 질병 예측, 소비 패턴 예측하는 등의 데이터 분석 기술이 개발되어 실제 실생활에 이용되고 있다. 데이터를 분석하기 위해서는, 일정한 조건에 부합되는 데이터를 데이터베이스에서 획득하고 이를 분석한다. 데이터 분석 전문가들은, 데이터 검색 범위와 파라미터 등이 설정된 쿼리문(query)을 데이터베이스로 전송하고, 쿼리문을 이용한 추출된 검색 데이터를 포함하는 쿼리 응답을 데이터베이스로부터 수신한다.
그런데 데이터베이스는 각각의 쿼리문에 일일이 응답하는 경우, 부하가 증가될 수 있으며, 최악의 경우에는 데이터베이스의 동작이 멈추는 상황이 발생할 수 있다. 이러한 상황을 대비하기 위하여, 데이터베이스를 포함하는 데이터 저장소의 컴퓨팅 자원을 증설하는 것을 고려할 수 있다. 그러나 데이터 저장소의 자원 증설은 많은 비용이 발생할 수 있다.
본 발명이 해결하고자 하는 기술적 과제는, 데이터 저장소의 자원 증설을 하지 않은 상태에서도 데이터 저장소가 안정적으로 동작할 수 있도록 리퀘스트를 핸들링하는 방법 및 그 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 데이터 저장소의 상태를 토대로 데이터 저장소와의 커넥션을 동적으로 제어하여 데이터 저장소의 안정성을 향상시키는 리퀘스트 핸들링 방법 및 그 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 잘못 작성된 쿼리문의 전송으로 인하여 데이터 저장소의 부하가 가중되지 않도록 쿼리문의 적합성을 검증하는 리퀘스트 핸들링 방법 및 그 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 캐시에 저장된 검색 결과를 이용하여 데이터 저장소의 부하를 가중하지 않고, 리퀘스트 응답을 통신 단말로 신속하게 제공할 수 있는 리퀘스트 핸들링 방법 및 그 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 리퀘스트 핸들링 방법은 데이터 검색을 요청하는 리퀘스트를 통신 단말로부터 수신하는 단계; 데이터 저장소가 스트레스 상태인지를 판별하는 단계; 상기 판별 결과 상기 데이터 저장소가 스트레스 상태이면 상기 데이터 검색에 이용되는 쿼리문을 상기 데이터 저장소로 전송하는 것을 보류하는 단계; 및 상기 판별 결과 상기 데이터 저장소가 스트레스 상태가 아니면 상기 쿼리문을 상기 데이터 저장소로 전송하여, 상기 쿼리문을 기초로 검색된 검색 데이터를 상기 데이터 저장소로부터 수신하고, 상기 검색 데이터를 포함하는 리퀘스트 응답을 상기 통신 단말로 전송하는 단계를 포함할 수 있다.
상기 리퀘스트 핸들링 방법은, 상기 쿼리문에 대한 타임아웃을 확인하는 단계; 및 상기 타임아웃이 만료되기까지 상기 검색 데이터를 캐시에 저장하는 단계를 더 포함할 수 있다.
상기 판별하는 단계는, 소정 시간대에서 측정한 쿼리문들의 평균 응답 시간, 상기 소정 시간대에서 측정한 쿼리문의 응답 시간이 기준 응답 시간을 이탈한 횟수, 상기 쿼리문의 처리 비용과 유사 쿼리문의 처리 비용 간의 차이 중에서 하나 이상을 이용하여 상기 데이터 저장소가 스트레스 상태인지를 판별하는 단계를 포함할 수 있다.
상기 리퀘스트 핸들링 방법은 상기 쿼리문이 전송되고나서 상기 검색 데이터가 수신되기까지의 응답 시간을 측정하는 단계; 상기 측정한 응답 시간이 직전에 측정한 상기 쿼리문의 응답 시간 보다 증가하였는지 여부를 확인하는 단계; 상기 쿼리문의 처리 비용이 유사 쿼리문의 처리 비용 보다 소정의 비용 이상으로 큰지 여부를 확인하는 단계; 및 상기 측정한 응답 시간이 상기 직전에 측정한 상기 쿼리문의 응답 시간 보다 증가되고, 상기 쿼리문의 처리 비용이 상기 유사 쿼리문의 처리 비용 보다 소정의 비용 이상으로 크기 않으면 상기 데이터 저장소에 스트레스가 발생한 것으로 판별하는 단계를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 다른 실시예에 따른 리퀘스트 핸들링 방법은 데이터 검색을 요청하는 리퀘스트를 통신 단말로부터 수신하는 단계; 상기 데이터 검색에 이용되는 쿼리문이 캐시에 저장되어 있는지 여부를 확인하는 단계; 및 상기 쿼리문이 캐시에 저장되어 있으면 상기 쿼리문을 이용하여 검색된 검색 데이터를 상기 캐시에서 추출하여, 상기 검색 데이터를 포함하는 리퀘스트 응답을 상기 통신 단말로 전송하는 단계를 포함할 수 있다.
상기 리퀘스트 핸들링 방법은, 상기 쿼리문이 캐시에 저장되어 있지 않으면, 데이터 저장소로 상기 쿼리문을 전송하여, 상기 쿼리문을 통해서 검색 데이터를 상기 데이터 저장소로부터 수신하는 단계; 및 상기 쿼리문의 타임아웃을 확인하고, 상기 타임아웃 동안에 상기 검색 데이터를 상기 캐시에 저장하는 단계를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 또 다른 실시예에 따른 리퀘스트 핸들링 장치는, 하나 이상의 쿼리문의 검색 데이터를 저장하는 캐시; 및 데이터 검색을 요청하는 리퀘스트를 통신 단말로부터 수신하고, 상기 데이터 검색에 이용되는 쿼리문이 상기 캐시에 저장되어 있으면 상기 캐시에서 상기 쿼리문의 검색 데이터를 추출하여 상기 통신 단말로 전송하는 리퀘스트 처리부를 포함할 수 있다.
상기 리퀘스트 핸들링 장치는, 데이터 저장소와 하나 이상의 커넥션을 형성하는 복수의 커넥션 풀을 포함하고, 상기 캐시에 상기 쿼리문의 검색 데이터가 저장되어 있지 않으면 상기 쿼리문을 복수의 커넥션 풀 중에서 어느 하나로 배정하고, 쿼리문을 배정한 커넥션 풀을 통해서 상기 쿼리문을 전송하고 상기 쿼리문에 대한 검색 데이터를 수신하는 커넥션 설정부를 더 포함할 수 있다.
상기 리퀘스트 핸들링 장치는, 상기 데이터 저장소의 스트레스 상태를 확인하여 스트레스 상태가 아닌 경우에 상기 쿼리문이 상기 데이터 저장소로 전송되게 하는 스트레스 분석부를 더 포함할 수 있다.
일 실시예에서, 상기 스트레스 분석부는 상기 데이터 저장소가 스트레스 상태이면, 상기 캐시에 포함된 각 쿼리문의 타임아웃을 연장할 수 있다.
몇몇 실시예들에서 상기 커넥션 설정부는 상기 데이터 저장소가 스트레스 상태인 것으로 판별되면, 각 커넥션 풀에서 이용할 수 있는 커넥션 개수를 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른, 리퀘스트 핸들링 시스템의 구성도이다.
도 2는 본 발명의 다른 실시예에 따른, 리퀘스트 핸들링 장치의 구성도이다.
도 3은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제1 순서도다.
도 4는 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제2 순서도이다.
도 5는 쿼리문을 등록할 때 제공되는 입력 인터페이스를 예시하는 도면이다.
도 6은 쿼리 매핑 정보를 예시하는 도면이다.
도 7은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제3 순서도다.
도 8은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제4 순서도다.
도 9는 다양한 실시예에서 컴퓨팅 장치를 구현할 수 있는 예시적인 하드웨어 구성도이다.
도 2는 본 발명의 다른 실시예에 따른, 리퀘스트 핸들링 장치의 구성도이다.
도 3은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제1 순서도다.
도 4는 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제2 순서도이다.
도 5는 쿼리문을 등록할 때 제공되는 입력 인터페이스를 예시하는 도면이다.
도 6은 쿼리 매핑 정보를 예시하는 도면이다.
도 7은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제3 순서도다.
도 8은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제4 순서도다.
도 9는 다양한 실시예에서 컴퓨팅 장치를 구현할 수 있는 예시적인 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
이하, 도면들을 참조하여 본 발명의 몇몇 실시예들을 설명한다.
도 1은 본 발명의 일 실시예에 따른, 리퀘스트 핸들링 시스템의 구성도이다.
도 1에 도시된 바와 같이, 리퀘스트 핸들링 시스템은 리퀘스트 핸들링 장치(200)와 데이터 저장소(300)를 포함할 수 있다.
리퀘스트 핸들링 장치(200)는 데이터 저장소(300)와 연결되고 더불어 네트워크(400)를 통해서 통신 단말(110, 120)와 통신할 수 있다. 상기 리퀘스트 핸들링 장치(200)는 네트워크(400)를 통해서도 데이터 저장소(300)와 연결되어 통신할 수도 있다. 상기 리퀘스트 핸들링 장치(200)는 데이터 저장소(300)와 하나 이상의 커넥션을 형성하고, 상기 커넥션을 통해서 데이터 저장소(300)로 쿼리문을 전송하고 이에 대한 응답을 수신할 수 있다.
제1 통신 단말(110)은 개인용 컴퓨터, 이동통신 단말, 노트북, 서버 등과 같은 통신 가능한 장치로서, 데이터 저장소(300)에서 데이터를 검색하고자 하는 사용자(예컨대, 데이터 분석 전문가)에 의해 사용될 수 있다. 상기 제1 통신 단말(110)은 데이터 검색을 요구하는 리퀘스트(request)를 리퀘스트 핸들링 장치(200)로 전송할 수 있다. 이때, 제1 통신 단말(110)은 쿼리 식별자와 사용자 식별정보를 상기 리퀘스트에 포함할 수 있다. 상기 쿼리 식별자는 데이터 저장소(300)로 전송되는 쿼리문(query)을 식별하기 위한 식별정보이다. 상기 쿼리 식별자로서 REST API(REpresentational State Transfer Application Programming Interface) 기반의 URL(Uniform Resource Locator)을 이용할 수 있다. 이 경우, 상기 리퀘스트에는 REST API URL가 포함될 수 있다. 제1 통신 단말(110)은 리퀘스트에 대한 응답으로, 데이터 저장소(300)에서 상기 쿼리문에 따라 검색된 다수의 검색 데이터(즉, 검색 결과)를 포함하는 리퀘스트 응답을 수신할 수 있다.
제2 통신 단말(120)은 개인용 컴퓨터, 이동통신 단말, 노트북, 서버 등과 같은 통신 가능한 장치로서, 데이터 저장소(300)에 데이터 소스를 등록하거나 쿼리 식별자와 쿼리문이 매핑된 정보를 등록하는 사용자에 의해서 이용될 수 있다. 상기 제2 통신 단말(120)은 리퀘스트 핸들링 장치(200)에 접속하여, 신규 데이터베이스의 IP와 포트를 포함하는 데이터 소스 정보를 상기 리퀘스트 핸들링 장치(200)에 등록할 수 있다. 또한, 제2 통신 단말(120)은 리퀘스트 핸들링 장치(200)에 접속하여, 쿼리 식별자와 쿼리문을 포함하는 쿼리 매핑 정보를 상기 리퀘스트 핸들링 장치(200)에 등록할 수 있다.
데이터 저장소(300)는 대규모의 데이터를 저장하고 데이터 소스로서, 하나 이상의 데이터베이스(310)를 포함할 수 있다. 데이터 저장소(300)에 포함된 데이터베이스(310)는 리퀘스트 핸들링 장치(200)로부터 쿼리문을 수신하면, 상기 쿼리문에 부합되는 다수의 데이터를 검색하고, 다수의 검색 데이터를 포함하는 쿼리 응답을 데이터 리퀘스트 핸들링 장치(200)로 전송할 수 있다.
리퀘스트 핸들링 장치(200)는 데이터 저장소(300)의 스트레스 정도를 모니터링하여, 스트레스 정도에 따라 통신 단말(110, 120)로부터 수신한 리퀘스트를 핸들링한다. 상기 스트레스 정도는 데이터 저장소(300)의 부하 상태를 수치화한 것일 수 있다.
도 2는 본 발명의 다른 실시예에 따른, 리퀘스트 핸들링 장치의 구성도이다.
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 리퀘스트 핸들링 장치(200)는 리퀘스트 처리부(210), 저장부(220), 등록부(230), 캐시(240), 커넥션 설정부(250) 및 스트레스 분석부(260)를 포함하고, 이러한 구성요소는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어 및 소프트웨어의 조합을 통해서 구현될 수 있다. 또한, 리퀘스트 처리부(210), 등록부(230), 커넥션 설정부(250) 및 스트레스 분석부(260)는 후술하는 컴퓨팅 장치의 프로세서에 실행되는 프로그램 형태로 구현될 수 있다.
저장부(220)는 디스크 장치 등과 같은 저장수단으로서, 쿼리 식별자, 쿼리문, 쿼리문 처리 비용, 데이터베이스(310)의 이름, 응답대기 최대시간, 데이터 최대 건수, 기준 응답 시간 및 타임아웃이 매핑된 쿼리 매핑 정보를 저장한다. 여기서, 쿼리문 처리 비용은 데이터베이스(310)에서 상기 쿼리문에 부합되는 데이터들을 검색할 때에 투입되는 데이터베이스(310)의 자원량(예컨대, CPU 사용량, 메모리 사용량, 트래픽 등)을 수치화한 것일 수 있다. 상기 쿼리문 처리 비용은, 데이터베이스(310)에서 해당 쿼리문을 이용하여 데이터를 검색할 때에 발생한, CPU 사용량, 메모리 사용량, 트래픽 사용량 각각에 서로 다른 가중치를 적용하고, 각 사용량의 합산함으로써 계산될 수 있다. 또한, 상기 응답대기 최대시간은, 상기 쿼리문을 데이터베이스(310)로 전송한 후에, 쿼리문에 대한 응답이 수신되기까지 데이터베이스(310)와의 커넥션을 유지할 수 있는 최대시간으로서, 응답대기 최대시간이 경과되면 쿼리문에 대한 응답이 수신되지 않더라도 해당 데이터베이스(310)와의 커넥션이 해제될 수 있다. 또한, 상기 데이터 최대 건수는 해당 쿼리문을 이용하여 데이터베이스(310)에서 검색할 수 있는 데이터의 최대 건수를 나타낸다. 예컨대, 제1 쿼리문과 데이터 최대 건수로서 1000 개가 매핑되어 쿼리 매핑 정보에 저장된 경우, 제1 쿼리문을 통해서 데이터베이스(310)에서 검색할 수 있는 데이터는 1000 개로 제한된다. 상기 기준 응답 시간은 데이터베이스(310)로부터 해당 쿼리문에 대한 응답이 수신하는데 예상되는 시간을 나타내는 것으로서, 쿼리문의 처리 비용을 토대로 산출될 수 있다. 상기 기준 응답 시간은 처리 비용이 클수록 더 긴 기준 응답 시간이 설정되어 저장부(220)에 저장될 수 있다. 상기 타임아웃은 쿼리문을 이용한 다수의 검색 데이터가 캐시(240)에 저장되는 기간을 나타낸다. 예컨대, 타임아웃이 100초인 경우, 상기 쿼리문을 이용한 다수의 검색 데이터는 캐시(240)에 100초 동안 저장되고, 100초가 초과되면 상기 다수의 검색 데이터는 캐시(240)에서 삭제된다.
또한, 저장부(220)는 데이터 저장소(300)에 접근할 수 있는 정보가 기록된 데이터 소스 정보를 저장할 수 있다. 상기 데이터 소스 정보에는 데이터베이스(310)의 이름, IP 주소와 포트, 테이블 스페이스, 스키마, 테이블, 칼럼 등이 기록될 수 있다. 게다가, 저장부(220)는 각 사용자의 식별정보와 등급 정보를 저장할 수 있다. 상기 사용자의 식별정보로서, 사용자의 로그인 아이디가 저장부(220)에 저장될 수 있으며, 또는 사용자의 토큰이 저장부(220)에 저장될 수도 있다. 저장부(220)는 사용자의 등급 정보로서, 최우선 순위 정보 또는 일반 순위 정보를 저장할 수 있다. 예컨대, VIP 회원인 사용자의 등급 정보로서 최우선 순위 정보가 저장부(220)에 저장될 수 있고, 일반 회원인 사용자의 등급 정보로서 일반 순위 정보가 저장부(220)에 저장될 수 있다. 또한, 저장부(220)는 각 쿼리문의 응답 시간을 저장할 수 있다. 여기서 쿼리문의 응답 시간은, 상기 쿼리문이 데이터 저장소(300)의 데이터베이스(310)로 전송되어, 데이터베이스(310)로부터 상기 쿼리문에 대한 응답이 수신되기까지 소요된 시간이다.
등록부(230)는 새로운 데이터베이스(310)에 접근할 수 있는 데이터 소스 정보를 입력받아 저장부(220)에 저장할 수 있다. 또한, 등록부(230)는 쿼리 식별자와 쿼리문을 사용자로부터 입력받아, 상기 쿼리 식별자와 쿼리문이 매핑된 쿼리 매핑 정보를 상기 저장부(220)에 저장할 수 있다. 등록부(230)의 동작에 대해서 도 3 내지 도 6을 참조한 실시예를 통해서 자세하게 설명하기로 한다.
캐시(240)는 각 쿼리문을 이용한 데이터 검색 결과를 저장하는 저장 영역으로서, 메모리, 디스크 장치와 같은 저장수단이 이용될 수 있다. 또한, 캐시(240)는 하드웨어로 구현될 수 있고, 또는 소프트웨어로 구현될 수도 있다. 상기 캐시(240)는 동적으로 축소될 수 있고 확장될 수 있다. 부연하면, 캐시(240)는 검색 데이터의 개수가 많아지는 경우에 확장되고, 검색 데이터 개수가 적어지는 경우에 축소될 수 있다. 캐시(240)에 저장된 각 검색 데이터에는 타임아웃이 설정되어 있다. 상기 타임아웃에 해당하는 시간이 경과되면 해당 쿼리문을 이용하여 획득한 다수의 검색 데이터가 캐시(240)에서 삭제된다. 도 2에서는 제1 쿼리문(Quary#1)을 이용한 검색 데이터는 100초의 타임아웃이 설정된 것으로 예시하고 있으면, 제2 쿼리문(Quary#2)을 이용한 검색 데이터는 200초의 타임아웃이 설정된 것으로 예시하고 있다. 또한, 도 2에서 사각형 박스 안에 포함된 검색 색상의 사각형은 검색 데이터 개수를 그래픽 형태로 예시하는 것이다.
커넥션 설정부(250)는 데이터 저장소(300)의 각 데이터베이스(310)와 하나 이상의 커넥션을 형성할 수 있다. 또한, 상기 커넥션 설정부(250)는 복수의 커넥션 풀(Connection Pool)을 포함할 수 있다. 각각의 커넥션 풀(P1, P2, P3)은 데이터 저장소(300)와 형성할 수 있는 최대 커넥션 개수가 서로 상이할 수 있다. 도 2에 도시된 원이 커넥션을 예시하고 있으며, 이에 따라 도 2에서는 제1 커넥션 풀(P1)은 최대 8개의 커넥션을 데이터 저장소(300)와 형성할 수 있고, 제2 커넥션 풀(P2)에는 최대 16개의 커넥션을 데이터 저장소(300)와 형성할 수 있으며, 제3 커넥션 풀(P3)은 최대 12개의 커넥션을 데이터 저장소(300)와 형성할 수 있다.
또한, 커넥션 설정부(250)는 사용자의 등급 정보, 쿼리문의 처리 비용 중 하나 이상에 기초하여, 복수의 커넥션 풀(P1, P2, P3) 중에서 어느 하나로 쿼리문을 배정할 수 있다. 이때, 커넥션 설정부(250)는 리퀘스트에서 사용자 식별정보를 확인하고, 사용자 식별정보와 대응하는 사용자 등급 정보를 저장부(220)에서 확인한 후에, 상기 사용자 등급 정보에 부합되는 커넥션 풀(P1, P2, P3)로 상기 사용자의 쿼리문을 배정할 수 있다. 예컨대, 제1 커넥션 풀(P1)은 최우선 순위의 사용자가 요청하는 쿼리문을 배정받을 수 있고, 제2 커넥션 풀(P2)은 상대적으로 많은 개수의 커넥션을 형성할 수 있고 이에 따라 상대적으로 긴 시간의 커넥션을 필요한 쿼리문(즉, 처리 비용이 비싼 쿼리문)을 배정받을 수 있다. 또한, 제3 커넥션 풀(P3)은 제2 커넥션 풀(P2)과 비교하여 상대적으로 적은 개수의 커넥션을 형성할 수 있어 짧은 시간의 커넥션이 필요한 쿼리문(즉, 처리 비용이 상대적으로 싼 쿼리문)을 배정받을 수 있다. 커넥션 풀에 포함된 모든 커넥션이 사용 중에 있으면, 이후에 해당 커넥션 풀로 할당된 쿼리문은 어느 한 커넥션의 사용이 완료될 때까지 대기중 상태로 설정되어 큐(queue)에 등록된다.
각각의 커넥션 풀(P1, P2, P3)에 포함된 커넥션에 컴퓨팅 자원이 서로 상이하게 할당될 수 있다. 예를 들어, 제1 커넥션 풀(P1)에 포함되는 개별 커넥션에는, 다른 커넥션 풀(P2, P3)에 포함된 개별 커넥션 보다 더욱 많은 컴퓨팅 자원(예컨대, CPU, 메모리, 네트워크 트래픽)이 할당될 수 있다. 또한, 제1 커넥션 풀(P1)에는 사용되지 않은 커넥션 개수가 일정 개수 이상으로 남아 있도록 설계될 수 있다. 이에 따라, 최우선 순위의 등급 정보를 가지는 사용자(예컨대, VIP 사용자)가 발생시킨 쿼리문은, 제1 커넥션 풀(P1)에 배정되어 지연시간이 최소화되어 신속하게 처리될 수 있다.
커넥션 설정부(250)는 커넥션 풀(P1, P2, P3)에서 보유중인 커넥션을 통해서 쿼리문이 데이터 저장소(300)로 전송된 후, 상기 쿼리문에 부합되는 다수의 데이터가 해당 데이터베이스(310)에서 검색되어 다수의 검색 데이터를 포함하는 쿼리 응답이 수신되면, 상기 다수의 검색 데이터를 포함하는 리퀘스트 응답을 제1 통신 단말(110)로 전송할 수 있다. 또한, 커넥션 설정부(250)는 상기 쿼리문의 타임아웃을 저장부(220)에서 확인하고, 상기 쿼리문과 상기 쿼리문을 이용한 다수의 검색 데이터를 캐시(240)에 저장한다. 이때, 커넥션 설정부(250)는 상기 다수의 검색 데이터가 캐시(240)에 저장되는 유지시간을 상기 타임아웃으로 설정하여, 상기 캐시(240)에 저장한다. 이에 따라, 상기 타임아웃 동안만 상기 다수의 검색 데이터와 쿼리문이 캐시(240)에 저장되고, 상기 타임아웃이 경과되면 캐시(240)에는 상기 다수의 검색 데이터와 쿼리문이 삭제된다.
리퀘스트 처리부(210)는 제1 통신 단말(110)로부터 리퀘스트를 수신하면 리퀘스트에 포함된 쿼리 식별자(예컨대, REST API 기반의 URL)를 확인하고, 이 쿼리 식별자와 매핑된 쿼리문을 저장부(220)에서 확인한다. 리퀘스트 처리부(210)는 상기 확인한 쿼리문이 캐시(240)에 저장되어 있는지 여부를 확인하여, 캐시(240)에 저장되어 있는 경우, 상기 쿼리문을 해당하는 다수의 검색 데이터를 캐시(240)에서 확인하여, 이렇게 확인한 다수의 검색 데이터를 포함하는 리퀘스트 응답을 제1 통신 단말(110)로 전송할 수 있다. 즉, 리퀘스트 처리부(210)는 상기 쿼리문을 이용한 다수의 검색 데이터가 캐시(240)에 저장된 경우, 쿼리문을 데이터 저장소(300)로 전송하지 않고 캐시(240)에서 쿼리문에 대한 검색 결과(즉, 다수의 검색 데이터)를 추출하여 제1 통신 단말(110)로 전송할 수 있다. 반면에, 리퀘스트 처리부(210)는 상기 쿼리문을 이용한 검색 데이터가 캐시(240)에 저장되어 있지 않으면, 스트레스 분석부(260)로 쿼리문을 전달하여, 데이터베이스(310)의 검색을 통해서 쿼리문에 부합되는 데이터가 획득될 수 있게 한다.
스트레스 분석부(260)는 각 쿼리문의 응답 시간을 측정하여 저장부(220)에 저장할 수 있고, 데이터 저장소(300)의 스트레스 여부를 모니터링할 수 있다. 스트레스 분석부(260)는 소정의 시간대에 측정한 각 쿼리문의 응답 시간이 기준 응답 시간을 초과한 횟수, 상기 소정의 시간대에서 측정한 각 쿼리문의 평균 응답 시간, 쿼리문의 처리 비용과 유사 쿼리문의 처리 비용 간의 차이 중에서 하나 이상을 이용하여 데이터 저장소(300)에 스트레스가 발생하였는지 여부를 판정할 수 있다. 스트레스 분석부(260)는 데이터 저장소(300)에 스트레스가 발생하지 않은 것으로 확인되면, 상기 쿼리문에 대한 커넥션 설정을 커넥션 설정부(250)로 요청한다. 반면에, 스트레스 분석부(260)는 데이터 저장소(300)에 스트레스가 발생한 것으로 판정되면, 소정의 시간 이후에 커넥션 할당을 커넥션 설정부(250)로 요청하거나, 상기 제1 통신 단말(110)의 리퀘스트를 거절할 수 있다.
본 실시예에 따르면, 리퀘스트 핸들링 장치(200)는 캐시(240)에 저장된 검색 결과를 이용하여 통신 단말(110, 120)의 리퀘스트에 빠르게 응답할 수 있다. 또한, 리퀘스트 핸들링 장치(200)는 데이터 저장소(300)의 스트레스 발생 여부에 따라, 데이터 저장소(300)의 데이터베이스(310)로 쿼리문을 선택적으로 전송하여, 데이터 저장소(300)의 부하 발생을 최소화하여 데이터베이스(310)의 동작이 멈추는 현상을 최소화할 수 있다.
도 3은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제1 순서도다.
도 3을 참조하면, 등록부(230)는 제2 통신 단말(120)로부터 데이터 소스 등록을 요청받을 수 있다(S101). 이어서, 등록부(230)는 데이터 소스의 상세 정보를 제2 통신 단말(120)로 요청하여, 데이터베이스(310)의 이름, IP 주소와 포트, 테이블 스페이스, 스키마, 테이블, 칼럼 등을 제2 통신 단말(120)로부터 수신한다(S103).
다음으로, 등록부(230)는 상기 데이터베이스(310)의 이름, IP 주소와 포트, 테이블 스페이스, 스키마, 테이블, 칼럼 등을 포함하는 데이터 소스 정보를 생성하여 저장부(220)에 저장함으로써, 신규의 데이터 소스 정보를 등록한다(S105). 상기 등록부(230)는 상기 데이터베이스(310)의 이름, IP 주소와 포트 등을 이용하여 상기 데이터베이스(310)에 정상적으로 접속할 수 있는지 여부를 검증한 후에, 접속 검증에 성공하면 상기 데이터 소스 정보를 저장부(220)에 저장할 수 있다.
본 실시에에 따르면, 리퀘스트 핸들링 장치(200)는 데이터 저장소(300)의 DBMS(Management System)를 멈추지 않고도, 새로운 데이터 소스 정보를 편리하게 등록할 수 있는 효과를 발휘할 수 있다.
도 4는 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제2 순서도이다.
도 5는 쿼리문을 등록할 때 제공되는 입력 인터페이스를 예시하는 도면이다.
도 4 및 도 5를 참조하면, 등록부(230)는 제2 통신 단말(120)로부터 쿼리문 등록 요청을 수신할 수 있다(S201). 이어서, 등록부(230)는 쿼리문과 쿼리문 식별자를 매핑할 수 있고, 제한 정보를 입력할 수 있는 도 5와 같은 입력 인터페이스를 제2 통신 단말(120)로 전송할 수 있다(S203).
도 5에 예시된 바와 같이, 입력 인터페이스는 쿼리문이 전송되는 데이터베이스(310)의 이름이 입력되는 제1 입력란(51), 쿼리문 식별자가 입력되는 제2 입력란(52), 쿼리문이 입력되는 제3 입력란(53) 및 데이터 최대 건수가 입력되는 제4 입력란(54)을 포함할 수 있다. 제2 통신 단말(120)의 사용자는 상기 입력 인터페이스의 각 입력란(51 ~ 54)에 각각의 입력 데이터를 입력할 수 있다. 도 5에서는 REST API URL이 쿼리문 식별자로서 제2 입력란(51)에 입력되는 것을 예시하고 있다. 한편, 도 5에 도시되지는 않았으나, 입력 인터페이스에는 쿼리문을 이용한 검색 데이터가 캐시(240)에 저장되는 타임아웃을 입력할 수 있는 제5 입력란 및 응답대기 최대시간을 입력할 수 있는 제6 입력란이 더 포함될 수 있고, 사용자는 상기 제5 입력란과 제6 입력란에 타임아웃과 응답대기 최대시간을 추가적으로 입력할 수 있다.
등록부(230)는 상기 입력 인터페이스에 입력된 정보, 즉 데이터베이스 이름, 쿼리문 식별자(예컨대, API URL), 쿼리문, 데이터 최대 건수, 타임아웃 및 응답대기 최대시간을 제2 통신 단말(120)로부터 수신할 수 있다(S205). 이어서, 등록부(230)는 상기 쿼리문의 처리 비용을 스트레스 분석부(260)로 요청할 수 있다.
이어서, 스트레스 분석부(260)는 현재 데이터 저장소(300)가 스트레스 상태인지 여부를 확인하여, 스트레스 상태가 아니면 커넥션 설정부(250)로 상기 쿼리문의 처리 비용 획득을 요구한다. 다음으로, 커넥션 설정부(250)는 데이터베이스(310)의 이름을 확인하고, 상기 이름에 해당하는 데이터베이스(310)로 상기 쿼리문에 대한 처리 비용을 요청하고(S207), 상기 쿼리문의 대한 처리 비용을 데이터베이스(310)로부터 수신할 수 있다(S209). 상기 커넥션 설정부(250)는 상기 이름과 대응되는 데이터베이스(310)의 IP 주소와 포트를 저장부(220)의 데이터 소스 정보에서 확인한 후, 상기 IP 주소와 포트를 이용하여 상기 이름에 해당하는 데이터베이스(310)로 상기 쿼리문에 대한 처리 비용을 요청할 수 있다. 또한, 커넥션 설정부(250)는 상기 쿼리문과 데이터 최대 건수를 상기 데이터베이스(310)로 전송함으로써, 상기 쿼리문에 대한 처리 비용을 데이터베이스(310)로 요청할 수 있다(S207). 상기 커넥션 설정부(250)는 복수의 커넥션 풀(P1, P2, P3) 중에서 어느 하나를 선택한 후, 이 선택한 커넥션 풀(P1, P2, P3)에 포함된 하나의 커넥션을 이용하여 상기 쿼리문에 대한 처리 비용을 요청할 수 있다.
상기 쿼리문의 처리 비용을 요청받은 데이터베이스(310)는 상기 데이터 최대 건수 이하로 상기 쿼리문을 이용한 데이터를 검색하고, 상기 데이터 검색할 때 투입된 자원량을 기초로, 상기 쿼리문의 처리 비용을 수치화하여 산출할 수 있다. 이때, 데이터베이스(310)는 데이터 검색을 수행하고 검색 데이터가 포함된 쿼리 응답을 리퀘스트 핸들링 장치(200)로 전송되기까지 발생한 CPU 사용량, 메모리 사용량, 트래픽 사용량 각각에 서로 다른 가중치를 적용하고, 각 사용량의 합산함으로써 상기 쿼리문 처리 비용을 계산할 수 있다.
커넥션 설정부(250)는 데이터베이스(310)로부터 상기 쿼리문의 처리 비용을 수신하여 등록부(230)로 전달한다. 다음으로, 등록부(230)는 상기 쿼리문 처리 비용을 확인하고, 상기 쿼리문 처리 비용이 사전에 설정된 임계비용을 초과하는지 여부를 판별한다(S211). 상기 판별 결과 쿼리문 처리 비용이 상기 임계비용을 초과하면, 쿼리문이 잘못 작성된 것으로 판별하여 쿼리문 재입력을 요구하는 메시지를 제2 통신 단말(120)로 전송하여(S213), 쿼리문이 다시 작성하도록 요구한 후, S205 단계부터의 프로세스를 다시 진행할 수 있다.
반면에, 상기 판별 결과 쿼리문 처리 비용이 상기 임계비용 이하이면, 등록부(230)는 상기 쿼리문의 처리 비용을 기초로 상기 쿼리문의 기준 응답 시간을 설정한다. 상기 등록부(230)는 상기 쿼리문의 처리 비용과 비례하는 시간을 갖도록 상기 기준 응답 시간을 설정할 수 있다.
이어서, 등록부(230)는 상기 데이터베이스 이름, 쿼리문 식별자(예컨대, API URL), 쿼리문, 데이터 최대 건수, 타임아웃, 응답대기 최대시간, 기준 응답시간 및 상기 쿼리문 처리 비용이 매핑된 쿼리 매핑 정보를 생성하여 저장부(220)에 저장함으로써, 사용자가 입력한 쿼리문과 쿼리문 식별정보를 등록한다(S215).
도 6은 쿼리 매핑 정보를 예시하는 도면으로서, 도 6에 도시된 바와 같이, 다수의 쿼리 매핑 정보가 사용자에 의해 등록되어 저장부(220)에 저장될 수 있다.
본 실시예에 따르면, 입력 인터페이스를 이용하여 편리하게 쿼리 매핑 정보를 등록할 수 있는 효과를 발휘할 수 있다. 또한, 본 실시예에 따르면, 사용자가 입력한 쿼리문의 처리 비용을 확인하여 쿼리문이 비정상적인 여부를 검증함으로써, 비정상적인 쿼리문이 데이터베이스(310)로 전송됨으로 인하여 발생할 수 있는 자원 낭비를 미연에 예방할 수 있다.
도 7은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제3 순서도다.
도 7을 참조하면, 리퀘스트 처리부(210)는 데이터 검색을 요청하며 쿼리 식별자와 사용자 식별정보를 포함하는 리퀘스트를 제1 통신 단말(110)로부터 수신할 수 있다(S301). 상기 쿼리 식별자로서, REST API URL이 상기 리퀘스트에 포함될 수 있다.
이어서, 리퀘스트 처리부(210)는 상기 쿼리 식별자와 매핑된 쿼리문을 저장부(220)에서 확인할 수 있다(S303). 다음으로, 리퀘스트 처리부(210)는 상기 확인한 쿼리문이 캐시(240)에 저장되어 있는지 여부를 확인하고(S305), 상기 쿼리문이 캐시(240)에 저장된 경우, 상기 쿼리문을 이용한 검색된 다수의 검색 데이터를 캐시(240)에서 추출한다(S307). 이어서, 리퀘스트 처리부(210)는 상기 추출한 다수의 검색 데이터를 포함하는 리퀘스트 응답을 제1 통신 단말(110)로 전송한다(S309).
반면에, 리퀘스트 처리부(210)는 상기 쿼리문이 캐시(240)에 저장되어 있지 않으면, 스트레스 분석부(260)로 쿼리문을 상기 전달하여 데이터베이스(310)를 통한 데이터 검색이 진행되게 한다. 쿼리문을 전달받은 스트레스 분석부(260)는 데이터 저장소(300)가 스트레스 상태인 여부를 확인하는 프로세스를 진행할 수 있다. 상기 스트레스 분석부(260)는 데이터 저장소(300)의 스트레스 상태인지 여부를 파악하기 위하여, 소정 시간대에 측정된 각 쿼리문들의 평균 응답 시간을 저장부(220)에서 확인할 수 있다. 상기 스트레스 분석부(260)는 현재 시각에서부터 10분 전까지의 시간대를 상기 소정의 시간대로 설정하고, 상기 소정의 시간대에 측정된 각 쿼리문의 응답시간을 저장부(220)에서 확인하고, 이 응답시간을 평균하여 쿼리문들의 평균 응답 시간을 확인할 수 있다(S311). 또한, 스트레스 분석부(260)는 데이터 저장소(300)의 스트레스 상태를 파악하기 위하여, 상기 저장부(220)에서 확인한 쿼리문의 응답시간과 쿼리 매핑 정보에 저장된 해당 쿼리문의 기준 응답 시간을 비교하여, 쿼리문의 응답시간이 상기 기준 응답 시간을 초과하는 횟수를 확인할 수 있다. 또한, 스트레스 분석부(260)는 데이터 저장소(300)의 스트레스 상태를 파악하기 위하여, 상기 쿼리문과 유사한 쿼리문(즉, 유사 쿼리문)의 처리 비용을 저장부(220)에서 확인한 후, 상기 쿼리문의 처리 비용과 상기 유사 쿼리문의 처리 비용의 차이를 산출할 수 있다. 스트레스 분석부(260)는 리퀘스트에 포함된 쿼리문과 저장부(220)에 저장된 각 쿼리문들을 비교하여, 데이터 일치율이 가장 높은 쿼리문을 상기 유사 쿼리문으로 선택할 수 있다.
다음으로, 스트레스 분석부(260)는 상기 확인한 쿼리문들의 평균 응답 시간, 쿼리문의 응답시간이 기준 응답 시간을 초과하는 횟수, 상기 쿼리문의 처리 비용과 상기 유사 쿼리문의 처리 비용의 차이 중에서 하나 이상을 이용하여 데이터 저장소(300)의 스트레스 점수를 산출할 수 있다(S313). 상기 스트레스 분석부(260)는 상기 확인한 쿼리문들의 평균 응답 시간에 제1 가중치를 적용하고, 쿼리문의 응답시간이 기준 응답 시간을 초과하는 횟수에 제2 가중치를 적용하고, 상기 쿼리문의 처리 비용과 상기 유사 쿼리문의 처리 비용의 차이에 제3 가중치를 적용한 후, 각각의 가중치가 적용된 결과를 합산함으로써, 상기 스트레스 점수를 산출할 수 있다.
다음으로, 스트레스 분석부(260)는 상기 스트레스 점수를 토대로 상기 데이터 저장소(300)가 스트레스 상태인지 여부를 판별할 수 있다(S315). 상기 스트레스 분석부(260)는 상기 스트레스 점수가 제1 임계점수를 초과하는지 여부를 확인하여 초과하는 경우에 데이터 저장소(300)가 스트레스 상태인 것으로 판별할 수 있다.
이어서, 스트레스 분석부(260)는 데이터 저장소(300)가 스트레스 상태가 아니면, 쿼리문을 위한 커넥션 설정을 커넥션 설정부(250)로 요청하고, 커넥션 설정부(250)는 상기 리퀘스트에 포함된 사용자의 등급 정보와 상기 쿼리문의 처리 비용 중에서 하나 이상을 고려하여, 복수의 파티션 풀(P1, P2, P3) 중에서 어느 하나로 상기 쿼리문을 배정할 수 있다(S317). 상기 커넥션 설정부(250)는 상기 리퀘스트에서 사용자 식별정보를 확인하고, 상기 사용자 식별정보와 대응되는 사용자 등급 정보를 저장부(220)에서 확인할 수 있다. 또한, 커넥션 설정부(250)는 상기 쿼리문에 대한 처리 비용을 저장부(220)의 쿼리 매핑 정보에서 확인할 수 있다. 예컨대, 커넥션 설정부(250)는 사용자의 등급이 최우선 등급인 경우, 빠르게 쿼리문에 대한 응답을 수신할 수 있는 제1 커넥션 풀(P1)에 상기 쿼리문을 배정할 수 있다. 다른 예로서, 커넥션 설정부(250)는 사용자의 등급이 일반 등급이고 상기 쿼리문의 비용이 소정의 제1 비용을 초과하는 경우에 유지기간이 긴 커넥션이 필요한 것으로 판단하여, 상기 쿼리문을 제2 커넥션 풀(P2)에 배정할 수 있다. 또 다른 예로서, 커넥션 설정부(250)는 사용자의 등급이 일반 등급이고 상기 쿼리문의 비용이 소정의 제1 비용 이하인 경우에 유지기간이 짧은 커넥션이 필요한 것으로 판단하여, 상기 쿼리문을 제3 커넥션 풀(P2)에 배정할 수 있다.
다음으로, 쿼리문을 배정받은 커넥션 풀(P1, P2, P3)은 상기 쿼리문을 큐(Queue)에 등록하고, 상기 큐에서 상기 쿼리문의 차례가 오고 사용 가능한 커넥션이 존재하면(즉, 커넥션이 대기 상태이면), 해당 커넥션을 이용하여 데이터베이스(310)와 커넥션을 형성하고 이 커넥션을 이용하여 상기 쿼리문을 데이터베이스(310)로 전송한다(S319). 이때, 커넥션 풀(P1, P2, P3)은 상기 쿼리문과 매핑된 데이터베이스 이름을 저장부(220)에서 확인하고, 상기 이름에 해당하는 데이터베이스(310)와 커넥션을 형성하고 쿼리문을 전송할 수 있다. 또한, 커넥션 풀(P1, P2, P3)은 상기 이름과 대응되는 데이터베이스(310)의 IP 주소와 포트를 저장부(220)의 데이터 소스 정보에서 확인한 후, 상기 IP 주소와 포트를 이용하여 상기 데이터베이스(310)와 커넥션을 형성하여 쿼리문을 전송할 수 있다. 또한, 커넥션 풀(P1, P2, P3)은 상기 쿼리문의 제한 사항, 즉 데이터 최대 건수와 응답 대기 최대시간을 확인한 후, 상기 데이터 최대 건수를 상기 데이터베이스(310)로 전송할 수 있다. 또한, 커넥션 풀(P1, P2, P3)는 상기 응답 대기 최대시간 동안에 상기 쿼리문에 대한 쿼리 응답이 데이터베이스(310)로부터 수신되지 않으면, 상기 데이터베이스(310)와의 커넥션을 해제할 수 있다.
다음으로, 데이터베이스(310)는 상기 쿼리문에 해당하며 상기 데이터 최대 건수 이하의 개수를 가지는 다수의 데이터를 검색하여 다수의 검색 데이터를 포함하는 쿼리 응답을 리퀘스트 핸들링 장치(200)로 전송할 수 있다.
이어서, 커넥션 풀(P1, P2, P3)은 다수의 검색 데이터를 포함하는 쿼리 응답을 상기 데이터베이스(310)로부터 수신한다(S321). 이어서, 커넥션 설정부(250)는 상기 쿼리문에 대한 타임아웃을 저장부(220)에서 확인하고, 상기 쿼리문과 상기 다수의 검색 데이터를 상기 타임아웃 설정하여 캐시(240)에 저장한다(S323). 상기 타임아웃이 만료되면 상기 쿼리문과 상기 검색 데이터는 상기 캐시(240)에 삭제될 수 있다.
한편, S315 단계에서 스트레스 분석부(260)는 데이터 저장소(300)가 스트레스 상태인 것으로 판별할 수 있다. 이 경우, 스트레스 분석부(260)는 커넥션 설정을 커넥션 설정부(250)로 요청하지 않고, 상기 쿼리문의 전송을 보류한다. 그리고 스트레스 분석부(260)는 상기 스트레스 점수가 블로킹 점수로서 설정된 제2 임계점수를 초과하는지 여부를 확인한다(S325). 다음으로, 스트레스 분석부(260)는 상기 스트레스 점수가 상기 제2 임계점수 이하이면, 데이터 저장소(300)에 스트레스가 발생하였으나 리퀘스트를 블로킹할 정도의 상태가 아닌 것으로 판별하여, 상기 쿼리문 전송을 일정시간 동안 대기 상태로 처리한다(S327). 이후, 일정 시간이 경과되면, 스트레스 분석부(260)는 S313 단계를 재진행하여 데이터 저장소(300)가 스트레스 상태인지 여부를 재판단하고, 재판단 결과에 따라 상기 대기 상태로 처리한 쿼리문에 위한 커넥션 설정을 커넥션 설정부(250)로 선택적으로 요청할 수 있다.
한편, S327 단계에서 스트레스 점수가 제2 임계점수를 초과하는 것으로 확인되면, 스트레스 분석부(260)는 데이터 저장소(300)에 과도한 스트레스가 발생한 것으로 판단하여, 상기 리퀘스트를 블로킹 처리하여 폐기하고, 더불어 제1 통신 단말(110)로 리퀘스트를 처리할 수 없음을 알리는 에러 메시지를 전송한다(S329). 이어서, 스트레스 분석부(260)는 캐시(240)에 포함된 각 쿼리문의 타임아웃을 소정의 시간만큼 연장하여, 캐시(240)를 재설정할 수 있다(S331). 즉, 스트레스 분석부(260)는 데이터 저장소(300)에서 스트레스가 발생한 것으로 판단되면, 데이터 저장소(300)에서 획득한 검색 결과가 캐시(240)에 더 길게 저장될 수 있도록, 각 쿼리문에 대한 타임아웃을 소정시간만큼 연장할 수 있다. 또한, 스트레스 분석부(260)는 커넥션 설정부(250)로 데이터 저장소(300)의 스트레스 발생 사실을 알리고, 이에 따라 커넥션 설정부(250)는 각 커넥션 풀(P1, P2, P3)의 커넥션 개수를 소정의 개수만큼 감소되도록 커넥션 풀(P1, P2, P3)을 재설정할 수 있다(S333). 즉, 커넥션 설정부(250)는 데이터 저장소(300)에서 스트레스가 발생하면, 데이터 저장소(300)과 형성되는 커넥션 개수가 적어지도록, 각각의 커넥션 풀(P1, P2, P3)에서 가용할 수 있는 커넥션 개수가 감소되도록 커넥션 풀(P1, P2, P3)의 커넥션 개수를 재설정할 수 있다.
스트레스 분석부(260)는 데이터 저장소(300)의 스트레스가 없어져서 정상 상태로 돌아오는 것이 확인되면, 커넥션 설정부(250)로 커넥션 풀(P1, P2, P3)의 복구를 요청하고, 이에 따라 커넥션 설정부(250)는 각 커넥션 풀(P1, P2, P3)의 커넥션 개수를 원상태의 개수로 증가시켜, 각 커넥션 풀(P1, P2, P3)을 원상태로 복구할 수 있다.
본 실시예에 따르면, 데이터 저장소(300)가 스트레스 상태인 것으로 확인되면, 데이터 저장소(300)로의 쿼리문 전송을 보류하여, 데이터 저장소(300)의 부하를 가중시키는 것을 최소화하는 효과를 발휘할 수 있다. 또한, 본 실시예에 따르면, 데이터 저장소(300)에서 스트레스가 발생하면, 캐시에 저장된 쿼리문의 타임아웃을 연장하거나 커넥션 풀(P1, P2, P3)에서 가용할 수 있는 커넥션 개수를 감소시킴으로써, 데이터 저장소(300)의 부하를 경감시키는 효과를 발휘할 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른, 리퀘스트 핸들링 방법에 대한 제4 순서도다.
도 8을 참조하면, 커넥션 설정부(250)가 쿼리문에 대한 쿼리 응답을 데이터베이스(310)로부터 수신하면, 스트레스 분석부(260)는 상기 쿼리문이 데이터베이스(310)로 전송된 시점에서부터 상기 쿼리 응답이 수신되기까지의 응답 시간을 측정하여 확인한다(S401). 다음으로, 스트레스 분석부(260)는 상기 쿼리문과 매핑되어 저장된 직전의 응답 시간을 저장부(220)에서 확인하고, 더불어 직전의 응답 시간을 상기 쿼리 응답 시간으로 변경하여 저장부(220)에 저장한다(S403).
이어서, 스트레스 분석부(260)는 직전의 응답시간과 현재 측정한 응답시간을 비교하여 현재 측정한 응답시간이 직전의 응답시간 보다 감소하거나 증가한지 여부를 판별한다(S405). 스트레스 분석부(260)는 현재 측정한 응답시간이 직전의 응답시간 보다 감소하거나 동일한 경우, 데이터 저장소(300)에 스트레스가 발생하지 않은 것으로 판단한다. 반면에, 스트레스 분석부(260)는 현재 측정한 응답시간이 직전의 응답시간 보다 감소한 경우에, 현재 시각이 부하가 집중된 시간대에 포함되는지 여부를 판별한다(S407). 상기 부하가 집중된 시간대는 데이터 저장소(300)의 리소스가 많이 이용되는 시간대로서, 사전에 설정될 수 있다.
다음으로, 스트레스 분석부(260)는 현재 시각이 부하가 집중된 시간대인 경우, 데이터 저장소(300)의 통상적인 부하 가중으로 인하여 응답시간이 지연된 것으로 판단할 수 있다. 반면에, 스트레스 분석부(260)는 현재 시각이 부하가 집중된 시간대가 아닌 경우, 상기 쿼리문과 유사한 쿼리문을 저장부(220)에서 확인하고, 유사 쿼리문의 처리 비용과 상기 쿼리문의 처리 비용을 저장부(220)에서 확인한다(S409). 상기 스트레스 분석부(260)는 상기 쿼리문과 저장부(220)에 저장된 각 쿼리문들을 비교하여, 데이터 일치율이 가장 높은 쿼리문을 유사 쿼리문으로 선택하고, 상기 선택한 유사 쿼리문의 처리 비용을 저장부(220)에서 확인할 수 있다.
다음으로, 스트레스 분석부(260)는 상기 쿼리문의 처리 비용과 상기 유사 쿼리문의 처리 비용을 비교하여, 상기 쿼리문의 처리 비용이 상기 유사 쿼리문의 처리 비용 보다 소정의 비용 이상으로 큰지 여부를 판별한다(S411). 스트레스 분석부(260)는 상기 쿼리문의 처리 비용이 유사 쿼리문의 처리 비용보다 소정의 비용 이상으로 크지 않으면, 데이터 저장소(300)에서 비정상적인 스트레스가 발생한 것으로 판단하여, 데이터 저장소(300)의 부하를 경감하기 위하여, 캐시(240)에 포함된 각 쿼리문의 타임아웃을 소정의 시간만큼 연장하여, 캐시(240)를 재설정할 수 있다(S413). 즉, 스트레스 분석부(260)는 데이터 저장소(300)에서 비정상적인 스트레스가 발생한 것으로 판단되면, 데이터 저장소(300)에서 획득한 검색 결과가 캐시(240)에 더 길게 저장될 수 있도록, 각 쿼리문에 대한 타임아웃을 소정시간만큼 연장할 수 있다. 또한, 스트레스 분석부(260)는 커넥션 설정부(250)로 데이터 저장소(300)의 스트레스 발생 사실을 알리고, 이에 따라 커넥션 설정부(250)는 각 커넥션 풀(P1, P2, P3)의 커넥션 개수를 소정의 개수만큼 감소되도록 커넥션 풀(P1, P2, P3)을 재설정할 수 있다(S415). 즉, 커넥션 설정부(250)는 데이터 저장소(300)에서 비정상적인 스트레스가 발생하면, 데이터 저장소(300)과 형성되는 커넥션 개수가 적어지도록, 각각의 커넥션 풀(P1, P2, P3)에서 가용할 수 있는 커넥션 개수가 감소되도록 커넥션 풀(P1, P2, P3)을 재설정할 수 있다.
한편, S411 단계에서 쿼리문의 처리 비용이 유사 쿼리문의 처리 비용보다 소정의 비용 이상으로 크면, 스트레스 분석부(260)는 상기 쿼리문이 잘못 작성된 것으로 판단하여, 쿼리문 에러 메시지를 출력하고, 더불어 쿼리문 재작성을 요청하는 메시지를 해당 사용자의 통신 단말(110, 120)로 전송할 수 있다(S417). 몇몇 실시예에서, 스트레스 분석부(260)는 상기 잘못 작성된 것으로 판단한 쿼리문에 대한 사용을 중지하여, 비정상적인 쿼리문이 데이터베이스(310)로 전송되는 것을 예방할 수 있다.
본 실시예에 따르면, 쿼리문의 응답 시간, 부하 집중 시간 및 유사 쿼리문과의 처리 비용 비교를 통해서, 데이터 저장소(300)의 스트레스 정도를 정확하게 파악할 수 있으며, 또한 잘못 작성된 쿼리문을 검증할 수 있는 효과가 있다.
이하, 몇몇 실시예들에 따른 예시적인 컴퓨팅 장치의 하드웨어 구성을 도 9를 참조하여 설명하기로 한다.
도 9는 다양한 실시예에서 컴퓨팅 장치를 구현할 수 있는 예시적인 하드웨어 구성도이다.
본 실시예에 따른 컴퓨팅 장치(1000)는 하나 이상의 프로세서(1100), 시스템 버스(1600), 통신 인터페이스(1200), 프로세서(1100)에 의하여 수행되는 컴퓨터 프로그램(1500)을 로드(load)하는 메모리(1400)와, 컴퓨터 프로그램(1500)을 저장하는 스토리지(1300)를 포함할 수 있다. 도 9에서는 실시예와 관련 있는 구성요소들 만이 도시되어 있다. 따라서, 본 명세서의 실시예들이 속한 기술분야의 통상의 기술자라면 도 9에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(1100)는 컴퓨팅 장치(1000)의 각 구성의 전반적인 동작을 제어한다. 프로세서(1100)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 명세서의 기술 분야에 잘 알려진 임의의 형태의 프로세서 중 적어도 하나를 포함하여 구성될 수 있다. 또한, 프로세서(1100)는 다양한 실시예들에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(1000)는 둘 이상의 프로세서를 구비할 수 있다.
메모리(1400)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(1400)는 본 명세서의 다양한 실시예들에 따른 방법/동작들을 실행하기 위하여 스토리지(1300)로부터 하나 이상의 프로그램(1500)을 로드(load) 할 수 있다. 메모리(1400)의 예시는 RAM이 될 수 있으나, 이에 한정되는 것은 아니다.
시스템 버스(1600)는 컴퓨팅 장치(1000)의 구성 요소 간 통신 기능을 제공한다. 상기 시스템 버스(1600)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다. 통신 인터페이스(1200)는 네트워크(500)와 연결할 수 있다. 스토리지(1300)는 하나 이상의 컴퓨터 프로그램(1500)을 비임시적으로 저장할 수 있다. 스토리지(1300)는 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 명세서의 실시예들이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(1500)은 본 명세서의 다양한 실시예들에 따른 방법/동작들이 구현된 하나 이상의 인스트럭션(instruction)들을 포함할 수 있다. 컴퓨터 프로그램(1500)이 메모리(1400)에 로드 되면, 프로세서(1100)는 상기 하나 이상의 인스트럭션들을 실행시킴으로써 본 명세서의 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다. 컴퓨터 프로그램(1500)은, 상술한 리퀘스트 핸들링 동작을 위한 인스트럭션들을 포함할 수 있다. 몇몇 실시예에서, 컴퓨터 프로그램(1500)은 도 2 내지 도 8을 참조하여 설명하는 리퀘스트 처리부(210)의 동작을 수행하기 위한 하나 이상의 인스트럭션, 커넥션 설정부(250)의 동작을 수행하기 위한 하나 이상의 인스트럭션, 등록부(230)의 동작을 수행하기 위한 하나 이상의 인스트럭션 및 스트레스 분석부(260)의 동작을 수행하기 위한 하나 이상의 인스트럭션을 포함할 수 있다.
지금까지 설명된 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 클라우드 서비스를 위한 서버 풀에 속한 물리 서버, 데스크탑 피씨와 같은 고정식 컴퓨팅 장치를 모두 포함한다.
상기 컴퓨터프로그램은 DVD-ROM, 플래시 메모리 장치 등의 기록매체에 저장된 것일 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.
Claims (25)
- 컴퓨팅 장치에 의해서 수행되는 방법에 있어서,
데이터 검색을 요청하는 리퀘스트를 통신 단말로부터 수신하는 단계;
데이터 저장소가 스트레스 상태인지를 판별하는 단계;
상기 판별 결과 상기 데이터 저장소가 스트레스 상태이면 상기 데이터 검색에 이용되는 쿼리문을 상기 데이터 저장소로 전송하는 것을 보류하는 단계; 및
상기 판별 결과 상기 데이터 저장소가 스트레스 상태가 아니면 상기 쿼리문을 상기 데이터 저장소로 전송하여, 상기 쿼리문을 기초로 검색된 검색 데이터를 상기 데이터 저장소로부터 수신하고, 상기 검색 데이터를 포함하는 리퀘스트 응답을 상기 통신 단말로 전송하는 단계를 포함하는,
리퀘스트 핸들링 방법. - 제1 항에 있어서,
상기 쿼리문에 대한 타임아웃을 확인하는 단계; 및
상기 타임아웃이 만료되기까지 상기 검색 데이터를 캐시에 저장하는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 제1 항에 있어서,
상기 통신 단말로 전송하는 단계는,
상기 통신 단말의 사용자 등급을 확인하는 단계; 및
상기 데이터 저장소와 커넥션 설정이 가능한 복수의 커넥션 풀 중에서, 상기 사용자 등급에 해당하는 커넥션 풀로 상기 쿼리문을 배정하여 상기 쿼리문을 배정한 커넥션 풀을 통해서 상기 쿼리문을 전송하고 상기 검색 데이터를 수신하는 단계를 포함하는,
리퀘스트 핸들링 방법. - 제1 항에 있어서,
상기 통신 단말로 전송하는 단계는,
상기 쿼리문의 처리 비용을 확인하는 단계; 및
상기 데이터 저장소와 커넥션 설정이 가능한 복수의 커넥션 풀 중에서, 상기 처리 비용에 해당하는 커넥션 유지시간을 제공하는 커넥션 풀로 상기 쿼리문을 배정하여 상기 쿼리문을 배정한 커넥션 풀을 통해서 상기 쿼리문을 전송하고 상기 검색 데이터를 수신하는 단계를 포함하는,
리퀘스트 핸들링 방법. - 제1 항에 있어서,
상기 판별하는 단계는,
소정 시간대에서 측정한 쿼리문들의 평균 응답 시간, 상기 소정 시간대에서 측정한 쿼리문의 응답 시간이 기준 응답 시간을 이탈한 횟수, 상기 쿼리문의 처리 비용과 유사 쿼리문의 처리 비용 간의 차이 중에서 하나 이상을 이용하여 상기 데이터 저장소가 스트레스 상태인지를 판별하는 단계를 포함하는,
리퀘스트 핸들링 방법. - 제5 항에 있어서,
상기 판별하는 단계는,
상기 평균 응답 시간에 제1 가중치를 적용하고, 상기 이탈한 횟수에 제2 가중치를 적용하고, 상기 쿼리문의 처리 비용과 유사 쿼리문의 처리 비용 간의 차이에 제3 가중치를 적용하는 단계;
상기 제1 가중치가 적용된 평균 응답 시간, 상기 제2 가중치가 이탈한 횟수, 상기 제3 가중치가 적용된 처리 비용 간의 차이를 합산하여 상기 데이터 저장소의 스트레스 점수를 산출하는 단계; 및
상기 산출한 스트레스 점수를 임계점수를 초과하면 상기 데이터 저장소가 스트레스 상태인 것으로 판별하는 단계를 포함하는,
리퀘스트 핸들링 방법. - 제6 항에 있어서,
상기 보류하는 단계는,
상기 스트레스 점수가 상기 임계점수를 초과하고 소정의 블로킹 점수 이하이면 상기 리퀘스트를 일정시간 동안 대기 처리하고, 상기 스트레스 점수가 상기 블록킹 점수를 초과하면 상기 리퀘스트를 폐기하는 단계를 포함하는,
리퀘스트 핸들링 방법. - 제1 항에 있어서,
상기 리퀘스트에서 쿼리 식별자를 추출하고, 상기 추출한 쿼리 식별자와 매핑되는 쿼리문을 기 저장된 쿼리 매핑 정보에서 확인하는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 제8 항에 있어서,
상기 쿼리 식별자는 API URL(Application Programming Interface Uniform Resource Locator)인,
리퀘스트 핸들링 방법. - 제1 항에 있어서,
타 통신 단말 또는 상기 통신 단말로부터 쿼리문 식별자와 쿼리문을 수신하는 단계;
상기 데이터 저장소로 상기 쿼리문의 처리 비용을 요청하고 수신하는 단계; 및
상기 쿼리문의 식별자, 쿼리문 및 쿼리문의 처리 비용을 매핑하여 저장하는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 제10 항에 있어서,
상기 수신한 상기 쿼리문의 처리 비용이 임계비용을 초과하는지 여부를 판별하여 초과하면, 상기 쿼리문의 재작성을 상기 통신 단말 또는 상기 타 통신 단말로 요청하는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 제1 항에 있어서,
상기 쿼리문이 전송되고나서 상기 검색 데이터가 수신되기까지의 응답 시간을 측정하는 단계;
상기 측정한 응답 시간이 직전에 측정한 상기 쿼리문의 응답 시간 보다 증가하였는지 여부를 확인하는 단계;
상기 쿼리문의 처리 비용이 유사 쿼리문의 처리 비용 보다 소정의 비용 이상으로 큰지 여부를 확인하는 단계; 및
상기 측정한 응답 시간이 상기 직전에 측정한 상기 쿼리문의 응답 시간 보다 증가되고, 상기 쿼리문의 처리 비용이 상기 유사 쿼리문의 처리 비용 보다 소정의 비용 이상으로 크기 않으면 상기 데이터 저장소에 스트레스가 발생한 것으로 판별하는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 제12 항에 있어서,
상기 측정한 응답 시간이 상기 직전에 측정한 상기 쿼리문의 응답 시간 보다 증가되고, 상기 쿼리문의 처리 비용이 상기 유사 쿼리문의 처리 비용 보다 소정의 비용 이상으로 크면 상기 쿼리문에 오류가 있는 것으로 판별하여, 상기 쿼리문의 사용을 중지시키는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 컴퓨팅 장치에 의해서 수행되는 방법에 있어서,
데이터 검색을 요청하는 리퀘스트를 통신 단말로부터 수신하는 단계;
상기 데이터 검색에 이용되는 쿼리문이 캐시에 저장되어 있는지 여부를 확인하는 단계; 및
상기 쿼리문이 캐시에 저장되어 있으면 상기 쿼리문을 이용하여 검색된 검색 데이터를 상기 캐시에서 추출하여, 상기 검색 데이터를 포함하는 리퀘스트 응답을 상기 통신 단말로 전송하는 단계를 포함하는,
리퀘스트 핸들링 방법. - 제14 항에 있어서,
상기 쿼리문이 캐시에 저장되어 있지 않으면, 데이터 저장소로 상기 쿼리문을 전송하여, 상기 쿼리문을 통해서 검색 데이터를 상기 데이터 저장소로부터 수신하는 단계; 및
상기 쿼리문의 타임아웃을 확인하고, 상기 타임아웃 동안에 상기 검색 데이터를 상기 캐시에 저장하는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 제15 항에 있어서,
상기 데이터 저장소로부터 수신하는 단계는,
상기 데이터 저장소의 스트레스 상태를 확인하여, 스트레스 상태가 아니면 상기 데이터 저장소로 상기 쿼리문을 전송하는 단계를 포함하는,
리퀘스트 핸들링 방법. - 제15 항에 있어서,
상기 데이터 저장소가 스트레스 상태이면, 상기 캐시에 저장된 검색 데이터의 타임아웃을 연장하는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 제15 항에 있어서,
상기 데이터 저장소가 스트레스 상태이면, 상기 데이터 저장소와 연결할 수 있는 커넥션 개수를 감소시키는 단계를 더 포함하는,
리퀘스트 핸들링 방법. - 하나 이상의 쿼리문의 검색 데이터를 저장하는 캐시; 및
데이터 검색을 요청하는 리퀘스트를 통신 단말로부터 수신하고, 상기 데이터 검색에 이용되는 쿼리문이 상기 캐시에 저장되어 있으면 상기 캐시에서 상기 쿼리문의 검색 데이터를 추출하여 상기 통신 단말로 전송하는 리퀘스트 처리부를 포함하는,
리퀘스트 핸들링 장치. - 제19 항에 있어서,
데이터 저장소와 하나 이상의 커넥션을 형성하는 복수의 커넥션 풀을 포함하고, 상기 캐시에 상기 쿼리문의 검색 데이터가 저장되어 있지 않으면 상기 쿼리문을 복수의 커넥션 풀 중에서 어느 하나로 배정하여, 상기 쿼리문을 배정한 커넥션 풀을 통해서 상기 쿼리문을 전송하고 상기 쿼리문의 검색 데이터를 수신하는 커넥션 설정부를 더 포함하는,
리퀘스트 핸들링 장치. - 제20 항에 있어서,
상기 커넥션 설정부는,
상기 쿼리문의 타임아웃을 확인하고, 상기 타임아웃이 설정된 상기 쿼리문의 검색 데이터를 상기 캐시에 저장하는,
리퀘스트 핸들링 장치. - 제20 항에 있어서,
상기 커넥션 설정부는,
상기 쿼리문의 처리 비용에 기초하여, 상기 복수의 커넥션 풀 중에서 어느 하나로 선택하고, 상기 선택한 커넥션 풀로 상기 쿼리문을 배정하는,
리퀘스트 핸들링 장치. - 제20 항에 있어서,
상기 데이터 저장소의 스트레스 상태를 확인하여 스트레스 상태가 아닌 경우에 상기 쿼리문이 상기 데이터 저장소로 전송되게 하는 스트레스 분석부를 더 포함하는,
리퀘스트 핸들링 장치. - 제23 항에 있어서,
상기 스트레스 분석부는,
상기 데이터 저장소가 스트레스 상태이면, 상기 캐시에 포함된 각 쿼리문의 타임아웃을 연장하는,
리퀘스트 핸들링 장치. - 제23 항에 있어서,
상기 커넥션 설정부는,
상기 데이터 저장소가 스트레스 상태인 것으로 판별되면, 각 커넥션 풀에서 이용할 수 있는 커넥션 개수를 감소시키는,
리퀘스트 핸들링 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200135146A KR20220051574A (ko) | 2020-10-19 | 2020-10-19 | 리퀘스트 핸들링 방법 및 그 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200135146A KR20220051574A (ko) | 2020-10-19 | 2020-10-19 | 리퀘스트 핸들링 방법 및 그 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220051574A true KR20220051574A (ko) | 2022-04-26 |
Family
ID=81391305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200135146A KR20220051574A (ko) | 2020-10-19 | 2020-10-19 | 리퀘스트 핸들링 방법 및 그 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20220051574A (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200087357A (ko) | 2019-01-02 | 2020-07-21 | 주식회사 위팝 | 빅 데이터 분석을 통한 소셜 미디어 사용자 감정 분석 시스템 및 방법 |
-
2020
- 2020-10-19 KR KR1020200135146A patent/KR20220051574A/ko active Search and Examination
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200087357A (ko) | 2019-01-02 | 2020-07-21 | 주식회사 위팝 | 빅 데이터 분석을 통한 소셜 미디어 사용자 감정 분석 시스템 및 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6764989B2 (ja) | 要求処理技術 | |
CN108829581B (zh) | 应用程序测试方法、装置、计算机设备及存储介质 | |
US7779416B2 (en) | Load balance control method and load balance control apparatus in data-processing system | |
US7502824B2 (en) | Database shutdown with session migration | |
JP4677813B2 (ja) | サーバ性能計測方法及びサーバ性能計測システム並びにこれらに用いるコンピュータプログラム | |
US20060048155A1 (en) | Organizing transmission of repository data | |
JP6062034B2 (ja) | 処理制御システム、処理制御方法、および処理制御プログラム | |
US10423644B1 (en) | Splitting transaction and analysis queries | |
Wildstrom et al. | Towards self-configuring hardware for distributed computer systems | |
US11263542B2 (en) | Technologies for auto discover and connect to a rest interface | |
US20070160080A1 (en) | Computer resource allocation system and method thereof | |
US10691723B2 (en) | Distributed database systems and methods of distributing and accessing data | |
CN110781505A (zh) | 系统构建方法及装置、检索方法及装置、介质和设备 | |
CN112306383A (zh) | 执行作业的方法、计算节点、管理节点及计算设备 | |
US20120296936A1 (en) | Terminal device for executing a query to a database | |
KR20220051574A (ko) | 리퀘스트 핸들링 방법 및 그 장치 | |
CN112968927A (zh) | 日志提取方法、日志提取装置、存储介质及电子设备 | |
US11881996B2 (en) | Input and output for target device communication | |
KR101318234B1 (ko) | 데이터베이스 시스템을 위한 데이터 캐시 방법 및 장치 | |
WO2021203975A1 (zh) | 服务器调配方法、装置、设备及存储介质 | |
CN109117247A (zh) | 一种基于异构多核拓扑感知的虚拟资源管理系统及方法 | |
US11347564B2 (en) | Synchronizing batch job status across nodes on a clustered system | |
KR101540012B1 (ko) | 불변 데이터를 자동 검출하는 맵리듀스 순환 처리 장치 및 방법 | |
KR101146742B1 (ko) | SaaS의 분산된 세션 관리 방법 및 그 관리 시스템 | |
KR100597829B1 (ko) | 온톨로지를 이용한 비즈니스 규칙시스템 및 그 서비스 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |