MongoDB Nedir

0 3,433

MongoDB NoSql depolama konseptinin, yaygın kullanılan bir üyesidir. NoSql depolama yaklaşımı, geleneksel ilişkisel depolama konseptinin giderek büyüyen verilere cevap verememesine karşılık ortaya çıkmıştık. Bunun anlamı; RDBMS(ilişkisel veritabanı yönetim sistemi)’in iyi yönlerini aldı problemli yönlerine yeni çözümler getirdi demek değildir. Gittikçe büyüyen veriye; ekonomik, ölçeklenebilir, yüksek erişilebilirlikli ve performans öncelikli bir çözüm getirdi. Hayatta her şeyin bir bedelinin olduğu gibi, bu yaklaşımın bedeli, yani vazgeçtiği konu ise; Transaction oldu. RDBMS kullanan herkesin bildiği gibi, veritabanı işlemleri bir transaction içinde yapılır ve ilgili transaction’ın tüm işlemleri ya hep beraber başarılı olurlar ya da bir işlemde alınacak hata sebebi ile tüm işlemler iptal edilir ve veritabanı başlangıçtaki haline döner.

MongoDB transactiondan vazgeçip, performans, ölçeklenebilirlik, yüksek erişilebilirlik yaklaşımları üzerine geliştirilmiş, doküman temelli bir veri depolama sistemidir. Doküman temelliden kastettiğimiz, veriler birer doküman olarak saklanır. RDBMS’de veriler sütunlar halinde depolanır, MongoDB de ise doküman olarak. MongoDB’de kolonlar yoktur. Yani her hangi bir şema mevcut değildir. Sütunlar tablo içinde tutulur, dökümanlar ise koleksiyon içinde tutulur.

Bu genel bilgilendirme ile zihinlerimizde, mangodb’nin müspet ve menfi yönlerine dair bazı fikirler belirmiş olabilir. Bunları sıralarsak;

Şema Olmaması: Şema olmaması, koleksiyon içindeki dokümanların farklı alanlar tutmasının önünü açar.İçerisinde 30 milyon civarında kayıt olan bir tabloya yeni kolon açmanın yaklaşık 3 saat sürüyor olması, dinamik şemanın büyük verilerde önemli olduğu gösterir.

Yüksek Performans: Özellikle yazma olmak üzere okumada da yüksek performans sağlar. Bu performansın en önemli özelliği, koleksiyonlarda RDBMS tablolarında olduğu gibi ilişkinin olmaması. Join bulunmaması.

Ölçeklenebilirlik: MongoDB ile birden çok makinada veriler tutulabilir. Bu sayede sıradan makinalardan oluşturulacak bir küme üzerinde, performanslı, ekonomik veri depolama yapabiliriz.
Replicaset oluşturarak, bir makinanın cevap verememesi durumunda otomatik olarak diğer makina üzerinden işlemlerimize devam ederiz. Yeni makina eklediğimiz de, performans lineer olarak artış gösterir. Aynı durum RDBMS ler için geçerli değildir.

Transaction Olmaması: Kritik işlemler açısından MongoDB uygun olmaz. Transaction olmaması veri tutarsızlığına sebebiyet verebilir. Bu durum kritik veriler için istenmez.Buna karşın MongoDB, tek bir dokuman için tutarlılık açısından garanti verir. Eğer siz tüm kritik verileri bir doküman olarak tutabilirseniz, MongoDB’yi kullanabilirsiniz.

Bu maddeleri daha da çoğaltmak mümkündür.

Peki MongoDB’yi kimler, niçin kullanmakta. Bu linke göz atabilirsiniz https://docs.mongodb.com/ecosystem/use-cases/ .

1* Makinalar tarafında üretilen veriler: Uygulama logları, sensör verileri vb.
2* Finansal veriler: Para birimi kurları, hisse seneti gibi sürekli son verinin alındığı durumlar.
3* Ürün Katalogları: online satış yapan sitelerin ürünlerinin sayfada gösterilen şekliyle veritabanına kayıt edilmesi için.

Daha fazla yazabileceğimiz bir çok kullanım alanı mevcuttur. Tüm bu alanların ortak özellikleri;

*Büyük veri olması
*Veri alım hızının çok yüksek olması
*Yüksek yazma ve okuma hızı gereksinimi
*Şemasız ve Joinsiz veriler(Ürün katalogu)

Bu kadar giriş bilgisinden sonra MongoDB kurulumuna bakabiliriz.

Kurulum:

Ben OS X kurulumunu yaptım ve onun adımlarını yazacağım. Tüm işletim sistemleri ile ilgili kurulum bilgilerini aşağıdaki linkte bulabilirsiniz.
https://docs.mongodb.com/manual/administration/install-community/

1* MongoDb 3.4.1 versiyonunu indirelim.

https://www.mongodb.com/download-center?jmp=docs&_ga=1.64733288.658525642.1484256913#community

2* İndirdiğimiz dosyayı, istediğimiz bir klasöre taşıyıp açalım.

Açmak için: tar -zxvf mongodb-osx-x86_64-3.4.1.tgz

3* Root seviyenin altında data isimli ve data altında db isimli klasörleri oluşturalım ve bu klasörlere hak verelim.

mkdir -p /data/db

4* /bin klasörüne gidelim.

./mongod ile start edelim.

Artık mongoDb’miz localhost:27017 üzerinden çalışmaya başlamıştır.

5* Mongo sheel uygulamasını çalıştırmak için:

./mongo komutunu çalıştırırız.

Çalışan bir veritabanımız mevcut. Şimdi MongoDB’nin temeli olan doküman’ı anlamaya çalışalım.

Doküman Yapısı:
MongoDB’nin verileri doküman şeklinde depoladığını belirtmiştik. Doküman key-value çiftlerinden oluşan bir veri yapısıdır (JSON modeli). Doküman başka dokümanları veya dizileri de içerecek şekilde kompleks olabilir.

Basit bir doküman örneği aşağıdaki gibidir.

name,lastname,club ve twitter dokümanın key değerlerini oluşturur. Karşılarında da “:” ile ayrılmış olarak value bulunur. Bir Key,Value çiftine field denir. Fieldlar birbirinden “,” ile ayrılır. MongoDB hem type-sensitive hem de case-sensitividir.

Aşağıdaki örnek de fieldlar veri tiplerinden dolayı farklıdır.

Aşağıdaki örnek de fieldlar key değerinin büyük küçük harflerde olmasından dolayı farklıdır.

Doküman içerisinde bir başka doküman tutabiliriz. Bu yaklaşım Embedded Document olarak adlandırılır ve denormalized veri modelidir.

Dokuman içerisinde bir dizi de tutabiliriz.

MongoDB’de her dokümanın bir tekil id değeri olmak zorundadır. Eğer bu değer doküman ile verilmez ise, MongoDB kendisi bu değeri dokümana ekler.

İnşallah faydalı bir yazı olmuştur. MongoDB ile alakalı başka yazılarda görüşmek üzere.

İyi Çalışmalar

Email adresiniz yayınlanmayacaktır.