KR20180046078A - 데이터베이스 리밸런싱 방법 - Google Patents

데이터베이스 리밸런싱 방법 Download PDF

Info

Publication number
KR20180046078A
KR20180046078A KR1020160140885A KR20160140885A KR20180046078A KR 20180046078 A KR20180046078 A KR 20180046078A KR 1020160140885 A KR1020160140885 A KR 1020160140885A KR 20160140885 A KR20160140885 A KR 20160140885A KR 20180046078 A KR20180046078 A KR 20180046078A
Authority
KR
South Korea
Prior art keywords
node
rebalancing
nodes
partial
storage system
Prior art date
Application number
KR1020160140885A
Other languages
English (en)
Inventor
이주영
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020160140885A priority Critical patent/KR20180046078A/ko
Priority to CN201711000074.5A priority patent/CN108009196A/zh
Priority to US15/794,997 priority patent/US10664458B2/en
Publication of KR20180046078A publication Critical patent/KR20180046078A/ko

Links

Images

Classifications

    • G06F17/30082
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/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
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • G06F17/30079
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

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

Abstract

데이터베이스 리밸런싱 방법이 제공 된다. 본 발명의 일 실시예에 따른 데이터베이스 리밸런싱(rebalancing) 방법은, 상기 스토리지 시스템에 포함된 DB 노드들 중 일부의 DB 노드들로 구성된 제1 노드 세트를 구성하는 단계, 상기 제1 노드 세트의 DB 노드들 사이의 제1 부분리밸런싱을 수행하는 단계, 상기 제1 부분리밸런싱의 수행 중에, 상기 스토리지 시스템에 포함된 DB 노드들 중 상기 제1 노드 세트에 포함된 DB 노드를 제외한 나머지 DB 노드는 정상 동작을 수행하는 제1 부분리밸런싱 커버 단계, 상기 스토리지 시스템에 포함된 DB 노드들 중 일부의 DB 노드들로 구성된 제2 노드 세트를 구성하는 단계, 상기 제2 노드 세트의 DB 노드들 사이의 제2 부분리밸런싱을 수행하되, 상기 제2 부분리밸런싱은 상기 제1 부분리밸런싱의 종료 이후에 수행 되는 것인 단계, 상기 제2 부분리밸런싱의 수행 중에, 상기 스토리지 시스템에 포함된 DB 노드들 중 상기 제2 노드 세트에 포함된 노드를 제외한 나머지 DB 노드는 정상 동작을 수행하는 제2 부분리밸런싱 커버 단계를 포함한다.

Description

데이터베이스 리밸런싱 방법{Database rebalancing method}
본 발명은 데이터베이스 리밸런싱 방법에 관한 것이다. 보다 자세하게는, 복수의 DB 노드로 구성 된 스토리지 시스템에서, 데이터의 저장 용량 또는 데이터에 대한 억세스가 특정 DB 노드에 편중 되는 경우, 이를 교정함으로써 전체 스토리지 시스템의 성능을 향상시키기 위한 방법에 관한 것이다.
데이터베이스 리밸런싱(database rebalancing)은 복수의 DB 노드로 구성 된 스토리지 시스템에서, 데이터의 저장 또는 데이터에 대한 억세스가 각 DB 노드에 골고루 나뉠 수 있도록 데이터를 이동하거나 복제하는 일련의 프로세스를 가리킨다. NoSQL 방식의 데이터베이스는 스케일 아웃(scale out) 방식을 통하여 확장 되는 경우가 많은데, 스케일 아웃을 위하여 신규 DB 노드가 추가 되는 경우, 데이터베이스 리밸런싱이 수행 된다.
그런데, 데이터베이스 리밸런싱이 수행되는 동안에는 스토리지 시스템 내의 데이터 복사/이동을 위한 트래픽이 폭발적으로 발생하기 때문에 일시적으로 스토리지 시스템의 성능이 저하되고, 이는 상기 스토리지 시스템을 통하여 운영되는 데이터베이스 자체 및 상기 데이터베이스를 이용하여 운영되는 어플리케이션 서비스의 품질에 일시적이나마 영향을 미치게 된다.
미국등록특허 제8,307,014호
본 발명이 해결하고자 하는 기술적 과제는, 전체 데이터베이스 시스템의 성능 저하를 최소화 할 수 있는 데이터베이스 리밸런싱 방법, 그 방법이 구현 된 DB 노드 및 그 DB 노드들로 구성된 스토리지 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 전체 데이터베이스 시스템에 저장 된 데이터의 사이즈에 따라 서로 다른 방식으로 데이터 리밸런싱을 수행하는 데이터베이스 리밸런싱 방법, 그 방법이 구현 된 DB 노드 및 그 DB 노드들로 구성된 스토리지 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 데이터베이스 리밸런싱을 관리하는 별도의 장치 없이, 각각의 DB 노드 만 연결된 환경에서도 데이터베이스 리밸런싱이 수행되는 DB 노드 및 그 DB 노드들로 구성된 스토리지 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 데이터베이스 리밸런싱 방법은, 상기 스토리지 시스템에 포함된 DB 노드들 중 일부의 DB 노드들로 구성된 제1 노드 세트를 구성하는 단계와, 상기 제1 노드 세트의 DB 노드들 사이의 제1 부분리밸런싱을 수행하는 단계와, 상기 제1 부분리밸런싱의 수행 중에, 상기 스토리지 시스템에 포함된 DB 노드들 중 상기 제1 노드 세트에 포함된 DB 노드를 제외한 나머지 DB 노드는 정상동작을 수행하는 제1 부분리밸런싱 커버 단계와, 상기 스토리지 시스템에 포함된 DB 노드들 중 일부의 DB 노드들로 구성된 제2 노드 세트를 구성하는 단계와, 상기 제2 노드 세트의 DB 노드들 사이의 제2 부분리밸런싱을 수행하되, 상기 제2 부분리밸런싱은 상기 제1 부분리밸런싱의 종료 이후에 수행 되는 것인 단계와, 상기 제2 부분리밸런싱의 수행 중에, 상기 스토리지 시스템에 포함된 DB 노드들 중 상기 제2 노드 세트에 포함된 노드를 제외한 나머지 DB 노드는 정상 동작을 수행하는 제2 부분리밸런싱 커버 단계를 포함한다. 상기 데이터베이스 리밸런싱 방법은 셋 이상의 DB 노드를 포함하는 스토리지 시스템에서 수행되는 것이고, 상기 제1 노드 세트와 상기 제2 노드 세트는 적어도 하나의 DB 노드가 서로 다른 것이다.
일 실시예에서, 상기 제1 부분리밸런싱의 수행 중에, 상기 스토리지 시스템에 포함된 DB 노드들 중 상기 제1 노드 세트에 포함된 노드를 제외한 나머지 노드는 정상 동작을 수행하는 단계는, 상기 제1 부분리밸런싱의 수행 중에, 상기 제1 노드 세트에 포함된 DB 노드 중 타겟 데이터를 저장하는 DB 노드가 상기 타겟 데이터와 관련된 서비스 요청을 수신하고, 상기 서비스 요청을, 상기 제1 노드 세트에 포함된 DB 노드를 제외한 나머지 DB 노드들 중, 상기 타겟 데이터의 복제 데이터를 가진 DB 노드로 전달하는 서비스 요청 전달 단계를 포함한다. 이 때, 상기 스토리지 시스템은 2 이상의 복제 계수(replication factor)를 유지하기 위하여 다른 DB 노드에 복제 데이터를 유지하는 것이다. 이 때, 상기 서비스 요청 전달 단계는, 상기 타겟 데이터의 복제 데이터를 가진 DB 노드가, 상기 서비스 요청을 처리하고, 그 결과를 상기 서비스 요청을 수신한 DB 노드에 전달하는 단계와, 상기 서비스 요청을 수신한 DB 노드가, 상기 전달 받은 서비스 요청 처리 결과를 상기 서비스 요청에 대한 응답으로서 송신하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제1 노드 세트를 구성하는 단계는, 제1 DB 노드를 포함하는 상기 제1 노드 세트를 구성하는 단계를 포함하고, 상기 제2 노드 세트를 구성하는 단계는, 상기 제1 DB 노드를 포함하지 않고, 제2 DB 노드를 포함하는 상기 제2 노드 세트를 구성하는 단계를 포함하며, 상기 제1 DB 노드는 상기 제2 DB 노드보다 더 높은 리밸런싱 우선 순위를 가지는 것이고, 상기 리밸런싱 우선 순위는, 읽기/쓰기 요청 트래픽이 많을 수록 높아지고, 슬로우 오퍼레이션의 개수가 많을 수록 높아지며, 플러쉬 큐의 길이가 길 수록 높아지도록 설정되는 것이다.
일 실시예에서, 상기 제1 부분리밸런싱을 수행하는 단계는, 상기 제1 노드 세트의 DB 노드 각각의 파티션들 중 부하 집중도에 기반하여 선정된 핫 파티션을 우선적으로 리밸런싱을 수행하는 단계를 포함하고, 상기 제2 부분리밸런싱을 수행하는 단계는, 상기 제2 노드 세트의 DB 노드 각각의 파티션들 중 부하 집중도에 기반하여 선정된 핫 파티션을 우선적으로 리밸런싱을 수행하는 단계를 포함한다.
일 실시예에서, 상기 제1 노드 세트에 포함되는 DB 노드의 개수와 상기 제2 노드 세트에 포함되는 DB 노드들의 개수는, 상기 스토리지 시스템에 포함된 DB 노드의 개수가 많아질수록 더 많아진다. 다른 실시예에서, 상기 제1 노드 세트에 포함되는 DB 노드의 개수와 상기 제2 노드 세트에 포함되는 DB 노드들의 개수는, 상기 복제 계수(replication factor)가 커질수록 더 많아진다.
일 실시예에서, 상기 제1 노드 세트에 포함되는 DB 노드들의 개수 및 상기 제2 노드 세트에 포함되는 DB 노드들의 개수는 모두 2개이다.
일 실시예에서, 상기 제1 노드 세트를 구성하는 단계, 상기 제1 부분리밸런싱을 수행하는 단계, 상기 제1 부분리밸런싱 커버 단계, 상기 제2 노드 세트를 구성하는 단계, 상기 제2 부분리밸런싱을 수행하는 단계 및 상기 제2 부분리밸런싱 커버 단계는 상기 스토리지 시스템의 데이터 사이즈가 상기 기준치 이상인 경우에 한하여 수행되는 단계이다. 또한, 일 실시예에서, 상기 제1 노드 세트를 구성하는 단계, 상기 제1 부분리밸런싱을 수행하는 단계, 상기 제1 부분리밸런싱 커버 단계, 상기 제2 노드 세트를 구성하는 단계, 상기 제2 부분리밸런싱을 수행하는 단계 및 상기 제2 부분리밸런싱 커버 단계는 상기 스토리지 시스템의 데이터 사이즈가 상기 기준치 이상이고, 상기 스토리지 시스템의 복제 계수가 2 이상으로 세팅 된 경우에 한하여 수행되는 단계이다.
일 실시예에서, 상기 데이터베이스 리밸런싱 방법은 스케일 아웃(scale out)에 따른 신규 DB 노드가 상기 스토리지 시스템에 연결되는 단계를 더 포함하고, 상기 제1 노드 세트는 상기 스토리지 시스템의 기존 DB 노드들 중, 리밸런싱 우선 순위가 가장 높은 DB 노드와 상기 신규 DB 노드로 구성 되고, 상기 제2 노드 세트는 상기 스토리지 시스템의 기존 DB 노드들 중, 리밸런싱 우선 순위가 두번째로 높은 DB 노드와 상기 신규 DB 노드로 구성 된다.
일 실시예에서, 상기 스토리지 시스템에 포함되는 DB 노드에 변동이 없는 경우, 상기 제1 노드 세트는 상기 스토리지 시스템의 기존 DB 노드들 중, 리밸런싱 우선 순위가 가장 높은 DB 노드 및 상기 우선 순위가 가장 높은 DB 노드로부터 데이터를 이동 받는 DB 노드로 구성 되고, 상기 제2 노드 세트는 상기 스토리지 시스템의 기존 DB 노드들 중, 리밸런싱 우선 순위가 두번째로 높은 DB 노드 및 상기 우선 순위가 두번째로 높은 DB 노드로부터 데이터를 이동 받는 DB 노드로 구성 될 수 있다.
본 발명의 다른 실시예에 따른, 제1 DB 노드, 제2 DB 노드 및 제3 DB 노드를 포함하는 스토리지 시스템에서 수행되는 데이터베이스 리밸런싱 방법은, 상기 제1 DB 노드와 상기 제2 DB 노드 사이의 리밸런싱을 수행하는 단계와, 상기 제1 DB 노드와 상기 제2 DB 노드 사이의 리밸런싱이 수행되는 동안, 상기 제3 DB 노드는 데이터 읽기/쓰기 서비스를 정상적으로 제공하는 단계와, 상기 제1 DB 노드와 상기 제2 DB 노드 사이의 리밸런싱이 종료된 후, 상기 제1 DB 노드와 상기 제3 DB 노드 사이의 리밸런싱을 수행하는 단계와, 상기 제1 DB 노드와 상기 제3 DB 노드 사이의 리밸런싱이 수행되는 동안, 상기 제2 DB 노드는 데이터 읽기/쓰기 서비스를 정상적으로 제공하는 단계를 포함한다.
본 발명의 또 다른 실시예에 따른, 2 이상의 복제 계수를 유지하는 스토리지 시스템은, 저장부 및 리소스 매니저를 포함하는 마스터 DB 노드와, 저장부 및 리소스 매니저를 포함하는 복수의 슬레이브 DB 노드를 포함한다. 이 때, 상기 복수의 슬레이브 DB 노드 각각의 리소스 매니저는 데이터 저장 상태에 대한 정보를 상기 마스터 DB 노드의 리소스 매니저에 공유하고, 상기 마스터 DB 노드의 리소스 매니저는, 상기 공유 된 데이터 저장 상태에 대한 정보를 바탕으로 데이터 리밸런싱의 수행 여부를 판단하고, 데이터 리밸런싱의 수행 시, 2개의 DB 노드 간의 데이터 리밸런싱이 순차적으로 수행되도록 리밸런싱 스케줄링을 수행하고, 상기 리밸런싱 스케줄링에 따른 제어 신호를 상기 복수의 슬레이브 DB 노드에 송신하며, 데이터 리밸런싱을 수행하고 있는 DB 노드에 대한 서비스 요청은 상기 서비스 요청과 관련된 데이터의 복제 데이터를 저장하고 있는, 데이터 리밸런싱을 수행 중이지 않은 DB 노드에 전달한다.
본 또 다른 실시예에 따른 데이터베이스 리밸런싱 방법은, 핫 파티션을 선정하는 단계, 각 노드에 대하여 상기 핫 파티션의 개수가 분산되도록 하는, 순차적인 데이터 이동 및 데이터 복제로 구성된 리밸런싱 스케줄링을 구성하는 단계를 포함할 수 있다.
도 1은 데이터베이스 기반의 서비스 시스템의 구성도이다.
도 2는 본 발명의 일 실시예에 따른 스토리지 시스템의 제1 구성도이다.
도 3은 본 발명의 일 실시예에 따른 스토리지 시스템의 제2 구성도이다.
도 4A 내지 도 4D는 도 3에 도시 된 스토리지 시스템에 신규 DB 노드가 추가 되는 경우에 수행되는 데이터베이스 리밸런싱 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 스토리지 시스템이 DB 노드의 구성 변경이 없는 상태에서 데이터베이스 리밸런싱을 수행하는 동작을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 스토리지 시스템이 DB 노드 중 하나가 fail 상태가 된 경우, 이를 보완하기 위한 데이터베이스 리밸런싱을 수행하는 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 DB 노드의 블록 구성도이다.
도 8은 본 발명의 일 실시예에 따른 데이터베이스 리밸런싱 방법의 순서도이다.
도 9는 본 발명의 일 실시예에 따른, 복수 DB 노드로 구성 된 데이터베이스 시스템에서, 데이터베이스 리밸런싱 도중에 접수된 서비스 요청을 DB 노드에 연결하는 방법의 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
이하, 도면을 참조하여 본 발명의 몇몇 실시예들을 설명한다.
도 1을 참조하여, 본 발명의 몇몇 실시예들의 실시 환경이 되는 데이터베이스 기반의 서비스 시스템을 설명한다. 상기 데이터베이스 기반의 서비스 시스템은 서버-클라이언트 아키텍처로 동작할 수 있다.
어플리케이션 서버(100)는 스토리지 시스템(200)에 연결된다. 스토리지 시스템(200)은 복수의 DB(Database) 노드(220, 222, 224)를 포함한다. 이러한 구조는 스케일 아웃(scale out)이 용이한 구조이다. 즉, 데이터를 추가 저장하기 위하여 DB 노드를 추가 연결하면 되고, 저장되어야 하는 데이터 사이즈가 줄어들면 불필요한 자원 소비를 방지하기 위하여 연결 된 DB 노드 중 일부를 제거하면 된다. 도 1에 도시된 바와 같이, 각각의 DB 노드는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD) 등 다양한 방식의 스토리지 장치를 이용하여 구성 될 수 있다. 스토리지 시스템(200)은, 예를 들어 NoSQL 방식의 데이터베이스를 구성할 수 있다.
이하, 본 명세서에서 DB 노드는 스토리지 장치, 프로세서 또는 스토리지 컨트롤러 등 연산 수단 및 네트워크 인터페이스를 포함하는 컴퓨팅 장치를 가리킨다.
스토리지 시스템(200)은 DB 노드들(220, 222, 224)뿐만 아니라, 스토리지 서버(210)를 더 포함할 수 있다. 스토리지 서버(210)는 데이터베이스 서버(100)로부터 접수된 데이터 읽기/쓰기 요청을 DB 노드들(220, 222, 224)에 전달한다. 다만, 스토리지 시스템(200)은 별도의 스토리지 서버(210) 없이 DB 노드들(220, 222, 224) 만으로 구성될 수도 있음을 유의한다. 이 경우, 각각의 DB 노드들(220, 222, 224)에는 어댑터 모듈(adaptor module)이 구비되어 데이터베이스 서버(100)와 데이터 읽기/쓰기 요청 및 그에 대한 처리 결과 데이터를 송수신 할 수 있다.
클라이언트(402, 404, 406)는 데이터베이스 서버(100)로부터 데이터베이스 관련 기능을 제공 받아, 특정 서비스를 제공하는 어플리케이션 서버(100)에 접속할 수 있다. 어플리케이션 서버(100)는 예를 들어 웹 서버 또는 서비스 서버일 수 있다. 클라이언트(402, 404, 406)는 어플리케이션 서버(100)를 거치지 않고 데이터베이스 서버(100)에 직접 접속할 수도 있다. 이 경우, 클라이언트(402, 404, 406)에 설치 된 데이터베이스 클라이언트가 데이터베이스 서버(100)에 쿼리(query)를 송신한다.
도 1에 도시된 바와 같이, 데이터베이스 기반의 서비스 시스템의 클라이언트(402, 404, 406)는 스마트 폰, 태블릿 등 모바일 단말, 데스크톱 컴퓨터, 노트북 등의 퍼스널 컴퓨터일 수 있다.
이하, 본 발명의 일 실시예에 따른 스토리지 시스템의 구성 및 동작을 설명한다. 아래에서 자세히 설명하겠으나, 본 발명의 몇몇 실시예들에 따른 데이터베이스 리밸런싱은, DB 노드를 바꾸어 가며 부분리밸런싱을 순차적으로 진행하는 것에 의하여 수행 된다. 이 때, 부분리밸런싱은 적어도 2개의 DB 노드가 참여해야 한다. 이하, 상기 부분리밸런싱에 참여하는 노드로 구성된 '노드 세트'라는 용어가 본 발명의 실시예들을 설명하기 위하여 사용될 수 있다. 2개의 DB 노드로 구성된 노드 세트가 리밸런싱을 진행하고 있는 도중에도 하나의 DB 노드는 정상 동작을 수행해야 하므로, 본 실시예에 따른 스토리지 시스템은 3개 이상의 DB 노드를 포함하는 것이 바람직하다.
노드 세트가 부분리밸런싱을 수행하는 도중, 상기 노드 세트에 포함되지 않은 다른 DB 노드가 정상 동작을 수행한다는 것은, 예를 들어, 허용 범위 내의 응답 속도를 가지고 데이터 읽기/쓰기 서비스를 제공한다는 것을 의미할 수 있다. 예를 들어, 부분리밸런싱의 수행에 참여 중인 노드 세트에 포함된 DB 노드에 저장된 데이터의 복제본을 저장하고 있는, 상기 노드 세트에 포함되지 않은 DB 노드는, 상기 복제본에 대한 데이터의 읽기 요청을 상기 노드 세트의 DB 노드로부터 전달 받아 대신 처리할 수 있다.
도 2에는 예시적으로 3개의 DB 노드(226, 228, 230)로 구성된 스토리지 시스템(200a)이 도시 되어 있다. 스토리지 시스템(200a)에는 DB 노드를 관리하기 위한 별도의 장치가 존재하지 않고, 복수의 DB 노드들(226, 228, 230)이 직접 데이터베이스 서버(100)에 연결 된다. 데이터베이스 서버(100)가 스토리지 시스템(200a)의 데이터베이스 리밸런싱 동작을 제어하지는 않는다. 즉, 각 DB 노드가 다른 DB 노드와 연동하여 스스로 데이터베이스 리밸런싱 동작을 수행한다.
각각의 DB 노드가 스스로 데이터베이스 리밸런싱 동작을 수행하기 위하여, 각 DB 노드(226, 228, 230)에는 리소스 매니저(227, 229, 231)가 구비된다. 각 리소스 매니저(227, 229, 231)는 각 DB 노드의 메모리(미도시)에 로드되고, 각 DB 노드의 CPU(미도시)에서 수행되는 일련의 오퍼레이션들이다. 일 실시예에서, 리소스 매니저(227, 229, 231)는 각 DB 노드에 구비된 전용 프로세싱 칩에서 수행되는 임베디드 프로그램일 수도 있다. 상기 전용 프로세싱 칩은 각 DB 노드의 CPU와는 별개의 칩이다.
리소스 매니저(227, 229, 231)는 데이터베이스 리밸런싱의 수행을 관리하는 모듈, DB 노드의 상태 정보를 집계하고 다른 DB 노드에 공유하는 모듈 및 각 DB 노드에 저장 된 데이터의 데이터 맵을 공유하는 모듈을 포함한다. 리소스 매니저가 각 DB 노드의 상태 정보를 집계하고 다른 DB 노드에 이를 공유함으로써, 스토리지 시스템(200a) 내의 모든 DB 노드(226, 228, 230)가 데이터베이스 리밸런싱이 필요한 상황인지에 대하여 동일한 판단을 내릴 수 있게 되고, 동일한 리밸런싱 수행 계획을 마련하게 된다.
리소스 매니저(227, 229, 231) 각각은 i) 데이터베이스 리밸런싱이 필요한 시점인지, ii) 데이터베이스 리밸런싱은 어떻게 스케줄링 할지, iii) 각 노드에 대한 부분리밸런싱을 수행 할 때, 어떤 파티션을 우선하여 데이터베이스 리밸런싱을 진행할 지를 판단한다. 일 실시예에서, 각 리소스 매니저는 자신의 판단 결과를 서로 공유하여 서로 다른 판단을 내리지 않도록 동기화 과정을 거칠 수 있다.
스토리지 시스템(200a)은 데이터베이스 리밸런싱을 수행함에 있어서, 스토리지 시스템(200a)에 포함된 전체 DB 노드를 동시에 리밸런싱 하지 않는다. 이러한 방식은 리밸런싱 수행 중에 스토리지 시스템(200a) 내부에 과도한 트래픽을 발생시키고, 모든 DB 노드를 busy 상태로 만들기 때문에, 리밸런싱 수행 중의 스토리지 시스템(200a)이 데이터베이스 서버(100)로부터의 데이터 읽기/쓰기 요청을 신속하게 처리할 수 없도록 한다.
스토리지 시스템(200a)은, 필요한 개수의 DB 노드 만 참여 시킨 부분리밸런싱(전체의 데이터베이스 리밸런싱과 구분하기 위하여 부분리밸런싱으로 기재함)을 참여 DB 노드를 바꾸어 가며 순차적으로 진행한다. 예를 들어, DB 노드#1(226)과 DB 노드#2(228) 사이의 제1 부분리밸런싱이 수행 되고, DB 노드#1(226)과 DB 노드#3(230) 사이의 제2 부분리밸런싱이 수행 된 후, DB 노드#2(228)과 DB 노드#3(230) 사이의 제3 부분리밸런싱이 수행 되는 것에 의하여 전체 데이터베이스 리밸런싱이 완성 될 수 있다. 전체 데이터베이스 리밸런싱이 진행 중인 동안에 일부 DB 노드는 부분리밸런싱에 참여하지 않은 상태로 존재하므로, 본 실시예에 따른 스토리지 시스템은 데이터베이스 리밸런싱 도중에 성능의 저하를 최소화 할 수 있는 효과가 있다.
스토리지 시스템(200a)은 2 이상의 복제 계수(replication factor)를 유지 하는 시스템이다. 상기 복제 계수는 데이터가 몇 개의 노드에 복제 되어 저장 되는지를 가리키는 숫자이다. 즉, 복제 계수가 2인 스토리지 시스템은 데이터가 2개의 DB 노드에 분산 되어 저장 된다.
스토리지 시스템(200a)은 상기 복제 계수를 이용하여 데이터베이스 리밸런싱 도중의 성능 저하를 최소화 할 수 있다. 스토리지 시스템(200a)은 부분리밸런싱을 수행하는 노드 세트를 구성함에 있어서, 복제 데이터를 저장하는 DB 노드가 포함되지 않도록 하는 것이 바람직하다. 그 결과, 스토리지 시스템(200a)은 부분리밸런싱을 수행하고 있는 DB 노드에 대한 읽기/쓰기 요청이 있더라도, 상기 요청에 대한 데이터의 복제본을 저장하는 다른 DB 노드에 의하여 상기 요청을 즉시 처리할 수 있다. DB 노드#2(228)에서 DB 노드#3(230)으로의 부분리밸런싱이 수행 되고 있는 도중 DB 노드#2(228)의 데이터에 대한 읽기 요청이 데이터베이스 서버(100)로부터 수신 되는 경우를 가정해본다. 상기 데이터가 DB 노드#1(226)에도 복제본이 저장 되어 있다면, DB 노드#2(228)의 리소스 매니저(229)가 상기 읽기 요청을 DB 노드#1(226)의 리소스 매니저(227)에 전달할 수 있을 것이다.
몇 개의 DB 노드가 동시에 상기 부분리밸런싱을 수행하는 것이 좋을 지에 대한 연구 결과를 반영한 실시예들을 설명한다. 부분리밸런싱에 동시 참여하는 DB 노드의 개수가 많아질수록 전체의 데이터베이스 리밸런싱 과정은 빨리 종료 될 수 있는 반면, 데이터베이스 리밸런싱 도중의 성능 저하가 심해질 것이다. 반대의 경우, 즉 부분리밸런싱을 수행하는 DB 노드의 개수가 적어질수록 전체의 데이터베이스 리밸런싱 과정에 소요 되는 시간이 오래 걸릴 것이나, 데이터베이스 리밸런싱 도중의 성능 저하는 최소화 될 것이다. 이미 언급한 바와 같이, 부분리밸런싱을 수행하는 DB 노드의 개수는 최소 2개이다.
일 실시예에서, 데이터베이스 리밸런싱 도중의 성능 저하를 최소화하기 위하여 부분리밸런싱을 수행하는 DB 노드의 개수를 2개로 고정할 수 있다. 부분리밸런싱은 소스 측 DB 노드에서 타겟 측 DB 노드로 데이터를 이동하거나 복제하는 동작으로 구성 된다. 이미 설명한 바와 같이, 상기 타겟 측 DB 노드는, 소스 측 DB 노드에 저장 된 데이터의 복제 데이터가 저장 된 DB 노드를 제외한 것 중 어느 하나의 DB 노드를 선정하면 된다. 이 때, 스토리지 시스템(200a)에 포함된 DB 노드의 개수가 많을수록 타겟 측 DB 노드가 될 수 있는 DB 노드의 개수도 늘어나기 때문에, 적절한 타겟 측 DB 노드를 선정하기 위한 난이도가 낮아지게 된다. 이 점을 감안하여, 다른 실시예에서, 부분리밸런싱을 수행하는 DB 노드의 개수를, 스토리지 시스템(200a)에 포함된 DB 노드의 개수를 이용하여 결정할 수 있다. 즉, 스토리지 시스템(200a)에 포함된 DB 노드의 개수가 증가할수록 부분리밸런싱을 수행하는 DB 노드의 개수도 증가시킬 수 있다. 이 경우, 항상 부분리밸런싱을 수행하는 DB 노드의 개수를 2개로 고정하는 실시예에 비하여 전체 데이터베이스 리밸런싱의 소요 시간을 줄일 수 있는 효과가 있다.
도 3은 본 발명의 일 실시예에 따른 스토리지 시스템의 제2 구성도이다. 도 3에는 4개의 DB 노드로 구성 된 스토리지 시스템(200b)이 도시 되어 있다. 도 2와는 달리 도 3에 도시된 DB 노드는 한 개의 마스터 DB 노드(232)와 3개의 슬레이브 DB 노드(234, 236, 238)로 구분된다.
슬레이브 DB 노드(234, 236, 238)의 리소스 매니저(235, 237, 239)는 마스터 DB 노드(232)의 리소스 매니저(233)에 각 슬레이브 DB 노드(234, 236, 239)의 상태 정보를 공유한다. 즉, 스토리지 시스템(200b)에 포함된 모든 슬레이브 DB 노드의 상태 정보는 마스터 DB 노드(232)의 리소스 매니저(233)에 공유 된다.
마스터 DB 노드(232)의 리소스 매니저(233)는 i) 데이터베이스 리밸런싱이 필요한 시점인지, ii) 데이터베이스 리밸런싱의 전체 스케줄은 어떻게 구성 할지, iii) 각 노드의 어떤 파티션을 위주로 하여 데이터베이스 리밸런싱을 진행할 지를 판단한다. 마스터 DB 노드(232)의 리소스 매니저(233)는 데이터베이스 리밸런싱을 제어하기 위한 커맨드(command)를 각 슬레이브 DB 노드(234, 236, 238)의 리소스 매니저(235, 237, 239)에 송신한다.
또한, 마스터 DB 노드(232)는 데이터베이스 서버(100)로부터 수신 된 데이터 읽기/쓰기 요청을 각 슬레이브 DB 노드(234, 236, 238)에 전달한다.
마스터 DB 노드(232)는 슬레이브 DB 노드(234, 236, 238)에 대한 컨트롤러의 역할을 일부 수행하기는 하나, 마스터 DB 노드(232) 역시 데이터를 저장하는 DB 노드인 점에 유의한다.
지금까지 도 2 내지 도 3을 참조하여, 본 발명의 몇몇 실시예들에서 스토리지 시스템(200a)에 포함된 전체 DB 노드를 동시에 리밸런싱 하지 않고, 부분리밸런싱을 DB 노드를 바꾸어 가며 순차적으로 진행하는 점을 설명한 바 있다. 스토리지 시스템이 2 이상의 복제 계수를 유지하는 시스템이기 때문에, 부분리밸런싱을 수행하고 있는 DB 노드에 대한 데이터 억세스 요청은, 상기 부분리밸런싱을 수행하지 않고 있으면서 상기 데이터 억세스 요청에 따른 데이터의 복제본을 저장하고 있는 다른 DB 노드가 즉시 처리할 수 있는 점도 설명한 바 있다. 또한, 이러한 점으로 인하여, 본 발명의 몇몇 실시예들은 데이터베이스 리밸런싱에 의한 데이터베이스 성능 저하를 감소시킬 수 있는 점도 설명한 바 있다. 이하, 도 4A 내지 도 4D를 참조하여, 데이터베이스 리밸런싱에 의한 데이터베이스 성능 저하를 더욱 감소시키는 몇몇 실시예들을 설명한다.
도 4A 내지 도 4D는 도 3에 도시 된 스토리지 시스템에 신규 DB 노드가 추가 되는 경우에 수행되는 데이터베이스 리밸런싱 동작을 설명하기 위한 도면이다.
도 4A에는, 마스터 DB 노드(232) 및 3개의 슬레이브 DB 노드(235, 237, 239)로 구성된 스토리지 시스템에, 하나의 슬레이브 DB 노드(240)가 새롭게 연결되는 상황이 도시 되어 있다. 이는, 소위 스케일 아웃(scale out)에 의한 스토리지 시스템의 기능 확장이 이뤄지는 상황을 가리킨다. 스토리지 시스템의 기존 DB 노드에 트래픽이 과도하게 몰렸기 때문에 스케일 아웃이 이뤄졌을 것이므로, 신규 슬레이브 DB 노드(240)의 연결에 의한 성능 향상의 효과를 극대화 하기 위하여 데이터베이스 리밸런싱이 필요한 상황임을 알 수 있다.
즉, 마스터 DB 노드(232)는 스케일 아웃에 의한 신규 DB 노드 연결 시, 데이터베이스 리밸런싱을 수행해야 하는 것으로 판단할 수 있다.
도 4A에 도시된 형태의 데이터베이스 리밸런싱은 기존의 DB 노드에 저장 된 데이터 중 일부를 신규 DB 노드로 이동(move) 하는 것을 포함할 것이다. 물론, 리밸런싱 로직에 따라 각 DB 노드의 부하(load)를 균등하게 하기 위한 데이터 복제(copy)도 병행 될 수 있다. 이 때, 기존의 DB 노드(232, 234, 236, 238)의 신규 DB 노드(240)로의 데이터 이동 순서를 적절하게 결정하는 것에 의하여 데이터베이스 리밸런싱에 의한 데이터베이스 성능 저하를 더욱 감소시킬 수 있다. 참고로, 데이터의 이동은 소스 측 장치에서 이동 된 데이터를 삭제하는 것인 점에서, 소스 측 장치에 데이터를 그대로 남기는 데이터 복제(copy)와 그 의미가 다른 점에 유의한다.
본 발명의 일 실시예에 따른 스토리지 시스템에 포함되는 각 DB 노드에는 리밸런싱 우선 순위가 부여된다. 본 실시예에 따른 스토리지 시스템은 일련의 순차적인 부분리밸런싱을 수행함으로써, 전체 데이터베이스 리밸런싱을 종료한다. 이 때, 각 DB 노드에 대한 부분리밸런싱의 순서를 결정하기 위해 상기 리밸런싱 우선 순위가 참조 된다.
상기 리밸런싱 우선 순위는, DB 노드의 리소스 매니저에 의하여 수집되고 공유되는 상기 DB 노드의 상태 정보를 이용하여 결정 된다. 상기 상태 정보는 예를 들어, 아래의 표 1에 표시 된 정보일 수 있다.
명칭 설명
read/writeRequestCount DB 노드에 대한 읽기/쓰기 요청 횟수(DB 노드에 대한 트래픽)
slow<op>Count Slow operation의 발생 횟수
flushQueueLength Flush 큐의 길이; flush 되지 않은지 오래될수록 큐의 길이가 길 것이므로, flush 큐가 길다는 것은 그 DB 노드가 계속 busy 상태에 있었음을 의미함
disk_usage 스토리지 사용량 또는 사용률
memory_usage 메모리 사용률
cpu_usage 프로세서 사용률
hot partition 개수 DB 노드에 저장된 데이터가 일정 기준에 따라 그룹핑 된 결과, 상기 데이터는 복수의 파티션으로 나뉨. 이 때, 기준치 이상의 부하(load)가 존재하는 파티션을 hot partition이라 지칭함. hot partition에 대한 판단 기준은, 아래 제시된 read/writeRequestCountPerPartition, latencyPerPartition 및 cacheHitPerPartition 중 적어도 하나를 이용하여 판정 가능
read/writeRequestCountPerPartition 각 파티션 별 읽기/쓰기 요청 횟수(각 파티션에 대한 트래픽)
latencyPerPartition 각 파티션 별 반응 시간(latency)
cacheHitPerPartition 각 파티션 별 캐시-히트 횟수; 캐시-히트 횟수가 높다는 것은 그 파티션에 대하여는 read 빈도가 높음을 의미함
상기 리밸런싱 우선 순위는, 그 DB 노드에 대한 읽기/쓰기 요청 트래픽이 많을 수록 높아지고, 처리에 소요 된 시간이 기준치를 초과하는 슬로우 오퍼레이션(slow operation)의 개수가 많을 수록 높아지며, 플러쉬 큐의 길이가 길 수록 높아지고, 스토리지 사용량 또는 사용률이 높아질수록 높아지고, 프로세서 사용률이 높아질수록 높아지며, 메모리 사용량 또는 사용률이 높아질수록 높아지고, 핫 파티션(hot partition)의 개수가 높아질 수록 설정된다. 요컨대, DB 노드의 리밸런싱 우선 순위는 상기 DB 노드에 부하(load)가 많이 걸릴수록 높아진다. 상기 리밸런싱 우선 순위의 연산에 있어서, 각각의 factor에 대하여 서로 다른 가중치가 부여 될 수 있다.
도 4A에는 마스터 DB 노드(232) 및 3개의 슬레이브 DB 노드(234, 236, 238)에 대하여 그 DB 노드에 대한 읽기/쓰기 요청 트래픽을 기준으로 리밸런싱 우선 순위를 연산하는 실시예가 예시 되어 있다. 스토리지 시스템에 포함된 기존의 4개 DB 노드들 중 가장 트래픽이 몰리는 DB 노드는 슬레이브#3 DB 노드(238)로 초당 350회의 읽기/쓰기 요청이 몰리고 있다. 따라서, 데이터 이동을 통한 트래픽 경감 조치를, 슬레이브#3 DB 노드(238)에 대하여 가장 먼저 해주는 것이(제1 부분리밸런싱), 데이터베이스 리밸런싱에 의한 데이터베이스 성능 저하를 감소하는 데 도움이 될 것이다. 이미 수차례 설명한 바와 같이, 슬레이브#3 DB 노드(238)는 신규 슬레이브 노드(240)로의 일부 데이터 이동이 수행되는 제1 부분리밸런싱 동작 이후, 바로 정상 서비스 가능 노드가 되기 때문이다.
이해의 편의를 돕기 위하여, 도 4A에는 제1 내지 제4 부분리밸런싱이 모두 기존의 슬레이브 DB 노드에서 신규의 슬레이브 DB 노드로 데이터가 이동하는 것으로 예시되어 있다. 하지만, 본 발명의 실시예는 신규의 DB 노드가 연결되었다 하여, 무조건 기존의 DB 노드가 신규 DB 노드에 데이터를 이동 시키는 것으로 부분리밸런싱이 수행되어야 하는 것으로 한정되지는 않는다. 데이터 분포에 따라 기존의 DB 노드 간의 데이터 이동 및 데이터 복제가 수행 될 수도 있음을 유의한다.
제1 부분리밸런싱이 슬레이브#3 DB 노드(238)와 슬레이브#4 DB 노드(240) 사이에 진행 되는 동안에도, 제1 부분리밸런싱에 참여하지 않는 DB 노드(232, 234, 236)는 정상 서비스 제공이 가능한 노드이다.
제2 부분리밸런싱은 초당 100회의 읽기/쓰기 요청이 있는 마스터 DB 노드(232)에서 슬레이브#4 DB 노드(240)로 수행 되며, 이 때 슬레이브#1 DB 노드(234), 슬레이브#2 DB 노드(236) 및 슬레이브#3 DB 노드(238)는 정상 서비스 제공이 가능한 노드이다.
제3 부분리밸런싱은 초당 75회의 읽기/쓰기 요청이 있는 슬레이브#2 DB 노드(236)에서 슬레이브#4 DB 노드(240)로 수행 되며, 이 때 슬레이브#1 DB 노드(234), 슬레이브#3 DB 노드(238) 및 마스터 DB 노드(232)는 정상 서비스 제공이 가능한 노드이다.
제4 부분리밸런싱은 초당 50회의 읽기/쓰기 요청이 있는 슬레이브#1 DB 노드(234)에서 슬레이브#4 DB 노드(240)로 수행 되며, 이 때 슬레이브#2 DB 노드(236), 슬레이브#3 DB 노드(238) 및 마스터 DB 노드(232)는 정상 서비스 제공이 가능한 노드이다.
도 4A에서는 신규 노드에 대하여 모든 기존 노드가 데이터를 이전해 준 것으로 도시 되어 있으나, 신규 노드가 연결 되었을 때의 데이터베이스 리밸런싱이, 항상 모든 기존 노드가 데이터를 신규 노드에 이전해 주는 것은 아님을 유의한다. 데이터베이스 리밸런싱 정책에 따라 일부의 기준 노드 만 신규 노드에 데이터를 이전해 주는 경우도 발생할 수 있다.
이하, 도 4B를 참조하여, 본 실시예에 따른 스토리지 시스템이 부분리밸런싱에 참여하지 않은 나머지 노드에 저장된 복제본을 이용하여 부분리밸런싱이 진행 중인 DB 노드에 대한 읽기/쓰기 요청을 신속하게 처리해 주는 동작을 설명한다. 도 4B에 도시된 실시예는 어플리케이션 서버로부터 수신된 요청(request)을, 상기 요청과 관련된 데이터를 저장하고 있는 복수의 DB 노드들 중 어느 노드가 수행할지를 '연결 우선 순위'에 의하여 결정하는 것을 전제로 한다.
마스터 DB 노드(232)는 읽기/쓰기 요청을 수신하여, 그 요청에 대응 되는 데이터가 어느 DB 노드에 저장 되어 있는지를 찾는다. 스토리지 시스템이 복제 계수를 유지하도록 데이터의 복제본을 관리하므로, 상기 데이터는 둘 이상의 DB 노드에 저장 되어 있을 것이다. 복수의 DB 노드 중 실제로 상기 요청을 처리해 주는 노드는 연결 우선 순위에 의하여 결정된다. 따라서, 부분리밸런싱이 진행 중인 DB 노드에 대하여는 상기 연결 우선 순위를 최하위로 강제 조정한 후, 상기 부분리밸런싱이 완료 되면 연결 우선 순위를 원래대로 복구하면, 부분리밸런싱이 진행 중인 DB 노드에 대한 읽기/쓰기 요청을 부분리밸런싱을 수행하고 있지 않은 다른 DB 노드로 전달할 수 있다. 도 4B에는 데이터를 신규 노드로 이전하고 있는 DB 노드에 대한 연결 우선 순위가 최하위로 조정 되는 점이 도시 되어 있다.
지금까지는 데이터베이스 리밸런싱의 수행에 있어서, 각 DB 노드가 순차적으로 참여하는 방식에 의하여, 리밸런싱 수행 중 성능 악화를 개선하는 몇몇 실시예들을 설명하였다. 이하, 도 4C를 참조하여 특정 DB 노드에서 부분리밸런싱이 수행 될 때, 일부의 파티션에 대하여만 부분리밸런싱을 수행함으로써, 리밸런싱 수행 중 성능 악화를 더욱 개선하는 몇몇 실시예들을 설명한다.
이미 도 4A 및 도 4B를 참조하여 설명한 바와 같이, 제1 부분리밸런싱은 슬레이브#3 DB 노드(238)에서 슬레이브#4 DB 노드(240)로 수행 된다. 각 DB 노드에 9개의 파티션이 포함되어 있다고 할 때, 도 4c에는 제1 부분리밸런싱 수행 전에 신규 노드인 슬레이브#4 DB 노드(240)는 9개 파티션 모두가 빈 파티션(empty partition)이고, 기존 노드인 슬레이브#3 DB 노드(238)는 9개 파티션 모두가 사용된 파티션이며, 그 중 2개의 파티션은 기 정의 된 기준에 의하여 평가 된 핫 파티션(hot partition)인 점이 도시 되어 있다.
상기 핫 파티션은 각 DB 노드의 리소스 매니저에 의하여 수집된 상태 정보 중, 각 파티션과 관련된 아래의 정보를 이용하여 판정할 수 있다.
read/writeRequestCountPerPartition 각 파티션 별 읽기/쓰기 요청 횟수(각 파티션에 대한 트래픽)
latencyPerPartition 각 파티션 별 반응 시간(latency)
cacheHitPerPartition 각 파티션 별 캐시-히트 횟수; 캐시-히트 횟수가 높다는 것은 그 파티션에 대하여는 read 빈도가 높음을 의미함
즉, 읽기/쓰기 요청 횟수가 많고, 반응 시간이 기준치를 초과하며, 캐시-히트 횟수가 많은 파티션을 핫 파티션으로 판정할 수 있을 것이다.
제1 부분리밸런싱을 위하여 슬레이브#3 DB 노드(238)에서 슬레이브#4 DB 노드(240)로 데이터를 일부 이동할 때 다양한 방법이 있을 것이다.
일 실시예에서, 핫 파티션으로 선정 된 파티션 중 적어도 일부를 파티션 통째로 이동할 수 있을 것이다. 도 4C는 이러한 실시예를 도시한다. 도 4C에 따르면, 제1 부분리밸런싱의 결과, 슬레이브#3 DB 노드(238)의 핫 파티션이던 #2, #4, #6, #8 파티션 중 #2, #4 파티션의 모든 데이터가 그대로 슬레이브#4 DB 노드(240)의 #A, #B 파티션으로 이동된 것이 도시 되어 있다. 즉, 제1 부분리밸런싱의 결과, 슬레이브#3 DB 노드(238)의 핫 파티션의 개수가 4개에서 2개로 감소되고, 슬레이브#4 DB 노드(240)의 핫 파티션의 개수가 0개에서 2개로 증가함으로써, 슬레이브#3 DB 노드(238)와 슬레이브#4 DB 노드(240) 사이의 핫 파티션의 개수가 동일해진 것을 확인할 수 있다. 즉, 부분리밸런싱에 의하여 각 DB 노드가 가진 핫 파티션의 개수가 분산되는 효과가 있다. 즉, 본 실시예는, 종래 방식의 리밸런싱과는 다르게, 핫 파티션의 리밸런싱을 수행한다는 새로운 기준을 제시한다. 각 DB 노드가 각진 핫 파티션의 개수가 분산되는 것에 의하여, 리밸런싱을 위한 더 적은 데이터 복제/이동 작업 만으로도 더 좋은 리밸런싱 효과를 거둘 수 있다.
물론, 핫 파티션의 이동에도 불구하고 데이터의 분산이 충분히 이뤄지지 않을 수도 있다. 이런 경우, 핫 파티션이 아닌 파티션의 데이터가 이동 또는 복제 될 수도 있을 것이다. 다만, 본 발명의 실시예에 따르면, 핫 파티션의 데이터가, 핫 파티션이 아닌 데이터보다 우선하여 이동 또는 복제 된다. 즉, 핫 파티션만 부분리밸런싱의 대상으로 하는 것이 아니라, 다른 파티션의 데이터도 부분리밸런싱의 대상으로 하되, 핫 파티션의 데이터에 대하여 먼저 부분리밸런싱을 진행함으로써, 부분리밸런싱의 대상인 DB 노드에 저장 된 데이터는 전체적으로 리밸런싱을 수행해 주되, 핫 파티션의 데이터에 대하여는 부하가 몰리는 현상을 빠르게 해소해 줄 수도 있을 것이다.
즉, 도 4C를 참조한 본 발명의 실시예는, 데이터베이스 리밸런싱 방법으로서 폭넓게 적용 될 수 있다. 본 실시예에 따른 데이터베이스 리밸런싱 방법은, 핫 파티션을 선정하는 단계, 각 노드에 대하여 상기 핫 파티션의 개수가 분산되도록 하는, 순차적인 데이터 이동 및 데이터 복제로 구성된 리밸런싱 스케줄링을 구성하는 단계를 포함할 수 있다.
다른 실시예에서, 모든 핫 파티션에 대하여 일부 데이터를 타겟 측 DB 노드로 이동시킬 수도 있을 것이다. 이 경우, 부분리밸런싱에 의하여 기존의 핫 파티션이 일반 파티션으로, 그 부하의 정도가 완화되는 효과가 있다.
본 발명의 또 다른 실시예에서, 핫 파티션의 데이터에 한정하여 부분리밸런싱이 수행 될 수도 있다. 본 실시예에 따르면, 부분리밸런싱에 의하여 영향을 받는 대상을 특정 DB 노드의 특정 파티션으로 제한하고, 부분리밸런싱의 수행 도중 정상적 서비스가 가능한 영역을 그만큼 더 넓힐 수 있는 효과가 있다. 물론, 리밸런싱 대상이 아닌 파티션에 대하여는 정상적인 읽기/쓰기 서비스를 제공하기 위하여는, DB 노드에 복수의 억세스 인터페이스가 존재하는 것이 바람직하다. 상기 복수의 억세스 인터페이스는 하드웨어 인터페이스일 수도 있고, 가상의 소프트웨어 적인 인터페이스일 수도 있다. 이 때, 상기 복수의 억세스 인터페이스 중 제1 억세스 인터페이스는 상기 핫 파티션을 담당하고, 상기 복수의 억세스 인터페이스 중 제2 억세스 인터페이스는 상기 핫 파티션을 제외한 나머지 파티션을 담당할 수 있을 것이다.
이하, 도 4D를 참조하여, 부분리밸런싱에 참여 중인 DB 노드가, 자신이 저장하고 있는 데이터와 관련된 요청을 수신한 경우, 자신이 상기 요청을 처리하지 않고, 상기 데이터의 복제본을 저장하고 있는 다른 DB 노드에 상기 요청을 전달하는 실시예를 설명한다.
도 4D에는 4개의 DB 노드(260, 262, 264, 266)로 구성된 데이터베이스와 어플리케이션 서버(100)가 연결된 시스템이 도시되어 있다. 어플리케이션이 DB 노드#1(260)에 접속하여 데이터 B의 읽기를 요청한 상황을 가정한다. 그런데, DB 노드#1(260)과 DB 노드#2(262) 사이에는 부분리밸런싱이 진행 중이다. 따라서, DB 노드#1(260)는 자신이 직접 데이터 B의 읽기를 처리할 여력이 부족한 상황이다. 따라서, DB 노드#1(260)의 리소스 매니저는 데이터 B를 저장하고 있는 다른 DB 노드인 DB 노드#4(266)에 상기 데이터 B 읽기 요청을 전달한다. 다음으로, DB 노드#1(260)은 DB 노드#4(266)로부터 데이터 B의 읽기 요청에 대한 처리 결과를 전달 받고, 데이터 B의 읽기 요청에 대한 처리 결과를 어플리케이션 서버(100)에 송신한다.
데이터 B의 읽기를 처리하는 데 소요 되는 컴퓨팅 부하가 데이터 B를 저장하고 있는 다른 DB 노드를 찾아서, 데이터 읽기 요청을 전달하는데 소요 되는 컴퓨팅 부하보다 더 크기 때문에, 도 4D의 실시예는 데이터 읽기 요청의 처리 소요 시간 측면에서 더 효율적이다.
이하, 도 5를 참조하여, 본 발명의 일 실시예에 따른 스토리지 시스템이 DB 노드의 구성 변경이 없는 상태에서 데이터베이스 리밸런싱을 수행하는 동작을 설명한다. 도 5에 도시된 바와 같이, DB 노드의 구성 변경이 없는 상태에서 데이터베이스 리밸런싱을 수행하는 경우에도 부분리밸런싱을 순차적으로 서로 다른 DB 노드에 대하여 수행해 주되, 각 DB 노드에 대하여 부분리밸런싱을 수행할 때에는 전체 데이터에 대하여 리밸런싱을 수행하지 않고 핫 파티션의 데이터를 위주로 리밸런싱을 수행할 수 있다. 이러한 경우의 데이터 리밸런싱은 각 DB 노드에 포함된 핫 파티션의 개수를 분산 시켜주는 방향으로 수행 될 수 있다.
먼저, 각 DB 노드의 리밸런싱 우선 순위를 살펴보면, 핫 파티션의 개수를 고려하여, DB 노드#1(242), DB 노드#2(244), DB 노드#3(246), DB 노드#4(248)의 순서가 될 것이다. 제1 부분리밸런싱은 DB 노드#1(242)의 핫 파티션 중 일부를 우선 순위가 낮은 DB 노드#3(246)으로 옮기는 것으로 스케줄 될 수 있다. 이 때, 복제 계수를 유지해야 하므로, DB 노드#3(246)에 저장 되지 않은 데이터를 옮겨야 한다. 도 5에는 그 결과 5개의 핫 파티션이 DB 노드#3(246)으로 옮겨질 수 있는 것으로 도시하고 있다. 제1 부분리밸런싱의 결과, DB 노드#1(242)의 핫 파티션 개수는 20개에서 15개로 감소하고, DB 노드#3(246)의 핫 파티션 개수는 3개에서 8개로 증가한다. 제1 부분리밸런싱의 결과에도 불구하고 아직 DB 노드#1(242)의 핫 파티션이 충분히 분산 되지 않았으므로, 다음 부분리밸런싱이 수행 된다.
제2 부분리밸런싱은 DB 노드#1(242)의 남은 핫 파티션 중 일부를 우선 순위가 낮은 DB 노드#4(248)으로 옮기는 것으로 스케줄 될 수 있다. 제1 부분리밸런싱과 마찬가지로 복제 계수를 유지해야 하므로, DB 노드#4(246)에 저장 되지 않은 데이터를 옮겨야 한다. 도 5에는 그 결과 7개의 핫 파티션이 DB 노드#4(248)으로 옮겨질 수 있는 것으로 도시하고 있다. 제2 부분리밸런싱의 결과, DB 노드#1(242)의 핫 파티션 개수는 15개에서 8개로 감소하고, DB 노드#4(246)의 핫 파티션 개수는 1개에서 8개로 증가한다. 제2 부분리밸런싱의 결과, 전체 DB 노드들(242, 244, 246, 248)의 핫 파티션 개수가 동일하게 조정 되었으므로, 데이터베이스 리밸런싱이 종료 된다.
이하 도 6을 참조하여, 본 발명의 일 실시예에 따른 스토리지 시스템이 DB 노드 중 하나가 fail 상태가 된 경우, 이를 보완하기 위한 데이터베이스 리밸런싱을 수행하는 동작을 설명한다. 도 6에 따르면 DB 노드#8(256)이 fail 상태가 된 상태이다. 복제 계수를 유지하면서도 각 DB 노드의 핫 파티션 개수를 분산시키기 위한 데이터베이스 리밸런싱이 수행 되어야 한다. 이하, 도 6을 참조한 설명에서, DB 노드#5 내지 #9(250, 252, 254, 256, 258)으로 구성된 스토리지 시스템의 복제 계수는 2인 것으로 가정한다.
먼저, 각 DB 노드의 리밸런싱 우선 순위를 살펴보면, 핫 파티션의 개수를 고려하여, DB 노드#9(258), DB 노드#5(250), DB 노드#7(254), DB 노드#6(252)의 순서가 될 것이다.
먼저 제1 부분리밸런싱에서, DB 노드#9(258)의 핫 파티션 중 2개가 리밸런싱 우선 순위가 낮은 DB 노드#7(254)으로 이동 된다. 이동 된 핫 파티션의 데이터는 DB 노드#7(254)에는 저장 되지 않은 것으로 복제 계수에 영향을 미치지 않으므로 DB 노드#7(254)으로 이동 될 수 있는 것으로 이해 될 수 있을 것이다. 또한, fail 상태가 된 DB 노드#8(256)의 핫 파티션 중 2개는 DB 노드#9에도 그 복제본이 저장 되어 있었던 것으로 가정하자. 그렇다면, 복제 계수를 유지하기 위하여, DB 노드#9에 저장 되어 있던 2개의 복제본 파티션이 DB 노드#7에 복제될 수 있을 것이다. 제1 부분리밸런싱의 결과, DB 노드#9(258)의 핫 파티션은 12개에서 10개로 감소했고, DB 노드#7(254)의 핫 파티션은 2개에서 6개로 증가했다.
다음으로 제2 부분리밸런싱이 DB 노드#9(258)에서 DB 노드#6(252)으로 수행 된다. 이 때, 제2 부분리밸런싱의 소스 측 DB 노드가 여전히 DB 노드#9(258)인 이유는, 제1 부분리밸런싱에도 불구하고 여전히 DB 노드#9(258)의 핫 파티션 개수가 차순위의 DB 노드#5(250) 보다 감소하지 않았기 때문이다. DB 노드#9(258)의 핫 파티션 중 2개가 리밸런싱 우선 순위가 낮은 DB 노드#6(252)으로 이동 된다. 이동 된 핫 파티션의 데이터는 DB 노드#6(252)에는 저장 되지 않은 것으로 복제 계수에 영향을 미치지 않으므로 DB 노드#6(252)으로 이동 될 수 있는 것으로 이해 될 수 있을 것이다. 또한, fail 상태가 된 DB 노드#8(256)의 핫 파티션 중 2개는 DB 노드#9에도 그 복제본이 저장 되어 있었던 것으로 가정하자. 그렇다면, 복제 계수를 유지하기 위하여, DB 노드#9에 저장 되어 있던 2개의 복제본 파티션이 DB 노드#6(252)에 복제될 수 있을 것이다. 제2 부분리밸런싱의 결과, DB 노드#9(258)의 핫 파티션은 10개에서 8개로 감소했고, DB 노드#6(252)의 핫 파티션은 2개에서 6개로 증가했다.
다음으로 제3 부분리밸런싱이 DB 노드#5(250)에서 DB 노드#7(254)으로 수행 된다. DB 노드#5(250)의 핫 파티션 중 1개가 DB 노드#7(254)으로 이동 된다. 이동 된 핫 파티션의 데이터는 DB 노드#7(254)에는 저장 되지 않은 것으로 복제 계수에 영향을 미치지 않으므로 DB 노드#7(254)으로 이동 될 수 있는 것으로 이해 될 수 있을 것이다. 또한, fail 상태가 된 DB 노드#8(256)의 핫 파티션 중 1개는 DB 노드#5(250)에도 그 복제본이 저장 되어 있었던 것으로 가정하자. 그렇다면, 복제 계수를 유지하기 위하여, DB 노드#5(250)에 저장 되어 있던 1개의 복제본 파티션이 DB 노드#7(254)에 복제될 수 있을 것이다. 제3 부분리밸런싱의 결과, DB 노드#5(258)의 핫 파티션은 10개에서 9개로 감소했고, DB 노드#7(254)의 핫 파티션은 6개에서 8개로 증가했다.
다음으로 제4 부분리밸런싱이 DB 노드#5(250)에서 DB 노드#6(252)으로 수행 된다. 이 때, 제4 부분리밸런싱의 소스 측 DB 노드가 여전히 DB 노드#5(250)인 이유는, 제3 부분리밸런싱에도 불구하고 여전히 DB 노드#5(250)의 핫 파티션 개수가 차순위의 DB 노드#7(254) 보다 감소하지 않았기 때문이다. DB 노드#5(250)의 핫 파티션 중 1개가 리밸런싱 우선 순위가 낮은 DB 노드#6(252)으로 이동 된다. 이동 된 핫 파티션의 데이터는 DB 노드#6(252)에는 저장 되지 않은 것으로 복제 계수에 영향을 미치지 않으므로 DB 노드#6(252)으로 이동 될 수 있는 것으로 이해 될 수 있을 것이다. 또한, fail 상태가 된 DB 노드#8(256)의 핫 파티션 중 1개는 DB 노드#5(250)에도 그 복제본이 저장 되어 있었던 것으로 가정하자. 그렇다면, 복제 계수를 유지하기 위하여, DB 노드#5(250)에 저장 되어 있던 1개의 복제본 파티션이 DB 노드#6(252)에 복제될 수 있을 것이다. 제4 부분리밸런싱의 결과, DB 노드#5(250)의 핫 파티션은 9개에서 8개로 감소했고, DB 노드#6(252)의 핫 파티션은 6개에서 8개로 증가했다.
제4 부분리밸런싱까지 수행 된 결과, DB 노드#5, #6, #7, #9(250, 252, 254, 258) 모두 8개의 핫 스팟을 가지는 것으로 되었으므로, 데이터베이스 리밸런싱은 종료 된다.
이하, 도 7을 참조하여 본 발명의 일 실시예에 따른 DB 노드의 구성 및 동작을 설명한다. 도 7에 도시된 바와 같이, 본 실시예에 따른 DB 노드(500)는 데이터를 저장하는 하드웨어 스토리지인 저장부(502), 리소스 매니저(504) 및 다른 DB 노드 및 데이터베이스 서버와 데이터 송수신을 수행하는 네트워크 인터페이스(506)를 포함한다.
도 7에 도시된 바와 같이, 리소스 매니저(504)는 리밸런싱 스케줄링부(548), 타 노드 상황 수집부(540), 노드 감지부(542), 노드 헬스 체크부(544) 및 타 노드 제어부(546)를 포함할 수 있다. 리소스 매니저(504)는 DB 노드(500)의 메모리(미도시)에 로드되고, DB 노드(500)의 CPU(미도시)에서 수행되는 일련의 오퍼레이션들이다. 일 실시예에서, 리소스 매니저(504)는 임베디드 프로그램을 구현한, 상기 CPU와는 별도의 전용 프로세싱 칩으로 구성 될 수도 있다.
타 노드 상황 수집부(540)는 네트워크 인터페이스(506)를 통하여 연결 된 다른 DB 노드들로부터 상태 정보를 수집한다. 상기 상태 정보의 예시로 이미 표 1이 제시된 바 있다. 노드 감지부(542)는 스토리지 시스템에 신규 노드가 연결 된 것을 감지한다. 노드 헬스 체크부(544)는 스토리지 시스템에 연결된 다른 DB 노드들로부터 헬스 체크 메시지가 정상적으로 수신되는 지를 확인하는 등의 방법으로 스토리지 시스템에 연결 된 다른 DB 노드들의 상태를 체크한다. 타 노드 제어부(546)는 리밸런싱 스케줄링부(548)로부터 제공 된 데이터베이스 리밸런싱 스케줄에 따라, 상기 스케줄을 수행하기 위한 커맨드를 생성하고, 생성된 커맨드를 네트워크 인터페이스(506)를 통하여 다른 DB 노드(500)에 송신한다.
리밸런싱 스케줄링부(548)는 타 노드 상황 수집부(540)로부터 제공된 타 노드의 상태 정보, 노드 감지부(542)로부터 제공된 신규 노드 연결 여부에 대한 정보, 노드 헬스 체크부(544)로부터 제공 된 타 노드의 헬스 정보 및 저장부(502)에 저장된 각 DB 노드 별 데이터 저장 상황을 가리키는 데이터 맵(520)을 종합적으로 판단하여 리밸런싱 스케줄링을 수행한다.
리밸런싱 스케줄링부(548)는 i) 데이터베이스 리밸런싱이 필요한 시점인지, ii) 데이터베이스 리밸런싱은 어떤 순서에 따라 진행할 지, iii) 각 노드의 어떤 파티션에 대하여 데이터베이스 리밸런싱을 진행할 지를 판단한다.
리밸런싱 스케줄링부(548)는 스토리지 시스템에 포함되는 각 DB 노드에 대하여 리밸런싱 우선 순위를 부여한다. 리밸런싱 스케줄링부(548)는 일련의 순차적인 부분리밸런싱으로 구성 된 전체 데이터베이스 리밸런싱 스케줄을 생성한다. 이 때, 각 DB 노드에 대한 부분리밸런싱의 순서를 결정하기 위해 상기 리밸런싱 우선 순위가 참조 된다. DB 노드의 리밸런싱 우선 순위는 상기 DB 노드에 부하(load)가 많이 걸릴수록 높아진다. 리밸런싱 스케줄링부(548)는 읽기/쓰기 요청 횟수가 많고, 반응 시간이 기준치를 초과하며, 캐시-히트 횟수가 많은 파티션을 핫 파티션으로 판정하고, 상기 핫 파티션 만 리밸런싱 수행의 대상으로 할 수 있다.
이하, 본 발명의 일 실시예에 따른 데이터베이스 리밸런싱 방법을 도 8을 참조하여 설명한다. 본 실시예에 따른 데이터베이스 리밸런싱 방법은 도 2 내지 도 6을 참조하여 설명한 스토리지 시스템에서 수행 될 수 있다. 본 실시예에 따른 데이터베이스 리밸런싱 방법은 도 2 내지 도 6을 참조하여 설명한 몇몇 실시예들에 따른 스토리지 시스템의 동작이 반영될 수 있음을 유의한다.
먼저, 데이터베이스 리밸런싱이 필요한 상황인지 여부를 판정한다(S100). 예를들어, 신규 DB 노드가 연결 된 경우, 스토리지 시스템에 포함 된 DB 노드 중 FAIL 상태가 된 노드가 존재하는 경우, 그 외 기준치 이상으로 부하가 특정 DB 노드에 몰리는 경우 등이 데이터베이스 리밸런싱이 필요한 경우이다.
본 발명의 몇몇 실시예들에 따른 데이터베이스 리밸런싱 방법은 스토리지 시스템에 저장 된 데이터 사이즈가 기준치를 초과하는 경우에 한하여 수행 될 수 있다(S101). 스토리지 시스템에 저장 된 데이터 사이즈가 기준치에 미달하는 경우, 기존에 수행 되던 방식의 데이터베이스 리밸런싱이 수행 된다(S102).
일 실시예에서, 본 발명의 몇몇 실시예들에 따른 데이터베이스 리밸런싱 방법은 상기 스토리지 시스템이 2 이상의 복제 계수를 유지하는 경우에 한하여 수행 될 수도 있다. 스토리지 시스템이 2 이상의 복제 계수를 유지하지 않는 경우, 기존에 수행 되던 방식의 데이터베이스 리밸런싱이 수행 된다.
다음으로 데이터베이스 리밸런싱을 수행할 대상 노드를 선정한다(S103). 스토리지 시스템에 포함 된 일부 DB 노드에 대하여만 데이터베이스 리밸런싱을 수행하면 되는 경우가 있을 수도 있고, 스토리지 시스템에 포함 된 모든 DB 노드에 대하여 데이터베이스 리밸런싱을 수행해야 하는 경우도 있을 것이다. 또한, 특정 노드에 대하여 데이터베이스 리밸런싱을 수행한다면, 그 노드 내의 파티션 중 데이터베이스 리밸런싱을 우선하여 수행해야 하는 핫 파티션을 선정한다(S104).
다음으로 2 이상의 DB 노드 사이의 부분리밸런싱을 DB 노드를 바꾸어 가면서 순차적으로 수행한다(S106). 이 때, 부분리밸런싱을 수행하는 순서는 리밸런싱 우선 순위를 반영하여 결정하며, 그 결과 부하가 몰리는 DB 노드에 대한 부분리밸런싱이 우선 수행 되게 된다.
또한, 부분리밸런싱을 수행하는 동안, 부분리밸런싱을 수행하고 있는 DB 노드에 대한 연결 우선 순위는 일시적으로 낮게 조정한다. 그 결과, 특정 DB 노드가 부분리밸런싱을 수행하고 있는 동안 그 DB 노드에 대한 데이터 읽기/쓰기 요청이 접수되면, 해당 데이터의 복제본을 저장한, 부분리밸런싱을 수행하고 있지 않은 다른 DB 노드를 통하여 즉시 상기 요청이 처리 된다. 요컨대, 상기 부분리밸런싱의 수행 중에, 상기 부분리밸런싱 대상인 노드 세트에 포함된 DB 노드에 대한 서비스 요청을, 상기 제1 노드 세트에 포함된 DB 노드를 제외한 나머지 DB 노드들 중, 억세스 요청 된 DB 노드에 저장 된 데이터의 복제 데이터를 가진 DB 노드로 전달한다.
이미 설명한 바와 같이, 특정 DB 노드에 대한 부분리밸런싱이라도 파티션 별로 순차적으로 부분리밸런싱이 수행되고, 그 DB 노드 내의 전체 파티션에 대하여 동시에 부분리밸런싱이 수행되지는 않는다. 따라서, 특정 파티션에 대한 리밸런싱이 완료되면(S108), 다음 파티션에 대한 리밸런싱을 진행하고(S110), 모든 리밸런싱 대상 파티션에 대한 리밸런싱이 종료되면 다음 DB 노드에 대한 부분리밸런싱이 수행 된다(S112, S114).
요컨대, 상기 스토리지 시스템에 포함된 각각의 DB 노드가 가지는 핫 파티션의 개수가 평준화 되도록, 상기 핫 파티션 중 일부의 파티션을 상기 제1 노드 세트에 포함 된 DB 노드 간에 이동(move)시키거나, 상기 스토리지 시스템의 전체 핫 파티션의 개수가 감소하도록, 상기 핫 파티션의 데이터 중 일부를 상기 제1 노드 세트에 포함 된 DB 노드 간에 이동(move) 시킬 수 있다.
이하, 도 9를 참조하여 본 발명의 일 실시예에 따른, 복수 DB 노드로 구성 된 데이터베이스 시스템에서, 데이터베이스 리밸런싱 도중에 접수된 서비스 요청을 DB 노드에 연결하는 방법을 설명한다.
클라이언트로부터 데이터 읽기/쓰기와 관련된 요청(request)이 접수되는 경우(S200), 요청된 데이터를 저장한 DB 노드들 중, 연결 우선 순위가 최상위인 DB 노드가 현재 부분리밸런싱 중인지 여부를 판정한다(S202). 그렇지 않다면, 그 DB 노드가 바로 상기 요청을 처리할 것이다(S208).
그 DB 노드가 현재 부분리밸런싱 중이라면, 요청된 데이터를 저장한 DB 노드들 중, 연결 우선 순위가 다음으로 높은 DB 노드가 존재하는지 판단한다(S204). 그런 DB 노드가 존재한다면, 그 노드에서 상기 요청을 처리할 것이다(S212).
요청된 데이터를 저장한 DB 노드들 중, 연결 우선 순위가 다음으로 높은 DB 노드가 존재하지 않는다면, 요청 된 데이터는 현재 부분리밸런싱 중인 DB 노드에만 저장되어 있는 것이다. 그렇다면, 요청 된 데이터가 저장 된 파티션이 현재 부분리밸런싱 중인지 판단한다(S206). 본 발명의 몇몇 실시예에 따르면 특정 DB 노드에 대한 데이터 리밸런싱이 진행 되더라도, 그 DB 노드의 모든 파티션에 대하여 동시 다발적으로 데이터 리밸런싱을 진행하는 것이 아니라, 파티션 별로 순차적으로 데이터 리밸런싱을 진행하므로, 요청 된 데이터가 저장 된 파티션이 현재 부분리밸런싱 중이 아니라면, 상기 요청은 상기 DB 노드에 구비된 복수의 억세스 인터페이스 중 현재 부분 인터페이스가 진행 되고 있는 파티션을 담당하고 있지 않은 다른 억세스 인터페이스를 통하여 바로 처리 가능하다(S208). 요청 된 데이터가 저장 된 파티션이 현재 부분리밸런싱 중이라면, 상기 파티션에 대한 부분리밸런싱 완료시까지 상기 요청의 처리가 대기 되어야 한다(S210).
지금까지 설명된 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 클라우드 서비스를 위한 서버 풀에 속한 물리 서버, 데스크탑 피씨와 같은 고정식 컴퓨팅 장치를 모두 포함한다.
상기 컴퓨터프로그램은 DVD-ROM, 플래시 메모리 장치 등의 기록매체에 저장된 것일 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.

Claims (14)

  1. 세 개 이상의 DB 노드를 포함하는 스토리지 시스템에서 수행되는 데이터베이스 리밸런싱(rebalancing) 방법에 있어서,
    상기 스토리지 시스템에 포함된 DB 노드들 중 일부의 DB 노드들로 구성된 제1 노드 세트를 구성하는 단계;
    상기 제1 노드 세트의 DB 노드들 사이의 제1 부분리밸런싱을 수행하는 단계;
    상기 제1 부분리밸런싱의 수행 중에, 상기 스토리지 시스템에 포함된 DB 노드들 중 상기 제1 노드 세트에 포함된 DB 노드를 제외한 나머지 DB 노드는 정상 동작을 수행하는 제1 부분리밸런싱 커버 단계; 및
    상기 스토리지 시스템에 포함된 DB 노드들 중 일부의 DB 노드들로 구성된 제2 노드 세트를 구성하는 단계;
    상기 제2 노드 세트의 DB 노드들 사이의 제2 부분리밸런싱을 수행하되, 상기 제2 부분리밸런싱은 상기 제1 부분리밸런싱의 종료 이후에 수행 되는 것인 단계; 및
    상기 제2 부분리밸런싱의 수행 중에, 상기 스토리지 시스템에 포함된 DB 노드들 중 상기 제2 노드 세트에 포함된 노드를 제외한 나머지 DB 노드는 정상 동작을 수행하는 제2 부분리밸런싱 커버 단계를 포함하되,
    상기 제1 노드 세트와 상기 제2 노드 세트는 적어도 하나의 DB 노드가 서로 다른 것인,
    데이터베이스 리밸런싱 방법.
  2. 제1 항에 있어서,
    상기 제1 노드 세트를 구성하는 단계는,
    제1 DB 노드를 포함하는 상기 제1 노드 세트를 구성하는 단계를 포함하고,
    상기 제2 노드 세트를 구성하는 단계는,
    상기 제1 DB 노드를 포함하지 않고, 제2 DB 노드를 포함하는 상기 제2 노드 세트를 구성하는 단계를 포함하는,
    데이터베이스 리밸런싱 방법.
  3. 제1 항 또는 제2항 중 어느 한 항에 있어서,
    상기 제1 부분리밸런싱의 수행 중에, 상기 스토리지 시스템에 포함된 DB 노드들 중 상기 제1 노드 세트에 포함된 노드를 제외한 나머지 노드는 정상 동작을 수행하는 단계는,
    상기 제1 부분리밸런싱의 수행 중에, 상기 제1 노드 세트에 포함된 DB 노드 중 타겟 데이터를 저장하는 DB 노드가 상기 타겟 데이터와 관련된 서비스 요청을 수신하고, 상기 서비스 요청을, 상기 제1 노드 세트에 포함된 DB 노드를 제외한 나머지 DB 노드들 중, 상기 타겟 데이터의 복제 데이터를 가진 DB 노드로 전달하는 서비스 요청 전달 단계를 포함하되,
    상기 스토리지 시스템은 2 이상의 복제 계수(replication factor)를 유지하기 위하여 다른 DB 노드에 복제 데이터를 유지하는 것인,
    데이터베이스 리밸런싱 방법.
  4. 제3 항에 있어서,
    상기 서비스 요청 전달 단계는,
    상기 타겟 데이터의 복제 데이터를 가진 DB 노드가, 상기 서비스 요청을 처리하고, 그 결과를 상기 서비스 요청을 수신한 DB 노드에 전달하는 단계; 및
    상기 서비스 요청을 수신한 DB 노드가, 상기 전달 받은 서비스 요청 처리 결과를 상기 서비스 요청에 대한 응답으로서 송신하는 단계를 포함하는,
    데이터베이스 리밸런싱 방법.
  5. 제1 항 또는 제2항 중 어느 한 항에 있어서,
    상기 제1 DB 노드는 상기 제2 DB 노드보다 더 높은 리밸런싱 우선 순위를 가지는 것이고,
    상기 리밸런싱 우선 순위는, 읽기/쓰기 요청 트래픽이 많을 수록 높아지고, 슬로우 오퍼레이션의 개수가 많을 수록 높아지며, 플러쉬 큐의 길이가 길 수록 높아지도록 설정되는,
    데이터베이스 리밸런싱 방법.
  6. 제1 항 또는 제2항 중 어느 한 항에 있어서,
    상기 제1 부분리밸런싱을 수행하는 단계는,
    상기 제1 노드 세트의 DB 노드 각각의 파티션들 중 부하(load) 집중도에 기반하여 선정된 핫 파티션(hot partition)의 리밸런싱을 수행하는 단계를 포함하고,
    상기 제2 부분리밸런싱을 수행하는 단계는,
    상기 제2 노드 세트의 DB 노드 각각의 파티션들 중 부하(load) 집중도에 기반하여 선정된 핫 파티션의 리밸런싱을 수행하는 단계를 포함하는,
    데이터베이스 리밸런싱 방법.
  7. 제6 항에 있어서,
    상기 제1 노드 세트의 DB 노드 각각의 파티션들 중 부하 집중도에 기반하여 선정된 핫 파티션의 리밸런싱을 수행하는 단계는,
    상기 스토리지 시스템에 포함된 각각의 DB 노드가 가지는 핫 파티션의 개수가 평준화 되도록, 상기 핫 파티션 중 일부의 파티션을 상기 제1 노드 세트에 포함 된 DB 노드 간에 이동(move) 시키는 단계를 포함하고,
    상기 제2 노드 세트의 DB 노드 각각의 파티션들 중 부하 집중도에 기반하여 선정된 핫 파티션의 리밸런싱을 수행하는 단계는,
    상기 스토리지 시스템에 포함된 각각의 DB 노드가 가지는 핫 파티션의 개수가 평준화 되도록, 상기 핫 파티션 중 일부의 파티션을 상기 제2 노드 세트에 포함 된 DB 노드 간에 이동 시키는 단계를 포함하는,
    데이터베이스 리밸런싱 방법.
  8. 제6 항에 있어서,
    상기 제1 노드 세트의 DB 노드 각각의 파티션들 중 부하 집중도에 기반하여 선정된 핫 파티션의 리밸런싱을 수행하는 단계는,
    상기 스토리지 시스템의 전체 핫 파티션의 개수가 감소하도록, 상기 핫 파티션의 데이터 중 일부를 상기 제1 노드 세트에 포함 된 DB 노드 간에 이동(move) 시키는 단계를 포함하고,
    상기 제2 노드 세트의 DB 노드 각각의 파티션들 중 부하 집중도에 기반하여 선정된 핫 파티션의 리밸런싱을 수행하는 단계는,
    상기 스토리지 시스템의 전체 핫 파티션의 개수가 감소하도록, 상기 핫 파티션의 데이터 중 일부를 상기 제2 노드 세트에 포함 된 DB 노드 간에 이동 시키는 단계를 포함하는,
    데이터베이스 리밸런싱 방법.
  9. 제6 항에 있어서,
    상기 제1 부분리밸런싱 커버 단계는,
    상기 제1 부분리밸런싱의 수행 중에 상기 제1 노드 세트에 포함된 DB 노드에만 저장된 데이터에 대한 서비스 요청을 접수하는 경우, 상기 서비스 요청과 관련된 데이터가 상기 핫 파티션 이외의 파티션에 저장된 것이면 상기 제1 부분리밸런싱의 수행 중이더라도 즉시 상기 서비스 요청에 대한 작업을 처리하는 단계를 포함하는,
    데이터베이스 리밸런싱 방법.
  10. 제9 항에 있어서,
    상기 서비스 요청과 관련된 데이터는 하나 이상의 파티션을 담당하는 복수의 억세스 인터페이스가 구비된 DB 노드에 저장 된 것이고,
    상기 복수의 억세스 인터페이스 중 제1 억세스 인터페이스는 상기 핫 파티션을 담당하고, 상기 복수의 억세스 인터페이스 중 제2 억세스 인터페이스는 상기 핫 파티션을 제외한 나머지 파티션을 담당하는 것인,
    데이터베이스 리밸런싱 방법.
  11. 제1 항 또는 제2항 중 어느 한 항에 있어서,
    상기 제1 노드 세트를 구성하는 단계, 상기 제1 부분리밸런싱을 수행하는 단계, 상기 제1 부분리밸런싱 커버 단계, 상기 제2 노드 세트를 구성하는 단계, 상기 제2 부분리밸런싱을 수행하는 단계 및 상기 제2 부분리밸런싱 커버 단계는 상기 스토리지 시스템의 데이터 사이즈가 기준치 이상인 경우에 한하여 수행되는,
    데이터베이스 리밸런싱 방법.
  12. 제11 항에 있어서,
    상기 제1 노드 세트를 구성하는 단계, 상기 제1 부분리밸런싱을 수행하는 단계, 상기 제1 부분리밸런싱 커버 단계, 상기 제2 노드 세트를 구성하는 단계, 상기 제2 부분리밸런싱을 수행하는 단계 및 상기 제2 부분리밸런싱 커버 단계는 상기 스토리지 시스템의 데이터 사이즈가 기준치 이상이고, 상기 스토리지 시스템의 복제 계수가 2 이상으로 세팅 된 경우에 한하여 수행되는 단계인,
    데이터베이스 리밸런싱 방법.
  13. 제1 항에 있어서,
    스케일 아웃(scale out)에 따른 신규 DB 노드가 상기 스토리지 시스템에 연결되는 단계를 더 포함하고,
    상기 제1 노드 세트는 상기 스토리지 시스템의 기존 DB 노드들 중, 리밸런싱 우선 순위가 가장 높은 DB 노드와 상기 신규 DB 노드로 구성 되고,
    상기 제2 노드 세트는 상기 스토리지 시스템의 기존 DB 노드들 중, 리밸런싱 우선 순위가 두 번째로 높은 DB 노드와 상기 신규 DB 노드로 구성 되는,
    데이터베이스 리밸런싱 방법.
  14. 제1 항에 있어서,
    상기 스토리지 시스템에 포함되는 DB 노드에 변동이 없는 경우, 상기 제1 노드 세트는 상기 스토리지 시스템의 기존 DB 노드들 중, 리밸런싱 우선 순위가 가장 높은 DB 노드 및 상기 우선 순위가 가장 높은 DB 노드로부터 데이터를 이동 받는 DB 노드로 구성 되고, 상기 제2 노드 세트는 상기 스토리지 시스템의 기존 DB 노드들 중, 리밸런싱 우선 순위가 두 번째로 높은 DB 노드 및 상기 우선 순위가 두 번째로 높은 DB 노드로부터 데이터를 이동 받는 DB 노드로 구성 되는,
    데이터베이스 리밸런싱 방법.
KR1020160140885A 2016-10-27 2016-10-27 데이터베이스 리밸런싱 방법 KR20180046078A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160140885A KR20180046078A (ko) 2016-10-27 2016-10-27 데이터베이스 리밸런싱 방법
CN201711000074.5A CN108009196A (zh) 2016-10-27 2017-10-24 数据库再平衡方法
US15/794,997 US10664458B2 (en) 2016-10-27 2017-10-26 Database rebalancing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160140885A KR20180046078A (ko) 2016-10-27 2016-10-27 데이터베이스 리밸런싱 방법

Publications (1)

Publication Number Publication Date
KR20180046078A true KR20180046078A (ko) 2018-05-08

Family

ID=62021448

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160140885A KR20180046078A (ko) 2016-10-27 2016-10-27 데이터베이스 리밸런싱 방법

Country Status (3)

Country Link
US (1) US10664458B2 (ko)
KR (1) KR20180046078A (ko)
CN (1) CN108009196A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102047233B1 (ko) * 2018-10-22 2019-11-21 강릉원주대학교산학협력단 이중 부하 분산을 이용한 메타데이터 검색 시스템 및 이중 부하 분산을 통한 데이터베이스 관리 방법
KR20210047503A (ko) * 2019-10-22 2021-04-30 한국항공대학교산학협력단 블록 동기화 과정 생략 및 원격 저장소 제공을 위한 분산파일시스템 활용 블록 데이터 매핑 방법 및 노드 장치

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089307B2 (en) * 2014-12-31 2018-10-02 International Business Machines Corporation Scalable distributed data store
US11030169B1 (en) * 2017-03-07 2021-06-08 Amazon Technologies, Inc. Data re-sharding
US11372761B1 (en) * 2020-12-11 2022-06-28 International Business Machines Corporation Dynamically adjusting partitioned SCM cache memory to maximize performance

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070191A (en) * 1997-10-17 2000-05-30 Lucent Technologies Inc. Data distribution techniques for load-balanced fault-tolerant web access
JP4579000B2 (ja) * 2005-02-14 2010-11-10 株式会社日立製作所 計算機システムにおけるデータ配置設定
US20080065704A1 (en) * 2006-09-12 2008-03-13 Microsoft Corporation Data and replica placement using r-out-of-k hash functions
US7886172B2 (en) * 2007-08-27 2011-02-08 International Business Machines Corporation Method of virtualization and OS-level thermal management and multithreaded processor with virtualization and OS-level thermal management
US8365177B2 (en) * 2009-01-20 2013-01-29 Oracle International Corporation Dynamically monitoring and rebalancing resource allocation of monitored processes based on execution rates of measuring processes at multiple priority levels
US8156304B2 (en) * 2009-12-04 2012-04-10 Oracle International Corporation Dynamic data storage repartitioning
US8307014B2 (en) 2010-08-25 2012-11-06 International Business Machines Corporation Database rebalancing in hybrid storage environment
US8595192B1 (en) * 2010-12-01 2013-11-26 Symantec Corporation Systems and methods for providing high availability to instance-bound databases
JP5573737B2 (ja) * 2011-03-17 2014-08-20 富士通株式会社 情報処理プログラム、情報処理装置、及び情報処理方法
US8799248B2 (en) * 2011-04-26 2014-08-05 Brian J. Bulkowski Real-time transaction scheduling in a distributed database
US9201742B2 (en) * 2011-04-26 2015-12-01 Brian J. Bulkowski Method and system of self-managing nodes of a distributed database cluster with a consensus algorithm
US20120290714A1 (en) * 2011-05-13 2012-11-15 Nokia Corporation Method and apparatus for providing heuristic-based cluster management
US10387448B2 (en) * 2012-05-15 2019-08-20 Splunk Inc. Replication of summary data in a clustered computing environment
US9053166B2 (en) * 2012-12-10 2015-06-09 Microsoft Technology Licensing, Llc Dynamically varying the number of database replicas
CA2867589A1 (en) * 2013-10-15 2015-04-15 Coho Data Inc. Systems, methods and devices for implementing data management in a distributed data storage system
JP6269140B2 (ja) * 2014-02-14 2018-01-31 富士通株式会社 アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置
US10455041B2 (en) * 2014-02-20 2019-10-22 Rovio Entertainment Stateful service with partial replication
US9378067B1 (en) * 2014-05-08 2016-06-28 Springpath, Inc. Automated load balancing across the distributed system of hybrid storage and compute nodes
US9906589B2 (en) * 2014-11-14 2018-02-27 Facebook, Inc. Shared management service
US20180024853A1 (en) * 2015-02-17 2018-01-25 Coho Data, Inc. Methods, systems, devices and appliances relating to virtualized application-layer space for data processing in data storage systems
US9848041B2 (en) * 2015-05-01 2017-12-19 Amazon Technologies, Inc. Automatic scaling of resource instance groups within compute clusters
US10291707B1 (en) * 2015-05-18 2019-05-14 Twitter, Inc. Systems and methods for balancing storage resources in a distributed database

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102047233B1 (ko) * 2018-10-22 2019-11-21 강릉원주대학교산학협력단 이중 부하 분산을 이용한 메타데이터 검색 시스템 및 이중 부하 분산을 통한 데이터베이스 관리 방법
KR20210047503A (ko) * 2019-10-22 2021-04-30 한국항공대학교산학협력단 블록 동기화 과정 생략 및 원격 저장소 제공을 위한 분산파일시스템 활용 블록 데이터 매핑 방법 및 노드 장치

