KR102153674B1 - Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 - Google Patents

Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 Download PDF

Info

Publication number
KR102153674B1
KR102153674B1 KR1020200103389A KR20200103389A KR102153674B1 KR 102153674 B1 KR102153674 B1 KR 102153674B1 KR 1020200103389 A KR1020200103389 A KR 1020200103389A KR 20200103389 A KR20200103389 A KR 20200103389A KR 102153674 B1 KR102153674 B1 KR 102153674B1
Authority
KR
South Korea
Prior art keywords
query
type
determining
determined
execution
Prior art date
Application number
KR1020200103389A
Other languages
English (en)
Inventor
최원규
김준민
최장원
권혁천
송마음
Original Assignee
카페24 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 카페24 주식회사 filed Critical 카페24 주식회사
Priority to KR1020200103389A priority Critical patent/KR102153674B1/ko
Application granted granted Critical
Publication of KR102153674B1 publication Critical patent/KR102153674B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

컴퓨팅 디바이스에 의해 수행되는, SQL (Structured Query Language) 쿼리의 유형을 분류하는 방법이 제공된다. 방법은, 제 1 쿼리를 제 1 쿼리 유형으로 분류하는 단계와, 제 2 쿼리와 제 1 쿼리 간의 상관도를 결정하는 단계, 그리고 제 2 쿼리와 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크다는 결정에 응답하여 제 2 쿼리를 제 1 쿼리 유형으로 분류하는 단계를 포함한다. 따라서, 쿼리 간의 유사도를 기반으로 쿼리 유형을 분류하여 다수의 쿼리들을 제한된 개수의 쿼리 유형들로 각각 분류하고, 신규 유형의 쿼리에 대한 검출 역시 수행할 수 있다.

Description

SQL 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스{A METHOD FOR CLASSIFYING SQL QUERY, A METHOD FOR DETECTING ABNORMAL OCCURRENCE, AND A COMPUTING DEVICE}
본 발명은 SQL 쿼리에 관한 것으로서, 보다 구체적으로는 SQL 쿼리의 유형을 분류하고 SQL 쿼리와 관련된 이상 상황이 발생하였는지 여부를 결정하는 방법 및 이를 실행하기 위한 컴퓨팅 디바이스에 관한 것이다.
근래에는 대부분의 정보가 디지털화되어 저장됨으로써 신속하고 간편하게 원하는 정보를 획득할 수 있다. 디지털화된 정보는 데이터베이스 (DB) 에 저장되며, 데이터베이스에서 원하는 정보를 검색하기 위해서는 데이터베이스가 이해할 수 있는 형태로 정보 요청을 수신해야만 한다. SQL (Structured Query Language) 쿼리는 데이터베이스가 이해할 수 있는 포맷의 데이터 요청으로 이해될 수 있다. 예를 들어, 쇼핑몰과 같은 온라인 서비스의 사용자, 또는 내부 네트워크에서의 시스템 사용자와 같이, 데이터베이스에 저장된 정보 중 원하는 정보를 취득하고자 하는 사용자는 통상적으로 사용자 인터페이스 (User Interface) / 사용자 경험 (User Experience) 와 같은 사용자 친화적인 형태로 원하는 정보 요청을 입력할 수 있으며, 이와 같은 정보 요청은 데이터베이스에서 처리될 수 있는 포맷인 SQL 로 변환되어 데이터베이스로 전달된다. 데이터베이스는 SQL 쿼리에 응답하여 대응하는 정보를 제공하고, 정보는 사용자가 보기에 더욱 편리한 형태로 가공되어 사용자에게 제공될 수 있다.
한국 공개특허공보 제 2002-0030489 호 ("데이터베이스관리시스템에 대한 질의문의 웹 상에서의제공 방법", 주효식)
데이터베이스의 저장 정보가 점점 방대해지고, 특정 데이터베이스에 대한 동시 사용자 역시 증가하게 되어 정보를 요청하는 쿼리에 대한 처리 속도가 중요하게 되었다. 따라서, 쿼리에 대해 응답하는 데 소요되는 시간을 나타낼 수 있는 쿼리 실행 시간에 대해 모니터링을 수행하여, 예를 들어 미리 결정한 특정 시간 이상 실행되는 쿼리의 개수를 모니터링하여 쿼리 실행에 대한 이상 상황의 발생 여부를 결정하는 것이 가능하다. 그러나, 데이터베이스 시스템의 복잡화로 인해 쿼리의 유형은 매우 다양하며, 각각 상이한 유형의 쿼리 별로 실행 시간이 다를 수 있으므로, 동일한 유형의 쿼리가 실행하는데 소요된 시간을 비교하는 것이 이상치 판단에 중요하다.
전술한 문제점을 해결하기 위한 본 발명의 목적은 쿼리 간의 유사도를 기반으로 쿼리 유형을 분류하여 다수의 쿼리들을 제한된 개수의 쿼리 유형들로 각각 분류하고, 신규 유형의 쿼리에 대한 검출 역시 수행할 수 있는 SQL (Structured Query Language) 쿼리 유형 분류 방법, 이를 수행하기 위한 컴퓨팅 디바이스 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체를 제공하는 것이다.
전술한 문제점을 해결하기 위한 본 발명의 다른 목적은 쿼리의 유형을 분류하여 각 유형별 기준에 따라 이상 상황의 발생 여부를 결정하는 것에 의해 보다 정확하게 이상 상황의 발생 여부를 판단할 수 있는 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법, 이를 수행하기 위한 컴퓨팅 디바이스 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체를 제공하는 것이다.
다만, 본 발명의 해결하고자 하는 과제는 이에 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
전술한 목적을 달성하기 위한 본 발명의 일 실시예에 따른, SQL (Structured Query Language) 쿼리의 유형을 분류하는 방법은, 컴퓨팅 디바이스에 의해 수행되고, 상기 방법은, 제 1 쿼리를 제 1 쿼리 유형으로 분류하는 단계; 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 결정하는 단계; 및 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크다는 결정에 응답하여 상기 제 2 쿼리를 상기 제 1 쿼리 유형으로 분류하는 단계를 포함할 수 있다.
일 측면에 따르면, 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크지 않다는 결정에 응답하여 상기 제 2 쿼리를 신규 쿼리 유형인 제 2 쿼리 유형으로 분류하는 단계를 더 포함할 수 있다.
일 측면에 따르면, 상기 미리 결정한 기준 값은 95% 일 수 있다.
일 측면에 따르면, 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 결정하는 단계는, 상기 제 2 쿼리 및 상기 제 1 쿼리를 정규화하는 단계; 정규화된 상기 제 2 쿼리 및 상기 제 1 쿼리를 각각 분할하여 상기 제 2 쿼리 및 상기 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 추출하는 단계; 상기 제 2 쿼리 및 상기 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 비교하여, 상기 제 2 쿼리 및 상기 제 1 쿼리 중 어느 하나에는 포함되고 상기 제 2 쿼리 및 상기 제 1 쿼리 중 다른 하나에는 포함되지 않는 단어의 개수인 차이 단어 개수를 결정하는 단계; 및 상기 차이 단어 개수를 기반으로 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 계산하는 단계를 포함할 수 있다.
일 측면에 따르면, 상기 정규화하는 단계는, 상기 제 2 쿼리 및 상기 제 1 쿼리에 포함된 주석을 삭제하는 단계; 및 상기 제 2 쿼리 및 상기 제 1 쿼리에 포함된 구문 이외의 문자열을 미리 결정된 제 1 기호로 치환하고, 숫자를 미리 결정된 제 2 기호로 치환하는 단계를 포함할 수 있다.
일 측면에 따르면, 상기 정규화하는 단계는, IN (..) 구문 내에 문자열과 숫자 이외에 포함되어 있지 않을 경우 상기 IN (..) 구문을 IN () 으로 치환하는 단계를 더 포함할 수 있다.
일 측면에 따르면, 상기 정규화하는 단계는, 쿼리에 포함된 특수 문자의 직전과 직후에 공백 기호를 각각 부가하는 단계를 더 포함할 수 있다.
일 측면에 따르면, 상기 정규화하는 단계는, 연속적으로 배치된 복수의 공백 기호들을 하나의 공백 기호로 치환하는 단계를 더 포함할 수 있다.
일 측면에 따르면, 상기 단어들을 추출하는 단계는, 공백 기호를 기준으로 정규화된 상기 제 2 쿼리 및 상기 제 1 쿼리를 각각 분할하는 것에 의해 상기 제 2 쿼리 및 상기 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 추출하도록 구성될 수 있다.
일 측면에 따르면, 상기 차이 단어 개수를 기반으로 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 계산하는 단계는, 1 에서 상기 차이 단어 개수를 상기 제 2 쿼리와 상기 제 1 쿼리 중 더 적은 개수의 단어를 포함하는 쿼리의 단어 개수로 나눈 값을 빼는 것에 의해 상기 상관도를 계산할 수 있다.
전술한 목적을 달성하기 위한 본 발명의 다른 실시예에 따른, SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법은, 컴퓨팅 디바이스에 의해 수행되고, 상기 방법은, 입력받은 쿼리의 유형을 결정하는 단계; 및 상기 입력받은 쿼리의 실행 시간 길이가 상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이보다 크다는 결정에 응답하여 쿼리 실행에 대한 이상 상황이 발생하였다고 결정하는 단계를 포함할 수 있다.
일 측면에 따르면, 상기 쿼리의 실행 시간 길이는, 상기 쿼리의 입력 시각과 상기 쿼리에 대응하는 정보의 제공 시각의 차이를 기반으로 결정될 수 있다.
일 측면에 따르면, 상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이는, 상기 결정된 쿼리의 유형으로 분류되는 복수의 쿼리들 각각에 대한 실행 시간 길이들의 중간 값 및 가장 짧은 값으로부터 배열하여 75 % 에 해당하는 값을 결정하는 단계; 및 상기 중간 값과 상기 75 % 에 해당하는 값의 차이를 기반으로 상기 기준 길이를 결정하는 단계에 의해 결정된 것일 수 있다.
일 측면에 따르면, 상기 기준 길이를 결정하는 단계는, 상기 중간 값에 상기 중간 값과 상기 75 % 에 해당하는 값의 차이의 3 배를 더한 값을 상기 기준 길이로 결정하도록 구성될 수 있다.
전술한 문제점을 해결하기 위한 본 발명의 다른 실시예에 따른, 프로세서 및 메모리를 포함하는 컴퓨팅 디바이스는, SQL (Structured Query Language) 쿼리의 유형을 분류하도록 구성되고, 상기 프로세서는, 제 1 쿼리를 제 1 쿼리 유형으로 분류하고; 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 결정하고; 그리고 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크다는 결정에 응답하여 상기 제 2 쿼리를 상기 제 1 쿼리 유형으로 분류하도록 구성될 수 있다.
일 측면에 따르면, 상기 프로세서는, 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크지 않다는 결정에 응답하여 상기 제 2 쿼리를 신규 쿼리 유형인 제 2 쿼리 유형으로 분류하도록 더 구성될 수 있다.
일 측면에 따르면, 상기 미리 결정한 기준 값은 95% 일 수 있다.
일 측면에 따르면, 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 결정하는 것은, 상기 제 2 쿼리 및 상기 제 1 쿼리를 정규화하는 것; 정규화된 상기 제 2 쿼리 및 상기 제 1 쿼리를 각각 분할하여 상기 제 2 쿼리 및 상기 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 추출하는 것; 상기 제 2 쿼리 및 상기 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 비교하여, 상기 제 2 쿼리 및 상기 제 1 쿼리 중 어느 하나에는 포함되고 상기 제 2 쿼리 및 상기 제 1 쿼리 중 다른 하나에는 포함되지 않는 단어의 개수인 차이 단어 개수를 결정하는 것; 및 상기 차이 단어 개수를 기반으로 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 계산하는 것을 포함할 수 있다.
일 측면에 따르면, 상기 정규화하는 것은, 상기 제 2 쿼리 및 상기 제 1 쿼리에 포함된 주석을 삭제하는 것; 및 상기 제 2 쿼리 및 상기 제 1 쿼리에 포함된 구문 이외의 문자열을 미리 결정된 제 1 기호로 치환하고, 숫자를 미리 결정된 제 2 기호로 치환하는 것을 포함할 수 있다.
일 측면에 따르면, 상기 정규화하는 것은, IN (..) 구문 내에 문자열과 숫자 이외에 포함되어 있지 않을 경우 상기 IN (..) 구문을 IN () 으로 치환하는 것을 더 포함할 수 있다.
일 측면에 따르면, 상기 정규화하는 것은, 쿼리에 포함된 특수 문자의 직전과 직후에 공백 기호를 각각 부가하는 것을 더 포함할 수 있다.
일 측면에 따르면, 상기 정규화하는 것은, 연속적으로 배치된 복수의 공백 기호들을 하나의 공백 기호로 치환하는 것을 더 포함할 수 있다.
일 측면에 따르면, 상기 단어들을 추출하는 것은, 공백 기호를 기준으로 정규화된 상기 제 2 쿼리 및 상기 제 1 쿼리를 각각 분할하는 것에 의해 상기 제 2 쿼리 및 상기 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 추출하도록 구성될 수 있다.
일 측면에 따르면, 상기 차이 단어 개수를 기반으로 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 계산하는 것은, 1 에서 상기 차이 단어 개수를 상기 제 2 쿼리와 상기 제 1 쿼리 중 더 적은 개수의 단어를 포함하는 쿼리의 단어 개수로 나눈 값을 빼는 것에 의해 상기 상관도를 계산할 수 있다.
전술한 문제점을 해결하기 위한 본 발명의 다른 실시예에 따른, 프로세서 및 메모리를 포함하는 컴퓨팅 디바이스는, SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부를 결정하도록 구성되고, 상기 프로세서는, 입력받은 쿼리의 유형을 결정하고; 그리고 상기 입력받은 쿼리의 실행 시간 길이가 상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이보다 크다는 결정에 응답하여 쿼리 실행에 대한 이상 상황이 발생하였다고 결정하도록 구성될 수 있다.
일 측면에 따르면, 상기 쿼리의 실행 시간 길이는, 상기 쿼리의 입력 시각과 상기 쿼리에 대응하는 정보의 제공 시각의 차이를 기반으로 결정될 수 있다.
일 측면에 따르면, 상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이는, 상기 결정된 쿼리의 유형으로 분류되는 복수의 쿼리들 각각에 대한 실행 시간 길이들의 중간 값 및 가장 짧은 값으로부터 배열하여 75 % 에 해당하는 값을 결정하는 것; 및 상기 중간 값과 상기 75 % 에 해당하는 값의 차이를 기반으로 상기 기준 길이를 결정하는 것에 의해 결정된 것일 수 있다.
일 측면에 따르면, 상기 기준 길이를 결정하는 것은, 상기 중간 값에 상기 중간 값과 상기 75 % 에 해당하는 값의 차이의 3 배를 더한 값을 상기 기준 길이로 결정하도록 구성될 수 있다.
전술한 문제점을 해결하기 위한 본 발명의 다른 실시예에 따른, 프로세서에 의해 실행 가능한 명령어들을 저장하는 컴퓨터 판독 가능한 저장 매체에 있어, 상기 명령어들은 SQL (Structured Query Language) 쿼리의 유형을 분류하기 위한 것이고, 상기 프로세서에 의해 실행되었을 때 상기 명령어들은 상기 프로세서로 하여금, 제 1 쿼리를 제 1 쿼리 유형으로 분류하고; 제 2 쿼리와 상기 제 1 쿼리 간의 상관도를 결정하고; 그리고 상기 제 2 쿼리와 상기 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크다는 결정에 응답하여 상기 제 2 쿼리를 상기 제 1 쿼리 유형으로 분류하도록 구성될 수 있다.
전술한 문제점을 해결하기 위한 본 발명의 다른 실시예에 따른, 프로세서에 의해 실행 가능한 명령어들을 저장하는 컴퓨터 판독 가능한 저장 매체에 있어, 상기 명령어들은 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부를 결정하기 위한 것이고, 상기 프로세서에 의해 실행되었을 때 상기 명령어들은 상기 프로세서로 하여금, 입력받은 쿼리의 유형을 결정하고; 그리고 상기 입력받은 쿼리의 실행 시간 길이가 상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 값보다 크다는 결정에 응답하여 쿼리 실행에 대한 이상 상황이 발생하였다고 결정하도록 구성될 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
전술한 본 발명의 일 실시예에 따른 SQL (Structured Query Language) 쿼리 유형 분류 방법, 이를 수행하기 위한 컴퓨팅 디바이스 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체에 따르면, 쿼리 간의 유사도를 기반으로 쿼리 유형을 분류하여 다수의 쿼리들을 제한된 개수의 쿼리 유형들로 각각 분류하고, 신규 유형의 쿼리에 대한 검출 역시 수행할 수 있다.
전술한 본 발명의 일 실시예에 따른 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법, 이를 수행하기 위한 컴퓨팅 디바이스 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체에 따르면, 쿼리의 유형을 분류하여 각 유형별 기준에 따라 이상 상황의 발생 여부를 결정하는 것에 의해 보다 정확하게 이상 상황의 발생 여부를 판단할 수 있다.
따라서, 쿼리를 유형화 (패턴으로 분류) 하고, 동일한 패턴의 쿼리 실행시간을 비교 및 모니터링 하면서 이상 상황이 발생하였는지 여부를 체크할 수 있고, 신규 쿼리를 검출하여 신규 쿼리의 경우 별도로 실행 시간을 모니터링하여 쿼리 성능을 최적화하도록 할 수 있다.
도 1 은 본 발명의 일 실시예에 따른 쿼리 입력 및 정보 제공이 수행되는 네트워크 시스템의 예시적인 구성도이다.
도 2 는 본 발명의 일 실시예에 따른 쿼리 유형 분류 방법의 개략적인 흐름도이다.
도 3 은 도 2 의 상관도 결정 단계의 상세 흐름도이다.
도 4 는 도 3 의 정규화 단계의 동작 예시도이다.
도 5 는 예시적인 제 1 쿼리에 대한 상관도 결정 절차를 나타낸다.
도 6 은 예시적인 제 2 쿼리에 대한 상관도 결정 절차를 나타낸다.
도 7 은 예시적인 제 3 쿼리에 대한 상관도 결정 절차를 나타낸다.
도 8 은 예시적인 제 4 쿼리에 대한 상관도 결정 절차를 나타낸다.
도 9 는 예시적인 제 5 쿼리에 대한 상관도 결정 절차를 나타낸다.
도 10 은 본 발명의 일 실시예에 따른 컴퓨팅 디바이스의 구성을 나타내는 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
예를 들어 쇼핑몰과 같은 인터넷 서비스의 운영 관련 주요 정보는 데이터 베이스에 저장된다. 아울러, 앞서 살핀 바와 같이 데이터베이스의 저장 정보가 점점 방대해지고, 특정 데이터베이스에 대한 동시 사용자 역시 증가하게 되어 정보를 요청하는 쿼리에 대한 처리 속도가 중요하게 되었다. 즉, 데이터베이스 관련 쿼리의 실행 시간이 매우 중요하게 되었으며, 부하 증가, 서버 에러, 프로그램 오류, 테이블 간의 교착 상태 (Dead Lock) 발생 등의 상황에서 쿼리 성능이 떨어질 수 있다.
따라서, 쿼리에 대해 응답하는 데 소요되는 시간을 나타낼 수 있는 쿼리 실행 시간에 대해 모니터링을 수행하여, 예를 들어 미리 결정한 특정 시간 이상 실행되는 쿼리의 개수를 모니터링하여 쿼리 실행에 대한 이상 상황의 발생 여부를 결정하는 것이 가능하다. 예를 들어, 현재의 지연 쿼리 (Slow Query) 의 개수 (여기서, 지연 쿼리는 예를 들어 2 초 이상 실행되는 쿼리일 수 있음) 를 모니터링하도록 할 수 있다.
그러나, 데이터베이스 시스템의 복잡화로 인해 쿼리의 유형은 매우 다양하며, 각각 상이한 유형의 쿼리 별로 실행 시간이 다를 수 있으므로, 동일한 유형의 쿼리가 실행하는데 소요된 시간을 비교하는 것이 이상치 판단에 중요하다. 즉, 쿼리의 유형은 매우 다양하며, 쿼리의 유형 별로 실행 시간이 다를 수 있으므로 "동일한 쿼리"가 어느 정도 시간이 걸렸는지 여부를 비교해야 이상치 여부를 판단할 수 있다. 또한, 배포, 소스 수정 후에는 신규 쿼리가 문제가 없는지 여부를 확인해야 하기 때문에, 새로운 유형의 지연 쿼리가 발생했는지 여부를 알 수 있어야 한다.
본 발명은 전술한 문제점을 해결하기 위한 것으로서, 본 발명의 일 실시예에 따른 SQL (Structured Query Language) 쿼리 유형 분류 방법, 이를 수행하기 위한 컴퓨팅 디바이스 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체에 따르면, 쿼리 간의 유사도를 기반으로 쿼리 유형을 분류하여 다수의 쿼리들을 제한된 개수의 쿼리 유형들로 각각 분류하고, 신규 유형의 쿼리에 대한 검출 역시 수행할 수 있다.
또한, 본 발명의 다른 실시예에 따른 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법, 이를 수행하기 위한 컴퓨팅 디바이스 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체에 따르면, 쿼리의 유형을 분류하여 각 유형별 기준에 따라 이상 상황의 발생 여부를 결정하는 것에 의해 보다 정확하게 이상 상황의 발생 여부를 판단할 수 있다.
따라서, 쿼리를 유형화 (패턴으로 분류) 하는 것이 가능하며, 동일한 패턴의 쿼리 실행 시간을 비교, 모니터링하면서 이상 상황 발생 여부를 체크하도록 할 수 있다. 또한, 신규 쿼리의 경우 별도로 실행 시간을 모니터링 하여 쿼리 성능을 최적화하도록 활용할 수 있다.
도 1 은 본 발명의 일 실시예에 따른 쿼리 입력 및 정보 제공이 수행되는 네트워크 시스템의 예시적인 구성도이다. 도 1 에 도시된 바와 같이, 예를 들어 단말 (10-1, 10-2) 과 데이터베이스 서버 (30) 가 네트워크 (20) 를 통해 통신 가능하게 연결된 시스템 내에서 쿼리 및 이에 대응하는 정보가 송수신될 수 있다. 예를 들어, 쇼핑몰 서비스가 제공되는 시스템에서, 쇼핑몰을 사용하는 사용자들을은 각각의 단말 (10-1, 10-2) 를 통해 원하는 정보를 얻기 위한 요청을 생성하고 이러한 정보 요청은 데이터 베이스 서버 (30) 가 처리할 수 있는 포맷의 SQL 쿼리의 형태로 가공되어 네트워크 (20) 를 통해 데이터베이스 서버 (30) 로 전달될 수 있다. 데이터베이스 서버 (30) 는 수신된 쿼리에 대응하는 정보를 데이터베이스 내에서 취출하여, 해당 정보를 네트워크 (20) 를 통해 단말 (10-1) 및/또는 단말 (10-2) 로 전송할 수 있다. 전달된 정보는 사용자가 보다 쉽고 간편하게 인지할 수 있는 형태로 가공되어 단말 (10-1) 및/또는 단말 (10-2) 의 표시부를 통해 제공될 수 있다. 도 1 의 시스템은 단지 말단 사용자가 네트워크를 통해 데이터베이스 서버에 접속하는 경우를 예시로 하고 있지만, 본 발명은 이와 같은 형태의 쿼리 사용에 한정되는 것은 아니며, 내부 네트워크를 통해 관리자가 데이터베이스에 쿼리를 입력하는 경우와 같이 데이터베이스에서 정보를 취득하기 위해 쿼리를 입력하고 이에 대응하는 정보가 응답되는 임의의 시스템에 본 발명을 적용하는 것이 가능하다.
쿼리 유형 분류
도 2 는 본 발명의 일 실시예에 따른 쿼리 유형 분류 방법의 개략적인 흐름도이다. 이하, 도 2 를 참조하여 본 발명의 일 실시예에 따른 쿼리 유형 결정 방법을 보다 구체적으로 설명한다. 본 발명의 일 실시예에 따른 쿼리 유형 결정 방법은 컴퓨팅 디바이스에 의해 수행될 수 있다.
도 2 에 도시된 바와 같이, 본 발명의 일 실시예에 따른 SQL (Structured Query Language) 쿼리의 유형을 분류하는 방법은, 먼저 제 1 쿼리를 제 1 쿼리 유형으로 분류할 수 있다 (단계 210). 이후, 제 2 쿼리와 제 1 쿼리 간의 상관도를 결정 (단계 220) 하고, 제 2 쿼리와 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크다는 결정에 응답하여 제 2 쿼리를 상기 제 1 쿼리 유형으로 분류 (단계 230) 할 수 있으며, 제 2 쿼리와 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크지 않다는 결정에 응답하여 제 2 쿼리를 신규 쿼리 유형인 제 2 쿼리 유형으로 분류 (단계 240) 할 수 있다.
즉, 첫 번째 쿼리에 대해서는 고유의 패턴 (이하, '쿼리 유형'이라고도 함) 으로 인식하도록 하고, 후속하는 쿼리에 대해서는 기 존재하는 하나 이상의 패턴들과의 관계에서 "상관도"를 계산할 수 있다. 기 존재하는 하나 이상의 패턴들 중 후속하는 쿼리와의 관계에서 상관도가 미리 결정한 기준 값보다 큰 패턴이 존재하면, 후속하는 쿼리는 기 존재하는 하나 이상의 패턴들 중 가장 상관도가 높은 패턴으로 분류될 수 있다. 만약, 후속하는 쿼리와의 관계에서 미리 결정한 기준 값보다 상관도가 큰 패턴이 존재하지 않으면, 후속하는 쿼리는 새로운 패턴으로 분류될 수 있다. 따라서, 신규 쿼리 유형의 검출이 가능하다.
일 측면에 따르면, 신규 쿼리 유형으로의 분류를 위한 미리 결정한 기준 값은 상관도가 95 % (또는 0.95) 인 것일 수 있다. 다만, 상관도의 값은 95 % 에 한정되지 않으며, 실시 형태에 따라 달리 설정될 수 있고, 일 측면에 따라 각각의 쿼리 유형별로 상이하게 설정될 수도 있다. 또한, 일 측면에 따르면 쿼리 내의 단어가 특정 개수 이하 (예를 들어, 쿼리 내의 단어가 20 개 이하) 이면, 1/(비교하는 쿼리 두 개의 단어 수 중 짧은 것) 을 기준으로 할 수도 있다.
한편, 도 2 에서는 제 1 쿼리와 제 2 쿼리를 비교하는 것을 예시적으로 도시하고 있으나, 본 발명이 속하는 기술 분야의 당업자라면 제 2 쿼리가 후속하는 쿼리로서, 기 존재하는 하나 이상의 쿼리 유형들의 쿼리와 제 2 쿼리를 각각 비교하여, 미리 결정한 기준 값보다 상관도가 큰 쿼리 유형이 존재하지 않을 경우 제 2 쿼리를 신규 쿼리 유형으로 분류할 수 있다는 것을 이해할 수 있을 것이다.
도 3 은 도 2 의 상관도 결정 단계의 상세 흐름도이다. 이하, 도 3 을 참조하여 예를 들어 제 1 쿼리와 제 2 쿼리의 상관도를 결정하는 절차를 보다 상세하게 설명한다.
도 3 에 도시된 바와 같이, 제 1 쿼리와 제 2 쿼리의 상관도를 결정하기 위해서는, 먼저 제 2 쿼리 및 제 1 쿼리를 각각 정규화 (단계 221) 할 수 있다. 정규화는 복수의 쿼리 간의 상관도를 결정하기 위한 각각의 쿼리 비교를 좀 더 용이하게 하기 위해 각각의 쿼리를 사전 처리하는 절차로 이해될 수 있다. 도 4 는 도 3 의 정규화 단계의 동작 예시도이다. 도 4 에 도시된 바와 같이, 정규화 (단계 221) 는 복수의 프로세스들 중 적어도 하나 이상을 포함할 수 있다.
일 측면에 따르면, 정규화 (단계 221) 는 제 2 쿼리 및 제 1 쿼리에 포함된 주석 (comment) 을 삭제 (단계 221-1) 하는 것을 포함할 수 있다. 사용자의 입력을 기반으로 컴퓨팅 디바이스의 연산에 의해 수행되거나, 경우에 따라 사용자의 직접 입력에 의해서도 형성될 수 있는 쿼리들은 설명을 위한 주석들을 포함할 수 있다. 정규화 (단계 221) 는 이와 같이 쿼리들에 포함된 주석을 삭제하는 절차를 포함할 수 있다.
일 측면에 따르면, 정규화 (단계 221) 는 제 2 쿼리 및 제 1 쿼리에 포함된 구문 이외의 문자열을 미리 결정된 제 1 기호로 치환하고, 숫자를 미리 결정된 제 2 기호로 치환 (단계 221-3) 하는 것을 포함할 수 있다. SQL 쿼리는 데이터베이스에서 이해될 수 있는 포맷의 질의로서, 미리 정해진 규칙에 따른 구문들로 이루어질 수 있다. 여기서, 각각의 쿼리에 포함된 구문이 아닌 문자열이나, 숫자는 동일한 쿼리 유형에 해당하는 쿼리들 간에 상이할 수 있다. 따라서, 각각의 쿼리에 포함된 구문이 아닌 문자열을 정규화하여 미리 결정된 제 1 기호 (예를 들어, @) 로 치환하고, 숫자를 정규화하여 미리 결정된 제 2 기호 (예를 들어, #) 로 치환할 수 있다. 이 경우, 동일한 유형의 쿼리임에도 상호 비교시에 문자열이나 숫자가 많이 포함되어 있을 경우 상관도가 낮아지는 것을 방지할 수 있다.
일 측면에 따르면, 정규화 (단계 221) 는 IN (..) 구문 내에 문자열과 숫자 이외에 포함되어 있지 않을 경우 IN (..) 구문을 IN () 으로 치환 (단계 221-5) 하는 것을 포함할 수 있다. IN() 구문 내에 숫자와 문자열만이 포함되어 있는 경우에는 IN() 구문 내에 포함된 숫자와 문자열은 쿼리의 유형을 구분하는데 의미를 가지지 않는다고 판단할 수도 있다. 따라서, IN(..) 구문 내에 포함된 ".."의 내용들이 오로지 숫자와 문자열로만 이루어진 경우에는 IN(..) 구문을 IN() 으로 치환함으로써, 그 내부에 포함된 숫자와 문자열들을 삭제하도록 할 수 있다.
일 측면에 따르면, 정규화 (단계 221) 는 쿼리에 포함된 특수 문자의 직전과 직후에 공백 기호를 각각 부가 (단계 221-7) 하는 것을 포함할 수 있다. 특히, 예를 들어 특수 문자 "()[]+_" 중 하나 이상에 대해서 빈칸을 앞/뒤로 붙이도록 할 수 있다.
일 측면에 따르면, 정규화 (단계 221) 는 연속적으로 배치된 복수의 공백 기호들을 하나의 공백 기호로 치환 (단계 221-9) 하는 것을 포함할 수 있다. 즉, 중복되는 공백 기호를 하나의 공백으로 치환할 수 있다.
다시 도 3 을 참조하면, 제 2 쿼리 및 제 1 쿼리가 정규화 된 이후, 정규화된 제 2 쿼리 및 제 1 쿼리를 각각 분할하여 제 2 쿼리 및 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 추출 (단계 223) 할 수 있다. 일 측면에 따르면, 단어 추출 (단계 223) 은 공백 기호를 기준으로, 정규화된 제 2 쿼리 및 제 1 쿼리를 각각 분할하는 것에 의해 제 2 쿼리 및 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 추출하도록 구성될 수 있다. 정규화된 쿼리들은 공백을 기준으로 쿼리 내의 정보들을 구분하여 각각의 단어로 분리하기에 최적화되어 있을 수 있다. 따라서, 쿼리들 각각을 공백을 기준으로 분할하여 고유한 단어들을 추출할 수 있다.
이후, 제 2 쿼리 및 제 1 쿼리에 각각 포함되는 하나 이상의 단어들을 비교할 수 있다. 이 때, 각 쿼리들의 첫 단어 (예를 들어, SELECT 또는 UPDATE 등) 가 다른 경우에는 에러 값 (예를 들어, -1) 을 반환할 수 있다. 제 2 쿼리와 제 2 쿼리에 각각 포함되는 하나 이상의 단어들의 비교에 따라, 제 2 쿼리 및 제 1 쿼리 중 어느 하나에는 포함되고 제 2 쿼리 및 제 1 쿼리 중 다른 하나에는 포함되지 않는 단어의 개수인 차이 단어 개수를 결정 (단계 225) 할 수 있다. 여기서, 차이 단어 개수는 제 1 쿼리 및 제 2 쿼리 중 어느 하나를 기준으로 결정될 수도 있고, 제 1 쿼리 및 제 2 쿼리 양쪽 모두를 기준으로 결정될 수 도 있다. 즉, 제 1 쿼리에는 포함되어 있지만 제 2 쿼리에는 포함되어 있지 않은 단어의 개수를 차이 단어 개수로서 결정하거나, 제 2 쿼리에는 포함되어 있지만 제 1 쿼리에는 포함되어 있지 않은 단어의 개수를 차이 단어 개수로 결정하거나, 제 1 쿼리에는 포함되어 있지만 제 2 쿼리에는 포함되어 있지 않은 단어의 개수와 제 2 쿼리에는 포함되어 있지만 제 1 쿼리에는 포함되어 있지 않은 단어의 개수를 차이 단어 개수로서 결정할 수도 있다. 이하, 차이 단어 개수는 'D' 라고도 지칭할 수 있다.
차이 단어 개수가 결정되면, 차이 단어 개수 (D) 를 기반으로 제 2 쿼리와 제 1 쿼리 간의 상관도를 계산 (단계 227) 할 수 있다. 이를 위해, 상관도 결정을 위한 두 쿼리 (예를 들어 제 1 쿼리 및 제 2 쿼리) 각각의 단어 세트의 개수를 계산할 수 있으며, 예를 들어 제 1 쿼리의 개수를 N1, 제 2 쿼리의 개수를 N2 로서 정의할 수 있다.
일 측면에 따르면, 차이 단어 개수를 기반으로 제 2 쿼리와 제 1 쿼리 간의 상관도를 계산 (단계 227) 함에 있어서는, 1 에서 차이 단어 개수 (D) 를 제 2 쿼리의 개수 (N2) 와 제 1 쿼리의 개수 (N1) 중 더 작은 수로 나눈 값을 빼는 것에 의해 상관도를 계산하는 것일 수 있다. 즉, 일 측면에 따른 상관도는 1 - D / MIN (N1, N2) 로서 계산될 수 있다.
도 5 는 예시적인 제 1 쿼리에 대한 상관도 결정 절차를 나타내고, 도 6 은 예시적인 제 2 쿼리에 대한 상관도 결정 절차를 나타내고, 도 7 은 예시적인 제 3 쿼리에 대한 상관도 결정 절차를 나타내고, 도 8 은 예시적인 제 4 쿼리에 대한 상관도 결정 절차를 나타내며, 도 9 는 예시적인 제 5 쿼리에 대한 상관도 결정 절차를 나타낸다. 도 5 에는 제 1 쿼리 (q) 에 포함된 문자열 및 숫자를 특수문자로 치환하고 공백을 기준으로 단어를 추출하는 절차를 적어도 포함하여, 제 1 쿼리 (q) 를 다른 쿼리와의 관계에서 상관도를 계산할 수 있도록 준비하는 절차가 도시되어 있다. 도 6 에는 제 2 쿼리 (q2) 에 대해서 동일한 취지로 사전 준비 절차를 진행하고 정규화된 제 1 쿼리 (ql) 와 정규화된 제 2 쿼리 (ql2) 간의 상관도 결정을 수행하는 과정이 도시되어 있다. 도 7 에는 제 3 쿼리 (q3) 에 대해서 동일한 취지로 사전 준비 절차를 진행하고 정규화된 제 1 쿼리 (ql) 와 정규화된 제 3 쿼리 (ql3) 간의 상관도 결정을 수행하는 과정이 도시되어 있다. 도 8 에는 제 4 쿼리 (q4) 에 대해서 동일한 취지로 사전 준비 절차를 진행하고 정규화된 제 1 쿼리 (ql) 와 정규화된 제 4 쿼리 (ql4) 간의 상관도 결정을 수행하는 과정이 도시되어 있다. 도 9 에는 제 5 쿼리 (q5) 에 대해서 동일한 취지로 사전 준비 절차를 진행하고 정규화된 제 1 쿼리 (ql) 와 정규화된 제 5 쿼리 (ql5) 간의 상관도 결정을 수행하는 과정이 도시되어 있다.
이상 상황 발생 여부 결정
본 발명의 일 실시예에 따른 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법은, 컴퓨팅 디바이스에 의해 수행될 수 있다. 여기서 방법은, 먼저 입력받은 쿼리의 유형을 결정할 수 있다. 입력받은 쿼리의 유형을 결정함에 있어서는 전술한 본 발명의 일 실시예에 따른 쿼리 유형 분류 방법이 사용될 수도 있다.
입력받은 쿼리에 대한 유형 분류가 완료되면, 각각의 쿼리 유형에 대한 미리 결정된 기준 길이와 입력받은 쿼리의 실행 시간 길이를 비교하여, 이상 상황 발생 여부를 결정할 수 있다. 즉, 입력받은 쿼리에 대한 실행 시간 길이를 모니터링하여, 입력받은 쿼리의 실행 시간 길이가, 입력받은 쿼리에 대해 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이보다 크다는 결정에 응답하여 쿼리 실행에 대한 이상 상황이 발생하였다고 결정할 수 있다. 따라서, 쿼리의 유형에 따라 미리 결정된 기준 길이가 상이하게 결정될 수 있으므로, 모든 쿼리 유형에 대해서 동일한 기준을 적용하는 것에 비해 훨씬 정확하게 이상 상황의 발생 여부를 결정할 수 있고, 정상 상황에 대한 잘못된 탐지나, 이상 상황에 대한 탐지 누락의 경우를 상당히 감소시킬 수 있다.
여기서, 쿼리의 실행 시간 길이는, 쿼리의 입력 시각과 쿼리에 대응하는 정보의 제공 시각의 차이를 기반으로 결정될 수 있다. 다만, 전술한 바와 같이 본 발명은 네트워크를 통한 말단 디바이스와 데이터베이스 서버 간의 쿼리가 수행되는 시스템 뿐만 아니라 다양한 쿼리 수행 시스템 내에서 적용될 수 있으므로, 쿼리의 실행 시간 길이는 쿼리의 입력 시각과 쿼리에 대응하는 정보의 제공 시각 차이를 기반으로 결정되는 것으로 한정되지 아니하며, 쿼리가 실행되는데 소요되는 시간의 길이를 나타낼 수 있는 임의의 지표를 포함할 수 있다고 이해되어야 할 것이다.
또한 일 측면에 따르면, 이상 상황이 발생하였는지 여부를 판단할 수 있는 미리 결정된 기준 길이 역시 다양한 기준에 의해 결정될 수 있으며, 각각의 쿼리 유형 (패턴) 마다 개별적으로 결정될 수 있다. 예를 들어, 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이는, 결정된 쿼리의 유형으로 분류되는 복수의 쿼리들 각각에 대한 실행 시간 길이들의 중간 값 및 가장 짧은 값으로부터 배열하여 75 % 에 해당하는 값을 결정하고, 중간 값과 상기 75 % 에 해당하는 값의 차이를 기반으로 기준 길이를 결정하도록 할 수 있고, 보다 구체적으로는, 중간 값에 중간 값과 75 % 에 해당하는 값의 차이의 3 배를 더한 값을 기준 길이로 결정할 수도 있다.
예를 들어, 쿼리 패턴 하나에 대해서, 쿼리 별 실행 시간의 중간 값 (T_avg) 을 구하고, 쿼리 별 실행 시간의 중간값과 75 % 값 (T_q3) 의 차이를 구한 뒤, 최근 쿼리의 실행 시간이 T_avg + T_q3 * 3 보다 큰 경우에 이상 상황으로 판단하도록 구성될 수 있다. 한편, 신규 패턴이 발생한 경우에는 예를 들어 사용자 단말 또는 관리자 단말로 이를 통지하도록 구성될 수 있다.
컴퓨팅 디바이스
도 10 은 본 발명의 일 실시예에 따른 컴퓨팅 디바이스의 구성을 나타내는 블록도이다. 도 10 에 도시된 바와 같이, 본 발명의 일 실시예에 따른 컴퓨팅 디바이스 (1000) 는 송수신부 (1030), 프로세서 (1020) 및 메모리 (1010) 를 포함할 수 있다. 일 실시예에 따라 송수신부 (1030) 는 네트워크 (1100) 를 통해 쿼리를 수신하고, 네트워크 (1100) 를 통해 수신된 쿼리에 대응하는 정보를 송신하도록 구성될 수 있다. 여기서, 네트워크 (1100) 는 원격 엔티티와의 통신을 수행하도록 하거나, 근거리에 배치된 엔티티와의 통신을 수행하도록 할 수 있는 임의의 유/무선 네트워크를 포함할 수 있다.
일 측면에 따르면, 본 발명의 일 실시예에 따른 컴퓨팅 디바이스 (1000) 는 SQL (Structured Query Language) 쿼리의 유형을 분류하도록 구성될 수 있다. 따라서, 프로세서 (1020) 는, 제 1 쿼리를 제 1 쿼리 유형으로 분류하고, 제 2 쿼리와 제 1 쿼리 간의 상관도를 결정하고, 그리고 제 2 쿼리와 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크다는 결정에 응답하여 제 2 쿼리를 제 1 쿼리 유형으로 분류하고, 제 2 쿼리와 제 1 쿼리 간의 상관도가 미리 결정한 기준 값보다 크지 않다는 결정에 응답하여 제 2 쿼리를 신규 쿼리 유형인 제 2 쿼리 유형으로 분류하도록 구성될 수 있다.
본 발명의 일 실시예에 따른 컴퓨팅 디바이스가 SQL 쿼리의 유형을 분류하도록 구성될 때, 상기 컴퓨팅 디바이스의 프로세스의 구체적인 동작은 전술한 본 발명의 일 실시예에 따른 SQL (Structured Query Language) 쿼리의 유형 분류 방법에 따를 수 있다.
다른 측면에 따르면, 본 발명의 일 실시예에 따른 컴퓨팅 디바이스 (1000) 는 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부를 결정하도록 구성될 수 있다. 따라서, 프로세서 (1020) 는, 입력받은 쿼리의 유형을 결정하고, 그리고 입력받은 쿼리의 실행 시간 길이가 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이보다 크다는 결정에 응답하여 쿼리 실행에 대한 이상 상황이 발생하였다고 결정하도록 구성될 수 있다.
본 발명의 일 실시예에 따른 컴퓨팅 디바이스가 SQL 쿼리 실행에 대한 이상 상황 발생 여부를 결정하도록 구성될 때, 상기 컴퓨팅 디바이스의 프로세스의 구체적인 동작은 전술한 본 발명의 일 실시예에 따른 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법에 따를 수 있다.
한편, 상술한 본 발명에 따른 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체로는 컴퓨터 시스템에 의하여 해독될 수 있는 데이터가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래시 메모리, 광 데이터 저장장치 등이 있을 수 있다. 또한, 컴퓨터로 판독 가능한 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
이상, 도면 및 실시예를 참조하여 설명하였지만, 본 발명의 보호범위가 상기 도면 또는 실시예에 의해 한정되는 것을 의미하지는 않으며 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
구체적으로, 설명된 특징들은 디지털 전자 회로, 또는 컴퓨터 하드웨어, 펌웨어, 또는 그들의 조합들 내에서 실행될 수 있다. 특징들은 예컨대, 프로그래밍 가능한 프로세서에 의한 실행을 위해, 기계 판독 가능한 저장 디바이스 내의 저장장치 내에서 구현되는 컴퓨터 프로그램 제품에서 실행될 수 있다. 그리고 특징들은 입력 데이터 상에서 동작하고 출력을 생성함으로써 설명된 실시예들의 함수들을 수행하기 위한 지시어들의 프로그램을 실행하는 프로그래밍 가능한 프로세서에 의해 수행될 수 있다. 설명된 특징들은, 데이터 저장 시스템으로부터 데이터 및 지시어들을 수신하기 위해, 및 데이터 저장 시스템으로 데이터 및 지시어들을 전송하기 위해 결합된 적어도 하나의 프로그래밍 가능한 프로세서, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그래밍 가능한 시스템 상에서 실행될 수 있는 하나 이상의 컴퓨터 프로그램들 내에서 실행될 수 있다. 컴퓨터 프로그램은 소정 결과에 대해 특정 동작을 수행하기 위해 컴퓨터 내에서 직접 또는 간접적으로 사용될 수 있는 지시어들의 집합을 포함한다. 컴퓨터 프로그램은 컴파일된 또는 해석된 언어들을 포함하는 프로그래밍 언어 중 어느 형태로 쓰여지고, 모듈, 소자, 서브루틴(subroutine), 또는 다른 컴퓨터 환경에서 사용을 위해 적합한 다른 유닛으로서, 또는 독립 조작 가능한 프로그램으로서 포함하는 어느 형태로도 사용될 수 있다.
지시어들의 프로그램의 실행을 위한 적합한 프로세서들은, 예를 들어, 범용 및 특수 용도 마이크로프로세서들 둘 모두, 및 단독 프로세서 또는 다른 종류의 컴퓨터의 다중 프로세서들 중 하나를 포함한다. 또한 설명된 특징들을 구현하는 컴퓨터 프로그램 지시어들 및 데이터를 구현하기 적합한 저장 디바이스들은 예컨대, EPROM, EEPROM, 및 플래쉬 메모리 디바이스들과 같은 반도체 메모리 디바이스들, 내부 하드 디스크들 및 제거 가능한 디스크들과 같은 자기 디바이스들, 광자기 디스크들 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 비휘발성 메모리의 모든 형태들을 포함한다. 프로세서 및 메모리는 ASIC들(application-specific integrated circuits) 내에서 통합되거나 또는 ASIC들에 의해 추가되어질 수 있다.
이상에서 설명한 본 발명은 일련의 기능 블록들을 기초로 설명되고 있지만, 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
전술한 실시 예들의 조합은 전술한 실시 예에 한정되는 것이 아니며, 구현 및/또는 필요에 따라 전술한 실시예들 뿐 아니라 다양한 형태의 조합이 제공될 수 있다.
전술한 실시 예들에서, 방법들은 일련의 단계 또는 블록으로서 순서도를 기초로 설명되고 있으나, 본 발명은 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당해 기술 분야에서 통상의 지식을 가진 자라면 순서도에 나타난 단계들이 배타적이지 않고, 다른 단계가 포함되거나, 순서도의 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.
전술한 실시 예는 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 발명은 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.

Claims (7)

  1. 컴퓨팅 디바이스에 의해 수행되는, SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법으로서,
    입력받은 쿼리의 유형을 결정하는 단계; 및
    상기 입력받은 쿼리의 실행 시간 길이가 상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이보다 크다는 결정에 응답하여 쿼리 실행에 대한 이상 상황이 발생하였다고 결정하는 단계를 포함하고,
    상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이는,
    상기 결정된 쿼리의 유형으로 분류되는 복수의 쿼리들 각각에 대한 실행 시간 길이들의 중간 값 및 가장 짧은 값으로부터 배열하여 75 % 에 해당하는 값을 결정하는 단계; 및
    상기 중간 값과 상기 75 % 에 해당하는 값의 차이를 기반으로 상기 기준 길이를 결정하는 단계에 의해 결정된 것인, SQL 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법.
  2. 제 1 항에 있어서,
    상기 쿼리의 실행 시간 길이는,
    상기 쿼리의 입력 시각과 상기 쿼리에 대응하는 정보의 제공 시각의 차이를 기반으로 결정되는, SQL 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법.
  3. 제 1 항에 있어서,
    상기 기준 길이를 결정하는 단계는,
    상기 중간 값에 상기 중간 값과 상기 75 % 에 해당하는 값의 차이의 3 배를 더한 값을 상기 기준 길이로 결정하는, SQL 쿼리 실행에 대한 이상 상황 발생 여부 결정 방법.
  4. 프로세서 및 메모리를 포함하는 컴퓨팅 디바이스로서, 상기 컴퓨팅 디바이스는 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부를 결정하도록 구성되고, 상기 프로세서는,
    입력받은 쿼리의 유형을 결정하고; 그리고
    상기 입력받은 쿼리의 실행 시간 길이가 상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이보다 크다는 결정에 응답하여 쿼리 실행에 대한 이상 상황이 발생하였다고 결정하도록 구성되고,
    상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이는,
    상기 결정된 쿼리의 유형으로 분류되는 복수의 쿼리들 각각에 대한 실행 시간 길이들의 중간 값 및 가장 짧은 값으로부터 배열하여 75 % 에 해당하는 값을 결정하는 것; 및
    상기 중간 값과 상기 75 % 에 해당하는 값의 차이를 기반으로 상기 기준 길이를 결정하는 것에 의해 결정된 것인, 컴퓨팅 디바이스.
  5. 제 4 항에 있어서,
    상기 쿼리의 실행 시간 길이는,
    상기 쿼리의 입력 시각과 상기 쿼리에 대응하는 정보의 제공 시각의 차이를 기반으로 결정되는, 컴퓨팅 디바이스.
  6. 제 4 항에 있어서,
    상기 기준 길이를 결정하는 것은,
    상기 중간 값에 상기 중간 값과 상기 75 % 에 해당하는 값의 차이의 3 배를 더한 값을 상기 기준 길이로 결정하는, 컴퓨팅 디바이스.
  7. 프로세서에 의해 실행 가능한 명령어들을 저장하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 SQL (Structured Query Language) 쿼리 실행에 대한 이상 상황 발생 여부를 결정하기 위한 것이고, 상기 프로세서에 의해 실행되었을 때 상기 명령어들은 상기 프로세서로 하여금,
    입력받은 쿼리의 유형을 결정하고; 그리고
    상기 입력받은 쿼리의 실행 시간 길이가 상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이보다 크다는 결정에 응답하여 쿼리 실행에 대한 이상 상황이 발생하였다고 결정하도록 구성되고,
    상기 결정된 쿼리의 유형에 대한 미리 결정된 기준 길이는,
    상기 결정된 쿼리의 유형으로 분류되는 복수의 쿼리들 각각에 대한 실행 시간 길이들의 중간 값 및 가장 짧은 값으로부터 배열하여 75 % 에 해당하는 값을 결정하는 것; 및
    상기 중간 값과 상기 75 % 에 해당하는 값의 차이를 기반으로 상기 기준 길이를 결정하는 것에 의해 결정된 것인, 컴퓨터 판독 가능한 저장 매체.
KR1020200103389A 2020-08-18 2020-08-18 Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 KR102153674B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200103389A KR102153674B1 (ko) 2020-08-18 2020-08-18 Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200103389A KR102153674B1 (ko) 2020-08-18 2020-08-18 Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020190041155A Division KR102215263B1 (ko) 2019-04-09 2019-04-09 Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스

Publications (1)

Publication Number Publication Date
KR102153674B1 true KR102153674B1 (ko) 2020-09-09

Family

ID=72451580

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200103389A KR102153674B1 (ko) 2020-08-18 2020-08-18 Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스

Country Status (1)

Country Link
KR (1) KR102153674B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578583A (zh) * 2023-07-12 2023-08-11 太平金融科技服务(上海)有限公司 异常语句识别方法、装置、设备、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020030489A (ko) 2000-10-18 2002-04-25 주효식 데이터베이스관리시스템에 대한 질의문의 웹 상에서의제공 방법
JP2018169644A (ja) * 2017-03-29 2018-11-01 株式会社日立製作所 データベース管理システム及びデータベース管理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020030489A (ko) 2000-10-18 2002-04-25 주효식 데이터베이스관리시스템에 대한 질의문의 웹 상에서의제공 방법
JP2018169644A (ja) * 2017-03-29 2018-11-01 株式会社日立製作所 データベース管理システム及びデータベース管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578583A (zh) * 2023-07-12 2023-08-11 太平金融科技服务(上海)有限公司 异常语句识别方法、装置、设备、存储介质
CN116578583B (zh) * 2023-07-12 2023-10-03 太平金融科技服务(上海)有限公司 异常语句识别方法、装置、设备、存储介质

Similar Documents

Publication Publication Date Title
CN111522816B (zh) 基于数据库引擎的数据处理方法、装置、终端及介质
CN110908997B (zh) 数据血缘构建方法、装置、服务器及可读存储介质
AU2017101864A4 (en) Method, device, server and storage apparatus of reviewing SQL
US8943059B2 (en) Systems and methods for merging source records in accordance with survivorship rules
US9916368B2 (en) Non-exclusionary search within in-memory databases
US20160125067A1 (en) Entity resolution between datasets
US7546311B2 (en) Optimization of left and right outer join operations in database management systems
CN112035508A (zh) 基于sql在线元数据解析的方法及系统、设备
CN111666101A (zh) 软件同源分析方法及装置
KR102153674B1 (ko) Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스
KR102215263B1 (ko) Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스
CN114676678A (zh) 结构化查询语言数据的解析方法、装置和电子设备
US8909681B2 (en) Gap detection in a temporally unique index in a relational database
CN114048227A (zh) Sql语句异常检测方法、装置、设备及存储介质
US20150248467A1 (en) Real-time calculation, storage, and retrieval of information change
CN112527796A (zh) 数据表处理方法、装置及计算机可读存储介质
CN107291749B (zh) 一种数据指标关联关系的确定方法及装置
CN112612810A (zh) 慢sql语句识别方法及系统
CN111949838A (zh) 一种数据的传播路径生成方法、装置、设备及存储介质
US9104730B2 (en) Indexing and retrieval of structured documents
CN112612817A (zh) 数据处理方法、装置、终端设备及计算机可读存储介质
CN111159275B (zh) 数据导入方法和装置、电子设备及存储介质
CN114564954B (zh) 一种维护指标唯一性的指标管理方法及系统
CN116383777B (zh) 一种数据治理平台和面向数据治理的数据确权方法
CN117131071B (zh) 一种数据处理方法、装置、电子设备及计算机可读介质

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant