Ne olursa olsun Matt H önerisi iyi bir fikirdir. elde etmeye çalışıyorsunuz kullanıcı düzeyinde görüntü erişimi başına. Ancak veritabanınızda saklanan alanınızda sınırlı olduğunuzu kabul ettiğinizde, görüntüleri ikili verilerde sakladığınız kadar verimsizdir.
Kullanıcı başına bir tablo kullanmak kötü tasarımdır. Dosyayı yükleyen kullanıcı, tüm dosya yüklemelerini ve herhangi bir dosya meta verilerini içeren tablodaki bir alan/sütun olmalıdır. Dosya isminin GUID oluşturulmasını öneriyorum; bu, benzersiz olması garantilidir ve kullanıcıların tüm görüntülere kolayca erişmesini engellemeye çalışıyorsanız, tahmin edilmesi kolay bir otoantrement alanından daha iyi.
Performanstan endişe duyuyorsunuz, ancak milyonlarca kayıt üzerinde milyonlarca işlem yapana kadar, belirli bir zaman çerçevesinde yüklenen (bir zaman damgasını veya benzeri bir dosyayı saklıyorsanız) görüntülerin seçilmesiyle ilgili sorgularınız maliyet açısından çok küçüktür. Hız bir sorunsa, kullanıcı adına belirli bir görüntü sorgusunu önemli ölçüde hızlandıracak bir B-ağacı dizini ekleyebilirsiniz.
Güvenlik, erişim ve organizasyon konusuna geri dönün. Görüntüleri kullanıcı başına bir klasörle saklayın (kullanıcı sayısına bağlı olarak, klasörlerin sayısı yönetilemez bir düzeye kadar büyüyebilir). Görüntülerin herkese açık olarak sunulmasını istemiyorsanız, bunları web dışı bir klasörde saklayın, uygulamanızın verileri okumasını sağlayın ve görüntüyü kullanıcı için oluşturması için akışa alın. Daha karmaşık ama gerçek dosyayı internetten saklıyorsunuz. Ayrıca, kimliği doğrulanmış bir kullanıcı tarafından tüm görüntü isteklerini doğrulayabilirsiniz.