KR20220038827A - 데이터 저장소를 파티셔닝하고 리밸런싱하는 기법 - Google Patents

데이터 저장소를 파티셔닝하고 리밸런싱하는 기법 Download PDF

Info

Publication number
KR20220038827A
KR20220038827A KR1020227008636A KR20227008636A KR20220038827A KR 20220038827 A KR20220038827 A KR 20220038827A KR 1020227008636 A KR1020227008636 A KR 1020227008636A KR 20227008636 A KR20227008636 A KR 20227008636A KR 20220038827 A KR20220038827 A KR 20220038827A
Authority
KR
South Korea
Prior art keywords
partition
function
data entry
database
processor
Prior art date
Application number
KR1020227008636A
Other languages
English (en)
Other versions
KR102486243B1 (ko
Inventor
자섹 에이 코리키
브링크 데이비드 에이 반
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20220038827A publication Critical patent/KR20220038827A/ko
Application granted granted Critical
Publication of KR102486243B1 publication Critical patent/KR102486243B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Document Processing Apparatus (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)

Abstract

본원에서는 기존 데이터를 이동시키지 않고 데이터베이스를 리파티셔닝하기 위해 사용될 수 있는 복합 파티션 함수 기법이 설명된다. 하나 이상의 구현예에서, 데이터베이스는 제 1 파티션 함수와 연관된 제 1 배열로 파티셔닝된다. 데이터베이스는 리파티셔닝되어 제 2 파티션 함수와 연관된 제 2 배열을 형성한다. 제 1 배열에 대응하는 데이터를 인식하는데 사용될 수 있는, 리파티셔닝 시에 존재하는 파티션 내 데이터 엔트리에 대한 키 멤버십의 레코드가 생성된다. 키 멤버십의 레코드에서 발견된 키를 갖는 데이터에 대해서는 제 1 파티션 함수를 적용하고 키 멤버십의 레코드에서 발견되지 않은 키를 갖는 다른 데이터에 대해서는 제 2 파티션 함수를 적용하도록 구성되는 복합 파티션 함수가 후속 데이터베이스 동작을 위해 정의된다.

Description

데이터 저장소를 파티셔닝하고 리밸런싱하는 기법{PARTITIONING AND REBALANCING DATA STORAGE}
사용자는 사업 및 개인 통신, 온라인 회의, 스크린 공유, 화상 채팅, 메시징을 수행하는 것 및 그 외에 서비스 제공자로부터 이용가능한 다양한 리소소를 사용하는 것과 같은 온라인 활동을 위한 클라우드 기반 리소스에 점차 의존하고 있다. 사용자 상호작용과 연관된 다양한 애플리케이션 및 사용자 데이터는 리소스와 연관된 데이터베이스 내에 유지될 수 있다. 일반적으로, 데이터베이스는 데이터가 할당되는 많은 상이한 개별 파티션 또는 데이터베이스 노드를 포함할 수 있다. 파티션은 복수의 상이한 물리적 장치 및 서버에 걸쳐 분산될 수 있다. 데이터 엔트리는 파티션 중 어느 것이 데이터에 대응하는지 나타내는 키 값과 같은 식별자와 연관될 수 있다. 식별자는 데이터를 할당하고 참조하는데 사용되어 대응 데이터 엔트리를 추가, 액세스, 및 수정하는 것과 같은 동작을 수행할 수 있다.
시간이 지남에 따라, 데이터베이스 내에 저장된 데이터의 양이 많아지고 언젠가는 데이터 및 요청의 볼륨을 수용하기 위해 저장 용량이 확장될 수 있다. 하나의 기존 데이터베이스 확장 기법은 데이터베이스에 대한 서비스 및/또는 액세스를 중단하는 것, 새로운 저장소/파티션을 데이터베이스에 추가하는 것, 및 그 이후 기존 데이터 모두를 새로운 구성의 파티션들에 재할당하는 것을 포함한다. 이러한 접근법에서, 기존 데이터는 새로운 위치로 이동되고 이러한 이동 프로세스는 큰 규모의 데이터베이스에 대해 상당한 시간이 소비될 수 있다. 이와 같이, 기존 데이터 확장 기법은 사용자에게 제공된 서비스에 상당한 지장을 줄 수도 있고 업데이트된 구성의 파티션 내 새로운 위치에서 데이터를 프로세싱하고 재삽입하는데 상당한 시간이 걸릴 수도 있다.
본원에서는 기존 데이터의 이동 없이 데이터베이스를 리파티셔닝하기 위해 사용될 수 있는 복합 파티션 함수 기법이 설명된다. 하나 이상의 구현예들에서, 데이터베이스는 제 1 파티션 함수와 연관된 제 1 배열로 파티셔닝된다. 데이터베이스는 제 2 파티션 함수와 연관된 제 2 배열을 형성하도록 리파티셔닝된다. 리파티셔닝 시에 존재하는 파티션 내의 데이터 엔트리에 대한 키 멤버십의 레코드가 생성되고, 키 멤버십의 레코드는 제 1 배열에 대응하는 데이터를 인식하는데 사용될 수 있다. 하나의 접근법에서, 키 멤버십의 레코드는 파티션의 제 1 배열과 연관된 키 또는 다른 식별자를 압축하여 나타내는 블룸 필터(Bloom filter)로서 구성된다. 제 1 파티션 함수 및 제 2 파티션 함수를 통합하는 복합 파티션 함수가 정의되고 제 2 배열에서의 후속 데이터베이스 동작을 위해 사용된다. 복합 파티션 함수는 키 멤버십의 레코드에서 발견된 키를 갖는 데이터에 대해서는 제 1 파티션 함수를 적용하고 키 멤버십의 레코드에서 발견되지 않은 키를 갖는 다른 데이터에 대해서는 제 2 파티션 함수를 적용하도록 구성된다. 리파티셔닝 시에 존재하는 데이터 엔트리가 제 1 배열의 파티션 내에서 각자의 위치를 유지하도록 리파티셔닝이 수행된다.
본 요약은 아래 상세한 설명에서 더 설명되는 개념들 중 선택된 개념을 간략화된 형태로 소개하고자 제공된다. 본 요약은 특허청구범위의 청구대상의 중요한 특징 또는 필수적인 특징을 식별하고자 하는 것도 아니고, 특허청구범위의 청구대상의 범위를 결정하는데 도움을 주고자 사용되는 것도 아니다.
본 상세한 설명은 첨부된 도면을 참조하여 설명된다. 도면들에서, 참조부호의 가장 좌측의 숫자(들)는 참조부호가 처음 나타나는 도면을 식별한다. 설명 및 도면 내 상이한 경우들에서 동일한 참조 번호의 사용은 유사하거나 동일한 아이템을 나타낼 수 있다. 도면들에 표현된 개체들은 하나 이상의 개체를 나타낼 수 있고 이에 따라 이어지는 설명에서 참조가 단일 또는 복수의 형태의 개체에 상호교환적으로 행해진다.
도 1은 복합 파티션 함수에 대한 기법을 채용하도록 동작가능한 예시적 동작 환경에 관한 예이다.
도 2는 하나 이상의 구현예에 따른 데이터베이스 시스템에 대한 파티션들의 예시적 배열을 도시한다.
도 3은 하나 이상의 구현예들에 따른 도 2의 시스템의 확장을 나타내는 데이터베이스 시스템에 대한 파티션들의 다른 예시적 배열을 도시한다.
도 4는 하나 이상의 구현예에 따른 데이터 시스템에 대한 파티션들의 다른 예시적 배열을 도시한다.
도 5는 하나 이상의 구현예에 따라 파티션들을 슬롯들에 할당하는 도면을 도시한다.
도 6은 복합 파티션 함수가 하나 이상의 구현예에 따라 정의되는 예시적 절차를 도시하는 흐름도이다.
도 7은 복합 파티션 함수가 하나 이상의 구현예에 따라 파티션들의 배열에 대한 요청을 라우팅하는데 사용되는 예시적 절차를 도시하는 흐름도이다.
도 8은 본원에 설명된 기법들의 양태를 구현하는데 이용될 수 있는 장치 및 컴포넌트를 구비한 예시적 시스템을 도시한다.
개요
시간이 지남에 따라, 데이터베이스 내에 저장된 데이터의 양이 많아지고 언젠가는 데이터 및 요청의 볼륨을 수용하기 위한 저장 용량이 확장될 수 있다. 하나의 전형적인 데이터 확장 기법은 데이터베이스를 셧다운하여 새로운 파티션들을 생성하고 모든 기존 데이터를 새로운 배열의 파티션들에 걸쳐 분산하는 것을 수반하는데, 이는 사용자에게 지장을 주고 시간소모적이다
본원에서는 기존 데이터를 이동시키지 않고 데이터베이스의 리파티셔닝에 사용될 수 있는 복합 파티션 함수 기법이 설명된다. 하나 이상의 구현예들에서, 데이터베이스는 제 1 파티션 함수와 연관된 제 1 배열(arrangement)로 파티셔닝된다. 데이터베이스는 제 2 파티션 함수와 연관된 제 2 배열을 형성하도록 리파티셔닝된다. 리파티셔닝 시에 존재하는 파티션들 내의 데이터 엔트리들에 대한 키 멤버십의 레코드가 생성되고, 이는 제 1 배열에 대응하는 데이터를 인식하는데 사용될 수 있다. 하나의 접근법에서, 키 멤버십의 레코드는 파티션의 제 1 배열과 연관된 다른 식별자 또는 키를 간단히 나타내는 블룸 필터(Bloom filter)로서 구성된다. 제 1 파티션 함수와 제 2 파티션 함수를 통합하는 복합 파티션 함수가 정의되고 제 2 배열 내의 후속 데이터베이스 동작에 사용된다. 복합 파티션 함수는 키 멤버십의 레코드에서 발견된 키를 갖는 데이터에 대해서는 제 1 파티션 함수를 적용하고 키 멤버십의 레코드에서 발견되지 않는 키를 갖는 다른 데이터에 대해서는 제 2 파티션 함수를 적용하도록 구성된다. 리파티셔닝은 리파티셔닝 시에 존재하는 데이터 엔트리들이 제 1 배열의 파티션들에서의 각자 자신의 위치를 유지하도록 구성된다.
본원에서 설명되는 복합 파티션 함수 기법을 사용하여, 데이터베이스의 리파티셔닝 동안 파티션들의 배열 내의 이들 제각기의 위치 내에 기존 데이터를 유지하는 것이 가능하다. 이와 같이, 많은 양의 데이터가 이동되지 않아도 되며, 이는 리파티셔닝과 연관된 시간을 감소시킨다. 더욱이, 블룸 필터 또는 키 멤버십의 다른 압축된 표현을 사용하는 것은, 빠른 평가를 가능하게 하여 상이한 파티션 배열(예를 들어, 파티션 기간)과 연관된 데이터 사이를 구별하고 데이터 요청의 관리를 위해 정확한 파티션 함수를 선택한다. 또한, 키 멤버십의 레코드는, 레코드를 관리가능하게 하고 상이한 서버, 파티션, 및 데이터베이스 시스템의 컴포넌트에 의한 사용을 위한 레코드의 분산을 실현가능하게 하는 비교적 작은 크기를 갖도록 구성된다.
다음 설명에서, 본원에서 설명된 기법을 사용할 수 있는 예시적 환경이 먼저 설명된다. 그 이후 예시적 환경뿐만 아니라 다른 환경에서 구현될 수 있는 예시적인 세부사항 및 절차가 설명된다. 따라서, 예시의 상세설명 및 절차는 예시의 환경으로 제한되지 않으며 예시의 환경은 예시의 상세설명 및 절차로 제한되지 않는다. 마지막으로, 본원에 설명된 기법의 양태들을 구현하기 위해 채용될 수 있는 예시의 시스템 및 시스템의 컴포넌트들이 설명된다.
예시적 환경
도 1은 본원에 설명된 기법들을 채용하도록 동작가능한 구현예에서 환경(100)을 도시한다. 예시의 환경(100)은 클라이언트 장치(102), 다른 클라이언트 장치(104), 및 네트워크(108)를 통해 통신가능하게 연결되는 서비스 제공자(106)를 포함한다. 클라이언트 장치(102), 다른 클라이언트 장치(104), 및 서비스 제공자(106)는 하나 이상의 컴퓨팅 장치에 의해 구현될 수 있고 하나 이상의 개체를 대표할 수도 있다.
컴퓨팅 장치는 다양한 방법으로 구성될 수 있다. 예를 들어, 컴퓨팅 장치는 네트워크(108)를 통해 통신할 수 있는 컴퓨터, 예컨대, 테스크탑 컴퓨터, 이동국, 엔터테인먼트 어플라이언스, 컴퓨팅 장치에 통신가능하게 연결된 셋톱 박스, 무선 전화, 게임 콘솔 등으로 구성될 수 있다. 따라서, 컴퓨팅 장치는 실질적 메모리와 프로세스 리소스를 갖는 전체 리소스 장치(예를 들어, 퍼스널 컴퓨터, 게임 콘솔)에서부터 제한된 메모리 및/또는 프로세싱 리소스를 갖는 저 리소스 장치(예를 들어, 전형적인 셋톱 박스, 핸드헬드 게임 콘솔)까지 포함할 수 있다. 추가적으로, 일부 경우들에서 단일 컴퓨팅 장치가 도시되지만, 컴퓨팅 장치는 동작 등을 수행하도록 사업체에 의해 이용되는 서비스 제공자(106)의 복수의 서버와 같은 복수의 상이한 장치를 대표하는 것일 수 있다. 컴퓨팅 시스템 및 장치에 관한 본원에 설명되는 기법들을 구현하기에 적합한 추가 예들은 도 8과 관련하여 아래에서 설명된다.
네트워크(108)는 인터넷으로 도시되어 있지만, 네트워크는 매우 다양한 구성을 취할 수 있다. 예를 들어, 네트워크(108)는 광역 네트워크(WAN), 근거리 네트워크(LAN), 무선 네트워크, 공중 전화망, 인트라넷, 피어투피어 네트워크 등을 포함할 수 있다. 또한, 단일 네트워크(108)가 도시되지만, 네트워크(108)는 복수의 네트워크를 포함하도록 구성될 수도 있다.
클라이언트 장치(102)는 오퍼레이팅 시스템(110)을 포함하는 것으로 또한 도시된다. 오퍼레이팅 시스템(110)은 클라이언트 장치(102) 상에서 실행가능한 애플리케이션(112)에 기본 장치의 기본 기능(functionality)을 추상화하도록 구성된다. 예를 들어, 오퍼레이팅 시스템은 기본 기능이 "어떻게" 구현되는지 알지 않고도 애플리케이션(112)이 기록될 수 있도록 프로세싱, 메모리, 네트워크 및/또는 디스플레이 기능을 추상화할 수 있다. 예를 들어, 애플리케이션(112)은 오퍼레이팅 시스템(110)에 데이터를 제공하여, 이 렌더링이 어떻게 수행될지 이해하지 않고도 도시된 바와 같이 디스플레이 장치에 의해 렌더링 및 디스플레이될 수 있다. 통상적으로 클라이언트 장치와 관련된 다양한 애플리케이션(112)은 복수의 사무 생산성 모듈(office productivity modules), 웹 브라우저, 게임, 멀티미디어 플레이어, 워드 프로세서, 스프레드 시트 프로그램, 포토 관리자 등을 통합하는 생산성 스위트(productivity suite)를 포함하지만 이로 한정되지 않는다.
클라이언트 장치(102) 및 다른 클라이언트 장치는 각각 통신 모듈(114)을 포함하는 것으로 도시된다. 통신 모듈은 네트워크(108)를 통해 다양한 종류의 통신을 가능하게 하는 기능을 나타낸다. 통신 모듈의 예로는 음성 통신 애플리케이션(예를 들어, VoIP 클라이언트), 비디오 통신 애플리케이션, 메시징 애플리케이션, 콘텐츠 공유 애플리케이션, 웹 콘텐츠에 액세스하기 위한 브라우저 및 이들의 조합을 포함 할 수 있다. 예를 들어, 통신 모듈(114)은 상이한 통신 방식을 조합하여 다양한 통신 시나리오를 제공할 수 있게 한다. 이는 사용자 상태 표시, 비디오 통신, 온라인 공동작업 및 모임 경험, 인스턴트 메시징(IM) 및 음성 호출을 위한 통합 기능을 구현하는 것이 포함되지만 이에 국한되지는 않는다. 또한, 통신 모듈은 온라인 자원 (예를 들어, 콘텐츠 및 서비스)에 액세스하고, 웹 페이지 및 사이트를 브라우징하고, 서비스 제공자 및 다른 클라이언트와의 통신 접속을 수립하고, 통신 모듈을 통해 출력될 수 있는 사용자 인터페이스(116)를 통해 다양한 다른 상호 작용을 가능하게 할 수 있다. 적어도 일부 구현예들에서, 통신 모듈(114)은 클라이언트 장치에 로컬로 배치되거나 설치되는 애플리케이션을 나타낸다. 부가적으로 또는 대안적으로, 통신 모듈(114)은 웹 브라우저(예를 들어, 웹 애플리케이션)를 통해 액세스되고 실행되는 원격 애플리케이션으로서, 제공자로부터의 원격 서비스로서, 피어 투 피어 기법을 사용하여, 모두 또는 부분적으로 구현될 수 있다.
서비스 제공자(106)는 도 1에 도시된 바와 같이 네트워크(108)를 통해, 예컨대, 리소스 관리자(120)를 통해, 이용가능해 질 수 있는 다양한 리소스(118)를 관리하도록 동작 가능한 기능을 포함한다. 리소스 관리자(120)는 본원에서 논의된 바와 같이 리소스(118) 및 리소스에 관련된 데이터를 관리하기 위한 다양한 기능을 나타낸다. 서비스 제공자(106)는, 웹 브라우저 또는 다른 클라이언트 애플리케이션을 통해 하나 이상의 클라이언트에 의한 출력을 위해 네트워크를 통해 통신되는 웹 페이지 또는 다른 사용자 인터페이스(116)를 통해 다양한 리소스(118)를 제공할 수 있다. 서비스 제공자(106)는 리소스(118)에 대한 액세스, 리소스의 성능 및 리소스(122)를 제공하기 위한 사용자 인터페이스(116)의 구성 등을 관리하도록 구성된다. 서비스 제공자(106)는 다양한 리소스(118)를 제공하는데 사용되는 하나 이상의 서버 장치를 나타낼 수 있다.
또한, 리소스 관리자(120)는 복수의 파티션(126)(또한 조각(shard)으로 언급됨)으로 분할되고 리파티셔닝될 수 있는 리소스(118)와 연관된 데이터베이스(124)를 관리하기 위해 파티션 함수(122)를 구현하도록 구성될 수 있다. 일반적으로, 파티션 함수는 데이터가 파티션의 배열에 걸쳐 할당되는 방법을 정의하도록 구성되고 데이터 요청을 적절한 파티션으로 라우팅하는 데 사용될 수도 있다. 파티션 함수(122) 중 적어도 일부는 전술된 방식 및 후술된 방식으로 구성되고 동작하는 복합 파티션 함수일 수 있다. 복합 파티션 함수의 형성 및 사용에 관한 추가 세부 사항은 다음의 도면과 관련하여 확인될 수 있다.
적어도 일부 실시예에서, 클라이언트는 인증받은 클라이언트/사용자 계정을 통해 서비스 제공자(106)에 의해 제공된 리소스(118)에 액세스할 수 있다. 예를 들어, 리소스(118)에 액세스하기 위해, 클라이언트 장치는 인증 서비스에 의해 인증되는 사용자 이름 및 패스워드를 제공할 수 있다. 인증이 성공적인 경우(예를 들어, 클라이언트가 "그들이 말하는 사람"인 경우), 인증 서비스는 토큰(또는 다른 적절한 인증 식별자/시크릿)을 전달하여 대응하는 리소스에 대한 액세스를 가능하게 할 수 있다. 단일 인증은, "단일 사인온(single sign-on)"에 의한 단일 계정에 대한 인증이 개별 리소스, 복수의 서비스 제공자(106)로부터의 리소스 및/또는 서비스 제공자(106)로부터 이용가능한 전체 리소스 세트에 대한 액세스를 제공할 수 있도록, 하나 이상의 리소스에 대응할 수 있다.
일반적으로, 서비스 제공자(106)에 의해 액세스 가능하게 만들어진 리소스(118)는 하나 이상의 제공자에 의해 네트워크를 통해 전형적으로 이용 가능해진 서비스 및/또는 콘텐츠의 임의의 적절한 조합을 포함할 수 있다. 서비스의 예로는 검색 서비스, 이메일 서비스, 인스턴트 메시징 서비스, 온라인 생산성 제품군(online productivity suite), 협업 서비스(예를 들어, 하나 이상의 VoIP 호출 기능, 온라인 모임(meeting) 또는 회의(conferencing), 스크린 공유, 통합 통신 및 협업(UC&C) 서비스, 인스턴트 메시징, 비디오 채팅, 음성 통신 등) 및 리소스(118)에 대한 클라이언트의 액세스를 제어하기 위한 인증 서비스를 포함할 수 있다. 콘텐츠는 텍스트, 멀티미디어 스트림, 문서, 애플리케이션 파일, 사진, 오디오/비디오 파일 애니메이션, 이미지, 웹 페이지, 웹 애플리케이션, 장치 애플리케이션, 브라우저 또는 다른 클라이언트 애플리케이션에 의한 디스플레이용 콘텐츠 등을 포함할 수 있다.
전술한 예시적 환경을 살펴봤으므로, 이제 하나 이상의 구현예에 따른 복합 파티션 함수 기법에 대한 일부 예시적인 세부사항 및 절차에 대해 논의한다.
복합 파티션 함수 세부사항(Composite Partition Function Details)
이 섹션은 하나 이상의 구현예에 따라 기존 데이터를 이동시키지 않고 데이터베이스를 리파티셔닝하기 위해 사용될 수 있는 복합 파티션 함수 기법 및 예시적인 절차의 세부 사항을 설명한다. 일반적으로 파티셔닝은 데이터베이스를 확장하는 데 사용될 수 있는 기법이다. 파티셔닝은 레코드/데이터 엔트리를 파티션(126)(조각(shard)이라고도 함)이라고 하는 분리된 서브 세트로 쪼개는(splitting) 것을 포함할 수 있다. 파티셔닝은 레코드에 대한 적절한 식별자에 기초할 수 있는데, 그 일례는 레코드의 기본 키(primary key)이다. 파티션은 복수의 다른 서버 및/또는 저장 장치(예를 들어, 데이터베이스 노드)에 물리적으로 분산될 수 있다. 하나의 접근법에서, 각 파티션이 개별 데이터베이스 서버에 할당될 수 있으므로 파티션과 데이터베이스 노드 사이에 일대일 매핑이 있다. 추가적으로 또는 대안으로, 주어진 파티션에 대해 할당된 공간이 2개 이상의 개별 데이터베이스 노드 상에 위치될 수 있도록 하나 이상의 파티션이 서버/저장 장치에 걸쳐 논리적으로 분할될 수 있다.
이러한 맥락에서, 파티션의 주어진 배열은 데이터베이스가 데이터로 채워질 때 소비되는 한정된 양의 저장 용량을 갖는다. 어떤 시점에서, 데이터베이스의 지속적인 동작을 가능하게 하기 위해 저장 용량을 확장해야하는 용량 임계값에 도달할 수 있다. 데이터베이스의 확장은 하나 이상의 파티션을 기존 파티션 배열에 추가하여 더 많은 저장 용량을 갖는 파티션의 또 다른 배열을 생성하는 것을 포함할 수 있다. 데이터베이스의 확장은 본 명세서에서 리파티셔닝(repartitioning)이라고도 지칭된다. 리파티셔닝은 저장되는 데이터의 볼륨 또는 데이터에 대한 액세스 요청 비율과 관련하여 각 데이터베이스 노드가 균등하게 포화 상태가 되는 균형 시스템을 위해 발생할 수 있다. 이 경우, 추가 저장소(예를 들어, 다른 서버/저장 장치)는 추가 저장소를 이용하도록 구성된 새로운 파티션 함수와 함께 추가될 수 있다. 리파티셔닝은 또한 일부 데이터베이스 노드가 저장 한계에 가깝지만 다른 노드는 약간 채워져 있어 여유 공간이 있는 불균형 시스템에 대해서 발생할 수 있다. 이러한 상황에서, 데이터베이스 노드는 동일하게 유지될 수 있지만, 더 많이 사용된 노드보다는 더 적게 사용된 노드를 선호하도록 구성되는 새로운 파티션 함수가 정의될 수도 있다.
본원에 설명된 기법에 따라, 리파티셔닝은 리파티셔닝 시 존재하는 파티션들 내에 위치하는 데이터 엔트리들이 이들 각자의 위치를 유지하도록 수행될 수 있다. 즉, 리파티셔닝 시에 데이터베이스에 이미 존재하는 데이터는 리파티셔닝의 결과로 이동되지 않고, 그 결과 프로세싱 시간 및 리소스 이용이 감소한다. 이는 데이터 요청을 핸들링하기 위한 파티션의 연속 배열 또는 "파티션 기간(partition eras)"에 대응하는 복수의 상이한 기본 파티션 함수를 선택적으로 적용하도록 구성되는, 본원에 논의된 복합 파티션 함수를 사용함으로써 달성될 수 있다. 이를 수행하기 위해, 복합 파티션 함수는 각 데이터 요청이 대응하는 파티션 기간을 인식하고 요청을 핸들링하기 위해 인식된 파티션 기간에 적절한 파티션 함수를 적용하도록 키 멤버십의 레코드를 포함하거나 아니면 활용한다.
이제 도 2 내지 도 5의 예를 고려하며, 이는 복합 파티션 함수 및 키 멤버십 레코드에 관한 세부 사항 및 개념은 물론 복합 파티션 함수를 사용한 파티션 리파티셔닝을 도시한다. 특히, 도 2는 일반적으로 하나 이상의 구현예들에 따른 데이터베이스 시스템에 대한 파티션들의 예시적인 배열을 도시한다(200). 도시된 예에서,도 1과 관련하여 설명된 바와 같이 서비스 제공자(106)와 연관될 수 있는 서버(202)가 표현된다. 서버(202)는 웹 애플리케이션(204) 및/또는 다른 리소스 (118)와 연관된 기능을 제공하도록 구성될 수 있다. 서버(202)는 웹 애플리케이션 (204)과의 상호작용 및 대응하는 데이터베이스 내의 웹 애플리케이션과 연관된 데이터의 저장을 관리하도록 본원에서 설명된 바와 같이 동작할 수 있는 리소스 관리자(120)를 포함할 수 있다. 데이터는 데이터베이스용 파티션(126)이 정의되고 서버(202)를 포함하거나 포함하지 않을 수도 있는 하나 이상의 서버들을 통해 구현될 수 있는 저장 장치를 통해 저장될 수 있다. 하나의 구현예에서, 데이터베이스에 대한 파티션들(126) 중 하나 이상은 서버(202)를 통해 제공될 수 있다.
도시된 예에서 리소스 관리자(120)는 도 1에 도시된 파티션들의 배열을 위해 파티션 함수 p1(206(1))을 구현하도록 구성되며, 이는 2개의 예시적인 파티션, 즉 파티션(208(0)) 및 파티션(208(1))을 포함한다. 데이터는 키-값 형식으로 표현되며 키는 데이터 레코드의 기본 키이고 값은 데이터 레코드의 내용을 나타낸다. 데이터에 액세스하고 레코드 추가, 레코드 삭제, 데이터 수정, 읽기 동작, 쓰기 동작 등을 포함하지만 이로 제한되지 않는 데이터에 대한 동작을 수행하라는 데이터 요청이 행해질 수 있다. 동작을 수행하도록 데이터에 액세스하기 위해, 요청하는 애플리케이션은 키(또는 기타 유사한 식별자)를 사용하여 표시된 키에 대응하는 파티션에 대한 데이터베이스 노드의 위치를 찾는다. 이것이 완료되면, 데이터베이스 시스템의 특정 프로토콜, 형식 및/또는 데이터베이스 기법(이는 시스템마다 상이할 수 있음)에 따라, 선택된 노드 및/또는 파티션으로부터 데이터가 액세스될 수 있다.
파티션 함수 p1((206)(1)) 및 파티션 함수들(122)은 일반적으로 대응하는 키들에 기초하여 결정론적 선택을 가능하게 한다. 다시 말해, 함수는 데이터의 위치가 확실하게 찾아지도록 주어진 키에 대해 동일한 파티션을 일관적으로 선택한다. 파티션 함수들(122)의 다양한 구성들이 고려된다. 하나의 접근법에서, 파티션 함수는 데이터 요청에 대해 키 값에 적용될 때 키 값에 대응하는 데이터베이스의 파티션을 식별하는 데이터를 반환하는 해시 함수로서 구성될 수 있다.
제한이 아닌 예시로써, 파티션 함수(p)는 p(k) = hash(k) mod N의 형식을 가질 수 있고, 여기서 k는 키, 해시는 해싱 함수이고 N은 주어진 배열에 대한 파티션의 개수이다. 이러한 예에서, 파티션 함수는 0부터 N-1까지의 파티션 번호를 반환한다. 해시 함수는 키(k) 또는 다른 식별 데이터를 나타내는 문자열(또는 바이트 배열)에 큰 정수 값을 할당하도록 동작한다. 이러한 형식으로 이용된 해시 함수는 값의 균일한 분산을 제공하도록 구성될 수 있다. 이와 달리, 해시 함수는 특정 파티션(예를 들어, 이용되지 않은 파티션(under-utilized partitions))에 대해 데이터의 배치를 왜곡시키는데(skew) 사용될 수 있는 값들의 분포를 달성하도록 선택/구성될 수 있다. modulo 함수(mod N)는 큰 정수 값을 0에서 N-1의 범위로 다시 캐스팅하고, 이 배열은 파티션 배열에서 개별 파티션의 식별자로 사용될 수 있다. 따라서, 파티션 함수는 파티션 함수에 의해 반영된 분산 방식에 따라 데이터베이스 노드/파티션 사이에서 데이터를 분산시키도록 설계될 수 있다.
도 2의 예에서, 파티션 함수 p1(206(1))은 키들(k1 및 k2)에 대한 레코드를 본 예에서 파티션 208(0)인 제 1 파티션에 매핑하도록 구성된다. 다시 말해, 키들(k1 및 k2)에 대해 평가된 파티션 함수 p1(206(1))은 파티션 208(0)에 대한 식별자를 반환하며, 이는 본 예에서 값 0(예를 들어, p1(k1) = p1(k2) = 0)이다. 따라서, 도 2에 나타난 바와 같이 키들(k1 및 k2)에 대응하는 데이터 레코드/값은 파티션 208(0)과 연관된 서버/저장소에 저장되고 그로부터 액세스될 수 있다. 파티션 함수 p1(206(0))은 키들(k3 및 k4)에 대한 레코드를 제 2 파티션, 즉 파티션 208(1)에 매핑하도록 또한 구성된다. 여기서, 키들(k3 및 k4)에 대해 평가된 함수는 파티션 208(1)에 대한 식별자를 반환하고, 이는 본 예에서 값 1(예를 들어, p1(k3) = p1(k4) = 1)이다. 따라서, 키들(k3 및 k4)에 대응하는 데이터 레코드/값은 도 2에 나타난 바와 같이 파티션 208(1)과 연관된 서버/저장소에 저장되고 그로부터 액세스될 수 있다.
이제, 도 2에 도시된 예시적 시스템에 대한 용량 임계값에 도달하면, 추가 서버/저장소를 포함시키고 파티션의 새로운 배열에 걸쳐 데이터베이스를 리파티셔닝함으로써 추가 용량이 추가될 수 있다. 예를 들어, N'= N+1, 또는 N' = 2*N인, N에서 N'까지의 확장 및 예를 고려하자. 파티션의 새로운 배열은 추가 용량/파티션을 수용하도록 생성된 새로운 파티션 함수에 의해 통제된다. 그 이후 새로운 데이터는 전술된 바와 같이 p'(k) = hash (k) mod N'의 형태를 가질 수 있는 새로운 파티션 함수를 사용하여 확장된 시스템에 할당된다. 그러나 기존 데이터의 위치는 이전 파티션 함수(예를 들어, 파티션 함수 p1(206(1)))에 의해 통제되고, 이에 따라 일반적으로 2개의 함수가 정렬되지 않기 때문에(예를 들어, p(k) ≠ p'(k)) 새로운 파티션 함수는 기존 데이터의 위치를 확실하게 찾지 않는다. 전형적인 해결법은 일정 기간 동안 데이터베이스 서비스를 중단하고, 기존 레코드를 반복하고(iterating), 새로운 함수에 따라 삭제 및 재삽입 동작을 수행하여 새로운 파티션 함수의 후속 사용을 가능하게 하는 것을 포함한다. 이전에 언급한 바와 같이, 이는 큰 볼륨의 데이터 및 요청을 갖는 데이터베이스에 대해 상당히 지장을 주고 시간 소모적일 수 있다.
그러나, 본원에 설명된 복합 파티션 함수 기법은 기존 데이터를 이동시키지 않고 데이터베이스를 리파티셔닝하도록 사용될 수 있다. 일반적으로, 복합 파티션 함수는 상이한 파티션 배열에 대한 키 멤버십의 레코드를 사용하여 주어진 데이터베이스 동작에 사용할 대응 파티션 함수를 선택한다. 이 경우에, 특정 데이터가 데이터베이스에 처음 할당될 때 사용된 파티션 함수가 리파티셔닝 이후에도 그 특정 데이터에 대해 계속 사용된다. 키 멤버십의 레코드는 적용할 함수를 정확하게 선택할 수 있게 하고, 복합 파티션 함수는 제각기 상이한 파티션 기간에 대응하는 2개 이상의 개별 파티션 함수의 조합을 사용하도록 설계된다.
하나 이상의 구현예에 따른 도 2의 시스템의 확장을 나타내는 데이터베이스 시스템에 대한 다른 예시적 파티션 배열(300)을 도시하는 도 3을 고려한다. 이 예에서, 추가 파티션(208(2))은 도 3의 파티션의 배열에 포함되는 것으로 도시된다. 추가적으로, 리소스 관리자(120)는 도 3의 파티션들의 배열에 대한 데이터 할당을 통제하는 복합 파티션 함수(302)를 구현하는 것으로 예시된다. 복합 파티션 함수(302)는 도 2의 배열에 대한 이전 함수를, 새로운 함수, 즉 도 3에 도시된 파티션들의 재배열에 대해 수립된 파티션 함수 p2(206(2))와 조합하도록 구성된다. 복합 파티션 함수(302)는 또한 복합 파티션 함수(302)에 통합된 개별 파티션 함수와 키 값들의 관련성을 인식하는데 사용될 수 있는 키 레코드 b1(304(1))을 포함하거나 이용하도록 구성된다. 하나의 접근법에서, 키 레코드 b1(304(1))은, 어느 키 값이 이전 함수(파티션 함수 p1(206(1)))와 연관되는지 식별하고 이에 따라 대응하는 데이터 요청을 핸들링하기 위해 이 함수를 선택하는 메커니즘을 제공한다. 파티션 함수 p2(206(2))는 키 레코드 b1(304(1))에 포함된 키 값들에 대응하지 않은 다른 데이터 요청에 대해 사용될 수 있다.
본 예에서, 키들(k1, k2, k3, 및 k4)과 연관된 데이터 엔트리/값은 도 2에 도시된 바와 같이 시스템에 사전 존재하고 파티션들에 걸쳐 분산된다. 도 3에 도시된 바와 같이 리파티셔닝이 발생하여 추가 파티션을 추가할 수도 있다. 구현예들에서, 데이터베이스 시스템은 추가 파티션(들)을 생성하고 복합 파티션 함수를 설치하기 위해 정지될 수도 있다. 리파티셔닝의 일부로서, 시스템 내 기존 키들(예를 들어, k1, k2, k3 및 k4)은 프로세싱되어 키 레코드 b1(304(1))로 표현되는 리파티셔닝 시의 키 멤버십 레코드를 생성할 수 있다. 이러한 프로세싱은 새로운 파티션 함수에 따라 기존 레코드를 이동시키는데 걸리는 시간에 비해 상당히 적은 시간이 걸릴 수 있다는 점을 주목해야 한다.
복합 파티션 함수(302)는 다음의 방식으로 정의될 수 있다. 파티션 함수 p1(206(1))은 2개의 파티션의 배열에 대한 원래의 파티션 함수이고 p1(l) = hash(k) mod 2의 형태를 갖는다. 파티션 함수 p2(206(2))는 3개의 파티션의 확장된 배열에 대해 수립된 새로운 파티션 함수이고 p2(k) = hash(k) mod 3의 형태를 갖는다. 이제, p'(k)로 표현되는 복합 파티션 함수(302)는 다음과 같다:
b1(k)=참인 임의의 k에 대해 p'(k) = p1(k), 참이 아닌 경우 p'(k) = p2(k).
다시 말해, 키 값이 키 레코드 b1(304(1))에 포함되는지 여부를 확인하기 위한 체크가 행해진다. 키 값이 발견되면, p1이 대응 요청/동작을 핸들링하기 위해 사용된다. 키 값이 발견되지 않는다면, p2가 대응 요청/동작을 핸들링하기 위해 사용된다. 복합 파티션 함수(302)를 사용하면, 레코드는 p1를 사용하여 찾을 수 있기 때문에 자신의 원래 위치에 머물 수 있다. 새로운 레코드는 p2를 사용하여 새로운 파티션을 포함하는 파티션의 배열에 걸쳐 데이터를 파퓰레이팅할 수 있다. 따라서, 데이터베이스 노드의 전체 세트가 앞으로 이동하는데 이용된다.
키 레코드 b1(도 3의 304(1))과 같은 키 멤버십의 레코드는 상이한 파티션 배열 및/또는 파티션 기간과 연관된 키들 사이를 구별하기에 적합한 방식으로 구성될 수 있다. 각 배열/기간에 대응하는 키의 로우 리스트(raw list)가 하나 이상의 구현예에서 채용될 수 있다. 그러나, 사실상 키들의 로우 리스트의 크기는 상이한 데이터베이스 서버 및 노드로 리스트를 분산시키는 것을 어렵게 할 수 있고 상당한 메모리양을 차지할 수 있다. 따라서, 로우 리스트를 사용하는 것에 추가로 또는 대안으로 압축 포맷인 키의 압축 표현이 채용될 수 있다. 리파티셔닝 시에 데이터베이스에 존재하는 데이터 엔트리에 대응하는 키를 식별하도록 구성될 수 있는 다양한 다른 압축 데이터 구조가 고려된다. 압축 데이터 구조의 예들은 비트맵, 어레이, 메트릭, 및 필터를 포함하나 이로 제한되지 않는다.
하나 이상의 구현에서 키 멤버십의 레코드에 적합할 수 있는 압축 데이터 구조의 다른 예는 블룸 필터(Bloom filter)이다. 블룸 필터는 공간 효율적인 방식으로 값 세트에 대해 세트 멤버십을 기억하도록 설계된 데이터 구조이다. 특히, 키 세트 S = {k1, ... kN}가 주어진다면, 블룸 필터는 세트 S 내의 각각의 키의 존재를 "기억"하도록 생성될 수 있다. 블룸 필터는 공간 효율적이기 때문에, 단순히 모든 키의 리스트를 기억하지 않는다. 그 대신, 블룸 필터는 비트 벡터를 유지하는데, 여기서 S의 각각의 키 k에 대해, 비트가 인덱스 hash(k) mod M에서 설정되며, 여기서 hash는 해시 함수(파티션 함수와 연관된 해시 함수일 수도 있거나 다를 수도 있음)이고 M은 비트 벡터의 길이이다. 임의의 주어진 키 k의 세트 멤버십을 결정하기 위해, 위치 hash(k) mod M에서 비트에 대한 룩업이 수행된다. 비트가 설정되면, 키는 해당 세트의 멤버이고, 그렇지 않다면 해당 세트의 멤버가 아니다. 비트 벡터는 매우 공간 효율적이므로, 데이터베이스 노드의 메모리 내에 블룸 필터를 저장하는 것을 가능하게 하고, 심지어 큰 애플리케이션을 지원하는 데이터베이스에서 전형적으로 발견되는 많은 개수의 키에 대해서도 가능하게 한다.
블룸 필터는 일부 오탐 오류(false positive errors)를 생성하는 확률 데이터 구조이라는 점을 유의하여야 한다. 예를 들어, 세트 S의 멤버인 키(k2)가 S의 멤버인 키(k1)와 같은 값으로 해시될 수 있다. 이러한 오류를 해시 함수의 충돌이라고 한다. 오류율은 작지만, 여전히 가능성이 있다. 따라서, S의 멤버가 아닌 적은 개수의 키에 대해, 블룸 필터는 그들을 세트 멤버로 부정확하게 분류할 수도 있다. 오류 확률은, 비트 벡터의 길이를 연장함으로써 및/또는 복수의 해시 함수를 사용하고 이러한 해시 함수에 의해 표시된 복수의 비트 설정의 검사에 기초하여 멤버십을 분석함으로써 최소화될 수 있다. 따라서, 블룸 필터는 비트 벡터의 길이를 명시함으로써 그리고 블룸 필터에 사용할 하나 이상의 해시 함수를 선택함으로써, 오류를 제어하도록 선택적으로 구성될 수 있다. 실제로, 블룸 필터에 의해 소비된 저장 공간에 대한 제약 및 해시 함수의 계산을 위한 레이턴시/비용에 영향받기 쉬운 수락가능 오류율을 설정하기 위한 절충(tradeoff)이 이뤄질 수 있다. 블룸 필터가 새로운 데이터에 대한 키를 세트의 멤버로 잘못 인식하는 경우 지속적으로 그렇게 할 것이기 때문에 오류율은 수용가능하다. 따라서, 데이터가 이전 파티션 함수를 사용하여 배치되더라도 데이터는 신뢰성 있게 위치될 수 있다. 더욱이, 블룸 필터는 세트의 멤버(예를 들어, 기존 레코드에 대한 키)인 키에 대한 부정 오류(false negative)를 반환하지 않으며 이에 따라 오래된 데이터는 원래 위치에 남아있거나 신뢰성 있게 위치할 수 있다. 하나의 접근법에서, 블룸 필터의 구성은 얼마나 자주 오탐 오류가 생성되는지 판정하는 구성가능 허용오차를 설정하는 것을 포함할 수 있다. 그 다음, 블룸 필터의 압축 정도는 구성가능 허용오차에 따라 다르다. 예를 들어, 더 많은 오탐 오류를 생성하거나 "허용"하도록 구성가능한 허용오차를 설정함으로써 더 높은 압축 정도가 달성될 수 있다. 실제로, 이전 기간의 함수를 사용하여 잘못 인식된 데이터 엔트리가 여전히 신뢰성 있게 위치될 수 있기 때문에 매우 높은 압축 정도가 달성될 수 있다. 다시 말해, 블룸 필터 오류의 영향은 무시할 수 있으므로 비교적 큰 빈도의 오류가 허용가능하고 이에 따라 블룸 필터의 매우 압축된 구성이 이용될 수 있다.
이제 리파티셔닝 이후 시스템에 4개의 새로운 레코드가 추가되는 도 3의 일 예를 고려한다. 본 예의 목적을 위해, 방금 설명한 바와 같이 키 레코드 b1(304(1))이 블룸 필터로 구성된다고 가정한다. 키들(k1, k2, k3 및 k4)은 시스템에 사전 존재하고 블룸 필터의 멤버인 것으로 인식될 것이다. 따라서, 이들 키와 연관된 요청은 파티션 함수 p1(206(1))에 의해 통제된다. 키들(k5 및 k6)은 블룸 필터의 멤버가 아닌 것으로 발견되고 파티션 함수 P2(206(2))에 의해 파티션(208(1))에 할당될 수 있다. 키(k7)는 또한 블룸 필터에서 발견되지 않고, 파티션 함수 p2(206(2))에 의해 데이터베이스의 새로운 파티션(3)에 할당된다. 키(k8)는 리파티셔닝 후 발생한 새로운 키인 흥미로운 경우인데, 전술된 바와 같이 블룸 필터로 인해 멤버로 잘못 분류되고, 그래서 파티션 함수 p1(206(1))에 의해 파티션(208(1))에 할당된다. 그러나, 언급된 바와 같이, 이는 데이터의 무결성 또는 키(k8)에 대응하는 데이터의 위치를 찾는 능력에 대한 문제를 야기하지 않으며 그 이후 블룸 필터는 지속적으로 키(k8)를 잘못 인식할 것이고 따라서 데이터에 대한 요청을 신뢰성 있게 라우팅할 것이다.
본원에 설명된 리파티셔닝 프로세스가 연속적인 파티션 기간 동안 여러 번 수행될 수 있음을 또한 유념해야 한다. 도 1 내지 3과 관련하여 전술된 개념들은 복수의 리파티셔닝 동작을 수반하는 일반화된 경우에 적용될 수 있다. 예를 들어, 앞의 예에서 이전 함수(p1)는 이전 리파티셔닝에 대응하는 상이한 복합 파티션 함수일 수도 있다. 다시 말해, 파티션의 현재 배열에 대해 수립된 복합 파티션 함수는 이전 배열에 대한 하나 이상의 다른 복합 파티션 함수를 통합할 수 있다.
또한 예시를 위해, 하나 이상의 구현예들에 따라 데이터베이스 시스템에 대한 또 다른 예시적 파티션 배열이 일반적으로 400으로 도시되는 도 4를 참조한다. 특히, 도 4는 복수의 데이터베이스 파티션(1 내지 N) 및 복수의 리파티셔닝 동작에 관한 일반화된 경우를 도시하며, 각각은 파티션 배열에서의 새로운 위치로 기존 데이터를 이동시키지 않는다. 이러한 예에서, 데이터베이스 시스템의 수명은 일련의 연속 파티션 기간(1 내지 M)을 가질 수 있다. 각 파티션 기간은 해당 파티션 기간에 존재하는 파티션에 대해 데이터를 할당하고 위치시키는 방법을 정의하는 제각기의 파티션 함수(122)와 연관된다. 따라서, 리파티셔닝은 이전 파티션 기간의 종료 및 새로운 파티션 기간의 시작을 나타낸다. 각 기간의 종료시에 존재하는 중요한 멤버십에 관한 다른 레코드 또는 블룸 필터가 리파티셔닝의 일부로서 수립될 수도 있다. 따라서, 상이한 파티션 기간은 데이터 요청을 적용할 정확한 파티션 함수(122)를 인식하는데 사용될 수 있는 키 멤버십의 상이한 레코드와 연관될 수 있다.
현재 파티션 기간(M)은, 각각의 파티션 기간에 대해 참조(206(1) ... 206(M))를 갖는 복수의 해시 기반 파티션 함수(p1 ... pM)의 조합인 복합 파티션 함수(402)에 의해 통제된다. 추가적으로, 참조(304(1) ... 304(M-1))를 갖는 키 레코드(b1 ... bM-1)는 현재 기간 이전에 각각의 파티션 기간에 대해 수립되는 것으로 도시된다. 복합 파티션 함수(402)는 키 값이 키 레코드 중 어느 하나에서 발견되는지 여부를 검사하고 그 이후 키 레코드 중 하나에서의 멤버십이 결정될 때 대응하는 파티션 함수를 적용하도록 구성될 수 있다. 하나의 접근법에서, 검사는 가장 오래된 기간에 대해 키 레코드를 검사함으로써 시작되고 그 이후 매칭이 발견될 때까지 가장 오래된 것에서부터 가장 새로운 것까지 각 기간 동안 프로세싱한다. 매칭이 키 레코드 중 어느 것에서도 발견되지 않는다면, 현재 기간에 대한 파티션 함수 pM(206(M))이 선택되고 적용된다. 이러한 맥락에서, 복합 파티션 함수(402)는 다음과 같이 표현될 수 있다.
k가 필터 b1에서 발견된다면, p(k) = p1(k)를 설정
k가 필터 b2에서 발견된다면, p(k) = p2(k)를 설정
... 계속해서 중간 기간 동안 평가
k가 필터 bM-1에서 발견된다면, p(k) = pM-1(k)를 설정
그 외에는 p(k) = pM(k)를 설정
의사 코드(pseudo code)로 예시적 복합 파티션 함수(402)를 나타내면 다음과 같다.
Figure pat00001
이전 설명에 따라, 2개 이상의 파티션 기간에 대해 파티션 함수를 선택적으로 적용하도록 구성된 복합 파티션 함수는 현재 기간에 대해 요청 및 데이터베이스 동작을 통제하도록 정의될 수 있다. 하나 이상의 구현예들에서, 복합 파티션 함수는 현재 파티션 배열 내의 파티션들에 걸친 새로운 데이터 레코드의 실질적으로 균등한 분포를 제공하도록 구성된다. 그러나, 리파티셔닝 시에 존재하는 데이터의 분포에 따라, 새롭게 추가된 파티션은 오래된 데이터가 이미 저장된 기존 파티션보다 훨씬 많은 저장 공간을 가질 수 있기 때문에, 새로운 데이터의 분포는 수락가능한 부하 균형을 생성할 수도 있고 생성하지 않을 수도 있다.
예를 들어, 파티션 함수 hash(k) mod N 및 hash(k) mod N'을 사용하여 N'으로 확장된 N 파티션을 갖는 시스템을 참조하자. 예시의 목적을 위해, 도 2 및 도 3의 예들 각각에서와 같이 N=2 및 N'=3을 가정한다. 대응하는 파티션 함수들 p1(k) = hash(k) mod 2 및 p2(k) = hash(k) mod 3은 일부 데이터를 새로운 파티션 상에 배치할 것이지만 기존 파티션은 리파티셔닝 시의 채움 상태로 인해 아마도 더 많이 채워졌을 것이다. 그러므로, 할당은 불균형인 시스템으로 이어질 수도 있다.
따라서, 리밸런싱(rebalancing) 특징이 또한 본원에 설명된 복합 파티션 함수 기법과 함께 제공된다. 하나의 접근법에서, 리밸런싱 특징이 새로운 및/또는 유휴(underutilized) 파티션에 새로운 데이터를 할당하는 것을 왜곡하도록 선택적으로 토글링 온 또는 오프될 수 있는 옵션으로서 제공될 수 있다. 추가적으로 또는 대안적으로, 리소스 관리자(120)가 이용가능한 파티션 용량, 요청 볼륨, 데이터 증가율 등과 같은 팩터에 기초하여 리밸런싱을 자동으로 구현하도록 구성될 수 있다. 일반적으로, 리밸런싱 특징은 왜곡 특징을 통합하여 다른 파티션보다 하나 이상의 지정된 파티션에 더 빈번하게 새로운 데이터가 할당되게 하도록 구성된 수정된 해시 함수를 사용하는 것을 포함할 수 있다. 예를 들어, 왜곡 팩터는 데이터의 균등하지 않은 분포로 하여금 리파티셔닝 동작 이전에 존재하는 오래된 파티션보다 재구성된 배열에 대해 추가된 새로운 파티션에 더 많은 데이터를 할당하게 할 수 있다. 특정 파티션에 대해 할당을 왜곡하는 다양한 기법이 고려된다. 예를 들어, 왜곡 팩터는, 해시 함수가 다른 파티션을 지시하더라도 선택된 파티션에 요청이 할당되는 구성가능한 간격을 지정하도록 동작할 수 있다. 따라서, 시스템은 그러한 간격(예를 들어, 3번째 또는 4번째 요청마다)으로 선택된 파티션에 요청을 자동으로 할당하도록 설정될 수 있다. 다른 접근법에서, 왜곡 팩터는 파티션의 관련 부하에 기초하여 동적으로 변경되어 더 많은 요청이 초기에 선택된 파티션에 할당될 수 있지만, 시간이 지남에 따라 함수는 균등한 분포를 만드는 것으로 점차 돌아갈 수 있다. 예를 들어, 왜곡 팩터는 선택한 파티션이 데이터로 가득 차면 시간 경과에 따라 스큐 팩터의 영향을 줄이는 감쇠 기능에 따라 달라질 수 있다.
다른 접근법에서, 왜곡 팩터는 배열 내 새로운 파티션에 대해 할당을 바이어싱하기 위해 슬롯팅 개념을 사용하는 수정된 파티션 함수를 통해 구현된다. 여기서 수정된 파티션 함수는 파티션 개수보다 많은 복수의 슬롯을 정의한다. 그 이후, 새로운 파티션 또는 선택된 파티션이 1개 초과의 슬롯을 할당받을 수 있도록 슬롯이 논리적으로 파티션에 할당된다. 해시 함수는 슬롯을 식별하는 데이터를 반환하고 대응하는 파티션에 데이터를 할당하도록 구성된다. 해시 함수에 의해 반환된 값은 복수의 슬롯에 걸쳐 있으므로, 데이터는 단 하나의 슬롯을 할당받은 파티션에 비해 1개 초과의 슬롯을 할당받은 파티션에 더 자주 할당될 것이다.
하나 이상의 구현예에 따라 슬롯을 파티션에 할당하는 것에 관한 표현을 일반적으로 500으로 도시하는 도 5를 참조한다. 여기서, 도 3의 예의 3개의 파티션(208(0), 208(1), 208(2))이 도시된다. 슬롯(502)의 개수가 정의되고 파티션에 대해 할당된다. 이러한 예에서, 4개의 슬롯(502)이 3개의 파티션(208(0), 208(1), 208(2))에 할당되며, 파티션(208(0)) 및 파티션(208(1))(예를 들어, 오래된 파티션) 각각에는 하나의 슬롯이 할당되고 파티션(208(2))(예를 들어, 새로운 파티션)에는 2개의 슬롯이 할당된다.
상기와 같이 일반적인 형태 p(k) = hash(k) mod N을 갖는 파티션 함수에 대하여, 바이어스를 구현하기 위한 수정은 N의 값을 S의 값으로 대체하는 것을 포함하고, 여기서 S는 슬롯의 개수이다. 또한, 슬롯 할당을 나타내는 데이터는 반환된 슬롯 식별을 실제 파티션으로 매핑하도록 유지될 수 있다. 그 다음, 파티셔닝은 두 단계로 계산된다.
(1) 슬롯 = hash (k) mod S를 계산하며, 여기서 S는 슬롯의 개수이다.
(2) 슬롯 할당을 나타내는 데이터를 사용하여 슬롯을 파티션에 맵핑한다.
새로운 데이터가 도착할 때, 더 많은 키가 새로운 파티션에 매핑되고, 따라서 새로운 파티션이 오래된 파티션보다 더 빠른 속도로 가득 차고 더 많은 로드를 차지한다. 결국 시스템은 파티션들 사이의 균형에 접근할 수 있고, 이 시점에 더 새로운 파티션에 대하여 계속 왜곡하는 것은 불균형이 다시 시작되게 할 수 있으므로, 이번에는 새로운 파티션이 너무 많은 부담을 갖게 된다. 이러한 문제를 해결하기 위해, 본원에 설명된 바와 같이 동일한 파티션을 사용하지만 왜곡된 해시 함수로부터 슬롯 또는 왜곡 팩터를 사용하지 않는 "표준" 함수로 다시 전환하게 하는, 다른 리파티셔닝 동작이 수행될 수 있다. 여기서 추가 리파티셔닝은 더 이상의 용량 추가 없이 파티션 함수를 변경하고 업데이트하도록 수행된다. 이러한 추가 리파티셔닝 이후, 시스템은 균형을 이루면서 확장될 것이다.
예시적 절차
다음의 논의는 이전에 설명된 시스템 및 장치를 이용하여 구현될 수 있는 기법을 설명한다. 각각의 절차에 관한 양태들은 하드웨어, 펌웨어, 또는 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 절차는 하나 이상의 장치에 의해 수행되는 동작을 명시하는 블록 세트로 도시되고 각각의 블록에 의해 동작을 수행하는 것으로 도시된 순서로 반드시 제한되는 것은 아니다. 다음의 논의 중 일부 논의에서, 도 1의 환경(100) 및 도 2 내지 도 5의 예들에 대한 참조가 행해질 수 있다. 예로써, 절차에 관한 양태들은 적합하게 구성된 컴퓨팅 장치에 의해, 예컨대, 리소스(118) 및/또는 리소스 관리자(120)를 제공하도록 구성된 서비스 제공자(106)와 연관된 하나 이상의 서버 장치에 의해, 수행될 수 있다.
도 1 내지 도 5의 예들과 관련하여 설명된 기능, 특징, 및 개념이 본원에 설명된 절차의 맥락에서 이용될 수도 있다. 또한, 상이한 절차와 관련하여 아래에서 설명되는 기능, 특징, 및 개념은 상이한 절차들 사이에서 상호교환될 수 있으며 개별 절차의 맥락에서의 구현으로 제한되지 않는다. 더욱이, 본원에서 서로 다른 대표적 절차 및 대응 도면과 연관된 블록들은 상이한 방식으로 함께 적용 및/또는 조합될 수도 있다. 따라서, 본 문서 전체에 걸쳐 상이한 예시적 환경, 장치, 컴포넌트, 및 절차와 관련하여 설명된 개별 기능, 특징, 및 개념들은 임의의 적합한 조합으로 사용될 수도 있고 열거된 예들에 의해 표현된 특정 조합으로 제한되지 않는다.
도 6은 복합 파티션 함수가 하나 이상의 구현예에 따라 정의되는 예시적 절차(600)를 도시하는 흐름도이다. 데이터베이스는 제 1 파티션 함수를 사용하여 파티셔닝된다(블록 602). 예를 들어, 리소스 관리자(120)는 이전에 논의된 바와 같이 리소스(118)와 연관된 데이터베이스(124)를 관리하도록 동작할 수 있다. 데이터베이스(124)는, 리소스 관리자(120) 또는 다른 방식에 의해 구현되는 파티션 함수(122)를 통해 정의 및/또는 관리되는 복수의 파티션(126)으로 분할될 수 있다.
그 뒤에, 데이터베이스는 리파티셔닝된다(블록 604). 리파티셔닝은 자동으로 또는 사용자의 지시로 개시될 수 있다. 리파티셔닝은 파티션의 기존 배열의 저장 용량이 이용 임계 레벨에 도달할 때 수행될 수 있다. 이러한 경우, 리파티셔닝은 더 많은 저장 용량을 추가하는 것을 수반할 수 있다. 추가적으로 또는 대안적으로, 다른 이유로, 예컨대, 본원에서 논의된 바와 같이 파티션을 리밸런싱하기 위해, 특정 할당 목표를 달성하도록 파티션 함수를 변경하기 위해, 균형을 이룬 할당으로 전환하기 위해 왜곡된 해시 함수를 실행 취소(undo)하기 위해, 리파티셔닝이 수행될 수도 있다.
리파티셔닝의 일부로서, 리파티셔닝 시에 존재하는 파티션들 내에 위치하는 데이터 엔트리에 대해 키 멤버십의 레코드가 생성되고(블록 606), 제 2 파티션 함수와 연관된 하나 이상의 새로운 파티션이 추가된다(608). 본원에 이전에 설명된 바와 같이 다양한 기법들이 사용되어 키 멤버십의 레코드를 구현할 수 있다. 예를 들어, 블룸 필터 또는 다른 압축 데이터 구조가 리파티셔닝 시에 존재하는 파티션들 내에 위치하는 데이터 엔트리와 연관된 키 값 또는 다른 적합한 식별자를 기록하는데 사용될 수 있다. 또한, 새로운 파티션이 추가되어 저장 용량을 증가시키고 파티션의 새로운 배열을 생성할 수 있다. 본원에 논의된 바와 같이, 파티션의 새로운 배열은 새로운 파티션을 설명하는 제 2 파티션 함수와 연관되고 새로운 파티션 및 오래된 파티션 둘 모두에 걸쳐 새로운 데이터를 분산시키도록 구성된다.
추가적으로, 키 멤버십의 레코드에서 발견된 키 값을 갖는 데이터에 대해서는 제 1 파티션 함수를 적용하고 키 멤버십의 레코드에서 발견되지 않은 키 값을 갖는 데이터에 대해서는 제 2 파티션 함수를 적용하도록 구성되는 복합 파티션 함수가 후속 데이터베이스 동작에 대해 정의된다(블록 610). 그 이후, 복합 파티션 함수가 적용되어 데이터베이스와 연관된 데이터 요청을 관리한다(블록 612). 일반적으로, 복합 파티션 함수는 키 멤버십의 하나의 레코드 또는 레코드들을 이용하여 데이터에 대한 키 값/식별자를 상이한 파티션 기간과 연관된 대응 파티션 함수에 매핑한다. 그 다음에 데이터 요청이 복합 파티션 함수의 적용에 의해 반환된 대응 파티션 함수에 따라 핸들링될 수 있다. 본원에서 논의된 복합 파티션 함수 접근법을 사용하는 것은 리파티셔닝 시에 존재하는 파티션들 내에 위치한 데이터 엔트리들이 제각기의 위치를 유지하도록 리파티셔닝이 수행되게 한다. 다시 말해, 오래된 데이터가 이동되지 않는다. 절차(600)와 관련하여 이용될 수 있는 복합 파티션 함수에 관한 다양한 세부사항 및 예들이 도 1 내지 도 5와 관련하여 이전에 설명되었다.
도 7은 복합 파티션 함수가 하나 이상의 구현예에 따라 파티션의 배열에 대한 요청을 라우팅하는데 사용되는 예시적 절차(700)를 도시하는 흐름도이다. 식별자의 레코드가 데이터베이스에 대한 하나 이상의 파티션의 제 1 배열과 연관된 제 1 파티션 함수에 대응하는 데이터에 대해 수립된다(블록 702). 식별자의 레코드는 본원에 설명된 블룸 필터로 구성될 수 있거나 하나 이상의 파티션의 배열에 대해 데이터의 멤버십을 표시하는데 사용될 수 있는 다른 적합 데이터 구조(예를 들어, 파티션 기간)로 구성될 수도 있다. 식별자는 본원에 설명된 바와 같이 키 값으로서 구성될 수 있지만, 문자열(string), 데이터 콘텐츠에 대한 해시 값 등을 식별하는 다른 식별자도 고려된다. 하나 이상의 파티션의 제 1 배열은 데이터베이스의 초기 구성(예를 들어, 초기 파티션 기간)에 대응한다. 추가적으로 또는 대안적으로, 하나 이상의 파티션의 제 1 배열은 이전 기간 동안 배열의 리파티셔닝에 기인할 수 있고, 이 경우 제 1 파티션 함수는 복합 함수로서 구성될 수 있다.
데이터베이스에 대한 파티션의 배열은 적어도 하나의 추가 파티션을 추가하도록 재구성되어 재구성된 배열 내에 저장 용량을 증가시킨다(블록 704). 여기서, 리파티셔닝은 전술된 바와 같이 발생하여 시스템에 추가 용량을 추가할 수 있다. 리파티셔닝은 제 1 배열보다 더 많은 파티션을 가질 수도 있는 재구성 배열을 야기한다. 따라서, 제 1 배열과 연관된 제 1 파티션 함수 및 재구성된 배열과 연관된 제 2 파티션 함수를 조합하는 복합 파티션 함수가 생성되고, 복합 파티션 함수는 식별자의 레코드를 사용하여 데이터베이스에 대한 파티션들 사이의 데이터 요청을 라우팅하기 위해 제 1 파티션 함수를 적용할지 제 2 파티션 함수를 적용할지 확인하도록 구성된다. 그 이후, 데이터 요청은 복합 파티션 함수를 사용하여 라우팅된다(블록 708). 전술된 바와 같이, 파티션의 상이한 배열과 연관된 2개 이상의 연속 파티션 기간을 설명하는 복합 파티션 함수가 생성될 수 있다. 상이한 배열은 상이한 개별 파티션 함수 및/또는 상이한 개수의 파티션과 연관될 수 있다(그러나 일부 시나리오(예를 들어, 리밸런싱)에서는 2개 이상의 기간 동안 같은 개수의 파티션이 사용될 수도 있음). 상이한 기간/배열은 또한 특정 기간 내에 데이터/요청의 멤버십을 인식하는데 이용될 수 있는 각각의 식별자 레코드와 연관될 수 있다. 적절한 파티션 함수가 그 이후 데이터/요청에 매핑되고 대응하는 파티션으로 데이터/요청을 라우팅하는데 사용된다. 복합 파티션 함수는 데이터베이스에 대한 파티션의 특정 배열에 대응하는 각각의 파티션 기간을 갖는 연속 파티션 기간과 연관된 2개 이상의 파티션 함수를 조합하도록 구성된다. 절차(700)와 함께 이용될 수 있는 복합 파티션 함수에 관한 다양한 추가 세부사항 및 예들은 도 1 내지 도 6과 관련하여 이전에 설명되었다.
일부 예시적 절차를 고려하면서, 하나 이상의 구현예로 본원에 설명된 기법들의 양태들을 구현하는데 이용될 수 있는 예시적 시스템 및 장치에 관한 논의를 고려한다.
예시적 시스템 및 장치
도 8은 본원에 설명된 다양한 기법들을 구현할 수 있는 하나 이상의 컴퓨팅 시스템 및/또는 장치를 나타내는 예시적 컴퓨팅 장치(802)를 포함하는 예시적 시스템(800)을 도시한다. 컴퓨팅 장치(802)는, 예를 들어, 서비스 제공자의 서버, 클라이언트와 연관된 장치(예를 들어, 클라이언트 장치), 온칩 시스템, 및/또는 임의의 다른 적합한 컴퓨팅 장치 또는 컴퓨팅 시스템일 수 있다.
예시된 바와 같이, 예시적 컴퓨팅 장치(802)는 프로세싱 시스템(804), 하나 이상의 컴퓨터 판독가능 매체(806), 및 서로 통신가능하게 연결되는 하나 이상의 I/O 인터페이스(808)를 포함한다. 도시되지 않지만, 컴퓨팅 장치(802)는 시스템 버스 또는 다양한 컴포넌트들을 서로 연결하는 다른 데이터 및 커맨드 전달 시스템을 더 포함할 수도 있다. 시스템 버스는 상이한 버스 구조, 예컨대, 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 범용 직렬 버스, 및/또는 프로세서 또는 임의의 다양한 버스 아키텍처를 이용하는 프로세서나 로컬 버스, 중 어느 하나 또는 조합을 포함할 수 있다. 컨트롤 및 데이터 라인과 같은 다양한 다른 예들이 또한 고려된다.
프로세싱 시스템(804)은 하드웨어를 사용하여 하나 이상의 동작을 수행하는 기능을 나타낸다. 따라서, 프로세싱 시스템(804)은 프로세서, 기능 블록 등으로 구성될 수 있는 하드웨어 요소(810)로 도시된다. 이는 주문형 집적 회로 또는 하나 이상의 반도체를 사용하여 형성된 다른 로직 장치와 같은 하드웨어 내의 구현을 포함할 수 있다. 하드웨어 요소(810)는 하드웨어 요소가 형성되는 재료 또는 그 안에 이용되는 프로세싱 메커니즘에 의해 제한되지 않는다. 예를 들어, 프로세서는 반도체(들) 및/또는 트랜지스터(예를 들어, 전자 집적 회로(IC))로 구성될 수 있다. 그러한 맥락에서, 프로세서 실행가능 명령어가 전기적으로 실행가능한 명령어일 수 있다.
컴퓨터 판독가능 매체(806)는 메모리/저장소(812)를 포함하는 것으로 도시된다. 메모리/저장소(812)는 하나 이상의 컴퓨터 판독가능 매체와 연관된 메모리/저장 용량을 나타낸다. 메모리/저장소(812)는 휘발성 매체(예컨대, 랜덤 액세스 메모리(RAM)) 및/또는 비휘발성 매체(예컨대, 판독 전용 메모리(ROM), 플래시 메모리, 광 디스크, 자기 디스크 등)를 포함할 수 있다. 메모리/저장소(812)는 고정 매체(예를 들어, RAM, ROM, 고정 하드 드라이브 등)뿐만 아니라 착탈식 매체(예를 들어, 플래시 메모리, 착탈식 하드 드라이브, 광 디스크 등)을 포함할 수 있다. 컴퓨터 판독가능 매체(806)는 아래에서 더 설명되는 바와 같이 다양한 다른 방법으로 구성될 수도 있다.
입력/출력 인터페이스(들)(808)는 사용자가 컴퓨팅 장치(802)에 커맨드 및 정보를 입력할 수 있게 하고, 또한 정보가 사용자 및/또는 다양한 입력/출력 장치를 사용하는 다른 컴포넌트나 장치에 표현되게 하는 기능을 나타낸다. 입력 장치에 관한 예는 키보드, 커서 제어 장치(예를 들어, 마우스), 마이크로폰, 스캐너, 터치 기능(예를 들어, 물리적 터치를 검출하도록 구성된 용량성 또는 다른 센서), 카메라(예를 들어, 제스처와 같은 터치를 포함하지 않는 움직임을 검출하는 적외선 주파수와 같은 비가시 파장 또는 가시 파장을 이용할 수 있음) 등을 포함한다. 출력 장치에 관한 예는 디스플레이 장치(예를 들어, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드, 촉각 응답 장치 등을 포함한다. 따라서, 컴퓨팅 장치(802)는 사용자 상호작용을 지원하기 위해 아래에서 더 설명되는 바와 같은 다양한 방법으로 구성될 수 있다.
다양한 기법들이 소프트웨어, 하드웨어 요소, 또는 프로그램 모듈에 관한 일반적 맥락으로 본원에서 설명될 수 있다. 일반적으로, 그러한 모듈은 특정 작업을 수행하거나 특정 요약 데이터 타입을 구현하는 루틴, 프로그램, 객체, 요소, 컴포넌트, 데이터 구조 등을 포함한다. 본원에서 사용되는 용어 "모듈", "기능" 및 "컴포넌트"는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 본원에 설명된 기법들의 특징은 플랫폼에 독립적이고, 이는 기법이 다양한 프로세서를 갖는 다양한 상업 컴퓨팅 플랫폼 상에서 구현될 수 있음을 의미한다.
설명된 모듈 및 기법의 구현은 컴퓨터 판독가능 매체 상에 저장되거나 컴퓨터 판독가능 매체에 걸쳐 전송될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 장치(802)에 의해 액세스될 수 있는 다양한 매체를 포함할 수 있다. 제한이 아닌 예시로써, 컴퓨터 판독가능 매체는 "컴퓨터 판독가능 저장 매체" 및 "통신 매체"를 포함할 수 있다.
"컴퓨터 판독가능 저장 매체"는 단지 신호 전송, 반송파, 또는 신호 그 자체와는 대조적으로 정보의 저장을 가능하게 하는 매체 및/또는 장치를 지칭한다. 따라서, 컴퓨터 판독가능 저장 매체는 신호 포함 매체 또는 신호 그 자체를 포함하지 않는다. 컴퓨터 판독가능 저장 매체는, 하드웨어, 예컨대, 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체 및/또는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 논리 요소/회로, 또는 다른 데이터와 같은 정보를 저장하기에 적합한 방법 도는 기법으로 구현되는 저장 장치를 포함한다. 컴퓨터 판독가능 저장 매체에 관한 예는, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기법, CD-ROM, 디지털 다목적 디스크(DVD) 또는 다른 광학 저장소, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 다른 저장 장치, 유형 매체, 또는 원하는 정보를 저장하기에 적합하고 컴퓨터에 의해 액세스될 수 있는 제조물품을 포함할 수 있으나 이로 제한되지는 않는다.
"통신 매체"는, 예컨대, 네트워크를 통해, 컴퓨팅 장치(802)의 하드웨어로 명령어를 전송하도록 구성되는 신호 포함 매체를 지칭할 수 있다. 통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 변조된 데이터 신호 내의 다른 데이터, 예컨대, 반송파, 데이터 신호, 또는 다른 전송 메커니즘을 이용할 수 있다. 신호 매체는 또한 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 신호의 특징 중 하나 이상이 신호 내의 정보를 인코딩하는 방식으로 변경되거나 설정된 신호를 의미한다. 제한이 아닌 예시로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선, 및 다른 무선 매체와 같은 무선 매체를 포함한다.
전술된 바와 같이, 하드웨어 요소(810) 및 컴퓨터 판독가능 매체(806)는 본원에 설명된 기법의 적어도 일부 양태를 구현하도록 일부 실시예들에서 이용될 수 있는 하드웨어 형태로 구현되는 명령어, 모듈, 프로그램가능 장치 로직, 및/또는 고정 장치 로직을 나타낸다. 하드웨어 요소는 집적 회로 또는 온칩 시스템의 컴포넌트, ASIC(Application-Specific Integrated Circuit: ASIC), FPGA (Field-Programmable Gate Array), CPLD (Complex Programmable Logic Device), 및 실리콘 또는 다른 하드웨어 장치 내에서의 다른 구현을 포함할 수 있다. 이러한 맥락에서, 하드웨어 요소는 하드웨어 요소에 의해 이용되는 명령어, 모듈 및/또는 로직에 의해 정의된 프로그램 작업을 수행하는 프로세싱 장치뿐만 아니라 실행을 위한 명령어를 저장하기 위해 이용되는 하드웨어 장치, 예를 들어, 전술된 컴퓨터 판독가능 저장 매체로서 동작할 수 있다.
이전의 조합은 본원에 설명된 다양한 기법 및 모듈을 구현하는데 이용될 수 있다. 따라서, 애플리케이션(112), 통신 모듈(114), 리소스 관리자(120) 및 다른 프로그램 모듈을 포함하는 소프트웨어, 하드웨어 또는 프로그램 모듈은 컴퓨터 판독 가능 저장 매체의 일부 형태로 구현된 하나 이상의 명령어 및/또는 로직으로서 구현될 수 있다. 컴퓨팅 장치(802)는 소프트웨어 및/또는 하드웨어 모듈에 대응하는 특정 명령어 및/또는 기능들을 구현하도록 구성될 수 있다. 따라서, 컴퓨팅 장치(802)에 의해 소프트웨어로서 실행 가능한 모듈로서의 모듈의 구현은, 예를 들어, 컴퓨터 판독 가능 저장 매체 및/또는 프로세싱 시스템의 하드웨어 요소(810)의 사용을 통해, 하드웨어에서 적어도 부분적으로 달성될 수 있다. 명령어 및/또는 함수는 본원에 설명된 기법들, 모듈들, 및 예들을 구현하기 위해 하나 이상의 제조 물품들(예를 들어, 하나 이상의 컴퓨팅 장치(802) 및/또는 처리 시스템(804))에 의해 실행 가능/동작가능할 수 있다.
도 8에 또한 도시되는 바와 같이, 예시적 시스템(800)은 퍼스널 컴퓨터, 텔레비전 장치, 및/또는 모바일 서비스 상에서 애플리케이션을 동작시킬 때 무결절성(seamless) 사용자 경험을 위한 유비쿼터스 환경을 가능하게 한다. 애플리케이션을 이용하거나, 비디오 게임을 하거나, 비디오를 보는 동안 하나의 장치에서 다음 장치로 전환할 때 서비스 및 애플리케이션은 공통 사용자 경험을 위해 3가지 환경 모두에서 실질적으로 유사하게 동작한다.
예시적 시스템(800)에서, 복수의 장치가 중앙 컴퓨팅 장치를 통해 상호접속된다. 중앙 컴퓨팅 장치는 복수의 장치에 대해 로컬이거나 복수의 장치로부터 원격으로 위치될 수 있다. 일 예에서, 중앙 컴퓨팅 장치는 네트워크, 인터넷, 또는 다른 데이터 통신 링크를 통해 복수의 장치에 접속되는 하나 이상의 서버 컴퓨터의 클라우드일 수 있다.
하나의 실시예에서, 이러한 상호접속 아키텍처는 복수의 장치에 걸쳐 전달될 기능이 복수의 장치의 사용자에게 공통 경험 및 무결절성 경험을 제공하게 한다. 복수의 장치의 각각은 상이한 물리적 요구사항 및 능력을 가질 수 있고, 중앙 컴퓨팅 장치는 플랫폼을 사용하여 장치에 맞춤화된 그리고 또한 모든 장치에 공통인 경험을 장치로 전달하는 것을 가능하게 한다. 하나의 실시예에서, 타겟 장치의 클래스가 생성되고 경험은 장치들의 일반적인 클래스에 맞춤화된다. 장치들의 클래스는 물리적 특징, 사용 타입, 또는 장치들의 다른 공통 특성에 의해 정의될 수 있다.
다양한 구현예들에서, 컴퓨팅 장치(802)는 다양하고 상이한 구성, 예컨대, 컴퓨터(814), 모바일(816), 및 텔레비전(818) 사용을 가정할 수 있다. 이러한 구성의 각각은 일반적으로 상이한 구성 및 능력을 가질 수도 있는 장치들을 포함하고, 따라서 컴퓨팅 장치(802)는 상이한 장치 클래스 중 하나 이상에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 장치(802)는 퍼스널 컴퓨터, 데스크톱 컴퓨터, 멀티스크린 컴퓨터, 랩톱 컴퓨터, 넷북 등을 포함하는 장치의 컴퓨터(814) 클래스로 구현될 수도 있다.
컴퓨팅 장치(802)는 또한 모바일 폰, 휴대용 음악 플레이어, 휴대용 게임 장치, 태블릿 컴퓨터, 멀티스크린 컴퓨터 등과 같은 모바일 장치를 포함하는 모바일(816) 클래스의 장치로서 구현될 수도 있다. 컴퓨팅 장치(802)는 또한 캐주얼 시청 환경에서 일반적으로 더 큰 스크린을 갖거나 연결된 장치를 포함하는 텔레비전(818) 클래스의 장치로서 구현될 수도 있다. 이러한 장치는 텔레비전, 셋톱 박스, 게임 콘솔 등이 있다.
본원에 설명된 기법들이 이러한 다양한 구성의 컴퓨팅 장치(802)에 의해 지원될 수 있으나 본원에 설명된 기법들에 관한 특정 예로 제한되지는 않는다. 이는 컴퓨팅 장치(802) 상의 리소스 관리자(120)의 포함을 통해 예시된다. 리소스 관리자(120)의 기능 및 다른 모듈은 아래에 설명되는 바와 같이 예컨대, 플랫폼(822)을 거쳐 "클라우드"(820)를 통해, 분산 시스템의 사용을 통해 전부 또는 부분적으로 구현될 수도 있다.
클라우드(820)는 리소스(824)를 위한 플랫폼(822)을 포함하고/하거나 대표한다. 플랫폼(822)은 하드웨어(예를 들어, 서버)의 기본 기능 및 클라우드(820)의 소프트웨어 리소스를 추상화한다. 리소스(824)는 컴퓨터 프로세싱이 컴퓨팅 장치(802)로부터 원격에 있는 서버 상에서 실행되는 동안 이용될 수 있는 애플리케이션 및/또는 데이터를 포함할 수 있다. 리소스(824)는 또한 인터넷 및/또는 가입자 네트워크, 예컨대, 셀룰러 또는 Wi-Fi 네트워크를 통해 제공되는 서비스를 포함할 수 있다.
플랫폼(822)은 컴퓨팅 장치(802)를 다른 컴퓨팅 장치들과 접속시키는 리소스 및 함수를 추상화할 수 있다. 플랫폼(822)은 또한 플랫폼(822)을 통해 구현되는 리소스(824)에 대해 요구된 요구에 대응하는 스케일 레벨을 제공하도록 리소스의 스케일링을 추상화하는 역할을 할 수도 있다. 따라서, 상호접속된 장치 실시예에서, 본원에 설명된 기능의 구현은 시스템(800) 전체에 걸쳐 분산될 수도 있다. 예를 들어, 기능은 컴퓨팅 장치(802) 상에서뿐만 아니라 클라우드(820)의 기능을 추상화하는 플랫폼(822)을 통해 부분적으로 구현될 수도 있다.
예시적 구현예
본원에 설명된 복합 파티션 함수에 관한 예시적 구현예들은 다음의 하나 이상의 예들 중 하나 또는 임의의 조합을 포함하나 이로 제한되지 않는다.
컴퓨팅 장치에 의해 구현되는 방법으로서, 상기 방법은, 제 1 파티션 함수(partition function)를 사용하여 데이터베이스를 파티셔닝하는 단계와, 상기 데이터베이스를 리파티셔닝하는 단계를 포함하되, 상기 리파티셔닝하는 단계는, 리파티셔닝시 존재하는 파티션에 위치하는 데이터 엔트리에 대한 키 멤버십의 레코드를 생성하는 것과, 제 2 파티션 함수와 연관된 하나 이상의 새로운 파티션을 추가하는 것과, 후속 데이터베이스 동작을 위한 복합 파티션 함수(composite partition function)를 정의하는 것에 의해 수행되고, 상기 복합 파티션 함수는, 상기 키 멤버십의 레코드에서 발견된 키 값을 갖는 데이터에 대해서는 상기 제 1 파티션 함수를 적용하고, 상기 키 멤버십의 레코드에서 발견되지 않은 키 값을 갖는 데이터에 대해서는 상기 제 2 파티션 함수를 적용하도록 구성된다.
전술된 방법에서, 상기 리파티셔닝은 상기 리파티셔닝 시에 존재하는 파티션 내에 위치하는 상기 데이터 엔트리가 각자의 위치를 유지하도록 수행된다.
전술된 방법에서, 상기 키 멤버십의 레코드는 리파티셔닝 시에 존재하는 파티션 내에 위치하는 데이터 엔트리와 연관된 키 값을 기록(record)하도록 구성된다.
전술된 방법에서, 상기 키 멤버십의 레코드는, 리파티셔닝 시에 상기 데이터베이스 내에 존재하는 데이터 엔트리에 대응하는 키를 식별하도록 구성된 압축 데이터 구조를 포함한다.
전술된 방법에서, 상기 키 멤버십의 레코드는 블룸 필터(Bloom filter)를 포함한다.
상기 복합 파티션 함수는, 연속 파티션 기간(successive partition eras)과 연관된 2개 이상의 파티션 함수를 조합하도록 구성되고, 각 파티션 기간은 상기 데이터베이스에 대한 파티션의 특정 배열(arrangement)에 대응한다.
전술된 방법에서, 상기 제 1 파티션 함수 및 상기 제 2 파티션 함수는 데이터 요청에 대한 키 값에 적용될 때 상기 키 값에 대응하는 상기 데이터베이스의 파티션을 식별하는 데이터를 반환하는 해시 함수로서 구성된다.
전술된 방법에서, 상기 제 1 파티션 함수는 추가 저장 용량을 추가하기 위해 상기 데이터베이스의 이전 리파티셔닝에 대해 수립된 이전 복합 함수를 포함하고, 정의되는 상기 복합 파티션 함수는 상기 키 멤버십의 레코드에서 발견된 키 값을 갖는 데이터에 대해서는 상기 이전 복합 함수를 적용하고 다른 데이터에 대해서는 상기 제 2 파티션 함수를 적용하도록 구성된다.
전술된 방법에서, 상기 조합된 파티션 함수는 새로운 파티션 상에 새로운 데이터 엔트리의 배치에 대해 데이터의 할당을 바이어싱하여 상기 데이터베이스의 파티션에 걸쳐 데이터의 분포의 균형을 맞추도록 구성된다.
전술된 방법에서, 상기 조합된 파티션 함수는 새로운 데이터 엔트리에 대한 적어도 일부 키 값을 상기 키 멤버십의 레코드에서 발견된 것으로 잘못 인식하여(misrecognize), 잘못 인식된 키 값과 연관된 데이터 엔트리가 상기 리파티셔닝 시 존재하는 파티션에 할당되고 지속적으로 위치한다.
컴퓨팅 장치로서, 상기 컴퓨팅 장치는, 프로세싱 시스템과, 상기 프로세싱 시스템에 의해 실행될 때, 저장 용량을 증가시키기 위해 데이터베이스를 리파티셔닝하는 동작을 수행하는 하나 이상의 모듈을 포함하되, 상기 동작은, 리파티셔닝 시 존재하는 상기 데이터베이스의 파티션에 위치하는 데이터 엔트리에 대한 키 멤버십의 레코드를 생성하는 것 - 상기 리파티셔닝 시 존재하는 데이터베이스의 파티션은 제 1 파티션 함수와 연관됨 - 과, 제 2 파티션 함수와 연관된 새로운 파티션을 추가하는 것과, 후속 데이터베이스 요청의 핸들링을 위한 복합 파티션 함수를 정의하는 것을 포함하고, 상기 복합 파티션 함수는, 상기 키 멤버십의 레코드에서 발견된 키 값을 포함하는 데이터 요청에 대해서는 상기 제 1 파티션 함수를 적용하고, 상기 키 멤버십의 레코드에서 발견되지 않은 키 값을 포함하는 데이터 요청에 대해서는 상기 제 2 파티션 함수를 적용하도록 구성됨으로써, 상기 리파티셔닝 시에 존재하는 파티션 내에 위치하는 상기 데이터 엔트리가 상기 리파티셔닝 시에 존재하는 상기 파티션 내에서 각자의 위치를 유지한다.
상기 컴퓨팅 장치에서, 상기 키 멤버십의 레코드는 상기 리파티셔닝 시에 존재하는 데이터 엔트리와 연관된 키에 대한 비트 값 세트를 갖는 블룸 필터로서 구성되어, 상기 블룸 필터를 통해 상기 키에 대한 멤버십을 나타낸다.
상기 컴퓨팅 장치에서, 상기 블룸 필터는 리파티셔닝 후에 생성된 데이터 엔트리의 적어도 일부가 상기 제 1 파티션 함수를 사용하여 잘못 인식되고 핸들링되게 하는 구성가능한 허용 오차(configurable tolerance)에 따라 오탐 오류(false positive errors) - 상기 오탐 오류는 일관적이어서 잘못 인식된 데이터 엔트리가 상기 제 1 파티션 함수를 사용하여 신뢰성 있게 위치됨 - 를 생성하고, 상기 블룸 필터의 압축 정도(a degree of compactness)는 상기 구성가능한 허용 오차에 의존한다.
상기 컴퓨팅 장치에서, 상기 복합 파티션 함수는 상기 데이터베이스를 리파티셔닝하는 복수의 이전 동작과 연관된 복수의 개별 파티션 함수와 상기 제 2 파티션 함수를 조합하도록 구성된다.
상기 컴퓨팅 장치에서, 상기 제 2 파티션 함수는 상기 리파티셔닝 시에 존재하는 상기 데이터베이스의 파티션 및 상기 새로운 파티션에 걸쳐 데이터를 할당하도록 구성된다.
컴퓨팅 장치에 의해 구현되는 방법으로서, 상기 방법은, 데이터베이스에 대한 하나 이상의 파티션의 제 1 배열과 연관된 제 1 파티션 함수에 대응하는 데이터에 대한 식별자의 레코드를 수립하는 단계와, 적어도 하나의 추가 파티션을 추가하도록 상기 데이터베이스에 대한 파티션의 배열을 재구성하여 재구성된 배열 내의 저장 용량을 증가시키는 단계와, 상기 제 1 배열과 연관된 상기 제 1 파티션 함수과 상기 재구성된 배열과 연관된 제 2 파티션 함수를 조합하는 복합 파티션 함수를 생성하는 단계 - 상기 복합 파티션 함수는 상기 식별자의 레코드를 사용하여 상기 데이터베이스에 대한 파티션들 사이에서 데이터 요청을 라우팅하기 위해 상기 제 1 파티션 함수를 적용할지 상기 제 2 파티션 함수를 적용할지 확인하도록 구성됨 - 와, 상기 복합 파티션 함수를 사용하여 데이터 요청을 라우팅하는 단계를 포함한다.
전술된 방법에서, 상기 복합 파티션 함수를 사용하여 데이터 요청을 라우팅하는 단계는, 상기 식별자의 레코드를 사용하여 상기 데이터 요청과 연관된 식별자가 상기 식별자의 레코드에 포함되는지 여부를 확인하는 단계와, 상기 식별자가 포함되는 경우, 상기 제 1 파티션 함수를 사용하여 상기 데이터 요청을 라우팅하는 단계, 또는 상기 식별자가 포함되지 않는 경우, 상기 제 2 파티션 함수를 사용하여 상기 데이터 요청을 라우팅하는 단계를 포함한다.
전술된 방법에서, 상기 데이터 요청은 상기 데이터베이스의 파티션에서 데이터 엔트리를 액세스, 추가, 또는 수정하기 위한 요청을 포함한다.
전술된 방법에서, 상기 재구성 이전에 존재하는 데이터 엔트리는 상기 재구성의 결과로서 상이한 위치로 이동되지 않는다.
전술된 방법에서, 상기 제 2 파티션 함수는 왜곡 팩터를 통합하여 상기 제 1 배열에 존재하는 하나 이상의 파티션 보다 상기 재구성된 배열에 대해 추가된 적어도 하나의 추가 파티션에 대해 더 자주 새로운 데이터를 할당하게 하도록 구성된 수정된 해시 함수를 포함한다.
청구대상이 구조적 특징 및/또는 방법적 동작에 특정한 언어로 설명되었지만, 첨부된 특허청구범위에 정의된 청구대상은 설명된 특정한 특징 또는 동작으로 반드시 제한되는 것은 아님을 이해해야 한다. 오히려, 특정한 특징 및 동작은 특허청구범위의 청구 대상을 구현하는 예시적 형태로 설명된다.

Claims (20)

  1. 장치로서,
    프로세서와,
    상기 프로세서와 통신하며, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가 저장 용량을 증가시키기 위해 데이터베이스를 리파티셔닝하는 동작을 수행하도록 제어하게 하는 실행가능한 명령어를 포함하는 메모리를 포함하되,
    상기 동작은,
    제1 파티션 함수와 연관된 제1 파티션에서, 복수의 제 1 데이터 엔트리에 각각 대응하는 복수의 제1 키의 제1 멤버십 레코드를 생성하는 것 - 상기 제 1 데이터 엔트리는 새로운 파티션을 추가하기 전에 존재하는 상기 데이터베이스를 나타냄 - 과,
    상기 제 1 파티션의 데이터베이스에, 제 2 파티션 함수와 연관된 제 2 파티션을 추가하는 것과,
    상기 제 2 파티션을 추가하기 전에 상기 제 1 파티션에 존재했던 상기 제 1 데이터 엔트리가 상기 제 1 파티션 내에서 각자의 위치를 유지하도록 상기 데이터베이스에 대한 복합 파티션 함수를 구현하는 것을 포함하고,
    상기 복합 파티션 함수를 구현할 때, 상기 장치는,
    상기 데이터베이스에서 제 1 요청된 데이터 엔트리에 대한 제 1 요청을 수신하고,
    상기 제 1 멤버십 레코드가 상기 제1 요청된 데이터 엔트리에 대응하는 제 1 키를 포함하면 상기 제1 파티션에서 상기 제 1 요청된 데이터 엔트리의 위치를 찾기 위해 상기 제 1 파티션 함수를 적용하며,
    상기 제 1 멤버십 레코드가 상기 제 1 요청된 데이터 엔트리에 대응하는 제 1 키를 포함하지 않으면 상기 제 2 파티션에서 상기 제 1 요청된 데이터 엔트리의 위치를 찾기 위해 상기 제 2 파티션 함수를 적용하는
    동작을 수행하도록 제어되는
    장치.
  2. 제1항에 있어서,
    상기 제 1 파티션 함수는 상기 복수의 제 1 키를 상기 제 1 파티션에 매핑하는 것을 포함하고, 상기 제 2 파티션 함수는 복수의 제 2 키를 상기 제 2 파티션에 매핑하는 것을 포함하며, 상기 복수의 제 2 키는 상기 제 2 파티션에 추가된 복수의 제 2 데이터 엔트리에 각각 대응하는
    장치.
  3. 제1항에 있어서,
    상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가,
    상기 제 2 파티션에 추가된 복수의 제 2 데이터 엔트리에 각각 대응하는 복수의 제 2 키의 제 2 멤버십 레코드를 생성하고,
    상기 제 1 및 제 2 파티션의 데이터베이스에, 제 3 파티션 함수와 연관된 제 3 파티션을 추가하며,
    상기 데이터베이스에서 제 2 요청된 데이터 엔트리에 대한 제 2 요청을 수신하고,
    상기 제 1 멤버십 레코드가 상기 제 2 요청된 데이터 엔트리에 대응하는 제 1 키를 포함하면 상기 제 1 파티션 함수를 적용하며,
    상기 제 2 멤버십 레코드가 상기 제 2 요청된 데이터 엔트리에 대응하는 제 2 키를 포함하면 상기 제 2 파티션 함수를 적용하고,
    상기 제 1 및 제 2 멤버십 레코드가 상기 제 2 요청된 데이터 엔트리에 대응하는 어떠한 키도 포함하지 않으면 상기 제 3 파티션 함수를 적용하는
    기능을 수행하도록 제어하게 하는 명령어를 더 포함하는
    장치.
  4. 제3항에 있어서,
    상기 제 3 파티션 함수는 복수의 제 3 키를 상기 제 3 파티션에 매핑하는 것을 포함하고, 상기 복수의 제 3 키는 상기 제 3 파티션에 추가된 복수의 제 3 데이터 엔트리에 각각 대응하는
    장치.
  5. 제1항에 있어서,
    상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가 상기 제 1 파티션과 상기 제 2 파티션 사이에서 상기 데이터베이스에 추가된 새로운 데이터 엔트리의 할당을 리밸런싱(rebalancing)하는 기능을 수행하도록 제어하게 하는 명령어를 더 포함하는
    장치.
  6. 제5항에 있어서,
    상기 새로운 데이터 엔트리의 할당을 리밸런싱하기 위해, 상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가 상기 새로운 데이터 엔트리를 다른 파티션보다 더 빈번하게 상기 제 1 파티션과 상기 제 2 파티션 중 하나에 불균등하게 할당하도록 스큐 팩터에 기초하여 상기 새로운 데이터 엔트리를 분배하는 기능을 수행하도록 제어하게 하는 명령어를 더 포함하는
    장치.
  7. 제6항에 있어서,
    상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가 상기 제1 및 제2 파티션의 상대적 부하에 기초하여 상기 스큐 팩터를 동적으로 변경하는 기능을 수행하도록 제어하게 하는 명령어를 더 포함하는
    장치.
  8. 제5항에 있어서,
    상기 새로운 데이터 엔트리의 할당을 리밸런싱하기 위해, 상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가,
    상기 새로운 데이터 엔트리를 제 1 간격으로 상기 제 1 파티션에 할당하고,
    상기 제 1 간격과 상이한 제 2 간격으로 상기 제 2 파티션에 상기 새로운 데이터 엔트리를 할당하는
    기능을 수행하도록 제어하게 하는 명령어를 더 포함하는
    장치.
  9. 데이터베이스를 리파티셔닝(repartitioning)하는 방법으로서,
    제1 파티션 함수와 연관된 제1 파티션에서, 복수의 제 1 데이터 엔트리에 각각 대응하는 복수의 제1 키의 제1 멤버십 레코드를 생성하는 단계 - 상기 제 1 데이터 엔트리는 새로운 파티션을 추가하기 전에 존재하는 상기 데이터베이스를 나타냄 - 와,
    상기 제 1 파티션의 데이터베이스에, 제 2 파티션 함수와 연관된 제 2 파티션을 추가하는 단계와,
    상기 제 2 파티션을 추가하기 전에 상기 제 1 파티션에 존재했던 상기 제 1 데이터 엔트리가 상기 제 1 파티션 내에서 각자의 위치를 유지하도록 상기 데이터베이스에 대한 복합 파티션 함수를 구현하는 단계를 포함하고,
    상기 복합 파티션 함수를 구현하는 단계는,
    상기 데이터베이스에서 제 1 요청된 데이터 엔트리에 대한 제 1 요청을 수신하는 단계와,
    상기 제 1 멤버십 레코드가 상기 제1 요청된 데이터 엔트리에 대응하는 제 1 키를 포함하면 상기 제1 파티션에서 상기 제 1 요청된 데이터 엔트리의 위치를 찾기 위해 상기 제 1 파티션 함수를 적용하는 단계와,
    상기 제 1 멤버십 레코드가 상기 제 1 요청된 데이터 엔트리에 대응하는 제 1 키를 포함하지 않으면 상기 제 2 파티션에서 상기 제 1 요청된 데이터 엔트리의 위치를 찾기 위해 상기 제 2 파티션 함수를 적용하는 단계를 포함하는
    방법.
  10. 제9항에 있어서,
    상기 제 1 파티션 함수는 상기 복수의 제 1 키를 상기 제 1 파티션에 매핑하는 것을 포함하고, 상기 제 2 파티션 함수는 복수의 제 2 키를 상기 제 2 파티션에 매핑하는 것을 포함하며, 상기 복수의 제 2 키는 상기 제 2 파티션에 추가된 복수의 제 2 데이터 엔트리에 각각 대응하는
    방법.
  11. 제9항에 있어서,
    상기 제 2 파티션에 추가된 복수의 제 2 데이터 엔트리에 각각 대응하는 복수의 제 2 키의 제 2 멤버십 레코드를 생성하는 단계와,
    상기 제 1 및 제 2 파티션의 데이터베이스에, 제 3 파티션 함수와 연관된 제 3 파티션을 추가하는 단계와,
    상기 데이터베이스에서 제 2 요청된 데이터 엔트리에 대한 제 2 요청을 수신하는 단계와,
    상기 제 1 멤버십 레코드가 상기 제 2 요청된 데이터 엔트리에 대응하는 제 1 키를 포함하면 상기 제 1 파티션 함수를 적용하는 단계와,
    상기 제 2 멤버십 레코드가 상기 제 2 요청된 데이터 엔트리에 대응하는 제 2 키를 포함하면 상기 제 2 파티션 함수를 적용하는 단계와,
    상기 제 1 및 제 2 멤버십 레코드가 상기 제 2 요청된 데이터 엔트리에 대응하는 어떠한 키도 포함하지 않으면 상기 제 3 파티션 함수를 적용하는 단계를 더 포함하는
    방법.
  12. 제11항에 있어서,
    상기 제 3 파티션 함수는 복수의 제 3 키를 상기 제 3 파티션에 매핑하는 것을 포함하고, 상기 복수의 제 3 키는 상기 제 3 파티션에 추가된 복수의 제 3 데이터 엔트리에 각각 대응하는
    방법.
  13. 제9항에 있어서,
    상기 제 1 파티션과 상기 제 2 파티션 사이에서 상기 데이터베이스에 추가된 새로운 데이터 엔트리의 할당을 리밸런싱하는 단계를 더 포함하는
    방법.
  14. 제13항에 있어서,
    상기 새로운 데이터 엔트리의 할당을 리밸런싱하는 단계는 상기 새로운 데이터 엔트리를 다른 파티션보다 더 빈번하게 상기 제 1 파티션과 상기 제 2 파티션 중 하나에 불균등하게 할당하도록 스큐 팩터에 기초하여 상기 새로운 데이터 엔트리를 분배하는 단계를 포함하는
    방법.
  15. 제14항에 있어서,
    상기 제1 및 제2 파티션의 상대적 부하에 기초하여 상기 스큐 팩터를 동적으로 변경하는 단계를 더 포함하는
    방법.
  16. 제13항에 있어서,
    상기 새로운 데이터 엔트리의 할당을 리밸런싱하는 단계는,
    상기 새로운 데이터 엔트리를 제 1 간격으로 상기 제 1 파티션에 할당하는 단계와,
    상기 제 1 간격과 상이한 제 2 간격으로 상기 제 2 파티션에 상기 새로운 데이터 엔트리를 할당하는 단계를 포함하는
    방법.
  17. 장치로서,
    프로세서와,
    상기 프로세서와 통신하며, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가 제 2 파티션을 추가하기 전에 데이터베이스의 제 1 파티션에 존재했던 데이터 엔트리가 상기 제 1 파티션 내에서 각자의 위치를 유지하도록 상기 데이터베이스에 대한 복합 파티션 함수를 구현하는 기능을 수행하도록 제어하게 하는 실행가능한 명령어를 포함하는 메모리를 포함하되,
    상기 기능은,
    상기 제1 파티션에서, 복수의 데이터 엔트리에 각각 대응하는 복수의 키의 멤버십 레코드를 생성하는 것 - 상기 데이터 엔트리는 상기 제 2 파티션을 추가하기 전에 존재하는 상기 데이터베이스를 나타냄 - 과,
    상기 데이터베이스에서 데이터 엔트리에 대한 요청을 수신하는 것과,
    상기 요청된 데이터 엔트리에 대응하는 키가 상기 멤버십 레코드에서 발견되는지 여부를 판정하는 것과,
    상기 요청된 데이터 엔트리에 대응하는 키가 상기 멤버십 레코드에서 발견되는 것으로 판정되면 상기 요청된 데이터 엔트리의 위치를 찾기 위해 상기 제 1 파티션을 검색하는 것과,
    상기 요청된 데이터 엔트리에 대응하는 키가 상기 멤버십 레코드에서 발견되지 않는 것으로 판정되면 상기 요청된 데이터 엔트리의 위치를 찾기 위해 상기 제 2 파티션을 검색하는 것을 포함하는
    장치.
  18. 제17항에 있어서,
    상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가 상기 제 1 파티션과 상기 제 2 파티션 사이에서 상기 데이터베이스에 추가된 새로운 데이터 엔트리의 할당을 리밸런싱하는 기능을 수행하도록 제어하게 하는 명령어를 더 포함하는
    장치.
  19. 제18항에 있어서,
    상기 새로운 데이터 엔트리의 할당을 리밸런싱하기 위해, 상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가 상기 새로운 데이터 엔트리를 다른 파티션보다 더 빈번하게 상기 제 1 파티션과 상기 제 2 파티션 중 하나에 불균등하게 할당하도록 스큐 팩터에 기초하여 상기 새로운 데이터 엔트리를 분배하는 기능을 수행하도록 제어하게 하는 명령어를 더 포함하고,
    상기 스큐 팩터는 상기 제1 및 제2 파티션의 상대적 부하에 기초하여 동적으로 변경되는
    장치.
  20. 제18항에 있어서,
    상기 새로운 데이터 엔트리의 할당을 리밸런싱하기 위해, 상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 상기 장치가,
    상기 새로운 데이터 엔트리를 제 1 간격으로 상기 제 1 파티션에 할당하고,
    상기 제 1 간격과 상이한 제 2 간격으로 상기 제 2 파티션에 상기 새로운 데이터 엔트리를 할당하는
    기능을 수행하도록 제어하게 하는 명령어를 더 포함하는
    장치.
KR1020227008636A 2014-10-21 2015-10-14 데이터 저장소를 파티셔닝하고 리밸런싱하는 기법 KR102486243B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/519,952 US9875263B2 (en) 2014-10-21 2014-10-21 Composite partition functions
US14/519,952 2014-10-21
PCT/US2015/055413 WO2016064629A1 (en) 2014-10-21 2015-10-14 Composite partition functions
KR1020177010836A KR102376713B1 (ko) 2014-10-21 2015-10-14 복합 파티션 함수 제공 기법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177010836A Division KR102376713B1 (ko) 2014-10-21 2015-10-14 복합 파티션 함수 제공 기법

Publications (2)

Publication Number Publication Date
KR20220038827A true KR20220038827A (ko) 2022-03-29
KR102486243B1 KR102486243B1 (ko) 2023-01-09

Family

ID=54352513

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227008636A KR102486243B1 (ko) 2014-10-21 2015-10-14 데이터 저장소를 파티셔닝하고 리밸런싱하는 기법
KR1020177010836A KR102376713B1 (ko) 2014-10-21 2015-10-14 복합 파티션 함수 제공 기법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177010836A KR102376713B1 (ko) 2014-10-21 2015-10-14 복합 파티션 함수 제공 기법

Country Status (11)

Country Link
US (2) US9875263B2 (ko)
EP (1) EP3210134B1 (ko)
JP (1) JP6588977B2 (ko)
KR (2) KR102486243B1 (ko)
CN (1) CN107077497B (ko)
AU (1) AU2015336357B2 (ko)
BR (1) BR112017005646B8 (ko)
CA (1) CA2964461C (ko)
MX (1) MX2017005095A (ko)
RU (1) RU2701124C2 (ko)
WO (1) WO2016064629A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11941002B1 (en) 2022-03-31 2024-03-26 Amazon Technologies, Inc. Dynamically sort data

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372574B1 (en) * 2014-06-17 2019-08-06 Amazon Technologies, Inc. Skew detector for data storage system
US9875263B2 (en) 2014-10-21 2018-01-23 Microsoft Technology Licensing, Llc Composite partition functions
CA2941163C (en) 2014-11-05 2019-04-16 Huawei Technologies Co., Ltd. Data processing method and apparatus
US11005950B1 (en) * 2015-02-10 2021-05-11 Marvell Asia Pte, Ltd. Optimized bloom filter
US10372700B2 (en) * 2015-03-30 2019-08-06 International Business Machines Corporation Data filtering using a plurality of hardware accelerators
US20170371910A1 (en) * 2016-06-28 2017-12-28 Microsoft Technology Licensing, Llc Real-time shard rebalancing for versioned entity repository
US11138178B2 (en) * 2016-11-10 2021-10-05 Futurewei Technologies, Inc. Separation of computation from storage in database for better elasticity
US10503714B2 (en) 2017-06-02 2019-12-10 Facebook, Inc. Data placement and sharding
US10585915B2 (en) * 2017-10-25 2020-03-10 International Business Machines Corporation Database sharding
US11126608B2 (en) * 2018-01-31 2021-09-21 Salesforce.Com, Inc. Techniques and architectures for partition mapping in a multi-node computing environment
US10732889B2 (en) * 2018-03-12 2020-08-04 Dell Products, L.P. Information handling system with multi-key secure erase of distributed namespace
US11080255B2 (en) * 2018-07-09 2021-08-03 Oracle International Corporation Space-efficient bookkeeping for database applications
US20200142591A1 (en) * 2018-11-07 2020-05-07 Kaminario Technologies Ltd. Snapshot managing system
CN111767268B (zh) * 2020-06-23 2023-12-01 陕西合友网络科技有限公司 数据库表分区方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002007365A (ja) * 2001-04-27 2002-01-11 Hitachi Ltd データベース分割管理方法および並列データベースシステム
JP2009181546A (ja) * 2008-02-01 2009-08-13 Toshiba Corp コーディネータサーバ、データ割当方法及びプログラム
KR20140055489A (ko) * 2012-10-31 2014-05-09 삼성에스디에스 주식회사 메타데이터 및 트랜잭션 발생량을 고려한 동적 샤딩 기능을 지원하는 분산 데이터베이스 관리 방법 및 그 구성 노드
US20140156666A1 (en) * 2012-11-30 2014-06-05 Futurewei Technologies, Inc. Method for Automated Scaling of a Massive Parallel Processing (MPP) Database
US20140195566A1 (en) * 2005-07-28 2014-07-10 Gopivotal, Inc. Distributed data management system
US8793250B1 (en) * 2010-12-17 2014-07-29 Amazon Technologies, Inc. Flexible partitioning of data

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6125370A (en) * 1998-04-01 2000-09-26 International Business Machines Corporation Repartitioning data
US6269375B1 (en) * 1998-04-01 2001-07-31 International Business Machines Corporation Rebalancing partitioned data
US6321238B1 (en) * 1998-12-28 2001-11-20 Oracle Corporation Hybrid shared nothing/shared disk database system
US7080101B1 (en) 2000-12-01 2006-07-18 Ncr Corp. Method and apparatus for partitioning data for storage in a database
US7266823B2 (en) * 2002-02-21 2007-09-04 International Business Machines Corporation Apparatus and method of dynamically repartitioning a computer system in response to partition workloads
US7249135B2 (en) * 2004-05-14 2007-07-24 Microsoft Corporation Method and system for schema matching of web databases
US20060206507A1 (en) * 2005-02-16 2006-09-14 Dahbour Ziyad M Hierarchal data management
US7779010B2 (en) 2007-12-12 2010-08-17 International Business Machines Corporation Repartitioning live data
US7774311B2 (en) * 2008-07-17 2010-08-10 International Business Machines Corporation Method and apparatus of distributing data in partioned databases operating on a shared-nothing architecture
US8078825B2 (en) 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US20100312749A1 (en) 2009-06-04 2010-12-09 Microsoft Corporation Scalable lookup service for distributed database
US8676753B2 (en) * 2009-10-26 2014-03-18 Amazon Technologies, Inc. Monitoring of replicated data instances
US8341376B1 (en) 2009-12-09 2012-12-25 Amdocs Software Systems Limited System, method, and computer program for repartitioning data based on access of the data
US8935232B2 (en) * 2010-06-04 2015-01-13 Yale University Query execution systems and methods
CN101916261B (zh) 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库***的数据分区方法
US8549004B2 (en) 2010-09-30 2013-10-01 Hewlett-Packard Development Company, L.P. Estimation of unique database values
US8560584B2 (en) 2010-12-15 2013-10-15 Teradata Us, Inc. Database partition management
US8554762B1 (en) * 2010-12-28 2013-10-08 Amazon Technologies, Inc. Data replication framework
US20130046793A1 (en) * 2011-08-19 2013-02-21 Qualcomm Incorporated Fast matching of image features using multi-dimensional tree data structures
US8775464B2 (en) * 2012-10-17 2014-07-08 Brian J. Bulkowski Method and system of mapreduce implementations on indexed datasets in a distributed database environment
CN103336792B (zh) * 2013-06-07 2016-11-23 华为技术有限公司 数据分区方法和装置
US9870416B2 (en) * 2014-04-24 2018-01-16 International Business Machines Corporation Method for rebalancing data partitions
US9875263B2 (en) 2014-10-21 2018-01-23 Microsoft Technology Licensing, Llc Composite partition functions

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002007365A (ja) * 2001-04-27 2002-01-11 Hitachi Ltd データベース分割管理方法および並列データベースシステム
US20140195566A1 (en) * 2005-07-28 2014-07-10 Gopivotal, Inc. Distributed data management system
JP2009181546A (ja) * 2008-02-01 2009-08-13 Toshiba Corp コーディネータサーバ、データ割当方法及びプログラム
US8793250B1 (en) * 2010-12-17 2014-07-29 Amazon Technologies, Inc. Flexible partitioning of data
KR20140055489A (ko) * 2012-10-31 2014-05-09 삼성에스디에스 주식회사 메타데이터 및 트랜잭션 발생량을 고려한 동적 샤딩 기능을 지원하는 분산 데이터베이스 관리 방법 및 그 구성 노드
US20140156666A1 (en) * 2012-11-30 2014-06-05 Futurewei Technologies, Inc. Method for Automated Scaling of a Massive Parallel Processing (MPP) Database

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11941002B1 (en) 2022-03-31 2024-03-26 Amazon Technologies, Inc. Dynamically sort data

Also Published As

Publication number Publication date
RU2017113620A (ru) 2018-10-23
CN107077497B (zh) 2020-07-28
MX2017005095A (es) 2017-07-05
AU2015336357A1 (en) 2017-04-13
US10360199B2 (en) 2019-07-23
AU2015336357B2 (en) 2020-07-16
BR112017005646B1 (pt) 2023-05-02
RU2017113620A3 (ko) 2019-04-22
WO2016064629A1 (en) 2016-04-28
BR112017005646A2 (pt) 2017-12-12
EP3210134B1 (en) 2020-01-01
KR20170073605A (ko) 2017-06-28
RU2701124C2 (ru) 2019-09-24
JP2017538194A (ja) 2017-12-21
US20160110391A1 (en) 2016-04-21
JP6588977B2 (ja) 2019-10-09
KR102486243B1 (ko) 2023-01-09
US20180144009A1 (en) 2018-05-24
EP3210134A1 (en) 2017-08-30
CA2964461C (en) 2023-02-28
CN107077497A (zh) 2017-08-18
BR112017005646B8 (pt) 2023-10-24
US9875263B2 (en) 2018-01-23
CA2964461A1 (en) 2016-04-28
KR102376713B1 (ko) 2022-03-18

Similar Documents

Publication Publication Date Title
KR102376713B1 (ko) 복합 파티션 함수 제공 기법
US11296940B2 (en) Centralized configuration data in a distributed file system
US11212371B2 (en) Operation request allocation methods, apparatuses, and devices
US9280370B2 (en) System structure management device, system structure management method, and program
US20160149766A1 (en) Cloud based management of storage systems
US10656972B2 (en) Managing idempotent operations while interacting with a system of record
US9483493B2 (en) Method and system for accessing a distributed file system
EP3572995B1 (en) Case management by a state machine
US10341181B2 (en) Method and apparatus to allow dynamic changes of a replica network configuration in distributed systems
US11546307B2 (en) Method to implement multi-tenant/shared Redis cluster using envoy
CN113806300B (zh) 数据存储方法、***、装置、设备及存储介质
US8903871B2 (en) Dynamic management of log persistence
US9449036B2 (en) Handling an increase in transactional data without requiring relocation of preexisting data between shards
CN113127430A (zh) 镜像信息处理方法、装置、计算机可读介质及电子设备
US20170364293A1 (en) Method and apparatus for data processing
US11853560B2 (en) Conditional role decision based on source environments
US11082492B2 (en) System and method for dynamic backup sessions
CN108011908B (zh) 资源操作方法和装置

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant