2010-01-04 6 views

답변

4

이것은 실제로 데이터 액세스에 사용하는 메커니즘에 많이 달려 있습니다. 당신은 아주 확장 성있는 데이터 접근과 많은 스레드를 가지고 있다면, 어떤 형태의 스레드 정적 데이터 접근을 사용하는 것이 유리할 수 있습니다.

확장 가능한 데이터 액세스 권한이없는 경우 공급자는 프로세스 당 여러 스레드를 지원하지 않거나 해당 지점에서 확장 성이 필요하지 않습니다. 적절한 동기화가 적용된 단일 톤을 사용하면 더 간단하고 쉽게 구현할 수 있습니다 .

대부분의 비즈니스 스타일 응용 프로그램에서 나는 개인적으로 싱글 톤 접근법을 유지 관리하기가 더 쉽다고 생각합니다. 다른 점이 없으면 효과적으로 테스트하는 것이 훨씬 쉽습니다. 데이터 액세스를 위해 여러 개의 스레드가 필요하지는 않습니다. 데이터 액세스가 유용성에 영향을 미치는 병목 현상이되지는 않을 것입니다 (올바르게 설계하고 배치 요청을 적절하게 수행 한 경우).

+0

내 DAO는 실제로 SimpleDB와 RPC를 통한 PHP API의 두 소스에 연결합니다. 내 생각 엔 병목 현상을 피하기 위해 약 100 개의 스레드가있는 스레드마다 DAO를 사용해야합니다. 이런 경우가 아니라면 분명한 이유가 있습니까? – pondermatic

+0

아마도 DAO를 싱글 톤으로 만들고 내부적으로는 비동기로 작업하는 것이 좋습니다. 그런 다음 필요에 따라 ThreadPool을 사용하여 확장 할 수 있습니다. 웹 요청이 비동기 적으로 잘 작동하므로 PHP API의 경우 특히 그렇습니다. 대부분의 웹 프레임 워크는이 기능을 잘 지원합니다 ... –

0

를 사용하여 최고의, 응용 프로그램 아키텍처에 맞는 접근하지 않는 :

1) 귀하의 데이터 액세스 개체가있는 경우에 당신이 스레드 안전 싱글 톤으로 의지해야 만들 비싸다.

2) 객체는 Active Record pattern처럼 변경 가능한 상태를 유지합니다. (시간 제한 임계 값과 같이 변경할 수없는 DAO 구성 상태는 계산되지 않습니다.)