KR102303895B1 - 이중화 성능이 개선된 데이터베이스 이중화시스템 - Google Patents

이중화 성능이 개선된 데이터베이스 이중화시스템 Download PDF

Info

Publication number
KR102303895B1
KR102303895B1 KR1020200030799A KR20200030799A KR102303895B1 KR 102303895 B1 KR102303895 B1 KR 102303895B1 KR 1020200030799 A KR1020200030799 A KR 1020200030799A KR 20200030799 A KR20200030799 A KR 20200030799A KR 102303895 B1 KR102303895 B1 KR 102303895B1
Authority
KR
South Korea
Prior art keywords
transaction
module
relation
database
equipment unit
Prior art date
Application number
KR1020200030799A
Other languages
English (en)
Inventor
이용문
임세환
Original Assignee
(주)선재소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)선재소프트 filed Critical (주)선재소프트
Priority to KR1020200030799A priority Critical patent/KR102303895B1/ko
Application granted granted Critical
Publication of KR102303895B1 publication Critical patent/KR102303895B1/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • 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

Landscapes

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

Abstract

본 발명은 데이터베이스 이중화 작업을 병렬로 처리하며 데이터베이스의 처리속도를 높여, 짧은 시간 동안 많은 양의 데이터를 이중화 시킬 수 있는 이중화 성능이 개선된 데이터베이스 이중화시스템에 관한 것이다.
이러한 본 발명은 제1릴레이션을 포함하는 제1데이터베이스모듈과, 제1릴레이션에 반영된 트랜잭션(Transaction)을 감지하는 감지모듈과, 복수 개의 트랜잭션에 SCN(System Change Number)을 순차적으로 할당하는 번호할당모듈과, SCN이 할당된 번호트랜잭션을 임시로 저장하며 제1상황에서는 번호트랜잭션을 삭제하고, 제2상황에서는 저장된 번호트랜잭션을 송신 가능하게 하는 임시저장모듈을 포함하는 메인장비부; 및 임시저장모듈을에서 송신되는 번호트랜잭션을 수신하는 수신모듈과, 번호트랜잭션에 설정된 번호를 기억하며 번호트랜잭션을 처리하되, 처리된 번호트랜잭션의 번호 보다 큰 번호가 설정된 번호트랜잭션은 처리하고, 처리된 번호트랜잭션의 번호 보다 작은 번호가 설정된 번호트랜잭션은 무시하는 선택적용모듈과, 제2릴레이션을 포함하고 선택적용모듈로부터 전송되는 번호트랜잭션을 수신해 번호트랜잭션이 제2릴레이션에 반영되도록 하는 제2데이터베이스모듈을 포함하는 이중화장비부를 포함한다.

Description

이중화 성능이 개선된 데이터베이스 이중화시스템{Database Replication System With Improved Database Replication}
본 발명은 이중화 성능이 개선된 데이터베이스 이중화시스템에 관한 것이다. 보다 구체적으로, 데이터베이스 이중화 작업을 병렬로 처리하며 데이터베이스의 응답속도를 높여, 많은 양의 데이터가 처리될 수 있도록 하는 데이터베이스 이중화 시스템에 관한 것이다.
데이터베이스는 컴퓨터에 기록된 데이터들이 논리적이 관계로 연계된 집합을 의미한다. 데이터베이스는 저장된 데이터가 삽입, 삭제 및 갱신될 수 있도록 한다. 또한, 여러 사용자가 동시에 자기가 원하는 데이터를 이용할 수 있도록 한다.
데이터베이스에 저장된 데이터들은 여러 질의 내용을 통해 데이터의 무결성을 보증하며 트랜잭션 되고 있다. 데이터의 트랜잭션은 컴퓨터로 업무를 처리하는 현재 사회의 산업 전반에서 진행되고 있다. 일례로, 은행 및 한국 거래소 등 금융권에서는 트랜잭션을 통해 처리 업무를 명확하게 처리하고 있다. 현재 정보통신의 산업분야에 있는 많은 기업들은 트랜잭션의 오류 및 바이러스 침입에 의한 사고등에 대비하기 위해 데이터 이중화 기술을 개발에 박차를 가하고 있다.
그러나, 개발된 대다수의 기술은 처리되는 데이터의 손실을 방지하는 기술일 뿐, 데이터의 무결성 및 데이터의 처리 속도를 향상시키지 못하고 있다. 일례로, 기존의 순차적인 이중화 처리 방식의 이중화 시스템은 도 9에 도시된 바와 같이, 트랜잭션을 보장하기 위해서 메인장비에 ROW lock을 걸고 이중화를 진행하고 있다.
이에, 새로운 트랜젝션이 ROW에 접근할 때 lock에 걸려 트랜잭션이 진행되지 않고, 기존 트랜젝션의 이중화가 완료된 후에 새로운 트랜잭션이 시작된다. 현재의 동기 방식 이중화 시스템은 이중화 속도가 신속하지 못한 문제, 그에 따라 데이터 처리의 병목을 발생시키는 문제가 있다.
아울러, 트랜젝션의 정합성을 맞추기 위해서 느린 저장장치를 사용하는 REDO log를 하나로 만들어 사용하게 된다. 이에 따라, 여러 트랜잭션이 REDO에 접근할 때, 경합이 발생되는 문제가 있다.
대한민국 등록특허 제10-1605455호 (2016.03.16)
본 발명은 기존의 이중화 데이터 처리방법 즉, 완료될 때까지 lock이 걸려 트랜잭션을 느리게 처리하는 문제를 해결하고자 한다. 또한, 메인 장비에서 복수 개의 트랜잭션이 병렬처리 되어, 이중화장비에서 처리될 트랜잭션의 순서가 꼬이는 문제를 해결하고자 한다.
본 발명의 해결하고자 하는 과제는 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 해결하고자 하는 과제를 달성하기 위한 본 발명의 이중화 성능이 개선된 데이터베이스 이중화시스템은 제1릴레이션을 포함하는 제1데이터베이스모듈과, 상기 제1릴레이션에 반영된 트랜잭션(Transaction)을 감지하는 감지모듈과, 복수 개의 트랜잭션에 SCN(System Change Number)을 순차적으로 할당하는 번호할당모듈과, 상기 SCN이 할당된 번호트랜잭션을 임시로 저장하며 제1상황에서는 번호트랜잭션을 삭제하고, 제2상황에서는 저장된 상기 번호트랜잭션을 송신 가능하게 하는 임시저장모듈을 포함하는 메인장비부 및 상기 임시저장모듈에서 송신되는 상기 번호트랜잭션을 수신하는 수신모듈과, 상기 번호트랜잭션에 설정된 번호를 기억하며 상기 번호트랜잭션을 처리하되, 처리된 번호트랜잭션의 번호 보다 큰 번호가 설정된 번호트랜잭션은 처리하고, 처리된 번호트랜잭션의 번호 보다 작은 번호가 설정된 번호트랜잭션은 무시하는 선택적용모듈과, 제2릴레이션을 포함하고 상기 선택적용모듈로부터 전송되는 상기 번호트랜잭션을 수신해 상기 번호트랜잭션이 상기 제2릴레이션에 반영되도록 하는 제2데이터베이스모듈을 포함하는 이중화장비부를 포함한다. 이때, 상기 메인장비부는 상기 트랜잭션이 감지되면 상기 트랜잭션을 상기 번호할당모듈에 전송한 후 상기 제1릴레이션을 잠그는 잠금모듈과, 상기 임시저장모듈에 상기 번호트랜잭션이 저장되면 상기 잠금모듈에 의해 잠긴 상기 제1릴레이션을 해제시키는 해제모듈을 포함할 수 있다. 그리고 여기서, 상기 트랜잭션은 제1트랜잭션과 제2트랜잭션을 포함하고, 상기 번호할당모듈은 상기 해제모듈이 상기 제1릴레이션이 편집 가능하게 해제시키면, 상기 제1트랜잭션에 제1SCN을 할당하며 제1번호트랜잭션을 생성하고, 상기 제2트랜잭션에 상기 제1SCN 보다 큰 번호인 제2SCN을 할당하며 제2번호트랜잭션을 생성할 수 있다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
상기 임시저장모듈은,
상기 번호트랜잭션이 상기 제2릴레이션에 반영되면, 상기 번호트랜잭션을 삭제하고, 상기 번호트랜잭션이 상기 제2릴레이션에 반영되지 않으면 저장 상태를 유지시킬 수 있다.
상기 번호할당모듈은,
커밋(Commit)쿼리를 진행하며 하나에 트랜잭션에 슬롯 ID을 설정할 수 있다.
본 발명에 따른 이중화 성능이 개선된 데이터베이스 이중화시스템은 데이터를 이중화하기 이전에 걸려 있던 Lock을 풀어 하나의 트랜잭션이 처리되는 동안 다른 하나의 트랜잭션이 처리되도록 한다. 또한, 본 발명은 메인 장비에서 복수 개의 트랜잭션을 병렬로 처리하는 과정에서 처리 순서가 변경되어 이중화 장비에 전달되더라도, 이중화 장비에서 트랜잭션을 순차적으로 처리한 결과와 동일한 결과가 산출되도록 한다.
다시 말해, 본 발명은 데이터를 빠르면서도 손실없이 이중화 될 수 있도록 하며 병목현상 없이 데이터가 처리되며 이중화 될 수 있도록 한다.
도 1은 본 발명의 일 실시예에 따른 이중화 성능이 개선된 데이터베이스 이중화시스템의 블록도이다.
도 2는 도 1의 메인장비부에서 이중화 병렬 처리 방식을 나타낸 도면이다.
도 3은 기존의 데이터베이스 이중화시스템과 도 1의 이중화 성능이 개선된 데이터베이스 이중화시스템의 처리 방식을 비교하여 나타낸 도면이다.
도 4는 네트워크 장애 시 임시저장모듈이 구동되는 상태를 나타낸 도면이다.
도 5는 도 1의 메인장비부에서 복수 개의 번호트랜잭션을 처리하는 과정을 나타낸 도면이다.
도 6은 도 1의 이중화장비부에서 데이터를 삽입, 업데이트 및 삭제하는 과정의 흐름도이다.
도 7은 도 1의 메인장비부에서 전송된 복수 개의 번호트랜잭션을 처리하는 과정을 나타낸 도면이다.
도 8은 도 1의 임시저장모듈 및 리두로그버퍼모듈에 저장된 데이터 테이블이다.
도 9는 종래의 이중화 시스템의 순차적인 이중화 처리 흐름을 나타낸 도면이다.
먼저, 첨부된 도면을 참조하여 본 발명의 실시 예를 상세히 설명하기 앞서, 본 발명의 실시 예는 당해 기술 분야에서 통상의 지식을 가진 자에게 본 발명을 완전하게 설명하기 위하여 제공되는 것임을 밝혀 둔다.
따라서, 하기 실시 예 및 도면에 의해 본 발명의 청구 범위를 한정하는 것은 아니다. 본 명세서 상에서의 도면은 도면에 참조에 의한 설명이 명확하게 이해될 수 있도록 하기 위한 것일 뿐이다. 본 발명의 청구 범위는 오로지 청구항에 의해서만 정의될 수 있다.
아울러, 본 발명에 대한 설명이 간결하고, 명확해질 수 있도록 본 명세서 상에서 기술되는 데이터베이스모듈, 테이터베이스에 저장된 데이터, 이중화 및 트랜잭션에 대해 아래와 같이 정의한다.
본 명세서 상에서 기술되는 데이터베이스모듈은 서로 관련된 데이터들을 컴퓨터가 처리할 수 있는 형태로 저장한 시스템으로 정의한다. 그리고 데이터베이스에 저장된 데이터는 끊임없이 변화될 수 있는 데이터로 정의한다. 이에, 본 명세서 상에서 데이터베이스모듈은 이러한 외부의 변화에 맞추어 적절히 저장된 데이터가 변경될 수 있고, 새로운 데이터를 저장하거나 기존의 데이터가 삭제, 변경될 수 있다.
또한, 본 명세서 상에서 기술되는 이중화(Replication)란, 시스템의 신뢰도와 가용성을 증대시키기 위해 동시에 여러 곳에 동일한 데이터를 저장하는 것으로 정의한다. 그리고 본 명세서 상에서 기술되는 트랜잭션(transaction)은 정보의 교환이나 데이터베이스모듈 갱신 등 일련의 작업들에 대한 연속 처리단위를 의미하며 데이터베이스모듈의 무결성이 보장되는 상태에서 요청된 작업을 완수하기 위한 작업의 기본 단위로 정의한다.
이하, 도 1 내지 도 4를 참조하여, 본 발명의 이중화 성능이 개선된 데이터베이스 이중화시스템에 대해 개괄적으로 설명한다.
도 1은 본 발명의 일 실시예에 따른 이중화 성능이 개선된 데이터베이스 이중화시스템의 블록도이고, 도 2는 도 1의 메인장비부에서 이중화 병렬 처리 방식을 나타낸 도면이고, 도 3은 기존의 데이터베이스 이중화시스템과 도 1의 이중화 성능이 개선된 데이터베이스 이중화시스템의 처리 방식을 비교하여 나타낸 도면이다. 그리고 도 4는 네트워크 장애 시 임시저장모듈이 구동되는 상태를 나타낸 도면이다.
이중화 성능이 개선된 데이터베이스 이중화시스템(1)은 데이터를 이중화하기 이전에 메인장비부(10)의 제1데이터베이스모듈(110)에 걸려 있던 Lock을 풀어 제1트랜잭션을 이중화장비부(20)에 전송하는 동안 제2트랜잭션 및 제3트랜잭션이 처리되도록 한다. 즉, 복수 개의 트랜잭션을 병렬로 처리될 수 있도록 한다.
아울러, 이중화 성능이 개선된 데이터베이스 이중화시스템(1)은 제1트랜잭션 내지 제3트랜잭션이 이중화장비부에 순차적 또는 비순차적으로 전달되더라도 이중화장비부에서 트랜잭션을 순차적으로 처리한 결과와 동일한 결과가 산출되도록 한다.
이를 통해, 이중화 성능이 개선된 데이터베이스 이중화시스템(1)은 데이터의 무결성을 보장하며 복수 개의 트랜잭션을 빠르게 처리할 수 있다.
다시 말해, 이와 같은 이중화 성능이 개선된 데이터베이스 이중화시스템(1)은 도 3의 (a)에 도시된 기존의 이중화 방식 즉, 이중화 완료 후 application에서 응답을 받을 때까지 메인장비부에 lock이 걸려있도록 하는 방식과 달리, 도 3의 (b)에 도시된 바와 같이 메인장비부(10)에서만 처리 후 unlock을 하고 이중화를 함으로써 이중화 이전에 다른 트랜젝션이 수행 가능하게 한다.
이중화 성능이 개선된 데이터베이스 이중화시스템(1)은 제1데이터베이스모듈(110)을 포함하는 메인장비부(10)와 메인장비부(10)에서 갱신된 데이터를 수신하여 반영하는 이중화장비부(20)를 포함한다.
이하, 메인장비부(10)와 이중화장비부(20)에 대해 보다 구체적으로 설명한다.
메인장비부(10)는 변경된 데이터를 감지하여 이중화장비부(20)에 전송해 이중화장비부에 있는 데이터베이스를 갱신하도록 하는 컴퓨터가 된다. 특히, 메인장비부(10)는 트랜잭션 작업을 Lock 없이 이중화장비부(20)로 전송하며 복 수개의 트랜잭션을 무작위로 이중화장비부(20)에 전송시킬 수 있다.
이러한 메인장비부(10)는 제1데이터베이스모듈(110), 감지모듈(120), 번호할당모듈(130), 임시저장모듈(140)을 포함한다. 여기서, 제1데이터베이스모듈(110)은 제1릴레이션을 포함한다. 그리고, 제1릴레이션은 복수개의 데이터들을 표(Table)의 형태로 표현한 것이 될 수 있다. 이러한 제1릴레이션은 행(Row)과 열(Column)로 형성될 수 있다. 아래의 표 1과 같이, 테이블이 생성될 수 있다.
Primary Key c1 int c2 int
1 1 1
2 2 2
이와 같은 테이블에서 c1 int와 c2 int는 속성이 되고, (1, 1) 및 (2, 2)는 행이 되고, (1, 2) 및 (1, 2)는 열이 된다. 이러한 구조의 테이블은 SQL(Structed Query Language)를 통해 변경될 수 있다. 이하, SQL을 통해 테이블의 각 속성을 구성하는 값의 변경에 대해서는 후술한다.
감지모듈(120)은 제1릴레이션에 반영된 트랜잭션(Transaction)을 감지한다. 감지모듈(120)은 메인장비부(10)에 포함된 제1데이터베이스모듈(110)에 저장된 제1릴레이션에 처리될 쿼리를 감지한다. 즉, 감지모듈(102)은 이중화 데이터를 감지한다. 일례로, 감지모듈(120)은 쿼리 처리기(Query Processor)로 형성될 수 있다. 이러한 감지모듈(120)은 감지된 쿼리를 메인장비부(10)에 포함된 번호할당모듈(130)에 전송할 수 있다.
번호할당모듈(130)은 복수 개의 트랜잭션 즉, 제1트랜잭션 및 제2트랜잭션에 SCN(System Change Number)을 순차적으로 할당한다. 일례로, insert into A value(1, 1)과 insert into A value(2, 2), commit이라는 트랜잭션(TR)에 SCN인 1을 할당하며 제1번호트랜잭션(TR1)으로 설정할 수 있다. 그리고 update A set c2=101 where c2=1 commit이라는 트랜잭션(TR)에 SCN인 2를 할당하며 제2번호트랜잭션(TR2)으로 설정할 수 있다. 아울러, Update A set c2=201 where c2=101, Update A set c2=202 where c2=2 및 commit이라는 트랜잭션(TR)에 SCN인 3을 할당하며 제3번호트랜잭션(TR3)으로 설정할 수 있다.
임시저장모듈(140)은 SCN이 할당된 제1번호트랜잭션 내지 제3번호트랜잭션을 임시로 저장하며 제1상황에서는 번호트랜잭션을 삭제한다. 그리고 제2상황에서는 저장된 번호트랜잭션을 이중화장비부(20)에 전송한다. 여기서, 제1상황은 번호트랜잭션이 이중화장비부(20)의 제2데이터베이스모듈(230)에 저장된 제2릴레이션에 반영되는 상황이고, 제2상황은 번호트랜잭션이 제2릴레이션에 반영되지 않은 상황이 될 수 있다. 이에, 임시저장모듈(140)에 저장된 번호트랜잭션은 이중화장비부(20)의 제2데이터베이스모듈(230)에 저장된 제2릴레이션에 반영되면 삭제되고 제2릴레이션에 반영되지 않으면 삭제되지 않을 수 있다. 이때, 임시저장모듈(140)에는 이중화장비부(20)로 전송되어야 할 번호트랜잭션의 slot ID가 저장된다.
임시저장모듈(140)은 이중화장비부(20)에 제1번호트랜잭션 내지 제3번호트랜잭션을 전송하여, 이중화장비부(20)에 전송되도록 한다. 아울러, 임시저장모듈(140)은 도 4에 도시된 바와 같이 network에 장애가 발생된 후, 복구되었을 때 이중화장비부(20)의 수신모듈(210)에 직접 번호트랜잭션을 전송할 수도 있다. 또한, 메인장비부(10)는 이러한 모듈 이외에도 잠금모듈(150), 리두로그버퍼모듈(160), 해제모듈(170)을 포함할 수 있다.
잠금모듈(150)은 쿼리 즉, 트랜잭션이 감지되면, 트랜잭션을 번호할당모듈(130)에 전송한 후, 릴레이션이 편집되지 않도록 잠근다. 이와 같은 잠금모듈(150)은 송신모듈이 제1번호트랜잭션을 수신모듈(210)에 송신하는 동안, 제2트랜잭션에 제2SCN이 할당되면 제1릴레이션을 잠궈 릴레이션이 편집되지 않도록 한다.
리두로그버퍼모듈(160)은 데이터 이중화를 위해 제1데이터베이스모듈(110)에서 제2데이터베이스모듈(230)로 로그 데이터를 전송할 경우, 양자 간 데이터의 전송속도 혹은 처리속도 차이를 보상하여 양호하게 결합시키기 위한 목적으로 사용되는 기억 영역이 된다. 예를 들어, 제1데이터베이스모듈(110)로부터 로그 데이터가 수신되면, 로그 데이터를 복사(Copy)하여 버퍼에 저장한 후, 리두 로그 파일(Redo Log File)로 저장할 수 있다. 이러한 리두로그버퍼모듈(160)은 로그 데이터를 임시로 저장하는 동안, 로그 데이터의 전송속도 및 처리속도를 보상하며 데이터 처리 속도를 향상시킬 수 있다. 여기서, 리두 로그 파일(Redo Log File)은 운영중인 데이터베이스 시스템 내에서 발생하는 장애에 대처하기 위해 저장되는 각종 정보인 리두 로그(Redo Log)를 정식으로 기록해두는 파일을 의미한다. 즉, 특정 데 이터를 장애 발생 직전의 상태로 복원(Recovery)시키기 위해 필요한 데이터를 포함하는 파일이 된다. 예를 들어, 리두 로그 파일은 트랜잭션이 발생함에 따라 변경되는 데이터, 트랜잭션이 발생한 시점, 처리 시간, 데이터 변경 및 처리 내역 등 구체적인 내용을 포함할 수 있다.
해제모듈(170)은 임시저장모듈(140)에 제1번호트랜잭션이 저장되면, 잠금모듈에 의해 잠긴 제1릴레이션을 해제시킬 수 있다. 제1릴레이션의 제2번호트랜잭션이 처리될 수 있도록 한다.
이중화장비부(20)는 제1번호트랜잭션 및 제2번호트랜잭션을 수신하여 복수 개의 번호트랜잭션에 의해 제2릴레이션을 갱신되도록 한다. 이러한 이중화장비부(20)는 데이터를 연산 처리하는 컴퓨터가 될 수 있다.
이러한 이중화장비부(20)는 수신모듈(210), 선택적용모듈(220), 제2데이터베이스모듈(230)을 포함할 수 있다.
수신모듈(210)은 임시저장모듈(140)에서 송신되는 퀴리 여기선 번호트랜잭션을 수신한다. 수신모듈(210)은 번호트랜잭션을 선택적용모듈(220)로 전송한다.
선택적용모듈(220)은 번호트랜잭션에 설정된 번호를 기억하며 번호트랜잭션을 처리하되, 처리된 번호트랜잭션의 번호 보다 큰 번호가 설정된 번호트랜잭션은 처리하고, 처리된 번호트랜잭션의 번호 보다 작은 번호가 설정된 번호트랜잭션은 무시할 수 있다. 이러한, 선택적용모듈(220)은 처리될 번호트랜잭션의 번호가 앞서 처리된 번호트랜잭션의 번호 보다 클 경우, 일부의 갱신문(update~set~)을 삽입문(insert into~)으로 변경할 수 있다. 일례로, 선택적용모듈(220)은 제1트랜잭션 이후, 제3트랜잭션 수신되면, 기존의 Update A set c2=201 where c2=101, Update A set c2=202 where c2=2 및 commit이라는 제3트랜잭션을 insert into A Value (1, 201), Update A set c2=202 where c2=2 및 commit이라고 변경할 수 있다.
즉, 선택적용모듈(220)은 아직 알려지지 않았거나 모르는 값으로서 해당 없음 등의 이유로 정보 부재를 나타내는 널(null)값을 감지하고, 널 값이 감지되면 갱신문을 삽입문으로 변경한다.
제2데이터베이스모듈(230)은 제2릴레이션을 포함한다. 여기서, 제2릴레이션은 복수개의 데이터들을 표(Table)의 형태로 표현한 것이 될 수 있다. 이러한 제2릴레이션은 행(Row)과 열(Column)로 형성될 수 있다. 아래의 표 2과 같이, 테이블이 생성될 수 있다.
Primary Key c1 int c2 int
1 1 201
2 2 202
이와 같은 테이블 또한 c1 int와 c2 int는 속성이 되고, (1, 201) 및 (2, 202)는 행이 되고, (1, 2) 및 (201, 202)는 열이 된다. 이러한 구조의 테이블은 SQL(Structed Query Language)를 통해 표 1의 테이블로부터 변경된 테이블이 될 수 있다.
이하, 도 5 내지 도 8을 참조하여, 메인장비부 및 이중화장비부에서 데이터를 처리하는 과정에 대해 구체적으로 설명한다.
도 5는 도 1의 메인장비부에서 복수 개의 번호트랜잭션을 처리하는 과정을 나타낸 도면이고, 도 6은 도 1의 이중화장비부에서 데이터를 삽입, 업데이트 및 삭제하는 과정의 흐름도이고, 도 7은 도 1의 메인장비부에서 전송된 복수 개의 번호트랜잭션을 처리하는 과정을 나타낸 도면이다.
메인장비부(10)에는 도 5에 도시된 바와 같은 제1트랜잭션(TR1), 제2트랜잭션(TR2) 및 제3트랜잭션(TR3)이 처리되며 제1릴레이션 즉, 전술 한 표 1의 테이블이 표 2와 같이 변경될 수 있다. 즉, 제1릴레이션의 데이터는 (1, 1), (2, 2)에서 (1, 201), (2,202)로 변경될 수 있다.
메인장비부(10)의 제1트랜잭션(TR1) 내지 제3트랜잭션(TR3)는 어느 하나의 경향으로 이중화장비부(20)에 전송되지 않는다. 제1번호트랜잭션 내지 제3번호트랜잭션는 이중화장비부(20)에 제1번호트랜잭션, 제2번호트랜잭션, 제3번호트랜잭션 순 또는 제2번호트랜잭션, 제1번호트랜잭션, 제3번호트랜잭션 순 또는 제3번호트랜잭션, 제2번호트랜잭션, 제1번호트랜잭션 순 등과 같이 다양한 순으로 전송될 수 있다.
다시 말해, 이중화장비부(20)는 복수 개의 번호트랜잭션을 순서로 수신할 수 있다.
이와 같은 이중화장비부(20)는 도 6의 (a)에 도시된 바와 같이 기본키로 Slot 정보를 조회하여, Slot이 비어 있으면 추가한다. 그리고 Slot에 정보가 있으면 SCN이 클 경우만 update를 한다. 반면, Slot에 정보가 없으면 update가 올 수도 있고 slot에 데이터가 있으면 insert가 올 수 있도록 한다. 이를 통해, insert, update상관없이 slot이 비어 있으면 insert 처리하고 slot이 있으면 update처리를 한다.
다만, 여기서 삭제문 즉, delete가 와서 slot을 삭제하지는 않는 것으로 한다. Insert 이후에 delete가 순서가 바뀌어 delete, insert순서로 올 때 delete에서 slot을 삭제하면 실제로는 삭제 상태인데insert가 될 수 있기 때문에 delete도 slot을 사용하여 SCN을 비교하여 먼저 수행된 insert가 오면 SCN을 비교하여 insert를 무시하도록 하여 delete상태가 유지되도록 한다.
아울러, 이중화장비부(20)는 도 6의 (b)에 도시된 바와 같이, 이중화장비부(20)에서 delete데이터를 받을 때는 순서가 바뀌어서 올 수 있음으로 slot이 비어 있으면 slot Id에 SCN정보를 추가하고 slot에 정보가 있으면 SCN이 클 경우만 delete 처리(slot에 SCN만 추가)한다.
이를 통해, 이중화장비부(20)에는 도 7의 (a)에 도시된 바와 같이, 복수 개의 트랜잭션이 제1트랜잭션(TR1), 제3트랜잭션(TR3) 및 제2트랜잭션(TR2) 순으로 수신될 수 있다. 이때, 이중화장비부(20)는 제1트랜잭션을 통해 (1, 1), (2, 2)의 테이블을 생성한다. 그리고 제3트랜잭션을 통해(1, 201), (2, 202)라는 테이블을 생성한다. 이때, 제2트랜잭션은 제3트랜잭션 이전의 SCN이라 제3트랜잭션에 의해 형성된 테이블에 반영되지 않는다. 즉, 제2트랜잭션은 무시된다.
또한, 이중화장비부(20)는 도 7의 (b)에 도시된 바와 같이, 복수 개의 트랜잭션이 제3트랜잭션(TR3), 제1트랜잭션(TR1) 및 제2트랜잭션(TR2) 순서로 수신되었을 때, 제3트랜잭션을 통해 (1,101), (2, 202)의 테이블을 생성한다. 이때, 선택적용모듈(220)은 갱신문에서 원하는 데이터가 없은 것을 감지한 후, 갱신문을 삽입문으로 변경한다. 그리고 제1트랜잭션은 제2트랜잭션보다 SCN의 값이 작아 무시하며, 제3트랜잭션을 통해 생성된 테이블을 유지한다. 아울러, 제2트랜잭션 또한 제3트 J개션 보다 SCN의 값이 작아 테이블에 적용되지 않도록 한다. 이를 통해, 이중화장비부(20)를 통해(1, 201), (2, 202)라는 테이블이 최종적으로 생성되도록 한다.
이하, 도 8을 참조하여, 본 발명이 네트워크 오류에 대한 정합성을 보장하는 과정에 대해 설명한다.
도 8은 도 1의 임시저장모듈 및 리두로그버퍼모듈에 저장된 데이터 테이블이다.
이때, 도 8의 (a)은 이중화 장비로 못 보낸 데이터 정보가 저장되는 테이블이고, 도 8의 (b)는 delete를 이중화 장비로 못 보낸 경우 key가 저장되는 테이블이다.
먼저, 도 8에 도시된 테이블을 활용하여 이중화장비부로 이중화 데이터를 보내지 못할 때, 데이터를 처리하는 과정에 대해 설명한다.
메인장비부(10)에서 이중화장비부(20)로 복수 개의 트랜잭션이 완료되면, 이중화장비부(20)는 메인장비부(10)의 임시저장모듈(140)에 Application으로 리턴을 하며, 메인장비부(10)에서 Application이 응답을 받은 트랜잭션을 이중화 재전송 처리한다. 이중화 성능이 개선된 데이터베이스 이중화시스템(1)은 이와 같은 방식으로 이중화된 데이터를 정합성을 맞춘다.
아울러, 임시저장모듈(140)에 저장된 트랜잭션 정보 중에 delete가 있으면 로그 테이블에 삭제된 key가 포함된 내용을 추가로 저장한다. 트랜잭션 완료 후 Application응답 후에 백그라운드로 이중화 처리가 성공하면 임시저장모듈에 저장된 트랜잭션을 삭제를 한다. 트랜잭션 완료 후 Application응답 후에 백그라운드로 이중화 처리가 실패하면 disconnect 처리하고 주기적으로 다시 connection을 시도한다. 아울러 Connection에 성공하면 현재 진행중인 트랜잭션부터 다시 이중화 전송을 한다.
아울러, 저장된 임시저장모듈에 저장된 트랜잭션을 이중화장비부로 반영하는 과정에 대해 설명한다.
먼저, 임시저장모듈에는 table name과 slot id만 저장된다. Delete의 경우 리두로그버퍼모듈(160)에 key정보가 추가로 저장된다.
임시저장모듈(140)에 저장된 트랜잭션을 이중화장비부로 보낼 때는 table name과 slot id로 해당 table의 segment에 직접 접근하여 현재 data및 SCN을 이중화장비부(20)로 보낸다. 이중화장비부(20)에서는 SCN을 비교하여 반영 여부를 판단한다. 이때 Delete의 경우는 이중화장비부(20)에서 slot에 delete상태인 SCN을 저장하기 위해서 key 데이터도 같이 보낼 수 있다.
이와 같은 방식으로 데이터베이스 이중화 병렬 처리는 리도로그가 를 여러 개로 나누어 병렬 처리로 사용하여도 빠르게 처리할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시 예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다.
1: 이중화 성능이 개선된 데이터베이스 이중화시스템
10: 메인장비부
110: 제1데이터베이스모듈 120: 감지모듈
130: 번호할당모듈 140: 임시저장모듈
150: 잠금모듈
160: 리두로그버퍼모듈 170: 해제모듈
20: 이중화장비부
210: 수신모듈 220: 선택적용모듈
230: 제2데이터베이스모듈
TR: 트랜잭션

Claims (4)

  1. 제1릴레이션을 포함하는 제1데이터베이스모듈(110)과, 상기 제1릴레이션에 반영된 트랜잭션(Transaction)을 감지하는 감지모듈(120)과, 복수 개의 트랜잭션에 SCN(System Change Number)을 순차적으로 할당하는 번호할당모듈(130)과, 상기 SCN이 할당된 번호트랜잭션을 임시로 저장하며 제1상황에서는 번호트랜잭션을 삭제하고, 제2상황에서는 저장된 상기 번호트랜잭션을 송신 가능하게 하는 임시저장모듈(140)을 포함하는 메인장비부(10) 및
    상기 임시저장모듈(140)에서 송신되는 상기 번호트랜잭션을 수신하는 수신모듈(210)과, 상기 번호트랜잭션에 설정된 번호를 기억하며 상기 번호트랜잭션을 처리하되, 처리된 번호트랜잭션의 번호 보다 큰 번호가 설정된 번호트랜잭션은 처리하고, 처리된 번호트랜잭션의 번호 보다 작은 번호가 설정된 번호트랜잭션은 무시하는 선택적용모듈(220)과, 제2릴레이션을 포함하고 상기 선택적용모듈(220)로부터 전송되는 상기 번호트랜잭션을 수신해 상기 번호트랜잭션이 상기 제2릴레이션에 반영되도록 하는 제2데이터베이스모듈(230)을 포함하는 이중화장비부(20)를 포함하고,
    상기 메인장비부(10)는,
    상기 트랜잭션이 감지되면, 상기 트랜잭션을 상기 번호할당모듈(130)에 전송한 후, 상기 제1릴레이션을 잠그는 잠금모듈(150);
    상기 임시저장모듈(140)에 상기 번호트랜잭션이 저장되면, 상기 잠금모듈에 의해 잠긴 상기 제1릴레이션을 해제시키는 해제모듈(170)을 포함하고,
    상기 트랜잭션(TR)은,
    제1트랜잭션(TR1)과 제2트랜잭션(TR2)을 포함하고,
    상기 번호할당모듈(130)은,
    상기 해제모듈(170)이 상기 제1릴레이션이 편집 가능하게 해제시키면, 상기 제1트랜잭션(TR1)에 제1SCN을 할당하며 제1번호트랜잭션을 생성하고, 상기 제2트랜잭션(TR2)에 상기 제1SCN 보다 큰 번호인 제2SCN을 할당하며 제2번호트랜잭션을 생성하는, 이중화 성능이 개선된 데이터베이스 이중화시스템.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 임시저장모듈(140)은,
    상기 번호트랜잭션이 상기 제2릴레이션에 반영되면, 상기 번호트랜잭션을 삭제하고, 상기 번호트랜잭션이 상기 제2릴레이션에 반영되지 않으면 저장 상태를 유지시키는, 이중화 성능이 개선된 데이터베이스 이중화시스템.
KR1020200030799A 2020-03-12 2020-03-12 이중화 성능이 개선된 데이터베이스 이중화시스템 KR102303895B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200030799A KR102303895B1 (ko) 2020-03-12 2020-03-12 이중화 성능이 개선된 데이터베이스 이중화시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200030799A KR102303895B1 (ko) 2020-03-12 2020-03-12 이중화 성능이 개선된 데이터베이스 이중화시스템

Publications (1)

Publication Number Publication Date
KR102303895B1 true KR102303895B1 (ko) 2021-09-23

Family

ID=77926227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200030799A KR102303895B1 (ko) 2020-03-12 2020-03-12 이중화 성능이 개선된 데이터베이스 이중화시스템

Country Status (1)

Country Link
KR (1) KR102303895B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050064278A (ko) * 2003-12-23 2005-06-29 한국전자통신연구원 데이터베이스 이중화 장치 및 그 방법
US20140172794A1 (en) * 2012-12-19 2014-06-19 Christian BARTHOLOMÄ Replication Mechanisms for Database Environments
KR20160004721A (ko) * 2014-07-04 2016-01-13 (주)선재소프트 데이터 손실 없는 데이터베이스 리두 로그 이중화 방법 및 그를 위한 시스템
US20180173744A1 (en) * 2016-12-20 2018-06-21 International Business Machines Corporation Determining integrity of database workload transactions
KR101936787B1 (ko) * 2017-05-24 2019-01-14 (주)선재소프트 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050064278A (ko) * 2003-12-23 2005-06-29 한국전자통신연구원 데이터베이스 이중화 장치 및 그 방법
US20140172794A1 (en) * 2012-12-19 2014-06-19 Christian BARTHOLOMÄ Replication Mechanisms for Database Environments
KR20160004721A (ko) * 2014-07-04 2016-01-13 (주)선재소프트 데이터 손실 없는 데이터베이스 리두 로그 이중화 방법 및 그를 위한 시스템
KR101605455B1 (ko) 2014-07-04 2016-03-22 (주)선재소프트 데이터 손실 없는 데이터베이스 리두 로그 이중화 방법 및 그를 위한 시스템
US20180173744A1 (en) * 2016-12-20 2018-06-21 International Business Machines Corporation Determining integrity of database workload transactions
KR101936787B1 (ko) * 2017-05-24 2019-01-14 (주)선재소프트 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템

Similar Documents

Publication Publication Date Title
CN111143389B (zh) 事务执行方法、装置、计算机设备及存储介质
US6446090B1 (en) Tracker sensing method for regulating synchronization of audit files between primary and secondary hosts
US6662196B2 (en) Collision avoidance in bidirectional database replication
CN100440155C (zh) 用于创建虚拟数据拷贝的方法和系统
US6950915B2 (en) Data storage subsystem
KR100983300B1 (ko) 데이터 처리 시스템 내에서의 고장 복구
US6408310B1 (en) System and method for expediting transfer of sectioned audit files from a primary host to a secondary host
US6934877B2 (en) Data backup/recovery system
CN108932338B (zh) 数据更新方法、装置、设备和介质
US7103586B2 (en) Collision avoidance in database replication systems
EP0336035B1 (en) Tree structure database system
US11841844B2 (en) Index update pipeline
CN111209142B (zh) 跨数据库的事务管理方法、装置、设备及存储介质
US9141480B2 (en) Handling failed transaction peers in a distributed hash table
JP4461147B2 (ja) リモートデータミラーリングを用いたクラスタデータベース
CN113396407A (zh) 用于利用区块链技术扩充数据库应用的系统和方法
CN105608086A (zh) 分布式数据库系统的事务处理方法及装置
US20040139127A1 (en) Backup system and method of generating a checkpoint for a database
US20100169289A1 (en) Two Phase Commit With Grid Elements
KR20020010324A (ko) 이중화 시스템 환경에서 데이터 동기화를 위한 트랜잭션관리 방법
CN111444027B (zh) 事务处理方法、装置、计算机设备及存储介质
US20110295803A1 (en) Database system, method, and recording medium of program
CN112765126B (zh) 数据库事务的管理方法、装置、计算机设备和存储介质
KR102303895B1 (ko) 이중화 성능이 개선된 데이터베이스 이중화시스템
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质

Legal Events

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