KR102220978B1 - 데이터베이스 관리 장치 및 방법 - Google Patents

데이터베이스 관리 장치 및 방법 Download PDF

Info

Publication number
KR102220978B1
KR102220978B1 KR1020190056534A KR20190056534A KR102220978B1 KR 102220978 B1 KR102220978 B1 KR 102220978B1 KR 1020190056534 A KR1020190056534 A KR 1020190056534A KR 20190056534 A KR20190056534 A KR 20190056534A KR 102220978 B1 KR102220978 B1 KR 102220978B1
Authority
KR
South Korea
Prior art keywords
query
data
original table
period
database management
Prior art date
Application number
KR1020190056534A
Other languages
English (en)
Other versions
KR20200131655A (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 KR1020190056534A priority Critical patent/KR102220978B1/ko
Publication of KR20200131655A publication Critical patent/KR20200131655A/ko
Application granted granted Critical
Publication of KR102220978B1 publication Critical patent/KR102220978B1/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/23Updating
    • 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
    • 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
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations

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

Abstract

데이터베이스 관리 장치 및 방법에 관한 것으로, 데이터베이스 관리 장치는 시간의 흐름에 따라 적어도 하나의 데이터가 입력되는 입력부 및 원 테이블에 상기 적어도 하나의 데이터를 부가하고, 미리 정의된 주기의 경과 여부를 판단하고, 만약 주기가 경과된 경우, 상기 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 집합적으로 실행하는 프로세서를 포함할 수 있다.

Description

데이터베이스 관리 장치 및 방법{APPRATUS AND METHOD FOR MANAGEMENT OF DATABASE}
본 발명은 데이터베이스 관리 장치 및 방법에 관한 것이다.
데이터베이스(database)란 특정한 규칙이나 구조에 따라 체계적으로 구축된 데이터 집단을 의미한다. 데이터베이스는 다양한 속성을 갖는 방대한 양의 데이터로 구축되기 때문에, 사용자가 데이터베이스 내의 적어도 하나의 데이터에 용이하게 접근 또는 확인하거나 또는 이를 활용할 수 있기 위해선 적절한 데이터베이스 관리 시스템(DBMS, Database Management System)을 필요로 한다.
에스큐엘(SQL, Structured Query Language)은 데이터베이스 관리 시스템의 사용 및 관리를 위해 설계된 프로그래밍 언어로, 현재 수많은 데이터베이스는 에스큐엘을 기반으로 구현되어 있다. 에스큐엘은 적어도 하나의 쿼리(query, 질의 등으로 표현 가능하다)를 제공하며, 사용자는 이들 쿼리를 이용하여 데이터베이스 내의 데이터의 검색, 관리, 권한 또는 스키마의 관리 등을 수행할 수 있다.
시큐엘(CQL, Continuous Query Language)은 시계열 데이터베이스의 관리를 위해 상술한 에스큐엘을 기반으로 개발된 프로그래밍 언어로, 연속적인 스트림 데이터를 처리할 수 있도록 한다. 시큐엘은 시계열 데이터베이스에 입력되는 데이터와 관련된 여러 처리를 수행할 수 있도록 마련되어 있으나, 시큐엘이 제공하는 쿼리(들)만으로는 증분 데이터에 대한 용이하고 효율적인 처리가 어려우며 또한 이용되는 쿼리에 따라서 자원을 불필요하게 소모하는 단점이 존재하였다.
대한민국 공개특허 제2006-0018781호 (2006.03.02. 공개) 대한민국 공개특허 제2002-0053990호 (2002.07.06. 공개)
본 발명은 입력 데이터의 처리나 관리 등을 자원의 불필요한 소모 없이 효과적으로 용이하게 수행할 수 있는 데이터베이스 관리 장치 및 방법을 제공하는 것을 해결하고자 하는 과제로 한다.
상술한 과제를 해결하기 위하여 데이터베이스 관리 장치 및 방법이 제공된다.
데이터베이스 관리 장치는 시간의 흐름에 따라 적어도 하나의 데이터가 입력되는 입력부 및 원 테이블에 상기 적어도 하나의 데이터를 부가하고, 미리 정의된 주기의 경과 여부를 판단하고, 만약 주기가 경과된 경우 상기 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 집합적으로 실행하는 프로세서를 포함할 수 있다.
상기 프로세서는 상기 원 테이블의 마지막 식별자를 쿼리가 기 실행된 마지막 식별자와 비교함으로써 상기 원 테이블에 대한 상기 적어도 하나의 데이터의 부가 여부를 더 판단할 수 있다.
상기 프로세서는 상기 원 테이블에 대해 상기 적어도 하나의 데이터가 부가되었다고 판단되면, 상기 주기의 설정 여부를 더 판단할 수 있다.
상기 프로세서는 상기 주기가 설정되지 않았다고 판단되면, 상기 주기와 무관하게 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 각각 수행할 수 있다.
상기 원 테이블에 부가된 적어도 하나의 데이터는 쿼리가 기 실행된 레코드에 다음에 순차적으로 입력된 레코드 내지 마지막으로 입력된 레코드를 포함할 수 있다.
상기 적어도 하나의 쿼리는 상기 적어도 하나의 데이터의 필드 각각에 대응하여 실행될 수 있다.
상기 적어도 하나의 쿼리는 스트림 쿼리를 포함할 수 있다.
데이터베이스 관리 방법은 시간의 흐름에 따라 적어도 하나의 데이터가 입력되는 단계, 원 테이블에 상기 적어도 하나의 데이터를 부가하는 단계, 미리 정의된 주기의 경과 여부를 판단하는 단계 및 만약 상기 주기가 경과된 경우, 상기 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 집합적으로 실행하는 단계를 포함할 수 있다.
데이터베이스 관리 방법은 쿼리가 기 실행된 마지막 식별자와 상기 원 테이블의 마지막 식별자를 비교하는 단계 및 비교 결과를 기반으로 상기 원 테이블에 대한 상기 적어도 하나의 데이터의 부가 여부를 더 판단하는 단계를 더 포함할 수 있다.
데이터베이스 관리 방법은 상기 원 테이블에 대해 상기 적어도 하나의 데이터가 부가되었다고 판단되면, 상기 주기의 설정 여부를 더 판단하는 단계를 더 포함할 수 있다.
데이터베이스 관리 방법은 상기 주기가 설정되지 않았다고 판단되면, 상기 주기와 무관하게 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 각각 수행하는 단계를 더 포함할 수 있다.
상기 원 테이블에 부가된 적어도 하나의 데이터는 쿼리가 기 실행된 레코드에 다음에 순차적으로 입력된 레코드 내지 마지막으로 입력된 레코드를 포함할 수 있다.
상기 적어도 하나의 쿼리는 상기 적어도 하나의 데이터의 필드 각각에 대응하여 실행되는 것일 수 있다.
상기 적어도 하나의 쿼리는 스트림 쿼리를 포함 가능하다.
상술한 데이터베이스 관리 장치 및 방법에 의하면, 입력 데이터의 처리나 관리 등을 자원의 불필요한 소모 없이 효과적으로 용이하게 수행할 수 있게 되는 효과를 얻을 수 있으며, 또한 이에 따라 사용자의 편의성이 개선되는 효과도 얻을 수 있게 된다.
상술한 데이터베이스 관리 장치 및 방법에 의하면, 입력 데이터에 대한 실시간 통계 데이터를 효과적이면서 효율적으로 획득할 수 있게 되고, 또한 사전에 기록한 통계 테이블을 이용하여 통계 데이터를 검색함으로써 검색의 효율성이 증가되는 효과도 얻을 수 있다.
상술한 데이터베이스 관리 장치 및 방법에 의하면, 다량의 데이터에 대한 실시간 통계 데이터의 생성 시 증분 데이터에 대한 통계 처리만 수행하므로, 입력 성능에 대한 영향을 최소화할 수 있게 되고, 이에 따라 데이터 처리에 따른 자원 소모를 감축하거나 최소화할 수 있는 효과도 얻을 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 데이터베이스 관리 장치의 일 실시예에 대한 블록도이다.
도 2는 프로세서의 동작의 일례를 설명하기 위한 도면이다.
도 3은 데이터베이스 관리 장치의 동작을 설명하기 위한 도면이다.
도 4는 프로세서의 동작에 대한 프로그램 코드의 일 실시예에 대한 도면이다.
도 5는 데이터베이스 관리 방법의 일 실시예에 대한 흐름도이다.
이하 명세서 전체에서 동일 참조 부호는 특별한 사정이 없는 한 동일 구성요소를 지칭한다. 이하에서 사용되는 '부'가 부가된 용어는, 소프트웨어 또는 하드웨어로 구현될 수 있으며, 실시예에 따라 하나의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 복수의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 하나의 '부'가 복수의 물리적 또는 논리적 부품들로 구현되는 것도 가능하다.
명세서 전체에서 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 어떤 부분과 다른 부분에 따라서 물리적 연결을 의미할 수도 있고, 또는 전기적으로 연결된 것을 의미할 수도 있다. 또한, 어떤 부분이 다른 부분을 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 부분 이외의 또 다른 부분을 제외하는 것이 아니며, 설계자의 선택에 따라서 또 다른 부분을 더 포함할 수 있음을 의미한다.
제 1 이나 제 2 등의 용어는 하나의 부분을 다른 부분으로부터 구별하기 위해 사용되는 것으로, 특별한 기재가 없는 이상 이들이 순차적인 표현을 의미하는 것은 아니다. 또한 단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함할 수 있다.
이하 도 1 내지 도 3을 참조하여 데이터베이스 관리 장치의 구체적인 실시예에 대해서 설명하도록 한다.
도 1은 데이터베이스 관리 장치의 일 실시예에 대한 블록도이다.
데이터베이스 관리 장치(100)는 데이터베이스(10)의 생성, 수정, 갱신, 변경 및/또는 삭제 등 적어도 하나의 데이터베이스(10)를 관리할 수 있는 장치를 의미한다. 데이터베이스 관리 장치(100)는 하나의 물리적 장치를 이용하여 구현될 수도 있고, 또는 동일하거나 또는 상이한 둘 이상의 물리적 컴퓨터 장치를 조합 이용하여 구현될 수도 있다. 여기서, 물리적 컴퓨터 장치는 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버용 컴퓨터 장치, 반도체 칩 등이 장착된 기계 장치, 스마트 폰, 태블릿 피씨, 스마트 시계, 휴대용 게임기, 두부 장착형 디스플레이(HMD, Head Mounted Display) 장치, 디지털 텔레비전, 셋톱 박스, 가전기기, 개인용 디지털 보조기(PDA, Personal Digital Assistant), 내비게이션 장치, 전자 칠판, 전자 광고판, 인공지능 음향 재생 장치, 차량 및 이외 정보의 연산 처리 및 기록이 가능한 다양한 전자 장치 중 적어도 하나를 포함할 수 있다.
도 1에 도시된 일 실시예에 따르면, 데이터베이스 관리 장치(100)는 데이터베이스(10), 프로세서(110), 입력부(180) 및 저장부(190)를 포함할 수 있다.
데이터베이스(10)는 적어도 하나의 레코드(record, 개체(entity)로 표현 가능함)를 포함할 수 있으며, 적어도 하나의 레코드는 각각 적어도 하나의 필드(field, 속성(attribute)으로 표현 가능함) 각각에 대응하는 값을 포함하여 형성된 것일 수 있다. 데이터베이스(10)를 테이블의 형태로 표현하는 경우, 통상 레코드는 테이블의 행을 의미하고 필드는 테이블의 열을 의미하나, 이는 설계자에 따라 임의적으로 정의될 수도 있다.
실시예에 따라서, 데이터베이스(10)는 도 1에 도시된 바와는 다르게, 데이터베이스 관리 장치(100)와 다른 별도의 분리된 다른 전자 장치(예를 들어, 서버용 컴퓨터 장치나 외장 메모리 장치 등)에 구축되는 것도 가능하다. 다시 말해서, 데이터베이스 관리 장치(100)는 프로세서(110), 입력부(180) 및 저장부(190) 등을 포함하되, 데이터베이스(10)는 포함하지 않을 수도 있다. 이 경우, 데이터베이스 관리 장치(100)는 통신 케이블이나 무선 통신 네트워크 등을 통해서 데이터베이스(10)에 접근하여 데이터베이스(10)의 관리를 수행하도록 마련된 것일 수도 있다.
또한, 데이터베이스 관리 장치(100)는 둘 이상의 데이터베이스(10, 10-1)를 동시에 또는 이시에 관리하는 것도 가능하다. 이 경우, 데이터베이스 관리 장치(100)는 시스템의 구축 방식에 따라서, 둘 이상의 데이터베이스(10, 10-1)를 모두 포함할 수도 있고, 둘 이상의 데이터베이스(10, 10-1) 중 적어도 하나만 포함할 수도 있으며, 또는 모든 데이터베이스(10, 10-1)를 포함하지 않을 수도 있다. 모든 데이터베이스(10, 10-1)를 포함하지 않은 경우, 각각의 데이터베이스(10, 10-1)는 하나 또는 둘 이상의 다른 전자 장치에 구축된 것일 수도 있다.
일 실시예에 의하면, 데이터베이스(10, 10-1)는 시계열 데이터를 포함하는 시계열 데이터베이스일 수도 있다. 즉, 데이터베이스(10, 10-1)는 시간의 흐름에 따라 입력된 적어도 하나의 데이터를 기반으로 구축된 것일 수도 있다.
프로세서(110)는 데이터베이스 관리 장치(100)의 동작에 필요한 연산, 기억 및/또는 제어 처리를 수행함으로써 데이터베이스 관리 장치(100)가 데이터베이스(10, 10-1)의 관리 등 소정의 동작을 행하도록 할 수 있다.
일 실시예에 의하면, 프로세서(110)는 데이터베이스(10, 10-1)의 생성, 데이터베이스(10, 10-1)에 입력되는 데이터(80, 예를 들어, 증분 데이터)의 변경, 데이터의 필터링이나 추가 정보 설정, 데이터베이스(10, 10-1)의 복제, 데이터베이스(10, 10-1)의 갱신 및/또는 데이터베이스(10, 10-1)의 삭제 등과 같은 각종 동작을 수행할 수 있다. 또한, 프로세서(110)는 입력되는 데이터에 대한 통계적 처리를 실시간으로 수행할 수도 있으며, 또한 이와 같은 통계적 처리를 일정한 주기마다 수행할 수도 있고 또는 임의적 시점마다 수행할 수도 있다. 이와 같은 프로세서(110)의 동작은 사용자의 조작에 따라서 수행될 수도 있고 및/또는 미리 정의된 설정에 따라서 수행될 수도 있다.
일 실시예에 의하면, 프로세서(110)는 테이블을 생성하거나 테이블을 수정하는 테이블 관리부(120) 및 데이터의 입력에 응하여 소정의 쿼리(query)를 수행하는 쿼리 처리부(130)를 포함할 수 있다. 테이블 관리부(120) 및 쿼리 처리부(130)는 소프트웨어적으로 구현 및 구분되는 것일 수도 있고 또는 하드웨어적으로 구현 및 구분되는 것일 수도 있다.
테이블 관리부(120)는 입력부(180)를 통해 입력되거나 및/또는 저장부(190)에 저장된 데이터(80)를 기반으로 원 테이블(91)을 생성하거나 또는 데이터(80)를 포함하는 레코드를 원 테이블(91)에 부가할 수 있다. 또한, 테이블 관리부(120)는 새로 추가되는 레코드에 대한 식별자를 추가 생성할 수도 있다. 이에 따라 원 테이블(91)의 식별자의 개수는 증가하며, 이에 따라 원 테이블(91)의 최종 식별자가 갖게 되는 숫자(예를 들어, 행 식별자(RID, Row identifier)도 증가하게 된다.
쿼리 처리부(130)는 원 테이블(91)의 생성 또는 원 테이블(91)에 데이터가 추가되는지 여부나 적어도 하나의 쿼리의 처리 여부 등을 판단할 수 있는 판단부(140)와, 판단부(140)의 판단 결과에 따라서 대응하는 쿼리를 처리하는 쿼리 수행부(150)를 포함할 수 있다.
이들 프로세서(110)의 테이블 관리부(120) 및 쿼리 처리부(130)의 상세한 동작에 대해선 후술한다.
프로세서(110)는 저장부(190)에 저장된 소정의 애플리케이션을 구동시켜, 미리 정의된 연산, 판단, 처리 및/또는 제어 동작 등을 수행할 수도 있다. 여기서, 저장부(190)에 저장된 애플리케이션은 설계자에 의해 직접 작성되거나 외장 메모리 장치 등을 이용하여 전송 받아 장부(190)에 저장된 것일 수도 있고, 또는 유선 또는 무선 통신 네트워크를 통해 접속 가능한 전자 소프트웨어 유통망을 통하여 획득 또는 갱신된 것일 수도 있다.
프로세서(110)는, 예를 들어 반도체 칩 및 관련 부품을 이용하여 구현된 하나 또는 둘 이상의 처리 장치를 이용하여 구현 가능하며, 예컨대 중앙 처리 장치(CPU, Central Processing Unit), 마이크로 컨트롤러 유닛(MCU, Micro Controller Unit), 마이컴(Micom, Micro Processor), 애플리케이션 프로세서(AP, Application Processor), 전자 제어 유닛(ECU, Electronic Controlling Unit) 및/또는 각종 연산 처리 및 제어 신호의 생성이 가능한 다른 전자 장치 등을 이용하여 구현될 수 있다.
입력부(180)는 데이터베이스 관리 장치(100)의 동작에 필요한 지시 및/또는 데이터 등을 입력받을 수 있으며, 적어도 하나의 데이터 또는 적어도 하나의 데이터를 포함하고 있는 적어도 하나의 테이블(91, 이하 원 테이블)을 입력받을 수도 있다. 예를 들어, 입력부(180)는 데이터(80)를 포함하는 파일을 입력받을 수 있으며, 여기서 데이터(80)를 포함하는 파일은, 텍스트 파일(.txt) 또는 씨에스브이 파일(.csv) 등을 포함할 수 있다. 이에 따라 입력부(180)를 통해 소정의 데이터(80)가 입력될 수 있게 된다.
입력부(180)는 키보드 장치, 마우스 장치, 태블릿, 터치패드, 터치스크린, 트랙볼, 트랙패드, 조이스틱, 마이크로폰, 센서(예를 들어, 동작 센서, 광 센서, 압력 센서 또는 자이로 센서 등) 및/또는 데이터 단자(예를 들어, 직렬 포트, 병렬 포트, 범용 직렬 버스 단자 또는 썬더볼트 단자 등 데이터 전송이 가능한 입출력 단자나 통신 단자 등) 등을 포함할 수 있다. 입력부(180)는 사용자의 조작을 통해 데이터를 입력받을 수도 있고, 물리적으로 연결된 외장 메모리 장치(예를 들어, 외장 하드디스크나 외장 범용 직렬 버스 메모리 장치 등)로부터 데이터를 입력받을 수도 있으며, 및/또는 직접 또는 유무선 통신 네트워크를 통해 통신 가능하게 연결된 외부의 다른 장치로부터 데이터를 입력받을 수도 있다.
저장부(190)는 데이터베이스 관리 장치(100)의 동작과 관련된 각종 정보를 일시적 또는 비일시적으로 저장할 수 있다. 예를 들어, 저장부(190)는 데이터베이스(10, 10-1)를 저장할 수도 있고, 또는 프로세서(110)의 동작 과정에서 생성된 데이터를 기록하여 저장하고 프로세서(110)의 호출에 따라 기록 및 저장된 데이터를 프로세서(110)로 전달할 수도 있다.
저장부(190)는 주기억장치 및 보조기억장치 중 적어도 하나를 포함할 수 있다. 주기억장치는 롬(ROM) 및/또는 램(RAM)과 같은 반도체 저장 매체를 이용하여 구현된 것일 수 있다. 보조기억장치는, 플래시 메모리 장치, SD(Secure Digital) 카드, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 하드 디스크 드라이브(HDD, Hard Disc Drive), 자기 드럼, 컴팩트 디스크(CD), 디브이디(DVD) 또는 레이저 디스크 등과 같은 광 기록 매체(optical media), 자기 테이프, 광자기 디스크 및/또는 플로피 디스크 등과 같이 데이터를 영구적 또는 반영구적으로 저장 가능한 적어도 하나의 저장 매체를 이용하여 구현될 수 있다.
이하 상술한 프로세서(110)의 구체적인 동작에 대해 설명하도록 한다.
도 2는 프로세서의 동작의 일례를 설명하기 위한 도면이다.
도 2에 도시된 바와 같이, 입력부(180)로부터 또는 저장부(190)로부터 데이터(예를 들어, 레코드의 형태의 데이터)가 입력되면, 입력된 데이터는 테이블 관리부(120)로 전달될 수 있다. 여기서, 데이터의 입력은 사용자의 조작에 따라 또는 미리 정의된 설정에 따라 수행될 수 있다. 데이터가 입력되면, 이에 응하여 테이블 관리부(120)는 입력된 데이터를 기반으로 원 테이블(91)을 생성하거나 또는 입력된 데이터를 원 테이블(91)에 추가할 수 있다. 여기서 입력되는 데이터(80)는 시간의 흐름에 따라 주기적으로 또는 비주기적으로 입력되는 데이터를 포함할 수 있으며, 예를 들어, 시간에 따라 연속적으로 입력되는 데이터일 수 있다.
또한, 테이블 관리부(120)는 입력된 데이터(레코드)에 대응하는 식별자를 생성할 수 있다. 이때, 생성된 식별자와 대응하는 레코드는, 대응하는 레코드에 식별자를 부가하는 등의 방법을 통해, 상호 관계가 형성될 수도 있다. 여기서, 식별자는 레코드에 대응하는 행에 대한 식별자(즉, 행 식별자)를 포함할 수 있다. 각각의 식별자는 숫자를 그 값으로 가질 수 있다. 각각의 레코드에 대응하는 식별자의 값은, 레코드의 순서에 대응하는 숫자를 가질 수 있다. 예를 들어, 최초의 레코드의 식별자의 값은 1이나 0을 가지고, 마지막 레코드에 대응하는 마지막 식별자의 값은 레코드의 개수와 동일한 값 또는 이에 1을 차감한 값을 가질 수 있다. 만약 데이터가 원 테이블(91)에 부가되는 경우라면, 원 테이블(91)의 레코드의 증가에 대응하여 원 테이블(91)의 마지막 식별자의 값도 증가한다. 다시 말해서, 어느 하나의 원 테이블(91)의 마지막 식별자가 90의 값을 갖는 경우, 원 테이블(91)에 10개의 레코드가 추가되고 각각의 레코드마다 91 내지 100의 값을 갖는 식별자가 할당되면, 원 테이블(91)의 마지막 식별자의 값은 100으로 증가하게 된다. 테이블 관리부(120)는 이와 같이 부가된 레코드에 대응하는 식별자를 생성함으로써, 원 테이블(91)의 마지막 식별자의 값을 증가시킬 수 있다.
테이블 관리부(120)의 동작은 쿼리 처리부(130)에 의해 감시 및 확인될 수 있다. 예를 들어, 테이블 관리부(120)는 동작 결과에 대한 정보(예를 들어, 레코드의 추가 여부에 대한 정보나 원 테이블(91)의 마지막 식별자의 값 등)를 전기적 신호의 형태로 쿼리 처리부(130)로 전달하고, 쿼리 처리부(130)는 전기적 신호를 수신함으로써 테이블 관리부(120)의 동작을 감시 및 확인할 수 있다.
일 실시예에 의하면, 쿼리 처리부(130)의 판단부(140)는 소정의 데이터에 대한 쿼리의 실행에 필요한 적어도 하나의 판단을 수행할 수 있다. 일 실시예에 의하면, 쿼리 처리부(130)는, 도 2에 도시된 바와 같이, 데이터 추가 판단부(141)를 포함할 수 있으며, 주기 판단부(142)를 더 포함할 수도 있다.
데이터 추가 판단부(141)는 원 테이블(91)이 생성되었는지 여부 또는 원 테이블(91)에 데이터가 추가되었는지 여부 등을 판단할 수 있다. 예를 들어, 데이터 추가 판단부(141)는 원 테이블(91)에 대한 기존의 마지막 식별자의 값과 특정 시점(예를 들어, 현재)의 마지막 식별자의 값을 비교함으로써 원 테이블(91)에 데이터(적어도 하나의 레코드)가 추가되었는지 여부를 확인 및 판단할 수 있다. 여기서, 기존의 마지막 식별자의 값은, 기존에 수행되었던 또는 현재 수행되고 있는 쿼리가 가지고 있는 마지막 식별자의 값을 포함할 수 있다.
일 실시예에 의하면, 주기 판단부(142)는 사용자나 프로세서(110)에 의해 쿼리 실행을 위한 기간이나 주기가 설정되었는지 여부를 판단할 수 있다. 주기 판단부(142)는 쿼리 실행을 위한 특정한 기간이나 주기가 설정되어 있지 않다면, 기간이나 주기의 판단 없이 쿼리 수행부(150)에 쿼리 수행을 지시할 수 있다.
주기 판단부(142)는 만약 쿼리 실행을 위한 기간이나 주기가 설정되어 있다면, 설정된 기간이나 주기가 경과되었는지 여부를 더 판단할 수도 있다. 만약 설정된 기간이나 주기가 경과되었다면, 주기 판단부(142)는 쿼리 수행부(150)에 소정의 쿼리를 수행할 것을 지시할 수 있다. 반대로 만약 설정된 기간이나 주기가 경과되지 않았다면, 주기 판단부(142)는 쿼리 수행부(150)에 쿼리를 수행할 것을 지시하지 않을 수도 있고 또는 쿼리 수행부(150)에 쿼리를 수행하지 않을 것을 지시할 수도 있다.
실시예에 따라서, 판단부(140)는 입력된 레코드에 대응하는 적어도 하나의 쿼리가 존재하는지 여부 등을 더 판단하는 것도 가능하다. 다시 말해서, 판단부(140)는 입력된 레코드를 기반으로 특정한 동작을 수행할 것인지 여부에 대해서도 판단하도록 설계될 수도 있다.
일 실시예에 의하면, 판단부(140)가 데이터베이스용 언어(예를 들어, 에스큐엘이나 씨큐엘(CQL, Continuous Query Language) 등)을 기반으로 소프트웨어적으로 구현되는 경우에는, 이들을 통해 작성된 구문에 따른 처리, 일례로 삽입(insert) 구문에 따른 처리와는 별도로 동작하도록 설계된 것일 수도 있다. 즉, 판단부(140)의 동작은, 관계형 데이터베이스 관리 시스템(RDBMS, Relational Database Management System)의 삽입 트리거(Insert Trigger)와는 상이하게 삽입(insert) 구문의 일부로 수행되지 않는다.
쿼리 수행부(150)는 판단부(140)의 판단 결과를 기반으로 적어도 하나의 쿼리를 수행할 수 있다. 구체적으로 판단부(140)가 원 테이블(91)에 데이터가 추가되었다고 판단하면, 쿼리 수행부(150)는 이에 응하여 쿼리를 실행할 수 있다.
일 실시예에 의하면, 쿼리 수행부(150)는 일군의 데이터(레코드)에 대한 적어도 하나의 쿼리를 집합적으로 수행할 수도 있다. 구체적으로 쿼리 수행부(150)는, 판단부(140)가 쿼리 실행을 위한 기간이나 주기가 설정되었다고 판단하면, 복수의 레코드에 대한 쿼리를 집합적으로 실행할 수도 있다. 이 경우, 집합적 쿼리의 실행은 설정된 기간/주기에 대응하는 기간/주기마다 수행될 수도 있다. 여기서, 일군의 데이터는 기존에 쿼리가 실행되었던 레코드에 이어서 순차적으로 입력된 다음 레코드부터 마지막으로 입력된 레코드까지를 포함할 수 있다. 구체적으로 예를 들어, 마지막으로 쿼리가 실행된 레코드의 식별자가 M(M은 0이거나 또는 1 이상의 자연수)이라면, 일군의 데이터는 M에 1을 부가한 값(M+1)을 갖는 식별자에 대응하는 레코드부터 마지막 식별자에 대응하는 레코드를 포함할 수 있다. 다시 말해서, 집합적으로 쿼리를 수행하는 경우, 쿼리 수행부(150)는 M+1의 값을 갖는 식별자에 대응하는 레코드부터 마지막 식별자에 대응하는 레코드들에 대한 쿼리를 순차적으로 또는 일괄적으로 수행할 수 있다.
쿼리 수행부(150)는 다수의 필드, 예를 들어 k개의 필드(여기서 k는 자연수)를 포함하는 적어도 하나의 레코드에 대해 쿼리를 수행하는 경우, 각각의 필드마다 각각의 필드에 대응하는 쿼리 실행 동작(150-1 내지 150-K)를 수행할 수도 있다. 즉, 쿼리 수행부(150)는 k개의 쿼리 실행 동작(150-1 내지 150-K)을 수행할 수 있다. 이 경우, k개의 쿼리 실행 동작(150-1 내지 150-K)의 전부 또는 일부는 동시에 수행될 수도 있고 또는 순차적으로 수행될 수도 있다.
또한, 쿼리 수행부(150)는 데이터가 입력될 때마다 각각의 데이터에 대한 쿼리를 수행하는 것도 가능하다. 만약 판단부(140)가 쿼리 실행을 위한 기간이나 주기가 설정되지 않았다고 판단한 경우에는, 쿼리 수행부(150)는, 데이터가 입력될 때마다 쿼리를 실행할 수 있다. 다시 말해서, 매 레코드마다 쿼리가 실행될 수 있다.
적어도 하나의 쿼리는 사용자들이 데이터베이스(10, 10-1)의 이용이나 관리 등을 위해 이용 가능한 다양한 지시나 명령을 포함할 수 있다. 예를 들어, 쿼리는 삽입(insert)이나 선택(select) 등과 같은 명령을 포함할 수 있다. 이외에도 쿼리는 통상 설계자가 고려 가능한 다양한 지시나 명령을 포함할 수 있다.
일 실시예에 의하면, 쿼리는 스트림 쿼리(stream query)를 포함할 수도 있다. 여기서, 스트림이란 씨큐엘 기반의 실시간 데이터 처리 기능을 의미하며, 스트림 쿼리는 이와 같은 스트림을 기반으로 하는 쿼리를 의미한다. 스트림 쿼리를 이용하는 경우, 원 테이블(91)에 입력된 데이터를 실시간으로 처리할 수 있게 된다. 스트림 쿼리는 입력 테이블(91)에 대해 실행되는 insert select 구문을 포함할 수 있다. 이 경우, insert select 구문의 from 이후에 기재된 테이블 중 적어도 하나가 insert select 구문이 수행될 입력 테이블(예를 들어, 원 테이블(91))로 설정된다. 설정된 입력 테이블(91)에 존재하거나 또는 추가되는 데이터의 전부 또는 일부는 스트림 쿼리의 입력으로 이용될 수 있다. Insert select 구문을 이용하면, 원 테이블(91)에 실시간으로 부가되거나 또는 수정된 데이터 중에서 소정의 조건을 만족하는 데이터를 추출하는 동작 및 추출한 데이터를 다른 테이블(92, 이하 목표 테이블)로 입력하는 동작의 수행이 가능해진다. 실시예에 따라서, 입력 테이블(91)의 모든 데이터는 스트림 쿼리에 반드시 입력되고 어떠한 데이터의 입력이 누락되지 않도록 마련될 수도 있다. 또한, 모든 데이터는 스트림 쿼리에 오직 한번만 입력되도록 구현될 수도 있다. 다시 말해서, 한번 입력된 데이터는 반복해서 스트림 쿼리에 입력되지는 않을 수 있다. 이와 같은 스트림 쿼리의 이용은 데이터의 검색 속도 개선, 시스템의 부담 저하 또는 목표 이벤트에 대한 신속한 대처 등의 장점이 있다.
쿼리의 실행이 종료되면, 처리부(150)는 원 테이블에 대한 데이터의 추가 여부 판단에 이용된 원 테이블(91)의 마지막 식별자(구체적으로는 마지막 식별자의 값)를 기록할 수 있다. 예를 들어, 판단부(140)가 확인한 마지막 식별자가 100의 값을 갖는다면, 처리부(150)는 100을 별도로 저장부(190) 등에 기록할 수 있다. 기록된 마지막 식별자는, 이후 데이터 추가 판단부(141)에 의해 호출되어 원 테이블(91)에 데이터가 추가되었는지 여부의 판단에 이용될 수 있다. 실시예에 따라서, 마지막 식별자는 비휘발성 메모리 장치(예를 들어, 플래시 메모리 장치 등)에 저장될 수 있으며, 데이터베이스 관리 장치(100)가 구동 개시 시마다 프로세서(110)에 의해 호출 및 독출될 수 있다. 이 경우, 마지막 식별자는 마지막 식별자가 변경될 때마다 비휘발성 메모리 장치에 저장될 수 있다. 이에 따라 모든 입력에 대한 쿼리의 실행이 보장될 수 있게 된다.
쿼리의 실행이 종료되면, 쿼리의 실행 결과에 따라서, 목표 테이블(92)이 생성 또는 갱신되어 획득될 수도 있다. 목표 테이블(92)은 데이터베이스(10, 10-1)에 부가되는 등의 방법으로 데이터베이스(10, 10-1)에 속하게 된다.
종래의 관계형 데이터베이스에서, 삽입 트리거는 매 insert 구문마다 쿼리를 실행시킨다. 이는 장치의 성능을 저하시킨다. 또한 종래의 관계형 데이터베이스는 다수의 레코드에 대한 집합적인 쿼리를 처리할 수도 없다. 반면에, 상술한 바와 같은 데이터베이스 관리 장치(100)는 데이터(80)의 입력과 반드시 일치하여 쿼리를 실행시키는 것은 아니므로, 장치(100)의 성능을 상대적으로 저하시키지 않는다. 또한, 데이터베이스 관리 장치(100)는 실행 주기의 설정에 따라서 입력된 증분 데이터에 대한 주기적 집합 질의도 가능하게 한다. 이에 따라 실시간 통계 처리 등의 수행이 가능하게 된다.
이하 상술한 프로세서(110)의 동작을 예시를 들어 보다 구체적으로 설명한다.
도 3은 데이터베이스 관리 장치의 동작을 설명하기 위한 도면이다.
구체적으로, 도 3에 도시된 바와 같이 일군의 데이터(80-1), 예를 들어, 시간의 흐름에 따라 지속적으로 일군의 데이터가 입력될 수 있다. 예를 들어, 데이터는, 콤마(,)를 통해 하나의 레코드의 필드를 구분하는 씨에스브이 파일 포맷을 이용하여 입력될 수 있다.
상술한 프로세서(110) 구체적인 일례로 테이블 관리부(120)는 입력된 일군의 데이터를 기반으로 원 테이블(90-1)을 생성하거나 또는 입력된 일군의 데이터를 원 테이블(90-1)에 부가하여 원 테이블(90-1)을 갱신할 수 있다. 예를 들어, 원 테이블(90-1)은 특정 시점에 입력된 적어도 하나의 데이터들(레코드)을 행으로 하고, 특정한 필드(V0, V1, C0 내지 C15 등)의 각각의 데이터들을 열로 하여 구축된 테이블일 수 있다.
상술한 프로세서(110)의 쿼리 처리부(130)는 원 테이블(90-1)에 대한 일군의 데이터의 입력 여부나 일군의 데이터 중 적어도 하나의 데이터에 대한 쿼리 수행 여부 등을 판단하고(이는 판단부(140)에 의해 수행되도록 설계된 것일 수 있다), 적어도 하나의 데이터에 대해 각각에 대응하는 쿼리(스트림, 150-1 내지 150-N)를 수행할 수 있다. 상술한 바와 같이, 쿼리의 처리/수행(150-1 내지 150-N)은 쿼리 수행부(150)에 의해 수행되는 것일 수 있다.
일 실시예에 의하면, 각각의 쿼리(150-1 내지 150-N)는 insert select 구문을 포함할 수 있다. 여기서, insert select 구문은, 예를 들어, 센서 종류, 시간 및 감지 결과 값을 포함하는 목표 테이블(91-1)을 생성하거나 또는 갱신하기 위한 구문일 수 있다. 이 경우, 쿼리(150-1 내지 150-N)에 대응하는 insert select 구문은 다음과 같은 일례로 표현될 수 있다.
『INSERT into Target Table SELECT "Sensor Index_cN", tm, cN FROM Original Table』
여기서, Target Table은 목표 테이블(91-1)이고 Original Table은 원 테이블(90-1)이다. SELECT 문 이후의 변수는 추출 또는 생성하고자 하는 값을 의미하며, 순차적으로 센서의 종류(Sensor Index_cN)의 명칭, 시간(tm) 및 원 테이블(90-1)의 필드의 값(일례로 감지 결과 값(vN, cN))을 의미한다. cN 뒤의 N은 자연수로, 원 테이블(90-1) 내의 각 필드 값을 식별하기 위한 인덱스를 의미한다. 원 테이블(90-1)에 포함된 바와 같이 cN 대신 vN이 이용될 수도 있다.
도 3에 도시된 바와 같이, 각각의 필드(V0, V1, C0 내지 C15)마다 각각의 필드(V0, V1, C0 내지 C15)에 대응하는 쿼리(150-1 내지 150-N)가 정의 및 설정되어 있을 수 있다. 이 경우, 각각의 쿼리(150-1 내지 150-N)는 하기에 도시된 바와 같은 시큐엘 구문으로 표현될 수 있다.
『EXEC STREAM_CREATE(event_v0, 'insert into target table select "Sensor Index_V0", tm, v0 from Original Table;'); 』
『EXEC STREAM_CREATE(event_c15, 'insert into target table select "Sensor Index_C15", tm, c15 from Original Table;'); 』
각 필드(V0, V1, C0 내지 C15)에 대응하는 쿼리(150-1 내지 150-N)는 상호 독립적으로 수행되는 것도 가능하다. 각각의 쿼리(150-1 내지 150-N)의 실행에 따라서 대응하는 각각의 필드(V0, V1, C0 내지 C15)의 데이터 값은 독출되어 목표 테이블(91-1)에 입력될 수 있다.
또한, 쿼리의 실행 처리(150-1 내지 150-N)는 사용자 또는 설계자가 미리 정의한 소정의 주기마다 수행될 수도 있다. 따라서, 일정한 시간 범위 동안 획득된 레코드(들)에 대해 쿼리의 실행(150-1 내지 150-N)이 수행된다.
상술한 구문을 기반으로 쿼리 처리(150-1 내지 150-N)가 수행되면, 원 테이블(90-1)로부터 추출된 센서 종류(index) 및 시간(time)에 따른 감지 결과(value)를 포함하는 목표 테이블(91-1)의 생성 또는 갱신이 수행될 수 있게 된다. 보다 상세하게는 먼저 각 필드(열) 별로 서로 상이한 별도의 쿼리 처리 동작(150-1 내지 150-N)이 수행된다. 각각의 쿼리 처리 동작(150-1 내지 150-N)은 각 필드에 대응하여 수행될 수 있다. 이 경우 각각의 처리 동작(150-1 내지 150-N)은 상술한 구문에 기재된 바와 같이, 입력된 테이블(90-1)로부터 특정한 필드 값만을 독출하고 독출한 필드 값을 목표 테이블(91-1)에 입력함으로써 수행된다. 이에 따라 원 테이블(90-1) 기반으로 새롭게 구축된 목표 테이블(91-1)의 획득 또는 갱신이 가능해진다. 이와 같은 쿼리 처리 동작(150-1 내지 150-N)은 자동적으로 동작하며, 매우 낮은 자원 소모량으로 입력된 이벤트(즉, 데이터) 전체에 대해서 데이터 변환을 보장할 수 있다.
이하 상술한 동작을 기반으로 통계 처리를 수행하는 일 실시예를, 이를 수행하기 위해 작성된 프로그램 코드를 들어 설명하도록 한다.
도 4는 프로세서의 동작에 대한 프로그램 코드의 일 실시예에 대한 도면이다.
예를 들어, 만약 입력된 데이터들(예를 들어, 웹 로그 데이터를 포함할 수 있다)에 대해 클라이언트의 인터넷 프로토콜 주소 별로 일정한 주기(예를 들어, 10분) 동안의 실시간 통계 결과를 획득하고자 하는 경우, 먼저 도 4에 도시된 바와 같이 데이터를 입력받을 테이블(access log)을 정의한다(s1). 여기서, 클라이언트 주소(client ipv4) 등의 변수가 이용된다.
테이블이 정의되면, 정의된 테이블에 대해서 시간 및 인터넷 프로토콜 주소 별 계수 결과를 저장할 테이블(ip cnt)을 생성한다(s2).
아울러 일정한 주기(예를 들어, 10분)마다 실행될 쿼리(스트림 쿼리)를 정의한다(s3). 이때, 쿼리는, 예를 들어, 클라이언트 인터넷 프로토콜 주소 및 설정된 주기(일례로 10분)를 기준으로 입력된 데이터를 집합화한 후 실시간 통계 테이블에 입력하도록 정의될 수 있다. 이 경우, 입력 시간이나 쿼리의 실행 시간에 따라 동일 시간에 대한 통계 데이터가 여러 번 획득될 수도 있다. 다시 말해서, 통계 데이터가 중복 이용될 수도 있다. 이의 해결을 위해, 통계 처리를 위한 쿼리는 통계 데이터에 대한 재처리(예를 들어, 재계수)를 포함할 수도 있다. 재계수는 집합화의 재수행을 통해 처리될 수도 있다. 이때, 원본 데이터에 대한 쿼리 속도보다 검색 속도는 더욱 증가될 수도 있다.
이와 같이 입력된 데이터의 전부 또는 일부에 대한 쿼리의 실행에 따라, 인터넷 프로토콜 주소 및 주기 별로 통계 처리 결과(예를 들어, 계수 결과)는 기록된다.
이하 도 5를 참조하여 데이터베이스 관리 방법의 일 실시예에 대해 설명한다.
도 5는 데이터베이스 관리 방법의 일 실시예에 대한 흐름도이다.
도 5에 도시된 바에 의하면, 먼저 사용자의 조작이나 데이터의 생성/수신 등에 의하여 데이터가 입력될 수 있다(300). 데이터의 입력은, 키보드 장치, 동작 센서 및/또는 데이터 단자 등을 기반으로 수행될 수 있다.
순차적으로 입력된 데이터를 기반으로 원 테이블이 생성될 수도 있고, 또는 원 테이블에 입력된 데이터가 추가될 수도 있다(310). 이 경우, 입력된 데이터(레코드)에 대응하는 식별자가 함께 생성될 수 있으며, 식별자는 행 식별자를 포함할 수 있다.
순차적으로 원 테이블에 대한 데이터의 추가 여부가 판단될 수 있으며, 이는 예를 들어 마지막 식별자의 증가 여부를 기반으로 수행될 수 있다(320). 원 테이블에 레코드가 추가되면, 이에 대응하여 원 테이블에 식별자도 추가되면, 이에 따라 원 테이블이 포함하는 마지막 식별자의 값도 증가하게 되므로, 마지막 식별자 값의 증가 여부에 따라서 원 테이블의 데이터 추가 여부의 판단이 가능해진다.
만약 마지막 식별자가 증가하지 않은 경우라면(320의 아니오), 이후의 과정(330 내지 360)은 수행되지 않는다. 이 경우, 데이터베이스 관리 장치는 계속해서 대기 상태를 유지할 수 있다(370).
만약 마지막 식별자가 증가한 경우라면(320의 예), 순차적으로 주기가 설정되었는지 여부가 판단될 수 있다(330). 구체적으로 사용자나 프로세서 등에 의해 쿼리 실행을 위한 기간이나 주기가 설정되었는지 여부가 판단될 수 있다.
만약 쿼리 실행을 위한 기간이나 주기가 설정된 경우라면(330의 예), 주기의 경과 여부가 순차적으로 판단될 수 있다(340). 반대로 기간이나 주기가 설정되지 않은 경우라면(330의 아니오), 주기의 경과 여부는 판단되지 않으며 바로 각각의 레코드에 대한 쿼리가 실행되게 된다(350). 이 경우, 데이터가 입력될 때마다 각각의 데이터에 대한 쿼리가 수행될 수 있다.
만약 판단 결과 설정된 기간이나 주기가 경과되었다면(340의 예), 기간이나 주기 내에 입력된 일군의 데이터(즉, 일군의 레코드)에 대한 적어도 하나의 쿼리가 실행된다(350). 여기서, 적어도 하나의 쿼리는 사용자들이 데이터베이스의 이용이나 관리를 위한 다양한 지시나 명령 등을 포함할 수 있다. 적어도 하나의 쿼리는 스트림 쿼리를 포함할 수 있다. 기간이나 주기 내에 입력된 일군의 데이터에 대한 적어도 하나의 쿼리는, 집합적으로 수행될 수도 있다. 즉, 설정된 기간/주기에 대응하는 기간/주기마다 집합적 쿼리가 수행될 수도 있다. 여기서, 일군의 데이터는, 상술한 바와 같이 쿼리가 기 실행되었던 레코드의 다음에 입력된 레코드 내지 마지막으로 입력된 레코드를 포함할 수도 있다. 또한, 실시예에 따라서 복수의 쿼리가 실행될 수도 있으며, 복수의 쿼리의 실행은 다수의 필드 각각마다 대응하여 수행되는 것일 수도 있다.
판단 결과 상술한 바와 반대로 설정된 기간이나 주기가 경과되지 않았다면(340의 아니오), 쿼리의 실행(350)이나 원 테이블에 대한 마지막 식별자의 기록 또는 갱신(360)은 수행되지 않는다.
쿼리의 실행이 종료되면, 새로 획득된 마지막 식별자에 대한 값은 저장부 등에 기록될 수 있다(360). 마지막 식별자에 대한 값은 기존에 기록된 마지막 식별자의 값을 대체하여 기록될 수 있으며, 이에 따라 저장부 등에 기록된 마지막 식별자는 갱신되게 된다.
실시예에 따라, 상술한 과정(300 내지 360)은 반복될 수 있다(370). 즉, 데이터의 입력(300), 이에 따른 원 테이블의 생성/갱신(310) 또는 판단 결과에 따른 쿼리 실행(320 내지 360)은 지속적으로 반복 수행될 수도 있다.
상술한 실시예에 따른 데이터베이스 관리 방법은, 컴퓨터 장치에 의해 구동될 수 있는 프로그램의 형태로 구현될 수 있다. 여기서 프로그램은, 프로그램 명령, 데이터 파일 및 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 프로그램은 기계어 코드나 고급 언어 코드를 이용하여 설계 및 제작된 것일 수 있다. 프로그램은 상술한 데이터베이스 관리 방법을 구현하기 위하여 특별히 설계된 것일 수도 있고, 컴퓨터 소프트웨어 분야에서 통상의 기술자에게 기 공지되어 사용 가능한 각종 함수나 정의를 이용하여 구현된 것일 수도 있다. 또한, 여기서, 컴퓨터 장치는, 프로그램의 기능을 실현 가능하게 하는 프로세서나 메모리 등을 포함하여 구현된 것일 수 있으며, 필요에 따라 통신 장치를 더 포함할 수도 있다.
상술한 데이터베이스 관리 방법을 구현하기 위한 프로그램은, 컴퓨터 장치에 의해 판독 가능한 기록 매체에 기록될 수 있다. 컴퓨터 장치에 의해 판독 가능한 기록 매체는, 예를 들어, 하드 디스크나 플로피 디스크와 같은 자기 디스크 저장 매체, 자기 테이프, 콤팩트 디스크나 디브이디와 같은 광 기록 매체, 플롭티컬 디스크와 같은 자기-광 기록 매체 및 롬, 램 또는 플래시 메모리 등과 같은 반도체 저장 장치 등 컴퓨터 등의 호출에 따라 실행되는 특정 프로그램을 저장 가능한 다양한 종류의 하드웨어 장치를 포함할 수 있다.
이상 데이터베이스 관리 장치 및 방법의 여러 실시예에 대해 설명하였으나, 장치 및 방법은 오직 상술한 실시예에 한정되는 것은 아니다. 해당 기술 분야에서 통상의 지식을 가진 자가 상술한 실시예를 기초로 수정 및 변형하여 구현 가능한 다양한 장치나 방법 역시 상술한 데이터베이스 관리 장치 및 방법의 일 실시예가 될 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나 다른 구성 요소 또는 균등물에 의하여 대치되거나 또는 치환되더라도 상술한 데이터베이스 관리 장치 및 방법의 일 실시예가 될 수 있다.
10: 데이터베이스 80: 데이터(레코드)
91: 원 테이블 92: 목표 테이블
100: 데이터베이스 관리 장치 110: 프로세서
120: 테이블 관리부 130: 쿼리 처리부
140: 판단부 150: 쿼리 수행부
180: 입력부 190: 저장부

Claims (14)

  1. 시간의 흐름에 따라 적어도 하나의 데이터가 입력되는 입력부; 및
    원 테이블에 상기 적어도 하나의 데이터를 부가하고, 미리 정의된 주기의 경과 여부를 판단하고, 만약 주기가 경과된 경우, 상기 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 집합적으로 실행하는 프로세서를 포함하며,
    상기 프로세서는 상기 원 테이블의 마지막 식별자를 쿼리가 기 실행된 마지막 식별자와 비교함으로써 상기 원 테이블에 대한 상기 적어도 하나의 데이터의 부가 여부를 판단하고, 상기 원 테이블에 대해 상기 적어도 하나의 데이터가 부가되었다고 판단되면, 상기 주기의 설정 여부를 더 판단하며
    쿼리의 실행이 종료되면, 원 테이블에 대한 데이터의 추가여부 판단에 이용된 원 테이블의 마지막 식별자를 기록하고, 상기 쿼리의 실행 결과에 따라 목표 테이블이 생성 또는 갱신되어 획득되는, 데이터베이스 관리 장치.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 프로세서는 상기 주기가 설정되지 않았다고 판단되면, 상기 주기와 무관하게 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 각각 수행하는,
    데이터베이스 관리 장치.
  5. 제1항에 있어서,
    상기 원 테이블에 부가된 적어도 하나의 데이터는 쿼리가 기 실행된 레코드에 다음에 순차적으로 입력된 레코드 내지 마지막으로 입력된 레코드를 포함하는,
    데이터베이스 관리 장치.
  6. 제1항에 있어서,
    상기 적어도 하나의 쿼리는 상기 적어도 하나의 데이터의 필드 각각에 대응하여 실행되는,
    데이터베이스 관리 장치.
  7. 제1항에 있어서,
    상기 적어도 하나의 쿼리는 스트림 쿼리를 포함하는,
    데이터베이스 관리 장치.
  8. 데이터베이스 관리 장치에 의해 수행되는 데이터베이스 관리 방법에 있어서,
    시간의 흐름에 따라 적어도 하나의 데이터가 입력되는 단계;
    원 테이블에 상기 적어도 하나의 데이터를 부가하는 단계;
    미리 정의된 주기의 경과 여부를 판단하는 단계;
    만약 상기 주기가 경과된 경우, 상기 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 집합적으로 실행하는 단계;
    쿼리가 기 실행된 마지막 식별자와 상기 원 테이블의 마지막 식별자를 비교하는 단계;
    비교 결과를 기반으로 상기 원 테이블에 대한 상기 적어도 하나의 데이터 부가 여부를 판단하는 단계; 및
    상기 원 테이블에 대해 상기 적어도 하나의 데이터가 부가되었다고 판단되면, 상기 주기의 설정 여부를 더 판단하는 단계를 포함하며,
    쿼리의 실행이 종료되면, 원 테이블에 대한 데이터의 추가여부 판단에 이용된 원 테이블의 마지막 식별자를 기록하고, 상기 쿼리의 실행 결과에 따라 목표 테이블이 생성 또는 갱신되어 획득되는 데이터베이스 관리 방법.
  9. 삭제
  10. 삭제
  11. 제8항에 있어서,
    상기 주기가 설정되지 않았다고 판단되면, 상기 주기와 무관하게 원 테이블에 부가된 적어도 하나의 데이터에 대한 적어도 하나의 쿼리를 각각 수행하는 단계를 더 포함하는,
    데이터베이스 관리 방법.
  12. 제8항에 있어서,
    상기 원 테이블에 부가된 적어도 하나의 데이터는 쿼리가 기 실행된 레코드에 다음에 순차적으로 입력된 레코드 내지 마지막으로 입력된 레코드를 포함하는,
    데이터베이스 관리 방법.
  13. 제8항에 있어서,
    상기 적어도 하나의 쿼리는 상기 적어도 하나의 데이터의 필드 각각에 대응하여 실행되는,
    데이터베이스 관리 방법.
  14. 제8항에 있어서,
    상기 적어도 하나의 쿼리는 스트림 쿼리를 포함하는,
    데이터베이스 관리 방법.
KR1020190056534A 2019-05-14 2019-05-14 데이터베이스 관리 장치 및 방법 KR102220978B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190056534A KR102220978B1 (ko) 2019-05-14 2019-05-14 데이터베이스 관리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190056534A KR102220978B1 (ko) 2019-05-14 2019-05-14 데이터베이스 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200131655A KR20200131655A (ko) 2020-11-24
KR102220978B1 true KR102220978B1 (ko) 2021-02-26

Family

ID=73679692

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190056534A KR102220978B1 (ko) 2019-05-14 2019-05-14 데이터베이스 관리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102220978B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101766790B1 (ko) * 2016-03-10 2017-08-10 주식회사 티맥스데이터 메인 메모리 데이터 베이스를 관리 하기 위한 방법 및 컴퓨팅 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100426620B1 (ko) 2000-12-26 2004-04-13 한국전자통신연구원 주기억장치 상주 객체관계형 dbms 에서의 클래스 인스턴스 변경 방법
KR20060018781A (ko) 2004-08-25 2006-03-02 곽상빈 Dbms 종류에 상관없이 데이터베이스를 관리할 수 있는중개시스템
KR101769853B1 (ko) * 2015-12-28 2017-08-22 (주)비아이매트릭스 쿼리 템플릿을 이용한 스프레드시트 인터페이스 기반 데이터베이스 일괄 갱신 시스템
KR101948391B1 (ko) * 2016-11-23 2019-02-14 재단법인대구경북과학기술원 분산 파일 공유 시스템 및 분산 파일 공유 시스템에서 파일을 복제하는 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101766790B1 (ko) * 2016-03-10 2017-08-10 주식회사 티맥스데이터 메인 메모리 데이터 베이스를 관리 하기 위한 방법 및 컴퓨팅 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
다온 기술, "Big Data Stream Analytics - LOGPRESSO", 인터넷 출처: http://www.daont.co.kr/wp-content/uploads/2018/08/DAON_LOGPRESSO_201807.pdf (2018.07.31. 공개)*

Also Published As

Publication number Publication date
KR20200131655A (ko) 2020-11-24

Similar Documents

Publication Publication Date Title
US11762882B2 (en) System and method for analysis and management of data distribution in a distributed database environment
US8396852B2 (en) Evaluating execution plan changes after a wakeup threshold time
KR20200106950A (ko) Sql 질의 플랜들을 최적화하기 위한 차원 콘텍스트 전파 기술들
US11334538B2 (en) System and method for cardinality estimation feedback loops in query processing
US8949222B2 (en) Changing the compression level of query plans
JP5791149B2 (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
WO2023138665A1 (zh) 分布式数据库的查询优化方法和装置
Hesse et al. ESPBench: The enterprise stream processing benchmark
US9208234B2 (en) Database row access control
WO2015168988A1 (zh) 一种数据索引创建方法、装置及计算机存储介质
US9928271B2 (en) Aggregating and summarizing sequences of hierarchical records
KR102220978B1 (ko) 데이터베이스 관리 장치 및 방법
Ezzati‐Jivan et al. Cube data model for multilevel statistics computation of live execution traces
US10606835B2 (en) Managing data obsolescence in relational databases
US10657126B2 (en) Meta-join and meta-group-by indexes for big data
CN115168389A (zh) 请求处理方法以及装置
CN111984625B (zh) 数据库负载特征处理方法、装置、介质和电子设备
CN112835887A (zh) 数据库管理方法、装置、计算设备和存储介质
KR20210055934A (ko) 기계 학습 모델을 개발하기 위한 자가학습 시스템
JP7468691B2 (ja) データ分析処理装置、データ分析処理方法、およびプログラム
WO2021131456A1 (ja) データ管理計算機及びデータ管理方法
JP2023152910A (ja) コンピュータ実装方法、コンピュータプログラム、システム(データベース監査の精度及び効率を改善するための構造化監査ログの活用)
CN117216056A (zh) 一种业务数据存储方法、装置、设备及存储介质
JP2021099736A5 (ko)
CN117171251A (zh) 数据集成方法、介质、装置和计算设备

Legal Events

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