Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi LOG Auswertung Top 100 Listen welche Datenstrukturen ? (https://www.delphipraxis.net/141802-log-auswertung-top-100-listen-welche-datenstrukturen.html)

ASoraru 16. Okt 2009 13:53


LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Hallo,

ich habe ja im Zusammenhang meiner LOG auswertung schon ein paar fragen gestellt ... nun geht es mir um die erstellung von top 100 listen der zugriffe etc. .. ich frage mich grad welche datentypen bzw strukturen ich nehme ... zum beispiel records in einer tlist .... oder records in einem dynamischen array ? ... was ist schneller ? was benötigt weniger speicher ? ...

das problem ist für mich das ich im schlimmsten fall ein log habe mit sagen wir mal 1000000 einträgen und ich müsste daraus trotzdem eine vernünftige top 100 der zugriffe erstellen .... da bi ich etwas ratlos wie ich das im speicher schnell handeln soll

Vielleicht habt ihr dort erfahrunge mit großen datenmengen ...

Grüße,

Andreas

mkinzler 16. Okt 2009 14:00

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Z.B. eine Datenbank

haentschman 16. Okt 2009 14:01

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Hallo... :hi:

ich werfe mal spontan bei dieser Menge ein DBMS in den Raum. Firebird :thumb:

roter Kasten: och nöööö.... :(

edit: @Markus mein Post sieht schöner aus :mrgreen:

ASoraru 16. Okt 2009 14:04

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Zitat:

Zitat von haentschman
Hallo... :hi:

ich werfe mal spontan bei dieser Menge ein DBMS in den Raum. Firebird :thumb:

roter Kasten: och nöööö.... :(

edit: @Markus mein Post sieht schöner aus :mrgreen:

ist eine db echt von nöten ? ... wie schaut es da mit der speichernutzung aus und der geschindigkeit ?

Bernhard Geyer 16. Okt 2009 14:06

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Zitat:

Zitat von ASoraru
ist eine db echt von nöten ? ... wie schaut es da mit der speichernutzung aus und der geschindigkeit ?

Bei richtiger Verwendung und Tabellen+Filterdefinition: Sehr gut.

haentschman 16. Okt 2009 14:09

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
mit 1000000 Datensätzen und dem richtigen Index ist die Top 100 Liste in Millisekunden fertig sortiert im Dataset.

:gruebel: Warum hacken alle auf Speicher rum, Arbeitsspeicher im GB Format... Terrabyteplatten. Zum Vergleich ich habe eine Firebird Datenbank, 59 Tabellen, insgesamt über 300 Felder, 100000 Datensätze ... macht 8,5 MB Plattenplatz. So und jetzt du... :zwinker:

ASoraru 16. Okt 2009 14:10

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von ASoraru
ist eine db echt von nöten ? ... wie schaut es da mit der speichernutzung aus und der geschindigkeit ?

Bei richtiger Verwendung und Tabellen+Filterdefinition: Sehr gut.

snief ....

dann wäre es doch am sinnvollsten wenn ich direkt alle daten des logs in eine db schaufele und die dann antsprechend auswerte .... oder ?

mkinzler 16. Okt 2009 14:12

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Ja, so war meine Antwort gemeint

ASoraru 16. Okt 2009 14:13

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Zitat:

Zitat von mkinzler
Ja, so war meine Antwort gemeint

gut
dann versuche ich das mal ....
any idea ... normale delphi compos verwenden und dann welchen datenbanktyp nutzen ?

mkinzler 16. Okt 2009 14:23

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Es wurde schon FireBird embedded vorgeschlagen oder SQLite ...

ASoraru 17. Okt 2009 18:06

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Zitat:

Zitat von mkinzler
Es wurde schon FireBird embedded vorgeschlagen oder SQLite ...

Hmmm ... sehe ich das recht das ich dafür immer etwas mitinstallieren muss ? ... ich will das eigentlich nur temporär machen und die datenbank nur während der analyse nutzen ... bin ein absoluter datenbank dummy ... könnt ihr mir auf dei sprünge helfen ?

Grüße,

Andreas

mkinzler 17. Okt 2009 18:16

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Nein, weder fireBird embedded noch SQLite musst du installieren, sind je nur eine Dll

ASoraru 17. Okt 2009 18:21

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Zitat:

Zitat von mkinzler
Nein, weder fireBird embedded noch SQLite musst du installieren, sind je nur eine Dll

gibts da delphi demosources und darf ich die auch in einem später kommerziellen produkt mit publishen ? ... mal eine andere idee ... reicht es nicht wenn ich eine TSQLTable nutze ... die zur laufzeit fülle oder ist mein gedanke da falsch ?

mkinzler 17. Okt 2009 18:31

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Ja und ja.
Lokal wird ein ClientDataSet als XML Datei gecacht. Die Möglicheiten eines DBMS gehen aber weit darüber hinaus und sind imho besser geeignet

ASoraru 17. Okt 2009 18:34

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Zitat:

Zitat von mkinzler
Ja und ja.
Lokal wird ein ClientDataSet als XML Datei gecacht. Die Möglicheiten eines DBMS gehen aber weit darüber hinaus und sind imho besser geeignet

gut
also firebird dll laden und schauen ... bin mal gespannt ob ich das hinbekomme

ASoraru 21. Okt 2009 19:57

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Wo finde ich denn die aktuelle SQLite und ein INterface dafür ? ... finde hier alles mögliche aber nichts was sich auf die schnelle nutzen läßt ... unter anderem eine dbmsqlite3 .... oder ist es das unter sqlite.org ?

holliesoft 22. Okt 2009 04:30

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Hi,

ich schreibe mal ein wenig über SQLite.

für die Verwendung mit einer Komponente musst Du in der Regel immer die SQLite.dll (bekommst Du auf www.sqlite.org) mitführen. Diese muss sich nur im Anwendungsverzeichnis befinden.

eine einfache Wrapperklasse für SQLite findest Du hier:
http://www.itwriting.com/blog/a-simp...r-for-sqlite-3

oder Du nimmst die Zeos-Komponenten:
http://zeos.firmos.at/index.php

oder die Personal-Version von DiSQLite (diese braucht keine externe DLL!):
http://www.yunqa.de/delphi/doku.php/.../sqlite3/index

Gruß
Patrick

alzaimar 22. Okt 2009 04:39

Re: LOG Auswertung Top 100 Listen welche Datenstrukturen ?
 
Ich glaube, das man sich einen Wolf wartet, bis 1 Mio Datensätze in einer DB abgelegt sind.

Ich machs mir einfach und verwende eine StringList und eine Hashmap (TStringDictionary gibts hier im Forum).
Ich extrahiere mit RegEx die Informationen aus der LOG-Zeile, suche mir in in meiner Hashmap die Daten, überarbeite sie und fertig.

Auf jeden Fall schneller umgesetzt, schneller in der Ausführung, und schneller fertig.

DAS war es glaube ich, worum es dem Threadersteller ging.

Wenn ich allerdings vorher nicht weiss, wonach ich in den Log-Dateien suche, dann würde natürlich eine kleine Tabelle in einer DB Sinn machen, weil die durch SQL zur Verfügung stehenden allgemeinen Recherchemöglichkeiten einfach nicht zu topppen sind.

Wobei mir einfällt, das es SQL auch für In-Memory Tabellen gibt (TjanSQL heißt das Teil)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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