개인 재정 NoSQL - 더미에서 데이터를 관리

NoSQL - 더미에서 데이터를 관리

차례:

비디오: Building Apps for Mobile, Gaming, IoT, and more using AWS DynamoDB by Rick Houlihan 2024

비디오: Building Apps for Mobile, Gaming, IoT, and more using AWS DynamoDB by Rick Houlihan 2024
Anonim

키를 적절하게 관리하면 NoSQL을 사용하여 데이터를 저장하는 방법을 설계하고 작업에 안전하고 항상 액세스 할 수 있도록합니다 당신은해야합니다.

키 - 값 저장소의 데이터 형식

키 - 값 저장소는 일반적으로 & ldquo; 양동이 & rdquo; 바이너리 데이터 용. 일부 데이터베이스는 강력한 내부 데이터 입력 및 스키마 지원을 제공합니다. 다른 사람들은 공통 응용 프로그램 데이터 구조를 키 ​​- 값 저장소로 직렬화하기 위해 클라이언트 드라이버에서 편리한 도우미 기능을 제공하기 만하면됩니다. 지도, 목록 및 정렬 된 집합을 예로들 수 있습니다.

고도로 구조화 된 Avro 스키마 지원

  • Avro 스키마는 관계형 데이터베이스 스키마와 유사하며 매우 엄격한 세트를 적용합니다 다음 예제와 같이 데이터베이스에 저장된 JSON (JavaScript Object Notation) 데이터 형식 규칙을 사용합니다.

  • {username: & ldquo; afowler & rdquo;, sessionid: 13452673, 이후: 1408318745, 테마: & ldquo; bluesky & rdquo;}

JSON 문서를 사용하여 Avro 스키마를 정의합니다. 이전에 표시된 저장된 데이터에 대한 Avro 스키마의 예입니다.


{& ldquo; & rdquo;를 입력하십시오.: & ldquo; 기록하기 & rdquo;, & ldquo; 네임 스페이스 & rdquo;: & ldquo; com. 예 & rdquo;, & ldquo; 이름 (& R): & ldquo; UserSession & rdquo;, & ldquo; 필드 & rdquo;: [{& ldquo; 이름 (& R): & ldquo; 사용자 이름 & rdquo;, & ldquo; & rdquo;를 입력하십시오.: [& ldquo; 문자열 & rdquo; & rdquo; null & rdquo;]}, {& ldquo; 이름 (& R): & ldquo; sessionid & rdquo;, & ldquo; & rdquo;를 입력하십시오.: & ldquo; int & rdquo;}, {& ldquo; 이름 (& R): & ldquo; 이후 & rdquo;, & ldquo; & rdquo;를 입력하십시오.: & ldquo; 긴 & rdquo;}, {& ldquo; 이름 (& R): & ldquo; 테마 & rdquo;, & ldquo; & rdquo;를 입력하십시오.: [& ldquo; 문자열 & rdquo; & rdquo; null & rdquo;]}]}

Avro 스키마는 스키마가 중요한 경우 데이터베이스에 매우 강력한 입력을 제공합니다. 앞의 예에서 문자열 데이터, 숫자 세션 ID, 날짜 (밀리 초, 긴 정수로 표시), 테마가 웹 사이트에서 사용할 개인화 설정을 볼 수 있습니다.

또한 username과 theme의 유형에는 문자열과 null의 두 가지 옵션이 있음을 알 수 있습니다. 이는 null 값이 허용되는 Oracle NoSQL을 설명하는 방법입니다. 테마를 문자열로 남겨두고 추가 구성 매개 변수 & ldquo;를 제공 할 수 있습니다. 기본 & rdquo;: & ldquo; 블루스키 & rdquo;.

다른 NoSQL 데이터베이스는 JSON 컨텐트가있는 값의 임의의 속성에 보조 인덱스를 제공합니다. 예를 들어, Riak은

문서 분할을 기반으로하는 보조 색인을 제공합니다. 기본적으로 JSON 문서 내의 알려진 속성은 유형으로 색인화됩니다.이렇게하면 단순한 같음과 같지 않은 비교 이외에 범위 쿼리 (보다 작거나 같음)가 허용됩니다. Riak은 단순한 색인 정의와 같이 엄격한 스키마없이 범위 쿼리를 제공합니다. 데이터가 있으면 인덱스에 추가됩니다.

데이터 복제 동일한 데이터의 여러 복사본을 다른 서버 또는 서버 랙에 저장하면 한 서버에 오류가 발생해도 데이터 가용성을 확보하는 데 도움이됩니다. 서버 장애는 주로 동일한 클러스터에서 발생합니다. 마스터 - 슬레이브:

모든 읽기와 쓰기는 마스터에게 발생합니다. 마스터가 실패한 경우에만 슬레이브가 요청을 수신합니다.

마스터 - 슬레이브 복제는 일반적으로 ACID 호환 키 - 값 저장소에서 사용됩니다. 일관성을 최대로 유지하려면 트랜잭션이 완료되기 전에 기본 저장소가 기록되고 모든 복제본이 업데이트됩니다. 이 메커니즘은

2 단계 커밋 ()이라고하며 복제본에 추가 네트워크 및 처리 시간을 만듭니다.

  • 마스터 - 마스터: 읽기 및 쓰기는 키를 관리하는 모든 노드에서 발생할 수 있습니다. & ldquo에 대한 개념이 없습니다. 기본 & rdquo; 파티션 소유자.

마스터 - 마스터 복제본은 일반적으로 클러스터가 자동으로 키의 최신 값을 판별하고 오래된 값을 제거하기 위해 일관된 결과를 보입니다. 대부분의 키 - 값 저장소에서 이것은 읽기 시간에 느리게 발생합니다. Riak은 정상 작동 중에 일관성을 검사하는 앤티 - 엔트로피 서비스를 가지고 있기 때문에 예외입니다. 버전 데이터

  • 자동 충돌 해결을 사용하려면 최신 버전의 데이터를 표시하는 메커니즘이 필요합니다. 궁극적으로 일관성있는 키 - 값 저장소는 여러 가지 방식으로 충돌 해결을 수행합니다. Riak은 벡터 - 클록 메커니즘을 사용하여 가장 최근의 복제본을 예측합니다. 다른 키 - 값 저장소는 staleness를 나타내는 간단한 타임 스탬프를 사용합니다. 충돌을 자동으로 해결할 수없는 경우 두 데이터 복사본이 클라이언트로 전송됩니다. 클라이언트에 충돌하는 데이터가 다음 상황에서 발생할 수 있습니다.

클라이언트 1이 복제본 A 'Adam: {likes: Cheese}'에 씁니다.

복제본 A는 복제본 B에 데이터를 복사합니다.

클라이언트 1은 복제본 A의 데이터를 'Adam: {likes: 치즈, 증오: 햇빛}'으로 업데이트합니다.

복제본 A는 복제본 B에 최신 데이터를 복사 할 충분한 시간이 없습니다.

클라이언트 2는 복제본 B의 데이터를 'Adam: {likes: 개, 증오: 캥거루}'로 업데이트합니다.

  1. 이 시점에서 복제본 A와 복제본 B가 충돌하고 데이터베이스 클러스터가 차이점을 자동으로 해결할 수 없습니다.

  2. 대안 메커니즘은 타임 스탬프를 사용하고 최신 데이터를 나타 내기 위해이를 신뢰하는 것이다. 이러한 상황에서는 응용 프로그램이 값을 업데이트하기 전에 시간 스탬프가 최신 값을 읽는지 확인하는 것이 일반적입니다.

  3. 수표를 확인하고

    메커니즘

  4. 을 설정합니다.

    기본적으로

최신 버전이 아직 버전 2 인 경우 버전 3을 저장합니다.

. 이 메커니즘은 RMU (읽기 일치 업데이트) 또는 읽기 일치 쓰기 (RMW) 라고도합니다. 이 메커니즘은 Oracle NoSQL, Redis, Riak 및 Voldemort에서 사용하는 기본 메커니즘입니다.

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