문제

Staging Tables는 RPC (Java RMI 또는 일부 종류의 웹 서비스 호출) 또는 메시징 큐 (예 : JMS)가 더 나은 솔루션이거나 스테이징 테이블이 더 나은 문제가 있습니까?

명확히하기 위해 :

테이블을 준비함으로써 나는 프로세스에 의해 레코드가 테이블 또는 테이블에 추가 된 경우, 두 번째 프로세스 또는 프로세스에 의해 읽히고 행동하는 경우를 의미합니다. 나는 간격 상태의 끝 (종말, 임금 기간 등)을 반영하는 테이블을 언급하지 않습니다. 대부분의 경우 준비 테이블의 스키마는 고객 또는 계정과 같은 응용 프로그램 데이터 유형을 밀접하게 모방합니다.

이 패턴의 잠재적 원인 :

1) 두 프로세스의 소유자 간의 사업 단위 벽은 스테이징이 수정되는 것을 쓰거나 읽는 프로세스를 방지합니다.

2) 스테이징에서 글을 쓰거나 읽는 프로세스에 대한 신뢰가 낮은 것은 개발자가 테이블을 사용하여 데이터 손실을 방지하기 위해 "무언가 실패한 경우"

3) 지식 부족 또는 DGA ( ^%$@를주지 마십시오) 태도

도움이 되었습니까?

해결책

설명대로 스테이징 테이블은 대부분의 데이터웨어 하우스 또는 BI 환경의 필수 부분입니다. 신뢰할 수 있고 탄력적 인 RPC가 같은 작업을 수행 할 것이라고 주장 할 수 있지만, 당신이 틀렸다고 생각합니다.

스테이징 테이블로 데이터를 가져 가면 생산 환경에서 데이터를 옮기고 추가 계산, 요약, 재 표시, 재생 등을 수행 할 수 있습니다. 이것을 RPC로 교체하면 코드와 CPU 사이클을 DB에서 앱 서버로 옮기면 실질적인 이점이 없습니다. 예를 들어 앱 서버는 충돌 가능성이 훨씬 높습니다. RPC를 쉽게 롤백 할 수 없습니다.

물론 시스템간에 데이터를 안정적으로 움직이는 방법에는 여러 가지가 있습니다. 스테이징 테이블은 가장 쉽고 가장 성능이 뛰어나고 신뢰할 수 있으며 개발 용어로 가장 저렴한 방법 중 하나입니다. 항상 올바른 접근 방식이 아니라 더 자주 아니다.

다른 팁

왜 그들은 반란자가 될까요? 스테이징 테이블은 처리 서비스에서 수신 서비스를 분리하는 데 매우 유용합니다. 두 개의 서비스가 분리되면 모든 메시지가 스테이징 테이블에 저장되므로 오류 및 네트워크 오류 처리에 훨씬 더 탄력적입니다.

내가 본 유일한 실시간은 보고서를 생성하는 동안 비정규 화 테이블이 데이터를 보유하는 데 사용될 때의보고 이유입니다. 나는 그것이 그 용도에 문제가 있다고 생각하지 않습니다.

나의 첫 번째 응답은 예이지만, 대부분 내 상황 때문입니다. 당신은 다를 수 있습니다. 비교적 시간 민감한 정보가 명령 구성 요소에서 수신기 구성 요소로 이동 해야하는 시스템이 있습니다. 명령 정보는 데이터베이스 테이블에 넣은 다음 수신기가 업데이트를 위해 테이블을 설문 조사합니다. 이것은 끔찍합니다. 그들은 데이터베이스에 명령에 대한 기록이있을 것이지만, 실제 명령을 영원히 가져 오는 것만으로도, 디커플링은 때때로 수신기가 데이터베이스와 동기화되지 않게 만듭니다.

차라리 JMS (예 : JMS)가 수신기와 데이터베이스 인서터가 듣는 주제 또는 사령관에서 수신기로의 대기열에 메시지를 방송 한 다음 수신기가 상태 청취자에게 상태를 데이터 베이스.

나는 그 코드를 수정하기를 기다릴 수 없다.

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