2011-11-21 9 views
9

Istnieje typ kolumny o nazwie blob w bazie danych i służy do przechowywania danych binarnych.dane binarne w bazie danych, blob kontra skompresowany base64

Jednak częściej niż ja widzę rozwiązania, które kompresują dane binarne, konwertują dane binarne na base64 i zapisują ciąg base64 jako varchar lub tekst w bazie danych.

Python przykładowy kod:

import zlib, base64 
base64_str = base64.b64encode(zlib.compress(binary_data, 9)) 

więc istnieją dwa sposoby przechowywania danych binarnych w bazie danych:

  1. jako blob
  2. jak sprężone base64

Moje pytania jest : Który sposób jest lepszy i dlaczego?

+4

Nie rozumiem, dlaczego ktokolwiek użyłby metody 2. Wprowadza niepotrzebną złożoność i dwukrotnie zaciemnia dane. Nie będę jednak zamieszczał tej odpowiedzi, ponieważ nie mam żadnych mocnych dowodów na to, że nie ma przypadków, w których skompresowany base64 jest korzystniejszy niż "BLOB". – Polynomial

Odpowiedz

12

Wygląda na to, że muszę odpowiedzieć na własne pytanie. W większości przypadków przechowywanie skompresowanego base64 w bazie danych nie jest dobrym pomysłem. Jest to złożone niż przechowywanie kropli. I przez większość czasu plik binarny jest mniejszy niż ciąg znaków base64.

Znajduję tylko jeden przypadek, w którym skompresowana jest baza base64: nie można zmienić schematu tabeli, a istnieją tylko kolumny tekstowe, należy przechowywać dane binarne w tej tabeli. Jedynym możliwym sposobem jest konwersja ciągu binarnego do base64.

+3

Nie wiedziałem, że możesz odpowiedzieć i zaakceptować własne pytanie, ale dobrze zrobione! –