KR102360268B1 - 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어 - Google Patents

데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어 Download PDF

Info

Publication number
KR102360268B1
KR102360268B1 KR1020190092962A KR20190092962A KR102360268B1 KR 102360268 B1 KR102360268 B1 KR 102360268B1 KR 1020190092962 A KR1020190092962 A KR 1020190092962A KR 20190092962 A KR20190092962 A KR 20190092962A KR 102360268 B1 KR102360268 B1 KR 102360268B1
Authority
KR
South Korea
Prior art keywords
lock
shard key
data
shard
computer
Prior art date
Application number
KR1020190092962A
Other languages
English (en)
Other versions
KR20190092363A (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
Priority claimed from KR1020170101039A external-priority patent/KR102007788B1/ko
Application filed by 네이버 주식회사 filed Critical 네이버 주식회사
Priority to KR1020190092962A priority Critical patent/KR102360268B1/ko
Publication of KR20190092363A publication Critical patent/KR20190092363A/ko
Application granted granted Critical
Publication of KR102360268B1 publication Critical patent/KR102360268B1/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

Landscapes

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

Abstract

데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어 기술을 제공한다. 일실시예에 따른 락 제어 방법은 샤드키 단위로 데이터에 대한 락의 설정 및 해제를 제어할 수 있다.

Description

데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어{LOCK CONTORL FOR DATA IN DATABASE SHARDING ENVIRONMENT}
아래의 설명은 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어 기술에 관한 것이다.
데이터베이스를 관리하는 종래기술에서는 레코드와 인덱스, 또는 테이블 단위로 락킹(locking)이 이루어진다. 예를 들어, 한국등록특허 제10-1160388호는 데이터베이스 관리 방법 및 시스템에 관한 것으로, 서브 트랜잭션이 처리되는 시간 동안 테이블 및 레코드에 락(Lock)을 설정하는 기술을 개시하고 있다. 그러나, 데이터베이스에 저장된 테이블의 특정 레코드와 해당 테이블에 대한 인덱스의 키나 해당 테이블 각각에 대해 락이 설정 및 해제되기 때문에 락의 설정과 해제에 따른 오버헤드가 존재하는 문제점이 있다.
뿐만 아니라, 종래기술에서 데이터에 대한 락(lock)은 볼륨 ID, 페이지 ID, 슬롯 ID와 같은 하드디스크의 물리적인 위치와 연관하여 설정 및 해제되며, 락의 식별자가 하드디스크의 물리적인 위치와 연관된다. 그러나 데이터 분산 시스템에서는 데이터의 이동이 잦으며, 데이터가 이동됨에 따라 락의 식별자가 달라지게 되기 때문에 타 연산(트랜잭션)에 의한 데이터의 변경을 막기 위해 설정된 락을 데이터의 저장 위치가 이동됨에 따라 식별할 수 없게 되는 문제점이 존재한다. 다시 말해, 일반적인 락 기술을 데이터 분산 시스템 등에 적용하기 어렵다는 문제점이 있다.
데이터베이스 샤딩 환경에서 샤드키(shardkey) 단위의 데이터에 대한 논리적인 락(lock)을 설정 및 해제함으로써, 데이터의 이동 시에도 데이터와 설정된 락을 식별하기 위한 샤드키가 그대로 유지되기 때문에, 데이터의 이동이 잦은 데이터 분산 시스템에서도 안전하게 사용 가능한 락 제어 방법 및 락 제어 방법을 수행하는 컴퓨터 장치, 그리고 컴퓨터와 결합되어 본 발명의 실시예들에 따른 락 제어 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램과 그 기록매체를 제공한다.
샤드키 단위로 샤드키에 대응하는 데이터 전체에 락의 설정 및 해제를 가능하게 함으로써, 락의 설정 및 해제를 위한 오버헤드를 최소화할 수 있으며, 데드락(dead lock)이 발생하지 않는 제어 방법 및 락 제어 방법을 수행하는 컴퓨터 장치, 그리고 컴퓨터와 결합되어 본 발명의 실시예들에 따른 락 제어 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램과 그 기록매체를 제공한다.
샤딩(sharding)된 데이터에 대해 요구되는 연산을 확인하는 단계; 상기 확인된 연산과 연관된 샤드키(shardkey)를 식별하는 단계; 상기 식별된 샤드키를 통해 분할된 샤드키 단위의 데이터에 대한 락(lock)을 설정하는 단계; 상기 확인된 연산을 상기 분할된 샤드키 단위의 데이터와 연관하여 처리하는 단계; 및 상기 분할된 샤드키 단위의 데이터에 대해 설정된 락을 해제하는 단계를 포함하는 것을 특징으로 하는 락 제어 방법을 제공한다.
상기 락 제어 방법을 컴퓨터에 실행시키기 위한 컴퓨터 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터 판독 가능한 기록매체를 제공한다.
컴퓨터와 결합하여 상기 락 제어 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램을 제공한다.
컴퓨터 장치에 있어서, 컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 샤딩(sharding)된 데이터에 대해 요구되는 연산을 확인하고, 상기 확인된 연산과 연관된 샤드키(shardkey)를 식별하고, 상기 식별된 샤드키를 통해 분할된 샤드키 단위의 데이터에 대한 락(lock)을 설정하고, 상기 확인된 연산을 상기 분할된 샤드키 단위의 데이터와 연관하여 처리하고, 상기 분할된 샤드키 단위의 데이터에 대해 설정된 락을 해제하는 것을 특징으로 하는 컴퓨터 장치를 제공한다.
데이터베이스 샤딩 환경에서 샤드키(shardkey) 단위의 데이터에 대한 논리적인 락(lock)을 설정 및 해제함으로써, 데이터의 이동 시에도 데이터와 설정된 락을 식별하기 위한 샤드키가 그대로 유지되기 때문에, 데이터의 이동이 잦은 데이터 분산 시스템에서도 안전하게 사용 가능한 락 제어 기술을 제공할 수 있다.
샤드키 단위로 샤드키에 대응하는 데이터 전체에 락의 설정 및 해제를 가능하게 함으로써, 락의 설정 및 해제를 위한 오버헤드를 최소화할 수 있으며, 데드락(dead lock)이 발생하지 않는 락 제어 기술을 제공할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 데이터베이스에 저장된 데이터의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 데이터의 샤딩 예를 도시한 도면이다.
도 3은 종래기술에 따른 락 설정 기술의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 락 설정 방법의 예를 도시한 도면이다.
도 5는 종래기술에 따른 연산의 처리 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 연산의 처리 예를 도시한 도면이다.
도 7은 본 발명의 일실시예에 있어서, 컴퓨터 장치의 내부 구성을 설명하기 위한 블록도이다.
도 8은 본 발명의 일실시예에 있어서, 락 제어 방법의 예를 도시한 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
본 발명의 실시예들에 따른 락 제어 방법은 컴퓨터 장치에 의해 수행될 수 있다. 일례로, 컴퓨터 장치에는 컴퓨터 장치가 락 제어 방법을 수행하도록 제어하기 위한 컴퓨터 프로그램이 설치 및 구동될 수 있으며, 컴퓨터 프로그램은 컴퓨터 장치와 결합되어 락 제어 방법을 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장될 수 있다.
도 1은 본 발명의 일실시예에 있어서, 데이터베이스에 저장된 데이터의 예를 도시한 도면이고, 도 2는 본 발명의 일실시예에 있어서, 데이터의 샤딩 예를 도시한 도면이다. 도 1 및 도 2는 데이터베이스(110)에 저장된 데이터에 대한 데이터베이스 샤딩(database sharding)에 의해, 데이터들이 n 개의 샤드 노드들(210, 220 및 230)로 분산된 예를 나타내고 있다. 예를 들어, 도 1 및 도 2에서는 레코드들을 식별하기 위한 식별자인 'id1', 'id2', 'id3', 'id4'를 샤드키(shardkey)로 이용하여 동일한 샤드키의 레코드들을 모아서 n 개의 샤드들(210, 220 및 230)로 분산한 예를 나타내고 있다. 이때, 샤드키 단위의 데이터는 동일한 샤드키를 통해 식별되는 데이터를 의미할 수 있다. 예를 들어, 도 2에서는 샤드키 'id2'를 통해 식별되는 데이터를 굵은 실선(240)을 통해 표시하고 있다.
샤드키 단위의 데이터는 용량과 QPS(Query Per Second)는 상대적으로 작은 편이나, 샤드키의 개수가 매우 많고, 따라서 결과적으로 데이터베이스 전체 용량과 QPS는 매우 크다는 특징을 갖는다. 또한, 샤드키를 통해 식별되는 데이터간의 관계(relation)은 의미가 있지만, 서로 다른 샤드키를 통해 식별되는 데이터간의 관계는 의미가 없다는 특징을 갖는다. 다시 말해, 하나의 샤드키를 통해 식별되는 데이터는 다른 샤드키를 통해 식별되는 데이터에 대해 의존성을 갖지 않으며, 샤드키 단위로 독립적인 개별 연산(트랜잭션)의 처리가 가능하다.
n 개의 샤드 노드들(210, 220 및 230) 각각은 제1 샤드 노드(210)을 통해 나타나는 바와 같이, 하나의 샤드키에 대응하는 데이터를 포함할 수도 있으나, 제2 샤드 노드(220)을 통해 나타나는 바와 같이, 다수의 샤드키에 대응하는 데이터를 포함할 수도 있다.
이때, 본 발명의 실시예들에서는 앞서 설명한 샤드키 단위의 데이터에 대한 논리적인 락(lock)을 설정 및 해제할 수 있다.
도 3은 종래기술에 따른 락 설정 기술의 예를 도시한 도면이고, 도 4는 본 발명의 일실시예에 따른 락 설정 방법의 예를 도시한 도면이다.
도 3은 메일 테이블(310)에서 사용자 식별자 'a'의 레코드들을 삭제하기 위해, 사용자 식별자 'a'에 해당하는 레코드별로, 그리고 인덱스들(320, 330)에서 사용자 식별자 'a'의 레코드들에 해당하는 키별로 각각 락을 설정함에 따라 락 테이블(340)에 개별 락들의 식별자들이 기록된 예를 나타내고 있다. 이때, 도 3은 사용자 식별자 'a'에 대한 모든 레코드들과 인덱스들의 키들에 대해 락을 설정하는 경우, 사용자 식별자 'a'에 대한 레코드들의 수가 증가함에 따라 락의 수 역시 급격히 증가하게 되며, 이미 설명한 바와 같이 락의 설정 및 해제에 따른 오버헤드가 증가하게 되고, 설정된 락을 관리하는 것 역시 매우 복잡해짐을 알 수 있다.
한편, 도 4의 실시예에 따르면, 본 발명의 실시예들에서는 메일 테이블(410)에서 샤드키 'a'에 락을 설정하는 것만으로, 개별 레코드들이나 인덱스들(420, 430)에 락을 설정할 필요 없이 락 테이블(440)에 샤드키 'a' 단위의 데이터들에 대한 논리적인 락을 설정할 수 있다. 예를 들어, 샤드키이자 사용자 식별자인 'a'를 락 테이블(440)에 설정하는 것만으로 다른 연산(트랜잭션)에서 샤드키 'a'에 대응하는 데이터(레코드들)에 접근하는 것을 막을 수 있다. 따라서, 도 3을 통해 설명한 오버헤드가 감소할 수 있으며, 연산의 처리를 시작할 때, 필요한 모든 샤드키들에 대한 락을 설정할 수 있게 된다. 또한, 동일한 식별자의 일부 레코드들에만 락을 설정하는 것이 아니라 샤드키 단위의 데이터 전체에 락이 설정되기 때문에 데드락(dead lock)이 발생하지 않게 된다.
도 5는 종래기술에 따른 연산의 처리 예를 도시한 도면이고, 도 6은 본 발명의 일실시예에 따른 연산의 처리 예를 도시한 도면이다.
도 5에서는 종래기술에서는 테이블 단위로 락이 설정 및 해제되는 경우를 설명한다. 우선 도 5에서는 식별자 'id21', 식별자 'id25' 및 식별자 'id30'에 대응하는 데이터가 삽입된 테이블 't'를 생성한 후, 생성된 테이블 't'에 대해 삭제 연산(DELETE)와 삽입 연산(INSERT)을 연속적으로 수행하는 예를 나타내고 있다. 이때, 테이블 't'에 대해 락이 설정되기 때문에 식별자 'id25'에 대한 데이터를 테이블 't'에서 삭제하는 연산이 완료될 때까지 식별자 'id26'에 대한 데이터를 테이블 't'에 삽입하는 연산은 락 대기 상태로 존재하게 된다.
예를 들어, 기존의 레코드 레벨의 락킹 방식에서는 넥스트 키(next key) 락킹을 하기 때문에 식별자 'id25'에 대한 데이터를 삭제하는 경우, 식별자 'id26'의 삽입도 블록(block)되어야 한다. 보다 자세한 예로, 현재 테이블에 식별자 1, 2, 3, 6에 대응하는 레코드들이 존재하고, 'where id <5'와 같이 식별자 5보다 작은 식별자의 레코드들을 삭제하는 제1 트랜잭션을 고려할 수 있다. 이때, 단순히 식별자 1, 2, 3과 관련된 락만을 설정하게 되면, 제2 트랜잭션이 식별자 4의 레코드를 삽입할 수 있게 된다. 이 경우, 제1 트랜잭션에 의해 식별자 1, 2, 3의 레코드들은 삭제되나 제2 트랜잭션에 의해 식별자 4의 레코드들이 남아 있게 되기 때문에 'where id <5'와 같이 식별자 5보다 작은 식별자의 레코드들을 삭제하는 제1 트랜잭션이 끝날 때까지 식별자 4의 레코드들을 추가할 수 없도록 식별자 3의 넥스트 키인 식별자 6에도 락킹을 해야 한다. 다시 말해, 기존의 레코드 레벨의 락킹 방식에서는 값을 지정할 뿐이기 때문에 검색 범위를 벗어나서 존재하는 키(식별자)까지 락을 잡아야 특정 범위를 락으로 지정할 수 있다.
반면, 샤드키 단위의 락킹은 샤드키가 하나의 범위를 지정하고 있기 때문에 샤드키 단위로 락을 설정하는 것만으로 특정 범위에 락을 설정할 수 있다. 이때, 트랜잭션은 샤드키의 단위로 락을 설정하고, 하나의 샤드키에 대해 락이 설정됨은 다른 트랜잭션이 해당 샤드키를 통해 데이터를 삽입할 수 없음을 의미하기 때문에, 해당 샤드키에 대응하여 현재 존재하는 데이터와 현재 존재하지 않지만 새로 삽입될 수 있는 데이터까지 모두 포함하는 범위를 락으로 지정할 수 있음을 의미할 수 있다. 또한, 샤드키 단위의 락킹은 하나의 트랜잭션이 최대 한 개의 샤드키에 대해 락을 설정할 수 있도록 설계함으로써, 데드락이 발생하지 않도록 할 수 있다.
예를 들어, 도 6의 실시예에 따르면, 본 발명의 실시예들에서는 샤드키 단위로 락을 설정 및 해제하기 때문에 서로 다른 샤드키를 이용한 연산에 대해서는 락 대기가 요구되지 않는다. 예를 들어, 도 6에서는 'id'를 샤드키로 갖는 샤드 테이블 't'(식별자 'id21', 식별자 'id25' 및 식별자 'id30'에 대응하는 데이터가 삽입됨)가 생성되고, 샤드키 단위의 데이터에 대해 논리적인 락이 설정 및 해제됨에 따라 서로 다른 샤드키에 대한 연산들(샤드키 'id25'에 대한 삭제 연산(DELETE) 및 샤드키 'id26'에 대한 삽입 연산(INSERT))이 락에 대한 의존성 없이 각각 수행될 수 있음을 나타내고 있다.
이처럼, 본 발명의 실시예들에 따르면, 서로 다른 샤드키들에 대한 연산들에 대해서는 불필요한 락 대기에 대한 요구 없이 연산들이 동시에 처리될 수 있다.
도 7은 본 발명의 일실시예에 있어서, 컴퓨터 장치의 내부 구성을 설명하기 위한 블록도이다. 컴퓨터 장치(700)는 메모리(710), 프로세서(720), 통신 인터페이스(730) 그리고 입출력 인터페이스(740)를 포함할 수 있다. 메모리(710)는 컴퓨터에서 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM과 디스크 드라이브와 같은 비소멸성 대용량 기록장치는 메모리(710)와는 구분되는 별도의 영구 저장 장치로서 컴퓨터 장치(700)에 포함될 수도 있다. 또한, 메모리(710)에는 운영체제와 적어도 하나의 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(710)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 메모리(710)로 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 인터페이스(730)를 통해 메모리(710)에 로딩될 수도 있다. 예를 들어, 소프트웨어 구성요소들은 네트워크(760)를 통해 수신되는 파일들에 의해 설치되는 컴퓨터 프로그램에 기반하여 컴퓨터 장치(700)의 메모리(710)에 로딩될 수 있다.
프로세서(720)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(710) 또는 통신 인터페이스(730)에 의해 프로세서(720)로 제공될 수 있다. 예를 들어 프로세서(720)는 메모리(710)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 인터페이스(730)은 네트워크(760)를 통해 컴퓨터 장치(700)가 다른 장치(일례로, 앞서 설명한 저장 장치들)와 서로 통신하기 위한 기능을 제공할 수 있다. 일례로, 컴퓨터 장치(700)의 프로세서(720)가 메모리(710)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이나 명령, 데이터, 파일 등이 통신 인터페이스(730)의 제어에 따라 네트워크(760)를 통해 다른 장치들로 전달될 수 있다. 역으로, 다른 장치로부터의 신호나 명령, 데이터, 파일 등이 네트워크(760)를 거쳐 컴퓨터 장치(700)의 통신 인터페이스(730)를 통해 컴퓨터 장치(700)로 수신될 수 있다. 통신 인터페이스(730)를 통해 수신된 신호나 명령, 데이터 등은 프로세서(720)나 메모리(710)로 전달될 수 있고, 파일 등은 컴퓨터 장치(700)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.
입출력 인터페이스(740)는 입출력 장치(750)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 마이크, 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(740)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(750)는 컴퓨터 장치(700)와 하나의 장치로 구성될 수도 있다.
또한, 다른 실시예들에서 컴퓨터 장치(700)는 도 7의 구성요소들보다 더 적은 혹은 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 장치(700)는 상술한 입출력 장치(750) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.
이러한 컴퓨터 장치(700)는 일례로, JDBC(Java DataBase Connectivity)를 통해 샤딩된 데이터베이스들을 관리하는 장치일 수 있다.
도 8은 본 발명의 일실시예에 있어서, 락 제어 방법의 예를 도시한 흐름도이다. 본 실시예에 따른 락 제어 방법은 앞서 설명한 컴퓨터 장치(700)에 의해 수행될 수 있다. 예를 들어, 컴퓨터 장치(700)의 프로세서(720)는 메모리(710)에 로딩된 운영체제의 코드나 적어도 하나의 프로그램의 코드에 따른 제어 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 프로세서(720)는 이러한 제어 명령에 따라 컴퓨터 장치(700)가 도 8의 락 제어 방법이 포함하는 단계들(810 내지 850)을 수행하도록 컴퓨터 장치(700)를 제어할 수 있다.
단계(810)에서 컴퓨터 장치(700)는 샤딩(sharding)된 데이터에 대해 요구되는 연산을 확인할 수 있다. 예를 들어, 데이터를 선택하기 위한 연산(SELECT), 데이터를 갱신하기 위한 연산(UPDATE), 데이터를 삭제하기 위한 연산(DELETE) 등과 같이 샤딩된 데이터에 대한 다양한 연산들을 확인할 수 있다. 이러한 연산들은 일례로, 사용자로부터 입력되는 쿼리에 따라 확인될 수 있다.
단계(820)에서 컴퓨터 장치(700)는 확인된 연산과 연관된 샤드키(shardkey)를 식별할 수 있다. 예를 들어, 컴퓨터 장치(700)는 입력되는 쿼리를 분석하여 쿼리에 파라미터로서 포함된 샤드키를 확인된 연산과 연관된 샤드키로서 추출할 수 있다. 예를 들어, 도 6의 삭제 연산(DELETE)은 샤드키 'id25'를 파라미터로 포함하고 있으며, 컴퓨터 장치(700)는 해당 삭제 연산으로부터 샤드키 'id25'를 추출하여 식별할 수 있다.
단계(830)에서 컴퓨터 장치(700)는 식별된 샤드키를 통해 분할된 샤드키 단위의 데이터에 대한 락(lock)을 설정할 수 있다. 예를 들어, 컴퓨터 장치(700)는 연산의 수행을 위해 샤드 노드들이 참조하는 락 테이블에 식별된 샤드키를 기록하여 식별된 샤드키에 대한 논리적인 락을 설정할 수 있다. 샤드키 자체에 락이 설정되는 경우 해당 샤드키를 통한 데이터의 접근이 차단될 수 있으며, 따라서 해당 샤드키에 대응하는 데이터가 다른 연산으로부터 보호될 수 있다.
만약, 하나의 연산과 관련하여 복수의 샤드키들이 식별되는 경우, 컴퓨터 장치(700)는 식별된 복수의 샤드키들 각각을 락 테이블에 기록함으로써 식별된 복수의 샤드키들 각각에 대해 논리적인 락을 설정할 수 있다.
단계(840)에서 컴퓨터 장치(700)는 확인된 연산을 분할된 샤드키 단위의 데이터와 연관하여 처리할 수 있다. 예를 들어, 컴퓨터 장치(700)는 분할된 샤드키 단위의 데이터를 포함하는 샤딩 노드를 통해 확인된 연산을 실행할 수 있다. 일례로, 샤딩 노드는 하나의 데이터베이스 서버일 수 있으며, 분할된 샤드키 단위의 데이터를 포함하는 샤딩 노드는 식별된 샤드키에 대응하는 데이터가 저장된 데이터베이스 서버를 의미할 수 있다. 컴퓨터 장치(700)는 해당 연산을 이러한 데이터베이스 서버를 통해 실행한 후, 실행 결과를 수신할 수 있다.
단계(850)에서 컴퓨터 장치(700)는 분할된 샤드키 단위의 데이터에 대해 설정된 락을 해제할 수 있다. 예를 들어, 컴퓨터 장치(700)는 앞서 설명한 락 테이블에 기록된 상기 식별된 샤드키를 삭제하여 상기 식별된 샤드키에 대한 논리적인 락을 해제할 수 있다. 하나의 연산에 대해 복수의 샤드키들이 식별된 경우에는 해당 복수의 샤드키들을 락 테이블에서 모두 삭제함으로써, 해당 연산과 관련된 샤드키 단위의 락들을 모두 해제할 수 있다.
이처럼 본 발명의 실시예들에 따르면, 데이터베이스 샤딩 환경에서 샤드키(shardkey) 단위의 데이터에 대한 논리적인 락(lock)을 설정 및 해제함으로써, 데이터의 이동 시에도 데이터와 설정된 락을 식별하기 위한 샤드키가 그대로 유지되기 때문에, 데이터의 이동이 잦은 데이터 분산 시스템에서도 안전하게 사용 가능한 락 제어 기술을 제공할 수 있다. 또한, 샤드키 단위로 샤드키에 대응하는 데이터 전체에 락의 설정 및 해제를 가능하게 함으로써, 락의 설정 및 해제를 위한 오버헤드를 최소화할 수 있으며, 데드락(dead lock)이 발생하지 않는 락 제어 기술을 제공할 수 있다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (8)

  1. 샤딩(sharding)된 데이터에 대해 요구되는 연산을 확인하는 단계;
    상기 확인된 연산과 연관된 샤드키(shardkey)를 식별하는 단계;
    상기 식별된 샤드키에 락을 설정하여 상기 락이 설정된 샤드키를 통해 분할된 샤드키 단위의 데이터에 대한 락(lock)을 설정하는 단계;
    상기 확인된 연산을 상기 분할된 샤드키 단위의 데이터와 연관하여 처리하는 단계; 및
    상기 락이 설정된 샤드키의 락을 해제하여 상기 분할된 샤드키 단위의 데이터에 대해 설정된 락을 해제하는 단계
    를 포함하고,
    상기 식별된 샤드키에 대한 락의 설정에 의해 데드락이 발생하지 않도록 상기 확인된 연산이 최대 한 개의 샤드키에 대해 락을 설정 가능하도록 제한하는 것을 특징으로 하는 락 제어 방법.
  2. 제1항에 있어서,
    상기 샤드키를 식별하는 단계는,
    입력되는 쿼리를 분석하여 상기 쿼리에 파라미터로서 포함된 샤드키를 상기 확인된 연산과 연관된 샤드키로서 추출하는 것을 특징으로 하는 락 제어 방법.
  3. 제1항에 있어서,
    상기 확인된 연산을 상기 분할된 샤드키 단위의 데이터와 연관하여 처리하는 단계는,
    상기 분할된 샤드키 단위의 데이터를 포함하는 샤딩 노드를 통해 상기 확인된 연산을 실행하는 것을 특징으로 하는 락 제어 방법.
  4. 컴퓨터와 결합되어 제1항 내지 제3항 중 어느 한 항의 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  5. 제1항 내지 제3항 중 어느 한 항의 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체.
  6. 컴퓨터 장치에 있어서,
    컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    샤딩(sharding)된 데이터에 대해 요구되는 연산을 확인하고,
    상기 확인된 연산과 연관된 샤드키(shardkey)를 식별하고,
    상기 식별된 샤드키에 락을 설정하여 상기 락이 설정된 샤드키를 통해 분할된 샤드키 단위의 데이터에 대한 락(lock)을 설정하고,
    상기 확인된 연산을 상기 분할된 샤드키 단위의 데이터와 연관하여 처리하고,
    상기 락이 설정된 샤드키의 락을 해제하여 상기 분할된 샤드키 단위의 데이터에 대해 설정된 락을 해제하고,
    상기 식별된 샤드키에 대한 락의 설정에 의해 데드락이 발생하지 않도록 상기 확인된 연산이 최대 한 개의 샤드키에 대해 락을 설정 가능하도록 제한하는 것
    을 특징으로 하는 컴퓨터 장치.
  7. 제6항에 있어서,
    상기 적어도 하나의 프로세서는,
    입력되는 쿼리를 분석하여 상기 쿼리에 파라미터로서 포함된 샤드키를 상기 확인된 연산과 연관된 샤드키로서 추출하는 것
    을 특징으로 하는 컴퓨터 장치.
  8. 제6항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 분할된 샤드키 단위의 데이터를 포함하는 샤딩 노드를 통해 상기 확인된 연산을 실행하는 것
    을 특징으로 하는 컴퓨터 장치.
KR1020190092962A 2017-08-09 2019-07-31 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어 KR102360268B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190092962A KR102360268B1 (ko) 2017-08-09 2019-07-31 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170101039A KR102007788B1 (ko) 2017-08-09 2017-08-09 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어
KR1020190092962A KR102360268B1 (ko) 2017-08-09 2019-07-31 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020170101039A Division KR102007788B1 (ko) 2017-08-09 2017-08-09 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어

Publications (2)

Publication Number Publication Date
KR20190092363A KR20190092363A (ko) 2019-08-07
KR102360268B1 true KR102360268B1 (ko) 2022-02-08

Family

ID=80252449

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190092962A KR102360268B1 (ko) 2017-08-09 2019-07-31 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어

Country Status (1)

Country Link
KR (1) KR102360268B1 (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101527634B1 (ko) * 2012-08-10 2015-06-10 네이버 주식회사 샤딩 서비스를 제공하는 방법 및 장치

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Mongo DB locks, https://bloodguy.tistory.com/entry/MongoDB-locks (2014.02.01.)
MONGO DB SHARDING(샤딩), http://avilos.codes/database/mongodb/ mongo-db-sharding샤딩, (2015.10.05.공개)*
MongoDB의 분산 락, http://mongodb.citsoft.net/?page_id=256 (2012.07.26.)
MS-SQL Lock 풀기, Developers life, https://hopangbear.tistory.com/164 (2008.08.05.공개)
Tsukasa Kudo et al., A Proposal of Transaction Processing Method for MongoDB, Procedia Computer Science Vol. 96, 2016. pp.801-810.

Also Published As

Publication number Publication date
KR20190092363A (ko) 2019-08-07

Similar Documents

Publication Publication Date Title
US10783198B2 (en) Row-based data filtering at a database level
US10757106B2 (en) Resource access control method and device
US9367346B2 (en) Accelerating distributed transactions on key-value stores through dynamic lock localization
US11005850B2 (en) Access control for database
EP2988220B1 (en) Computer system, computer-system management method, and program
WO2014057520A1 (en) Migration-destination file server and file system migration method
US9323771B2 (en) Efficient rename in a lock-coupled traversal of B+tree
EP2603867B1 (en) Sharing data on mobile devices
US11055289B2 (en) Framework to transfer rows in storage format, standard format, or combination thereof
EP3243134A1 (en) Multi-tenant upgrading
CN110659259A (zh) 数据库迁移方法、服务器以及计算机存储介质
US10901982B2 (en) Managing a data set
KR101989074B1 (ko) 데이터베이스 샤딩 환경에서의 복제 로그 기반의 마이그레이션
EP2831742A1 (en) Dynamic directory controls
KR102360268B1 (ko) 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어
US20080127301A1 (en) Delivering Callbacks Into Secure Application Areas
US20230153289A1 (en) Application driven data change conflict handling system
KR102007788B1 (ko) 데이터베이스 샤딩 환경에서의 데이터에 대한 락 제어
KR101919816B1 (ko) 데이터베이스 샤딩 환경에서의 정합성 검사
KR102111991B1 (ko) 운영체제 시스템의 자원 관리 장치 및 방법
KR101662137B1 (ko) 다수의 데이터 객체들에 대한 트랜잭션을 설정하는 방법, 서버 및 컴퓨터 판독 가능한 기록 매체

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
X601 Decision of rejection after re-examination
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2021101000755; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20210324

Effective date: 20211029

GRNO Decision to grant (after opposition)
GRNT Written decision to grant