MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Penyimpanan untuk jutaan gambar

Dalam hidup saya, saya telah melakukan distribusi video dengan S3 (termasuk file cloud Rackspace) dan MongoDB.

Kebanyakan orang, tanpa melihat sekilas, akan memilih S3 namun saya menemukan bahwa keduanya memiliki kelemahan. Salah satu masalah besar adalah bahwa S3 bukan CDN, itu sebenarnya adalah penyimpanan yang berlebihan dalam wilayah tertentu yang tidak direplikasi ke wilayah S3 lainnya, ini berarti Anda perlu menggunakan sesuatu seperti cloudfront di atas S3 untuk melakukan ping gambar Anda ke semacam cache jika Anda ingin memuat serius di situs Anda.

S3 juga memiliki fitur lain yang membuatnya lebih sedikit CDN dan lebih seperti gudang penyimpanan. Karena itu, untuk file yang jarang diakses, S3 sangat cepat.

Lapisan ganda ini tentu saja menimbulkan kerumitan seperti perawatan. Tidak hanya itu, CDN akan bekerja pada TTL dan meskipun banyak CDN saat ini memiliki kemampuan pembersihan tepi, itu masih bukan cara yang 100% pasti untuk memastikan file Anda tidak dapat diakses.

Jadi karena pengaturan dan akses (kemungkinan akses file yang harus dihapus juga) ini bisa menjadi cukup mahal dengan cepat.

Di sinilah MongoDB bisa menang. MongoDB dapat, tergantung pada skenario Anda, sebenarnya lebih murah di sini karena fakta bahwa Anda dapat menggunakan sejumlah besar instans mikro di AWS untuk benar-benar menyimpan informasi Anda, menambahkan reservasi instans spot ke instans ini (murah sekali) dan semua yang Anda butuhkan adalah disk besar pada satu mesin.

Neraka, Anda bahkan dapat menggunakan S3 untuk menyimpan gambar dan kemudian MongoDB sebagai pengganti cloudfront.

Saat Anda ingin melakukan ping gambar ke wilayah yang berbeda, Anda cukup membuat beberapa contoh tempat di wilayah target itu dan meminta MongoDB untuk mereplikasi datanya. Anda juga dapat melakukan beberapa hal keren dengan replikasi untuk memastikan hanya file yang sering diakses dari wilayah tersebut yang ditempatkan di wilayah tersebut.

Jadi saya tidak akan membuang MongoDB (atau bahkan Cassandra), melainkan saya akan melakukan tes sarana di antara keduanya.

Sunting

Sebagai catatan tambahan tentang harga S3, jika Anda menyimpan file Anda di RR (Reduced Redundancy) maka harga menjadi setengahnya (sekitar) yang membuat S3 sangat murah, namun, Anda masih memiliki masalah bahwa S3 bukan CDN.

Edit Lebih Lanjut

Karena saya benar-benar hanya melanjutkan dari jawaban @cirrus, saya sebenarnya akan mengevaluasi kembali pertanyaan Anda yang agak dijawab di atas.

Sebagai contoh, Youtube sebenarnya menyimpan semua gambar mereka di satu komputer yang kemudian didistribusikan, sehingga mereka dapat dengan mudah mengelola 200m thumbnail dan...yah...banyak penayangan setiap hari dengan mudah dari sistem file. Jadi saya rasa kekhawatiran Anda tentang sistem file terlalu berlebihan.

Adapun database mana yang lebih baik...Saya tidak tahu, itu tergantung pada pengujian Anda.

Maksud saya, jawaban untuk masalah Anda bergantung pada skenario dan anggaran Anda serta perangkat keras dan sumber daya Anda, yaitu jika Anda memiliki server AWS, ini akan menjadi jawaban yang sangat berbeda dari server khusus di rumah.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. node res.render mengubah tampilan tetapi bukan url

  2. ekstrak nilai subarray di mongodb

  3. Perbedaan antara mayoritas dan dapat dilinierkan

  4. Bagaimana cara menjalankan perintah mongoDB mentah menggunakan luwak?

  5. Memotong koleksi