Php uzmanlarını bile zorlayabilecek bir konu :) - R10.net
  • 13-09-2020, 00:57:23
    #1
    Merhabalar sevgili arkadaşlarım,
    Yıllar önce bir kaç projemde instagram verilerini sunucu tarafında şifreli ve boyutunu küçülterek saklıyordum.
    Örnek vermek gerekirse #araba hashtag i ile paylaşılan son 80 görselin tüm verilerini tek dosyada 0.15 KB gibi bir boyutta saklıyordum.
    En büyük dosya boyutu max 0.150 kb oluyordu.

    Son yedeklerden aldığım verilerde ;
    Depolanan Hashtag Verisi Toplam: 2006396
    Toplam Boyutu : 35592.54 MB ( 2 milyon tane hashtag'in her biri için 80 tane detayı çekilip depolanmış ve 35 gb yer kaplamış ) sunucuda toplam 2 milyon tane şifreli dosya oluşturulmuş.

    Bu durumu dahada zorlaştırarak,
    Verileri şifreli olarak sunucuda dosya olarak depolamak yerine, veritabanında tablolar oluşturarak saklayabilirmiyiz aynı boyutlarda şifreli olarak ?

    Şifreleme olarak gzip kullanıyordum ve onu bir tık daha tekrarlatıp daha küçük boyutlar elde ediyordum.

    Örnek #araba hastagi içerisindeki saklanan dosyada hangi veriler oluyordu.
    Kullanıcı adı
    Tarih
    Kullanıcı adı soyadı
    Görsel linki
    Görsel açıklaması



    $Media[] = array(
    'pk' => $Edge['user']['pk'],
    'username' => $Edge['user']['username'],
    'full_name' => $Edge['user']['full_name'],
    'id' => $Edge['id'],
    'photo' => $Edge['image_versions2']['candidates'][0]['url'],
    'userphoto' => $Edge['user']['profile_pic_url'],
    'location' => $Edge['location']['name'],
    // 'Timestamp' => $Edge['taken_at_timestamp'],
    'Timestamp' => $Edge['taken_at'],
    'caption' => $Edge['caption']['text'],
    'CommentCount' => $Edge['comment_count'],
    'LikeCount' => $Edge['like_count'],
    'Comment' => $Edge['edge_media_to_caption']['edges'][0]['text'],
    'media_type' => $Edge['media_type'],
    );
    
    
    $kayitt = json_encode($Media);
    $gzjson = gzencode($kayitt, 9);
    $Media[1] den Media[80] 'e kadar bu sekilde veri saklıyordum şifreli dosyada ,

    Bu şekilde tutuyordum verilerimi...

    Veritabanında hashtag adında bir tablo altında, verileri bu sekilde json olarak göndertebilirmiyim ?

    Örneğin veritabanında,
    araba tablosunda tek seferde 80 içeriğin verisi olucak..
    Verileri ayrı ayrı media tablolarına eklemek yerine doğrudan hashtag tablosu altında nasıl toplayabiliriz?

    Örnek olarak şifrelenmiş daha doğrusu sıkıştırılarak boyutu küçültülen bir dosya ;
    http://www.esgec.com/japan.json

    Ücretli / Ücretsiz fikir üretebilecek varmı?
  • 13-09-2020, 01:04:00
    #2
    şifreli mi, sıkıştırılmış mı, yoksa hashlenmiş mi hocam? 80 standart görsel 0.15kb olamaz
    Hızlı cevap için: Telegram: @cagri, Email​: cagriari@pm.me
  • 13-09-2020, 01:04:22
    #3
    Veri tabanı ne kadar sağlıklı olur test etmek lazım. Fakat sıkıştırma algoritmalarını kullanabilirsiniz LZ77, DEFLATE vb. Eğer veri tabanında bu işi yapmak isterseniz ki siz performans artışı için bunu yapmak istiyorsunuz. Ustaca düşünülmüş olması lazım veri tabanının. İlişkiler,triggerler ve veri tabanı normalizasyonu. Bence sorunuz phpden daha çok veri tabanı uzmanları ile ilgili. Kolay gelsin tekrardan.
    Sanal kart ile, ödemeleriniz hızlı bir şekilde yapılır.
  • 13-09-2020, 01:10:23
    #4
    hesapadim adlı üyeden alıntı
    şifreli mi, sıkıştırılmış mı, yoksa hashlenmiş mi hocam? 80 standart görsel 0.15kb olamaz
    meftuniberder adlı üyeden alıntı
    Veri tabanı ne kadar sağlıklı olur test etmek lazım. Fakat sıkıştırma algoritmalarını kullanabilirsiniz LZ77, DEFLATE. Eğer veri tabanında bu işi yapmak isterseniz ki siz performans artışı için bunu yapmak istiyorsunuz. Ustaca düşünülmüş olması lazım veri tabanının. İlişkiler,triggerler ve veri tabanı normalizasyonu. Bence sorunuz phpden daha çok veri tabanı uzmanları ile ilgili. Kolay gelsin tekrardan.

    $Media[] = array(
                'pk' => $Edge['user']['pk'],
                'username' => $Edge['user']['username'],
                'full_name' => $Edge['user']['full_name'],
                'id' => $Edge['id'],
                'photo' => $Edge['image_versions2']['candidates'][0]['url'],
                'userphoto' => $Edge['user']['profile_pic_url'],
                'location' => $Edge['location']['name'],
            //    'Timestamp' => $Edge['taken_at_timestamp'],
                'Timestamp' => $Edge['taken_at'],
                'caption' => $Edge['caption']['text'],
                'CommentCount' => $Edge['comment_count'],
                'LikeCount' => $Edge['like_count'],
                'Comment' => $Edge['edge_media_to_caption']['edges'][0]['text'],
                'media_type' => $Edge['media_type'],
                );
    
    
        $kayitt = json_encode($Media);
        $gzjson = gzencode($kayitt, 9);
    $Media[1] den Media[80] 'e kadar bu sekilde veri saklıyordum şifreli dosyada ,

    Aslında yapmak istediğim
    Bu verilerin en son şifrelenmiş halini veritabanına eklemek, ve araba ile ilgili tablodan veriyi çekmek istediğimde dönüş olarak şifreli hali geldiğinde gzencode ile tekrar çözümleyip json formatına dönüştürmek
  • 13-09-2020, 01:18:00
    #5
    Örnek olarak şifrelenmiş daha doğrusu sıkıştırılarak boyutu küçültülen bir dosya ;
    http://www.esgec.com/japan.json
  • 13-09-2020, 01:23:30
    #6
    Nosql çözümlerini kullanabilirsin, doğru indexlemeleri yapıp ihtiyacına göre optimize edersen değil 30gb isterse 1 tb olsun işlemlerin hızının değişeceğini düşünmüyorum. Neden sıkıştırıp tutuyorsun verileri? Genelde network trafiğini azaltmak icin kullanılır, depolama çözümleri ucuz olduğu için bence sıkıştırmaya gerek yok çünkü cpu üzerinde yük oluşturur.
    kendi dalgasında olan bir developer.
  • 13-09-2020, 01:34:53
    #7
    onurkun adlı üyeden alıntı
    Nosql çözümlerini kullanabilirsin, doğru indexlemeleri yapıp ihtiyacına göre optimize edersen değil 30gb isterse 1 tb olsun işlemlerin hızının değişeceğini düşünmüyorum. Neden sıkıştırıp tutuyorsun verileri? Genelde network trafiğini azaltmak icin kullanılır, depolama çözümleri ucuz olduğu için bence sıkıştırmaya gerek yok çünkü cpu üzerinde yük oluşturur.
    Merhabalar normal şartlar bu verilerin ortalama boyutu sıkıştırılmamış hali 1.5 Mb ile 5 mb arası değişebiliyor o sebebden jsonu sıkıştırıp alandan tasaruf sağlıyordum
    Nosql konusunu bir inceliyeyim teşekkürler
  • 13-09-2020, 08:50:53
    #8
    JSON'muş zaten export et bi document store'a olsun bitsin. Mongo'nun engine'lerinin birinde built-in sıkıştırma var zaten.
  • 13-09-2020, 12:08:46
    #9
    Zaten hali hazırda datayı düzgün bir formata çevirip sonra sıkıştırıyorsunuz hocam. (şifreleme yok bunda sadece sıkıştırma)

    Bu düzgün datayı filtreleyerek / arama yaparak vs kullanmak istediğinizi düşünerek bu öneriyi yapıyorum:

    Bir sanal makineye elasticsearch kuruyoruz (örn ubuntu makineye kurulum: https://www.digitalocean.com/communi...n-ubuntu-18-04 )

    Sonra php ile çalıştığınız için projeye elasticsearch php sdksını ekliyoruz (https://github.com/elastic/elasticsearch-php )

    Son olarak dataya özel index oluşturup datayı komple set ediyoruz. Sonra elasticsearch sunucusuna istekler atarak istediğiniz filtreleme ya da aramalara göre sonuçları çekebilirsiniz/işleyebilirsiniz.

    Ben böyle bir data saklayacak ve aktif olarak üzerinde sorgulamalar yapacak olsaydım üstteki yolu izlerdim.
    mtn 2020