개인 재정 NoSQL의 파티션 - 더미

NoSQL의 파티션 - 더미

차례:

비디오: NOSQL Partition Demonstration with MongoDB 2024

비디오: NOSQL Partition Demonstration with MongoDB 2024
Anonim

파티션이라는 단어는 NoSQL에서 두 가지 개념으로 사용됩니다. 데이터 파티션 은 데이터가 클러스터 전체에 고르게 분산되도록하는 메커니즘입니다. 반면에 네트워크 파티션 은 동일한 데이터베이스 클러스터의 두 부분이 통신 할 수 없을 때 발생합니다.

매우 큰 클러스터 시스템에서는 하나의 장비에 장애가 발생할 가능성이 점점 커지고 있습니다. 클러스터에있는 서버 간의 네트워크 전환이 실패하면 (컴퓨터 전문 용어로) split brain 현상이 발생합니다. 이 경우 개별 서버는 여전히 요청을 받고 있지만 서로 통신 할 수는 없습니다.

이 시나리오는 서버의 수가 가장 적은 네트워크 파티션이 클러스터에서 제거되거나 (진정한 Big Brother 방식으로 "투표가 종료 됨"으로 인해) 데이터의 불일치 또는 데이터 저장 용량의 감소로 이어질 수 있습니다).

파티션 허용

네트워크 파티션이 발생할 때 두 가지 선택 사항이 있습니다.

  • 일부 수준에서 읽기 및 쓰기 작업을 계속 진행합니다.

  • 파티션의 한 부분을 "승인"하고 두 부분이 통신 할 수있을 때 나중에 데이터를 수정하기로 결정합니다. 이 작업에는 일반적으로 누락 된 마스터 파티션 노드마다 새 마스터로 읽기 복제본을 투표하는 클러스터가 포함됩니다.

Riak을 사용하면 데이터가 복제되는 횟수 (기본적으로 3 부, 즉 n = 3)와 읽기 성공을 위해 쿼리해야하는 서버 수를 결정할 수 있습니다. 즉, 키의 기본 마스터가 네트워크 파티션의 잘못된쪽에 있으면 다른 두 서버를 사용할 수있는 경우 (즉 r = 2 읽기 가용성) 읽기 작업이 계속 성공할 수 있습니다.

힌트 된 핸드 오프 라는 시스템을 사용하여 주 파티션 서버가 다운 될 때 Riak이 쓰기를 처리합니다. 데이터가 원래 복제되면 특정 키 파티션의 첫 번째 노드가 다음 인접 노드 중 두 개 (기본값)와 함께 기록됩니다.

기본 노드에 쓸 수 없으면 링의 다음 노드에 기록됩니다. 이러한 쓰기는 효과적으로 다음 노드로 전달됩니다. 주 서버가 다시 작동하면 기본 쓰기 작업을 다시 수행하기 전에 해당 노드로 쓰기가 재생됩니다.

이 두 가지 작업 모두에서 수 밀리 초 동안 만 다른 복제본이 다른 버전 상태 일 수 있기 때문에 버전 불일치가 발생할 수 있습니다.

Riak은이 문제를 완화하기 위해

- - 엔트로피 라는 시스템을 사용합니다. 이 시스템은 업데이트 된 값을 통해 트래킹하고 복제본이 어느 시점에서, 바람직하게는 나중에는 아니라 더 빨리 업데이트되도록합니다.이렇게하면 높은 처리 속도를 유지하면서 읽기시 충돌을 피할 수 있으므로 마스터 노예, 비공유 클러스터링 지원을 사용하는 다른 NoSQL 데이터베이스에서 사용되는 2 단계 커밋을 피할 수 있습니다. 읽기 충돌이 발생하면 Riak은

읽기 복구 를 사용하여 최신 데이터 만 반환하려고 시도합니다. 궁극적으로, 사용하는 일관성 및 가용성 설정에 따라 클라이언트 응용 프로그램에 여러 버전이 제공 될 수 있으며 자체적으로 결정할 수 있습니다. 어떤 상황에서는 이러한 절충안이 바람직하며, 많은 애플리케이션이 제시된 데이터를 기반으로 어떤 버전을 사용하고 어떤 버전을 버릴 지 직관적으로 알 수 있습니다. 2 차 색인 작성

2 차 색인은 값 내의 특정 데이터에 대한 색인입니다. 대부분의 키 - 값 저장소는이 색인을 응용 프로그램에 남깁니다. 그러나 Riak은 2 차 색인을 허용하는

document

- 기반 분할 방식 을 사용하는 방식이 다릅니다. 문서 기반 파티셔닝은 JSON 구조를 Riak 데이터베이스에 작성한다고 가정합니다. { "order-id": 5001, "customer-id": 1429857, "order-date": "2014-09-24"이렇게 JSON 구조 내의 특정 명명 된 속성에 대해 인덱스를 설정할 수 있습니다. ","total ": 134.24}

이전 달에 대한 고객의 주문을 보여주는 응용 프로그램이있는 경우 그림과 같이 고객 ID가 고정 값인 모든 레코드를 쿼리하려고합니다 (1429857)이며 주문 날짜는 특정 범위 (월의 시작과 끝) 내에 있습니다.

대부분의 키 - 값 저장소에서는 결합 된 고객 번호와 월을 키로하는 다른 버킷을 만들고 그 값은 주문 ID 목록입니다. 그러나 Riak에서는 customer-id (정수)와 order-date (날짜)의 두 번째 인덱스를 추가하기 만하면됩니다.이 인덱스는 추가 저장 공간을 차지하지만 응용 프로그램 개발자에게는 투명성을 제공합니다.

이 색인도 실시간으로 업데이트됩니다. 즉, Riak의 문서 값을 업데이트하는 것과 최신 색인이 업데이트되는 것 사이에 지연이 없음을 의미합니다. 데이터에 대한 실시간 액세스는 보이는 것보다 더 어렵습니다. 색인이 일치하지 않으면 일관되게 보관 된 데이터를 찾지 못할 것입니다.

Riak 평가

Riak의 상업적 주체 인 Basho는 곧 출시 될 버전 2.0이라고 말합니다. NoSQL 데이터베이스는 다른 NoSQL 공급 업체가 만들어내는 강력한 일관성을 항상 가지고 있습니다. NoSQL 공급 업체가 항상 강한 일관성을 유지한다고 주장하는 것은 일요일에 쇠고기를 볶을 때를 제외하고는 강한 채식주의 자라고 주장하는 것과 같습니다.

Riak은 ACID 호환 데이터베이스가 아닙니다. ACID 준수 모드에서 실행되도록 구성을 변경할 수 없습니다. 클라이언트는 정상적인 작업이나 네트워크 파티션에서 일관성없는 데이터를 얻을 수 있습니다. Riak은 증가 된 가용성과 파티션 공차를 위해 절대적인 일관성을 유지합니다.

강력한 일관성 모드에서 Riak을 실행하면 읽기 복제본이 기본 마스터와 동시에 업데이트된다는 의미입니다. 여기에는 2 단계 커밋이 포함됩니다. 기본적으로 마스터 노드는 쓰기가 완료되었음을 확인하기 전에 다른 노드에 쓰는 것입니다.

강력한 일관성을 사용할 때 Riak Search (상표 화되고 통합 된 Apache Solr 검색 엔진은 최종 일관성있는 업데이트 모델을 사용함)가 오 탐지를 일으킬 수 있습니다. 이 상황은 데이터를 쓰고 트랜잭션을 포기했지만 데이터가 여전히 색인 생성에 사용되어 "오 탐지"검색 결과를 남기기 때문에 발생합니다. 결과는 실제로 더 이상 검색 쿼리에 유효하지 않습니다.

Riak은 별도의

감시 프로세스

를 사용하여 장애 조치 조건에서 어떤 노드가 마스터가되는지 확인합니다. 그러나이 프로세스는 고 가용성이 아니므로 몇 초 동안

감시 모듈 프로세스 의 새 사본이 온라인 상태가되는 동안 새 노드를 추가하거나 새로운 노드를 추가 할 수 없습니다 선출 된 선생. 높은 스트레스 장애 조치 조건에서이 가능성을 인식해야합니다.

NoSQL의 파티션 - 더미

편집자의 선택

JavaScript에서 HTML 양식 요소에 액세스하는 방법 - 다른 HTML 요소와 마찬가지로

JavaScript에서 HTML 양식 요소에 액세스하는 방법 - 다른 HTML 요소와 마찬가지로

자바 스크립트에서 HTML5 요소와 직접 상호 작용할 수 있습니다. 트릭은 선택한 요소가 지원해야하는 브라우저 및 플랫폼에서 작동하는지 확인하는 것입니다. 이 예제에서는 및 태그를 다음과 같은 솔루션의 일부로 사용하는 방법을 보여줍니다.

CSS 값 정의에 대한 빠른 가이드 구문 - 인형

CSS 값 정의에 대한 빠른 가이드 구문 - 인형

W3C (World Wide Web Consortium)에서 모든 CSS 속성의 구문과 가능한 값을 정의합니다. 정의를 가능한 한 정확하게 만들기 위해 W3C는 CSS 값 정의 구문이라는 공식 시스템을 사용합니다. 정의 구문은 가능한 값을 매우 정확하게 정의하지만 CSS 값 정의 구문을 읽는 중 ...

JavaScript로 동적 HTML 요소를 작성하는 방법 - 더미

JavaScript로 동적 HTML 요소를 작성하는 방법 - 더미

모든 페이지에 대한 특수 효과는 페이지에 동적 HTML 변경 기능을 제공하는 것입니다. 예를 들어 다음 예제와 같이 선택한 요소에 특수 효과를 만들 수 있습니다. function ChangeStyles (event) {// 요소에 대한 참조를 얻습니다. var ThisElement ...

편집자의 선택

Excel 2013 통합 문서의 변경 내용 수락 또는 거부 방법 - 변경 내용 추적을 설정하면 더미

Excel 2013 통합 문서의 변경 내용 수락 또는 거부 방법 - 변경 내용 추적을 설정하면 더미

Excel 2013 통합 문서의 경우 리본의 검토 탭에있는 변경 내용 추적 명령 단추의 드롭 다운 메뉴에서 Alt / RGC를 눌러 변경 내용 적용 / 거부 옵션을 선택하여 수락 또는 거부 할 변경 내용을 결정할 수 있습니다. 이렇게하면 Excel이 강조 표시된 모든 변경 내용을 검토합니다 ...

Excel에서 셀에 설명을 추가하는 방법 2016 - 문자

Excel에서 셀에 설명을 추가하는 방법 2016 - 문자

Excel 2016 워크 시트의 특정 셀에 주석을 달 수 있습니다. 댓글은 스티커 메모의 전자 팝업 버전과 유사합니다. 셀에 주석을 추가하려면 다음과 같이하십시오. 셀 포인터를 이동하거나 주석을 추가 할 셀을 클릭하십시오. 새 주석을 클릭하십시오.

Excel 피벗 테이블에 계산 된 필드를 추가하는 방법 - 더미

Excel 피벗 테이블에 계산 된 필드를 추가하는 방법 - 더미

피벗 테이블 내부의 값을 계산합니다. 계산 된 필드 및 항목을 표에 추가 할 수 있습니다. 계산 된 필드를 추가하면 새로운 행이나 열을 피벗 테이블에 삽입 한 다음 수식을 사용하여 새 행이나 열을 채울 수 있습니다. 예를 들어 다음과 같이 나타납니다.

편집자의 선택

포토샵 CS6에서 히스토리 기능으로 채우기를 사용하는 방법 - 더미

포토샵 CS6에서 히스토리 기능으로 채우기를 사용하는 방법 - 더미

채우기 Adobe Photoshop의 기능 Creative Suite 6는 선택을 원할 때 유용합니다. 특정 상태로 바꿀 영역을 쉽게 선택할 수 있으면 기록으로 채우기 기능을 사용할 수 있습니다. 특정 이미지에서 하늘이 마음에 들지 않는다고 가정 해보십시오. 선택한 항목 ...

Photoshop CS6에서 패싯 필터를 사용하는 방법 -

Photoshop CS6에서 패싯 필터를 사용하는 방법 -

Photoshop CS6의 이미지는 먼지와 스크래치를 줄이거 나 날카로운 모서리를 부드럽게하는 것입니다. 패싯 필터는 포스터 라이징 효과를 사용하여 이미지를 분할합니다. Photoshop CS6에서 이미지를 흐리게 처리하려는 한 가지 이유는 먼지 및 스크래치를 줄이거 나 밝기를 비슷하게하는 픽셀 블록을 모아서 기하학적 모양을 사용하여 단일 값으로 변환하기 때문입니다.

Photoshop CS6에서 손 도구 사용 방법 - 인형

Photoshop CS6에서 손 도구 사용 방법 - 인형

Photoshop CS6 손 도구는 이미지 문서에서 빠르게 이동하고 스크롤 막대와 유사하게 작업하여 작업을보다 신속하게 수행 할 수 있습니다. 손 도구는 손 도구를 클릭 할 필요가 거의 없기 때문에 실제 도구보다 기능이 더 많습니다. 간단히 ...