2014-04-04 3 views
1

저는 Riak과 함께 NoSQL을 두뇌로 감싸려고합니다. CAP 정리를 보면 일관성이 어떻게 발생하는지 이해하는 데 어려움이 있습니다. 예를 들어 온라인 쇼핑몰을 운영한다고 가정 해 보겠습니다. 판매 할 품목이 6 개 있습니다. 2 명이이 품목을 사고 싶어합니다. 첫 번째 사람은이 상품 중 2 개를 구매하려고하며 두 번째 사람은 6 개 품목 모두를 구매하려고합니다. 두 트랜잭션은 거의 즉시 발생합니다. 두 번째 사람이 팬텀 상품을 사지 않는 방법으로 어떻게 할 것인가?Riak Consistency

내 머리 꼭대기에서 읽기/쓰기 잠금을 사용한다고 생각했습니다. 내 생각에 가용성에 문제가있을 수 있습니다.

나는 또한 Commutative Replicated Data Types에서 뭔가를 보았습니다. 여전히 저널에 대한 저널을 읽고 있지만 Riak에 관해서는 누구도 알고 있습니까?

미리 감사드립니다.

답변

4

이 문제는 Riak 또는 NoSQL에는 국한되지 않지만 일반적으로 분산 시스템과 관련됩니다. 인벤토리를 추적하기 위해 mysql과 같은 관계형 데이터베이스를 사용하고 2 개 이상의 서버간에 해당 데이터를 복제하는 경우 응용 프로그램은 서버 2의 가용성 보고서를 기반으로 항목을 재판매하지 않도록 설계해야합니다. 서버 1은 마지막 트랜잭션을 처리했지만 방금 복제하지 않았습니다. 두 경우 모두 고객에게 배송/생산 지연에 대해 사과하지 않으려는 경우 구매 요청을 잠 그거나 일련 번호를 매겨야합니다.

특별히 Riak을 사용하면 읽기 및 쓰기 쿼럼 사용, 기본 복제본을 사용할 수없는 경우 일관성을 유지하면서 덜 중요한 작업을 허용해야하는 최종 구매와 같은 선택적으로 실패한 작업을 통해 사용자의 필요에 따라 가용성/일관성을 조정할 수 있습니다 인벤토리 탐색과 같은 작업이 계속됩니다. 즉, 쿼리 시간에 가용성에 대한 일관성 또는 그 반대의 일관성을 선택할 수 있습니다.