KR20160100752A - System and method for processing and analysing big data provding efficiently using columnar index data format - Google Patents

System and method for processing and analysing big data provding efficiently using columnar index data format Download PDF

Info

Publication number
KR20160100752A
KR20160100752A KR1020150023663A KR20150023663A KR20160100752A KR 20160100752 A KR20160100752 A KR 20160100752A KR 1020150023663 A KR1020150023663 A KR 1020150023663A KR 20150023663 A KR20150023663 A KR 20150023663A KR 20160100752 A KR20160100752 A KR 20160100752A
Authority
KR
South Korea
Prior art keywords
data
column
dictionary
row
block
Prior art date
Application number
KR1020150023663A
Other languages
Korean (ko)
Other versions
KR101696338B1 (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 KR1020150023663A priority Critical patent/KR101696338B1/en
Priority to US15/044,327 priority patent/US10152502B2/en
Publication of KR20160100752A publication Critical patent/KR20160100752A/en
Application granted granted Critical
Publication of KR101696338B1 publication Critical patent/KR101696338B1/en

Links

Images

Classifications

    • G06F17/30315
    • 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
    • G06F16/221Column-oriented storage; Management thereof
    • 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
    • G06F16/2228Indexing structures
    • 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
    • G06F16/2219Large Object storage; Management thereof
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F17/30318
    • G06F17/30321
    • G06F17/30595
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/157Transformation using dictionaries or tables

Abstract

Disclosed are a system and a method for efficiently processing and analyzing big data by using a columnar index data format. A method for processing big data in a processing system implemented with a computer comprises the steps of: generating a dictionary by arranging pieces of data in a column unit of the big data; classifying the arranged pieces of data as one or more data blocks every dictionary according to sizes of the pieces of data; generating an index including values of pieces of first data of the data blocks according to an order of the data blocks every dictionary; and generating a column identification for each column in a row order of the big data.

Description

컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법{SYSTEM AND METHOD FOR PROCESSING AND ANALYSING BIG DATA PROVDING EFFICIENTLY USING COLUMNAR INDEX DATA FORMAT}[0001] SYSTEM AND METHOD FOR EFFICIENTLY PROCESSING AND ANALYZING BIG DATA BY USING COLUMN-INDEX DATA FORMAT [0002]

본 발명의 실시 예들은 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 기술에 관한 것으로, 빅데이터의 빠른 처리와 분석을 위해 효율적인 컬럼-인덱스 파일 데이터 포맷을 통해 분산 환경에서의 다양한 질의 처리 성능을 높일 수 있는 처리 시스템 및 처리 방법에 관한 것이다.Embodiments of the present invention are directed to techniques for efficiently processing and analyzing big data using a column-index data format, and for efficiently processing and analyzing big data, an efficient column- To a processing system and a processing method capable of improving various query processing performance.

최근 빅데이터에 대한 수집과 저장, 처리, 분석에 대한 수요가 급증하면서 다양한 빅데이터 솔루션들이 오픈 소스나 상업용 제품 형태로 시장에 출현하고 있다. 이러한 빅데이터 솔루션들을 통해 과거의 기술과 인프라로는 다룰 수 없었던 방대한 데이터를 오랜 기간 보관하고 이로부터 가치를 끌어낼 수 있었다는 것에는 누구도 부인할 수 없다. 병렬 프로세스를 이용한 데이터 풀 스캔(Full Scan)을 통해 사용자가 작성한 프로그램을 실행하는 종래기술의 기본 동작 방식은 기업의 다양한 요구 사항을 적용하는데 손색이 없다.Recently, as demand for collection, storage, processing and analysis of Big Data surge, various big data solutions are emerging on the market in the form of open source or commercial products. No one can deny that these big data solutions have kept the vast amount of data that could not be covered by past technologies and infrastructures for a long period of time and derive value from them. The basic operation method of the prior art for executing a user-created program through a data scan scan (full scan) using a parallel process is suitable for various enterprise requirements.

하지만 모든 소프트웨어 시스템에는 트레이드 오프(Trade-Off)가 존재한다. 종래기술의 풀 스캔 방식은 간단한 질의에 대해서도 상당히 많은 디스크와 네트워크 입출력(Input/Output)을 발생시키는 단점이 있다. 다시 말해, 필요한 데이터만 읽어 빠른 처리 시간(Low Latency)을 보장하는 질의에 굉장히 비효율적인 시스템이다. 또한 맵 리듀스(Map Reduce) 작업을 위한 실행 준비 시간이 많이 소요되는 특성 때문에, 종래기술의 방식은 빠른 응답을 위해서는 적합하지 않다. 빅데이터 솔루션 업체들에서는 이를 위해 다음의 두 질문에 대한 연구가 활발히 진행 중에 있다.However, all software systems have trade-offs. The conventional full scan scheme has a disadvantage in that it generates a considerable amount of disk and network input / output even for a simple query. In other words, it is a very inefficient system for querying only the necessary data to ensure fast latency. Also, due to the time-consuming nature of the run-time preparation for Map Reduce operations, the prior art approach is not suitable for fast response. Big data solution providers are actively researching the following two questions.

1. 빠른 응답 시간에 적합한 데이터 포맷은 무엇인가?One. What data formats are appropriate for fast response times?

2. 종래기술의 맵 리듀스를 대체할 효율적인 분산 질의 엔진을 어떻게 만들 것인가?2. How do you create an efficient distributed query engine to replace the prior art mapping?

분산 질의 엔진은 분산 환경에서 SQL(Structured Query Language)과 같은 질의를 효율적으로 처리하기 위한 핵심 엔진인 옵티마이저(Optimizer)를 통해 데이터 포맷의 특성을 고려한 최적의 실행 계획을 수립한다. 따라서 대부분의 분산 질의 엔진 개발 업체들은 질의 처리에 필요한 데이터만 읽어 디스크나 네트워크의 시스템 리소스 사용량을 줄이고 빠른 응답 시간을 보장할 수 있는 컬럼 형식의 데이터 포맷 설계를 진행하였다. 하지만 여전히 일부 풀 스캔 방식의 처리로 인해 기대만큼 빠른 성능을 보여주지 못하는 문제점이 있다.The distributed query engine establishes an optimal execution plan considering characteristics of data format through optimizer which is a core engine for efficiently processing queries such as SQL (Structured Query Language) in a distributed environment. Therefore, most distributed engine developers read only the data needed for query processing, and have implemented a column format data format that can reduce system resource usage on the disk or network and guarantee fast response time. However, there is still a problem in that some pool scanning methods do not perform as fast as expected.

다음은 종래기술의 데이터 포맷의 예다.The following is an example of a data format of the prior art.

1. RC 파일(Record Columnar File)1. RC File (Record Columnar File)

2. ORC 파일(Optimized Record Columnar File)2. An ORC file (Optimized Record Columnar File)

3. 파킷(Parquet)3. Parquet

4. 파워드릴(PowerDrill) 데이터 포맷4. PowerDrill data format

도 1은 종래기술에 있어서, 로우 그룹과 컬럼 파티션의 구성 예를 도시한 도면이다. 위의 종래기술의 데이터 포맷들은 도 1의 표(100)를 통해 나타난 바와 같이, 공통적으로 데이터를 '1) 로우 그룹(Row Group)으로 먼저 나눈 뒤, 2) 컬럼 단위로 나눈다'라는 동일한 방식을 취하고 있다. 이러한 종래기술에서는 동일한 로우 그룹에 속하는 컬럼들을 디스크 상에 인접한 위치에 저장하도록 처리하여 효율적인 로우 재구성(Row Reconstruction)을 한다.1 is a diagram showing a configuration example of a row group and a column partition in the prior art. The data formats of the above-described prior arts are the same as those shown in the table 100 of FIG. 1, in which data is commonly divided into '1) row group (Row Group) and 2) column unit' I am taking. In this conventional technique, the columns belonging to the same row group are stored in the adjacent positions on the disk to perform efficient row reconstruction.

또한, 종래의 데이터 포맷들은 다음과 같은 공통된 목표를 가진다.In addition, conventional data formats have the following common goals.

1. 빠른 데이터 로딩1. Fast data loading

2. 빠른 질의 처리2. Quick query processing

3. 고효율 저장 방식3. High efficiency storage system

4. 다양한 워크로드 패턴에 적합4. Suitable for various workload patterns

빅데이터는 대량의 데이터를 처리해야 하는 작업이므로 프로덕션 환경에서 기본적으로 고속 데이터 로딩이 이루어지지 않는다면 이는 빅데이터 포맷으로 부적격하다. 예를 들어 매일 20TB 가량의 데이터가 유입될 때, 디스크와 네트워크 등의 자원 사용량이 굉장히 높아지는데, 이 때 분석 질의를 수행하기 위한 자원이 부족해 운영에 어려움이 생길 수 있다. 따라서 고성능 데이터 로딩은 필수이며 동시에 질의에 불필요한 로우 그룹/컬럼들은 제외하여 데이터 처리시 빠른 응답 시간을 보장해야 한다. 컬럼 내 데이터가 동일한 특성을 가진다는 점을 이용해 압축률을 높이고 디스크를 효율적으로 사용하여 일부 질의에만 최적화된 형태가 아닌 일반적으로 다양한 질의에 대해서도 빠르게 처리할 수 있도록 위 데이터 포맷들이 설계되었다. Because Big Data is a task that requires a large amount of data to be processed, if the high-speed data loading is not done basically in a production environment, it is inadequate for the big data format. For example, when 20TB of data is imported every day, the resource usage of disk and network becomes very high. In this case, there is a lack of resources to perform the analysis query, which may cause difficulty in operation. Therefore, high-performance data loading is mandatory, while excluding row groups / columns that are not required for querying, it is necessary to guarantee fast response time during data processing. The above data formats are designed so that the data in the columns have the same characteristics, so that the compression rate can be increased and the disk can be efficiently used to quickly process various queries, not only optimized for some queries.

이러한 공통적인 목표를 전제로, RC 파일은 로우 그룹들로 구성하고 각 로우 그룹을 컬럼으로 나눈 뒤, 질의 처리시 불필요한 컬럼은 제외할 수 있도록 설계하였다. 이러한 RC 파일을 기반으로 ORC 파일은 로우 그룹의 최소값, 최대값 등의 통계정보를 추가로 저장해 질의 처리에 사용되지 않는 로우 그룹을 제외해 처리 성능을 향상시켰다. 파킷은 JSON(JavaScript Object Notation)과 같은 중첩 데이터 모델(Nested Data Model)을 지원한다. 파워드릴은 추가로 글로벌/로컬 딕셔너리를 구축해 필드 값을 비트단위 정수로 표현해 데이터의 저장 용량을 줄였으며, 또한 처리 속도를 향상시켰다.Based on this common goal, the RC file is organized into row groups, each row group is divided into columns, and unnecessary columns are excluded in the query processing. Based on this RC file, the ORC file further stores statistical information such as the minimum value and the maximum value of the row group, thereby improving the processing performance excluding the row group which is not used in the query processing. Parquette supports nested data models such as JavaScript Object Notation (JSON). The power drill further builds a global / local dictionary to reduce the storage capacity of the data by expressing the field value as a bit-wise integer and also improves the processing speed.

그러나, 이러한 포맷들이 가지는 공통된 로우 그룹/컬럼 쪼개기 방식은 다음과 같은 단점을 지니고 있다.However, the common row group / column splitting methods of these formats have the following disadvantages.

1. 로우 그룹 단위 필터링의 비효율성1. Inefficiency of row group unit filtering

2. 하나의 컬럼을 읽기 위해서 불필요한 시퀀셜 액세스(Sequential Access)나 램덤 액세스(Random Access)가 자주 발생2. Unnecessary Sequential Access or Random Access frequently occurs to read a column.

로우 그룹의 통계 정보로는 로우 그룹을 정확하게 걸러낼 수 없어 불필요한 로우 그룹들을 읽는 디스크 작업이 발생하며, 효율성 향상을 위해 글로벌 딕셔너리를 통한 필터링을 적용하면 이를 관리하기 위한 큰 비용이 발생한다. 글로벌 딕셔너리 방식은 컬럼 내 유니크 값의 개수가 전체 컬럼 데이터 대비 상대적으로 굉장히 적을 때, 다시 말해 시스템 메모리에서 처리 가능한 수준이 되어야 하는데, 보통 빅데이터에서 적용하기 힘든 데이터가 존재할 가능성이 크다. 그리고 로우 그룹 방식은 엄밀히 말해 로우 레이아웃과 컬럼 레이아웃이 혼합된 형태로 순수한 컬럼 분석에는 랜덤 액세스나 혹은 시퀀셜 읽기를 통해 불필요한 컬럼들을 제외해야 한다. 이러한 동작으로 인한 성능 저하는 심각한 수준이다. 따라서, 이러한 단점을 극복할 수 있는 새로운 데이터 포맷이 요구된다.Since the row group can not be precisely filtered out by the statistical information of the row group, a disk operation for reading unnecessary row groups occurs, and when the filtering through the global dictionary is applied to improve the efficiency, a large cost is incurred for managing the row group. The global dictionary approach should be able to process data in system memory when the number of unique values in the column is relatively small compared to the total column data. And the row group method is strictly a mixture of row layout and column layout. For pure column analysis, it is necessary to exclude unnecessary columns by random access or sequential reading. Performance degradation due to this behavior is severe. Therefore, a new data format capable of overcoming these drawbacks is required.

컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석함으로써, 빅데이터 시대에 단순히 많은 양의 데이터를 저장만 하고 느린 검색/분석을 제공하고 있는 현 상황에서 다양한 관점으로 데이터를 빠르게 분석하고 시각화하여 많은 사람들이 인사이트를 얻고 가치를 창출해내는데 큰 도움을 줄 수 있는 처리 시스템 및 방법을 제공한다.By efficiently processing and analyzing big data using the column-index data format, we are able to quickly analyze data from various perspectives in the current situation of simply storing large amounts of data and providing slow search / analysis in the big data era Visualization to provide a processing system and method that can help a lot of people gain insights and create value.

컴퓨터로 구현되는 처리 시스템에서 빅데이터를 처리하는 방법에 있어서, 상기 상기 빅데이터의 컬럼 단위로 데이터를 정렬하여 로컬 딕셔너리를 생성하는 단계; 상기 정렬된 데이터들을 데이터들의 크기에 따라 상기 딕셔너리마다 적어도 하나 이상의 데이터 블록들로 분류하는 단계; 및 상기 데이터 블록들마다의 첫 번째 데이터의 값들을 데이터 블록들의 순서에 따라 포함하는 인덱스를 상기 딕셔너리마다 생성하는 단계; 상기 빅데이터의 로우 순서대로 컬럼 별 컬럼 아이디를 생성하는 단계를 포함하는 것을 특징으로 하는 처리 방법을 제공한다. 이러한 컬럼 아이디는 로우 재구성이나 빠른 컬럼 스캔을 위해 이용될 수 있다.A method of processing big data in a computer-implemented processing system, the method comprising: generating a local dictionary by arranging data in columns of the big data; Classifying the sorted data into at least one data block for each dictionary according to the size of the data; And generating, for each dictionary, an index including values of first data for each of the data blocks according to the order of data blocks; And generating a column ID for each column in the row order of the big data. These column IDs can be used for row reconstruction or for fast column scans.

컴퓨터로 구현되어 빅데이터를 처리하는 처리 시스템에 있어서, 상기 빅데이터의 컬럼 단위로 데이터를 정렬하여 로컬 딕셔너리를 생성하는 딕셔너리 생성부; 상기 정렬된 데이터들을 데이터들의 크기에 따라 상기 딕셔너리를 적어도 하나 이상의 데이터 블록들로 분류하는 데이터 분류부; 및 상기 데이터 블록들마다의 첫 번째 데이터의 값들을 데이터 블록들의 순서에 따라 포함하는 인덱스를 상기 딕셔너리마다 생성하는 인덱스 생성부; 상기 빅데이터의 로우 순서대로 컬럼 별 컬럼 아이디를 생성하는 컬럼 아이디 생성부를 포함하는 것을 특징으로 하는 처리 시스템을 제공한다.A processing system for processing big data by being implemented by a computer, the processing system comprising: a dictionary generation unit for generating a local dictionary by arranging data in units of columns of the big data; A data classifying unit classifying the sorted data into at least one data block according to a size of data; And an index generator for generating, for each dictionary, an index including the values of the first data for each data block according to the order of the data blocks; And a column ID generator for generating a column ID for each column in the row order of the big data.

컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석함으로써, 빅데이터 시대에 단순히 많은 양의 데이터를 저장만 하고 느린 검색/분석을 제공하고 있는 현 상황에서 다양한 관점으로 데이터를 빠르게 분석하고 시각화하여 많은 사람들이 인사이트를 얻고 가치를 창출해내는데 큰 도움을 줄 수 있다.By efficiently processing and analyzing big data using the column-index data format, we are able to quickly analyze data from various perspectives in the current situation of simply storing large amounts of data and providing slow search / analysis in the big data era Visualization can help a lot of people gain insights and create value.

도 1은 종래기술에 있어서, 로우 그룹과 컬럼 파티션의 구성 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 컬럼-인덱스 데이터 포맷의 예를 도시한 도면이다.
도 3은 본 발명의 일실시예에 있어서, 빅데이터의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 딕셔너리 구성의 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 인덱스 구성의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 있어서, 컬럼 아이디의 구성의 예를 도시한 도면이다.
도 7은 본 발명의 일실시예에 있어서, 처리 시스템의 내부 구성을 설명하기 위한 블록도이다.
도 8 내지 도 11은 본 발명의 실시예들에 있어서, 처리 방법을 도시한 흐름도들이다.
1 is a diagram showing a configuration example of a row group and a column partition in the prior art.
2 is a diagram showing an example of a column-index data format in an embodiment of the present invention.
3 is a diagram showing an example of big data in an embodiment of the present invention.
4 is a diagram showing an example of a dictionary configuration in an embodiment of the present invention.
5 is a diagram showing an example of an index configuration in an embodiment of the present invention.
6 is a diagram showing an example of the configuration of a column ID in an embodiment of the present invention.
7 is a block diagram for explaining an internal configuration of a processing system in an embodiment of the present invention.
Figs. 8 to 11 are flowcharts showing the processing method in the embodiments of the present invention. Fig.

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

RDBMS(Relational Database Management System)에서는 빠른 트랜잭션 처리를 위해 로우(Row) 형태의 레이아웃으로 데이터를 저장하거나 혹은 빠른 분석을 위해 컬럼(column) 형태로 데이터를 저장한다. 디스크 특성상 잦은 랜덤 액세스(Random Access)가 성능에 큰 악영향을 미치므로 이러한 악영향을 줄이기 위해 처리 시 동시에 읽어야 하는 데이터를 인접한 위치에 저장하기 위해 데이터를 컬럼 형태로 저장한 것이다. 다시 말해, 로우의 갱신이나 삭제와 같은 처리가 잦은 데이터베이스에서는 로우 단위로 데이터를 저장하고, 컬럼 별로 집계나 통계 데이터를 뽑을 때에는 컬럼 단위로 데이터를 저장한다. 빅데이터 분석을 위한 데이터 포맷에서도 로우 단위의 처리보다는 상대적으로 분석 위주의 작업이기 때문에 기본적으로 컬럼 형태로 저장할 수 있는 데이터 포맷을 설계할 수 있다.In the Relational Database Management System (RDBMS), data is stored in a row-type layout for fast transaction processing or data is stored in a column form for quick analysis. Due to the nature of disks, frequent random access has a bad effect on performance. To reduce these adverse effects, data is stored in a column form in order to store the data to be read at the same time. In other words, in a database where frequent processing such as updating or deleting a row is performed, data is stored in a row unit, and when aggregation or statistical data is extracted for each column, data is stored in a column unit. In the data format for big data analysis, it is a relatively analysis-oriented operation rather than row-by-row processing, so a data format that can be basically stored in a column form can be designed.

본 발명의 실시예들을 통해 설명하고자 하는 컬럼-인덱스 파일(Columnar Index File, CI File)은 이러한 컬럼 포맷을 기본으로 하여 현업에서 데이터 분석가들이 자주 수행하는 작업을 살펴보고 느린 응답 시간으로 인해 발생하는 비용을 줄이고자 다음 두 가지 목표가 중점적으로 고려될 수 있다.The column-index file (CI File) to be described in the embodiments of the present invention is based on this column format, so that the data analysts frequently watch the operations performed by the data analysts in the business, The following two goals can be considered as the focus.

1. 인덱스를 통한 빠른 데이터 검색1. Fast data retrieval through index

2. 컬럼 레이아웃을 통한 빠른 집계 분석2. Rapid aggregation analysis with column layout

컬럼형 인덱스 데이터 포맷은 하나의 컬럼에 대해 다음 세 가지 핵심 구성요소를 가질 수 있다.The column index data format can have three key components for a column:

1. 딕셔너리(dictionary)1. Dictionary

하나의 딕셔너리는 하나의 컬럼에 대응할 수 있고, 정렬된 데이터 블록(Sorted Data Block)들로 구성될 수 있다. 딕셔너리 인코딩되어 유니크 값이 적은 컬럼에서는 압축률이 좋고, 각 값에 해당하는 로우를 재구성하기 위해 로우 아이디들을 가질 수 있다. 예를 들어, 데이터 블록의 데이터들이 정렬되어 있기 때문에 하나의 데이터 블록 내에서 값들의 순서가 로우의 순서를 나타내지는 못한다. 따라서, 각각의 값들은 원래의 로우를 알 수 있도록 로우 아이디들을 가질 수 있다. 또한 로우 아이디는 다변 정수(Variable Integer) 등과 같은 압축 기법으로 압축될 수 있다.One dictionary can correspond to one column and can consist of sorted data blocks. Compression rates are good for columns that are dictionaries encoded with few unique values, and you can have low IDs to reconstruct the row corresponding to each value. For example, the order of values in one data block does not represent the order of the rows because the data in the data block is sorted. Thus, each of the values may have row IDs so that they know the original row. The row ID can also be compressed by a compression technique such as a variable integer.

2. 인덱스2. Index

인덱스는 딕셔너리내에서 데이터를 빠르게 찾을 수 있도록 딕셔너리의 데이터 블록을 포인팅하는 오프셋으로 이루어질 수 있다. 인덱스는 메모리에 로딩되어 검색 시 데이터가 포함된 데이터 블록을 빠르게 찾기 위해 이용될 수 있다.An index can consist of an offset pointing to a data block of a dictionary to quickly locate the data in the dictionary. The index may be loaded into memory and used to quickly locate a block of data that contains data upon retrieval.

3. 컬럼 아이디3. Column ID

컬럼 아이디는 로우 순서대로 숫자 값이 저장되며 딕셔너리를 포인팅하거나 혹은 정수형 컬럼이라면 정수형 컬럼의 정수값을 그대로 가져 딕셔너리를 포인팅할 수 있다. 컬럼 아이디는 블록 단위로 필요에 따라 압축될 수 있다.Column IDs are stored in numerical order in row order and can be pointed to the dictionary or, if the column is an integer column, the integer value of the integer column can be used to point to the dictionary. The column ID can be compressed as needed on a block-by-block basis.

도 2는 본 발명의 일실시예에 있어서, 컬럼-인덱스 데이터 포맷의 예를 도시한 도면이다.2 is a diagram showing an example of a column-index data format in an embodiment of the present invention.

딕셔너리는 하나의 컬럼이 갖는 데이터들을 정렬된 복수의 데이터 블록들로 구성할 수 있다. 이렇게 나누어진 데이터는 분산 병렬 처리를 위해, 복수의 저장소에 저장될 수 있고, 복수의 저장소에 저장된 데이터를 이용하여 원하는 질의 결과가 빠르게 얻을 수 있다.The dictionary can organize the data of one column into a plurality of aligned data blocks. The divided data can be stored in a plurality of repositories for distributed parallel processing, and desired query results can be obtained quickly using data stored in a plurality of repositories.

인덱스를 통해 딕셔너리가 포함하는 복수의 데이터 블록들 중 어떠한 데이터 블록이 찾고자 하는 값을 포함하고 있는지 알아낼 수 있다. 이를 위해, 인덱스는 각각의 데이터 블록들의 첫 번째 값들을 포함하도록 구성될 수 있다. 블록 내 정렬된 값들 사이에서 원하는 값이 어떠한 값들 사이에 포함되어 있는지 확인할 수 있으며, 이를 통해 원하는 데이터를 뽑아낼 수 있다.Through the index, it is possible to find out which data block among the plurality of data blocks included in the dictionary contains a value to be searched. To this end, the index may be configured to include the first values of each data block. It is possible to determine between which values the desired value is included among the values arranged in the block, thereby extracting the desired data.

컬럼 아이디는 로우 순서대로 숫자 값을 저장할 수 있다. 예를 들어, 컬럼 아이디 블록의 첫 번째 값은, 해당 컬럼에서 첫 번째 로우의 데이터의 딕셔너리에서의 위치를 나타낼 수 있다. 예를 들어, 해당 컬럼의 첫 번째 로우의 데이터가 딕셔너리에서의 정렬된 데이터들 중 10번 째 데이터임을 나타낼 수 있다.Column IDs can store numeric values in row order. For example, the first value in a column ID block can indicate the position in the dictionary of the data of the first row in that column. For example, it may indicate that the data in the first row of the column is the tenth of the sorted data in the dictionary.

만약, 해당 컬럼이 정수형 값들을 포함하는 컬럼이라면, 컬럼 아이디 블록의 값들은 로우 순서대로 해당 값들을 저장할 수 있다. 예를 들어, 컬럼 아이디 블록의 첫 번째 값이 5인 경우, 해당 컬럼의 첫 번째 로우의 데이터의 값이 5임을 바로 알 수 있다. If the corresponding column is a column containing integer values, the values of the column ID block can store the values in a row order. For example, if the first value of the column ID block is 5, it is immediately known that the data value of the first row of the column is 5.

도 3은 본 발명의 일실시예에 있어서, 빅데이터의 예를 도시한 도면이다.3 is a diagram showing an example of big data in an embodiment of the present invention.

제1 점선박스(310)는 지역에 대응하는 컬럼을, 제2 점선박스(320)는 성별에 대응하는 컬럼을, 제3 점선박스(330)는 나이에 대응하는 컬럼을, 그리고 제4 점선박스(340)는 취미에 대응하는 컬럼을 각각 나타낼 수 있다. 이때, 각각의 컬럼들이 하나의 딕셔너리에 대응되도록 데이터베이스가 구성될 수 있다.The first dashed line box 310 corresponds to the region, the second dashed line box 320 corresponds to the sex, the third dashed box 330 corresponds to the age, and the fourth dashed box 330 corresponds to the age. (340) may represent a column corresponding to a hobby, respectively. At this time, the database may be configured such that each column corresponds to one dictionary.

도 4는 본 발명의 일실시예에 있어서, 딕셔너리 구성의 예를 도시한 도면이다.4 is a diagram showing an example of a dictionary configuration in an embodiment of the present invention.

이때, 도 4는 앞서 설명한 도 3의 제1 점선박스(310)가 나타내는 지역에 대응하는 컬럼인 제1 딕셔너리가 제4 점선박스(410), 제5 점선박스(420) 및 제6 점선박스(430)에 나타난 바와 같이 세 개의 데이터 블록들로 구성된 예를 나타낼 수 있다. 예를 들어, 처리 시스템은 지역에 대응하는 컬럼의 데이터들을 값에 따라 정렬될 수 있으며, 정렬된 데이터들을 세 개의 데이터 블록들로 분류하여 세 개의 데이터 블록들을 갖는 제1 딕셔너리를 구성할 수 있다. 이때, 제1 딕셔너리에 포함된 데이터들 각각은 로우 아이디를 가질 수 있다. 예를 들어, "광주"에 대응하는 로우 아이디 "3"은 "광주"가 지역에 대응하는 컬럼에서 세 번째 로우의 데이터임을 나타낼 수 있다. 이러한 로우 아이디는 제1 딕셔너리를 통해 원래의 빅데이터의 로우를 재구성하기 위해 이용될 수 있다. 예를 들어, 전체 딕셔너리들에서 로우 아이디가 "3"인 데이터들만을 모아 컬럼 순서로 나열하면 도 3의 빅데이터에서의 세 번째 로우를 얻을 수 있다.4, the first dictionary, which is a column corresponding to the area indicated by the first dotted line box 310 of FIG. 3 described above, includes a fourth dotted line box 410, a fifth dotted line box 420, 430), as shown in FIG. For example, the processing system may sort the data of the column corresponding to the region by value, and sort the sorted data into three data blocks to construct a first dictionary having three data blocks. At this time, each of the data included in the first dictionary may have a low ID. For example, a row ID "3 " corresponding to" Gwangju " may indicate that "Gwangju" is data of the third row in the column corresponding to the region. This low id may be used to reconstruct the rows of the original big data through the first dictionary. For example, if only the data having a low ID of "3" in all the dictionaries are collected and listed in column order, the third row in the big data of FIG. 3 can be obtained.

도 5는 본 발명의 일실시예에 있어서, 인덱스 구성의 예를 도시한 도면이다.5 is a diagram showing an example of an index configuration in an embodiment of the present invention.

여기서, 도 5는 도 4를 통해 설명한 세 개의 데이터 블록들의 첫 번째 데이터 값들로 구성된 인덱스의 예를 나타내고 있다. 첫 번째 값(510)인 "광주"는 도 4에서 제4 점선박스(410)에 나타난 데이터 블록의 첫 번째 값을, 두 번째 값(520)인 "서울"은 도 4에서 제5 점선박스(420)에 나타난 데이터 블록의 첫 번째 값을, 세 번째 값(530)인 "인천"은 도 4에서 제6 점선박스(430)에 나타난 데이터 블록의 첫 번째 값을 각각 나타낼 수 있다. 일례로, "부"로 시작하는 지명을 검색하는 경우, "부"는 인덱스에서 첫 번째 값(510)인 "광주"와 두 번째 값(520)인 "서울"의 사이에 위치하기 때문에 처리 시스템은 "부"로 시작하는 지명이 도 4의 제4 점선박스(410)에 나타난 데이터 블록에 저장되어 있음을 바로 알 수 있게 된다. 이러한 인덱스는 메모리에 구성되기 때문에 처리 시스템은 매우 빠르게 원하는 데이터 블록을 통해 요청된 검색에 따른 결과를 제공할 수 있게 된다. 예를 들어, "부산에 사는 사용자의 수"라는 질의에 대해서도, 필요한 데이터 블록을 바로 찾을 수 있으며, 컬럼간의 이동이나 로우간의 이동 없이 하나의 데이터 블록에 포함된 연속적인 데이터들을 쭉 읽어드려 원하는 결과값을 매우 빠르게 얻어낼 수 있다.Here, FIG. 5 shows an example of an index composed of the first data values of the three data blocks described with reference to FIG. The first value 510, "Gwangju", represents the first value of the data block shown in the fourth dashed box 410 in FIG. 4, and the second value 520 "Seoul" 420 represents the first value of the data block and the third value 530 represents the first value of the data block shown in the sixth dotted line box 430 in FIG. For example, when searching for a place name beginning with "part ", the" part "is located between the first value 510" Quot; is stored in the data block shown in the fourth dotted line box 410 of FIG. Because these indexes are organized in memory, the processing system can very quickly provide the desired search results through the desired block of data. For example, it is possible to find the necessary data block immediately for the query "number of users in Busan" and to read the continuous data contained in one data block without moving between columns or between rows, You can get the value very quickly.

