KR101549655B1 - 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 - Google Patents

병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR101549655B1
KR101549655B1 KR1020130081319A KR20130081319A KR101549655B1 KR 101549655 B1 KR101549655 B1 KR 101549655B1 KR 1020130081319 A KR1020130081319 A KR 1020130081319A KR 20130081319 A KR20130081319 A KR 20130081319A KR 101549655 B1 KR101549655 B1 KR 101549655B1
Authority
KR
South Korea
Prior art keywords
slot
value
query
reflector
transaction
Prior art date
Application number
KR1020130081319A
Other languages
English (en)
Other versions
KR20150007435A (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 KR1020130081319A priority Critical patent/KR101549655B1/ko
Publication of KR20150007435A publication Critical patent/KR20150007435A/ko
Application granted granted Critical
Publication of KR101549655B1 publication Critical patent/KR101549655B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Landscapes

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

Abstract

본 발명은 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록매체에 관한 것으로 데이터베이스 이중화 장비에 트랜젝션을 병렬로 처리하여 처리시간을 획기적으로 줄일 수 있다.
이를 위해 본 발명은 각 쿼리(Query)로부터 슬롯ID (SlotID) 값 및 트랜젝션ID (Transaction ID)값을 추출하는 제1 단계; 추출된 상기 슬롯ID 값이 지시하는 슬롯의 락(lock)을 획득하였는지 판단하는 제3 단계; 상기 슬롯에 기 할당된 반영자(Applier)가 존재하는지 판단하는 제5 단계; 반영자가 할당되지 않는 경우 반영자를 할당하는 제7 단계; 레퍼런스 카운트 (Reference Count) 값을 증가시키는 제9 단계; 및 상기 슬롯의 락을 해지하는 제11 단계; 를 포함한다.

Description

병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체{METHOD OF DUPLICATING DATABASE USING PARARELL-PROCESSING AND COMPUTER READABLE STORAGE MEDIA STORING THE SAME)}
본 발명은 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록매체에 관한 것으로 더욱 상세하게, 데이터베이스 이중화 장비에 트랜젝션을 병렬로 처리하여 처리시간을 획기적으로 줄이는 것에 관한 것이다.
최근 기존 데이터베이스 관리도구로 데이터를 수집, 저장, 관리, 분석할 수 있는 역량을 넘어서는 대량의 정형 또는 비정형 데이터 집합 및 이러한 데이터로부터 가치를 추출하고 결과를 분석하는 빅 데이터 처리 등 데이터 베이스 관련 기술의 발전이 눈부시다.
다양한 종류의 대규모 데이터에 대한 생성, 수집, 분석, 표현을 그 특징으로 하는 데이터 처리 기술의 발전은 다변화된 현대 사회를 더욱 정확하게 예측하여 효율적으로 작동케 하고 개인화된 현대 사회 구성원 마다 맞춤형 정보를 제공, 관리, 분석 가능케 하며 과거에는 불가능했던 기술을 실현시키기도 한다.
이같이 데이터 처리는 정치, 사회, 경제, 문화, 과학 기술 등 전 영역에 걸쳐서 사회와 인류에게 가치있는 정보를 제공할 수 있는 가능성을 제시하며 그 중요성이 부각되고 있다.
한편, 이러한 데이터 처리의 안정성을 높이기 위해, 물리적으로 떨어져 있는 여러 개의 데이터베이스에 대하여 로컬 데이터베이스의 변경된 내용을 원격데이터베이스에 복제하고 관리하는 이중화(Replication) 과정을 거친다.
특히, 뱅킹, 쇼핑, 예매 등 많은 산업 분야들이 인터넷으로 서비스를 수행하고 있는 최근의 환경에 비추어 볼 때, 인터넷 사이트의 특성상 데이터의 유실 또는 서비스 중단의 치명타를 막기 위한 데이터 베이스 백업과 이중화 과정이 매우 중요하다. 백업(Backup)은 작업 중이던 데이터 등의 사본을 만들어 저장해 두는 것으로 사용자의 실수나 컴퓨터 상의 오류, 바이러스 감염 등의 문제로 데이터의 손실 혹은 삭제되는 것에 대비하는 것인 반면, 이중화는 앞서 설명한 바와 같이 신뢰도와 가용성을 증대시키는 위해 동시에 여러 대의 서버에 동일한 데이터를 기억시켜 두는 것으로 메인 서버에 장애가 발생해도 다른 서버를 투입해 바로 서비스를 복구하는 개념이다.
데이터베이스 이중화와 관련된 선행기술로서 대한민국 특허공개공보 제10-2005-0064278호 등 다수의 문헌이 공개되어있다.
도 1a는 종래의 데이터베이스를 이중화하는 과정을 도시한 도면이다.
종래의 데이터베이스를 이중화하는 과정을 살펴보면, 서비스 중인 메인 장비 (100)의 이중화할 데이터를 감지하고 상기 이중화할 데이터를 원격지에 위치한 이중화 장비 (200)에 전송한다. 이후 데이터를 수신받은 이중화 장비 (200)는 상기 데이터를 자신의 데이터베이스에 반영시킨다.
종래의 데이터베이스 이중화 과정에서는, 메인 장비 (100)의 원본 데이터에 적용된 순서를 반영하기 위해 이중화 장비 (200)의 데이터에도 순차적으로 처리한다. 예를 들어, 원본 데이터 베이스에 하기의 쿼리가 적용되었다고 가정하다. 또한, Col1 (primary key), Col2인 컬럼으로 구성된 테이블 T1에 다음과 같은 쿼리가 적용되었다면 각 쿼리 수행 후에는 커밋(commit)이 수행된다.
제1 쿼리: Insert Into T1 Values( 1, ‘ABC’ ); // T1 테이블에 새로운 레코드를 삽입함
제2 쿼리: Update T1 Set Col2=’BCD’ Where Col1=1; // T1 테이블의 두 번째 컬럼 값 ‘ABC’를 ‘BCD’로 변경함
제3 쿼리: Update T1 Set Col2=’CDE’ Where Col1=1; // 위에서 변경된 T1 테이블의 두 번째 컬럼 값‘BCD’를 ‘CDE’로 변경함
제4 쿼리: Insert Into T1 Values( 2, ‘ABC’ ); // T1 테이블에 새로운 레코드를 삽입함
이 경우, 원본 데이터 베이스에 모든 쿼리가 적용된 후에는 2개의 레코드가 생성되며, 최종적으로 컬럼 1이 ‘1’, 컬럼 2가 ‘CDE’의 값을 갖고 컬럼 1이 ‘2', 컬럼 2가 ‘ABC’의 값을 갖는 2 개의 레코드가 생성된다. 또한, 이중화 과정에서는 위의 데이터를 원격지 서버에 전달하고 적용할 경우 해당 레코드의 최종값은 반드시 동일한 값을 가져야 한다.
이때, 순차적으로 원격지 서버에 쿼리를 적용하지 않고 병렬로 처리하게 되면 쿼리 실행 순서를 보장받을 수 없다. 예를 들어, 만약 병렬로 처리되어 제3 쿼리가 먼저 적용되고 제2 쿼리가 이후에 적용된다면, 해당 레코드의 최종 값은 컬럼 2가 'BCD'가 되므로 원본 데이터 베이스와는 상이한 값을 갖게 된다. 이러한 문제를 막기 위해 원본 데이터에 적용되는 쿼리의 순서를 반드시 지켜 원격지 서버에 그대로 적용하게 된다.
그러나 제4 쿼리의 경우 프라이머리(Primary) 값이 상이하기 때문에 제1 내지 제3 쿼리의 순차적인 처리와 상관없이 독립적으로 수행되어도 무방하다. 그러나 종래의 이중화 과정에서는 이러한 쿼리가 실행하는 결과의 성격과 무관하게 모든 쿼리에 대해서 순차적으로 쿼리를 실행시키므로 전체적인 성능 저하의 원인의 원인이 된다.
본 발명의 목적은 원격지 서버에 쿼리를 병렬로 처리할 수 있는 방법을 제공하는 것이다.
본 발명에 따른 과제를 해결하기 위한 수단은 각 쿼리(Query)로부터 슬롯ID (SlotID) 값 및 트랜젝션ID (Transaction ID)값을 추출하는 제1 단계; 추출된 상기 슬롯ID 값이 지시하는 슬롯의 락(lock)을 획득하였는지 판단하는 제3 단계; 상기 슬롯에 기 할당된 반영자(Applier)가 존재하는지 판단하는 제5 단계; 반영자가 할당되지 않는 경우 반영자를 할당하는 제7 단계; 레퍼런스 카운트 (Reference Count) 값을 증가시키는 제9 단계; 및 상기 슬롯의 락을 해지하는 제11 단계; 를 포함한다.
또한, 상기 제5 단계에서 존재하는 것으로 판단되면, 상기 기 할당된 반영자가 처리하는 쿼리에서 추출된 트랜젝션ID 값이 상기 제1 단계에서 추출된 트랜젝션ID 값과 동일한지 판단하는 제6 단계;를 더 포함할 수 있다.
또한, 상기 제6 단계에서 동일한 것으로 판단되면, 상기 제7 단계를 거치지 않고 상기 제9 단계를 수행할 수 있다.
또한, 상기 제6 단계에서 동일하지 않은 것으로 판단되면, 상기 슬롯에 반영자가 존재하지 않을 때까지 대기할 수 있다.
또한, 상기 제3 단계에서 획득하지 못한 것으로 판단되면, 상기 슬롯의 락을 얻을 때까지 대기할 수 있다.
한편, 트랜젝션의 커밋(Commit)을 완료하는 제1 단계; 상기 트랜젝션이 사용하고 있는 슬롯의 ID 값을 추출하는 제3 단계; 상기 슬롯의 락을 획득하는 제5 단계;
레퍼런스 카운트에서 상기 트랜젝션에서 수행된 쿼리의 수만큼을 차감하는 제7 단계; 상기 레퍼런스 카운트의 값을 확인하여 커밋되어야 쿼리가 존재하는지 판단하는 제9 단계; 상기 슬롯에서 반영자를 삭제하는 제11 단계; 상기 슬롯의 락을 해지하는 제13 단계; 및 상기 제3 단계에서 추출한 각각 슬롯의 ID 값이 지시하는 모든 슬롯의 락을 해지하였는지 판단하는 제15 단계;를 포함할 수 있다.
또한, 상기 제5 단계에서 상기 슬롯의 락을 얻지 못한 것으로 판단되면, 상기 슬롯의 락을 얻을 때까지 대기할 수 있다.
또한, 상기 제9 단계에서 존재하지 않은 것으로 판단되면, 상기 제11 단계를 거치지 않고 상기 제13 단계를 수행할 수 있다.
또한, 상기 제15 단계에서 모든 슬롯의 락을 해지하지 않은 것으로 판단되면, 상기 제5 단계에서 해지되지 않은 나머지 슬롯의 락을 획득할 수 있다.
한편, 상기 방법들을 방법을 수행하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체에 저장될 수 있다.
원격지 서버의 이중화 프로세스를 병렬로 처리할 수 있어, 원격지 서버의 순차적인 데이터 처리과정에서 발생할 수 있는 병목현상을 해결할 수 있다.
도 1a는 종래의 데이터 베이스 이중화 과정을 나타낸 도면이다.
도 1b는 본 발명에 따른 데이터 베이스 이중화 과정을 나타낸 도면이다.
도 2는 본 발명에 따른 분배자의 동작과정을 나타낸 순서도이다.
도 3은 본 발명에 따른 반영자를 회수하는 과정을 나타낸 순서도이다.
도 4는 본 발명에 따른 분배자와 반영자의 회수 과정이 결합되는 지점을 나타난 개략저인 순서도이다.
도 5a 및 도 5b는 동일한 슬롯에 반영자가 변경됨에 따라 쿼리가 대기하고 수행하는 동작을 도시한 개념도이다.
도 6a 및 6b는 트랜젝션 수행에 소비되는 시간을 나타낸 도면이다.
이하, 본원이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 구현예 및 실시예를 들어 상세히 설명한다.
그러나 본원은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 구현예 및 실시예에 한정되지 않는다.
본원 명세서 전체에서, 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
본원 명세서 전체에서, 어떤 단계가 다른 단계와 “전에”또는 “후에” 위치하고 있다고 할 때, 이는 어떤 단계가 다른 단계와 직접 연동하는 경우 뿐만 아니라 두 단계 사이에 또 다른 단계가 존재하는 경우도 포함한다.
본원 명세서 전체에서 사용되는 정도의 용어 “약”, “실질적으로” 등은 언급된 의미에 고유한 제조 및 물질 허용오차가 제시될 때 그 수치에서 또는 그 수치에 근접한 의미로 사용되고, 본 발명의 이해를 돕기 위해 정확하거나 절대적인 수치가 언급된 개시 내용을 비양심적인 침해자가 부당하게 이용하는 것을 방지하기 위해 사용된다.
본원 명세서 전체에서 사용되는 용어 “~ (하는) 단계” 또는 “~의 단계”는 “~를 위한 단계”를 의미하지 않는다.
본원 명세서 상에서 사용되는 용어인 "전자문서"는 정보처리시스템에 의하여 전자적 형태로 작성, 송신ㆍ수신 또는 저장된 정보를 말하며, 기관에서 발급하는 제증명서를 포함하는 개념이다.
이하, 첨부한 도면 및 실시예를 들어, 본원에 속한 기술 분야의 평균적 지식을 가진 자가 용이하게 본원을 반복 재현할 수 있도록 상세히 설명하도록 한다.
도 1b는 본 발명에 따른 데이터 베이스 이중화 과정을 나타낸 도면이다.
분배자의 동작을 상술하기 이전에 앞서, 본 명세서에서 언급되는 트랙젝션, 분배자, 슬롯, 반영자, 레퍼런스 카운트 및 커밋의 개념에 대해서 설명한다.
먼저, 트랜젝션(Transaction)이란 하나 이상의 쿼리(Query)가 커밋 또는 롤백(rollback)되는 단위를 일컫는다. 하나의 트랜젝션은 하나의 반영자에 의해 이중화 장비의 데이터베이스에 반영된다. 만약, 반영자가 5개 있다면 동시에 수행될 수 있는 트랜젝션은 5개가 된다. 하기에서 더욱 상세히 설명하겠으나, 하기의 제1 실시예에서 보는 바와 같이, 제1 쿼리 내지 제3 쿼리는, 제1 쿼리 내지 제3 쿼리가 입력되고 커밋되므로 동일한 트랜젝션을 구성한다. 한편, 제5 쿼리 및 제6 쿼리는 제5 쿼리 및 제6 쿼리가 입력되고 커밋되므로 제1 쿼리 내지 제3 쿼리와는 다른 트랜젝션을 구성한다.
다음으로, 분배자(Distributor)는 이중화 장비에 반영하고 있는 레코드가 어떤 것이 있는지 판단하여 반영자에 분배하는 역할을 한다. 더욱 상세하게, 서로 다른 트랜젝션이 동일한 레코드를 수정하길 원하는 경우, 동일한 레코드에 동시에 처리하지 못하도록 순차적으로 처리하는 역할을 한다.
다음으로, 슬롯(Slot)이란 동일한 레코드에 처리하는 쿼리들의 처리 장소라 개념화할 수 있다. 쿼리가 동일한 레코드에 처리하는지 파악하려면 쿼리를 분석하거나 레코드의 유일한 값인 레코드 ID를 분석하면 알 수 있다. 예를 들어, 일반적으로 동일한 레코드를 처리하는지 알기 위해서는 테이블의 동일한 프라이머리키(primary key)를 사용하는지 혹은 동일한 레코드를 구분할 수 있는 레코드 ID를 사용하는지 파악하면 된다. 동일한 레코드를 처리하는 방법은 상기에서 언급된 것에 한정되지 않음은 물론이다. 한편, 프라이머리 키는 64비트를 사용하기 때문에 전체적인 작업의 계산량(computational complexity)을 증대시켜 로스를 증가시킨다. 물론, 프라이머리 키는 언급된 64비트에 한정되지 않으며 더 큰 값 혹은 더 작은 값이 될 수 있다. 그러므로 본 발명에서는 프라이머리키 혹은 레코드 ID를 사용하는 대신 슬롯이라는 개념을 도입하여 계산량을 대폭 줄인다. 하기에서 더욱 상세히 설명하겠으나, 하기의 제1 실시예에서 보는 바와 같이, 제1 쿼리 내지 제3 쿼리 및 제6 쿼리는 동일한 레코드에 처리하므로 동일한 슬롯을 갖으며, 제5 쿼리는 다른 레코드에 처리하므로 다른 슬롯을 갖는다. 한편, 본 발명에서의 슬롯은 프라이머리 키와 달리 재활용될 수 있다. 하기의 제1 실시예에서는 3개의 슬롯을 사용하는 것으로 예시되어 있는데, 예를 들어 가정하여, 쿼리의 개수가 1,000 개 이상 존재하고, 슬롯의 개수는 100 개로 한정되어 있다고 가정할 때, 101번 째 레코드를 처리하는 233번째 쿼리에 대해서는 1번 내지 100 번 중 어느 하나의 슬롯에 배정될 수 있다. 다시 말해, 수많은 쿼리에 대해서 제한된 개수를 갖는 슬롯이 배정되는 것이다. 제한된 개수를 갖는 슬롯을 각 쿼리에 배정하기 위해 모듈러(module)연산 등을 활용할 수 있으나 이에 한정되는 것은 아니다.
반영자(Applier)란 트랙젝션을 실제 이중화 장비에 반영하는 역할을 한다. 예컨대, 반영자가 5개 존재한다면 5개의 트랙젝션을 동시에 수행할 수 있다.
레퍼런스 카운트(Reference Count)란 현재 슬롯을 사용 중인 레코드의 개수를 의미한다. 하기에서 더욱 상세히 설명되겠으나, 하기의 제1 실시예에서 보는 바와 같이, 제1 쿼리 내지 제3 쿼리는 동일한 슬롯을 사용하므로 레퍼런스 카운트를 3으로 갖는다.
커밋(commit)란 데이터베이스와 관련된 일반적인 용어로, 데이터베이스 트랜잭션의 내용 업데이트를 영구적으로 확정하는 것을 말한다. 일반적으로 트랜잭션 종료시 해당 업데이트를 확정한다는 의미에서 "커밋"라고 사용한다.
도 2는 본 발명에 따른 쿼리의 병렬 처리를 위한 순서도로, 트랜젝션을 동시 수행하기 위한 분배자의 동작을 상세히 기술한 것이다.
도 2를 참조하면, 분배자의 동작은 슬롯의 ID 값 및 트랜젝션의 ID값을 추출하는 단계(S210); 추출된 트랜젝션에 관한 슬롯의 락(lock)을 획득하는 단계(S220); 락을 획득한 슬롯에 반영자가 존재하는지 확인하는 단계(S230); 획득한 슬롯에 반영자가 존재하지 않는 경우 새로운 반영자를 할당하는 단계(S240); 레퍼런스 카운트 값을 1 증가시키는 단계(S260); 락을 획득했던 해당 슬롯을 언락(unlock)하는 단계(S270); 슬롯의 락을 획득하지 못한 것으로 판단한 경우(S220) 슬롯이 락을 획득할 때까지 대기하는 단계(S225); 락을 획득한 슬롯에 반영자가 존재하는지 확인하여 존재하는 경우, 해당슬롯에 세팅된 반영자가 작업 중인 쿼리의 트랜젝션 ID 값이, S210 단계에서 추출된 트랜젝션 ID 값과 동일한지 판단하는 단계(S250); 반영자 ID 값이 동일하지 않는 경우 대기하는 단계(S255);로 이루어진다.
이하, 하기의 제1 실시예를 통하여 본 발명을 더욱 상세히 설명한다.
쿼리 No. 처리된 내용 SQL
제1쿼리 새로운 Record를 삽입한다. InsertIntoT1Values(1,‘ABC’);
제2쿼리 두번째Column의값‘ABC’를‘BCD’로변경한다. UpdateT1SetCol2=’BCD’WhereCol1=1;
제3쿼리 위에서변경한‘BCD’를‘CDE’로변경한다. UpdateT1SetCol2=’CDE’WhereCol1=1;
제4쿼리 Transaction을 COMMT한다. commit;
제5쿼리 새로운 Record를 삽입한다. InsertIntoT1Values(2,‘ABC’);
제6쿼리 두번째 Column의 값 ‘ABC’를 ‘XYZ’로 변경한다. UpdateT1SetCol2=’XYZ’WhereCol1=1;
제7쿼리 Transaction을 COMMT한다. commit;
제8쿼리 새로운 Record를 삽입한다. InsertIntoT1Values(3,‘ABC’);
· · ·
· · ·
· · ·
<제1 실시예, 이중화 장비에 수신된 쿼리들>
제1 실시예와 같이 8개의 쿼리가 이중화 장비에 수신되면 먼저 분배자가 수신된 쿼리에서 슬롯 ID 값와 트랜젝션 ID 값을 추출하게 된다 (S210). 제1 쿼리에 대해서는 트랜젝션 ID 값이 1, 슬롯 ID 값이 1로 추출된다. 분배자가 수신된 쿼리로부터 트랙젝션 ID 값 및 슬롯 ID 값을 추출할 수 있도록, 쿼리는 특정 정보를 포함할 수 있다.
다음으로, ID 값으로 1을 갖는 슬롯에 락이 걸려있는지 판단하며, 락이 걸리지 않는 경우 락을 수행한다 (S220).
이후 ID 값으로 1을 갖는 슬롯에 반영자가 존재하는지 판단한다 (S230).
반영자가 존재하지 않는 경우 ID 값으로 1을 갖는 슬롯에 반영자를 세팅한다 (S240). 본 제1 실시예에서는 반영자가 5개 존재한다고 가정하므로, 이 경우 ID 값으로 1 을 갖는 슬롯에 반영자 ID 값으로 1을 세팅한다. 한편, 반영자 ID 값을 세팅하는 것은 슬롯 ID 값을 세팅하는 것과 마찬가지로 랜덤하게 수행되어도 무방하다.
이후 ID 값이 1인 슬롯을 사용하고 있는 레코드는, 첫 번째 레코드로 최초로 처리되는 레코드이므로 레퍼런스 카운트 값을 1 증가시킨다 (S260).
이후 ID 값이 1인 슬롯의 락을 해지한다 (S270).
분배자가 제2 쿼리 및 제3 쿼리를 읽어드릴 때 이와 같은 동작을 반복하며, 동일한 첫 번째 레코드를 처리하므로 레퍼런스 카운트를 증가시킨다. 본 제1 실시예에서 레퍼런스 카운트는 0에서 3까지 증가한다고 볼 수 있다.
다음으로, 분배자가 제5 쿼리를 읽어드리는 단계에 대해서 설명한다. 이 경우 커밋되는 쿼리의 집합이 변경되었기 때문에 트랜젝션 ID 값이 2로 달라지고, 처리하는 레코드도 변경되었기 때문에 슬롯 ID 값도 2로 변경된다 (S210).
다음으로, ID 값으로 2를 갖는 슬롯에 락이 걸렸있는지 판단하며, 락이 걸리지 않는 경우 락을 수행한다 (S220).
이후 ID 값으로 2를 갖는 슬롯에 반영자가 존재하는지 판단한다 (S230).
반영자가 존재하지 않는 경우 ID 값으로 2를 갖는 슬롯에 반영자를 할당한다 (S240). 본 제1 실시예에서는 ID 값으로 2를 갖는 슬롯에 반영자 ID 값으로 2를 세팅한다.
이후 ID 값이 2인 슬롯을 사용하고 있는 레코드는 이중화 장비의 테이블 상의 두 번째 레코드이며, 제5 쿼리는 앞서 살펴본 제1 내지 제3 쿼리와 달리 다른 레코드를 처리한다. 그러므로 다른 슬롯을 사용하는 제5 쿼리의 레퍼런스 카운트 값을 1 증가시킨다. 한편, 본 제1 실시예에서는 레퍼런스 카운트 값은 최초 0으로 초기화되어 있다고 가정한다.
이후 ID 값이 2인 슬롯의 락을 해지한다 (S270).
다음으로 분배자가 제6 쿼리를 읽어드린다. 제6 쿼리는 제5 쿼리와 동일하게 커밋되는 쿼리의 집합 내에 포함되기 때문에 여전히 트랜젝션 ID 값은 2로 추출된다. 한편, 제6 쿼리가 제1 내지 제3 쿼리와 동일한 레코드를 처리하므로 제1 내지 제3 쿼리와 동일한 값인 1을 슬롯 ID 값으로 갖는다 (S210).
다음으로, ID 값 1을 갖는 슬롯에 락이 걸렸있는지 판단하며, 락이 걸리지 않는 경우 락을 수행한다 (S220).
이후 ID 값으로 1을 갖는 슬롯에 반영자가 존재하는지 판단한다 (S230). 제1 실시예의 제6 쿼리는 ID 값을 1로 갖는 슬롯에 이미 반영자가 할당되어 작업 중이므로 반영자가 존재하는 것으로 판단할 수 있다. 그러므로 S250로 진행하며, 해당 슬롯에 할당된 반영자가 작업 중인 쿼리의 트랜젝션 ID 값과 앞서 S210에서 추출된 트랜젝션 ID 값이 동일한지 판단한다 (S250). 예를 들어 제1 실시예를 참조하면, 현재 ID 값이 1인 슬롯에는 ID 값이 1인 반영자가 작업 중이며, 이 반영자가 작업 중인 쿼리들은 제1 쿼리 내지 제3 쿼리로 트랜젝션의 ID 값이 1이다. 이에 반해, 앞서 S210에서 추출된 쿼리의 트랜젝션의 ID 값은 2이므로 서로 그 값이 다르다.
그러므로 1을 ID 값으로 갖는 슬롯으로의 락을 해지하고 대기한다 (S255, S225). 왜냐하면 제1 쿼리 내지 제3 쿼리와 연관된 1을 ID 값으로 갖는 슬롯에 1을 ID 값으로 갖는 반영자가 작업을 수행중이므로 제1 쿼리 내지 제3 쿼리가 작업을 수행을 마칠 때까지 대기해야 하기 때문이다.
이와 같이 분배자는 동일한 슬롯의 반영자 작업 순서를 규율하는 역할을 한다. 이를 위해, 동일한 트랜젝션 ID 값을 갖는 쿼리들은 동일한 반영자 ID 값을 갖는다.
도 3은 반영자를 통해 트랜젝션을 데이터베이스에 반영하고 난 이후의 동작을 중심으로 나타낸 순서도이다.
도 3에 따른 트랜젝션을 데이터베이스에 반영하고 난 이후의 동작은 트랜젝션 커밋 완료 단계 (S310); 현재 트랜젝션이 사용하고 있는 슬롯 정보를 얻는 단계 (S320); S320에서 추출한 슬롯의 락을 획득하는 단계 (S330); 레퍼런스 카운트를 감소시키는 단계 (S340); 레퍼런스 카운트가 0인지 확인하는 단계 (S350); 해당슬롯의 반영자를 삭제하는 단계 (S360); 해당 슬롯의 락을 해지하는 단계 (S370); 및 모든 슬롯에 대한 처리를 완료했는지 확인하는 단계 (S380);로 이루어진다. 한편, 본 실시예에서의 단계들은 메인 장비(original)(도 1b의 100)에서의 데이터 변경을 자신에게 적용시키는 이중화 장비(target)(도 1b의 200)에 의해 수행될 수 있다.
이하, 반영자를 통해 트랜젝션을 수행하고 난 이후의 동작에 대해서 제1 실시예를 바탕으로 상세히 분설한다.
먼저, 입력된 트랜젝션을 수행한다 (S310). 상기 제1 실시예를 참조할 때 제1 쿼리 내지 제3 쿼리가 하나의 트랙젝션을 구성하므로 상기 제1 쿼리 내지 제3 쿼리에 대해 커밋한다.
이후 해당 트랜젝션이 사용하고 있는 슬롯의 정보를 얻는다 (S320). 이 단계에서 슬롯의 정보를 얻는 것은 앞서 도 2의 S210와 같이 쿼리를 분석하여 슬롯 정보를 추출하는 것이 아니라 분배자의 메모리 등을 참조하여 얻는 것일 수 있다.
다음으로 얻어진 슬롯에 대하여 락을 획득한다 (S330). 앞선 단계인 S320에서 추출한 슬롯의 락을 얻을 수 있는지 판단한다. 왜냐하면 다른 트랙젝션에 영향을 받지 않아야 하기 때문이다.
락을 획득한 후, 트랜젝션 내 실행된 쿼리의 개수만큼 레퍼런스 카운트를 감소시킨다 (S340). 제1 실시예의 1을 ID 값으로 갖는 트랜젝션은, 제1 쿼리 내지 제3 쿼리를 포함하고 있기 때문에 3인 레퍼런스 카운트 값에서 쿼리의 수인 3만큼을 감소시켜준다.
이후, 레퍼런스 카운트가 0인지 판단하고 (S350), 이후, 해당슬롯으로부터 반영자를 삭제하며 (S360), 이후, 해당슬롯의 락을 해지한다 (S370). 앞서, 제1 실시예의 제6 쿼리의 경우, 1을 ID 값으로 갖는 슬롯에 1을 ID 값으로 갖는 반영자가 이미 할당되어 있기 때문에, 제1 쿼리 내지 제3 쿼리의 수행이 끝나고 반영자가 프리 상태로 될 때까지 대기해야 함을 이미 설명하였다.
도 4는 도 2 및 도 3의 간략화하여 각 도면에 연관된 프로세스가 결합되는 지점을 나타낸 도면이다.
도 4를 참조하면, S360에서 반영자를 슬롯에서 삭제하면 도 2의 S230 단계와 연계되어 비로소 반영자를 재할당하고 쿼리를 계속적으로 수행해 나갈 수 있다.
다시, 도3과 관련하여, 이후 현재 트랜젝션이 포함하고 있는 쿼리의 슬롯에 대해 처리를 완료했는지 확인한다 (S380). 예를 들어, 제1 실시예의 2를 ID 값으로 트랜젝션은 1과 2를 ID 값으로 갖는 슬롯을 이용하게 된다. 그러므로 이용되는 모든 슬롯의 쿼리에 대해 상기 S330 내지 S370 단계를 처리하여야 한다.
한편, 슬롯의 락을 획득하지 못하면 (S330), 슬롯의 락을 획득할 때까지 대기한다 (S335).
한편, 레퍼런스 카운트가 0이 아닌 경우에는 해당 슬롯의 반영자를 삭제하지 않고 바로 해당 슬롯의 락을 해지한다 (S370). 레퍼런스 카운트가 0이 아닌 것은 해당 슬롯을 이용하여 처리해야 할 트랜젝션 및 쿼리가 여전히 존재한다는 것을 의미하므로 해당 슬롯의 반영자를 삭제하지 않아도 되기 때문이다.
한편, 제1 실시예의 제5 쿼리와 연관된 2를 ID 값으로 갖는 트랜젝션의 커밋이 완료되었다고 가정한다 (S310).
이후 현재 트랜젝션이 사용하고 있는 슬롯정보로 ID 값 2를 얻는다 (S320). 이후 다시 ID 값이 2인 슬롯의 락을 획득한다 (S330). 제1 실시예에서 ID 값이 2인 슬롯은 하나뿐이기 때문에 락이 잠겨있지 않은 것으로 볼 수 있다.
이후 제5 쿼리를 실행하였으므로 1인 레퍼런스 카운트 값에서, 레퍼런스 카운트 값을 1만큼 감소시킨다 (S340). 그 결과 레퍼런스 카운트 값은 0이 되며 현재 시점에서 더 이상 슬롯이 사용되고 있지 않은 것으로 판단할 수 있다. 이후 해당 슬롯의 반영자를 삭제하여, 2인 ID 값을 갖는 반영자는 더이상 사용되고 있지 않음을 확인시킨다 (S360). 물론 레퍼런스 카운트 값을 반드시 '0'부터 시작하여 '0'에서 끝날 필요는 없고, 현재 슬롯에서 처리되는 레코드의 처리 회수를 인식할 수 있으면 족하다.
이후 해당슬롯인 ID 값이 2인 슬롯의 락을 해지시키고 (S370), 더 이상 처리할 쿼리가 남아 있는지 확인한다 (S380).
이와 같은 방법을 반복하여 슬롯 내 할당된 반영자들을 모두 회수하고 재할당할 수 있다.
도 5a 및 도 5b는 동일한 슬롯에 반영자가 변경됨에 따라 쿼리가 대기하고 수행하는 동작을 도시한 개념도이다.
도 5a을 참조하면, 1을 ID 값으로 갖는 반영자와 2를 ID 값으로 갖는 반영자가 1을 ID 값으로 갖는 슬롯과 2를 ID 값으로 갖는 슬롯에 각각 할당되어 작업을 시작한다. 이때, 제6 쿼리와 같이 동일 슬롯 내의 다른 트랜젝션 ID 값을 갖는 쿼리가 입력오면 상기 제6 쿼리를 대기큐에서 대기시킨다. 대기큐에 쿼리를 대기 시키 전에 슬롯의 락을 해지함은 물론이다.
도 5b를 참조하면, 이후 제1 쿼리 내지 제3 쿼리가 모두 실행되어 해당 슬롯 에서 반영자가 삭제되면, 대기 상태가 해지되고 비로소 제6 쿼리가 1을 ID 값으로 갖는 슬롯을 획득하며 2를 ID 값으로 갖는 반영자에 의해 쿼리를 수행할 수 있게 된다. 도 5b에서 보는 바와 같이, 반영자가 1을 ID 값으로 갖는 슬롯으로 이동하여 작업을 수행하고, 제7 쿼리 및 제8 쿼리 등이 연달아 수행될 수 있다.
이후 ID 값이 1인 슬롯의 락을 해지한다.
마지막으로 제8 쿼리에 대해서 상기 단계를 반복하여 트랜젝션 ID 값은 3, 슬롯 ID 값은 3, 반영자 ID 값은 3, 레퍼런스 카운트 값은 1로 세팅한다.
상기 제1 쿼리 내지 제8 쿼리까지 각 단계 수행에 따른 트랜젝션 ID, 슬롯 ID, 반영자 ID 및 레퍼런스 카운트 값의 관계는 하기 표와 같다.
쿼리 No. 트랜젝션 ID 슬롯 ID 반영자 ID 레퍼런스 카운트
제1쿼리 1 1 1 1
제2쿼리 1 1 1 2
제3쿼리 1 1 1 3
제4쿼리
제5쿼리 2 2 2 1
제6쿼리 2 1 2 1
제7쿼리
제8쿼리 3 3 3 1
<제1 실시예에 따른 ID 값>
도 6a 및 6b는 트랜젝션 수행에 소비되는 시간을 나타낸 도면이다.
도 6a는 종래의 방식에 따른 트랜젝션 수행에 따른 시간을 나타낸 도면이다. 도 6a에서 보는 바와 같이, 핸들하는 레코드가 다름에도 불구하고 하나의 반영자를 이용하여 트랜젝션을 수행하므로 순차적으로 수행할 수밖에 없다. 그러므로 전체 트랜젝션을 완료하는데 소비되는 시간이 길다.
도 6b는 본 발명에 따른 트랜젝션 수행에 따른 시간을 나타낸 도면이다. 제1 실시예를 함께 참조하여 설명하면, 1을 ID 값으로 갖는 트랜젝션과 2를 ID 값으로 갖는 트랜젝션이 서로 동일한 레코드를 수정하기 때문에 분배자에 의해서 순차적으로 수행될 것이고, 3을 ID 값으로 갖는 트랜젝션의 경우 다른 레코드를 추가하는 것이기 때문에 분배자에 의해서 병렬로 수행할 수 있다.
이와 같이, 종래의 방식과 비교한다면 α만큼의 수행시간이 줄어들게 된다. 트랜젝션이 많고 반영자를 많이 생성하여 동시에 수행되는 트랜젝션의 개수가 많아 지면, 전체 데이터베이스를 이중화하는데 소비되는 시간을 획기적으로 줄일 수 있다.

Claims (10)

  1. 병렬처리방식의 데이터베이스 이중화 방법으로서,
    상기 방법은 메인 장비(original)에서의 데이터 변경을 자신에게 적용시키는 이중화 장비(target) 내의 분배자(distributor)에 의해 수행되고,
    상기 방법은:
    각 쿼리(Query)로부터 슬롯ID (SlotID) 값 및 트랜젝션ID (Transaction ID)값을 추출하는 제1 단계;
    추출된 상기 슬롯ID 값이 지시하는 슬롯의 락 (lock)을 획득하였는지 판단하는 제3 단계;
    상기 슬롯ID 값이 지시하는 슬롯의 락이 획득되었다고 판단되는 경우, 상기 슬롯에 기 할당된 반영자(Applier)가 존재하는지 판단하는 제5 단계;
    반영자가 할당되지 않는 경우 상기 슬롯에게 반영자를 할당하는 제7 단계;
    상기 반영자가 할당된 슬롯에 대해 레퍼런스 카운트 (Reference Count) 값을 증가시키는 제9 단계; 및
    상기 슬롯의 락을 해지하는 제11 단계; 를 포함하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  2. 제1 항에 있어서,
    상기 제5 단계에서 존재하는 것으로 판단되면, 상기 기 할당된 반영자가 처리하는 쿼리에서 추출된 트랜젝션ID 값이 상기 제1 단계에서 추출된 트랜젝션ID 값과 동일한지 판단하는 제6 단계;를 더 포함하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  3. 제2 항에 있어서,
    상기 제6 단계에서 동일한 것으로 판단되면, 상기 제7 단계를 거치지 않고 상기 제9 단계를 수행하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  4. 제2 항에 있어서,
    상기 제6 단계에서 동일하지 않은 것으로 판단되면, 상기 슬롯에 반영자가 존재하지 않을 때까지 대기하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  5. 제1 항에 있어서,
    상기 제3 단계에서 획득하지 못한 것으로 판단되면, 상기 슬롯의 락을 얻을 때까지 대기하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  6. 병렬처리방식의 데이터베이스 이중화 방법으로서,
    상기 방법은 메인 장비(original)에서의 데이터 변경을 자신에게 적용시키는 이중화 장비(target)에 의해 수행되고,
    상기 방법은:
    트랜젝션의 커밋(Commit)을 완료하는 제1 단계;
    상기 트랜젝션이 사용하고 있는 슬롯의 ID 값을 추출하는 제3 단계;
    상기 슬롯의 락을 획득하는 제5 단계;
    상기 슬롯의 락을 획득한 이후 상기 슬롯에 대해, 레퍼런스 카운트에서 상기 트랜젝션에서 수행된 쿼리의 수만큼을 차감하는 제7 단계;
    레퍼런스 카운트가 차감된 상기 슬롯의 레퍼런스 카운트의 값을 확인하여 커밋되어야 쿼리가 존재하는지 판단하는 제9 단계;
    커밋되어야 할 쿼리가 존재하지 않는 경우, 상기 슬롯에서 반영자를 삭제하는 제11 단계;
    상기 슬롯의 락을 해지하는 제13 단계; 및
    상기 제3 단계에서 추출한 각각 슬롯의 ID 값이 지시하는 모든 슬롯의 락을 해지하였는지 판단하는 제15 단계;를 포함하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  7. 제6 항에 있어서,
    상기 제5 단계에서 상기 슬롯의 락을 얻지 못한 것으로 판단되면, 상기 슬롯의 락을 얻을 때까지 대기하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  8. 제6 항에 있어서,
    상기 제9 단계에서 존재하지 않은 것으로 판단되면, 상기 제11 단계를 거치지 않고 상기 제13 단계를 수행하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  9. 제6 항에 있어서,
    상기 제15 단계에서 모든 슬롯의 락을 해지하지 않은 것으로 판단되면, 상기 제5 단계에서 해지되지 않은 나머지 슬롯의 락을 획득하는 것을 특징으로 하는 병렬처리방식의 데이터베이스 이중화 방법.
  10. 제1항 내지 제9 항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체.
