Merhaba, birçok iş ve bu işler için bir çok çalışma yapıyoruz, bunları birde yazmayı ve paylaşmayı düşününce işler uzadıkça uzuyor. Yine bir makale girişiminde daha bulundum işte, giriş kısmını da bıdı bıdı ile geçiştirdiğime göre direkt olarak konuya giriyorum.
NOSQL
Bu makaleyi okuyan kişiler, öyle tahmin ediyorum ki zaten bu kavramdan haberdardırlar, o yüzden nosql şudur gibi bir açıklamaya ihtiyaç yok sanırım. Hakkında okuduğum makalelerde keşfi kimine göre 2009 kimine göre, 1999-2000 yıllarından bahsediliyor. Yine kimine göre açılımı Not Only Sql kimine göre direk No sql. Fakat kendi adıma konuşmam gerekir ise ben ilk olarak 2011 ortalarında duydum, ve ilk uygulama denemesini de ancak bu yılın ilk günü yaptım. Genel olarak doküman tabanlı nosql ler şöyledir; ram üzerinde tutulur, acid prensiplerini desteklemez(Bildiğim üzere RavenDB bu konuda istisnadır.), ilişkisel değildir. Kullanacağınız alanları ve ona göre türünü doğru seçerseniz hayat kurtarır 🙂 Tüm nosql çeşitleri ve detayları burada görülmektedir.
MongoDB
10gen şirketinin geliştirdiği bir nosql platformudur, veriler bson formatlı dokümanlar ile tutulur. REST servislerini destekler. C++ ile geliştirilmiştir ve açık kaynaklıdır. Kurulumu kullanımı oldukça basittir, 10gen şirketinin geliştirdiği MongoDB C# driver sayesinde(C# driver yerine .net driver deselermiş çok daha tutarlı olacakmış) poco nesneleri ve linq sorguları kullanmak mümkündür, desteklenen diğer diller ve yapılar burada görülebilmektedir. Normalizasyon yoktur fakat bunun yerine önerilen yapılar vardır, örneğin bire-çok ilişki için embedded document(gömme doküman) önerilen yapılardan birisidir, data modeling’in tamamı için burayı ziyaret ediniz. İndirip bilgisayarınıza kurabilirsiniz, Windows üzerine kurulum ile ilgili detay burada yer almaktadır, diğer tüm sistemler ise burada görülebilir.
MongoDB C# Driver’ı Projeye Uygulama – Örnek
Projemizde kullanabilmemiz için öncelikle MongoDB C# Driver paketini Nuget(http://nuget.org/packages/mongocsharpdriver) üzerinden kurmamız gerekecek.
Package Manager Console üzerinde Install-Package mongocsharpdriver komutunu çalıştırıyoruz.
Kurulum başarılı olduğunda referanslara yeni kütüphaneler gelecektir.
- MongoDB.Bson
- MongoDB.Driver
- Newtonsoft.Json
Buraya kadar herhangi bir sorun yaşamadınız ve ilgili referansları gördünüz ise kurulum işlemi başarı ile tamamlanmış demektir. Örnek uygulamayı, Sanatçılar ve Albümleri üzerinde CRUD işlemleri yapmak üzere geliştirdim.
Uygulama kaynak kodları https://github.com/bbilginn/Mongodb.Net adresinde mevcut. İlgili örneğin çalışan hali http://mongodb-net.azurewebsites.net/ adresindedir(Lütfen sanatçıları silmeyelim :)).
MongoDB driver ile çalıştırabilmek için ilgili kod(Manager.vb) sayfanıza şu üç Import’ u yapmanız gerekecektir.
- Imports MongoDB.Driver
- Imports MongoDB.Driver.Builders
- Imports MongoDB.Bson
Burada tüm operasyonlar Manager.vb üzerinde gerçekleşmektedir, tüm metotlar buradadır. ConnectionString değişkeninde MongoDB yolunu ve bilgilerini bulabilirsiniz. Pek tabi ki bu hizmeti kendi bilgisayarınıza kurarak denemeler yapabilirsiniz, ben bu uygulamada yerel bir kurulum yapmak yerine MongoLab(https://mongolab.com/) hizmetini kullandım, bu sayede en azından denemek için kuruluma ihtiyacınız olmayacaktır.
Adım adım MongoLab hizmetini oluşturmak.
http://mongolab.org adresinden bir hesap oluşturduktan sonra http://mongolab.org/newdb adresinden veritabanı adını, servis sağlayıcısını ve ödeme planını seçtikten sonra veritabanımız için kullanıcı adı ve şifresi tanımlıyoruz.
Bir sonraki sayfada veritabanı oluşturma işleminin başarılı olduğuna dair bir mesaj alacağız, burası aynı zamanda veritabanımızın yönetim konsoludur.
Tablo mantığından çıktık, bundan sonra koleksiyon olarak isimlendireceğiz, ki gördüğünüz üzere Sanatci
adında yeni bir koleksiyon ekliyoruz. Koleksiyon ilk eklendiğinde _id
adında unique bir alan otomatik olarak gelmekte.
Sanatci koleksiyonu için Ad
alanı ekliyoruz.
Sanatci koleksiyonu için Albums
alanını ekliyoruz, burada Albums
girişte bahsettiğim embedded document
yapısına sahip, bire çok ilişki ve delete rule=cascade
gibi düşünülebilir, yani demem o ki aynı zamanda Sanatci
koleksiyonundan bir kayıt silindiğinde silinen sanatçının tüm albümleri de o kayıta bağlı olduğu için silinecektir.
Yazacaklarım bu kadar 🙂 Bitti.
http://visualbasictr.com/Article/Berat-Bilgin/vb-net-mongodb-kullanimi