Jakie są różnice między typami danych BLOB i TEXT w MySQL?

117

Co to jest blobi co jest text? Jakie są różnice?

Kiedy muszę używać, bloba kiedy potrzebuję textjako typu danych?

Ponieważ dla blobi textistnieje mediumblob== mediumtext, smallblob== small text. Czy w ogóle mają to samo znaczenie?

Spójrz na to MEDIUMBLOB, MEDIUMTEXT L+ 3 bajty, gdzie L < 224.

Co to jest L?

nencor
źródło
Myślę, że ten post odpowiada na twoje pytanie stackoverflow.com/questions/7071662/mysql-text-vs-blob-vs-clob
Earlonrails

Odpowiedzi:

103

TEXT i CHAR skonwertują do / z zestawu znaków, który skojarzyli z czasem. BLOB i BINARY po prostu przechowują bajty.

BLOB jest używany do przechowywania danych binarnych, podczas gdy tekst jest używany do przechowywania dużego ciągu.

Wartości BLOB są traktowane jako ciągi binarne (ciągi bajtów). Nie mają zestawu znaków, a sortowanie i porównanie są oparte na wartościach liczbowych bajtów w wartościach kolumn.

Wartości TEXT są traktowane jako łańcuchy niebinarne (ciągi znaków). Mają zestaw znaków, a wartości są sortowane i porównywane na podstawie sortowania zestawu znaków.

http://dev.mysql.com/doc/refman/5.0/en/blob.html

Darcey
źródło
3
więc używamy tekstu do przechowywania długiego tekstu, takiego jak „post wordpress”? i używamy bloba do przechowywania bardzo długich adresów URL? Dlaczego więc nie używamy varchar do przechowywania bardzo długiego tekstu zamiast używania bloba lub tekstu? bo w pamięci obliczenia, varchar jest bardzo proste, na przykład stworzyć stronę internetową tabeli (varchar website_name (30)), a następnie wypełniamy website_name „stackoverflow” tak pamięć potrzebna jest 13byte
nencor
5
TEXT zostanie zastąpiony przez Varchar (MAX) ale na razie zależnie od twojej wersji mysql używaj TEXT do dużych postów tekstowych, takich jak posty w treści bloga itp. BLOB nie powinien być używany do przechowywania bardzo długich adresów URL lub dużej ilości tekstu . Zwykle jest używany do przechowywania obrazów lub innych obiektów binarnych. Osobiście nigdy nie używam BLOBa ani TEKSTU i przechowuję duże ilości danych w plikach xml w stosunku do folderów opartych na identyfikatorze użytkownika.
Darcey
nie rozumiem obiektu binarnego. masz na myśli, że możemy przechowywać zdjęcia w bazie danych używając typu danych Blob? tak jak folder? wszystko, co wiem o binarnych, to tylko 1 lub 0.
nencor
1
@nencor Tak, możesz przechowywać obrazy w bazach danych. Możesz także przechowywać archiwa. Nie można jednak przechowywać folderu w bazie danych, ponieważ foldery są w rzeczywistości funkcjami systemu plików. (Można ostatecznie przechowywania kompletnego systemu plików np jako plik iso do bazy danych, choć)
Martin Thoma
@ martin-thoma Mamy aplikację, w której po stronie serwera znajduje się baza danych MongoDB. Komponent Mobile aplikacji korzysta z SQLLite. Musi istnieć sposób na mostkowanie danych między bazą danych MongoDB a bazą danych SQLLite. MongoDB używa ObjectIds do jednoznacznej identyfikacji danych. Ponieważ SQLLite (świat RDBMS) nie ma żadnego bezpośredniego sposobu reprezentowania obiektów MongoDB, zastanawiałem się, czy mogę przechowywać ObjectIds jako typy BLOB. Czy to brzmi jak rozsądne rozwiązanie? Czy spowolniłoby to działanie? Czy byłyby jakieś inne wady?
CS Lewis
10

TEXT i CHAR lub nchar, które zwykle są konwertowane na zwykły tekst, dzięki czemu można przechowywać tylko tekst w postaci ciągów.

BLOB i BINARY, co oznacza, że ​​możesz przechowywać dane binarne, takie jak obrazy, po prostu przechowują bajty.

NA ZIMNO
źródło
co masz na myśli przez przechowywanie danych binarnych, takich jak obraz? czy chodziło Ci o URL obrazu?
nencor
10

Typy danych Blob przechowują obiekty binarne, takie jak obrazy, podczas gdy typy danych tekstowych przechowują obiekty tekstowe, takie jak artykuły na stronach internetowych

Kenny
źródło
7

BLOB to ciąg binarny do przechowywania zmiennej ilości danych. W większości BLOB-y są używane do przechowywania rzeczywistego pliku binarnego obrazu zamiast ścieżki i informacji o pliku. Tekst jest przeznaczony dla dużej ilości znaków ciągu. Zwykle blog lub artykuł z wiadomościami stanowiłby pole TEKST

L w tym przypadku jest używane z określeniem wymagań dotyczących przechowywania. (Długość | Rozmiar + 3), o ile jest mniejszy niż 224.

Źródła: http://dev.mysql.com/doc/refman/5.0/en/blob.html

James Williams
źródło
3

Według wysokowydajnej książki MySQL:

Jedyną różnicą między rodzinami BLOB i TEXT jest to, że typy BLOB przechowują dane binarne bez sortowania ani zestawu znaków, ale typy TEXT mają zestaw znaków i sortowanie.

Alireza Rahmani Khalili
źródło
1

BLOB przechowuje dane binarne, które są większe niż 2 GB. Maksymalny rozmiar dla BLOB to 4 GB. Dane binarne to dane nieustrukturyzowane, tj. Obrazy, pliki audio, pliki vedio, podpis cyfrowy

Tekst jest używany do przechowywania dużego ciągu.

Abhishek Saha
źródło