folder Tahribat.com Forumları
linefolder Webmaster ve Yazılım Geliştiriciler
linefolder Büyük Dataları Yönetebilmek. (Performans) ( SQL - Server - Cache)



Büyük Dataları Yönetebilmek. (Performans) ( SQL - Server - Cache)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    doganaydin
    doganaydin's avatar
    Banlanmış Üye
    Kayıt Tarihi: 29/Ocak/2010
    Erkek

    Sharding işlemi olarak bilinir. Databaseler kendi içinde senkronize olur. Ancak yazarken a veritabanına yazarsın okurken b veri tabanından okursun. Bu veri tabanlarını da master/slave olarak ayarlarsın. Böylelikle okumayla meşgul olan veri tabanını bir de yazmayla meşgul etmezsin. Mssql de nasıl yapılır bir bilgim yok ama mysql postgresql ve mongodb de yardımcı olabilirim. Kullandığın dile göre ayrı bağlantılar açarsın. Açtığın bağlantıları da hemen sonlandırmaz  polling kullanırsan yani elindeki bağlantıları yedekleyip lazım olduğunda tekrar kullanırsan yine tasarruf etmiş olursun. Ben bu sistemi amazon ec2 makinelerde kullanıyorum. 2 master 6 slave ile postgresql database kullanıyordum. Aynı sistemi postgresqlden mongodbye geçirdim. Anlık çok yüksek qpslerde bile gözle görülür bir yavaşlama olmadı bu güne kadar.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    doganaydin bunu yazdı:
    -----------------------------

    Sharding işlemi olarak bilinir. Databaseler kendi içinde senkronize olur. Ancak yazarken a veritabanına yazarsın okurken b veri tabanından okursun. Bu veri tabanlarını da master/slave olarak ayarlarsın. Böylelikle okumayla meşgul olan veri tabanını bir de yazmayla meşgul etmezsin. Mssql de nasıl yapılır bir bilgim yok ama mysql postgresql ve mongodb de yardımcı olabilirim. Kullandığın dile göre ayrı bağlantılar açarsın. Açtığın bağlantıları da hemen sonlandırmaz  polling kullanırsan yani elindeki bağlantıları yedekleyip lazım olduğunda tekrar kullanırsan yine tasarruf etmiş olursun. Ben bu sistemi amazon ec2 makinelerde kullanıyorum. 2 master 6 slave ile postgresql database kullanıyordum. Aynı sistemi postgresqlden mongodbye geçirdim. Anlık çok yüksek qpslerde bile gözle görülür bir yavaşlama olmadı bu güne kadar.


    -----------------------------

     

    mssql ile keşke yapmış olsaydın hocam valla söylediğin şeyler tam benlik gibi :)

    Sql optimize şart. Ben biraz bütçe ayarlatayımda 2. serverda denemelere başlayım. İstanbuldaysan seni davet edeyim hocam gel mssqlde kastıralım :)

     

    Onun dışında asp.net cache kullanıyorum sistem. 20.000 data olan tabloyu attım cache'e çok iyi çalışıyor. Ancak daha da büyüdüğü zaman direk cache server diye bişey var sanırım ona atmak gerekli?

    Ayrıca plesk panelde de olan output cache'i kullanan var mı?

     

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    doganaydin
    doganaydin's avatar
    Banlanmış Üye
    Kayıt Tarihi: 29/Ocak/2010
    Erkek

    cemnet bunu yazdı:
    -----------------------------

    mssql ile keşke yapmış olsaydın hocam valla söylediğin şeyler tam benlik gibi :)

    Sql optimize şart. Ben biraz bütçe ayarlatayımda 2. serverda denemelere başlayım. İstanbuldaysan seni davet edeyim hocam gel mssqlde kastıralım :)

     

    Onun dışında asp.net cache kullanıyorum sistem. 20.000 data olan tabloyu attım cache'e çok iyi çalışıyor. Ancak daha da büyüdüğü zaman direk cache server diye bişey var sanırım ona atmak gerekli?

    Ayrıca plesk panelde de olan output cache'i kullanan var mı?

     


    -----------------------------

     

    Onunla da çok zor bir problem değildir. Biraz uğraşırsan halledersin. Zaten dökümanlar mutlaka vardır. Anlattığın olayın dökümanını atıyım bulursam. Çeşitli cache yöntemleri var in-memory: verileri ramde tutan ve in-disc: verileri diske yazan gerektiğinde oradan okuyan. In-memory çözümleri denersen daha rahat edersin. Mesela windowsta çalışıyor mu bilmiyorum ama memcached deneyebilirsin. Senin verdiğin sayılarla en kötü ihtimalle master/slave 2 serverla çözersin olayı.  Malesef İstanbul'da değilim. :)

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    All hail to Tux
    sandman
    sandman's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    Büyük verilerle çalışmak için bir kaç yöntem var bir tanesini arkadaş yukarıda söylemiş sharding ek olarak biz günlük 1 milyondan fazla kullanıcısı olan bir firmaya şöyle bir sistem kurduk.

    Mysql loglama ve kullanıcı verileri için kullanıyorduk burda sharding ve m-querry vardı ama yinede veritabanını yeteri kadar hızlı büyütemiyor ve en büyük sorunumuz mysql'in yüksek sorgularda çökmesini enğelliyemiyorduk.Bunun için hibrit bir çözümde karar kıldık.

    NoSQL ve Mysql'i beraber kullanmaya başladık. NoSQL olarak coachdb kullanıyor ve anlık yapılan işlemler ve applicationın tuttugu bazı geçici verileri burada tutarken loglama(NoSQL sistemlerinde transaction log yoktur) ve kullanıcı verilerini Mysql'de tuttuk sorunumuz en azından scability adına çözüldü.


    Mühendis kahveyi projeye dönüştüren bir insan evladıdır.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yawuz
    yawuz's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    bulut sunucuları kullanabilirsin sanırım bu alanda kayda değer gelişmeler var.


    tahribat.com a can feda
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    UCANTENEKE
    UCANTENEKE's avatar
    Kayıt Tarihi: 30/Ağustos/2005
    Erkek

    index olayı mükemmel bişey dakikalarca süren select  sorgusunu ms mertebesine indirdim postgresqlde.12 milyon satır :D


    Bence bu dünya üzerinde seçilmiş ırk diye bi kavram varsa bu ırk kesin ruslardır.Onlar daha iyisini yapana kadar en iyisi onlar
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    voltigore
    voltigore's avatar
    Kayıt Tarihi: 01/Ağustos/2005
    Erkek

    - veritabanı tablonda en çok where koşulu kullandığın alanı (mesela kategori alanı olabilir bu, çünkü en çok o kullanılır gibi senin sistemde) belirle ve clustered index uygula (eğer bu tabloya hiç kayıt yapılmıyorsa (readonly) fill factor u %100 e çek) (clustered index senin datanı indexlediğin sütuna göre sıralar, bu şekilde aradığın datayı hash yaparak çok hızlı bulur)

    - where koşuluna bağlı olarak non-clustered index uygula (eğer tablonda clustered index yoksa non-clustered uyguladığında sql server tempdb ye yüklenir onun için mutlaka clustered oluştur)

    - eğer sql server enterprise kullanacaksan mutlaka partition özelliğini kullan. mesela ürünleri CategoryId ye göre partititon yapıp farklı data dosyalarında tutabilirsin. "select * from Products where CategoryId=5 and Price between 200 and 500" gibi bir sorguda sql server tüm db yi taramak yerine gidip CategoryId=5 olan data dosyasını tarayacak. Price üzerinden de non-cluster index in olduğunu varsayarsak sorgu ms sürer. Partition ları ayırmak için birden fazla fiziksel hdd kullan.

    - Memory limitin yoksa, cacheleye bildiğin kadar cachle. AppFabric e bak.

    - Sql Server Loglarını kapat, simple da tut (Recovery yapamazsın)

    - NoSql çözümlere bakabilirsin (örnek: RavenDB) 


    Geyik Candır :]
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    Tecrübelerini aktaran herkese teşekkürler. Bunlar oldukca değerli bilgiler sonuçda. Şuan hepsini uygulayamıyorum ama bu konuda altında yapılacakları toplayıp adım adım gideceğim.

    Sql alanında 3 aşşa 5 yukarı neler yapılması gerektiğini anladım. Gerisi ar-ge yapmaya bakar. DB yapısını elimden geldiğince sade ve temiz kurmaya çalışıyorum. Tek korkum şu ki; şimdi gözden kaçırarak yaptığım bir hata ilerde düzeltme adına büyük problemlere neden olmasın bana. (Artık olmuşsada uykusuz geceler bizi bekler :)

     

    -------------------------------------------------

    Diğer dert resimler.

     

    Sizce resimleride ayrı bir serverda mı tutmak gerek? Örneğin sahibinden tüm resimleri subdomain altında tutmuş. 

    /images/ altında ürünleri düşündüğümüzde 200.000 adet resim olacak. Bunları diske yazarken KategoriID ile bir klasör açıp onun içine attım. Yani ürünün son kıvrılımdaki kategoriID değeri ne ise onun klasörünü açıp resmide içine attım. Bu ne derece doğrudur?

    /images/resim5785/asd.jpg
    /images/resim5785/asd2.jpg  

    /images/resim5744/asd.jpg 
    /images/resim5744/asd2.jpg  

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    doganaydin
    doganaydin's avatar
    Banlanmış Üye
    Kayıt Tarihi: 29/Ocak/2010
    Erkek

    Resimler sunucu tarafında pek sorun çıkarmaz. Ancak browserlar aynı anda aynı urlden sadece 2 veri okuyabilirler. Yani x1 ve x2 resmini aynı anda çekerken x3 resmini çekemez. Veya bir css bir js render ederken bir diğer nesneyi çekemez. Bunun için subdomaine atabilirsin. Cookiesiz bir domain kullanırsan hız bakımından yararına olur. Aşırı miktarda resmin varsa amazon s3 de kullanabilirsin. Ücretlendirmesi çok uygun.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yawuz
    yawuz's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    doganaydin bunu yazdı:
    -----------------------------

    Resimler sunucu tarafında pek sorun çıkarmaz. Ancak browserlar aynı anda aynı urlden sadece 2 veri okuyabilirler. Yani x1 ve x2 resmini aynı anda çekerken x3 resmini çekemez. Veya bir css bir js render ederken bir diğer nesneyi çekemez. Bunun için subdomaine atabilirsin. Cookiesiz bir domain kullanırsan hız bakımından yararına olur. Aşırı miktarda resmin varsa amazon s3 de kullanabilirsin. Ücretlendirmesi çok uygun.


    -----------------------------

    hocam dediğini anlayamadım nasıl 2 veri okuyabilir az daha basitleştirerek anlatabilir misin bu cahil için?


    tahribat.com a can feda
Toplam Hit: 3034 Toplam Mesaj: 26