Also Published As

Publication number Publication date
US20180121474A1 (en) 2018-05-03
CN108009196A (zh) 2018-05-08
US10664458B2 (en) 2020-05-26

Similar Documents

Publication Publication Date Title
US9990147B2 (en) Methods and apparatus for optimizing resource utilization in distributed storage systems
US11228647B2 (en) System and method for sharing SAN storage
US9952786B1 (en) I/O scheduling and load balancing across the multiple nodes of a clustered environment
US10078533B2 (en) Coordinated admission control for network-accessible block storage
EP2791813B1 (en) Load balancing in cluster storage systems
KR20180046078A (ko) 데이터베이스 리밸런싱 방법
US9658779B2 (en) Computer system and control method for computer system
US11847098B2 (en) Metadata control in a load-balanced distributed storage system
US9703504B2 (en) Storage system, recording medium storing data rebalancing program, and data rebalancing method
US9906596B2 (en) Resource node interface protocol
CN111712802B (zh) 数据存储系统中的虚拟存储驱动器管理
US20180039444A1 (en) Storage system and data control method
JPWO2014041591A1 (ja) 管理装置及び管理方法
US10250673B1 (en) Storage workload management using redirected messages
WO2014162586A1 (ja) ストレージシステムおよびストレージシステム制御方法
US20120246206A1 (en) File server system and storage control method
US20180004430A1 (en) Chunk Monitoring
US20230221897A1 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
US9164885B2 (en) Storage control device, storage control method, and recording medium
US20160103714A1 (en) System, method of controlling a system including a load balancer and a plurality of apparatuses, and apparatus
WO2017098591A1 (ja) 計算機及びストレージ装置を有するシステム、及びシステムの制御方法
JP7057408B2 (ja) 記憶システム及びその制御方法
CN117667393A (zh) 一种基于hdfs写数据均衡的策略方法
JP2012168840A (ja) ストレージシステム、ストレージ方法、及びプログラム