AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank zur Ablage von (mitunter großen) Blob flieds?
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank zur Ablage von (mitunter großen) Blob flieds?

Ein Thema von moelski · begonnen am 26. Apr 2009 · letzter Beitrag vom 26. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
moelski

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

Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 07:01
Datenbank: N/A • Version: N/A • Zugriff über: N/A
Moin !

Da es ja offenbar mit der AbsoluteDB nicht funktioniert (http://www.delphipraxis.net/internal...t.php?t=156012) würde ichgernemal nachfragen ob da jemand was anderes empfehlen kann.

Wir haben eine MDI Anwendung wo jedes MDI Fenster ein TChart oder RichEdit ist. Den Inhalt der jeweiligen MDI Fenster würden wir gerne als Stream in einem Blob Feld in der Datenbank ablegen. Daneben müssen zu jedem Blob noch eine Menge anderer Infos abgelegt werden wie z.B. Erstellzeit, -datum, Beschreibung, ....
Aber das sind alles recht überschaubare Datenmengen. Das Problem sind die Streams die mitunter doch recht groß werden können (Bei einem RichEdit mit Bildern locker mal in Richtung 100MB).

Folgendes müsste die Datenbank "erledigen":
* Wenn ein MDI Fenster geschlossen wird, die Daten (Stream) in das zugehörige Blob Feld schreiben.
* Die Daten sind bei uns in einem TreeView strukturiert. Wenn der User ein Element im Tree anklickt wird das MDI Fenster (wenn nicht vorhanden) neu generiert und dann die Daten aus dem Blob zurück geladen.

Im Grunde ist das schon alles. ABER ... Da unsere Anwendung nun mal auf MDI basiert kann ein User zig Fenster auf einen Schlag schließen oder auch öffnen. Bedeutet das Laden der Daten aus der DB und in die DB sollte mittels Thread erfolgen. Bis hierhin konnte das die DB ja. Allerdings hat die AbsoluteDB bei großen Datenmengen die Tabelle gelockt. Und wenn man dann auf andere Datensätze zugreifen wollte ging nix mehr (Anwendung hängt).

Ach ja und die Datenbank sollte folgendes Unterstützen:
* Datenbank ist single File orientiert
* Tool um die Datenbank Datei auch ohne die eigentliche Anwendung öffnen / bearbeiten zu können
* keine extra Installationen für die Datenbank. Das verkraften unsere User nicht Also entweder so wie Abolute DB in die Anwendung integriert oder über externe DLLs die man direkt mit der Anwendung installieren kann.
* Lizenz sollte auch für kommerzielle Nutzung geeignet sein.

Kann da jemand was zu empfehlen?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 07:15
Für Single-User-Betrieb: Embedded Firebird. Eine Embedded InterBase Version (InterBase 2009 ToGo, unter 3 Megabyte) scheint es auch zu geben. Dabei läuft kein separater Datenbank-Server-Prozess, die Datenbank-Engine wird in dem Prozessraum der Anwendung ausgeführt. Ich habe sie aber noch nicht getestet.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 07:44
Hallo Dominik,

Auch wenn NexusDB jede Tabelle als separate Datei angelegt, nenne
ich das System mal hier, da es von der Geschwindigkeit und dem
SQL-Sprachumfang her sehr weit vorne liegt.
Der Zugriff kann auch ohne Probleme aus mehreren Threads heraus erfolgen.
Ich hatte mich für NexusDB entschieden, nachdem ich zuvor übrigens
AbsoluteDB und AccuRacer getestet hatte - die schnitten bei den
gleichen (großen) Datenmengen oft deutlich langsamer ab.

P.S. Ich weiß ja nicht, wie lange das Schreiben des Blobs dauert,
aber könnte man in der Zeit nicht ein Progressbar-Fenster zeigen, das
es für diese Zeit unmöglich macht, weitere Fenster zu schließen?
Zumindest wäre das doch in der Übergangszeit bis zur Implementierung
einer neuen DB sinnvoll.

Gruß
Jürgen
Jürgen Höfs
  Mit Zitat antworten Zitat
moelski

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

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 08:37
Moin !

NexusDB hatte ich mir auch schon mal angesehen. Allerdings finde ich da die Preise recht gesalzen ...
Und auf den ersten Blick ist mir auch nicht ersichtlich was ich für unser Vorhaben dort kaufen müsste.

Zitat:
Ich weiß ja nicht, wie lange das Schreiben des Blobs dauert,
aber könnte man in der Zeit nicht ein Progressbar-Fenster zeigen
Ja das ginge sicherlich. Allerdings darf auch keinen Fall der Main Thread hängen. Denn dann würden eingehende Daten verloren gehen was ungünstig wäre.
Hmm ich muss das mal testen ob das mit dem "Sperren" so geht. Das könnte in der Tat eine Lösung sein. Denn im Normalfall dauert das Speichern nicht soo lange.

Greetz Dominik
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
375 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 08:48
Hallo Moelski,

bei NexusDb ist die EmbeddedVersion ohne Source free. Mit Source 100 Aut$. Ich denke das ist mehr als ok. Für die Server wird per Entwickler abgerechnen (750 Aut$). Der AWE Server ist teurer und wird per Maschine abgerechnet. Den brauchst Du aber denke ich nicht.
Das waren die Preise bis V2. Die V3 kommt ja demnächst. Evtl. ändert sich dort dann was.

cg
Andreas Schachtner
  Mit Zitat antworten Zitat
moelski

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

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 09:00
Moin !

Nu die Embedded wäre ja genau was wir brauchen.
Und die kann auch Multi Thread ohne Table Lock?
Was mich dann aber dennoch etwas stört sind die Dateien pro Tabelle:
Zitat:
jede Tabelle als separate Datei angelegt
Geht das nicht in einer Datei ?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
375 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 09:19
Hallo moelski,

ob Multithread in der der Form unterstützt wird kann ich auch nicht sagen. Schau am besten mal im Forum von NexusDB vorbei. Die Speicherung geschieht immer in einzelnen Dateien. Das hat natürlich Vor- und Nachteile. Wird nutzen eine Zip-Kompo um alle Datendateien, INIs, JPGs usw. in einer Datei zusammenzupacken um dem Nutzer das Handling zu erleichtern (Mandantenfähigkeit light sozusagen). Das Datenverzeichnis wird einmal unter Anwendungsdaten erzeugt und die gesamten Daten dann dort entpackt. Funzt ganz gut.

cg
Andreas Schachtner
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 09:20
Du könntest die BLOBs auch direkt in deine EXE (oder eine separate Resource-DLL) streamen, indem Du die Daten als resource deklarierst. Dann bräuchtest Du gar keine Datenbank. Wozu auch?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
moelski

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

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 09:24
Moin !

Zitat:
Du könntest die BLOBs auch direkt in deine EXE (oder eine separate Resource-DLL) streamen
Wie meinen ?

Das sind ja keine festen Daten sondern das sind die Daten die der User aufzeichnet. Und das in die EXE bzw. in eine Resourcen-DLL??

Da kann ich gerade nich folgen.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Datenbank zur Ablage von (mitunter großen) Blob flieds?

  Alt 26. Apr 2009, 09:27
Zitat von moelski:
Moin !
Und die kann auch Multi Thread ohne Table Lock?
Ja, das geht auf jeden Fall.
In den Beispielen gibt es extra ein Demo mit Threadbasierten Schreib- Lesezugriff.
Jürgen Höfs
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:50 Uhr.
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