KR102351220B1 - 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치 - Google Patents

대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치 Download PDF

Info

Publication number
KR102351220B1
KR102351220B1 KR1020210133618A KR20210133618A KR102351220B1 KR 102351220 B1 KR102351220 B1 KR 102351220B1 KR 1020210133618 A KR1020210133618 A KR 1020210133618A KR 20210133618 A KR20210133618 A KR 20210133618A KR 102351220 B1 KR102351220 B1 KR 102351220B1
Authority
KR
South Korea
Prior art keywords
data
slave
master
replica set
manager
Prior art date
Application number
KR1020210133618A
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 KR1020210133618A priority Critical patent/KR102351220B1/ko
Application granted granted Critical
Publication of KR102351220B1 publication Critical patent/KR102351220B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed 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
    • G06F16/214Database migration support
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

복수 개의 데이터베이스(database, DB)들을 포함하는 장치가 수행하는 방법에 있어서, 획득한 데이터를 분산하여 제1 데이터 및 제2 데이터를 생성하고; 상기 제1 데이터를 상기 제1 레플리카 세트의 제1 마스터 DB에 저장하고; 상기 제1 마스터 DB는 상기 제1 데이터를 복제하여 상기 제1 레플리카 세트의 제1 슬레이브 DB에 전송하고; 상기 제1 슬레이브 DB는 상기 제1 데이터를 저장하고; 상기 제1 슬레이브 DB로부터 상기 제1 데이터를 로딩하고; 상기 제2 데이터를 상기 제2 레플리카 세트의 제2 마스터 DB에 저장하고; 상기 제2 마스터 DB는 상기 제2 데이터를 복제하여 상기 제2 레플리카 세트의 제2 슬레이브 DB에 전송하고; 상기 제2 슬레이브 DB는 상기 제2 데이터를 저장하고; 및 상기 제2 슬레이브 DB로부터 상기 복제된 제2 데이터를 로딩하는 것을 포함하되, 상기 제1 레플리카 세트는 상기 제1 마스터 DB, 상기 제1 슬레이브 DB, 및 제1 매니저를 포함하고, 상기 제2 레플리카 세트는 상기 제2 마스터 DB, 상기 제2 슬레이브 DB, 및 제2 매니저를 포함하고, 상기 제1 매니저가 상기 제2 마스터 DB 또는 상기 제2 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성되고, 또는 상기 제2 매니저가 상기 제1 마스터 DB 또는 상기 제1 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성되는 방법이 제공될 수 있다.

Description

