KR101553712B1 - 로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법 - Google Patents

로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법 Download PDF

Info

Publication number
KR101553712B1
KR101553712B1 KR1020110107949A KR20110107949A KR101553712B1 KR 101553712 B1 KR101553712 B1 KR 101553712B1 KR 1020110107949 A KR1020110107949 A KR 1020110107949A KR 20110107949 A KR20110107949 A KR 20110107949A KR 101553712 B1 KR101553712 B1 KR 101553712B1
Authority
KR
South Korea
Prior art keywords
node
log
data
nodes
target node
Prior art date
Application number
KR1020110107949A
Other languages
English (en)
Other versions
KR20130043823A (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 KR1020110107949A priority Critical patent/KR101553712B1/ko
Publication of KR20130043823A publication Critical patent/KR20130043823A/ko
Application granted granted Critical
Publication of KR101553712B1 publication Critical patent/KR101553712B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0669Configuration or reconfiguration with decentralised address assignment

Landscapes

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

Abstract

로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 분산 저장 방법이 제공된다. 분산 저장 시스템에서, 장애가 발생한 노드는 수행할 수 없는 연산에 대한 로그를 생성하고, 생성된 로그에 기반하여 상기의 연산을 수행함으로써 데이터의 정합성을 유지한다. 상기의 로그는 분산 저장 시스템 내의 다른 노드 내에 저장될 수 있으며, 로그를 저장한 노드는 주기적으로 장애가 발생한 노드에게 상기의 연산을 시도할 것을 요청한다. 또한, 데이터 마이그래이션을 위해, 설정된 종료 시각 이전에 갱신된 객체들이 고장 노드를 대체하여 선택된 타겟 노드로 복사될 수 있다. 타겟 노드는 상기의 복사 중 갱신이 요청된 객체에 대해 로그를 생성하며, 복사가 완료되어 상기의 객체가 생성된 후, 생성된 로그에 기반하여 상기의 객체를 갱신한다.

Description

로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법{DISTRIBUTED STORAGE SYSTEM FOR MAINTAINING DATA CONSISTENCY BASED ON LOG, AND METHOD FOR THE SAME}
아래의 실시예들은 분산 저장 시스템 및 방법에 대한 것이다.
로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 로그에 기반하여 분산 저장 시스템의 데이터 정합성을 유지하는 방법이 개시된다.
데이터가 빈번하게 대량 삽입(bulk insert)되는 시스템은, 싸고 많은 개수의 장치들을 사용하고, 상기의 장치들로 데이터를 분산하여 저장함으로써 처리량(throughput)을 향상시킬 수 있다.
많은 개수의 장치가 사용됨에 따라, 장치 자체에서 발생하는 장애가 증가할 수 있으며, 시스템의 응답 시간(response time)이 보장하는 것이 어렵게 될 수 있다. 이러한 문제점을 해결하기 위해, 분산 저장 시스템은 복제본(replica)들을 유지 및 관리할 수 있다. 여기서, 복제본들은 동일한 데이터를 저장하는 복수 개의 장치들을 의미한다.
복수 개의 노드들을 포함하는 분산 저장 시스템에서, 동일한 데이터를 저장하는 복제본들 간의 정합성(consistency)이 문제가 될 수 있다. 즉, 복제본들이 각각 서로 상이한 순서로 연산들을 처리하여, 복제본들 각각이 갖는 데이터가 서로 상이하게 되는 것이 방지되어야 한다.
정합성을 유지하기 위한 하나의 방법은, 가환성(commutativity) 및 멱등성(idempotent)을 만족하도록 복제본들에게 제공되는 연산들을 구성하는 것이다. 가환성은 특정한 연산들을 서로 상이한 순서로 수행하더라도, 상기의 연산들을 수행한 결과가 항상 동일하게 되는 것을 의미한다. 멱등성은 특정한 연산을 반복하여 수행하였을 때의 결과가, 상기의 연산을 1 회 수행하였을 때의 결과와 동일하다는 것을 의미한다. 예컨대, 1) 멱등하지 않은 연산을 수행하는 것을 제한하거나, 2) 테이블의 전체 행(row)이 아닌 행의 일부만을 업데이트(update)하는 것을 제한함으로써 멱등성을 만족하는 연산을 구성할 수 있다. 멱등하지 않은 연산의 일 예로서, 자기 재참조가 있다. 수식 "A = A+1"은 자기 재참조의 일 예이다.
정합성을 유지하기 위한 또 하나의 방법은, 전체 순서화(total ordering)이다. 전체 순서화는 복제본들이 연산들을 수행함에 있어서, 복제본들이 서로 간에 연산들 간의 순서를 맞추는 방법을 의미한다. 연산들 간의 순서를 맞추기 위해, 복제본들은 전역(global) 큐(queue) 또는 락(lock)을 이용할 수 있으며, 서로 간에 마스터(master) 및 슬레이브(slave)를 설정할 수 있다. 예를 들면, 복제본들 중 마스터는 연산들을 수행하면서 연산들 간의 순서를 결정하고, 슬레이브들은 상기의 결정된 순서에 따라 연산들을 수행할 수 있다. 그러나, 전체 순서화가 사용될 경우, 복제본들 중 하나의 노드에 장애가 발생하면 다른 노드들 또한 상기의 장애로부터 영향을 받는 문제가 발생할 수 있다.
한국공개특허 제10-2008-0102622호(공개일 2008년 11월 26일)에는, 마스터 데이터베이스의 트랜잭션 로그를 통해 복제 로그를 생성하여 배포 시스템으로 전송하고, 복제 로그를 배포할 슬레이브 호스트를 판단하여 해당하는 슬레이브 호스트로 상기 복제 로그를 배포함으로써 상기의 복제 로그를 슬레이브 데이터베이스에 반영하는 방법이 개시되어 있다.
본 발명의 일 실시예는 수행할 수 없는 연산에 대한 로그를 생성하고, 상기 로그에 기반하여 이후에 상기 연산을 수행함으로써 데이터의 정합성을 유지하는 분산 저장 시스템 및 분산 저장 방법을 제공할 수 있다.
본 발명의 일 실시예는 데이터의 복사의 종료 시각을 설정하고, 데이터의 객체들을 타겟 노드로 복사하며, 상기 종료 시각 이전에 갱신된 객체를 타겟 노드로 재복사함으로써 데이터의 정합성을 유지하는 분산 저장 시스템 및 분산 저장 방법을 제공할 수 있다.
본 발명의 일 측에 따르면, 분산 저장 시스템에 있어서, 복수 개의 노드들을 포함하고, 상기 복수 개의 노드들 중 제1 노드는 제1 연산의 요청을 수신하고, 상기 제1 노드는 상기 제1 연산을 수행할 수 없는 장애가 발생한 경우 상기 제1 연산의 실패를 나타내는 로그를 생성하고, 상기 제1 노드는 상기 로그에 기반하여 상기 제1 연산을 반복하여 시도하며, 상기 제1 연산이 수행된 경우 상기 로그를 삭제하는, 분산 저장 시스템이 제공된다.
상기 장애는 상기 제1 연산에서 사용되는 객체가 상기 제1 노드 내에 존재하지 않음을 의미할 수 있다.
상기 제1 노드는 상기 객체의 생성을 포함하는 제2 연산을 수행한 후 상기 제1 연산을 수행할 수 있다.
상기 제1 연산의 타임스탬프는 상기 제2 연산의 타임스탬프보다 더 늦은 시각을 나타낼 수 있다.
상기 제1 연산은 상기 객체에 대한 갱신 연산일 수 있다. 상기 제2 연산은 상기 객체에 대한 삽입 연산일 수 있다.
상기 장애는 상기 제1 노드의 네트워크 장애 또는 프로세스 장애일 수 있다.
본 발명의 일 측에 따르면, 분산 저장 시스템에 있어서, 복수 개의 노드들을 포함하고, 상기 복수 개의 노드들 중 제1 노드는 제1 연산의 요청을 수신하고, 상기 제1 노드는 상기 제1 연산을 수행할 수 없는 장애가 발생한 경우 상기 제1 연산의 실패를 나타내는 로그를 생성하여 상기 로그를 상기 복수 개의 노드들 중 제2 노드로 전송하고, 상기 제2 노드는 상기 로그를 저장하며, 상기 로그에 기반하여 주기적으로 상기 제1 노드에게 상기 제1 연산의 시도를 요청하고, 상기 제1 노드는 상기 제1 연산이 수행된 경우 상기 제2 노드에게 상기 로그의 삭제를 요청하는, 분산 저장 시스템이 제공된다.
본 발명의 또 다른 일 측에 따르면, 분산 저장 시스템에 있어서, 복수 개의 노드들을 포함하고, 장애 노드는 상기 복수 개의 노드들 중 장애가 발생한 노드이며, 소스 노드는 복제본들 중 하나이며, 상기 복제본들은 상기 복수 개의 노드들 중 상기 장애 노드와 동일한 데이터를 제공하는 하나 이상의 노드들이며, 타겟 노드는 상기 복수 개의 노드들 중 상기 장애 노드를 대체하여 상기 복제본들 중 하나로서 새롭게 선택된 노드이며, 상기 소스 노드는 상기 장애 노드의 상기 장애를 인식하며, 상기 소스 노드는 데이터의 복사의 종료 시각을 설정하며, 상기 데이터의 객체들을 상기 타겟 노드로 복사하며, 상기 타겟 노드로 복사된 후 상기 종료 시각 이전에 갱신된 제1 객체를 상기 타겟 노드로 다시 복사하는, 분산 저장 시스템이 제공된다.
상기 종료 시각은 상기 복수 개의 노드들 전체가 상기 타겟 노드로의 복사를 인식하여 상기 데이터에 대한 접근 요청을 상기 타겟 노드로도 보낼 수 있는 시각일 수 있다.
상기 소스 노드는 상기 객체들 각각의 타임스탬프들의 오름차순으로 상기 객체들을 상기 타겟 노드로 복사할 수 있다.
상기 소스 노드는 상기 객체들 중 상기 타임스탬프가 상기 종료 시각 또는 상기 종료 시각의 이전 시각을 나타내는 객체에 대해 상기 복사를 수행할 수 있다.
상기 복수 개의 노드들 중 조정 노드는 상기 제1 객체에 대한 갱신 요청을 수신할 수 있고, 상기 조정 노드는 상기 소스 노드 및 상기 타겟 노드 각각에게 상기 제1 객체에 대한 갱신 요청을 전송할 수 있고, 상기 타겟 노드는 상기 제1 객체가 존재하지 않는 경우 상기 갱신 요청의 실패를 나타내는 로그를 생성할 수 있고, 상기 소스 노드로부터 상기 제1 객체가 복사된 후 상기 로그에 기반하여 상기 제1 객체를 갱신할 수 있다.
상기 소스 노드는 상기 타겟 노드에 제2 객체가 존재하지 않는 경우 상기 타겟 노드로 상기 제2 객체를 삽입하는 연산을 수행하고, 상기 타겟 노드에 상기 제2 객체가 존재하는 경우 상기 타겟 노드의 상기 제2 객체를 갱신하는 연산을 수행함으로써 상기 제2 객체를 상기 타겟 노드로 복사할 수 있다.
본 발명의 또 다른 일 측에 따르면, 복수 개의 노드들을 사용하는 분산 저장 시스템이 데이터를 관리하는 방법에 있어서, 상기 복수 개의 노드들 중 제1 노드가 제1 연산의 요청을 수신하는 단계, 상기 제1 노드에 상기 제1 연산을 수행할 수 없는 장애가 발생한 경우 상기 제1 노드가 상기 제1 연산의 실패를 나타내는 로그를 생성하는 단계, 상기 제1 노드가 상기 로그에 기반하여 상기 제1 연산을 반복하여 시도하는 단계 및 상기 제1 노드가 상기 제1 연산을 수행한 경우 상기 제1 로그를 삭제하는 단계를 포함하는, 데이터 관리 방법이 제공된다.
상기 장애는 상기 제1 연산에서 사용되는 객체가 상기 제1 노드 내에 존재하지 않음을 의미할 수 있다.
상기 제1 연산을 반복하여 시도하는 단계는, 상기 제1 노드가 상기 제1 객체의 생성을 포함하는 제2 연산을 수행하는 단계 및 상기 제2 연산이 수행된 후 상기 제1 연산을 수행하는 단계를 포함할 수 있다.
본 발명의 또 다른 일 측에 따르면, 복수 개의 노드들을 사용하는 분산 저장 시스템이 데이터를 관리하는 방법에 있어서, 상기 복수 개의 노드들 중 제1 노드가 제1 연산의 요청을 수신하는 단계, 상기 제1 노드에 상기 제1 연산을 수행할 수 없는 장애가 발생한 경우 상기 제1 노드가 상기 제1 연산의 실패를 나타내는 로그를 생성하는 단계, 상기 제1 노드가 상기 로그를 상기 제2 노드로 전송하는 단계, 상기 제2 노드가 상기 로그를 저장하는 단계, 상기 제2 노드가 상기 로그에 기반하여 주기적으로 상기 제1 노드에게 상기 제1 연산의 시도를 요청하는 단계, 상기 제1 연산이 수행될 수 있는 경우, 상기 제1 노드가 상기 제1 연산을 수행하는 단계, 상기 제1 연산이 수행된 경우, 상기 제1 노드가 상기 제2 노드에게 상기 로그의 삭제를 요청하는 단계 및 상기 제2 노드가 상기 로그를 삭제하는 단계를 포함하는, 데이터 관리 방법이 제공된다.
본 발명의 또 다른 일 측에 따르면, 복수 개의 노드들을 사용하는 분산 저장 시스템이 상기 노드들 간에 데이터를 복사하는 방법에 있어서, 타겟 노드가 소스 노드에게 데이터의 복사를 요청하는 단계 - 상기 소스 노드는 복제본들 중 하나임, 상기 타겟 노드는 상기 복제본들 중 장애가 발생한 장애 노드를 대체하여 상기 복수 개의 노드들 중 상기 복제본들 중 하나로서 새롭게 선택된 노드임 -, 상기 소스 노드가 상기 데이터의 복사의 종료 시각을 설정하는 단계, 상기 소스 노드가 상기 데이터의 객체들을 타겟 노드로 복사하는 단계 및 상기 소스 노드가 상기 타겟 노드로 복사된 후 상기 종료 시각 이전에 갱신된 제1 객체를 상기 타겟 노드로 다시 복사하는 단계를 포함하는, 분산 저장 시스템의 데이터 복사 방법이 제공된다.
상기 복사하는 단계는, 상기 소스 노드가 상기 객체들 각각의 타임스탬프들의 오름차순으로 상기 객체들을 상기 타겟 노드로 복사하는 단계를 포함할 수 있다.
상기 소스 노드는 상기 객체들 중 상기 타임스탬프가 상기 종료 시각 또는 상기 종료 시각의 이전 시각을 나타내는 객체에 대해 상기 복사를 수행할 수 있다.
상기 데이터 복사 방법은, 상기 복수 개의 노드들 중 조정 노드가 상기 제1 객체에 대한 갱신 요청을 수신하는 단계, 상기 조정 노드가 상기 소스 노드 및 상기 타겟 노드 각각에게 상기 제1 객체에 대한 갱신 요청을 전송하는 단계, 상기 타겟 노드가 상기 제1 객체가 존재하지 않는 경우 상기 갱신 요청의 실패를 나타내는 로그를 생성하는 단계 및 상기 타겟 노드가 상기 소스 노드로부터 상기 제1 객체가 복사된 후 상기 로그에 기반하여 상기 제1 객체를 갱신하는 단계를 더 포함할 수 있다.
수행할 수 없는 연산에 대한 로그를 생성하고, 상기 로그에 기반하여 이후에 상기 연산을 수행함으로써 데이터의 정합성을 유지하는 분산 저장 시스템 및 분산 저장 방법이 제공된다.
데이터의 복사의 종료 시각을 설정하고, 데이터의 객체들을 타겟 노드로 복사하며, 상기 종료 시각 이전에 갱신된 객체를 타겟 노드로 재복사함으로써 데이터의 정합성을 유지하는 분산 저장 시스템 및 분산 저장 방법이 제공된다.
분산 저장 시스템 및 분산 저장 방법은, 신규의 데이터 접근 요청을 데이터가 복사되는 타겟 노드로도 전송하고, 소스 노드가 종료 시각 이전의 시각을 나타내는 타임스탬프를 갖는 객체들 만을 타겟 노드로 복사함으로써, 신규로 삽입 또는 갱신되는 객체들이 많은 경우에도 데이터 마이그레이션이 계속하여 연장되는 문제를 방지할 수 있다.
도 1은 분산 저장 시스템의 노드들 간에 데이터 비정합이 발생하는 경우를 설명한다.
도 2는 본 발명의 일 실시예에 따른 복수 개의 노드들을 사용하는 분산 저장 시스템이 데이터를 관리하는 방법을 설명하는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 이웃 노드에 로그를 기록함으로써 분산 저장 시스템이 데이터를 관리하는 방법을 설명하는 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 데이터를 복사하는 분산 저장 시스템을 설명한다.
도 5는 본 발명의 일 실시예에 따른 분산 저장 시스템의 데이터 복사 방법의 흐름도이다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서, 갱신(update)은 변경과 동일한 의미로 사용되며, 갱신 및 변경은 상호 대체하여 사용될 수 있다.
분산 저장 시스템의 각 노드는 데이터를 관리한다. 노드는 특정한 작업을 처리하는 실행 단위를 의미할 수 있다. 예를 들면, 노드는 프로세스(process) 또는 서버(server) 등을 의미할 수 있다. 데이터는 하나 이상의 테이블들을 포함할 수 있다. 노드는 테이블의 행(row)을 단위로 연산을 수행할 수 있다. 하기의 실시예들에서, 객체는 특정한 테이블의 특정한 행을 의미할 수 있다.
도 1은 분산 저장 시스템의 노드들 간에 데이터 비정합이 발생하는 경우를 설명한다.
분산 저장 시스템은 제1 노드(120) 및 제2 노드(130)를 포함한다. 제1 노드(120) 및 제2 노드(130)는 동일한 데이터를 복제하는 복제본들일 수 있다.
클라이언트(110)는 2 개의 명령들(150 및 160)을 분산 저장 시스템에게 전송한다.
삽입 명령(150)은 객체(또는, 데이터) A에 a를 삽입(insert)하는 연산을 요청한다. 삽입 명령(150)의 타임스탬프는 T1이다. 여기서, 삽입 명령(150)의 타임스탬프는 삽입 명령(150)이 요청하는 삽입 연산의 타임스탬프로 볼 수 있다. 갱신 명령(160)은 객체 A의 값을 b로 갱신(update)하는 연산을 요청한다. 갱신 명령(160)(또는, 갱신 명령(140)이 요창하는 갱신 연산)의 타임스탬프는 T2이다. T1 및 T2는 클라이언트(110)가 2 개의 명령들(150 및 160) 각각을 실제로 요청한 시각을 나타낸다. T1 < T2 이다.
클라이언트(110)의 의도는, 'a'라는 값을 갖는 객체 A를 분산 저장 시스템 내에 삽입한 후, 상기의 객체 A의 값을 'b'로 갱신하는 것이다. 제1 노드(120)에는, 2 개의 명령들(150 및 160)이 바른 순서로 전달된다. 따라서, 제1 노드(120)는 2 개의 명령들(150 및 160)을 정상적으로 처리할 수 있다. 반면, 제2 노드(130)에는, 갱신 명령(160)이 먼저 도착하고, 삽입 명령(150)이 나중에 도착한다. 갱신 명령(160)이 제2 노드(130)에 도착하였을 때, 제2 노드(130) 내에는 객체 A가 존재하지 않는다. 따라서, 존재하지 않는 객체 A에 대한 갱신 연산은 실패한다. 이후 삽입 명령(150)이 제2 노드(130)에 도착하면, 삽입 명령(150)이 수행됨으로써 제2 노드(130) 내에 저장된 객체 A는 'a'의 값을 갖는다.
상술된 것처럼, 복수 개의 명령들이 각 노드에 전달되는 순서에 따라, 다수의 복제본들이 특정한 객체에 대해 서로 상이한 값을 갖는 데이터 비정합 문제가 발생할 수 있다.
이러한 데이터 비정합 문제가 발생하는 것을 방지하기 위해, 분산 저장 시스템은 명령들이 요청된 시각에 따라, 상기의 명령들을 순차적으로 수행하는 방법을 사용할 수 있다. 각 명령은 상기 명령이 요청된 시각을 나타내는 타임스탬프를 포함하고, 복제본들 각각은 상기의 타임스탬프를 확인하여, 수신된 명령들을 순서에 따라 수행할 수 있다. 그러나, 복제본이 앞질러서 도착한 명령(예를 들면, 갱신 명령(160))을 수행하기 위해, 다른 명령(예를 들면, 삽입 명령(150))을 계속하여 기다릴 경우, 응답 시간(response time)이 보장될 수 없는 문제가 발생할 수 있다.
하기에서 설명될 본 발명의 실시예는 연산의 실패를 나타내는 로그를 사용하여 상기의 데이터 비정합 문제를 해결하는 방법을 제시한다.
도 2는 본 발명의 일 실시예에 따른 복수 개의 노드들을 사용하는 분산 저장 시스템이 데이터를 관리하는 방법을 설명하는 흐름도이다.
분산 저장 시스템은 복수 개의 노드들을 포함할 수 있다. 상기의 복수 개의 노드들 중 전부 또는 일부의 노드들은 동일한 데이터를 복제하는 복제본들일 수 있다.
하기에서, 단계들(210 내지 295)을 수행하는 장애 노드는 분산 저장 시스템이 포함하는 복수 개의 노드들 중 하나의 노드일 수 있으며, 도 1을 참조하여 전술된 제2 노드(130)에 대응할 수 있다.
단계(210)에서, 장애 노드는 제1 명령을 수신한다. 상기의 제1 명령은 도 1을 참조하여 전술된 갱신 명령(160)일 수 있다. 제1 명령은 장애 노드가 수행해야하는 제1 연산을 포함한다. 제1 명령은 제1 연산을 요청하는 것을 의미할 수 있다.
단계(220)에서, 장애 노드는 제1 연산이 수행할 수 있는지 여부를 판단한다. 제1 연산을 수행할 수 있는 경우, 장애 노드는 제1 연산을 수행한다(단계(290)). 다음으로, 제 1 노드는 제1 명령에 대한 성공 응답을 출력하고(단계(295)), 절차가 종료한다. 여기에서, 성공 응답의 출력은, 장애 노드가 제1 명령의 수행이 성공하였음을 나타내는 성공 응답을 제1 명령을 요청하였던 클라이언트에게 전송하는 것을 의미할 수 있다.
단계(230)에서, 장애 노드에 제1 명령의 제1 연산을 수행할 수 없는 장애가 발생한 경우, 장애 노드는 제1 연산의 실패를 나타내는 로그(log)를 생성한다.
상기의 장애는 제1 연산에서 사용되는 객체(예를 들면, 갱신 명령(160)의 연산 내의 객체 A)가 장애 노드 내에 존재하지 않음을 의미할 수 있다. 이때, 생성된 로그는 특정한 객체가 장애 노드 내에 존재하지 않기 때문에 제1 연산의 수행이 실패하였음을 나타내는 정보일 수 있다. 이러한 경우, 장애 노드는 상기의 객체의 생성을 포함하는 제2 명령의 제2 연산(예를 들면, 삽입 명령(150)의 연산)을 수행한 후 제1 연산을 수행할 수 있다. 예를 들면, 제1 연산은 특정한 객체에 대한 갱신 연산일 수 있고, 제2 연산은 상기의 특정한 객체에 대한 삽입 연산일 수 있다. 여기에서, 삽입 연산은 삽입의 대상인 객체의 생성을 연산의 일부로서 포함하고, 갱신 연산은 갱신인 대상인 객체의 생성을 연산의 일부로서 포함하지 않는 것으로 본다.
제1 명령 및 제2 명령은 각각 타임스탬프를 포함할 수 있다. 각 명령의 타임스탬프는 명령이 포함하는 연산의 타임스탬프일 수 있다. 제1 명령의 타임스탬프(즉, 제1 연산의 타임스탬프)는 제2 명령의 타임스탬프(즉, 제2 연산의 타임스탬프)보다 더 늦은 시각을 나타낼 수 있으며, 장애 노드는 상기의 타임스탬프들이 나타내는 시각들을 비교함으로써 명령들(또는, 연산들)의 순서를 알 수 있다.
상기의 로그는 장애 노드가 실패한 연산을 나중에 다시 수행하기 위해 로컬(local)(즉, 장애 노드 자신) 내에 남겨놓는 로그일 수 있다. 상기의 로그는 분산 저장 시스템이 최종적인 일관성(eventual consistency)을 제공하기 위한 로그일 수 있고, 최종적인 질의 로그(Eventual Query Log; EQ Log)로 명명될 수 있다.
단계(240)에서, 장애 노드는 제1 명령에 대한 성공 응답을 출력할 수 있다.
단계들(230 및 240)에 의해, 장애 노드는 실패한 연산을 수행될 수 있을 때까지 대기하지 않고 로그만 생성한 채 즉각적으로 성공 응답을 출력한다. 따라서, 장애 노드(또는, 분산 저장 시스템)는 즉각적인 응답 시간을 보장할 수 있다.
단계들(250 및 280)에서, 장애 노드는 생성된 로그에 기반하여 제1 연산을 반복하여 시도할 수 있다.
단계(250)에서, 장애 노드는 일정 시간 대기할 수 있다. 대기 중, 장애 노드는 전술된 제2 연산을 수행할 수 있다.
단계(260)에서, 장애 노드는 제1 연산이 수행될 수 있는지 여부를 판단한다. 제1 연산이 여전히 수행될 수 없는 경우, 단계(250)가 반복된다. 제1 연산이 수행될 수 있는 경우, 단계(270)에서, 장애 노드는 제1 연산을 수행한다. 다음으로, 단계(280)에서, 장애 노드는 로그를 삭제하며, 이후 절차가 종료한다. 예를 들면, 장애 노드가 제2 연산을 수행함으로써 제1 연산 내에서 사용되는 객체가 생성된 경우, 제1 연산이 수행될 수 있다.
전술된 단계들(210 내지 295)은 분산 저장 시스템 내의 모든 노드들 각각이 개별적으로 수행할 수 있다. 전술된 방법에 의해, 노드들 각각은 명령들의 순서에 따라 연산들을 수행함으로써 데이터의 정합성을 유지하면서도, 명령들 각각에 대해 즉각적인 응답을 출력할 수 있다. 따라서, 분산 저장 시스템 내에 장애가 있는 노드가 있는 경우라도, 분산 저장 시스템에게 명령을 전송하는 클라이언트는 명령에 대한 응답을 장시간 기다리지 않을 수 있다..
도 3은 본 발명의 일 실시예에 따른 이웃 노드에 로그를 기록함으로써 분산 저장 시스템이 데이터를 관리하는 방법을 설명하는 흐름도이다.
본 실시예는, 도 2를 참조하여 설명된 장애 노드가 연산의 실패를 나타내는 로그를 장애 노드 자신이 아닌 분산 저장 시스템 내의 이웃 노드에 저장하고, 상기의 이웃 노드로부터 상기 연산의 재시도를 요청받음에 따라 상기 연산을 수행하는 구성을 개시한다. 본 실시예의 장애 노드(310)는 도 2에서 설명된 장애 노드일 수 있다.
단계(330)는, 전술된 단계들(210 내지 230)에 대응한다. 단계(230)에서 설명된 장애는, 장애 노드(310)의 네트워크 장애 또는 프로세스(process) 장애일 수 있다. 상기의 장애로 인해 특정한 명령의 연산이 수행되지 못한 채 유실될 수 있다.
단계(340)에서, 장애 노드(310)는 로그 노드(320)에게 생성된 로그를 전송한다. 로그 노드(320)는 장애 노드(310)의 이웃 노드이다. 상기의 로그는 유실되는 명령(또는, 연산)에 대한 로그이므로, 유실된 질의 로그(Missed Query Log; MQ Log)로 명명될 수 있다.
장애 노드(310)는 분산 저장 시스템의 복수 개의 노드들 중 하나의 노드를 로그 노드(320)로서 선택할 수 있다. 장애 노드(310)는 복수 개의 노드들 중 자신과 동일한 데이터를 복제하는 복제본들을 제외한 다른 노드를 우선적으로 로그 노드(320)로서 선택할 수 있다. 이러한 선택을 통해 장애 노드(310)는 특정한 연산을 수행한 노드들의 개수 및 상기 특정한 연산의 실패에 대한 로그를 가지고 있는 노드들의 개수의 합을 일정하게 유지시킬 수 있다.
로그 노드(320)는 복수 개일 수 있다. 장애 노드(310)의 데이터가 n 개의 복제본들에 의해 복사될 때, 로그 노드(320)는 분산 저장 시스템의 n - 1 개의 노드들일 수 있다. 복수 개의 로그 노드(320)들을 사용함으로써, 복제본들 중 또 다른 노드에 추가적으로 장애가 발생하였을 때에도 로그가 유실되는 것을 방지할 수 있다. 로그 노드(320)가 복수 개일 경우, 후술될 단계들(345, 350, 380)은 복수 개의 로그 노드(320)들 각각에 의해 수행될 수 있다.
단계(345)에서, 로그 노드(320)는 전송된 로그를 저장한다.
단계들(350 내지 355)에서, 로그 노드(320)는 저장된 로그에 기반하여 주기적으로 장애 노드(310)에게 제1 연산의 시도를 요청한다.
단계(350)에서, 로그 노드(320)는 저장된 로그를 확인하고, 장애 노드(310)에게 제1 연산의 시도를 요청한다.
단계(355)에서, 상기의 요청을 수신한 장애 노드(310)는 제1 연산이 수행 가능한지 여부를 판단한다. 제1 연산이 수행될 수 있는 경우, 단계(360)이 수행된다. 제1 연산이 수행될 수 없는 경우, 단계(350)가 주기적으로 반복된다.
단계(360)에서, 장애로부터 회복한 장애 노드(310)는 제1 연산을 수행한다.
단계(370)에서, 장애 노드(310)는 로그 노드(320)에게 로그의 삭제를 요청한다.
단계(380)에서, 로그 노드(320)는 로그를 삭제한다.
도 4는 본 발명의 일 실시예에 따른 데이터를 복사하는 분산 저장 시스템을 설명한다.
본 실시예에서는, 분산 저장 시스템(400)의 복제본들(410) 중 하나의 노드에서 장애가 발생한 경우, 다른 노드에 데이터를 복사하는 방법을 개시한다.
동일한 데이터를 복사하여 저장하는 복제본들(410) 중 하나의 노드에 장애가 발생할 수 있다. 장애 노드(420)는 복제본들(410) 중 장애가 발생한 노드이며, 복제본들(410)은 분산 저장 시스템(400)의 복수 개의 노드들 중 장애 노드(420)와 동일한 데이터를 제공하는 하나 이상의 노드들이다. 장애의 발생으로 인해, 장애 노드(420)의 데이터로 접근하는 것이 불가능해질 수 있다. 장애가 발생한 경우, 장애 노드(420)를 제외한 나머지 복제본들(410) 중 하나의 노드가 자신의 데이터를 정상적으로 동작하는 다른 노드로 복사하고, 데이터가 복사된 노드를 새로운 복제본으로 추가해야 한다. 상기의 복사가 완료되고, 복제본들(410)의 위치 정보가 갱신되면, 분산 저장 시스템(400)은 복제본들(410)의 개수를 일정하게 유지할 수 있다. 복제본 마이그레이션(migration)은 상술된 것과 같은 복사를 의미한다.
복제본들(410) 중 하나의 노드는 장애 노드(420)의 장애를 인식하고, 자신의 데이터를 분산 저장 시스템(400)의 노드들 중 복제본들(410)에 포함되지 않은 노드로 복사한다. 소스 노드(430)는 장애 노드(420)의 장애를 인식한 노드이다. 타겟 노드(450)는 소스 노드(430)의 데이터가 복사되는 노드이다. 타겟 노드(450)는 분산 저장 시스템(400)의 복수 개의 노드들 중 장애 노드(420)를 대체하여 복제본들(410) 중 하나로서 새롭게 선택된 노드이다. 복제본 노드(440)는 복제본들(410) 중 장애 노드(420) 및 소스 노드(430)를 제외한 나머지 노드이다.
클라이언트(490)는 분산 저장 시스템(400)에게 데이터 접근을 요청하는 노드이다. 조정 노드(460)는 상기의 요청을 클라이언트(490)로부터 수신하여, 데이터 접근 요청을 복제하여 데이터를 복제하는 복제본들(410) 각각에게 전송하는 노드이다. 조정 노드(460)는 분산 저장 시스템(400)의 복수 개의 노드들 중 클라이언트(490)로부터 데이터 접근을 요청 받은 임의의 노드일 수 있다. 예를 들면, 복제본들(410) 중 하나의 노드 또한 조정 노드(460)가 될 수 있다.
데이터 접근 요청은 복제본 노드(440) 및 소스 노드(430)에게 전송되며, 장애 노드(420) 또는 타겟 노드(450)에게 전송될 수 있다. 예를 들면, 조정 노드(460)가 장애 노드(420)에서 장애가 발생한 것을 인식하지 못했을 때에는 데이터 접근 요청이 장애 노드(420)에게 전송되며, 조정 노드(460)가 타겟 노드(450)가 장애 노드(420)를 대체한다는 것을 인식하였을 때에는 데이터 접근 요청이 타겟 노드(450)에게 전송될 수 있다.
복제본 마이그레이션이 실행될 때에는, 소스 노드(430)의 전체 데이터(예를 들면, 소스 노드(430)의 지역 데이터베이스 내의 모든 테이블들)가 읽혀지고, 읽혀진 전체 데이터가 타겟 노드(450)로 삽입된다. 소스 노드(430)가 복제본 마이그레이션을 실행하는 동안에도, 분산 저장 시스템(400)은 클라이언트로부터의 데이터 접근 요청을 수신할 수 있다. 이러한 경우, 소스 노드(430)의 분산 저장 서비스를 중단하지 않으면, 추가적으로 유입되는 데이터를 타겟 노드(450)로 정확하게 복사하는 것이 어렵게될 수 있다.
분산 저장 서비스의 중단 없이 데이터를 복사하기 위해, 분산 저장 시스템(400)은 모든 데이터(예를 들면, 객체 또는 테이블의 행)에 대해 타임스탬프를 유지한다.
복제본 마이그레이션에 대한 구체적인 방법이 도 5를 참조하여 하기에서 상세히 설명된다.
앞서 도 1 내지 도 3을 참조하여 설명된 본 발명의 일 실시예에 따른 기술적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
도 5는 본 발명의 일 실시예에 따른 분산 저장 시스템의 데이터 복사 방법의 흐름도이다.
분산 저장 시스템(400)은 데이터 복사를 관리하는 관리 노드(500)를 더 포함할 수 있다.
단계(510)에서, 관리 노드(500)는 장애 노드(420)의 장애를 인식한다.
단계(512)에서, 관리 노드(500)는 분산 저장 시스템(400)의 복수 개의 노드들 중에서 복제본들(410)을 제외한 나머지 노드들 중 하나의 노드를 데이터를 복제할 타겟 노드(450)로서 선택할 수 있다. 관리 노드(500)는, 1) 장애 노드(420)에서 장애가 발생하였다는 것과, 2) 타겟 노드(450)가 장애 노드(420)를 대체하기 위해 선택되었다는 것을 분산 저장 시스템(400) 내의 전체 노드들(또는, 특정한 노드를 제외한 나머지 노드들)에게 알릴 수 있다.
단계(514)에서, 조정 노드(460)는 타겟 노드(450)에게 소스 노드(430)로부터 데이터의 복사(즉, 마이그레이션)를 명령한다.
단계(516)에서, 타겟 노드(450)는 소스 노드(430)에게 데이터의 복사를 등록한다.
단계(520)에서, 소스 노드(430)는 데이터의 복사의 종료 시각을 설정한다. 상기의 종료 시각은 분산 저장 시스템(400) 내의 복수 개의 노드들 전체(또는, 장애 노드(420)를 제외한 나머지 노드들)가, 타겟 노드(450)로의 데이터의 복사를 인지하여, 데이터 접근 요청을 타겟 노드(450)로도 보낼 수 있는 시각 또는 상기의 시각의 이후의 시각일 수 있다.
단계(530)에서, 소스 노드(430)는 데이터의 객체들을 객체들 각각의 타임스탬프들의 오름차순으로 정렬할 수 있다.
단계(540)에서, 소스 노드(430)의 데이터(즉, 데이터를 구성하는 객체들)가 타겟 노드(450)로 복사된다. 상기의 복사는 타겟 노드(450)가 소스 노드(430)의 데이터베이스로부터 읽혀진 데이터를 자신의 데이터베이스에 삽입하는 것을 의미할 수 있다.
단계(540)에서, 소스 노드(430)는 데이터의 객체들 중 타임스탬프가 종료 시각 또는 종료 시각의 이전 시각을 나타내는 객체에 대해서 복사를 수행한다. 소스 노드(430)는 최후에 복사한 객체의 타임스탬프를 기준으로, 상기의 타임스탬프가 나타내는 시각보다 더 늦은 시각을 나타내는 타임스탬프를 갖는 객체들에 대하여 복사를 진행할 수 있다.
단계(540)는 재수행될 수 있다. 데이터의 복사가 완료되면, 단계(516)에서 데이터의 복사가 등록된 시점 이후에 새로 추가된 데이터가 다시 소스 노드(430)로부터 타겟 노드(450)로 복사될 수 있다.
종료 시각 이후에 객체가 갱신될 경우, 상기의 갱신에 대한 데이터 접근 요청은 타겟 노드(450)로도 전송된다. 따라서, 타겟 노드(450) 자체에서 상기의 갱신을 수행하기 때문에, 소스 노드(430)로부터 객체가 다시 복사될 필요가 없다.
단계(550)는, 소스 노드(430)의 객체들 각각이 타겟 노드(450)로 복사되는 것을 나타낸다. 단계(550)를 반복적으로 실행함으로써, 소스 노드(430)는 객체들 각각의 타임스탬프들의 오름차순으로 객체들을 타겟 노드(450)로 복사할 수 있다.
단계(540)가 수행되는 동안, 단계들(560 내지 570)이 수행될 수 있다.
단계(560)에서, 조정 노드(460)는 제1 객체에 대한 갱신 요청을 수신한다.
단계(565)에서, 조정 노드(465)는 제1 객체에 대한 갱신 요청을 소스 노드(430) 및 타겟 노드(450) 각각에게 전송한다. 소스 노드(430)는 제1 객체의 값을 갱신하고, 제1 객체의 타임스탬프의 값을 최신의 시각으로 변경할 수 있다.
제1 객체에 대한 갱신 요청이 타겟 노드(450) 내에서 제1 객체가 생성되기 전에(즉, 소스 노드(430)가 제1 객체를 타겟 노드(450)로 복사하기 전에), 타겟 노드(450)로 전송된 경우, 타겟 노드(450)는 존재하지 않는 제1 객체를 갱신할 수 없다. 따라서, 갱신 요청은 실패하고, 단계(570)에서, 타겟 노드(450)는 갱신 요청의 실패를 나타내는 로그를 생성할 수 있다. 이후, 데이터를 복사하는 단계(540)에 의해, 제1 객체는 타겟 노드(450)로 복사된다. 제1 객체가 복사된 후, 단계(590)에서, 타겟 노드(450)는 로그에 기반하여 제1 객체를 갱신할 수 있다. 제1 객체가 갱신된 후, 단계(595)에서, 타겟 노드(450)는 로그를 삭제한다.
소스 노드(430)가 제1 객체를 타겟 노드(450)로 복사한 이후에 제1 객체에 대한 갱신 요청이 타겟 노드(450)로 전송되었고, 제1 객체가 변경된 시각이 종료 시각 이전이면, 단계(580)에서, 소스 노드(430)는 제1 객체를 타겟 노드(450)로 재복사할 수 있다. 이때, 상기의 재복사는 갱신 연산을 통해 수행될 수 있다. 즉, 복사의 대상인 제1 객체가 타겟 '노드(450) 내에 존재하지 않는 경우, 객체의 복사는 소스 노드(430)가 타겟 노드(450)로 제2 객체를 삽입하는 연산을 수행하는 것을 의미할 수 있다. 또한, 복사의 대상인 제1 객체가 타겟 노드(450) 내에 존재하는 경우, 객체의 복사는 소스 노드(430)가 타겟 노드(450)의 제1 객체를 갱신하는 연산을 수행하는 것을 의미할 수 있다. 예를 들면, 복사의 대상인 제1 객체가 타겟 노드(450) 내에 이미 존재하는 경우, 제1 객체의 복사를 수행하는 삽입 연산이 갱신 연산으로 변경될 수 있다.
통상적인 데이터 마이그레이션과 달리, 소스 노드(430)의 객체들은 데이터 복사 중 프리즌(freezen)되지 않는다. 따라서, 원본 데이터(즉, 소스 노드(430)의 내의 데이터)도 지속적으로 갱신될 수 있으며, 이미 타겟 노드(450)로 복사된 객체도 타임스탬프가 최신의 값으로 변경됨으로써 갱신 후 재복사될 수 있다. 또한, 1) 신규의 데이터 접근 요청을 타겟 노드(450)로도 전송하고, 2) 소스 노드(430)가 종료 시각 이전의 시각을 나타내는 타임스탬프를 갖는 객체들 만을 타겟 노드(450)로 복사함으로써, 신규로 갱신(또는, 삽입)되는 객체들이 많은 경우에 복사 시간이 계속하여 연장되는 문제를 방지할 수 있다.
단계(585)에서, 데이터 복사가 완료되는 타겟 노드(450)는 관리 노드(500)에게 데이터 복사의 완료를 통보할 수 있다. 관리 노드(500)는 타겟 노드(450)가 복제본들(410) 중 하나가 되었음을 분산 저장 시스템(400)의 전체 노드들에게 알릴 수 있다.
앞서 도 1 내지 도 4를 참조하여 설명된 본 발명의 일 실시예에 따른 기술적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
400: 분산 저장 시스템
410: 복제본들
420: 장애 노드
430: 소스 노드
440: 복제본 노드
450: 타겟 노드
460: 조정 노드
500: 관리 노드

Claims (20)

  1. 삭제
  2. 분산 저장 시스템에 있어서,
    복수 개의 노드들
    을 포함하고,
    상기 복수 개의 노드들 중 제1 노드는 제1 연산의 요청을 수신하고, 상기 제1 노드는 상기 제1 연산을 수행할 수 없는 장애가 발생한 경우 상기 제1 연산의 실패를 나타내는 로그를 생성하고, 상기 제1 노드는 상기 로그에 기반하여 상기 제1 연산을 반복하여 시도하며, 상기 제1 연산이 수행된 경우 상기 로그를 삭제하고,
    상기 장애는 상기 제1 연산에서 사용되는 객체가 상기 제1 노드 내에 존재하지 않는 경우를 포함하며, 상기 제1 노드는 상기 객체의 생성을 포함하는 제2 연산을 수행한 후 상기 제1 연산을 수행하는, 분산 저장 시스템.
  3. 제2항에 있어서,
    상기 제1 연산의 타임스탬프는 상기 제2 연산의 타임스탬프보다 더 늦은 시각을 나타내는, 분산 저장 시스템.
  4. 삭제
  5. 분산 저장 시스템에 있어서,
    복수 개의 노드들
    을 포함하고,
    장애 노드는 상기 복수 개의 노드들 중 장애가 발생한 노드이며, 소스 노드는 복제본들 중 하나이며, 상기 복제본들은 상기 복수 개의 노드들 중 상기 장애 노드와 동일한 데이터를 제공하는 하나 이상의 노드들이며, 타겟 노드는 상기 복수 개의 노드들 중 상기 장애 노드를 대체하여 상기 복제본들 중 하나로서 새롭게 선택된 노드이며,
    상기 소스 노드는 상기 장애 노드의 상기 장애를 인식하며, 상기 소스 노드는 데이터의 복사의 종료 시각을 설정하며, 상기 데이터의 객체들을 상기 타겟 노드로 복사하며, 상기 타겟 노드로 복사된 후 상기 종료 시각 이전에 갱신된 제1 객체를 상기 타겟 노드로 다시 복사하는, 분산 저장 시스템.
  6. 제5항에 있어서,
    상기 종료 시각은 상기 복수 개의 노드들 전체가 상기 타겟 노드로의 복사를 인식하여 상기 데이터에 대한 접근 요청을 상기 타겟 노드로도 보낼 수 있는 시각인, 분산 저장 시스템.
  7. 제5항에 있어서,
    상기 소스 노드는 상기 객체들 각각의 타임스탬프들의 오름차순으로 상기 객체들을 상기 타겟 노드로 복사하는, 분산 저장 시스템.
  8. 제7항에 있어서,
    상기 소스 노드는 상기 객체들 중 상기 타임스탬프가 상기 종료 시각 또는 상기 종료 시각의 이전 시각을 나타내는 객체에 대해 상기 복사를 수행하는, 분산 저장 시스템.
  9. 제5항에 있어서,
    상기 복수 개의 노드들 중 조정 노드는 상기 제1 객체에 대한 갱신 요청을 수신하고, 상기 조정 노드는 상기 소스 노드 및 상기 타겟 노드 각각에게 상기 제1 객체에 대한 갱신 요청을 전송하고, 상기 타겟 노드는 상기 제1 객체가 존재하지 않는 경우 상기 갱신 요청의 실패를 나타내는 로그를 생성하고, 상기 소스 노드로부터 상기 제1 객체가 복사된 후 상기 로그에 기반하여 상기 제1 객체를 갱신하는, 분산 저장 시스템.
  10. 제5항에 있어서,
    상기 소스 노드는 상기 타겟 노드에 제2 객체가 존재하지 않는 경우 상기 타겟 노드로 상기 제2 객체를 삽입하는 연산을 수행하고, 상기 타겟 노드에 상기 제2 객체가 존재하는 경우 상기 타겟 노드의 상기 제2 객체를 갱신하는 연산을 수행함으로써 상기 제2 객체를 상기 타겟 노드로 복사하는, 분산 저장 시스템.
  11. 복수 개의 노드들을 사용하는 분산 저장 시스템이 데이터를 관리하는 방법에 있어서,
    상기 복수 개의 노드들 중 제1 노드가 제1 연산의 요청을 수신하는 단계;
    상기 제1 노드에 상기 제1 연산을 수행할 수 없는 장애가 발생한 경우 상기 제1 노드가 상기 제1 연산의 실패를 나타내는 로그를 생성하는 단계;
    상기 제1 노드가 상기 로그에 기반하여 상기 제1 연산을 반복하여 시도하는 단계; 및
    상기 제1 노드가 상기 제1 연산을 수행한 경우 상기 제1 로그를 삭제하는 단계
    를 포함하고,
    상기 장애는 상기 제1 연산에서 사용되는 객체가 상기 제1 노드 내에 존재하지 않는 경우를 포함하며,
    상기 제1 연산을 반복하여 시도하는 단계는,
    상기 제1 노드가 상기 제1 객체의 생성을 포함하는 제2 연산을 수행하는 단계; 및
    상기 제2 연산이 수행된 후 상기 제1 연산을 수행하는 단계
    를 포함하는,
    데이터 관리 방법.
  12. 제11항에 있어서,
    상기 제1 연산의 타임스탬프는 상기 제2 연산의 타임스탬프보다 더 늦은 시각을 나타내는, 데이터 관리 방법.
  13. 삭제
  14. 복수 개의 노드들을 사용하는 분산 저장 시스템이 상기 노드들 간에 데이터를 복사하는 방법에 있어서,
    타겟 노드가 소스 노드에게 데이터의 복사를 요청하는 단계 - 상기 소스 노드는 복제본들 중 하나임, 상기 타겟 노드는 상기 복제본들 중 장애가 발생한 장애 노드를 대체하여 상기 복수 개의 노드들 중 상기 복제본들 중 하나로서 새롭게 선택된 노드임 -;
    상기 소스 노드가 상기 데이터의 복사의 종료 시각을 설정하는 단계;
    상기 소스 노드가 상기 데이터의 객체들을 타겟 노드로 복사하는 단계; 및
    상기 소스 노드가 상기 타겟 노드로 복사된 후 상기 종료 시각 이전에 갱신된 제1 객체를 상기 타겟 노드로 다시 복사하는 단계
    를 포함하는, 분산 저장 시스템의 데이터 복사 방법.
  15. 제14항에 있어서,
    상기 종료 시각은 상기 복수 개의 노드들 전체가 상기 타겟 노드로의 복사를 인식하여 상기 데이터에 대한 접근 요청을 상기 타겟 노드로도 보낼 수 있는 시각인, 분산 저장 시스템의 데이터 복사 방법.
  16. 제14항에 있어서,
    상기 복사하는 단계는,
    상기 소스 노드가 상기 객체들 각각의 타임스탬프들의 오름차순으로 상기 객체들을 상기 타겟 노드로 복사하는 단계
    를 포함하는, 분산 저장 시스템의 데이터 복사 방법.
  17. 제16항에 있어서,
    상기 소스 노드는 상기 객체들 중 상기 타임스탬프가 상기 종료 시각 또는 상기 종료 시각의 이전 시각을 나타내는 객체에 대해 상기 복사를 수행하는, 분산 저장 시스템의 데이터 복사 방법.
  18. 제14항에 있어서,
    상기 복수 개의 노드들 중 조정 노드가 상기 제1 객체에 대한 갱신 요청을 수신하는 단계;
    상기 조정 노드가 상기 소스 노드 및 상기 타겟 노드 각각에게 상기 제1 객체에 대한 갱신 요청을 전송하는 단계;
    상기 타겟 노드가 상기 제1 객체가 존재하지 않는 경우 상기 갱신 요청의 실패를 나타내는 로그를 생성하는 단계; 및
    상기 타겟 노드가 상기 소스 노드로부터 상기 제1 객체가 복사된 후 상기 로그에 기반하여 상기 제1 객체를 갱신하는 단계
    를 더 포함하는, 분산 저장 시스템의 데이터 복사 방법.
  19. 제14항에 있어서,
    상기 복사의 대상인 제2 객체가 상기 타겟 노드 내에 존재하지 않는 경우 상기 복사는 소스 노드가 상기 타겟 노드에 상기 제2 객체를 삽입하는 연산을 수행하는 것이고, 상기 제2 객체가 상기 타겟 노드 내에 존재하는 경우 상기 복사는 상기 소스 노드가 상기 타겟 노드의 상기 제2 객체를 갱신하는 연산을 수행하는 것인, 분산 저장 시스템의 데이터 복사 방법.
  20. 제11항, 제12항, 및 제14항 내지 제19항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
