문제

나는이 시스템을 구현할 생각을했지만 도움이 될 수는 없지만 어딘가에 캐치가 있다고 생각합니다. Guid Over Accrementing Int를 사용하는 요점 중 하나는 미래에 데이터베이스를 합치면 기본 키/식별자에 대한 충돌이 없다는 것입니다. 그러나 내 접근 방식은 증분 크기를 x로 설정하는 것입니다. 그런 다음 각 서버에서 씨앗을 이전 서버의 시드 번호를 증가시킵니다. 그렇게하면 병합하는 동안 기본 키와 충돌이 없을 것입니다. 이것은 안전하고 정상적인 방법입니까, 아니면 내가 정신적으로 갔습니까? :)? 감사

도움이 되었습니까?

해결책

멀티 마스터 SQL 복제에는 일반적으로 기본 키가 다음과 같이 정의됩니다.

  • 안내
  • int는 증분 크기> 설치 수입니다.
  • int는 고정 오프셋이 있습니다

지도의 단점은 읽기가 더 어려워서 약간 더 많은 공간을 차지할 수 있다는 것입니다. 그러나 확장 할 수 있습니다 N 인스턴스.

정수는 다루기가 조금 더 쉽습니다. 또한 어떤 서버가 레코드를 생성했는지 쉽게 알 수 있다는 이점이 있습니다. 단점은 병합 될 수있는 최대 데이터베이스 수를 예측하거나 단일 인스턴스가 삽입 할 수있는 최대 행 수를 추측해야한다는 것입니다.

고정 된 오프셋의 예는 다음과 같습니다. 사이트 A는 0에서 시작하고 사이트 B는 1,000,000에서 시작하고 사이트 C는 2,000,000에서 시작합니다. 이 체계는 한 사이트가 백만 행을 삽입 할 때까지 잘 작동합니다. 이 제도는 자동차 대리점의 자동차에 잘 어울릴 수 있으며, 한 딜러가 1,000,000 대 이상의 자동차를 판매 할 가능성은 거의 없으며, 신청서의 수명 동안 수백 개의 딜러가있을 수 있습니다.

다른 팁

여기서 두려운 것은 "가장 가능성이 높은"당신의 사용입니다. 당신은 여기서 미래를 가정하고 있으며, 일반적으로 그것은 이와 같은 것들과 관련이 없습니다. 왜 안내서를 사용하지 않습니까?

당신이 생각했던 것보다 추가 서버를 추가하면 어떻게해야합니까? 나는 정말로 일이 정말로 복잡해지는 것을 볼 수있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top