Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Datenbanken auf externe Platten auslagern?

  Alt 9. Apr 2017, 12:00
Hi mikhal
Zitat:
Schon mal darüber nachgedacht, in deiner Datenbank nur "Thumbnails" vorzuhalten,
JA, habe ich.
Sir Rufo hat mir damals den Vorschlag gemacht, mit GUIDS zu arbeiten.

Der aktuelle Stand ist demnach: es gibt kein Feld für NEFs mehr in der DB, für Bitmaps hingegen schon:
Delphi-Quellcode:
function TFDMySQLDml.BildInsertQuery(BJpeg: TJPEGImage; WorkMap : TBitmap; LIdFolder: String): integer;
  var SQLString: string; // BJpeg,
begin
  SQLString := 'Insert Into Bildtabelle(Thumbnail, Bitmap, FolderID) Values (:BJpeg, :Workmap, :LIDFolder)';
  FDQueryMain.SQL.Text := SQLString;
  FDQueryMain.Params[0].Assign(Bjpeg);
  FDQueryMain.Params[1].Assign(Workmap);
  FDQueryMain.Params[2].AsString := LIDFolder;
  FDQueryMain.ExecSQL(false);
  if FDQueryMain.Active then
     FDQueryMain.Close;
  SQLString := 'Select Last_Insert_ID()AS LastID';
  FDQueryMain.SQL.Text := SQLString;
  FDQueryMain.Open;
  if not FDQueryMain.IsEmpty then
    result := FDQueryMain.FieldByName('LastID').AsInteger; //
end;
Dabei wird in der aufrufenden Methode das NEF in ein TPicture-Objekt geladen, dieses dann in 2 TBitmaps, wovon eine skaliert und in ein Jpeg konvertiert wird. Das NEF-Bild wird anschliessend verworfen.
Es mag doof klingen, aber mit der TGuid-Lösung kann ich mich nicht wirklich anfreunden. Und zwar, weil dieser GUID nun in allen jenen Bildverzeichnissen steht, die schon mal eingelesen wurden. Das bedeutet: Wenn die Bilder, aus welchem Grund auch immer, neu eingelesen werden müssen, muss das Programm erstmal per Abfrage ermitteln, ob die Bilder in der DB sind oder nicht - und das verlängert die Zeit für Insert-Statements.

Andrerseits habe ich mir auch mal TFDMemTable angesehen. Das Schöne daranist: das Ding kann seinen Inhalt von der Patte laden und auch dahin speichern. Das Schöne daran ist: dieses Ding selbst ist, soweit ich das bisher verstanden habe, unabhängig vom verwendeten DBMS.

Und wenn ich mir die einzelnen Festplatten-Ordner und deren durchschnittliche Gösse ansehe (etwa 3GB für NEF-Ordner und rund das dreifache für Bitmap-Ordner (10 - 11GB) und das mit der Grösse meines neuesten USB-Sticks vergleiche (64GB), dann kkommen mir da einige Ideen...

Das heisst aber auch, dass es gar keine Datenbanken auf externen Laufwerken braucht - die sind je nach Zielsetzung eventuell bloss wünschbar...


Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat