AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Große Menge an Daten speichern

Ein Thema von cheatzs · begonnen am 17. Aug 2004 · letzter Beitrag vom 17. Aug 2004
Antwort Antwort
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#1

Große Menge an Daten speichern

  Alt 17. Aug 2004, 12:03
Hi Leute,

hab ein dynamisches Array das im Moment Daten über Dateien speichert (Record von Größe, Hash, ...).
Nun benötige ich bei meinem Projekt ca. 50000-1000000 solcher Dateien (diese sind nur wenige Bytes groß). Daran lässt sich nichts rütteln.

Beim Testen des Programmes ist beim Laden der Daten in das Array kein Fehler aufgetreten, jedoch beim Zugriff auf Elemente mit dem Index größer als ca. 5000.

Meine Frage ist ob man die Daten überhaupt im Array speichern sollte, vielleicht eher in einer Datenbank (SQL) oder in einer eigens erstellten Datei oder in einer verketteten Liste?
Vielleicht gibt es auch noch andere Möglichkeiten???

Danke im Vorraus

Bye
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: Große Menge an Daten speichern

  Alt 17. Aug 2004, 12:07
Eine soöche anzahl sollte man natürlich nicht in einem Array Speichern.

Eine DB ist gut sie ist meist sehr schnell und einfach zu händeln.(Währe gut wenn man D Pro. oder höher hat)
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#3

Re: Große Menge an Daten speichern

  Alt 17. Aug 2004, 12:12
Bist du sicher, dass die Daten schneller verwaltet werden???
Ich mein, das Programm muss sich ja erstmal zur Datenbank verbinden, alles eintragen, sich wieder Trennen. Dann werden die ganzen Daten auf die Platte geschrieben .... später wieder gelesen...

Beim Array kann ich doch direkt auf den Speicherbereich mit Hilfe des Index zugreifen.
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#4

Re: Große Menge an Daten speichern

  Alt 17. Aug 2004, 12:13
Hallo cheatzs,
die Lösung Deines Problems geht aus Teilen Deines Postings hervor.
Eine Menge von einzelnen Dateien mit kleinen Datenmengen ist
vielleicht tatsächlich unpraktisch. Das hängt allerdings auch
vom Problem selbst ab. Wenn die Dateien Daten vom gleichen Typ haben,
kannst Du sie natürlich in eine Datenbank importieren. Bedenke bitte,
dass "Methoden" wie Arrays, Listen, etc., die zur Laufzeit Deine
50000-1000000 Daten beinhalten würden Deinen Arbeitsspeicher sehr
belasten.
Daher meine Frage:
Benötigst Du diese Menge an Daten zur gleichen Zeit?
Wenn ja, dann ist Dein Vorschlag mit der Datenbank eine gute Lösung,
wenn nicht, dann kannst Du Deine Daten aus den Dateien teilweise in
Konstrukte wie Arrays, dyn. Listen, etc. übertragen. D.h. die Daten,
die Du zu einer bestimmten Zeit benötigst, schnappst Du Dir aus den
Dateien. Benötigst Du diese Daten nicht mehr, dann lässt Du die Daten
wieder frei (ich denke da an Filestreams).
Es hängt also davon ab, auf wie viele Daten Du zu gleichen Zeit zugreifen möchtest.

DANNYBOY
How much wood would a wood-chuck chuck if a wood-chuck would chuck wood?
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#5

Re: Große Menge an Daten speichern

  Alt 17. Aug 2004, 12:17
Hi,

also ich benötige die Daten alle zur selben Zeit, weil ich nicht vorhersehen kann, wann welche Daten gebraucht werden.
Also werde ich mich mal nach Datenbanken umschauen...

Danke

Bye
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#6

Re: Große Menge an Daten speichern

  Alt 17. Aug 2004, 12:26
Entscheident ist, wann Du welche Menge an Daten lädst.
Du musst abwegen können, welche Daten einen schnellen Zugriff
benötigen und diese Daten dann in Dein Array packen, um den Zugriff
zu beschleunigen. Die Verbindung zur Datenbank geschieht lediglich ein
Mal, nämlich beim Start des Programms. Der Zugriff auf die Daten der
Datenbank ist allemal schneller als aus den 50000-1000000 Dateien zu
lesen, mal abgesehen vom Öffnen und Schließen der Dateien.
50000-1000000 verschiedene Dateien bedeuten 50000-1000000 verschiedene
Plattenzugriffe --> Das dauert. Ich kenne nicht die Daten in Deinen
Dateien, aber wenn ich das richtig verstehe und Du selbst sagst, dass es
Dir um Performace geht, dann solltest Du die Daten Deiner 50000-1000000
Dateien in eine einzige Datei packen. Dann kannst Du (Du hast ja gesagt,
dass Du die Daten zur gleichen Zeit benötigst) sie in Dein Array laden.
Bedenke aber, dass Dein Array niemals größer werden kann als der Dir
zur Verfügung stehende RAM.
How much wood would a wood-chuck chuck if a wood-chuck would chuck wood?
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

Re: Große Menge an Daten speichern

  Alt 17. Aug 2004, 12:35
Also wenn man alle Daten auf einmal (und schnell) braucht dann sollte man die in einem Stream speichern das geht auch sehr schnell.

Problem ist nur wenn die Grösse der Daten sich ändert also die Grösse nich immer gleich ist den dann kann man nich im Stream suchen.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz