문제

3 계층 응용 프로그램을 개발했으며 데이터베이스에서 데이터를 채우는 데 문제가 있습니다. 내 응용 프로그램에는 데이터베이스에서 큰 데이터를 쿼리하는 창이 있으며이 프로세스는 오랜 시간이 걸립니다. (내 클라이언트는 서버에서 멀리 떨어져 있으며 그 사이의 연결은 128kb/s입니다).

그런 다음이 문제를 해결하기위한 해결책을 생각했습니다. 솔루션은 y 초마다 데이터의 X 레코드를 채우는 것입니다. (예 : UI에 먼저 표시 할 10 개의 레코드를 채우고 5 초마다 10 행을 더 표시합니다).

이 문제를 해결하기위한 좋은 해결책입니까? 이것을 해결하는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

디스플레이 목적이라면 페이징을 사용해야합니다. UI가 스크롤 막대로 더 많은 정보에 액세스 할 때 UI가 레코드의 다음 "페이지"를 잡는 여기서 이것의 변형이 있습니다. 데이터를 집계 해야하는 경우 쿼리에서 데이터를 수행하면 전체 데이터가 네트워크를 트래그하지 않습니다. 당신이 실제로/절대적으로 전체 데이터를 얻고 그것으로 일부 프로세스를 수행해야한다면, 그것을 한 번에 모두로드하기에는 너무 큰지 고려하십시오. 이 경우 데이터 덩어리를 잡고 관련 프로세스를 실행 한 다음 다른 청크를 잡습니다 (ON). 어쨌든 UI (스레드 / 비동기 연산)를 차단하지 않는 접근 방식으로 수행해야합니다.

다른 팁

Freddy는 저를 이겼지 만 예를 들어, 많은 데이터베이스 뷰어가 Scroll Bars를 사용하므로 다음 페이지/데이터보기를 자동으로 가져옵니다.

웹 사이트에 대해 생각하면 거의 항상 데이터를 한 번에로드하지 않기 위해 데이터를 페이지에 페이지를 페이지로 표시합니다.

게으른로드를 수행하는 옵션입니까 (따라서 한 번에 모두가 아니라 주문형 데이터를로드 할 것입니다)?

응용 프로그램 UI가 허용 할 수 있다면 여러 페이지에 레코드를 표시 할 수 있습니다.

또한 비동기 호출을 사용하여 데이터를 검색하여 쿼리 중 앱을 동결하지 않도록 (데스크탑 앱인)

웹 앱이라면 Ajax 사용을 고려하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top