2009-08-11 7 views
0

Ich bin eine Anwendung in Winforms erstellen. Dies wird mit DB (Oracle) sprechen und große Datenmengen (nur zum Ansehen) laden. Abgesehen von Caching und Paging, gibt es noch einen anderen Punkt zu beachten? Leistung ist ein Problem, aber auch die Berücksichtigung von begrenztem Speicher auf dem Benutzercomputer.Laden von riesigen Datenmengen aus der Datenbank - was ist zu beachten?

Danke.

BEARBEITEN - Zusätzliche Informationen: Ich habe auch eine Option, einen Java-Soap-Service zu bauen, um als mittlere Schicht zu fungieren. Wird das helfen?

+2

Ich weiß nichts über das, was Sie versuchen zu tun, aber ich werde immer noch diesen Kommentar anbieten. Ich denke an die Datenbank als eine Bibliothek. Es hält viel mehr als mein Bücherregal, ich muss dort Teile teilen, und es ändert sich ständig. Jedes Mal wenn ich eine Reise dorthin mache, ist es ein Schmerz, also versuche ich alles, was ich brauche, auf einer Reise zu bekommen. Ich möchte jedoch nicht die gesamte Bibliothek auf einmal mit nach Hause nehmen. Es muss ein Gleichgewicht geben. –

Antwort

6

Wenn Sie blättern, gibt es keinen Grund dafür, dass viele Daten "over the wire" kommen. Sie müssen nur die Daten abfragen, die zu diesem Zeitpunkt angezeigt werden, und möglicherweise die nächste Seite, die für die Benutzerleistung zwischengespeichert wird.

Beispiel: Nehmen wir an, Sie haben eine Tabelle mit 1.000.000 Zeilen und 20 Spalten, die für den Benutzer sichtbar sind und die 50 Zeilen gleichzeitig auf dem Bildschirm anzeigen sollen. Wenn Sie das Datenraster anzeigen, sollten Sie nur einen Teil dieser Zeilen (zwischen 50 und ein paar Hundert) mitnehmen. Dies ist eine vernachlässigbare Menge an Daten, die in einem Intranet übertragen werden, und würde das Benutzergedächtnis sicher nicht beeinträchtigen. Selbst wenn Sie 200 Zeilen zwischenspeichern, ist dies immer noch < 200 KB Daten lokal zu speichern und über das Intranet zu übertragen, was Millisekunden dauern würde.

+0

Paging in der Datenbank kann eine gute Option sein, wenn: (1) der zurückgegebene Datensatz gut geordnet ist, (2) eine relativ geringe Flüchtigkeit aufweist und (3) geringe Kosten zum Abrufen der N-ten Seite von Elementen aufweist. – LBushkin

+0

Danke, aber ich habe keine gute Hand auf dB. Kannst du etwas mehr erzählen oder mich auf irgendeinen Link hinweisen? –

+0

Wie greifen Sie auf Ihre Oracle-Datenbank zu? –

2

Sie könnten auch in Betracht ziehen Berichterstattung, Auditing & Sicherheit.

In der Regel werden Benutzer nicht durch eine Million Zeilen blättern, sondern eine Art von Bericht verwenden, um Informationen zusammenzufassen oder abzufragen.

Abhängig von Ihren Anforderungen benötigen Sie möglicherweise gründliche Audit-Trails darüber, wie Daten in Ihre Datenbank gelangt sind und sogar wer sie betrachtet hat.

Schließlich müssen Sie wahrscheinlich sicherstellen, dass nur gültige Benutzer relevante Daten sehen können. Dies kann sich auf Ihre Datenbankstruktur auswirken und wird sich höchstwahrscheinlich auf Ihre Anwendungsarchitektur auswirken.

0

Fragen Sie nur, was Sie im Moment brauchen, und senden Sie nur zurück, was sich wirklich geändert hat. Leute benutzen oft ORMs und ziehen einfach das gesamte Objekt vom Server herunter. Dann senden sie das gesamte Objekt zurück zum Server, wenn sich nur ein kleiner Teil davon geändert hat.

Einiges davon hängt von Ihrem ORM ab, aber eine Menge davon hängt von Ihnen ab und davon, wie Sie das ORM verwenden. Spekulative Zwischenspeicherung kann nützlich sein, aber nur, wenn Sie ziemlich sicher sind, dass Sie die Daten wollen. Beginne damit, so wenig wie möglich anzufordern, dann arbeite auf.

0

Wenn Sie mehrere Selektionen durchführen müssen, um Ihr Datenmodell aufzubauen, müssen Sie die gesamte Arbeit in einer gespeicherten Prozedur erledigen. Das wird den Netzwerkverkehr reduzieren und auch Oracle das tun lassen, wo es gut ist. Viel Glück.

Verwandte Themen