2012-07-04 2 views
6

데이터를 선택적으로 배포 할 수있는 방법은 무엇입니까?데이터베이스 배포

나는 나의 질문을 예제로 설명한다. 모든 데이터를 보유하는 중앙 데이터베이스를 고려하십시오. 이 데이터베이스는 특정 지리적 위치에 있습니다.

응용 프로그램 A는의 하위 데이터베이스 을 필요로합니다. 또한 응용 프로그램 A는 중앙 데이터베이스가있는 곳과 다른 지리적 위치 인 (아마도 멀리까지)에 위치 할 수 있습니다.

그래서 중앙 데이터베이스의 정보 집합을 포함하는 응용 프로그램 A의 동일한 위치에 새 데이터베이스를 만드는 방법을 생각했습니다.

이러한 구성을 배포 할 수있는 기술/제품은 무엇입니까?

감사

답변

4

database replication를 찾습니다. SQL Server이 작업을 수행 할 수 있습니다. 다른 사용자 (Oracle, MySQL, ...)도이 작업을 수행해야합니다.

아이디어는 다른 위치가 (부분 집합) 사본을 유지한다는 것입니다. 업데이트는 점진적으로 교환됩니다. 갈등을 치료하는 방법은 응용 프로그램에 따라 다릅니다.

+0

안녕하세요. 하나의 새로운 요구 사항은 여러 소스에서 데이터를 가져와야한다는 것입니다. 데이터베이스 복제를 사용하면 될까요? 감사합니다. –

+0

@MickaelMarrache : 복제가 당신을 위해 무엇을 할 수 있는지 보셨나요? 귀하의 질문에 대한 대답은 분명합니다 ... "아마도": - o – krlmlr

2

MySql 및 SQL 서버와 같은 대부분의 주요 데이터베이스 소프트웨어가 작업을 수행 할 수 있지만 은 좋은 모델이 아닙니다. 응용 프로그램 (트래픽 및 사용자)의 수가 증가하면 ( 다른 응용 프로그램을 제공 할 수도 있음) 중앙 데이터베이스 서버에 부하를 생성 할뿐만 아니라 네트워크 대역폭을 악용하여 데이터간에 을 전송합니다. 멀리있는 데이터베이스와 애플리케이션 서버.

더 나은 모델은 데이터를 응용 프로그램 서버에 가까이두고 백업 및 복구 목적으로 만 멀리 데이터베이스를 사용하는 것입니다. 응용 프로그램의 필요에 따라 스토리지 네트워크 모델로 FC \ IP SAN (또는 기타 스토리지 네트워크 아키텍처)을 사용할 수 있습니다.

1

큰 문제 중 하나는 응용 프로그램 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 노드에서 충돌하는 업데이트를 처리하는 방법입니다. 데이터가 지리적으로 다른 경우 문제가되지 않습니다.

간단히 말하자면, 이것은 해결하기 쉬운 (또는 저렴한) 문제가 아닙니다.

0

데이터베이스 복제에 대해 이야기 할 때마다 디자인 단계에서 충돌 가능성을 해결하는 것이 중요합니다.

SAP의 Sybase Replication Server를 사용하면 Sybase 데이터베이스 또는 타사 데이터베이스에서이 작업을 수행 할 수 있습니다.

Sybase의 세계에서 이것은 종종 기업 롤업 환경이라고합니다. 지리적으로 분리 된 데이터베이스가 여러 개있을 수 있으며 각 데이터베이스에는 기본 제어 권한이있는 데이터 하위 집합이 있습니다. HQ에는 하나의 저장소에 다양한 하위 집합을 모두 포함하는 서버가 있습니다. 전체 테이블을 복제하거나 개별 행/열의 값을 기반으로 복제 할 수 있습니다.

이렇게하면 데이터베이스가 느슨하게 일관된 상태를 유지합니다. 네트워크에 내재 할 수있는 트랜잭션 속도, 지리적 분리 및 대기 시간은 한 데이터베이스에서 다른 데이터베이스로 업데이트가 얼마나 빨리 이동하는지 영향을줍니다. 네트워크 연결이 일시적으로 중단되면 Sybase Replication Server는 트랜잭션을 대기열에 올려 놓고 링크가 복원 되 자마자 전송하지만 복제 시스템의 안정성과 안정성은 네트워크 연결의 안정성에 영향을받습니다.

또 다른 사람들은 싸지는 않았지만 구현 및 유지 관리는 비교적 간단합니다.

면책 조항 : 저는 Sybase에서 근무했으며 여전히 SAP 계열사의 일부입니다.

관련 문제