KR1020110107949A 2011-10-21 2011-10-21 로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법 KR101553712B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110107949A KR101553712B1 (ko) 2011-10-21 2011-10-21 로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110107949A KR101553712B1 (ko) 2011-10-21 2011-10-21 로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20130043823A KR20130043823A (ko) 2013-05-02
KR101553712B1 true KR101553712B1 (ko) 2015-09-17

Family

ID=48656481

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110107949A KR101553712B1 (ko) 2011-10-21 2011-10-21 로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101553712B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106682141B (zh) * 2016-12-20 2022-02-11 华北计算技术研究所(中国电子科技集团公司第十五研究所) 一种基于业务操作日志的数据同步方法
CN110888844B (zh) * 2019-11-22 2023-03-21 浪潮电子信息产业股份有限公司 一种数据删除方法、系统、设备及计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129763A (ja) * 2006-11-20 2008-06-05 Fujitsu Ltd ストレージ装置およびログ管理プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129763A (ja) * 2006-11-20 2008-06-05 Fujitsu Ltd ストレージ装置およびログ管理プログラム

Also Published As

Publication number Publication date
KR20130043823A (ko) 2013-05-02

Similar Documents

Publication Publication Date Title
CN103548010B (zh) 分布式存储环境中的同步复制
CN109918229B (zh) 非日志模式的数据库集群副本构建方法及装置
KR101928596B1 (ko) 분산 저장 환경에서의 비동기 복제 기법
CN103761162A (zh) 分布式文件系统的数据备份方法
EP3391244B1 (en) Replication control among redundant data centers
US10248709B2 (en) Promoted properties in relational structured data
US20150347250A1 (en) Database management system for providing partial re-synchronization and partial re-synchronization method of using the same
CN105574187B (zh) 一种异构数据库复制事务一致性保障方法及系统
KR100946986B1 (ko) 파일 저장 시스템 및 파일 저장 시스템에서의 중복 파일관리 방법
US11226985B2 (en) Replication of structured data records among partitioned data storage spaces
US10235406B2 (en) Reminder processing of structured data records among partitioned data storage spaces
CN105550306A (zh) 多副本数据的读写方法及系统
US20200104404A1 (en) Seamless migration of distributed systems
CN106605217B (zh) 用于将应用从一个站点移动到另一站点的方法和系统
US20140156596A1 (en) Replication control using eventually consistent meta-data
CN110402429B (zh) 复制用于管理基于云的资源的存储表以抵挡存储账户中断
CN116917880A (zh) 分布式数据库远程备份
CN103902405A (zh) 一种准连续性数据复制方法及装置
CN113377763B (zh) 数据库表格切换方法、装置、电子设备及计算机存储介质
KR101553712B1 (ko) 로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법
CN112015591A (zh) 一种日志管理方法、服务器和数据库系统
KR20090061517A (ko) 파일 갱신 시스템 및 방법
US8977897B2 (en) Computer-readable recording medium, data management method, and storage device
CN111522688B (zh) 分布式系统的数据备份方法及装置
JP2015165357A (ja) データ管理システム

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190701

Year of fee payment: 5