광고 문안 직원 참고:이 문서는 Azurecat 구름과 숀 Tinline-존스와 크리스 클레이튼의 엔터프라이즈 엔지니어링 그룹의 수석 프로젝트 매니저에 의해 작성 됩니다.
클라우드 서비스 기본 응용 프로그램, 일컬어 "csfundamentals," 데이터베이스에서 지 원하는 푸른 서비스를 구축 하는 방법을 보여 줍니다. 로깅, 구성, 및 데이터 액세스를 구현 아키텍처 및 재사용 가능한 구성 요소를 설명 하는 사용 시나리오 포함 됩니다. 코드 베이스는 azure, Windows Azure 고객 컨설팅 팀에서에서 프로덕션 배포에 따라 확장 가능한, 사용할 수 있는 서비스를 제공 하기 위한 모범 사례 드릴 다운 설계 되었습니다.
대부분의 회사는 현재 그들의 클라우드 계획에 노력 하지만 비용 절감 극적으로 민첩성을 증가 하 고 스케일링 등 특정 솔루션에 대 한 비즈니스 드라이버 다. "수직 확장성" 전략 "수평 확장성"로 대체 되었습니다 솔루션 "클라우드 규모" 달성 하려고 할 때. 전 공동으로 특정 작업을 완료 하는 컴퓨터의 수를 증가 하는 하드웨어를 업그레이드 함으로써 용량을 향상 시킵니다. 이 트레이드 오프의 좋은 예, 동일한 웹 사이트 콘텐츠를 제공 하는 많은 서버와 웹 팜을 만드는 또는 부하를 처리 하려고 하나의 시체를가지고 선택 이다.
대부분의 사람들이 계산 노드에서이 수평 확장성 계획을 구현 하지만 더 복잡 하 고 잠재적으로 더 중요 한 상태 계층 구조, 관계형 데이터베이스 관리 시스템 (RDBMS) 및 캐싱 등을 간과 하기 시작 합니다. 이러한 서비스는 일반적으로 IO를 많이 사용 있고만 단일 인스턴스. 상태 계층 구조에서 수평 확장성을 구현 하는 한 가지 방법 이라고 분할 여러 데이터베이스에 RDBMS 데이터를 논리적으로 분할 하는 그리고 각 데이터베이스는 일반적으로 동일한 테이블 구조를 걸립니다. 예를 들어 다른 부서에 있는 직원에 대 한 정보를 저장 하는 각각의 3 개의 다른 데이터베이스까지 직원 정보 테이블을 분할할 수 있습니다.
분할의 장점은 용량 관련 시나리오 보다 더 많은입니다. 이 문서는 RDBMS 파티션을 Azure SQL 데이터베이스 플랫폼에 주로 OLTP 시나리오에 대 한 구현에 집중할 것 이다. 분할 된 데이터베이스 구조의 장점의 예는 다음과 같습니다.
제한 임계값 또는 처리량 제한 했다 주파수 너무 높습니다. 데이터의 양이 너무 커서 (인덱스 다시 작성, 백업, 등). 데이터베이스는 (단일 파티션 아니다) 하는 동안 모든 사용자에 영향을 미칠 수 없습니다. 데이터베이스는 필요에 따라 아래로 확장 어렵다. 일부 비즈니스 모델, 다중 소유 등 소프트웨어 서비스 시나리오.
사용할 때 (예: Windows Azure SQL 데이터베이스) 멀티 테 넌 트 데이터베이스 서비스 솔루션으로, 클라이언트의 QOS (서비스)의 품질은 일반적으로 다양 한 조건에서 제한 됩니다. 제한은 일반적으로 리소스 압력 상승 하는 경우 발생 합니다. 분할 리소스 압력을 줄일 수 있도록 핵심 전략 이며 그것은 일반적으로 영향을 주는 단일 서버는 여러 서버에 걸쳐 각각 하나의 파티션을 포함 하는 부하를 분산 수 있습니다. 예를 들어 가정 하는 부하는 균등 하 게, 5 개의 분할을 만드는 줄일 수 각 데이터베이스에 부하 약 20%.
하지만 아무것도 더 강력한 되는 희생을 하지 게 불가피 하 게 됩니다. 분할 수의 핵심 분야의 복잡성을 추가할 수 있습니다 그리고 그러므로 더 나은 계획을 요구 한다. 이러한 주요 분야는 다음과 같습니다.
모든 파티션에 대 한
id 열 적은 파티션을 요구에서 미래의 비즈니스 요구를 방지 하기 위해 글로벌 고유 있어야 합니다. 모든 파티션의 id 고유 하지 않으면, 두 개의 파티션을 병합 하는 경우 충돌이 발생 합니다. 참조 무결성 다른 파티션에 있는 행을 참조 하거나 별도 데이터베이스에 속해 있기 때문에이 라인으로 관계를 적용할 수 없습니다. 각 파티션의 쿼리 및 결과 병합 해야 하기 때문에 가능한 한 많이, 파티션 간에 쿼리를 피해 야 한다. 횡단면 "밖으로 팬" 쿼리 뿐만 아니라 성능 측면 뿐만 아니라 그들에 대 한 지원을 제공 하는 분할 프레임 워크의 복잡성의 증가에서 비싸다. 파티션 간에 쿼리해야 하는 경우 일반적인 전략 각 파티션에 대 한 비동기 쿼리를 만드는 것입니다. 그러나, 때때로 동기 쿼리 방법 더 나은 결과 집합의 크기를 제어할 수 있습니다.
대부분의 경우, 상위, 복잡 한 응용 프로그램 논리에 대 한 복잡 한 데이터 구조를 추상화 하는 데이터 액세스 계층 (DAL) 개념은 분할.
"거주자" 정의 하는 방법 분할된 아키텍처를 구축할 때 가장 중요 한 결정 중 하나입니다. 세 입자는 같은 파티션에 있어야 가장 큰 고유 데이터 분류. 단일 입자에 실행을 제한 하는 쿼리는 쿼리가 정상 동작 조건에서 팬 아웃 작업을 수행할 필요가 없기 때문에 일반적으로 더 빠른. 해당 거주자 정의 결정에 영향을 주는 요인 중 일부는 다음과 같습니다.
식별자에 대 한 응용 프로그램 코드의 더 높은 레벨의 이해. 이 수준에서 대부분 핵심 비즈니스 트랜잭션을 수행할 수 있습니다. 세 입자 수준에서 일상적인 일상 업무를 제한 하지 않도록 수 있습니다.
이러한 개념 하 고 아이디어를 설명 하기 위해 생생하게, Windows Azure 고객 컨설팅 팀은 클라우드 서비스 기본 (CSF) 패킷 (http://code.msdn.microsoft.com/에 기본 분할 된 데이터 액세스 계층 (DAL) 클라우드 서비스 기본 4ca72649에 만들어집니다.
거주자는 CSF에서 단일 사용자로 정의 됩니다. 이 거주자의 선택에 기여 하는 요소는 다음과 같습니다.
대부분의 핵심 비즈니스 요구 하지 않아도 여러 사용자가 쿼리 합니다. 파티션을은 사용할 수 있으며 다른 사용자가 계속 시스템을 정상적으로 사용 하는 동안 사용자 그룹의 그룹에만 영향을 줍니다. 기업의 지속 될 수 있는 수에 의해 단일 파티션에 사용자의 수를 제어할 수 있습니다.
정 및 거주자의 구현에는 크로스 데이터베이스 트랜잭션이 필요 하지 않습니다 보장 합니다. 그림 1에서, 우리이 dataset Shardlet, 데이터 모델의 트랜잭션 경계 호출합니다.
그림 1 데이터 모델 트랜잭션 경계
사용자 데이터베이스에 연결 하는 세션에서 처음으로 일련의 어떤 기능 인지 오프 라인 분할 사용할 수 없습니다 간단한 쿼리를 수행할 수 있습니다.
CSF에서 분할 방법을 단순화 하기 위해, 우리는 예측 가능한 미래의 용량 요구 사항에 맞게 충분 한 저장 공간을 파티션 집합을 만들 하기로 결정 했다. 고정된 크기를 선택 하면, 당신은 더 이상 필요가 없습니다 증가 고 파티션, 수 감소도 거주자 마이그레이션 같은 작업을 수행 해야 할. 임차인 이름에 해시 알고리즘을 실행 하 여 파티션 다이어그램에 일치 하는 항목의 범위를 쿼리 하는 데 사용할 수 있는 정수를 생성할 수 있습니다. CSF는 특정 파티션 (파티션 지도에서 캡처한)이이 숫자의 범위 할당 범위 기반 메커니즘을 사용 합니다.
추가 하거나 파티션 집합에서 파티션을 제거 해야 할 경우 거주자 새로운 파티션으로 마이그레이션하기 전에 사용할 수 없게 해야 합니다. 이 심각한 제한 때문에 파티션 집합은 무 겁 게 파티션 집합을 완화 하거나 복잡 한 파티션 관리를 수행할 필요가 생성 됩니다 처음으로 구성 합니다.
이 솔루션은 데이터 액세스 계층 (DAL) 거주자 ID 파티션 집합에서 세 입자의 위치를 감지 해야 합니다. 사용할 수 있는 파티션을 포함 하는 쿼리를 실행 하는 경우 전체 쿼리가 실패 합니다. DAL 거주자 ID 포함 되지 않은 경우 모든 파티션을 해야 합니다 쿼리할 수, 더 높은 실패 확률 및 낮은 성능에 발생할 수 있습니다.
일부 예비 작업은 현재 고급 분할 방법을 설명 하기 위해 더 많은 샘플 코드를 제공 하기 위해 진행 되고있다. 이러한 예제는 다음과 같은 분야를 향상 시킬 수 있습니다. 수동 및 활성 구역 관리입니다.
글로벌 고유성 및 id 관리입니다. 파티션 집합 내에서 파티션 사이 거주자 마이그레이션. 확장과 수축 파티션을 설정합니다. 세 입자를 감지할 수 없는 쿼리를 개선입니다.
요약 하자면, 기본 샘플 코드는 기본 파티션 개념을 탐험 하 고 분할을 시작 하는 좋은 방법은 클라우드 서비스 "클라우드 규모" 응용 프로그램을 만드는 중요 한 방법입니다.
이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이
페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.
커뮤니티에서 표절 사례를 발견한 경우
info-contact@alibabacloud.com
으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.