folder Tahribat.com Forumları
linefolder Webmaster ve Yazılım Geliştiriciler
linefolder Server Klasörleme Mantığı (İleri Programlama)



Server Klasörleme Mantığı (İleri Programlama)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek

    210.000 kayıt olan bir db var ve her kaydın ortalama 8-10 resmi var.

    bu resimlerin şu anda sadece db de download edilecek URL'leri mevcut henüz downloada başlamadım.

    fakat downloada başladığımda çok büyük bir problem olacak.

    windowsta eğer alt klasör sayısı abarırsa hdd nin io değerleri aşırı düşüyor ve bütün sistem iis dahik aşırı yavaşlıyor. serverda sas disk olmasına rağmen sadece imaj server için 2x1tb hdd aldık raid1 yaptım şu anda herşey hazır imajları download edip istiflemem kaldı.

    elimde her ürünün unic bir Id si var.

    kendi oluşturduğum alt klasör oluşturma mantığına göre her id nin rakamlarını toplayıp 9 dan büyükmü ona bakıyorum eğer büyükse recursive ile kendini tekrar çağırıp rakamların tekrar topluyorum bu şekilde 9 veya dokuzdan küçük olana kadar kendini çağırıyorum ve her çağırdığında path olarak bir derine iniyorum. uygulamalı olarak görmek isterseniz şu şekilde :

    139708 > /28/10/1/
    139710 > /21/3/
    139712 > /23/5/
    139720 > /22/4/
    139722 > /24/6/
    139724 > /26/8/
    139726 > /28/10/1/
    139728 > /30/3/
    139730 > /23/5/
    139732 > /25/7/
    139738 > /31/4/
    139740 > /24/6/
    139742 > /26/8/
    139744 > /28/10/1/
    139746 > /30/3/
    139748 > /32/5/
    139750 > /25/7/
    139752 > /27/9/
    139754 > /29/11/2/


    buna rağmen bir klasörde 100.000 üzerinde klasör oluşuyor. daha farklı bir klasörleme mantığı lazım.

    böyle bir projeyle uğraşıp ta çözüm bulan mürid varmıdır?

     

    örnek olması açısından yazdığım voidi de koyuyorum (ürün id gönderince hangi path olacağını döndürüyor recursive)

     

        private string ReturnPath(string id, string path = "")
        {
            if (path == "")
                path = @"/";
    
            int i = 0;
            foreach (char c in id)
            {
                i += int.Parse(c.ToString());
            }
    
            path = path + i.ToString() + "/";
            if (i > 9)
            {
                path = ReturnPath(i.ToString(), path);
            }
            else
                return path;
            return path;
        }

     

     


    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    https://en.wikipedia.org/wiki/B-tree  ?

     


    Si vis pacem para bellum.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    ileri programlama göremedim konuda,

    ama en basitinden şöyle yapabilirsin

    var id = "1234";
    var padding = "0000000000";
    var idLength = id.length;
    var newId = padding.substring(0, (10 - idLength)) + id;
    console.log(newId.substring(0,4),newId.substring(4,7),newId.substring(7,10));

    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek

    b-tree işimi görmüyor kendim bir algoritma oluşturmam lazım.

    SharpShooter hocam ayrıntıya girmedim backgrounda çok derin bir mekanizma var.

    senin verdiğin kodda padding diye bir değişken var iş onun üzerinden dönüyor.

    ben aynı id ile her voidi çalıştırdığımda aynı sonucun dönmesi lazım.

    yoksa her image üreten ashx de bir sqlconnection açması gerekecek. onun önüne geçmek için sadece id ile güzel bir klasör mantığı oturtursam yine sadece id kullanarak o ürünün resimlerine ulaşabilirim.

    ayrıca her resmin 4 farklı ebadı olacak küçük, orta, büyük, orjinal şeklinde.  klasörleme mantığını oturtabilirsem gerisi kolay.

    yorumlar yapıcı yönde olursa sevinrim.

     

     

     


    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek
    manglerman bunu yazdı

    b-tree işimi görmüyor kendim bir algoritma oluşturmam lazım.

    SharpShooter hocam ayrıntıya girmedim backgrounda çok derin bir mekanizma var.

    senin verdiğin kodda padding diye bir değişken var iş onun üzerinden dönüyor.

    ben aynı id ile her voidi çalıştırdığımda aynı sonucun dönmesi lazım.

    yoksa her image üreten ashx de bir sqlconnection açması gerekecek. onun önüne geçmek için sadece id ile güzel bir klasör mantığı oturtursam yine sadece id kullanarak o ürünün resimlerine ulaşabilirim.

    ayrıca her resmin 4 farklı ebadı olacak küçük, orta, büyük, orjinal şeklinde.  klasörleme mantığını oturtabilirsem gerisi kolay.

    yorumlar yapıcı yönde olursa sevinrim.

    hayır hocam,

    bu verdiğim metod ile sadece id değişkeniyle resme ulaşabilirsin..

    örnek:

    ürün id: 125363 olsun

    bunu yukarda verdiğim metoda sokarsan geriye

    0000/125/363

    çıkar

    bu yukarida çıkanlar her biri klasör

    0000 klasörü içinde 125 klasörü var onun içinde 363

    en son 363 ün içine fotoyu koyucaksın.

    anlamadıysan daha detaylı anlatayım

    SharpShooter tarafından 15/Tem/13 22:08 tarihinde düzenlenmiştir

    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek
    SharpShooter bunu yazdı
    manglerman bunu yazdı

    b-tree işimi görmüyor kendim bir algoritma oluşturmam lazım.

    SharpShooter hocam ayrıntıya girmedim backgrounda çok derin bir mekanizma var.

    senin verdiğin kodda padding diye bir değişken var iş onun üzerinden dönüyor.

    ben aynı id ile her voidi çalıştırdığımda aynı sonucun dönmesi lazım.

    yoksa her image üreten ashx de bir sqlconnection açması gerekecek. onun önüne geçmek için sadece id ile güzel bir klasör mantığı oturtursam yine sadece id kullanarak o ürünün resimlerine ulaşabilirim.

    ayrıca her resmin 4 farklı ebadı olacak küçük, orta, büyük, orjinal şeklinde.  klasörleme mantığını oturtabilirsem gerisi kolay.

    yorumlar yapıcı yönde olursa sevinrim.

    hayır hocam,

    bu verdiğim metod ile sadece id değişkeniyle resme ulaşabilirsin..

    örnek:

    ürün id: 125363 olsun

    bunu yukarda verdiğim metoda sokarsan geriye

    0000/125/363

    çıkar

    işte o zaman 6 basamaklı id lerden toplamda 50.000 tane varsa 0000/ klasöründe tam 50 bin tane klasör olur.

    bende bundan bahsediyorum. 50.000 tane alt klasör olmasın bunu bir şekilde X/Y/Z/T şeklinde bölebileyim. ve random değerlere göre değil sadece id ye göre.


    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    töbe yarabbim... hala random diyorsun

    abi okuduğun kodu anlamıyorsun, sen siktir et bu işleri

    iyi akşamlar

    SharpShooter tarafından 15/Tem/13 22:13 tarihinde düzenlenmiştir

    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek
    SharpShooter bunu yazdı

    töbe yarabbim... hala random diyorsun

    abi okuduğun kodu anlamıyorsun, sen siktir et bu işleri

    iyi akşamlar

     

    güzel kardeşim okuma yazman yokmu senin.

    benim bütün id lerim 6 basamaklı. verdiğin mantığı kullandığımda bütüüüüüüüüüün alt klasörlerin hepsi 0000/ klasöründe olmayacakmı ?

    bir klasörde 180.000 klasör olduktan sonra hiç mantık arayama gerek yoktu.

    ben bundan bahsediyorum.

    ayrıca senden gelecek hayır hiç gelmesi. rica ediyorum başka mantık önerme.

     

    aklıma bir yöntem geldi onu test ediyorum.

    başka önerilere açığım.

     


    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    bildiğin yanlışlardan biri,

    klasör içinde dosyaların çok olursa sıkıntı çıkar.

    klasör içinde istediğin kadar klasör açarsın

    boşuna debelenme diye diyorum :) gerçi hoş hem bilgisiz hem çok atarlısın


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hybris
    Hybris's avatar
    Kayıt Tarihi: 12/Haziran/2007
    Erkek

     

    FAT32:

    • Maximum number of files: 268,435,437
    • Maximum file size: 4GB
    • maximum number of files per directory: up to 65535, or less depending on file names

    NTFS:

    • Maximum number of files: 4,294,967,295
    • Maximum file size: 16TB currently (16EB theoretically)

    Ext2:

    • Maximum number of files: 10¹⁸
    • Maximum file size: 2TB
    • theoretical file per directory limit: 1.3 × 10²⁰ files

    Ext3:

    • Maximum number of files: number of bytes in volume/2¹³.
    • Maximum file size: 16GB (1KB block) to 2TB (4KB block)

    ----

    hocam neticede o dosya sayısına her şekilde ulaşacaksın ama..

    ntfs için klasör isminin uzunluğu 255 karaktermiş.

    20 id yi tek klasör yaparsn.. dosya yolu şöyle olur;

    139708-139710-139712-139720...../gorseller(yaklaşık 80 tane).jpg

    klasör sayın 10k ya düşer.

    veritabanına bir sütun daha açıp idnin yanına dosya yolunu eklersin her seferinde sorgu yapmamak için.

     

    çözdükten sonra tecrübeni yazarsan iyi olur takipteyim.


    agile isn’t how fast you can go, it’s how fast you can turn.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    detCode
    detCode's avatar
    Kayıt Tarihi: 30/Kasım/2012
    Erkek

    hocam karesini al, 4 ile çarp filan devam et böyle yaptığın gibi olmazmı ?

    en baştaki sayıyı verdiğinde belirttiğin algoritmaya göre ilerler program zaten hepsini bulur


    Who is detCode?
Toplam Hit: 3366 Toplam Mesaj: 29