Mongodb Kurulumu ve Basit Örnekler

Herkese merhaba. Bugün son yıllarda popülerliği yükselen bir ivmeyle artan MongoDB üzerine yazacağım. Bu yazımın amacı daha önce hiçbir şekilde veritabanı ile ilgilenmemiş, bu alana ilgi duyan ama bazı acabaları olan bir kişinin başlangıçta kafasında ki acabaları giderebilmektir. Yazımın sonunda veritabanları, nosql, mongoDb kelimelerinin anlamlarını ve Mongodb de temel işlemlerin yapılmasını öğrenmiş olmanızı ümit ediyorum.

Veritabanı nedir?

Bilgisayar ortamına aktarılan bilgilerin, programlar tarafından işlenebilmesini sağlamak amacı ile derlenmiş ve formüle edilmiş şekline veri denir. Bilgiler çok uzun yıllardır kaydedilerek saklanmaktadır. Bu başlangıçta kağıt kalem ile yapılırken modern hayatın başlaması ve bilgisayarın hayatımızdaki yerinin artması ile anolog bilgiler dijital verilere dönüştürülerek elektronik ortamda saklanmaya başlamıştır. Bilgilerin işlenip veri haline getirilmesi ve dijital ortama aktarılması ile ölçeklenebilir, istatistiği tutulabilir ve çok büyük veriler üzerinde çalışılabilir hale gelmiştir. Dijital ortamda veriler arttıkca onları saklamak ve üzerinde işlemler yapmak için veritabanı ihtiyaçları orta çıkmıştır. Son 10 yıllarda en sık kullanılan veritabanı yöntemi SQL (İlişkili veritabanı sistemleri)veri tabanları iken (MSSQL, MYSQL, ORACLE vb.); veri miktarlarının inanılmaz boyutlara ulaşması ve katlanarak artması  son yıllarda nonSql veritabanlarının popülerliği artmaktadır. İki sistem arasında ki en büyük fark ilişkisel veritabanı sistemlerinde veriler tablo ve sütünlar ile ilişkili bir şekilde tutulurken NonSQL de json bir yapıda tutulurlar

NonSQL veritabanlarının avantajlarına değinmek gerekirse çok büyük boyutlara ulaşan ve katlanarak büyüyen veriler için en büyük ihtiyaç haline gelen performan ve depolama alanı ihtiyacı gösterilebilir. Okuma yazma işlemleri NonSQL sistemlerde ilişkisel veritabanlarına göre çok daha hızlı olmaktadır. Ayrıca NonSQL  sistemler yatay olarak genişletilebilirler. Yani binlerce sunucu bir arada çalıştırılarak inanılmaz derecedeki veriler üzerinde işlemler yapabilirler. Günümüzde BigData (Büyük Veri) alanında yapılan çalışmalarda NonSQL sistemler yoğun olarak kullanılmaktadır.

                      MongoDB nedir?

MongoDB 2009 yılında geliştirilmiş açık kaynak kodlu NonSQL veritabanıdır. Günümüzde Couchbase, DynamoDB, Cassandra gibi birçok NonSQL veritabanı bulunmaktadır.MongoDB de her kayıt json formatın şeklinde saklanan bir döküman olarak ifade edilir. İlişkisel veritabanları ile ilgilenenlerin bildiği table yapısını burada collection, row yapısını document, column yapısını ise field alır. MongoDB günümüzde aktif olarak kullanılan pek çok programlama dili için driver desteği bulundurması bakımından bugün NonSQL sistemler içinde çok tercih edilenlerden biridir.

MongoDB Kurulumu…

MongoDB nin kurulumu sql server kurulumları gibi karmaşık değil. Buraya tıklayarak gideceğiniz sayfadan grafiksel bir arayüz kullanmanız için MongoDBCompass ı indirip kurulumu yapabilirsiniz. Kurulum esnasında yönergeleri izleyerek kolayca kurulum yapabilirsiniz.

MongoDB Temel İşlemler…

MongoDB yi kurduktan sonra başlat menüsünden MongoDB Compass a tıkladığınızda grafik arayüz açılacaktır. Açılan ekranda karşınızda sizden bağlantı bilgileri isteyen bir ekran olacaktır. Localhost üzerine kurduğunuz mongoDB server a bağlanmak için mongodb://localhost:27017 yazmanız ve Connect e tıklamanız yeterli olacaktır.

Bu sayfa üzerinden tablo oluşturmayı, veritabanlarını listelemeyi, collectionları görmeyi, veri eklemeyi, silmeyi, güncellemeyi ve listelemeyi yapabilirsiniz. Veri yapısını anlamanız açısından bu kısım önemli. Ama bu işlemleri komutlar ile yapacağız. Bunun için Buraya tıklayarak gideceğiniz sayfadan MongoDB Shell i indirip kurmanız gerekmektedir. MongoDB Shell i kurup açtığınızda aşağıdaki gibi bir ekran göreceksiniz.

Burada üstte yazdığımız bağlantı stringini yazabilir standalone server için mongodb://localhost:27017 veya

mongodb://[username:password@]host1[:port1][,…hostN[:portN]][/[defaultauthdb][?options]] şeklinde stringinizi oluşturabilir veya yine standalone serverda sadece Enter a basabilirsiniz. Bu işlemden sonra komutlarımızı yazmaya hazır hale gelecektir. İlk yapacağımız işlem veritabanlarını listelemek olacak. Bunu show databases komutu ile yapacağız. Bu komut bize serverda bağlandığımız veritabanı üzerinde bulunan veritabanlşarını listeleyecektir.

Bu listede admin, config ve local sistem veritabanlarıdır. MongoDB üzerinde veritabanı oluşturma kısmında bilmemiz gereken en önemli şey veri girişi yapılmadan veritabanı oluşturulmamaktadır. Daha açıklayıcı olması açısından şöyle açıklayabiliriz use MongoDB de kullanılacak veritabanı seçiminde kullanılmaktadır. Benim sunucumda admin, config, local ve mydatabase olmak üzere 4 adet veritabanı var. Ben olmayan bir veritabanı kullanmasını söyleyip ardından bu olmayan veritabanına verigirişi yapmak istersem…. Önce use trqarm diyerek trqarm isminde olmayan bir veritabanını kullanmasını istiyorum. Komutu girdiğimde switched to db trqarm yazısı çıkıyor ve olmayan veritabanı oluşturulup konsolda trqarm yazısı çıkıp kullanıma hazır hale geliyor. Ama tekrar show databases komutunu verdiğimde listede bu veritabanını göremiyorum. İşte bunun nedeni içinde bir Collection bulunmamasıdır.

Üstteki resimdede gördüğünüz gibi use trqarm dediğimde trqarm a geçildi diyor ama veritabanlarını listelediğimde trqarm görünmüyor. Bu kısımda use trqarm komutundan sonra db.createCollection(‘musteriler’) komutunu verirsem trqarm veritabanında musteriler isminde bir Collection oluşturmuş olurum ve artık trqarm veritabanım görünür hale gelir. show collections komutu ile veritabanı içinde bulunan Collection’ları listeleyebilirim.

MongoDB üzerinden veritabanı silmek için use veritabanı dedikten sonra db.dropDatabase() yazmanız yeterli olacaktır. Veritabanı içinde oluşturduğumuz Collection’u silmek istersek db.musteriler.drop() yazmamız yeterli olacaktır. Oluşturduğumuz veritabanı içinde bulunan musteriler isimli Collection’a veri girişi yapmak için db.musteriler.insert({‘name’: ‘Emrah’, ‘adres’: ‘Düzce’, ‘yas’: ’28’}) şeklinde komutumuzu yazmamız gerekmektedir. MongoDB her kayıt için emsalsiz _id ler oluşturur. Bu _id ler oldukça uzun olur. Bunların yerine istersek kendimiz _id girerek bu emsalsiz uzun sayılar yerine kendi _id lerimizi oluşturabiliriz. Aşağıda her iki şekildedeoluşturulmuş veri girişleri gösterilmiştir. Collection’lar içindeki verileri listelemek için find() ve find().pretty() komutları kullanılmaktadır.

Gördüğünüz gibi veritabanına emrah bilgisi _id değeri olmadan db.musteriler.insert({‘name’: ‘Emrah’, ‘adres’: ‘Düzce’, ‘yas’: ’28’})  Göktuğ değeri ise _id değeri girilerek  db.musteriler.insert({‘_id’: ‘1’,’name’: ‘Göktuğ’, ‘adres’: ‘Düzce’, ‘yas’: ’21’}) kaydedildiğinden birinde uzun bir _id değeri varken diğerinde sadece benim girdiğim 1 değeri görünmektedir.

Collection içindeki veriyi güncellemek için db.musteriler.update({“_id”: ObjectId(“615786b9508641252f195efe”)}, {$set: {“name”: “Zeynep”}}) komutu kullanılmaktadır. Bu ObjectId(“615786b9508641252f195efe”) _id de bulunan Emrah bilgisini Zeynep olarak değiştirecektir.

Collection üzerinden ver silmek için db.musteriler.remove({“_id”: ObjectId(“615786b9508641252f195efe”)}) komutu kullanılmaktadır. Bu _id ye sahip olan Zeynep verisi silinecektir.

Bu konumuzda hiçbir bilgisi olmayan birinin veritabanları hakkında bilgi sahibi olması sql ile nonsql arasındaki temel farkları anlaması ve nonSQL MongoDB ile temel işlemleri yapabilmesi konularını anlattım. Arzu edenler sitemiz üzerinden MongoDB nin Python ile kullanılması hakkında bilgiler de edinebilirler.