KR102171430B1 - 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템 - Google Patents

데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템 Download PDF

Info

Publication number
KR102171430B1
KR102171430B1 KR1020190022395A KR20190022395A KR102171430B1 KR 102171430 B1 KR102171430 B1 KR 102171430B1 KR 1020190022395 A KR1020190022395 A KR 1020190022395A KR 20190022395 A KR20190022395 A KR 20190022395A KR 102171430 B1 KR102171430 B1 KR 102171430B1
Authority
KR
South Korea
Prior art keywords
column
binary
cell
binary file
size
Prior art date
Application number
KR1020190022395A
Other languages
English (en)
Other versions
KR20200104033A (ko
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 KR1020190022395A priority Critical patent/KR102171430B1/ko
Publication of KR20200104033A publication Critical patent/KR20200104033A/ko
Application granted granted Critical
Publication of KR102171430B1 publication Critical patent/KR102171430B1/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/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/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • 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

Landscapes

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

Abstract

본 발명은 DBMS(Database Management System)에서 데이터 조회 결과 수신한 테이블(Result Set)에 대해 수치형 컬럼은 테이블(Result Set)에 포함된 원본 컬럼 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리(Binary) 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하고, 문자형 컬럼은 테이블(Result Set)에 포함된 각 셀에 들어있는 문자수에 해당하는 크기만큼 바이너리 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하는 컬럼 바이너리 파일 저장부 및 상기 컬럼 바이너리 파일 저장부에 의해 디스크에 저장된 각각의 컬럼 별 바이너리 파일에서 셀 값을 하나씩 읽어 특정 순번의 레코드(Row)를 구성 후 레코드 단위로 메모리에 로딩하는 컬럼 바이너리 파일 리더부를 포함하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템에 관한 것이다.
본 발명에 의하면, 데이터베이스에서 조회된 테이블(Result Set)을 컬럼 단위의 바이너리 파일로 생성하여 메모리가 아닌 디스크에 저장 후 사용자의 요청이 있을 때 레코드 단위로 읽어 오기 때문에 메모리를 최소한으로 사용할 수 있어, 원본 테이블(Result Set)의 용량이 아무리 커도 메모리 오버플로우 오류가 발생하지 않는다.

Description

데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템{A SYSTEM THAT STORES LARGE AMOUNTS OF DATA RETRIEVED FROM A DATABASE AS A BINARY FILE PER COLUMN}
본 발명은 빅데이터, 클라우드 컴퓨팅 등의 환경에서 DBMS(Database Management System)에서 데이터 조회 결과 수신한 대용량 데이터를 메모리 용량의 제약 없이 처리하기 위한 컬럼 별 바이너리 파일로 저장하는 시스템에 관한 것이다.
기존에 서버의 데이터베이스에서 데이터를 조회하면 XML 형태의 스트링을 API를 이용하여 DataSet으로 변경하여 웹 서버에 저장 후 사용자 컴퓨터로 전송하거나, PHP나 JSP 파일을 API를 이용하여 JSON으로 변경하여 웹 서버에 저장 후 사용자 컴퓨터로 전송한다(3 tier 방식). 또는 서버의 데이터베이스에서 조회된 데이터를 직접 사용자 컴퓨터로 전송하여 사용자 컴퓨터에서 XML 형태의 스트링을 API를 이용하여 DataSet으로 변경하여 저장하거나, PHP나 JSP 파일을 API를 이용하여 JSON으로 변경하여 저장한다(2 tier 방식).
이와 같은 기존 방법을 이용하여 데이터베이스에서 데이터를 조회하면 조회된 데이터는 XML, JSON 또는 CSV 형식의 TEXT 파일 스트림 형태로 만들어지기 때문에 본래의 값을 표현하기 위해 필요로 하는 Byte 크기보다 커지게 된다.
결국, 이와 같은 방식으로 조회된 데이터 전부를 메모리에 로드 시 실제 값이 가지는 본래의 크기보다 더 많은 메모리를 사용하게 된다.
이에 따라 운영체제의 종류(32bit, 64bit)에 따른 프로세스가 접근할 수 있는 메모리 영역의 크기 제한으로 인해 메모리 오버플로우 오류가 발생한다.
참고로 32bit 운영체제에서 사용 가능한 총 메모리는 4G 이며, 64bit 운영체제에서 사용 가능한 총 메모리는 8G ~ 2TB 이다. 그리고 32bit 응용프로그램에서 사용 가능한 메모리는 2~3G 이며, 64bit 응용프로그램에서 사용 가능한 메모리는 8TB 이고, 단일 개체로는 2G까지 사용 가능하다.
도 1을 참고하면, XML DataSet을 사용하는 일반적인 데이터 조회 방법을 나타낸다. ① 먼저 DBMS에서 쿼리를 실행하고 ② Middle Tier(Web 서버)에서 조회 결과(Result Set) 데이터를 XML DataSet 형태로 메모리에 적재한다. 이 과정에서 Middle Tier(Web 서버)의 프로세스당 메모리 용량을 초과하는 경우 메모리 오버플로우(Memory Overflow) 오류가 발생한다. ③ 클라이언트에서 전송 받은 조회 결과(Result Set) 데이터를 XML DataSet 형태로 메모리에 적재한다. 이 과정에서 클라이언트의 프로세스당 메모리 용량을 초과하는 경우 메모리 오버플로우 오류가 발생한다. ④ 마지막으로 메모리 상의 XML DataSet을 Chart 컨트롤에 바인딩하여 Chart 로 표시한다. Chart 컨트롤에 바인딩하는 과정에서 Chart 컨트롤의 데이터 바인딩 방식에 따라 추가적으로 메모리 오버플로우 오류가 발생한다.
상기에서 살펴본 바와 같이 빅데이터 및 클라우드 컴퓨팅 환경에서 기존 방식으로 대용량의 데이터를 조회하면 프로세스당 메모리 용량을 초과하여 메모리 오버플로우 오류가 발생할 뿐만 아니라, 데이터 조회에 걸리는 시간도 상당히 오래 걸리게 된다.
등록특허 10-1530441(컬럼 기반 데이터 처리 방법 및 장치)
본 발명은 상기와 같은 문제점을 개선하기 위하여 발명된 것으로, 데이터베이스에서 조회된 데이터를 컬럼 단위의 바이너리(Binary) 파일로 생성하여 메모리가 아닌 디스크에 저장하고, 디스크에 저장된 데이터를 읽을 때는 전체 데이터를 한번에 메모리에 적재하지 않고, 레코드 단위로 메모리에 적재하여 데이터베이스에서 조회된 데이터의 용량이 아무리 커도 메모리 오버플로우(Overflow) 오류가 발생하지 않는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템을 제공하기 위한 것이다.
상기와 같은 목적을 달성하기 위하여, 본 발명은 DBMS(Database Management System)에서 데이터 조회 결과 수신한 테이블(Result Set)에 대해 수치형 컬럼은 테이블(Result Set)에 포함된 원본 컬럼 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리(Binary) 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하고, 문자형 컬럼은 테이블(Result Set)에 포함된 각 셀에 들어있는 문자수에 해당하는 크기만큼 바이너리 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하는 컬럼 바이너리 파일 저장부; 및 상기 컬럼 바이너리 파일 저장부에 의해 디스크에 저장된 각각의 컬럼 별 바이너리 파일에서 셀 값을 하나씩 읽어 특정 순번의 레코드(Row)를 구성 후 레코드 단위로 메모리에 로딩하는 컬럼 바이너리 파일 리더부를 포함하는 것을 특징으로 한다.
한편, 상기와 같은 목적을 달성하기 위하여, 본 발명은 DBMS(Database Management System)에서 데이터 조회 결과 수신한 테이블(Result Set)에 대해 각 수치형 컬럼에 속하는 셀 데이터 값의 성격에 따라 원본 컬럼에 대해 각 수치형 컬럼 별 서로 다른 용량 감소 변환 형식을 적용하여, 변환된 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리(Binary) 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하는 컬럼 바이너리 파일 저장부; 및 상기 컬럼 바이너리 파일 저장부에 의해 디스크에 저장된 각각의 컬럼 별 바이너리 파일에서 셀 값을 하나씩 구하여 특정 순번의 레코드(Row)를 구성 후 레코드 단위로 메모리에 로딩하는 컬럼 바이너리 파일 리더부를 포함하는 것을 특징으로 한다.
상기와 같은 구성의 본 발명에 따르면, 다음과 같은 효과를 도모할 수 있다.
먼저, 데이터베이스에서 조회된 테이블(Result Set)을 컬럼 단위의 바이너리 파일로 생성하여 디스크에 저장하고 컬럼 단위의 바이너리 파일에서 레코드(Row) 단위로 메모리에 적재하는 구조를 적용함으로써, 데이터 본래의 크기와 같은 크기를 유지할 수가 있고, 메모리가 아닌 디스크에 저장 후 레코드 단위로 읽어 오기 때문에 메모리를 최소한으로 사용할 수 있어, 원본 테이블(Result Set)의 용량이 아무리 커도 메모리 오버플로우 오류가 발생하지 않는다.
나아가, 데이터베이스에서 조회된 테이블(Result Set)을 컬럼 단위의 바이너리 파일로 생성하여 디스크에 저장할 때 각 셀의 용량을 감소시키는 정책을 적용하여 용량이 감소된 형태의 바이너리 파일을 저장함으로써, 데이터 본래의 크기보다 감소된 형태로 저장이 가능하여 디스크 공간을 최대한으로 절약할 수가 있다.
본 발명의 컬럼 별 바이너리 파일 저장 구조를 적용함으로써, 기존의 XML DataSet, JSON, CSV 방식의 저장 구조와 비교하여 디스크에 저장되는 데이터의 용량을 획기적으로 줄일 수가 있으며, 메모리는 최소한으로 사용할 수가 있기 때문에 메모리 자원을 최대한으로 절약하여 다른 프로세스들에게 충분한 메모리 공간을 제공할 수가 있다.
도 1은 종래기술에 따라 XML DataSet을 사용하는 일반적인 데이터 조회 방법을 나타낸다.
도 2는 본 발명에 따라 컬럼 별 바이너리 파일을 디스크에 저장 후 레코드 단위로 메모리에 적재함으로써 메모리를 거의 사용하지 않는 방법을 나타낸다.
도 3은 본 발명의 일 실시 예(제1 실시 예)에 따라 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 기능부를 설명하기 위한 블록도이다.
도 4는 본 발명의 다른 실시 예(제2 실시 예)에 따라 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 기능부를 설명하기 위한 블록도이다.
도 5는 본 발명에 따라 컬럼 별 바이너리 파일을 생성할 때 용량을 감소시키지 않는 기본 형과 용량을 감소시키는 제1-제4 용량 감소 정책에 대한 설명을 나타낸다.
도 6은 본 발명의 일 실시 예에 따라 테이블(Result Set)을 컬럼 단위의 바이너리 파일로 생성하여 디스크에 저장할 때 용량을 감소시키지 않고 원본 형식의 크기를 그대로 유지하는 컬럼 별 바이너리 파일 구조에 대한 개념도이다.
도 7은 본 발명의 다른 실시 예에 따라 테이블(Result Set)을 컬럼 단위의 바이너리 파일로 생성하여 디스크에 저장할 때 각 컬럼에 속하는 셀 데이터 값의 성격에 맞는 용량 감소 정책에 따라 원본 컬럼의 형식을 변환시키는 컬럼 별 바이너리 파일 구조에 대한 개념도이다.
도 8은 본 발명의 일 실시 예와 다른 실시 예에 따라 컬럼 단위의 바이너리 파일을 생성할 때 생성되는 헤더의 구조에 개념도이다.
도 9는 본 발명의 다른 실시 예에 따라 용량 감소 정책을 적용하였을 때 변환 후 컬럼의 크기를 변환 전 원본 컬럼의 크기와 비교한 예를 나타낸다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되는 실시 예를 참조하면 명확해질 것이다.
그러나, 본 발명은 이하에서 개시되는 실시 예로 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이다.
본 명세서에서 본 실시 예는 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
그리고 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
따라서, 몇몇 실시 예에서, 잘 알려진 구성 요소, 잘 알려진 동작 및 잘 알려진 기술들은 본 발명이 모호하게 해석되는 것을 피하기 위하여 구체적으로 설명되지 않는다.
또한, 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하고, 본 명세서에서 사용된(언급된) 용어들은 실시 예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다.
본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함하며, '포함(또는, 구비)한다'로 언급된 구성 요소 및 동작은 하나 이상의 다른 구성요소 및 동작의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다.
또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 정의되어 있지 않은 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참고로 본 발명의 바람직한 실시 예에 대하여 설명한다.
본 발명에서 레코드(Record)는 테이블의 행(Row)과 같은 의미이며, 컬럼(Column)은 테이블의 열과 같은 의미이다. 하나의 컬럼은 하나 이상의 셀(Cell)로 구성된다. Result Set은 DBMS에서 쿼리를 실행하고 얻어진 결과 데이터(테이블)를 말한다.
상위 서버와 클라이언트 사이에 중간 서버를 거치는 경우(3 tier 방식) 본 발명에 따른 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템은 중간 서버뿐만 아니라 클라이언트에도 설치되어 동작한다. 이 경우 중간 서버는 DBMS에서 데이터 조회 결과를 수신하면 컬럼 별 바이너리 파일로 생성하여 디스크에 저장하며, 클라이언트는 중간 서버에서 수신한 컬럼 별 바이너리 파일 저장 시스템을 그대로 수신하여 디스크에 저장한다.
서버와 클라이언트만으로 구성되는 경우(2 tier 방식) 본 발명에 따른 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템은 클라이언트에 설치되어 동작한다. 이 경우 클라이언트는 DBMS에서 데이터 조회 결과를 수신하면 컬럼 별 바이너리 파일로 생성하여 디스크에 저장한다.
[제1 실시 예]
제1 실시 예는 DBMS에서 데이터 조회 결과 수신한 테이블(Result Set)을 컬럼 별 바이너리 파일로 저장할 때 원본 형식의 크기를 유지하는 시스템이다.
도 2, 3, 5, 6 및 8을 참고하면, 본 발명의 일 실시 예에 따른 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템(100)은 컬럼 바이너리 파일 저장부(110)와 컬럼 바이너리 파일 리더부(120)를 포함한다.
컬럼 바이너리 파일 저장부(110)는 DBMS(Database Management System)에서 데이터 조회 결과 수신한 테이블(Result Set)에 대해 수치형 컬럼은 테이블(Result Set)에 포함된 원본 컬럼 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리(Binary) 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하고, 문자형 컬럼은 테이블(Result Set)에 포함된 각 셀에 들어있는 문자수에 해당하는 크기만큼 바이너리 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장한다.
수치형 컬럼은 big int, small int, int, float 등이 해당하며, 문자형 컬럼은 Nvarchar, varchar, char 등이 해당한다. 이 밖에도 다양한 종류의 수치형 컬럼과 문자형 컬럼이 해당한다.
컬럼 바이너리 파일 리더부(120)는 컬럼 바이너리 파일 저장부(110)에 의해 디스크에 저장된 각각의 컬럼 별 바이너리 파일에서 셀 값을 하나씩 읽어 특정 순번의 레코드(Row)를 구성 후 레코드 단위로 메모리에 로딩한다. 사용자는 디스크에 저장된 대용량의 데이터에 대해 다양한 요구 및 조회를 할 수가 있으며, 사용자의 요구 사항 발생 시 레코드 단위로 메모리에 로딩함으로써, 최소한의 메모리 자원만을 사용할 수 있어 메모리 오버플로우의 문제가 발생하지 않는다.
구체적으로, 컬럼 바이너리 파일 저장부는 고정길이 컬럼 바이너리 저장부(111)와 가변길이 컬럼 바이너리 저장부(112)를 포함한다.
고정길이 컬럼 바이너리 저장부(111)는 수치형 컬럼의 테이블(Result Set)에 포함된 원본 컬럼 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리 값으로 변환 후 하나의 바이너리 파일로 생성하여 디스크에 저장한다.
도 6을 참고하면, 테이블(Result Set)에 포함된 Col1은 헤더 8 byte를 시작으로 각 셀의 데이터를 big int 타입에 해당하는 8 byte 간격으로 차례로 바이너리 값으로 변환 후 ColumnFile0001.conbin 바이너리 파일로 생성하여 디스크에 저장한다. Col2 는 헤더 8 byte를 시작으로 각 셀의 데이터를 small int 타입에 해당하는 2 byte 간격으로 차례로 바이너리 값으로 변환 후 ColumnFile0002.conbin 바이너리 파일로 생성하여 디스크에 저장한다. Col3는 헤더 8 byte를 시작으로 int 타입에 해당하는 4 byte 간격으로 차례로 바이너리 값으로 변환 후 ColumnFile0003.conbin 바이너리 파일로 생성하여 디스크에 저장하며, Col4는 헤더 8 byte를 시작으로 float 타입에 해당하는 8 byte 간격으로 차례로 바이너리 값으로 변환 후 ColumnFile0004.conbin 바이너리 파일로 생성하여 디스크에 저장한다. 각 컬럼의 바이너리 파일 명은 예시로 든 것이며, 원본 테이블의 컬럼 형식을 그대로 유지한다.
가변길이 컬럼 바이너리 저장부(112)는 문자형 컬럼의 각 셀에 포함되는 문자수에 해당하는 바이트(Byte) 단위 크기와 셀 데이터 파일 상에서 각 셀의 문자가 시작하는 위치를 나타내는 주소 값을 동일한 크기의 하나의 셀에 속하도록 하여 각 셀을 연속적으로 구성하고 모든 셀 데이터를 차례로 바이너리 값으로 변환 후 셀 지시자(Indicator) 파일을 생성하여 디스크에 저장하며, 각 셀에 포함되는 문자수에 해당하는 바이트 단위 크기만큼 순차적으로 바이너리 값으로 변환 후 셀 데이터 파일을 생성하여 디스크에 저장한다.
도 6을 참고하면, 문자형 컬럼에 해당하는 Col5는 셀 지시자 파일에 해당하는 ColumnFile0005.conbin와 셀 데이터 파일에 해당하는 ColumnFile0005.conbin.data 두 개의 바이너리 파일로 구성된다.
예를 들어, Col5 의 두 번째 셀에 해당하는 'A…C' 의 경우 셀 지시자(Indicator) 파일에는 문자수에 해당하는 15와 셀 데이터 파일 상에서 'A…C' 가 시작하는 위치를 나타내는 주소 값 28이 두 번째 셀 위치에 포함된다. 셀 데이터 파일은 문자형 컬럼의 원본 셀에 포함되는 문자열이 바이트 단위의 크기로 연속적으로 저장된다.
문자형 컬럼의 세 번째 셀 위치에 해당하는 'A..F'를 바이너리 값으로 변환하여 저장할 때 셀 지시자 파일의 세 번째 셀 위치에는 셀 데이터 파일에서 'A..F'가 시작하는 위치를 나타내는 주소 값 43과 문자수에 해당하는 5가 저장되고, 셀 데이터 파일에는 두 번째 셀 위치의 문자열에 이어서 'A..F'를 저장한다.
위와 같은 방식으로 셀 지시자 파일에 해당하는 ColumnFile0005.conbin 바이너리 파일과 셀 데이터 파일에 해당하는 ColumnFile0005.conbin.data 바이너리 파일을 생성하여 디스크에 저장한다.
고정길이 컬럼 바이너리 저장부(111)는 고정길이 헤더 구성부(111a)를 포함한다.
도 6을 참고하면, 고정길이 헤더 구성부(111a)는 컬럼 별 바이너리 파일을 생성 시 각 컬럼마다 헤더를 생성하며, 헤더에는 테이블(Result Set)에 정의된 수치형 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식 및 컬럼 별 바이너리 파일 생성시 셀 당 크기를 저장한다. 도 6의 예에서는 수치형 컬럼의 헤더를 8 byte로 모두 동일하게 구성하는 경우를 나타내었다.
이때, 수치형 컬럼의 원본 형식과 컬럼 별 바이너리 파일의 생성 형식은 같은 값을 같고, 컬럼 별 바이너리 파일 생성시 셀 당 크기는 원본 형식의 크기와 같은 값이 저장된다.
도 6에서 고정길이 헤더 구성부(111a)는 컬럼 별 바이너리 파일 ColumnFile0001.conbin, ColumnFile0002.conbin, ColumnFile0003.conbin, ColumnFile0004.conbin 생성 시 각 컬럼마다 8 byte의 헤더를 생성한다.
도 8을 참고하면, 고정길이기본의 경우 Fetch Type 2 byte, P Type1, P Type2 각각 1 byte, P Size1, P Size2 각각 1byte 그리고 Reserved1, Reserved2 각각 1 byte로 총 8 byte로 구성된다.
여기서 Fetch Type은 조회된 테이블(Result Set)의 원본 형식을 나타내고, P Type1, P Type2 는 본 발명에 따른 컬럼 바이너리 파일 작성 형식을 나타내며, P Size1, P Size2는 본 발명에 따른 컬럼 바이너리 파일의 셀 당 크기(byte)를 나타낸다. Reserved1, Reserved2는 추가적인 사용을 위해 남겨둔 것이다.
고정길이 컬럼 바이너리 저장부(111)는 고정길이 헤더 구성부(111a)에 의해 저장된 헤더를 바이너리 값으로 변환하고, 테이블(Result Set)에 포함된 원본 컬럼의 셀 데이터를 고정길이 헤더 구성부(111a)에 의해 저장된 컬럼 별 바이너리 파일 생성시 셀 당 크기 간격으로 차례로 바이너리 값으로 변환시켜 컬럼 별 헤더와 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장한다.
도 6에서 수치형에 해당하는 Col1~Col4는 고정길이 바이너리 파일로 구성하였으나, 문자형에 해당하는 Col5는 아래와 같이 가변길이 바이너리 파일로 구성한다. 그리고 수치형 컬럼은 원본 컬럼 별로 하나의 바이너리 파일을 생성하였으나, 문자형 컬럼은 원본 컬럼 별로 셀 지시자 파일과 셀 데이터 파일로 구성되는 두 개의 바이너리 파일을 생성한다.
가변길이 컬럼 바이너리 저장부(112)는 셀 지시자 헤더 구성부(112a)와 셀 데이터 헤더 구성부(112b)를 포함한다.
도 6을 참고하면, ColumnFile0005.conbin은 셀 지시자 파일을 나타내고, ColumnFile0005.conbin.data는 셀 데이터 파일을 나타낸다.
셀 지시자 헤더 구성부(112a)는 셀 지시자(Indicator) 파일 생성 시 헤더를 생성하며, 헤더에는 테이블(Result Set)에 정의된 문자형 컬럼의 원본 형식, 셀 지시자 파일 생성 형식 및 셀 지시자 파일 생성시 셀 당 크기를 저장한다.
도 8을 참고하면, 가변길이기본이 셀 지시자 헤더 구성부(112a)에 의해 생성되는 8 byte의 First File Header를 나타낸다.
Fetch Type은 조회된 Result Set의 원본 형식을 나타내고, P Type1 및 P Type2는 셀 지시자 파일의 생성 형식을 나타내며, P Size1, P Size2는 셀 지시자 파일이 생성하는 셀 당 크기를 나타낸다.
구체적으로, P Type1에는 데이터 파일의 위치를 나타내는 정수 형식, P Type2 는 읽을 문자수 정수 형식을 나타내며, P Size1은 데이터 파일 위치 정수 형식의 크기를 나타내고, P Size2는 읽을 문자수 정수 형식의 크기(byte)를 나타낸다. Reserved1, Reserved2는 추가적인 사용을 위해 남겨둔 것이다.
도 6에서는 셀 지시자 파일을 구성하는 각 셀이 6 byte로 구성되는 예를 나타내었으며, 6 byte의 공간에 데이터 파일의 위치를 나타내는 정수와 데이터 파일의 읽을 문자수가 들어간다. 물론, 데이터 파일의 위치는 데이터 파일의 2 byte 헤더부터 계산된 위치 값이 들어간다.
가변길이 컬럼 바이너리 저장부(112)는 셀 지시자 헤더 구성부(112a)에 의해 저장된 헤더를 바이너리 값으로 변환하고, 문자형 컬럼의 각 셀에 포함되는 문자수에 해당하는 바이트 단위의 크기와 셀 데이터 파일 상에서 각 셀의 문자가 시작하는 위치를 나타내는 주소 값을 셀 지시자 헤더 구성부(112a)에 의해 저장된 셀 지시자 파일 생성 시 셀 당 크기 간격으로 차례로 바이너리 값으로 변환시켜 셀 지시자 헤더와 셀 지시자 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장한다.
도 6의 예에서는 각 셀에 포함되는 문자수에 해당하는 바이트 단위의 크기와 셀 데이터 파일 상에서 각 셀의 문자가 시작하는 위치를 나타내는 주소 값을 셀 당 크기에 해당하는 6 byte 간격으로 차례로 바이너리 값으로 변환시켜 셀 지시자 헤더와 셀 지시자 데이터가 결합된 하나의 바이너리 파일을 생성하여 디스크에 저장한다.
도 6을 참고하면, 셀 데이터 헤더 구성부(112b)는 셀 데이터 파일 생성 시 헤더를 생성하며, 헤더에는 테이블(Result Set)에 정의된 문자형 컬럼의 원본 형식을 저장한다.
도 8을 참고하면, Second File Header의 가변길이기본이 셀 데이터 헤더 구성부(112b)에 의해 생성되는 2 byte의 헤더 구조를 나타낸다. 셀 데이터 파일의 헤더는 2 바이트 또는 4 바이트로 구성할 수 있으며, 도 6에서는 2 바이트로 구성된 예를 나타낸다. 셀 데이터 헤더 구성부(112b)에 의해 생성되는 헤더에는 Result Set의 원본 형식이 포함되며, 디스크에 저장된 셀 데이터 바이너리 파일에서 문자형 컬럼을 반환할 때 헤더에 포함된 Result Set의 원본 형식으로 반환하게 된다.
가변길이 컬럼 바이너리 저장부(112)는 셀 데이터 헤더 구성부(112b)에 의해 저장된 헤더를 바이너리 값으로 변환하고, 문자형 컬럼의 각 셀에 포함되는 문자수에 해당하는 바이트 단위 크기 간격으로 각 셀의 문자를 바이너리 값으로 변환시켜 셀 데이터 헤더와 셀 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장한다.
셀 데이터 파일에는 데이터(Result Set)에 들어있던 원본 문자열 데이터가 순차적으로 바이너리 값으로 변환되어 들어가며, 상기에서 살펴본 셀 지시자 파일에서 각 셀의 문자가 시작하는 위치와 읽을 문자수 값을 확인 후 셀 데이터 파일에서 해당하는 문자수 크기만큼을 읽어서 원본 형식으로 변환 후 반환하게 된다.
컬럼 바이너리 파일 리더부(120)는 고정길이 컬럼 바이너리 리더부(121)와 가변길이 컬럼 바이너리 리더부(122)를 포함한다.
고정길이 컬럼 바이너리 리더부(121)는 디스크에 저장된 수치형 컬럼의 바이너리 파일에서 N 번째 레코드 값을 읽을 때 (바이너리 파일의 헤더 크기 + N × 바이너리 파일의 헤더에 정의된 원본 컬럼 형식의 셀 당 크기)를 구하여 N 번째 레코드 위치로 이동 후 원본 컬럼 형식의 셀 크기에 해당하는 만큼 읽어온다.
도 6을 참고하면, 수치형 컬럼에 해당하는 ColumnFile0001.conbin에서 3번째 레코드 값을 읽을 때 (바이너리 파일의 헤더 크기 8 byte + 2 × 바이너리 파일의 헤더에 정의된 원본 컬럼 형식의 셀 당 크기 8 byte)를 계산하면 3 번째 레코드 위치로 이동 후 원본 컬럼 형식의 셀 크기에 해당하는 만큼 읽어올 수 있다.
참고로, 레코드 인덱스는 0 부터 시작하며, 3 번째 레코드 인덱스 값은 2가 되는 것이다.
가변길이 컬럼 바이너리 리더부(122)는 디스크에 저장된 문자형 컬럼의 바이너리 파일에서 N 번째 레코드 값을 읽을 때 (셀 지시자(Indicator) 파일의 헤더 크기 + N × (바이너리 파일의 헤더에 정의된 셀 데이터 파일 위치 정수 형식 크기 + 읽을 문자수 정수 형식 크기))를 구하여 N 번째 레코드 위치로 이동 후 셀 데이터 파일 위치 정수 형식 크기에 해당하는 만큼 읽어서 셀 데이터 파일에서의 N 번째 레코드의 시작 주소를 구하고, 읽을 문자수 정수 형식의 크기에 해당하는 만큼 읽어서 셀 데이터 파일에서 읽을 문자수에 해당하는 바이트 크기를 구한 후 셀 데이터 파일의 N 번째 레코드의 시작 주소에서 읽을 문자수에 해당하는 바이트 크기만큼 읽어온다.
도 6을 참고하면, 문자형 컬럼의 바이너리 파일에서 3 번째 레코드 값을 읽을 때 (셀 지시자(Indicator) 파일 ColumnFile0005.conbin의 헤더 크기 8 byte + 2 × (바이너리 파일의 헤더에 정의된 셀 데이터 파일 위치 정수 형식 크기 + 읽을 문자수 정수 형식 크기))를 구한다. 도 6의 예에서 바이너리 파일의 헤더에 정의된 셀 데이터 파일 위치 정수 형식 크기와 읽을 문자수 정수 형식 크기를 더하면 6 byte가 될 것이다. 8 + 2 × 6 = 20 byte가 된다.
해당 위치에서 셀 데이터 파일 위치 정수 형식 크기에 해당하는 만큼 읽어서 셀 데이터 파일 ColumnFile0005.conbin.data 에서의 N 번째 레코드의 시작 주소인 '43'을 구하고, 읽을 문자수 정수 형식의 크기에 해당하는 만큼 읽어서 셀 데이터 파일 ColumnFile0005.conbin.data 에서 읽을 문자수에 해당하는 바이트 크기 '5'를 구한 후 셀 데이터 파일의 N 번째 레코드의 시작 주소에서 읽을 문자수에 해당하는 5 바이트 크기만큼 읽어온다.
[제2 실시 예]
제2 실시 예는 DBMS에서 데이터 조회 결과 수신한 테이블(Result Set)을 컬럼 별 바이너리 파일로 저장할 때 용량 감소 정책을 적용하여 원본 컬럼의 형식보다 용량이 감소된 방식으로 저장하는 시스템이다. 용량 감소 정책을 적용하면 디스크에 저장되는 용량을 상당히 줄일 수가 있다. 제1 실시 예의 경우와 중복되는 부분에 대해서는 자세한 설명을 생략한다.
도 4, 5, 7, 8 및 9를 참고하면, 본 발명의 다른 실시 예에 따른 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템(200)은 컬럼 바이너리 파일 저장부(210)와 컬럼 바이너리 파일 리더부(220)를 포함하며, 용량 감소 정책 정보부(230)를 더 포함할 수 있다.
컬럼 바이너리 파일 저장부(210)는 DBMS(Database Management System)에서 데이터 조회 결과 수신한 테이블(Result Set)에 대해 각 수치형 컬럼에 속하는 셀 데이터 값의 성격에 따라 원본 컬럼에 대해 각 수치형 컬럼 별 서로 다른 용량 감소 변환 형식을 적용하여, 변환된 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리(Binary) 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장한다.
컬럼 바이너리 파일 리더부(220)는 컬럼 바이너리 파일 저장부에 의해 디스크에 저장된 각각의 컬럼 별 바이너리 파일에서 셀 값을 하나씩 구하여 특정 순번의 레코드(Row)를 구성 후 레코드 단위로 메모리에 로딩한다.
용량 감소 정책 정보부(230)는 데이터 조회 결과 수신한 테이블(Result Set)의 하나 이상의 수치형 컬럼을 각각 바이너리 파일로 변환하여 생성할 때 바이너리 파일의 크기를 줄이기 위해 각 컬럼에 속하는 셀 데이터 값의 성격에 맞는 용량 감소 정책을 각 컬럼 별로 매칭하여 저장한다. 각 용량 감소 정책의 구체적인 내용은 아래에서 자세하게 설명한다.
용량 감소 정책은 문자형 컬럼에는 적용되지 않으며, 수치형 컬럼에만 적용된다. 여기서 컬럼에 속하는 셀 데이터 값의 성격은 big int, float, int, small int 등의 컬럼 타입, 해당 컬럼에 속하는 각 셀 값의 중복 정도 및 다른 컬럼에 속하는 셀 값과의 관계 등을 말하며, 각 컬럼에 속하는 셀 데이터 값의 성격에 맞는 용량 감소 정책은 관리자에 의해 매칭될 수 있다.
컬럼 바이너리 파일 저장부(210)는 수신한 테이블(Result Set)에서 컬럼 별로 셀의 데이터 값을 추출 후 용량 감소 정책 정보부(230)를 참고하여 해당 컬럼에 매칭된 용량 감소 정책에 따라 테이블의 원본 컬럼 형식 보다 용량이 감소된 컬럼 별 바이너리 파일을 생성하여 디스크에 저장한다.
용량 감소 정책 정보부(230)는 테이블(Result Set)의 원본 컬럼 타입보다 작지만 해당 컬럼에 속하는 셀의 실제 데이터 최대값을 수용할 수 있는 지정된 크기의 컬럼 타입으로 해당 컬럼의 형식을 변환시켜서 원본 컬럼의 용량을 감소시키는 제1 용량 감소 정책(231)을 포함한다.
도 5, 7, 8 및 9를 참고하면, 형식변환이 제1 용량 감소 정책(231)에 해당한다. 테이블(Result Set)의 Col1 컬럼 형식은 bigint(8 byte)이지만 실제 최대값이 int(4 byte)이어서 형식변환을 적용하여 8 byte에 해당하는 크기의 셀을 4 byte에 해당하는 크기로 용량을 축소시키는 것이다. 원본의 크기를 반으로 줄여서 디스크에 저장할 수가 있다.
컬럼 바이너리 파일 저장부(210)는 테이블(Result Set)에 정의된 해당 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식에 해당하는 제1 용량 감소 정책(231)에 의해 변환된 크기의 컬럼 형식 및 변환된 형식의 크기를 저장하는 헤더를 생성하는 제1 용량 감소 헤더 구성부(211)를 포함한다.
제1 용량 감소 헤더 구성부(211)는 8 byte의 헤더를 구성하며, Fetch Type에는 Result Set에 정의된 해당 컬럼의 원본 형식을 저장하고, P Type에는 형식 변환 형식을 저장하고, P Size에는 변환 형식의 크기를 저장하고, Reserved에는 추후 사용을 위해 남겨둔다. Fetch Type, P Type, P Size, Reserved는 각각 2 byte로 구성한다.
컬럼 바이너리 파일 저장부(210)는 제1 용량 감소 헤더 구성부(211)에 의해 생성된 헤더를 바이너리 값으로 변환하고, 테이블(Result Set)에 포함된 원본 컬럼의 셀 데이터를 제1 용량 감소 정책(231)에 의해 변환된 크기의 컬럼 형식 및 크기에 따라 테이블의 원본 컬럼 형식 보다 용량이 감소된 셀 당 크기 간격으로 차례로 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장한다.
용량 감소 정책 정보부(230)는 테이블(Result Set)의 원본 컬럼 타입이 부동소수(float)인 경우 해당 컬럼에 속하는 셀의 데이터 값을 정수 부분과 소수 부분으로 나누어 정수 부분을 수용할 수 있는 크기의 제1 타입을 지정하고, 소수 부분을 수용할 수 있는 크기의 제2 타입을 지정하여, 제1 타입과 제2 타입이 결합된 크기에 해당하는 컬럼 타입으로 원본 컬럼의 형식을 복합적으로 변환시켜서 원본 컬럼의 용량을 감소시키는 제2 용량 감소 정책(232)을 포함한다.
도 5, 7, 8 및 9를 참고하면, 형식복합변환이 제2 용량 감소 정책(232)에 해당한다. 테이블(Result Set)의 Col2 컬럼이 float(8byte)이지만 정수 부분과 소수 부분(소수 부분을 정수로 변환했을 때)의 최대값이 2byte로 표현 가능하여 총 4byte로 형식복합변환을 적용하여 디스크에 저장되는 데이터의 용량을 줄일 수가 있다. 하나의 셀 공간을 나누어 정수 부분을 수용할 수 있는 크기의 제1 타입에는 정수를 저장하고, 소수 부분을 수용할 수 있는 크기의 제2 타입에는 소수를 저장한다.
컬럼 바이너리 파일 저장부(210)는 테이블(Result Set)에 정의된 해당 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식에 해당하는 제2 용량 감소 정책(232)에 따라 정수 부분을 수용할 수 있는 크기의 제1 타입 형식, 제2 용량 감소 정책에 따라 소수 부분을 수용할 수 있는 크기의 제2 타입 형식, 제1 타입 형식의 크기 및 제2 타입 형식의 크기를 저장하는 헤더를 생성하는 제2 용량 감소 헤더 구성부(212)를 포함한다.
도 8을 참고하면, 2 byte의 Fetch Type에는 테이블(Result Set)의 원본 형식을 저장하고, 1 byte의 P Type1에는 정수 부분을 수용할 수 있는 크기의 제1 타입 형식을 저장하고, 1 byte의 P Type2에는 소수 부분을 수용할 수 있는 크기의 제2 타입 형식을 저장하고, 1 byte의 P Size1에는 제1 타입 형식의 크기를 저장하고, 1 byte의 P Size2에는 제2 타입 형식의 크기를 저장하며, Reserved1에는 소수부 정밀도를 저장한다.
컬럼 바이너리 파일 저장부(210)는 제2 용량 감소 헤더 구성부(212)에 의해 생성된 헤더를 바이너리 값으로 변환하고, 테이블(Result Set)에 포함된 원본 컬럼의 셀 데이터를 제2 용량 감소 정책(232)에 의해 변환된 크기의 컬럼 형식 및 크기에 따라 테이블의 원본 컬럼 형식 보다 용량이 감소된 셀 당 크기 간격으로 해당 컬럼의 각 셀의 정수 부분과 소수 부분을 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장한다.
용량 감소 정책 정보부(230)는 테이블(Result Set)의 원본 컬럼에 속하는 각 셀 데이터 값을 다른 컬럼의 같은 레코드(Row) 위치에 있는 셀 데이터 값을 변수로 하는 계산식에 의해 구할 수 있는 관계를 형성하는 경우 원본 컬럼에 속하는 셀 데이터 전부를 소정의 크기를 갖는 하나의 셀에 상기 계산식을 저장하는 방식으로 변환시켜 원본 컬럼의 용량을 감소시키는 제3 용량 감소 정책(233)을 포함한다.
도 5, 7, 8 및 9를 참고하면, 계산식 변환이 제3 용량 감소 정책(232)에 해당한다. 테이블(Result Set) 상의 Col3 컬럼 형식은 int(4byte)이지만 Col5 컬럼의 수식 연산 결과, Col3 = 2 * Col5 + 5 의 관계식이 성립하므로 {Col5} * 2 + 5 수식을 후위 표기법으로 변환하여 계산식 변환을 적용한다. 이와 같은 계산식을 이용하여 Col3의 값을 Col5와의 계산식에 의해 간단하게 구할 수가 있기 때문에 Col3의 원본 컬럼 데이터 대신에 계산식만 있으면 된다.
도 7의 예에서는 계산식 변환을 적용하여 8 byte의 헤더 외에 10 byte의 공간에 {Col5} * 2 + 5 수식만을 저장함으로써, 4억 바이트에 해당하는 원본 컬럼의 크기를 10 byte로 줄일 수가 있다.
컬럼 바이너리 파일 저장부(210)는 테이블(Result Set)에 정의된 해당 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식 및 컬럼 별 바이너리 파일 생성시 셀 당 크기를 저장하는 헤더를 생성하는 제3 용량 감소 헤더 구성부(213)를 포함한다.
컬럼 바이너리 파일 저장부(210)는 제3 용량 감소 헤더 구성부(213)에 의해 생성된 헤더를 바이너리 값으로 변환하고, 제3 용량 감소 정책(233)에 정의된 계산식(도 7의 예에서는 {Col5} * 2 + 5)이 포함된 소정의 크기만큼을 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장한다. 상기의 다른 컬럼 및 계산식은 사용자에 의해 지정된다.
용량 감소 정책 정보부(230)는 테이블(Result Set)의 원본 컬럼에 속하는 각 셀 데이터 값이 동일한 값에 대해서는 중복을 제거하여 서로 다른 값들로만(Distinct) 구성된 딕셔너리(Dictionary) 컬럼에 해당하는 ColumnFile0005.conbin.Dictionary 바이너리 파일을 만들고, 테이블(Result Set)의 원본 컬럼 타입보다 작고 원본 셀 데이터 값의 딕셔너리 컬럼 상의 인덱스(Index)를 저장하는 지정된 크기의 인덱스 컬럼에 해당하는 ColumnFile0005.conbin 바이너리 파일을 만들어서 원본 컬럼의 용량을 감소시키는 제4 용량 감소 정책(234)을 포함한다.
도 5, 7, 8 및 9를 참고하면, Column Dictionary가 제4 용량 감소 정책(234)에 해당한다. 테이블(Result Set)의 Col4 컬럼 형식은 int(4byte)이지만 중복제거(Distinct)했을 때 값 개수가 200개 미만이어서 셀 데이터의 중복을 제거하여 Dictionay 파일을 만들고 해당 Dictionary의 Hash값(Index Key)을 colbin 파일로 저장하는 Column Dictionary 변환을 적용한다.
도 7을 참고하면, ColumnFile0005.conbin 의 첫번째 컬럼 0은 ColumnFile0005.conbin.Dictionary 의 36을 가리키고, 두번째 컬럼 1은 42를 가리키며, 세번째 컬럼 0은 중복된 값이어서 제거된 36을 가리킨다. 네번째 컬럼 2는 중복 제거 후 한 칸 앞으로 당겨진 366을 가리킨다.
컬럼 바이너리 파일 저장부(210)는 테이블(Result Set)에 정의된 해당 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식에 해당하는 제4 용량 감소 정책(234)에 의해 지정된 인덱스 컬럼 형식 및 인덱스 컬럼 형식의 크기를 저장하는 헤더를 생성하는 제4 용량 감소 인덱스 헤더 구성부(2140a)를 포함한다.
도 8을 참고하면, First File Header(8 byte)는 제4 용량 감소 인덱스 헤더 구성부(2140a)에 의해 생성되는 헤더의 구성을 나타낸다. Fetch Type에는 데이터(Result Set)의 원본 형식이 저장되고, P Type에는 Dictionay Key(Index) 형식이 저장되고, P Size에는 Dictionay Key(Index) 형식의 크기가 저장된다.
컬럼 바이너리 파일 저장부(210)는 제4 용량 감소 인덱스 헤더 구성부(214a)에 의해 생성된 헤더를 바이너리 값으로 변환하고, 제4 용량 감소 정책(234)에 의해 지정된 크기의 인덱스 컬럼 형식 및 크기에 따라 원본 셀 데이터 값의 딕셔너리 컬럼 상의 인덱스 값을 차례로 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 인덱스 바이너리 파일로 생성하여 디스크에 저장한다.
컬럼 바이너리 파일 저장부(210)는 딕셔너리(Dictionary) 컬럼 형식 및 딕셔너리 컬럼 형식의 크기를 저장하는 헤더를 생성하는 제4 용량 감소 딕셔너리 헤더 구성부(214b)를 포함한다.
도 8을 참고하면, Second File Header(2 또는 4 byte)는 제4 용량 감소 딕셔너리 헤더 구성부(214b)에 의해 생성되는 헤더의 구성을 나타낸다. 헤더에는 Dictionary 값의 형식과 Dictionary 형식의 크기가 저장된다.
제4 용량 감소 정책(234)에 따라 테이블(Result Set)에 정의된 해당 컬럼에서 중복을 제거하여 서로 다른 값들로만 순차적으로 구성하고, 딕셔너리 컬럼의 셀 당 크기 간격으로 차례로 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 딕셔너리 바이너리 파일로 생성하여 디스크에 저장한다.
컬럼 바이너리 파일 리더부(220)는 용량 감소 정책 정보부(230)에 저장된 각 컬럼 별 용량 감소 정책을 해석하여 디스크에 저장된 수치형 컬럼 바이너리 파일에서 셀 값을 하나씩 구하고, 컬럼 바이너리 파일의 헤더에 저장된 원본 컬럼 형식으로 변환하여 특정 순번의 레코드를 구성 후 메모리에 로딩한다.
컬럼 바이너리 파일 리더부(220)는 디스크에 저장된 컬럼 별 바이너리 파일에서 헤더에 저장된 P Type과 P Size 값을 읽어서 디스크에 저장된 셀 데이터를 확인한 후 Fetch Type에 해당하는 원본 컬럼 형식으로 변환하여 특정 순번의 레코드를 구성 후 메모리에 로딩할 수 있다.
지금까지 본 발명을 바람직한 실시 예를 참조하여 상세히 설명하였지만, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시할 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다.
그리고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 특정되는 것이며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100, 200...컬럼 별 바이너리 파일로 저장하는 시스템
110, 210...컬럼 바이너리 파일 저장부
111...고정길이 컬럼 바이너리 저장부
111a...고정길이 헤더 구성부
112...가변길이 컬럼 바이너리 저장부
112a...셀 지시자 헤더 구성부
112b...셀 데이터 헤더 구성부
120, 220...컬럼 바이너리 파일 리더부
121...고정길이 컬럼 바이너리 리더부
122...가변길이 컬럼 바이너리 리더부
211...제1 용량 감소 헤더 구성부
212...제2 용량 감소 헤더 구성부
213...제3 용량 감소 헤더 구성부
214a...제4 용량 감소 인덱스 헤더 구성부
214b..제4 용량 감소 딕셔너리 헤더 구성부
230...용량 감소 정책 정보부
231...제1 용량 감소 정책
232...제2 용량 감소 정책
233...제3 용량 감소 정책
234...제4 용량 감소 정책

Claims (14)

  1. DBMS(Database Management System)에서 데이터 조회 결과 수신한 테이블(Result Set)에 대해 수치형 컬럼은 테이블(Result Set)에 포함된 원본 컬럼 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리(Binary) 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하고, 문자형 컬럼은 테이블(Result Set)에 포함된 각 셀에 들어있는 문자수에 해당하는 크기만큼 바이너리 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하는 컬럼 바이너리 파일 저장부; 및
    상기 컬럼 바이너리 파일 저장부에 의해 디스크에 저장된 각각의 컬럼 별 바이너리 파일에서 셀 값을 하나씩 읽어 특정 순번의 레코드(Row)를 구성 후 레코드 단위로 메모리에 로딩하는 컬럼 바이너리 파일 리더부를 포함하되,
    상기 컬럼 바이너리 파일 저장부는,
    수치형 컬럼의 테이블(Result Set)에 포함된 원본 컬럼 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리 값으로 변환 후 하나의 바이너리 파일로 생성하여 디스크에 저장하는 고정길이 컬럼 바이너리 저장부; 및
    문자형 컬럼의 각 셀에 포함되는 문자수에 해당하는 바이트(Byte) 단위 크기와 셀 데이터 파일 상에서 각 셀의 문자가 시작하는 위치를 나타내는 주소 값을 동일한 크기의 하나의 셀에 속하도록 하여 각 셀을 연속적으로 구성하고 모든 셀 데이터를 차례로 바이너리 값으로 변환 후 셀 지시자(Indicator) 파일을 생성하여 디스크에 저장하며, 각 셀에 포함되는 문자수에 해당하는 바이트 단위 크기만큼 순차적으로 바이너리 값으로 변환 후 셀 데이터 파일을 생성하여 디스크에 저장하는 가변길이 컬럼 바이너리 저장부를 포함하고,
    상기 컬럼 바이너리 파일 리더부는,
    디스크에 저장된 수치형 컬럼의 바이너리 파일에서 N 번째 레코드 값을 읽을 때 (바이너리 파일의 헤더 크기 + N × 바이너리 파일의 헤더에 정의된 원본 컬럼 형식의 셀 당 크기)를 구하여 N 번째 레코드 위치로 이동 후 원본 컬럼 형식의 셀 크기에 해당하는 만큼 읽어오는 고정길이 컬럼 바이너리 리더부; 및
    디스크에 저장된 문자형 컬럼의 바이너리 파일에서 N 번째 레코드 값을 읽을 때 (셀 지시자(Indicator) 파일의 헤더 크기 + N × (바이너리 파일의 헤더에 정의된 셀 데이터 파일 위치 정수 형식 크기 + 읽을 문자수 정수 형식 크기))를 구하여 N 번째 레코드 위치로 이동 후 셀 데이터 파일 위치 정수 형식 크기에 해당하는 만큼 읽어서 셀 데이터 파일에서의 N 번째 레코드의 시작 주소를 구하고, 읽을 문자수 정수 형식의 크기에 해당하는 만큼 읽어서 셀 데이터 파일에서 읽을 문자수에 해당하는 바이트 크기를 구한 후 셀 데이터 파일의 N 번째 레코드의 시작 주소에서 읽을 문자수에 해당하는 바이트 크기만큼 읽어오는 가변길이 컬럼 바이너리 리더부를 포함하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 고정길이 컬럼 바이너리 저장부는
    컬럼 별 바이너리 파일을 생성 시 각 컬럼마다 헤더를 생성하며, 헤더에는 상기 테이블(Result Set)에 정의된 수치형 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식 및 컬럼 별 바이너리 파일 생성시 셀 당 크기를 저장하는 고정길이 헤더 구성부를 포함하고,
    상기 수치형 컬럼의 원본 형식과 컬럼 별 바이너리 파일의 생성 형식은 같은 값을 같고, 컬럼 별 바이너리 파일 생성시 셀 당 크기는 원본 형식의 크기와 같은 값이 저장되며,
    상기 고정길이 컬럼 바이너리 저장부는 고정길이 헤더 구성부에 의해 저장된 헤더를 바이너리 값으로 변환하고, 테이블(Result Set)에 포함된 원본 컬럼의 셀 데이터를 상기 고정길이 헤더 구성부에 의해 저장된 컬럼 별 바이너리 파일 생성시 셀 당 크기 간격으로 차례로 바이너리 값으로 변환시켜 컬럼 별 헤더와 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  4. 청구항 1에 있어서,
    상기 가변길이 컬럼 바이너리 저장부는
    셀 지시자(Indicator) 파일 생성 시 헤더를 생성하며, 헤더에는 상기 테이블(Result Set)에 정의된 문자형 컬럼의 원본 형식, 셀 지시자 파일 생성 형식 및 셀 지시자 파일 생성시 셀 당 크기를 저장하는 셀 지시자 헤더 구성부를 포함하고,
    상기 가변길이 컬럼 바이너리 저장부는 셀 지시자 헤더 구성부에 의해 저장된 헤더를 바이너리 값으로 변환하고, 문자형 컬럼의 각 셀에 포함되는 문자수에 해당하는 바이트 단위의 크기와 셀 데이터 파일 상에서 각 셀의 문자가 시작하는 위치를 나타내는 주소 값을 상기 셀 지시자 헤더 구성부에 의해 저장된 셀 지시자 파일 생성 시 셀 당 크기 간격으로 차례로 바이너리 값으로 변환시켜 셀 지시자 헤더와 셀 지시자 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  5. 청구항 1에 있어서,
    상기 가변길이 컬럼 바이너리 저장부는
    상기 셀 데이터 파일 생성 시 헤더를 생성하며, 헤더에는 상기 테이블(Result Set)에 정의된 문자형 컬럼의 원본 형식을 저장하는 셀 데이터 헤더 구성부를 포함하고,
    상기 가변길이 컬럼 바이너리 저장부는 셀 데이터 헤더 구성부에 의해 저장된 헤더를 바이너리 값으로 변환하고, 문자형 컬럼의 각 셀에 포함되는 문자수에 해당하는 바이트 단위 크기 간격으로 각 셀의 문자를 바이너리 값으로 변환시켜 셀 데이터 헤더와 셀 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  6. 삭제
  7. DBMS(Database Management System)에서 데이터 조회 결과 수신한 테이블(Result Set)에 대해 각 수치형 컬럼에 속하는 셀 데이터 값의 성격에 따라 원본 컬럼에 대해 각 수치형 컬럼 별 서로 다른 용량 감소 변환 형식을 적용하여, 변환된 형식의 셀 크기 간격으로 해당 컬럼의 모든 셀 데이터를 차례로 바이너리(Binary) 값으로 변환 후 컬럼 별 하나의 바이너리 파일로 생성하여 디스크에 저장하는 컬럼 바이너리 파일 저장부;
    상기 컬럼 바이너리 파일 저장부에 의해 디스크에 저장된 각각의 컬럼 별 바이너리 파일에서 셀 값을 하나씩 구하여 특정 순번의 레코드(Row)를 구성 후 레코드 단위로 메모리에 로딩하는 컬럼 바이너리 파일 리더부; 및
    상기 데이터 조회 결과 수신한 테이블(Result Set)의 하나 이상의 수치형 컬럼을 각각 바이너리 파일로 변환하여 생성할 때 바이너리 파일의 크기를 줄이기 위해 각 컬럼에 속하는 셀 데이터 값의 성격에 맞는 용량 감소 정책을 각 컬럼 별로 매칭하여 저장하는 용량 감소 정책 정보부를 포함하고,
    상기 컬럼 바이너리 파일 저장부는 수신한 테이블(Result Set)에서 컬럼 별로 셀의 데이터 값을 추출 후 상기 용량 감소 정책 정보부를 참고하여 해당 컬럼에 매칭된 용량 감소 정책에 따라 테이블의 원본 컬럼 형식 보다 용량이 감소된 컬럼 별 바이너리 파일을 생성하여 디스크에 저장하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  8. 삭제
  9. 청구항 7에 있어서,
    상기 용량 감소 정책 정보부는 테이블(Result Set)의 원본 컬럼 타입보다 작지만 해당 컬럼에 속하는 셀의 실제 데이터 최대값을 수용할 수 있는 지정된 크기의 컬럼 타입으로 해당 컬럼의 형식을 변환시켜서 원본 컬럼의 용량을 감소시키는 제1 용량 감소 정책을 포함하고,
    상기 컬럼 바이너리 파일 저장부는
    상기 테이블(Result Set)에 정의된 해당 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식에 해당하는 상기 제1 용량 감소 정책에 의해 변환된 크기의 컬럼 형식 및 변환된 형식의 크기를 저장하는 헤더를 생성하는 제1 용량 감소 헤더 구성부를 포함하고,
    상기 컬럼 바이너리 파일 저장부는 제1 용량 감소 헤더 구성부에 의해 생성된 헤더를 바이너리 값으로 변환하고, 테이블(Result Set)에 포함된 원본 컬럼의 셀 데이터를 상기 제1 용량 감소 정책에 의해 변환된 크기의 컬럼 형식 및 크기에 따라 테이블의 원본 컬럼 형식 보다 용량이 감소된 셀 당 크기 간격으로 차례로 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  10. 청구항 7에 있어서,
    상기 용량 감소 정책 정보부는 테이블(Result Set)의 원본 컬럼 타입이 부동소수(float)인 경우 해당 컬럼에 속하는 셀의 데이터 값을 정수 부분과 소수 부분으로 나누어 정수 부분을 수용할 수 있는 크기의 제1 타입을 지정하고, 소수 부분을 수용할 수 있는 크기의 제2 타입을 지정하여, 제1 타입과 제2 타입이 결합된 크기에 해당하는 컬럼 타입으로 원본 컬럼의 형식을 복합적으로 변환시켜서 원본 컬럼의 용량을 감소시키는 제2 용량 감소 정책을 포함하고,
    상기 컬럼 바이너리 파일 저장부는
    상기 테이블(Result Set)에 정의된 해당 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식에 해당하는 상기 제2 용량 감소 정책에 따라 정수 부분을 수용할 수 있는 크기의 제1 타입 형식, 상기 제2 용량 감소 정책에 따라 소수 부분을 수용할 수 있는 크기의 제2 타입 형식, 제1 타입 형식의 크기 및 제2 타입 형식의 크기를 저장하는 헤더를 생성하는 제2 용량 감소 헤더 구성부를 포함하고,
    상기 컬럼 바이너리 파일 저장부는 상기 제2 용량 감소 헤더 구성부에 의해 생성된 헤더를 바이너리 값으로 변환하고, 테이블(Result Set)에 포함된 원본 컬럼의 셀 데이터를 상기 제2 용량 감소 정책에 의해 변환된 크기의 컬럼 형식 및 크기에 따라 테이블의 원본 컬럼 형식 보다 용량이 감소된 셀 당 크기 간격으로 해당 컬럼의 각 셀의 정수 부분과 소수 부분을 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  11. 청구항 7에 있어서,
    상기 용량 감소 정책 정보부는 테이블(Result Set)의 원본 컬럼에 속하는 각 셀 데이터 값을 다른 컬럼의 같은 레코드(Row) 위치에 있는 셀 데이터 값을 변수로 하는 계산식에 의해 구할 수 있는 관계를 형성하는 경우 원본 컬럼에 속하는 셀 데이터 전부를 소정의 크기를 갖는 하나의 셀에 상기 계산식을 저장하는 방식으로 변환시켜 원본 컬럼의 용량을 감소시키는 제3 용량 감소 정책을 포함하고,
    상기 컬럼 바이너리 파일 저장부는
    상기 테이블(Result Set)에 정의된 해당 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식 및 컬럼 별 바이너리 파일 생성시 셀 당 크기를 저장하는 헤더를 생성하는 제3 용량 감소 헤더 구성부를 포함하고,
    상기 컬럼 바이너리 파일 저장부는 제3 용량 감소 헤더 구성부에 의해 생성된 헤더를 바이너리 값으로 변환하고, 상기 제3 용량 감소 정책에 정의된 계산식이 포함된 소정의 크기만큼을 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 바이너리 파일로 생성하여 디스크에 저장하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  12. 청구항 11에 있어서,
    상기 다른 컬럼 및 계산식은 사용자에 의해 지정되는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  13. 청구항 7에 있어서,
    상기 용량 감소 정책 정보부는 테이블(Result Set)의 원본 컬럼에 속하는 각 셀 데이터 값이 동일한 값에 대해서는 중복을 제거하여 서로 다른 값들로만(Distinct) 구성된 딕셔너리(Dictionary) 컬럼을 만들고, 테이블(Result Set)의 원본 컬럼 타입보다 작고 원본 셀 데이터 값의 상기 딕셔너리 컬럼 상의 인덱스(Index)를 저장하는 지정된 크기의 인덱스 컬럼을 만들어서 원본 컬럼의 용량을 감소시키는 제4 용량 감소 정책을 포함하고,
    상기 컬럼 바이너리 파일 저장부는
    상기 테이블(Result Set)에 정의된 해당 컬럼의 원본 형식, 컬럼 별 바이너리 파일의 생성 형식에 해당하는 상기 제4 용량 감소 정책에 의해 지정된 인덱스 컬럼 형식 및 인덱스 컬럼 형식의 크기를 저장하는 헤더를 생성하는 제4 용량 감소 인덱스 헤더 구성부를 포함하고,
    상기 컬럼 바이너리 파일 저장부는 제4 용량 감소 인덱스 헤더 구성부에 의해 생성된 헤더를 바이너리 값으로 변환하고, 상기 제4 용량 감소 정책에 의해 지정된 크기의 인덱스 컬럼 형식 및 크기에 따라 원본 셀 데이터 값의 딕셔너리 컬럼 상의 인덱스 값을 차례로 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 인덱스 바이너리 파일로 생성하여 디스크에 저장하고,
    상기 컬럼 바이너리 파일 저장부는
    상기 딕셔너리(Dictionary) 컬럼 형식 및 딕셔너리 컬럼 형식의 크기를 저장하는 헤더를 생성하는 제4 용량 감소 딕셔너리 헤더 구성부를 포함하고,
    상기 제4 용량 감소 정책에 따라 상기 테이블(Result Set)에 정의된 해당 컬럼에서 중복을 제거하여 서로 다른 값들로만 순차적으로 구성하고, 딕셔너리 컬럼의 셀 당 크기 간격으로 차례로 바이너리 값으로 변환시켜 헤더와 데이터가 결합된 하나의 딕셔너리 바이너리 파일로 생성하여 디스크에 저장하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
  14. 청구항 7에 있어서,
    상기 컬럼 바이너리 파일 리더부는
    상기 용량 감소 정책 정보부에 저장된 각 컬럼 별 용량 감소 정책을 해석하여 디스크에 저장된 수치형 컬럼 바이너리 파일에서 셀 값을 하나씩 구하고, 컬럼 바이너리 파일의 헤더에 저장된 원본 컬럼 형식으로 변환하여 특정 순번의 레코드를 구성 후 메모리에 로딩하는 것을 특징으로 하는 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템.
KR1020190022395A 2019-02-26 2019-02-26 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템 KR102171430B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190022395A KR102171430B1 (ko) 2019-02-26 2019-02-26 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190022395A KR102171430B1 (ko) 2019-02-26 2019-02-26 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템

Publications (2)

Publication Number Publication Date
KR20200104033A KR20200104033A (ko) 2020-09-03
KR102171430B1 true KR102171430B1 (ko) 2020-10-29

Family

ID=72450275

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190022395A KR102171430B1 (ko) 2019-02-26 2019-02-26 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템

Country Status (1)

Country Link
KR (1) KR102171430B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489494A (zh) * 2022-01-13 2022-05-13 深圳欣锐科技股份有限公司 一种外部存储器存储配置参数的存储方法及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100529995B1 (ko) 1997-07-21 2005-11-22 마이에스큐엘 에이비 데이터베이스에 엘리먼트를 저장하는 방법
JP2013535737A (ja) 2010-07-27 2013-09-12 オラクル・インターナショナル・コーポレイション MySQLデータベース−異種ログベースレプリケーション
KR101530441B1 (ko) * 2013-11-28 2015-06-19 고려대학교 산학협력단 컬럼 기반 데이터 처리 방법 및 장치
KR101806449B1 (ko) 2016-05-30 2017-12-07 주식회사 인브레인 그래픽 유저 인터페이스를 이용한 ansi 쿼리문 생성 시스템 및 그 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675785A (en) * 1994-10-04 1997-10-07 Hewlett-Packard Company Data warehouse which is accessed by a user using a schema of virtual tables
JPH10269233A (ja) * 1997-03-25 1998-10-09 Hitachi Ltd 文書データベースの検索結果表示方法及び装置
KR101200773B1 (ko) * 2011-01-21 2012-11-13 충남대학교산학협력단 하둡 맵리듀스에서 네트워크 패킷 분석을 위한 입력포맷 추출방법
KR102019717B1 (ko) * 2013-01-29 2019-09-09 삼성전자 주식회사 휴대 단말기의 메모리 관리 장치 및 방법
KR20160053587A (ko) * 2014-11-05 2016-05-13 주식회사 디오텍 엔-그램 언어 모델의 데이터베이스 사이즈 최소화 방법
KR20180099349A (ko) * 2017-02-28 2018-09-05 주식회사 미디어로그 사용자 단말 및 이를 포함하는 클라우드 서비스 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100529995B1 (ko) 1997-07-21 2005-11-22 마이에스큐엘 에이비 데이터베이스에 엘리먼트를 저장하는 방법
JP2013535737A (ja) 2010-07-27 2013-09-12 オラクル・インターナショナル・コーポレイション MySQLデータベース−異種ログベースレプリケーション
KR101530441B1 (ko) * 2013-11-28 2015-06-19 고려대학교 산학협력단 컬럼 기반 데이터 처리 방법 및 장치
KR101806449B1 (ko) 2016-05-30 2017-12-07 주식회사 인브레인 그래픽 유저 인터페이스를 이용한 ansi 쿼리문 생성 시스템 및 그 방법

Also Published As

Publication number Publication date
KR20200104033A (ko) 2020-09-03

Similar Documents

Publication Publication Date Title
US11899641B2 (en) Trie-based indices for databases
US20210311912A1 (en) Reduction of data stored on a block processing storage system
EP3377991B1 (en) In-memory key-value store for a multi-model database
US9805080B2 (en) Data driven relational algorithm formation for execution against big data
EP3113043B1 (en) Method, device and host for updating metadata stored in columns in distributed file system
US20150142819A1 (en) Large string access and storage
CN102024047B (zh) 数据检索方法及装置
US20140122022A1 (en) Processing time series data from multiple sensors
CN110032604A (zh) 数据存储装置、转译装置及数据库访问方法
CN105027071B (zh) 管理对存储数据单元的操作
JP6726690B2 (ja) 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行
US10810174B2 (en) Database management system, database server, and database management method
WO2010084754A1 (ja) データベースシステム、データベース管理方法、データベース構造および記憶媒体
KR102177792B1 (ko) 컬럼 별 바이너리 파일 저장 구조를 이용하여 대용량 데이터를 메모리 용량 제약없이 차트로 표시하는 시스템
WO2017100619A1 (en) Reduction of audio data and data stored on a block processing storage system
KR102171430B1 (ko) 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템
CN102473175B (zh) Xml数据的压缩
Zhang et al. Exploring large-scale small file storage for search engines
CN111427845A (zh) 一种交互式建模分析算子数据交换方法
WO2020123710A1 (en) Efficient retrieval of data that has been losslessly reduced using a prime data sieve
JP4914117B2 (ja) データ処理システム
KR101299555B1 (ko) 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법
CN114490623A (zh) 基于信息流的大数据存储系统
CN118012656A (zh) 损坏pdf文档修复方法、装置、设备及存储介质
Jiayu et al. A read/write balanced high-performance key-value store

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right