2012-02-17 2 views
2

Cassandra 및 많은 다른 유사한 시스템은 트랜잭션을 지원하지 않습니다. 대신 그들은 최종 일관성을 제공하는데 이는 시스템에 대한 작가가 결국 일관성있는 상태에 있음을 의미합니다. 트랜잭션이 에뮬레이트 할 수있는 것을 에뮬레이트하는 데 사용할 수있는 예제가 있습니까?최종 일관성 만 제공하는 데이터베이스에서 응용 프로그램을 만들려면 어떻게해야합니까?

최종 일관성이 필요한 경우가 있음을 이해합니다. 예를 들어, 소셜 네트워크에서 친구 목록을 항상 쉽게 사용할 수있는 것은 아닙니다. 호텔 예약이나 송금과 같은 시스템의 경우 어떻게해야합니까? Google App Engine에는 엔티티 그룹이 있습니다. 최종 일관성을 제공하는 시스템에서 어떻게 든 그들을 에뮬레이션 할 수 있습니까?

유사한 아키텍처의 사례는 어디서 찾을 수 있습니까?

답변

4

당신은 거래없이 (단일 작업에 대한) 일관성를 배포 할 수 있지만 자성 (작업 그룹). 카산드라의 '일관성'은 일반적으로 ACID 데이터베이스보다 약간 더 구체적인 의미로 사용됩니다.

카산드라는 조정 가능한 일관성 레벨 (CL)을 지원합니다. 각 읽기 및 쓰기에 대해 일관성 레벨을 지정할 수 있습니다. http://wiki.apache.org/cassandra/API을 참조하십시오.

이 레벨의 범위는 CL.ANY (처음에는 단일 노드에서 읽거나 노드에 쓰는)이 CL.ALL (유효성을 희생시키면서 완전한 일관성을 제공)입니다.

그러나 조작을 원자 트랜잭션으로 그룹화하여 모든 트랜잭션이 성공하거나 모두 실패 할 수있는 방법은 제공하지 않습니다 (동일한 행의 여러 연산은 원자 적이지만 독립적 인 것은 아니지만).

은 참조 :