내가 작업중인 프로젝트는 데이터베이스에서 개체 및 개체 모음을 가져 오는 방법에 대한 디자인 딜레마에 직면하고 있습니다. 경우에 따라 객체 ID를 설정하고 필요할 때마다 속성을 쿼리하는 것이 유용 할 때도 있습니다 (객체 당 1 db 호출을 사용하여 모든 속성을 가져 오는 것이 유용 할 때도 있습니다.) * 모두 *). 많은 경우 컬렉션은 버퍼링 객체를 메모리로 지원하고 주문형 액세스를위한 최소 정보로 초기화해야합니다. 결국 모든 것을 메모리에 버퍼링 할 수는 없으며 필요에 따라 모든 것을 읽을 수있는 것은 아닙니다. 유비쿼터스 메모리 대 IO 문제입니다.비즈니스 계층 디자인 딜레마 : 메모리 또는 IO?
누구나 같은 문제에 직면 했습니까? 디자인에 어떤 영향을 미쳤습니까? 힘든 교훈은 무엇입니까? 다른 생각과 권장 사항은 무엇입니까?
EDIT : my 프로젝트는 웹 응용 프로그램, 웹 서비스 및 데스크톱 응용 프로그램에서 사용되는 비즈니스 계층 DLL의 전형적인 예입니다. 데스크톱 응용 프로그램에 대한 제품 목록이 필요하고 제품 이름으로 만 표시되는 경우 모든 제품을 표시하려면이 일련의 단계를 수행하는 것이 좋습니다 (데이터베이스에 백만 개의 제품이 있다고 가정하십시오).
1. 하나 이 같은 API가 소비 될 것입니다 경우 DB
그러나 (온 디맨드 액세스), 제품에 사용자가 클릭 세부 정보를 볼 경우 모든 제품 정보를 얻을 수
2. 하나의 DB를 호출 모든 제품 이름을 얻기 위해 전화 웹 서비스를 통해 모든 제품을 세부적으로 표시하면 네트워크 트래픽이 원활하지 않게됩니다. 이 경우 더 좋은 순서는 다음과 같습니다.
1. 단 하나의 db 호출로 모든 제품과 제품 필드 버퍼링 (이 경우 1 백만 제품 버퍼링도 무섭다)
링크를 제공해 주셔서 감사합니다. Velocity 기사는 매우 즐겁습니다 ... 정적 데이터는 이미 사내 캐시에 캐시되어 있습니다. 정적이 아닌 다른 데이터는 전혀 캐시되지 않으며 메모리로 완전히 읽히지 않습니다 (필드는 필요시 액세스됩니다, 편집 참조). 이 동적 데이터의 경우 메모리를 완전히 또는 부분적으로 읽어야하는지 여부를 결정하기가 어렵습니다. 조언을 주셔서 감사합니다 – kateroh