bt akademi iyidir http://www.btakademi.com/egitim/egitim-katalogu/?id=2&egitim=veritaban%C4%B1-ve-raporlama

: Türkçe olup olmadığını bilmiyorum ama ingilizce olanlar da fazla değil. Replication ve sharding işlemleri farklıdır. Replication aynı veri tabanının birden fazla sunucuya kopyalanması bu yntemle hem yedek alınması hem de bir sunucu ulaşılamazken diğer sunucuyla devam edilmesi sağlanır. Sharding işlemi ise verilerin yazma aşamasında dağıtılarak yazılması okunurken de otomatik olarak bir bütün olarak okunmasıdır. Yani replication işleminde 10 kayıt ekleniyorsa bu 10 kayıtın birebir kopyası diğer sunuculara da aktarılır. Sharding işleminde 10 kayıt ekleniyorsa -ayarlara gre- eklenen her kayıt bütün sunuculara parçalanır. Yani bir sorguda 10 satırlık bir yazı eklemek istiyoruz diyelim, Bu 10 satırın her satırını ayrı sunucuya atar. Tabi ayarlarla değiştirilebilir. Hocam araştırdığım kadarıyla replication işlemi performans a katkısı olan bir işlem. rnek vermek gerekirse. Master Slave diye bir olay var. Master herr işlemi yapıyor slave sadece master ı kopyalıyor. Select işlemlerini slavelere, delete update insert işlemlerini master a verince performans artıyormuş. Slect işlemi çok FAZLA oluyorsa da slave sayısını arttırabiliyormuşuz. Birde shading denilen yntemde ilişkisel veritabanlarında ilişki kurmak çok sıkıntılı olmalı... Hatta bütün kayıtları gstermek felan joinler... Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

yoğun insert olacak tabloları mysql de tut , mssql e gre daha performanslı. sql sorgularını stored procedure olarak çağır splerin içinde kullan (http://www.csharpnedir.com/articles/read/?id=1106) bunun üstü artık senin serverlarına bağlı. siktiri boktan bi server ile 250 k kişiyi kaldırıcam diye kasma kaldıramazsın. az kaynakla kaldırmak istiyorum dersen mssql/mysql olmaz. mesela nosql olur veya benzer veritabanları insanlık artık bu yeni veritabanlarını kullanmaya doğru gidiyor. mssql için gerek kaynak masrafı gerek lisans masrafları çok yüksek - xx yerde hata var. - ya aslında kod şyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...

İndexlemeler çok nemli. Eğer işlemlerin istatistikleri varsa master/slave olarak ayırman daha mantıklı. Mesela okuma işlemleri yazma işlemlerinden fazlaysa okuma işlemleri için ayrı bir sunucu al, eğer yazma işlemlerin daha çoksa yazma işlemlerin için ayrı bir sunucu al. Bunun yanında I/O performansını arttırmak için mssql ile application arasında queue işlemlerini kullan. Bunun için redis temelli çzümleri tercih edebilirsin. Yani o datayı hemen yazman gerekmiyorsa gecikmeli yazabilirsin. Her şekilde de mssql'in aynı donanım üzerinde diğerlerinden her zaman daha sorunlu olacağını bilmen lazım.

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. Bylelikle 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 gre 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 gzle grülür bir yavaşlama olmadı bu güne kadar.

resimlere, css ve js dosyalarına hatta tüm statik içeriğe "expires" atayabilirsin, ozman adam bi css veya js yi bikere yüklediği zaman sayfaya ikinici girişinde hatta verdiğin tarihe gre 1 ay sonra bile dosyayı bidaha yüklemez bu hem serverın yükünü azaltır hem de sayfa açılma hızını arttırır. rneğin jquery dosyaları için bu çok işe yarar, ayrıca jquery dosyalarını google dan çekersen bu da iyi olur zaten google bu kodlara 1 senelik falan bi "expires" tanımlıyor bu şekilde bi tarayıcı dosyayı bikere yüklediği zaman bidaha yüklemio hatta başka bi siteden adam google vasıtasıyla jquery yüklese, tarayıcı senin sayfanda jquery yi yine kendi cachesinden okur, bu da büyük bi hız kazandırır sana. he bide ayrıca eğer web serverın apache ise statik içeriği bi sub domain ile gnderir ve web serverı da ngix kullanırsan apache ye gre çok iyi performans alırsın.

: İndexlemeler çok nemli. Eğer işlemlerin istatistikleri varsa master/slave olarak ayırman daha mantıklı. Mesela okuma işlemleri yazma işlemlerinden fazlaysa okuma işlemleri için ayrı bir sunucu al, eğer yazma işlemlerin daha çoksa yazma işlemlerin için ayrı bir sunucu al. Bunun yanında I/O performansını arttırmak için mssql ile application arasında queue işlemlerini kullan. Bunun için redis temelli çzümleri tercih edebilirsin. Yani o datayı hemen yazman gerekmiyorsa gecikmeli yazabilirsin. Her şekilde de mssql'in aynı donanım üzerinde diğerlerinden her zaman daha sorunlu olacağını bilmen lazım. Database ile application serverı ayırmak kolayda hocam peki bir database'i nasıl ayırırız? Yazacağı zaman şuna okuyacağı zaman buna diye? Facebook gibi sistemlerde yleydi sanırım? @omerelili link için teşekkürler

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.

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

bu linke bak http://blog.sqlauthority.com/2009/05/31/sql-server-create-multiple-filegroup-for-single-database/ ayrıca bu blogu takip et istersen çok güzel yazıları var.

hocam merhaba webde bilmemde. SQL Server ayrı serverde tut yani Application server ile sql server bir arada iyi olmuyor. indexler kullan. tüm bilgileri bir tabloya yazma 3-4 tabloya bl İD lerle sorgula. sp`ler kullan. sistemi temiz tut ve RAM ne kadar yüksek olursa o kadar artı, veritabanında Shrink işlemini bazı aralıklarda yap. sonra veritabanı datalarını multidata şeklinde tut, mesela data. mdf yerine data1. mdf data2. mdf bu şekilde. aklıma gelenler bunlar şimdilik.

Be şu konuyu çok merak ediyorum MYSQL REPLICATION. Mesela bildiğimiz gibi facebook mysql kullanıyor. Ama adamların tek bir sunucuyla idare etmeleri imkansız en az 9999 tane mysql sunucusuna ihtiyacları var. İşte sorum burada başlıyor, 1 veritabanı nasıl birden fazla sunucuda blünük uygulanıyor. Replication da çeşitler var sanırım. Bu hız arttırma işlemi var ya o nun mantığı nasıl. rnek hız arttırımıyla ilgili bir dküman var mı Türkçe. Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

: mssql ile keşke yapmış olsaydın hocam valla sylediğ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 dkümanlar mutlaka vardır. Anlattığın olayın dkümanını atıyım bulursam. Çeşitli cache yntemleri 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 ktü ihtimalle master/slave 2 serverla çzersin olayı. Malesef İstanbul'da değilim. :)

Türkçe olup olmadığını bilmiyorum ama ingilizce olanlar da fazla değil. Replication ve sharding işlemleri farklıdır. Replication aynı veri tabanının birden fazla sunucuya kopyalanması bu yntemle hem yedek alınması hem de bir sunucu ulaşılamazken diğer sunucuyla devam edilmesi sağlanır. Sharding işlemi ise verilerin yazma aşamasında dağıtılarak yazılması okunurken de otomatik olarak bir bütün olarak okunmasıdır. Yani replication işleminde 10 kayıt ekleniyorsa bu 10 kayıtın birebir kopyası diğer sunuculara da aktarılır. Sharding işleminde 10 kayıt ekleniyorsa -ayarlara gre- eklenen her kayıt bütün sunuculara parçalanır. Yani bir sorguda 10 satırlık bir yazı eklemek istiyoruz diyelim, Bu 10 satırın her satırını ayrı sunucuya atar. Tabi ayarlarla değiştirilebilir.

: 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. Bylelikle 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 gre 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 gzle grülür bir yavaşlama olmadı bu güne kadar. mssql ile keşke yapmış olsaydın hocam valla sylediğ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ı?

Merhaba, Şyle bir sıkıntım var. Normal bir site yaparsın üyelik olur kategoriler olur ilanlar olur ve bunları ynetirsin. Buraya kadar zaten herkesin yaptığı işlemler. Bunu yapanlar hiç performansı düşünmez direk select from uye şeklinde çalışır. Ancak 2 milyon üye 20.000 kategori tarzında 100.000 ürün olunca bir sitede burda normal yollardan siteyi yapınca ciddi performans sıkıntı yaşanıyor. Gerek cache yapısı, gerek daha iyi optimize edilmiş sql sorguları vs vs bunlar haliyle en nemli işler oluyor. İşte bu konuda eğitim veren bir kurum var mı? Yoksa her konuda kendimiz mi tecrübelenmemiz gerekecek. rneğin elimden geldiğince az database'e bağlanıp işlemler yapıyorum, ajax falan kullanıyorum ama fark ettimki eksik olduğum bir konu bu benim. Bir çzüm sunacaki bir fikir üretecek var mı bu konuda bana? Teşekkürler

bulut sunucuları kullanabilirsin sanırım bu alanda kayda değer gelişmeler var. tahribat.com a can feda

: SharpShooter bunu yazdı: yoğun insert olacak tabloları mysql de tut , mssql e gre daha performanslı. sql sorgularını stored procedure olarak çağır splerin içinde kullan (http://www.csharpnedir.com/articles/read/?id=1106) bunun üstü artık senin serverlarına bağlı. siktiri boktan bi server ile 250 k kişiyi kaldırıcam diye kasma kaldıramazsın. az kaynakla kaldırmak istiyorum dersen mssql/mysql olmaz. mesela nosql olur veya benzer veritabanları insanlık artık bu yeni veritabanlarını kullanmaya doğru gidiyor. mssql için gerek kaynak masrafı gerek lisans masrafları çok yüksek @SharpShooter sistemi mssql olarak oluşturdum. rneğin indexleme yapmadım hiç. ncedende yapmadığım birşeydi zaten. Tabloyu dizayn kısmında açıp sutunu sağ tıkladığımızda index alanı çıkıyor oradan mı yapılan birşey? Ayrıca hangi ne tür tablolarda hangi sutunlara index yapılmalı? filtreleme yaptığın alanları indexle. mesela ürünler tablon olsun. burada neye gre filtre yaparsın? ürünidsine gre. o yüzden ürün id ye gre indexleyebilirsin. aramalar için full text search kullan gibi - xx yerde hata var. - ya aslında kod şyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...

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 gzden kaçırarak yaptığım bir hata ilerde düzeltme adına büyük problemlere neden olmasın bana. 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 klasr açıp onun içine attım. Yani ürünün son kıvrılımdaki kategoriID değeri ne ise onun klasrü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

: 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

Anlık olarak tarayıcılar aynı urlden sadece 2 dosya okuyabilirler. Bu normalde son kullanıcı tarafından fark edilmez. Yani site açıldığında 1 css 1 js okuyorsa 3. bir okuma işlemini aynı anda yapamaz. Bu durumu aşmak için asenkron yüklemeler veya subdomain kullanılır. Edit: Bu olay bir standarttır. Ama tarayıcı ayarlarıyla oynayıp bu sayıyı değiştirebiliyoruz. Ancak siteye girecek her son kullanıcıdan ayarlarını değiştirmesini isteyemeyiz. http://www.lytebyte.com/2007/07/30/how-to-increase-the-number-of-simultaneous-download-limit-in-firefox/ http://support.microsoft.com/kb/282402

- veritabanı tablonda en çok where koşulu kullandığın alanı belirle ve clustered index uygula (eğer bu tabloya hiç kayıt yapılmıyorsa fill factor u %100 e çek) - where koşuluna bağlı olarak non-clustered index uygula - eğer sql server enterprise kullanacaksan mutlaka partition zelliğini kullan. mesela ürünleri CategoryId ye gre 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 - NoSql çzümlere bakabilirsin Geyik Candır :]

veritabanını farklı bir makinada tutabilirsin tahribat.com a can feda

Selam, Aramlar için like şuan iş grüyor. Ancak soru şu: Like ile full text search'i karşılaştırdığımız zaman aynı tabloda aynı sutunda arama yapınca burdaki performansı test eden var mı? Makineleri ayırmayı düşüyorum evet. Sanırım aynı ağda farklı makinalar olması yeterli? Onu zaten server sağlayıcıya anlatsam oda yapabilir herhalde.. bt akedemide olan linke baktım ama genel eğitim yazıyor orda. Benim istediğim daha detaylı... Shrink ara sıra yapıyorum. Delete komutunun ardında bıraktığı pisliği temizliyor sağolsun :) Ayrıca kkten silmem gerektiğinde bir tabloyu "truncate" komutu ile yapıyorum. Tavsiye ederim. data1. mdf data2. mdf olayını anlamadım hocam açar mısın biraz? teşekkürler

Büyük verilerle çalışmak için bir kaç yntem var bir tanesini arkadaş yukarıda sylemiş 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 ve kullanıcı verilerini Mysql'de tuttuk sorunumuz en azından scability adına çzüldü. Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

: yoğun insert olacak tabloları mysql de tut , mssql e gre daha performanslı. sql sorgularını stored procedure olarak çağır splerin içinde kullan (http://www.csharpnedir.com/articles/read/?id=1106) bunun üstü artık senin serverlarına bağlı. siktiri boktan bi server ile 250 k kişiyi kaldırıcam diye kasma kaldıramazsın. az kaynakla kaldırmak istiyorum dersen mssql/mysql olmaz. mesela nosql olur veya benzer veritabanları insanlık artık bu yeni veritabanlarını kullanmaya doğru gidiyor. mssql için gerek kaynak masrafı gerek lisans masrafları çok yüksek @SharpShooter sistemi mssql olarak oluşturdum. rneğin indexleme yapmadım hiç. ncedende yapmadığım birşeydi zaten. Tabloyu dizayn kısmında açıp sutunu sağ tıkladığımızda index alanı çıkıyor oradan mı yapılan birşey? Ayrıca hangi ne tür tablolarda hangi sutunlara index yapılmalı?