현재 데이터베이스에서 가져온 막대한 양의 정보를 집계하는 응용 프로그램에 "보고서"를 구현 중입니다. 테이블의 각 셀은 다른 테이블의 합계에서 가져옵니다.
보고서에는 항상 사용자에게 최신 데이터가 표시되어야합니다. 각 데이터는 소프트웨어의 어느 곳에서나 바뀌므로 보고서가 최신 상태 여야합니다.데이터베이스 트리거가이 비즈니스 로직과 함께 사용할 수있는 방법입니까?
너무 많은 SQL이 생성됩니다.
중간 결과와 테이블을 캐싱하려고했습니다 (DB에서). 하지만 데이터가 변경 될 수있는 앱의 어느 곳에서든지 recomputeCache()
으로 끝나는 캐시를 다시 계산해야합니다 (절대 최신 보고서를 유지해야 함). 일할 수있는
DBMS 트리거 : 다음을 계산하는 트리거를 보유하고 다음 하나를 계산 테이블에 트리거 등
하지만 트리거 두려워 :
- 무엇 복잡성에 대해? 컴퓨팅을 수행하는 코드는 상당히 크고 "스마트"합니다. 구문 행 설탕으로 가득 찬 .NET 200 라인은 PL/SQL 500 개가됩니다.
- 유지 관리 가능성은 어떻습니까? PL/SQL을 찾기, 읽기, 이해하기, 수정하기, 디버그하기 등의 작업이 더 힘들지 않습니까?
- 비즈니스 로직 캡슐화는 어떻게됩니까? 이 컴퓨팅이 비즈니스 로직 계층에 속해서는 안됩니까?
나는 나 "전형적인"소프트웨어 캐싱 사이에서 선택을 (내가 스마트 캐시 재 계산 전략을 찾기 위해 노력하겠습니다) 도움이 조언을 듣고 있어요 테이블 재 계산을 트리거 기반 (그리고 어쩌면 소프트웨어 모범 사례를 희생하고 유지?) ...
고마워요!
자동 업데이트와 함께 구체화 된보기를 사용할 수 있습니까? –