또한, 이미 설명한 바와 같이 각각의 데이터들이 원래의 몇 번째 로우인가를 로우 아이디를 통해 바로 확인할 수 있기 때문에 로우 아이디를 통해 각 데이터들의 로우를 식별할 수도 있다.In addition, as already described, it is possible to identify the row of each data through the row ID since the data can be directly ascertained through the row ID of the original several rows.

도 6은 본 발명의 일실시예에 있어서, 컬럼 아이디의 구성의 예를 도시한 도면이다. 컬럼 아이디 블록(600)은 로우의 순서대로 숫자 값을 저장할 수 있다. 예를 들어 첫 번째 값(610) '5001'은 도 3의 빅데이터에서 지명에 대응하는 컬럼의 첫 번째 로우의 데이터인 '서울'이 딕셔너리의 어디에 위치하는가를 나타낼 수 있다. 예를 들어, 도 4의 데이터 블록들이 각각 5000개의 데이터를 포함한다고 가정할 때, '5001'이 나타내는 데이터가 제5 점선박스(620)에 나타난 데이터 블록의 첫 번째 데이터임을 바로 확인할 수 있다. 또한, 마지막 값(620) '5000'이 제4 점선박스(610)에 나타난 데이터 블록의 마지막 데이터임을 바로 확인할 수 있다. 이러한 컬럼 아이디를 통해 해당 컬럼에서 특정 로우의 데이터가 포함된 데이터 블록에 바로 접근하는 것이 가능해진다.6 is a diagram showing an example of the configuration of a column ID in an embodiment of the present invention. The column ID block 600 may store numerical values in the order of rows. For example, the first value 610 '5001' may indicate where the 'Seoul' data of the first row of the column corresponding to the place name in the big data of FIG. 3 is located in the dictionary. For example, if it is assumed that each of the data blocks of FIG. 4 includes 5000 data, it can be immediately confirmed that the data represented by '5001' is the first data of the data block indicated by the fifth dotted line box 620. In addition, it can be immediately confirmed that the last value 620 '5000' is the last data of the data block shown in the fourth dotted line box 610. Such a column ID makes it possible to directly access a data block including data of a specific row in the corresponding column.

