2010-06-22 3 views
6

İkili verileri (resimler, pdf'ler, mp3'ler, videolar vb) mysql'de saklamanın en iyi yolu nedir ve neden? Bilmek istediğim şey onu nasıl yapıyor (geliştiriciler olarak) ve neden? Ayrıca büyük siteler nasıl yapıyor? İkili verileri (resimler, pdf'ler, mp3'ler, videolar vb) mysql'de saklamanın en iyi yolu nedir ve neden?

MySQL Blob İkili veri depolamak için önceden ;-)

+1

Bu, neden Oracle için etiketlendi? –

+0

Genel olarak bir rdbms soru olduğunu düşündüm – Imran

+2

Ama sorunuz "mysql" değil "bir veritabanında" diyor! Aslında bu farklı DBMS'lerin farklı şekilde yapma eğiliminde oldukları bir şey. –

cevap

4

teşekkür ederiz kullanılabilir: gerçekten gerekli değilse bir ikili veri depolamak olmaz MySQL Manuel: 10.4.3. The BLOB and TEXT Types

rağmen Veri tabanı, MySQL vb. (Veri Toplama, Dizin, ... gibi) veri depolamanın temel nedenlerinden dolayı bu veri türleri ile pek kullanılmaz. Blob ayrıca genel veritabanı performansını da düşürüyor.

Belki birkaç yönlerini ve dosya sistemi yolu ile saklamak dosyalar için ayrı bir tablo oluşturmak

...

+2

Bilmiyorum, Oracle veritabanlarında saklanan terabaytlardan ikili veriyi gördüm ve ondan sonra akışını gerçekleştirdim. Mutlaka kötü bir fikir değil. – Artefacto

+0

Genelde kötü bir fikir olduğunu yazmıyorum - Bloblar için ve bunlara karşı örnekler ve kullanım örnekleri vardır. Yine de, benim düşünceme göre, birisi bu tarz teknikleri kullanmak istediğinde iyi nedenler ve doğru ayarlamalar (yani, ayrılmış tablolar) olmalıdır. – FloE

+0

Bir BLOB gitmek için yoldur. Yolun saklanması bazı kesin problemlere sahiptir. Dosyalar taşınırsa, işaretçileriniz bozuk. DB'nin yedeklenmesi nispeten anlamsız olur. Verilerdeki mevcut işlemler, saklamak için gereken özelliklere karar vermez. –

3

Oracle ben böyle nesneleri saklamak için bir BLOB sütun kullanmak. Bu şekilde, veri bütünlüğü ve güvenliği, diğer tüm verilerle aynı şekilde sağlanır. Bunun alternatifi, harici dosya sistemindeki bir dosyaya bir işaretçi olan bir BFILE kullanmaktır - bir sonraki erişmeye çalıştığınızda, taşınmış, silinmiş, değiştirilmiş veya kaybolabilecek bir dosya.

+0

+1 Web siteleri oluştururken hem BLOB mağazaları hem de dosya sistemi işaretçileriyle uğraşmak zorunda kaldığımdan, sunmadan önce bir dosya sistemi önbelleği ile ön planda bulunan BLOB depolama alanını tercih ederim. –

0

Ben PBMS depolama motorunu kullanılan hiç ama gitmek için bir yol gibi görünür: Ben çok ve onları bir sürü var

Blob streaming

1

Eh, diskteki görüntüleri tutmak, benim yok Bu bakım kâbusunu hayal etmek istiyorum. Benim veritabanı (mysql) şimdiye kadar 5GB daha küçüktür ve ben ~ 50GB jpeg dosyaları ile iyiyim (her görüntü kaydedilen birkaç boyutu vardır). Ayrı bir veritabanında (ayrı bir raid denetleyicisi ile) görüntülerin saklanması doğru yapıldığında iyi bir şey olabilir, ancak sistemin diskte daha hızlı depolandığını düşünüyorum.

1

Veritabanını yalnızca dosyaları meta verileri (boyut, MIME türü, etiketler, vb.) Depolamak için kullanırdım. Veri bütünlüğü ve güvenliği uğruna, ikili verileri Amazon's S3 gibi özel bir servise götürmekteyim.

Veri bütünlüğü ile ilgili olarak: Büyük blobları içeren işlemler gerçekleştirerek DB sunucusunda aşırı yüklenmeyi önleyebilirim. Bunun yerine, önce dosyaları saklamayı ve bazı periyodik eşzamansız 'çöp toplama' yapmayı öneririm.