대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 DB 이중화 방법 및 이를 지원하는 장치{DATABASE DUPLEXING METHOD FOR EFFICIENT SERVER LOAD DISTRIBUTION WHEN PROCESSING LARGE AMOUNTS OF DATA AND APPARATUS THEREOF}
본 발명은 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위해 데이터베이스를 이중화시키는 방법에 관한 것이다.
메모리(In-memory) 데이터베이스(DB: database)는 일반적으로 적은 용량의 데이터를 캐시(cache)에 저장하는 용도로 개발되어 있어, 대용량 데이터 처리에는 맞지 않는 것이 현실이다.
이에 빅데이터 또는 대용량 데이터의 처리를 위해 DBMS 개발사들이 HA(high availability)를 위한 레플리카 세트(replica set) 구성을 지원하고 있다.
미국특허출원공보 제14/145,444호, 2013.12.31 특허공개공보 제10-2020-0100173호, 2018.07.06
DBMS(데이터베이스 관리 시스템)는 데이터가 레플리카 세트(replica set)에 자동으로 분산되어 저장되도록 지원하고 있다. 그러나 입력되는 데이터의 양이 매우 많은 경우엔 DBMS에서 데이터를 판단하고 나누고 저장하는 연산시간이 더 소요되므로 오히려 독립 방식(Standalone)이나 한 개의 레플리카 세트만 사용하는 경우 보다 성능이 떨어지는 문제점이 발생하게 된다.
본 발명은 이와 같은 문제를 해결하기 위한 DB 레플리카 세트의 구성을 제공하고자 한다. 구체적으로, 본 발명은 효율적인 부하 분산을 위해 DB 레플리카 세트에 포함된 마스터 DB 및 슬레이브 DB가 각각 하나의 서버에 포함되도록 한다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 해결하기 위한 본 발명의 일 실시예에 따르면 복수 개의 데이터베이스(database, DB)들을 포함하는 장치가 수행하는 방법에 있어서, 획득한 데이터를 분산하여 제1 데이터 및 제2 데이터를 생성하고; 상기 제1 데이터를 상기 제1 레플리카 세트의 제1 마스터 DB에 저장하고; 상기 제1 마스터 DB는 상기 제1 데이터를 복제하여 상기 제1 레플리카 세트의 제1 슬레이브 DB에 전송하고; 상기 제1 슬레이브 DB는 상기 제1 데이터를 저장하고; 상기 제1 슬레이브 DB로부터 상기 제1 데이터를 로딩하고; 상기 제2 데이터를 상기 제2 레플리카 세트의 제2 마스터 DB에 저장하고; 상기 제2 마스터 DB는 상기 제2 데이터를 복제하여 상기 제2 레플리카 세트의 제2 슬레이브 DB에 전송하고; 상기 제2 슬레이브 DB는 상기 제2 데이터를 저장하고; 및 상기 제2 슬레이브 DB로부터 상기 복제된 제2 데이터를 로딩하는 것을 포함할 수 있다.
상기 제1 레플리카 세트는 상기 제1 마스터 DB, 상기 제1 슬레이브 DB, 및 제1 매니저를 포함하고, 상기 제2 레플리카 세트는 상기 제2 마스터 DB, 상기 제2 슬레이브 DB, 및 제2 매니저를 포함할 수 있다.
상기 제1 매니저가 상기 제2 마스터 DB 또는 상기 제2 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성될 수 있다.
상기 제2 매니저가 상기 제1 마스터 DB 또는 상기 제1 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성될 수 있다.
상기 제1 매니저를 사용할 수 없는 경우, 상기 제1 마스터 DB와 상기 제1 슬레이브 DB는 상기 제2 매니저에 연결될 수 있다.
상기 제2 매니저를 사용할 수 없는 경우, 상기 제2 마스터 DB와 상기 제2 슬레이브 DB는 상기 제1 매니저에 연결될 수 있다.
상기 제1 데이터를 상기 제1 마스터 DB에 저장하는 것은 상기 제1 마스터 DB의 바이너리 로그(binary log) 파일에 저장하는 것을 더 포함할 수 있다.
상기 제1 데이터를 상기 제1 슬레이브 DB에 저장하는 것은 상기 제1 슬레이브 DB의 릴레이 로그(relay log)파일에 저장하는 것을 더 포함할 수 있다.
상기 제1 레플리카 세트를 사용할 수 없는 경우, 상기 제1 데이터는 상기 제2 레플리카 세트 내에서 처리될 수 있다.
상기 제2 레플리카 세트를 사용할 수 없는 경우, 상기 제2 데이터는 상기 제1 레플리카세트 내에서 처리될 수 있다.
상기 제1 마스터 DB, 상기 제1 슬레이브 DB, 상기 제2 마스터 DB, 및 상기 제2 슬레이브 DB는 같은 서버에 구성되지 않도록 구성될 수 있다.
상기 방법은 N-1번째 레플리카 세트와 N번째 레플리카 세트를 상보적으로 구성하는 것을 포함할 수 있다.
상기 N-1번째 레플리카 세트와 상기 N번째 레플리카 세트를 상보적으로 구성하는 것은: 상기 N번째 레플리카 세트의 마스터 DB 또는 슬레이브 DB와 상기 N-1번째 레플리카 세트의 매니저는 같은 서버에 포함되도록 구성하거나, 또는 상기 N-1번째 레플리카 세트의 마스터 DB 또는 슬레이브 DB와 상기 N번째 레플리카 세트의 매니저는 같은 서버에 포함되도록 구성하는 것을 포함할 수 있다.
상기 방법은 레플리카 세트를 증설하는 것을 더 포함할 수 있다.
상기 레플리카 세트를 증설하는 것은 2개의 레플리카 세트 당 4개의 서버가 할당되도록 2의 배수 단위의 개수로 레플리카 세트를 증설하는 것을 포함할 수 있다.
상기 제1 데이터를 상기 제1 마스터 DB에 저장하고; 상기 제1 슬레이브 DB로부터 상기 제1 데이터를 로딩하고; 상기 제2 데이터를 상기 제2 마스터 DB에 저장하고; 및 상기 제2 슬레이브 DB로부터 상기 제2 데이터를 로딩하는 것이 상기 DB 커넥터를 통해 수행될 수 있다.
본 발명의 일 실시예에 따르면, 복수 개의 데이터베이스(database, DB)들을 포함하는 장치를 제공할 수 있다.
상기 장치는 데이터를 저장하도록 구성된 메모리; 및 상기 메모리와 연결된 하나 이상의 프로세서를 포함할 수 있다.
상기 하나 이상의 프로세서는: 획득한 데이터를 분산하여 제1 데이터 및 제2 데이터를 생성하고; 상기 제1 데이터를 상기 제1 레플리카 세트의 제1 마스터 DB에 저장하고; 상기 제1 마스터 DB는 상기 제1 데이터를 복제하여 상기 제1 레플리카 세트의 제1 슬레이브 DB에 전송하고; 상기 제1 슬레이브 DB는 상기 제1 데이터를 저장하고; 상기 제1 슬레이브 DB로부터 상기 제1 데이터를 로딩하고; 상기 제2 데이터를 상기 제2 레플리카 세트의 제2 마스터 DB에 저장하고; 상기 제2 마스터 DB는 상기 제2 데이터를 복제하여 상기 제2 레플리카 세트의 제2 슬레이브 DB에 전송하고; 상기 제2 슬레이브 DB는 상기 제2 데이터를 저장하고; 및 상기 제2 슬레이브 DB로부터 상기 복제된 제2 데이터를 로딩하도록 구성될 수 있다.
상기 제1 레플리카 세트는 상기 제1 마스터 DB, 상기 제1 슬레이브 DB, 및 제1 매니저를 포함할 수 있다.
상기 제2 레플리카 세트는 상기 제2 마스터 DB, 상기 제2 슬레이브 DB, 및 제2 매니저를 포함할 수 있다.
상기 하나 이상의 프로세서는: 제1 마스터 DB, 제1 슬레이브 DB, 및 제1 매니저를 포함하는 제1 레플리카 세트를 구성하고; 및 제2 마스터 DB, 제2 슬레이브 DB, 및 제2 매니저를 포함하는 제2 레플리카 세트를 구성하도록 구성될 수 있다.
상기 제1 매니저는 상기 제2 마스터 DB 또는 상기 제2 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성되고, 또는 상기 제2 매니저는 상기 제1 마스터 DB 또는 상기 제1 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성될 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명에 따르면 많은 양의 데이터를 DBMS의 최소 두 개 이상의 레플리카 세트에 나누어 저장함으로써 효율적인 서버 부하 분산의 효과가 있으며 DB의 Disk I/O(입출력, input/output)로 인한 지연을 최소화할 수 있다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
본 발명에 대한 이해를 돕기 위해 상세한 설명의 일부로 포함된, 첨부 도면은 다양한 실시예들을 제공하고, 상세한 설명과 함께 다양한 실시예들의 기술적 특징을 설명한다.
도 1은 데이터베이스 시스템을 도시한 도면이다.
도 2는 데이터베이스의 마스터(Master)-슬레이브(Slave) 구조의 일 예시를 도시한 도면이다.
도 3은 본 발명에 따른 마스터 DB와 슬레이브 DB를 포함하는 두 개의 레블리카 세트를 도시한 도면이다.
도 4는 DBMS에서 레플리카 세트에 자동으로 데이터를 나누어 저장되도록 지원하는 경우의 일 실시예를 도시한 도면이다.
도 5는 본 발명에 따른 레플리카 세트를 이용하여 부하 분산 처리를 하는 경우에 대한 일 실시예를 도시한 도면이다.
도 6은 본 발명에 따른 DBMS 자체 기능이 아닌 레플리카 세트를 이용하여 부하 분산 처리를 하는 경우에 대한 다른 실시예를 도시한 도면이다.
도 7은 본 발명에 따른 레플리카 세트를 이용하여 부하 분산 처리하는 과정을 도시한 도면이다.
도 8은 본 발명이 구현될 수 있는 장치의 일 예를 도시한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 구성요소와 다른 구성요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 구성요소들의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들어, 도면에 도시되어 있는 구성요소를 뒤집을 경우, 다른 구성요소의 "아래(below)"또는 "아래(beneath)"로 기술된 구성요소는 다른 구성요소의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 구성요소는 다른 방향으로도 배향될 수 있으며, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
이하, 본 명세서에 따른 바람직한 실시 형태를 첨부된 도면을 참조하여 상세하게 설명한다. 첨부된 도면과 함께 이하에 개시될 상세한 설명은 다양한 실시예들의 예시적인 실시형태를 설명하고자 하는 것이며, 유일한 실시형태를 나타내고자 하는 것이 아니다.
본 발명에서 사용되는 용어의 정의는 다음과 같다.
DBS(database system): 데이터베이스 시스템이란 데이터베이스에 데이터를 저장하고, 저장된 데이터를 관리하여 조직에 필요한 정보를 생성해주는 시스템이다. 본 발명의 데이터베이스 시스템은 데이터베이스와 데이터베이스 관리 시스템을 이용해 조직에 필요한 정보를 제공해주는 역할을 한다.
DB(database): 일반적으로 데이터베이스는 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합이라고 정의된다. 데이터베이스는 유용하게 활용할 수 있는 정보를 정확히 추출할 수 있도록 복잡한 데이터를 대신 관리해주는 역할을 한다.
DBMS(database management system): 데이터베이스 관리 시스템은 데이터베이스를 관리하며 응용 프로그램들이 데이터베이스를 공유하며 사용할 수 있는 환경을 제공하는 소프트웨어이다. DBMS은 데이터베이스를 구축하는 틀을 제공하고 효율적으로 데이터를 검색하고 저장하는 기능을 제공한다. DBMS는 프로그램 별로 흩어져 있는 자료들을 통합하고 통합된 자료들을 각 프로그램이 공유하여 정보를 체계적으로 활용할 수 있도록 한다. 일반적 형태의 DBMS는 관계형 데이터베이스 관리시스템(RDBMS)이고, RDBMS의 표준화된 사용자 및 프로그램 인터페이스를 SQL(structured query language)이라고 한다.
SQL(structured query language): SQL은 데이터베이스를 구축하고 활용하기 위해 사용하는 언어이다. SQL은 크게 데이터 정의언어(DDL: Data Definition Language)와 데이터 조작 언어(DML: Data Manipulation Language)로 나뉜다.
NoSQL(non SQL, not only SQL): 빅데이터 처리를 위한 비관계형(non-relational) DBMS로, 대규모의 데이터를 유연하게 처리할 수 있다. 노에스큐엘(NoSQL)은 테이블-컬럼과 같은 스키마 없이, 분산 환경에서 단순 검색 및 추가 작업을 위한 키 값을 최적화하고, 지연(latency)과 처리율(throughput)이 우수하다. NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 레이턴시와 스루풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다. NoSQL 데이터베이스는 빅데이터와 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다. 또, NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 "Not only SQL"로 불리기도 한다.
DB 클러스터링(clustering): DB 클러스터링이란 여러 개의 DB를 묶어서 수평적인 구조로 구축하여 하나처럼 사용하는 방식이다.
DB 리플리케이션(replication): DB 리플리케이션이란 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축함으로써 데이터를 복제하는 방식이다. 앞서 살펴본 클러스터링 방식의 경우 서버를 여러 대 사용하지만 결국 물리적인 storage는 하나이기 때문에 문제가 발생한다. 리플리케이션은 이런 문제를 해결하기 위해 서버와 함께 storage도 복제한다. 복제된 DB는 master와 slave로 역할이 나뉠 수 있다.
도 1은 데이터베이스 시스템을 도시한 도면이다.
데이터베이스 시스템은 도 1과 같이 데이터베이스(DB: database), 데이터베이스 관리 시스템 (DBMS: database management system), 데이터베이스 언어(database language) 그리고 사용자로 구성된다. (또는 데이터베이스와 데이터베이스 관리 시스템 외에도 사용자, 사용자가 데이터베이스에 접근하는 데 사용하는 데이터 언어, 데이터베이스와 데이터베이스 관리 시스템을 설치하고 데이터 처리 연산을 담당하는 컴퓨터로 구성된다.)
데이터베이스는 한 조직의 여러 응용 시스템이 공유하기 위해(shared) 최소한의 중복으로 통합되고(integrated), 저장된(stored) 운영 데이터의 집합을 의미한다.
데이터베이스 언어는 데이터베이스를 구축, 조작, 검색하는데 사용되는 프로그래밍 언어이다.
사용자는 크게 1) 데이터베이스 시스템을 관리하고 운영하는 데이터베이스 관리자(DBA: database administrator), 2) 개발 툴을 사용하여 데이터베이스 응용프로그램을 개발하는 데이터베이스 응용 프로그래머(DB application programmer), 및 3) 데이터베이스를 사용하는 사용자(일반 사용자 또는 최종 사용자(end user))로 분류된다.
데이터베이스 관리 시스템(DBMS)은 응용 프로그램과 데이터베이스의 중재자 역할을 하며, 따라서 데이터베이스는 응용 프로그램들이 직접 조작하지 않고 DBMS를 통해 조작, 관리된다.
도 2는 데이터베이스의 마스터(Master)-슬레이브(Slave) 구조의 일 예시를 도시한 도면이다.
도 2에 따르면, DB의 고가용성(high availability)를 위한 레플리카 세트를 제공하기 위해 두 개 이상의 DB를 마스터 및 슬레이브 로 나누어 동일한 데이터를 저장하는 방식을 개시하고 있다. DB의 고가용성란 시스템의 장애 피해 등으로부터 가동률을 높이기 위하여 데이터베이스와 관련된 장비를 다중화 시키는 것이다.
도 2를 참조하면, DB의 고가용성 기능은 각기 다른 서버에 두 개 이상의 DB를 구성하여 매니저(manager), 마스터 DB, 슬레이브 DB 로 설정되는 레플리카 세트를 통해 구현된다.
매니저는 마스터 DB 와 슬레이브 DB의 상태를 주기적으로 체크하여 마스터 DB를 선출하는 역할을 한다.
일반적으로 마스터 DB는 삽입(insert)/삭제(delete)/업데이트(update)와 같이 데이터가 변경되는 경우에 사용되고, 슬레이브 DB는 데이터의 조회(선택, select) 처리에 사용된다. 따라서 마스터 DB 와 슬레이브 DB에서 디스크 입출력(Disk input/output)이 많이 발생한다.
예시적인 실시예에 따르면, 마스터 DB 또는 슬레이브 DB의 개수는 하나 또는 두개 이상이 될 수 있다.
도 2는 DBMS 자체 기능을 이용하여 부하 분산을 시키는 경우를 도시한다.
마스터 DB는 삽입/삭제/업데이트 쿼리 요청을 받으면 변경을 기록하기 위한 Binarylog를 생성하고 변경 기록 또는 변경된 데이터를 슬레이브 DB로 전달할 수 있다. 마스터 DB의 데이터는 복제(replication)되어 슬레이브 DB에 저장되며, 슬레이브 DB는 데이터의 읽기(read) 또는 선택(select) 요청을 담당한다.
이와 같이, DBMS는 쿼리의 대부분을 차지하는 select 요청을 슬레이브 DB가 분담함으로써 DB 부하를 분산시키고 read 성능을 향상시킬 수 있다.
DBMS에 따라 자동으로 전술된 작업이 수행될 수도 있다. 이는 마스터 DB에 데이터가 삽입(insert)되면 자동으로 실시간으로 슬레이브 DB에 복제하여 최소 두 개 이상의 데이터 세트가 유지될 수 있도록 하기 위함이다.
도 3은 본 발명에 따른 마스터 DB와 슬레이브 DB를 포함하는 두 개의 레블리카 세트를 도시한 도면이다.
도 3을 참조하면 DBMS가 2개의 레플리카 세트를 포함하고, 각각의 레플리카 세트는 마스터 DB, 슬레이브 DB, 및 매니저(manager)를 포함할 수 있다.
DBMS는 각각의 레플리카 세트에 자동으로 데이터를 나누어 저장하도록 지원한다.
각각의 레플리카 세트에 데이터를 삽입(insert) 또는 선택(select)하는 것은 DB 커넥터(DB connector)를 통해 처리되도록 도시되어 있으나, DB 커넥터 없이도 프로세서(또는 프로세싱 시스템)가 직접 레플리카 세트의 슬레이브 DB로부터 데이터 선택(SELECT)을 하거나 데이터를 레플리카 세트의 마스터 DB에 삽입(INSERT)하는 것도 가능하다.
도 4는 DBMS에서 레플리카 세트에 자동으로 데이터가 나누어 저장되는 과정의 일 실시예를 도시한 도면이다.
도 4를 참조하면, 마스터 DB, 슬레이브 DB, 및 매니저가 6개의 서버 각각에 하나씩 할당되어있으며 제1 레플리카 세트(DB Replica Set #1) 및 제2 레플리카 세트(DB Replica Set #2)는 각각 마스터 DB, 슬레이브 DB, 매니저를 포함할 수있다.
도 4의 DB 커넥터/프록시는 컴퓨터 네트워크에서 다른 서버로의 자원 요청을 중계하는 서버로, 분산 시스템의 구조를 단순화하고 캡슐화하여 서비스의 복잡도를 줄이는 역할을 한다.
프로세싱 시스템은 데이터를 가공하여 DB 커넥터/프록시에 저장하고, 및 DB 커넥터/프록시에 저장된 데이터를 읽어올 수 있다.
구체적으로, 프로세싱 시스템은 데이터를 1차적으로 가공하고, 1차 가공된 데이터(이하, 제1 데이터)를 DB 커넥터/프록시)를 통하여 제1 레플리카 세트의 마스터 DB에 저장한다(S401).
마스터 DB는 제1 데이터를 저장한다. 또한, 마스터 DB는 제1 데이터를 복제하여 제1 레플리카 세트의 슬레이브 DB에 전송한다. 슬레이브 DB는 마스터 DB로부터 수신한 제1 데이터를 저장한다.
프로세싱 시스템은 DB 커넥터/프록시를 통해 슬레이브 DB에 저장된 제1 데이터를 읽어온다(read, select) (S403).
프로세싱 시스템은 데이터를 2차 가공하고, 2차 가공된 데이터(이하, 제2 데이터)를 DB 커넥터/프록시를 통해 제2 레플리카 세트의 마스터 DB에 저장한다(S405).
마스터 DB는 제2 데이터를 복제하여 제2 레플리카 세트의 슬레이브 DB에 전달하고, 슬레이브 DB는 제2 데이터를 저장한다.
마스터 DB는 제2 데이터를 저장한다. 또한, 마스터 DB는 제2 데이터를 복제하여 제2 레플리카 세트의 슬레이브 DB에 전송한다. 슬레이브 DB는 마스터 DB로부터 수신한 제2 데이터를 저장한다.
프로세싱 시스템은 DB 커넥터/프록시를 통해 슬레이브 DB에 저장된 제2 데이터를 읽어온다(read, select)(S407).
상기 과정에서 매니저는 마스터 DB 및 슬레이브 DB의 상태를 주기적으로 체크하고, 마스터 DB가 될 대상을 지속적으로 업데이트하는 역할을 한다.
상기 과정에서 매니저에 오류가 발생, 매니저에 연결할 수 없는 경우 등 매니저를 사용할 수 없는 경우가 있을 수 있다. 이와 같이 매니저를 사용할 수 없는 경우, DB 커넥터가 매니저의 역할을 대신 수행할 수 있다.
상기와 같은 과정을 통해, 2 개 이상의 DB 레플리카 세트를 사용하여 DB의 부하 분산을 통해 성능을 향상시킬 수 있다.
이하 두 개 이상의 DB 레플리카 세트를 사용하는 경우, DB의 부하 분산을 통해 성능을 높일 수 있는 또 다른 방안을 개시한다.
도 5는 본 발명에 따른 레플리카 세트를 이용하여 부하 분산 처리를 하는 경우에 대한 일 실시예를 도시한 도면이다.
도 5는 프로세싱 시스템에서 데이터를 제1 데이터와 제2 데이터로 분산하는 경우의 예시를 도시하고 있다.
제1 데이터는 제1 레플리카 세트(DB Replica Set #1)의 마스터 DB(이하 제1 마스터 DB)에 입력된다(insert, write)(S501).
제1 마스터 DB는 제1 데이터를 저장하고, 제1 데이터를 복제하여 제1 레플리카 세트의 슬레이브 DB(이하 제1 슬레이브 DB)에 전달한다. 제1 마스터 DB는 Binary Log 파일에 제1 데이터를 저장할 수 있다.
제1 슬레이브 DB는 제1 마스터 DB로부터 수신한 제1 데이터를 저장하고, 프로세싱 시스템은 제1 데이터를 읽을 때 제1 슬레이브 DB로부터 읽어온다(read, select)(S503). 제1 슬레이브 DB는 Relay Log 파일에 제1 데이터를 저장할 수 있다.
제2 데이터는 제2 레플리카 세트(DB Replica Set #2)의 마스터 DB(이하 제2 마스터 DB)에 입력된다(S505).
제2 마스터 DB는 제2 데이터를 저장하고, 제2 데이터를 복제하여 제2 레플리카 세트의 슬레이브 DB(이하 제2 슬레이브 DB)에 전달한다.
제2 슬레이브 DB는 제2 마스터 DB로부터 수신한 제2 데이터를 저장하고, 프로세싱 시스템은 제2 데이터를 읽을 때 제2 슬레이브 DB로부터 읽어온다(read, select)(S507).
상기 과정에서 DBMS에 오류가 생겨 제1 레플리카 세트를 사용할 수 없거나(깨지거나) 또는 제1 매니저를 사용할 수 없는 경우, 제1 마스터 DB와 제1 슬레이브 DB는 제2 매니저에 연결되고, 제2 레플리카 세트 내에서 처리(또는 운영)될 수 있다. 또한, 상기 과정에서 제2 레플리카 세트를 사용할 수 없거나 또는 제2 매니저를 사용할 수 없는 경우, 제2 마스터 DB와 제2 슬레이브 DB는 제1 매니저에 연결되고, 제2 레플리카 세트 내에서 처리될 수 있다.
이와 같은 연결 및 처리 과정은 임시적이고, 다시 레플리카 세트 또는 매니저를 사용할 수 있는 경우, 원래의 연결 형태로 복원될 수 있다.
도 5에는 DB 커넥터/프록시가 생략되어 있지만, DB 커넥터/프록시도 프로세싱 시스템과 레플리카 세트 사이에 구성될 수 있다.
상기 과정에서 매니저를 사용할 수 없는 경우, DB 커넥터는 마스터 DB 및 슬레이브 DB 사이를 연결시켜주는 역할을 수행할 수 있으며, 프로세싱 시스템과 마스터 DB 및 슬레이브 DB를 연결시켜주는 역할을 수행할 수도 있다.
이와 같은 연결은 임시적이고, 매니저를 다시 사용할 수 있는 경우 다시 매니저와 연결되어 원래의 형태로 복원된다.
데이터를 삽입/삭제/업데이트하도록 구성된 마스터 DB, 및 데이터를 조회/선택하도록 구성된 슬레이브 DB에는 데이터 처리량에 관한 컴퓨팅 파워가 많이 요구된다. 그에 비해, 매니저는 마스터 DB 및 슬레이브 DB의 상태를 주기적으로 체크하고, 마스터 DB가 될 대상을 지속적으로 업데이트할 뿐인 점에서 컴퓨팅 파워의 요구는 비교적 적다. 따라서, 데이터 처리에 대한 부하를 고려하기 위해서는 마스터 DB 및 슬레이브 DB의 부하가 매니저의 부하에 비해 우선한다.
도 5를 참조하면, 복수의 서버에 마스터 DB, 슬레이브 DB, 및 매니저를 적절히 분배시키되, 하나의 서버에 마스터 DB 및 슬레이브 DB 모두를 배치하지 않음으로써 하나의 서버에 부하의 집중이 방지될 수 있고, 컴퓨팅 능력 및 부하의 분산이 달성될 수 있다. 따라서, 레플리카 세트를 이용하여 DBMS를 이용하지 않고 서버간 부하 분산이 가능한 효과가 있다.
도 6은 본 발명에 따른 DBMS 자체 기능이 아닌 레플리카 세트를 이용하여 부하 분산 처리를 하는 경우에 대한 다른 실시예를 도시한 도면이다.
도 6은 레플리카 세트의 구성에 대한 개념도를 도시한 것이다.
DB 레플리카 세트를 구성하는 경우, 각 서버당 마스터 DB와 슬레이브 DB는 각각 하나씩 할당 가능하나, 매니저는 마스터 DB와 슬레이브 DB와 같은 서버에 할당(형성)되는 것이 가능하다.
따라서, 레플리카 세트 하나를 더 구성하는 경우 서버는 2개가 더 필요하다.
또는, 마스터 DB, 슬레이브 DB, 및 매니저 각각 상보적으로 구성되도록 하려면 2개의 레플리카 세트가 필요하고 이 경우 2개의 레플리카 세트 당 서버는 4개가 더 필요하다.
데이터를 처리하는 과정은 상기 도 5와 실질적으로 동일하므로 생략한다.
도 7은 본 발명에 따른 레플리카 세트를 이용하여 부하 분산 처리하는 과정을 도시한 도면이다.
프로세싱 시스템(또는 프로세서)은 획득한 데이터를 제1 데이터 및 제2 데이터로 분산 및 생성한다.
생성된 제1 데이터는 제1 레플리카 세트의 마스터 DB에 입력된다(write)(S701).
제1 레플리카 세트의 마스터 DB는 제1 데이터를 저장 및 복제한다(S703). 제1 데이터는 마스터 DB의 Binary Log 파일에 저장되고, 복제된 제1 데이터는 슬레이브 DB로 전송된다.
제1 레플리카 세트의 슬레이브 DB는 복제된 제1 데이터를 저장한다(S705). 제1 데이터는 슬레이브 DB의 Relay Log 파일에 저장된다.
데이터를 읽어오는 경우, 제1 레플리카 세트의 슬레이브 DB로부터 제1 데이터를 로딩한다(read)(S707). 즉 프로세싱 시스템이 슬레이브 DB에 저장된 데이터 중 제1 데이터를 선택하여 읽어오는 것이다.
제2 데이터는 제2 레플리카 세트의 마스터 DB에 입력된다(S709).
제2 레플리카 세트의 마스터 DB는 제2 데이터를 저장 및 복제한다(S711). 복제된 제1 데이터는 슬레이브 DB로 전송된다.
제2 레플리카 세트의 슬레이브 DB는 복제된 제2 데이터를 저장한다(S713).
데이터를 읽어오는 경우, 제2 레플리카 세트의 슬레이브 DB로부터 제2 데이터를 로딩한다(S715).
마스터 DB 및 슬레이브 DB는 같은 서버에 형성(구성)될 수 없다. 데이터를 삽입/삭제/업데이트하도록 구성된 마스터 DB, 및 데이터를 조회/선택하도록 구성된 슬레이브 DB에는 데이터 처리량에 관한 컴퓨팅 파워가 많이 요구되기 때문이다. 따라서 한 레플리카 세트에 포함된 마스터 DB 및 슬레이브 DB는 각각 다른 서버에 형성될 수 있으며, 또한 한 레플리카 세트에 포함된 마스터 DB 또는 슬레이브 DB와 같은 서버에 형성될 수 있는 것은 다른 레플리카 세트의 매니저뿐이다.
예를들어, 제1 레플리카 세트의 마스터 DB와 슬레이브 DB는 각각 다른 서버에 형성된다. 제2 레플리카 세트의 마스터 DB와 슬레이브 DB는 상기 제1 레플리카 세트의 마스터 DB 및 슬레이브 DB가 형성된 서버에 형성되지 않으며, 다른 서버에 형성된다. 매니저는 마스터 DB 또는 슬레이브 DB와 같은 서버에 형성될 수 있으므로, 제2 레플리카 세트의 매니저는 제1 레플리카 세트의 마스터 DB 또는 슬레이브 DB와 같은 서버에 형성될 수 있다.
레플리카 세트의 형성에 필요한 서버의 개수를 최소화하기 위해, 마스터 DB, 슬레이브 DB, 매니저가 포함된 제1 레플리카 세트가 형성된 후, 제2 레플리카 세트는 제1 레플리카 세트에 상보적인 형태로 형성될 수 있다.
예를들어, 제1 레플리카 세트의 마스터 DB 또는 슬레이브 DB가 형성된 서버에 제2 레플리카 세트의 매니저가 포함되도록 형성될 수 있다. 또한 제2 레플리카 세트의 마스터 DB 또는 슬레이브 DB가 형성된 서버에는 제3 레플리카 세트의 매니저가 포함되도록 형성될 수 있다. N번째 레플리카 세트의 마스터 DB 또는 슬레이브 DB가 형성된 서버에는 N-1번째 레플리카 세트의 매니저가 포함되도록 형성될 수 있다. 본 발명에서는 같은 레플리카 세트는 마스터 DB, 슬레이브 DB, 매니저를 포함하는 구성을 실시예로 들어 설명하고 있다. 이는 일 실시예이므로, 같은 레플리카 세트에 다수의 마스터 DB, 다수의 슬레이브 DB, 또는 다수의 매니저를 포함할 수도 있다.
본 발명에서는 "1) 데이터를 1차 가공 후 저장 및 해당 1차 가공된 데이터를 다시 읽음, 2) 데이터를 2차 가공 후 저장 및 해당 2차 가공된 데이터를 읽어 들임" 과정만 설명하였으나, 빅 데이터 또는 대용량의 데이터 처리 시, 실제로 더 많은 수의 DB 서버가 필요할 수 있다.
데이터의 양에 따라서 제1 레플리카 세트와 제2 레플리카 세트를 지속적으로 번갈아 가며 이용하여 데이터를 반복 처리하는 작업을 할 수 있다.
저장이 필요한 데이터의 양이 계속 증가되는 시스템의 경우엔, 지속적으로 레플리카 세트를 추가함으로써 DB를 늘릴 수도 있다.
이상에서 설명한 본 발명의 다양한 실시예들에 따르면 복수의 DB 레플리카 세트에 적절하게 데이터가 분산됨으로써 시스템 전체적인 성능이 향상되는 효과가있다.
도 8은 본 발명이 구현될 수 있는 장치의 일 예를 도시한 도면이다
도 8을 참고하면 장치는 입/출력부(310), 통신부(320), 센싱부(330), 데이터베이스(340) 및 프로세서(350)를 포함할 수 있다.
입/출력부(310)는 사용자 입력을 받거나 또는 사용자에게 정보를 출력하는 각종 인터페이스나 연결 포트 등일 수 있다. 입/출력부(310)는 입력 모듈과 출력 모듈로 구분될 수 있는데, 입력 모듈은 사용자로부터 사용자 입력을 수신한다. 사용자 입력은 키 입력, 터치 입력, 음성 입력을 비롯한 다양한 형태로 이루어질 수 있다. 이러한 사용자 입력을 받을 수 있는 입력 모듈의 예로는 전통적인 형태의 키패드나 키보드, 마우스는 물론, 사용자의 터치를 감지하는 터치 센서, 음성 신호를 입력 받는 마이크, 영상 인식을 통해 제스처 등을 인식하는 카메라, 사용자 접근을 감지하는 조도 센서나 적외선 센서 등으로 구성되는 근접 센서, 가속도 센서나 자이로 센서 등을 통해 사용자 동작을 인식하는 모션 센서 및 그 외의 다양한 형태의 사용자 입력을 감지하거나 입력 받는 다양한 형태의 입력 수단을 모두 포함하는 포괄적인 개념이다. 여기서, 터치 센서는 디스플레이 패널에 부착되는 터치 패널이나 터치 필름을 통해 터치를 감지하는 압전식 또는 정전식 터치 센서, 광학적인 방식에 의해 터치를 감지하는 광학식 터치 센서 등으로 구현될 수 있다. 이외에도 입력 모듈은 자체적으로 사용자 입력을 감지하는 장치 대신 사용자 입력을 입력 받는 외부의 입력 장치를 연결시키는 입력 인터페이스(USB 포트, PS/2 포트 등)의 형태로 구현될 수도 있다. 또 출력 모듈은 각종 정보를 출력해 사용자에게 이를 제공할 수 있다. 출력 모듈은 영상을 출력하는 디스플레이, 소리를 출력하는 스피커(및/또는 이와 연결된 증폭기(amplifier)), 진동을 발생시키는 햅틱 장치 및 그 외의 다양한 형태의 출력 수단을 모두 포함하는 포괄적인 개념이다. 이외에도 출력 모듈은 상술한 개별 출력 수단을 연결시키는 포트 타입의 출력 인터페이스의 형태로 구현될 수도 있다.
일 예로, 디스플레이 형태의 출력 모듈은 텍스트, 정지 영상, 동영상을 디스플레이 할 수 있다. 디스플레이는 액정 디스플레이(LCD: Liquid Crystal Display), 발광 다이오드(LED: light emitting diode) 디스플레이, 유기 발광 다이오드(OLED: Organic Light Emitting Diode) 디스플레이, 평판 디스플레이(FPD: Flat Panel Display), 투명 디스플레이(transparent display), 곡면 디스플레이(Curved Display), 플렉시블 디스플레이(flexible display), 3차원 디스플레이(3D display), 홀로그래픽 디스플레이(holographic display), 프로젝터 및 그 외의 영상 출력 기능을 수행할 수 있는 다양한 형태의 장치를 모두 포함하는 광의의 영상 표시 장치를 의미하는 개념이다. 이러한 디스플레이는 입력 모듈의 터치 센서와 일체로 구성된 터치 디스플레이의 형태일 수도 있다.
통신부(320)는 외부 기기와 통신할 수 있다. 따라서, 장치(디바이스)는 통신부를 통해 외부 기기와 정보를 송수신할 수 있다. 예를 들어, 장치는 통신부를 이용해 불법 주·정차 경고 시스템에 저장 및 생성된 정보들이 공유되도록 외부 기기와 통신을 수행할 수 있다.
여기서, 통신, 즉 데이터의 송수신은 유선 또는 무선으로 이루어질 수 있다. 이를 위해 통신부는 LAN(Local Area Network)를 통해 인터넷 등에 접속하는 유선 통신 모듈, 이동 통신 기지국을 거쳐 이동 통신 네트워크에 접속하여 데이터를 송수신하는 이동 통신 모듈, 와이파이(Wi-Fi) 같은 WLAN(Wireless Local Area Network) 계열의 통신 방식이나 블루투스(Bluetooth), 직비(Zigbee)와 같은 WPAN(Wireless Personal Area Network) 계열의 통신 방식을 이용하는 근거리 통신 모듈, GPS(Global Positioning System)과 같은 GNSS(Global Navigation Satellite System)을 이용하는 위성 통신 모듈 또는 이들의 조합으로 구성될 수 있다. 통신에 사용되는 무선 통신 기술은 저전력 통신을 위한 NB-IoT(Narrowband Internet of Things) 를 포함할 수 있다. 이때, 예를 들어 NB-IoT 기술은 LPWAN(Low Power Wide Area Network) 기술의 일례일 수 있고, LTE Cat(category) NB1 및/또는 LTE Cat NB2 등의 규격으로 구현될 수 있으며, 상술한 명칭에 한정되는 것은 아니다. 추가적으로 또는 대체적으로, 다양한 실시예들에 따른 무선 기기에서 구현되는 무선 통신 기술은 LTE-M 기술을 기반으로 통신을 수행할 수 있다. 이때, 일 예로, LTE-M 기술은 LPWAN 기술의 일례일 수 있고, eMTC(enhanced Machine Type Communication) 등의 다양한 명칭으로 불릴 수 있다. 예를 들어, LTE-M 기술은 1) LTE CAT 0, 2) LTE Cat M1, 3) LTE Cat M2, 4) LTE non-BL(non-Bandwidth Limited), 5) LTE-MTC, 6) LTE Machine Type Communication, 및/또는 7) LTE M 등의 다양한 규격 중 적어도 어느 하나로 구현될 수 있으며 상술한 명칭에 한정되는 것은 아니다. 추가적으로 또는 대체적으로, 다양한 실시예들에 따른 무선 기기에서 구현되는 무선 통신 기술은 저전력 통신을 고려한 지그비(ZigBee), 블루투스(Bluetooth) 및 저전력 광역 통신망(Low Power Wide Area Network, LPWAN) 중 적어도 어느 하나를 포함할 수 있으며, 상술한 명칭에 한정되는 것은 아니다. 일 예로 ZigBee 기술은 IEEE 802.15.4 등의 다양한 규격을 기반으로 소형/저-파워 디지털 통신에 관련된 PAN(personal area networks)을 생성할 수 있으며, 다양한 명칭으로 불릴 수 있다.
식별부(330)는 영상 인식을 통해 오브젝트 등을 인식하는 카메라, 오브젝트 접근을 감지하는 감지 센서 및 그 외의 다양한 형태의 외부 입력을 감지하거나 입력 받는 다양한 형태의 식별/센싱 수단을 모두 포함하는 포괄적인 개념일 수 있다. 식별부는 입/출력부(310) 내의 입력 모듈과 동일한 것으로 이해될 수 있거나 및/또는 입력 모듈과는 별도의 것으로 이해될 수도 있다. 식별부(330)는 지자기 센서(Magnetic sensor), 가속도 센서(Acceleration sensor), 온/습도 센서, 적외선 센서, 자이로스코프 센서, 위치 센서(예컨대, GPS), 기압 센서, 근접 센서, RGB 센서(illuminance sensor), 라이다(radar) 센서, 조도 센서, 및 전류 센서 중 하나 이상을 더 포함할 수 있으나, 이에 한정되는 것은 아니다. 각 센서들의 기능은 그 명칭으로부터 당업자가 직관적으로 추론할 수 있으므로, 구체적인 설명은 생략하기로 한다.
데이터베이스(340)는 각종 정보를 저장할 수 있다. 데이터베이스는 데이터를 임시적으로 또는 반영구적으로 저장할 수 있다. 예를 들어, 데이터베이스에는 제1 디바이스 및/또는 제2 디바이스를 구동하기 위한 운용 프로그램(OS: Operating System), 웹 사이트를 호스팅하기 위한 데이터나 또는 애플리케이션(예를 들어, 웹 애플리케이션)에 관한 데이터 등이 저장될 수 있다. 또, 데이터베이스는 상술한 바와 같이 모듈들을 컴퓨터 코드 형태로 저장할 수 있다.
데이터베이스(340)의 예로는 하드 디스크(HDD: Hard Disk Drive), SSD(Solid State Drive), 플래쉬 메모리(flash memory), 롬(ROM: Read-Only Memory), 램(RAM: Random Access Memory) 등이 있을 수 있다. 이러한 데이터베이스는 내장 타입 또는 탈부착 가능한 타입으로 제공될 수 있다.
프로세서(350)는 장치(디바이스)의 전반적인 동작을 제어한다. 이를 위해 프로세서(350)는 각종 정보의 연산 및 처리를 수행하고 제1 디바이스 및/또는 제2 디바이스의 구성요소들의 동작을 제어할 수 있다. 예를 들어, 프로세서(350)는 효율적인 서버 부하 분산이 되도록 데이터베이스를 이중화 시켜 대용량 데이터 처리를 수행하는 방법을 위한 프로그램 내지 애플리케이션을 실행시킬 수 있을 것이다. 프로세서(350)는 하드웨어 소프트웨어 또는 이들의 조합에 따라 컴퓨터나 이와 유사한 장치로 구현될 수 있다. 하드웨어적으로 프로세서(350)는 전기적인 신호를 처리하여 제어 기능을 수행하는 전자 회로 형태로 제공될 수 있으며, 소프트웨어적으로는 하드웨어적인 프로세서(240)를 구동시키는 프로그램 형태로 제공될 수 있다. 한편, 이하의 설명에서 특별한 언급이 없는 경우에는 제1 디바이스 및/또는 제2 디바이스의 동작은 프로세서(350)의 제어에 의해 수행되는 것으로 해석될 수 있다. 즉, 대용량 데이터의 반복 연산 및 저장 작업을 수행하는 경우 데이터베이스(340)의 Disk I/O 지연을 최소화하기 위해 데이터베이스 레플리카 세트를 이용한 부하 분산 처리를 수행하는 방법에 요구되는 모듈들이 실행되는 경우, 모듈들은 프로세서(350)가 제1 디바이스 및/또는 제2 디바이스를 이하의 동작들을 수행하도록 제어하는 것으로 해석될 수 있다.
요약하면, 본 발명은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 다양한 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명에 따른 방법은 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명에 따른 방법은 이하에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 예를 들어, 소프트웨어 코드는 메모리에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리는 상기 프로세서 내부 또는 외부에 위치할 수 있으며, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고받을 수 있다. 본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.
본 발명에 따르면, 데이터베이스(340)는 본 발명에서 master-slave 아키텍쳐를 갖는데, 레플리카 세트는 마스터 DB와 슬레이브 DB를 포함한다. 이‹š, 서버 별로 DB들이 오버랩되지 않도록 구성되어야 한다. 프로세서(350)는 데이터를 분산하여 각 레플리카 세트의 마스터 DB에 입력하고, 각 레플리카 세트의 슬레이브 DB로부터 데이터를 읽어오는 동작을 수행한다.
이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.
310: 입/출력부
320: 통신부
330: 식별부
340: 데이터베이스
350: 프로세서

