![]() |
Re: .csv File durchsuchen oder andere Datenbank??
Hey Alzaimar,
nicht leicht das ganze für einen E-Techniker :gruebel: :gruebel: , ABER es funktioniert, zumindest in dem kleien Beispiel. Doch da ist noch etwas: Zitat:
Ist es dann überhaupt noch sinnvoll solche Datensruktur zu benutzen, oder würdest du etwas anderes vorschlagen?? Ich hab mal einfach versucht, nach den Daten zu sortieren und später das ganze wieder auszulesen. Kam aber leider nichts erfolgreiches raus, außerdem führt jede neue Suchroutine zu einer enormen Verlangsamung. Ansonsten kann ich die Daten ja so lassen wie sie sind und später beimauslesen dann sortieren aufm Grid ausgeben. Hab das so realisiert :zwinker: :
Delphi-Quellcode:
Wenn ich die Daten dann in einer Listbox ausgebe, siehts am Anfang noch recht gut aus, aber dann :?
If a.msgbuff.ID < b.msgbuff.ID then aresult := -1
else if a.msgbuff.ID > b.msgbuff.ID then aResult := +1 else if a.msgbuff.DATA[0] < b.msgbuff.DATA[0] then aResult := -1 else if a.msgbuff.DATA[0] > b.msgbuff.DATA[0] then aResult := +1 else if a.msgbuff.DATA[1] < b.msgbuff.DATA[1] then aResult := -1 else if a.msgbuff.DATA[1] > b.msgbuff.DATA[1] then aResult := +1 else if a.msgbuff.DATA[2] < b.msgbuff.DATA[2] then aResult := -1 else if a.msgbuff.DATA[2] > b.msgbuff.DATA[2] then aResult := +1 else if a.msgbuff.DATA[3] < b.msgbuff.DATA[3] then aResult := -1 else if a.msgbuff.DATA[3] > b.msgbuff.DATA[3] then aResult := +1 else if a.msgbuff.DATA[4] < b.msgbuff.DATA[4] then aResult := -1 else if a.msgbuff.DATA[4] > b.msgbuff.DATA[4] then aResult := +1 else if a.msgbuff.DATA[5] < b.msgbuff.DATA[5] then aResult := -1 else if a.msgbuff.DATA[5] > b.msgbuff.DATA[5] then aResult := +1 else if a.msgbuff.DATA[6] < b.msgbuff.DATA[6] then aResult := -1 else if a.msgbuff.DATA[6] > b.msgbuff.DATA[6] then aResult := +1 else if a.msgbuff.DATA[7] < b.msgbuff.DATA[7] then aResult := -1 else if a.msgbuff.DATA[7] > b.msgbuff.DATA[7] then aResult := +1 else aResult := 0; end; Zitat:
Hättest du eine andere Idee?? Nochmal :kiss: für die Super Unterstützung, ist nicht so leicht für mich.. |
Re: .csv File durchsuchen oder andere Datenbank??
Was ist an der Listbox so falsch? Sieht doch gut aus, sind die nun alle sortiert oder bin ick zu blind? Egal.
Sag doch einfach mal, WONACH du suchen willst, bzw. WAS du auswerten möchtest. Dann deichseln wir das schon. (Oder auch nicht :zwinker:) Es IST ein vertracktes Problem. Wenn das direkte Speichern in den B-Baum so nicht geht, dann würde ich auch einfach (is ja wohl nur ne Testphase) die Teile in eine Text-Datei reinballern und mit geeigneten suchroutinen später auswertungen machen. Fragen: 1. Musst Du die Records wochenlag mitschneiden, oder nur für 1-2 Tage, oder wie? 2. Wie hoch ist die Datenmenge, wenn alles ok ist? 3. (Wiederholung) Wonach willst Du suchen und was brauchst Du als Filter/Anzeige? |
Re: .csv File durchsuchen oder andere Datenbank??
NAja, wenn ich mir die letzte Spalte so angucke, ist das wohl nicht mehr so ganz richtig mit 248, 247,170,235,117...
Zitat:
Zitat:
Max. Übertragungsrate 1 Mbit/s wenn das kürzeste Telegramm 40Bit lang ist und eine Busauslastung von 100% besteht, wovon ausgegeangen werden muss, dann beläuft sich das ja auf: 1oooooo Bit/s ------------- = 25000 Telegramme/s = 25 Telegramme/ms oder hab ich da falsch gerechnet. 40 Bit Nun die 25000 Telegramme/s * 3600 um auf Stunden zu kommen := 90000000bit/h um das mal komfortabel darstellen 1 byte = 8 bit -> 11250000Byte/h -> 11,25Mb pro Stunde oder :gruebel: :gruebel: Zitat:
- Ein unterpunkt ist nun nach bestimmten Daten zu suchen, mit zugehöriger ID. Die ID muss immer mit angegben sein. Bsp. Ich möchte nach der ID 200 suchen und zwar im 1.Datenbyte sollen alle Einträge zwischen 23-98 und im 4. Datenbyte 34-78 angezeigt werden. Welche Werte die anderen Datenbytes haben ist völlig wurst. Hier ein Bsp für die Suchanfragen: ID Data0 Data1 Data2 Data3 Data4 Data5 Data6 Data7 200 --- ----- ---- ----- ---- ---- ---- ----- (alle Telegramme mit ID 200 darstellen) 200 --- 23-98 ---- ----- 34-78 ---- ----- ------ Das ist das höchste der Gefühle, wonach gesucht werden soll. Wichtig ist nur, dass immer die ID mit angegeben wird. Das ist der "Schlüssel". Filter(werden nur für die Anzeige realisiert) und das mache ich schon beim ankommen der Telegramme, geht schon. Aber bin für besserungen offen. |
Re: .csv File durchsuchen oder andere Datenbank??
Deine Ordnung, die du aufbaust, bedingt, das erst nach ID, dann nach erstem byte, dann nach dem 2. usw sortiert wird. Insofern ist alles o.k. Schau Dir das alles an. Innerhalb gleicher ID ist nach dem 1.Byte aufsteigend sortiert, innerhalb des 2. auch (kommt nicht vor, egal).
Wir haben also 12 MB/h (aufrunden ist immer gut), dann sind das gerade mal ca. 1G für 2 Tage. Mein Btree kann 2G verwalten (meine ich). Wenn Du nur nach allen Telegrammen einer ID 200 mit 1.DATA zwischen 23 und 98 suchen willst, dann müsstest Du einen Cursor erzeugen, der den Bereich zwischen ID:200, DATA :23,0,0,0,0,0,0,0 und ID:200, DATA:98,255,255,255,255,255,255,255 abdeckt. Die Ordnung ist ja streng von links nach rechts. Dann scanst Du den Bereich und zeigst nur die Recs, deren 4.Datenbyte in dem Bereich liegt. Das bekommst Du relativ leicht allgemeingültig hin. Das geht relativ schnell, so im Bereich von (geschätzten) 100.000 - 500.000 recs/sec. Ich meine, Du solltest mal ein paar mio recs ablegen und dann schauen. Wenn die Performance hinhaut und mein Tool die Tests (Stabilität, Speicherlecks) besteht (also, wenn es 2 Tage durchhält), dann bist Du ein gemachter Mann :mrgreen: |
Re: .csv File durchsuchen oder andere Datenbank??
Jo, super dann wollen "wir" das mal versuchen. Werde erstmal austesten, ob das ganze Threadsicher ist.
Zitat:
Ist auf jedenfall toll. Zitat:
Ok, wird der Adressraum vom Zeiger dann zu groß??? So, dann mal ran an die Buletten, nach soviel Input werde ich schön weiter :coder: Gruß aus dem verregneten Hamburg |
Re: .csv File durchsuchen oder andere Datenbank??
Die Teile musste ich selbst schreiben.
Bei Dateigrößen über 2GB wird unser Universum, so wie wir es kennen, durch etwas viel Schrecklicheres ersetzt. Es gibt Gerüchte, nach dies schon geschehen ist (Frei nach "Hitchhickers Guide to the Galaxy"). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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