2010-08-10 4 views
0

직장에서 기존의 대규모 PHP 애플리케이션에서 구현 된 n- 티어 모델을 얻으려고합니다.어드밴티지 데이터 액세스 레이어

성능면에서 나는 추가 DA 레이어의 요점을 알지 못하므로 내 노인을 설득해야합니다. 이제 코드는 비즈니스 논리에서 Db를 쿼리하고 결과 집합에서 데이터를 검색하는 동안 루프에서 계산합니다. 낮은 성능 비용.

저는 투명성 ('우리는 SQL을 읽을 수 있습니다'), 데이터베이스를 변경 ('일어나지 않음')이라는 명백한 이유에 의해 그들을 설득하려고했습니다.

그들은 별도의 레이어에서 작업을 수행하는 경우 데이터 집합이 만들어 져야하며 비즈니스 계층에서 다시 반복되어야 함을 의미합니다. 원가 계산 성능. 또한이 n 계층 모델을 만들면 '실제'임금이없는 많은 작업이 수행됩니다.

성능 문제가 있습니까? 따라서 별도의 DA 레이어에 no라고하는 논리적 인 이유가 있습니까?

답변

3

나는 중요한 포인트를 만난다고 생각합니다. 추가 추상화 레이어가없는 손으로 최적화 된 SQL은 더 빠를 수 있습니다. 그러나, 그것은 가격에 온다.

다음과 같은 질문에 대한 답입니다. 추가 속도의 이점이 데이터베이스 액세스 레이어의 이점보다 큽니다. 엔지니어가 비즈니스 로직 (도메인 계층)에 집중할 수 있도록 SQL 특정 지식을 캡슐화합니다.

대부분의 경우 데이터베이스 추상화 계층의 성능은이 문제에 대한 전문가의 숙련도에 따라 충분할 것입니다. 제대로 수행되면 이중 버퍼/루핑을 상당 부분 피할 수 있습니다.

퍼포먼스가 매우 중요해서 추상화 레이어가 옵션이 아닌 애플리케이션의 비율은 거의 없다고 생각합니다. (내 추측은 20 % 이하입니다.)

그러나 가능한 하이브리드 솔루션도 있습니다. 융통성과 편의성이 속도보다 중요시되는 모듈의 20 %에서 데이터베이스와 직접 대화하는 80 %의 모듈에는 추상화 레이어를 사용하십시오.

필자는 추상화 계층에 찬성표를 던지고 필요할 때 성능을 최적화 할 것입니다 (데이터베이스와 직접 대화하는 것 이외의 방법으로 달성 할 수 있음). 이 & 과학적으로 입증되지 않은 기술 너무 복잡하기 때문에

+0

타협의 방법처럼 보입니다. 감사. – eddy147

1

데이터 액세스 계층은 시대에 뒤 떨어진 기술이 본 기술에 비해, 그것은 같은 심각한 응용 프로그램 도메인 문제에 직면하고 .NET &는 데이터 유형을 검증하는 동안 루프에서 각각 SQL 데이터 유형을 checkes 하나의 클래스 파일에서 다른 클래스 파일로 코드를 실행하는 것은 더 많은 시간이 걸린다. 왜냐하면 .net 어셈블리가 밀접하게 결합되어 있지 않기 때문에 우리는 수세 리눅스를 매우 매끄러운 방식으로 256 MB RAM에서 실행할 수 있지만 Windows 7 또는 Windows XP는 실행할 수 없다는 것을 증명한다. 실제로 닷넷에서는 힙에 사용되지 않는 메모리가 많이 남았고, 이는 DAP 아키텍처에서 많은 성능 손실을 가져 왔으며, DAL에서의 노력은 직접 연결과 비교할 때 95 % 더 많은 것으로 나타났습니다. 저장 프로 시저를 사용하는 데이터베이스, DAL 사용 안 함, 그것 대신 WCF 또는 xml 웹 서비스를 사용하십시오.

관련 문제