2009-12-07 21 views
6

Storing Images in DB - Yea or Nay? dosyasını okuduktan sonra dosya sisteminin görüntüleri saklamak için doğru yer olduğunu düşünüyorum. Ancak farklı ortamlardaki (dev/stage/prod) ve ağ yük dengelemesinde yüklenen görüntülerin yedekleme/sürüm kontrolünü nasıl kullandığınızı bilmek isterim. Bir veritabanı ile çalışırken, bu problemlerin ele alınması oldukça kolaydır, örn. üretim ortamından bir yedekleme yapmak ve DB'yi geliştirme ortamında geri yüklemek.Yüklenen görüntülerin dosya sistemine sürüm kontrolü

Örneğin, yüklenen dosyaların sürüm denetimini ele almak için git komutunu kullanma hakkında ne düşünüyorsunuz?

Üretim Ortamı:

  • bir görüntü web sunucusu ile paylaşılan bir klasöre yüklenir. Kaynak kodu üzerinden

    • Kontrol:
    • Meta veri veri tabanında
    • görüntü otomatik bir git depo iş

    Geliştirici eklenir saklanır.

  • Veritabanını geri yüklemek için bir komut dosyası çalıştırır.
  • En son resimleri almak için komut dosyasını çalıştırır.

Yukarıdaki çözüm, geliştirici için oldukça düzgün olduğunu düşünüyorum, görüntüler sürüm kontrolü altında olacak ve ortamlar birbirinden izole edilebilir.

+0

İyi bir fikir gibi geliyor. – grenade

+0

"kaynak kodundan tamamen ayrılmış bir depo kullanın": alt modül yaklaşımıyla uyumsuz değil: görüntü repo'larının verili bir taahhüdünü referans almak için kaynak kodu repo'su fikri kalır, ancak ikincisi (görüntü repo) hala bir "tamamen ayrılmış" repo. – VonC

cevap

2

Bizim için sürüm kontrolü dağıtım kadar önemli değil. Meta verisi web yöneticisi üzerinden eklenir ve görüntüler yönetici sunucusuna bırakılır. Rsync betikleri bunları prod görüntülerine hizmet eden kümeye itiyor. Dev/test için, prod ana sunucusundan dev sunucusuna geri döndük.

Rsync, yük dengeleme ve dağıtım için mükemmeldir. Yönetici/ana sunucu için gitmeniz gerekiyorsa, oldukça iyi bir çözümünüz var.

Yedekleme sırasında dosya geçmişini koruyan (her düzeltme için sürüm denetiminin tersine) yedekle tamamsanız, bunun bazı uyarlamaları yardımcı olabilir: Automated Snapshot-style backups with rsync.

+0

Geri bildiriminiz için teşekkürler ve dağıtım ve yedeklemenin bizim için sürüm oluşturmadan daha önemli olduğunu düşünüyorum. – orjan

2

Çalışabilir, ancak bu görüntüleri bir kaynak koduyla birlikte bir submodule of the git repo olacak bir git deposunda depolarım.
Bu sayede, görüntüler kendi repolarında olsa bile, kod ile resimler arasında güçlü bir ilişki var.
Ayrıca, çok sayıda ikili dosya ile daha az verimli olan git gc veya git prune ile ilgili sorunları önler: görüntüler kendi repo'larındaysa ve her biri için birkaç varyasyon varsa, bu repodaki bakım oldukça hafiftir. Oysa kaynak kodu repo, oyundaki her zamanki git bakım komutlarıyla çok daha dinamik bir şekilde evrimleşebilir.

+0

Git ile ilgili geri bildiriminiz için teşekkür ederiz.İlk fikrim, kaynak koddan tamamen ayrılmış bir depo kullanmaktı ancak alt modüller başka bir seçenek gibi görünüyor. Mümkün olup olmadığını görmek için bir ani koşmaya değecek kadar kendinden emin hissediyorum. – orjan

İlgili konular