Datenmengen behandeln im Client-Server System

15/01/2008 - 23:53 von Marcel Eckert | Report spam
Hallo zusammen,

nach einjàhriger Einarbeitungszeit in .NET und die relationalen Datenbanken
komme ich zu einem Problem mit den Datenmengen. Ich möchte dies anhand von 2
Beispielen beschreiben. Ich dachte da an Faustregeln an die man sich mit den
Datenmengen hàlt.

Die Beispiele sind in einem Client-Server System mit einer relationalen
Datenbank verbunden, Mengen natürlich frei erfunden.

Beispiel 1:
Stammdatenbearbeitung von 2.500 Kundenadressen, die angezeigt werden sollen.
Soll ich die Kundenadressen alle einlesen um sie dann zu durchforsten (ist
meist auch die Meinung der Bücher) oder sollten diese eher ca. alle 100 Sàtze
"durchblàttert" werden. Natürlich sind 2.500 Adressen schwer überschaubar
aber der Anspruch des Kunden könnte sein die Adressen im DataGridView zu
durchscrollen. Was ist aus eurer Sicht besser? Vor allem denke ich daran das
ja fiktiv 10 Clients die Anfrage stellen und sich die Server/Netzwerk
belastende Datenmenge auf 25.000 Sàtze erhöhen kann.

Beispiel2:
In der Warenwirtschaft liegen nun 10.000 Lieferscheine zur Fakturierung
bereit.
Sollten die Daten alle besser auf den Client gezogen, verarbeitet und die
Rechnungsdaten zurückgeschickt werden um zwar kurzzeitig das Netzwerk zu
beanspruchen aber den Server frei für andere Anfragen zu lassen oder sollte
besser die vollstàndige Verarbeitung auf dem Server geschehen?

Mir ist bewusst das eine Fall-zu-Fall Betrachtung wichtig ist und das
Hardware, Datenmengen und DB-System eine entscheidende Rolle spielen, jedoch
müssten sich doch ein paar Grundsàtze ableiten können.
Hoffe ihr könnt mir Tips aus der Praxis geben und ich höre mir eure
Meinungen und Faustregeln gern an.

Grüße
Marcel
 

Lesen sie die antworten

#1 Peter Fleischer
16/01/2008 - 07:12 | Warnen spam
"Marcel Eckert" <Marcel schrieb im
Newsbeitrag news:

nach einjàhriger Einarbeitungszeit in .NET und die relationalen
Datenbanken
komme ich zu einem Problem mit den Datenmengen. Ich möchte dies anhand von
2
Beispielen beschreiben. Ich dachte da an Faustregeln an die man sich mit
den
Datenmengen hàlt.

Die Beispiele sind in einem Client-Server System mit einer relationalen
Datenbank verbunden, Mengen natürlich frei erfunden.

Beispiel 1:
Stammdatenbearbeitung von 2.500 Kundenadressen, die angezeigt werden
sollen.
Soll ich die Kundenadressen alle einlesen um sie dann zu durchforsten (ist
meist auch die Meinung der Bücher) oder sollten diese eher ca. alle 100
Sàtze
"durchblàttert" werden. Natürlich sind 2.500 Adressen schwer überschaubar
aber der Anspruch des Kunden könnte sein die Adressen im DataGridView zu
durchscrollen. Was ist aus eurer Sicht besser? Vor allem denke ich daran
das
ja fiktiv 10 Clients die Anfrage stellen und sich die Server/Netzwerk
belastende Datenmenge auf 25.000 Sàtze erhöhen kann.



Hi Marcel,
rechne doch mal selbst durch. Der Anwender benötigt zur Auswahl eines Kunden
nur eine begrenzte Informationsmenge wie beispielsweise Kundenname und Ort.
Die restlichen Daten kann man nach Auswahl für den konkret ausgewàhlten
Kunden nachladen. Bei 2500 Kunden und 100 Byte pro Kunde wàren da 250 kByte
zu laden. Das ist für ein 100MBit-Netz ein Aufwand von ca. 2 Sekunden und
bei 10 Anwender absolut kein Problem, da ja nicht alle Anwender zur gleichen
Zeit ihr Programm starten.

Ich würde aber trotzdem eine Suchstrategie implementieren, die nur einen
Teil der Daten entsprechend Suchkriterium làdt, z.B. Teile des Kundennamens.

Beispiel2:
In der Warenwirtschaft liegen nun 10.000 Lieferscheine zur Fakturierung
bereit.
Sollten die Daten alle besser auf den Client gezogen, verarbeitet und die
Rechnungsdaten zurückgeschickt werden um zwar kurzzeitig das Netzwerk zu
beanspruchen aber den Server frei für andere Anfragen zu lassen oder
sollte
besser die vollstàndige Verarbeitung auf dem Server geschehen?



Wenn keine Bedienereingriffe erforderlich sind, gibt es keinen Grund, die
Daten hin und her zu transportieren. Da kann auf dem Server ein Batch-Job
gestartet werden, der die Daten direkt im Server verarbeitet. Es muss ja
nicht der Datenbankserver damit belastet werden. Es kann ja auch ein anderer
Rechner damit belastet werden, der eine schnelle Verbindung zum
Datenbankserver hat (z.B. ein schneller Terminalserver). Aber ohne konkrete
Lastbetrachtungen gibt es da bestimmt keine vernüftigen Aussagen.

Mir ist bewusst das eine Fall-zu-Fall Betrachtung wichtig ist und das
Hardware, Datenmengen und DB-System eine entscheidende Rolle spielen,
jedoch
müssten sich doch ein paar Grundsàtze ableiten können.



Grundsàtze wirst du ohne Aufgabenstellung kaum festlegen können. Wenn z.B.
gefordert ist, dass die Anwendung auf einem Terminalserver laufen soll, dann
sind die obigen Betrachtungen sowieso sinnlos und es sollte besser eine
schnelle Netzanbindung zwischen Terminalserver und Datenbankserver
installiert werden.

Hoffe ihr könnt mir Tips aus der Praxis geben und ich höre mir eure
Meinungen und Faustregeln gern an.



An erster Stelle sollter der Bediener stehen. Die Effektivitàt seiner Arbeit
ist wichtig, da er langfristig teuer ist und auch Stress durch unpassende
Bedientechnologie vermieden werden sollte, um Fehler zu minimieren und die
Zufriedenheit am Arbeitsplatz zu steigern. Erst, wenn diese
Bedientechnologie festgelegt ist, kann man mit Varianten entscheiden, ob es
sinnvoll ist, ein GigaBit-Netzwerk zu installieren, eine hierarchische
Suchstrategie oder asynchrone Ladevorgànge zu implementieren, oder mit viel
RAM eine umfangreiche Datenhaltung im Client zu unterstützen oder auch eine
langsame Arbeit in Kauf zu nehmen. Hinzu kommen dann auch noch
Kostenbetrachtungen. Ein Programm zu schreiben, was einfach alle
Kundenendaten in den Client làdt, geht schneller, als eine ausgefeilte
Suchstrategie zu erarbeiten und dann auch fehlerfrei zu implementieren.

Viele Gruesse

Peter

Ähnliche fragen