AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Speicherbedarf von Access-DB sehr groß
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherbedarf von Access-DB sehr groß

Ein Thema von KPBecker · begonnen am 7. Mai 2011 · letzter Beitrag vom 10. Mai 2011
Antwort Antwort
Seite 2 von 2     12   
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#11

AW: Speicherbedarf von Access-DB sehr groß

  Alt 9. Mai 2011, 20:29
@Versuche 1+2
Ich finde den Gedanken von Bernhard trotzdem gut.
Nur wenn sichergestellt ist, dass der Zielfeldtyp binär ist und kein Textformat, dann wäre es widerlegt. (Vorausgesetzt beim Füllen der Felder passiert keine implizite Umwandlung, bevor es binär gespeichert wird)

Deine Gründe kann ich nachvollziehen. Daher wäre es evtl. eine Alternative, nur die Links auf die Dateien im Filesystem zu speichern. Dann muss aber garantiert sein, dass niemand außer dem Programm drin rumpfuscht.

Konntest Du schon was zum Thema Blockgröße finden?
Ein anderer Test wäre das (einmalige) Speichern einer sehr großen Datei, MB Bereich oder sowas, kann man vielleicht besser prüfen.

Noch eine Idee wäre eine Komprimierung der mdb nach dem Import...
Gruß, Jo
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#12

AW: Speicherbedarf von Access-DB sehr groß

  Alt 10. Mai 2011, 05:46
@Perlsau:
Access ist für mich am einfachsten da vorhanden
MySQL wäre auch noch möglich
Firebird ist, da kostenlos im Netz verfügbar, quasi auch vorhanden. Du mußt bei einem Kunden kein Firebird installieren, wenn du die Embedded-Version mitgibst, das ist einfach ein paar DLLs (u.a. fbclient.dll), die im Programmverzeichnis liegen. Der Vorteil gegenüber Access ist gewaltig! Schon allein bei Blob-Feldern: speicherst du in Access z.B. JPG-Grafiken ab, fügt Access dem Pic eigensinnig noch ein paar Byte hinzu, die du beim Auslesen mühevoll wieder wegschneiden mußt. Ansonsten gibt es bei Access nichts, was es nicht auch in Firebird gibt. Für MySQL gibt es meines Wissens nach dagegen keine Embedded-Version.

Der Gedanke, daß in einem Memo 2-Byte-Zeichen in der DB abgelegt werden und daher der Faktor >2 in den Größen (Dateien vs. DB) liegt, stimmt möglicherweise nicht.
Versuche:
1. Textfeld als Memo bzw. als OLE (BLOB) definiert, schreiben des Inhalts als Stringlist mit Text.CommaText
--> kein Unterschied in der DB-Größe
2. Umsetzen von Text.CommaText in einen Ansi-String, der dann wie bei 1. in ein Memo bzw. OLE-Feld abgelegt wird
--> kein Unterschied in der DB-Größe
Die Größe einer Datenbank kann vor und nach dem Einfügen von Daten gleich sein, du siehst die Größenänderung erst nach einer erneuten Kompilation (bei Access: nach Komprimierung, bei Firebird: nach BackUp & Restore).
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Speicherbedarf von Access-DB sehr groß

  Alt 10. Mai 2011, 08:04
Der Vorteil gegenüber Access ist gewaltig! Schon allein bei Blob-Feldern: speicherst du in Access z.B. JPG-Grafiken ab, fügt Access dem Pic eigensinnig noch ein paar Byte hinzu, die du beim Auslesen mühevoll wieder wegschneiden mußt.
Aber nur wenn du es mit der Access-Oberfläche machst. Über ADO nicht.

Für MySQL gibt es meines Wissens nach dagegen keine Embedded-Version.
Gibt es. Jedoch hat man bei MySQL die GPL-Falle. Entweder OpenSource oder pro Jahr bis zu 20-30k€ Lizenzkosten für eine unbegrenzte Verteilung. Ansonsten für nicht OpenSource pro Verteilung ein MySQL Serverlizenz.


Um zu sehen wie es gespeichert wird: Einfach Hex-Editor nehmen und nach dem Text der Textdatei suchen. Dann sieht man genau wie es im MEMO/Varchar bzw. im Blob-Feld abgespeichert wird. Oder einfach mal 100.000 mal gleichen Text speichern um ungenauigkeiten von "Blockgrößen-Anforderungen" zu vermeiden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#14

AW: Speicherbedarf von Access-DB sehr groß

  Alt 10. Mai 2011, 09:17
Für MySQL gibt es meines Wissens nach dagegen keine Embedded-Version.
Gibt es. Jedoch hat man bei MySQL die GPL-Falle. Entweder OpenSource oder pro Jahr bis zu 20-30k€ Lizenzkosten für eine unbegrenzte Verteilung. Ansonsten für nicht OpenSource pro Verteilung ein MySQL Serverlizenz.


Um zu sehen wie es gespeichert wird: Einfach Hex-Editor nehmen und nach dem Text der Textdatei suchen. Dann sieht man genau wie es im MEMO/Varchar bzw. im Blob-Feld abgespeichert wird. Oder einfach mal 100.000 mal gleichen Text speichern um ungenauigkeiten von "Blockgrößen-Anforderungen" zu vermeiden.
Dann nimmt man MariaDB ist ein MySQL Fork und ist komplett GPL V2
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Speicherbedarf von Access-DB sehr groß

  Alt 10. Mai 2011, 09:28
MySQL ist auch unter GPL verfügbar. Diese verlangt aber dass man sein Programm dann auch unter diser veröffentlicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Speicherbedarf von Access-DB sehr groß

  Alt 10. Mai 2011, 10:10
Zitat von KPBecker;1099845@schorsch666 & p80286:
Das Ziel war, die Information "übersichtlicher" als in großen Verzeichnissen abzulegen, schnelleren Zugriff auf den Inhalt einzelner Dateien zu haben, die Bearbeitung nach Datum vornehmen zu können und im Datensatz einfach ein "Verarbeitungskennzeichen" mitzuführen. Daher auch die Indizes auf diesen Angaben. Außerdem wollte ich Verschnitt durch die Blockung bei Dateien vermeiden (haha).
Tips sind natürlich immer willkommen.
Wenn Du unbedingt Platz sparen willst, und der direkte Zugriff für den Benutzer nicht gegeben sein muß, alle in Dateinen in einer Datei (pro Tag, pro Monat, pro irgendwas zusammen fassen).
Wenn Du jede Datei mit einem Kenner am Anfabg versiehst, und das Abspeichern auch noch mit brachbaren Blockgrößen erfolgt (Platz sparen??) solltest Du auch schnell zugreifen können.
Nur ist das schon beinahe das Nachbauen einer Datenbank.....

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:11 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