code

데이터 정렬은 클라이언트에서 수행해야 합니까 아니면 서버에서 수행해야 합니까?

starcafe 2023. 9. 10. 12:26
반응형

데이터 정렬은 클라이언트에서 수행해야 합니까 아니면 서버에서 수행해야 합니까?

서버에서 데이터를 받아서 클라이언트에 GWT를 이용해서 보여주고 싶습니다.

GWT는 여기서 문제가 아닙니다. GWT를 Ajax 호출로 대체하거나 웹 앱이 아닌 실제 애플리케이션으로 전환할 수 있습니다.

서버에서 정렬을 해야 하나요, 아니면 자바스크립트를 이용해서 클라이언트에서 정렬을 해야 하나요?

각 접근 방식에는 장단점이 있습니다.

  • 페이지 구성이 필요하고 전체 데이터를 클라이언트에 다운로드하지 않으려면 서버에서 정렬을 수행해야 합니다(그렇지 않으면 클라이언트는 현재 있는 행만 정렬할 수 있으므로 다른 열로 다시 정렬할 경우 잘못된 결과를 초래합니다).
  • 서버에서 정렬하는 것이 더 빠르지만(예: 더 많은 행/초를 정렬할 수 있음), 10000개의 클라이언트를 한 번에 서비스해야 하는 경우에는 쉽게 뒤집힐 수 있습니다.
  • 클라이언트 정렬 시 데이터를 다시 다운로드하지 않고 다시 정렬할 수 있습니다.

이상적으로 서버에서 정렬을 수행하는 것이 좋습니다.

  1. 고객의 리소스가 부족하다고 가정하는 것이 가장 좋습니다.예를 들어 데스크톱에서 GWT 앱을 실행하는 사람도 있지만 CPU/RAM이 적은 아이패드/폰에서 GWT 앱을 실행하는 사람도 있습니다.

  2. 예를 들어 SQL ORDER BY 절을 사용하여 서버 측에서 정렬을 수행하는 표준 방법이 있지만 클라이언트 측에서 정렬을 수행하려면 자신만의 루틴/방법을 구현해야 할 수도 있습니다.

상황에 따라서.. :)

  1. 얼마나 많은 데이터를 분류해야 합니까?얼마나 빠릅니까?"가능한 한 빨리" 오케이...당신이 받아들일 수 있는 가장 느린 것은 무엇입니까?고객이 이 일을 처리할 수 있습니까?서버는?이러한 요소들은 또 어떤 책임을 가지고 있으며, 이것이 갈등을 일으키게 합니까?
  2. 데이터를 얼마나 안정적으로 분류해야 합니까?예를 들어, 때때로 데이터가 정렬되지 않은 경우 이 문제가 해결됩니까?
  3. 아키텍처의 요소에 대한 책임은 어떻게 할당됩니까?그 부분에 관해서는 어떤 요소가 있습니까?데이터베이스가 있습니까?비즈니스 계층은 어떻습니까?단순히 "클라이언트 대 서버"보다 더 복잡한 세상이 될 수 있습니다.
  4. 데이터는 어떻게 사용됩니까?여러 종류를 수행해야 합니까?예를 들어, A->Z와 Z->A?
  5. 클라이언트와 서버 간의 데이터 전송 비용이 합리적입니까?그것을 합리적으로 만드는 다른 방법이 있습니까?

건축학적으로 말하면, 이 질문에 답하려면 시스템에서 원하는 속성을 결정하고 다양한 설계 대안 간의 균형을 평가해야 합니다.시스템에 대한 자세한 정보 없이는 이 이상의 조언을 제공하기가 어렵습니다.

항상 클라이언트보다 서버에서 정렬하는 것이 더 빠르다는 포괄적인 진술에 주의해야 합니다.성씨와 성씨의 연접으로 분류된 수천 개의 기록을 돌려주는 경우가 있었습니다.이 두 분야 중 어느 것도 색인화되지 않았고 저는 이를 통제할 수 없었습니다.알다시피 연결된 문자열을 정렬하는 것은 데이터베이스가 본질적으로 잘 수행하는 것이 아닙니다.숫자 및/또는 색인화된 필드를 찾습니다.이 경우 고객 정렬이 더 빨라졌습니다.제가 데이터베이스를 제어할 수 있었다면 오라클의 함수 인덱스를 이 두 개의 필드에 배치했을 것입니다.

이 이야기의 교훈은 아무것도 가정하지 않고 애플리케이션을 프로파일링하여 시나리오에 가장 적합한 것을 찾는 것입니다.

언급URL : https://stackoverflow.com/questions/10721430/should-data-sorting-be-done-on-the-client-or-on-the-server

반응형