5 Mayıs 2012 Cumartesi

MongoDB Java Application (1)

    Bu yazımda MongoDB de java uygulaması nasıl oluşturulduğuna değineceğim. 
    Öncelikli olarak Java'nın MongoDB ile iletişime geçebilmesi için driverının bulunması gerekli. Buradan MongoDB'nin java driverını indirebilirsiniz. Ardından sıra geldi uygulamanın yazılmasına. Öncelikli olarak MongoDb'nin çalışıyor olması gerekli. Bunun için bir önceki makaleden faydalanabilirsiniz. Uygulamamıza MongoDB'nin çalışıyor olduğunu düşünerek devam edeceğiz. 
    Netbeans'da normal bir java application oluşturalım ve Libraries alanına ağ tıklayarak Add JAR/Folder... seçeneğini seçip indirdiğimiz MongoDB driverını projemize ekliyoruz. Buraya kadar her şey yolunda ve gayet başarılı.
    Import etmeniz gereken kütüphaneler
  • import com.mongodb.Mongo;
  • import com.mongodb.DB;
  • import com.mongodb.DBCollection;
  • import com.mongodb.BasicDBObject;
  • import com.mongodb.DBObject;
  • import com.mongodb.DBCursor; bunlar. 
Eğer import etmeden devam eder ve kodları yazarsanız zaten Netbeans sizi hangi kütüphanenin eklenmesi gerektiği konusunda bilgilendirecek ve eklemenizi isteyecektir.
    Projemize başlarken öncelikle MongoDB erişimleri için
Mongo m = new Mongo();
Mongo m = new Mongo( "localhost" );
Mongo m = new Mongo( "localhost" , 27017 ); nesnelerinden birini oluşturuyoruz. Ardından database etkileşimi için 
DB db = m.getDB( "mydb" ); 
ve bağlantının açık ve kullanılabilir olduğunu sınamak için 
char[] pss= {'p','s','s'};
boolean auth = db.authenticate("usr", pss);
System.out.println("authenticate : " + auth); yazıyoruz. Eğer işlem sonucu authenticate : true şeklinde ise bağlantınız başarılıdır demektir. authenticate : false şeklinde yanıt alıyorsanız ya veritabanınız oluşturulmamış yada kullanıcı adı ve şifresi bu veritabanında tanımlanmamış demektir. Ardından sıra var olan collectionların listelenmesi işleminde. 
Set colls = db.getCollectionNames();
for (String s : colls) {
    System.out.println(s);
}
yukarıda ki kod yığını database altında var olan collectionların listelenmesini sağlar. Bu aşamada alacağınız ilk çıktı 
system.indexes
system.users
şeklinde olacaktır. 

2 Mayıs 2012 Çarşamba

MongoDB nedir? Windows sistemlere nasıl kurulur?

Konuya giriş yapmadan önce NoSQL hakkında bilgi vermek gerektiğini düşünüyorum.
Herhangi bir şema formatında ve "ilişkisel olmayan" verileri depolayabileceğiniz veritabanı sistemlerine kavramsal olarak verilen isimdir. "Hiç SQL kullanılmayan" anlamından çok "Sadece SQL kullanılmayan" anlamı barındırmaktadır (Not-only-SQL). Ayrıca şu ana kadar geliştirilmiş olan örneklerin gerçekten çok yüksek performansa sahip olduklarını da eklemek gerek.

NoSQL veritabanı özellikleri;
  • SQL sorgulama arayüzü ve bildiğimiz SQL sorguları ile çalışmıyor olmaları (Sorgulama arayüzleri değişkenlik gösteriyor. JSON, REST, RPC vb.. şeklinde farklı API'lerle sorgulanabilen versiyonlar mevcut. RavenDB ise tamamen LINQ ile sorgulanabiliyor!)
  • Çok-ögeli (tuple) sabit ilişkisel şemalar yerine veri tipleri önceden belirlenmemiş ve genişletilebilir veri şeması kullanıyor olmaları
  • Özellikle yatay ölçeklendirmeye göre tasarlanmış olmaları (Facebook, Google, Amazon gibi her gün terabaytlarca veriyle haşir neşir olan devlerin NoSQL veritabanlarını tercih etmesinin ana nedenlerinden)
  • Veriyi disk ya da sadece hafızada taşıyabilir olmaları
şeklinde gruplandırabiliriz. Yukarıda verdiğim bağlantıda göreceğiniz NoSQL veritabanı sistemleri bu dört ana özelliğin farklı varyasyonlarını sergiliyor.

Peki neden NoSQL?
  • İlişkisel veritabanları, yazma hakkı olan bir sunucu üzerinde koşar. Ana sunucuya birşey olması durumunda slave makinelerden biri master’a çevirilir ve yola devam edilir. Burada ki veritabanına gelen yazma isteklerini düşünebiliyor musunuz?
  • Veritabanı büyüdüğünde yedekleme gibi işlemler (bakım) sorun olmaya başlar.
  • Replikasyona dair sorunlar yaşayabilirsiniz.
  • Google’ın 1 milyon makinesi olduğu varsayılıyor! Bu kadar makinelerin yarısının aynı anda tek bir makineye yazma isteği bulunduğunu düşünürsek durum daha net anlaşılabilir.
Bu kadar bilginin yeterli olduğunu düşünerek şimdide NoSQL sistemlerin en başarılı örneklerinden olan MongoDB ye değinelim. MongoDB yüksek performansıyla bilinen ve bazı RDBMS özelliklerini (indeksleme vb.) de içinde barındıran bir yazılım. http://www.mongodb.org/downloads adresinden MongoDB'nin istediğiniz versiyonunu bilgisayarınıza indirebilirsiniz.

Daha sonra yapılacak aşamalar;
  • MongoDB zip dosyasını C:\data\db altındaki bir klasöre açın, MongoDB öntanımlı olarak bu klasörde çalışıyor. İsterseniz MongoDB'yi çalıştırırken --dbpath [klasor] parametresi ile farklı bir klasörden de çalıştırabilirsiniz.
  • Sistemiminizin path değişkenine C:\data\db\bin klasörünü ekleyin. (Computer -> Properties -> Advanced system settings -> Environment Variables -> System variables - Path)
  • Ben örneğimde  C:\data  dizini altında deneme klasörü oluşturdum. Bunu isteğe bağlı olarak oluşturabilirsiniz. Bununla amacım veritabanı işlemlerini bu klasör üstünden yürütecek olmam.MongoDB'yi yeni klasörden başlatın (mongod.exe --dbpath C:\data\deneme)
  • Mongo shell başlatın. (C:\data\db\bin\mongo.exe)
  • Database oluşturma işlemi için use DatabaseName; şeklinde komut satırına giriş yaparsanız MongoDB sizin için veritabanını oluşturacaktır.
  • Veritabanını oluşturduktan sonra db.addUser('UserName','Password'); komutuyla istediğiniz kullanıcı oluşturup şifre verebilirsiniz. Bu işlem veritabanı erişimleriniz için gereklidir.

Bu aşamalardan sonra bilgisayarımızda MongoDB yüklü ve çalışır durumda olacaktır.