ETL 프로세스 설계시 새로운 내용입니다. 현재 저는 두 개의 데이터베이스를 가지고 있는데, 하나는 애플리케이션이 매일 트랜잭션을 위해 사용하는 라이브 데이터베이스입니다. 다른 하나는 데이터웨어 하우스입니다.ETL 프로세스를 수행 할 때 OLTP에 미치는 영향을 줄이는 방법
정기적으로 새 데이터를 삽입하는 라이브 데이터베이스에 테이블이 있습니다. 목표는 매일 밤 ETL 프로세스가 실행중인 데이터베이스의 데이터를 데이터웨어 하우스로 전송하고 라이브 데이터베이스의 데이터를 삭제하는 것입니다.
지식이 부족하기 때문에 해결 방법은 롤링 테이블 호출을 구현하는 것입니다. 기본적으로 라이브 데이터베이스에서 동일한 구조를 가진 두 개의 테이블이 있습니다. 나는 그들을 tblLive1과 tblLive2이라고 부른다. 나는 또한 동의어 전화 tblLive를 가지고있다. 모든 삽입은 동의어에 대해 수행됩니다. 동의어는 표 중 하나를 가리 킵니다.
ETL 프로세스를 실행할 때 tblLive2을 가리키는 새 동의어를 삭제하고 생성하는 저장 프로 시저가 있습니다. 이렇게하면 ETL 프로세스가 응용 프로그램에 영향을주지 않고 tblLive1의 데이터를 변환 할 수 있습니다. ETL 프로세스가 실행되는 데 1 시간이 걸린다는 가정하에, ETL 프로세스가 테이블을 잠그지 않아도 응용 프로그램이 새 데이터를 삽입하지 못하게 할 것입니다.
이 솔루션은 이론적으로는 작동해야하지만 우아하지는 않습니다.
이 문제가 일반적인 문제인 것으로 확신합니다. 거기에 다른 해결책이 있습니까?
어떤 데이터베이스를 사용하고 있으며 해당 데이터베이스의 버전은 무엇입니까? 그 대답은 데이터베이스에 의존하지 않는 솔루션을 생각해내는 오버 헤드를 정말로 원하지 않는 한, 데이터베이스 의존적 일 가능성이 높습니다. –
지금 SQL Server를 사용하고 있지만 개념은 Oracle에도 적용됩니다. – dsum