데이터 정렬은 클라이언트에서 수행해야 합니까 아니면 서버에서 수행해야 합니까?
서버에서 데이터를 받아서 클라이언트에 GWT를 이용해서 보여주고 싶습니다.
GWT는 여기서 문제가 아닙니다. GWT를 Ajax 호출로 대체하거나 웹 앱이 아닌 실제 애플리케이션으로 전환할 수 있습니다.
서버에서 정렬을 해야 하나요, 아니면 자바스크립트를 이용해서 클라이언트에서 정렬을 해야 하나요?
각 접근 방식에는 장단점이 있습니다.
- 페이지 구성이 필요하고 전체 데이터를 클라이언트에 다운로드하지 않으려면 서버에서 정렬을 수행해야 합니다(그렇지 않으면 클라이언트는 현재 있는 행만 정렬할 수 있으므로 다른 열로 다시 정렬할 경우 잘못된 결과를 초래합니다).
- 서버에서 정렬하는 것이 더 빠르지만(예: 더 많은 행/초를 정렬할 수 있음), 10000개의 클라이언트를 한 번에 서비스해야 하는 경우에는 쉽게 뒤집힐 수 있습니다.
- 클라이언트 정렬 시 데이터를 다시 다운로드하지 않고 다시 정렬할 수 있습니다.
이상적으로 서버에서 정렬을 수행하는 것이 좋습니다.
고객의 리소스가 부족하다고 가정하는 것이 가장 좋습니다.예를 들어 데스크톱에서 GWT 앱을 실행하는 사람도 있지만 CPU/RAM이 적은 아이패드/폰에서 GWT 앱을 실행하는 사람도 있습니다.
예를 들어 SQL ORDER BY 절을 사용하여 서버 측에서 정렬을 수행하는 표준 방법이 있지만 클라이언트 측에서 정렬을 수행하려면 자신만의 루틴/방법을 구현해야 할 수도 있습니다.
상황에 따라서.. :)
- 얼마나 많은 데이터를 분류해야 합니까?얼마나 빠릅니까?"가능한 한 빨리" 오케이...당신이 받아들일 수 있는 가장 느린 것은 무엇입니까?고객이 이 일을 처리할 수 있습니까?서버는?이러한 요소들은 또 어떤 책임을 가지고 있으며, 이것이 갈등을 일으키게 합니까?
- 데이터를 얼마나 안정적으로 분류해야 합니까?예를 들어, 때때로 데이터가 정렬되지 않은 경우 이 문제가 해결됩니까?
- 아키텍처의 요소에 대한 책임은 어떻게 할당됩니까?그 부분에 관해서는 어떤 요소가 있습니까?데이터베이스가 있습니까?비즈니스 계층은 어떻습니까?단순히 "클라이언트 대 서버"보다 더 복잡한 세상이 될 수 있습니다.
- 데이터는 어떻게 사용됩니까?여러 종류를 수행해야 합니까?예를 들어, A->Z와 Z->A?
- 클라이언트와 서버 간의 데이터 전송 비용이 합리적입니까?그것을 합리적으로 만드는 다른 방법이 있습니까?
건축학적으로 말하면, 이 질문에 답하려면 시스템에서 원하는 속성을 결정하고 다양한 설계 대안 간의 균형을 평가해야 합니다.시스템에 대한 자세한 정보 없이는 이 이상의 조언을 제공하기가 어렵습니다.
항상 클라이언트보다 서버에서 정렬하는 것이 더 빠르다는 포괄적인 진술에 주의해야 합니다.성씨와 성씨의 연접으로 분류된 수천 개의 기록을 돌려주는 경우가 있었습니다.이 두 분야 중 어느 것도 색인화되지 않았고 저는 이를 통제할 수 없었습니다.알다시피 연결된 문자열을 정렬하는 것은 데이터베이스가 본질적으로 잘 수행하는 것이 아닙니다.숫자 및/또는 색인화된 필드를 찾습니다.이 경우 고객 정렬이 더 빨라졌습니다.제가 데이터베이스를 제어할 수 있었다면 오라클의 함수 인덱스를 이 두 개의 필드에 배치했을 것입니다.
이 이야기의 교훈은 아무것도 가정하지 않고 애플리케이션을 프로파일링하여 시나리오에 가장 적합한 것을 찾는 것입니다.
언급URL : https://stackoverflow.com/questions/10721430/should-data-sorting-be-done-on-the-client-or-on-the-server
'code' 카테고리의 다른 글
PowerShell - Get-Credential 디코딩 암호? (0) | 2023.09.10 |
---|---|
NS_ERROR_FAILURE : Firefox에서 실패 (0) | 2023.09.10 |
Kubernetes에서 컨테이너를 계속 가동하려면 어떻게 해야 합니까? (0) | 2023.09.10 |
Alpine Docker 파일의 장점 -----캐시 없음 대 rm/var/cache/apk/* (0) | 2023.09.10 |
plsql 오라클 DB 날짜에 대해 요일을 가져오는 방법 (0) | 2023.09.10 |