Laden...

MemoryMappedFile auch für mittelgrosse Dateien verwendbar?

Erstellt von Debiii vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.666 Views
D
Debiii Themenstarter:in
19 Beiträge seit 2014
vor 9 Jahren
MemoryMappedFile auch für mittelgrosse Dateien verwendbar?

Hallo,

ich wollte eine kleine Angelegenheit ansprechen und zwar:

ich möchte Objektdaten zur Laufzeit paralell in den Arbeitsspeicher und in Die Datei schreiben. Wenn das Programm startet, sollen die Daten aus der Datei wieder in den Memorystream und von dort an kann/soll dann mit den Daten verfahren werden.

Ist es ebenso angebracht, hierfür auch MemoryMappedFile zu benutzen, ich weiß es ist eigtl. für IPC gedacht aber es scheint auch eine brauchbare Lösung hier zu sein oder wie seht ihr das. Wäre sehr dankbar über Antworten 😃

Mfg

Debiii

16.807 Beiträge seit 2008
vor 9 Jahren

Es ist nicht nur für IPC gedacht; MMF verwenden sehr viele Programme, vor allem Datenbank-Anwendungen, zB auch MongoDB.
Ein Limit gibt es nur in der Theorie. Wenn eine Datei nicht in den Speicher passt, dann wird ein Chunk gebildet, sodass nur ein Teil der Datei im Speicher liegt.

Die MSDN ist sehr ausführlich bei MMF und da solltest Du alles zu diesem Thema finden.

D
Debiii Themenstarter:in
19 Beiträge seit 2014
vor 9 Jahren

Erstmal vielen Dank für die schnelle Rückmeldung!

@Abt
ich habe mich bereits in der MSDN erkundigt, da steht nur dass es sinnvoll für extrem große Dateien gut ist und da war ich ein wenig abgeschreckt das dass dann nicht sinnvoll in meinem Fall ist.

16.807 Beiträge seit 2008
vor 9 Jahren

Du hast nicht ein Wort verloren, von welcher Größe wir sprechen.
Wobei die Größe ja fast egal ist. Geht ja auch um die Änderungshäufigkeit, was hier ein Vorteil ist.

Ich denke nur, dass Du mit MMF bei Deiner Anforderung mit Kanonen auf Spatzen schießt.

D
Debiii Themenstarter:in
19 Beiträge seit 2014
vor 9 Jahren

Ich vermute so im MB Bereich und wiederum so maximal(größer sollte es nicht werden)
Also bis zu 1GB mehr nicht

Das heisst totaler Overload 😄 und ich sollte es über die herkömmliche Variante: "erst nach MemStream und von da zu FileStream und dann von da wieder zurück zu Memstream?

16.807 Beiträge seit 2008
vor 9 Jahren

Auch Du hast einen Edit-Button. Es gibt kein Grund 3 Posts in 80 Sekunden raus zu lassen, wenn man es auch rein-editieren kann, falls man etwas vergessen hat.
Hab die Beiträge zusammen geführt....

Was Du tun sollst und was nicht - hab ich nicht zu sagen; aber ich bleib bei der Aussage mit Kanonen und Spatzen.
Ich denke nicht, dass Du so eine enorme Last hast, dass sich das hier lohnt.

D
Debiii Themenstarter:in
19 Beiträge seit 2014
vor 9 Jahren

Ok danke dir 😃

F
10.010 Beiträge seit 2004
vor 9 Jahren

Naja, ich habe MMF auch Anfang 2000 in einem Projekt eingesetzt ( Linetracer für ISDN/S2M ) als Ringbuffer für die Daten.
Damals noch in C/C++, und das war für uns eher die einfachere Variante einen sicheren und persistenten Datenspeicher zu machen.
Zu dem Zeitpunkt sind wir mit 512MB-2GB ausgekommen.

Mit der neuen API ist das nochmal viel einfacher und da MS das ja auch für ihr Swapfile benutzt, ist es definitiv eine der am meisten getesteten Funktionen.

Ich wüsste nicht wo das mit Kanonen auf Spatzen schiessen ist.
MS SQL ist ja auch erst richtig besser bei GB Daten, ist deswegen die kleine Adressverwaltung auf SqlExpress basis mit Kanonen auf Spatzen schiesen?