NoSQL ve MongoDB Nedir? Nasıl Kurulur?

NoSQL Nedir?

NoSQL (Not Only Sql) ilişkisel veritabanlarına tepki olarak 😀 ortaya çıkmıştır. 1998 yılında Carlo Strozzi tarafından ortaya atılan bir kavram olup, boyutu her gün artan verinin, çok fazla trafiğe sahip sistemlerde daha hızlı okuma ve yazma ihtiyacını karşılamak için geliştirilmiştir.

Yatay olarak ölçeklenen NoSQL sistemlerini İlişkisel Veritabanı Sistemlerinden ayıran temel fakları şu şekildedir;

  • İlişkisel Veritabanları transaction bazlıdır ve ACID kuralları geçerlidir. Pek Çok NoSQL sisteminde transaction yoktur.
  • Klasik SQL sorgulama dili kullanılmaz.
  • NoSQL sistemlerde primary key bulunmak zorundadır ve bu primary keyler üzerinden veriye ulaşılır. İlişkisel Veritabanlarında PK bulunmak zorunda değildir.
  • NoSQL sistemler Tablo ve sütunlara bağımlı değildir. RBDMS sistemlerde Veri tablo ve sütunlarda tutulur.

Bir çok NoSQL veritabanı sistemi bulunur. MongoDB’de bunlardan bir tanesidir.

MongoDB nedir?

MongoDb geliştirme ve ölçekleme kolaylığına odaklanmış, dünyanın en çok tercih edilen büyük veri tabanı ve NoSql çözümü olan, dinamik şemalı ve JSON ile sorgulama yapılan doküman tabanlı bir veritabanı sistemidir.

2007’de 10Gen firması tarafından açık kaynaklı bir uygulama platformu olarak geliştirildi fakat bu platformun yeterli ilgiyi görmemesi dolayısıyla, 2009 yılında uygulama tarafını kaldırıp veritabanını özgürleştirerek hızlı bir şekilde popülerlik kazanmaya başladılar. 2013 yılında 10Gen ismini ingilize “Humongous” (Çok geniş) kelimesinden türeterek MongoDB Inc. olarak değiştirdiler.

MongoDB, bir çok global firma tarafından farklı amaçlarla kullanılmaktadır. Kullananlara göz atacak olursak Cisco, Facebook, Yandex, EA Games: FIFA, Linkedin, Verizon, Adobe, eBay, Foursquare vb…

Şu adresten değişik platformlar ve değişik sürümlerini indirmek mümkün.

Özellikleri

  • MongoDB de tutulan Büyük verileri işlemek için Map/Reduce desteği sağlamaktadır. Bu sayede yüklü miktardaki datayı işlemek kolay hale gelmektedir.
  • Replikasyon ve Yüksek erişilebilirlik çözümü sunmaktadır.
  • Otomatik failover mekanizması vardır.
  • Herhangi bir alanı indeksleyebilme
  • Dosya sistemi olarak kullanarak

Terminoloji

RDBMS lerde kullanılan terirlerle MongoDB terimlerinin karşılığı aşağıdaki tabloda görebilirsiniz.

SQL MongoDB
Database Database
Table collection
row document
column field
index index
Primary Key Primary key

Kurulum

MongoDB’nin Windows, Mac ve Unix sistemler üzerine kurulumu yapılabilmektedir. Ben CentOS 7 üzerine MongoDB 3.2‘nin kurulumundan bahsedeceğim.

MongoDB nin yum deposunu kullanarak kurulumunu yapacağım, kurulum işleminin yum ile yapılması herhangi bir paket kurulumundan farksızdır. Ancak öncesinde MongDB’ye ait reponun eklenmesi gerekir. Bunun için de /etc/yum.repos.d/mongodb-org-3.2.repo dosyası herhangi bir text editor(ben nano kullanıyorum) ile açıyoruz ve içerik olarak şunu kaydediyoruz;

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

dosyayı kaydedip kapattıktan sonra terminal üzerinden aşağıdaki kod ile MongoDB’nin kurulumunu yapıyoruz.

yum install -y mongodb-org

SELinux etkin ise, MongoDB servisine 27017 portuna erişebilmesi için;

semanage port -a -t mongodb_port_t -p tcp 27017

Bu ayarları yaptıktan sonra MongoDB’nin servisini restart ediyoruz ve bu servisi her açılışta otomatik olarak başlatmak için aşağıdaki kod bloğunu yazıyoruz.

service mongod start
chkconfig mongod on

MongoDB’nin Dosya ve Dizinlerine şu şekilde erişebiliriz;

  • Ayar dosyası;
    /etc/mongod.conf
  • Log Dosyası
    /var/log/mongodb/mongod.log
  • Veriler
    /var/lib/mongodb

Son olarak MongoDB ye bağlanmak için terminal üzerinden

mongo

yazıp, MongoDB’yi başlatıyoruz.

Bugün NoSQL ve MongoDB nedir, Özellikleri nelerdir ve kurulumu nasıl yapılırdan bahsettim.
İlerleyen zamanlarda Temel Mongo Komutları, MongoDB Yönetimi, Replikasyon ve Sharding terimlerine de değineceğim.

Faydalı olması dileğiyle.

Leave a Reply