KR101899055B1 - 갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법 - Google Patents

갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법 Download PDF

Info

Publication number
KR101899055B1
KR101899055B1 KR1020170022390A KR20170022390A KR101899055B1 KR 101899055 B1 KR101899055 B1 KR 101899055B1 KR 1020170022390 A KR1020170022390 A KR 1020170022390A KR 20170022390 A KR20170022390 A KR 20170022390A KR 101899055 B1 KR101899055 B1 KR 101899055B1
Authority
KR
South Korea
Prior art keywords
data set
record
updated
database
data
Prior art date
Application number
KR1020170022390A
Other languages
English (en)
Other versions
KR20180096854A (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 KR1020170022390A priority Critical patent/KR101899055B1/ko
Priority to JP2018025700A priority patent/JP2018136939A/ja
Publication of KR20180096854A publication Critical patent/KR20180096854A/ko
Application granted granted Critical
Publication of KR101899055B1 publication Critical patent/KR101899055B1/ko

Links

Images

Classifications

    • G06F17/30345
    • 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
    • G06F17/246

Landscapes

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

Abstract

본 발명은 데이터베이스의 데이터셋을 엑셀, 로터스 등 스프레드시트의 워크시트로 가져와서 수정하면, 초기 데이터셋과 대비하여 갱신된 레코드 및 그 필드를 추출하고, 각 갱신된 레코드별로 쿼리문을 각각 작성하여 데이터베이스를 갱신하는, 스프레드시트 기반 데이터베이스 갱신 방법에 관한 것으로서, (a) 상기 데이터베이스로부터 대상 테이블의 데이터셋을 요청하여 가져오고, 가져온 초기 데이터셋을 저장하는 단계; (b) 스프레드시트 인터페이스를 제공하고, 워크시트를 생성하여, 상기 데이터셋의 구조와 레코드 데이터를 상기 워크시트 상에 표시하는 단계; (c) 상기 스프레드시트 인터페이스를 통한 사용자의 입력에 따라 상기 워크시트 상의 레코드셋의 레코드 데이터를 갱신하는 단계; (d) 상기 초기 데이터셋과 상기 갱신된 데이터셋을 비교하여, 갱신된 레코드를 추출하고, 갱신된 레코드의 데이터셋 구조와 레코드 데이터를 정의하는 단계; 및 (e) 정의된 레코드의 데이터셋 구조를 이용하여 갱신된 데이터에 대해서 쿼리문을 생성하고, 생성된 쿼리문을 통해 데이터베이스를 갱신하는 단계를 포함하는 구성을 마련한다.
상기와 같은 시스템에 의하여, 사무용으로 많이 사용하는 엑셀 등 스프레드시트를 이용하여 데이터베이스를 갱신함으로써, 사용자는 쿼리문 등 데이터베이스 처리 방법에 대한 지식 없이도 직관적으로 데이터를 갱신하고 데이터베이스를 업데이트할 수 있다.

Description

갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법 { A database update method based on spreadsheet interface by making queries optimized for updated records }
본 발명은 데이터베이스의 데이터셋을 엑셀, 로터스 등 스프레드시트의 워크시트로 가져와서 수정하면, 초기 데이터셋과 대비하여 갱신된 레코드 및 그 필드를 추출하고, 각 갱신된 레코드별로 쿼리문을 각각 작성하여 데이터베이스를 갱신하는, 스프레드시트 기반 데이터베이스 갱신 방법에 관한 것이다.
일반적으로, 웹 상에서 데이터베이스를 갱신(update)하기 위해서는, 데이터베이스를 처리하는 웹 프로그램과 이를 지시하기 위한 쿼리문이 필요하다. 즉, 데이터베이스 관리 시스템에서 SQL 수준에 의하여 갱신 연산이 수행된다[특허문헌 1].
구체적으로, 데이터베이스에 특정 테이블에 기록된 데이터를 입력하거나, 수정 또는 삭제하기 위해서는, JSP(JavaServer Pages), ASP(Active Server Pages), PHP(Hypertext Preprocessor) 등 서버 측 웹 프로그램을 통해 갱신된다. 구체적으로, 상기 서버 측 웹 프로그램은 데이터베이스와 연결하고, 대상 테이블의 데이터를 처리하기 위한 SQL문 등 쿼리문을 작성해야 한다. 작성된 쿼리문을 데이터베이스에 전송하고, 해당 쿼리를 처리하도록 요청하면, 데이터베이스는 수신한 해당 쿼리를 처리함으로써, 데이터베이스 내의 테이블들이 갱신된다.
따라서 상기와 같은 웹 프로그램이 데이터베이스의 쿼리문을 처리하기 위하여, 각각의 테이블 또는 해당 항목별 웹 화면을 구성해야 한다. 또한, 대상 테이블의 개수만큼 입력 화면을 별도로 개발해야 하는 문제점이 있다. 따라서 각각의 쿼리문도 개발자가 직접 작성하여야 하므로, 시간과 공수가 많이 소요되는 문제점이 있다. 또한 만들어진 화면에서도 단건 데이터 또는 소량의 데이터만 핸들링이 가능하고, 대량 데이터 처리에는 불편함과 처리에 많은 시간이 소요된다.
이를 위해, 데이터베이스를 보다 효과적으로 수정하기 위하여, 네트워크 기반에서 원격 데이터베이스를 로컬에서 수정하는 다양한 기술들이 제시되고 있다. 일례로서, 사용자 장치 상에서 다차원 데이터베이스의 일부를 캐싱하고 수정하여, 이를 다차원 데이터베이스에 반영하여, 데이터베이스를 수정하는 기술이 제시되고 있다[특허문헌 2]. 또한, 주기적인 업데이트를 샌드파일 등 특정 파일 포맷을 이용하여 업데이트하는 기술이 제시되고 있다[특허문헌 3]. 또한, 부분 데이터베이스에서 서브셋 데이터베이스의 갱신을 처리하는 기술이 제시되고 있다[특허문헌 4].
그러나 상기 선행기술들은 모두 데이터베이스의 일부인 또 다른 데이터베이스를 수정하여, 이를 모 데이터베이스에 반영하는 기술이다. 따라서 로컬에서도 데이터베이스를 구성하고 처리해야 하는 문제점이 있다. 즉, 로컬 사용자는 데이터베이스를 다룰 수 있는 지식을 갖추어야 하는 문제점이 있다.
또한, 대량의 데이터를 데이터베이스에 통합시키기 위한 기술도 제시되고 있다[특허문헌 5]. 즉, 데이터 집합을 변환 데이터로 변환하는 다수의 연속된 작업을 포함하는 처리열을 수행하여, 변환 데이터를 기준으로 데이터베이스를 변경하는 기술이다. 그러나 상기 선행기술은 새로 추가되는 데이터를 특정한 포맷으로 설정한 후에 이들 데이터들을 원래 데이터베이스로 변환하여 저장하는 기술이다. 따라서 일반 사용자가 대량의 데이터를 특정 포맷으로 구성하여야 하고, 이를 직관적으로 처리할 수 없다는 문제점이 있다.
[특허문헌 1] 한국공개특허 제10-1999-0038698호 (1999.06.05.공개) [특허문헌 2] 한국공개특허 제10-2008-0031202호 (2008.04.08.공개) [특허문헌 3] 한국공개특허 제10-2004-0053254호 (2004.06.23.공개) [특허문헌 4] 한국공개특허 제10-2012-0052301호 (2012.05.23.공개) [특허문헌 5] 한국공개특허 제10-2014-0027128호 (2014.03.06.공개)
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 데이터베이스의 데이터셋을 엑셀, 로터스 등 스프레드시트의 워크시트로 가져와서 수정하면, 초기 데이터셋과 대비하여 갱신된 레코드 및 그 필드를 추출하고, 각 갱신된 레코드별로 쿼리문을 각각 작성하여 데이터베이스를 갱신하는, 스프레드시트 기반 데이터베이스 갱신 방법을 제공하는 것이다.
또한, 본 발명의 목적은 초기 데이터셋과 갱신된 데이터셋을 대비하되, 먼저 각 레코드셋을 정렬한 후 각 레코드들을 순차적으로 대비하고, 각 레코드별로 각 필드를 대비하여 수정된 필드들도 추출하여 쿼리문을 작성하는, 스프레드시트 기반 데이터베이스 갱신 방법을 제공하는 것이다.
상기 목적을 달성하기 위해, 본 발명은 데이터베이스와 네트워크로 연결되는, 스프레드시트 기반 데이터베이스 갱신 방법에 관한 것으로서, (a) 상기 데이터베이스로부터 대상 테이블의 데이터셋을 요청하여 가져오고, 가져온 초기 데이터셋을 저장하는 단계; (b) 스프레드시트 인터페이스를 제공하고, 워크시트를 생성하여, 상기 데이터셋의 구조와 레코드 데이터를 상기 워크시트 상에 표시하는 단계; (c) 상기 스프레드시트 인터페이스를 통한 사용자의 입력에 따라 상기 워크시트 상의 레코드셋의 레코드 데이터를 갱신하는 단계; (d) 상기 초기 데이터셋과 상기 갱신된 데이터셋을 비교하여, 갱신된 레코드를 추출하고, 갱신된 레코드의 데이터셋 구조와 레코드 데이터를 정의하는 단계; 및 (e) 정의된 레코드의 데이터셋 구조를 이용하여 갱신된 데이터에 대해서 쿼리문을 생성하고, 생성된 쿼리문을 통해 데이터베이스를 갱신하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명은 스프레드시트 기반 데이터베이스 갱신 방법에 있어서, 상기 (d)단계에서, 상기 초기 데이터셋 및, 상기 갱신된 데이터셋을 각각 키(key) 필드를 이용하여 정렬을 수행하고, 상기 초기 데이터셋과 상기 갱신된 데이터셋의 각각의 레코드들을 순차적으로 대비하는 것을 특징으로 한다.
또한, 본 발명은 스프레드시트 기반 데이터베이스 갱신 방법에 있어서, 상기 (d)단계는, (d11) 상기 초기 데이터셋과 갱신된 데이터셋의 레코드들을 키 필드로 각각 정렬하는 단계; (d12) 상기 초기 데이터셋 및 갱신된 데이터셋의 처음 레코드를 현재 레코드로 설정하는 단계; (d13) 상기 초기 데이터셋 및 갱신된 데이터셋의 현재 레코드들의 키값들을 서로 비교하는 단계; (d21) 동일하면, 현재 레코드들의 필드값들을 각각 대비하여 수정 여부를 판단하여 갱신 내용을 정의하는 단계; (d31) 초기 데이터셋의 현재 레코드의 키값이 갱신된 레코드셋의 현재 레코드의 키값 보다 앞서는 경우, 초기 데이터셋의 현재 레코드가 삭제된 것으로 판단하여 갱신내용을 정의하는 단계; (d33) 초기 데이터셋의 현재 레코드를 다음 레코드로 설정하고, 상기 (d13)단계부터 다시 시작하는 단계; (d41) 갱신된 데이터셋의 현재 레코드의 키값이 초기 레코드셋의 현재 레코드의 키값 보다 앞서는 경우, 갱신된 데이터셋의 현재 레코드가 삽입된 것으로 판단하여 갱신내용을 정의하는 단계; 및, (d43) 갱신된 데이터셋의 현재 레코드를 다음 레코드로 설정하고, 상기 (d13)단계부터 다시 시작하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명은 스프레드시트 기반 데이터베이스 갱신 방법에 있어서, 상기 (d)단계는, (d22) 상기 (d21)단계 이후에, 상기 초기 데이터셋과 갱신된 데이터셋의 현재 레코드들 중에서 어느 하나가 마지막 레코드인지를 판단하는 단계; (d24) 어느 하나의 레코드가 마지막 레코드이면, 나머지 레코드들이 있는지 확인하여, 남아있는 갱신된 레코드셋의 레코드들은 삽입된 것으로, 남아있는 초기 데이터셋의 레코드들은 삭제된 것으로 판단하여 정의하는 단계; (d32) 상기 (d31)단계 이후에, 초기 데이터셋의 현재 레코드가 마지막 레코드인지를 판단하는 단계; (d34) 상기 초기 데이터셋의 현재 레코드가 마지막 레코드이면, 갱신된 데이터셋의 현재 레코드 및, 나머지 레코드들은 삽입된 것으로 판단하여 정의하는 단계; (d42) 상기 (d41)단계 이후에, 갱신된 데이터셋의 현재 레코드가 마지막 레코드인지를 판단하는 단계; 및, (d44) 갱신된 데이터셋의 현재 레코드가 마지막 레코드이면, 초기 데이터셋의 현재 레코드 및, 나머지 레코드들은 삭제된 것으로 판단하여 정의하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 본 발명은 스프레드시트 기반 데이터베이스 갱신 방법에 있어서, 상기 (d21)단계에서, 상기 초기 데이터셋 및 갱신된 데이터셋의 현재 레코드들 간의 각 필드를 비교하여 서로 다른 필드들을 수정된 필드로 판단하고, 수정된 갱신내용으로 정의하되, 갱신내용에는 갱신종류로서 수정, 키 필드의 키값, 수정된 필드들의 필드값으로 정의하고, 상기 (e)단계에서, 쿼리문을 생성할 때, 수정 쿼리문은 수정된 필드만으로 쿼리문을 작성하는 것을 특징으로 한다.
또한, 본 발명은 스프레드시트 기반 데이터베이스 갱신 방법에 있어서, 상기 (e)단계에서, 삭제 쿼리문을 키 필드만으로 생성하고, 입력 쿼리문에는 레코드셋 구조의 전체 필드를 이용하여 생성하는 것을 특징으로 한다.
또한, 본 발명은 스프레드시트 기반 데이터베이스 갱신 방법에 있어서, 상기 (d)단계에서, 데이터셋 구조를 XML 문서로 정의하고, 갱신된 데이터를 플랫 파일로 정의하되, 상기 플랫 파일에 사전에 정의된 컬럼 및 행 구분자에 의해 각 레코드의 필드값을 구분하여 정의하는 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 스프레드시트 기반 데이터베이스 갱신 방법에 의하면, 사무용으로 많이 사용하는 엑셀 등 스프레드시트를 이용하여 데이터베이스를 갱신함으로써, 사용자는 쿼리문 등 데이터베이스 처리 방법에 대한 지식 없이도 직관적으로 데이터를 갱신하고 데이터베이스를 업데이트할 수 있는 효과가 얻어진다.
또한, 본 발명에 따른 스프레드시트 기반 데이터베이스 갱신 방법에 의하면, 초기 데이터셋과 갱신된 데이터셋의 각 레코드의 각 필드들 간에도 대비하여 각 수정된 필드들도 추출함으로써, 수정된 필드만으로 수정 쿼리문을 작성하여 각 레코드별로 최적의 쿼리문을 작성할 수 있고, 이를 통해 빠른 시간 내에 쿼리문을 생성하고 처리할 수 있는 효과가 얻어진다.
또한, 본 발명에 따른 스프레드시트 기반 데이터베이스 갱신 방법에 의하면, 사용자는 손쉽게 빠르게 대량의 데이터를 처리 가능함으로써, 자신이 원하는 데이터 분석 보고서를 작성하고 분석하여, 경영계획, 시뮬레이션, 파일럿개발 시 테스트 가공 등 여러 분야에 활용할 수 있는 효과가 얻어진다.
도 1은 본 발명에 따른 스프레드시트 기반 데이터베이스 갱신 방법을 실시하기 위한 전체 시스템의 구성에 대한 블록도.
도 2는 본 발명에 따른 스프레드시트 기반 데이터베이스 갱신 방법을 실시하기 위한 전체 시스템에 대한 구성도.
도 3은 본 발명의 일실시예에 따른 스프레드시트 기반 데이터베이스 갱신 방법을 설명하는 흐름도.
도 4은 본 발명의 일실시예에 따른 목적 데이터베이스의 대상 테이블을 선정하는 화면의 일례.
도 5는 본 발명의 일실시예에 따른 워크시트 상에 테이블의 스키마를 표시한 화면의 일례.
도 6는 본 발명의 일실시예에 따른 워크시트 상에 테이블의 데이터를 표시한 화면의 일례.
도 7은 본 발명의 일실시예에 따른 워크시트 상에 테이블의 데이터가 갱신된 상태를 표시한 화면의 일례.
도 8은 본 발명의 일실시예에 따라 초기 데이터셋과 갱신된 데이터셋을 비교하여 갱신된 레코드를 추출하는 단계를 설명하는 세부 흐름도.
도 9는 본 발명의 일실시예에 따라 XML로 표시된 테이블 정보의 일례.
도 10은 본 발명의 일실시예에 따라 갱신할 데이터들을 정의한 플랫 파일의 일례.
도 11은 본 발명의 일실시예에 따라 작성된 실제 쿼리에 대한 예시도.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
먼저, 본 발명에 따른 스프레드시트 기반 데이터베이스 갱신 방법을 실시하기 위한 전체 시스템을 도 1을 참조하여 설명한다.
도 1에서 보는 바와 같이, 본 발명을 실시하기 위한 전체 시스템은 사용자 단말(10)에 설치되는 클라이언트(20), 클라이언트(20)와 네트워크로 연결되는 갱신서버(30), 및 데이터를 저장하고 관리하는 데이터베이스(40)로 구성된다. 도 2는 도의 전체 시스템을 그림으로 도시한 구성도이다. 도 2의 기재된 "사용자"가 사용자 단말(10) 내의 구성으로 클라이언트(20)에 의해 구동되는 구성을 표시하고 있다.
클라이언트(20)는 사용자 단말(10)에 설치되는 클라이언트용 프로그램 시스템으로서, 웹브라우저를 통해 사용자 인터페이스를 갖는다. 즉, 사용자는 웹브라우저 또는 웹브라우저와 같은 화면의 인터페이스를 통해, 온라인상으로 데이터 갱신 등 처리 작업을 수행한다. 이때, 사용자 단말(10)은 사용자의 명령 등을 입력받아 해당 명령을 수행하고, 처리 결과를 화면 상 또는 웹브라우저 상에 표시한다.
한편, 사용자 단말(10)은 개인용 컴퓨터(PC), 노트북, 태블릿PC, 패블릿, PDA, 스마트폰 등 컴퓨팅 기능을 가지는 컴퓨터 단말이다. 사용자 단말(10)과 갱신 서버(30)는 네트워크로 연결되어, 사용자 단말(10) 상의 클라이언트(20)는 온라인 상으로 데이터 처리 작업을 수행할 수 있다.
또한, 클라이언트(20)는 데이터 요청, 데이터 갱신 등 온라인 상으로 처리하는 작업을 갱신 서버(30)에 요청하고, 그 결과를 서버(30)로부터 가져와서 웹브라우저 상에 표시한다. 또는 처리된 데이터를 갱신 서버(30)로 전송한다. 특히, 클라이언트(20)는 데이터베이스(40)로부터 가져온 데이터를 엑셀(마이크로소프트 사의 스프레드시트 소프트웨어 상표임), 로터스(Lotus 1-2-3, 로터스 소프트웨어 사의 프로그램 상표), 한셀(한글과컴퓨터 사의 프로그램 상표) 등 스프레드시트 프로그램의 인터페이스를 통해 보여주거나 명령/데이터를 입력받는다. 또한, 클라이언트(20)는 스프레드시트 인터페이스를 통해 처리된 데이터의 갱신 결과를 갱신 서버(30)로 전송한다.
다음으로, 갱신 서버(30)는 데이터베이스(40)로부터 데이터셋을 가져와서 클라이언트(20)로 전송하거나, 클라이언트(20)로부터 갱신된 데이터셋을 회신하여 데이터베이스(40)를 갱신한다. 특히, 갱신 서버(30)는 클라이언트(20)에서 새로 추가되거나 삭제되거나, 수정된 데이터를 검출하여, 변경된 데이터를 처리하기 위한 데이터베이스 쿼리문을 자동으로 작성한다. 갱신 서버(30)는 작성된 쿼리문을 데이터베이스(40)로 요청하여, 그 결과가 데이터베이스(40)에 반영되도록 요청한다.
한편, 앞서 설명한 클라이언트(20)와 갱신 서버(30)의 기능은 일례이고, 서버와 클라이언트의 구현 기술에 따라 다양하게 구현될 수 있다. 즉, 클라이언트(20)와 갱신 서버(30)는 하나의 갱신 시스템으로서, 그 기능들이 성능에 따라 서로 분배될 수 있다.
다른 예로서, 클라이언트(20)는 단순히 웹브라우저 기능만 가지고 있고, 모든 기능은 갱신 서버(30)에서 구축될 수 있다. 즉, 갱신 서버(30)는 데이터베이스(40)의 인터페이스 기능, 및, 수정된 데이터에 대한 쿼리문 작성 기능 뿐만 아니라, 스프레드시트 기반의 인터페이스를 통해 데이터를 수정하는 기능을 모두 가질 수 있다.
또 다른 예로서, 갱신 서버(30)는 단순히 데이터베이스(40)와의 인터페이스 기능만을 가지고 있고, 클라이언트(20)에서 스프레드시트 기반의 인터페이스를 통해 데이터 수정 기능 뿐만 아니라, 수정된 데이터에 대한 쿼리문 자동 생성 기능까지 구비될 수 있다.
또 다른 예로서, 갱신 서버(30) 없이, 클라이언트(20)가 바로 데이터베이스(40)에 접속하여, 앞서 설명한 데이터베이스 접속, 스프레드시트 인터페이스를 통한 데이터 수정 기능, 및, 쿼리문 자동 생성 기능 등을 모두 구비할 수 있다.
다음으로, 데이터베이스(60)는 데이터를 저장하기 위한 통상의 데이터베이스(DB)로서, 데이터를 관리하기 위한 DBMS를 구비하고, 데이터의 저장, 삭제, 검색 등의 작업들을 쿼리를 통해 수행한다. 특히, 데이터베이스(40)는 상용화된 데이터베이스로서, 데이터셋을 처리하기 위한 일반적인 쿼리 기능을 이용하여, 데이터 쿼리 서비스를 수행한다.
특히, 데이터베이스(40)는 빅데이터를 저장하는 데이터베이스이다. 또한, 바람직하게는, 데이터베이스(40)는 관계형 데이터베이스(RDB)로 구성된다.
이하의 설명에서, 데이터셋의 수정, 삭제, 삽입 등 전체 데이터셋을 변경하는 작업을 "갱신"하는 작업으로 표현한다. 즉, 갱신 작업은 수정, 삭제, 삽입을 모두 포함하는 개념으로 사용한다. 즉, 수정은 레코드 중 일부 필드 값을 변경하는 것을 말하고, 갱신은 레코드를 수정, 삭제, 삽입 등 변경하는 작업을 말한다. 의미 차이가 크지 않는 경우에는 "수정" 용어을 "갱신" 용어와 혼용한다.
다음으로, 본 발명의 일실시예에 따른 스프레드시트 기반 데이터베이스 갱신 방법을 도 3을 참조하여 보다 구체적으로 설명한다. 앞서 설명한 바와 같이, 데이터베이스 갱신 방법은 사용자 단말(10)의 클라이언트(20)와 네트워크에 연결된 서버(30)에 의해 수행되는 방법이다.
도 3에서 보는 바와 같이, 본 발명의 일실시예에 따른 스프레드시트 기반 데이터베이스 갱신 방법은 (a) 데이터베이스의 데이터셋을 요청하여 수신하는 단계(S100), 요청한 데이터셋을 스프레드시트 인터페이스에 표시하는 단계(S200), 워크시트 상에서 데이터셋 중 일부 데이터를 갱신하는 단계(S300), 초기 데이터셋과 갱신된 데이터셋을 비교하여 갱신내용을 추출하여 정의하는 단계(S400), 갱신된 데이터를 갱신하기 위한 쿼리문을 생성하여 데이터베이스를 갱신하는 단계(S500)로 구성된다.
먼저, 갱신서버(30)는 데이터베이스(40)에 요청하여 데이터베이스(40)로부터 데이터셋을 가져온다(S100). 데이터셋이란 동일한 필드들로 구성되는 다수의 레코드들로 구성되는 데이터들의 집합을 의미한다. 즉, 하나의 레코드는 다수의 필드값으로 구성되는데, 모든 레코드의 필드(컬럼)는 동일한 필드(또는 컬럼)를 갖는다.
바람직하게는, 데이터셋은 하나의 DB 테이블로부터 가져온 데이터들이다.
구체적으로, 갱신서버(30)는 데이터베이스(40)에 요청하여, 목적 데이터베이스의 테이블 리스트를 조회하고, 조회된 테이블 리스트를 화면에 표시한다. 사용자는 화면에서 표시된 테이블 리스트 중에서 자신이 원하는 테이블을 선택할 수 있다. 도 4는 테이블 리스트 중에서 가져올 테이블을 선택하는 화면의 일례를 도시하고 있다.
사용자 화면에 표시된 테이블 중 하나가 선택되면, 해당 테이블에 대한 스키마(schema) 정보를 가져온다. 목적 데이터베이스 또는 대상 테이블의 스키마(schema)는 테이블의 데이터가 어떻게 구성되어 있는지에 대한 세부 정보이다. 즉, 스키마(schema)에는 각 데이터 필드의 이름, 표시명, 데이터의 타입(종류), 조건 등을 테이블 데이터의 구조를 나타낸다. 상기와 같이 가져온 데이터들은 하나의 데이터셋을 형성한다.
다른 일례로서, 갱신서버(30)는 목적 데이터베이스의 테이블 데이터를 쿼리문을 통해 가져올 수 있다. 바람직하게는, 이때의 쿼리문은 하나의 테이블에 대한 쿼리문이고, 반드시 쿼리 결과 내에 해당 테이블의 키(key) 필드가 존재하여야 한다. 이때 다수의 필드들이 키를 형성하는 경우, 해당되는 다수의 필드들이 모두 포함하여야 한다. 쿼리문을 통해 가져온 데이터들은 하나의 데이터셋을 형성한다.
즉, 갱신서버(30)는 목적 데이터베이스로부터 데이터셋을 가져온다. 앞서 테이블을 선택하는 경우에는 가져오는 데이터셋은 해당 테이블의 모든 데이터이고, 대상 테이블을 쿼리문을 가져온 경우에는 쿼리문에 의한 필터링된 테이블의 일부이다. 이때, 바람직하게는, 자바 DB 연결 드라이버(JDBC) 등을 통해 목적 데이터베이스의 데이터를 가져온다. 앞서 데이터 스키마도 자바 DB 연결 드라이버를 이용하여 가져온다.
한편, 다른 실시예로서, 갱신서버(30)는 목적 데이터베이스의 대상 테이블을 데이터셋으로 가져오고, 가져온 데이터셋(또는 대상 테이블)에 대하여 쿼리를 수행하는 쿼리편집기를 이용하여, 쿼리 결과를 추출할 수 있다. 그리고 추출된 쿼리 결과를 하나의 데이터셋으로 이용하게 할 수 있다. 즉, 이하에서 설명할 갱신서버(30)에서 추출된 쿼리 결과의 데이터셋만을 워크시트 상에 데이터로 표시할 수 있다. 이를 통해, 대상 테이블 전체를 워크시트 상에 표시하지 않고, 사용자가 원하는 필드들만으로 구성된 테이블을 워크시트 상에 표시할 수 있다. 또한, 불필요한 데이터 필드를 표시하지 않음으로써, 사용자의 데이터 편집의 편의성을 제고할 수 있다.
앞서와 같이, 목적 데이터베이스로부터 가져온 테이블의 데이터셋 또는, 쿼리문에 의한 가져온 데이터셋, 또는, 테이블을 쿼리문에 의해 필터링한 데이터셋 등은 모두 갱신할 데이터셋이다. 이를 이하에서 초기 데이터셋(제1 데이터셋 또는 원본 데이터셋)이라 부르기로 한다.
또한, 갱신서버(30)는 초기 데이터셋을 저장해둔다.
다음으로, 갱신서버(30)는 스프레드시트 인터페이스를 제공하고, 엑셀, 로터스 등 스프레드시트 상에 워크시트(이하 워크시트)를 생성하고, 생성한 워크시트 상에 데이터셋을 표시한다(S200). 특히, 목적 데이터베이스로부터 가져온 데이터셋을 스프레드시트의 워크시트 상에 표시한다. 스프레드시트는 엑셀(마이크로소프트 사의 프로그램 상표), 로터스(Lotus 1-2-3, 로터스 소프트웨어 사의 프로그램 상표), 한셀(한글과컴퓨터 사의 프로그램 상표) 등, 행과 열로 구분된 표 형식으로 표시되는 워크시트로 구성되어, 각 셀에 데이터를 처리하는 스프레드시트 소프트웨어 프로그램이다.
먼저, 갱신서버(30)는 대상 데이터셋의 스키마(schema) 정보(또는 데이터셋의 구조)를 분석하여 각 필드에 대한 상세 정보를 맞게 워크시트에 작성한다. 이를 위해 워크시트를 새로 생성한다.
그 일례로서, 도 5와 같이, 워크시트의 열에 따라, 각 데이터 필드의 이름, 표시명, 데이터의 타입(종류), 조건, 키 필드 등 테이블 데이터의 세부 구조를 표시한다. 또한, 각 열에 해당하는 데이터의 타입을 해석하여, 각 열의 표시 속성(특히, 숫자에 대한 표시 형식)을 데이터의 타입(형식)에 맞도록 보정한다. 예를 들어, 열(필드)의 이름이 "생일"인데, 해당 필드의 형식이 날짜 형식이면, 해당 열을 모두 날짜 형식으로 설정한다. 또한, 통화 표시이면, 이에 따른 데이터 형식으로 표시한다.
또한, 갱신서버(30)는 스프레드시트의 워크시트를 생성할 때, 스프레드시트에서 제공하는 워크시트에 연동되는 실행 모듈을 함께 생성시킨다. 실행 모듈은 VBA(Visual Basic for application) 등 스크립트 방식의 프로그램 언어로 작성된 모듈(또는 코드)이다. 실행 모듈은 워크시트 내에서 특정한 이벤트가 발생하면, 각 이벤트에 대응하는 함수가 실행되도록 하는 모듈이다. 따라서 갱신서버(30)에 의해 워크시트 상에서 사용자가 삭제, 수정, 삽입 등 특정한 작업을 수행하면, 해당 작업 또는 작업 이벤트에 따라 상기 실행모듈 내의 함수가 실행되어, 관련 작업을 수행한다.
예를 들어, 실행모듈은 워크시트의 열이나 데이터셋의 스키마가 표시된 행 등을 삭제하거나, 필드명이나 필드 속성 등의 해당 셀의 값을 변경하는 경우에는 이러한 작업을 취소할 것을 경고하거나 복원하도록 할 수 있다.
그리고 갱신서버(30)는 갱신할 데이터셋(또는 초기 데이터셋)을 스프레드시트의 워크시트에 표시한다. 도 6에서 보는 바와 같이, 앞서 데이터의 각 필드의 필드명 등 세부 구조가 상기 워크시트 상에 열로 나란히 기재되어 있고, 해당 필드명에 대응되는 열 내의 아래 행에 연속적으로 해당 필드값(또는 테이블 데이터)을 표시한다. 즉, 도 6과 같이, 스프레드시트(또는 워크시트) 상의 데이터는 행과 열에 의해 각 셀에 데이터가 표시되고, 이때, 상단 행 내에 각 열에는 필드명(필드 이름), 표시명, 데이터 타입 등이 기재되고, 그 이하에 레코드들을 각 필드에 맞도록 배열한다.
즉, 초기 데이터셋은 다수의 레코드로 구성되고, 각 레코드들은 워크시트 상에서 하나의 행에 표시된다. 레코드의 각 열에 해당하는 셀들이 해당 레코드 필드의 필드값들이 표시된다. 특히, 앞서 각 필드의 열에 대한 데이터 형식을 분석하여, 해당 형식으로 모든 열을 설정하였으므로, 해당 레코드의 해당 열은 모두 그 데이터 형식에 맞도록 스프레드시트의 워크시트 상에 표시된다.
도 6의 예에서, EMPLOYEES 테이블의 경우 EMPLOYEE_ID가 기본 키(Primary key)이므로 이 컬럼(또는 열)은 중복을 허용하지 않는다.
또한, 갱신서버(30)는 하나의 워크시트 상에 표시할 수 있는 레코드의 최대 개수를 사전에 설정한다. 그리고 해당 최대 개수가 넘어가면, 나머지 레코드들을 새로운 워크시트를 생성하고, 생성된 워크시트에 표시한다. 일례로서, 스프레드시트 화면에서 데이터를 처리하므로 동일 시트(sheet) 내에서는 100만건, 여러 시트(sheet)를 통해 수백만건의 데이터를 정의하고 데이터베이스에 입력할 수 있다.
한편, 갱신서버(30)는 엑셀, 로터스 등 상용화된 스프레드시트 프로그램의 주요 기능만을 임베디드하여 사용한다. 즉, 스프레드시트 처리 작업은 스프레드시트의 코어 기능에 의해 수행되고, 전체 인터페이스는 갱신서버(30)에 의해 처리된다. 이하에서 설명할 갱신서버(30)도 동일하다.
또한, 갱신서버(30)는 명령을 수행하기 위한 명령 버튼을 워크시트 상에 표시할 수 있다. 바람직하게는, 명령 버튼은 테이블 또는 쿼리 결과를 조회하기 위한 조회 버튼이나, 갱신된 데이터를 서버로 전송하여 데이터베이스를 갱신하기 위한 확인 버튼 등을 포함한다.
다음으로, 갱신서버(30)는 워크시트 상에서 표시된 데이터에 대하여 갱신 작업을 수행한다(S300). 특히, 갱신서버(30)는 앞서 갱신서버(30)에서 제공하는 스프레드시트 인터페이스 화면을 통해, 사용자의 명령에 따라 데이터 갱신 작업을 수행한다.
즉, 갱신서버(30)는 초기 데이터셋을 스프레드시트의 워크시트 상에 표시하고, 사용자에 의한 처리되는 스프레드시트의 워크시트 상의 작업들을 처리한다. 예를 들어, 사용자가 스프레드시트 상에서 특정 셀의 데이터를 수정하거나, 특정 행을 삽입하거나 삭제한다. 이때 통상의 스프레드시트 인터페이스와 같은 형태로 인터페이스를 처리한다.
또한, 갱신서버(30)의 인터페이스 각 기능은 워크시트와 연동되는 실행 모듈(VBA 등 스크립트 언어도 작성된 프로그램 모듈)에 의해 구현된다. 즉, 워크시트 상에서 사용자가 수정, 삽입, 삭제 등 특정한 작업을 수행하면, 해당 작업을 하나의 이벤트로 판단하여, 해당 작업 이벤트에 대응되는 실행 모듈의 함수가 실행된다. 이와 같은 기능은 스프레드시트의 코어 기능에서 제공된다. 이하에서, 설명의 편의를 위하여, 수정, 삭제, 삽입(신규 추가) 등에 의해 데이터의 내용이 달라진 것을 모두 "갱신"된 것으로 설명한다.
바람직하게는, 갱신서버(30)는 워크시트의 열, 데이터셋의 스키마가 표시된 행 등이 삭제되거나, 필드명이나 필드 속성 등의 해당 셀의 값을 변경되면, 해당 작업을 취소할 것을 경고하거나 복원한다.
도 7은 도 6의 레코드 데이터 중 일부가 갱신된 상태를 나타내고 있다. 즉, 키가 104의 레코드가 삭제되고, 레코드 105, 106, 108이 각각 변경되고, 변경된 데이터는 봉급(salary)과 전화번호(phone_number)이다. 또한, 레코드 112가 새롭게 추가되었다.
다음으로, 갱신서버(30)는 초기 데이터셋과 갱신된 데이터셋을 비교하여 갱신내용을 추출하고 이를 정의한다(S400). 갱신서버(30)는 저장해둔 초기 데이터셋을 가져와서, 현재 워크시트 상에 표시된 데이터셋과 대비한다. 이때, 현재 워크시트 상에 표시된 데이터셋을 갱신된 데이터셋이라 부르기로 한다.
바람직하게는, 갱신서버(30)는 초기 데이터셋 및, 갱신된 데이터셋을 각각 키(key) 필드를 이용하여 정렬을 수행하고, 초기 데이터셋과 갱신된 데이터셋의 각각의 레코드들을 순차적으로 대비한다.
한편, 갱신서버(30)가 초기 데이터셋과 갱신된 데이터셋을 비교하여 갱신된 내용을 검출하는 방법이 도 8에 도시되고 있다.
도 8에서 보는 바와 같이, 먼저, 갱신서버(30)는 데이터셋의 전체 스키마 구조를 정의한다(S410). 데이터셋의 구조를 정의하는 구체적인 방법은 마지막으로 설명하기로 한다.
다음으로, 갱신서버(30)는 초기 데이터셋 및 갱신된 데이터셋을 키 필드를 통해 정렬을 수행한다(S411). 그리고 각각 데이터셋의 1번째 레코드를 각각 현재 레코드로 설정한다(S412).
그리고 현재 레코드들 간의 키 값들을 대비한다(S413).
만약 각 키 값들이 동일하면, 초기 데이터셋 및 갱신된 데이터셋의 현재 레코드들의 각각의 필드값들을 대비하여 수정 여부를 판단한다(S421). 그리고 수정된 것으로 판단되면, 수정된 갱신내용을 정의한다.
다음으로, 어느 하나의 현재 레코드가 마지막 레코드인지를 대비한다(S422). 마지막 데이터가 아니면, 각 현재 레코드들을 다음 레코드들로 설정하고, 앞서 레코드들의 키값을 대비하는 단계(S413)로 다시 반복한다(S423).
어느 하나의 현재 레코드가 마지막 레코드이면, 나머지 레코드들이 있는지를 확인한다. 초기 데이터셋과 갱신된 데이터셋이 모두 마지막 레코드이면, 더 이상 진행하지 않고 종료한다. 초기 데이터셋의 현재 레코드가 마지막 레코드이고, 갱신된 레코드들이 남아 있으면, 해당 갱신된 레코드들은 삽입된 것으로 판단하여 삽입의 갱신내용으로 정의한다. 반대로, 갱신된 데이터셋의 현재 레코드가 마지막 레코드이고 초기 데이터셋의 레코드들이 남아 있으면, 해당 초기 레코드들은 삭제된 것으로 판단하여 삭제의 갱신내용으로 정의한다(S424).
다음으로, 현재 레코드 키값들을 비교하여 초기 데이터셋의 현재 레코드가 앞서면, 초기 데이터셋의 현재 레코드가 삭제된 것으로 판단하여 삭제 내용으로 정의한다(S431). 그리고 초기 데이터셋의 현재 레코드가 마지막 레코드인지를 판단한다(S432).
마지막이 아니면, 초기 데이터셋의 현재 레코드를 초기 데이터셋의 다음 레코드로 설정하고, 앞서 레코드들의 키값을 대비하는 단계(S413)로 다시 반복한다(S433). 그리고 마지막이면, 갱신된 레코드셋의 현재 레코드 및 나머지 레코드들이 삽입된 것으로 판단한다(S434). 그리고 종료한다.
다음으로, 현재 레코드 키값들을 비교하여 갱신된 데이터셋의 현재 레코드가 앞서면, 갱신된 데이터셋의 현재 레코드가 삽입된 것으로 판단하여 삽입 갱신내용으로 정의한다(S441). 그리고 갱신된 데이터셋의 현재 레코드가 마지막 레코드인지를 판단한다(S442).
마지막이 아니면, 갱신된 데이터셋의 현재 레코드를 갱신된 데이터셋의 다음 레코드로 설정하고, 앞서 레코드들의 키값을 대비하는 단계(S413)로 다시 반복한다(S443). 그리고 마지막이면, 초기 레코드셋의 현재 레코드 및 나머지 레코드들이 삭제된 것으로 판단하여 삭제 내용으로 정의한다(S444). 그리고 종료한다.
일례로서, 도 6과 도 7의 예를 살펴보면, 도 6은 초기 데이터셋이고, 도 7은 갱신된 데이터셋이다. 도 6과 도 7은 이미 모두 정렬된 데이터셋들이다.
이때, 키 103까지의 레코드들이 대비된 후, 다음 레코드로 현재 레코드가 설정된다. 이때, 초기 데이터셋은 104 키의 레코드가 현재 레코드이고, 갱신된 데이터셋은 105가 현재 레코드이다. 이 경우, 초기 데이터셋의 현재 레코드의 키 104가 갱신된 레코드셋의 현재 레코드의 키 105보다 앞선다. 따라서 도 8b의 과정에 해당된다. 그래서 키 104의 초기 데이터 셋의 현재 레코드가 삭제된 것으로 판단된다.
또한, 키 110까지의 레코드들이 대비된 후, 다음 레코드로 현재 레코드가 설정된다. 이때, 초기 데이터셋은 114 키의 레코드가 현재 레코드이고, 갱신된 데이터셋은 112가 현재 레코드이다. 이 경우, 갱신된 데이터셋의 현재 레코드의 키 112가 초기 레코드셋의 현재 레코드의 키 114다 앞선다. 따라서 도 8c의 과정에 해당된다. 그래서 키 112의 갱신된 데이터 셋의 현재 레코드가 삽입된 것으로 판단된다.
또한, 도 7의 예에서, 데이터 셀 값 또는 필드값이 변경된 것은 키 105, 106, 108의 레코드들이다. 이들 레코드들은 초기 데이터셋의 레코드들과 봉급(salary) 또는 전화번호(phone_number)의 필드 내의 필드값들이 서로 다르기 때문에, 수정된 것으로 판단된다. 이는 도 8a의 S21 단계에 해당된다. 즉, 이들 레코드들은 수정된 레코드들이다.
다음으로, 앞서 각 단계에서 갱신내용을 정의하는 것을 보다 구체적으로 설명한다.
갱신서버(30)는 워크시트 또는 워크시트 상에서 갱신된 데이터(또는 레코드)에 대하여 갱신내용을 정의한다. 바람직하게는 XML문서 형태로 정의하고, 데이터는 플랫 파일(flat file)로 구성한다.
즉, 갱신서버(30)는 앞서 갱신서버(30)에 의해 검출된 갱신 레코드에 대하여 각각 갱신 내용을 정해진 정의 규칙에 의하여 정의한다. 이때, 정의할 내용은, 갱신할 데이터 또는 데이터셋의 구조 또는 스키마를 표시하는 테이블 정보와, 갱신할 데이터들이다. 갱신서버(30)는 갱신된 데이터 또는 갱신된 레코드에 대해서만 갱신 데이터를 기록(또는 정의)한다. 즉, 전혀 갱신되지 않은 데이터는 기록하지 않는다.
앞서 S410 단계에서, 갱신서버(30)는 데이터셋(또는 갱신 데이터 구조)을 사전에 정해진 포맷(또는 정의 규칙)에 의하여 정의한다. 바람직하게는, 데이터셋의 구조(또는 갱신 데이터 구조)을 XML 문서로 표시한다. 데이터셋의 구조를 XML 문서로 표시한 일례가 도 9에 도시되고 있다.
도 9와 같은 테이블 정보 또는 데이터셋의 정보는 다음과 같은 개체 및 그 속성들에 대한 데이터를 포함한다. 바람직하게는, 테이블 정보 또는 데이터셋의 구조에 대한 정보는 테이블 명(사용자 화면에서 테이블 선택 시 자동 지정), DB 연결 코드(DB Connection code, 사용자 화면에서 DB 연결 시 자동 지정), 키 필드의 존재 여부, 데이터 타입, 널(NULL) 값 허용 여부 등의 내용을 포함한다.
(1) ExecuteInfo : 실행할 데이터베이스 정보
- ConnectionCode : 서버에 정의된 데이터베이스 코드
(2) DataTable : 갱신할 테이블 정보, 다수의 테이블을 동일한 트랜잭션으로 처리 가능
- Name :테이블명
- Caption : 표시명
- TargetTable :갱신할 테이블 명
(3) Column : 테이블(또는 데이터셋)의 컬럼 정보
- Name : 컬럼 명
- Caption :컬럼 표시 명
- Constraint : key 정보 P : Primary key V : not null N : nullable
- DataType :데이터 타입 C:String N:숫자형, D : Data형
- UpdateFlag : Update 쿼리 생성 시 컬럼을 포함할지 여부
(4) Rows : 처리할 Data를 정의
- RowIndexCol : 데이터 행 일련번호가 위치할 열
- RowStateCol : 데이터 건별 처리시 해당항을 처리할 구분코드가 위치할 열
- TextType :처리할 데이터 위치 FILE: 첨부파일로 전송 XML: xml 내부포함
데이터셋의 컬럼 정보 또는 필드 정보는 대상 테이블의 전체 필드 정보를 나타낼 수도 있고, 그 일부를 나타낼 수도 있다. 즉, 앞서 대상 테이블을 쿼리를 통해 일부만 가져오는 경우에는, 테이블의 필드 중 일부에 대해서만 필드 구조를 생성한다.
또한, 갱신서버(30)는 앞서 각 단계에서 업데이트(수정), 삭제, 삽입 등의 갱신내용을 사전에 정해진 포맷으로 기록한다. 특히, 갱신서버(30)는 갱신 내용을 사전에 정해진 포맷으로 기록하여 파일 또는 갱신문서로 생성한다. 바람직하게는, 갱신서버(30)는 워크시트 상에서 갱신된 내용을 플랫 파일(flat file)로 생성한다. 플랫 파일이란 데이터를 일련의 스트링으로 구성되는 통상의 파일을 말한다.
도 10은 플랫 파일의 일례를 도시한 것이다. 바람직하게는, 스프레드시트 화면에 정의된 데이터는 서버와 사전에 정의된 컬럼, 행 구분자에 의해 도 10과 같은 형태의 텍스트 파일로 만들어져 서버로 전송된다. 여기서, 일례로서, 컬럼 구분자를 “|”, 행 구분자를 "엔터(또는 줄바꿈)" 기호로 나타낸다.
특히, 도 10에서 각 줄의 맨 앞에 해당 레코드(해당 행)가 어떻게 처리할 것인지에 대한 갱신종류를 표시한다. 각 갱신상태 기호는 다음과 같다.
C :신규입력 U : 데이터수정 D : 데이터 삭제
이때, 입력, 수정, 삭제의 갱신종류에 따라 생성되는 정의하는 갱신내용은 달라진다.
먼저, 갱신내용이 일부 필드값만 수정되는 수정의 경우를 설명한다.
수정된 갱신내용은 "업데이트(수정)"을 나타내는 기호와, 수정된 필드와 그 필드값으로 구성된다. 또한, 해당 레코드를 식별하기 위한 키 필드도 포함한다.
키 105의 레코드를 예로 들면, 갱신내용은 다음과 같다.
"업데이트", "EMPLOYEE_ID = 105", "SALARY = 5500"
상기와 같은 갱신내용을 다음과 같이 사전에 정의된 규칙에 의해 표시될 수 있다.
"U|1|105|8|5500"
즉, 처음 "U"는 데이터 수정(업데이트)을 나타내고, 다음 숫자와 필드값으로 구성되는데, 숫자는 해당 필드의 인덱스를 나타낸다. 즉, "EMPLOYEE_ID"는 1번째 필드이고, "SALARY" 필드는 8번째 필드이다. 각각 "105"와 "5500"은 각각 해당 필드(EMPLOYEE_ID, SALARY)의 필드값이다.
다음으로, 갱신내용이 해당 레코드를 삭제하는 경우를 설명한다.
이 경우에는, 삭제될 레코드의 키 값만 정의한다. 즉, 갱신내용은 갱신종류인 "삭제"와 키 값으로 구성되고, 일례로서 다음과 같다.
"D|104"
즉, D는 갱신종류인 삭제를 나타내고, "104"는 키값을 나타낸다.
또한, 갱신내용이 새로운 레코드를 삽입하는 경우에는, 전체 데이터셋의 구조 내용을 모두 기재한다. 즉, 갱신종류인 "삽입"과, 모든 필드의 필드값들로 구성된다. 일례로서, 다음과 같다.
"C|112|Karen|Colmenares|KCOLMENA|515.127.4566|2007-08-10|PU_CLERK| 2500|30"
즉, "C"는 갱신종류인 "삽입"을 나타내고, "112", "Karen", "Colmenares", ..., "30"은 전체 필드, 즉, 각각 "EMPLOYEE_ID", "FIRST_NAME", "LAST_NAME", ..., "DEPARTMENT_ID" 필드의 필드값을 나타낸다.
다음으로, 갱신서버(30)는 테이블 정보 및, 갱신할 데이터들이 정의된 갱신내용(또는 갱신문서의 내용)을 기초로 하여, 갱신된 데이터에 대해서 쿼리문을 생성하고, 이를 통해 데이터베이스에 갱신한다. 이때, 갱신서버(30)는 테이터셋의 구조를 이용하여 쿼리문을 생성한다.
즉, 갱신서버(30)는 테이블 정보를 정의한 갱신문서의 내용을 해석하여, 갱신할 데이터베이스(database), 테이블(table), 컬럼(column) 정보를 추출한다. 그리고 추출된 정보를 이용하여, 입력 쿼리, 업데이트 쿼리(수정 쿼리), 삭제 쿼리 등을 생성한다.
갱신서버(30)는 입력, 업데이트(수정), 삭제 등 해당 쿼리문의 포맷을 작성하고, 쿼리 명령 포맷에 테이블명과 필드명(컬럼명) 등을 기재하고, 변수값 또는 컬럼값에 해당하는 갱신내용의 필드값을 삽입하여, 쿼리문을 생성한다.
또한,갱신서버(30)는 데이터를 각각 레코드 별로 읽어들여, 각 레코드에 대하여 실제 쿼리를 생성한다. 이때, 각 레코드의 갱신종류에 따라 해당 종류의 쿼리문(예를 들어, 추가 쿼리문, 업데이트 쿼리문, 삭제 쿼리문 등)을 생성한다. 특히, 갱신서버(30)는 갱신할 데이터들(또는 갱신문서)을 스트림으로 수신할 수 있고, 스트림으로 수신되는 순서로, 각 갱신할 레코드의 내용으로 쿼리문을 실시간으로 생성한다.
도 11은 도 10의 갱신 데이터(또는 레코드)에 대하여 작성된 실제 쿼리를 나타내고 있다.
먼저, 도 11(a)에서 보는 바와 같이, 삭제 쿼리는 "DELETE FROM"으로 시작하는 쿼리문의 포맷대로 기재하고 "FROM" 뒤에는 데이터셋의 목적 테이블의 이름을 기재하고, WHERE 절에는 키 필드명과 해당 키 값을 삽입한다. 이때, 키 필드가 여러 개인 경우 AND 로 여러개의 키필드 및 그 해당 키 값을 모두 삽입한다.
다음으로, 수정(업데이트) 쿼리는 수정할 필드명과 필드값만을 삽입한다. 이때, 갱신서버(30)는 갱신문서 또는 갱신 데이터의 필드 인덱스를 가져와서, 데이터셋 구조(또는 스키마 구조)에서 인덱스에 해당하는 필드명을 가져온다.
도 11(b)에서 보는 바와 같이, 키 105와 106의 레코드들은 SALARY 필드만 수정되어, 수정 쿼리는 SALARY 필드만으로 기재된다. 또한, 키 108의 레코드는 전화번호 필드만 수정되어, 해당 필드만 기재된다.
또한, 11(c)에서 보는 바와 같이, 입력 쿼리는 모든 필드명이 모두 기재되고, 해당 필드값들이 모두 기재된다.
그리고 갱신서버(30)는 생성된(작성된) 쿼리문을 데이터베이스(40)에 요청하여, 대상 테이블의 데이터를 갱신하도록 요청한다.
갱신서버(30)는 앞서 생성된 실제 쿼리문들을 각 레코드별로 쿼리문을 데이터베이스(40)에 전송하여 갱신 요청할 수 있다. 그러나 개별적으로 각 레코드별로 쿼리문을 데이터베이스(40)에 요청하면, 전체 갱신하는 시간이나 비용이 상당히 많이 소요된다. 이것은 데이터베이스는 한번의 트랜잭션으로 하나의 요청을 처리하는데, 트랜잭션을 수행하기 위한 작업이 많기 때문이다.
따라서, 바람직하게는, 갱신서버(30)는 다수의 레코드별 실제 쿼리를 배치(batch)로 묶어 일괄 처리한다. 즉, 쿼리문은 한번만 생성하고, 전송 데이터의 처리는 해당 쿼리의 변수에 해당 컬럼값만 매핑하여 배치(Batch)에 추가한 다음 마지막으로 한번만 데이터베이스에 실행(Execution) 요청하게 되므로 빠르게 대량 데이터를 처리할 수 있다.
다음으로, 본 발명의 효과를 보다 구체적으로 설명한다.
먼저, 본 발명은 실행 건수에 제약이 없다.
사용자가 등록/수정/삭제한 데이터를 업로드 스트림(Upload stream)을 통해 서버로 전송하므로 단건 데이터부터 수백만건의 대량 데이터까지 자유롭게 핸들링이 가능하다. 데이터 정보는 정해진 행, 열 구분자로 분리된 플랫 파일(flat file)로 만들어저 서버로 업로드(upload)되고, 서버에서는 업로드(Upload Stream)에서 데이터를 읽어 정해진 행, 열 구분자에 따라 파싱 후 함께 전송된 xml 정보로부터 미리 생성된 쿼리에 바인딩하여 실행하게 된다.
또한, 대량 데이터를 빠르게 처리할 수 있다.
갱신 서버에서 데이터를 처리하는 기본 형식은 jdbc dirver를 통해 데이터베이스에 접속한 후 클라이언트(client)로부터 전송된 xml 정보를 파싱(parsing)하여 입력, 수정, 삭제에 해당하는 쿼리문을 생성하고, 함께 클라이언트(Client)로부터 전송된 업로드 스트림(upload stream)으로부터 데이터(data)를 읽어들이면서 미리 생성된 쿼리에 변수를 바인딩 시킨 후 실행하는 방식이다.
이때 연결(connection) 객체 중 PreparedStatement를 사용하여 크기(Fetch size)를 지정하고, 바인딩 된 데이터를 PreparedStatement의 배치 수단(addBatch method)을 사용하여 추가하며, 전체 데이터가 추가 되었을 때 한번 실행하여 데이터를 처리한다. 매 건마다 실행(Execute)하는 방식이 아니고 한번에 실행(Execute)하는 방식이라서 데이터베이스(database)의 부하도 줄이고 속도도 매우 빠른 것이 장점이다.
또한, DB 기능(DB Function)을 사용기능으로 제공한다.
사용자가 화면에서 처리한 데이터 뿐만 아니라 데이터베이스 기능, 사용자 생성 함수(Function) 등을 처리할 수 있도록 옵션을 제공하여 서버에서 쿼리 생성 시 대상 컬럼 처리를 데이터 바인딩 대신 함수 처리 할 수 있는 기능을 제공한다.
또한, 오라클 시퀀스(Oracle sequence), 사이데이터(sysdate) 등 시간함수, rownum 등의 DB함수 등을 쿼리에 포함하여 사용할 수 있다.
이상, 본 발명자에 의해서 이루어진 발명을 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
10 : 사용자 단말 20 : 클라이언트
30 : 갱신 서버 40 : 데이터베이스

Claims (7)

  1. 데이터베이스와 네트워크로 연결되는, 스프레드시트 기반 데이터베이스 갱신 방법에 있어서,
    (a) 상기 데이터베이스로부터 대상 테이블의 데이터셋을 요청하여 가져오고, 가져온 초기 데이터셋을 저장하는 단계;
    (b) 스프레드시트 인터페이스를 제공하고, 워크시트를 생성하여, 상기 데이터셋의 구조와 레코드 데이터를 상기 워크시트 상에 표시하는 단계;
    (c) 상기 스프레드시트 인터페이스를 통한 사용자의 입력에 따라 상기 워크시트 상의 레코드셋의 레코드 데이터를 갱신하는 단계;
    (d) 상기 초기 데이터셋과 상기 갱신된 데이터셋을 비교하여, 갱신된 레코드를 추출하고, 갱신된 레코드의 데이터셋 구조와 레코드 데이터를 정의하는 단계; 및
    (e) 정의된 레코드의 데이터셋 구조를 이용하여 갱신된 데이터에 대해서 쿼리문을 생성하고, 생성된 쿼리문을 통해 데이터베이스를 갱신하는 단계를 포함하고,
    상기 (d)단계에서, 상기 초기 데이터셋 및, 상기 갱신된 데이터셋을 각각 키(key) 필드를 이용하여 정렬을 수행하고, 상기 초기 데이터셋과 상기 갱신된 데이터셋의 각각의 레코드들을 순차적으로 대비하고,
    상기 (d)단계는,
    (d11) 상기 초기 데이터셋과 갱신된 데이터셋의 레코드들을 키 필드로 각각 정렬하는 단계;
    (d12) 상기 초기 데이터셋 및 갱신된 데이터셋의 처음 레코드를 현재 레코드로 설정하는 단계;
    (d13) 상기 초기 데이터셋 및 갱신된 데이터셋의 현재 레코드들의 키값들을 서로 비교하는 단계;
    (d21) 동일하면, 현재 레코드들의 필드값들을 각각 대비하여 수정 여부를 판단하여 갱신 내용을 정의하는 단계;
    (d31) 초기 데이터셋의 현재 레코드의 키값이 갱신된 레코드셋의 현재 레코드의 키값 보다 앞서는 경우, 초기 데이터셋의 현재 레코드가 삭제된 것으로 판단하여 갱신내용을 정의하는 단계;
    (d33) 초기 데이터셋의 현재 레코드를 다음 레코드로 설정하고, 상기 (d13)단계부터 다시 시작하는 단계;
    (d41) 갱신된 데이터셋의 현재 레코드의 키값이 초기 레코드셋의 현재 레코드의 키값 보다 앞서는 경우, 갱신된 데이터셋의 현재 레코드가 삽입된 것으로 판단하여 갱신내용을 정의하는 단계; 및,
    (d43) 갱신된 데이터셋의 현재 레코드를 다음 레코드로 설정하고, 상기 (d13)단계부터 다시 시작하는 단계를 포함하는 것을 특징으로 하는 스프레드시트 기반 데이터베이스 갱신 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 (d)단계는,
    (d22) 상기 (d21)단계 이후에, 상기 초기 데이터셋과 갱신된 데이터셋의 현재 레코드들 중에서 어느 하나가 마지막 레코드인지를 판단하는 단계;
    (d24) 어느 하나의 레코드가 마지막 레코드이면, 나머지 레코드들이 있는지 확인하여, 남아있는 갱신된 레코드셋의 레코드들은 삽입된 것으로, 남아있는 초기 데이터셋의 레코드들은 삭제된 것으로 판단하여 정의하는 단계;
    (d32) 상기 (d31)단계 이후에, 초기 데이터셋의 현재 레코드가 마지막 레코드인지를 판단하는 단계;
    (d34) 상기 초기 데이터셋의 현재 레코드가 마지막 레코드이면, 갱신된 데이터셋의 현재 레코드 및, 나머지 레코드들은 삽입된 것으로 판단하여 정의하는 단계;
    (d42) 상기 (d41)단계 이후에, 갱신된 데이터셋의 현재 레코드가 마지막 레코드인지를 판단하는 단계; 및,
    (d44) 갱신된 데이터셋의 현재 레코드가 마지막 레코드이면, 초기 데이터셋의 현재 레코드 및, 나머지 레코드들은 삭제된 것으로 판단하여 정의하는 단계를 더 포함하는 것을 특징으로 하는 스프레드시트 기반 데이터베이스 갱신 방법.
  5. 제1항에 있어서,
    상기 (d21)단계에서, 상기 초기 데이터셋 및 갱신된 데이터셋의 현재 레코드들 간의 각 필드를 비교하여 서로 다른 필드들을 수정된 필드로 판단하고, 수정된 갱신내용으로 정의하되, 갱신내용에는 갱신종류로서 수정, 키 필드의 키값, 수정된 필드들의 필드값으로 정의하고,
    상기 (e)단계에서, 쿼리문을 생성할 때, 수정 쿼리문은 수정된 필드만으로 쿼리문을 작성하는 것을 특징으로 하는 스프레드시트 기반 데이터베이스 갱신 방법.
  6. 제5항에 있어서,
    상기 (e)단계에서, 삭제 쿼리문을 키 필드만으로 생성하고, 입력 쿼리문에는 레코드셋 구조의 전체 필드를 이용하여 생성하는 것을 특징으로 하는 스프레드시트 기반 데이터베이스 갱신 방법.
  7. 제1항에 있어서,
    상기 (d)단계에서, 데이터셋 구조를 XML 문서로 정의하고, 갱신된 데이터를 플랫 파일로 정의하되, 상기 플랫 파일에 사전에 정의된 컬럼 및 행 구분자에 의해 각 레코드의 필드값을 구분하여 정의하는 것을 특징으로 하는 스프레드시트 기반 데이터베이스 갱신 방법.
KR1020170022390A 2017-02-20 2017-02-20 갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법 KR101899055B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170022390A KR101899055B1 (ko) 2017-02-20 2017-02-20 갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법
JP2018025700A JP2018136939A (ja) 2017-02-20 2018-02-16 更新データ別の最適クエリ文を生成するスプレッドシートに基づいたデータベースの更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170022390A KR101899055B1 (ko) 2017-02-20 2017-02-20 갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법

Publications (2)

Publication Number Publication Date
KR20180096854A KR20180096854A (ko) 2018-08-30
KR101899055B1 true KR101899055B1 (ko) 2018-09-17

Family

ID=63365651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170022390A KR101899055B1 (ko) 2017-02-20 2017-02-20 갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법

Country Status (2)

Country Link
JP (1) JP2018136939A (ko)
KR (1) KR101899055B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102233944B1 (ko) * 2019-04-05 2021-03-30 주식회사 티맥스티베로 데이터베이스 관리를 위한 컴퓨터 프로그램
CN110888907A (zh) * 2019-11-26 2020-03-17 辽宁鼎汉奇辉电子系统工程有限公司 一种基于lkj运行数据的项点识别方法
JP7510269B2 (ja) 2020-04-09 2024-07-03 株式会社オービックビジネスコンサルタント 表情報処理装置、表情報処理方法、およびプログラム
KR102466705B1 (ko) * 2020-06-22 2022-11-15 주식회사 한글과컴퓨터 데이터 속성을 기초로 스프레드시트에서 지정된 영역에 대응되는 테이블을 자동으로 생성할 수 있는 문서 편집 장치 및 그 동작 방법
CN111782650B (zh) * 2020-06-28 2024-04-05 京东科技控股股份有限公司 动态数据入库方法、装置、电子设备及存储介质
CN113704257B (zh) * 2021-08-06 2023-09-26 网易(杭州)网络有限公司 数据表的更新方法和装置
US11599718B1 (en) 2022-03-23 2023-03-07 Acuitive Solutions, Inc. Database system for storing electronic spreadsheets

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101013810B1 (ko) 2010-01-15 2011-02-14 (주)비아이매트릭스 엑셀기반 db테이블 갱신 시스템 및 방법
JP2012123607A (ja) * 2010-12-08 2012-06-28 Mitsubishi Electric Corp データ入出力装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5984629B2 (ja) * 2012-11-14 2016-09-06 三菱電機株式会社 マスタファイル差分自動出力装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101013810B1 (ko) 2010-01-15 2011-02-14 (주)비아이매트릭스 엑셀기반 db테이블 갱신 시스템 및 방법
JP2012123607A (ja) * 2010-12-08 2012-06-28 Mitsubishi Electric Corp データ入出力装置

Also Published As

Publication number Publication date
KR20180096854A (ko) 2018-08-30
JP2018136939A (ja) 2018-08-30

Similar Documents

Publication Publication Date Title
KR101899055B1 (ko) 갱신 데이터별 최적 쿼리문을 생성하는 스프레드시트 기반 데이터베이스 갱신 방법
KR101769857B1 (ko) 스프레드시트 인터페이스를 이용한 데이터베이스 갱신 시스템
US10831753B2 (en) Query plan generation and execution in a relational database management system with a temporal-relational database
EP3128445B1 (en) Data archive vault in big data platform
US7873649B2 (en) Method and mechanism for identifying transaction on a row of data
EP2605158B1 (en) Mixed join of row and column database tables in native orientation
US7167848B2 (en) Generating a hierarchical plain-text execution plan from a database query
US9208180B2 (en) Determination of database statistics using application logic
KR101769853B1 (ko) 쿼리 템플릿을 이용한 스프레드시트 인터페이스 기반 데이터베이스 일괄 갱신 시스템
US8478760B2 (en) Techniques of efficient query over text, image, audio, video and other domain specific data in XML using XML table index with integration of text index and other domain specific indexes
US20050065949A1 (en) Techniques for partial rewrite of XPath queries in a relational database
US20050228823A1 (en) Method, system, and program for implementing scrollable cursors in a distributed database system
KR102034679B1 (ko) 그리드 인터페이스 기반 데이터 입출력 시스템
US11416458B2 (en) Efficient indexing for querying arrays in databases
KR101908556B1 (ko) 갱신 레코드를 자동 추출하는 스프레드시트 기반 데이터베이스 자동 갱신 시스템
KR101544560B1 (ko) 대용량 데이터를 처리하기 위하여 sql 파싱에 의한 2단계 쿼리 및 결과 캐싱을 이용한 온라인 분석 프로세싱 방법
US10331715B2 (en) Metadata enrichment with a keyword definition editor
US20040249792A1 (en) Automated query file conversions upon switching database-access applications
JP2005327297A (ja) 知識情報収集システムおよび知識情報収集方法
US8725713B2 (en) String searches in a computer database
US10929396B1 (en) Multi-type attribute index for a document database
US10311155B2 (en) Dynamic master record selection
JP3882835B2 (ja) データベース管理方法および並列データベース管理システム
JP6207354B2 (ja) データベース連携装置及びデータベース連携プログラム
JP2003296342A (ja) メタデータ生成方法および装置

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
GRNT Written decision to grant