21 Mayıs 2015 Perşembe

Java ile MongoDB Bağlantısı

     S.a. Arkadaşlar,
     Bugün konumuz biraz farklı bir konu olacak. Bildiğiniz üzere projelerimizde veri tabanı olarak Mysql kullanıyorduk, fakat uzun süre araştırıyor olduğum veri tabanı vardı: Mongo DB.

     Mongodb'yi açıklamadan önce NoSql nedir onu açıklamak lazım. Çünkü bildiğimiz sql komutlarının dışına çıkıyor. Yani sadece sql değil manasına NoSql kullanılmaya başlandı. Bunun çok büyük avantajları var. Özellikle çok büyük veriler barındırıyorsa projeniz o zaman farkını göreceksiniz.Resim-1'i inceleyebilirsiniz. Orta ve küçük projeler farkını o kadar da ortaya koymayabilir. Son dönemlerde adından sık sık söz ettirmeye başladı. Ben de bu konuyla ilgili araştırmalar yapıyordum. Bununla ilgili bir sürü veri tabanı kullanılabilir tabii ki, fakat biz mongodb kullanacağız.



Resim-1[1]

         Şimdi de NoSql veri tabanlarından mongodb'ye göze atacağız. Daha sonraki yazılarımızda NoSql veri tabanlarını karşılaştırma üzerine inşaAllah yine yazarız. Bugün sadece java ile mongodb'ye bağlanmayı veri yazmayı anlatacağız.

          İlk yapacağımız iş, kendi sitesinden  uygun sürümünü indirebilirsiniz. Ben windows 64bit kullanıyorum. Kurulumu basit ileri ileri diye kuruyoruz. Fakat ben custom deyip C:\mongodb altına kurdum. Siz de öyle yaparsanız birlikte ilerleme açısından daha kolay olabilir. Daha sonra cmd'yi açıyoruz ve cmd komut satırına Resim-2deki gibi komutları yazıp enter tuşuna basınca aşağıdaki gibi bir görüntü ekrana gelmiş olması gerekir.
Resim-2
         
           mongod.exe'yi çalıştırdıktan sonra bu pencereyi kapatmadan başka bir cmd dosyası açalım. Buraya dikkat etmek lazım eğer bu pencereyi kapatırsanız bağlanma hatası yaşayacaksınız.

            Şimdi istersek siyah ekrandan devam edebiliriz. Onu da anlatıp farklı bir program ile bağlanmayı deneyeceğiz. Eğer burada da problem ile karşılaşmazsak yolumuza göstereceğimiz programlarla devam edebileceğiz. 

Resim-3

         Eğer burada her hangi bir hata ile karşılaşmadıysak mongodb'yi artık kullanabiliriz anlamına gelir, fakat koyu ile yazılmış yerde dediklerimize uyulmaz failed network gibi bir hata ile karşılaşacaksınız. Küçük bir araştırma ile yaptım hatayı fark ettim. Siz de aynı hatayı yapmayın diye söylemek istedim. Şimdi artık mongodb'yi arayüz olarak kullanabilen programlar mevcut onları kısaca kendimizce açıklayacağız. Bir kaç tanesini kurduk fakat bizi en çok rahat ettiren 3T MongoChef  oldu. Projemizde de buradan devam edeceğiz.

        Robomongo: Kurulumu kolay, fakat kurulduktan sonra bağlanmayla ilgili bir sorun yaşamadık, fakat doğrulama konusunda sıkıntı yaşadık. Nedenini biraz araştırdım, fakat daha sonra diğer ara yüzleri de kısaca göz atma kararı aldığımız için çok üzerinde durmadık. Resim-4'de bu durumu inceleyebilirsiniz.
Resim-4

      UMongo: Zip dosyaları mevcuttu, zip dosyalarını indirdikten sonra içinde jar dosyaları mevcut ve bir de .exe dosyası mevcut, çift tıklamama rağmen birşey gelmedi nedense. Çok üzerinde durup zaman kaybetmek istemedim.

      MongoVUE: İlk kullanmaya başladığım program. Oldukça da iyi. Bağlanma konusunda her hangi bir sıkıntı yaşamadım, fakat veri tabanını kurduktan sonra yeni tablo ekleme gibi konularda ücretli  olmasından dolayı kısıtlı. Ben de ücretsiz bir program arayışına girdim. Yoksa güzel bir program. Belki de en ünlüsü

      3T MongoChef: Kişisel ve ticari olmayan kullanımlar için ücretsiz. Bir nevi Team viewer mantığı. Ben de zaten ticari veya iş amaçlı kullanmıyorum. Mail adresimi girdikten sonra mail geldi. Memnun musunuz acaba gibisinden. Kullanışı basit, fakat güzel. Resim-5'de kayıtlı veri tabanımız mevut
Resim-5

         Şimdi tüm bunlar güzel, ama artık kod kısmına girelim diye sabırsızlanıyorsunuz koda başlayalım artık :).

try {
// Mongodb'yi bağlanmak için
MongoClient mongoClient = new MongoClient("localhost", 27017);
// veritabanımınız ismi
DB db = mongoClient.getDB("test");
System.out.println("Connect to database successfully");
DBCollection coll = db.getCollection("user");// tablo ismi
//nosql'de collection=tablo
System.out.println("Collection user selected successfully");
//fieldler ise sutünlara, document ise satırlara denk gelmekteditr.
BasicDBObject doc = new BasicDBObject("title", "MongoDB")
.append("false/true", false)//boolean değer
.append("like", 100)//int değer
.append("url", "http://www.malik.masis.com/mongodb/")//string
.append("ondalik", 10.1);//ondalık sayı
coll.insert(doc);//en son kaydedilir.
System.out.println("Document inserted successfully");
} catch (Exception e) {
System.err.println("--------");
}  

  Çıktımız:

Resim-6

     Yazımızı burada sonlandırıyoruz. Daha sonra CRUD (ekleme, okuma, güncelleme, silme) örnekleri yapmaya düşünüyoruz. İyi çalışmalar.

    Kaynaklar



2 yorum:

  1. Merhaba mongodb bağlanırken hata alıyorum.
    connect failed
    couldn't connect to server 127.0.0.1:27017
    bunu nasıl düzeltebilirim?

    YanıtlaSil
  2. Merhaba Muaz,
    Bu yazıyı yazalı uzun zaman oldu, tekrar gözden geçirip sana yardımcı olmaya çalışacağım. Sen de hatayı hangi aşamada alıyorsun. Daha ayrıntılı yazabilirsen sevinirim.

    YanıtlaSil