Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi 8 Byte großes Array in MySQL DatenBank speichern (https://www.delphipraxis.net/31504-8-byte-grosses-array-mysql-datenbank-speichern.html)

SleepyMaster 10. Okt 2004 14:36


8 Byte großes Array in MySQL DatenBank speichern
 
Hi ihrs

möchte gerne sehr viele arrays speichern. Hab gelesen, dass das mit BLOB geht. Meine arrays haben aber alle eine konstante größe von 8Bytes. Gibt es eine Möglichkeit, dass ich 8 Byte große arrayes Speichern kann oder macht es nichts aus (von Geschwindigkeit/Speicherverbrauch), wenn ich ein 255 Byte großes TINYBLOB nehme?

Vielen Dank

Mamphil 10. Okt 2004 18:04

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Hi!

Wäre es (durch Umwandlung) nicht auch möglich, das Array als VARCHAR(8) zu speichern, also als String mit 8 Zeichen?
Eventuell macht es auch Sinn, den Typen CHAR(8) zu verwenden. Vergleiche dazu einfach mal http://dev.mysql.com/doc/mysql/en/CHAR.html

Mamphil

Sharky 11. Okt 2004 06:30

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Zitat:

Zitat von SleepyMaster
.... Meine arrays haben aber alle eine konstante größe von 8Bytes. ...

Hai SleepyMaster,

verstehe ich das so richtig das dein Array so deklariert ist:
Delphi-Quellcode:
var
 myArray : Array[1..8] of Byte;

SleepyMaster 11. Okt 2004 13:44

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Zitat:

Zitat von Mamphil
Wäre es (durch Umwandlung) nicht auch möglich, das Array als VARCHAR( zu speichern, also als String mit 8 Zeichen?

Nein, da ich dann c.a. den doppelten Speicherplatz benötigen würde (und bei mehreren GB an Daten macht das schon was aus)


@Sharky: Ja genau.

Sharky 11. Okt 2004 14:04

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Zitat:

Zitat von SleepyMaster
....@Sharky: Ja genau.

Hai SleepyMaster,

überlege Dir doch ein Verfahren die Bytes (mit SHL bzwl SHR) in ein "INTEGER" zu "schreiben" und dann dieses in der Tabelle zu speichern.

Jelly 11. Okt 2004 14:23

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Ein Byte nimmt nicht mehr Speicher weg wie ein Char... Was spricht also dagegen ein Datentyp von char(8) in der DB zu nehmen...

Blobs nehmen mehr Speicher weg und machen die DB langsam. Ausserdem kannst du nicht in Blobs suchen, zumindest nicht direkt über SQL. Blobs machen nur dann Sinn wenn es sich
a) um große Datenmengen handelt
b) du nicht weisst, wie gross die Daten sein können.

franktron 11. Okt 2004 14:25

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Warum beschränkst du das Blobfeld nicht einfach auf 8 Byte.

Jelly 11. Okt 2004 14:27

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Zitat:

Zitat von franktron
Warum beschränkst du das Blobfeld nicht einfach auf 8 Byte.

Geht das denn? Das will ich sehen. :stupid:

franktron 11. Okt 2004 14:30

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
TINYBLOB(8) :-D

Sharky 11. Okt 2004 14:32

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Zitat:

Zitat von Jelly
...Was spricht also dagegen ein Datentyp von char(8) in der DB zu nehmen...

Hai Jelly,

ich hatte ein Integer (je nach DB 4-8 Byte) vorgeschlagen weil ich nicht weiss wie die DB/Delphi reagiert wenn versucht wird ein #0 einzutragen.

Jelly 11. Okt 2004 14:33

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Zitat:

Zitat von franktron
TINYBLOB(8)

Das nimmt zumindest mal MySQL nicht an. Dem Typ TinyBlob kann keine Länge mitgegeben werden. Und soweit ich weiss geht das z.B. in MSSQL auf nicht.

Grrrr.... diese Smilies.... :twisted:

SleepyMaster 11. Okt 2004 14:42

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
OK! Das mit dem char klappt meiner Meinung nach am besten/einfachsten - nur könnte ich mir eher vorstellen, dass das mit den Integern schneller geht (auch wenn die Datenmenge die gleiche ist). Oder was meint ihr dazu?

franktron 11. Okt 2004 14:44

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Ist das sowios nicht egal da MySQl die größe nicht Dynamisch verteilt und somt das Blob nur so gross wie die Daten darin ist ????.

So stehts zumin. in der Doko

Jelly 11. Okt 2004 14:49

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Zitat:

Zitat von franktron
Ist das sowios nicht egal da MySQl die größe nicht Dynamisch verteilt und somt das Blob nur so gross wie die Daten darin ist ????.

Das genau hab ich ja auch geschrieben, daß die Größe dynamisch angepasst wird, und genau das macht das Ganze langsam.

Mamphil 11. Okt 2004 17:58

Re: 8 Byte großes Array in MySQL DatenBank speichern
 
Hi!

Ich meinte mit "Umwandlung in einen String" nicht, dass du die z. B. einzelnen Zahlen in einen String umwandelst, sondern dass du z. B. eine 8-Bit-Zahl einfach durch das entsprechende Zeichen ersetzt. Du meintest, dein Array belegt 8 Byte. Es gibt auch Strings, die genau 8 Byte belegen - man müsste also den Inhalt des Arrays (von den einzelnen Bits und Bytes her) einfach auch als String auffassen können.

Mamphil


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 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