큰 문제 중 하나는 응용 프로그램 A가 데이터에 대한 읽기 전용 액세스가 필요하거나 읽기 - 쓰기가 필요한 경우입니다.
요구 사항을 읽을 때 염두에 두어야 할 즉각적인 개념은 sharding입니다. MySQL에서는 partitioning으로이 작업을 수행 할 수 있습니다. 즉, 파티션으로 이동하기 전에 자신의 pros and cons을 읽어야합니다. 인덱스가 잘 선택되지 않았거나 파티션 계획이 잘 고려되지 않은 경우 파티션을 사용하면 작업 속도가 느려질 수 있습니다.
필요가 읽기 전용 인 경우 매우 간단한 해결책이어야합니다. 마스터 - 슬레이브 컨텍스트에서 MySQL을 사용할 수 있고 슬레이브에서 App A를 사용할 수 있습니다. 읽기 - 쓰기가 필요하다면 이것은 훨씬 더 복잡해집니다.
쓰기 요구 사항에 따라 읽기를 슬레이브와 마스터로 씁니다.하지만 코드 구조가 복잡해 지므로 (다중 dbs에 대한 다중 연결을 처리해야 함) 코드 구조가 복잡해집니다. 이런 종류의 레이아웃의 장점은 복잡한 DB 인프라가 필요 없다는 것입니다.
반대쪽에서는 코드를 그대로 유지하고 MySQL에서 마스터 - 마스터 복제를 사용할 수 있습니다.오라클이 공식적으로 지원하지는 않지만 많은 사람들이이를 성공적으로 수행했습니다. 빠른 Google 검색을 통해 블로그, 하우투 등의 목록을 찾을 수 있습니다. 예를 들어, PK에 자동 증가 필드를 사용할 수없는 등 코드를 올바르게 작성해야합니다.
지출 할 현금이 있다면 더 많은 상업용 제품을 볼 수 있습니다. Oracle DB와 SQL Server는 모두 이것을 지원합니다.
DRDB(and Mysql DRDB)과 같은 블록 기반 데이터 복제를 사용하여 노드 간의 복제를 처리 할 수도 있지만 항상 발생하는 문제는 두 노드 간의 링크가 실패 할 경우 발생합니다.
가장 큰 문제는 2 개의 개별 DB 노드에서 충돌하는 업데이트를 처리하는 방법입니다. 데이터가 지리적으로 다른 경우 문제가되지 않습니다.
간단히 말하자면, 이것은 해결하기 쉬운 (또는 저렴한) 문제가 아닙니다.
안녕하세요. 하나의 새로운 요구 사항은 여러 소스에서 데이터를 가져와야한다는 것입니다. 데이터베이스 복제를 사용하면 될까요? 감사합니다. –
@MickaelMarrache : 복제가 당신을 위해 무엇을 할 수 있는지 보셨나요? 귀하의 질문에 대한 대답은 분명합니다 ... "아마도": - o – krlmlr