2012-04-27 2 views
4

NoSQL 데이터베이스는 고밀도 데이터 읽기 응용 프로그램을위한 좋은 옵션이 될 수 있지만, 데이터 업데이트를 많이하고 트랜잭션 성은 매우 중요합니다. ACID 준수 없음). 권리? 어쩌면 너무 단순합니다.NoSQL 데이터베이스 : 읽기 일관성은 어떻게됩니까?

하지만 어쨌든, 적어도 부분적으로는 나는 NoSQL 데이터베이스가 읽거나 쓰는 데이터의 "일관된 읽기"뷰를 유지하는 방법에 대해 우려하고 있습니다. 아니면? 그리고 그렇지 않다면 정말 큰 문제가 아닌가?

당신이 읽는 동안 (또는 업데이트하는) 데이터가 변경 될 때 일관성이없는/더러운 결과 집합을 얻게 될 수도 있습니다. 이 모든 것이 단지 당신을 위해 처리되는 Oracle rdbms 배경에서 볼 때, 나는 읽기 일관성의 부족이 큰 문제는 아닌지 혼란 스럽습니다. 나는이 모든 것에 대해 핵심적인 점을 놓치고 있다고해도 될 수있다. 누군가 나를 똑바로 세울 수 있습니까?

답변

2

MongoDB를 "는 우려를 쓰기"를 사용하여 읽기 일관성 원하는 레벨을 선택하도록 응용 프로그램을 할 수 있습니다. 이 개념을 사용하면 주어진 쓰기에 대해 특정 조건이 충족 될 때까지 응용 프로그램을 차단할 수 있습니다.

예를 들어 작업이 마스터 서버에 전달되는 한 모든 쓰기가 성공한 것으로 간주 할 수 있습니다. 또는 쓰기가 복제 세트의 노드에 전파 될 때까지 차단할 수 있습니다. 이런 식으로 공연/일관성을 취향에 섞을 수 있습니다.

+1

더 자세히 설명해 주시겠습니까? 마찬가지로, 그러한 구성에 대한 문서 참조를 제공 할 수 있습니까? – lcestari

2

NoSQL 데이터베이스는 읽기 일관성을 유지할 수 있지만 일반적으로 큰 문제는 아니지만 엄격하게 적용되지 않는 경우 CAP theorem을 확인하십시오. 이 분야에서 많은 연구가 이루어 졌으므로 NoSQL 데이터베이스와 같은 분산 시스템이 직면 한 몇 가지 문제와 솔루션을 빠르게 보려면 Amazon's Dynamo paper을 읽어보십시오.

1

각각 다른 전략을 구현할 때 사용하는 NoSQL 데이터베이스에 따라 다릅니다. 당신은 예를 들어, 읽을 수있는, 그들의 "최종 일관성"모델이나 ACID in HBase

4

에 라스 Hofhansel의 작성자의 Riak's explanation 나는 오라클 NoSQL에 데이터베이스에 개발자 오전 특정되는 NoSQL 시스템을 기준으로 귀하의 질문에 대답합니다.

Oracle NoSQL Database API를 통해 프로그래머는 각 API 호출마다 읽기 일관성 레벨을 지정할 수 있습니다. 가장 엄격한 것에서 가장 느슨한 것까지 가능한 네 가지 값은 절대, 시간, 버전 및 없음입니다. Absolute는 항상 복제 마스터에서 읽으므로 가장 최근의 값이 반환됩니다. "시간"은 시스템이 적어도 마스터의 특정 시간 델타 내에있는 모든 복제본의 값을 반환 할 수 있다고 (예 : 마스터의 2 초 내에있는 모든 복제본의 값을 읽음) 말합니다. 시스템에 대한 모든 읽기 및 쓰기 호출은 "버전 핸들"을 반환합니다. 이 버전 핸들은 Consistency.Version이 지정 될 때 읽기 호출로 전달 될 수 있으며 적어도 해당 버전과 동일한 최신 복제본을 읽도록 시스템에 지시합니다. 이는 읽기 수정 쓰기 (일명 CAS) 시나리오에 유용합니다. 마지막 값은 일관성입니다. 아무도 복제본을 사용할 수 있다고 말합니다 (즉, 일관성이 보장되지 않음).

도움이되기를 바랍니다.

찰스 램

관련 문제