Wo sollte Daten sortiert werden? Server oder Client?

8

Ich bekomme von einem Server einige Daten, die ich mit GWT auf dem Client anzeige.

GWT ist hier nicht das Problem, Sie können GWT durch Ajax-Aufrufe ersetzen oder Sie können es anstelle einer Web-App in eine echte Anwendung umsetzen.

Wo sollte die Sortieraktion durchgeführt werden? Auf dem Server? oder auf dem Client mit Javascript, nach dem Erhalt der Daten und vor der Anzeige von ihnen?

    
Jerome Cance 23.05.2012, 13:53
quelle

5 Antworten

8

Jeder Ansatz hat seine Vor- und Nachteile:

  • Wenn Sie Paginierung benötigen und nicht die gesamten Daten auf den Client herunterladen möchten, müssen Sie die Sortierung auf dem Server durchführen (andernfalls kann der Client nur die Zeilen sortieren, die er gerade hat, was zu falschen Ergebnissen führt) , wenn Sie nach einer anderen Spalte sortieren.
  • Die Sortierung auf dem Server ist schneller (wie in: Sie können mehr Zeilen / Sekunden sortieren), aber wenn Sie 10000 Clients gleichzeitig bedienen müssen, kann dies leicht invertiert werden.
  • Beim Sortieren auf dem Client können Sie neu sortieren, ohne die Daten erneut herunterzuladen.
Chris Lercher 23.05.2012, 14:04
quelle
1

Im Idealfall sollte die Sortierung auf dem Server erfolgen, weil: -

  1. Es ist am besten anzunehmen, dass Ihr Client nur über geringe Ressourcen verfügt. Zum Beispiel starten manche Leute die GWT-App von einem Desktop aus, aber ein anderer kann die GWT-App von einem iPad / Smartphone starten, das weniger CPU / RAM hat

  2. Es gibt Standardmethoden zum Sortieren auf der Serverseite, zum Beispiel mit der SQL ORDER BY-Klausel, aber Sie müssen möglicherweise Ihre eigene Routine / Methode implementieren, um die Sortierung auf der Client-Seite durchzuführen.

    >
Anuroop 23.05.2012 14:06
quelle
1

Wenn Sie eine SQL-Datenbank benutzen (irgendeine von ihnen: MySQL, MSSQL, etc. usw.), dann sollte die Sortierung durchgeführt werden, wenn die Daten von der Datenbank und nicht mit Code und insbesondere nicht mit Javascript abgerufen werden.

%Vor%

Dies ist eine anständige Referenz. Kurz einfach und auf den Punkt: Ссылка

SQL-Datenbanken sind für diese Art von Funktionen optimiert und bieten Ihnen die beste Leistung und die geringste Menge an Problemen. Die Ausführung dieser Aktionen mit serverseitigem Skript ist übermäßig intensiv und das Ausführen dieser Aktionen auf der Clientseite mit Javascript ist aus mehreren Gründen schlecht.

    
mawburn 23.05.2012 14:02
quelle
0

Ich denke, Sie sollten es auf dem Client tun, weil ich denke, wenn es 10000 erfordert, dann wird Ihr Aufschlag nicht mindestens 10000 mal sortieren müssen.

    
KingViker 23.05.2012 14:05
quelle
0

Kommt drauf an ...:)

  1. Wie viele Daten müssen sortiert werden? Wie schnell? "so schnell wie möglich" ok ... Was ist das langsamste was du akzeptieren kannst? Kann der Kunde damit umgehen? Was ist mit dem Server? Welche anderen Verantwortlichkeiten haben diese Elemente und verursacht dies Konflikte?
  2. Wie zuverlässig müssen die Daten sortiert werden? Zum Beispiel, wenn die Daten nicht sortiert wurden, wäre das manchmal OK?
  3. Wie sind die Verantwortlichkeiten den Elementen in Ihrer Architektur zugeordnet? Was sind die Elemente? Hast du eine Datenbank? Was ist mit einer Geschäftsschicht? Die Welt könnte komplexer sein als nur "Client vs. Server"
  4. Wie werden die Daten verwendet? Müssen mehrere Sortierungen durchgeführt werden? Zum Beispiel A- & gt; Z und Z- & gt; A?
  5. Sind die Kosten für die Übertragung von Daten zwischen Client und Server angemessen? Gibt es andere Möglichkeiten, um es vernünftig zu machen?

Um diese Frage zu beantworten, müssen Sie sich architektonisch für die gewünschten Eigenschaften in Ihrem System entscheiden und die Kompromisse zwischen verschiedenen Designalternativen bewerten. Ohne mehr über Ihr System zu wissen, ist es schwierig, darüber hinaus Ratschläge zu geben.

    
Michael 24.05.2012 17:33
quelle