Claims (11)

  1. 복수 개의 데이터베이스(database, DB)들을 포함하는 장치가 수행하는 방법에 있어서,
    획득한 데이터를 분산하여 제1 데이터 및 제2 데이터를 생성하고;
    상기 제1 데이터를 제1 레플리카 세트의 제1 마스터 DB에 저장하고;
    상기 제1 마스터 DB는 상기 제1 데이터를 복제하여 상기 제1 레플리카 세트의 제1 슬레이브 DB에 전송하고;
    상기 제1 슬레이브 DB는 상기 제1 데이터를 저장하고;
    상기 제1 슬레이브 DB로부터 상기 제1 데이터를 로딩하고;
    상기 제2 데이터를 제2 레플리카 세트의 제2 마스터 DB에 저장하고;
    상기 제2 마스터 DB는 상기 제2 데이터를 복제하여 상기 제2 레플리카 세트의 제2 슬레이브 DB에 전송하고;
    상기 제2 슬레이브 DB는 상기 제2 데이터를 저장하고; 및
    상기 제2 슬레이브 DB로부터 상기 복제된 제2 데이터를 로딩하는 것을 포함하되,
    상기 제1 레플리카 세트는 상기 제1 마스터 DB, 상기 제1 슬레이브 DB, 및 제1 매니저를 포함하고,
    상기 제2 레플리카 세트는 상기 제2 마스터 DB, 상기 제2 슬레이브 DB, 및 제2 매니저를 포함하고,
    상기 제1 매니저가 상기 제2 마스터 DB 또는 상기 제2 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성되고, 또는
    상기 제2 매니저가 상기 제1 마스터 DB 또는 상기 제1 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성되며,
    레플리카 세트를 증설하는 것을 더 포함하되,
    상기 레플리카 세트를 증설하는 것은 2개의 레플리카 세트 당 4개의 서버가 할당되도록 2의 배수 단위의 개수로 레플리카 세트를 증설하는 것을 특징으로 하는, 방법.
  2. 제1항에 있어서,
    상기 제1 매니저 또는 상기 제2 매니저를 사용할 수 없는 경우, 상기 제1 마스터 DB와 상기 제1 슬레이브 DB 사이의 연결 또는 상기 제2 마스터 DB와 상기 제2 슬레이브 DB 사이의 연결은 DB 커넥터를 사용하여 이루어지는 것을 특징으로 하는, 방법.
  3. 제1항에 있어서,
    상기 제1 매니저를 사용할 수 없는 경우, 상기 제1 마스터 DB와 상기 제1 슬레이브 DB는 상기 제2 매니저에 연결되고, 및
    상기 제2 매니저를 사용할 수 없는 경우, 상기 제2 마스터 DB와 상기 제2 슬레이브 DB는 상기 제1 매니저에 연결되는 것을 특징으로 하는, 방법.
  4. 제1항에 있어서,
    상기 제1 데이터를 상기 제1 마스터 DB에 저장하는 것은 상기 제1 마스터 DB의 바이너리 로그(binary log) 파일에 저장하는 것을 더 포함하는, 방법.
  5. 제1항에 있어서,
    상기 제1 데이터를 상기 제1 슬레이브 DB에 저장하는 것은 상기 제1 슬레이브 DB의 릴레이 로그(relay log)파일에 저장하는 것을 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 제1 레플리카 세트를 사용할 수 없는 경우, 상기 제1 데이터는 상기 제2 레플리카 세트 내에서 처리되고, 및
    상기 제2 레플리카 세트를 사용할 수 없는 경우, 상기 제2 데이터는 상기 제1 레플리카세트 내에서 처리되는 것을 특징으로 하는, 방법.
  7. 제1항에 있어서,
    상기 제1 마스터 DB, 상기 제1 슬레이브 DB, 상기 제2 마스터 DB, 및 상기 제2 슬레이브 DB는 같은 서버에 구성되지 않도록 구성되는 것을 특징으로 하는, 방법.
  8. 제1항에 있어서,
    N-1번째 레플리카 세트와 N번째 레플리카 세트를 상보적으로 구성하는 것을 더 포함하되,
    상기 N-1번째 레플리카 세트와 상기 N번째 레플리카 세트를 상보적으로 구성하는 것은:
    상기 N번째 레플리카 세트의 마스터 DB 또는 슬레이브 DB와 상기 N-1번째 레플리카 세트의 매니저는 같은 서버에 포함되도록 구성하거나, 또는
    상기 N-1번째 레플리카 세트의 마스터 DB 또는 슬레이브 DB와 상기 N번째 레플리카 세트의 매니저는 같은 서버에 포함되도록 구성하는 것을 포함하는 것을 특징으로 하는, 방법.
  9. 삭제
  10. 제2항에 있어서,
    상기 제1 데이터를 상기 제1 마스터 DB에 저장하고;
    상기 제1 슬레이브 DB로부터 상기 제1 데이터를 로딩하고;
    상기 제2 데이터를 상기 제2 마스터 DB에 저장하고; 및
    상기 제2 슬레이브 DB로부터 상기 제2 데이터를 로딩하는 것이 상기 DB 커넥터를 통해 수행되는 것을 더 특징으로 하는, 방법.
  11. 복수 개의 데이터베이스(database, DB)들을 포함하는 장치에 있어서,
    데이터를 저장하도록 구성된 메모리; 및
    상기 메모리와 연결된 하나 이상의 프로세서를 포함하고,
    상기 하나 이상의 프로세서는:
    획득한 데이터를 분산하여 제1 데이터 및 제2 데이터를 생성하고;
    상기 제1 데이터를 제1 레플리카 세트의 제1 마스터 DB에 저장하고;
    상기 제1 마스터 DB는 상기 제1 데이터를 복제하여 상기 제1 레플리카 세트의 제1 슬레이브 DB에 전송하고;
    상기 제1 슬레이브 DB는 상기 제1 데이터를 저장하고;
    상기 제1 슬레이브 DB로부터 상기 제1 데이터를 로딩하고;
    상기 제2 데이터를 제2 레플리카 세트의 제2 마스터 DB에 저장하고;
    상기 제2 마스터 DB는 상기 제2 데이터를 복제하여 상기 제2 레플리카 세트의 제2 슬레이브 DB에 전송하고;
    상기 제2 슬레이브 DB는 상기 제2 데이터를 저장하고; 및
    상기 제2 슬레이브 DB로부터 상기 복제된 제2 데이터를 로딩하도록 구성되며,
    상기 제1 레플리카 세트는 상기 제1 마스터 DB, 상기 제1 슬레이브 DB, 및 제1 매니저를 포함하고,
    상기 제2 레플리카 세트는 상기 제2 마스터 DB, 상기 제2 슬레이브 DB, 및 제2 매니저를 포함하고,
    상기 제1 매니저가 상기 제2 마스터 DB 또는 상기 제2 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성되고, 또는
    상기 제2 매니저가 상기 제1 마스터 DB 또는 상기 제1 슬레이브 DB와 같은 서버에 형성되어 상기 제1 레플리카 세트와 상기 제2 레플리카 세트가 상보적으로 구성되며,
    레플리카 세트를 증설하는 것을 더 포함하되,
    상기 레플리카 세트를 증설하는 것은 2개의 레플리카 세트 당 4개의 서버가 할당되도록 2의 배수 단위의 개수로 레플리카 세트를 증설하는 것을 특징으로 하는, 장치.
KR1020210133618A 2021-10-08 2021-10-08 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치 KR102351220B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210133618A KR102351220B1 (ko) 2021-10-08 2021-10-08 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210133618A KR102351220B1 (ko) 2021-10-08 2021-10-08 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치

Publications (1)

Publication Number Publication Date
KR102351220B1 true KR102351220B1 (ko) 2022-01-14

Family

ID=79342747

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210133618A KR102351220B1 (ko) 2021-10-08 2021-10-08 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치

Country Status (1)

Country Link
KR (1) KR102351220B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080102622A (ko) * 2007-05-21 2008-11-26 엔에이치엔(주) Dbms에서의 데이터 복제 방법 및 시스템
US20170206260A1 (en) * 2014-03-11 2017-07-20 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
KR20180076172A (ko) * 2016-12-27 2018-07-05 주식회사 씨에스리 데이터베이스 시스템의 이상을 탐지하는 장치 및 방법
WO2019088334A1 (ko) * 2017-11-01 2019-05-09 (주)데이터스트림즈 빅 데이터의 실시간 저장 및 검색 시스템
KR20200057409A (ko) * 2018-11-16 2020-05-26 네이버 주식회사 라이브 서비스를 위한 분산 파일 시스템 및 데이터 처리 방법
KR20200100173A (ko) 2018-07-06 2020-08-25 스노우플레이크 인코포레이티드 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080102622A (ko) * 2007-05-21 2008-11-26 엔에이치엔(주) Dbms에서의 데이터 복제 방법 및 시스템
US20170206260A1 (en) * 2014-03-11 2017-07-20 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
KR20180076172A (ko) * 2016-12-27 2018-07-05 주식회사 씨에스리 데이터베이스 시스템의 이상을 탐지하는 장치 및 방법
WO2019088334A1 (ko) * 2017-11-01 2019-05-09 (주)데이터스트림즈 빅 데이터의 실시간 저장 및 검색 시스템
KR20200100173A (ko) 2018-07-06 2020-08-25 스노우플레이크 인코포레이티드 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치
KR20200057409A (ko) * 2018-11-16 2020-05-26 네이버 주식회사 라이브 서비스를 위한 분산 파일 시스템 및 데이터 처리 방법

Similar Documents

Publication Publication Date Title
US11853283B2 (en) Dynamic aggregate generation and updating for high performance querying of large datasets
CN109144994B (zh) 索引更新方法、系统及相关装置
CN109074362B (zh) 分布式系统中的拆分和移动范围
US9037677B2 (en) Update protocol for client-side routing information
CN102770849B (zh) 当应用基于用户的安全性时优化数据高速缓存
CN101184106A (zh) 一种移动数据库的关联事务处理方法
US20180218019A1 (en) Processing messages of a plurality of devices
US11503149B2 (en) Device-cloud collaboration method, platform, and apparatus
US10540334B1 (en) Code generator platform for data transformation
AU2020256331B2 (en) Table-per-partition
US20220309063A1 (en) Query rewrite using materialized views with logical partition change tracking
US10713284B2 (en) Platform-based data segregation
US9569519B2 (en) Client-side directed commands to a loosely coupled database
KR101989074B1 (ko) 데이터베이스 샤딩 환경에서의 복제 로그 기반의 마이그레이션
KR102351220B1 (ko) 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치
US20200409972A1 (en) Method for synchronization of repository data using data criteria
US20200409969A1 (en) Method for automated query language expansion and indexing
US10956386B2 (en) Methods and apparatuses for automated performance tuning of a data modeling platform
CN115113989B (zh) 事务执行方法、装置、计算设备及存储介质
US11200208B2 (en) Removing non-deterministic behavior in a change data capture merge
JP6924898B2 (ja) トランザクション処理方法、装置及びデバイス
KR102338653B1 (ko) 대용량 데이터의 클러스터 환경에서 셔플링을 최소화하기 위해 노드별 분산 그룹핑 처리를 수행하는 방법 및 이를 지원하는 장치
US12032533B2 (en) Code generator platform for data transformation

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant