Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mein Array ist explodiert (https://www.delphipraxis.net/44982-mein-array-ist-explodiert.html)

bgeissl 27. Apr 2005 18:50


Mein Array ist explodiert
 
Hallo Forum,

ich muss an einem bestehendem Delphi-Programm eine Änderung vornehmen, obwohl ich von Progammieren und insbesondere Delphi nur 0,001 Ahnung habe. Und hier das Problem:

Wir wollen eine Tabelle mit fast 200 Mio Zeilen und rund 30 Spalten auswerten. Die Spalten enthalten Merkmale wie z. B. Alter, Geschlecht, Schuhgröße... mit je 2, 3, 4 oder auch mal 20 Merkmalsausprägungen (z. B. Alter kann M oder W sein). Bisher wird ein riesen Array gebildet, der alle erdenklichen Merkmalskombinationen enthällt; in der letzten Spalte wird dann hochgezählt, wie oft genau eine bestimmte Kombination vorgekommen ist. Will man nicht alle Merkmale auswerten, ist der Array kleiner als die Ausgangstabelle. Will man alle Merkmale auswerten, wird der Array zu groß. Daher die Idee, die Daten in einer Baumstruktur abzubilden. Damit soll erreicht werden, dass kein Speicherplatz für Merkmalskombinationen reserviert wird, die es gar nicht gibt.

Gibt es dafür fertige Lösungen? Ich versuche gerade Klassenprogrammierung zu verstehen. Kann ich soetwas mit Klassen abbilden und wenn ja wie denn?

Gruß
Boris

Hansa 27. Apr 2005 18:58

Re: Mein Array ist explodiert
 
Schmeiße den definitiv benötigten Kram in eine verkettete Liste und Ruhe ist.

bgeissl 27. Apr 2005 19:10

Re: Mein Array ist explodiert
 
Meinst du TList oder was? Kann ein Listenelement mehr als einen Nachfolger haben?

Hansa 27. Apr 2005 19:20

Re: Mein Array ist explodiert
 
TStringlist müßte auch gehen. Vermute aber mal, es geht zu langsam bei der Menge oder es wird zuviel Ballast mit rumgeschleppt. Die Frage ist aber zu unpräzise gestellt. Ich verstehe nur nicht was Du genau vor hast. Was heißt : mehr als ein Nachfolger ? :shock: Der Titel ist übrigens echt Klasse. Welche Fehlermeldung kommt denn, wenn das Array explodiert ? :lol:

bgeissl 27. Apr 2005 19:34

Re: Mein Array ist explodiert
 
Wenn es keine Mädchen gäbe die rauchen, bräuchte ich doch keinen Speicher dafür reservieren, wie ich es beim Array tue:

Also könnte ich das doch in einem Baum abbilden, oder ist das blöd?

Baum:
Geschlecht-> Raucherstatus-> Anzahl

/////////////Raucher 5
M
\\\\\\\\\\\\\Nichtraucher 2




W
\\\\\\\\\\\\\Nichtraucher 7


Array:
M Raucher 5
M Nichtraucher 2
W Raucher 0
W Nichtraucher 7

Jasocul 27. Apr 2005 20:00

Re: Mein Array ist explodiert
 
Ich frage jetzt mal ganz naiv:
Du redest von einer Tabelle mit 200 Mio Zeilen. Ich gehe doch mal davon aus, dass es sich um eine Datenbank-Tabelle handelt, oder?
Falls das so ist, warum macht ihr keine geschickten Datenbankabfragen?
Falls nicht, ist das Konzept vielleicht falsch?

Davon sagst du nämlich nichts. Darum die naive Frage.

bgeissl 27. Apr 2005 20:14

Re: Mein Array ist explodiert
 
Für die Zukunft ist das auch geplant, die Tabelle in einer Datenbank auswerten zu lassen. Es werden aber nicht nur einfach irgendwelche Abfragen mit dem Delphi-Programm durchgeführt, sondern die Datensätze werden einzeln vorher noch auf Plausibilität geprüft. Das geht mit SQL glaube nicht so einfach. Außerdem liegen die Rohdaten in vielen verteilten Textdateien vor, die vom Programm zusammengesucht werden.

Nicolai1234 27. Apr 2005 21:52

Re: Mein Array ist explodiert
 
[OT]
Zitat:

Wir wollen eine Tabelle mit fast 200 Mio Zeilen[...]
Was ist das für eine Datenmenge? So viele Menschen gibt es in Deutschland ganricht...
[/OT]

Zitat:

Außerdem liegen die Rohdaten in vielen verteilten Textdateien vor, die vom Programm zusammengesucht werden.
Wäre es da nicht erstmal sinnvoll alle Datensätze in eine DB schreiben zu lassen? Danach kann man dann einfacher die Abfragen machen... :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz