AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Single File Storage - Erfahrungen ?

Ein Thema von moelski · begonnen am 21. Sep 2010 · letzter Beitrag vom 22. Sep 2010
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Single File Storage - Erfahrungen ?

  Alt 21. Sep 2010, 20:51
Moin !

Hat von euch schon mal jemand mit einer Single File Storage Komponenten gearbeitet?
Also sowas hier:
http://gp.17slon.com/gp/gpstructuredstorage.htm
http://www.accuracer.com/single-file...ile_system.htm

Kann man damit in einem virtuellen "Verzeichnis" direkt speichern? Oder muss man erst die Dateien auf der Platte erstellen und dann dem Storage Teil sagen welche Dateien es beinhalten soll?

Liegen die Daten dann eigentlich im Speicher, oder arbeiten diese Teile direkt auf Festplatte?

Vielleicht kann ja jemand mal kurz ein paar Erfahrungen posten. Da wir aus unserer Anwendung viele Verschiedene Dateien speichern können wäre es eine feine Sache, wenn man die gleich in so einem Single File bündeln könnte.
Das würde uns einiges an Datei und ZIP Code ersparen.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.667 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Single File Storage - Erfahrungen ?

  Alt 21. Sep 2010, 21:20
Einges arbeitet direkt in der Datei, Anderes arbeitet mit einer Kopie im RAM und speichert erst wenn fertig.
Bei Einigen kann man keine Dateien ändern/löschen, ohne das komplette Archiv neu abzuspeichern.
Bei Manchen kann man Dateien über einen Puffer/Pointer/Stream hinzufügen und bei Anderen kann man nur über eine Datei auf der Platte gehn.

Es gibt eigentlich alles und demnach kann man nichts Genaues und Allgemeines drüber sagen.

Selbt bei Zip gibt es einige Libs, welche die ZIP im RAM und somit schneller verwalten können, bei Änderungen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Single File Storage - Erfahrungen ?

  Alt 21. Sep 2010, 21:34
Interessant wäre auch VHD oder VMDK, zumindest ersteres liese sich ab Win7 einfach mounten und wir ein normales Laufwerk "füllen".
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.667 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Single File Storage - Erfahrungen ?

  Alt 21. Sep 2010, 21:44
Diese VHD und Co. gehören zum VPC.
Und sie sind nicht direkt für eine Dateispeicherung geeignet.
Sie stellen nur eine virtuelle Festplatte dar, worin erstmal ein Dateisystem "installiert" werden muß.
Dieses Dateisystem wird dann über einen passenden und im System registrierten Dateisystemtreiber verwaltet.

Eine Frage wäre auch noch, ob Win7 diese VHDs ebenfalls noch mounten kann, selbst wenn kein VPC, bzw. keine XP-VM installiert sind.



Im Grunde kommt es erstmal darauf an, was alles gemacht werden soll
und wie schnell/optimal dieses ablaufen soll.
Dann könnte man mal schauen was zur Auswahl steht und welches davon dann am optimalstens paßt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (21. Sep 2010 um 21:47 Uhr)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Single File Storage - Erfahrungen ?

  Alt 21. Sep 2010, 21:55
VHD oder VMDK sind erstmal nur SingleFile-Storages, die von bekannten VMs als Festplatte genutzt werden. Wenn es wie eine festplatte angesprochen wird, umso besser, geht ja um Dateien, nicht um Daten.

Windows 7 prof. kann VHDs mounten (sogar als Bootlaufwerk), da das als Erleichterung auf Entwicklerseite vorgeschlagen war, sollte das reichen.

Auf Anwenderseite wird natürlich nicht über das Betriebssystem auf die VHD etc. zugegriffen. Unter C# gibt es die DiscUtils, mit denen kann man direkt darauf zugreifen (FileStream etc.) Denke solche Komponenten gibt es für die bekannten Formate auch in Delphi.

Geändert von Satty67 (21. Sep 2010 um 22:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.667 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Single File Storage - Erfahrungen ?

  Alt 21. Sep 2010, 22:26
VHD (Microsoft) und VMDK (VMWare) sind keine FileStorages.
Sie können im Großen und Ganzen nur "Cluster" verwalten, mehr auch nicht.

Datei > unterschiedliche Größen > Zugriff meißt über Dateiname oder Index mit zusätzlichem (Datei)Namen
Cluster > einheitliche Größe > Zugriff über Index

Um einen Dateispeicher (FileStorage) in Cluster aufzuteilen, wird eben noch ein Dateisystem (FileSystemDriver) benötigt.


Nja, die VHDs-Specs sind recht übersichtlich, also könnte man sich da notfalls selbst was übersetzen, aber wenn man sich keine eigene Dateisystemkomponente aufsetzen will (wobei ja die FATs auch recht "einfach" sind), wird man mit einem direkten Zugriff auf diese Dateien nicht weit kommen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Single File Storage - Erfahrungen ?

  Alt 21. Sep 2010, 22:49
keine FileStorages.
Ist ein SingleFile-Storage... der Bindestrich ist da schon wichtig

Es ging ja darum mehrere Dateien in einer einzelnen Datei zu speichern, ohne zu spezifizieren, wie das interne Speichersystem aufgebaut sein muss. Ist doch völlig egal, ob das ein Clustersystem oder Binärstream ist. Wichtig ist nur, das es eine Möglichkeit gibt, aus der Anwendung heraus die Dateien aus dem Storage zu lesen und zu verwenden. Gibt ja VHD-Viewer, die unabhängig von der Umgebung Inhalt anzeigen und extrahieren können.

War ja auch nur ein Vorschlag...

Code:
long diskSize = 30 * 1024 * 1024; //30MB
using (Stream vhdStream = File.Create(@"C:\TEMP\mydisk.vhd"))
{
  Disk disk = Disk.InitializeDynamic(vhdStream, diskSize);
  BiosPartitionTable.Initialize(disk, WellKnownPartitionType.WindowsFat);
  using (FatFileSystem fs = FatFileSystem.FormatPartition(disk, 0, null))
  {
    fs.CreateDirectory(@"TestDir\CHILD");
    // do other things with the file system...
  }
}
Sein erster Link (Zitat aus den Spezifikationen):
Zitat:
GpStructuredStorage compound file is organized in 1 KB blocks. First block contains header, then the content alternates between a file allocation table (FAT) fragment block and 256 blocks managed by the preceeding FAT fragment. Each block can be represented by a number - header block is block #0, first fat fragment is block #1 and so on.
Ich geh' jetzt ins Bett...

Geändert von Satty67 (21. Sep 2010 um 23:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.667 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Single File Storage - Erfahrungen ?

  Alt 21. Sep 2010, 23:18
BiosPartitionTable & FatFileSystem ... wie gesagt, VHD selber kann es nicht.

Klar, wenn man eine Lib findet (in Delphi wird's schon schwerer), dann kann man schon mehr damit machen.
Auf 'ner unpartitionierten und unformatierten Festplatte kannst'e ja och nicht so einfach Dateien ablegen.

Aber ob sich dann der Aufwand lohnt?
Da könnte man auch bei Zip oder 7-Zip bleiben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#9

AW: Single File Storage - Erfahrungen ?

  Alt 22. Sep 2010, 07:12
Moin !

Ich glaube wir driften hier etwas vom Thema ab, oder?
Zitat:
VHD oder VMDK
Ich denke mal das fällt beides raus. Oder kann mir jemand zu den beiden Typen eine bazahlbare Delphi Lib nennen

Zitat:
Einges arbeitet direkt in der Datei, Anderes arbeitet mit einer Kopie im RAM und speichert erst wenn fertig.
Bei Einigen kann man keine Dateien ändern/löschen, ohne das komplette Archiv neu abzuspeichern.
Bei Manchen kann man Dateien über einen Puffer/Pointer/Stream hinzufügen und bei Anderen kann man nur über eine Datei auf der Platte gehn.
Also was bei uns nur sinnvoll wäre:
* arbeitet direkt in einer Datei und nicht im RAM
* löschen & ändern von Dateien muss vorhanden sein ohne das File neu zu schreiben
* hinzufügen direkt - ohne den Umweg über eine extra Datei im Dateisystem

Sollte es dieses Konstrukt so gar nicht geben, dann könnten wir die Sache auch mit ZIP umsetzen.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.667 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Single File Storage - Erfahrungen ?

  Alt 22. Sep 2010, 07:41
Hast du dir schonmal die 7Zip-API angesehn?
Da gab's doch auch was für Delphi.

Nja, wenn man etwas nutzt, welches die Dateien zusammenhängend und ohne Lücken speichert, wie z.B. beim ZIP, dann müssen alle Daten dahinter verschoben werden, wenn man eine enthaltene Datei ändert, löscht oder mitten drin einfügt.
Beim ZIP ist z.B. das "Verzeichnis" am Dateiende und da sich viele Libs die Arbeit mit dem Verschieben und Umrechnen der neuen Positionen sparen, machen sie es meißt über eine Tempdatei, wo die ganze ZIP neu aufgebaut wird.

Für mein himXML gibt es auf der ToDo-Liste einen Punkt, wo es um eine InFile-editierbare binär-Version der XML-Daten geht, welches auch noch in mit einer Kompression versehn werden kann, dieses könnte man dann vermutlich recht gut für soeine FileStorages, mit Zusatzinfos, verwenden.
Das Konzept steht eigentlich schon seit einer ganzen Weile, aber andere Dinge hatten bisher einfach Vorrang.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (22. Sep 2010 um 07:47 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf