none
FileStream - Maximale Dateigröße RRS feed

  • Frage

  • Hallo,

    wenn ich einen einzigen Stream öffne (per FileStream / c# / .NET), dann habe ich ja vollen zugriff auf die Datei.

    Wie groß kann diese allerdings maximal sein, wenn ich sie nicht komplett im Arbeitsspeicher haben will, sonder nur per Stream direkt zugreifen will.

    Zur Information: Die Datei wird durchaus einige GB ( bis zu 1 TB ) erreichen können, da Sie zu einer Datenbank gehört.

    Die Datei würde mit folgenden Optionen geöffnet werde: RandomAccess und gegebenenfalls (bei manchen Datenbanke) WriteThrough.

    Die Datei wird quasi eine Art Dateisystem sein.

    Thomas Roskop

    Ich wünsche euch allen frohe Weihnachten und einen guten Rutsch.


    © 2015 Thomas Roskop

    Dienstag, 23. Dezember 2014 11:01

Antworten

  • Hallo Thomas,

    ein FileSteam kapselt nur den Zugriff auf eine Datei im Dateisystem. Die Grenzen werden durch das Dateisystem - wie z. B. NTFS / FAT32 - festgelegt. Siehe u. a. Windows CreateFile function und File System Functionality Comparison.

    Gepuffert wird .NET seitig nur entsprechend der angegebenen Puffer-Größe - eine Pufferung durch das Betriebssystem usw. können über den FileStream nicht beeinflusst werden - letzteres ist wiederum Dateisystem/ Treiber-abhängig.

    Bei größeren Dateien kann man über Memory Mapped Dateien den Datei-Zugriff verbessern.

    Fußnote: Wenn Du eine eigene Datenbank-Verwaltung schreiben willst, schau Dir das Blog von Ayende Rahien an. Die von ihm entwickelte (NoSQL) Datenbank RavenDB hat mittlerweile eine eigene Storage Engine (Voron) erhalten - ansonsten basiert es auf ESE (Jet Blue) als Engine. Im Laufe der Entwicklung hat Ayende einiges Interessantes zu der Thematik geschrieben.

    Gruß Elmar

    Dienstag, 23. Dezember 2014 11:46
    Beantworter

Alle Antworten

  • Hallo Thomas,

    ein FileSteam kapselt nur den Zugriff auf eine Datei im Dateisystem. Die Grenzen werden durch das Dateisystem - wie z. B. NTFS / FAT32 - festgelegt. Siehe u. a. Windows CreateFile function und File System Functionality Comparison.

    Gepuffert wird .NET seitig nur entsprechend der angegebenen Puffer-Größe - eine Pufferung durch das Betriebssystem usw. können über den FileStream nicht beeinflusst werden - letzteres ist wiederum Dateisystem/ Treiber-abhängig.

    Bei größeren Dateien kann man über Memory Mapped Dateien den Datei-Zugriff verbessern.

    Fußnote: Wenn Du eine eigene Datenbank-Verwaltung schreiben willst, schau Dir das Blog von Ayende Rahien an. Die von ihm entwickelte (NoSQL) Datenbank RavenDB hat mittlerweile eine eigene Storage Engine (Voron) erhalten - ansonsten basiert es auf ESE (Jet Blue) als Engine. Im Laufe der Entwicklung hat Ayende einiges Interessantes zu der Thematik geschrieben.

    Gruß Elmar

    Dienstag, 23. Dezember 2014 11:46
    Beantworter
  • Danke für die Antwort und für den Link.

    Nur das Problem ist, dass ich keine SQL Datenbank oder dergleichen brauche, sonst hätte ich schon längst MS SQL Server genommen ;).

    Ich arbeite an einer Datenbank die sich eher an Amazons Dynamo und Apache Hadoop orientiert.


    © 2015 Thomas Roskop

    Dienstag, 23. Dezember 2014 13:05
  • Hallo Thomas,

    RavenDB habe ich erwähnt weil sie eine in C# / .NET geschriebene NoSQL Datenbank.

    Die Anforderungen auf Seiten des Massenspeichers (i. a. Storage Engine) sind bei solchen Systemen ähnlich. Voron ist z. B. aus der Analyse von LMDB entstanden, was zur Speicherung für LDAP Daten verwendet wird - siehe dazu http://ayende.com/blog/163458/hello-voron (Und bereits die Analyse zu LMDB fand ich eine interessante Lektüre im Blog von Ayende).

    Gruß Elmar

    P. S.: Ich will niemand den SQL Server aufdrängen - die Menschheit wird eine weitere Datenbank-Engine verkraften ;)


    Dienstag, 23. Dezember 2014 15:00
    Beantworter
  • Hallo Thomas,

    Haben Elmars Antworten Dir weitergeholfen? Ist das Thema noch aktuell?

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 6. Januar 2015 09:10
    Moderator