Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Datei > 500mb vollständig in RAM laden (https://www.delphipraxis.net/95160-datei-500mb-vollstaendig-ram-laden.html)

Harry M. 2. Jul 2007 12:15

Re: Datei > 500mb vollständig in RAM laden
 
Jo stimmt. Ich hab mich nicht lange genug mit den verschienden DBMS System auseinander gesetzt.
Wieviele davon gibt es? Und wieviel zeit bräucht ich um mich mit gründlich einzuarbeiten? Um dann auch noch das Beste für mich herraus zussuchen. Ich werde Deine Hinweise berücksichtigen und schaue ob ich mit Firebird besseres Ergebnisse erziele.

Die potenzierung erfogt natürlich geteilt. zB auf 1 GB pro Datei.

[AM_RANDE]
Bei 1 TB local zu Verfügung könnte ich auch einiges aufnehmen. Desweiten habe 2 Gb drinne, noch eine Bank frei, und noch aufrüstbar dank 64MB Grafik (muss aber erst warten wegen dem neuen DualChanel fähigen Bord) Falls das jemand wissen mag. :mrgreen:
[/AM_RANDE]

Sicherlich wird es nur ein kläglicher Versuch bleiben wenn ich es gegen ein "ordentliches" DBMS vergleiche. Ist auch ehr nur der als Station auf dem Weg zu der Erfahrung gedacht, von der Du sprichst.

mkinzler 2. Jul 2007 12:33

Re: Datei > 500mb vollständig in RAM laden
 
Selbst wenn man auf ein DBMS verzichten will, würde ich nie auf die Idee kommen, die komplette "Datenbank" im Speicher zu halten. in diesem Fall würde ich nur den Index (als Binärbaum o.ä.) im Speicher halten, welcher dann auf die Recordnummern in der Datei verweist. Diese würden sequentiell geschrieben und ein Ordnung nur per Index erreicht, welcher zusätzlich zum Speicher spätestens beim beenden des Programmes auf Platte gesichert werden sollte.
Aber ich sehe es wie Elvis: Ein solche Lösung würde viel mehr Arbeit als die Einarbeitung in ein DBMS bedeuten und wohl nicht ansatzweise an die Performance herankommen.

Harry M. 2. Jul 2007 12:41

Re: Datei > 500mb vollständig in RAM laden
 
Ist meine Idee im Hinterkopf. :zwinker:
nur ist mir noch nicht ganz klar wie ich so einen Index machen könnte. Muss ja am Ende auf eine mathematische Formel beruhen.... und wenn die dann halbwegs funzen sollte. werde ich die Dateien sicher nicht mehr im Ram halten. Wo sie ohne hin nur geladen werden wenn Sie gebraucht würden.

mkinzler 2. Jul 2007 12:48

Re: Datei > 500mb vollständig in RAM laden
 
Als Index würde sich ein Binärbaum eigenen (dieses Problem hat wohl fast jeder hier in der Schule/Uni usw schon mal Lösen dürfen)

Harry M. 2. Jul 2007 12:52

Re: Datei > 500mb vollständig in RAM laden
 
Dann sollte sich da ja was finden lassen (läuft ja auch grad noch ein Thread zu dem Thema)

Der_Unwissende 2. Jul 2007 12:57

Re: Datei > 500mb vollständig in RAM laden
 
Zitat:

Zitat von mkinzler
Als Index würde sich ein Binärbaum eigenen (dieses Problem hat wohl fast jeder hier in der Schule/Uni usw schon mal Lösen dürfen)

Nimm lieber gleich einen B+/B*-Baum, die können nicht entarten! Das ganze ist aber nur der erste Schritt in Richtung DBS. Da werden Datensätze auch nur in Seiten gespeichert/verwaltet. Man speichert immer nur die Referenz auf eine bestimmte Seite und auf der Seite auf den Eintrag. Reicht nach einer Veränderung der Platz nicht mehr aus, wird hier noch eine zusätzliche Indirektion (auf den tatsächlichen aktuellen Speicherort) gespeichert (weniger aufwendig als die Indexierung/alle Verweise zu aktualisieren).
Ein DBS macht aber eine ganze Menge mehr, da gibt es gleich einen Cache mit Datensätzen, auf die (vermutlich) demnächst zugegriffen wird. Das heißt, dass nicht die ganze Datei, aber relevante Teile schon im RAM landen. Die benötigte Verdrängungsstrategie, die Datensicherheit, Transaktionen uvm. bringen die meisten (zumindestens die bekannten) dann auch gleich mit. Da kann auf DB2, Oracle, PostgreSql, MySql, MsSql und natürlich Firebird verwiesen werden. Die dürften alle besser skalieren, schneller/effizienter arbeiten, mehr Konsistenz und Sicherheit garantieren als es eine eigene Lösung tut! Da arbeiten einfach viele Leute seit einem Weilchen dran, allein die Nebenläufigkeit dürfte schon ein hartes Stück Arbeit für eine Person sein! Es macht einfach keinen Sinn auf diese (guten!) Lösungen zu gunsten einer eigenen zu verzichten (und sorry, schon gar nicht wenn man dazu einfach versucht alles im Speicher zu halten!).

Harry M. 2. Jul 2007 13:03

Re: Datei > 500mb vollständig in RAM laden
 
Ich geb Dir durchweg Recht, Du angeblich Unwissender :lol:

mkinzler 2. Jul 2007 13:09

Re: Datei > 500mb vollständig in RAM laden
 
Zitat:

Nimm lieber gleich einen B+/B*-Baum, die können nicht entarten!
Ich hätte wohl hervorheben sollen, daß ich Binärbaum als allgemeinen Oberbegriff ansehe, ob der nun ausbalanziert, gepackt oder wie auch immer implementiert wird.

Der_Unwissende 2. Jul 2007 13:15

Re: Datei > 500mb vollständig in RAM laden
 
Zitat:

Zitat von mkinzler
Ich hätte wohl hervorheben sollen, daß ich Binärbaum als allgemeinen Oberbegriff ansehe, ob der nun ausbalanziert, gepackt oder wie auch immer implementiert wird.

Nicht falsch verstehen, mir ist schon klar, dass Du nicht unbedingt den normalen Binären-Baum ohne weitere Eigenschaften meinen wirst, wollte nur noch mal explizit darauf hinweisen, welche Bäume üblicherweise sogar verwendet werden. Wie gesagt, die Idee, die Du geäußert hast ist ja auch völlig korrekt und absolut richtig! Das Problem ist doch aber, warum kein DBS einsetzen wollen und sich dann selbst um die Organisation der Datensätze, des Caching (um den Speicher wirklich sinnvoll zu nutzen) und natürlich der Indexierung annehmen?
Klar, ein DBS lädt eben nicht nur den Index in den Speicher, sondern hält auch einzelne Seiten vor, aber das ist ja nicht gerade ein Nachteil. Anders gesagt, wenn man die Funktionalität eines DBS benötigt/nutzen will (und so habe ich Harry M. verstanden), dann ist es manchmal das klügste zu einem DBS zu greifen :wink:

mkinzler 2. Jul 2007 13:21

Re: Datei > 500mb vollständig in RAM laden
 
Zitat:

Anders gesagt, wenn man die Funktionalität eines DBS benötigt/nutzen will (und so habe ich Harry M. verstanden), dann ist es manchmal das klügste zu einem DBS zu greifen Wink
Klar wurde ihm ja schon von Elvis und mir so gesagt:
Zitat:

Zitat von mkinzler
Aber ich sehe es wie Elvis: Ein solche Lösung würde viel mehr Arbeit als die Einarbeitung in ein DBMS bedeuten und wohl nicht ansatzweise an die Performance herankommen.



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr.
Seite 2 von 3     12 3      

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