2012-10-17 2 views
3

현재 mvc 응용 프로그램을 개발하여 기존 SQL Server 데이터베이스에서 읽습니다. 데이터베이스가 비정규 화되어 있습니다. 그리고 일부 테이블을 정규화하기 위해 수정하고 있습니다.정규화 또는 비정규 화 된 테이블을 더 많이 사용하는 performant

이것은 데이터를 읽는 가장 바람직한 방법으로 동료 개발자와 논의하거나 구조가 변경되어야하는지 여부를 결정했습니다. 저장 프로 시저와 함께 ADO.NET을 통해 데이터를 읽습니다. 질문 나는 테이블에 수많은 필드가있는 것이 더 성능이 좋은가 (데이터가 비정규 화되었는지) 또는 데이터를 검색하기 위해 내부 조인 (정규화 된)이있는 테이블이 여러 개 있는가?

내가 언급 했어야 할 사항은 테이블의 작업이 95 % 읽기, 5 % 쓰기입니다.

답변

3

데이터 분석 목적으로 집중적 인보고 사용을 위해 비정규 화 된 데이터를 사용해야합니다. 언급 된 목적을 위해 비정규 화 된 것은 성능을 향상시키는 데 기여합니다.

DOM을 많이 사용하고 & 개의 데이터를 지속적으로 읽는 '표준'클라이언트 - 서버 애플리케이션의 경우 구현하려는 애플리케이션에 대해 많은 지식이 없으면 투표를 진행할 것입니다. 데이터를 표준화하고 가능한 한 중복 된 데이터를 유지하는 것을 피하십시오. 테이블의 디자인을 단순화하여 도메인 모델에 익숙해 지도록하십시오.

간단히 말해서, 집중적 인 데이터 읽기에 대해 더 성능이 좋고, 비정규 화 된 데이터는 더 많은 성능을 나타내며 (보다 포괄적 인) 집중적 인 읽기는 & 도메인 개체 모델 클래스를 작성합니다.

+0

테이블의 작업은 95 % 읽기, 5 % 쓰기이므로 정상화하는 것이 더 좋을까요? – amateur

+0

비정규 화 된 데이터에 대해 95 %의 JOIN 비용이 소요된다면, 데이터를 정규화 된 상태로 유지하는 것이 좋습니다. –

+0

읽기는 최종 사용자에게 데이터를 표시하는 실시간 시스템 용입니다. 약간 불명확합니다. 데이터를 여러 테이블로 분할하거나 하나의 테이블에 유지하는 방법 (조인을 피하는 것)을 제안 하시겠습니까? – amateur

0

글을 읽는 것 이상을 읽으려면, 비정규 화를 해제하는 것이 좋습니다.

독서보다 더 많은 것을 쓰려면 테이블을 표준화해야합니다.

확신이 없거나 두 가지가 혼합 된 경우 두 구성 모두에서 벤치마킹 또는로드 테스트를 수행하고 어떤 것이 응용 프로그램에 더 적합한 지 확인하십시오.

0

비정규 화 된 데이터를 검색하는 것은 조인이 적고 성능 비용보다 스토리지가 적기 때문에 좋은 선택입니다.

0

정상화는 유지 관리를 쉽게하고 필요한 저장 공간을 최소화하기 위해 주로 중복 제거에 관한 것입니다.

비정규 화는 주로 특정 쿼리의 성능을 향상시키기 위해 수행되지만 일부 데이터가 복제 (대개 키 데이터)되기 때문에 유지 관리 작업이 번거롭고 저장 요구 사항이 증가합니다.

1

보고 응용 프로그램 용으로 표준화되지 않게 유지하십시오.

정규화되지 않은 구조가 요구 사항에 맞으면 더 빠를 것입니다.

정규화 된 데이터베이스에서 채워지는 경우 모두 좋습니다. 비록 내가 아직이 데이터베이스를 정규화하지 않더라도 데이터 수집을위한 정규화 된 버전을 만든 다음이를 사용하여 현재 구조를 채 웁니다.

하나의 데이터베이스에서 수집 및보고를 수행해야하는 설계가 절충되므로 다른 데이터베이스 서버 및 일부 유형의 전송 manuever보다 많은 비용이 소요됩니다.

관련 문제