Oracle 11g 데이터베이스에서 작업 중입니다. 시스템 ATM에는 트랜잭션 관련 레코드에 대한 많은 내역 테이블이 있습니다. 우리가 가지고있는 문제는 트랜잭션 히스토리 정보 레코드가 여러 테이블에 걸쳐 있다는 것입니다. 예를 들어 버전 열이있는 TransactionDetail
테이블과 자신의 버전 열이있는 TransactionQuestions
테이블이 있습니다. 역사적인 정보를 검색해야 할 때 대용량보기를 사용하여 데이터베이스에서이 데이터를 가져옵니다. 엄청나게 느리며 버전 및 많은 조인으로 인해 크기와 복잡성으로 인해 버그가 계속 발견됩니다.대대적 인보기 대 역사표
우리가 취하려고하는 접근법은 다중 히스토리 테이블에 데이터를 저장하는 것입니다. 나중에 더 많은 뷰에 나중에 조인하기위한 목적으로 각 트랜잭션의 전체 시스템 상태를 많은 열이있는 방대한 테이블에 저장하고, PK에 대한 색인 및 문제 해결.
데이터가 집계되지 않고 검색되므로 성능 문제가 해결됩니다.
내 눈에 테이블 접근법의 가장 큰 단점은 SQL 뷰 구조에 버그가있는 경우 메커니즘에서 버그가있는 경우 (보기에서 코드로 본질적으로 이동 됨) 고정되어 있으며 실제 내역 데이터가 영향을받지 않는다는 것입니다. 데이터를 기록 테이블에 씁니다. 데이터가 손상되어 고칠 수 없습니다.
여러 히스토리 테이블의 데이터를 결합한보기와 비교할 때 대규모 히스토리 테이블이 가져올 다른 단점은 무엇입니까?