MongoDB Index Oluşturma, Index Kullanmanın Avantajları Dezavantajları

Index Nedir?

Veritabanında bir değer arattığımız zaman, ilgili değerleri bulabilmek için kayıtların tamamına sırayla tek tek bakılır (table scan). Collection’ımızda (tablomuzda) birkaç yüz document(kayıt) var ise, tüm kayıtların tek tek bakılması çok fazla zaman kaybı yaratmayacaktır. Fakat collection’ımızdaki (tablomuzdaki) document (kayıt) sayısı milyon seviyelerindeyse, aranan değer için tüm document’lara bakılması,  sonucun gelmesini çok fazla geciktirecektir. Sorgularda tablonun baştan sona tamamının taranmasını engellemek için RDBMS’lerde de kullandığımız Index’ler oluştururuz.

Table Scan ile Index Arasındaki Performans Farkı

Continue reading

Yatay vs Dikey Ölçeklenebilirlik – Horizontally vs Vertically Scalable Scalability

Yatay Ölçeklenebilirlik Nedir ?

Sistemin/Veritabanının Yatayda ölçeklenebilir olması (horizontally scalable, scale out); ucuz ve çok sayıda makinenin aynı anda kullanılması anlamına gelir. Yatay ölçeklenebilirlik sayesinde yedeklilik de performans artışı da sağlanabilir.

Dikey Ölçeklenebilirlik Nedir ?

Sistemin/Veritabanının Dikeyde ölçeklenebilir olması (dikey ölçeklenebilirlik, vertically scalable, scale up); bir tane çok güçlü aynı zamanda pahalı bir makine/donanım kullanılmasıdır. Dikey Ölçeklenebilir sistemlerde donanım kısıtları mevcuttur. Örneğin mevcut sisteminizin CPU frekansını 5 ghz yapamazsınız veya 1 tb ram yapamazsınız.

Continue reading

ÖRNEK CDR KAYDI, (SAMPLE CDR LOGS) – CALL DETAIL RECORD

Geçenlerde örnek CDR log’una ihtiyacım oldu (MongoDB’ye örnek kayıt atmak için), fakat internette uzun süre aramama rağmen bulamadım. Kendim excelde işimi görecek bir dummy cdr log dosyası oluşturdum. İngilizce (English) ve Türkçe olmak üzere 2 ayrı sheet’te 1 excele temsili 1000 kayıt ekledim. Ama veriler random üretildiği için isteyen formülü değiştirip, istediği formatta ve miktarda veri üretebilir.

Continue reading

TWO PHASE COMMIT NEDİR?

Two phase commit nedir ? Two phase commit ne işe yarar ?

Two phase commit dağıtık (distributed) sistemler üzerinde gerçekleşen transaction’ların her sunucuda/kaynakta/sistemde başarıyla tamamlanıp tamamlanmadığı bilgisini verir. Örneğin A, B ve C sunucularımız olsun. Veriler üzerinde değişiklik gerektiren (update, delete…) bir transaction çalıştırıldığında, A, B ve C sunucuları bu transaction’ı başarılı bir şekilde tamamlamışlarsa, A,B ve C sunucularında commit uygulanır.

Continue reading

MongoDB remove() VS drop() PERFORMANS FARKI

remove(): Collection içinde bulunan tüm document’ları tek tek siler.

drop(): komple collection’ı veritabanından kaldırır. Eğer collection’daki tüm verileri sileceksek ( indexler dahil) drop() kullanmanızı tavsiye ederim, çünkü çok daha hızlıdır.

Aradaki performans farkını ölçmek için bir milyon kayıtlı iki adet farklı collection oluşturup, birinci collection’nın verisini remove() ile, diğer collection’nın verisini drop() ile silip, iki işlem arasındaki zamanı aşağıdaki işlemle kıyaslıyoruz.

Continue reading