KR20230163272A - 데이터베이스 마이그레이션을 위한 시스템 및 방법 - Google Patents

데이터베이스 마이그레이션을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20230163272A
KR20230163272A KR1020220126613A KR20220126613A KR20230163272A KR 20230163272 A KR20230163272 A KR 20230163272A KR 1020220126613 A KR1020220126613 A KR 1020220126613A KR 20220126613 A KR20220126613 A KR 20220126613A KR 20230163272 A KR20230163272 A KR 20230163272A
Authority
KR
South Korea
Prior art keywords
database
data
migration
clone
online
Prior art date
Application number
KR1020220126613A
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 쿠팡 주식회사
Publication of KR20230163272A publication Critical patent/KR20230163272A/ko

Links

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/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
    • 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/2379Updates performed during online database operations; commit processing
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

하나 이상의 프로세서 및 명령을 저장하는 하나 이상의 메모리 디바이스를 포함하는 데이터베이스 마이그레이션을 위한 시스템이 제공된다. 프로세서는 온라인 데이터베이스를 제1 클론 데이터베이스로 복제하고, 제1 클론 데이터베이스로부터 내보내기 파일을 생성하고 내보내기 파일을 마이그레이션 데이터베이스로 가져오고, 내보내기 파일을 가져온 후 제1 클론 데이터베이스와 마이그레이션 데이터베이스의 행 비교를 수행하고, 그리고 증분 데이터를 캡처하도록 마이그레이션 데이터베이스 상에 온라인 데이터베이스의 쓰기를 복제하는 이중 쓰기 동작을 초기화하는 것을 포함하는 데이터베이스 마이그레이션을 위한 동작들을 수행하도록 구성된다. 동작들은 또한 행 비교를 수행한 후 온라인 데이터베이스를 제2 클론 데이터베이스로 복제하고, 제2 클론 데이터베이스를 증분 데이터와 비교하여 캐치-업 데이터를 식별하고, 그리고 캐치-업 데이터를 포함하도록 마이그레이션 데이터베이스를 업데이트하는 것을 포함한다.

Description

데이터베이스 마이그레이션을 위한 시스템 및 방법 {SYSTEMS AND METHODS FOR DATABASE MIGRATION}
본 개시는 일반적으로 데이터베이스 마이그레이션을 위한 시스템 및 방법에 관한 것이다. 특히, 본 개시의 실시예들은 다운타임(downtime)을 최소화하고 마이그레이션된 데이터베이스로의 트래픽 핸드오프를 자동화하면서, 이중-쓰기(dual-writing), 직렬 복제, 및 일관성 검증을 채용하는 라이브 실시간 데이터베이스들 사이의 향상된 마이그레이션을 위한 시스템 및 방법에 관한 것이다.
데이터베이스 마이그레이션은 상이한 데이터베이스 사이의 데이터를 마이그레이팅 하는 프로세스이다. 마이그레이션이 완료되는 경우, 기존의(또는 기존) 데이터베이스 내의 데이터는 복사되고, 몇몇 경우에는 마이그레이션된(또는 타겟) 데이터베이스에 재구성된다. 데이터베이스 마이그레이션 프로세스는 또한 기존 데이터베이스로부터 마이그레이션된 데이터베이스로 리다이렉트(redirect)되는 명령(예를 들어, 쓰기 또는 읽기 명령)의 리라우팅(rerouting)을 포함할 수 있다. 몇몇 경우에서, 데이터베이스 마이그레이션은 기존 데이터베이스와 마이그레이션된 데이터베이스가 동일한 데이터베이스 관리 시스템인 동종일 수 있다. 다른 경우에서, 데이터베이스 마이그레이션은 기존 데이터베이스와 마이그레이션된 데이터베이스가 서로 다른 데이터베이스 관리 시스템인 이종일 수 있다. 데이터베이스 마이그레이션은 데이터베이스 복제(데이터베이스 스트리밍으로도 알려짐) 및 데이터베이스 전송의 프로세스들을 포함할 수 있다. 데이터베이스 복제는 기존 데이터베이스의 데이터를 마이그레이션된 데이터베이스로 복사한다. 데이터베이스 전송은 데이터베이스 사이에서 리소스를 이동, 교체, 및/또는 스위프트(swift)할 수 있다.
데이터베이스 마이그레이션은 특정 위험이 따르게 되며, 라이브 또는 실시간 데이터베이스(즉, 지속적으로 워크로드를 처리하고, 시간에 매우 민감하며, 및/또는 클라이언트에 의해 동시에 액세스되는 연결된 데이터베이스)를 마이그레이션하는 경우 특히 문제가 될 수 있다. 데이터베이스 마이그레이션 중에는 데이터 손실(예를 들어, 일부 데이터가 소스 시스템으로부터 마이그레이션되지 않을 수 있음), 의미체계 변경(예를 들어, 의미체계 오류는 불일치 생성을 발생시킬 수 있음), 다운타임 연장(예를 들어, 중요한 데이터에 대한 액세스를 막으면서 데이터 마이그레이션 프로세스가 예상 보다 오래 걸림), 및 데이터 손상(예를 들어, 원하지 않는 데이터가 새로운 시스템으로 마이그레이션되어 잠재적인 충돌 및 오류가 발생할 수 있음)의 위험이 있다. 라이브 데이터베이스 마이그레이션과 특히 관련하여, 추가적인 위험이 고려되어야 한다. 예를 들어, 클라우드에 연결되고 사용자에 의해 능동적으로 액세스되고 수정되는 데이터베이스를 마이그레이팅하는 것은 애플리케이션 안정성 위험(예를 들어, 데이터베이스에 의존하는 애플리케이션은 부적절한 개발이나 또는 부적절한 코딩으로 인해 불안정하게 되어 블랙아웃 기간이나 또는 장애가 발생할 수 있음), 오케스트레이션 문제(예를 들어, 데이터 마이그레이션의 프로세스가 순서대로 수행되지 않는 경우), 간섭 문제(예를 들어, 다수의 이해관계자가 마이그레이션 프로세스 중에 동시에 애플리케이션을 사용하는 경우) 및/또는 부적절한 애플리케이션 매개변수화(예를 들어, 목표 시스템이 데이터 마이그레이션 프로그램과 호환되지 않음)와 같은 추가적인 문제를 발생시킨다.
또한, 데이터베이스 마이그레이션은 클라우드 컴퓨팅의 증가로 더욱 어려워지고 중요해지고 있다. 오늘날, 데이터베이스와 데이터베이스가 저장하는 정보는 비즈니스를 위한 가장 중요한 자산 중 하나가 될 수 있다. 비즈니스의 전체 운영은 데이터베이스를 액세스하고, 업데이트하며, 그리고 수정하는 것에 의존할 수 있다. 특정 비즈니스의 경우, 이러한 정보는 지속적으로 그리고 실시간으로 사용 가능해야 한다. 다운타임은 비즈니스 중단, 고객 불만, 및 기회 상실을 유발할 수 있다. 또한, 현재의 데이터베이스는 종종 테라바이트 또는 심지어 페타바이트의 정보로 방대할 수 있으며, 데이터베이스 수요가 많은 대규모 클라이언트 기반을 유지하기 위해 매우 높은 쿼리 처리량이 필요하다. 예를 들어, 스트리밍 서비스를 지원하는 데이터베이스는 매우 큰 데이터세트를 가지고 있을 뿐만 아니라 신속하게 전달될 필요가 있다. 이 조합은 다운타임을 최소화하고, 오류 허용오차가 낮은 대규모 데이터베이스를 운영(새로운 데이터 제공 및 수신 모두)하는 동안 대규모 데이터베이스를 마이그레이션해야 하기 때문에, 라이브 또는 실시간 데이터베이스 마이그레이션을 특히 복잡하게 만든다.
개시된 데이터베이스 마이그레이션을 위한 시스템 및 방법은 상기 설명한 하나 이상의 문제점 및/또는 종래 기술의 다른 문제들을 해결한다.
본 개시의 일 양태는 데이터베이스 마이그레이션을 위한 시스템에 관한 것이다. 시스템은 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행되는 경우 하나 이상의 프로세서가 동작들을 수행하도록 구성되는 명령을 저장하는 하나 이상의 메모리 디바이스를 포함한다. 동작들은 온라인 트래픽을 갖는 온라인 데이터베이스를 제1 클론 데이터베이스로 복제하고, 제1 클론 데이터베이스로부터 내보내기 파일을 생성하고 내보내기 파일을 마이그레이션 데이터베이스로 가져오고, 내보내기 파일을 가져온 후 제1 클론 데이터베이스와 마이그레이션 데이터베이스의 행 비교를 수행하고(행 비교는 온라인 데이터베이스와 마이그레이션 데이터베이스의 선택된 수의 헹에 관한 샤드 키를 계산함으로써 수행됨), 그리고 증분 데이터를 캡처하도록 마이그레이션 데이터베이스 상에 온라인 데이터베이스의 쓰기를 복제하는 이중 쓰기 동작을 초기화하는 것을 포함할 수 있다. 동작들은 또한 행 비교를 수행한 후 온라인 데이터베이스를 제2 클론 데이터베이스로 복제하고, 제2 클론 데이터베이스를 증분 데이터와 비교하여 캐치-업 데이터를 식별하고, 그리고 캐치-업 데이터를 포함하도록 마이그레이션 데이터베이스를 업데이트하는 것을 포함할 수 있다.
본 개시의 다른 일 양태는 데이터베이스 마이그레이션을 위한 방법에 관한 것이다. 방법은 온라인 데이터베이스를 제1 클론 데이터베이스로 복제하고, 제1 클론 데이터베이스로부터 내보내기 파일을 생성하고 내보내기 파일을 마이그레이션 데이터베이스로 가져오고, 내보내기 파일을 가져온 후 제1 클론 데이터베이스와 마이그레이션 데이터베이스의 행 비교를 수행하고(행 비교는 온라인 데이터베이스와 마이그레이션 데이터베이스의 선택된 수의 행에 관한 샤드 키를 계산함으로써 수행됨), 그리고 증분 데이터를 캡처하도록 마이그레이션 데이터베이스 상에 온라인 데이터베이스의 쓰기를 복제하는 이중 쓰기 동작을 초기화하는 것을 포함할 수 있다. 방법은 또한 행 비교를 수행한 후 온라인 데이터베이스를 제2 클론 데이터베이스로 복제하고, 제2 클론 데이터베이스를 증분 데이터와 비교하여 캐치-업 데이터를 식별하고, 그리고 캐치-업 데이터를 포함하도록 마이그레이션 데이터베이스를 업데이트하는 것을 포함할 수 있다.
본 개시의 또 다른 일 양태는 온라인 데이터베이스의 마이그레이션을 위한 시스템에 관한 것이다. 시스템은 네트워크에 커플링된 제1 데이터베이스, 제2 데이터베이스, 제1 데이터베이스와 제2 데이터베이스에 커플링된 적어도 하나의 프로세서, 및 명령을 저장하는 적어도 하나의 메모리 디바이스를 포함할 수 있다. 이 명령이 적어도 하나의 프로세서에 의해 실행되는 경우, 명령은 적어도 하나의 프로세서가, 제1 데이터베이스를 제1 클론 데이터베이스로 복제하고, 제1 클론 데이터베이스로부터 내보내기 파일을 생성하고 내보내기 파일을 제2 데이터베이스로 가져오고, 내보내기 파일을 가져온 후 제1 클론 데이터베이스와 제2 데이터베이스의 행 비교를 수행하고(행 비교는 제1 데이터베이스와 제2 데이터베이스의 선택된 수의 행에 관한 샤드 키를 계산함으로써 수행됨), 그리고 증분 데이터를 캡처하도록 제2 데이터베이스 상에 제1 데이터베이스의 쓰기를 복제하는 이중 쓰기 동작을 초기화하도록 구성한다. 명령어는 또한 프로세서가 행 비교를 수행한 후 제1 데이터베이스를 제2 클론 데이터베이스로 복제하고, 제2 클론 데이터베이스를 증분 데이터와 비교하여 캐치-업 데이터를 식별하고, 캐치-업 데이터를 포함하도록 제2 데이터베이스를 업데이트하고, 데이터가 일치하는지 여부를 결정하도록 제2 클론 데이터베이스와 제2 데이터베이스 사이의 제2 행 비교를 수행하도록 구성할 수 있다. 명령어는 또한 프로세서가 데이터가 일치한다고 결정하면, 이중 쓰기 동작을 중단하고 그리고 제1 데이터베이스로부터 제2 데이터베이스로 온라인 트래픽을 스위칭하도록 구성할 수 있다.
도 1a는 개시된 실시예에 따른, 배송, 운송, 및 물류 운영을 가능하게 하는 통신을 위한 컴퓨터 시스템을 포함하는 네트워크의 예시적인 실시예를 나타낸 개략적인 블록도이다.
도 1b는 개시된 실시예에 따른, 상호 동작 사용자 인터페이스 요소에 따라 검색 요청을 만족시키는 하나 이상의 검색 결과를 포함하는 검색 결과 페이지(SRP; Search Result Page)의 샘플을 나타낸 도면이다.
도 1c는 개시된 실시예에 따른, 상호 동작 사용자 인터페이스 요소에 따라 제품 및 제품에 대한 정보를 포함하는 싱글 디스플레이 페이지(SDP; Single Display Page)의 샘플을 나타낸 도면이다.
도 1d는 개시된 실시예에 따른, 상호 동작 사용자 인터페이스 요소에 따라 가상의 쇼핑 장바구니에 아이템을 포함하는 장바구니 페이지의 샘플을 나타낸 도면이다.
도 1e는 개시된 실시예에 따른, 상호 동작 사용자 인터페이스 요소에 따라, 가상의 쇼핑 장바구니로부터 구매 및 배송에 관한 정보에 따른 아이템을 포함하는 주문 페이지의 샘플을 나타낸 도면이다.
도 2는 개시된 실시예에 따른, 개시된 컴퓨터 시스템을 활용하도록 구성된 예시적인 풀필먼트 센터의 개략적인 도면이다.
도 3은 개시된 실시예에 따른, 예시적인 시스템의 개략적인 블록도이다.
도 4는 개시된 실시예에 따른, 예시적인 데이터베이스 마이그레이션 시스템의 블록도이다.
도 5는 개시된 실시예에 따른, 데이터베이스 마이그레이션에 관한 예시적인 프로세스의 흐름도이다.
도 6은 개시된 실시예에 따른, 마이그레이션된 데이터 일관성 검증에 관한 예시적인 프로세스의 흐름도이다.
도 7은 개시된 실시예에 따른, 라이브 데이터베이스의 마이그레이션에 관한 예시적인 프로세스의 흐름도이다.
도 8은 개시된 실시예에 따른, 데이터베이스 마이그레이션 검증에 관한 예시적인 프로세스의 흐름도이다.
도 9는 개시된 실시예에 따른, 온라인 데이터베이스 마이그레이션에 관한 예시적인 프로세스의 흐름도이다.
도 10은 개시된 실시예에 따른, 클론 데이터베이스를 사용하는 데이터베이스 마이그레이션 프로세스의 개략적인 표현이다.
도 11은 개시된 실시예에 따른, 데이터베이스 마이그레이션에 관한 예시적인 시퀀스의 타이밍도이다.
이어서 첨부된 도면을 참조하여 자세하게 설명된다. 가능하면, 다음의 설명에서 같거나 유사한 부분에 대해 참조되도록 도면에서 같은 도면 부호가 사용된다. 여기에 몇몇 예시적인 실시예가 설명되지만, 변경, 조정 및 다른 구현도 가능하다. 예를 들면, 도면 내의 구성 및 스텝에 대해 교체, 추가, 또는 변경이 이루어질 수 있고, 여기에 설명된 예시적인 방법은 개시된 방법에 대해 스텝을 교체, 순서 변경, 제거 또는 추가함으로써 변경될 수 있다. 다음의 자세한 설명은 개시된 실시예 및 예시로 제한되는 것은 아니다.
도면에서 개별 요소를 참조하는 데 사용되는 문자, 예를 들어, A 또는 B는, 요소의 수 또는 요소의 총 수를 지정하지 않는다. 대신에, 그것들은 가변 요소 수와 총 요소의 가변 개수를 나타내는 변수 참조이다. 예를 들어, 문자 B는 "B" 문자가 있는 요소가 두 번째 요소임을 나타내지 않는다. 대신에, B는 임의의 정수를 나타낼 수 있는 변수 참조이다.
본 개시의 실시예들은 데이터베이스 마이그레이션을 위한 시스템 및 방법에 관한 것이다. 개시된 시스템 및 방법은 데이터 마이그레이션과 트래픽 전송을 용이하게 하기 위해 하나 이상의 클론 데이터베이스 및 동시 쓰기를 사용하여 데이터베이스의 빠르고 안정적인 마이그레이션을 가능하게 한다. 개시된 시스템 및 방법은 지속적인 흐름의 작업흐름을 처리하기 위해 실시간 작업에 사용되는 라이브 데이터베이스에 적용 가능할 수 있다. 예를 들어, 개시된 방법 및 시스템은 지속적인 변화 및 높은 트래픽 요구를 갖는 전자 상거래의 온라인 애플리케이션을 지원하는 데이터베이스를 위해 사용될 수 있다. 개시된 시스템 및 방법은 종래의 데이터베이스 마이그레이션 프로세스의 문제를 해결한다. 종래의 시스템은 허용 가능한 데이터베이스 다운타임보다 더 긴 시간의 다운타임으로 어려움을 겪는다. 현재 온라인 애플리케이션은 거의 일정한 가용성을 빈번하게 요구하며 다운타임은 작업에 악영향을 미칠 수 있다. 예를 들어, 데이터베이스 다운타임은, 고객 불만 및 열악한 유지율을 초래할 수 있다. 개시된 실시예들은 다운타임이 최소화되거나 또는 전혀 없는 라이브 데이터베이스 마이그레이션을 위한 시스템 및 방법을 제공한다.
또한, 개시된 시스템 및 방법은 모든 데이터가 마이그레이션 되었는지 검증하기 위해 캐치 업 동작을 채용하여 데이터 마이그레이션의 품질을 향상시킬 수 있다. 라이브 또는 온라인 데이터베이스의 마이그레이션은 기존의 데이터베이스의 동적 상호작용으로 인해 기존의 데이터베이스와 마이그레이션된 데이터베이스 사이의 차이가 발생할 수 있어 번거로울 수 있다. 라이브 데이터베이스의 연결을 해제하는 것은 바람직하지 않기 때문에, 마이그레이션 프로세스 중에 온라인 데이터베이스의 데이터가 수정될 수 있다. 이러한 동시 변경은 기존의 데이터베이스와 마이그레이션된 데이터베이스 사이의 불일치를 생성할 수 있다. 개시된 시스템 및 방법은 마이그레이션 결과가 데이터 전송 및/또는 복제를 완료하도록 보장하기 위해 기존의 데이터베이스의 다중 복제 및 하나 이상의 캐치 업 및 검증 프로세스의 적용에 관한 방법을 사용하여 이러한 문제를 해결한다.
개시된 실시예들의 일부는 클라우드 기반 데이터베이스에 적용 가능하다. 예를 들어, 개시된 실시예들의 일부는 클라우드 기반 관계형 데이터베이스 서비스에 적용 가능하다. 이러한 실시예에서, 개시된 시스템 및 방법은 데이터 할당, 자동 복제, 및 SQL 호환성의 기능을 포함할 수 있다.
개시된 시스템 및 방법은 또한 데이터베이스 복제의 사용을 통해 마이그레이션 중의 다운타임을 최소화할 수 있다. 개시된 실시예들의 일부는 프로덕션(production) 또는 온라인 데이터베이스의 포인트-인-타임(point-in-time) 사본을 생성함으로써 데이터베이스를 복제하는 것을 포함한다. 이러한 실시예에서, 온라인 애플리케이션은 마이그레이션 동작 중에도 동일한 데이터 구조와 컨텐츠를 유지하면서 일반적인 동작을 계속할 수 있다. 개시된 시스템 및 방법의 이러한 실시예는 다운타임을 최소화하도록 데이터베이스의 동시 복제를 가능하게 한다. 예를 들어, 데이터베이스는 동시에 및/또는 순서대로 복제되고, 기존의 데이터베이스를 복제한 할당된 데이터 구조를 획득하고, 그리고 서버 작업을 실행할 수 있다. 따라서, 개시된 시스템 및 방법의 특정 실시예들은 다운타임이 거의 없거나 또는 전혀 없는 데이터베이스 마이그레이션을 가능하게 한다.
또한, 개시된 시스템 및 방법은 높은 트래픽 부하 및/또는 대용량의 데이터세트를 갖는 데이터베이스에 관하여도 효율적인 마이그레이션을 가능하게 할 수 있다. 현재 온라인 애플리케이션은 데이터 집약적인 경우가 빈번하며 많은 데이터 사용 및 전송이 필요할 수 있다. 이러한 온라인 또는 라이브 데이터베이스의 마이그레이션은 추가적인 도전 과제를 발생시킨다. 예를 들어, 종래의 시스템을 통한 데이터베이스 마이그레이션은 지연 및/또는 데이터 누락을 유발할 수 있는 복제 작업으로 인해 너무 길고 번거로울 수 있다. 따라서, 특정 데이터베이스 마이그레이션의 경우 작업 중단 없이 종래의 방법을 사용할 수 없다. 개시된 시스템 및 방법은 다운타임을 최소화하고 데이터 정확도를 향상시키면서 높은 트래픽 부하 및/또는 대용량의 데이터세트를 갖는 데이터베이스의 전송을 허용하는 방법을 제공함으로써 이러한 문제를 해결한다.
일부 실시예에서, 개시된 시스템 및 방법은 이중 쓰기 기능 및 캐치 업 동작을 채용하는 데이터 마이그레이션을 용이하게 한다. 라이브 데이터베이스의 종래의 마이그레이션은 마이그레이션 기간 동안 변경을 예방하기 위해 라이브 트래픽의 중단을 필요로 할 수 있다. 그러나, 이러한 중단은 작업을 방해하고 시스템 오작동 및/또는 고객 불만을 유발할 수 있다. 개시된 시스템 및 방법은 데이터베이스 상에서 중단을 요구하는 것 없이 마이그레이션을 할 수 있는 이중 쓰기 기능 및 클러스터링 시스템을 채용하여 이러한 문제를 해결한다. 개시된 시스템 및 방법의 일부는 클러스터링 알고리즘을 이중 쓰기 동작과 결합하여 기존의 데이터베이스의 연결 해제를 요구하는 것 없이 마이그레이션된 데이터베이스에서 복제될 수 있는 데이터 변경을 분리할 수 있다. 또한, 개시된 시스템 및 방법의 일부는 마이그레이션 중 데이터 부정확성을 최소화하기 위한 이중-쓰기 연결 및 작업을 테스트하는 것을 포함할 수 있다.
또한, 개시된 시스템 및 방법은 마이그레이션 프로세스의 자동화를 용이하게 할 수 있다. 개시된 시스템 및 방법의 일부 실시예들은 데이터베이스 마이그레이션을 수행하기 위해 다수의 온라인 도구를 조정하는 자동화된 시스템을 포함할 수 있다. 예를 들어, 개시된 시스템 및 방법의 일부는 예를 들어, SQL 파일의 자동화된 가져오기를 사용하여, 데이터베이스로부터 데이터의 캡처를 자동화할 수 있다. 또한, 개시된 시스템 및 방법은 사용자 상호작용을 요구하는 것 없이, 마이그레이션 프로세스 동안 다른 데이터베이스에 SQL 파일 및/또는 메타데이터를 자동으로 가져오기 위한 도구를 구성할 수 있다. 또한, 개시된 시스템 및 방법은 자동화되고 및/또는 동시 데이터 검증을 용이하게 할 수도 있다. 일부 실시예에서, 개시된 시스템 및 방법은 불일치를 식별하기 위해 백그라운드 및 데이트세트의 클러스터에서 검증 프로세스를 수행하는 도구를 포함할 수 있다.
또한, 개시된 시스템 및 방법의 일부 실시예들은 마이그레이션 중의 열악한 데이터 일관성의 문제를 해결할 수 있다. 특히 온라인 애플리케이션을 지원하는 데이터베이스와 같은 대규모 동적 데이터 세트의 경우, 데이터 마이그레이션 프로세스는 데이터 불일치 및/또는 손상을 초래할 수 있다. 개시된 시스템 및 방법의 일부는 수정을 위한 특정 범위의 캐치 업 도구와 커플링된 데이터 검증을 위한 도구를 사용하여 이러한 문제를 해결한다. 예를 들어, 개시된 실시예들의 일부는 불일치 및 손상된 파일을 식별하기 위해 데이터 세트를 비교하는 도구를 사용할 수 있다. 이러한 도구는 데이터 마이그레이션 후의 정확도 및 불일치를 확인하기 위한 도구를 사용할 수 있다. 이러한 방법은 SDV(Source Data Verification) 또는 MD5 파일 체크섬(checksum)을 사용하는 것과 같은, 해시 기반 검증의 사용을 포함할 수 있다. 이 실시예들에서, 데이터 검증은 데이터가 하나의 소스에서 다른 소스로 전송될 때 데이터가 정확하게 변환되었는지 여부를 자동적이고 동시에 결정하는 데 도움이 될 수 있으며, 완전하고, 새로운 시스템의 프로세스를 지원할 수 있다. 또한, 개시된 시스템 및 방법의 실시예는 불일치 영역을 식별하고 잘못된 데이터 손실을 방지하기 위해 불일치 및 데이터 클러스터링 메커니즘의 동시 수정을 위한 캐치-업 도구를 채용하는 것도 지원한다.
개시된 시스템 및 방법은 또한 온라인 애플리케이션을 지원하는 빈번하고 많이 사용되는 데이터베이스의 마이그레이션을 용이하게 할 수 있다. 예를 들어, 전자 상거래와 관련된 온라인 애플리케이션은 가격책정 데이터베이스에 대한 빈번하고 유창한 액세스를 요구하는 경우가 많다. 이러한 유형의 데이터베이스는 대규모의 정보의 집합을 처리하고, 동적으로 업데이트되거나 또는 수정되며, 다운타임이 거의 허용되지 않거나 전혀 허용되지 않는다. 특히 동적 가격책정과 같은 최근 관행을 고려할 때, 데이터베이스에 대한 빠르고 신뢰할 수 있는 액세스는 비즈니스 운영에 매우 중요하다. 가격책정 데이터베이스의 이러한 유형의 마이그레이션은 따라서 복잡하고 중요하다. 개시된 시스템 및 방법은 다운타임을 최소화하고, 데이터 손실을 최소화하고 및/또는 데이터 손상을 줄이는 클러스터링, 검증, 및 복제용 도구를 채용하여, 데이터베이스의 효율적인 마이그레이션을 허용한다.
이제 개시된 실시예들을 참조할 것이며, 그 예는 첨부된 도면에 도시되어 있다.
도 1a는 배송, 운송 및 물류 운영을 가능하게 하는 통신을 위한 컴퓨터 시스템을 포함하는 시스템의 예시적인 실시예를 나타낸 시스템(100)의 개략적인 블록도이다. 도 1a에 나타낸 바와 같이, 시스템(100)은 다양한 시스템을 포함할 수 있으며, 이들 각각은 하나 이상의 네트워크를 통해 서로 연결될 수 있다. 시스템은 또한, 예를 들어 케이블을 사용하여, 직접 연결을 통해 서로 연결될 수 있다. 도시된 시스템은 배송 기관 기술(shipment authority technology, SAT) 시스템(101), 외부 프론트 엔드 시스템(103), 내부 프론트 엔드 시스템(105), 운송 시스템(107), 모바일 디바이스(107A, 107B, 107C), 판매자 포털(109), 배송 및 주문 트래킹(shipment and order tracking, SOT) 시스템(111), 풀필먼트 최적화(fulfillment optimization, FO) 시스템(113), 풀필먼트 메시징 게이트웨이(fulfillment messaging gateway, FMG)(115), 공급 체인 관리(supply chain management, SCM) 시스템(117), 인력 관리 시스템(119), 모바일 디바이스(119A, 119B, 119C)(풀필먼트 센터(fulfillment center, FC)(200) 내부에 있는 것으로 도시됨), 제3자 풀필먼트 시스템(121A, 121B, 121C), 풀필먼트 센터 인증 시스템(fulfillment center authorization system, FC Auth)(123), 및 노동 관리 시스템(labor management system, LMS)(125)을 포함한다.
일부 실시예에서, SAT 시스템(101)은 주문 상태와 배달 상태를 모니터링하는 컴퓨터 시스템으로서 구현될 수 있다. SAT 시스템(101)은 또한, (특정 기간 동안 배송된 패키지의 개수와 같은) 출력, 및 (배송시 사용하기 위해 수신된 빈 카드보드 박스의 개수와 같은) 입력을 포함하는 다른 데이터를 감시할 수 있다. SAT 시스템(101)은 또한, 외부 프론트 엔드 시스템(103) 및 FO 시스템(113)과 같은 장치들 간의 (예를 들면, 저장 전달(store-and-forward) 또는 다른 기술을 사용하는) 통신을 가능하게 하는 시스템(100) 내의 상이한 장치들 사이의 게이트웨이로서 동작할 수 있다.
일부 실시예에서, 외부 프론트 엔드 시스템(103)은 외부 사용자가 시스템(100) 내의 하나 이상의 시스템과 상호 동작할 수 있게 하는 컴퓨터 시스템으로서 구현될 수 있다. 예를 들면, 시스템(100)이 시스템의 프레젠테이션을 가능하게 하여 사용자가 아이템에 대한 주문을 할 수 있도록 하는 실시예에서, 외부 프론트 엔드 시스템(103)은 검색 요청을 수신하고, 아이템 페이지를 제시하며, 결제 정보를 요청하는 웹 서버로서 구현될 수 있다. 예를 들면, 외부 프론트 엔드 시스템(103)은 Apache HTTP 서버, Microsoft Internet Information Services(IIS), NGINX 등과 같은 소프트웨어를 실행하는 컴퓨터 또는 컴퓨터들로서 구현될 수 있다. 다른 실시예에서, 외부 프론트 엔드 시스템(103)은 외부 디바이스(예를 들어, 모바일 디바이스(102A) 또는 컴퓨터(102B))로부터 요청을 수신 및 처리하고, 이들 요청에 기초하여 데이터베이스 및 다른 데이터 저장 장치로부터 정보를 획득하며, 획득한 정보에 기초하여 수신된 요청에 대한 응답을 제공하도록 설계된 커스텀 웹 서버 소프트웨어를 실행할 수 있다.
일부 실시예에서, 외부 프론트 엔드 시스템(103)은 웹 캐싱 시스템, 데이터베이스, 검색 시스템, 또는 결제 시스템 중 하나 이상을 포함할 수 있다. 일 양상에서, 외부 프론트 엔드 시스템(103)은 이들 시스템 중 하나 이상을 포함할 수 있는 반면, 다른 양상에서는 외부 프론트 엔드 시스템(103)은 이들 시스템 중 하나 이상에 연결된 인터페이스(예를 들면, 서버 대 서버, 데이터베이스 대 데이터베이스, 또는 다른 네트워크 연결)를 포함할 수 있다.
도 1b, 1c, 1d 및 1e에 의해 나타낸 단계들의 예시적인 세트는 외부 프론트 엔드 시스템(103)의 일부 동작을 설명하는 것에 도움이 될 것이다. 외부 프론트 엔드 시스템(103)은 프레젠테이션 및/또는 디스플레이를 위해 시스템(100) 내의 시스템 또는 디바이스로부터 정보를 수신할 수 있다. 예를 들면, 외부 프론트 엔드 시스템(103)은 검색 결과 페이지(Search Result Page, SRP)(예를 들면, 도 1b), 싱글 디스플레이 페이지(Single Display Page, SDP)(예를 들면, 도 1c), 장바구니 페이지(Cart page)(예를 들면, 도 1d), 또는 주문 페이지(예를 들면, 도 1e)를 포함하는 하나 이상의 웹페이지를 호스팅하거나 제공할 수 있다. (예를 들면, 모바일 디바이스(102A) 또는 컴퓨터(102B)를 사용하는) 사용자 디바이스는 외부 프론트 엔드 시스템(103)으로 이동하고 검색 박스에 정보를 입력함으로써 검색을 요청할 수 있다. 외부 프론트 엔드 시스템(103)은 시스템(100) 내의 하나 이상의 시스템으로부터 정보를 요청할 수 있다. 예를 들면, 외부 프론트 엔드 시스템(103)은 FO 시스템(113)으로부터 검색 요청을 만족하는 정보를 요청할 수 있다.
외부 프론트 엔드 시스템(103)은 정보에 기초하여 SRP(예를 들면, 도 1b)를 준비할 수 있다. SRP는 검색 요청을 만족하는 정보를 포함할 수 있다. 예를 들면, 이는 검색 요청을 만족하는 제품의 사진을 포함할 수 있다. SRP는 또한, 각 제품에 대한 각각의 가격, 또는 각 제품, 약속된 배달 날짜(PDD; Promised Delivery Date), 무게, 크기, 오퍼(offer), 할인 등에 대한 개선된 배달 옵션에 관한 정보를 포함할 수 있다. 일부 실시예에서, SRP는 또한 배달 옵션, 배달 옵션에 관한 마감일 및/또는 사용자 입력을 요청하는 하이퍼미디어 요소를 포함할 수 있다. 외부 프론트 엔드 시스템(103)은 (예를 들면, 네트워크를 통해) SRP를 요청 사용자 디바이스로 전송할 수 있다.
사용자 디바이스는 SRP에 나타낸 제품을 선택하기 위해, 예를 들면, 사용자 인터페이스를 클릭 또는 탭핑하거나, 다른 입력 디바이스를 사용하여 SRP로부터 제품을 선택할 수 있다. 사용자 디바이스는 선택된 제품에 관한 정보에 대한 요청을 만들어 내고 이를 외부 프론트 엔드 시스템(103)으로 전송할 수 있다. 이에 응답하여, 외부 프론트 엔드 시스템(103)은 선택된 제품에 관한 정보를 요청할 수 있다. 예를 들면, 정보는 각각의 SRP 상에 제품에 대해 제시된 것 이상의 추가 정보를 포함할 수 있다. 이는, 예를 들면, 유통 기한, 원산지, 무게, 크기, 패키지 내의 아이템 개수, 취급 지침, 새벽 또는 첫 배달의 마감 시간, 또는 제품에 대한 다른 정보를 포함할 수 있다. 정보는 또한, (예를 들면, 이 제품 및 적어도 하나의 다른 제품을 구입한 고객의 빅 데이터 및/또는 기계 학습 분석에 기초한) 유사한 제품에 대한 추천, 자주 묻는 질문에 대한 답변, 고객의 후기, 제조 업체 정보, 사진 등을 포함할 수 있다.
외부 프론트 엔드 시스템(103)은 수신된 제품 정보, 고객 디바이스의 위치, 및 배달 옵션의 가용성에 기초하여 SDP(Single Display Page)(예를 들면, 도 1c)를 준비할 수 있다. SDP는 또한, "지금 구매(Buy Now)" 버튼, "장바구니에 추가(Add to Cart)" 버튼, 수량 필드, 아이템 사진 등과 같은 다른 상호 동작 요소를 포함할 수 있다. SDP는 제품을 오퍼하는 판매자의 리스트를 포함할 수 있다. 이 리스트는 최저가로 제품을 판매하는 것으로 오퍼하는 판매자가 리스트의 최상단에 위치하도록, 각 판매자가 오퍼한 가격에 기초하여 순서가 정해질 수 있다. 이 리스트는 또한 최고 순위 판매자가 리스트의 최상단에 위치하도록, 판매자 순위에 기초하여 순서가 정해질 수 있다. 판매자 순위는, 예를 들어, 약속된 PDD를 지켰는지에 대한 판매자의 과거 추적 기록을 포함하는, 복수의 인자에 기초하여 만들어질 수 있다. 외부 프론트 엔드 시스템(103)은 (예를 들면, 네트워크를 통해) SDP를 요청 사용자 디바이스로 전달할 수 있다.
요청 사용자 디바이스는 제품 정보를 나열하는 SDP를 수신할 수 있다. SDP를 수신하면, 사용자 디바이스는 SDP와 상호 동작할 수 있다. 예를 들면, 요청 사용자 디바이스의 사용자는 SDP의 "장바구니에 담기(Place in Cart)" 버튼을 클릭하거나, 이와 상호 동작할 수 있다. 이렇게 하면 사용자와 연계된 쇼핑 장바구니에 제품이 추가된다. 대안적으로, 또는 추가적으로, 사용자는 배달에 관한 명령을 제공하여 SDP와 상호 동작할 수 있다. 사용자 디바이스는 제품을 쇼핑 장바구니에 추가하기 위해 외부 프론트 엔드 시스템(103)으로 이러한 요청을 전송할 수 있다.
외부 프론트 엔드 시스템(103)은 장바구니 페이지(예를 들면, 도 1d)를 생성할 수 있다. 일부 실시예에서, 장바구니 페이지는 사용자가 가상의 "쇼핑 장바구니(shopping cart)"에 추가한 제품을 나열한다. 사용자 디바이스는 SRP, SDP, 또는 다른 페이지의 아이콘을 클릭하거나, 상호 동작함으로써 장바구니 페이지를 요청할 수 있다. 일부 실시예에서, 장바구니 페이지는 사용자가 장바구니에 추가한 모든 제품 뿐 아니라 각 제품의 수량, 각 제품의 품목당 가격, 관련 수량에 기초한 각 제품의 가격, PDD에 관한 정보, 배달 방법, 배송 비용, 쇼핑 장바구니의 제품을 수정(예를 들면, 수량의 삭제 또는 수정)하기 위한 사용자 인터페이스 요소, 다른 제품의 주문 또는 제품의 정기적인 배달 설정에 대한 옵션, 할부(interest payment) 설정에 대한 옵션, 구매를 진행하기 위한 사용자 인터페이스 요소 등과 같은 장바구니의 제품에 관한 정보를 나열할 수 있다. 사용자 디바이스의 사용자는 쇼핑 장바구니에 있는 제품의 구매를 시작하기 위해 사용자 인터페이스 요소(예를 들면, "지금 구매(Buy Now)"라고 적혀 있는 버튼)를 클릭하거나, 이와 상호 동작할 수 있다. 그렇게 하면, 사용자 디바이스는 구매를 시작하기 위해 이러한 요청을 외부 프론트 엔드 시스템(103)으로 전송할 수 있다. 일부 실시예에서, 장바구니 페이지는 텍스트 박스 입력, 대화형 아이콘, 또는 각각의 제품 배달에 관한 추천 메시지를 포함할 수 있다.
외부 프론트 엔드 시스템(103)은 구매를 시작하는 요청을 수신하는 것에 응답하여 주문 페이지(예를 들면, 도 1e)를 생성할 수 있다. 일부 실시예에서, 주문 페이지는 쇼핑 장바구니로부터의 아이템을 재나열하고, 결제 및 배송 정보의 입력을 요청한다. 예를 들면, 주문 페이지는 쇼핑 장바구니의 아이템 구매자에 관한 정보(예를 들면, 이름, 주소, 이메일 주소, 전화번호), 수령인에 관한 정보(예를 들면, 이름, 주소, 전화번호, 배달 정보), 배송 정보(예를 들면, 배달 및/또는 픽업 속도/방법), 결제 정보(예를 들면, 신용 카드, 은행 송금, 수표, 저장된 크레딧), 현금 영수증을 요청하는 사용자 인터페이스 요소(예를 들면, 세금 목적) 등을 요청하는 섹션을 포함할 수 있다. 외부 프론트 엔드 시스템(103)은 사용자 디바이스에 주문 페이지를 전송할 수 있다.
사용자 디바이스는 주문 페이지에 정보를 입력하고 외부 프론트 엔드 시스템(103)으로 정보를 전송하는 사용자 인터페이스 요소를 클릭하거나, 상호 동작할 수 있다. 그로부터, 외부 프론트 엔드 시스템(103)은 정보를 시스템(100) 내의 다른 시스템으로 전송하여 쇼핑 장바구니의 제품으로 새로운 주문을 생성하고 처리할 수 있도록 한다. 일부 실시예에서, 외부 프론트 엔드 시스템(103)은 판매자가 주문과 관련된 정보를 전송 및 수신할 수 있도록 추가로 구성될 수 있다.
일부 실시예에서, 내부 프론트 엔드 시스템(105)은 내부 사용자(예를 들면, 시스템(100)을 소유, 운영 또는 임대하는 조직의 직원)가 시스템(100) 내의 하나 이상의 시스템과 상호작용할 수 있게 하는 컴퓨터 시스템으로서 구현될 수 있다. 예를 들면, SAT 시스템(101)이 사용자가 아이템에 대한 주문을 할 수 있게 하는 시스템의 프레젠테이션을 가능하게 하는 실시예에서, 내부 프론트 엔드 시스템(105)은 내부 사용자가 주문에 대한 진단 및 통계 정보를 볼 수 있게 하고, 아이템 정보를 수정하며, 또는 주문에 대한 통계를 검토할 수 있게 하는 웹 서버로서 구현될 수 있다. 예를 들면, 내부 프론트 엔드 시스템(105)은 Apache HTTP 서버, Microsoft Internet Information Services(IIS), NGINX 등과 같은 소프트웨어를 실행하는 컴퓨터 또는 컴퓨터들로서 구현될 수 있다. 다른 실시예에서, 내부 프론트 엔드 시스템(105)은 (도시되지 않은 다른 디바이스뿐 아니라) 시스템(100) 내에 나타낸 시스템 또는 디바이스로부터 요청을 수신 및 처리하고, 그러한 요청에 기초하여 데이터베이스 및 다른 데이터 저장 장치로부터 정보를 획득하며, 획득한 정보에 기초하여 수신된 요청에 대한 응답을 제공하도록 설계된 커스텀 웹 서버 소프트웨어를 실행할 수 있다.
일부 실시예에서, 내부 프론트 엔드 시스템(105)은 웹 캐싱 시스템, 데이터베이스, 검색 시스템, 결제 시스템, 분석 시스템, 주문 모니터링 시스템 등 중 하나 이상을 포함할 수 있다. 일 양상에서, 내부 프론트 엔드 시스템(105)은 이들 시스템 중 하나 이상을 포함할 수 있는 반면, 다른 양상에서는 내부 프론트 엔드 시스템(105)은 이들 시스템 중 하나 이상에 연결된 인터페이스(예를 들면, 서버 대 서버, 데이터베이스 대 데이터베이스, 또는 다른 네트워크 연결)를 포함할 수 있다.
일부 실시예에서, 운송 시스템(107)은 시스템(100) 내의 시스템 또는 디바이스와 모바일 디바이스(107A-107C) 간의 통신을 가능하게 하는 컴퓨터 시스템으로서 구현될 수 있다. 일부 실시예에서, 운송 시스템(107)은 하나 이상의 모바일 디바이스(107A-107C)(예를 들면, 휴대 전화, 스마트폰, PDA 등)로부터 정보를 수신할 수 있다. 예를 들면, 일부 실시예에서, 모바일 디바이스(107A-107C)는 배달원에 의해 동작되는 디바이스를 포함할 수 있다. 정규직, 임시적 또는 교대 근무일 수 있는 배달원은 사용자에 의해 주문된 제품들이 들어 있는 패키지의 배달을 위해 모바일 디바이스(107A-107C)를 이용할 수 있다. 예를 들면, 패키지를 배달하기 위해, 배달원은 배달할 패키지와 배달할 위치를 나타내는 모바일 디바이스 상의 알림을 수신할 수 있다. 배달 장소에 도착하면, 배달원은 (예를 들면, 트럭의 뒤나 패키지의 크레이트에) 패키지를 둘 수 있고, 모바일 디바이스를 사용하여 패키지 상의 식별자와 관련된 데이터(예를 들면, 바코드, 이미지, 텍스트 문자열, RFID 태그 등)를 스캔하거나, 캡처하며, (예를 들면, 현관문에 놓거나, 경비원에게 맡기거나, 수령인에게 전달하는 것 등에 의해) 패키지를 배달할 수 있다. 일부 실시예에서, 배달원은 모바일 디바이스를 사용하여 패키지의 사진(들)을 찍거나 및/또는 서명을 받을 수 있다. 모바일 디바이스는, 예를 들면, 시간, 날짜, GPS 위치, 사진(들), 배달원에 관련된 식별자, 모바일 디바이스에 관련된 식별자 등을 포함하는 배달에 관한 정보를 포함하는 정보를 운송 시스템(107)에 전송할 수 있다. 운송 시스템(107)은 시스템(100) 내의 다른 시스템에 의한 접근을 위해 데이터베이스(미도시)에 이러한 정보를 저장할 수 있다. 일부 실시예에서, 운송 시스템(107)은 다른 시스템에 특정 패키지의 위치를 나타내는 트래킹 데이터를 준비 및 전송하기 위해 이러한 정보를 사용할 수 있다.
일부 실시예에서, 특정 사용자는, 한 종류의 모바일 디바이스를 사용할 수 있는 반면(예를 들면, 정규 직원은 바코드 스캐너, 스타일러스 및 다른 장치와 같은 커스텀 하드웨어를 갖는 전문 PDA를 사용할 수 있음), 다른 사용자는 다른 종류의 모바일 디바이스를 사용할 수 있다(예를 들면, 임시 또는 교대 근무 직원이 기성 휴대 전화 및/또는 스마트폰을 사용할 수 있음).
일부 실시예에서, 운송 시스템(107)은 사용자를 각각의 디바이스와 연관시킬 수 있다. 예를 들면, 운송 시스템(107)은 사용자(예를 들면, 사용자 식별자, 직원 식별자, 또는 전화번호에 의해 표현됨)와 모바일 디바이스(예를 들면, International Mobile Equipment Identity(IMEI), International Mobile Subscription Identifier(IMSI), 전화번호, Universal Unique Identifier(UUID), 또는 Globally Unique Identifier(GUID)에 의해 표현됨) 간의 연관성(association)을 저장할 수 있다. 운송 시스템(107)은, 다른 것들 중에 작업자의 위치, 작업자의 효율성, 또는 작업자의 속도를 결정하기 위해 데이터베이스에 저장된 데이터를 분석하기 위해 배달시 수신되는 데이터와 관련하여 이러한 연관성을 사용할 수 있다.
일부 실시예에서, 판매자 포털(109)은 판매자 또는 다른 외부 엔티티(entity)가 시스템(100) 내의 하나 이상의 시스템과 전자 통신할 수 있게 하는 컴퓨터 시스템으로서 구현될 수 있다. 예를 들면, 판매자는 판매자 포털(109)을 사용하여 시스템(100)을 통해 판매하고자 하는 제품에 대하여, 제품 정보, 주문 정보, 연락처 정보 등을 업로드하거나 제공하는 컴퓨터 시스템(미도시)을 이용할 수 있다.
일부 실시예에서, 배송 및 주문 트래킹 시스템(111)은 고객(예를 들면, 디바이스(102A-102B)를 사용하는 사용자)에 의해 주문된 제품들이 들어 있는 패키지의 위치에 관한 정보를 수신, 저장 및 포워딩하는 컴퓨터 시스템으로서 구현될 수 있다. 일부 실시예에서, 배송 및 주문 트래킹 시스템(111)은 고객에 의해 주문된 제품들이 들어 있는 패키지를 배달하는 배송 회사에 의해 운영되는 웹 서버(미도시)로부터 정보를 요청하거나 저장할 수 있다.
일부 실시예에서, 배송 및 주문 트래킹 시스템(111)은 시스템(100)에 나타낸 시스템들로부터 정보를 요청하고 저장할 수 있다. 예를 들면, 배송 및 주문 트래킹 시스템(111)은 운송 시스템(107)으로부터 정보를 요청할 수 있다. 전술한 바와 같이, 운송 시스템(107)은 사용자(예를 들면, 배달원) 또는 차량(예를 들면, 배달 트럭) 중 하나 이상과 연관된 하나 이상의 모바일 디바이스(107A-107C)(예를 들면, 휴대 전화, 스마트폰, PDA 등)로부터 정보를 수신할 수 있다. 일부 실시예에서, 배송 및 주문 트래킹 시스템(111)은 또한, 풀필먼트 센터(예를 들면, 풀필먼트 센터(200)) 내부의 개별 제품의 위치를 결정하기 위해 인력 관리 시스템(WMS)(119)으로부터 정보를 요청할 수 있다. 배송 및 주문 트래킹 시스템(111)은 운송 시스템(107) 또는 WMS(119) 중 하나 이상으로부터 데이터를 요청하고, 이를 처리하며, 요청시 디바이스(예를 들면, 사용자 디바이스(102A, 102B))로 제공할 수 있다.
일부 실시예에서, 풀필먼트 최적화(FO) 시스템(113)은 다른 시스템(예를 들면, 외부 프론트 엔드 시스템(103) 및/또는 배송 및 주문 트래킹 시스템(111))으로부터의 고객 주문에 대한 정보를 저장하는 컴퓨터 시스템으로서 구현될 수 있다. FO 시스템(113)은 또한, 특정 아이템이 유지 또는 저장되는 곳을 나타내는 정보를 저장할 수 있다. 예를 들면, 소정 아이템은 하나의 풀필먼트 센터에만 저장될 수 있는 반면, 소정 다른 아이템은 다수의 풀필먼트 센터에 저장될 수 있다. 또 다른 실시예에서, 특정 풀필먼트 센터는 아이템의 특정 세트(예를 들면, 신선한 농산물 또는 냉동 제품)만을 저장하도록 구성될 수 있다. FO 시스템(113)은 이러한 정보뿐 아니라 관련 정보(예를 들면, 수량, 크기, 수령 날짜, 유통 기한 등)를 저장한다.
일부 실시예에서, 풀필먼트 메시징 게이트웨이(FMG)(115)는 FO 시스템(113)과 같은 시스템(100) 내의 하나 이상의 시스템으로부터 하나의 포맷 또는 프로토콜로 요청 또는 응답을 수신하고, 그것을 다른 포맷 또는 프로토콜로 변환하여, 변환된 포맷 또는 프로토콜로 된 요청 또는 응답을 WMS(119) 또는 제3자 풀필먼트 시스템(121A, 121B, 또는 121C)과 같은 다른 시스템에 포워딩하며, 반대의 경우도 가능한 컴퓨터 시스템으로서 구현될 수 있다.
일부 실시예에서, 공급 체인 관리(SCM) 시스템(117)은 예측 기능을 수행하는 컴퓨터 시스템으로서 구현될 수 있다. 예를 들면, SCM 시스템(117)은, 예를 들어 제품에 대한 과거 수요, 제품에 대한 예측된 수요, 네트워크 전반의 과거 수요, 네트워크 전반의 예측된 수요, 각각의 풀필먼트 센터(200)에 저장된 제품 개수, 각 제품에 대한 예상 또는 현재 주문 등에 기초하여, 특정 제품에 대한 수요의 수준을 예측할 수 있다. 이러한 예측된 수준과 모든 풀필먼트 센터를 통한 각 제품의 수량에 응답하여, SCM 시스템(117)은 특정 제품에 대한 예측된 수요를 만족시키기에 충분한 양을 구매 및 비축하기 위한 하나 이상의 구매 주문을 생성할 수 있다.
일부 실시예에서, 인력 관리 시스템(WMS)(119)은 작업 흐름을 모니터링하는 컴퓨터 시스템으로서 구현될 수 있다. 예를 들면, WMS(119)는 개개의 디바이스(예를 들면, 디바이스(107A-107C 또는 119A-119C))로부터 개별 이벤트를 나타내는 이벤트 데이터를 수신할 수 있다. 예를 들면, WMS(119)는 패키지를 스캔하기 위해 이들 디바이스 중 하나를 사용한 것을 나타내는 이벤트 데이터를 수신할 수 있다. 풀필먼트 센터(200) 및 도 2에 관하여 이하에서 논의되는 바와 같이, 풀필먼트 프로세스 동안, 패키지 식별자(예를 들면, 바코드 또는 RFID 태그 데이터)는 특정 스테이지의 기계(예를 들면, 자동 또는 핸드헬드 바코드 스캐너, RFID 판독기, 고속 카메라, 태블릿(119A), 모바일 디바이스/PDA(119B), 컴퓨터(119C)와 같은 디바이스 등)에 의해 스캔되거나 판독될 수 있다. WMS(119)는 패키지 식별자, 시간, 날짜, 위치, 사용자 식별자, 또는 다른 정보와 함께 대응하는 데이터베이스(미도시)에 패키지 식별자의 스캔 또는 판독을 나타내는 각 이벤트를 저장할 수 있고, 이러한 정보를 다른 시스템(예를 들면, 배송 및 주문 트래킹 시스템(111))에 제공할 수 있다.
일부 실시예에서, WMS(119)는 하나 이상의 디바이스(예를 들면, 디바이스(107A-107C 또는 119A-119C))와 시스템(100)과 연관된 하나 이상의 사용자를 연관시키는 정보를 저장할 수 있다. 예를 들면, 일부 상황에서, (파트 타임 또는 풀 타임 직원과 같은) 사용자는 모바일 디바이스(예를 들면, 모바일 디바이스는 스마트폰임)를 소유한다는 점에서, 모바일 디바이스와 연관될 수 있다. 다른 상황에서, 사용자는 임시로 모바일 디바이스를 보관한다는 점에서(예를 들면, 사용자는 하루의 시작에서부터 모바일 디바이스를 대여받은 사용자가, 하루 동안 그것을 사용하고, 하루가 끝날 때 그것을 반납할 것임), 모바일 디바이스와 연관될 수 있다.
일부 실시예에서, WMS(119)는 시스템(100)과 연관된 각각의 사용자에 대한 작업 로그를 유지할 수 있다. 예를 들면, WMS(119)는 임의의 할당된 프로세스(예를 들면, 트럭에서 내리기, 픽업 구역에서 아이템을 픽업하기, 리비닝 월(rebin wall) 작업, 아이템 패킹하기), 사용자 식별자, 위치(예를 들면, 풀필먼트 센터(200)의 바닥 또는 구역), 직원에 의해 시스템을 통해 이동된 유닛의 수(예를 들면, 픽업된 아이템의 수, 패킹된 아이템의 수), 디바이스(예를 들면, 디바이스(119A-119C))와 관련된 식별자 등을 포함하는, 각 직원과 관련된 정보를 저장할 수 있다. 일부 실시예에서, WMS(119)는 디바이스(119A-119C)에서 작동되는 계시(timekeeping) 시스템과 같은 계시 시스템으로부터 체크-인 및 체크-아웃 정보를 수신할 수 있다.
일부 실시예에서, 제3자 풀필먼트 (3PL) 시스템(121A-121C)은 물류 및 제품의 제3자 제공자와 관련된 컴퓨터 시스템을 나타낸다. 예를 들면, (도 2와 관련하여 이하에서 후술하는 바와 같이) 일부 제품이 풀필먼트 센터(200)에 저장되는 반면, 다른 제품은 오프-사이트(off-site)에 저장될 수 있거나, 수요에 따라 생산될 수 있으며, 또는 달리 풀필먼트 센터(200)에 저장될 수 없다. 3PL 시스템(121A-121C)은 FO 시스템(113)으로부터 (예를 들면, FMG(115)를 통해) 주문을 수신하도록 구성될 수 있으며, 고객에게 직접 제품 및/또는 서비스(예를 들면, 배달 또는 설치)를 제공할 수 있다. 일부 실시예에서, 하나 이상의 3PL 시스템(121A-121C)은 시스템(100)의 일부일 수 있지만, 다른 실시예에서는, 하나 이상의 3PL 시스템(121A-121C)이 시스템(100)의 외부에 있을 수 있다(예를 들어, 제3자 제공자에 의해 소유 또는 운영됨).
일부 실시예에서, 풀필먼트 센터 인증 시스템(FC Auth)(123)은 다양한 기능을 갖는 컴퓨터 시스템으로서 구현될 수 있다. 예를 들면, 일부 실시예에서, FC Auth(123)는 시스템(100) 내의 하나 이상의 다른 시스템에 대한 단일-사인 온(single-sign on, SSO) 서비스로서 작동할 수 있다. 예를 들면, FC Auth(123)는 내부 프론트 엔드 시스템(105)을 통해 사용자가 로그인하게 하고, 사용자가 배송 및 주문 트래킹 시스템(111)에서 리소스에 액세스하기 위해 유사한 권한을 갖고 있다고 결정하며, 두 번째 로그인 프로세스 요구 없이 사용자가 그러한 권한에 액세스할 수 있게 한다. 다른 실시예에서, FC Auth(123)는 사용자(예를 들면, 직원)가 자신을 특정 작업과 연관시킬 수 있게 한다. 예를 들면, 일부 직원은 (디바이스(119A-119C)와 같은) 전자 디바이스를 갖지 않을 수 있으며, 대신 하루 동안 풀필먼트 센터(200) 내에서 작업들 사이 및 구역들 사이에서 이동할 수 있다. FC Auth(123)는 이러한 직원들이 상이한 시간 대에 수행 중인 작업과 속해 있는 구역을 표시할 수 있도록 구성될 수 있다.
일부 실시예에서, 노동 관리 시스템(LMS)(125)은 직원(풀-타임 및 파트-타임 직원을 포함함)에 대한 출근 및 초과 근무 정보를 저장하는 컴퓨터 시스템으로서 구현될 수 있다. 예를 들면, LMS(125)는 FC Auth(123), WMS(119), 디바이스(119A-119C), 운송 시스템(107), 및/또는 디바이스(107A-107C)로부터 정보를 수신할 수 있다.
도 1a에 나타낸 특정 구성은 단지 예시일 뿐이다. 예를 들면, 도 1a는 FO 시스템(113)에 연결된 FC Auth 시스템(123)을 나타낸 반면, 모든 실시예가 이러한 특정 구성을 필요로 하는 것은 아니다. 실제로, 일부 실시예에서, 시스템(100) 내의 시스템은 인터넷, 인트라넷, WAN(Wide-Area Network), MAN(Metropolitan-Area Network), IEEE 802.11a/b/g/n 표준을 따르는 무선 네트워크, 임대 회선 등을 포함하는 하나 이상의 공공 또는 사설 네트워크를 통해 서로 연결될 수 있다. 일부 실시예에서, 시스템(100) 내의 시스템 중 하나 이상은 데이터 센터, 서버 팜 등에서 구현되는 하나 이상의 가상 서버로서 구현될 수 있다.
도 2는 풀필먼트 센터(200)를 나타낸다. 풀필먼트 센터(200)는 주문시 고객에게 배송하기 위한 아이템을 저장하는 물리적 장소의 예시이다. 풀필먼트 센터(FC)(200)는 다수의 구역으로 분할될 수 있으며, 각각이 도 2에 도시된다. 일부 실시예에서, 이러한 "구역(zones)"은 아이템을 수령하고, 아이템을 저장하고, 아이템을 검색하고, 아이템을 배송하는 과정의 상이한 단계 사이의 가상 구분으로 생각될 수 있다. 따라서, "구역"이 도 2에 나타나 있으나, 일부 실시예에서, 구역의 다른 구분도 가능하고, 도 2의 구역은 생략, 복제, 또는 수정될 수 있다.
인바운드 구역(203)은 도 1a의 시스템(100)을 사용하여 제품을 판매하고자 하는 판매자로부터 아이템이 수신되는 FC(200)의 영역을 나타낸다. 예를 들면, 판매자는 트럭(201)을 사용하여 아이템(202A, 202B)을 배달할 수 있다. 아이템(202A)은 자신의 배송 팔레트(pallet)를 점유하기에 충분히 큰 단일 아이템을 나타낼 수 있으며, 아이템(202B)은 공간을 절약하기 위해 동일한 팔레트 상에 함께 적층되는 아이템의 세트를 나타낼 수 있다.
일부 실시예에서, 도 2에 도시된 바와 같이, FC(200)의 하나 이상의 섹션은 포지셔닝 센서(217)를 포함할 수 있다. 포지셔닝 센서(217)는 FC 내의 제품들의 위치를 결정하고 FC를 통한 제품들의 이동을 추적하는 데 사용될 수 있는 복수의 센서를 포함할 수 있다. 이러한 실시예에서, 포지셔닝 센서(217)는 FC에서 제품들의 위치를 추적하고 상이한 섹션 사이에서의 이동을 추정하도록 구성될 수 있다. 예를 들어, 포지셔닝 센서(217)는 FC(200)의 서로 다른 영역 사이의 이동을 결정하기 위해, 제품들의 위치 및 시간의 이력 데이터를 캡처 및/또는 저장하도록 구성될 수 있다. 다른 시스템은 저장 구역과 패킹 구역 사이의 거리 또는 예상 시간을 결정하기 위해 이 정보를 사용할 수 있다.
도 2에 도시된 바와 같이, 포지셔닝 센서(217)는 패킹 구역(211)의 센서(217A), 픽업 구역(209)의 센서(217B), 및 드롭 구역(205)의 센서(217C)를 포함할 수 있다. 일부 실시예에서, FC(200)의 아이템의 위치를 추적 및 캡처하고 예상되는 배달의 정확도를 향상시키거나 또는 배달 옵션의 가용성을 최대화하는 것을 목표로 하기 위해 보다 많은 센서가 FC(200)의 다른 영역에 배치될 수 있다. 일부 실시예에서, 포지셔닝 센서(217)는 카메라와 같은 광학 센서를 포함할 수 있다. 다른 실시예에서, 포지셔닝 센서(217)는 무선 주파수, 블루투스, 또는 WiFi 센서와 같은 무선 센서를 포함할 수 있다. 추가적으로, 또는 대안적으로, 포지셔닝 센서(217)는 중량 센서를 포함할 수 있다.
작업자는 인바운드 구역(203)의 아이템을 수령하고, 선택적으로 컴퓨터 시스템(미도시)을 사용하여 아이템이 손상되었는지 및 정확한지를 체크할 수 있다. 예를 들면, 작업자는 아이템(202A, 202B)의 수량을 아이템의 주문 수량과 비교하기 위해 컴퓨터 시스템을 사용할 수 있다. 수량이 일치하지 않는다면, 해당 작업자는 아이템(202A, 202B) 중 하나 이상을 거부할 수 있다. 수량이 일치한다면, 작업자는 그 아이템들을 (예를 들면, 짐수레(dolly), 핸드트럭(handtruck), 포크리프트(forklift), 또는 수작업으로) 버퍼 구역(205)으로 운반할 수 있다. 버퍼 구역(205)은, 예를 들면, 예측된 수요를 충족시키기 위해 픽업 구역에 그 아이템이 충분한 수량만큼 있기 때문에, 픽업 구역에서 현재 필요하지 않은 아이템에 대한 임시 저장 영역일 수 있다. 일부 실시예에서, 포크리프트(206)는 버퍼 구역(205) 주위와 인바운드 구역(203) 및 드롭 구역(207) 사이에서 아이템을 운반하도록 작동한다. (예를 들면, 예측된 수요로 인해) 픽업 구역에 아이템(202A, 202B)이 필요하면, 포크리프트는 아이템(202A, 202B)을 드롭 구역(207)으로 운반할 수 있다.
드롭 구역(207)은 픽업 구역(209)으로 운반되기 전에 아이템을 저장하는 FC(200)의 영역일 수 있다. 픽업 동작에 할당된 작업자("피커(picker)")는 픽업 구역의 아이템(202A, 202B)에 접근하고, 픽업 구역에 대한 바코드를 스캔하며, 모바일 디바이스(예를 들면, 디바이스(119B))를 사용하여 아이템(202A, 202B)과 관련된 바코드를 스캔할 수 있다. 이러한 이벤트는 아이템이 FC로 이동되었음을 지정하기 위해 데이터베이스를 업데이트하는 실시간 위치 시스템을 업데이트할 수 있다. 그 다음 피커는 (예를 들면, 아이템을 카트에 놓거나 운반함으로써) 픽업 구역(209)에 아이템을 가져갈 수 있고 실시간 위치 시스템은 새로운 아이템에 관한 저장 위치를 요청할 수 있다.
픽업 구역(209)은 아이템(208)이 저장 유닛(210)에 저장되는 FC(200)의 영역일 수 있다. 일부 실시예에서, 저장 유닛(210)은 물리적 선반, 책꽂이, 박스, 토트(tote), 냉장고, 냉동고, 저온 저장고 등 중 하나 이상을 포함할 수 있다. 일부 실시예에서, 픽업 구역(209)은 다수의 플로어로 편성될 수 있다. 일부 실시예에서, 작업자 또는 기계는, 예를 들면, 포크리프트, 엘리베이터, 컨베이어 벨트, 카트, 핸드트럭, 짐수레, 자동화된 로봇 또는 디바이스, 또는 수작업을 포함하는 다양한 방식으로 아이템을 픽업 구역(209)으로 운반할 수 있다. 예를 들면, 피커는 아이템(202A, 202B)을 드롭 구역(207)의 핸드트럭 또는 카트에 놓을 수 있으며, 아이템(202A, 202B)을 픽업 구역(209)으로 가져갈 수 있다.
피커는 저장 유닛(210) 상의 특정 공간과 같은 픽업 구역(209)의 특정 스팟에 아이템을 배치(또는 "적재(stow)")하라는 명령을 수신할 수 있다. 예를 들면, 피커는 모바일 디바이스(예를 들면, 디바이스(119B))를 사용하여 아이템(202A)을 스캔할 수 있다. 디바이스는, 예를 들면, 통로, 선반 및 위치를 나타내는 시스템을 사용하여, 아이템(202A)을 적재해야 하는 위치를 나타낼 수 있다. 일부 실시예에서, 아이템(202A)이 적재되는 위치는 새벽 배달과 같이, 특별한 배달 옵션의 가용성을 최대화하려고 시도하는 예측 알고리즘에 기초하여 결정될 수 있다. 그 다음 디바이스는 그 위치에 아이템(202A)을 적재하기 전에 피커가 그 위치에서 바코드를 스캔하도록 할 수 있다. 대안적으로, 영상 인식 기능이 결합된 무선 센서 또는 카메라는 시간에 따른 위치를 저장할 수 있다. 일부 실시예에서, 디바이스는 도 1a의 WMS(119)와 같은 컴퓨터 시스템에 아이템(202A)이 디바이스(119B)를 사용하는 사용자에 의해 그 위치에 적재되었음을 나타내는 데이터를 (예를 들면, 무선 네트워크를 통해) 전송할 수 있다.
일단 사용자가 주문을 하면, 피커는 저장 유닛(210)으로부터 하나 이상의 아이템(208)을 검색하기 위해 디바이스(119B)에 명령을 수신할 수 있다. 일부 실시예에서, 도 11과 관련하여 더 설명되는 바와 같이, 피커는 배치 또는 저장 가이드를 통해 제품을 적재하라는 명령을 수신할 수 있다. 피커는 아이템(208)을 검색하고, 아이템(208) 상의 바코드를 스캔하며, 운송 기구(214) 상에 놓을 수 있다. 일부 실시예에서, 운송 기구(214)가 슬라이드로서 표현되지만, 운송 기구는 컨베이어 벨트, 엘리베이터, 카트, 포크리프트, 핸드트럭, 짐수레, 카트 등 중 하나 이상으로서 구현될 수 있다. 그 다음 아이템(208)은 패킹 구역(211)에 도착할 수 있다.
패킹 구역(211)은 아이템이 픽업 구역(209)으로부터 수령되고 고객에게 최종 배송하기 위해 박스 또는 가방에 패킹되는 FC(200)의 영역일 수 있다. 패킹 구역(211)에서, 아이템을 수령하도록 할당된 작업자("리비닝 작업자(rebin worker)")는 픽업 구역(209)으로부터 아이템(208)을 수령하고, 그것이 어느 주문에 대응하는 지를 결정할 것이다. 예를 들면, 리비닝 작업자는 아이템(208) 상의 바코드를 스캔하기 위해 컴퓨터(119C)와 같은 디바이스를 사용할 수 있다. 컴퓨터(119C)는 아이템(208)이 어느 주문과 관련이 있는지를 시각적으로 나타낼 수 있다. 이는, 예를 들면, 주문에 대응하는 월(216) 상의 공간 또는 "셀(cell)"을 포함할 수 있다. (예를 들면, 셀에 주문의 모든 아이템이 포함되어 있기 때문에) 일단 주문이 완료되면, 리비닝 작업자는 패킹 작업자(또는 "패커(packer)")에게 주문이 완료된 것을 알릴 수 있다. 패커는 셀로부터 아이템을 검색하고, 배송을 위해 이들을 박스 또는 가방에 놓을 수 있다. 그 다음 패커는, 예를 들면, 포크리프트, 카트, 짐수레, 핸드트럭, 컨베이어 벨트, 수작업 또는 다른 방법을 통해, 박스 또는 가방을 허브 구역(213)으로 보낼 수 있다.
허브 구역(213)은 패킹 구역(211)으로부터 모든 박스 또는 가방("패키지(packages)")을 수신하는 FC(200)의 영역일 수 있다. 허브 구역(213)의 작업자 및/또는 기계는 패키지(218)를 검색하고, 각 패키지가 배달 영역의 어느 부분으로 배달되도록 되어 있는지를 결정하며, 패키지를 적합한 캠프 구역(215)으로 보낼 수 있다. 예를 들면, 배달 영역이 2개의 작은 하위 영역을 갖는다면, 패키지는 2개의 캠프 구역(215) 중 하나로 보내질 것이다. 일부 실시예에서, 작업자 또는 기계는 최종 목적지를 결정하기 위해 (예를 들면, 디바이스(119A-119C) 중 하나를 사용하여) 패키지를 스캔할 수 있다. 패키지를 캠프 구역(215)으로 보내는 것은, 예를 들면, (우편 번호에 기초하여) 패키지가 향하는 지리적 영역의 부분을 결정하고, 지리적 영역의 부분과 관련된 캠프 구역(215)을 결정하는 것을 포함할 수 있다.
일부 실시예에서, 캠프 구역(215)은 루트 및/또는 서브-루트로 분류하기 위해 허브 구역(213)으로부터 패키지가 수령되는 하나 이상의 빌딩, 하나 이상의 물리적 공간, 또는 하나 이상의 영역을 포함할 수 있다. 일부 실시예에서, 캠프 구역(215)은 FC(200)로부터 물리적으로 분리되어 있는 반면, 다른 실시예에서는 캠프 구역(215)은 FC(200)의 일부를 형성할 수 있다.
캠프 구역(215)의 작업자 및/또는 기계는, 예를 들면, 목적지와 기존 루트 및/또는 서브-루트의 비교, 각각의 루트 및/또는 서브-루트에 대한 작업량의 계산, 하루 중 시간, 배송 방법, 패키지(220)를 배송하기 위한 비용, 패키지(220)의 아이템과 관련된 PDD, 배달 옵션 등에 기초하여 패키지(220)가 어느 루트 및/또는 서브-루트와 연관되어야 하는지를 결정할 수 있다. 일부 실시예에서, 작업자 또는 기계는 최종 목적지를 결정하기 위해 (예를 들면, 디바이스(119A-119C) 중 하나를 사용하여) 패키지를 스캔할 수 있다. 일단 패키지(220)가 특정 루트 및/또는 서브-루트에 할당되면, 작업자 및/또는 기계는 배송될 패키지(220)를 운반할 수 있다. 예시적인 도 2에서, 캠프 구역(215)은 트럭(222), 자동차(226), 배달원(224A, 224B)을 포함한다. 일부 실시예에서, 배달원(224A)이 트럭(222)을 운전할 수 있는데, 이 때 배달원(224A)은 FC(200)에 대한 패키지를 배달하는 풀-타임 직원이며, 트럭은 FC(200)를 소유, 임대 또는 운영하는 동일한 회사에 의해 소유, 임대, 또는 운행된다. 일부 실시예에서, 배달원(224B)이 자동차(226)를 운전할 수 있는데, 이 때 배달원(224B)은 필요에 따라(예를 들면, 계절에 따라) 배달하는 "플렉스(flex)" 또는 비상시적인 작업자이다. 자동차(226)는 배달원(224B)에 의해 소유, 임대 또는 운행될 수 있다.
도 3은 개시된 실시예들에 따른, 예시적인 시스템(300)의 블록도이다. 시스템(300)에서, 데이터 마이그레이션(DM; Data Migration) 시스템(320)은 서버, 컴퓨터 모듈, 및/또는 소비자 및 제품 데이터를 관리하고, 데이터베이스 백업 프로세스를 제어하고, 및/또는 복원 데이터를 배포하도록 구성된 데이터 프로세싱 센터를 포함할 수 있다. 시스템(300)은, DM 시스템(320)에 더하여, 온라인 리소스(340), 클라이언트 디바이스(350), 제3자 시스템(360), 풀필먼트 센터(FC)/창고 시스템(310), 및 데이터베이스(380)를 포함할 수 있다. 일부 실시예에서, 도 3에 도시된 바와 같이, 시스템(300)의 구성요소는 네트워크(370)로 연결될 수 있다. 그러나, 다른 실시예에서 시스템(300)의 구성요소는 네트워크(370) 없이, 서로 직접 연결될 수 있다. 예를 들어, 데이터베이스(380)는 DM 시스템(320)에 직접 커플링될 수 있다.
일부 실시예에서, DM 시스템(320)은 데이터베이스 마이그레이션을 위한 플랫폼을 제공하도록 시스템(300)의 다른 요소와 연결될 수 있다. 따라서, 일부 실시예에서, DM 시스템(320)은 시스템(300)의 정보에 액세스하고, 저장하고, 및/또는 선별(curate)할 수 있다. 예를 들어, 전자 상거래 컨텍스트에서, DM 시스템(320)은 내부 데이터베이스, 외부 데이터베이스, 애플리케이션 인터페이스, 및/또는 클라우드 서비스에 연결되어 마이그레이션 프로세스를 관리 및 조정하고, 검증 작업을 실행하고, 그리고 데이터 구조를 정렬(또는 재정렬)할 수 있다. DM 시스템(320)은 외부 프론트 엔드 시스템(103) 및 내부 프론트 엔드 시스템(105) 모두를 통해 데이터베이스와 통신할 수 있다. DM 시스템(320)은 또한 판매자 포털(109)에 커플링될 수 있다. 특정 실시예에서, DM 시스템(320)은 데이터베이스 동작을 처리하고, 예를 들어 데이터베이스를 복제하고 데이터베이스와 관련된 트래픽을 처리하도록 구성될 수 있다. 이러한 실시예에서, DM 시스템(320)은 도 1c의 SDP를 생성하는데 필요한 데이터를 저장하고 배치하도록 구성될 수 있다. DM 시스템(320)은 또한 보안 프로토콜 및 데이터 액세스 또는 수정 권한을 조정할 수 있다.
DM 시스템(320)은 시스템(300)의 도구(tool) 및 데이터베이스에 커플링된 컨트롤러(323)를 포함할 수 있다. 컨트롤러(323)는 또한 데이터의 클러스터를 생성하고, 데이터를 저장하고, 데이터를 검증하고, 그리고 캐치-업 동작을 수행하도록 구성될 수 있다. 컨트롤러(323)는 또한 이중-쓰기, 복제, 및/또는 데이터베이스의 복제를 관리할 수 있다. 예를 들어, 도 4 및 도 5와 관련하여 아래에서 더 논의되는 바와 같이, 컨트롤러(323)는 새로운 데이터베이스 스키마를 프로덕션에 배치하고, 애플리케이션을 트리거하여 새로운 데이터베이스에 데이터를 쓰고, 소스 데이터베이스를 프라이머리(primary)로 유지하면서 새로운 데이터베이스에 쓰고, 그리고 이중 쓰기 동작을 수행하는 동작들을 수행할 수 있다.
또한, 특정 실시예에서, 컨트롤러(323)는 또한 데이터의 암호화 및 복호화의 기능을 수행할 수 있다. 예를 들어 컨트롤러(323)는 마이그레이션될 때 데이터베이스 클론 또는 스냅샷의 암호화 및 복호화를 위해 사용될 수 있는 암호화 및 복호화 엔진을 구현할 수 있다. 컨트롤러(323)는 또한 마이그레이션 중에 손상을 방지하기 위해 트래픽 파이프를 암호화할 수 있다. 일부 실시예에서, 마이그레이션 프로세스의 보안을 개선하기 위해, 컨트롤러(323)는 128비트, 192비트, 및/또는 256비트 암호화를 위한 AES(Advanced Encryption Standard)용 엔진 또는 커널을 포함할 수 있다. 일부 실시예에서, 컨트롤러(323)는 예를 들어, 그러나 이에 제한되지 않고, IntelTM에 의해 제조된 PentiumTM 또는 XeonTM 제품군, AMDTM에 의해 제조된 TurionTM 제품군의 마이크로프로세서, 또는 기타 제조사로부터의 임의의 다양한 프로세서와 같은, 하나 이상의 알려진 프로세싱 디바이스를 포함할 수 있다. 그러나, 다른 실시예에서, 컨트롤러(323)는 본 개시에 따른 기능들을 수행하도록 커플링되고 구성되는 복수의 디바이스들일 수 있다. 일부 실시예에서, 컨트롤러(323)는 도 4와 관련하여 아래에서 더 논의되는 바와 같이, 하나 이상의 데이터베이스 및 클러스터링 시스템에 커플링될 수 있다.
또한, DM 시스템(320)은 시스템(300)의 특정 정보를 저장하고 관리하는 로컬 데이터베이스(325)를 포함할 수 있다. 예를 들어, 로컬 데이터베이스(325)는 예를 들어 OracleTM 데이터베이스, SybaseTM 데이터베이스, 또는 기타 관계형 데이터베이스 또는 HadoopTM 시퀀스 파일, HBaseTM, 또는 CassandraTM와 같은 비관계형 데이터베이스를 포함할 수 있다. 일부 실시예에서, 로컬 데이터베이스(325)는 데이터베이스(들)의 메모리 디바이스들에 저장된 데이터에 관한 요청을 수신하고 처리하며 데이터베이스(들)로부터의 데이터를 제공하도록 구성된 컴퓨팅 구성요소(예를 들어, 데이터베이스 관리 시스템, 데이터베이스 서버, 등)를 포함할 수 있다. 다른 실시예에서, 컨트롤러(322)는 로컬 데이터베이스(325)의 동작을 제어할 수 있고 로컬 데이터베이스(325)는 스토리지 유닛일 수 있다. 일부 실시예에서, 로컬 데이터베이스(325)는 HBase, MongoDBTM 또는 CassandraTM과 같은 NoSQL 데이터베이스를 포함할 수 있다. 또한, 로컬 데이터베이스(325)는 Oracle, MySQL 및 Microsoft SQL 서버와 같은 관계형 데이터베이스를 포함할 수 있다.
로컬 데이터베이스(325)는 시스템(300)의 다른 요소에 의해 사용될 수 있는 데이터를 저장할 수 있다. 예를 들어, 로컬 데이터베이스(325)는 클라이언트 디바이스(350) 또는 온라인 리소스(340)에 의해 요청될 수 있는 데이터를 저장할 수 있다. 로컬 데이터베이스(325)에 저장된 데이터는 가격책정 알고리즘을 선택하고 배달원에 대한 지불을 결정 및/또는 조정하는 데 사용될 수 있는 배달 주문 및/또는 배달원과 관련된 임의의 적절한 데이터를 포함할 수 있다. 로컬 데이터베이스(325)에 저장된 데이터는 또한 사용자에 대한 금융 정보, 사용자 크리덴셜(credential), 및/또는 사용자 기호를 포함할 수 있다. 도 3은 DM 시스템(320) 내에 로컬 데이터베이스(325)가 있는 것으로 도시하였으나, 일부 실시예에서 로컬 데이터베이스(325)는 DM 시스템(320)과 별개로(가상적으로 또는 물리적으로) 위치할 수 있다. 예를 들어, 일부 실시예에서, 로컬 데이터베이스(325)는 사용자에 의해 연결되거나 또는 연결 해제될 수 있는 외부 스토리지 유닛일 수 있다. 일부 실시예에서, 로컬 데이터베이스(325)는 컨트롤러(323)에 의해 수행되는 마이그레이션 프로세스 중에 클론 데이터베이스로서 동작할 수 있다. 예를 들어, 로컬 데이터베이스(325)는 마이그레이션 프로세스 중에 하나 이상의 외부 데이터베이스(380)를 복제하도록 구성될 수 있다. 또한, 로컬 데이터베이스(325)는 예를 들어, 데이터 마이그레이션 중에 캐치-업 데이터를 캡처하도록, 캐시 데이터베이스로서 구성될 수 있다.
일부 실시예에서, DM 시스템(320)은 시스템(100)(도 1a)의 하나 이상의 구성요소로 구현될 수 있다. 예를 들어, DM 시스템(320)은 내부 프론트 엔드 시스템(105), FO 시스템(113), SCM 시스템(117), SAT 시스템(101), 및/또는 WMS(119)(도 1a)의 일부로서 구현될 수 있다. 다른 실시예에서, DM 시스템(320)은 데이터베이스 액세스를 위한 클라이언트-서버 모델을 갖는 데이터베이스 서버로 구현될 수 있다. 이러한 실시예에서, DM 시스템(320)은 외부 프론트 엔드 시스템(103)(도 1a)을 통해 수집된 주문 데이터, 클릭 데이터, 및/또는 제품 데이터에 관한 정보를 관리할 수 있다. 대안적으로, 또는 추가적으로, DM 시스템(320)은 특정 애플리케이션 내에 임베딩된 데이터베이스로서 구현될 수 있다. 예를 들어, DM 시스템(320)은 SCM 시스템(117)(도 1a)의 일부로서 임베딩될 수 있다. 일부 실시예에서, DM 시스템(320)은 프론트 엔드가 클라이언트 디바이스(350) (요청된 데이터를 표시하는)에서 실행되고, 백 엔드가 서버에서 실행되고 데이터 분석 및 저장과 같은 작업을 처리하는 작업의 프론트 엔드/백 엔드 할당을 통해 로컬 데이터베이스(325)에 대한 액세스를 제어할 수 있다.
일부 실시예에서, DM 시스템(320)은 쿼리 언어에 응답하는 애플리케이션 프로그래밍 인터페이스(API; Application Programming Interface)를 통해 리소스를 요청하고 제공한다. DM 시스템(320)에 관한 API는 필터 조건 및 매개변수를 지정한다. API는 또한 인증 방법과 크리덴셜 전달 또는 공유 방법을 제공할 수 있다. API를 통해, DM 시스템(320)은 클라이언트 디바이스(350)(또는 시스템(300)의 다른 요소)가 데이터 마이그레이션을 요청하도록 허용할 수 있다. API를 통해, DM 시스템(320)은 또한 마이그레이션된 데이터베이스를 노출하고 및/또는 외부 데이터베이스로부터 정보를 요청할 수 있다. 또한, API를 통해, DM 시스템(320)은 알려진 크리덴셜을 통해 액세스한 후 데이터베이스를 읽을 수 있다. DM 시스템(320)은 데이터베이스의 관련 테이블로부터 레코드를 가져오고(fetch), 레코드를 래핑하고(wrap) 태그를 지정하며(tag), 그리고 반환 매개변수로서 프로그램이 파일을 반환하거나 또는 매개변수에 전달된 주소로 전송함으로써 API 요청에 응답할 수 있다.
DM 시스템(320)은 Oracle, DB2, Informix, 및 Microsoft SQL 서버와 같은 독점 데이터베이스 애플리케이션을 사용하여 데이터 관리를 구현할 수 있다. 대안적으로, 또는 추가적으로, DM 시스템(320)은, GNU(General Public License)에 따라, PostgreSQL을 포함하는 무료 소프트웨어 데이터베이스 애플리케이션으로 구현될 수 있다.
시스템(300)은 DM 시스템(320)외에, 온라인 리소스(340), 클라이언트 디바이스(350), 제3자 시스템(360), FC 시스템(310), 및 데이터베이스(380)를 포함할 수 있다. 일부 실시예에서, 도 3에 도시된 바와 같이, 시스템(300)의 구성요소는 네트워크(370)에 연결될 수 있다. 그러나, 다른 실시예에서 시스템(300)의 구성요소는 네트워크(370) 없이, 서로 직접 연결될 수 있다. 예를 들어, 데이터베이스(380)는 DM 시스템(320)에 직접 커플링될 수 있다.
온라인 리소스(340)는 웹페이지 호스팅, 네트워킹, 클라우드, 또는 백업 서비스의 제공자와 같은 엔티티에 의해 제공되는 하나 이상의 서버 또는 스토리지 서비스를 포함할 수 있다. 일부 실시예에서, 온라인 리소스(340)는 인증 서비스, DNS(Domain Name System), 또는 랜딩 페이지에 관한 웹 페이지를 저장하는 서비스 또는 서버를 호스팅하는 것과 관련될 수 있다. 다른 실시예에서, 온라인 리소스(340)는 클라우드 컴퓨팅 서비스와 관련될 수 있다. 또 다른 실시예에서, 온라인 리소스(340)는 애플 푸시 알람 서비스(Apple Push Notification Service), 애저 모바일 서비스(Azure Mobile Services), 또는 구글 클라우드 메시징(Google Cloud Messaging)과 같은, 메시징 서비스와 관련될 수 있다. 이러한 실시예에서, 온라인 리소스(340)는 개시된 실시예의 기능들과 관련된 메시지 및 알림의 전달을 처리할 수 있다.
또한, 온라인 리소스(340)는 시스템(300)의 서로 다른 요소 사이의 온라인 트래픽을 스위칭하도록 DM 시스템(320)에 의해 구성될 수 있는 리디렉트 서버를 포함할 수 있다. 또한, 온라인 리소스(340)는 데이터베이스로부터 데이터를 검색하고, 데이터를 복제하고, 또는 데이터베이스 공간을 클러스터링 하기 위한 클라우드 서비스를 포함할 수 있다. 일부 실시예에서, 온라인 리소스(340)는 DM 시스템(320)에 의해 프로그램 가능할 수 있다. 예를 들어, 온라인 리소스(340)의 리디렉트 서버는 데이터베이스 마이그레이션 이전, 도중, 그리고 후에 데이터베이스 쿼리를 리디렉트 하도록 DM 시스템(320)에 의해 프로그래밍 될 수 있다. 대안적으로, 또는 추가적으로, 온라인 리소스(340)는 암호화, 복호화, 및/또는 인증 프로세스를 위해 구성 가능할 수 있다. 예를 들어, 도 11과 관련하여 더 논의되는 바와 같이, 개시된 시스템 및 방법은 데이터베이스 마이그레이션 및 데이터 검증을 위한 상이한 동작들을 조정할 수 있다.
클라이언트 디바이스(350)는 개시된 실시예에 따른 하나 이상의 동작들을 수행하도록 구성된 하나 이상의 컴퓨팅 디바이스를 포함할 수 있다. 예를 들어, 클라이언트 디바이스(350)는 데스크탑 컴퓨터, 랩탑, 서버, 모바일 디바이스(예를 들어, 태블릿, 스마트 폰, 등), 셋-탑 박스, 게이밍 디바이스, 웨어러블 컴퓨팅 디바이스, 또는 다른 유형의 컴퓨팅 디바이스를 포함할 수 있다. 일부 실시예에서, 클라이언트 디바이스(350)는 사용자 디바이스(102A/102B)(도 1a)를 포함할 수 있고 시스템(100)의 일부로서 동작될 수 있다. 그러나, 다른 실시예에서, 클라이언트 디바이스(350)는 시스템(100)으로부터 독립적일 수 있다. 클라이언트 디바이스(350)는 아래에서 설명되는 기능들을 구현하기 위한 동작들을 수행하도록, 클라이언트 디바이스(350)의 메모리와 같은, 메모리에 저장된 소프트웨어 명령을 실행하도록 구성된 하나 이상의 프로세서를 포함할 수 있다. 예를 들어, 클라이언트 디바이스(350)는 DM 시스템(320)을 통해 로컬 데이터베이스(325)의 정보에 액세스할 수 있다. 또한, 클라이언트 디바이스(350)는 DM 시스템(320)에 의해 전송되는 명령에 따라 동작들을 수행하도록 구성될 수 있다. 또한, 클라이언트 디바이스(350)는 DM 시스템(320)으로부터 동작을 트리거하도록 구성될 수 있다. 예를 들어, 클라이언트 디바이스(350)는 데이터베이스 마이그레이션을 개시하고 및/또는 마이그레이션 상태를 모니터링할 수 있다. 또한, 특정 실시예에서 클라이언트 디바이스(350)는 데이터베이스 마이그레이션 중에 또는 후에 데이터 검증 리포트를 수신하고 및/또는 검증 리포트를 요청할 수 있다.
일부 실시예에서, 클라이언트 디바이스(350)는 유선 및/또는 무선 통신을 위해 구성될 수 있고 프로세서에 의해 실행될 때 인터넷-관련 통신(예를 들어, TCP/IP) 및 컨텐츠 디스플레이 프로세스를 수행하는 소프트웨어를 포함할 수 있다. 예를 들어, 클라이언트 디바이스(350)는 제품 정보가 있는 인터페이스를 생성하고 표시하는 브라우저 소프트웨어를 실행할 수 있다. 따라서, 클라이언트 디바이스(350)는 클라이언트 디바이스(350)가 네트워크(370)를 통해 구성요소와 통신하고 클라이언트 디바이스(350)에 포함된 디스플레이 디바이스를 통해 인터페이스에 컨텐츠를 표시할 수 있도록 하는 애플리케이션을 실행할 수 있다.
개시된 실시예는 클라이언트 디바이스(350)의 임의의 특정한 구성에 제한되지 않는다. 예를 들어, 클라이언트 디바이스(350)는 DM 시스템(320) 및/또는 온라인 리소스(340)에 의해 제공되는 기능들을 제공하는 동작들을 수행하도록 모바일 애플리케이션을 저장하고 실행하는 모바일 디바이스일 수 있다.
데이터베이스(380)는 데이터를 저장하고, 관리하고, 제공하고, 그리고 수정하도록 적절한 소프트웨어로 구성될 수 있다. 데이터베이스(380)는 물리적 데이터베이스를 포함할 수 있다. 또한, 데이터베이스(380)는 클라우드 기반 데이터베이스 인스턴스를 포함할 수 있다. 데이터베이스(380)는 예를 들어, OracleTM 데이터베이스, SybaseTM 데이터베이스, 또는 기타 관계형 데이터베이스 또는 HadoopTM 시퀀스 파일, HBaseTM, 또는 CassandraTM와 같은 비관계형 데이터베이스를 포함할 수 있다. 데이터베이스(380)는 데이터베이스의 메모리 디바이스에 저장된 데이터에 관한 요청을 수신하고 처리하며 데이터베이스로부터의 데이터를 제공하도록 구성된 컴퓨팅 구성요소(예를 들어, 데이터베이스 관리 시스템, 데이터베이스 서버, 등)를 포함할 수 있다. 추가적으로, 또는 대안적으로, 데이터베이스(380)는 클라우드 플랫폼을 통해 구축되고 액세스되는 클라우드 데이터베이스를 포함할 수 있다. 이러한 실시예에서, 데이터베이스(380)는 시스템(300)의 다른 요소를 통해 관리될 수 있다. 예를 들어, 데이터베이스(380)는 컨트롤러(323)에 의해 관리될 수 있다. 또한, 클라우드 기반 데이터베이스(380)는 관계형 데이터베이스(MySQL 및 PostgreSQL을 포함함) 및 NoSQL 데이터베이스(MongoDB 및 Apache CouchDB를 포함함)를 지원하고 제3자 시스템(360)에 의해 또는 컨트롤러(323)를 통해 관리되는 API를 통해 액세스되도록 구성될 수 있다.
데이터베이스(380)가 별개인 것으로 도시되었으나, 일부 실시예에서 데이터베이스(380)는 DM 시스템(320) 또는 온라인 리소스(340) 내에 포함되거나, 또는 이와 관련될 수 있다. 예를 들어, 데이터베이스(380)는 특정 실시예에서 로컬 데이터베이스(325)로서 구현될 수 있다. 일부 실시예에서, 데이터베이스(380)는 시스템(300)의 동작과 관련된 정보를 저장할 수 있다. 예를 들어, 데이터베이스(380)는 가격책정 데이터를 포함할 수 있고, 온라인 애플리케이션에 연결될 수 있다(예를 들어, 온라인 리소스(340)를 통해).
제3자 시스템(360)은 시스템(100)의 하나 이상의 요소를 포함할 수 있다. 예를 들어, 제3자 시스템(360)은 3PL 시스템(121A-121C)을 포함할 수 있다(도 1). 추가적으로, 또는 대안적으로, 제3자 시스템(360)은 서비스 또는 풀필먼트 센터의 제공자와 같은, DM 시스템(320)과 관련된 엔티티에 의해 제공되는 하나 이상의 서버 또는 스토리지 서비스를 포함할 수 있다. 제3자 시스템(360)은 또한 네트워크(370)를 통해 시스템(300)에 연결될 수 있으나, 다른 실시예에서 제3자 시스템(360)은 시스템(300)의 몇몇 요소와의 직접 연결을 포함할 수 있다. 예를 들어, 지연 또는 네트워크 혼잡을 최소화하기 위해, 제3자 시스템(360)은 DM 시스템(320)과 사설망으로 연결될 수 있다. 또한, 제3자 시스템(360)은 DM 시스템(320), 또는 시스템(300)의 기타 요소로부터 정보를 제공하거나 및/또는 요청하도록 구성될 수 있다. 일부 실시예에서, 제3자 시스템(360)은 또한 네트워크(370)에 커플링될 수 있지만, 제3자 시스템은 DM 시스템(320)의 클라이언트가 아닐 수 있다. 대신에, 제3자 시스템(360)은 DM 시스템(320)의 사용자 또는 클라이언트의 정보를 포함하는 시스템을 포함할 수 있다. 예를 들어, 제3자 시스템(360)은 배달 계약자의 서버를 포함할 수 있고, 제품 배달이 제3자 계약자를 수반하는 경우 DM 시스템(320)에 의해 사용될 수 있다. 이러한 실시예에서, DM 시스템(320)은 제3자 시스템(360)으로부터 액세스 가능한 데이터의 백업을 생성하도록 구성될 수 있다.
FC/창고 시스템(310)은 FC 또는 창고 내의 제품의 위치를 결정하고 및/또는 저장하기 위한 센서 및 프로세서를 포함하고 주기적으로 데이터베이스(예를 들어, 로컬 데이터베이스(325))를 업데이트 할 수 있다. 예를 들어, FC/창고 시스템(310)은 센서(217A-217C)(도 2)를 포함할 수 있다. 대안적으로, 또는 추가적으로, FC/창고 시스템(310)은 선반의 이미지를 캡처하는 카메라를 포함하고, 제품을 식별하고 FC 내의 제품의 위치를 결정하기 위한 이미지 인식 방법을 사용할 수 있다. 또한, FC/창고 시스템(310)은 스캔 디바이스에 커플링될 수 있고 제품의 스캐닝 이벤트를 모니터링함으로써 FC 내의 제품의 위치를 추적할 수 있다. 또한, FC/창고 시스템(310)은 DM 시스템(320)과 통신하여 이용 가능한 재고를 추정하는 것을 용이하게 하는 정보를 제공할 수 있다. 일부 실시예에서, FC/창고 시스템(310)은 DM 시스템(320)에 이용 가능한 재고의 주기적인 업데이트를 제공하도록 구성될 수 있다. 예를 들어, FC/창고 시스템(310)은 매일 마감 시 DM 시스템(320)에 이용 가능한 재고를 전송하도록 구성될 수 있다.
네트워크(370)는 시스템(300)의 구성요소 사이의 통신을 제공하도록 구성된 임의의 유형의 네트워크일 수 있다. 예를 들어, 네트워크(370)는 통신을 제공하고, 정보를 교환하고, 및/또는 예를 들어 인터넷, 근거리 통신망(LAN; Local Area Network), 근거리 통신(NFC; Near Field Communication), 또는 시스템(300)의 구성요소 사이의 정보를 전달하고 수신하는 것을 가능하게 하는 기타 적절한 연결과 같이 정보의 교환을 용이하게 하는 임의의 유형의 네트워크(인프라 포함)일 수 있다. 일부 실시예에서 네트워크(370)는 유선, 무선, 또는 그 조합일 수 있다. 다른 실시예에서, 시스템(300)의 하나 이상의 구성요소는 전용 통신 링크를 통해 직접 통신할 수 있다. 또 다른 실시예에서, 네트워크(370)는 예를 들어, 네트워크 또는 네트워크들을 구성하는 다수의 네트워크를 포함할 수 있다.
시스템(300)의 기능적 빌딩 블록들의 구성 및 경계들은 설명의 편의를 위해 본 명세서에서 정의되었음이 이해되어야 한다. 지정된 기능들과 그 관계가 적절하게 수행되는 한 대안적인 경계들이 정의될 수 있다. 대안(본 명세서에서 설명된 것의 등가물, 확장, 변형, 변이 등 포함)은 명백할 것이다. 이러한 대안은 개시된 실시예들의 범위 내에 속한다.
도 4는 개시된 실시예에 따른, 예시적인 데이터베이스 마이그레이션 시스템(400)의 블록도이다. 일부 실시예에서, 마이그레이션 시스템(400)은 시스템(300)의 일부일 수 있다. 예를 들어, 시스템(400)의 컨트롤러(323)는 DM 시스템(320)(도 3)의 일부로서 논의된 컨트롤러와 동일할 수 있다. 그러나, 다른 실시예에서, 마이그레이션 시스템(400)은 시스템(300)과 독립적일 수 있다.
마이그레이션 시스템(400)은 컨트롤러(323)를 포함할 수 있다. 도 4에 도시된 바와 같이, 컨트롤러(323)는 클론 데이터베이스(406)(클론 DB) 및 데이터베이스 클러스터링 시스템(420)(DB 클러스터링 시스템)에 커플링될 수 있다. 추가적으로, 시스템(400)은 마이그레이션 도구(402) 및 온라인 데이터베이스(404)(온라인 DB)를 포함할 수 있다.
일부 실시예에서, 컨트롤러(323)는 DM 시스템(320)의 일부일 수 있다. 그러나, 다른 실시예에서, 컨트롤러(323)는 DM 시스템(320)으로부터 독립적인 요소로서 구현될 수 있다. 컨트롤러(323)는 데이터베이스 마이그레이션을 위한 일련의 도구들을 포함할 수 있다. 이러한 도구들은 클라우드 기반 도구 또는 로컬 애플리케이션일 수 있다. 도구들은 데이터 내보내기(export) 도구(412), 데이터 로더 도구(414), 검증 도구(416), 및 캐치-업 도구(418)를 포함할 수 있다.
데이터 내보내기 도구(412)는 하나 이상의 데이터베이스로부터 데이터를 내보내기 위한 소프트웨어 및/또는 하드웨어를 포함할 수 있다. 예를 들어, 데이터 내보내기 도구(412)는 온라인 DB(404) 및/또는 클론 DB(406)로부터 데이터를 내보내도록 구성 가능할 수 있다. 데이터 내보내기 도구(412)는 분산 SQL 데이터베이스 플랫폼 또는 CSV 데이터 파일에 저장된 데이터를 내보낼 수 있고 로지컬 풀 백 업(logical full back up) 또는 내보내기를 만드는 데 사용될 수 있다. 데이터 내보내기 도구(412)는 컨트롤러(323)의 인터페이스를 통해 구성 가능할 수 있고 데이터베이스의 데이터를 SQL 파일로, CSV 파일로, 또는 기타 내보내기-유형의 파일로 내보내기 위해 사용될 수 있다.
일부 실시예에서, 데이터 내보내기 도구(412)는 또한 내보내지 않는 데이터를 필터링하도록 구성될 수 있다. 예를 들어, 데이터 내보내기 도구(412)는 기본적으로 전체 데이터베이스의 테이블을 내보낼 수 있다. 컨트롤러(323)의 인터페이스를 통해, 데이터 내보내기 도구(412)는 시스템 데이터베이스의 테이블과 같이, 데이터베이스의 특정 테이블을 배제하도록 구성 가능할 수 있다. 추가적으로, 또는 대안적으로, 데이터 내보내기 도구(412)는 테이블의 메타데이터, 또는 데이터 자체의 키워드, 식별자, 또는 마크업에 기초하여 필터링 동작을 수행할 수 있다. 예를 들어, 데이터 내보내기 도구(412)는 테이블 필터를 지정함으로써 특정한 데이터베이스 또는 테이블을 필터링할 수 있다.
일부 실시예에서, 데이터 내보내기 도구(412)는 동시성을 통해 내보내기 동작을 수행할 수 있다. 예를 들어 데이터 내보내기 도구(412)는 데이터를 DB 클러스터링 시스템(420)으로 전송하거나 또는 내보낼 때 동시 동작을 수행하도록 구성될 수 있다. 이러한 실시예에서, 데이터 내보내기 도구(412)는 단일의 파일에 대한 최대 레코드의 수(또는 데이터베이스의 행의 수)를 지정하고 테이블의 동시성을 가능하게 하여 대규모 테이블을 내보내는 속도를 개선하도록 구성될 수 있다. 추가적으로, 또는 대안적으로, 데이터 내보내기 도구(412)는 데이터 작업 동안 일관성을 검증할 수 있다. 예를 들어, 데이터 내보내기 도구(412)는 일관성 보장을 위해 데이터가 내보내지는 방식을 제어하도록 구성 가능할 수 있다. 이러한 실시예에서, 데이터 내보내기 도구(412)는 기본적으로 특정한 타임스탬프의 스냅샷을 획득할 수 있고(즉, 일관성 스냅샷), 이어서 일관성을 위해 스냅샷을 사용할 수 있다. 이러한 실시예에서, 데이터 내보내기 도구(412)는 스냅샷의 특정 매개변수를 사용하여 백업할 타임스탬프를 지정할 수 있다.
데이터 로더 도구(414)는 하나 이상의 데이터베이스로 데이터를 가져오기(import) 위한 소프트웨어 및/또는 하드웨어를 포함할 수 있다. 예를 들어, 데이터 로더 도구(414)를 통해, 컨트롤러(323)는 DB 클러스터링 시스템(420)에 데이터를 로딩할 수 있다. 데이터 로더 도구(414)는 데이터 및 백업의 멀티-쓰레드 로딩을 위한 도구로서 구성될 수 있다. 데이터 로더 도구(414)는 호스트 서버, 또는 데이터베이스에 연결됨으로써, 데이터를 쓰기 및/또는 로딩하기 위해 요구되는 권한을 식별함으로써 동작할 수 있고, 데이터 전송을 시작할 수 있다. 예를 들어, 데이터 로더 도구(414)는 포트를 개방할 수 있고 도메인 소켓 파일에 대한 연결을 설정하여 데이터를 데이터베이스의 특정 위치로 전달하고 특정 구조를 보존할 수 있다. 또한 데이터 로더 도구(414)는 하나 이상의 데이터 수정을 수행하도록 구성 가능할 수 있다. 예를 들어, 데이터 로더 도구(414)는 테이블 이름의 중복을 제거하고, 데이터의 특정 부분을 조각 모음하고, 및/또는 손상되었을 수 있는 데이터를 덮어쓸 수 있다. 또한, 특정 실시예에서 데이터 로더 도구(414)는 내보낸 데이터, 데이터 구조, 및 임의의 수정을 보고하는 출력 파일을 생성할 수 있다. 추가적으로, 또는 대안적으로, 데이터 로더 도구(414)는 데이터베이스의 테이블의 메타데이터 정보와, 예를 들어, 로드의 시작 및 종료 시간 뿐만 아니라 마스터 바이너리 로그 위치, 분리된 파일, 테이블 스키마, 및 바이너리 로그를 포함하는 데이터 로드의 메타데이터를 전송하도록 구성 가능할 수 있다.
검증 도구(416)는 데이터베이스 마이그레이션 프로세스 이전, 도중, 및/또는 이후에 데이터의 검증을 위한 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 검증 도구(416)는 다양한 환경에 걸쳐 데이터 검증을 위해 구성될 수 있다. 일부 실시예에서, 검증 도구(416)는 검증 프로세스를 돕는 다수의 온라인 데이터 소스에 연결하기 위한 프레임워크를 포함할 수 있다. 검증 도구(416)는 테이블 레벨에서 행 레벨까지, 멀티-레벨 데이터 검증 기능을 수행할 수 있다. 예를 들어, 검증 도구(416)는 테이블 레벨 검증을 수행할 수 있고, 테이블 행 카운트(row count), 행 카운트 별 그룹화(group by row count), 열 집계(column aggregation), 무작위 필터(randomized filter), 및 제한(limit)과 같은 작업을 수행하도록 구성 가능할 수 있다. 대안적으로, 또는 추가적으로, 검증은 열, 행, 또는 SQL 레벨 검증을 수행하도록 구성 가능할 수 있다. 예를 들어, 검증 도구는 스키마/열 데이터 유형을 검증하고, 해시 비교를 실행하고, 및/또는 상이한 데이터 소스 상에서 커스텀 쿼리를 실행하는 작업을 수행할 수 있다.
일부 실시예에서, 검증 도구(416)는 동시 작업들을 수행하도록 컨트롤러(323)의 인터페이스를 통해 구성 가능할 수 있다. 예를 들어, 검증 도구(416)는 범위 기반 검증 또는 블록 기반 검증을 실행하기 위해 데이터 및 타겟 데이터베이스 모두에 연결될 수 있다. 이러한 사전적 또는 동시성 검증 중에, 검증 도구(416)는 소스 테이블에서 열의 카운팅 수에 기초하여 검증하고 타겟 테이블과 일치하는지 검증할 수 있다. 추가적으로, 또는 대안적으로, 검증 도구(416)는 커스터마이징된 확인, 또는 라벨에 기초하여, 특정 열을 통한 동시성 검증을 수행할 수 있다.
캐치-업 도구(418)는 타겟 및 소스 데이터베이스 사이의 데이터 갭을 수정하기 위한 소프트웨어 및/또는 하드웨어를 포함할 수 있다. 캐치-업 도구(418)는 컨트롤러(323)의 인터페이스를 통해 프로그래밍 가능할 수 있고 상이한 데이터베이스의 이중 쓰기, 리프레싱된 데이터 및/또는 갭 데이터를 저장하는 캐시 또는 일시적 데이터베이스를 생성하기 위한 작업을 수행하고, 검증을 확인하기 위해 필요한 반복을 수행할 수 있다. 일부 실시예에서, 캐치-업 도구(418)는 수정된 데이터가 소스 데이터의 다중 패스를 활용하여 소스에서 타겟 환경으로 주기적으로 복사되는 증분 복사 방식을 사용할 수 있다. 이러한 실시예에서, 캐치-업 도구(418)는 이중 쓰기를 턴 온 하여 타겟 환경에서 증분 데이터를 쓰고, 새로운 데이터베이스 블록 또는 인스턴스를 생성하여 증분 데이터를 검색하고, 그리고 검증 및 캐치-업 동작들을 실행하여 소스로부터 타겟 환경으로 증분 데이터를 전송할 수 있다. 이러한 실시예에서, 캐치-업 도구(418)는 각 후속 패스에서 처리되는 데이터에 대한 증분 변경을 마이그레이션할 수 있다. 그리고 특정 실시예에서, 캐치-업 도구는 더 빠른 검증 및 타겟 데이터베이스에 배치하기 위해 클러스터의 증분 데이터를 중단할 수 있다.
일부 실시예에서, 캐치-업 도구(418)는 추가적으로, 또는 대안적으로, 이중 쓰기 방식, 동시 저장, 및 두 개의 데이터베이스를 수정하는 것을 적용할 수 있다. 일부 실시예에서, 캐치-업 도구(418)는 이중-쓰기 작업을 초기화하기 전해 특정 테스트를 수행할 수 있다. 예를 들어, 컨트롤러(323)는 데이터베이스 스키마를 DB 클러스터링 시스템(420)에 적용할 때 캐치-업 도구(418)를 사용할 수 있고 이어서 이중 쓰기 동작이 동일한 데이터 구조를 적용하고 데이터를 동시에 쓰는지 확인하기 위해 검증 도구(416)를 사용할 수 있다.
또한, 특정 실시예에서 캐치-업 도구(418)는 소스 또는 기존 데이터베이스의 수정 또는 엔트리의 동시 모니터링을 수행할 수 있으므로 주기적으로 데이터를 비교할 필요가 없으나 소스 데이터베이스에 쓰여진 갭 데이터를 식별할 수 있다. 이러한 실시예에서, 캐치-업 도구(418)는 도구가 활동을 모니터링하고 저장된 정보의 변경을 스캔할 수 있도록 하는 소스 데이터로부터의 이벤트 정보 스트림에 커플링될 수 있다. 이러한 실시예에서, 캐치-업 도구(418)는 변경 갭 데이터를 식별할 뿐만 아니라, 변경 중인 스캔된 데이터와 함께 변경 알림의 연속 스트림을 배치하여 이중-쓰기 작업을 통해 캡처되었는지 여부를 결정한다. 이러한 실시예에서, 캐치-업 도구(418)는 데이터 세트가 활발한 변경을 겪고 있는 동안에도 데이터 마이그레이션이 수행되도록 할 수 있다.
도 4에 도시된 바와 같이, 특정 실시예에서 컨트롤러(323)(및 컨트롤러(323)의 도구)는 DB 클러스터링 시스템(420)에 연결될 수 있다. DB 클러스터링 시스템(420)은 일반화된 샤딩(sharding)을 통해 데이터를 저장하고 조직화하는 데이터베이스 클러스터링 시스템을 포함할 수 있다. 일부 실시예에서, DB 클러스터링 시스템(420)은 샤드-라우팅 로직을 캡슐화할 수 있다. 이러한 실시예에서, DB 클러스터링 시스템(420)은 애플리케이션 코드 및 데이터베이스 쿼리가 다수의 샤드 상에 데이터를 배포하도록 할 수 있다. 예를 들어, DB 클러스터링 시스템(420)은 데이터베이스에 데이터가 입력됨에 따라 샤드를 분할 및 병합할 수 있다. 이러한 실시예에서, DB 클러스터링 시스템(420)은 미리 정의된 클러스터링 사이즈를 선택하고 데이터 사이즈에 기초하여 상이한 샤드에 데이터를 정렬할 수 있다. 또한, 일부 실시예에서 DB 클러스터링 시스템(420)은 애플리케이션 프로그래밍 인터페이스(API; Application Programming Interface) 호출을 통해 라우팅되는 쿼리에, 노출되거나 또는 노출될 수 있는 데이터베이스 클러스터링 시스템을 포함할 수 있다. 이 방법에서, DB 클러스터링 시스템(420)은 마이그레이션 후에 온라인 쿼리를 처리하는 마이그레이션 데이터베이스일 수 있다. 또한, DB 클러스터링 시스템(420)은 온라인 리소스에 연결될 수 있다. 예를 들어, DB 클러스터링 시스템(420)은 온라인 리소스(340)에 연결될 수 있다.
일부 실시예에서, DB 클러스터링 시스템(420)은 트래픽이 많고 데이터세트가 큰 라이브 데이터베이스의 데이터를 빠르게 전송하기 위한 해결수단을 제공할 수 있다. 예를 들어, DB 클러스터링 시스템(420)은 데이터베이스 인스턴스의 대규모 클러스터를 배포하고, 사이즈를 조정하고, 그리고 관리할 수 있다. DB 클러스터링 시스템(420)은 MySQL, Percona, 및 MariaDB 데이터베이스를 포함하는 다수의 유형의 데이터베이스를 관리할 수 있다. 또한 DB 클러스터링 시스템(420)은 전용 하드웨어 상에서와 같이 공용 또는 사설 클라우드 아키텍처 상에서 효과적으로 작동하도록 설계될 수 있다. 일부 실시예에서, DB 클러스터링 시스템(420)은 애플리케이션 변경을 최소한으로 유지하면서 정보를 공유하도록 구성될 수 있다. 예를 들어, 정보가 DB 클러스터링 시스템(420)에 로딩되면, 하나 이상의 클러스터는 외부 또는 내부 소스와 공유하도록 설정될 수 있다. DB 클러스터링 시스템(420)은 또한 클라우드 기반 데이터베이스와 통신할 수 있고 독립적인 구조 파일로 관리될 수 있는 개별 데이터베이스 인스턴스를 배포할 수 있다.
특정 실시예에서, DB 클러스터링 시스템(420)은 일관된 메타데이터 저장소에 의해 지원되는, 몇몇 서버 프로세스, 커맨드-라인 유틸리티, 그리고 웹 기반 유틸리티를 포함할 수 있다. 예를 들어, 마이그레이션 프로세스 동안 컨트롤러(323)는 온라인 작업을 지원하는 데 사용될 타겟 데이터베이스로서 DB 클러스터링 시스템(420)을 설정할 수 있다. 이러한 실시예에서, DB 클러스터링 시스템(420)은 클라이언트-서버 모델에 의해 정의된 대로, 다른 컴퓨터 프로그램 또는 컴퓨터에 데이터베이스 서비스를 제공하는 데이터베이스 애플리케이션을 사용하여, 데이터베이스 서버를 설정할 수 있다. 또한, 일부 실시예에서 DB 클러스터링 시스템(420)은 마이그레이션 프로세스 동안 타겟 또는 마이그레이션 데이터베이스로서 동작할 수 있다.
도 4에 도시된 바와 같이, DB 클러스터링 시스템(420)에 커플링된 것에 더하여, 컨트롤러(323)는 또한 클론 DB(406)에 연결될 수 있다. 클론 DB(406)는 기존 데이터베이스와 동일한 볼륨 및 동일한 데이터를 갖는 새로운 클러스터를 생성하는 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 클론 DB(406)는 기존 데이터베이스와 관련된 관련 데이터 볼륨이 있는 클라우드 기반 데이터베이스 인스턴스일 수 있다. 일부 실시예에서, 클론 DB(406)는 데이터베이스 클러스터로부터 프로비저닝된 클론일 수 있다. 대안적으로, 또는 추가적으로, 클론 DB(406)는 서버가 없고 기존 데이터베이스(들)와 동일한 규칙으로 프로비저닝될 수 있다.
클론 DB(406)는 기존 데이터베이스와 동일한 동작을 가질 수 있다. 예를 들어, 클론 DB(406)는 동일한 데이터 구조, 데이터베이스 스키마, 및 데이터 배열을 가질 수 있다. 또한, 클론 DB(406)는 동일한 메타데이터 및 검증 데이터를 저장할 수 있다.
대규모 데이터 세트가 있는 실시예에서, 클론 DB(406)는 클론 DB(406)에서 데이터의 효율적인 복제를 위해 복사 및 쓰기 프로토콜을 사용할 수 있다. 이러한 실시예에서, 클론 DB(406)는 클론 DB(406)의 페이지 및 기본 스토리지 볼륨에 데이터를 저장할 수 있다. 또한 클론 DB(406)는 물리적 저장 매체의 동일한 세그먼트를 소스 세그먼트로 사용하여 데이터를 복제할 수 있다. 클론 DB(406)는 또한 필요한 스토리지를 상황에 따라 조정할 수 있다. 예를 들어, 클론 DB(406)의 복제동안, 데이터베이스는 기존 데이터베이스와 동일한 스토리지를 결정할 수 있다. 추가적인 공간이 필요한 경우, 클론 DB(406)는 새로운 데이터베이스에 데이터가 복제됨에 따라 새로운 페이지를 생성할 수 있다. 또한, 클론 DB(406)는 데이터 라우팅 및 API 응답을 위해 기존 페이지를 참조할 수 있다.
일부 실시예에서, 또한 도 5와 관련하여 아래에서 더 논의되는 바와 같이, 컨트롤러(323)는 하나 이상의 로컬 데이터베이스(325)를 사용하여 클론 DB(406)를 생성할 수 있다. 컨트롤러(323)는 새로운 위치에 기존 또는 소스 데이터베이스를 복제하는 클론 DB(406)를 생성할 수 있다. 추가적으로, 또는 대안적으로, 컨트롤러(323)는 이전에 프로비저닝된 데이터베이스 인스턴스로부터 프로비저닝된 클론 DB(406)를 생성할 수 있다. 또한, 클론 DB(406)는 보안을 향상시키기 위해 암호화된 데이터베이스로서 생성될 수 있다. 또한, 도 4에서 클론 DB(406)는 단일의 데이터베이스로 도시되었으나, 일부 실시예에서 클론 DB(406)는 하나 이상의 관리 서버를 통해 연관될 수 있는 다수의 데이터베이스를 포함할 수 있다.
온라인 DB(404)는 클론 DB(406)와 유사할 수 있다. 그러나 온라인 DB(404)는, 온라인 트래픽에 연결될 수 있다. 특정 실시예에서, 온라인 DB(404)는 서버가 없는 주문형 데이터베이스 시스템일 수 있다. 이러한 실시예에서, 온라인 DB(404)는 온라인 DB(404)로부터 데이터를 요청하는 API 호출을 수신하고 처리하도록 구성될 수 있다.
일부 실시예에서, 온라인 DB(404)는 클라우드 기반 데이터베이스 인스턴스일 수 있다. 그러나 다른 실시예에서, 온라인 DB(404)는 온라인 트래픽에 연결된 데이터베이스일 수 있다. 예를 들어, 온라인 DB(404)는 네트워크(370)에 연결된 하나 이상의 로컬 데이터베이스(325)일 수 있다. 또한, 온라인 DB(404)는 특정 용량 범위를 갖고 타겟 애플리케이션을 지원하는, 특정 목적의 데이터베이스로서 구현될 수 있다.
일부 실시예에서, 온라인 DB(404) 및 클론 DB(406)는 하나 이상의 데이터베이스(380)일 수 있다. 다른 실시예에서, 온라인 DB(404) 및 클론 DB(406)는 로컬 데이터베이스(325)일 수 있다. 또 다른 실시예에서, 온라인 DB(404) 및 클론 DB(406)는 데이터베이스(380) 및 로컬 데이터베이스(325)의 조합일 수 있다. 예를 들어, 온라인 DB(404)는 데이터베이스(380) 중 하나로서 설정될 수 있고, DM 시스템(320) 외부에 있고 온라인 작업을 지원하기 위해 네트워크(370)에 연결되어 있는 반면, 클론 DB(406)는 로컬 데이터베이스(325) 중 하나로서 설정될 수 있다.
도 4에 도시된 바와 같이, 온라인 DB(404) 및 DB 클러스터링 시스템(420)은 마이그레이션 도구(402)에 연결될 수 있다. 마이그레이션 도구(402)는 클라이언트 디바이스와 인터페이싱하고 데이터베이스 마이그레이션 프로세스를 조정하도록 마이그레이션 시스템(400)의 요소와 연결된 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 예를 들어, 마이그레이션 도구(402)는 클라이언트 디바이스(350)(도 3)와 인터페이싱할 수 있고 데이터베이스의 마이그레이션을 위한 명령을 수신하고 및/또는 처리할 수 있다. 이어서, 마이그레이션 도구(402)는 컨트롤러(323), 또는 컨트롤러(323) 내부의 도구가, 온라인 DB(404) 상에서 동작하고, 클론 DB(406)를 생성하고, 그리고 데이터를 DB 클러스터링 시스템(420)으로 마이그레이션하도록 구성할 수 있다. 예를 들어, 마이그레이션 도구(402)는 데이터를 한 유형의 데이터베이스에서 다른 유형으로, 또는 데이터베이스에서 데이터 창고 또는 데이터 레이크와 같은 다른 유형의 데이터 저장소로 전송하라는 명령을 수신할 수 있다. 이러한 경우에서, 마이그레이션 도구(402)는 컨트롤러(323), DB 클러스터링 시스템(420)이, 갭 데이터를 내보내고, 로딩하고, 이어서 캐치-업하여 온라인 DB(404)의 데이터가 DB 클러스터링 시스템(420)에 마이그레이션 되도록 구성할 수 있다. 마이그레이션 도구(402)는 또한 데이터 마이그레이션을 용이하게 하기 위해 데이터베이스 복제 명령을 조정할 수 있으며, 상기 설명한 바와 같이, 다운타임을 최소화하고 동시성 검증을 통해 데이터 정확도를 향상시킬 수 있다. 도 5 내지 도 11에서 더 논의되는 바와 같이, 마이그레이션 도구(402)를 통해 마이그레이션 시스템(400)은 데이터베이스의 마이그레이션을 용이하게 할 수 있다.
마이그레이션 도구(402)는 마이그레이션 프로세스를 자동화하고 마이그레이션을 구성 및 실행하기 위해 클라이언트 또는 관리자에 의해 액세스될 수 있는, 마이그레이션 애플리케이션으로서 구성될 수 있다. 일부 실시예에서, 마이그레이션 도구(402)는 그래픽 디자이너 또는 매핑 도구를 제공할 수 있다. 또한, 마이그레이션 도구(402)는 로그 기반 리포트, 및 마이그레이션 타겟, 필터, 및 데이터 구조 수정을 조정하기 위한 도구들을 구비할 수 있다.
시스템(400)의 기능적 빌딩 블록들의 구성 및 경계들은 설명의 편의를 위해 본 명세서에서 정의되었음이 이해되어야 한다. 지정된 기능들과 그 관계가 적절하게 수행되는 한 대안적인 경계들이 정의될 수 있다. 대안(본 명세서에서 설명된 것의 등가물, 확장, 변형, 변이 등 포함)은 명백할 것이다. 이러한 대안은 개시된 실시예의 범위 내에 속한다.
도 5는 개시된 실시예에 따른, 데이터베이스 마이그레이션을 위한 예시적인 프로세스(500)의 흐름도이다. 일부 실시예에서, 시스템(300)의 요소는 프로세스(500)를 수행할 수 있다. 예를 들어, 아래의 단계 설명에 개시된 바와 같이, DM 시스템(320)은 프로세스(500)를 수행할 수 있다. 일부 실시예에서, 컨트롤러(323)는 프로세스(500)의 동작을 수행하도록 구성될 수 있다. 대안적으로, 또는 추가적으로, 온라인 리소스(340) 및/또는 제3자 시스템(360)은 프로세스(500), 또는 프로세스(500)의 일부를 수행할 수 있다. 또한, 다른 실시예에서 시스템(100), 또는 시스템(100)의 일부는, 프로세스(500)를 수행할 수 있다. 예를 들어, 내부 프론트 엔드 시스템(105), SCM 시스템(117), 및/또는 SAT(101)는 프로세스(500)를 수행할 수 있다. 또한, 다른 실시예에서 시스템(400)은 프로세스(500)를 구현할 수 있다. 예를 들어, 마이그레이션 도구(402), 컨트롤러(323), 및/또는 DB 클러스터링 시스템(402)은 프로세스(500)의 동작을 수행할 수 있다.
아래의 프로세스(500)의 설명은 프로세스(500)의 단계를 수행하는 DM 시스템(320)의 실시예를 도시한다. 그러나, 이전에 논의된 바와 같이, 시스템(300)의 다른 요소가 또한 프로세스(500)의 하나 이상의 단계를 수행하도록 구성 가능할 수 있다. 예를 들어, 온라인 리소스(340)는 프로세스(500)의 하나 이상의 단계를 수행할 수 있다.
단계 502에서, DM 시스템(320)은 타겟 데이터베이스에 데이터베이스 스키마를 적용할 수 있고, 데이터베이스 클러스터링 시스템으로서 설정될 수 있다. 예를 들어, DM 시스템(320)은 로컬 데이터베이스(325) 중 하나에 데이터베이스 스키마를 적용할 수 있다. 일부 실시예에서 DM 시스템(320)은 컨트롤러(323)를 통해 DB 클러스터링 시스템(420)에 데이터베이스 스키마를 적용할 수 있다. 일부 실시예에서, 도 9와 관련하여 더 논의되는 바와 같이, 단계 504에서 데이터를 내보내는 것은 클론 데이터베이스를 생성하는 것을 포함할 수 있다. 다운타임을 최소화하고 동작 중단을 피하기 위해, DM 시스템(320)은 DM 시스템(320)이 온라인 데이터베이스(온라인 DB(404)와 같은)를 방해하지 않고 데이터 내보내기 및 검증을 수행할 수 있도록 하는 복제 작업으로 프로세스(500)를 개시할 수 있다.
단계 504에서, DM 시스템(320)은 데이터베이스로부터 데이터를 내보낼 수 있다. 예를 들어, DM 시스템(320)은 하나 이상의 데이터베이스(380)의 데이터를 SQL 파일 및/또는 CSV 파일로 내보낼 수 있다. 일부 실시예에서, DM 시스템(320)은 컨트롤러(323)를 통해 온라인 DB(404)의 데이터를 내보낼 수 있다. 예를 들어, 도 4와 관련하여 논의되는 바와 같이, 컨트롤러(323)는 내보내기 도구(412)를 포함할 수 있다. 이러한 실시예에서, DM 시스템(320)은 내보내기 도구(412)의 구성들 및/또는 기능들을 사용하여 온라인 DB(404)로부터 데이터를 내보내기 위한 동작들을 구성하고 실행할 수 있다.
단계 506에서, DM 시스템(320)은 타겟 베이스로 파일을 가져올 수 있고, 데이터베이스 클러스터링 시스템으로서 설정될 수 있다. 예를 들어, DM 시스템(320)은 로컬 데이터베이스(325) 중 하나로 파일을 가져올 수 있다. 일부 실시예에서, DM 시스템은 단계 504에서 내보내진 데이터를 컨트롤러(323)를 통해 DB 클러스터링 시스템으로 가져올 수 있다. 예를 들어, 도 4와 관련하여 논의된 바와 같이, 컨트롤러(323)는 데이터 로더 도구(414)를 포함할 수 있다. 이러한 실시예에서, DM 시스템(320)은 데이터 로더 도구(414)의 구성들 및/또는 기능들을 사용하여 DB 클러스터링 시스템(420)에 데이터를 로딩하기 위한 동작들을 구성하고 실행할 수 있다.
단계 508에서, DM 시스템(320)은 가져오기의 데이터 일관성을 검증할 수 있다. 예를 들어, DM 시스템(320)은 단계 506에서 타겟 데이터베이스로 가져온 데이터의 일관성 및/또는 정확도를 검증할 수 있다. 일부 실시예에서, DM 시스템(320)은 단계 506에서 컨트롤러(323)를 통해 DB 클러스터링 시스템(420)으로 가져온 데이터를 검증할 수 있다. 예를 들어, 도 4와 관련하여 논의된 바와 같이, 컨트롤러(323)는 검증 도구(416)를 포함할 수 있다. 이러한 실시예에서, DM 시스템(320)은 DB 클러스터링 시스템(420)으로의 가져오기 동작을 검증하기 위한 동작들을 구성하고 실행할 수 있다.
도 5는 단계 506에 후속하는 단계 508을 나타내나, 일부 실시예는 데이터 일관성의 동시 검증을 수행할 수 있다. 도 4와 관련하여 논의된 바와 같이, 검증 도구(416)는 예를 들어, 다른 클러스터가 완료되는 반면 DB 클러스터링 시스템(420)의 특정 클러스터 상에서 동작함으로써, 가져오기 도중에 동작할 수 있다. 동시 검증은 위에서 논의된 바와 같이, 더 높은 레벨의 검증을 포함할 수 있다. 그러나 다른 실시예에서, 단계 510은 동시 검증 및 순차 검증을 모두 포함할 수 있다.
단계 510에서, DM 시스템(320)은 이중 쓰기 동작을 턴 온 할 수 있다. 예를 들어, 상기에서 도 4와 관련하여 논의된 바와 같이, 컨트롤러(323)는 두 개의 데이터베이스 공간에서 증분 데이터를 캡처하는 이중 쓰기를 위한 도구들을 포함할 수 있다. 증분 데이터는 온라인 리소스(340) 및/또는 클라이언트 디바이스(350)로부터 수신될 수 있다. 예를 들어, 클라이언트 디바이스(350)를 통한 사용자는 제품 또는 다수의 제품에 관한 가격책정 데이터를 업데이트하기 위해 데이터베이스 쿼리를 발행할 수 있다. 이러한 실시예에서, 사용자에 의해 요청된 변경은 온라인 DB(404) 및 DB 클러스터링 시스템(420) 모두에서 복제될 수 있다. 대안적으로, 또는 추가적으로, DM 시스템이 마이그레이션을 수행하는 동안 사용자가 변경을 만들 때, 온라인 DB(404)를 업데이트하는 명령이 온라인 리소스(340) 및/또는 마이그레이션 도구(402)로부터 수신될 수 있다. 단계 510에서 DM 시스템(320)은 온라인 데이터베이스의 데이터 수정을 타겟 데이터베이스에 복제하기 위해 이중 쓰기 동작을 개시할 수 있다.
단계 512에서, DM 시스템(320)은 온라인 데이터베이스로부터 새로운 데이터베이스 클론을 생성할 수 있다. 예를 들어, DM 시스템(320)은 온라인 데이터베이스에서 보다 최근의 데이터 및 데이터 수정을 캡처하기 위해 새로운 클론 데이터베이스를 생성할 수 있다. 이러한 실시예에서, 새로운 데이터베이스는 보다 많은 리프레싱된 데이터를 검색할 수 있다. 일부 실시예에서, DM 시스템(320)은 새로운 클라우드 인스턴스에서 새로운 클론을 생성하기 위해 컨트롤러(323)를 사용할 수 있다. 일부 실시예에서, 두 번째 클론 데이터베이스에 대한 온라인 데이터베이스의 새로운 또는 두 번째의 클론은 첫 번째 클론 위에 다시 쓰여질 수 있다. 예를 들어, 단계 512는 이전 클론 데이터베이스 위에 다시 쓰는 것을 포함할 수 있다. 그러나 다른 실시예에서, 클론 데이터베이스는 독립적일 수 있다.
단계 514에서, DM 시스템(320)은 단계 510에서 이중 쓰기 동작이 시작된 지점으로부터 단계 512에서 생성된 클론 사이의 수정 또는 데이터세트의 델타를 식별하고 로딩할 수 있다. 예를 들어, DM 시스템(320)은 증분 데이터를 캡처하도록 이중 쓰기가 시작된 이후에 변경된 데이터를 식별할 수 있다. 일부 실시예에서, DM 시스템(320)은 데이터 검증을 통해 데이터를 식별할 수 있다. 그리고 DM 시스템(320)은 새로운 클론 데이터베이스로부터 DB 클러스터링 시스템(420)까지의 테이블 동기화를 통해, 델타, 또는 캐치-업 데이터를 로딩할 수 있다.
단계 516에서, DM 시스템(320)은 새로운 일관성 검증을 실행할 수 있다. 예를 들어, 단계 514에서 DB 클러스터링 시스템(420)에 데이터 델타를 로딩한 후, DM 시스템(320)은 단계 508에서 수행된 것과 유사한 새로운 검증 프로세스를 실행할 수 있으나, 이번에는 검증을 위해 라이브 데이터베이스(예를 들어, 온라인 DB(404)) 데이터세트를 사용한다. 예를 들어 단계 516을 통해, DM 시스템(420)은 단계 514에서 로딩된 캐치-업 데이터가 타겟 DB 클러스터링 시스템(420)에서와 같이 온라인 DB(404)에서 동일한 데이터를 생성하는지 검증한다. 이 단계는 DM 시스템(320)이 데이터 마이그레이션이 완료되었는지 그리고 두 개의 데이터베이스가 동일한 컨텐츠 및 구조를 갖는지 검증하도록 할 수 있다.
단계 520에서, DM 시스템(320)은 마이그레이션에서 어떤 불일치가 있는지 여부를 결정할 수 있다. 단계 516의 검증의 결과에 기초하여, DM 시스템(320)은 기존 및 타겟 데이터베이스 사이의 불일치가 있는지 여부를 결정할 수 있다. 단계 520에서 DM 시스템(320)이 데이터 불일치가 있다고 결정하면(단계 520: 예), DM 시스템(320)은 단계 512로 돌아가고, 새로운 데이터베이스 클론을 생성하여 식별하고, 캐치 업 데이터를 로딩하고(단계 516), 그리고 이어서 새로운 검증(520)을 수행할 수 있다. 일부 실시예에서, 이러한 반복적 프로세스는 검증 프로세스가 성공일 때 까지 여러 번 복제될 수 있다. DM 시스템(320)이 데이터 불일치가 없다고 결정하면(단계 520: 아니오), DM 시스템(320)은 단계 522로 계속된다.
단계 522에서, DM 시스템(320)은 마이그레이션 프로세스가 데이터 캐치-업을 완료했는지 및/또는 마이그레이션이 데이터베이스의 완전한 복제를 발생시켰는지를 결정할 수 있다. 일부 실시예에서, 도 9와 관련하여 더 논의되는 바와 같이, 데이터 델타를 로딩하기 위한 캐치-업 동작의 마지막은 기존 데이터베이스로부터 마이그레이션된, 또는 타겟 데이터베이스로 온라인 트래픽을 대체하는 것으로 이어질 수 있다. 예를 들어, 일부 실시예에서 기존에 온라인 DB(404)로 라우팅되었던 트래픽은 DB 클러스터링 시스템(420)으로 전송될 수 있다. 또한, DM 시스템(320)은 클라이언트 디바이스(350)로 알림을 생성하고 및/또는 데이터 마이그레이션에 기초하여 API 프로세싱을 업데이트하는 추가적인 동작들을 수행할 수 있다.
도 6은 개시된 실시예에 따른, 마이그레이션된 데이터 일관성 검증에 관한 예시적인 프로세스(600)의 흐름도이다. 일부 실시예에서, 시스템(300)의 요소는 프로세스(600)를 수행할 수 있다. 예를 들어, 아래 단계 설명에 개시된 바와 같이, DM 시스템(320)은 프로세스(600)를 수행할 수 있다. 이러한 실시예에서, 컨트롤러(323), 그리고 특히 검증 도구(416)는, 프로세스(600)의 동작들을 수행하도록 구성될 수 있다. 대안적으로, 또는 추가적으로, 온라인 리소스(340) 및/또는 제3자 시스템(360)은 프로세스(600), 또는 프로세스(600)의 일부를 수행할 수 있다. 또한, 다른 실시예에서 시스템(100), 또는 시스템(100)의 일부는, 프로세스(600)를 수행할 수 있다. 예를 들어, 내부 프론트 엔드 시스템(105), SCM 시스템(117), 및/또는 SAT(101)는 프로세스(600)를 수행할 수 있다. 또한, 다른 실시예에서 시스템(400)은 프로세스(600)를 구현할 수 있다. 예를 들어, 마이그레이션 도구(402), 컨트롤러(323), 및/또는 DB 클러스터링 시스템(420)은 프로세스(600)의 동작들을 수행할 수 있다. 일부 실시예에서, 프로세스(600)는 프로세스(500)의 일부일 수 있다. 예를 들어, 프로세스(600)는 프로세스(500)(도 5)의 단계 516의 일부로서 실행될 수 있다. 다른 실시예에서, 프로세스(600)는 프로세스(500)로부터 독립적일 수 있다.
아래의 프로세스(600)의 설명은 프로세스(600)의 단계들을 수행하는 DM 시스템(320)에서의 실시예를 나타낸다. 그러나, 이전에 논의된 바와 같이, 시스템(300)의 다른 요소가 또한 프로세스(600)의 하나 이상의 단계들을 수행하도록 구성 가능할 수 있다. 예를 들어, 온라인 리소스(340)는 프로세스(600)의 하나 이상의 단계들을 수행할 수 있다. 이러한 실시예에서, 온라인 리소스(340)는 컨트롤러(323)에 의해 지시된 대로 통신하고 동작들을 실행할 수 있다.
단계 602에서, DM 시스템(320)은 검증 프로세스를 개시할 수 있다. 예를 들어, 프로세스(500)의 일부로서 DM 시스템(320)은 데이터 가져오기, 복제, 및/또는 데이터 검증 중에 데이터 검증을 개시할 수 있다. 일부 실시예에서, 도 6에 도시된 바와 같이, 검증은 행 비교 검증에 기초할 수 있다. 그러나 다른 실시예에서, 검증은 테이블-레벨 및/또는 행 검증에 기초할 수 있다. 이러한 실시예에서, DM 시스템(320)은 테이블 행 카운트; 행 카운트 별 그룹화, 열 집계; 무작위 필터; 및 필터 제한과 같은 동작을 수행할 수 있다. 또한, 단계 602에서 DM 시스템은 열 또는 SQL 레벨 검증을 수행하도록 구성 가능할 수 있다. 예를 들어, 검증 도구는 스키마/열 데이터 유형을 검증하고, 해시 비교를 실행하고, 및/또는 상이한 데이터 소스 상에 커스텀 쿼리를 실행하는 동작을 수행할 수 있다. 또한, 특정 실시예에서, 그리고 마이그레이션 중의 리소스 할당을 향상시키기 위해, DM 시스템(320)은 온라인 데이터베이스의 선택된 수의 행에 대해 행 검증을 수행할 수 있다. 이러한 행은 사용자에 의해 식별된 데이터 범위에 기초하여 선택될 수 있다(예를 들어, 마이그레이션 도구(420)를 통해). 이러한 실시예에서, DM 시스템(320)은 제1 클론 데이터베이스 및 마이그레이션 데이터베이스의 각 행에서 열 값의 해시를 비교하여 클론 및 마이그레이션 데이터베이스의 행 비교를 수행할 수 있다.
단계 610에서, DM 시스템(320)은 데이터에서 어떤 불일치가 발견되었는지 여부를 결정할 수 있다. 예를 들어, DM 시스템(320)은 두 개의 데이터베이스 사이의 모든 행이 검증 테스트를 통과하는지 여부를 결정할 수 있다(예를 들어, 해시 함수를 사용). DM 시스템(320)이 검증의 결과로서 불일치가 있는 것으로 결정하면(단계 610: 예), DM 시스템(320)은 단계 612로 계속된다.
단계 612에서, DM 시스템(320)은 불일치의 범위를 식별할 수 있다. 예를 들어, DM 시스템(320)은 불일치 데이터세트를 갖는 행의 범위를 식별할 수 있다. 단계 614에서, DM 시스템(320)은 특정 데이터 범위에 관한 캐치-업 로딩을 실행함으로써 불일치를 해결하려고 시도할 수 있다. 예를 들어, 도 5와 관련하여 논의된 바와 같이, DM 시스템(320)은 델타 데이터를 로딩하기 위해 사용되는 클론 데이터베이스를 생성할 수 있다. 단계 614에서, DM 시스템은 이러한 프로세스를 실행하지만(예를 들어, 단계 512 및 514) 불일치를 해결하기 위해 단계 612에서 식별된 특정 범위로 제한된다. 도 6에 도시된 바와 같이, 불일치 데이터를 갖는 범위에 관한 캐치-업 로딩을 재실행한 후, DM 시스템(320)은 단계 602로 되돌아갈 수 있고 검증을 재실행할 수 있다.
그러나, 단계 610에서 DM 시스템(320)이 불일치가 없는 것으로 결정하면(단계 610: 아니오), DM 시스템(320)은 단계 622로 계속될 수 있고 이중 쓰기 동작을 턴 오프할 수 있다. 도 5와 관련하여 논의된 바와 같이, DM 시스템(320)은 예를 들어, DB 클러스터링 시스템(420)과 같은 타겟 데이터베이스에 증분 데이터를 쓰는 것과 같은 이중 쓰기 동작을 사용할 수 있다. 검증이 완료되고 불일치가 발견되지 않는 경우, DM 시스템(320)은 이중 쓰기 동작을 중지할 수 있다.
단계 624에서, DM 시스템(320)은 이중 쓰기 중단 후에 온라인 데이터베이스에서 추가적인 데이터가 수정되지 않음을 검증하기 위해 미리 결정된 시간 윈도우에 관한 캐치-업 검증을 재실행할 수 있다. 작은 시간 윈도우 동안에도 온라인 데이터베이스가 변경될 수 있기 때문에, DM 시스템(320)은 마지막 성공적인 검증 이후 이루어질 수 있고 이중 쓰기 동작을 통해 캡처되지 않았을 수 있는 임의의 데이터 변경을 식별하기 위해 시간 윈도우 동안 캐치-업 검증을 재실행할 수 있다. 임의의 누락된 데이터가 식별되는 경우, DM 시스템(320)은 캐치 업 데이터를 로딩할 수 있다.
단계 626에서, DM 시스템(320)은 타겟 데이터베이스로 트래픽을 스위칭할 수 있다. 예를 들어, DM 시스템(320)은 온라인 DB(404)로부터 DB 클러스터링 시스템(420)로 트래픽을 스위칭할 수 있다. 예를 들어, DM 시스템(320)은 데이터베이스 주소, 서버, 및/또는 API 프로세서를 조정하여 기존 데이터베이스로부터/로의 데이터 요청을 마이그레이션된 데이터베이스로 라우팅할 수 있다.
단계 628에서, DM 시스템(320)은 클론 데이터베이스의 공간을 확보할 수 있다. 예를 들어, 도 5와 관련하여 논의된 바와 같이, DM 시스템(320)은 클론 DB(406)와 같이, 로컬 데이터베이스(325)에 클론 데이터베이스를 생성할 수 있으며, 이는 마이그레이션 프로세스 동안 데이터의 검증, 내보내기, 및 조작에 사용된다. DM 시스템(320)은 또한 타겟 데이터베이스를 리프레시된 데이터와 동기화하는 캐치-업 동작을 위한 복제용 로컬 데이터베이스(325)를 사용할 수 있다. 단계 628에서, DM 시스템(320)은 예를 들어, 로컬 데이터베이스(325)의 공간을 확보함으로써, 이러한 클론 데이터베이스의 공간을 확보할 수 있다.
도 7은 개시된 실시예에 따른, 라이브 데이터베이스의 마이그레이션에 관한 예시적인 프로세스의 흐름도이다. 일부 실시예에서, 시스템(300)의 요소는 프로세스(700)를 수행할 수 있다. 예를 들어, 아래의 단계 설명에 개시된 바와 같이, DM 시스템(320)은 프로세스(700)를 수행할 수 있다. 이러한 실시예에서, 컨트롤러(323)는 프로세스(700)의 동작들을 수행하도록 구성될 수 있다. 대안적으로, 또는 추가적으로, 온라인 리소스(340) 및/또는 데이터베이스(380)는 프로세스(700), 또는 프로세스(700)의 일부를 수행할 수 있다. 또한, 다른 실시예에서 시스템(100), 또는 시스템(100)의 일부는, 프로세스(700)를 수행할 수 있다. 예를 들어, 내부 프론트 엔드 시스템(105), SCM 시스템(117), 및/또는 SAT(101)는 프로세스(700)를 수행할 수 있다. 또한, 다른 실시예에서 시스템(400)은 프로세스(700)를 구현할 수 있다. 예를 들어, 마이그레이션 도구(402), 컨트롤러(323), 및/또는 DB 클러스터링 시스템(402)은 프로세스(700)의 동작을 수행할 수 있다.
아래의 프로세스(700)의 설명은 프로세스(700)의 단계들을 수행하는 DM 시스템(320)의 실시예를 설명한다. 그러나, 이전에 논의된 바와 같이, 시스템(300)의 다른 요소가 또한 프로세스(700)의 하나 이상의 단계들을 수행하도록 구성 가능할 수 있다. 예를 들어, 온라인 리소스(340)는 프로세스(700)의 하나 이상의 단계들을 수행할 수 있다. 이러한 실시예에서, 온라인 리소스(340)는 컨트롤러(323)에 의해 지시된 대로 통신하고 동작들을 실행할 수 있다.
단계 702에서, DM 시스템(320)은 데이터베이스 스키마를 적용할 수 있고 DB 클러스터링 시스템에 들어오는 데이터 수정을 복제하기 위해 이중 쓰기를 턴 온할 수 있다. 예를 들어, DM 시스템(320)은 온라인 DB(404)로부터 DB 클러스터링 시스템(402)으로 데이터베이스 스키마를 적용할 수 있다. 또한 단계 704에서 DM 시스템(320)은 이중 쓰기 동작을 통해 데이터의 복제를 테스트하기 위하여 이중 쓰기를 턴 온할 수 있다. 일부 실시예에서, 도 7에 도시된 바와 같이, 단계 702 및 704는 내보내기 파일을 생성하기 전에 수행될 수 있다. 이러한 실시예에서, DM 시스템(320)은 마이그레이션 데이터베이스에 데이터베이스 스키마를 적용하고; 이중 쓰기 동작의 테스트를 수행하고; 그리고 내보내기 파일이 생성되고 및/또는 라이브 데이터베이스가 복제되기 전에 이중 쓰기 동작을 중단할 수 있다.
단계 706에서, DM 시스템(320)은 온라인 데이터베이스로부터 제1 클론 데이터베이스를 생성할 수 있다. 예를 들어, 컨트롤러(323)를 통해 DM 시스템(320)은, 도 4에서 논의된 바와 같이, 클론 DB(406)에 온라인 DB(404)의 클론을 생성할 수 있다.
단계 708에서, DM 시스템(320)은 파일을 전송하기 위해 클론 DB(406)로부터 데이터를 내보낼 수 있다. 예를 들어, 컨트롤러(323) 및/또는 데이터 내보내기 도구(412)를 통해, DM 시스템(320)은 클론 DB(406)로부터 전송 파일로 데이터를 내보낼 수 있다. 전송 파일은 SQL 파일을 포함할 수 있다. 그러나 다른 실시예에서, 전송 파일은 CSV 파일 또는 다른 유형의 포맷을 포함할 수 있다.
단계 710에서, DM 시스템(320)은 클러스터링 시스템을 갖는 타겟 데이터베이스로 전송 파일을 가져올 수 있다. 예를 들어, 컨트롤러(323) 및/또는 데이터 로더 도구(414)를 통해, DM 시스템(320)은 DB 클러스터링 시스템(420)으로 전송 파일을 가져올 수 있다.
단계 712에서, DM 시스템(320)은 타겟 데이터베이스로 파일을 처음 가져온 후 이후 시점에서 기존 데이터베이스를 복제하는 새로운 클론을 생성할 수 있다. 예를 들어, DM 시스템(320)은 리프레시된 데이터를 이용하여 로컬 데이터베이스(325)의 하나에 새로운 데이터베이스 클론을 생성할 수 있다. 도 5와 관련하여 더 논의된 바와 같이, DM 시스템(320)은 초기 복제 동안 캡쳐되지 않았던 데이터를 식별하고 이어서 로딩하기 위해 캐치-업 동작을 수행할 수 있다. 온라인 데이터베이스의 순차적 복제 및 동시 또는 반복 검증을 통해, DM 시스템(320)은 데이터 손실 및 다운타임 없이 마이그레이션을 완료할 수 있다.
단계 714에서, DM 시스템(320)은 새로운 데이터의 전송을 완료하기 위해 캐치-업 프로그램을 실행할 수 있다. 예를 들어, DM 시스템(320)은 마지막 전송 이후 캡처되지 않은 정보의 델타를 식별하기 위한 동작을 수행하고 이를 타겟 데이터베이스에 로딩할 수 있다. 캐치-업 프로그램은 또한 캐치-업 도구(418)(도 4)에 의해 수행되는 동작을 포함할 수 있다. 또한, 캐치-업 프로그램은 단계 514 내지 520(도 5)에서 논의된 바와 같이, 데이터의 동시 및/또는 순차적 검증을 포함할 수도 있다.
단계 716에서, DM 시스템(320)은 기존 및 타겟 데이터베이스 사이의 최종 동기화를 수행할 수 있다. 예를 들어, DM 시스템(320)은 트래픽 분석을 수행하고 데이터베이스 사이의 범위 검증을 수행하기 위해 시간 윈도우를 선택하고 기존 데이터베이스로부터 타겟 데이터베이스로의 임의의 불일치 데이터를 포팅할 수 있다.
단계 718에서, DM 시스템은 기존 라이브 데이터베이스로부터 마이그레이션된 데이터베이스 또는 타겟 데이터베이스로 트래픽을 전송할 수 있다. 예를 들어, DM 시스템(320)은 온라인 DB(404)로부터 DB 클러스터링 시스템(420)으로 트래픽을 스위칭할 수 있다. 일부 실시예에서, DM 시스템(320)은 데이터베이스 주소, 서버, 및/또는 API 프로세서를 조정하여 기존 데이터베이스로부터/로의 데이터 요청을 마이그레이션된 데이터베이스로 라우팅하거나, 또는 다른 디바이스에 동일한 동작을 지시할 수 있다.
도 8은 개시된 실시예에 따른, 데이터베이스 마이그레이션 검증에 관한 예시적인 프로세스의 흐름도이다. 일부 실시예에서, 시스템(300)의 요소는 프로세스(800)를 수행할 수 있다. 예를 들어, 아래 단계 설명에서 개시된 바와 같이, DM 시스템(320)은 프로세스(800)를 수행할 수 있다. 이러한 실시예에서, 컨트롤러(323)는 프로세스(800)의 동작들을 수행하도록 구성될 수 있다. 대안적으로, 또는 추가적으로, 온라인 리소스(340), 클라이언트 디바이스(350), 및/또는 데이터베이스(380)는 프로세스(800), 또는 프로세스(800)의 일부를 수행할 수 있다. 또한, 다른 실시예에서 시스템(100), 또는 시스템(100)의 일부는, 프로세스(800)를 수행할 수 있다. 예를 들어, 내부 프론트 엔드 시스템(105), SCM 시스템(117), 및/또는 SAT(101)는 프로세스(800)를 수행할 수 있다. 또한, 다른 실시예에서 시스템(400)은 프로세스(800)를 구현할 수 있다. 예를 들어, 마이그레이션 도구(402), 컨트롤러(323), 및/또는 DB 클러스터링 시스템(402)은 프로세스(800)의 동작을 수행할 수 있다.
아래의 프로세스(800)의 설명은 프로세스(800)의 단계를 수행하는 DM 시스템(320)의 실시예를 설명한다. 그러나, 이전에 논의된 바와 같이, 시스템(300)의 다른 요소가 또한 프로세스(800)의 하나 이상의 단계를 수행하도록 구성 가능할 수 있다. 예를 들어, 온라인 리소스(340)는 프로세스(800)의 하나 이상의 단계를 수행할 수 있다. 이러한 실시예에서, 온라인 리소스(340)는 컨트롤러(323)에 의해 지시된 대로 통신하고 동작을 실행할 수 있다.
일부 실시예에서, 프로세스(800)를 수행하기 위해 DM 시스템(320)은 쿼리, 샤드 결정, 및 행 비교의 순차적 동작을 사용하여 쿼리를 먼저 실행하기 위해 일련의 동작을 수행할 수 있다. 예를 들어, DM 시스템(320)은 다음과 같은 명령을 사용하여 쿼리를 실행할 수 있다:
SELECT
PK,
SHARD_KEYS,
crc32(CONCAT_WS(<ALL_COLUMNS>)) as crc
FROM <TABLE>
WHERE (`PK` >= 1 AND `PK` < 1001)
ORDER BY `PK`
단계 802에서, DM 시스템(320)은 검증 작업을 개시할 수 있다. 예를 들어, 프로세스(700)의 일부로서, DM 시스템(320)은 내보내기/가져오기 동작(예를 들어, 단계 710) 후(또는 동안) 데이터를 검증할 수 있고 및/또는 캐치-업 동작(예를 들어, 단계 714)에 대해 누락된 데이터를 식별할 수 있다. 이러한 경우에서, DM 시스템(320)은, 예를 들어, 검증 도구(416)에 의해 동작을 연결하거나 트리거함으로써, 데이터 검증을 개시할 수 있다.
도 8에 도시된 바와 같이, 검증 프로세스는 기존 및 타겟 데이터베이스의 동시 동작으로 수행될 수 있다. 예를 들어, 검증 도구(416)는 데이터 마이그레이션 후 기존 및 타겟 데이터베이스 모두에서 동작하고 데이터 불일치를 결정하기 위해 병렬 동작을 수행하도록 구성될 수 있다. 이러한 실시예에서, 단계 804 내지 808은 기존 데이터베이스의 데이터 상에서 실행될 수 있다. 예를 들어, 컨트롤러(323)는 온라인 DB(404) 상에서 단계 804 내지 806을 실행할 수 있다. 반면에, 단계 810 내지 812는 마이그레이션 또는 타겟 데이터베이스의 데이터 상에 수행될 수 있다. 예를 들어, 컨트롤러(323)는 DB 클러스터링 시스템(420) 상에서 단계 810 내지 814를 수행할 수 있다.
단계 804에서, DM 시스템(320)은 데이터베이스의 테이블을 읽을 수 있다. 일부 실시예에서, 상기 논의된 바와 같이, 다운타임을 최소화하기 위해 DM 시스템(320)은 클론 데이터베이스 상에서 검증 동작을 수행할 수 있다. 이 방법으로, DM 시스템(320)은 특히 온라인 애플리케이션을 지원하는 데이터베이스에 대한 동작 중단을 방지할 수 있다. 따라서, 단계 804에서 DM 시스템(320)은 클론 데이터베이스의 테이블을 읽을 수 있다. 예를 들어, DM 시스템(320)은 컨트롤러(323)가 클론 데이터베이스(406)의 테이블을 읽도록 구성할 수 있다.
단계 806에서, DM 시스템(320)은 샤드를 결정하기 위해 데이터베이스의 각 행에 관한 샤드 키를 계산할 수 있다. 샤드 키는 단일 인덱스 필드 및/또는 클러스터의 샤드 사이의 컬렉션 문서의 분포를 결정하는 복합 인덱스가 적용되는 다수의 필드를 포함할 수 있다. DM 시스템(320)은 해쉬 값을 통해 샤드 키를 계산할 수 있고 이것을 파티션으로서 사용할 수 있다. 샤드 키를 계산함에 있어, DM 시스템(320)은 각 행의 소스 구성에서 해쉬 값 및/또는 미리 구성된 라벨을 계산할 수 있다. 일부 실시예에서, 계산된 샤드 키는 애플리케이션 및 해당 애플리케이션에 사용할 샤드 그룹을 정의하는 메트릭 이름일 수 있다. 추가적으로, 또는 대안적으로, DM 시스템(320)은 데이터베이스 오브젝트의 각 행으로부터 해쉬를 계산할 수 있고 샤드를 나타내는 샤드 식별자와 비교할 수 있다. 이러한 실시예에서, DM 시스템(320)은 샤드 상에서 인덱스 데이터의 로그를 생성할 수 있다. DM 시스템(320)은 샤드 키의 계산을 위한 다양한 방법을 사용할 수 있고, 방법은 DJB2(32-비트), SDBM(32-비트), LoseLose(32-비트), FNV-1/FNV-1a(32-비트), CRC16(16-비트), 및/또는 Murmur2/Murmur3(32-비트)를 포함하나 이에 제한되지 않는다.
단계 804 내지 806과 병행하여, DM 시스템(320)은 타겟 데이터베이스에 대해 단계 810 내지 812를 수행할 수 있다. 일부 실시예에서, 단계 810 내지 812는 단계 804 내지 806에 대응할 수 있으나 타겟 데이터베이스에 적용된다. 예를 들어, DM 시스템(320)이 클론 DB(406)에 대해 단계 810 내지 812의 검증을 수행할 수 있는 반면, DM 시스템(320)은 DB 클러스터링 시스템(420)에 대해 단계 810 내지 812의 검증을 수행할 수 있다. 단계 804와 유사하게, 단계 810에서 DM 시스템(320)은 DB 클러스터링 시스템(420)의 테이블을 읽을 수 있다. 그리고, 단계 806에서와 같이, DM 시스템(320)은 DB 클러스터링 시스템(420)에서 샤드를 결정하기 위해 각 행에 관한 샤드 키를 계산할 수 있다. 또한, DM 시스템(320)은 SHA1 알고리즘을 사용하고, 해쉬 값 및/또는 샤드 키를 생성함으로써 샤드 키를 결정할 수 있다. 예를 들어, DM 시스템(320)은 UnicodeEncoding 클래스를 사용하여 문자열을 SHA256 클래스를 사용하여 해쉬된 바이트의 어레이로 변환할 수 있다.
단계 814에서, DM 시스템(320)은 단계 804 내지 812에서 계산된 컬럼 값들 및/또는 샤드들을 비교할 수 있다. 예를 들어, DM 시스템(320)은 비교값을 만들기 위해 값의 각각의 바이트를 통한 반복적인 동작을 사용하여 샤드 키, 샤드, 그리고 해쉬 값을 비교할 수 있다.
단계 816에서, DM 시스템(320)은 레코드가 동일한지 여부를 결정할 수 있다. 예를 들어, 단계 816에서 DM 시스템(320)은 타겟 및 기존 데이터베이스가 샤드, 샤드 키, 및/또는 해쉬 값의 비교에 기초하여 동일한 컨텐츠 및 데이터 구조를 갖는지 여부를 결정할 수 있다. DM 시스템이 레코드가 동일하지 않다고 결정하는 경우(단계 816: 아니오), DM 시스템(320)은 단계 818로 계속된다.
단계 818에서, DM 시스템(320)은 상이한 레코드(예를 들어, 상이한 행)가 이중 쓰기 동작 후에 더 새로운 수정을 갖는지 여부를 결정할 수 있다. 상이한 레코드는 이중 쓰기의 실행 후에 수정되었고, 상이한 레코드는 가장 최근의 변경을 반영하였기 때문에 수정할 필요가 없다. 따라서, 이중 쓰기 동작 후에(예를 들어, 단계 510이 실행된 후) 더 새로운 수정을 갖는 레코드는 최신일 수 있고 차이는 다뤄지거나 또는 수정될 필요가 없다. 따라서, 단계 818에서 DM 시스템(320)이 상이한 레코드가 더 새로운 수정 시간을 갖는 것을 결정한 경우, DM 시스템(320)은 단계 822로 계속되고 상이한 해쉬를 갖는 행 또는 레코드, 또는 상이한 샤드를 갖는 테이블을 무시할 수 있다. 더 새로운 수정을 갖는 레코드를 무시한 후, DM 시스템(320)은 단계 816으로 계속될 수 있고 한 번 더 비교된 레코드가 동일한지 여부를 결정할 수 있다. 그러나, 단계 818에서 DM 시스템(320)이 상이한 레코드가 더 새로운 수정 시간을 갖지 않는 것으로 결정한 경우, DM 시스템(320)은 단계 820으로 계속되고 검증은 실패를 나타낼 수 있다. 상이한 레코드가 더 새로운 수정이 없는 경우, 그것은 이중-쓰기 프로세스가 차이를 포착하지 않은 것을 의미하고 데이터 내보내기 또는 가져오기의 이슈가 있는 것이다. 이러한 경우에서, 검증 도구(416)는 부적절한 검증을 나타내는 신호를 트리거할 수 있고, 예를 들어, 도 5(예를 들어, 단계 520)와 관련하여 논의된 바와 같이 DM 시스템(320)에 의해 처리되는 불일치를 나타낸다.
그러나, 단계 816에서 DM 시스템(320)이 레코드가 동일한 것으로 결정하면(단계 816, 예), DM 시스템(320)은 단계 824로 계속될 수 있다. 단계 824에서, DM 시스템(824)은 데이터 전송이 성공적인 것으로 결정할 수 있다. 이러한 실시예에서, 검증 도구(416)는, 적절한 검증을 나타내는 신호를 트리거할 수 있고, 예를 들어 도 5에서 설명된 바와 같이, 불일치가 마이그레이션에서 발견되지 않고 마이그레이션 프로세스를 계속하는 것을 나타낼 수 있다.
일부 실시예에서, DM 시스템(320)은 제1 복제된 데이터베이스의 행이 마이그레이션 데이터베이스의 대응하는 행과 동일한 샤드 키를 갖는지 여부를 먼저 결정하는 시퀀스를 통해 프로세스(800)를 수행할 수 있다. 제1 복제된 데이터베이스의 하나 이상의 행이 마이그레이션 데이터베이스의 대응하는 행과 상이한 샤드 키를 갖는다는 결정에 응답하여, DM 시스템(320)은 마이그레이션 데이터베이스의 행이 더 늦은 수정 시간을 갖는지 여부를 결정할 수 있다. 이어서, DM 시스템(320)은 마이그레이션 데이터베이스의 대응하는 행과 다른 샤드 키를 갖는 제1 복제된 데이터베이스의 행을 무시할 수 있다. 그리고 DM 시스템(320)은 무시되지 않은 행의 샤드 키가 동일한 경우 데이터 일치를 결정할 수 있다. 이 시퀀스를 통해 DM 시스템(320)은 데이터 검증 프로세스를 수행할 수 있다.
도 9는 개시된 실시예에 따른, 온라인 데이터베이스 마이그레이션에 관한 예시적인 프로세스의 흐름도이다. 일부 실시예에서, 시스템(300)의 요소는 프로세스(900)를 수행할 수 있다. 예를 들어, 아래의 단계 설명에 개시된 바와 같이, DM 시스템(320)은 프로세스(900)를 수행할 수 있다. 이러한 실시예에서, 컨트롤러(323)는 프로세스(900)의 동작들을 수행하도록 구성될 수 있다. 대안적으로, 또는 추가적으로, 온라인 리소스(340) 및/또는 데이터베이스(380)는 프로세스(900), 또는 프로세스(900)의 일부를 수행할 수 있다. 또한, 다른 실시예에서 시스템(100), 또는 시스템(100)의 일부는, 프로세스(900)를 수행할 수 있다. 예를 들어, 내부 프론트 엔드 시스템(105), SCM 시스템(117), 및/또는 SAT(101)는 프로세스(900)를 수행할 수 있다. 또한, 다른 실시예에서 시스템(400)은 프로세스(900)를 구현할 수 있다. 예를 들어, 마이그레이션 도구(402), 컨트롤러(323), 및/또는 DB 클러스터링 시스템(420)은 프로세스(900)의 동작들을 수행할 수 있다.
아래의 프로세스(900)의 설명은 프로세스(900)의 단계들을 수행하는 DM 시스템(320)의 실시예를 설명한다. 그러나, 이전에 논의된 바와 같이, 시스템(300)의 다른 요소가 프로세스(900)의 하나 이상의 단계를 수행하기 위해 구성 가능할 수 있다. 예를 들어, 온라인 리소스(340)는 프로세스(900)의 하나 이상의 단계를 수행할 수 있다. 이러한 실시예에서, 온라인 리소스(340)는 컨트롤러(323)에 의해 지시된 대로 통신하고 동작을 실행할 수 있다.
단계 902에서, DM 시스템(320)은 라이브 데이터베이스를 복제할 수 있다. 예를 들어, 컨트롤러(323)를 통해, DM 시스템(320)은 클론 DB(406)를 생성하기 위해 온라인 DB(404)로부터 파일을 내보낼 수 있다. 일부 실시예에서, 온라인 DB(404)(복제된 것)는 온라인 트래픽을 처리할 수 있다. 특정 실시예에서, 단계 904의 복제는 다운타임이 적거나 거의 없는 데이터 마이그레이션을 용이하게 할 수 있다.
단계 904에서, DM 시스템(320)은 하나 이상의 클론 데이터베이스로부터 내보내기 파일을 생성할 수 있고 마이그레이션 데이터베이스로 가져올 수 있다. 예를 들어, 컨트롤러(323)를 통해 DM 시스템(320)은 클론 DB(406)로부터 내보내기 파일을 생성할 수 있고 이어서 DB 클러스터링 시스템(420)으로 로딩할 수 있다. 일부 실시예에서, DM 시스템(320)은 클론 DB(406)로부터 내보내기 파일을 생성하기 위해 데이터 내보내기 도구(412)를 사용할 수 있다. DM 시스템(320)은 DB 클러스터링 시스템(420)으로 내보내기 파일을 가져오거나 또는 로딩하기 위해 데이터 로더 도구(414)를 채용할 수 있다. 도 4 및 도 5와 관련하여 더 설명된 바와 같이, 내보내기 파일은 SQL 파일, CSV 파일, 및/또는 다른 유형의 내보내기 파일을 포함할 수 있다. 또한, 도 4와 관련하여 논의된 바와 같이, 데이터 로더 도구(414)는 다수의 클러스터를 생성하는 동안 병렬로 로딩 동작을 수행할 수 있다.
단계 906에서, DM 시스템(320)은 제1 클론 데이터베이스 및 마이그레이션 데이터베이스의 행 비교를 수행할 수 있다. 도 9에 도시된 바와 같이, 단계 906은 단계 904 후에 수행될 수 있다. 즉 단계 906은 타겟 데이터베이스로 내보내기 파일을 가져온 후 실행될 수 있다. 그러나 다른 실시예에서, 단계 906 및 단계 904는 동시에 실행될 수 있다. 예를 들어, 도 4와 관련하여 논의된 바와 같이, 데이터 검증 프로세스는 DB 클러스터링 시스템(420)에 데이터가 로딩되는 동안 발생할 수 있다.
단계 906에서, DM 시스템(320)은 클론 데이터베이스 및 마이그레이션 데이터베이스의 선택된 수의 행에 관한 샤드 키를 계산함으로써 데이터 검증을 수행할 수 있다. 예를 들어, 도 8과 관련하여 더 논의된 바와 같이, DM 시스템(320)은 클론 DB(406) 및 DB 클러스터링 시스템(420) 모두에서의 테이블을 읽고, 샤드 키, 해쉬 값을 계산하고, 및/또는 샤드를 결정함으로써 데이터 검증을 수행하고, 이어서 레코드를 비교하고 그것들이 동일한지 아닌지 여부를 결정할 수 있다.
단계 908에서, DM 시스템(320)은 증분 데이터를 캡처하기 위해 마이그레이션 데이터베이스 상에 온라인 데이터베이스의 쓰기를 복제하는 이중 쓰기 동작을 초기화할 수 있다. 도 5와 관련하여 논의된 바와 같이, 이중 쓰기 동작은 증분 데이터를 캡처하도록 할 수 있다. 일부 실시예에서, 단계 908의 이중 쓰기 동작은 초기화 도중의 전에 사용될 수 있다. 예를 들어, 프로세스(700)(도 7)에 관해 논의된 바와 같이, DM 시스템(320)은 프로세스의 시작에서 데이터베이스 스키마를 적용할 수 있고 이어서 그것을 턴 오프할 수 있다. 초기 이중 쓰기 동작은 테스팅 및 품질 제어를 위해 사용될 수 있다. 예를 들어, DM 시스템(320)은 이중 쓰기 동작을 수행할 수 있고 이어서 이중 동작이 작동하고 온라인 DB(404) 및 DB 클러스터링 시스템(420)의 증분 데이터를 복제하는 것을 확인하기 위해 데이터 검증을 수행할 수 있다. 도 5 및 도 11과 관련하여 논의된 바와 같이, 이중 쓰기 동작은 라이브 데이터베이스(온라인 DB(404)와 같은)의 데이터 수정을 타겟 또는 마이그레이션 데이터베이스(DB 클러스터링 시스템(420)과 같은)로 복제할 수 있다.
단계 910에서, DM 시스템(320)은 제2 클론 데이터베이스로 온라인 데이터베이스를 복제할 수 있다. 예를 들어, 도 5와 관련하여 논의된 바와 같이, DM 시스템(320)은 캐치-업 또는 델타 데이터의 식별을 가능하게 할 수 있는 리프레시된 데이터를 이용하여 새로운 클론을 생성할 수 있다. 일부 실시예에서, DM 시스템(320)은 단계 910에서 제2 클론을 생성하기 위해 단계 902에서 제1 클론을 생성하는 경우와 동일한 도구 및 절차를 사용할 수 있다.
단계 912에서, DM 시스템(320)은 단계 910의 클론 데이터베이스를 이중 쓰기 동작을 개시한 후에 기록된 증분 데이터와 비교하여 캐치-업 데이터를 식별할 수 있다. 도 5와 관련하여 논의된 바와 같이, DM 시스템(320)은 마이그레이션 또는 타겟 데이터베이스에 로딩되지 않은 델타 데이터 세트를 식별하기 위한 동작을 수행할 수 있다. 예를 들어, DM 시스템(320)은 캐치-업 데이터를 식별할 수 있다(일부 실시예는 이중 쓰기 시간 이후의 수정 시간에 기초하여 식별될 수 있다).
단계 914에서, DM 시스템(320)은 캐치-업 데이터를 포함하도록 마이그레이션 데이터베이스를 업데이트할 수 있다. 예를 들어, 컨트롤러(323)를 통해 DM 시스템은 단계 912에서 식별된 데이터를 DB 클러스터링 시스템(420)으로 로딩할 수 있다. 또한, 도 5와 관련하여 논의된 바와 같이, DM 시스템(320)은 클론 데이터베이스 및 타겟 또는 마이그레이션 데이터베이스 사이에서 불일치가 발견되지 않을 때까지 반복적인 데이터 검증을 수행할 수 있다. 일부 실시예에서, 단계 914에서 캐치-업 동작을 업데이트하는 것은 캐치-업 데이터의 적어도 일부를 포함하는 새로운 클론 데이터베이스의 행 그룹을 선택하고, 행 그룹을 포함하는 임시 파일을 생성하고, 그리고 제2 복제된 데이터베이스의 행 그룹과 일치하는 위치에 임시 파일을 삽입함으로써 마이그레이션 데이터베이스를 제2 복제된 데이터베이스와 동기화시킴으로써 수행될 수 있다. 이 방법으로, DM 시스템(320)은 온라인 데이터베이스(온라인 DB(404)와 같은)에서 식별된 캐치 업 데이터 또는 델타를 타겟 데이터베이스로 효율적으로 복제할 수 있다.
단계 916에서, DM 시스템(320)은 마이그레이션된 데이터가 데이터베이스에 걸쳐 일치하는지 여부를 결정할 수 있다. 예를 들어, DM 시스템(320)은 온라인 DB(404) 및 DB 클러스터링 시스템(420)의 데이터가 일치하는지 여부를 결정하기 위해 도 8과 관련하여 논의된 것과 동일한 검증 동작을 채용할 수 있다. DM 시스템(320)이 마이그레이션된 데이터가 일치하지 않다고 결정하는 경우(단계 916: 아니오), DM 시스템(320)은 단계 910로 돌아갈 수 있고 라이브 데이터베이스를 새로운 클론 데이터베이스로 복제할 수 있다. 예를 들어, 일부 실시예에서, 캐치-업 데이터를 포함하도록 마이그레이션 데이터베이스를 업데이트한 후, DM 시스템(320)은 데이터가 일치하는지 여부를 결정하기 위해 제2 클론 데이터베이스 및 마이그레이션 데이터베이스 사이의 제2 행 비교를 수행할 수 있다. 그리고 데이터가 일치하지 않는다는 결정에 응답하여, DM 시스템은 불일치 행을 식별하고, 불일치 행을 포함하는 임시파일을 생성하고, 그리고 불일치 행에 대응하는 위치에 임시 파일을 삽입함으로써 마이그레이션 데이터베이스를 업데이트할 수 있다. 그러나, DM 시스템(320)이 마이그레이션된 데이터가 일치한다고 결정한 경우(단계 916: 예), DM 시스템(320)은 단계 918로 계속될 수 있다.
단계 918에서, DM 시스템(320)은 이중 쓰기 동작을 중지 또는 중단할 수 있다. 그리고 단계 920에서, DM 시스템(320)은 온라인 트래픽을 스위칭할 수 있다. 예를 들어, DM 시스템(320)은 온라인 DB(404)로부터/로의 데이터 요청을 DB 클러스터링 시스템(420)으로 라우팅하기 위해 주소, 서버 테이블, 및/또는 API 프로세서를 조정할 수 있다. 따라서, 특정 실시예에서, 데이터가 일치한다는 결정에 응답하여 DM 시스템(320)은 이중 쓰기 동작을 중단할 수 있고 온라인 데이터베이스로부터 마이그레이션 데이터베이스로 온라인 트래픽을 스위칭할 수 있다. 또한, 특정 실시예에서 이중 쓰기 동작을 중단한 후에, DM 시스템(320)은 제2 복제된 데이터베이스 및 마이그레이션 데이터베이스 사이의 최종 동기화를 수행할 수 있다.
도 10은 개시된 실시예에 따른, 클론 데이터베이스를 사용하는 데이터베이스 마이그레이션 프로세스의 개략적인 대표도(1000)이다. 개략적인 대표도(1000)는 마이그레이션 프로세스의 몇몇 데이터베이스가 프로세스의 상이한 스테이지에서 특정 정보를 어떻게 반영하는지를 나타내는 데이터베이스 마이그레이션의 예시를 제공한다.
제1 시간(1010)에서, 온라인 DB(404)는 레코드(1012)를 가질 수 있다. 이러한 레코드는 DB 클러스터링 시스템(420)으로 복제되고, 레코드(1014)를 갖는다. 시간(1010)은 DM 시스템(320)이 온라인 DB(404)로부터 파일을 내보내고 파일을 DB 클러스터링 시스템(420)에 가져온 후의 상태일 수 있다.
제2 시간(1020)에서, 온라인 DB(404)의 레코드는 변경되었고, 더 많은 레코드가 있으며, 그리고 온라인 DB(404)는 레코드(1022)를 갖는다. DB 클러스터링 시스템의 레코드(1024)는 변경되지 않았다. 시간(1020)은 DM 시스템이 제1 클론을 생성한 때일 수 있다(예를 들어, 도 9, 단계 902). 따라서, 클론 DB(406)는 시간(1020)에서 온라인 DB(404)와 동일한 레코드를 갖는다.
제3 시간(1030)에서, 온라인 DB(404)의 레코드는 다시 변경되었고, 추가 레코드가 있으며 온라인 DB(404)는 레코드(1032)를 저장한다. 시간(1030)동안 이중-쓰기 동작이 시작되었을 수 있다. 예를 들어, 도 5, 7, 및 9와 관련하여 논의된 바와 같이 증분 데이터를 복제하기 위한 이중 쓰기 동작이 개시되었을 수 있다. 따라서, 새로운 레코드는 또한 DB 클러스터링 시스템의 레코드(1034)에 존재한다. 그러나, 새로운 레코드는 복제 후 및 이중-쓰기 동작 전에 수정되었기 때문에 클론 DB(406)의 레코드(1036)에는 없다.
제4 시간(1040)에서, 온라인 DB(404)의 레코드(1042)에서 변경이 없다. 그러나, DB 클러스터링 시스템(420)의 레코드(1044)는 복제 동작에서 캡처되었지만 초기에 캡처되지 않은 누락된 레코드를 포함하도록 업데이트되었다. 도 10에 도시된 바와 같이, 데이터의 몇몇은 초기로부터 누락되었으나 클론 DB(406)로부터 이용 가능하다. 시간(1040)에서, 도 5, 7, 및 9와 관련하여 더 논의된 바와 같이, 클론 DB(406)로부터의 데이터는 데이터 파일로 내보내져 DB 클러스터링 시스템으로 가져와진다. 따라서, 레코드(1044)는 레코드(1046)로부터 누락된 데이터를 캡처한다.
제5 시간(1050)에서, DB 클러스터링 시스템(420)의 레코드에서 변경이 없고 클론 DB(406)의 레코드(1056) 상에 변경이 없다. 그러나, 온라인 DB(404)의 레코드(1052)의 변경이 있다. 이러한 변경은 DB 클러스터링 시스템(420)으로 복제되지 않았다. 이는 이중 쓰기 동작이 턴 오프되어 있지만(예를 들어, 성공적인 검증을 실행한 후) 온라인 DB(404)에 새로운 데이터 수정이 적용된 경우에 발생할 수 있다. 도 6 내지 7과 관련하여 논의된 바와 같이, DM 시스템(320)은 데이터 전송을 가져오고 그리고 검증하는 것을 완료한 후 이중-쓰기 동작을 중지할 수 있다. 그러나, 온라인 DB(404)는 다수의 레코드 변경이 있을 수 있는 라이브 데이터베이스이기 때문에, 짧은 시간-프레임 내에서도 레코드가 변경될 수 있다(짧은 기간 동안에도).
제6 시간(1060)에서, 온라인 DB(404)의 레코드(1062) 및 DB 클러스터링 시스템(420)의 레코드(1064)는 동일하게 유지된다. 그러나, 클론 DB(406)의 레코드(1066)는 업데이트되었고 레코드(1062)를 복제한다. 도 6과 관련하여 논의된 바와 같이, DM 시스템(320)은 미리 결정된 시간 윈도우에 관한 캐치 업의 재실행을 수행할 수 있다. 따라서, 시간(1060)에서 클론 DB(406)는 온라인 DB(404)로부터 리프레시된 데이터를 포함할 수 있다. 비록 도 10은 클론 DB(406)의 동일한 메모리 공간의 업데이트된 레코드를 나타내나, 일부 실시예에서 공간은 상이할 수 있다. 예를 들어, 클론 DB(406)는 로컬 데이터베이스(325) 또는 데이터베이스(380)와 같은 다수의 데이터베이스를 지칭할 수 있으며 각각의 클론은 상이한 공간에서 쓰여질 수 있다.
제7 시간(1080)에서, 온라인 DB(404)의 레코드(1072) 및 클론 DB(406)의 레코드(1076)는 동일하게 유지된다. 그러나, DB 클러스터링 시스템(420)의 레코드(1074)는 이중-쓰기를 턴 오프한 후 누락된 레코드를 포함하도록 업데이트되었다. 시간(1050)에서 사용된 프로세스와 유사하게, 클론 DB(406)의 데이터는 DB 클러스터링 시스템(420)으로 복제될 수 있다.
도 11은 개시된 실시예에 따른, 데이터베이스 마이그레이션에 관한 예시적인 시퀀스(1100)의 타이밍도이다. 도 11에 도시된 바와 같이, 시퀀스(1100)는 온라인 DB(404), DB 클러스터링 시스템(420), 및 클론 DB(406)를 포함하는, 시스템(400)의 다수의 요소를 수반할 수 있다. 그러나, 시스템(400)의 다른 요소가 시퀀스(1100)에 수반될 수 있다. 예를 들어, 도시되지는 않았으나, 컨트롤러(323)는 시퀀스(1100)의 하나 이상의 동작을 수행할 수 있다. 또한, 개시된 시스템 및 요소의 다른 것도 시퀀스(1100)를 수행할 수 있다. 예를 들어, 일부 실시예에서 시스템(300)은 시퀀스(1100)를 수행할 수 있다. 이러한 실시예에서, DM 시스템(320), 데이터베이스(380), 및/또는 온라인 리소스(340)는 시퀀스(1100)의 하나 이상의 동작을 수행할 수 있다.
단계 1102에서, 온라인 DB(404)는 스키마를 적용하고 및/또는 이중 쓰기 동작을 테스트하기 위해 DB 클러스터링 시스템과 통신할 수 있다. 일부 실시예에서, 온라인 DB(404) 및 DB 클러스터링 시스템(420) 사이의 통신은 DM 시스템(320)의 컨트롤러(323)를 통해 발생할 수 있다. 예를 들어, 도 7과 관련하여 논의된 바와 같이, DM 시스템(320)은 온라인 DB(404)로부터 데이터베이스 스키마를 획득하고, 스키마를 적용하고, 그리고 DB 클러스터링 시스템(420)에 대한 이중 쓰기를 턴 온하기 위한 동작을 수행할 수 있다.
단계 1104에서, 온라인 DB(404)는 클론을 생성하기 위해 클론 DB(406)와 통신할 수 있다. 일부 실시예에서, 단계 1104는 단계 1102의 이중-쓰기 동작 테스트가 성공적인 경우에만 실행될 수 있다. 또한, 일부 실시예에서, 도 5 및 7과 관련하여 개시된 것과 같이, DM 시스템(320)은 클론 데이터베이스의 생성을 조정할 수 있다.
단계 1106에서, 클론 DB(406)의 파일은 내보내질 수 있다. 예를 들어, 도 4 내지 5와 관련하여 설명된 바와 같이, 컨트롤러(323)의 내보내기 도구(412)는 내보내기 파일을 생성할 수 있고, 내보내기 파일은 SQL, CSV, 또는 다른 유형의 파일을 포함할 수 있다. 단계 1108에서, 클론 DB(406)는 내보내진 데이터 파일을 로딩하기 위해 DB 클러스터링 시스템(420)과 통신할 수 있다. 예를 들어, 도 4 내지 5와 관련하여 논의된 바와 같이, 데이터 로더 도구(414)는 단계 1106에서 내보내진 데이터를 DB 클러스터링 시스템(420)으로 로딩할 수 있다.
단계 1110에서, 클론 DB(406) 및 DB 클러스터링 시스템(420)은, 단계 1110 및 1118과 유사하게 새로운 일관성 검증을 수행하기 위해 통신할 수 있다.
단계 1112에서, 온라인 DB(404) 및 DB 클러스터링 시스템(420)은 이중 쓰기 동작을 갖기 위해 통신할 수 있다. 도 5 및 7과 관련하여 논의된 바와 같이, DM 시스템(320)은 온라인 DB(404)로부터 DB 클러스터링 시스템(420)로의 이중 쓰기 동작을 개시할 수 있고 증분 데이터를 캡처할 수 있다.
단계 1114에서, 온라인 DB(404) 및 클론 DB(406)는 새로운 클론을 생성하기 위해 통신할 수 있다. 일부 실시예에서, 제2 클론 DB는 단계 1104로부터의 제1 클론 데이터베이스와 동일한 것일 수 있다. 그러나 다른 실시예에서, 제2 클론 DB는 단순히 클론 DB(406) 아키텍처의 일부일 수 있다. 예를 들어, 클론 DB(406)는 로컬 데이터베이스(325)로 구현될 수 있다. 이러한 실시예에서, 제2 클론 데이터베이스는 로컬 데이터베이스(325)의 인스턴스와 상이할 수 있다.
단계 1116에서, 클론 DB(406) 및 DB 클러스터링 시스템(420)은 캐치-업 데이터를 식별하고 로딩하기 위해 통신할 수 있다. 예를 들어, 도 5 및 9와 관련하여 논의된 바와 같이, 클론 DB(406) 및 DB 클러스터링 시스템(420)은 마지막 이중 쓰기 시간 이후의 DB 클러스터링 시스템(420)에 대한 델타 데이터를 식별할 수 있다. 이 데이터 델타 또는 캐치-업 데이터는 DB 클러스터링 시스템(420)으로 로딩될 수 있다.
단계 1118에서, 클론 DB(406) 및 DB 클러스터링 시스템(420)은 데이터 일관성을 검증하기 위해 통신할 수 있다. 예를 들어, 단계 1110과 같이, 그리고 도 8과 관련하여 더 논의된 바와 같이, 클론 DB(406) 및 DB 클러스터링 시스템(420)은 상이한 데이터베이스 사이의 데이터가 일치하는지 여부를 결정하기 위해 통신할 수 있다.
단계 1120에서, 클론 DB(406) 및 DB 클러스터링 시스템(420)은 캐치 업을 완료하기 위해 DB 클러스터링 시스템(420)에 특정 레코드를 삽입하기 위해 통신할 수 있다. 예를 들어, 도 5 및 7과 관련하여 더 논의되는 바와 같이, DB 클러스터링 시스템(420)은 DB 클러스터링 시스템(420)으로 포팅되지 않은 선택된 레코드를 테이블에 삽입하는 것을 사용하여 제2 클론 DB(406)의 최신 레코드와 동기화될 수 있다(예를 들어, 여기서 테이블은 널 값을 나타냄).
단계 1122에서, 온라인 DB(404)는 제한된 윈도우 복제를 제공하기 위해 클론 DB(406)와 다시 통신할 수 있다. 예를 들어, 도 6과 관련하여 더 논의된 바와 같이, 일부 실시예에서 검증 프로세스 및 이중 쓰기 동작의 중단 후, 새로운 시간의 검증이 미리 결정된 시간 윈도우를 이용하여 실행될 수 있다. 시간 윈도우는, 예를 들어 특정 분(minute)의 시간에 기초할 수 있다. 단계 1124에서, 클론 DB(406) 및 DB 클러스터링 시스템(420)은 단계 1110 및 1118의 것과 유사하게, 새로운 일관성 검증을 수행하기 위해 통신할 수 있다.
단계 1126에서, 온라인 DB(404) 및 DB 클러스터링 시스템(420)은 트래픽을 스위칭하기 위해 통신할 수 있다. 도 6 및 7과 관련하여 논의된 바와 같이, 시스템(320)은 온라인 DB(404)로부터/로의 데이터 요청을 DB 클러스터링 시스템(420)으로 라우팅하기 위해 주소, 서버 테이블, 및/또는 API 프로세서를 조정할 수 있다. 이러한 실시예에서, 온라인 DB(404) 및 DB 클러스터링 시스템(420)은 트래픽 핸드오프를 위해 주소 및/또는 기타 정보를 교환할 수 있다.
본 개시의 또 다른 양태는 실행될 때, 하나 이상의 프로세서가 상기 논의된 방법을 수행하도록 하는 명령을 저장하는 비일시적 컴퓨터 판독가능 매체에 관한 것이다. 컴퓨터 판독가능 매체는 휘발성 또는 비휘발성, 자기, 반도체, 테이프, 광학, 착탈식, 비착탈식, 또는 기타 유형의 컴퓨터 판독가능 매체 또는 컴퓨터 판독가능 저장 디바이스를 포함할 수 있다. 예를 들어, 컴퓨터 판독가능 매체는 개시된 바와 같이, 컴퓨터 명령이 저장된 저장 유닛 또는 메모리 모듈일 수 있다. 일부 실시예에서, 컴퓨터 판독가능 매체는 컴퓨터 명령이 저장된 디스크 또는 플래시 드라이브일 수 있다.
개시된 시스템 및 관련 방법에 대해 다양한 수정 및 변경이 이루어질 수 있음이 통상의 기술자에게 명백할 것이다. 다른 실시예는 개시된 시스템 및 관련 방법의 명세서 및 관행을 고려하여 통상의 기술자에게 명백할 것이다. 명세서 및 예시는 단지 예시적인 것으로 간주되며, 진정한 범위는 아래의 청구범위 및 그 등가물에 의해 나타내어지는 것으로 의도된다.
본 개시는 그 특정 실시예를 참조하여 도시되고 설명되었지만, 본 개시는 다른 환경에서, 변경없이, 실시될 수 있음을 이해할 것이다. 전술한 설명은 예시의 목적으로 제시되었다. 그것은 개시된 정확한 형태나 실시예에 대해 총망라된 것이 아니며 이것으로 한정되는 것은 아니다. 개시된 실시예의 설명 및 실시를 고려하는 것으로부터 변경 및 조정이 통상의 기술자에게 명백할 것이다. 추가적으로, 비록 개시된 실시예의 형태가 메모리에 저장되는 것으로서 설명되었지만, 통상의 기술자는 이들 형태가 2차 저장 디바이스, 예를 들면, 하드디스크나 CD ROM, 또는 다른 형태의 RAM이나 ROM, USB 매체, DVD, 블루레이, 또는 다른 광 드라이브 매체와 같이, 다른 형태의 컴퓨터 판독 가능한 매체에 저장될 수도 있는 것을 이해할 것이다.
상술한 설명 및 개시된 방법에 기초한 컴퓨터 프로그램은 숙련된 개발자의 기술 내에 있다. 여러 프로그램 혹은 프로그램 모듈은 통상의 기술자에게 알려진 어느 기술을 이용하여 생성되거나, 또는 기존의 소프트웨어와 연결하여 설계될 수 있다. 예를 들어, 프로그램 섹션 또는 프로그램 모듈은 닷넷 프레임워크, 닷넷 컴팩트 프레임워크(및 비주얼 베이식, C 등과 같은, 관련 언어), 자바, C++, 오브젝티브 C, HTML, HTML/AJAX 조합, XML, 또는 자바 애플릿이 포함된 HTML 내에서 혹은 그것들에 의해서 설계될 수 있다.
게다가, 여기에서는 예시적인 실시예가 설명되었지만, 본 개시에 기초하여 통상의 기술자가 이해할 수 있는 바와 같이, 일부 또는 모든 실시예의 범위는 동등한 요소, 변경, 생략, 조합 (예로써, 여러 실시예들에 걸치는 형태의 조합), 조정, 및/또는 수정을 가질 수 있다. 청구범위 내의 제한 사항은 그 청구범위 내에 적용된 언어에 기초하여 폭넓게 이해되도록 하는 것이며, 응용의 수행 동안 혹은 본 명세서 내에 설명된 예시로 한정되는 것은 아니다. 그 예시는 비배타적으로 해석되도록 하기 위한 것이다. 추가로, 개시된 방법의 스텝은 어떤 다른 방법으로 변경되거나, 스텝을 재배열 및/또는 스텝을 삽입하거나 삭제하는 것을 포함할 수 있다. 그러므로, 설명 및 예시는 오직 예시적으로 고려되는 것이며, 진정한 범위 및 기술 사상은 다음 청구범위 및 그 동등한 전체 범위에 의해 나타내지는 것으로 의도된다.
따라서, 전술한 설명은 단지 예시의 목적으로 제시되었다. 이는 다 망라하는 것은 아니며 개시된 정확한 형태 또는 실시예로 제한되지 않는다. 개시된 실시예의 명세서 및 관행을 고려하여 수정 및 개조가 당업자에게 명백할 것이다.
청구범위는 청구범위에 사용된 언어에 기초하여 광범위하게 해석되어야 하며, 본 명세서에 기술된 예에 제한되지 않으며, 이러한 예는 비 배타적인 것으로 해석되어야 한다. 또한, 개시된 방법의 단계는 단계 재정렬 및/또는 단계 삽입 또는 삭제를 포함하여 임의의 방식으로 수정될 수 있다.

Claims (20)

  1. 데이터베이스 마이그레이션을 위한 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행되는 경우 상기 하나 이상의 프로세서가 동작들을 수행하도록 구성되는 명령을 저장하는 하나 이상의 메모리 디바이스를 포함하고;
    상기 동작들은,
    온라인 트래픽을 갖는 온라인 데이터베이스를 제1 클론 데이터베이스로 복제하고;
    상기 제1 클론 데이터베이스로부터 내보내기 파일을 생성하고 상기 내보내기 파일을 마이그레이션 데이터베이스로 가져오고;
    상기 내보내기 파일을 가져온 후 상기 제1 클론 데이터베이스와 상기 마이그레이션 데이터베이스의 행 비교를 수행하고 ― 상기 행 비교는 상기 온라인 데이터베이스와 상기 마이그레이션 데이터베이스의 선택된 수의 행에 관한 샤드 키를 계산함으로써 수행됨 ―;
    증분 데이터를 캡처하도록 상기 마이그레이션 데이터베이스 상에 상기 온라인 데이터베이스의 쓰기를 복제하는 이중 쓰기 동작을 초기화하고;
    상기 행 비교를 수행한 후 상기 온라인 데이터베이스를 제2 클론 데이터베이스로 복제하고;
    상기 제2 클론 데이터베이스를 상기 증분 데이터와 비교하여 캐치-업 데이터를 식별하고; 그리고
    상기 캐치-업 데이터를 포함하도록 상기 마이그레이션 데이터베이스를 업데이트하는 것을 포함하는, 시스템.
  2. 청구항 1에 있어서,
    상기 마이그레이션 데이터베이스를 업데이트하는 것은,
    상기 캐치-업 데이터의 적어도 일부를 포함하는 상기 제2 클론 데이터베이스의 행 그룹을 선택하고;
    상기 행 그룹을 포함하는 임시 파일을 생성하고; 그리고
    상기 제2 클론 데이터베이스의 상기 행 그룹과 일치하는 위치에 상기 임시 파일을 삽입하여 상기 마이그레이션 데이터베이스를 상기 제2 클론 데이터베이스와 동기화하는 것을 포함하는, 시스템.
  3. 청구항 1에 있어서,
    상기 행 비교는 제1 행 비교이고; 그리고
    상기 동작들은,
    상기 캐치-업 데이터를 포함하도록 상기 마이그레이션 데이터베이스를 업데이트한 후, 데이터가 일치하는지 여부를 결정하도록 상기 제2 클론 데이터베이스와 상기 마이그레이션 데이터베이스 사이의 제2 행 비교를 수행하고;
    상기 데이터가 일치하지 않는다는 결정에 응답하여:
    불일치 행을 식별하고;
    상기 불일치 행을 포함하는 임시 파일을 생성하고; 그리고
    상기 불일치 행에 대응하는 위치에 상기 임시 파일을 삽입하여 상기 마이그레이션 데이터베이스를 업데이트하는 것을 더 포함하는, 시스템.
  4. 청구항 3에 있어서,
    상기 동작들은,
    상기 데이터가 일치한다는 결정에 응답하여:
    상기 이중 쓰기 동작을 중단하고; 그리고
    상기 온라인 데이터베이스로부터 상기 마이그레이션 데이터베이스로 온라인 트래픽을 스위칭하는 것을 더 포함하는, 시스템.
  5. 청구항 4에 있어서,
    상기 동작들은,
    상기 이중 쓰기 동작을 중단한 후, 상기 제2 클론 데이터베이스와 상기 마이그레이션 데이터베이스 사이의 최종 동기화를 수행하는 것을 더 포함하는, 시스템.
  6. 청구항 1에 있어서,
    상기 행 비교를 수행하는 것은,
    상기 제1 클론 데이터베이스의 행이 상기 마이그레이션 데이터베이스의 대응하는 행과 동일한 샤드 키를 가지고 있는지 여부를 결정하고;
    상기 제1 클론 데이터베이스의 하나 이상의 행이 상기 마이그레이션 데이터베이스의 대응하는 행과 다른 샤드 키를 가지고 있다는 결정에 응답하여, 상기 마이그레이션 데이터베이스의 대응하는 행에 추후 수정 시간이 있는지 여부를 결정하고;
    상기 마이그레이션 데이터베이스의 대응하는 행과 다른 샤드 키가 있는 상기 제1 클론 데이터베이스의 행을 무시하고; 그리고
    무시된 행의 샤드 키가 동일한 경우 데이터 일치를 결정하는 것을 포함하는, 시스템.
  7. 청구항 1에 있어서,
    상기 마이그레이션 데이터베이스는 API 호출을 통해 라우팅된 쿼리에 노출된 데이터베이스 클러스터링 시스템을 포함하는, 시스템.
  8. 청구항 1에 있어서,
    상기 동작들은,
    상기 내보내기 파일을 생성하기 전에:
    상기 마이그레이션 데이터베이스에 데이터베이스 스키마를 적용하고;
    상기 이중 쓰기 동작의 테스트를 수행하고; 그리고
    상기 이중 쓰기 동작을 중단하는 것을 더 포함하는, 시스템.
  9. 청구항 1에 있어서,
    상기 내보내기 파일은 SQL 파일을 포함하고; 그리고
    상기 온라인 데이터베이스를 상기 제2 클론 데이터베이스에 복제하는 것은 상기 제1 클론 데이터베이스 상에 재쓰기를 하는 것을 포함하는, 시스템.
  10. 청구항 1에 있어서,
    상기 온라인 데이터베이스의 상기 선택된 행의 수는 사용자에 의해 식별된 데이터 범위에 기초하여 선택되고; 그리고
    상기 제1 클론 데이터베이스와 상기 마이그레이션 데이터베이스의 상기 행 비교를 수행하는 것은 상기 제1 클론 데이터베이스와 상기 마이그레이션 데이터베이스의 각 행에서 열 값의 해시를 비교하는 것을 포함하는, 시스템.
  11. 데이터베이스 마이그레이션을 위한 방법으로서,
    온라인 트래픽을 갖는 온라인 데이터베이스를 제1 클론 데이터베이스에 복제하고;
    상기 제1 클론 데이터베이스로부터 내보내기 파일을 생성하고 상기 내보내기 파일을 마이그레이션 데이터베이스로 가져오고;
    상기 내보내기 파일을 가져온 후 상기 제1 클론 데이터베이스와 상기 마이그레이션 데이터베이스의 행 비교를 수행하고 ― 상기 행 비교는 상기 온라인 데이터베이스와 상기 마이그레이션 데이터베이스의 선택된 수의 행에 관한 샤드 키를 계산함으로써 수행됨 ―;
    증분 데이터를 캡처하도록 상기 마이그레이션 데이터베이스 상에 상기 온라인 데이터베이스의 쓰기를 복제하는 이중 쓰기 동작을 초기화하고;
    상기 행 비교를 수행한 후 상기 온라인 데이터베이스를 제2 클론 데이터베이스로 복제하고;
    상기 제2 클론 데이터베이스를 상기 증분 데이터와 비교하여 캐치-업 데이터를 식별하고; 그리고
    상기 캐치-업 데이터를 포함하도록 상기 마이그레이션 데이터베이스를 업데이트하는 것을 포함하는, 방법.
  12. 청구항 11에 있어서,
    상기 마이그레이션 데이터베이스를 업데이트하는 것은,
    상기 캐치-업 데이터의 적어도 일부를 포함하는 상기 제2 클론 데이터베이스의 행 그룹을 선택하고;
    상기 행 그룹을 포함하는 임시 파일을 생성하고; 그리고
    상기 제2 클론 데이터베이스의 상기 행 그룹과 일치하는 위치에 상기 임시 파일을 삽입하여 상기 마이그레이션 데이터베이스를 상기 제2 클론 데이터베이스와 동기화하는 것을 포함하는, 방법.
  13. 청구항 11에 있어서,
    상기 행 비교는 제1 행 비교이고; 그리고
    상기 캐치-업 데이터를 포함하도록 상기 마이그레이션 데이터베이스를 업데이트한 후, 데이터가 일치하는지 여부를 결정하도록 상기 제2 클론 데이터베이스와 상기 마이그레이션 데이터베이스 사이의 제2 행 비교를 수행하고;
    상기 데이터가 일치하지 않는다는 결정에 응답하여:
    불일치 행을 식별하고;
    상기 불일치 행을 포함하는 임시 파일을 생성하고; 그리고
    상기 불일치 행에 대응하는 위치에 상기 임시 파일을 삽입하여 상기 마이그레이션 데이터베이스를 업데이트하는 것을 더 포함하는, 방법.
  14. 청구항 13에 있어서,
    상기 데이터가 일치한다는 결정에 응답하여:
    상기 이중 쓰기 동작을 중단하고; 그리고
    상기 온라인 데이터베이스로부터 상기 마이그레이션 데이터베이스로 온라인 트래픽을 스위칭하는 것을 더 포함하는, 방법.
  15. 청구항 14에 있어서,
    상기 이중 쓰기 동작을 중단한 후, 상기 제2 클론 데이터베이스와 상기 마이그레이션 데이터베이스 사이의 최종 동기화를 수행하는 것을 더 포함하는, 방법.
  16. 청구항 11에 있어서,
    상기 행 비교를 수행하는 것은,
    상기 제1 클론 데이터베이스의 행이 상기 마이그레이션 데이터베이스의 대응하는 행과 동일한 샤드 키를 가지고 있는지 여부를 결정하고;
    상기 제1 클론 데이터베이스의 하나 이상의 행이 상기 마이그레이션 데이터베이스의 대응하는 행과 다른 샤드 키를 가지고 있다는 결정에 응답하여, 상기 마이그레이션 데이터베이스의 대응하는 행에 추후 수정 시간이 있는지 여부를 결정하고;
    상기 마이그레이션 데이터베이스의 대응하는 행과 다른 샤드 키가 있는 상기 제1 클론 데이터베이스의 행을 무시하고; 그리고
    무시된 행의 샤드 키가 동일한 경우 데이터 일치를 결정하는 것을 포함하는, 방법.
  17. 청구항 11에 있어서,
    상기 마이그레이션 데이터베이스는 API 호출을 통해 라우팅된 쿼리에 노출된 데이터베이스 클러스터링 시스템을 포함하는, 방법.
  18. 청구항 11에 있어서,
    상기 내보내기 파일을 생성하기 전에:
    상기 마이그레이션 데이터베이스에 데이터베이스 스키마를 적용하고;
    상기 이중 쓰기 동작의 테스트를 수행하고; 그리고
    상기 이중 쓰기 동작을 중단하는 것을 더 포함하는, 방법.
  19. 청구항 11에 있어서,
    상기 내보내기 파일은 SQL 파일을 포함하고;
    상기 온라인 데이터베이스를 상기 제2 클론 데이터베이스에 복제하는 것은 상기 제1 클론 데이터베이스 상에 재쓰기를 하는 것을 포함하고,
    상기 온라인 데이터베이스의 상기 선택된 행의 수는 사용자에 의해 식별된 데이터 범위에 기초하여 선택되고; 그리고
    상기 제1 클론 데이터베이스와 상기 마이그레이션 데이터베이스의 상기 행 비교를 수행하는 것은 상기 제1 클론 데이터베이스와 상기 마이그레이션 데이터베이스의 각 행에서 열 값의 해시를 비교하는 것을 포함하는, 방법.
  20. 온라인 데이터베이스의 마이그레이션을 위한 시스템으로서,
    네트워크에 커플링된 제1 데이터베이스;
    제2 데이터베이스;
    상기 제1 데이터베이스와 상기 제2 데이터베이스에 커플링된 적어도 하나의 프로세서; 및
    명령을 저장하는 적어도 하나의 메모리 디바이스를 포함하고,
    상기 명령이 상기 적어도 하나의 프로세서에 의해 실행되는 경우, 상기 명령은 상기 적어도 하나의 프로세서가:
    상기 제1 데이터베이스를 제1 클론 데이터베이스로 복제하고;
    상기 제1 클론 데이터베이스로부터 내보내기 파일을 생성하고 상기 내보내기 파일을 상기 제2 데이터베이스로 가져오고;
    상기 내보내기 파일을 가져온 후 상기 제1 클론 데이터베이스와 상기 제2 데이터베이스의 행 비교를 수행하고 ― 상기 행 비교는 상기 제1 데이터베이스와 상기 제2 데이터베이스의 선택된 수의 행에 관한 샤드 키를 계산함으로써 수행됨 ―;
    증분 데이터를 캡처하도록 상기 제2 데이터베이스 상에 상기 제1 데이터베이스의 쓰기를 복제하는 이중 쓰기 동작을 초기화하고;
    상기 행 비교를 수행한 후 상기 제1 데이터베이스를 제2 클론 데이터베이스로 복제하고;
    상기 제2 클론 데이터베이스를 상기 증분 데이터와 비교하여 캐치-업 데이터를 식별하고;
    상기 캐치-업 데이터를 포함하도록 상기 제2 데이터베이스를 업데이트하고;
    상기 캐치-업 데이터를 포함하도록 상기 제2 데이터베이스를 업데이트한 후, 데이터가 일치하는지 여부를 결정하도록 상기 제2 클론 데이터베이스와 상기 제2 데이터베이스 사이의 제2 행 비교를 수행하고; 그리고
    상기 데이터가 일치한다고 결정하면:
    상기 이중 쓰기 동작을 중단하고; 그리고
    상기 제1 데이터베이스로부터 상기 제2 데이터베이스로 온라인 트래픽을 스위칭하도록 구성하는, 시스템.
KR1020220126613A 2022-05-23 2022-10-04 데이터베이스 마이그레이션을 위한 시스템 및 방법 KR20230163272A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/IB2022/054819 WO2023227921A1 (en) 2022-05-23 2022-05-23 Systems and methods for database migration
IBPCT/IB2022/054819 2022-05-23

Publications (1)

Publication Number Publication Date
KR20230163272A true KR20230163272A (ko) 2023-11-30

Family

ID=88918585

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220126613A KR20230163272A (ko) 2022-05-23 2022-10-04 데이터베이스 마이그레이션을 위한 시스템 및 방법

Country Status (2)

Country Link
KR (1) KR20230163272A (ko)
WO (1) WO2023227921A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100891036B1 (ko) * 2008-09-08 2009-03-31 (주)데이타뱅크시스템즈 데이터베이스의 실시간 복제를 통한 자동 복구 시스템 및 그 방법
KR101674924B1 (ko) * 2014-09-26 2016-11-22 삼성에스디에스 주식회사 데이터베이스 마이그레이션 방법 및 그 장치
KR101989074B1 (ko) * 2017-08-10 2019-06-14 네이버 주식회사 데이터베이스 샤딩 환경에서의 복제 로그 기반의 마이그레이션
US10747814B2 (en) * 2017-09-29 2020-08-18 Oracle International Corporation Handling semi-structured and unstructured data in a sharded database environment
CN112579603B (zh) * 2020-12-24 2023-11-17 北京志翔信息技术有限公司 基于cdc的数据模型动态信息感知监测方法及装置

Also Published As

Publication number Publication date
WO2023227921A1 (en) 2023-11-30

Similar Documents

Publication Publication Date Title
US10956244B1 (en) Systems and methods for automated application programming interface evaluation and migration
US10275281B2 (en) Scheduling jobs for processing log files using a database system
CN110222036B (zh) 用于自动数据库迁移的方法和系统
US9886441B2 (en) Shard aware near real time indexing
US11030171B2 (en) Elastic sharding of data in a multi-tenant cloud
US11232083B2 (en) Facilitating dynamically unified system of record in an on-demand services environment
EP3428811A1 (en) Database interface agent for a tenant-based upgrade system
US20220188194A1 (en) Cloud-based database backup and recovery
US20140317093A1 (en) Facilitating dynamic creation of multi-column index tables and management of customer queries in an on-demand services environment
TWI794709B (zh) 用於低延遲聚集資料準備的電腦實行系統以及方法
US10331696B2 (en) Indexing heterogeneous searchable data in a multi-tenant cloud
US11132141B2 (en) System and method for synchronization of data containers
US11568017B2 (en) Systems and methods for loading websites with multiple items
KR20230163272A (ko) 데이터베이스 마이그레이션을 위한 시스템 및 방법
TWI760216B (zh) 用於管理高度可獲取分佈混合資料庫的電腦實行系統以及方法
TW202411858A (zh) 用於資料庫轉移的系統及方法、以及用於線上資料庫的轉移的系統
Vergadia Visualizing Google Cloud: 101 Illustrated References for Cloud Engineers and Architects
US11086764B2 (en) Identification of code ownership through test coverage in database systems
Ramuka Data analytics with Google Cloud platform
TWI843063B (zh) 電腦實行方法及電腦實行系統
CN105493081B (zh) 企业中的分布式索引