KR101986129B1 - 데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치 - Google Patents

데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치 Download PDF

Info

Publication number
KR101986129B1
KR101986129B1 KR1020190044806A KR20190044806A KR101986129B1 KR 101986129 B1 KR101986129 B1 KR 101986129B1 KR 1020190044806 A KR1020190044806 A KR 1020190044806A KR 20190044806 A KR20190044806 A KR 20190044806A KR 101986129 B1 KR101986129 B1 KR 101986129B1
Authority
KR
South Korea
Prior art keywords
bucket
bits
slots
level
target data
Prior art date
Application number
KR1020190044806A
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 KR1020190044806A priority Critical patent/KR101986129B1/ko
Application granted granted Critical
Publication of KR101986129B1 publication Critical patent/KR101986129B1/ko
Priority to US16/851,350 priority patent/US20200334010A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • 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/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치가 개시된다. 개시되는 일 실시예에 다른 데이터 정렬 방법은, 하나 이상의 프로세서들, 및 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 정렬을 하려고 하는 대상 데이터의 개수를 카운트하는 동작, 대상 데이터의 분포도를 산출하는 동작, 대상 데이터의 개수 및 대상 데이터의 분포도를 기반으로 대상 데이터를 정렬하기 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작, 및 결정된 비트수 및 슬롯 개수에 대응하는 버킷을 생성하고, 버킷에 대상 데이터를 할당하여 정렬하는 동작을 포함한다.

Description

데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치{METHOD AND APPARATUS FOR DATA ARRANGEMENT AND COMPUTIND DEVICE FOR EXECUTING THE THEREOF}
본 발명의 실시예는 데이터 정렬 기술과 관련된다.
컴퓨터 분야에서 중요시되는 문제 가운데 하나로 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 문제이다. 실제 컴퓨터 분야에서 사용하는 데이터의 경우, 숫자의 순서나 어휘의 순서대로 정렬한 다음 사용해야 하는 경우가 거의 항상 발생하는데 이를 얼마나 효율적으로 해결할 수 있느냐가 정렬 문제의 핵심이다.
데이터를 정렬해야 하는 이유는 탐색을 위해서이다. 탐색할 대상 데이터가 정렬되어 있지 않다면 순차 탐색 이외에 다른 알고리즘을 사용할 수 없지만 대상 데이터가 정렬되어 있으면 이진 탐색이라는 강력한 알고리즘을 사용할 수 있다.
이미 정렬된 데이터의 특징은 어떤 값을 임의로 선택했을 때 해당 값의 오른쪽에는 해당 값보다 크거나 같은 값이 있고, 해당 값의 왼쪽에는 해당 값보다 작거나 같은 값이 있다는 것이다. 따라서, 컴퓨터가 어떤 값을 선택했을 때 찾고자 하는 값보다 선택한 값이 작다면 해당 값의 왼쪽에 위치하는 데이터는 볼 필요가 없게 된다. 컴퓨터에서 데이터 정렬을 수행하는 이유 중 가장 큰 이유는 이러한 이진 탐색이 가능한 데이터를 만들기 위해서이다.
데이터 정렬 기법은 여러 가지가 있는데, 그 중 버킷 정렬 기법은 정렬하고자 하는 데이터들이 있을 때, 특정 데이터를 대표하는 버킷들을 생성한 후 각 데이터를 해당 버킷에 넣고, 그 버킷 안에 있는 데이터들만을 나중에 정렬하면 된다. 그러나, 기존의 버킷 정렬 방식은 버킷의 수가 고정되어 있어서 정렬하고자 하는 데이터가 한쪽으로 편중되어 있을 때 성능이 저하되는 문제가 있다.
한국등록특허공보 제10-1153966호(2012.06.08)
개시되는 실시예는 데이터 정렬 성능을 향상시킬 수 있는 데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치를 제공하기 위한 것이다.
개시되는 일 실시예에 따른 데이터 정렬 방법은, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 정렬을 하려고 하는 대상 데이터의 개수를 카운트하는 동작; 상기 대상 데이터의 분포도를 산출하는 동작; 상기 대상 데이터의 개수 및 상기 대상 데이터의 분포도를 기반으로 상기 대상 데이터를 정렬하기 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작; 및 상기 결정된 비트수 및 슬롯 개수에 대응하는 버킷을 생성하고, 상기 버킷에 대상 데이터를 할당하여 정렬하는 동작을 포함한다.
상기 결정하는 동작은, 상기 대상 데이터의 개수가 기 설정된 기준 개수 이상인지를 확인하는 동작; 상기 대상 데이터의 개수가 기 설정된 기준 개수 이상인 경우, 상기 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인지를 확인하는 동작; 및 상기 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인 경우, 기 설정된 제1 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작을 포함할 수 있다.
상기 제1 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은, 제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 크게 하고, 상기 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 작게 설정하는 동작을 포함할 수 있다.
상기 제1 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은, 상기 제1 레벨 보다 하위 레벨의 버킷의 경우, 상기 하위 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 작게 하고, 상기 하위 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 크게 설정하는 동작을 더 포함할 수 있다.
상기 데이터 정렬 방법은, 상기 대상 데이터의 분포도가 기 설정된 기준 분포도 미만인 경우, 기 설정된 제2 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작을 더 포함하고, 상기 제2 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은, 제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 크게 하고, 상기 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 크게 설정하는 동작을 포함할 수 있다.
상기 제2 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은, 상기 제1 레벨 보다 하위 레벨의 버킷의 경우, 상기 하위 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 작게 하고, 상기 하위 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 작게 설정하는 동작을 더 포함할 수 있다.
상기 결정하는 동작은, 상기 대상 데이터의 개수가 기 설정된 기준 개수 이상인지를 확인하는 동작; 상기 대상 데이터의 개수가 기 설정된 기준 개수 미만인 경우, 상기 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인지를 확인하는 동작; 및 상기 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인 경우, 기 설정된 제3 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작을 포함할 수 있다.
상기 제3룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은, 제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 작게 하고, 상기 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 크게 설정하는 동작을 포함할 수 있다.
상기 제3룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은, 상기 제1 레벨 보다 하위 레벨의 버킷의 경우, 상기 하위 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 크게 하고, 상기 하위 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 작게 설정하는 동작을 더 포함할 수 있다.
상기 데이터 정렬 방법은, 상기 대상 데이터의 분포도가 기 설정된 기준 분포도 미만인 경우, 기 설정된 제4 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작을 더 포함하고, 상기 제4 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은, 제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 작게 하고, 상기 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 작게 설정하는 동작을 포함할 수 있다.
상기 제4 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은, 상기 제1 레벨 보다 하위 레벨의 버킷의 경우, 상기 하위 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 크게 하고, 상기 하위 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 크게 설정하는 동작을 더 포함할 수 있다.
상기 버킷을 생성하는 동작은, 상기 결정된 비트수 및 슬롯 개수에 대응하는 제1 레벨의 버킷을 생성하는 동작; 및 상기 대상 데이터 중 기 설정된 최상위 비트의 데이터를 상기 제1 레벨의 버킷에 할당하여 저장하는 동작; 및 상기 제1 레벨의 버킷 중 소정 비트 값에 대응하는 버킷의 슬롯이 채워진 경우, 해당 제1 레벨의 버킷에 대해 상기 결정된 비트수 및 슬롯 개수에 대응하는 제2 레벨의 버킷을 생성하는 동작을 포함할 수 있다.
개시되는 일 실시예에 따른 컴퓨팅 장치는, 하나 이상의 프로세서들; 메모리; 및 하나 이상의 프로그램들을 포함하고, 상기 하나 이상의 프로그램들은 상기 메모리에 저장되고, 상기 하나 이상의 프로세서들에 의해 실행되도록 구성되며, 상기 하나 이상의 프로그램들은, 정렬을 하려고 하는 대상 데이터의 개수를 카운트하기 위한 명령; 상기 대상 데이터의 분포도를 산출하기 위한 명령; 상기 대상 데이터의 개수 및 상기 대상 데이터의 분포도를 기반으로 상기 대상 데이터를 정렬하기 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정하기 위한 명령; 및 상기 결정된 비트수 및 슬롯 개수에 대응하는 버킷을 생성하고, 상기 버킷에 대상 데이터를 할당하여 정렬하기 위한 명령을 포함한다.
개시되는 일 실시예에 따른 데이터 정렬 장치는, 정렬을 하려고 하는 대상 데이터의 개수를 카운트하고, 상기 대상 데이터의 분포도를 산출하며, 상기 대상 데이터의 개수 및 상기 대상 데이터의 분포도에 따라 상기 대상 데이터를 정렬하기 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 결정부; 및 상기 결정된 비트수 및 슬롯 개수에 대응하는 버킷을 생성하고, 상기 버킷에 대상 데이터를 할당하여 정렬하는 버킷 처리부를 포함한다.
개시되는 실시예에 의하면, 대상 데이터의 개수 및 대상 데이터의 분포도에 따라 버킷을 동적으로 생성함으로써, 대상 데이터의 정렬 성능을 향상시킬 수 있게 된다.
도 1은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
도 2 내지 도 5는 본 발명의 일 실시예에 따른 데이터 정렬 방법을 설명하기 위한 도면
도 6은 본 발명의 일 실시예에 따른 버킷의 비트수 및 버킷의 슬롯 개수를 결정하기 위한 방법을 나타낸 흐름도
도 7은 본 발명의 일 실시예에 따른 데이터 정렬 장치의 구성을 나타낸 블록도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되는 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 본 발명의 실시예에 따른 영상 처리를 수행하기 위한 장치일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(102)와 연결될 수도 있다.
도 2 내지 도 5는 본 발명의 일 실시예에 따른 데이터 정렬 방법을 설명하기 위한 도면이다. 전술한 바와 같이, 본 발명의 일 실시예에 따른 데이터 정렬 방법은 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치(12)에서 수행될 수 있다. 이를 위하여, 상기 데이터 정렬 방법은 하나 이상의 컴퓨터 실행 가능 명령어를 포함하는 프로그램 내지 소프트웨어의 형태로 구현되어 상기 메모리상에 저장될 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 정렬 방법에 의해 데이터 정렬을 하고자 하는 대상 데이터를 나타낸 테이블이다. 여기서는 설명의 편의상 대상 데이터가 6비트로 표현되는 것으로 설명하기로 한다.
도 3은 데이터 정렬 초기 상태로, 대상 데이터에 A0, A1, C0, C1이 존재할 때 데이터 정렬 상태를 나타낸 도면이다. 여기서, A0의 6비트 표현은 100000이고, A1의 6비트 표현은 100001이며, C0의 6비트 표현은 110000이고, C1의 6비트 표현은 110001이다.
도 3을 참조하면, 대상 데이터의 최상위 2비트 값을 기반으로 대상 데이터(A0, A1, C0, C1)들을 정렬할 제1 레벨의 버킷(L1)을 생성할 수 있다. 대상 데이터의 최상위 2비트 값은 00, 01, 10, 11이므로, 제1 레벨의 버킷(L1)은 4개가 생성될 수 있다. 여기서, 제1 레벨의 각 버킷(L1)은 2개의 데이터를 저장하도록 2개의 슬롯(S)이 연결될 수 있다. 각 슬롯(S)에는 하나의 데이터가 저장될 수 있다. 이 경우, 대상 데이터 중 A0, A1은 제1 레벨의 버킷(L1) 중 10 값을 가지는 버킷의 슬롯에 각각 저장될 수 있다. 그리고, 대상 데이터 중 C0, C1은 제1 레벨의 버킷(L1) 중 11 값을 가지는 버킷의 슬롯에 각각 저장될 수 있다.
도 4는 대상 데이터에 B0, B1이 추가된 경우 데이터 정렬 상태를 나타낸 도면이다. 여기서, B0의 6비트 표현은 101000이고, B1의 6비트 표현은 101001이다.
도 4를 참조하면, 추가된 데이터(B0, B1)의 최상위 2비트 값은 10인데, 제1 레벨의 버킷(L1) 중 10 값을 가지는 버킷은 슬롯(S)이 다 차있는 상태이므로, 해당 제1 레벨의 버킷에 대해 제2 레벨의 버킷(L2)을 생성할 수 있다.
제2 레벨의 버킷(L2)은 대상 데이터의 최상위 2비트의 하위에 속하는 비트를 정렬하기 위한 버킷일 수 있다. 예를 들어, 대상 데이터가 6비트인 경우, 제1 레벨의 버킷(L1)은 최상위 2비트의 데이터를 정렬하고, 제2 레벨의 버킷(L2)은 중간 2비트의 데이터를 정렬하기 위해 사용될 수 있다. 제2 레벨의 버킷(L2)은 중간 2비트를 표현할 수 있도록 4개의 버킷이 생성될 수 있다. 제2 레벨의 각 버킷(L2)은 2개의 데이터를 저장하도록 2개의 슬롯(S)이 연결될 수 있다.
여기서, 대상 데이터 중 A0(6비트 값 : 100000), A1(6비트 값 : 100001)은 제1 레벨의 버킷(L1) 중 10 값을 가지는 버킷의 제2 레벨의 버킷(L2)에 저장되되, 제2 레벨의 버킷(L2) 중 00 값을 가지는 버킷의 슬롯(S)에 각각 저장될 수 있다. 대상 데이터 중 B0(6비트 값 : 101000), B1(6비트 값 : 101001)은 제1 레벨의 버킷(L1) 중 10 값을 가지는 버킷의 제2 레벨의 버킷(L2)에 저장되되, 제2 레벨의 버킷(L2) 중 10 값을 가지는 버킷의 슬롯(S)에 각각 저장될 수 있다. 대상 데이터 중 C0(6비트 값 : 110000), C1(6비트 값 : 110001)은 제1 레벨의 버킷(L1) 중 11 값을 가지는 버킷의 슬롯(S)에 각각 저장될 수 있다.
도 5는 대상 데이터에 C2, C3이 추가된 경우 데이터 정렬 상태를 나타낸 도면이다. 여기서, C2의 6비트 표현은 110010이고, C3의 6비트 표현은 110011이다.
도 5를 참조하면, 추가된 데이터(C2, C3)의 최상위 2비트 값은 11인데, 제1 레벨의 버킷(L1) 중 11 값을 가지는 버킷은 슬롯(S)이 다 차 있는 상태이므로, 해당 제1 레벨의 버킷에 대해 제2 레벨의 버킷(L2)을 생성할 수 있다.
한편, 추가된 데이터(C2, C3)의 중간 2비트 값은 00인데, 기존 데이터 중 C0와 C1의 중간 비트 값이 00이므로 00값을 가지는 제2 레벨의 버킷(L2)도 슬롯이 다 차게 되는 상태가 된다. 따라서, 00값을 가지는 제2 레벨의 버킷에 대해 제3 레벨의 버킷(L3)을 생성할 수 있다.
제3 레벨의 버킷(L3)은 대상 데이터의 마지막 2비트의 데이터를 정렬하기 위한 버킷일 수 있다. 즉, 대상 데이터가 6비트인 경우, 제1 레벨의 버킷(L1)은 최상위 2비트의 데이터를 정렬하고, 제2 레벨의 버킷(L2)은 중간 2비트의 데이터를 정렬하며, 제3 레벨의 버킷(L3)은 마지막 2비트의 데이터를 정렬하기 위한 것일 수 있다. 제3 레벨의 버킷(L3)은 마지막 2비트를 표현할 수 있도록 4개의 버킷이 생성될 수 있다. 제3 레벨의 각 버킷(L3)은 2개의 데이터를 저장하도록 2개의 슬롯(S)이 연결될 수 있다.
여기서, 대상 데이터 중 C0(6비트 값 : 110000)은 제1 레벨의 버킷(L1) 중 11값을 가지는 버킷의 제2 레벨의 버킷(L2) 중 00값을 가지는 버킷의 제3 레벨의 버킷(L3)에 저장되되, 제3 레벨의 버킷(L3) 중 00값을 가지는 버킷의 슬롯(S)에 저장될 수 있다. 대상 데이터 중 C1(6비트 값 : 110001)은 제1 레벨의 버킷(L1) 중 11값을 가지는 버킷의 제2 레벨의 버킷(L2) 중 00값을 가지는 버킷의 제3 레벨의 버킷(L3)에 저장되되, 제3 레벨의 버킷(L3) 중 01값을 가지는 버킷의 슬롯(S)에 저장될 수 있다.
대상 데이터 중 C2(6비트 값 : 110010)은 제1 레벨의 버킷(L1) 중 11값을 가지는 버킷의 제2 레벨의 버킷(L2) 중 00값을 가지는 버킷의 제3 레벨의 버킷(L3)에 저장되되, 제3 레벨의 버킷(L3) 중 10값을 가지는 버킷의 슬롯(S)에 저장될 수 있다. 대상 데이터 중 C3(6비트 값 : 110011)은 제1 레벨의 버킷(L1) 중 11값을 가지는 버킷의 제2 레벨의 버킷(L2) 중 00값을 가지는 버킷의 제3 레벨의 버킷(L3)에 저장되되, 제3 레벨의 버킷(L3) 중 11값을 가지는 버킷의 슬롯(S)에 저장될 수 있다.
여기서, 비트맵을 활용하면 버킷에서 데이터가 할당된 슬롯과 비어 있는 슬롯을 빠르게 찾을 수 있게 된다. 예를 들어, 버킷에 8개의 슬롯이 있는 경우를 살펴보면, 비트맵을 사용하지 않는 경우에는 버킷의 첫번째 슬롯부터 해당 슬롯이 비어있는지를 순차적으로 확인해야 한다. 반면, 비트맵을 활용하면 8개의 슬롯에서 빈 슬롯이 어떤 슬롯인지 여부를 알기 위해 8 비트의 값을 알기만 하면 되므로 빈 슬롯을 찾는데 걸리는 시간을 단축할 수 있게 된다.
개시되는 실시예에서는 정렬해야 할 데이터의 수에 따라 버킷이 여러 레벨의 단계로 구성될 수 있다. 여기서, 버킷의 레벨은 대상 데이터의 상위 비트부터 하위 비트의 순서로 분류하도록 단계적으로 구분될 수 있다. 또한, 정렬해야 할 데이터의 수에 따라 버킷의 레벨 수와 버킷의 크기가 가변적으로 결정될 수 있다. 예시적인 실시예에서, 대상 데이터(즉, 정렬해야 할 데이터)의 수 및 대상 데이터의 분포도에 따라 각 레벨의 버킷의 비트수 및 버킷의 슬롯 개수를 결정할 수 있다.
도 6은 본 발명의 일 실시예에 따른 버킷의 비트수 및 버킷의 슬롯 개수를 결정하기 위한 방법을 나타낸 흐름도이다. 전술한 바와 같이, 본 발명의 일 실시예에 따른 결정 방법은 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치(12)에서 수행될 수 있다. 이를 위하여, 상기 결정 방법은 하나 이상의 컴퓨터 실행 가능 명령어를 포함하는 프로그램 내지 소프트웨어의 형태로 구현되어 상기 메모리상에 저장될 수 있다.
도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다. 또한, 이는 버킷의 비트수 및 버킷의 슬롯 개수를 결정하기 위한 일 실시예일뿐, 이에 한정되는 것은 아니며 그 이외의 다양한 방식을 포함할 수 있다.
도 6을 참조하면, 컴퓨팅 장치(12)는 대상 데이터의 수가 기 설정된 기준 개수 이상인지 여부를 확인한다(S 101).
단계 S 101의 확인 결과, 대상 데이터의 수가 기 설정된 기준 개수 이상인 경우, 컴퓨팅 장치(12)는 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인지 여부를 확인한다(S 103).
여기서, 대상 데이터의 분포도는 대상 데이터의 분산 및 표준 편차를 통해 구할 수 있다. 이때, 모든 대상 데이터를 사용하여 분산 및 표준 편차를 구할 수 있으나, 이에 한정되는 것은 아니며 대상 데이터들 중 일부만을 가지고 분산 및 표준 편차를 구할 수도 있다. 예를 들어, 대상 데이터의 개수가 N개인 경우, N개의 데이터 중 일부(예를 들어, 10%) 데이터만을 사용하여 분산 및 표준 편차를 구할 수 있다. 또한, 대상 데이터의 분포도는 대상 데이터들 중 최소값과 최대값을 통해 구할 수도 있다.
단계 S 103의 확인 결과, 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인 경우, 컴퓨팅 장치(12)는 기 설정된 제1 룰(Rule)에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정한다(S 105).
여기서, 기 설정된 제1 룰은 제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수보다 크게 하고, 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수보다 작게 설정한 것일 수 있다. 그리고, 제1 레벨 보다 하위 레벨의 버킷의 경우, 비트수는 기 설정된 기준 비트수보다 작게 하고, 슬롯 개수는 기 설정된 기준 슬롯 개수보다 크게 설정한 것일 수 있다.
즉, 대상 데이터의 개수가 기 설정된 기준 개수 이상이고, 대상 데이터의 분포도가 기 설정된 기준 분포도 이상이면, 많은 데이터가 넓게 분포되어 있는 경우이므로, 제1 룰과 같이하여 버킷의 비트수 및 버킷의 슬롯 개수를 결정함으로써, 대상 데이터가 주로 제1 레벨의 버킷이 아닌 제2 레벨 또는 그 보다 하위 레벨의 버킷에 분류되도록 할 수 있다.
단계 S 103의 확인 결과, 대상 데이터의 분포도가 기 설정된 기준 분포도 미만인 경우, 컴퓨팅 장치(12)는 기 설정된 제2 룰(Rule)에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정한다(S 107).
여기서, 기 설정된 제2 룰은 제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수보다 크게 하고, 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수보다 크게 설정한 것일 수 있다. 그리고, 제1 레벨 보다 하위 레벨의 버킷의 경우, 비트수는 기 설정된 기준 비트수보다 작게 하고, 슬롯 개수는 기 설정된 기준 슬롯 개수보다 작게 설정한 것일 수 있다.
즉, 대상 데이터의 개수가 기 설정된 기준 개수 이상이고, 대상 데이터의 분포도가 기 설정된 기준 분포도 미만이면, 많은 데이터가 특정 범위에 주로 분포되어 있는 경우이므로, 제2 룰과 같이하여 버킷의 비트수 및 버킷의 슬롯 개수를 결정함으로써, 특정 범위에 포함되지 않는 데이터는 제1 레벨의 버킷에 분류되도록 하여 특정 범위에 포함되지 않는 데이터에 대해서는 추가적인 하위 레벨의 버킷이 생성되지 않도록 할 수 있다. 그리고, 특정 범위에 포함되는 데이터는 제2 레벨 또는 그 보다 하위 레벨의 버킷에서 분류되도록 할 수 있다.
단계 S 101의 확인 결과, 대상 데이터의 수가 기 설정된 기준 개수 미만인 경우, 컴퓨팅 장치(12)는 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인지 여부를 확인한다(S 109).
단계 S 109의 확인 결과, 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인 경우, 컴퓨팅 장치(12)는 기 설정된 제3 룰(Rule)에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정한다(S 111).
여기서, 기 설정된 제3 룰은 제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수보다 작게 하고, 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수보다 크게 설정한 것일 수 있다. 그리고, 제1 레벨 보다 하위 레벨의 버킷의 경우, 비트수는 기 설정된 기준 비트수보다 크게 하고, 슬롯 개수는 기 설정된 기준 슬롯 개수보다 작게 설정한 것일 수 있다.
즉, 대상 데이터의 개수가 기 설정된 기준 개수 미만이고, 대상 데이터의 분포도가 기 설정된 기준 분포도 이상이면, 적은 데이터가 넓게 분포되어 있는 경우이므로, 제3 룰과 같이하여 버킷의 비트수 및 버킷의 슬롯 개수를 결정함으로써, 대상 데이터가 가능하면 제1 레벨의 버킷에서 분류되도록 하고 추가적인 하위 레벨이 생성되지 않도록 할 수 있다.
단계 S 109의 확인 결과, 대상 데이터의 분포도가 기 설정된 기준 분포도 미만인 경우, 컴퓨팅 장치(12)는 기 설정된 제4 룰(Rule)에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정한다(S 113).
여기서, 기 설정된 제4 룰은 제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수보다 작게 하고, 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수보다 작게 설정한 것일 수 있다. 그리고, 제1 레벨 보다 하위 레벨의 버킷의 경우, 비트수는 기 설정된 기준 비트수보다 크게 하고, 슬롯 개수는 기 설정된 기준 슬롯 개수보다 크게 설정한 것일 수 있다.
즉, 대상 데이터의 개수가 기 설정된 기준 개수 미만이고, 대상 데이터의 분포도가 기 설정된 기준 분포도 미만이면, 적은 데이터가 특정 범위에 주로 분포되어 있는 경우이므로, 제4 룰과 같이하여 버킷의 비트수 및 버킷의 슬롯 개수를 결정함으로써, 특정 범위가 아닌 넓은 범위에 분포한 데이터는 제1 레벨의 버킷에 분류되지 않고 추가적인 하위 레벨의 버킷에서 분류되도록 할 수 있다.
도 7은 본 발명의 일 실시예에 따른 데이터 정렬 장치의 구성을 나타낸 블록도이다.
도 7을 참조하면, 데이터 정렬 장치(100)는 결정부(102) 및 버킷 처리부(104)를 포함할 수 있다.
결정부(102)는 입력되는 대상 데이터의 개수를 카운트하고, 입력되는 대상 데이터의 분포도를 산출할 수 있다. 결정부(102)는 입력되는 대상 데이터의 수 및 대상 데이터의 분포도에 따라 대상 데이터의 정렬을 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정할 수 있다.
버킷 처리부(104)는 결정부(102)에서 결정된 바에 따라 각 레벨의 버킷을 생성하고, 대상 데이터를 해당 버킷에 할당하여 정렬할 수 있다. 구체적으로, 버킷 처리부(104)는 결정부(102)에서 결정된 바에 따른 비트수 및 슬롯 개수를 가지는 제1 레벨의 버킷을 생성하고, 대상 데이터 중 일부를 상기 버킷에 할당하여 저장할 수 있다.
버킷 처리부(104)는 제1 레벨의 버킷에 대상 데이터가 다 채워진 경우, 결정부(102)에서 결정된 바에 따라 하위 레벨(예를 들어, 제2 레벨 및 제3 레벨 등)의 버킷을 생성하고, 남은 대상 데이터를 해당 버킷에 할당하여 저장할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10 : 컴퓨팅 환경
12 : 컴퓨팅 장치
14 : 프로세서
16 : 컴퓨터 판독 가능 저장 매체
18 : 통신 버스
20 : 프로그램
22 : 입출력 인터페이스
24 : 입출력 장치
26 : 네트워크 통신 인터페이스
100 : 데이터 정렬 장치
102 : 결정부
104 : 버킷 처리부

