최적의 레플리케이션
Optimistic replication느린 [1][2]복제라고도 하는 최적 복제는 복제를 위한 전략으로, 복제본의 [3]분리가 허용됩니다.
기존의 비관적인 복제 시스템은 처음부터 모든 복제본이 서로 동일하다는 것을 보장하려고 했습니다. 마치 데이터의 복사본이 처음부터 하나뿐인 것처럼 말입니다.낙관적인 복제는 최종적인 일관성을 위해 이 문제를 해결합니다. 즉, 시스템이 일정 기간 중지된 경우에만 복제본이 수렴됩니다.따라서 데이터를 업데이트할 때 모든 복사본이 동기화될 때까지 더 이상 기다릴 필요가 없으므로 동시성과 병렬화에 도움이 됩니다.단점은 서로 다른 복제품이 나중에 명시적인 조정을 필요로 할 수 있다는 것이며, 이는 어렵거나 심지어 해결할 수 없는 것으로 판명될 수 있다는 것이다.
알고리즘
최적 복제 알고리즘은 다음 5가지 요소로 구성됩니다.
- 작업 제출:사용자는 독립된 사이트에서 작업을 제출합니다.
- 전파:각 사이트는 알고 있는 조작을 시스템의 나머지 부분과 공유합니다.
- 스케줄링:각 사이트는 자신이 알고 있는 작업에 대한 순서를 결정합니다.
- 충돌 해결:사이트에서 스케줄링된 작업 간에 충돌이 있는 경우 사이트에서는 어떤 방법으로든 이러한 작업을 수정해야 합니다.
- 대처:각 사이트는 최종 일정과 충돌 해결 결과에 합의하고 운영은 영구화한다.
전파에는 두 가지 전략이 있습니다.상태 전송은 사이트가 현재 상태의 표현을 전파하고 운영 전송은 사이트가 실행된 작업을 전파합니다(기본적으로 새로운 상태에 도달하는 방법에 대한 지시 목록).
스케줄링과 경합 해결은 통사적 또는 시멘틱 중 하나입니다.구문 시스템은 작업이 제출된 시기와 장소와 같은 일반적인 정보에 의존합니다.시맨틱 시스템은 애플리케이션 고유의 정보를 사용하여 보다 현명한 결정을 내릴 수 있습니다.상태 전송 시스템은 일반적으로 전송되는 데이터의 의미에 대한 정보가 없으므로 구문 스케줄링과 충돌 해결을 사용해야 합니다.
예
최적 리플리케이션에 기초한 시스템의 잘 알려진 예로는 CVS 버전 제어 시스템 또는 copy-modify-merge 패러다임을 사용하는 다른 버전 제어 시스템이 있습니다.CVS에는 다음 5가지 요소가 포함됩니다.
- 작업 제출:사용자는 로컬 버전의 파일을 편집합니다.
- 전파:사용자는 중앙 서버에서 업데이트를 수동으로 가져오거나 사용자가 준비가 되었다고 판단되면 변경을 푸시합니다.
- 스케줄링:중앙 서버가 수신한 순서대로 작업이 스케줄링됩니다.
- 충돌 해결:사용자가 중앙 저장소로 푸시 또는 풀할 때 해당 사용자가 수동으로 수정하도록 플래그가 지정됩니다.
- 대처:사용자가 푸시한 변경을 중앙 서버가 받아들이면 변경은 영구적으로 커밋됩니다.
복제의 특별한 경우로 두 개의 복제본만 있는 동기화가 있습니다.예를 들어 PDA(Personal Digital Assistant)를 사용하면 사용자는 PDA 또는 컴퓨터의 데이터를 편집한 다음 이 두 데이터 세트를 병합할 수 있습니다.그러나 두 개 이상의 복제본이 있을 수 있으므로 복제는 동기화보다 더 광범위한 문제입니다.
기타 예는 다음과 같습니다.
- Usenet 및 Thomas Write 규칙을 사용하는 기타 시스템(RFC 677 참조)
- 다중 마스터 데이터베이스 복제[4]
- Coda 분산 파일 시스템
- 그룹 편집을 위한 이론적 프레임워크인 Operational Transformation
- 피어 투 피어 Wiki
- 충돌 없는 복제 데이터 유형
- Bayou[5] 분산 데이터베이스
- 아이스큐브[6]
시사점
낙관적으로 복제된 데이터베이스 위에 구축된 애플리케이션은 관찰된 업데이트 지연으로 인해 애플리케이션의 정확성이 저하되지 않도록 주의해야 합니다.
간단한 예로, 응용프로그램에 데이터베이스 상태의 일부 및 편집 방법이 포함되어 있는 경우, 사용자는 해당 상태를 편집하지만 뷰어에서 변경되지 않을 수 있습니다.편집이 "실패하지 않았다"는 사실에 놀라 다시 시도할 수도 있습니다.업데이트가 가치가 없는 경우(예를 들어 값이 증가하는 경우) 재해로 이어질 수 있습니다.불필요한 데이터베이스 업데이트는 성능 병목현상으로 이어질 수 있습니다.특히 데이터베이스 시스템이 부하가 높은 부하를 처리하고 있을 때 이는 악순환이 될 수 있습니다.
애플리케이션의 테스트는, 테스트 환경에서 행해지는 경우가 많아, 「라이브」환경에 비해 사이즈가 작고(아마도 1대의 서버 뿐일 가능성이 있습니다), 부하도 적습니다.이러한 인스톨의 레플리케이션 동작은, 레플리케이션의 영향을 받기 쉬운 버그를 마스킹 해, 테스트에서 레플리케이션 지연이 발생하지 않는 점에서, 라이브 환경과 다를 수 있습니다.애플리케이션 개발자는 데이터베이스 업데이트의 영향에 대한 가정에 매우 주의해야 하며 테스트 환경에서 지연을 시뮬레이션해야 합니다.
낙관적으로 복제된 데이터베이스는 데이터에 대한 유효성 제약 조건과 같은 기능을 제공하는 데 매우 주의해야 합니다.레코드의 현재 상태에 따라 어떤 갱신이 받아들여질 수도 있고 받아들여지지 않을 수도 있는 경우, 2개의 갱신(A와 B)은 시스템의 기동 상태에 대해 개별적으로 합법적일 수도 있지만, 다른 갱신 후의 시스템 상태에 대해서는 1개 이상의 갱신이 합법적이지 않을 수도 있습니다(A와 B는 모두 합법적이지만 AB 또는 BA는 불법입니다).A와 B가 모두 데이터베이스 내에서 거의 동시에 시작된 경우 A는 일부 노드에, B는 다른 노드에 성공적으로 적용될 수 있지만 A와 B가 "만남"되고 한쪽이 이미 적용된 노드에서 시도되는 즉시 충돌이 발견됩니다.이 경우 시스템은 최종적으로 "win"되는 업데이트를 결정하고 손실된 업데이트를 이미 적용한 노드를 모두 원래대로 되돌릴 수 있도록 준비해야 합니다.단, 일부 노드에서는 복구된 업데이트로 상태가 일시적으로 노출될 수 있습니다.또, 업데이트를 개시한 유저에게, 각 노드에서의 승인 확인을 대기(잠재적으로는 영속적으로)할 필요가 없는 경우도 있습니다.
레퍼런스
- ^ Ladin, R.; Liskov, B.; Shrira, L.; Ghemawat, S. (1992). "Providing high availability using lazy replication". ACM Transactions on Computer Systems. 10 (4): 360–391. CiteSeerX 10.1.1.586.7749. doi:10.1145/138873.138877. S2CID 2219840.
- ^ Ladin, R.; Liskov, B.; Shrira, L. (1990). Lazy replication: exploiting the semantics of distributed services. Proceedings of the Ninth Annual ACM Symposium on Principles of Distributed Computing. pp. 43–57. doi:10.1145/93385.93399.
- ^ Saito, Yasushi; Shapiro, Marc (2005). "Optimistic replication". ACM Computing Surveys. 37 (1): 42–81. CiteSeerX 10.1.1.324.3599. doi:10.1145/1057977.1057980. S2CID 1503367.
- ^ Gray, J.; Helland, P.; O’Neil, P.; Shasha, D. (1996). The dangers of replication and a solution (PDF). Proceedings of the 1996 ACM SIGMOD International Conference on Management of Data. pp. 173–182. doi:10.1145/233269.233330.[영구 데드링크]
- ^ Terry, D.B.; Theimer, M.M.; Petersen, K.; Demers, A.J.; Spreitzer, M.J.; Hauser, C.H. (1995). Managing update conflicts in Bayou, a weakly connected replicated storage system. Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles. pp. 172–182. doi:10.1145/224056.224070.
- ^ Kermarrec, A.M.; Rowstron, A.; Shapiro, M.; Druschel, P. (2001). The IceCube approach to the reconciliation of divergent replicas. Proceedings of the Twentieth Annual ACM Symposium on Principles of Distributed Computing. pp. 210–218. doi:10.1145/383962.384020.
외부 링크
- Saito, Yasushi; Shapiro, Marc (September 2003). "Optimistic Replication" (PDF). Microsoft.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말)