MySQL'deki BLOB ve TEXT veri türleri arasındaki farklar nelerdir?


117

Nedir blobve nedir text? Farklılıklar nedir?

Veri türü olarak blobne zaman ve ne zaman kullanmam gerekir text?

Çünkü blobve textiçin mediumblob== mediumtext, smallblob== vardır small text. Aynı anlama sahipler mi?

Ve şuna bakın MEDIUMBLOB, MEDIUMTEXT L+ 3 bayt, nerede L < 224.

Nedir L?


Yanıtlar:


103

METİN ve KARAKTER, zamanla ilişkilendirdikleri karakter setine / setinden dönüşecektir. BLOB ve BINARY, baytları saklar.

BLOB, büyük dizeleri depolamak için Metin kullanılırken ikili verileri depolamak için kullanılır.

BLOB değerleri, ikili dizeler (bayt dizeleri) olarak değerlendirilir. Karakter kümeleri yoktur ve sıralama ve karşılaştırma, sütun değerlerindeki baytların sayısal değerlerine dayanır.

METİN değerleri, ikili olmayan dizeler (karakter dizeleri) olarak değerlendirilir. Bir karakter kümesine sahiptirler ve değerler, karakter kümesinin harmanlamasına göre sıralanır ve karşılaştırılır.

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


3
Yani, "wordpress postası" gibi uzun metinleri saklamak için metin kullanıyoruz? ve çok uzun URL adreslerini saklamak için blob kullanıyoruz? öyleyse neden blob veya metin kullanmak yerine çok uzun bir metni saklamak için varchar kullanmıyoruz? çünkü bellek hesaplamasında, varchar gerçekten basittir, örneğin tablo web sitesi (website_name varchar (30)) oluşturun ve ardından website_name "stackoverflow" u dolduruyoruz, böylece gerekli bellek 13byte
nencor

5
TEXT, Varchar (MAX) ile değiştirilecek, ancak şimdilik mysql sürümünüze bağlı olarak, blog gövdesi gönderileri gibi büyük metin gönderileri için TEXT kullanın. BLOB, çok uzun URL adreslerini veya büyük miktarda metni depolamak için kullanılmamalıdır. . Normalde görüntüleri veya diğer ikili tabanlı nesneleri depolamak için kullanılır. Şahsen ben hiçbir zaman BLOB veya TEXT kullanmam ve kullanıcı kimliği tabanlı klasörlere göre xml dosyalarında büyük miktarda veri depolamam.
Darcey

ikili tabanlı nesneyi anlamıyorum. Yani, Blob veri türünü kullanarak fotoğrafı veritabanına depolayabilir miyiz ?? tıpkı klasör gibi mi? ikili veri hakkında bildiğim her şey sadece 1 veya 0.
nencor

1
@nencor Evet, görüntüleri veritabanlarında saklayabilirsiniz. Arşivleri de saklayabilirsiniz. Ancak bir klasörü veritabanında saklayamazsınız çünkü klasörler aslında dosya sisteminin özellikleridir. (Sonunda eksiksiz bir dosya sistemini bir veritabanına iso dosyası olarak depolayabilirsiniz)
Martin Thoma

@ martin-thoma Sunucu-Tarafının MongoDB veri tabanına sahip olduğu bir uygulamamız var. Uygulamanın Mobil Bileşeni SQLLite kullanır. MongoDB Veritabanı ile SQLLite Veritabanı arasında veri köprüsü kurmanın bir yolu olması gerekir. MongoDB, verileri benzersiz bir şekilde tanımlamak için ObjectIds kullanır. SQLLite (RDBMS dünyası) MongoDB ObjectIds'ı temsil etmenin doğrudan bir yolu olmadığından, ObjectIds'ı BLOB türleri olarak saklayıp saklayamayacağımı merak ediyordum. Bu makul bir çözüm gibi geliyor mu? Performansı yavaşlatır mı? Başka Dezavantajlar var mı?
CS Lewis

10

TEXT ve CHAR veya nchar tipik olarak düz metne dönüştürülür, böylece yalnızca dizeler gibi metin depolayabilirsiniz.

BLOB ve BINARY, görüntüler gibi ikili verileri basitçe bayt depolayabileceğiniz anlamına gelir.


görüntü gibi ikili verileri depolamaktan kastınız nedir? resim url mi demek istediniz?
nencor

10

Blob veri türleri görüntüler gibi ikili nesneleri depolarken, metin veri türleri web sayfalarının makaleleri gibi metin nesnelerini depolar


7

BLOB, değişken miktarda veriyi tutan ikili bir dizedir. BLOB'lar çoğunlukla yol ve dosya bilgisi yerine gerçek görüntü ikilisini tutmak için kullanılır. Metin, büyük miktarda dize karakteri içindir. Normalde bir blog veya haber makalesi bir METİN alanını oluşturur

Bu durumda L, depolama gereksinimi belirtilerek kullanılır. (Uzunluk | Boyut + 3) 224'ten küçük olduğu sürece.

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


3

Yüksek performanslı Mysql kitabına göre:

BLOB ve BLOB arasındaki tek fark TEXT aileleri şudur: BLOB türlerinin ikili verileri harmanlama veya karakter kümesi olmadan saklaması, ancak TEXT türlerinin bir karakter kümesi ve harmanlaması olmasıdır.


1

BLOB, 2 GB'den büyük ikili verileri depolar. BLOB için maksimum boyut 4 GB'dir. İkili veriler, yapılandırılmamış veriler anlamına gelir, yani görüntü ses dosyaları vedio dosyaları dijital imza

Metin, büyük dizeyi saklamak için kullanılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.