Resim Saklama [Beyin Fırtınası]
-
Daft bunu yazdıunbalanced bunu yazdıDaft bunu yazdıtrooper bunu yazdı
cdn image hosting anahtar kelimen hocam
+1
bir de nosql falan hiç düşünme
daha önce denedin mi bilmiyorum da gerçek verinin 7-8 katı yer kaplıo db'de
iğrenç
hocam ben ileri seviye veritabanı sistemleri dersi aldım :) tüm popüler nosql çözümlerince projeler geliştirdik ve ben çok sevdim ama kendi projelerimde kullanmıyorum... Yoksa doğru bir optimizasyonla güzel sonuçlar elde edersin. 7-8 kat veri kaplama olayını hiç duymadım :) sonuçta metin tabanlı bir imkan var, o kadar olmaması lazım..
ben ders mers almadım
gözlemlediğim şeyi söylüyorum
json datayı, nosql veritabanına yükledim (bak bu da text)
20 mb data db'de 160 mb tuttu
üstelik db'den veri silsen dahi "reclaim free space" diye bi olay yok
kendin compact ediyorsun
tabi bu da ilerde performans sorunlarına yol açabilir diye düşünüyorum?
hazır bi çözümle ilerlemeye izin var mı?
bir yerde bir terslik var hocam o halde .. nosql çözümleri çok daha fazla performanslı, biz bir sürü şey ile denedik, bu yeni nesil semantik web olayına bile girdik ne bileyim..
neyse zaten kullanmayı düşünmüyorum..
bahsettiğin cloud uygulama gibi çok alternatif var ama ben harici bir yerde saklamak istemiyorum, ola ki istenmezse o zaman sıkıntı çıkacak. Bu projenin bir ayağı devlet kurumları olacak, onlar da verilerin 3. şahıslara gitmesini istemeyebilirler, hatta kendi sunucularına kurmamızı isteyebilirler o yüzden harici bir yerde saklamak mantıklı gelmiyor.
-
hacı incelemedin herhalde :D
harici bi yer değil, script o script
dropbox tarzı üyelikli, dosya müzik resim barındırma, kullanıcılara birbirlerine link dağıtma imkanı veren vs vs
apileri olan bi script
-
Optimasyon, optimasyon, optimasyon.
Resim saklama-sunma olayında veritabanı kesinlikle iyi bir çözüm değildir. Kullanım temelinden şaşmamak lazım ki veritabanı verilerin listelenmesi bağlantılanması gibi durumları içerir. Tekrar eden verileri yönetmek, sunmak, bağlantılandırmak, küçültmek, sınırlandırmak ... içindir veritabanı. Resim saklama-sunma olayı kesinlikle klasik dosya barındırıcılıktan farklı değildir. Farkı hızlı sunum ile oluşmaktadır ki hızlı sunumda resimlerin optimasyonundan geçer. İyi algoritmalar gerekirse ücretli algoritmalar ile resim boyutlarını küçülterek sana çok daha hızlı sunum ve verimli depolama sağlayacaktır. En büyük ihtiyacın optimasyon. Hatta örnek ile açıklayalım instagram resim çözünürlüğünü büyüttü ama dosya boyutları bundan çok etkilenmedi. Neden? Adamların sağlam optimasyonları var. Hatta eminim ki -incelemedim- saklamak için ayrı sunmak için ayrı optimasyonları var. Uygulamalarında bile kullandıkları algoritmaları söz konusudur.
Edit: 1 örnek daha vermek istiyorum. Facebook'ta yeni yüklenen videolar sıkıntı çıkarmaz. Hemen izlersiniz ama çok eski bir videoyu izlemek istediğinizde videoya tıklarsınız video yüklenmez. Hata verir. Biraz bekleyip tekrar basarsanız videonun yüklendiğini göreceksiniz. Adamlar bir süre kullanılmayan dosyaları çok küçültmek için yüksek seviyede sıkıştırma yapıyorlar sonucuna rahatlıkla varabiliriz. Nasıl olsa çok kullanılmıyor. İstek yapılmıyor. Arşive kalkmasında bir sıkıntı oluşmuyor. İsteyen olursa arşivden çıkartıp sıkıştırmasını çözüp gösteriyor. E seninki video değil resim. Olsa olsa 200 300kb olacak. Sıkıştırmasının çözülmesi çokta vakit almaz. Eski bir foto için biraz bekleyebilir kullanıcı..
PcK0 tarafından 21/Ağu/15 01:02 tarihinde düzenlenmiştir -
@daft, yok incelemedim hocam isminden yola çıkarak söyledim ama yine de dediğim gibi işe yaramayacak, çünkü ben kendi sunucumda tutmak istiyorum bunları.. bunu kullanmanın bir amacı yok o zaman.. zaten kendi sunucumdaysa api ye gerek olmadan erişirim
@pck0, sağolasın hocam detaylı anlatımın için, katılıyorum sana optimizasyon önemli bir faktör, bu sebeple zaten her şeyi düşünerek hareket etmek istiyorum, düzgün bir iş çıksın istiyorum ortaya. Zaten db ye yazmam base64 olarak da, ama yapan eleman öyle yapmış halbuki benim çizdiğim tasarımda path ini tutuyordu.
Sıkıştırma olayını düşüneyim biraz.. çok eski olmadığı müddetçe sıkıştırmaya gerek olmayabilir. Boyutlarda fazla olmayacak zaten, normalde iphone ile çeklien bir resim bir kaç mb olabliyor, ben daha önce kullandığım algoritmayı kullanarak 100-300 kbye e düşürüyorum, aynı mantığını kullanacağım, ama ondan sonra sıkıştırma olayını bilemedim.. şimdi sıkıştırıp tekrar açmak gerekecek.. gzip kullanarak sıkıştırma işlemini yapabilirim ama belirli bir tarih sonraki olan resimleri sıkıştırmak daha mantıklı.. ama bu işi otomatik yapabilsem güzel olabilir.
Zaten uygulamada temizlik şart olacak, mesela şehrin büyüklüğüne göre bu süre değişecek, yani yoğun istek gelen şehirlerde veri çok olacak, o yüzden çok eski verileri tutmamak gerekiyor, yani tutmak lazım ama kullancıya gösterilmeyecek. Ayrıca bu dataları belki firmalara da satabileceğiz. Düşünecek çok şey var o yüzden iyi bir şeyler yapma derdindeyim.
Performans önemli bir faktör, yaklaşık 3000 tane bu şekil kuruluş var diyelim isviçrede, bunların 500 üne satsak.. Bir de farklı ülkelerden de istiyorlar. O yüzden global bir olaya da dönebilir, hiç bir şey de olmayabilir.. Ama her halukarda sistemi esnek, güçlü ve performanslı tasarlamam gerek. Maalesef tüm işler de bir tek bana kaldı
-
Kesinlikle bende merak ediyorum.
En basitinden thumblr bile dünya kadar resim atıyorsun, web ve mobil de sıkntı yaşatmıyor.
Biri bu sitelerin mimarisini anlaırsa seve seve dinlerim.
Bilmiyorum ne kadar işe yarar ama iş yerinde ki projede yaklaşık 3 bin profil resmini, server de olduğu gibi saklıyoruz.
DB ye path saklııyoruz çağrıldığı yerden de çekiyoruz.
-
hacı bak gene anlamadın veya ben anlatamıyorum
script zaten senin sunucunda olacak, sen kuruyosun, sen kullanıyosun
dropbox gibi bir sistemi (php olarak) sunucuna kurduğunu düşün
-
Her "performans" isminin geçtiği yerde körün dilenciyi bellediği gibi node.js diyorum fakat
Hakikaten ihtiyacın node.js. asp.net muhtemelen işini yavaşlatacak.
Node.js ile işin içine c de katarak servera ultra hakim bir şekilde tüm resimlerine vs hükmedebilirsin. Örneğin asp.net te bir resmi gzipe çevirip onu direk işleme sokmadan göndermen muhtemelen seni zorlayacaktır. Hatta ben bilmiyorum bana imkansız bir olay direk yani
Ama node.jste çok basit olacak. Bir de 1 mb hani 200kb a düşürebiliyorsan bu yeterli. Encode decode yapacak bi sistemle string compress yapmaktan başka çaren kalmıyor zaten daha ne kadar düşürebilirsin ki? Bir websitesi için de bir fotoğraf için 200kb gayet güzel. Milyonlarca fotoğraf saklayacak olduğunda artık server tarlasına geçersin
Tüm bu yazdıklarımdan özet iki tavsiye, node.js ve string compress encode (son yazdığımı anlamışsındır işte)
https://github.com/antirez/smaz Örnek link mesela
-
@daft, anladım hocam inceleyeyim o zaman detaylı, wcf ile yapacağım sunucu tarafını, php yi bulaştırmak pek olmaz gibi o zaman.. Ama bunun .net tarafı olursa iyi olabilir. Tabi ne kadar katkı sağlayacak projeye bilmiyorum, sonuçta o da bir şekilde veriyi saklıyor direk file olarak, benim veri gönderip almada sorunum yok, sadece saklama biçimini.. Eğer bu script de kendi sunucumda saklayacaksa veriyi ne avantajı olacak mesela, orayı anlayamadım..
@by_tet, hocam wcf ile yazacağım servisi, asp.net değil :) node.js yi hiç kullanmadım ama o da basit olarak benzer bir işi yapıyor, wcf de sorun yok yani :) veri iletme de dediğin gibi bir sıkıştırma algoritması kullanılabilir, sonuçta servis tarafını da ben yazacağım için sorun yok, diğerinde sıkıntıydı, eleman yazmış kafasına göre servisi uğraş dur :) son olarak wcf bu işin piridir :)
-
Hocam dbde resim tutulmaz ondan vazgeç. Resim için standardın dışına çıkmayı düşünürsen webp deneyebilirsin daha avantajlı https://developers.google.com/speed/webp/ yüklenen resmi dönüştürüp bir yerde tutacaksın. Resimleri kolay erişebileceğin şekilde ancak kendine özel bir algoritmayla klasörleyeceksin. İlerde lazım olursa pull cdn bağlar trafiği düşürürsün. resmi dönüştürürken de dbde saklayacağın bilgileri metadata olarak resme eklersen (yükleyen id, isim, vs) dbden de feragat edebilebilirsin. nasıl bulcam ben yüklenen resimleri db olmadan dersen dediğim gibi özel algoritmayla klasörleme yapacaksın sonuçta resmin nereye gittiğini bileceksin, nasıl çekeceğini de bileceksin. getirdikten sonra ihtiyacın varsa metdata okur gerisini halledersin.
-
Hocam db mb falan anlamam konuyuda tam okumadim ama bi fikrim var.
Insan gozu yuksek frekanslari goremez.eger resimden yuksek frekanslari atarsan boyut kuculecektir diye dusunuyorum.resimleri isleyerek tekrar istedigin formatta kaydet.
Unutmazsam bazi filtreler bakarim ama basit alcak geciren filtre isini gorur diye düşünüyorum.