2014-12-16 5 views
0

감사에 대한 엄격한 요구 사항이있는 새 Java 응용 프로그램을 설계하는 중입니다. 간단한 문맥은 여기에 있습니다 :데이터 테이블과 별도의 감사 테이블을 사용한 감사

나는 하나 이상의 중첩 된 관계를 여러 개 가진 복합 엔티티가 있습니다. 필드가 변경되면 개체의 새 버전으로 간주해야하며이 모든 사항을 감사해야합니다. 이제 두 가지 옵션이 있습니다 :

1.) 업데이트 작업을 수행하지 말고, 변경 될 때마다 새 엔티티를 삽입하십시오. 이전 버전 객체에 대한 참조를 보유하고 싶지 않기 때문에 모든 관계형 객체를 작성해야합니다 (변경되지 않았더라도). 내 데이터 테이블도 내 감사 테이블이됩니다.

또는

2.

)는 항상 업데이트 작업을 별도의 테이블의 감사 정보를 유지합니다. 이는 구현면에서 좀 더 복잡합니다.

나는이 두 가지 방법 중 하나에 대해 좋은 대 나쁜 관행이 있는지 알고 싶습니다.

감사합니다, -csn

+3

두 번째 옵션을 자동으로 수행하는 최대 절전 모드를 사용할 수 있습니다. – uaiHebert

답변

1

어떤 선택을 정의해야하는 것은 당신의 삽입/업데이트/"라이브"데이터와 감사 모두를위한 패턴을 읽을 수있다 .

가장 일반적으로이 패턴은 두 종류 모두 매우 다릅니다.
- "생중계"를 유지하면 응용 프로그램에 많이 달려 있지만 상수 삽입이 있다고 상상할 수 있습니다. 중요 업데이트; 많은 읽음. 실시간 데이터는 또한 트랜잭션 성을 요구하며 일관성을 유지해야하는 테이블간에 많은 관계가 있습니다. 빠르고 복잡한 검색이 필요할 수 있습니다. 많은 열에 대한 색인
- 감사에는 많은 삽입이 있습니다. 거의 업데이트 없음; 몇 가지 읽기. 읽기, 검색에는 복잡한 검색 (예 : 감사 만보고 날짜순으로 정렬)과 여러 열의 색인이 필요하지 않습니다.

따라서로드 및 데이터 크기가 증가하면 사용 사례에 맞게 데이터를 분할하고 테이블을 최적화해야 할 수 있습니다.

+0

네, 그 말이 맞는 것입니다. 확장 성은이 데이터가 빠르게 커질 수 있다는 우려를 불러 일으키는 한 가지 문제입니다. – csn