KR20220096049A - 데이터 파티셔닝 방법 및 장치 - Google Patents

데이터 파티셔닝 방법 및 장치 Download PDF

Info

Publication number
KR20220096049A
KR20220096049A KR1020200188169A KR20200188169A KR20220096049A KR 20220096049 A KR20220096049 A KR 20220096049A KR 1020200188169 A KR1020200188169 A KR 1020200188169A KR 20200188169 A KR20200188169 A KR 20200188169A KR 20220096049 A KR20220096049 A KR 20220096049A
Authority
KR
South Korea
Prior art keywords
data
partition
partitioning
source data
item
Prior art date
Application number
KR1020200188169A
Other languages
English (en)
Inventor
김은미
박수호
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020200188169A priority Critical patent/KR20220096049A/ko
Publication of KR20220096049A publication Critical patent/KR20220096049A/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 파티셔닝 방법 및 장치가 제공된다. 본 발명의 실시예들에 따른 데이터 파티셔닝 방법은 컴퓨팅 장치에 의해 수행되고, 소스 데이터를 수신하는 단계, 상기 소스 데이터의 데이터 분포 특성을 분석하고 상기 분석 결과에 기초하여 상기 소스 데이터의 파티션 키(Partition Key)를 결정하는 단계, 및 상기 결정된 파티션 키를 이용하여, 상기 소스 데이터를 파티셔닝하는 단계를 포함한다.
이러한 데이터 파티셔닝 방법에 따르면, 소스 데이터의 파티셔닝에 필요한 최적의 파티션 카운트 및 파티션 키를 스스로 결정할 수 있는 데이터 파티셔닝 방법이 제공된다. 또한, 파티션 카운트 및 파티션 키를 찾는데 소요되는 사용자의 시간과 노력을 절감할 수 있으며, 소스 데이터의 데이터 분포 특성을 통계적으로 분석하여 최적의 파티션 카운트 및 파티션 키를 찾음으로써 특정 파티션으로의 데이터 쏠림 현상을 방지하고 전체적인 컴퓨팅 자원을 효율적으로 활용할 수 있다.

Description

데이터 파티셔닝 방법 및 장치 {METHOD AND APPARATUS FOR DATA PARTITIONING}
본 발명은 데이터 파티셔닝 방법 및 장치에 관한 것이다. 보다 자세하게는, 데이터의 효율적인 처리를 위해 데이터를 최적의 구간과 개수로 파티셔닝하는 방법 및 그 방법을 수행하는 컴퓨팅 장치에 관한 것이다.
최근 다수의 컴퓨팅 노드들을 사용하여 병렬로 데이터를 처리하는 분산 처리 방법이 널리 사용되고 있다. 이러한 데이터 분산 처리는 대용량 데이터를 처리할 때 특히 효과적이며, 유휴 자원 없이 가용 컴퓨팅 자원을 최대한 활용한다는 점에서 매우 효율적이다.
데이터 분산 처리를 더욱 효율적으로 활용하기 위해서는 적절한 데이터 파티셔닝(Data Partitioning)이 필요하다. 데이터 파티셔닝은 하나의 작업을 복수의 컴퓨팅 노드에 분배하기 위해 소스 데이터를 복수의 파티션으로 분할하는 것을 의미한다. 데이터 파티셔닝을 위해서는 소스 데이터를 몇 개의 파티션으로 분할할 지, 또 어떤 항목을 기준으로 데이터를 분할할 지를 결정해야 한다.
종래에는, 파티셔닝에 필요한 최적의 파티션 수(이하,"파티션 카운트"라 함) 및 파티션을 나눌 기준 항목(이하,"파티션 키"라 함)을 사용자가 자신의 경험과 노력에 기대어 찾아야만 했다. 그러나, 이러한 작업은 사용자에게 많은 시간과 노력을 소모하게 하였으며, 매번 파티셔닝을 할 때마다 무수한 시행착오를 반복해야 하는 문제가 있었다. 특히, 파티셔닝을 할 소스 데이터가 복잡할수록 적절한 파티션 카운트와 파티션 키를 찾는 것은 매우 어려워졌으며, 그에 따라 잘못된 파티션 카운트와 파티션 키로 파티셔닝되어 파티션 간에 데이터 쏠림 현상이 발생하고 특정 컴퓨팅 노드에 부하가 과중되어 전체적인 컴퓨팅 효율이 저하되는 문제가 있었다.
대한민국 특허등록공보 제10-2184280호 (2020.11.24 공개)
본 발명의 몇몇 실시예를 통해 해결하고자 하는 기술적 과제는, 소스 데이터의 파티셔닝에 필요한 최적의 파티션 카운트 및 파티션 키를 스스로 결정할 수 있는 데이터 파티셔닝 방법 및 장치를 제공하는 것이다.
본 발명의 몇몇 실시예를 통해 해결하고자 하는 다른 기술적 과제는, 파티션 카운트 및 파티션 키를 찾는데 소요되는 사용자의 시간과 노력을 절감할 수 있는 데이터 파티셔닝 방법 및 장치를 제공하는 것이다.
본 발명의 몇몇 실시예를 통해 해결하고자 하는 또 다른 기술적 과제는, 소스 데이터의 데이터 분포 특성을 통계적으로 분석하여 최적의 파티션 카운트 및 파티션 키를 찾음으로써, 특정 파티션으로의 데이터 쏠림 현상을 방지하고 전체적인 컴퓨팅 자원을 효율적으로 활용할 수 있는 데이터 파티셔닝 방법 및 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 실시예들에 따른 데이터 파티셔닝 방법은 컴퓨팅 장치에 의해 수행되고, 소스 데이터를 수신하는 단계, 상기 소스 데이터의 데이터 분포 특성을 분석하고, 상기 분석 결과에 기초하여 상기 소스 데이터의 파티션 키(Partition Key)를 결정하는 단계, 및 상기 결정된 파티션 키를 이용하여, 상기 소스 데이터를 파티셔닝하는 단계를 포함한다.
일 실시예로서, 상기 파티션 키를 결정하는 단계는 상기 소스 데이터로부터 샘플링 데이터를 추출하는 단계, 및 상기 샘플링 데이터의 평균 크기에 기초하여 상기 파티셔닝을 위한 파티션 카운트(Partition Count)를 결정하는 단계를 포함할 수 있다.
일 실시예로서, 상기 샘플링 데이터를 추출하는 단계는 상기 소스 데이터를 복수의 구간으로 구분하고, 상기 복수의 구간에 걸쳐 제1 데이터를 획득하는 단계, 상기 제1 데이터에 포함된 개별 데이터들의 크기의 분산 값을 산출하는 단계, 및 상기 분산 값이 임계 값보다 작으면, 상기 제1 데이터를 상기 샘플링 데이터로서 추출하는 단계를 포함할 수 있다.
일 실시예로서, 상기 제1 데이터를 획득하는 단계는 상기 복수의 구간으로부터 제2 데이터를 추출하는 단계, 상기 제2 데이터를 다운사이징(Downsizing)하여 제3 데이터를 획득하는 단계, 및 상기 제3 데이터를 누적하여 상기 제1 데이터를 획득하는 단계를 포함할 수 있다.
일 실시예로서, 상기 제3 데이터는 n개의 개별 데이터로 구성되고, 상기 n은 상기 소스 데이터의 미리 결정된 신뢰구간을 기초로 산출된 샘플 카운트(Sample Count) 값일 수 있다.
일 실시예로서, 상기 파티션 카운트는 상기 소스 데이터가 수신되는 네트워크의 네트워크 허용량에 더 기초하여 결정될 수 있다.
일 실시예로서, 상기 파티션 카운트는 상기 컴퓨팅 장치의 리소스 상태에 기초하여 산출되는 변동 지수(IRV, Idle Resource Variable)에 더 기초하여 결정될 수 있다.
일 실시예로서, 상기 파티션 키를 결정하는 단계는 상기 소스 데이터의 후보 항목을 파티션 키로 하여 상기 소스 데이터를 사전 파티셔닝하는 단계, 및 상기 사전 파티셔닝 된 복수의 파티션들에 기초하여 상기 후보 항목의 파티셔닝 적합도를 산출하는 단계를 포함할 수 있다.
일 실시예로서, 상기 파티셔닝 적합도는 상기 복수의 파티션들간 데이터 분포 정도를 나타내는 데이터 분포 지수에 기초하여 산출될 수 있다.
일 실시예로서, 상기 데이터 분포 지수는 상기 복수의 파티션 각각의 데이터 개수들의 분산 값에 기초하여 산출될 수 있다.
일 실시예로서, 상기 데이터 분포 지수는 상기 후보 항목의 널(Null) 빈도 값에 기초하여 산출될 수 있다.
일 실시예로서, 상기 파티셔닝 적합도는 상기 복수의 파티션들을 병렬처리 하는 경우의 실행 계획 코스트(Execution Plan Cost)에 더 기초하여 산출될 수 있다.
일 실시예로서, 상기 소스 데이터의 복수의 항목 중에서 상기 후보 항목을 결정하는 단계를 더 포함하고, 상기 후보 항목을 결정하는 단계는 상기 복수의 항목 중 제1 항목에 대해 후보 적합도를 산출하는 단계, 및 상기 산출된 후보 적합도가 임계 값 이상이면, 상기 제1 항목을 상기 후보 항목으로 결정하는 단계를 포함할 수 있다.
일 실시예로서, 상기 후보 적합도는 상기 제1 항목이 상기 소스 데이터의 인덱스 키(Index Key)로 사용된 횟수에 기초하여 산출될 수 있다.
일 실시예로서, 상기 후보 적합도는 상기 제1 항목이 상기 소스 데이터의 파티션 키로 사용된 횟수에 기초하여 산출될 수 있다.
일 실시예로서, 상기 후보 적합도는 상기 제1 항목이 상기 소스 데이터의 프라이머리 키(Primary Key)로 사용된 횟수에 기초하여 산출될 수 있다.
일 실시예로서, 상기 파티션 키를 결정하는 단계는 상기 산출된 파티셔닝 적합도에 기초하여 상기 후보 항목을 상기 소스 데이터의 파티션 키로서 추천하는 단계, 및 상기 추천에 대한 사용자 선택에 따라, 상기 후보 항목을 상기 소스 데이터의 파티션 키로 결정하는 단계를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 실시예들에 따른 데이터 파티셔닝 장치는 프로세서, 상기 프로세서에 의해 실행되는 컴퓨터 프로그램을 로드(load)하는 메모리, 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은 소스 데이터를 수신하는 동작, 상기 소스 데이터의 데이터 분포 특성을 분석하고 상기 분석 결과에 기초하여 상기 소스 데이터의 파티션 키(Partition Key)를 결정하는 동작, 및 상기 결정된 파티션 키를 이용하여 상기 소스 데이터를 파티셔닝하는 동작을 실행하기 위한 인스트럭션들을 포함한다.
도 1은 데이터 병렬처리를 위한 데이터 파티셔닝 방법을 설명하는 개요도이다.
도 2는 본 발명의 일 실시예에 따른 데이터 파티셔닝 방법을 나타내는 순서도이다.
도 3은 도 2의 S200 단계를 구체화한 일 실시예를 나타내는 순서도이다.
도 4는 도 3의 S210 단계를 구체화한 일 실시예를 나타내는 순서도이다.
도 5는 도 4의 S212 단계를 구체화한 일 실시예를 나타내는 순서도이다.
도 6 및 도 7은 도 5의 실시예를 부연 설명하기 위한 도면들이다.
도 8는 도 3의 S230 단계를 구체화한 일 실시예를 나타내는 순서도이다.
도 9는 소스 데이터의 후보 항목을 이산형과 연속형으로 구분하는 예시적인 방법을 설명하는 도면이다.
도 10은 연속형 후보 항목을 파티션 키로 하여 사전 파티셔닝하는 방법을 설명하기 위한 도면이다.
도 11은 이산형 후보 항목을 파티션 키로 하여 사전 파티셔닝하는 방법을 설명하기 위한 도면이다.
도 12는 연속형 후보 항목과 이산형 후보 항목을 동시에 파티션 키로 하여 사전 파티셔닝하는 방법을 설명하기 위한 도면이다.
도 13은 본 발명의 다양한 실시예들이 구현되는 컴퓨팅 장치(500)의 예시적인 하드웨어 구성을 나타내는 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 발명의 기술적 사상을 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
이하, 본 발명의 구체적인 실시예들에 대하여 첨부된 도면을 참조하여 설명한다.
도 1은 데이터 병렬처리를 위한 데이터 파티셔닝 방법을 설명하는 개요도이다.
데이터 파티셔닝(Data Partitioning)은 크기가 큰 소스 데이터(1)를 복수의 파티션(2, 3, 4, 5)로 분할하여 병렬처리 하기 위해 주로 사용된다. 이를 통하면, 각각의 파티션(2, 3, 4, 5)을 복수의 컴퓨팅 노드를 이용하여 동시에 처리할 수 있으므로, 작업 속도가 더욱 빨라지고 컴퓨팅 자원을 효율적으로 활용할 수 있는 효과가 있다.
데이터 파티셔닝을 위해서는 소스 데이터(1)를 분할할 파티션 개수를 의미하는 파티션 카운트(Partition Count)와 파티셔닝의 기준점이 되는 항목을 의미하는 파티션 키(Partition Key)를 결정하는 것이 필요하다.
도 1을 예로 들면, 소스 데이터(1)를 k개의 파티션(2, 3, 4, 5)로 분할하기로 하는 경우 파티션 카운트는 k가 되고, 소스 데이터(1)의 복수의 항목(1a) 중 국적 항목을 기준으로 파티셔닝을 하려고 하는 경우 국적 항목이 파티션 키가 된다. 파티셔닝에 있어 적절한 파티션 카운트와 파티션 키를 설정하는 것은 매우 중요하다. 파티션 카운트와 파티션 키가 적절하지 않은 경우, 특정 파티션에 데이터 쏠림 현상이 발생하여 전체적인 작업 속도 및 컴퓨팅 효율을 크게 저하시킬 수 있기 때문이다.
이에 본 발명에서는 소스 데이터의 데이터 분포 특성을 기초로 최적의 파티션 카운트 및 파티션 키를 결정하여 파티셔닝을 수행하는 방법 및 장치를 제안한다. 이하에서는, 이러한 본 발명의 사상에 대해 다양한 실시예들을 참조하여 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 데이터 파티셔닝 방법을 나타내는 순서도이다. 도 2 이하의 방법들은 예를 들어 도 13의 컴퓨팅 장치(500)로 구현가능한 데이터 파티셔닝 장치에 의해 수행된다. 따라서, 이하의 단계들에서 수행주체가 생략된 경우, 그 수행주체는 상기 데이터 파티셔닝 장치인 것으로 전제한다.
S100 단계에서, 소스 데이터가 수신된다.
S200 단계에서, 수신된 소스 데이터의 데이터 분포 특성을 분석하고, 상기 분석 결과에 기초하여 소스 데이터의 파티셔닝을 위한 파티션 키가 결정된다.
S300 단계에서, 결정된 파티션 키를 이용하여 소스 데이터가 파티셔닝 된다.
도 2의 실시예에 따르면, 소스 데이터의 데이터 분포 특성에 기초하여 자동으로 파티션 키가 결정되고, 그에 따라 소스 데이터가 파티셔닝 된다. 이때의 데이터 분포 특성은 소스 데이터에 포함된 개별 데이터들의 데이터 크기 분포 또는 소스 데이터의 특정 항목에 속하는 값들의 분포를 포함할 수 있다. 본 실시예의 더욱 상세한 설명을 위해 도 3을 참조한다.
도 3은 도 2의 S200 단계를 구체화한 일 실시예를 나타내는 순서도이다. 도 3에서는 소스 데이터를 분석하여 파티션 카운트 및 파티션 키를 순차적으로 결정하는 실시예가 설명된다. 이하 도면을 참조하여 설명한다.
S210 단계에서, 소스 데이터로부터 샘플링 데이터가 추출된다. S210 단계는 소스 데이터에 포함된 개별 데이터들의 데이터 크기 분포를 분석하기 위해 일부 데이터를 샘플링하는 단계이다. 이에 대한 구체적인 설명을 위해 도 4를 참조한다.
도 4는 도 3의 S210 단계를 구체화한 일 실시예를 나타내는 순서도이다.
먼저, S211 단계에서, 샘플 카운트가 산출된다. 샘플 카운트는 적정 수의 샘플링 데이터를 추출하기 위해 설정되는 값으로, 상기 소스 데이터에 대해 미리 결정된 신뢰 구간을 만족하기 위해 필요한 샘플링 개수를 의미한다.
예를 들어, 소스 데이터의 전체 개수가 1,000,000이고, 95% 신뢰 구간에 대해 표준 편차 ±1%를 기준으로 데이터를 샘플링하는 경우, 해당 신뢰 구간을 만족하는 최소 샘플링 개수는 9513개이고 샘플 카운트는 9513이 된다. 유사하게, 소스 데이터의 전체 개수가 1,000,000이고, 99% 신뢰 구간에 대해 표준 편차 ±1%를 기준으로 데이터를 샘플링하는 경우, 해당 신뢰 구간을 만족하는 최소 샘플링 개수는 16369개이고 따라서 샘플 카운트는 16369가 된다.
다만, 이는 하나의 예일 뿐이며, 샘플 카운트는 그 밖의 다양한 방법으로 산출될 수 있다. 가령, 사용자가 샘플 카운트를 1000으로 지정한 경우, 신뢰 구간과 무관하게 샘플 카운트는 1000으로 결정될 수 있다. 이하에서는, 샘플 카운트가 n으로 결정된 것으로 가정한다.
S212 단계에서, 소스 데이터가 복수의 구간으로 구분되고, 상기 구분된 복수의 구간에 걸쳐 제1 데이터가 추출된다. S212 단계는, 소스 데이터로부터 가급적 데이터를 랜덤하게 샘플링하기 위해, 소스 데이터를 복수의 구간으로 구분한 후 각각의 구간으로부터 일부 데이터들을 추출하여 취합하는 것을 의미한다. 이에 대한 구체적인 설명을 위해 도 5 내지 도 7을 참조한다.
도 5는 도 4의 S212 단계를 구체화한 일 실시예를 나타내는 순서도이다. 도 6 및 도 7은 도 5의 실시예를 부연 설명하기 위한 도면들이다. 도 5에서는 소스 데이터의 각 구간으로부터 데이터를 추출, 가공하는 구체적인 방법이 설명된다. 이하, 도 5 내지 도 7을 함께 참조하며 설명한다.
S212a 단계에서, 소스 데이터가 복수의 구간으로 구분된다. 도 6을 참조하면, 소스 데이터(10)가 k개의 구간(11, 12, 13, 14, 15)로 구분된 형태가 도시된다.
S212b 단계에서, 복수의 구간 각각에 대해 데이터를 샘플링하여 제2 데이터가 추출된다. 이때, 제2 데이터는 앞서 결정된 샘플 카운트를 참조하여 추출되되, 데이터를 더욱 랜덤하게 샘플링하기 위해 샘플 카운트의 r배수 개만큼 추출될 수 있다. 이에 대해, 도 6을 참조하면, 소스 데이터(10)의 k개 구간(11, 12, 13, 14, 15)으로부터 각각 동일한 개수의 부분 데이터(11a, 12a, 13a, 14a, 15a)들이 추출되고, 이를 수집하여 제2 데이터(21)가 구성된다. 이때 상기 각각의 부분 데이터는 n/k*r개의 개별 데이터들을 포함할 수 있다. 여기서, n은 샘플 카운트이고, k는 소스 데이터(10)의 구간 개수이고, r은 소정의 추출 배수이다.
S212c 단계에서, 제2 데이터를 다운사이징하여 제3 데이터가 획득된다. 제2 데이터(21)는 k개 구간들 각각에서 n/k*r개의 데이터들을 수집한 것이므로, 제2 데이터(21)의 전체 데이터 개수는 n*r개가 된다. 즉, 샘플 카운트 n보다 더욱 많은 데이터가 추출되었으므로, 이를 샘플 카운트 n만큼 줄이기 위해 제2 데이터에 대한 다운사이징(Downsizing)이 필요하다. 이에 대해, 도 6을 참조하여 부연한다. 상기 다운사이징은 다양한 방법으로 수행될 수 있지만, 간단하게는 제2 데이터(21)를 구성하는 부분 데이터(11a, 12a, 13a, 14a, 15a) 각각에 대해 랜덤함수를 통해 n/k개의 데이터만 선택하는 방법으로 실현될 수 있다. 즉, 제1 부분 데이터(11a) 중 랜덤하게 n/k개의 데이터만 선택하여 제1 다운사이징 데이터(x1)를 추출하고, 제2 부분 데이터(12a) 중 랜덤하게 n/k개의 데이터만 선택하여 제2 다운사이징 데이터(x2)를 추출하고, 동일한 방법을 나머지 부분 데이터(13a, 14a, 15a)에 적용하는 방법을 통해, 최종적으로 n개의 제3 데이터(31)가 추출될 수 있다.
이처럼, 소스 데이터(10)로부터 샘플 카운트보다 더 많은 수의 데이터를 추출하고 이를 다시 샘플 카운트만큼 다운사이징하는 방법을 사용하면, 소스 데이터(10)에서 샘플 카운트만큼만 직접 추출하는 것보다 추출된 데이터의 랜덤성을 더욱 높일 수 있다.
S212d 단계에서, 추출된 제3 데이터를 누적하여 제1 데이터가 획득된다. 여기서, 제3 데이터가 누적된다는 것의 의미는, 앞서 S212b 및 S212c에서 설명된 제2 데이터 및 제3 데이터를 추출하는 단계가 추출되는 데이터를 달리하며 반복적으로 수행되는 경우, 그 때마다 추출되는 제3 데이터가 제1 데이터에 누적적으로 추가하는 것을 의미한다. 이에 대한 명확한 이해를 위해, 이후 단계의 설명을 계속한다.
S212e 단계에서, 제2 데이터가 A회 이상 추출되었는지 확인된다. 여기서 A는 미리 설정된 최소 샘플링 횟수로, 제2 데이터가 A회 이상 추출될 때까지 S212b 내지 S212d 단계는 반복된다. 이처럼 최소 샘플링 횟수를 지정하는 것은 일정 이상의 샘플링이 반복되도록 함으로써 샘플링의 신뢰성을 높이기 위함이다.
제2 데이터가 A회 이상 추출되었으면 본 실시예는 도 4의 S213 단계로 진행한다. 그렇지 않으면, 본 실시예는 S212b 단계로 돌아가서 이후의 단계를 반복하게 된다. 이에 대한 부연 설명을 위해, 도 7을 참조한다. 도 7은 제2 데이터 및 제3 데이터를 한번씩 추출한 후, 다시 S212b 단계로 돌아가 2번째 제2 데이터 및 제3 데이터를 추출하는 예를 설명한다.
도 7의 예에서도 제2 데이터(22) 및 제3 데이터(32)를 추출하는 방법은 도 6의 예와 대부분 유사하다. 다만, 추출되는 데이터의 중복을 피하기 위해, 소스 데이터(10)의 각 구간들(11, 12, 13, 14, 15)로부터 부분 데이터를 추출할 때 앞서 추출되지 않은 데이터들을 부분 데이터(11b, 12b, 13b, 14b, 15b)로 추출하는 것만이 상이하다. 이는 각 구간의 앞에서부터 순차적으로 부분 데이터를 추출하되, 추출 횟수가 증가할 때마다 그 시작점을 시프트(shift)하는 방식을 통해 쉽게 달성할 수 있다.
예를 들어, 제2 데이터의 1회 추출 시에는 각 구간의 맨 앞에서부터 순차적으로 n/k*r개의 데이터를 부분 데이터(11a, 12a, 13a, 14a, 15a)로서 추출하고, 제2 데이터의 2회 추출 시에는 추출되는 시작점을 n/k*r만큼 시프트하여 (n/k*r+1)번째 데이터부터 순차적으로 n/k*r개의 데이터를 부분 데이터(11b, 12b, 13b, 14b, 15b)로서 추출하도록 할 수 있다.
이러한 방법으로 추출된 2번째 제2 데이터(22) 역시 n*r개의 데이터를 포함하게 되고, 이를 n개의 데이터로 축소하기 위해 도 6에서와 동일한 방법으로 다운사이징이 수행되어 2번째 제3 데이터(32)가 추출된다. 2번째 제3 데이터(32)가 추출되면, 앞서 추출된 1번째 제3 데이터(31)에 2번째 제3 데이터(32)가 누적되어 제1 데이터를 구성하게 된다.
다시 도 4로 돌아가서, S212 단계에서 제1 데이터가 획득되면 S213 단계로 진행한다. S213 단계에서, 제1 데이터에 포함된 개별 데이터들의 데이터 크기의 분산 값(Variance)이 산출된다. 예를 들어, 제1 데이터에 100개의 개별 데이터가 포함된 경우, 100개의 개별 데이터에 대해 각각 그 데이터 크기가 확인되고 상기 확인된 100개의 데이터 크기에 대해 분산 값이 산출된다.
S214 단계에서, 산출된 분산 값이 제1 임계 값보다 작은지 판단한다. 여기서, 제1 임계 값은 미리 결정된 값으로 소스 데이터가 속하는 도메인(Domain)에 따라 상이하게 결정되는 값일 수 있다. 예를 들어, 소스 데이터가 SNS 도메인에 속하는 데이터인 경우, 제1 임계 값은 v1으로 결정되고, 소스 데이터가 자율주행 데이터 도메인에 속하는 데이터인 경우, 제1 임계 값은 v2로 결정될 수 있다.
분산 값이 제1 임계 값 이상이면, 이는 제1 데이터가 충분히 고르게 샘플링되지 않았다는 의미이므로, S212 단계, 정확하게는 도 5의 S212b 단계로 되돌아가 제2 데이터 및 제3 데이터 추출을 반복하게 된다. 반면에, 분산 값이 제1 임계 값보다 작으면 본 실시예는 S215 단계로 진행하여, 앞서 획득된 제1 데이터를 최종적인 샘플링 데이터로서 결정, 추출하게 된다.
S215 단계가 완료되면, 본 실시예는 도 3으로 돌아가 S220 단계가 수행된다.
S220 단계에서, 앞서 추출된 샘플링 데이터의 평균 크기에 기초하여 파티셔닝을 위한 파티션 카운트(Partition Count)가 결정된다. 이때, 파티션 카운트는 소스 데이터가 수신되는 네트워크의 네트워크 허용량, 및 파티셔닝을 수행하는 컴퓨팅 장치의 리소스 상태에 따라 산출되는 변동 지수(IRV, Idle Resource Variable)에 더 기초하여 결정될 수 있다.
이러한 파티션 카운트의 산출식은 아래 수학식 1로 표현될 수 있다.
Figure pat00001
여기서, U는 소스 데이터가 수신되는 네트워크의 네트워크 허용량이고,
MRRS는 샘플링 데이터의 평균 크기로서 샘플링 데이터에 포함된 개별 데이터들의 데이터 크기의 평균 값을 바이트(Byte) 단위로 환산한 값이고,
FS는 소스 데이터를 읽어들이는 페치 크기(Fetch size)이고,
w는 소스 데이터가 속하는 도메인에 따라 부여되는 소정의 가중치이고,
IRVcpu는 파티셔닝을 수행하는 컴퓨팅 장치의 CPU 상태에 따라 산출된 CPU 변동 지수이고,
IRVmem은 파티셔닝을 수행하는 컴퓨팅 장치의 메모리 상태에 따라 산출된 메모리 변동 지수이고,
정수화(x)는 x의 값에 따라 상응하는 정수를 출력하는 함수로서, 예를 들어 x의 정수 부분만을 출력 값으로 출력하는 함수일 수 있고,
Min(a, b)는 a와 b 값 중 더 작은 값을 출력하는 함수이다.
일 실시예로서, 상기 네트워크 허용량(U)은 소스 데이터가 수신되는 네트워크의 대역폭과 파티셔닝 장치에 할당된 가용비율에 의존하여 결정되는 값으로서 바이트(byte) 단위로 환산된 값일 수 있다. 예를 들어, 상기 네트워크의 대역폭이 100Mbps이고 파티셔닝 장치에 할당된 가용비율이 20%이면, 네트워크 허용량은 이 둘을 곱한 20Mbps가 되고 이를 바이트 단위로 환산한 값이 최종적으로 수학식 1에 사용된 네트워크 허용량(U)이 된다.
컴퓨팅 장치의 리소스 상태에 따라 산출되는 변동 지수(IRV)는 아래 수학식 2에 따라 산출될 수 있다.
Figure pat00002
여기서, P는 IRV의 변동 범위를 제한하기 위해 설정되는 미리 결정된 변동 허용량이고,
x는 파티셔닝을 수행하는 컴퓨팅 장치의 리소스 상태를 나타내는 0에서 100 사이의 값으로 현재 리소스 사용량이 0이면 x는 0이 되고 현재 리소스 사용량이 최대이면 x는 100이 된다.
a는 소스 데이터가 속하는 도메인에 따라 부여되는 소정의 가중치이다.
한편, 여기서, x에 어떤 리소스의 사용량을 입력하는지에 따라 상기 IRV가 의미하는 값은 달라진다. 예를 들어, 수학식 2의 x에 CPU 사용량을 입력하면 수학식 2의 IRV는 IRVcpu로서 CPU 변동 지수를 의미하고, 그와 달리 수학식 2의 x에 메모리 사용량을 입력하면 수학식 2의 IRV는 IRVmem으로서 메모리 변동 지수를 의미하게 된다.
상기한 수학식 1 및 수학식 2를 이용하면 파티션 카운트가 최종적으로 결정될 수 있고, S230 단계 이후부터는 파티션 키를 결정하는 방법이 설명된다.
S230 단계에서, 소스 데이터의 복수의 항목 중에서 파티션 키 선택을 위한 후보 항목이 결정된다. 이에 대한 구체적인 설명을 위해 도 8을 참조한다.
도 8을 참조하면, S231 단계에서 소스 데이터의 복수의 항목 중 제1 항목에 대해 후보 적합도가 산출된다. 후보 적합도는 아래 수학식 3에 따라 산출될 수 있다.
Figure pat00003
여기서, I는 소스 데이터에 대해 제1 항목이 인덱스 키로서 사용되었을 경우에는 전체 인덱스 키의 개수의 역수를 그 값으로 갖고, 그렇지 않은 경우에는 0을 그 값으로 갖는 변수이다. 인덱스 키는 소스 데이터의 인덱스로서 참조되는 항목을 의미하고, 하나의 소스 데이터에 대해 복수의 인덱스 키가 존재할 수 있다. 예를 들어, 소스 데이터에 대해 3개의 인덱스 키가 존재하고 그 중 하나가 제1 항목이라면, 제1 항목에 대한 상기 수학식 1의 I 값은 1/3이 된다.
상기 P는 소스 데이터에 대해 제1 항목이 파티션 키로서 사용되었을 경우에는 1을 그 값으로 갖고, 그렇지 않은 경우에는 0을 그 값으로 갖는 변수이고,
w1 및 w2는 각각 I 및 P에 대해 부여되는 소정의 가중치 값이고,
CTC는 아래 수학식 4에 따라 산출되는 값이다.
Figure pat00004
여기서, Index count는 소스 데이터에 대해 제1 항목이 인덱스 키로서 사용된 횟수이고,
Partition count는 소스 데이터에 대해 제1 항목이 파티션 키로서 사용된 횟수이고,
Primary count는 소스 데이터에 대해 제1 항목이 프라이머리 키로서 사용된 횟수이고,
w1 및 w2는 각각 Index count, Partition count에 대해 부여되는 소정의 가중치 값으로 수학식 3의 w1 및 w2와 동일한 값이고,
w3은 Primary count에 대해 부여되는 소정의 가중치 값이다.
소스 데이터를 수신할 때 소스 데이터의 메타 데이터를 함께 수신하게 되는 데, 상기 메타 데이터를 조회하면 상기 Index count, Partition count 및 Primary count를 확인할 수 있다.
상기 수학식 3 및 수학식 4를 이용하면 제1 항목에 대한 후보 적합도가 산출될 수 있다.
S232 단계에서, 산출된 후보 적합도가 임계 값 이상인지 판단된다. 후보 적합도가 임계 값 이상이면, 본 실시예는 S233 단계로 진행하여 제1 항목을 후보 항목으로 결정한다. 반면에, 후보 적합도가 임계 값 미만이면, 본 실시예는 S234 단계로 진행하여 제1 항목을 후보 항목에서 배제한다.
여기서는, 설명의 간명화를 위해 제1 항목에 대해 후보 항목 여부를 결정하는 방법만을 설명하였지만, 제1 항목 외에 다른 복수의 항목에 대해서도 동일한 방법으로 후보 항목 여부를 결정할 수 있다.
다시 도 3으로 돌아가서, S240 단계에서, 결정된 후보 항목을 파티션 키로 하여 사전 파티셔닝이 수행된다. 사전 파티셔닝은 해당 후보 항목이 파티션 키로 적합한지 여부를 판단하기 위해 미리 파티셔닝하는 단계로서, 이를 통해 후보 항목을 파티션 키로 했을 때의 파티셔닝 품질을 미리 예상해 볼 수 있다. 이에 대한 구체적인 설명을 위해, 도 9 내지 도 12를 참조한다.
사전 파티셔닝을 위해 먼저 후보 항목의 유형이 구분되어야 한다. 후보 항목은 연속형과 이산형으로 구분될 수 있다. 키나 몸무게와 같이 그 값이 연속적인 실수 값을 갖는 경우 그러한 후보 항목은 연속형으로 분류된다. 반면에, 국가, 지역, 성별과 같이 그 값이 이산적인 특정 값을 갖는 경우 그러한 후보 항목은 이산형으로 분류된다.
본 실시예에서는, 후보 항목의 유형을 자동분류하기 위해 아래 수학식 5로 표현되는 정보량 지수(E)를 이용한다.
Figure pat00005
여기서, Distinct는 후보 항목의 고유 값 개수(Unique Value Count)이고,
NET는 후보 항목의 값들의 전체 개수이다.
예를 들어, 후보 항목의 값들이 1, 1, 2, 3, 3, 4, 4, 5 이면, 총 7개의 값을 포함하고 있으므로 NET는 7이 되고, 그 중 고유한 값은 1, 2, 3, 4, 5이므로 Distinct는 5가 된다.
후보 항목에 대해 정보량 지수가 산출되면, 해당 정보량 지수와 임계 값을 비교하여 정보량 지수(E)가 임계 값을 초과하면 이산형으로 그렇지 않으면 연속형으로 해당 후보 항목을 구분할 수 있다. 이에 대해 도 9를 참조하여 부연 설명한다.
도 9는 수학식 5에 따른 변동량 지수 그래프(S)가 도시된다. 이때, X축의 X0 값에 대응되는 E0를 임계 값이라고 가정하면, 수학식 5에 따라 산출된 변동량 지수(E)가 E0을 초과하는 경우(Q1) 해당 후보 영역은 이산형으로 분류된다. 반면에, 산출된 변동량 지수(E)가 E0 미만인 경우(Q1) 해당 후보 영역은 연속형으로 분류된다.
후보 항목의 유형이 결정되면 그에 따라 사전 파티셔닝이 수행된다.
도 11은 후보 항목이 연속형 일 때, 사전 파티셔닝을 수행하는 방법을 설명하는 도면이다. 이하, 도면을 참조하여 설명한다.
먼저, 후보 항목의 데이터들이 그 값의 크기에 따라 순차적으로 정렬된다. 즉, 가장 작은 값을 갖는 데이터를 min으로 가장 큰 값을 갖는 데이터를 max로 하여 후보 항목의 전체 데이터(N0)가 순차 정렬된다(a).
그리고, 정렬된 데이터(N0)를 소정의 비율로 분할한다. 여기서는 분할 비율을 m:1-m으로 예시한다. 이에 의해 정렬된 데이터(N0)는 N1과 N2의 두 구간으로 분할된다(b).
그리고, 분할된 구간들(N1, N2) 중 데이터 개수가 가장 많은 구간을 동일한 비율로 다시 분할한다. 여기서는, N2가 데이터가 개수가 가장 많은 것으로 가정한다. 이에 의해, N2는 N3과 N4의 두 구간으로 분할된다(c).
그리고, 분할된 구간들(N1, N3, N4) 중 데이터 개수가 가장 많은 구간을 동일한 비율로 다시 분할한다. 여기서는, N4가 데이터가 개수가 가장 많은 것으로 가정한다. 이에 의해, N4는 N5과 N6의 두 구간으로 분할된다(d).
이러한 방법을 반복하여, 전체 데이터가 미리 결정된 수 이상의 구간으로 분할되면, 분할된 구간들(D1 내지 D14)을 미리 결정된 수의 파티션들로 그룹핑한다. 상기 미리 결정된 수는 앞서 S220 단계에서 결정했던 파티션 카운트일 수 있다. 이때, 분할된 구간들(D1 내지 D14)는 각 파티션의 데이터 개수가 최대한 균등해지도록 미리 결정된 수의 파티션(Partition-1, Partition-2, Partition-3, Partition-4)으로 그룹핑 된다.
분할된 복수의 구간을 각 그룹의 데이터 개수가 최대한 균등해지도록 소정의 그룹으로 그룹핑하는 방법은, 군집화 알고리즘이라는 이름으로 당해 기술분야에 널리 알려져 있으므로 여기서는 그에 대한 자세한 설명을 생략한다.
미리 결정된 수의 파티션(Partition-1, Partition-2, Partition-3, Partition-4)으로 그룹핑이 완료되면, 각 파티션 별 데이터 개수들을 확인하여 그 분산 값을 산출한다. 데이터 개수들의 분산 값이 미리 결정된 임계 값을 초과하면 분할된 구간들(D1 내지 D4) 중 데이터 개수가 가장 많은 구간을 동일한 비율(즉, m:1-m)로 다시 분할하고, 이를 미리 결정된 수의 파티션(Partition-1, Partition-2, Partition-3, Partition-4)으로 다시 그룹핑 한 후, 각 파티션 별 데이터 개수들을 확인하여 그 분산 값을 산출한다. 그리고, 상기 분산 값이 미리 결정된 임계 값 이하가 될 때가지 상기 과정을 반복하게 된다. 다만, 이러한 반복 계산이 너무 많이 수행되는 것을 방지하기 위해, 상기 과정을 설정된 횟수만큼 수행하여도 여전히 분산 값이 임계 값을 초과한다면, 해당 후보 항목은 파티션 키로 적합하지 않은 것으로 보고 후보 항목에서 제외한다.
도 11은 후보 항목이 이산형 일 때, 사전 파티셔닝을 수행하는 방법을 설명하는 도면이다.
복수의 이산 값을 갖는 데이터들을 복수의 그룹으로 그룹핑하는 방법은, 마찬가지로 군집화 알고리즘이라는 이름으로 당해 기술분야에 널리 알려져 있다. 따라서, 여기서는 그 방법에 대한 구체적인 설명은 생략한다.
후보 항목이 이산형인 경우, 상기 군집화 알고리즘에 의해 각 파티션에 포함된 데이터 개수가 최대한 균등해지도록 미리 결정된 수의 파티션(Partition-1, Partition-2, Partition-3, Partition-4)으로 그룹핑 된다. 가령, 도 11에 도시된 바와 같이, 제1 파티션(Partition-1)에는 그 값이 1, 2, 3, 4, 또는 5인 데이터들이, 제2 파티션(Partition-2)에는 그 값이 6, 7, 8, 9, 10, 또는 11인 데이터들이, 제3 파티션(Partition-3)에는 그 값이 12, 13, 14, 15, 16, 또는 17인 데이터들이, 제4 파티션(Partition-1)에는 그 값이 18, 19, 20, 21, 22, 23, 또는 24인 데이터들이 각각 그룹핑 될 수 있다.
도 12는 연속형 후보 항목과 이산형 후보 항목을 동시에 파티션 키로 하여 사전 파티셔닝하는 혼합형 사전 파티셔닝 방법을 설명하기 위한 도면이다. 데이터를 파티셔닝 할 때, 어느 한 항목만을 파티션 키로 하여 파티셔닝 할 수도 있지만, 반대로 복수의 항목을 동시에 파티션 키로 하여 파티셔닝 할 수도 있다.
도 10 및 도 11의 그룹핑 방법과 마찬가지로, 복수의 항목을 기준으로 복수의 데이터를 그룹핑하는 방법은, 군집화 알고리즘이라는 이름으로 당해 기술분야에 널리 알려져 있다. 따라서, 여기서는 그 방법에 대한 구체적인 설명은 생략한다.
도 10에서는, 군집화 알고리즘에 따라 연속형 항목과 이산형 항목을 동시에 기준 항목으로 하여 그룹핑을 한 예가 도시된다. 도 10에 참조하면, 복수의 데이터들이 각 파티션에 포함된 데이터 개수가 최대한 균등해지도록 미리 결정된 수의 파티션(Partition-1, Partition-2, Partition-3, Partition-4)으로 그룹핑 된 것을 볼 수 있다.
다시 도 3으로 돌아가서, S250 단계에서 사전 파티셔닝 된 복수의 파티션들에 기초하여 후보 항목의 파티셔닝 적합도가 산출된다.
이때, 상기 파티셔닝 적합도는 아래 수학식 6에 따라 산출될 수 있다.
Figure pat00006
여기서, wa는 미리 결정된 가중치로서 후보 항목에 대한 사전 파티셔닝이 수행된 유형에 따라 상이한 값이 할당될 수 있다. 예를 들어, 후보 항목에 대해 도 10과 같이 연속형으로 사전 파티셔닝이 된 경우, 또는 도 11과 같이 이산형으로 사전 파티셔닝이 된 경우, 또는 도 12와 같이 혼합형으로 사전 파티셔닝이 된 경우 각각 다른 값이 wa에 할당될 수 있다.
Execution Cost는 복수의 파티션들을 병렬처리 하는 경우의 실행 계획 코스트(Execution Plan Cost)이고,
CI는 후보 항목의 사전 파티셔닝에 따른 데이터 분포 지수로서, CI는 아래 수학식 7에 따라 산출될 수 있다.
Figure pat00007
여기서, DV는 사전 파티셔닝에 따라 결정된 각 파티션 별 데이터 개수들의 분산 값으로, 예를 들어, 도 10, 도 11, 또는 도 12에서 파티션들(Partition-1, Partition-2, Partition-3, Partition-4) 각각에 포함된 데이터 개수들의 분산 값을 의미한다.
Rate(Null)은 해당 후보 항목에 포함된 널(Null) 데이터의 빈도 값으로, 해당 후보 항목의 널 데이터 개수를 해당 후보 항목의 전체 데이터 개수로 나눈 값이다.
이상에서 설명한 방법에 따르면, 후보 항목에 대한 파티셔닝 적합도가 산출될 수 있다.
다시 도 3으로 돌아가서, S260 단계에서, 산출된 파티셔닝 적합도에 기초하여 후보 항목이 파티션 키로 추천된다. 이때, 파티셔닝 적합도가 높은 후보 항목일수록 우선적으로 파티션 키로 추천될 수 있다. 일 실시예로서, 파티셔닝 적합도에 대한 임계 값(h)을 설정하여, 파티셔닝 적합도가 h 이상인 후보 항목만, 또는 파티셔닝 적합도의 순위가 h 이상인 후보 항목만, 또는 파티셔닝 적합도가 전체 후보 항목 중 상위 h% 이상인 후보 항목만 파티션 키로 추천되도록 할 수도 있다.
S270 단계에서, 사용자는 파티션 키로 추천된 후보 항목을 보고 그에 대한 사용자 선택을 입력할 수 있다. 이 경우, 상기 사용자 선택에 따라 선택된 후보 항목이 파티션 키로 결정된다.
지금까지 설명한 데이터 파티셔닝 방법에 따르면, 소스 데이터의 파티셔닝에 필요한 최적의 파티션 카운트 및 파티션 키를 스스로 결정할 수 있는 데이터 파티셔닝 방법이 제공된다. 그에 따라, 파티션 카운트 및 파티션 키를 찾는데 소요되는 사용자의 시간과 노력을 절감할 수 있으며, 소스 데이터의 데이터 분포 특성을 통계적으로 분석하여 최적의 파티션 카운트 및 파티션 키를 찾음으로써 특정 파티션으로의 데이터 쏠림 현상을 방지하고 전체적인 컴퓨팅 자원을 효율적으로 활용할 수 있게 된다.
이하에서는, 도 13을 참조하여 본 발명의 다양한 실시예들이 구현될 수 있는 예시적인 컴퓨팅 장치(500)에 대하여 설명하도록 한다. 예를 들어, 도 1의 영상 분석 시스템은 도 13의 컴퓨팅 장치(500)로 구현될 수 있다.
도 13은 컴퓨팅 장치(500)를 나타내는 예시적인 하드웨어 구성도이다.
도 13에 도시된 바와 같이, 컴퓨팅 장치(500)는 하나 이상의 프로세서(510), 버스(550), 통신 인터페이스(570), 프로세서(510)에 의하여 수행되는 컴퓨터 프로그램(591)을 로드(load)하는 메모리(530)와, 컴퓨터 프로그램(591)를 저장하는 스토리지(590)를 포함할 수 있다. 다만, 도 13에는 본 발명의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 13에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(510)는 컴퓨팅 장치(500)의 각 구성의 전반적인 동작을 제어한다. 프로세서(510)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서 중 적어도 하나를 포함하여 구성될 수 있다. 또한, 프로세서(510)는 본 발명의 다양한 실시예들에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(500)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(530)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(530)는 본 발명의 다양한 실시예들에 따른 방법/동작들을 실행하기 위하여 스토리지(590)로부터 하나 이상의 프로그램(591)을 로드(load) 할 수 있다. 메모리(530)의 예시는 RAM이 될 수 있으나, 이에 한정되는 것은 아니다.
버스(550)는 컴퓨팅 장치(500)의 구성 요소 간 통신 기능을 제공한다. 버스(550)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(570)는 컴퓨팅 장치(500)의 유무선 인터넷 통신을 지원한다. 통신 인터페이스(570)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(570)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(590)는 하나 이상의 컴퓨터 프로그램(591)을 비임시적으로 저장할 수 있다. 스토리지(590)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(591)은 본 발명의 다양한 실시예들에 따른 방법/동작들이 구현된 하나 이상의 인스트럭션들(Instructions)을 포함할 수 있다. 예를 들어, 컴퓨터 프로그램(591)은 소스 데이터를 수신하는 동작, 상기 소스 데이터의 데이터 분포 특성을 분석하고 상기 분석 결과에 기초하여 상기 소스 데이터의 파티션 키(Partition Key)를 결정하는 동작, 및 상기 결정된 파티션 키를 이용하여 상기 소스 데이터를 파티셔닝하는 동작을 수행하기 위한 인스트럭션들을 포함할 수 있다.
컴퓨터 프로그램(591)이 메모리(530)에 로드 되면, 프로세서(510)는 상기 하나 이상의 인스트럭션들을 실행시킴으로써 본 발명의 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다.
지금까지 설명된 본 발명의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 발명이 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (18)

  1. 컴퓨팅 장치에 의해 수행되는 데이터 파티셔닝(Partitioning) 방법에 있어서,
    소스 데이터를 수신하는 단계;
    상기 소스 데이터의 데이터 분포 특성을 분석하고, 상기 분석 결과에 기초하여 상기 소스 데이터의 파티션 키(Partition Key)를 결정하는 단계; 및
    상기 결정된 파티션 키를 이용하여, 상기 소스 데이터를 파티셔닝하는 단계를 포함하는,
    데이터 파티셔닝 방법.
  2. 제1 항에 있어서,
    상기 파티션 키를 결정하는 단계는,
    상기 소스 데이터로부터 샘플링 데이터를 추출하는 단계; 및
    상기 샘플링 데이터의 평균 크기에 기초하여 상기 파티셔닝을 위한 파티션 카운트(Partition Count)를 결정하는 단계를 포함하는,
    데이터 파티셔닝 방법.
  3. 제2 항에 있어서,
    상기 샘플링 데이터를 추출하는 단계는,
    상기 소스 데이터를 복수의 구간으로 구분하고, 상기 복수의 구간에 걸쳐 제1 데이터를 획득하는 단계;
    상기 제1 데이터에 포함된 개별 데이터들의 크기의 분산 값을 산출하는 단계; 및
    상기 분산 값이 임계 값보다 작으면, 상기 제1 데이터를 상기 샘플링 데이터로서 추출하는 단계를 포함하는,
    데이터 파티셔닝 방법.
  4. 제3 항에 있어서,
    상기 제1 데이터를 획득하는 단계는,
    상기 복수의 구간으로부터 제2 데이터를 추출하는 단계;
    상기 제2 데이터를 다운사이징(Downsizing)하여 제3 데이터를 획득하는 단계; 및
    상기 제3 데이터를 누적하여 상기 제1 데이터를 획득하는 단계를 포함하는,
    데이터 파티셔닝 방법.
  5. 제4 항에 있어서,
    상기 제3 데이터는 n개의 개별 데이터로 구성되고,
    상기 n은,
    상기 소스 데이터의 미리 결정된 신뢰구간을 기초로 산출된 샘플 카운트(Sample Count) 값인,
    데이터 파티셔닝 방법.
  6. 제2 항에 있어서,
    상기 파티션 카운트는,
    상기 소스 데이터가 수신되는 네트워크의 네트워크 허용량에 더 기초하여 결정되는,
    데이터 파티셔닝 방법.
  7. 제2 항에 있어서,
    상기 파티션 카운트는,
    상기 컴퓨팅 장치의 리소스 상태에 기초하여 산출되는 변동 지수(IRV, Idle Resource Variable)에 더 기초하여 결정되는,
    데이터 파티셔닝 방법.
  8. 제1 항에 있어서,
    상기 파티션 키를 결정하는 단계는,
    상기 소스 데이터의 후보 항목을 파티션 키로 하여 상기 소스 데이터를 사전 파티셔닝하는 단계; 및
    상기 사전 파티셔닝 된 복수의 파티션들에 기초하여 상기 후보 항목의 파티셔닝 적합도를 산출하는 단계를 포함하는,
    데이터 파티셔닝 방법.
  9. 제8 항에 있어서,
    상기 파티셔닝 적합도는,
    상기 복수의 파티션들간 데이터 분포 정도를 나타내는 데이터 분포 지수에 기초하여 산출되는,
    데이터 파티셔닝 방법.
  10. 제9 항에 있어서,
    상기 데이터 분포 지수는,
    상기 복수의 파티션 각각의 데이터 개수들의 분산 값에 기초하여 산출되는,
    데이터 파티셔닝 방법.
  11. 제9 항에 있어서,
    상기 데이터 분포 지수는,
    상기 후보 항목의 널(Null) 빈도 값에 기초하여 산출되는,
    데이터 파티셔닝 방법.
  12. 제9 항에 있어서,
    상기 파티셔닝 적합도는,
    상기 복수의 파티션들을 병렬처리 하는 경우의 실행 계획 코스트(Execution Plan Cost)에 더 기초하여 산출되는,
    데이터 파티셔닝 방법.
  13. 제8 항에 있어서,
    상기 소스 데이터의 복수의 항목 중에서 상기 후보 항목을 결정하는 단계를 더 포함하고,
    상기 후보 항목을 결정하는 단계는,
    상기 복수의 항목 중 제1 항목에 대해 후보 적합도를 산출하는 단계; 및
    상기 산출된 후보 적합도가 임계 값 이상이면, 상기 제1 항목을 상기 후보 항목으로 결정하는 단계를 포함하는,
    데이터 파티셔닝 방법.
  14. 제13 항에 있어서,
    상기 후보 적합도는,
    상기 제1 항목이 상기 소스 데이터의 인덱스 키(Index Key)로 사용된 횟수에 기초하여 산출되는,
    데이터 파티셔닝 방법.
  15. 제13 항에 있어서,
    상기 후보 적합도는,
    상기 제1 항목이 상기 소스 데이터의 파티션 키로 사용된 횟수에 기초하여 산출되는,
    데이터 파티셔닝 방법.
  16. 제13 항에 있어서,
    상기 후보 적합도는,
    상기 제1 항목이 상기 소스 데이터의 프라이머리 키(Primary Key)로 사용된 횟수에 기초하여 산출되는,
    데이터 파티셔닝 방법.
  17. 제8 항에 있어서,
    상기 파티션 키를 결정하는 단계는,
    상기 산출된 파티셔닝 적합도에 기초하여 상기 후보 항목을 상기 소스 데이터의 파티션 키로서 추천하는 단계; 및
    상기 추천에 대한 사용자 선택에 따라, 상기 후보 항목을 상기 소스 데이터의 파티션 키로 결정하는 단계를 더 포함하는,
    데이터 파티셔닝 방법.
  18. 프로세서;
    상기 프로세서에 의해 실행되는 컴퓨터 프로그램을 로드(load)하는 메모리; 및
    상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되,
    상기 컴퓨터 프로그램은,
    소스 데이터를 수신하는 동작,
    상기 소스 데이터의 데이터 분포 특성을 분석하고 상기 분석 결과에 기초하여 상기 소스 데이터의 파티션 키(Partition Key)를 결정하는 동작, 및
    상기 결정된 파티션 키를 이용하여 상기 소스 데이터를 파티셔닝하는 동작을 실행하기 위한 인스트럭션들을 포함하는,
    데이터 파티셔닝 장치.

KR1020200188169A 2020-12-30 2020-12-30 데이터 파티셔닝 방법 및 장치 KR20220096049A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200188169A KR20220096049A (ko) 2020-12-30 2020-12-30 데이터 파티셔닝 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200188169A KR20220096049A (ko) 2020-12-30 2020-12-30 데이터 파티셔닝 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220096049A true KR20220096049A (ko) 2022-07-07

Family

ID=82397871

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200188169A KR20220096049A (ko) 2020-12-30 2020-12-30 데이터 파티셔닝 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20220096049A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102184280B1 (ko) 2015-12-17 2020-11-30 아브 이니티오 테크놀로지 엘엘시 동적 파티셔닝을 이용한 데이터 프로세싱

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102184280B1 (ko) 2015-12-17 2020-11-30 아브 이니티오 테크놀로지 엘엘시 동적 파티셔닝을 이용한 데이터 프로세싱

Similar Documents

Publication Publication Date Title
WO2020108371A1 (en) Partitioning of deep learning inference with dynamic offloading
US11526799B2 (en) Identification and application of hyperparameters for machine learning
CN107292186B (zh) 一种基于随机森林的模型训练方法和装置
CN105446979B (zh) 数据挖掘方法和节点
US11423082B2 (en) Methods and apparatus for subgraph matching in big data analysis
CN105389349B (zh) 词典更新方法及装置
US9705816B2 (en) Method and apparatus for allocating resource reflecting adaptive evaluation in cloud computing for high-throughput computing
US10467547B1 (en) Normalizing text attributes for machine learning models
CN111047563B (zh) 一种应用于医学超声图像的神经网络构建方法
US11403550B2 (en) Classifier
CN107908536B (zh) Cpu-gpu异构环境中对gpu应用的性能评估方法及系统
CN108415845A (zh) Ab测试系统指标置信区间的计算方法、装置和服务器
KR102134472B1 (ko) 유전 알고리즘을 활용한 콘볼루션 뉴럴 네트워크의 최적 구조 탐색 방법
US20180095719A1 (en) Sorted linked list with a midpoint binary tree
US20170046422A1 (en) Data Mining Method and Apparatus
CN111586094A (zh) 一种文件上传方法、装置及计算机设备
CN106610989B (zh) 搜索关键词聚类方法及装置
CN107391257B (zh) 业务所需内存容量的预估方法、装置及服务器
CN111611228B (zh) 一种基于分布式数据库的负载均衡调整方法及装置
KR20210111677A (ko) 뉴럴 네트워크의 클리핑 방법, 뉴럴 네트워크의 컨벌루션 계산 방법 및 그 방법을 수행하기 위한 전자 장치
KR20220096049A (ko) 데이터 파티셔닝 방법 및 장치
CN110807286A (zh) 一种结构网格识别方法
KR102491688B1 (ko) 금융투자상품의 방향성 예측 모델링 방식을 결정하기 위한 전자 장치의 제어 방법
CN108259583B (zh) 一种数据动态迁移方法及装置
CN108170664B (zh) 基于重点关键词的关键词拓展方法和装置