KR1020130081319A 2013-07-11 2013-07-11 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 KR101549655B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130081319A KR101549655B1 (ko) 2013-07-11 2013-07-11 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130081319A KR101549655B1 (ko) 2013-07-11 2013-07-11 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체

Publications (2)

Publication Number Publication Date
KR20150007435A KR20150007435A (ko) 2015-01-21
KR101549655B1 true KR101549655B1 (ko) 2015-09-03

Family

ID=52570340

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130081319A KR101549655B1 (ko) 2013-07-11 2013-07-11 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체

Country Status (1)

Country Link
KR (1) KR101549655B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101936787B1 (ko) 2017-05-24 2019-01-14 (주)선재소프트 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템
WO2024071505A1 (ko) * 2022-09-29 2024-04-04 스마트마인드 주식회사 멀티-쿼리 스케줄러를 기반으로 멀티-쿼리를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013069189A (ja) 2011-09-26 2013-04-18 Hitachi Ltd 並列分散処理方法および並列分散処理システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013069189A (ja) 2011-09-26 2013-04-18 Hitachi Ltd 並列分散処理方法および並列分散処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101936787B1 (ko) 2017-05-24 2019-01-14 (주)선재소프트 데이터베이스 이중화 방법 및 데이터베이스 이중화 시스템
WO2024071505A1 (ko) * 2022-09-29 2024-04-04 스마트마인드 주식회사 멀티-쿼리 스케줄러를 기반으로 멀티-쿼리를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템

Also Published As

Publication number Publication date
KR20150007435A (ko) 2015-01-21

Similar Documents

Publication Publication Date Title
US11429641B2 (en) Copying data changes to a target database
US8868577B2 (en) Generic database manipulator
EP2073122B1 (en) Associating database log records into logical groups
US9626394B2 (en) Method for mass-deleting data records of a database system
US8762333B2 (en) Apparatus and method for read optimized bulk data storage
US7099897B2 (en) System and method for discriminatory replaying of log files during tablespace recovery in a database management system
CN105608086A (zh) 分布式数据库系统的事务处理方法及装置
US10754854B2 (en) Consistent query of local indexes
JPH0812631B2 (ja) データベース・トランザクション及び照会処理システム
US20130110873A1 (en) Method and system for data storage and management
US20150205850A1 (en) Eager replication of uncommitted transactions
US20080215586A1 (en) Simulating Multi-User Activity While Maintaining Original Linear Request Order for Asynchronous Transactional Events
CN109643310B (zh) 用于数据库中数据重分布的系统和方法
CN107003935A (zh) 优化数据库去重
CN104239443B (zh) 一种序列化数据操作日志的存储方法
CN102955792A (zh) 一种实时全文搜索引擎事务处理的实现方法
Yang et al. F1 Lightning: HTAP as a Service
US7941451B1 (en) Dynamic preconditioning of a B+ tree
KR102038529B1 (ko) 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템
EP3026574B1 (en) Affair processing method and device
JP6293709B2 (ja) ストレージシステムおよびストレージシステム用プログラム
KR101549655B1 (ko) 병렬처리방식의 데이터베이스 이중화 방법 및 그 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US11061889B2 (en) Systems and methods of managing manifest refresh in a database
US20180011897A1 (en) Data processing method having structure of cache index specified to transaction in mobile environment dbms
CN102193987B (zh) 基于oltp的增加节点数据关系的方法及系统

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
FPAY Annual fee payment

Payment date: 20180823

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190826

Year of fee payment: 5