bir «hacker meetup» da kullanılan hashtag • Tam bir tanım yapamasak da, NoSql veritabanlarının ortak karakterlerinden bahsedebiliriz • İlişkisiz (non-relational, not like OLTP relational) • Açık kaynak • Dağıtık yapı destekli (cluster-friendly) • Şemasız (shema-less) • 21. YY web yükünü kaldırabilecek kapasitede
other thing! • Yüksek trafiğe ve hesaplama gereklerine daha verimli (ucuz, hızlı) cevap verebilmek için • Hızlı yazma için • Hızlı okuma için • Yüksek erişilebilirlik için • Kolay geliştirme ortamı • Büyük veri ile çalışabilme
bir güzellik • No sql ortamda tutarlı veri sağlamak için iş developer’a düşüyor… • Ama zaten ilişkisel veri tabanlarında da biraz düşünürseniz transaction otomatik bir pilot değil, • Uygulamanın gereğine göre mümkün olduğunca kısa süreli bir scope’u olması gerek, ve bu ideal ortam için bize gene iş düşüyor…
• Yüksek Erişilebilirlik • Yüksek Performans • TABLE JOIN durumları olmadan tasarlanan yapılar ve «embeded document» sayesinde hızlı okuma • «write concern» tercihine dayalı olarak hızlı yazma • Gittikçe kalabalıklaşan komünite
Ürün Katalogları • ProductGroups -> Products -> ProductVariants • Üye Bilgileri • User -> UserDetail • User.Addresses • İçerik Yönetim Sistemleri • Log Datası Saklamak • Coğrafi Bilgi Saklamak (geo-spatial) • Zaman içinde yapısı değişecek uygulamalar
• Çok Alan (Compound Index) • Multikey Index (array’e index) • Geospatial Index • Text Indexes (text içinde arama için) • Hashed Indexes (hash based sharding için)
• Asenkron çalışır • Master Slave Modeli • Veri değiştikçe bazı anlarda sadece tek bir makinenin en güncel olduğu durumar sözkonusu • http://docs.mongodb.org/manual/core/replication -introduction/
index optimization • Aktif verilerin ve kullanılan indexlerin boyutunun tek makinenin RAM’ine sığmayacağı bir noktaya geldik mi? • İşletim sistemi ve dosya sistemi doğru ayarlarda mı? • EXT4/XFS, «access time tracking» kapalı olmalı • Mümkünse SSD disk ve RAID 10
olarak yıl seçip verilerin tarihine göre farklı «shard»’a gitmesi sağlanabilir Mongodb shard’larda yaklaşık miktarda data olmasını ister Eğer shard’larda veri boyutu arasında fark oluşursa Veriyi taşıyarak eşitleme yapmaya çalışır Bu durumda network’de çok büyük boyutda veri taşıma gerçekleşebilir ve bu sisteminizin erişilebilirliğine zeval verebilir… dolayısıyla «shard key» seçimi önemlidir!