Claims (15)

  1. 하나 이상의 프로세서들, 및
    상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서,
    정렬을 하려고 하는 대상 데이터의 개수를 카운트하는 동작;
    상기 대상 데이터의 분포도를 산출하는 동작;
    상기 대상 데이터의 개수 및 상기 대상 데이터의 분포도를 기반으로 상기 대상 데이터를 정렬하기 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작; 및
    상기 결정된 비트수 및 슬롯 개수에 대응하는 버킷을 생성하고, 상기 버킷에 대상 데이터를 할당하여 정렬하는 동작을 포함하는, 데이터 정렬 방법.
  2. 청구항 1에 있어서,
    상기 결정하는 동작은,
    상기 대상 데이터의 개수가 기 설정된 기준 개수 이상인지를 확인하는 동작;
    상기 대상 데이터의 개수가 기 설정된 기준 개수 이상인 경우, 상기 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인지를 확인하는 동작; 및
    상기 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인 경우, 기 설정된 제1 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작을 포함하는, 데이터 정렬 방법.
  3. 청구항 2에 있어서,
    상기 제1 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은,
    제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 크게 하고, 상기 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 작게 설정하는 동작을 포함하는, 데이터 정렬 방법.
  4. 청구항 3에 있어서,
    상기 제1 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은,
    상기 제1 레벨 보다 하위 레벨의 버킷의 경우, 상기 하위 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 작게 하고, 상기 하위 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 크게 설정하는 동작을 더 포함하는, 데이터 정렬 방법.
  5. 청구항 2에 있어서,
    상기 데이터 정렬 방법은,
    상기 대상 데이터의 분포도가 기 설정된 기준 분포도 미만인 경우, 기 설정된 제2 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작을 더 포함하고,
    상기 제2 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은,
    제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 크게 하고, 상기 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 크게 설정하는 동작을 포함하는, 데이터 정렬 방법.
  6. 청구항 5에 있어서,
    상기 제2 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은,
    상기 제1 레벨 보다 하위 레벨의 버킷의 경우, 상기 하위 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 작게 하고, 상기 하위 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 작게 설정하는 동작을 더 포함하는, 데이터 정렬 방법.
  7. 청구항 1에 있어서,
    상기 결정하는 동작은,
    상기 대상 데이터의 개수가 기 설정된 기준 개수 이상인지를 확인하는 동작;
    상기 대상 데이터의 개수가 기 설정된 기준 개수 미만인 경우, 상기 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인지를 확인하는 동작; 및
    상기 대상 데이터의 분포도가 기 설정된 기준 분포도 이상인 경우, 기 설정된 제3 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작을 포함하는, 데이터 정렬 방법.
  8. 청구항 7에 있어서,
    상기 제3룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은,
    제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 작게 하고, 상기 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 크게 설정하는 동작을 포함하는, 데이터 정렬 방법.
  9. 청구항 8에 있어서,
    상기 제3룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은,
    상기 제1 레벨 보다 하위 레벨의 버킷의 경우, 상기 하위 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 크게 하고, 상기 하위 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 작게 설정하는 동작을 더 포함하는, 데이터 정렬 방법.
  10. 청구항 7에 있어서,
    상기 데이터 정렬 방법은,
    상기 대상 데이터의 분포도가 기 설정된 기준 분포도 미만인 경우, 기 설정된 제4 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작을 더 포함하고,
    상기 제4 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은,
    제1 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 작게 하고, 상기 제1 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 작게 설정하는 동작을 포함하는, 데이터 정렬 방법.
  11. 청구항 10에 있어서,
    상기 제4 룰에 의해 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 동작은,
    상기 제1 레벨 보다 하위 레벨의 버킷의 경우, 상기 하위 레벨의 버킷의 비트수를 기 설정된 기준 비트수 보다 크게 하고, 상기 하위 레벨의 버킷의 슬롯 개수를 기 설정된 기준 슬롯 개수 보다 크게 설정하는 동작을 더 포함하는, 데이터 정렬 방법.
  12. 청구항 1에 있어서,
    상기 버킷을 생성하는 동작은,
    상기 결정된 비트수 및 슬롯 개수에 대응하는 제1 레벨의 버킷을 생성하는 동작; 및
    상기 대상 데이터 중 기 설정된 최상위 비트의 데이터를 상기 제1 레벨의 버킷에 할당하여 저장하는 동작; 및
    상기 제1 레벨의 버킷 중 소정 비트 값에 대응하는 버킷의 슬롯이 채워진 경우, 해당 제1 레벨의 버킷에 대해 상기 결정된 비트수 및 슬롯 개수에 대응하는 제2 레벨의 버킷을 생성하는 동작을 포함하는, 데이터 정렬 방법.
  13. 하나 이상의 프로세서들;
    메모리; 및
    하나 이상의 프로그램들을 포함하고,
    상기 하나 이상의 프로그램들은 상기 메모리에 저장되고, 상기 하나 이상의 프로세서들에 의해 실행되도록 구성되며,
    상기 하나 이상의 프로그램들은,
    정렬을 하려고 하는 대상 데이터의 개수를 카운트하기 위한 명령;
    상기 대상 데이터의 분포도를 산출하기 위한 명령;
    상기 대상 데이터의 개수 및 상기 대상 데이터의 분포도를 기반으로 상기 대상 데이터를 정렬하기 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정하기 위한 명령; 및
    상기 결정된 비트수 및 슬롯 개수에 대응하는 버킷을 생성하고, 상기 버킷에 대상 데이터를 할당하여 정렬하기 위한 명령을 포함하는, 컴퓨팅 장치.
  14. 정렬을 하려고 하는 대상 데이터의 개수를 카운트하고, 상기 대상 데이터의 분포도를 산출하며, 상기 대상 데이터의 개수 및 상기 대상 데이터의 분포도에 따라 상기 대상 데이터를 정렬하기 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정하는 결정부; 및
    상기 결정된 비트수 및 슬롯 개수에 대응하는 버킷을 생성하고, 상기 버킷에 대상 데이터를 할당하여 정렬하는 버킷 처리부를 포함하는, 데이터 정렬 장치.
  15. 비일시적 컴퓨터 판독 가능한 저장 매체(non-transitory computer readable storage medium)에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은 하나 이상의 명령어들을 포함하고, 상기 명령어들은 하나 이상의 프로세서들을 갖는 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치로 하여금,
    정렬을 하려고 하는 대상 데이터의 개수를 카운트하도록 하고,
    상기 대상 데이터의 분포도를 산출하도록 하고,
    상기 대상 데이터의 개수 및 상기 대상 데이터의 분포도를 기반으로 상기 대상 데이터를 정렬하기 위한 버킷의 비트수 및 버킷의 슬롯 개수를 결정하도록 하고, 그리고,
    상기 결정된 비트수 및 슬롯 개수에 대응하는 버킷을 생성하고, 상기 버킷에 대상 데이터를 할당하여 정렬하도록 하는, 컴퓨터 프로그램.
KR1020190044806A 2019-04-17 2019-04-17 데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치 KR101986129B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190044806A KR101986129B1 (ko) 2019-04-17 2019-04-17 데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치
US16/851,350 US20200334010A1 (en) 2019-04-17 2020-04-17 Method and apparatus for data alignment and computing device for executing data alignment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190044806A KR101986129B1 (ko) 2019-04-17 2019-04-17 데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR101986129B1 true KR101986129B1 (ko) 2019-06-05

Family

ID=66845433

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190044806A KR101986129B1 (ko) 2019-04-17 2019-04-17 데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치

Country Status (2)

Country Link
US (1) US20200334010A1 (ko)
KR (1) KR101986129B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100013257A (ko) * 2008-07-30 2010-02-09 인터내셔널 비지네스 머신즈 코포레이션 멀티 프로세서 시스템 상에서 데이터 세트를 분할 및 정렬하는 방법 및 장치
KR101153966B1 (ko) 2008-12-22 2012-06-08 전북대학교산학협력단 고차원 데이터의 색인/검색 시스템 및 그 방법
KR20160123913A (ko) * 2015-04-17 2016-10-26 영남대학교 산학협력단 소팅 연산을 적용한 해쉬 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
JP2018206074A (ja) * 2017-06-05 2018-12-27 Kddi株式会社 ヒストグラム生成方法、ヒストグラム生成装置及びヒストグラム生成プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020172290A1 (en) * 2019-02-19 2020-08-27 Marcroft Kyle Mitchell Systems, methods, and devices for the sorting of digital lists
CN114138184A (zh) * 2021-10-29 2022-03-04 苏州浪潮智能科技有限公司 一种数据重删的下刷方法、装置、设备和介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100013257A (ko) * 2008-07-30 2010-02-09 인터내셔널 비지네스 머신즈 코포레이션 멀티 프로세서 시스템 상에서 데이터 세트를 분할 및 정렬하는 방법 및 장치
KR101153966B1 (ko) 2008-12-22 2012-06-08 전북대학교산학협력단 고차원 데이터의 색인/검색 시스템 및 그 방법
KR20160123913A (ko) * 2015-04-17 2016-10-26 영남대학교 산학협력단 소팅 연산을 적용한 해쉬 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
JP2018206074A (ja) * 2017-06-05 2018-12-27 Kddi株式会社 ヒストグラム生成方法、ヒストグラム生成装置及びヒストグラム生成プログラム

Also Published As

Publication number Publication date
US20200334010A1 (en) 2020-10-22

Similar Documents

Publication Publication Date Title
US11163828B2 (en) Building and querying hash tables on processors
CN106294421B (zh) 一种数据写入、读取方法及装置
US11016778B2 (en) Method for vectorizing Heapsort using horizontal aggregation SIMD instructions
US10942772B2 (en) Dispatching jobs for execution in parallel by multiple processors
US20160062751A1 (en) Method and apparatus for optimising computer program code
US10671610B2 (en) Processing window partitioning and ordering for on-line analytical processing (OLAP) functions
CN110362404B (zh) 一种基于sql的资源分配方法、装置和电子设备
CN111597118A (zh) 测试用例生成方法、装置、计算机设备及存储介质
KR101986129B1 (ko) 데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치
CN111694992A (zh) 一种数据处理方法和装置
JP6812826B2 (ja) 格納方法、格納装置及び格納プログラム
KR20220029011A (ko) 마이크로 서비스 식별 장치 및 방법
US9946755B2 (en) Automated hybrid constraint database manager
US20230267005A1 (en) Thread management
US11514351B2 (en) Apparatus and method for optimizing quantum computation
KR20210065750A (ko) 검색 장치 및 방법
US11651235B2 (en) Generating a candidate set of entities from a training set
US8087003B1 (en) System, method, and computer program product for propagating an identified data validation error to a user interface
CN111625695A (zh) 在三元内容可寻址存储器中摊销耗散功率和电流需求
KR102023274B1 (ko) 슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘
US11886468B2 (en) Fingerprint-based data classification
US11663127B2 (en) Method, electronic device and computer program product for managing storage system
US11487542B2 (en) Instruction cache behavior and branch prediction
US11061653B2 (en) Dynamic compiling for conditional statements during execution
US11397591B2 (en) Determining disorder in technological system architectures for computer systems

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant