Vă mulțumim pentru susținere

Date binare în MySQL

Cum stochez datele binare în MySQL ?

0
adăugat editat
adăugat autor juergen d
@Nevir: Ce informații sunteți în mod special după? Ce credeți că lipsește din @ phpguy's și @Mat's răspunsuri?
adăugat autor eggyal
Ne pare rău, nu am vrut să recompensez acest lucru (a fugit într-un bug cu UI), dar nu poate elimina recompensa
adăugat autor Nevir

8 răspunsuri

Răspunsul de la phpguy este corect, dar cred că există multe confuzii în detaliile suplimentare de acolo.

Răspunsul de bază este într-un domeniu de tip BLOB tip de tip / atribut. BLOB este scurt pentru Binary Large Object și tipul de date coloană este specific pentru manipularea datelor binare.

Consultați pagina manuală relevantă pentru MySQL .

0
adăugat

Vă recomandăm să stocați date binare într-o bază de date relațională. Bazele de date relaționale sunt proiectate să funcționeze cu date de dimensiune fixă; aceasta este locul unde puterea lor de performanță este: amintiți-vă articolul lui Joel vechi despre motivele pentru care bazele de date sunt atât de repede? deoarece este nevoie de exact 1 increment de indicator pentru a trece de la o înregistrare la alta. Dacă adăugați date BLOB de dimensiuni nedefinite și foarte variate, veți înșface performanțele.

În schimb, stocați fișiere în sistemul de fișiere și memorați numele fișierelor în baza de date.

0
adăugat
Nu am cedat, dar s-ar putea datora faptului că ar trebui să nu o faceți niciodată, spre deosebire de a spune că este o idee rea în cea mai mare parte a timpului. Sunt de acord cu el în general, dar nu în 100% din cazuri. Pot exista alte considerente decât performanța. De exemplu, lucrez la ceva în care performanța nu contează deloc. Alți factori, cum ar fi centralizarea, simplitatea și backup-urile, înseamnă că în acest caz stocarea în baza de date are sens. Un alt motiv comun este replicarea.
adăugat autor YeB

O implementare mult mai bună de stocare în aici . Veți întâlni probleme cu implementarea lui Florian.

0
adăugat

În timp ce nu ați spus ce stocați și puteți avea un motiv mare pentru a face acest lucru, răspunsul este adesea "ca o referință a unui sistem de fișiere", iar datele reale se află pe sistemul de fișiere undeva.

http://www.onlamp.com/pub/a /onlamp/2002/07/11/MySQLtips.html

0
adăugat

The question also arises how to get the data into the BLOB. You can put the data in an INSERT statement, as the PHP example shows (although you should use mysql_real_escape_string instead of addslashes). If the file exists on the database server, you can also use MySQL's LOAD_FILE

0
adăugat

Deși nu ar trebui să fie necesar, puteți încerca să codificați datele base64 și să le decodificați. Aceasta înseamnă că db va avea doar caractere ascii. Va dura un pic mai mult spațiu și timp, dar orice problemă legată de datele binare va fi eliminată.

0
adăugat

Depinde de datele pe care doriți să le stocați. Exemplul de mai sus utilizează tipul de date LONGBLOB , dar trebuie să știți că există și alte formate de date binare:

TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB
VARBINARY
BINARY

Fiecare are cazurile lor de utilizare. Dacă este o lungime cunoscută (scurtă) (de exemplu, date ambalate), de multe ori va funcționa BINARY sau VARBINARY . Ei au avantajul suplimentar de a fi capabil de indicele tona pe ele.

0
adăugat

Când trebuie să stocăm date binare, folosesc întotdeauna formatul VARBINARY , așa cum a fost introdus byd0nut .

You can find documentation at MySQL website under documented topic 12.4.2 The BINARY and VARBINARY Types

If you are asking what are advantagese, please look at question why-varbinary-instead-of-varchar

0
adăugat