또한, 데이터의 값이 정수형인 컬럼에 대해서는 데이터의 값이 바로 컬럼 아이디 블록의 값들이 될 수 있다. 예를 들어, 도 3의 제3 점선박스(330)를 통해 나타난 나이에 대응하는 컬럼은 해당 컬럼이 바로 컬럼 아이디 블록이 될 수 있다. 보다 구체적인 예로, 컬럼 아이디 블록의 첫 번째 값은 해당 컬럼의 첫 번째 값인 '25'가 될 수 있다. 이 경우, 처리 시스템은 데이터 블록을 읽어드리지 않고도 컬럼 아이디 블록에서 원하는 로우의 값을 바로 검색할 수 있다.For a column whose data value is an integer type, the value of the data may be the value of the column ID block. For example, the column corresponding to the age indicated through the third dashed box 330 in FIG. 3 may be a column ID block. As a more specific example, the first value of the column ID block may be '25', which is the first value of the corresponding column. In this case, the processing system can retrieve the desired row value directly from the column ID block without reading the data block.

도 7은 본 발명의 일실시예에 있어서, 처리 시스템의 내부 구성을 설명하기 위한 블록도이고, 도 8 내지 도 11은 본 발명의 실시예들에 있어서, 처리 방법을 도시한 흐름도들이다.FIG. 7 is a block diagram for explaining an internal configuration of a processing system in an embodiment of the present invention, and FIGS. 8 to 11 are flowcharts showing processing methods in the embodiments of the present invention.

본 실시예에 따른 처리 시스템(700)은 빅데이터를 저장, 관리 및 처리하는 시스템일 수 있으며, 하나의 컴퓨터 장치로 구성될 수도 있으나, 복수의 컴퓨터 장치들로 구성될 수도 있다. 예를 들어, 빅데이터가 하나의 컴퓨터 장치에 저장될 수 없는 경우, 처리 시스템(700)은 딕셔너리별로 또는 딕셔너리의 데이터 블록별로 별도의 컴퓨터 장치들이 구성되어 서로 연계된 될 수 있다.The processing system 700 according to the present embodiment may be a system for storing, managing, and processing big data, and may be composed of one computer device, but may also be composed of a plurality of computer devices. For example, if the big data can not be stored in one computer device, the processing system 700 can be configured to be interconnected by separate computer devices configured for each dictionary or data block of the dictionary.

이때, 처리 시스템(700)은 도 7에 도시된 바와 같이, 딕셔너리 생성부(710), 데이터 분류부(720), 인덱스 생성부(730) 및 컬럼 아이디 생성부(740)를 포함할 수 있다. 이때, 딕셔너리 생성부(710), 데이터 분류부(720), 인덱스 생성부(730) 및 컬럼 아이디 생성부(740)는 도 8의 단계들(단계(810) 내지 단계(840))을 수행하도록 구현될 수 있다.The processing system 700 may include a dictionary generator 710, a data classifier 720, an index generator 730, and a column ID generator 740, as shown in FIG. At this time, the dictionary generating unit 710, the data classifying unit 720, the index generating unit 730, and the column ID generating unit 740 may perform the steps of FIG. 8 (steps 810 to 840) Can be implemented.

단계(810)에서 딕셔너리 생성부(710)는 빅데이터의 컬럼 단위로 데이터를 정렬하고 딕셔너리를 생성할 수 있다. 예를 들어, 한글은 가나다 순서로(또는 역순으로), 영문은 알파벳 순서로(또는 역순으로), 숫자는 오름차순(또는 내림차순)으로 각각 정렬할 수 있다. 딕셔너리는 빅데이터에서의 컬럼에 대응될 수 있고, 컬럼의 수만큼 생성될 수 있다. 빅데이터의 예는 도 3을 통해 설명하였으며, 딕셔너리의 예는 도 4와 5를 통해 설명하였다.In step 810, the dictionary generator 710 may sort the data in column units of the big data and generate a dictionary. For example, Hangul can be arranged in alphabetical order (or in reverse order), alphabetical order (or reverse order), and numbers can be sorted in ascending order (or descending order), respectively. A dictionary can correspond to columns in big data, and can be created as many as the number of columns. An example of big data has been described with reference to FIG. 3, and an example of a dictionary has been described with reference to FIGS.

단계(820)에서 데이터 분류부(720)는 정렬된 데이터들을 데이터들의 크기에 따라 딕셔너리마다 적어도 하나 이상의 데이터 블록들로 분류할 수 있다. 빅데이터의 경우, 일반적으로 하나의 컬럼의 데이터들도 크기가 매우 커 하나의 저장소에 포함시키기 어려울 수 있다. 이 경우, 데이터 분류부(720)는 하나의 컬럼에 포함된 데이터들을 복수의 데이터 블록들로 분류할 수 있다. 이러한 데이터 블록들에 대해서는 도 5를 통해 설명하였다.In step 820, the data classifier 720 may classify the sorted data into at least one data block for each dictionary according to the size of the data. In the case of big data, the data of one column is generally too large to be included in one storage. In this case, the data classifier 720 may classify the data included in one column into a plurality of data blocks. These data blocks have been described with reference to FIG.

단계(830)에서 인덱스 생성부(730)는 데이터 블록들마다의 첫 번째 데이터의 값들을 데이터 블록들의 순서에 따라 포함하는 인덱스를 딕셔너리마다 생성할 수 있다. 다시 말해, 인덱스의 첫 번째 값은 해당 딕셔너리의 첫 번째 데이터 블록의 첫 번째 데이터의 값을 포함할 수 있다.In step 830, the index generator 730 may generate, for each dictionary, an index including the values of the first data for each data block according to the order of the data blocks. In other words, the first value of the index may contain the value of the first data of the first data block of the dictionary.

단계(840)에서 컬럼 아이디 생성부(740)는 빅데이터의 로우 순서대로 컬럼 별 컬럼 아이디를 생성할 수 있다. 컬럼 아이디는 딕셔너리를 포인팅하는 오프셋 값일 수 있다. 만약, 숫자 형 컬럼의 경우에는 각 컬럼의 실제 값들이 컬럼 아이디로서 저장될 수 있다. 예를 들어, 컬럼 아이디는 딕셔너리의 데이터들의 위치 또는 순서를 식별하기 위한 값으로, 컬럼 아이디 블록에 빅데이터에서의 로우 순서로 저장될 수 있다.In step 840, the column ID generator 740 may generate a column ID for each column in the row order of the big data. The column ID may be an offset value that points to the dictionary. For numeric columns, the actual values of each column can be stored as column IDs. For example, a column ID is a value for identifying the position or order of data in a dictionary, and may be stored in the column ID block in a row order in the big data.

또한, 처리 시스템(700)은 다른 실시예에 있어서, 인덱스 로딩부(751), 데이터 블록 결정부(742) 및 응답 생성부(753)를 더 포함할 수 있다. 인덱스 로딩부(751), 데이터 블록 결정부(742) 및 응답 생성부(753)는, 처리 방법이 다른 실시예에 있어서 더 포함할 수 있는 도 9의 단계들(단계(910) 내지 단계(930))을 수행하도록 구현될 수 있다.The processing system 700 may further include an index loading unit 751, a data block determination unit 742, and a response generation unit 753 in another embodiment. The index loading unit 751, the data block determining unit 742 and the response generating unit 753 are the same as the steps in the processing of FIG. 9 (steps 910 to 930 )). ≪ / RTI >

단계(910)에서 인덱스 로딩부(751)는 인덱스를 메모리에 로딩할 수 있다. 인덱스는 데이터 블록들의 첫 번째 데이터들만을 포함하기 때문에 그 크기가 빅데이터에 비하면 상대적으로 매우 작다. 처리 시스템(700)은 이러한 인덱스를 이용하여 원하는 데이터가 포함된 데이터 블록을 빠르게 찾을 수 있다. In step 910, the index loading unit 751 may load the index into memory. Since the index includes only the first data of the data blocks, its size is relatively small as compared with the big data. The processing system 700 may use this index to quickly find data blocks containing the desired data.

단계(920)에서 데이터 블록 결정부(752)는 수신된 질의를 통해 결정된 데이터와 인덱스가 포함하는 데이터 블록들의 첫 번째 데이터들을 비교하여 결정된 데이터가 포함된 데이터 블록을 결정할 수 있다. 이미 설명한 바와 같이, 딕셔너리의 데이터들은 값에 따라 정렬되고, 인덱스는 데이터 블록들의 첫 번째 데이터들을 포함한다. 따라서, 데이터 블록 결정부(752)는 결정된 데이터가 인덱스의 어떤 데이터 혹은 어떤 데이터들의 사이에 포함되는 데이터인지 식별할 수 있다. 따라서, 데이터 블록 결정부(752)는 인덱스의 데이터가 특정되면, 해당 데이터를 첫 번째 데이터로 갖는 데이터 블록을 결정된 데이터가 포함된 데이터 블록으로 결정할 수 있다.In step 920, the data block determination unit 752 may determine the data block including the determined data by comparing the data determined through the received query with the first data of the data blocks included in the index. As already explained, the data in the dictionary are sorted by value, and the index contains the first data of the data blocks. Therefore, the data block determination unit 752 can identify which data of the index or the data included among the data. Accordingly, when the data of the index is specified, the data block determining unit 752 can determine the data block having the data as the first data as a data block including the determined data.

단계(930)에서 응답 생성부(753)는 결정된 데이터 블록을 읽어드리고, 데이터 블록을 이용하여 질의에 대한 응답을 생성할 수 있다. 빅데이터는 하드디스크와 같이 읽기 시간이 메모리에 비해 상대적으로 매우 오래 걸리는 스토리지를 통해 저장된다. 처리 시스템(700)은 이러한 빅데이터를 전체적으로 풀 스캔하지 않고, 필요한 데이터(결정된 데이터 블록의 데이터들)만을 읽어 빠른 처리 시간을 보장할 수 있다.In step 930, the response generator 753 may read the determined data block and generate a response to the query using the data block. Big data is stored through storage that takes a very long time to read, such as a hard disk, relative to memory. The processing system 700 can ensure fast processing time by reading only necessary data (data of the determined data block) without performing full scan of such big data as a whole.

또한, 처리 시스템(700)은 또 다른 실시예에 있어서, 로우 재구성부(761)를 더 포함할 수 있다. 이러한 로우 재구성부(761)는 처리 방법이 또 다른 실시예에 있어서 더 포함할 수 있는 도 10의 단계(1010)를 수행하도록 구현될 수 있다.In addition, the processing system 700 may further include a low reconstruction unit 761 in another embodiment. This row reconstruction unit 761 may be implemented to perform the step 1010 of FIG. 10, which may further include the processing method in another embodiment.

우선, 본 실시예에서 딕셔너리에는 데이터 블록들에 포함된 데이터의 빅데이터에서의 로우(row) 순서를 식별하는 로우 아이디가 데이터들 각각과 연관하여 함께 저장될 수 있다.First, in the present embodiment, the dictionary may store a row ID that identifies a row order in the big data of the data included in the data blocks together with each of the data.

이때, 단계(1010)에서 로우 재구성부(761)는 딕셔너리에 포함된 데이터들의 로우 아이디를 이용하여 빅데이터의 로우를 재구성할 수 있다. 예를 들어, 딕셔너리들에서 동일한 로우 아이디의 데이터들만을 추출하면, 하나의 로우가 재구성될 수 있다.At this time, in step 1010, the row reconstructing unit 761 may reconstruct the row of the big data using the row ID of the data included in the dictionary. For example, if only the data of the same row ID is extracted from the dictionaries, one row can be reconstructed.

또한, 처리 시스템(700)은 또 다른 실시 예에 있어서, 데이터 추출부(771)를 더 포함할 수 있다. 데이터 추출부(771)는 처리 방법이 또 다른 실시예에 있어서 더 포함할 수 있는 도 11의 단계(1110)를 수행하도록 구현될 수 있다.In addition, the processing system 700 may further include a data extracting unit 771 in another embodiment. The data extracting section 771 may be implemented to perform the step 1110 of FIG. 11, which may further include the processing method in another embodiment.

단계(1110)에서 데이터 추출부(772)는 수신된 질의에 대응하는 딕셔너리의 컬럼 아이디 블록에서 요청된 로우 순서의 컬럼 아이디를 추출하고, 상기 딕셔너리에서 추출된 컬럼 아이디가 식별하는 위치 또는 순서의 데이터를 추출할 수 있다.In step 1110, the data extracting unit 772 extracts the column ID of the row order requested in the column ID block of the dictionary corresponding to the received query, and extracts the position or order data identified by the column ID extracted from the dictionary Can be extracted.

도 7 및 도 8에서 생략된 사항은, 도 2 내지 도 6에 대한 설명을 참조할 수 있다.7 and 8, the description of FIGS. 2 to 6 can be referred to.

이와 같이, 본 발명의 실시예들에 따르면, 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석함으로써, 빅데이터 시대에 단순히 많은 양의 데이터를 저장만 하고 느린 검색/분석을 제공하고 있는 현 상황에서 다양한 관점의 데이터를 빠르게 분석하고 시각화하여 많은 사람들이 인사이트를 얻고 가치를 창출해내는데 큰 도움을 줄 수 있다.Thus, according to embodiments of the present invention, by efficiently processing and analyzing the big data using the column-index data format, it is possible to simply store a large amount of data in the big data era and provide slow search / analysis In the present situation, we can quickly analyze and visualize data from various perspectives, which can help many people gain insights and create value.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (13)

컴퓨터로 구현되는 처리 시스템에서 빅데이터를 처리하는 방법에 있어서,
상기 빅데이터의 컬럼(column) 단위로 데이터를 정렬하여 딕셔너리를 생성하는 단계;
상기 정렬된 데이터들을 데이터들의 크기에 따라 상기 딕셔너리마다 적어도 하나 이상의 데이터 블록들로 분류하는 단계;
상기 데이터 블록들마다의 첫 번째 데이터의 값들을 데이터 블록들의 순서에 따라 포함하는 인덱스를 상기 딕셔너리마다 생성하는 단계; 및
상기 빅데이터의 로우 순서대로 컬럼 별 컬럼 아이디를 생성하는 단계
를 포함하는 것을 특징으로 하는 처리 방법.
A method for processing big data in a computer-implemented processing system,
Generating a dictionary by arranging data in a column of the big data;
Classifying the sorted data into at least one data block for each dictionary according to the size of the data;
Generating, for each dictionary, an index including values of first data for each of the data blocks according to the order of data blocks; And
A step of generating a column ID for each column in a row order of the big data
≪ / RTI >
제1항에 있어서,
상기 인덱스를 메모리에 로딩하는 단계;
수신된 질의를 통해 결정된 데이터와 상기 인덱스가 포함하는 데이터 블록들의 첫 번째 데이터들을 비교하여 상기 결정된 데이터가 포함된 데이터 블록을 결정하는 단계; 및
상기 결정된 데이터 블록을 읽어드리고, 상기 데이터 블록을 이용하여 상기 질의에 대한 응답을 생성하는 단계
를 더 포함하는 것을 특징으로 하는 처리 방법.
The method according to claim 1,
Loading the index into a memory;
Comparing the data determined through the received query with the first data of the data blocks included in the index, and determining a data block including the determined data; And
Reading the determined data block, and generating a response to the query using the data block
≪ / RTI >
제1항에 있어서,
상기 딕셔너리에는, 상기 데이터 블록들에 포함된 데이터의 상기 빅데이터에서의 로우(row) 순서를 식별하는 로우 아이디가 데이터들 각각과 연관하여 함께 저장되는 것을 특징으로 하는 처리 방법.
The method according to claim 1,
Wherein the dictionary stores a row ID that identifies a row order in the big data of the data contained in the data blocks together with each of the data.
제3항에 있어서,
상기 딕셔너리에 포함된 데이터들의 상기 로우 아이디를 이용하여 상기 빅데이터의 로우를 재구성하는 단계
를 더 포함하는 것을 특징으로 하는 처리 방법.
The method of claim 3,
Reconstructing a row of the big data using the row ID of the data included in the dictionary
≪ / RTI >
제1항에 있어서,
대응하는 딕셔너리의 데이터들의 위치 또는 순서를 식별하기 위한 값인 컬럼 아이디를 상기 빅데이터에서의 로우 순서로 저장하는 컬럼 아이디 블록을 생성하는 단계
를 더 포함하는 것을 특징으로 하는 처리 방법.
The method according to claim 1,
Generating a column ID block storing a column ID, which is a value for identifying a position or order of data of a corresponding dictionary, in a row order in the big data;
≪ / RTI >
제5항에 있어서,
수신된 질의에 대응하는 딕셔너리의 컬럼 아이디 블록에서 요청된 로우 순서의 컬럼 아이디를 추출하고, 상기 딕셔너리에서 추출된 컬럼 아이디가 식별하는 위치 또는 순서의 데이터를 추출하는 단계
를 더 포함하는 것을 특징으로 하는 처리 방법.
6. The method of claim 5,
Extracting the column ID of the row order requested in the column ID block of the dictionary corresponding to the received query, and extracting data of a position or order identified by the column ID extracted from the dictionary
≪ / RTI >
제1항 내지 제6항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.A computer-readable recording medium having recorded thereon a program for executing the method according to any one of claims 1 to 6. 컴퓨터로 구현되어 빅데이터를 처리하는 처리 시스템에 있어서,
상기 빅데이터의 컬럼(column) 단위로 데이터를 정렬하여 딕셔너리를 생성하는 딕셔너리 생성부;
상기 정렬된 데이터들을 데이터들의 크기에 따라 상기 딕셔너리를 적어도 하나 이상의 데이터 블록들로 분류하는 데이터 분류부;
상기 데이터 블록들마다의 첫 번째 데이터의 값들을 데이터 블록들의 순서에 따라 포함하는 인덱스를 상기 딕셔너리마다 생성하는 인덱스 생성부; 및
상기 빅데이터의 로우 순서대로 컬럼 별 컬럼 아이디를 생성하는 컬럼 아이디 생성부
를 포함하는 것을 특징으로 하는 처리 시스템.
1. A processing system for processing large data, which is implemented by a computer,
A dictionary generating unit for generating a dictionary by arranging data in column units of the big data;
A data classifying unit classifying the sorted data into at least one data block according to a size of data;
An index generating unit for generating, for each dictionary, an index including the values of the first data for each of the data blocks according to the order of the data blocks; And
A column ID generator for generating a column ID for each column in a row order of the big data;
≪ / RTI >
제8항에 있어서,
상기 인덱스를 메모리에 로딩하는 인덱스 로딩부;
수신된 질의를 통해 결정된 데이터와 상기 인덱스가 포함하는 데이터 블록들의 첫 번째 데이터들을 비교하여 상기 결정된 데이터가 포함된 데이터 블록을 결정하는 데이터 블록 결정부; 및
상기 결정된 데이터 블록을 읽어드리고, 상기 데이터 블록을 이용하여 상기 질의에 대한 응답을 생성하는 응답 생성부
를 더 포함하는 것을 특징으로 하는 처리 시스템.
9. The method of claim 8,
An index loading unit loading the index into a memory;
A data block determining unit for comparing the data determined through the received query with the first data of the data blocks included in the index to determine a data block including the determined data; And
A response generator for reading the determined data block and generating a response to the query using the data block,
≪ / RTI >
제8항에 있어서,
상기 딕셔너리에는, 상기 데이터 블록들에 포함된 데이터의 상기 빅데이터에서의 로우(row) 순서를 식별하는 로우 아이디가 데이터들 각각과 연관하여 함께 저장되는 것을 특징으로 하는 처리 시스템.
9. The method of claim 8,
Wherein the dictionary is stored together with a row ID identifying a row order in the big data of the data contained in the data blocks in association with each of the data.
제10항에 있어서,
상기 딕셔너리에 포함된 데이터들의 상기 로우 아이디를 이용하여 상기 빅데이터의 로우를 재구성하는 로우 재구성부
를 더 포함하는 것을 특징으로 하는 처리 시스템.
11. The method of claim 10,
A row reconstruction unit for reconstructing a row of the big data using the row ID of the data included in the dictionary,
≪ / RTI >
제8항에 있어서,
대응하는 딕셔너리의 데이터들의 위치 또는 순서를 식별하기 위한 값인 컬럼 아이디를 상기 빅데이터에서의 로우 순서로 저장하는 컬럼 아이디 블록을 생성하는 컬럼 아이디 블록 생성부
를 더 포함하는 것을 특징으로 하는 처리 시스템.
9. The method of claim 8,
And a column ID block for storing a column ID, which is a value for identifying a position or order of data of a corresponding dictionary, in a row order in the big data,
≪ / RTI >
제12항에 있어서,
수신된 질의에 대응하는 딕셔너리의 컬럼 아이디 블록에서 요청된 로우 순서의 컬럼 아이디를 추출하고, 상기 딕셔너리에서 추출된 컬럼 아이디가 식별하는 위치 또는 순서의 데이터를 추출하는 데이터 추출부
를 더 포함하는 것을 특징으로 하는 처리 시스템.
13. The method of claim 12,
Extracts the column ID of the row order requested in the column ID block of the dictionary corresponding to the received query, and extracts data of the position or order identified by the column ID extracted from the dictionary,
≪ / RTI >
KR1020150023663A 2015-02-16 2015-02-16 System and method for processing and analysing big data provding efficiently using columnar index data format KR101696338B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150023663A KR101696338B1 (en) 2015-02-16 2015-02-16 System and method for processing and analysing big data provding efficiently using columnar index data format
US15/044,327 US10152502B2 (en) 2015-02-16 2016-02-16 Systems, apparatuses, methods, and computer readable media for processing and analyzing big data using columnar index data format

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150023663A KR101696338B1 (en) 2015-02-16 2015-02-16 System and method for processing and analysing big data provding efficiently using columnar index data format

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020170002861A Division KR101795564B1 (en) 2017-01-09 2017-01-09 System and method for processing and analysing big data provding efficiently using columnar index data format

Publications (2)

Publication Number Publication Date
KR20160100752A true KR20160100752A (en) 2016-08-24
KR101696338B1 KR101696338B1 (en) 2017-01-13

Family

ID=56621261

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150023663A KR101696338B1 (en) 2015-02-16 2015-02-16 System and method for processing and analysing big data provding efficiently using columnar index data format

Country Status (2)

Country Link
US (1) US10152502B2 (en)
KR (1) KR101696338B1 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10620950B2 (en) * 2016-09-07 2020-04-14 International Business Machines Corporation Message parsing in a distributed stream processing system
US10614092B2 (en) * 2017-01-24 2020-04-07 International Business Machines Corporation Optimizing data retrieval operation in big-data processing systems
US10747815B2 (en) * 2017-05-11 2020-08-18 Open Text Sa Ulc System and method for searching chains of regions and associated search operators
CN107562775B (en) * 2017-07-14 2020-04-24 创新先进技术有限公司 Data processing method and device based on block chain
US11934562B2 (en) * 2019-01-15 2024-03-19 Sony Group Corporation Data processing device, data processing method, data processing program, terminal device, and data processing system
CN111159192B (en) * 2019-12-30 2023-09-05 北京因特睿软件有限公司 Big data based data warehousing method and device, storage medium and processor
US11238037B2 (en) * 2020-01-06 2022-02-01 International Business Machines Corporation Data segment-based indexing
US11914589B2 (en) * 2020-02-28 2024-02-27 Sap Se Efficient computation of order by, order by with limit, min, and max in column-oriented databases
US11238035B2 (en) * 2020-03-10 2022-02-01 Oracle International Corporation Personal information indexing for columnar data storage format
US11514697B2 (en) 2020-07-15 2022-11-29 Oracle International Corporation Probabilistic text index for semi-structured data in columnar analytics storage formats
CN112035197B (en) * 2020-08-11 2021-07-13 深圳前海微众银行股份有限公司 Configuration method and device of front-end page

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362040A (en) * 2003-06-02 2004-12-24 Mitsubishi Electric Corp Data management device and data management program
KR101255639B1 (en) * 2012-01-18 2013-04-16 홍익대학교 산학협력단 Column-oriented database system and join process method using join index thereof
WO2015017361A1 (en) * 2013-07-29 2015-02-05 Amazon Technologies, Inc. Generating a multi-column index for relational databases by interleaving data bits for selectivity

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700674B2 (en) * 2009-07-14 2014-04-15 Hewlett-Packard Development Company, L.P. Database storage architecture
US9087138B2 (en) * 2013-01-15 2015-07-21 Xiaofan Zhou Method for representing and storing hierarchical data in a columnar format
US10133800B2 (en) * 2013-09-11 2018-11-20 Microsoft Technology Licensing, Llc Processing datasets with a DBMS engine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362040A (en) * 2003-06-02 2004-12-24 Mitsubishi Electric Corp Data management device and data management program
KR101255639B1 (en) * 2012-01-18 2013-04-16 홍익대학교 산학협력단 Column-oriented database system and join process method using join index thereof
WO2015017361A1 (en) * 2013-07-29 2015-02-05 Amazon Technologies, Inc. Generating a multi-column index for relational databases by interleaving data bits for selectivity

Also Published As

Publication number Publication date
KR101696338B1 (en) 2017-01-13
US20160239527A1 (en) 2016-08-18
US10152502B2 (en) 2018-12-11

Similar Documents

Publication Publication Date Title
KR101696338B1 (en) System and method for processing and analysing big data provding efficiently using columnar index data format
US11762882B2 (en) System and method for analysis and management of data distribution in a distributed database environment
US10318882B2 (en) Optimized training of linear machine learning models
JP6697392B2 (en) Transparent discovery of semi-structured data schema
EP3117347B1 (en) Systems and methods for rapid data analysis
US10380269B2 (en) Sideways information passing
CN107408114B (en) Identifying join relationships based on transactional access patterns
US11347740B2 (en) Managed query execution platform, and methods thereof
CN104756107A (en) Profiling data with location information
US20180129708A1 (en) Query processing management in a database management system
Pita et al. A Spark-based Workflow for Probabilistic Record Linkage of Healthcare Data.
Whitman et al. Distributed spatial and spatio-temporal join on apache spark
Nikitopoulos et al. DiStRDF: Distributed Spatio-temporal RDF Queries on Spark.
Chambi et al. Optimizing druid with roaring bitmaps
US11288266B2 (en) Candidate projection enumeration based query response generation
Visheratin et al. Peregreen–modular database for efficient storage of historical time series in cloud environments
Thacker et al. Performance of elasticsearch in cloud environment with ngram and non-ngram indexing
US11520763B2 (en) Automated optimization for in-memory data structures of column store databases
US20180349443A1 (en) Edge store compression in graph databases
KR101795564B1 (en) System and method for processing and analysing big data provding efficiently using columnar index data format
CN115658680A (en) Data storage method, data query method and related device
Fischer et al. Timely semantics: a study of a stream-based ranking system for entity relationships
CN107402920B (en) Method and device for determining correlation complexity of relational database table
Zhang et al. PARROT: pattern-based correlation exploitation in big partitioned data series
Munir et al. ATUN-HL: Auto tuning of hybrid layouts using workload and data characteristics

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 4