KR101737578B1 - 자동 생성된 sql 구문에 대한 자동 튜닝 방법 및 장치 - Google Patents
자동 생성된 sql 구문에 대한 자동 튜닝 방법 및 장치 Download PDFInfo
- Publication number
- KR101737578B1 KR101737578B1 KR1020150185187A KR20150185187A KR101737578B1 KR 101737578 B1 KR101737578 B1 KR 101737578B1 KR 1020150185187 A KR1020150185187 A KR 1020150185187A KR 20150185187 A KR20150185187 A KR 20150185187A KR 101737578 B1 KR101737578 B1 KR 101737578B1
- Authority
- KR
- South Korea
- Prior art keywords
- identification information
- data
- sql
- mapping logic
- location identification
- Prior art date
Links
Images
Classifications
-
- G06F17/30306—
-
- G06F17/271—
-
- G06F17/30289—
-
- G06F17/303—
-
- G06F17/30339—
Landscapes
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 일 실시예에 따르는 자동 생성된 SQL(Structured Query Language) 구문에 대한 자동 튜닝방법은 (a) 원천 서버에 저장된 데이터에 대한 원천위치 식별정보와 상기 데이터가 타겟 서버에 저장될 위치에 대한 타겟위치 식별정보를 추출하는 단계; (b) 상기 데이터를 타겟 서버로 이관시키기 위한 구문을 포함하는 이관로직에 상기 원천위치 식별정보와 타겟위치 식별정보를 적용하여 매핑로직을 생성하는 단계; 및 (c) 상기 생성된 매핑로직에 따라 데이터 이관을 수행하는 경우의 이관 속도보다 빠르게 데이터 이관이 수행되도록 상기 매핑로직에 포함된 조건문을 재구성하는 단계를 포함한다.
Description
본 발명은 자동 생성된 SQL 구문에 대한 자동 튜닝 방법 및 장치에 관한 것으로서, 보다 상세하게는, 데이터 이관을 위한 SQL 구문을 생성하고 튜닝하는 과정을 자동화함으로써 작업 속도 향상과 비용 절감을 도모하기 위한 자동 생성된 SQL 구문에 대한 자동 튜닝 방법 및 장치에 관한 것이다.
인터넷 기술의 발달로 인해 각 기업의 모든 업무 시스템들은 서버를 이용하여 구축되고 있다. 이러한 서버는 지속적인 업데이트와 관리가 필요한데, 그에 따라 원천 서버에서 새로운 타겟 서버로의 데이터 이관 작업이 요구된다.
이러한 데이터 이관 작업시, 원천 서버에 저장된 데이터의 테이블 값 및 컬럼(column) 값을 타겟 서버에 저장된 테이블 값 및 컬럼 값으로 전환시키기 위한 매핑로직 작성이 필요한데, 종래기술의 경우, 매핑로직을 개발자가 직접 SQL(Structured Query Language) 구문으로 작성하고 매핑로직 변경 이력을 수작업으로 관리하도록 구성되어 왔다. 그에 따라, SQL 작성시 시간적 낭비가 심하며, 개발자 별 매핑로직 변경이력을 수기 관리하게 되어 전체적인 이력관리가 불가능하게 되고 변경이력이나 데이터의 유실 문제도 발생하게 되어 많은 문제를 일으키고 있는 실정이다.
또한, 매핑로직 기반으로 작성된 기존의 SQL은 조건문에 기재된 문장의 종류에 따라 데이터 이행시간이 적게 소요되기도 하고 길게 소요되기도 한다. 그에 따라, SQL을 수정하여(이를 튜닝이라 일컫기도 함), 최소 시간으로 데이터가 이관되도록 하는데, 종래기술의 경우, 개발자가 직접 SQL 수정 계획을 수립하고 눈으로 체크하며 수정을 진행하였기 때문에 매우 비효율적이고 시간이 오래 걸린다는 문제점이 있다.
본 발명은, 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 데이터 이관을 위한 SQL 구문을 자동으로 생성하고, 이를 기반으로 SQL 구문에 포함된 조건문을 재구성함으로써 데이터 이관시 최소 비용이 소요되도록 하는 SQL 구문을 제공하기 위한 SQL 구문에 대한 자동 튜닝 방법 및 장치를 제공하는 데에 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 일 실시예에 따르는 자동 생성된 SQL(Structured Query Language) 구문에 대한 자동 튜닝방법은 (a) 원천 서버에 저장된 데이터에 대한 원천위치 식별정보와 상기 데이터가 타겟 서버에 저장될 위치에 대한 타겟위치 식별정보를 추출하는 단계; (b) 상기 데이터를 타겟 서버로 이관시키기 위한 구문을 포함하는 이관로직에 상기 원천위치 식별정보와 타겟위치 식별정보를 적용하여 매핑로직을 생성하는 단계; 및 (c) 상기 생성된 매핑로직에 따라 데이터 이관을 수행하는 경우의 이관 속도보다 빠르게 데이터 이관이 수행되도록 상기 매핑로직에 포함된 조건문을 재구성하는 단계를 포함한다.
또한, 본 발명의 다른 실시예에 따르는, 자동 생성된 SQL(Structured Query Language) 구문에 대한 자동 튜닝장치는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법을 수행하기 위한 프로그램이 저장된 메모리; 및 상기 메모리에 저장된 프로그램을 실행하기 위한 프로세서;를 포함하며, 상기 프로세서는, 상기 프로그램의 실행에 따라, 원천 서버에 저장된 데이터에 대한 원천위치 식별정보와 상기 데이터가 타겟 서버에 저장될 위치에 대한 타겟위치 식별정보를 추출하고, 상기 데이터를 상기 타겟 서버로 이관시키기 위한 구문을 포함하는 이관로직에 상기 원천위치 식별정보와 타겟위치 식별정보를 적용하여 매핑로직을 생성하며, 상기 생성된 매핑로직에 따라 데이터 이관을 수행하는 경우의 이관 속도보다 빠르게 데이터 이관이 수행되도록 상기 매핑로직에 포함된 조건문을 재구성한다.
본 발명은 원천 서버로부터 타겟 서버로 데이터를 이관시키기 위한 SQL 구문을 자동으로 생성하고, 적용함으로써 작업자의 수작업에 의한 비효율성과 시간 소모 등의 문제점을 해소할 수 있다. 나아가, 생성된 SQL 구문을 튜닝함으로써, 가장 최소 비용이 소모되도록 하는 SQL 구문을 도출하여, 개발자에 의해 작성된 비효율적인 구문으로 튜닝이 수행된 경우의 낭비 시간을 최소화하고 전체 데이터 이관 시간을 획기적으로 단축시킬 수 있다.
도 1은 본 발명의 일 실시예에 따르는 시스템의 구조도이다.
도 2는 본 발명의 일 실시예에 따르는 자동 생성된 SQL 구문에 대한 자동 튜닝장치의 구성요소에 대한 블록도이다.
도 3은 매핑로직을 구성하는 SQL 구문의 예시이다.
도 4는 도 3의 SQL 구문의 조건문의 재구성을 위한 경우의 수와 각 경우의 비용 간의 관계를 나타내는 도표이다.
도 5는 본 발명의 일 실시예에 따르는 자동 생성된 SQL 구문에 대한 자동 튜닝방법을 설명하기 위한 순서도이다.
도 2는 본 발명의 일 실시예에 따르는 자동 생성된 SQL 구문에 대한 자동 튜닝장치의 구성요소에 대한 블록도이다.
도 3은 매핑로직을 구성하는 SQL 구문의 예시이다.
도 4는 도 3의 SQL 구문의 조건문의 재구성을 위한 경우의 수와 각 경우의 비용 간의 관계를 나타내는 도표이다.
도 5는 본 발명의 일 실시예에 따르는 자동 생성된 SQL 구문에 대한 자동 튜닝방법을 설명하기 위한 순서도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 명세서에 있어서 '부(部)'란, 하드웨어에 의해 실현되는 유닛(unit), 소프트웨어에 의해 실현되는 유닛, 양방을 이용하여 실현되는 유닛을 포함한다. 또한, 1 개의 유닛이 2 개 이상의 하드웨어를 이용하여 실현되어도 되고, 2 개 이상의 유닛이 1 개의 하드웨어에 의해 실현되어도 된다. 한편, '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, '~부'는 어드레싱 할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
이하, 도 1을 참조하여, 본 발명의 일 실시예에 따르는 시스템에 대하여 구체적으로 설명한다.
위 시스템은 원천 서버(100), 타겟 서버(200)를 포함한다.
원천 서버(100)는 데이터를 저장하는 서버이다. 예를 들어, 데이터는 신용카드 회사에서 관리하는 카드사용정보, 카드사용자정보 등에 관한 정보일 수 있으며, 그 외의 다양한 정보에 관한 것일 수 있다. 서버에 저장된 데이터는 각각의 데이터마다 위치 식별정보를 포함한다. 구체적으로, 데이터는 엑셀 등과 같은 테이블 내에 기재된 정보일 수 있으며, 이때, 데이터의 위치 식별정보는 테이블의 명칭, 테이블 내에 해당 데이터가 기재된 컬럼값이 될 수 있다.
원천 서버(100)에 저장된 데이터는 타겟 서버(200)로 이관될 수 있다. 이때, 원천 서버(100)에서 추출할 데이터의 위치와 타겟 서버(200)에 데이터를 적재할 위치에 대한 위치 식별정보는 서로 매칭되고, 매칭이 완료된 후 데이터가 이관될 수 있다.
이때, 원천 서버(100)의 데이터의 위치와 타겟 서버(200) 내 이관할 위치를 매칭하고 이관을 수행하는 것은 SQL 에 의해 이루어질 수 있으며, SQL 구문은 제 3 서버(300a)가 생성할 수 있다. 또한, 제 3 서버(300a)는 최소 비용으로 데이터를 이동할 수 있도록 생성된 SQL 구문을 튜닝할 수 있다. 여기서, 제 3 서버(300a)는 원천 서버(100)와 타겟 서버(200)와 물리적으로 독립되어 구성되는 장치이다. 한편, SQL 구문 생성 및 튜닝작업은 타겟 서버(200)에 포함된 프로세서(300b)가 수행할 수도 있다. 즉, SQL 구문 생성 및 튜닝작업을 수행하기 위한 프로그램이 제 3 서버(300a)의 메모리에 저장되거나, 타겟 서버(200)의 메모리에 저장되는지 여부에 따라 작업 수행주체가 달라질 수도 있다.
이하에서, SQL 구문 생성 및 튜닝작업을 수행하는 주체가 되는 서버를 편의상 "SQL 튜닝장치(300)"라 호칭하기로 한다.
한편, SQL 튜닝장치(300)에 저장된 정보나 SQL 튜닝장치(300)가 수행하는 작업에 대한 정보는 SQL 튜닝장치(300)와 연결된 클라이언트 단말(또는 "사용자 단말")을 통해 사용자에게 제공될 수도 있다. 클라이언트 단말은 SQL 튜닝장치(300)와 유/무선으로 연결된 통신 단말을 의미하며, 컴퓨터, 스마트폰, 혹은 디스플레이 장치 등으로 구성될 수 있다.
이하, 도 2를 참고하여, 본 발명의 일 실시예에 따르는 자동 생성된 SQL 구문에 대한 자동 튜닝장치(300)의 구성과 동작에 대해서 구체적으로 설명하도록 한다.
SQL 튜닝장치(300)는 자동 생성된 SQL 구문에 대한 자동 튜닝방법을 수행하기 위한 프로그램(또는 애플리케이션)이 저장된 메모리와 위 프로그램을 실행하는 프로세서를 포함하여 구성될 수 있다. 여기서 프로세서는 메모리에 저장된 프로그램의 실행에 따라 다양한 기능을 수행할 수 있는데, 각 기능에 따라 프로세서에 포함되는 세부 모듈들을 데이터위치 식별정보 추출부(310), SQL 구문 자동 생성부(320), SQL 구문 변경이력 기록부(330), SQL 구문 튜닝부(340)로 나타낼 수 있다.
데이터위치 식별정보 추출부(310)는 원천 서버(100)에 저장된 데이터에 대한 원천위치 식별정보와 데이터가 타겟 서버(200)에 저장될 위치에 대한 타겟위치 식별정보를 추출한다. 원천위치 식별정보는 원천 서버(100) 내에 데이터가 저장된 테이블의 명칭 및 테이블 내에서 데이터가 기록되어 있는 컬럼값을 포함한다. 타겟위치 식별정보는 데이터를 타겟 서버(200)로 이관시킨 후 저장시킬 테이블의 명칭 및 테이블 내의 컬럼값을 포함한다.
SQL 구문 자동 생성부(320)는 데이터를 타겟 서버(200)로 이관시키기 위한 구문을 포함하는 이관로직에 원천위치 식별정보와 타겟위치 식별정보를 적용하여 매핑로직을 생성한다.
구체적으로, SQL 구문 자동 생성부(320)는 SQL 튜닝장치(300) 내에 저장된 이관로직을 자동 분석하여 추출 SQL 구문과 적재 SQL 구문을 자동으로 파싱한다. 이관로직이란 데이터 추출과 적재를 위한 문법에 맞춘 기본적인 SQL 구문만 포함된 상태의 로직을 의미하며, 이관로직은 엑셀(.exl)이나 텍스트문서(.txt) 등의 형식의 데이터일 수 있다. 이관로직에 포함된 추출 SQL 구문은 select 절, from 절, where 절을 포함한다. from 절은 추출할 데이터에 대한 테이블의 명칭이 기재되는 구문이며, select 절은 테이블의 컬럼값이 기재되는 구문이며, where 절은 이관 조건에 관한 내용이 기재되는 조건문이다. 예를 들어, 조건문에는 원천 서버(100)에 저장된 데이터의 개수와 타겟 서버(200)로 적재할 데이터의 개수에 대한 매핑관계에 대한 조건이 기재될 수 있다. 즉, 1:1 이관인 경우, 원천 서버(100)에 저장된 1개의 데이터가 타겟 서버(200) 내에 1개만 적재되기 위한 조건이 기재될 수 있다. 복합 이관인 경우, 원천 서버(100)에 저장된 데이터의 개수와 타겟 서버(200)에 저장될 데이터의 개수와의 관계가 1:N, N:1이 되기 위한 조건이 기재되거나 타겟 서버(200) 내에 새로운 저장위치를 신설하여 데이터를 저장하도록 하는 조건이 기재될 수도 있다. 적재 SQL 구문은 insert 절과 load 절을 포함할 수 있으며, insert 절은 데이터를 적재할 테이블의 명칭 및 테이블 내 컬럼값이 기재되는 구문이다.
SQL 구문 자동 생성부(320)는 이관로직을 분석한 결과를 토대로, 각 SQL 구문에 원천위치 식별정보와 타겟위치 식별정보 중 해당하는 정보를 입력하여 매핑로직을 생성한다. 추가적으로, SQL 구문 자동 생성부(320)는 생성된 매핑로직을 바로 저장하거나 데이터 이관서버와 연결된 클라이언트 단말 측으로 SQL 구문을 전송하여 사용자의 확인을 거친 후에 저장하도록 구현될 수도 있다.
한편, 생성된 SQL 구문 기반의 매핑로직이 표준 SQL에 위배되는 경우 SQL 튜닝장치(300)와 통신연결된 클라이언트 단말 측으로 경고나 재입력 요청 알림을 제공할 수도 있다.
SQL 구문 변경이력 기록부(330)는 원천위치 식별정보, 타겟위치 식별정보 및 이관로직 중 적어도 하나가 사용자에 의해 변경되어 매핑로직에 변경사항이 발생되는 경우, 변경정보를 기록 및 저장한다. 예를 들어, 원천위치 식별정보, 타겟위치 식별정보 및 이관로직에 대한 전자문서(엑셀 또는 텍스트문서)가 SQL 튜닝장치(300)에 미리 저장되어 있을 때, 클라이언트 단말측으로부터 새로운 전자문서를 수신한 경우, 새로운 전자문서와 기존에 저장되어 있는 전자문서를 비교하여 변경정보(즉, 변경 전의 데이터, 변경 후의 데이터, 변경날짜 및 시간, 변경한 사용자 등)를 추출하고 기록 및 저장함과 동시에, 변경정보를 곧바로 매핑로직에 반영하여 수정할 수 있다. 또는, 클라이언트 단말측으로부터 매핑로직에 관한 수정사항을 수신한 경우, 곧바로 수정사항이 반영된 매핑로직을 저장하고, 수정사항에 대한 이력을 변경정보로 저장할 수 있다.
SQL 구문 변경이력 기록부(330)는 저장된 변경정보를 가공하여 통계나 변경이력 리스트 형태로 저장할 수도 있다. 예를 들어, 최종변경시점에 대한 변경항목이 가장 상단에 배치되도록 시간 순으로 변경항목을 정렬한 리스트를 저장하거나, 변경정보를 표나 그래프 형태로 저장할 수도 있다.
이후, 클라이언트 단말 측으로부터 매핑로직의 변경이력에 대한 요청을 수신하는 경우, SQL 구문 변경이력 기록부(330)는 리스트, 표, 그래프 등 사용자가 요청한 항목에 맞는 데이터를 클라이언트 단말 측으로 제공할 수 있다.
SQL 구문 튜닝부(340)는 생성된 매핑로직에 따라 데이터 이관을 수행하는 경우의 이관 속도보다 빠르게 데이터 이관이 수행되도록 매핑로직에 포함된 조건문을 재구성한다. 구체적으로, SQL 구문 튜닝부(340)는 매핑로직에 포함된 조건문에 적어도 두 개의 조건문장이 포함되어 있는 경우, 조건문 내에서 적어도 두 개의 조건문장의 배열순서를 변경함으로써, 조건문을 재구성한다.
이하, 도 3 및 도 4를 참조하여, SQL 구문의 자동 튜닝에 대한 과정을 상세히 설명하도록 한다.
도 3을 참조하면, 매핑로직을 나타내는 SQL 구문의 예시가 도시되어 있다. 도 3의 SQL 구문은 소비자들의 카드정보를 이관시키기 위한 구문이다. 여기서 INSERT 절에는 타겟위치 식별정보가 기재되어 있고, SELECT 절에는 원천위치 식별정보 중 테이블 명칭에 관한 정보가 기재되어 있다. FROM 절에는 원천위치 식별정보 중 테이블 내의 데이터가 적재된 컬럼값에 관한 정보가 기재되어 있다. FROM 절에 기재된 라인을 달리하는 각 구문은 매출전표, 수수료, 매출접수일자, 접수담당자ID, 배치번호, 배치일련번호, 가맹점번호, 매출접수일자, 가맹점수수료구분코드 등에 관한 컬럼값을 나타낸다.
도 3의 SQL 구문을 해석하자면, SELECT 절에 기재된 개인과 법인 별로 기준년월 테이블들 내에서 FROM 절에 기재된 매출전표, 수수료, 매출접수일자, 접수담당자ID, 배치번호, 배치일련번호, 가맹점번호, 매출접수일자, 가맹점수수료구분코드 등의 컬럼에 기재된 데이터를 추출하여, INSERT 절에 기재된 타겟 서버(200)의 월별가맹점매출실적의 기준년월, 매출건수_개인, 매출건수_법인 이라는 명칭의 테이블에 적재하라는 것이다. 다만, 모든 데이터를 이관시키는 것은 아니며 WHERE 절에 기재된 바와 같이 매출접수일자가 std_day_fr과 std_day_to 사이 값을 가지며(ⓐ 문장), 매출상품코드가 '10000', '30000' 값을 가지며(ⓑ 문장), 반송코드가 '0000' 값을 가지는 (ⓒ문장) 데이터만 이관하면 된다. 예를 들어, 서버에 저장된 카드정보 중 5년전에 탈퇴한 회원의 정보가 있는 경우, 금융 관련 국내 규정에 따라 탈퇴한 회원의 정부는 5년 이후에 폐기하게 되어 있으므로, 해당 회원의 정보는 타겟 서버(200)로 이관하는 대상에서 제외될 수 있는 데 이러한 조건들이 WHERE 절에 기입될 수 있다.
한편, WHERE 절에 포함된 모든 문장이 모두 동일한 데이터 이관처리 시간을 요구하는 것은 아니다. 각 문장을 구성하는 내용에 따라 테이블 내의 전체 정보에 대한 풀 스캔을 요구하는 문장이 있는 반면, 각 테이블의 일부 인덱스 값만 스캔할 것을 요구하는 문장이 있다. 예를 들어, 1000개의 데이터 중 풀 스캔을 통해 제 1 조건을 만족하는 700개의 데이터를 필터링한 후, 700개의 데이터를 대상으로 인덱스 값만 조사하여 제 2 조건을 만족하는300개의 데이터를 검출할 수 있다. 또는, 제 1 및 제 2 조건의 순서를 바꾸면, 1000개의 데이터 중 일부 인덱스값 조사를 통해 제 2 조건을 만족하는 500개의 데이터를 필터링한 후, 500개의 데이터를 대상으로 풀 스캔하여 제 1 조건을 만족하는 300개의 데이터를 검출할 수 있다. 이러한 경우 후자가 더 빨리 데이터를 이관시킬 수 있다고 말할 수 있다. 그러므로, SQL 구문의 튜닝은 WHERE 절에 기재된 문장을 대상으로만 수행하여도 상당한 처리 시간을 단축시킬 수 있다.
이하, SQL 구문 튜닝부(340)의 동작에 대해 설명하도록 한다.
SQL 구문 튜닝부(340)는 먼저, 조건문에 포함된 적어도 두 개의 조건문장의 배열순서를 변경하여 상기 조건문을 재구성함으로써 복수의 이벤트에 대한 매핑로직을 도출한다. 구체적으로, 도 3의 매핑로직의 SQL 구문 내에서 where 절이 포함된 단락을 판별한다. 이어서, 해당 단락 내에 라인을 달리하는 조건문장이 적어도 두 개 이상 존재하는 경우, 상기 각 조건문장의 어미 부분에 포함된 문법어를 제거하고, 제거한 문법어를 저장한다. 예를 들어, 도 3의 경우, 조건문장은 아래와 같이 총 3 개로 구성된다.
WHERE A.SL_RCPDT BETWEEN std_day_fr AND std_day_to
AND A.SL_PD_C IN ('10000','30000')
AND A.SB_C = '0000'
이때, 각 어미 부분에 포함된 문법어(즉, WHERE, AND, OR)를 제거하고, 어떤 문법어가 남아 있었는지 근거를 남기기 위해 제거한 문법어를 저장한다. 문법어가 제거된 조건문장은 아래와 같다.
A.SL_RCPDT BETWEEN std_day_fr AND std_day_to, ...ⓐ
A.SL_PD_C IN ('10000','30000'), ...ⓑ
A.SB_C = '0000' ...ⓒ
이어서, SQL 구문 튜닝부(340)는 문법어가 제거된 각 조건문장을 식별하기 위한 식별값을 ⓐ, ⓑ, ⓒ와 같이 순차적으로 설정한다. 그리고, 각 식별값을 기준으로 복수의 이벤트를 도출한다.
SQL 구문 튜닝부(340)는 각 이벤트에 대한 매핑로직마다 데이터 이관시 소요되는 비용을 산출하는데, 산출결과에 따르는 도표는 도 4와 같다. 도 4를 참조하면, ⓐ-ⓑ-ⓒ의 순서로 규정된 이벤트의 매핑로직이 가장 높은 비용을 나타내며, ⓒ-ⓐ-ⓑ의 순서로 규정된 이벤트의 매핑로직이 가장 낮은 비용을 나타내는 것을 확인할 수 있다. 여기서 비용이 가장 낮다는 것은 데이터 이관시 소요되는 시간이 최소로 걸린다는 것을 의미한다.
그리고, SQL 구문 튜닝부(340)는 가장 낮은 비용을 갖는 이벤트의 조건문을 포함하도록 매핑로직을 수정한다. 위의 예에서는 ⓒ-ⓐ-ⓑ의 순서로 규정된 이벤트의 조건문을 포함하도록 매핑로직을 수정할 수 있다. 또는, SQL 구문 튜닝부(340)는 도 4의 도표를 사용자 단말로 제공하고, 사용자 단말의 입력에 따라 선택된 이벤트의 조건문을 포함하도록 매핑로직을 수정할 수도 있다. 마지막으로, SQL 구문 튜닝부(340)는 수정할 것으로 결정된 이벤트의 조건문에 제거된 문법어(WHERE, AND)를 삽입하여 매핑로직 튜닝을 완료한다. 구체적으로, 맨 위의 조건문장에는 WHERE을 어미에 삽입하고, 두 번째 라인 이후의 조건문장에는 AND 를 삽입함으로써, 매핑로직 튜닝을 완료할 수 있다.
이하, 도 3 및 도 4를 참조하여, 본 발명의 일 실시예에 따르는 자동 생성된 SQL 구문에 대한 자동 튜닝방법에 대하여 구체적으로 설명하도록 한다.
상기 방법은 도 2를 통하여 설명한 SQL 튜닝장치(300)에 의하여 수행되는 것이므로, 아래에서 생략된 내용이 있다고 하더라도 도 2를 통하여 설명한 내용으로서 갈음하도록 한다.
먼저, SQL 튜닝장치(300)는 원천 서버(100)에 저장된 데이터에 대한 원천위치 식별정보와 데이터가 타겟 서버(200)에 저장될 위치에 대한 타겟위치 식별정보를 추출한다(S110).
이어서, 이관로직에 원천위치 식별정보와 타겟위치 식별정보를 적용하여 매핑로직을 생성한다(S120). SQL 튜닝장치(300)는 이관로직을 자동분석하여 추출 SQL 구문과 적재 SQL 구문을 자동으로 파싱한 후, 적절한 식별정보를 적용함으로써 매핑로직을 생성할 수 있다. 생성된 매핑로직은 원천 서버(100)의 특정 위치에 저장된 특정 데이터를 타겟 서버(200) 내의 어느 위치에 이관시켜야 하는 지에 관한 정보가 포함되어 있다.
SQL 튜닝장치(300)는 매핑로직 내의 조건문(WHERE절)이 재구성될 수 있는 경우의 수를 도출하고 각 경우에 대한 비용(cost)을 산출한다(S130). 구체적으로, 조건문에 포함된 라인을 서로 달리하는 조건문장의 배열순서를 달리함으로써 여러가지 경우의 수를 도출할 수 있다. 예를 들어, 3개의 조건문장이 포함되어 있는 경우, 3*2*1 =6 으로 연산되어 총 6가지의 경우의 수를 도출할 수 있다. 이때, 각각의 경우에 대한 비용을 산출한다.
마지막으로, SQL튜닝 장치(300)는 최소 비용을 갖는 경우대로 매핑로직을 수정함으로써 매핑로직 튜닝을 완료한다(S140). 최소 비용을 갖는 매핑로직은 데이터 이관속도를 가장 빠르게 할 수 있는 것임을 의미한다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 원천 서버 200: 타겟 서버
300: SQL 튜닝장치
300: SQL 튜닝장치
Claims (16)
- 서버에 의해 수행되는, 자동 생성된 SQL(Structured Query Language) 구문에 대한 자동 튜닝방법에 있어서,
(a) 원천 서버에 저장된 데이터에 대한 원천위치 식별정보와 상기 데이터가 타겟 서버에 저장될 위치에 대한 타겟위치 식별정보를 추출하는 단계;
(b) 상기 데이터를 타겟 서버로 이관시키기 위한 구문을 포함하는 이관로직에 상기 원천위치 식별정보와 타겟위치 식별정보를 적용하여 매핑로직을 생성하는 단계; 및
(c) 상기 생성된 매핑로직에 따라 데이터 이관을 수행하는 경우의 이관 속도보다 빠르게 데이터 이관이 수행되도록 상기 매핑로직에 포함된 조건문을 재구성하는 단계를 포함하되,
상기 (c) 단계는,
(c-1) 상기 매핑로직에 포함된 조건문에 적어도 두 개의 조건문장이 포함되어 있는 경우, 상기 조건문에 포함된 적어도 두 개의 조건문장의 배열순서를 변경하여 상기 조건문을 재구성함으로써 복수의 이벤트에 대한 매핑로직을 도출하는 단계; 및
(c-2) 각 이벤트에 대한 매핑로직마다 데이터 이관시 소요되는 비용을 산출하는 단계를 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 1 항에 있어서,
상기 원천위치 식별정보와 타겟위치 식별정보는,
상기 각 데이터가 저장되거나 저장될 위치를 나타내는 테이블의 명칭과 테이블 내의 컬럼값을 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 1 항에 있어서,
상기 매핑로직은,
SQL 구문으로 작성된 것인, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 1 항에 있어서,
상기 (b) 단계는,
추출 SQL 구문, 적재 SQL 구문을 포함하는 이관로직에 대하여, 상기 추출 SQL 구문에 상기 원천위치 식별정보를 입력하고, 상기 적재 SQL 구문에 상기 타겟위치 식별정보를 입력하여 상기 매핑로직을 생성하는 단계를 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 4 항에 있어서,
상기 (c) 단계는,
상기 추출 SQL 구문에 포함된 원천위치 식별정보를 참조하여 추출할 데이터의 저장위치를 식별하고, 상기 적재 SQL 구문에 포함된 타겟위치 식별정보를 참조하여 추출한 데이터를 적재할 저장위치를 식별하며, 상기 추출 SQL 구문에 조건문이 포함되어 있는 경우 상기 조건문에 포함된 조건에 따라 상기 원천 서버의 데이터를 상기 타겟 서버로 이관시키는 단계를 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 1 항에 있어서,
상기 방법은,
(d) 상기 원천위치 식별정보, 타겟위치 식별정보 및 이관로직 중 적어도 하나가 사용자에 의해 변경되는 경우, 변경정보를 기록 및 저장하는 단계를 더 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 6 항에 있어서,
상기 (d) 단계는,
상기 원천위치 식별정보, 타겟위치 식별정보 및 이관로직에 대한 정보를 나타내는 전자문서를 수신하는 경우, 상기 원천위치 식별정보, 타겟위치 식별정보 및 이관로직에 대하여 기 저장된 전자문서와 상기 새롭게 수신한 전자문서를 비교하여, 변경정보를 추출하고 기록 및 저장하는 단계를 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 6 항에 있어서,
상기 방법은,
(e) 상기 사용자로부터 매핑로직의 변경이력에 대한 요청을 수신하는 경우, 상기 저장된 변경정보에 기초하여, 변경항목이 시간 순으로 정렬된 리스트를 상기 사용자에게 제공하는 단계를 더 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 삭제
- 삭제
- 제 1 항에 있어서,
상기 (c) 단계는,
(c-3) 상기 (c-2) 단계 후, 가장 낮은 비용을 갖는 이벤트의 조건문을 포함하도록 상기 생성된 매핑로직을 수정하는 단계를 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 1 항에 있어서,
상기 (c) 단계는,
(c-3) 상기 (c-2) 단계 후, 각 이벤트에 대한 비용을 나타내는 목록을 사용자 단말로 제공하고, 상기 사용자 단말의 입력에 따라 선택된 이벤트의 조건문을 포함하도록 상기 생성된 매핑로직을 수정하는 단계를 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 11 항 또는 제 12 항에 있어서,
상기 (c-1) 단계는,
상기 생성된 매핑로직 내에서 where 절이 포함된 단락을 판별하는 단계;
상기 단락 내에 라인을 달리하는 조건문장이 적어도 두 개 이상 존재하는 경우, 상기 각 조건문장의 어미 부분에 포함된 문법어를 제거하고, 제거한 문법어를 저장하는 단계; 및
문법어가 제거된 각 조건문장을 식별하기 위한 식별값을 설정하고, 각 식별값을 기준으로 복수의 이벤트를 도출하는 단계를 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 13 항에 있어서,
상기 (c-3) 단계는,
수정할 것으로 결정된 이벤트의 조건문에 상기 제거된 문법어를 삽입하여 매핑로직 튜닝을 완료하는 단계를 포함하는, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 제 1 항에 있어서,
상기 자동 생성된 SQL 구문에 대한 자동 튜닝방법을 수행하는 서버는,
상기 타겟 서버이거나, 상기 원천 서버 및 타겟 서버와 물리적으로 독립된 제 3의 서버인, 자동 생성된 SQL 구문에 대한 자동 튜닝방법. - 자동 생성된 SQL(Structured Query Language) 구문에 대한 자동 튜닝장치에 있어서,
자동 생성된 SQL 구문에 대한 자동 튜닝방법을 수행하기 위한 프로그램이 저장된 메모리; 및
상기 메모리에 저장된 프로그램을 실행하기 위한 프로세서;를 포함하며,
상기 프로세서는, 상기 프로그램의 실행에 따라,
원천 서버에 저장된 데이터에 대한 원천위치 식별정보와 상기 데이터가 타겟 서버에 저장될 위치에 대한 타겟위치 식별정보를 추출하고,
상기 데이터를 상기 타겟 서버로 이관시키기 위한 구문을 포함하는 이관로직에 상기 원천위치 식별정보와 타겟위치 식별정보를 적용하여 매핑로직을 생성하며,
상기 생성된 매핑로직에 따라 데이터 이관을 수행하는 경우의 이관 속도보다 빠르게 데이터 이관이 수행되도록 상기 매핑로직에 포함된 조건문을 재구성하되,
상기 매핑로직에 포함된 조건문은 상기 프로세서가 상기 매핑로직에 포함된 조건문에 적어도 두 개의 조건문장이 포함되어 있는 경우, 상기 조건문에 포함된 적어도 두 개의 조건문장의 배열순서를 변경하여 상기 조건문을 재구성함으로써 복수의 이벤트에 대한 매핑로직을 도출하는 단계; 및 각 이벤트에 대한 매핑로직마다 데이터 이관시 소요되는 비용을 산출하는 단계를 수행하여 재구성되는 것인, 자동 생성된 SQL 구문에 대한 자동 튜닝장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150167946 | 2015-11-27 | ||
KR20150167946 | 2015-11-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101737578B1 true KR101737578B1 (ko) | 2017-05-18 |
Family
ID=59049143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150185187A KR101737578B1 (ko) | 2015-11-27 | 2015-12-23 | 자동 생성된 sql 구문에 대한 자동 튜닝 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101737578B1 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968593A (zh) * | 2019-12-10 | 2020-04-07 | 上海达梦数据库有限公司 | 数据库sql语句优化方法、装置、设备和存储介质 |
CN111538743A (zh) * | 2020-04-22 | 2020-08-14 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及系统 |
CN112181704A (zh) * | 2020-09-28 | 2021-01-05 | 京东数字科技控股股份有限公司 | 一种大数据任务处理方法、装置、电子设备及存储介质 |
CN114528051A (zh) * | 2022-02-24 | 2022-05-24 | 山东浪潮通软信息科技有限公司 | 基于引擎平台处理业务流程的方法、系统、设备及介质 |
CN114697311A (zh) * | 2020-12-31 | 2022-07-01 | 中国移动通信有限公司研究院 | 文件处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009211638A (ja) * | 2008-03-06 | 2009-09-17 | Nec Corp | ソフトウェアサービス事業移管システム及びその移管仲介用サーバ装置 |
KR101440186B1 (ko) | 2012-03-16 | 2014-09-12 | 주식회사 엘지유플러스 | 데이터이관 시스템 및 그 이관방법 |
KR101525529B1 (ko) * | 2014-09-30 | 2015-06-05 | 주식회사 비트나인 | 데이터 처리장치 및 그 데이터 매핑방법 |
-
2015
- 2015-12-23 KR KR1020150185187A patent/KR101737578B1/ko active Search and Examination
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009211638A (ja) * | 2008-03-06 | 2009-09-17 | Nec Corp | ソフトウェアサービス事業移管システム及びその移管仲介用サーバ装置 |
KR101440186B1 (ko) | 2012-03-16 | 2014-09-12 | 주식회사 엘지유플러스 | 데이터이관 시스템 및 그 이관방법 |
KR101525529B1 (ko) * | 2014-09-30 | 2015-06-05 | 주식회사 비트나인 | 데이터 처리장치 및 그 데이터 매핑방법 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968593A (zh) * | 2019-12-10 | 2020-04-07 | 上海达梦数据库有限公司 | 数据库sql语句优化方法、装置、设备和存储介质 |
CN110968593B (zh) * | 2019-12-10 | 2023-10-03 | 上海达梦数据库有限公司 | 数据库sql语句优化方法、装置、设备和存储介质 |
CN111538743A (zh) * | 2020-04-22 | 2020-08-14 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及系统 |
CN111538743B (zh) * | 2020-04-22 | 2023-08-18 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及系统 |
CN112181704A (zh) * | 2020-09-28 | 2021-01-05 | 京东数字科技控股股份有限公司 | 一种大数据任务处理方法、装置、电子设备及存储介质 |
CN114697311A (zh) * | 2020-12-31 | 2022-07-01 | 中国移动通信有限公司研究院 | 文件处理方法、装置、设备及存储介质 |
CN114697311B (zh) * | 2020-12-31 | 2024-09-13 | 中国移动通信有限公司研究院 | 文件处理方法、装置、设备及存储介质 |
CN114528051A (zh) * | 2022-02-24 | 2022-05-24 | 山东浪潮通软信息科技有限公司 | 基于引擎平台处理业务流程的方法、系统、设备及介质 |
CN114528051B (zh) * | 2022-02-24 | 2024-05-24 | 浪潮通用软件有限公司 | 基于引擎平台处理业务流程的方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112199366B (zh) | 数据表处理方法、装置及设备 | |
KR101737578B1 (ko) | 자동 생성된 sql 구문에 대한 자동 튜닝 방법 및 장치 | |
CN104298760B (zh) | 一种应用于数据仓库的数据处理方法和数据处理装置 | |
AU2018206822A1 (en) | Simplified tax interview | |
CN108536761A (zh) | 报表数据查询方法及服务器 | |
CN108647357B (zh) | 数据查询的方法及装置 | |
CN103605703A (zh) | 一种多平台之间数据一致性检测的方法和系统 | |
US20170228356A1 (en) | System Generator Module for Electronic Document and Electronic File | |
US10528534B2 (en) | Method and system for deduplicating data | |
US10402406B2 (en) | Predictive database for computer processes | |
US20230360145A1 (en) | Method and system for processing transactions based on transaction archetypes | |
CN111143434A (zh) | 数据智能核对方法、装置、设备及存储介质 | |
CN109542890B (zh) | 数据修改方法、装置、计算机设备及存储介质 | |
KR101737576B1 (ko) | 자동 생성된 sql 구문 기반의 데이터 이관 방법 및 장치 | |
CN114511314A (zh) | 一种支付账户管理的方法、装置、计算机设备和存储介质 | |
CN116775575A (zh) | 一种文件合并方法、装置、电子设备及存储介质 | |
KR101737575B1 (ko) | 자동 생성된 sql 구문 기반의 데이터 검증 방법 및 장치 | |
CN112036999A (zh) | 会计科目余额信息查询方法及装置 | |
CN113297220B (zh) | 数据的恢复方法、装置、计算机可读存储介质以及处理器 | |
CN115495483B (zh) | 数据批量处理方法、装置、设备和计算机可读存储介质 | |
CN110750563A (zh) | 多模型数据处理方法、系统、装置、电子设备及存储介质 | |
CN108205584B (zh) | 用于计算机处理的预测性数据库 | |
CN117215751A (zh) | 超时交易订单处理方法、装置、服务器及存储介质 | |
CN117112551A (zh) | 报表生成方法、装置、电子设备和存储介质 | |
CN117785842A (zh) | 数据库管理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |