KR20180128580A - 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템 - Google Patents

데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템 Download PDF

Info

Publication number
KR20180128580A
KR20180128580A KR1020170063860A KR20170063860A KR20180128580A KR 20180128580 A KR20180128580 A KR 20180128580A KR 1020170063860 A KR1020170063860 A KR 1020170063860A KR 20170063860 A KR20170063860 A KR 20170063860A KR 20180128580 A KR20180128580 A KR 20180128580A
Authority
KR
South Korea
Prior art keywords
slot
slots
query
database
processed
Prior art date
Application number
KR1020170063860A
Other languages
English (en)
Other versions
KR101936787B1 (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 KR1020170063860A priority Critical patent/KR101936787B1/ko
Priority to PCT/KR2017/005573 priority patent/WO2018216839A1/ko
Priority to CN201780084899.1A priority patent/CN110300964B/zh
Publication of KR20180128580A publication Critical patent/KR20180128580A/ko
Application granted granted Critical
Publication of KR101936787B1 publication Critical patent/KR101936787B1/ko

Links

Images

Classifications

    • G06F17/30174
    • 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/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • 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
    • G06F17/30227
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Abstract

본 발명은 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템에 관한 것이다. 여기서, 본 발명의 데이터베이스 이중화 방법은 메인장비의 제1데이터베이스 가운데 처리될 쿼리(Query)를 감지하여, 쿼리를 제2데이터베이스를 포함하는 이중화장비의 수신기에 전송하는 (A)단계, 쿼리로부터 제1데이터베이스에 저장된 릴레이션의 레코드에 적용될 기본키(Primary Key)를 갖는 슬롯 ID와 트랜잭션 ID(Transaction ID)를 갖는 슬롯을 추출하는 (B)단계, 슬롯을 락(Lock)하는 (C)단계, 슬롯 가운데 기본키(Primary Key)가 동일하되 전순위에 처리되는 전슬롯은 주분배자에서 대기시키고, 기본키가 동일하되 후순위에 처리되는 후슬롯은 부분배자로 전송하는 (D)단계, 전슬롯과 후슬롯을 반영자에 할당하는 (E)단계, 전슬롯이 할당된 반영자로 메인래퍼런스 카운트(Main Reference Count)를 증가시키고, 후슬롯이 할당된 반영자로 서브래퍼런스 카운트(Sub Reference Count)를 증가시키는 (F)단계 및 전슬롯의 락과 후슬롯의 락을 해지하는 (G)단계를 포함한다.
또한, 본 발명의 데이터베이스 이중화 시스템은 제1데이터베이스에 저장된 하나의 릴레이션에 처리될 쿼리를 감지하는 감지기, 쿼리를 전송하는 송신기, 송신기에서 전송되는 쿼리를 수신하는 수신기, 수신기에서 수신된 쿼리에서 슬롯 ID(Slot ID), 트랜잭션 ID(Transaction ID)를 갖는 슬롯을 형성하고, 형성된 슬롯 가운데 기본키(Primary Key)가 동일하되 전순위에 처리되는 전슬롯은 대기시키고, 후순위에 처리될 후슬롯은 부분배자로 전송하는 주분배자 및 전슬롯과 후슬롯을 제2데이터베이스에 반영하는 반영자를 포함한다.

Description

데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템{Method for database replication and System for database replication}
본 발명은 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템에 관한 것으로서, 더욱 상세하게는 데이터베이스 이중화장비에 트랜잭션을 병렬로 처리하며 트랜잭션을 신속히 처리하면서도 데이터 무결성을 보증할 수 있는 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템에 관한 것이다.
데이터베이스는 컴퓨터에 기록된 데이터들이 논리적이 관계로 연계된 집합을 의미한다. 데이터 요소들 간의 논리적 관계는 질의 된 내용을 기반으로 데이터베이스로부터 특정 정보를 수정, 제거, 변경 등의 편집할 수 있도록 한다.
데이터베이스는 편집된 데이터에 오류가 없도록 하며, 새로운 데이터의 삽입, 삭제, 갱신할 수 있도록 할 수 있다. 또한, 여러 사용자가 동시에 자기가 원하는 데이터를 이용할 수 있도록 한다.
데이터베이스에 저장되는 많은 데이터들은 여러 질의 내용을 통해 데이터의 무결성을 보증하며 트랜잭션 되고 있다.
이러한 방식의 데이터 처리는 사회의 산업 전반에 있어, 업무를 처리하는 많이 사용되고 있다. 특히, 데이터를 신속하고 정확하게 수정 및 생성해야하는 분야에서 중요하게 여겨지고 있다.
현재, 데이터 처리의 안정성을 높이기 위해, 물리적으로 떨어져 있는 여러 데이터베이스에 대하여 메인 데이터베이스에 저장되는 데이터를 백업 데이터베이스에 동기화 시키는 과정이 활발히 개발되고 있다. 즉, 데이터의 이중화 기술이 많이 개발되고 있다.
중요 데이터를 트랜잭션하는 은행 및 한국 거래소 등은 컴퓨터의 오류 및 바이러스 침입에 의한 사고 등에 대비하기 위해 데이터 이중화 기술을 많이 이용하고 있다.
금융권에서 데이터 이중화 방식의 사용이 점차 늘어남에 따라, 이중화 방식의 데이터 처리의 안전성을 높이는 방법 및 시스템에 대한 연구가 활발히 진행되고 있다. 일례로, 대한민국 등록특허 제10-1605455가 있다.
그러나, 전술한 등록특허를 비롯해 개발된 대다수의 기술은 처리되는 데이터의 손실을 방지하는 기술일 뿐, 데이터의 무결성 및 데이터의 처리 속도를 향상시키는 방안은 제시하지 못하고 있는 실정이다.
대한민국 등록특허 제10-1605455호 (2016.03.16)
본 발명이 이루고자 하는 기술적 과제는 이러한 문제점을 해결하기 위한 것으로서, 트랜잭션의 처리 속도를 향상시키고 데이터 무결성을 보증할 수 있는 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템을 제공하는 것이다.
본 발명의 기술적 과제는 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 데이터베이스 이중화 방법은 메인장비의 제1데이터베이스 가운데 처리될 쿼리(Query)를 감지하여, 상기 쿼리를 제2데이터베이스를 포함하는 이중화장비의 수신기에 전송하는 (A)단계;
상기 쿼리로부터 상기 제1데이터베이스에 저장된 릴레이션의 레코드에 적용될 기본키(Primary Key)를 갖는 슬롯 ID와 트랜잭션 ID(Transaction ID)를 갖는 슬롯을 추출하는 (B)단계;
상기 슬롯을 락(Lock)하는 (C)단계;
상기 슬롯 가운데 기본키(Primary Key)가 동일하되 전순위에 처리되는 전슬롯은 주분배자에서 대기시키고, 상기 기본키가 동일하되 후순위에 처리되는 후슬롯은 부분배자로 전송하는 (D)단계;
상기 전슬롯과 상기 후슬롯을 반영자에 할당하는 (E)단계;
상기 전슬롯이 할당된 상기 반영자로 메인래퍼런스 카운트(Main Reference Count)를 증가시키고, 상기 후슬롯이 할당된 상기 반영자로 서브래퍼런스 카운트(Sub Reference Count)를 증가시키는 (F)단계; 및
상기 전슬롯의 락과 상기 후슬롯의 락을 해지하는 (G)단계를 포함한다.
상기 주분배자는 상기 전슬롯을 상기 반영자에 각각 전송하여 동시에 수행할 수 있도록 하고, 상기 부분배자는 상기 전슬롯이 처리되면, 상기 후슬롯을 동시에 처리할 수 있도록 한다.
상기 부분배자는 처리된 상기 전슬롯과 기본키가 동일한 상기 후슬롯을 상기 전슬롯을 처리한 상기 반영자에 전송할 수 있다.
상기 주분배자는 추출된 슬롯이 락이 되지 않을 경우, 상기 슬롯이 락이 될 때까지 대기할 수 있다.
제1데이터베이스에 저장된 하나의 릴레이션에 처리될 쿼리를 감지하는 감지기;
상기 쿼리를 전송하는 송신기;
상기 송신기에서 전송되는 상기 쿼리를 수신하는 수신기;
상기 수신기에서 수신된 상기 쿼리에서 슬롯 ID(Slot ID), 트랜잭션 ID(Transaction ID)를 갖는 슬롯을 형성하고, 형성된 상기 슬롯 가운데 기본키(Primary Key)가 동일하되 전순위에 처리되는 전슬롯은 대기시키고, 후순위에 처리될 후슬롯은 부분배자로 전송하는 주분배자; 및
상기 전슬롯과 상기 후슬롯을 제2데이터베이스에 반영하는 반영자를 포함한다.
상기 주분배자는 주문 쿼리가 진행된 후, 커밋(commit)쿼리를 진행하며 하나의 트랜잭션 ID를 갖는 슬롯을 생성하도록 할 수 있다.
상기 부분배자는 상기 전슬롯이 처리되면, 상기 후슬롯을 동시에 처리할 수 있다.
상기 부분배자는 상기 전슬롯의 기본키와 동일한 기본키를 갖는 상기 후슬롯을 상기 전슬롯을 처리한 상기 반영자에 전송할 수 있다.
본 발명에 따른 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템은 데이터의 트랜잭션(Transaction)속도를 높여, 원격지 서버에 트랜잭션 병목현상이 발생되지 않도록 할 수 있다.
또한, 본 발명은 원격지 서버에 데이터 무결성을 보증하며 데이터를 병렬 처리할 수 있도록 한다.
도 1은 본 발명의 일 실시예에 의한 데이터베이스 이중화 시스템의 블록도이다.
도 2는 도 1의 이중화장비가 수신된 쿼리로부터 슬롯ID 및 트랜잭션 ID를 추출하여 나타낸 표이다.
도 3은 도 1의 데이터베이스 이중화 시스템의 주분배자와 부분배자의 동작을 개념적으로 도식한 개념도이다.
도 4는 도 3의 주분배자와 부분배자의 동작에 의해 쿼리가 처리되며 나타난 릴레이션이다.
도 5는 도 1의 데이터베이스 이중화 시스템의 주분배자의 동작과정을 나타낸 순서도이다.
도 6은 도 1의 데이터베이스 이중화 시스템의 부분배자의 동작과정을 나타낸 순서도이다.
도 7은 도 1의 데이터베이스 이중화 시스템의 반영자를 회수하는 과정을 나타낸 순서도이다.
도 8은 도 4의 주분배자의 작동 과정과 도 6의 반영자의 회수 과정이 결합되는 지점을 개략적으로 나타낸 순서도이다.
도 9는 종래기술과 데이터베이스 이중화 시스템의 트랜잭션 수행에 소비되는 시간을 나타낸 도면이다.
본 발명의 이점 및 특징 그리고 그것들을 달성하기 위한 방법들은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
본 발명은 청구범위는 청구항을 비롯해 청구항을 뒷받침하는 설명에 의해 정의될 수 있다. 아울러, 명세서 전체에 걸쳐 동일 참조부호는 동일 구성요소를 지칭한다.
이하, 도 1 내지 도 9를 참조하여 본 발명의 일 실시예에 의한 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템에 대해 상세히 설명한다.
다만, 설명이 간결하고 명확해 질 수 있도록 도 1 내지 4를 참조하여 데이터베이스 이중화 시스템에 대해 상세히 설명한 후, 이를 바탕으로 도 5 내지 도 9를 참조해 데이터베이스 이중화 방법에 대해 설명하도록 한다.
먼저, 도 1을 참조하여 본 발명의 일 실시예에 따른 데이터베이스 이중화 시스템(1)에 대해 설명한다.
도 1은 본 발명의 일 실시예에 의한 데이터베이스 이중화 시스템의 블록도이다.
본 발명의 일 실시예에 따른 데이터베이스 이중화 시스템(1)은 이중화장비(20)의 주분배자(202)가 메인장비(10)의 송신기에서 전송된 쿼리(Query)에서 슬롯 ID(Slot ID), 트랜잭션 ID(Transaction ID)를 갖는 슬롯(S)을 형성한다. 그리고, 형성된 슬롯 가운데 기본키(P.K: Primary Key)가 동일하되, 전순위에 처리되는 전슬롯(FS, 도 3참조)은 주분배자(202)에서 처리되도록 하고, 후순위에 처리되는 후슬롯(PS, 도 3참조)은 부분배자(203)에서 처리되도록 한다.
이때, 데이터베이스 이중화 시스템(1)은 주분배자(202)에서 기본키가 상이한 복수 개의 전슬롯(FS)을 동시에 처리한 후, 부분배자(203)에서 복수 개의 후슬롯(PS)을 동시에 처리하며 모든 슬롯을 제2데이터베이스(205)에 신속히 반영한다.
즉, 데이터베이스 이중화 시스템(1)은 이중화 데이터를 전처리하여 처리 과정을 분리시켜 병목현상 없이 데이터를 이중화시킬 수 있다.
이러한 데이터베이스 이중화 시스템(1)은 제1데이터베이스에 저장된 하나의 릴레이션에 처리될 쿼리를 감지하는 감지기(102), 쿼리를 전송하는 송신기(103), 송신기(103)에서 전송되는 쿼리를 수신하는 수신기(201), 수신기(201)에서 수신된 쿼리에서 슬롯 ID(Slot ID), 트랜잭션 ID(Transaction ID)를 갖는 슬롯(S)을 형성하고, 형성된 슬롯 가운데 기본키(Primary Key)가 동일하되 전순위에 처리되는 전슬롯(FS)은 대기시키고, 후순위에 처리될 후슬롯(PS)은 부분배자(203)로 전송하는 주분배자(202) 및 전슬롯(FS)과 후슬롯(PS)을 제2데이터베이스(205)에 반영하는 반영자(204)를 포함한다.
여기서, 제1데이터베이스(101)는 데이터베이스 관리 시스템인 메인장비(10)에 설치되고, 제2데이터베이스(205)는 데이터베이스 관리 시스템인 이중화장비(20)에 설치될 수 있다. 데이터베이스 관리 시스템은 사용자와 데이터베이스 사이에서 쿼리에 따라 정보를 생성 및 조작할 수 있다.
이하, 데이터베이스 이중화 시스템(1)을 구성하는 구성요소들에 대해 상세히 설명한다.
감지기(102)는 메인장비(10)에 포함된 제1데이터베이스(101)에 저장된 하나의 릴레이션에 처리될 쿼리를 감지한다. 즉, 감지기(102)는 이중화 데이터를 감지한다. 일례로, 감지기(102)는 쿼리 처리기(Query Processor)로 형성될 수 있다.
이러한 감지기(102)는 감지된 쿼리를 메인장비(10)에 포함된 송신기(103)에 전송할 수 있다.
송신기(103)는 수신된 쿼리를 이중화장비(20)에 포함된 수신기(201)에 전송한다. 수신기(201)는 이중화장비(20)에 포함되어, 송신기(103)에서 송신한 쿼리 즉, 주문 데이터를 수신한다. 이때, 송신기(103)와 수신기(201)는 네트워크로 연결되어 주문 데이터를 원활히 송/수신할 수 있다.
주분배자(202)는 이중화장비(20)에 반영되어야 할 데이터가 어떤 것이 있는지 판단하여 반영자(204)에 분배한다. 이러한 주분배자(202)는 이중화장비(20)에 포함되고, 수신기(201)에서 수신된 쿼리에서 슬롯 ID(Slot ID)와 트랜잭션 ID(Transaction ID)를 갖는 슬롯(S)을 적어도 하나 추출할 수 있다.
이때, 주분배자(202)는 하나의 주문 쿼리가 진행된 후, 하나의 커밋(commit) 쿼리를 진행하며 하나의 트랜잭션 ID를 갖는 슬롯을 생성한다. 그리고, 생성된 슬롯을 락(lock)하여 하나의 트랜잭션이 사용하는 데이터에 다른 트랜잭션이 접근하지 못하도록 할 수 있다.
또한, 주분배자(202)는 형성된 슬롯 가운데 앞서 처리된 내용을 변경하는 내용을 포함하는 쿼리를 진행하는 슬롯은 앞선 형성된 슬롯 ID와 동일한 슬롯 ID로 슬롯을 형성한다. 즉, 주분배자(202)는 기본키가 동일 앞서 처리되는 쿼리를 변경하는 후슬롯을 형성할 수 있다.
주분배자(202)는 앞서 처리되는 쿼리를 포함하는 전슬롯은 대기시키고, 후처리되는 쿼리를 포함하는 후슬롯은 부분배자(203)로 전송한다. 즉, 주분배자(202)는 수신된 쿼리에서 슬롯 ID와 트랜잭션 ID를 갖는 슬롯을 생성한 후, 일부 슬롯은 대기시키고 나머지 일부 슬롯은 부분배자(203)로 넘긴다.
여기서, 슬롯은 1개의 레코드를 저장할 수 있는 공간을 의미한다. 이러한 슬롯은 기본키(Primary Key), 트랜잭션 ID를 포함할 수 있고, 기본키가 동일한 슬롯을 찾아 릴레이션의 내용을 변경할 수 있다.
주분배자(202)와 부분배자(203)는 서로 다른 트랜잭션 ID를 갖는 트랜잭션이 동일한 기본키를 갖는 릴레이션을 수정하기 원하는 경우, ID가 다른 트랜잭션이 레코드를 동시에 처리하지 못하도록 한다.
이와 같이, 주분배자(202)와 부분배자(203)는 트랜잭션을 처리하며 트랜잭션의 독립성을 확보할 수 있다. 이러한 주분배자(202)와 부분배자(203)의 동작에 대해서는 후술하여 구체적으로 설명하도록 한다.
반영자(204)는 슬롯에 저장된 레코드를 제2데이터베이스(205)에 반영하는 역할을 한다. 즉, 반영자(204)는 전슬롯(FS)과 후슬롯(PS)을 제2데이터베이스(205)에 반영한다. 이러한 반영자(204)의 개수에 대응하여 트랜잭션을 동시에 처리할 수 있다. 일례로, 반영자의 개수가 4개인 경우, 4개의 트랜잭션을 동시에 처리할 수 있다.
이하, 도 2 내지 도 4를 참조하여, 데이터베이스 이중화 시스템이 복수 개의 처리내용을 트랜잭션하는 상태에 대해 설명한다.
도 2는 도 1의 이중화장비가 수신된 쿼리로부터 슬롯ID 및 트랜잭션 ID를 추출하여 나타낸 표이고, 도 3은 도 1의 데이터베이스 이중화 시스템의 주분배자와 부분배자의 동작을 개념적으로 도식한 개념도이고, 도 4는 도 3의 주분배자와 부분배자의 동작에 의해 쿼리가 처리되며 나타난 릴레이션이다.
일례로, 도 2의 (a)에 도시된 바와 같이, 12개의 쿼리가 수신기(201)에 수신되면, 주분배자(202)는 수신된 쿼리에서 도 2의 (b)에 도시된 바와 같이 슬롯 ID와 트랜잭션 ID를 추출한다. 일례로, 주분배자(202)는 도 2의 (b)에 도시된 바와 같이, 제1쿼리에‘열(column)의 값이 AA인 새로운 레코드를 삽입’하라는 쿼리와 제2쿼리에‘트랜잭션을 커밋한다.’라는 쿼리가 수신되면 제1쿼리와 제2쿼리에 대해서는 트랜잭션 ID와 슬롯 ID의 값을 1로 추출한다.
그리고, 제3쿼리에‘열(column)의 값이 BB인 새로운 레코드를 삽입’하라는 쿼리와 제4쿼리에‘트랜잭션을 커밋한다.’라는 쿼리가 수신되면 제3쿼리와 제4쿼리에 대해서는 트랜잭션 ID와 슬롯 ID의 값을 2로 추출한다.
제5쿼리에‘열(column)이 값이 AA인 레코드의 두 번째 열(column)을 BB로 변경’하라는 쿼리와 제6쿼리에‘트랜잭션을 커밋한다.’라는 쿼리가 수신되면 제5쿼리와 제6쿼리에 대해서는 트랜잭션 ID의 값을 3으로 추출하고, 슬롯 ID의 값을 1로 추출한다.
제7쿼리에‘열(column)이 값이 CC인 레코드를 삽입’하라는 쿼리와 제8쿼리에‘트랜잭션을 커밋한다.’라는 쿼리가 수신되면 제7쿼리와 제8쿼리에 대해서는 트랜잭션 ID의 값을 4로 추출하고, 슬롯 ID의 값을 3로 추출한다.
그리고, 제9쿼리에‘열(column)이 값이 CC인 레코드의 두 번째 열(column)을 DD로 변경’하라는 쿼리와 제10쿼리에‘트랜잭션을 커밋한다.’라는 쿼리가 수신되면 제9쿼리와 제10쿼리에 대해서는 트랜잭션 ID 값을 5로 추출하고, 슬롯 ID의 값은 3으로 추출한다.
그리고, 제11쿼리에‘열(column)의 값이 EE인 새로운 레코드를 삽입’하라는 쿼리와 제12쿼리에‘트랜잭션을 커밋한다.’라는 쿼리가 수신되면 제11쿼리와 제12쿼리에 대해서는 트랜잭션 ID값을 6으로 추출하고, 슬롯 ID값을 4로 추출한다.
이러한 방식으로 주분배자(202)는 두 개의 쿼리에 한 개의 트랜잭션 ID 그리고 하나의 슬롯 ID를 추출할 수 있다. 이때, 슬롯에 형성되는 ID은 슬롯이 처리하는 내용이 앞서 처리된 내용과 연관이 있는 경우, 앞서 슬롯에 형성된 ID와 동일한값으로 형성된다.
주분배자(202)는 트랜잭션 ID와 슬롯 ID가 추출된 슬롯 가운데 기본키(P.K: Primary Key)가 동일하되, 전순위에 처리되는 전슬롯(FS)은 대기시키고, 후순위에 처리되는 후슬롯(PS)은 부분배자(203)로 전송한다.
즉, 주분배자(202)는 반영자(204)에게 당장 분배할 수 있는 슬롯은 반영자(204)에게 보내고 그렇지 않고 대기 한 후 처리되어야 할 슬롯은 부분배자(203)에 전송하여 처리한다.
부분배자(203)는 전슬롯의 기본키와 동일한 기본키를 갖는 후슬롯(PS)을 전슬롯(FS)을 처리한 반영자(204)에 전송하여 처리될 수 있도록 한다. 이때, 부분배자(203)는 주분배자(202)에서 반영자(204)로 넘긴 슬롯이 릴레이션에 다 반영되는 동안 대기하고 있다가, 완료되면 반영자(204)에 후슬롯(PS)을 동시에 넘기며 동시에 처리될 수 있도록 한다.
이와 같이, 주분배자(202)와 부분배자(203)가 트랜잭션 ID와 슬롯 ID가 추출된 슬롯을 반영자(204)에 넘기며 처리되도록 하며, 제2데이터베이스(205)에 도 4에 도시된 바와 같이 기본키가 1인 두 번째 열인 β열의 AA이 BB로 변경되고, 기본기가 4인 두 번째 열인 CC가 DD로 변경된 릴레이션이 반영될 수 있도록 한다.
이하, 지금까지 설명한 데이터베이스 이중화 시스템(1)에 대한 설명을 바탕으로 본 발명의 일 실시예에 의한 데이터베이스 이중화 방법에 대해 설명하도록 한다.
데이터베이스 이중화 방법은 메인장비의 제1데이터베이스(101) 가운데 처리될 쿼리(Query)를 감지하여, 쿼리를 제2데이터베이스(205)를 포함하는 이중화장비의 수신기에 전송하는 (A)단계를 시작한다.
(A)단계 이후, 쿼리로부터 제1데이터베이스에 저장된 릴레이션의 레코드에 적용될 기본키(Primary Key)를 갖는 슬롯 ID와 트랜잭션 ID를 갖는 슬롯을 추출하는 (B)단계를 진행한다.
슬롯 ID와 트랜잭션 ID이 할당된 슬롯이 추출되면, 슬롯을 락(Lock)하는 (C)단계를 진행한다.
이후, 슬롯 가운데 기본키가 동일하되, 전순위에 처리되는 전슬롯(FS)은 주분배자에서 대기시키고, 후순위에 처리되는 후슬롯은 부분배자로 전송하는 (D)단계를 진행한다.
(D)단계가 완료되면, 전슬롯(FS)과 후슬롯(PS)을 반영자(204)에 할당하는 (E)단계를 진행한다. 이후, 전슬롯(FS)이 할당된 반영자(204)로 메인래퍼런스 카운트(Main Reference Count)를 증가시키고, 후슬롯(PS)이 할당된 반영자(204)로 서브래퍼런스 카운트(Sub Reference Count)를 증가시키는 (F)단계를 진행한다.
이후, 전슬롯의 락과 후슬롯의 락을 해지하는 (G)단계를 진행한다.
데이터베이스 이중화 방법은 (A)단계 내지 (G)단계를 일련의 단계로 진행하며, 쿼리를 트랜잭션 하는 속도를 높여, 원격지 서버에 트랜잭션의 병목현상이 발생되지 않도록 할 수 있다.
이와 같은 데이터베이스 이중화 방법에 있어, 주분배자(202)의 작동은 도 5의 순서도를 기준으로 작동되고, 부분배자(203)의 작동은 도 6의 순서도를 기준으로 작동된다.
도 5는 도 1의 데이터베이스 이중화 시스템의 주분배자의 동작과정을 나타낸 순서도이고, 도 6은 도 1의 데이터베이스 이중화 시스템의 부분배자의 동작과정을 나타낸 순서도이다.
도 5와 도 6에 도시된 주분배자와 부분배자의 동작과정은 도 2를 참조하여 설명하도록 한다.
주분배자(202)는 도 2(b)에 도시된 바와 같이, 수신된 쿼리에서 슬롯 ID와 트랜잭션 ID를 추출한다(S110). 이때, 쿼리는 주분배자(202)가 트랜잭션 ID와 슬롯 ID를 추출할 수 있도록 특정 정보를 포함할 수 있다.
이후, 주분배자(202)는 추출된 슬롯의 동시성 제어를 위해 슬롯 락(lock)을 거는 단계를 진행한다(S120). 이때, 부분배자(203) 또는 커밋의 처리로 인하여 슬롯에 락이 걸리지 않은 경우 일정시간 대기한 후 슬롯에 락이 건다(S121). 이후, 락이 걸린 슬롯 가운데 기본키가 동일하되, 전순위에 처리되는 전슬롯(FS)은 대기시키고, 기본키가 동일하되 후순위에 처리되는 후슬롯(PS)은 부분배자(203)로 전송한다.
이때, 부분배자(203)에서 슬롯을 처리 대기 중이라면, 서브래퍼런스 카운트(Sub Reference Count)를 증가시켜, 전송될 후슬롯(PS)이 대기되도록 한다.
또한, 주분배자(202)는 전슬롯(FS)에 설정된 슬롯 ID와 트랜잭션 ID로 적절한 반영자(204)가 존재하는지 판단한다(S140). 이때, 전슬롯(FS)이 사용 중이 아닐 경우에는 전슬롯(FS)에 반영자(204) 정보를 저장한다(S141). 이후, 반영자(204)에 쿼리에 설정된 트랜잭션 ID와 주분배자에서 추출된 트랜잭션ID를 비교하여 동일한지를 판별한다(S150). 이때, 쿼리에 설정된 트랜잭션 ID와 추출된 트랜잭션 ID가 동일하여 반영자가 동일한 경우, 메인래퍼런스 카운트(Main Reference Count)를 증가시킨다. 반면, 반영자(204)가 상이한 경우, 서브래퍼런스 카운트(Sub Referebce Count)를 증가시킨다.
이후, 메인래퍼런스 카운트와 서브래퍼런스 카운트를 증가시킨 슬롯의 락을 해지하여, 다른 트랜잭션이 접근할 수 있도록 한다.
부분배자(203)는 전술한 주분배자(202)에서 슬릇이 부분배자(203)로 분류되어 작동하는 것으로 시작한다(S151). 이후, 부분배자(203)는 분류된 슬롯의 동시성 제어를 위하여 후슬롯(PS)에 락을 거는 것으로 진행된다(S161).
이때, 커밋의 처리로 인하여 후슬롯(PS)에 락이 걸리지 않은 경우 일정시간 대기한 후, 후슬롯(PS)에 락이 걸리도록 한다(S183).
락이 걸린 후슬롯(PS) 가운데, 반영자(204)에 후슬롯(PS)이 반영되지 않은 경우, 후슬롯(PS)에 반영자(204) 정보를 저장한다(S172). 한편, 반영자(204)에 후슬롯(PS)이 반영된 경우, 쿼리에 설정된 트랜잭션 ID와 후슬롯의 트랜잭션 ID를 비교하여 동일한지를 판별한다(S181). 이때, 쿼리에 설정된 트랜잭션 ID와 후슬릇의 트랜잭션 ID가 상이한 경우, 락을 해지한 후, 대기 및 재시도한다.
반면, 반영자(204)가 동일한 경우, 서브래퍼런스 카운트(Sub Reference Count)를 증가시킨 후 다음 처리를 진행한다.
부분배자(203)에서는 대기중이었던 트랜잭션이 반영자(204)에서 처리되며, 대기중이었다는 정보인 서브래퍼러스 카운트를 감소시킨다(S191). 그리고 메인레버러스카운트를 증가시켜 처리중으로 상태를 변경한다(S201).
이후, 후슬롯(PS)이 다른 트랜잭션을 처리할 수 있도록 락을 해지한다.
즉, 부분배자(203)는 대기중인 트랜잭션이 처리가 가능한 시점이 되면, 반영자로 넘겨 트랜잭션이 처리될 수 있도록 한다.
이하, 도 7 및 도 8을 참조하여 반영자가 회수되는 과정 및 주분배자의 작동 과정과 반영자의 회수 과정의 연결되어 작동하는 것에 대해 설명하도록 한다.
도 7은 도 1의 데이터베이스 이중화 시스템의 반영자를 회수하는 과정을 나타낸 순서도이고, 도 8은 도 4의 주분배자의 작동 과정과 도 6의 반영자의 회수 과정이 결합되는 지점을 개략적으로 나타낸 순서도이다.
제2데이터베이스(205)에 트랜잭션이 반영되면, 트랜잭션 커밋 완료를 진행한다(S210). 이후, 현재 트랜잭션이 사용하고 있는 모든 슬롯 정보를 분배자의 메모리 등을 참조하여 얻는 단계를 진행한다(S220). 다음으로, 추출된 슬롯을 락(lock)하는 단계를 진행한다(S230).
이때, 슬롯에 락이 걸리지 않은 경우 일정시간 대기한 후 슬롯에 락이 걸리도록 한다(S231). 반면, 슬롯에 락이 걸리는 경우, 메인래퍼런스 카운트와 서브래퍼런스 카운트를 감소하는 단계로 진입한다(S240). 이때, 트랜잭션 내 실행된 쿼리의 개수만큼 메인래퍼런스 카운트와 서브래퍼런스 카운트를 감소시킨다.
본 발명에서는 하나의 트랜잭션 ID에 하나의 주문쿼리를 포함하고 있기 때문에 1인 메인래퍼런스 카운트와 서브래퍼런스 카운트에서 1만큼 감소시켜준다.
이후, 메인레퍼런스 카운트와 서브래퍼런스 카운트가 0인지를 판단하는 단계를 진행한다(S250). 이때, 각 래퍼런스 카운트가 0이면 해당 슬롯의 반영자 정보를 삭제하는 단계(S260) 그리고 슬롯의 락을 해지하는 단계(S270)를 순차적으로 진행한다.
반면, 각 래퍼런스 카운트가 0이 아니면 슬롯의 락을 해제하는 단계를 바로 진행한다. 이후, 더 이상 처리할 쿼리가 남아 있는지 확인한다.
더욱이, S260에서 반영자 정보를 슬롯에서 삭제하면, 도 5의 S140단계와 연결되어 반영자를 재할당하고, 쿼리를 계속적으로 수행해 나갈 수 있다. 다시, 도 7과 관련하여, 이후 현재 트랜잭션이 포함하고 있는 쿼리의 슬롯에 대해 처리를 완료했는지 확인한다.
이와 같은 방법을 반복하여 슬롯 내 할당된 반영자들을 모두 회수하고, 각 슬롯에 새로운 트랜잭션이 접근할 수 있도록 한다.
도 9는 종래기술과 데이터베이스 이중화 시스템의 트랜잭션 수행에 소비되는 시간을 나타낸 도면이다.
도 9의 (a)는 종래의 방식에 따른 트랜잭션 수행에 따른 시간을 나타낸 도면이고, (b)는 본 발명에 따른 트랜잭션 수행에 따른 시간을 나타낸 도면이다.
도 9의 (a)에서 보는 바와 같이, 하나의 트랜잭션을 처리하는데 있어, 앞선 트랜잭션을 처리하는데 까지 대기해야 하는 방법은 처리하는 레코드가 다름에도 하나의 반영자를 이용한다. 따라서, 하나의 트랜잭션이 처리된 이후, 나머지 트랜잭션들이 처리되므로 전체 트랜잭션을 완료하는데 오랜 시간이 걸린다.
반면, 도 9(b)에서 보는 바와 같이, 본 발명의 데이터베이스 이중화 방법은 기본키가 상이한 트랜잭션 ID 1, 트랜잭션 ID 2, 트랜잭션 ID 4 및 트랜잭션 ID 6은 주분배자(202)에서 병렬로 수행한다. 그리고, 트랜잭션 ID 2와 기본키가 동일한 트랜잭션 ID 3과 트랜잭션 ID 4와 동일한 트랜잭션 ID 5를 부분배자(203)에서 병렬로 수행한다.
이와 같이, 주분배자(202)와 부분배자(203)는 트랜잭션을 병렬 처리하되, 부분배자(203)는 주분배자(202)의 트랜잭션이 완료된 후 처리한다. 따라서, 데이터베이스 이중화방법은 트랜잭션의 전체 처리 시간을 줄일 수 있다.
특히, 본 발명의 데이터베이스 이중화 방법은 트랜잭션이 많고, 많은 반영자를 생성하여 동시에 수행되는 트랜잭션이 많아지는 경우, 전체 데이터베이스를 이중화 하는데 소비되는 시간을 현격히 감소시킬 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다.
1: 데이터베이스 이중화 시스템
10: 메인장비 101: 제1데이터베이스
102: 감지기 103: 송신기
20: 이중화장비 201: 수신기
202: 주분배자 203: 부분배자
204: 반영자 205: 제2데이터베이스
S: 슬롯 FS: 전슬롯
PS: 후슬롯

Claims (8)

  1. 메인장비의 제1데이터베이스 가운데 처리될 쿼리(Query)를 감지하여, 상기 쿼리를 제2데이터베이스를 포함하는 이중화장비의 수신기에 전송하는 (A)단계;
    상기 쿼리로부터 상기 제1데이터베이스에 저장된 릴레이션의 레코드에 적용될 기본키(Primary Key)를 갖는 슬롯 ID와 트랜잭션 ID(Transaction ID)를 갖는 슬롯을 추출하는 (B)단계;
    상기 슬롯을 락(Lock)하는 (C)단계;
    상기 슬롯 가운데 기본키(Primary Key)가 동일하되 전순위에 처리되는 전슬롯은 주분배자에서 대기시키고, 상기 기본키가 동일하되 후순위에 처리되는 후슬롯은 부분배자로 전송하는 (D)단계;
    상기 전슬롯과 상기 후슬롯을 반영자에 할당하는 (E)단계;
    상기 전슬롯이 할당된 상기 반영자로 메인래퍼런스 카운트(Main Reference Count)를 증가시키고, 상기 후슬롯이 할당된 상기 반영자로 서브래퍼런스 카운트(Sub Reference Count)를 증가시키는 (F)단계; 및
    상기 전슬롯의 락과 상기 후슬롯의 락을 해지하는 (G)단계를 포함하는 데이터베이스 이중화 방법.
  2. 제1항에 있어서,
    상기 주분배자는 상기 전슬롯을 상기 반영자에 각각 전송하여 동시에 수행할 수 있도록 하고, 상기 부분배자는 상기 전슬롯이 처리되면, 상기 후슬롯을 동시에 처리하는 데이터베이스 이중화 방법.
  3. 제2항에 있어서,
    상기 부분배자는 처리된 상기 전슬롯과 기본키가 동일한 상기 후슬롯을 상기 전슬롯을 처리한 상기 반영자에 전송하는 데이터베이스 이중화 방법.
  4. 제3항에 있어서,
    상기 주분배자는 추출된 슬롯이 락이 되지 않을 경우, 상기 슬롯이 락이 될 때까지 대기하는 데이터베이스 이중화 방법.
  5. 제1데이터베이스에 저장된 하나의 릴레이션에 처리될 쿼리를 감지하는 감지기;
    상기 쿼리를 전송하는 송신기;
    상기 송신기에서 전송되는 상기 쿼리를 수신하는 수신기;
    상기 수신기에서 수신된 상기 쿼리에서 슬롯 ID(Slot ID), 트랜잭션 ID(Transaction ID)를 갖는 슬롯을 형성하고, 형성된 상기 슬롯 가운데 기본키(Primary Key)가 동일하되 전순위에 처리되는 전슬롯은 대기시키고, 후순위에 처리될 후슬롯은 부분배자로 전송하는 주분배자; 및
    상기 전슬롯과 상기 후슬롯을 제2데이터베이스에 반영하는 반영자를 포함하는 데이터베이스 이중화 시스템.
  6. 제5항에 있어서,
    상기 주분배자는 주문 쿼리가 진행 된 후, 커밋(commit)쿼리를 진행하며 하나의 트랜잭션 ID를 갖는 슬롯을 생성하는 데이터베이스 이중화 시스템.
  7. 제5항에 있어서,
    상기 부분배자는 상기 전슬롯이 처리되면, 상기 후슬롯을 동시에 처리하는 데이터베이스 이중화 시스템.
  8. 제7항에 있어서,
    상기 부분배자는 상기 전슬롯의 기본키와 동일한 기본키를 갖는 상기 후슬롯을 상기 전슬롯을 처리한 상기 반영자에 전송하는 데이터베이스 이중화 시스템.
KR1020170063860A 2017-05-24 2017-05-24 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템 KR101936787B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170063860A KR101936787B1 (ko) 2017-05-24 2017-05-24 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템
PCT/KR2017/005573 WO2018216839A1 (ko) 2017-05-24 2017-05-29 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템
CN201780084899.1A CN110300964B (zh) 2017-05-24 2017-05-29 数据库复制方法及数据库复制系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170063860A KR101936787B1 (ko) 2017-05-24 2017-05-24 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템

Publications (2)

Publication Number Publication Date
KR20180128580A true KR20180128580A (ko) 2018-12-04
KR101936787B1 KR101936787B1 (ko) 2019-01-14

Family

ID=64396828

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170063860A KR101936787B1 (ko) 2017-05-24 2017-05-24 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템

Country Status (3)

Country Link
KR (1) KR101936787B1 (ko)
CN (1) CN110300964B (ko)
WO (1) WO2018216839A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102303895B1 (ko) * 2020-03-12 2021-09-23 (주)선재소프트 이중화 성능이 개선된 데이터베이스 이중화시스템

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8073820B2 (en) * 2008-04-07 2011-12-06 Sonics, Inc. Method and system for a database to monitor and analyze performance of an electronic design
EP2306319B1 (en) * 2009-09-14 2012-06-06 Software AG Database server, replication server and method for replicating data of a database server by at least one replication server
US10430298B2 (en) * 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US9411866B2 (en) * 2012-12-19 2016-08-09 Sap Global Ip Group, Sap Ag Replication mechanisms for database environments
KR101549655B1 (ko) 2013-07-11 2015-09-03 (주)선재소프트 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
KR101605455B1 (ko) * 2014-07-04 2016-03-22 (주)선재소프트 데이터 손실 없는 데이터베이스 리두 로그 이중화 방법 및 그를 위한 시스템
US10078556B2 (en) * 2015-08-31 2018-09-18 Paypal, Inc. Data replication between databases with heterogenious data platforms
CN105574187B (zh) * 2015-12-23 2019-02-19 武汉达梦数据库有限公司 一种异构数据库复制事务一致性保障方法及系统

Also Published As

Publication number Publication date
WO2018216839A1 (ko) 2018-11-29
CN110300964A (zh) 2019-10-01
KR101936787B1 (ko) 2019-01-14
CN110300964B (zh) 2022-11-08

Similar Documents

Publication Publication Date Title
CN111143389B (zh) 事务执行方法、装置、计算机设备及存储介质
US7103586B2 (en) Collision avoidance in database replication systems
US8352490B2 (en) Method and system for locating update operations in a virtual machine disk image
US11768885B2 (en) Systems and methods for managing transactional operation
US8504523B2 (en) Database management system
CN101567805B (zh) 并行文件系统发生故障后的恢复方法
US11934424B1 (en) Method and apparatus for resolving target database constraint violations in a database replication system where target database transactions are automatically aborted due to constraints violations
EP1241592A2 (en) Collision avoidance in Bidirectional database replication
CN101681383A (zh) 用于数据库管理系统的数据复制方法及系统
US20130110781A1 (en) Server replication and transaction commitment
CN101268439A (zh) 数据库片段克隆和管理
JP2012221419A (ja) 情報記憶システム及びそのデータ複製方法
US20230081900A1 (en) Methods and systems for transactional schema changes
KR101936787B1 (ko) 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템
US20030115206A1 (en) Method for fault tolerant modification of data representation in a large database
US20130006920A1 (en) Record operation mode setting
CN110121712B (zh) 一种日志管理方法、服务器和数据库系统
CN106997305B (zh) 一种事务处理方法与装置
Zhang et al. Dependency preserved raft for transactions
CN112328637A (zh) 高速分布式数据缓存方法、装置、计算机设备及存储介质
US20230145054A1 (en) Multi-region database systems and methods
CN117992409A (zh) 基于读写锁环检测机制的分布式文件系统重命名操作方法
Hu Exploiting laziness for improving performance in data replication management
CN116701415A (zh) 一种跨链事务的执行方法及相关设备
Escriva Scaling Searchable and Transactional Storage Systems

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