SQL Server dışında Dosya sistemi ve S3 vb.


12

Benim uygulama (klasik asp yay!) 25GB @ yaklaşık 2.1 milyon görüntü vardır ve bu sadece 90 gün veri temsil eder ve en az 365 gitmek istiyorum. Bunları kontrol altına almam gerekiyor ve tüm seçenekleri göz önünde bulunduruyorum. Aşağıdaki uygulamaların artıları ve eksileri hakkında düşünceleriniz nelerdir:

  • SQL Server Artıları: Kolay yedekleme Eksileri: Performans?
  • Dosya Sistemi Artıları: Hız Eksileri: Artıklık, Yedekleme yavaş (şu anda daha iyi hale getirebilir yerine Sentetik tam yedekleme yapıyor araştırıyor)
  • S3 ve benzeri Artıları: Bant genişliği veri merkezimden Amazon'a kaydırılıyor, neredeyse sınırsız depolama alanı. Eksileri: Maliyet, Maliyet Analizi zor (bant genişliğimin% 80'ini tahmin etmek YG amaçlı görüntülerdir), Zorunlu / Maliyetli olması gerektiğinde servis sağlayıcılarını değiştirmek için

Başka milyonlarca görüntü sorunuyla ilgilenen var mı ve bu sorunu nasıl ele aldınız?


4
Görüntü verilerini (bloblar) veritabanında saklamayın. Biz bu hatayı yıllar önce yaptık ve o zamandan beri ödüyoruz. Veritabanı meta veriler için mükemmeldir.
Mark Henderson

FILESTREAM veri türü hakkındaki yazımı görün - fikrinizi değiştirebilir.
Dan Diplo

Yanıtlar:


6

Milyonlarca görüntümüz yok, ancak yüz binlerce var ve hibrid yaklaşımı kullanıyoruz - meta veriler için mysql, yedekleme için yerel diskte depolanan görüntüler ve kullanıcılara sunulduğu Amazon s3'e aktarıldı. Amazon ve kullanılabilirlik konusunda hiçbir sorun yaşamadık. Cloudfront'a geçmek planlarımızda, sadece zamanı bulmamız gerekiyor.

Bu tartışma sizin kararınızda size yardımcı olabilir:
http://ask.metafilter.com/59635/Millions-of-images

SQL sunucusunda meta veriler ve dosya sistemi (veya s3 veya cloudfront) dosyaları ile gider. Ancak en iyi cevap diğer bazı kullanım şekillerine bağlıdır:

  • görüntüler sık ​​sık değişiyor mu
  • görüntüleri doğrudan dosya sisteminden sunabiliyor musunuz (yani img src="...") veya erişim kontrolü için onlara ihtiyacınız var mı? İkincisi ise, bir veritabanı çözümü en iyisidir
  • en az sayıda (en son% 10) az sayıda görüntüye mi hizmet veriyorsanız yoksa dağıtım nispeten yaygın mıdır?

Milyonlarca görüntü için yedeklemeler, onları nasıl düzenlerseniz ayarlayın karmaşık olacaktır - sadece çok fazla veri. Bu çözümü taahhüt etmeden önce SQL sunucusunda blob'ları yedeklemeyle ilgili iyi bir örnek olay incelemek istiyorum. (Yararlı olabilecek bir makale: http://www.databasejournal.com/features/mssql/article.php/3738276/Storing-Images-and-BLOB-files-in-SQL-Server-Part-4.htm )


Yedekleme karmaşık olacaktır, ancak en azından dosya düzeyinde yedeklemelerle (genellikle) yalnızca bir kaydı / resmi geri yüklemek için tüm yedeklemeyi geri yüklemek zorunda kalmazsınız. IMO, veritabanı size aksi takdirde yapamayacağınız bir şey vermedikçe varsayılan olarak dosya sistemi. +1
JasonBirch

Dosya sistemleri dosyaları depolamak için tasarlanmıştır - milyonlarca dosyayı verimli bir şekilde depolamak için tasarlanmış dosya sistemlerini bulabilirsiniz. Veritabanları, meta verileriniz - sorgulama ve ilişkilendirme gibi şeyler için tasarlanmıştır. Çok az görüntünüz yoksa, bu muhtemelen en iyi yoldur (bulut çözümleri hariç).
dmsnell


3

" Verileri / ikili verileri veritabanında saklamayın " diyen kişileri yanıtlarını eski bilgilere dayandırırken (verileri VarBinary türü sütununda depolayacağınızı varsayarak) yoksayın. Görüntüleri saklamak için SQL Server kullanmanın performans kaygıları artık SQL Server 2008'deki FILESTREAM veri türü kullanılarak azaltılabilir . Esasen FILESTREAM veri türü, veritabanında veri saklama kolaylığını sunumdan elde ettiğiniz performansla birleştirmenize olanak tanır NTFS dosya deposundan dosyalar.

SQL Mag alıntılamak için :

"SQL Server 2008'in yeni FILESTREAM desteği, LOB'lara doğrudan NTFS dosya sisteminden erişmenin avantajını, SQL Server ilişkisel veritabanı altyapısı tarafından sunulan başvuru bütünlüğü ve erişim kolaylığı ile birleştirir."

Daha fazla bilgi için MSDN'deki Ravi S.Maniam'ın bu blogunu okuyun .


FILESTREAM depolama alanı yedekleme / geri yükleme öyküsünü hiç değiştiriyor mu? Bu şu anki en büyük arkadaşımız ... VarBinary'de depolanırlarsa, nispeten düz bir hikaye olurdu.
Webjedi

Hayır, FILESTREAM verilerine diğer veriler gibi davranılır, bu nedenle veritabanıyla yedeklenir. MSDN'den alıntı yapmak için: "tüm yedekleme ve kurtarma modellerini FILESTREAM verileriyle kullanabilirsiniz ve FILESTREAM verileri veritabanındaki yapılandırılmış verilerle yedeklenir." - technet.microsoft.com/tr-tr/library/bb933993.aspx
Dan Diplo

2

Milyonlarca görüntü sorunuyla uğraşmasam da Amazon CloudFront'u kullanırdım. Tüm dosyalar bir S3 kovasında saklanır, ancak Amazon'un içerik dağıtım sistemi aracılığıyla sunucudur. S3'ü yalnız kullanmam.

İkinci tercihim dosya sistemi. Basit ve kolay, tek sorun, tüm bu dosyalar tek bir dizinde biterse, her şey çökecek, zor.

SQL bana böyle bir sistem için bir seçenek olmazdı. Sadece bant genişliği aktarımı için ücret almakla kalmaz, aynı zamanda sorgunun işlenmesi için de ücretlendirilirsiniz - bu çok barındırma işlemine bağlı olacaktır, ancak tahsis edilecek bir sunucu veya en azından bir vps kullandığınızı varsayıyorum döngüleri için. Görüntü sunucusuyla aynı veritabanını kullanırsa sitenizin tamamını yavaşlatır. Değilse, iki veritabanı bağlantısını yönetmek zorunda olmanın tüm karmaşıklığını ekleyin.


Benim senaryomda, şu anda her şey sahip olduğum kendi sunucularımın öncülünde. Yani kendiliğinden işlem maliyeti yoktur.
Webjedi

1

Veritabanları işlemsel veri / tutarlılık ve güvenlik için tasarlanmıştır.

Medya dosyaları (resimler, ses, video) oluşturulur ve silinir, ancak çok nadiren güncellenir. Bu nedenle, genellikle bunları diğer verilerle işlemsel olarak tutarlı tutmaya gerek yoktur ve bir veritabanı size gerçek bir fayda sağlamaz. Metin içeriği farklı olabilir.

Dosyanın URL'sine sahipse, dosyanızı doğrudan çeken biriyle ilgili bir sorununuz olmadığı sürece, bir dosya sistemi iyidir. İnsanların dosyayı indirmeden önce şarj etmeyi beklediğiniz bir fotoğraf arşivi gibi bir şey çalıştırıyorsanız, bu muhtemelen farklı bir konudur. Yani, bir kullanıcı ödeme yaptıktan sonra, o kullanıcıya özgü veya kısa bir süre için geçerli bir URL alabilir ve uygulama aynı görüntüye işaret eden birden çok veya geçici URL'yi işleyebilir. Bu yine de uygulama ve bir dosya sistemi tarafından ele alınabilir, ancak medyayı düz bir dosya indirme yerine (çoğunlukla S3'ün faydalarını ekarte eder) yerine uygulama aracılığıyla sunuyorsunuz ve DB ile dosya sistemi arasında daha az fark var .

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.