MongoDB. Doğan Aydın. Eylül, 2011

Benzer belgeler
Büyük, Dağıtık, Veri Yoğunluklu Uygulamalarda Programlama Paradigmaları

Veritabanı. Ders 2 VERİTABANI

Semantik Ağ ve Üst Veri Sistemleri İçin Yeni Nesil Veri Tabanı Yönetim Modeli: NoSQL. R. Orçun Madran Atılım Üniversitesi.

1 Temel Kavramlar. Veritabanı 1

Kılavuz içerisinde sisteme ait tüm özellikler anlatılmakta olup, yapacağınız konfigürasyonlar satın aldığınız lisans ile sınırlıdır.

DOSYA NEDİR? Verilerin HDD de saklanması. Verilerin HDD de saklanması DOSYA SİSTEMİ NEDİR?

Bilgisayar Uygulamaları. MySql

Kurulum Dökümanı. v

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

VERİ TABANI YÖNETİM SİSTEMLERİ

Windows Server 2012 Kurulum Hazırlıkları. Windows Server 2012 Kurulum Seçenekleri. Windows Server 2012 Kurulum Adımları. Full GUI Kurulum Seçeneği

1 Milyon Kullanıcıya Nasıl Hizmet Veriyoruz? CloudLMS Teknik Alt Yapı ve Mimarimiz

PHP ile İnternet Programlama

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

Veri Tabanı-I 5.Hafta

İnternet Programcılığı

Dosya, disk üzerinde depolanmış verilerin bütününe verilen isimdir. İşletim sistemi genel olarak iki çeşit dosya içerir.

Kurulum Dökümanı * v * Bu döküman FortiLogger versiyonu için hazırlanmıştır.

Öğr. Gör. Serkan AKSU 1

İşletim Sistemlerine Giriş

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

NoSql ve MongoDB. Saygın Topatan

EndNote Web Hızlı Başvuru kartı

1 Temel Kavramlar. Veritabanı 1

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

VERİ TABANI UYGULAMALARI

PAPERWORK TEKNİK MİMARİ

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Veritabanı Yönetim Sistemleri I HAFTA 1

İÇERİK YÖNETİM SİSTEMİ (CMS) Bir web sitesi yayınlamak için yapılması gerekenler:

=A1+A2-A3, =A1*A2/A3,

1.PROGRAMLAMAYA GİRİŞ

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Bilgisayar Sistemlerine Genel Bakış

Veritabanı Uygulamaları Tasarımı

Veri Tabanı Hafta Dersi

NFS (Network File System) & NIS (Network Information System) H. Coşkun Gündüz cgunduz@cs.bilgi.edu.tr

DNS Nedir? HİKMET TÜYSÜZ

Hızlı Başlangıç Kılavuzu

Büyük Veri Analitiği (Big Data Analytics)

BOOTLOADER MANUAL DOCUMENT

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

Üst Düzey Programlama

Kılavuz içerisinde TalksPBX kurulumu anlatılmakta olup, yapacağınız konfigürasyonlar satın aldığınız lisans ile sınırlıdır.

Virtualization. VMware vcenter Server Yapılandırılması

Windows Live ID ve parolanızı giriniz.

Herhangi bir tablonun tekrarlı veriler içerdiği duruma birinci normal form denir. Birinci normal formu Aşağıdaki tablo ile ele alacağız.

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

NB Macro Kullanımı Hakkında Genel Bilgiler

UZAKTAN EĞİTİM MERKEZİ

HASTANE OTOMASYONU VERİ TABANI YÖNETİM SİSTEMLERİ TEMEL VERİTABANI KAVRAMLARI

Bilecik Üniversitesi Mühendislik Fakültesi Moodle Uzaktan Öğretim Sistemi

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

İşletim Sistemlerine Giriş

FABREKA YAZILIM ELEKTRONİK DANIŞMANLIK TİC. LTD. ŞTİ.

Bilgi ve Olay Yönetim Sistemi

Logsign Hotspot. Güvenli, izlenebilir, hızlı ve. bağlantısı için ihtiyacınız olan herşey Logsign Hotspot da!

FABREKA YAZILIM ELEKTRONİK DANIŞMANLIK TİC. LTD. ŞTİ.

Veri Tabanı-I 1.Hafta

Hızlı Kurulum ve Yapılandırma Kılavuzu

LİNUX İŞLETİM SİSTEMİNİN KÖPRÜ MODUNDA ÇALIŞTIRILMASI VE GÜVENLİK DUVARI İŞLEMLERİ

Veri Tabanı Yönetim Sistemleri Bölüm - 02

Metin Editörleri YRD. DOÇ. DR. ENGİN CEMAL MENGÜÇ. ALINTI:

WAMP SERVER KURULUMU

Compiere Açık kodlu ERP + CRM yazılımı. Hüseyin Ergün Önsel Armağan Serkan Demir

Arama motoru: kuş gribinin etkileri

VERİ TABANI ve YÖNETİMİ

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

10 yıllık sektör deneyimimiz ve yazılım teknolojileri alanında uzmanlaşmış eğitmen kadromuzla, size, ekibinize ve yazılım kültürünüze değer katacak

GOLDMESAJ SMS API DÖKÜMANI

Php Programlama Dili MySQL Uygulamaları

Ders Kodu Yarıyıl T+U Saat Kredi AKTS. Programlama Dilleri

2

Örnek bir kullanım ve bilgisayar ağlarını oluşturan bileşenlerin özeti

EMC Forum Yazılım Temelli Veri Depolama Moro Hekim Sistem Mühendisi

BLGM 354 DENEY 1 * GİRİŞ

VMware 4.0 vcenter Server Kurulumu

ProFTPD FTP Sunucusu. Devrim GÜNDÜZ. TR.NET Sistem Destek Uzmanı.

Bölüm 10: PHP ile Veritabanı Uygulamaları

VERİTABANI ORGANİZASYONU

Windows 2000 veya XP kurarken dosya sistemini seçmeniz gerekir. Ya FAT32 dosya sistemini kullanırsınız ya da NTFS.

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

SUDO'da Bu Ay... Ezgi DOĞANAY a ayrıca teşekkürlerimizi iletiyoruz. Zamanınızın hakimiyetini sudoyla özgürleştirin!

B-Tree Dosya Sistemi (BTRFS)

Tavsiye Edilen Önhazırlık Veritabanı kavramınıöğrenmek. Hedefler Shrink yapılmasının amacının kavranması. Shrink yapılma yöntemlerinin öğrenilmesi.

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

innovation inspired by technology İnnova deneyimiyle SharePoint 2016 ya geçin

SQL SERVER VERİTABANINI EKLEME-ÇIKARMA ve YEDEKLEME-GERİ YÜKLEME

SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir.

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

PHP 1. Hafta 2.Sunum

Aktarımı Çalıştırmak/Geri Almak 146 Alan Seçenekleri 148 Veri Tabanı Şeması 150 Veri Tabanı ile İlgili Bazı Rake Görevleri 162 Modeller 164

License. Veri Tabanı Sistemleri. Konular büyük miktarda verinin etkin biçimde tutulması ve işlenmesi. Problem Kayıt Dosyaları

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

C# ile e-posta Göndermek

Yandex mail ve disk kullanım rehberi

Transkript:

MongoDB Doğan Aydın Eylül, 2011

İçindekiler 1 Giriş.................................................... 2 2 Geleneksel Veri Tabanları Ve MongoDB................................. 3 3 Doküman Odaklı............................................. 4 4 İndexleme................................................ 5 5 Replikasyon Ve Yüksek Kullanılabilirlik.................................. 6 6 Otomatik Bölümleme........................................... 7 7 Sorgulama................................................ 8 8 Map/Reduce............................................... 9 9 GridFS................................................... 10 10 Notlar................................................... 11 11 Kaynak.................................................. 12 1

1 Giriş MongoDB, ölçeklenebilir, yüksek performanslı, alışık olduğumuz veri tabanlarında kullanılan şemalar yerine doküman odaklı bir veri tabanıdır. C++ ile yazılmıştır. Bazı özelliklerini sıralamamız gerekirse: 1. Doküman odaklı. 2. İndexleme. 3. Replikasyon ve yüksek kullanılabilirlik. 4. Otomatik bölümleme. 5. Sorgulama. 6. Map/reduce 7. GridFS 2

2 Geleneksel Veri Tabanları Ve MongoDB Geleneksel veri tabanları dediğimiz şey aslında sql kullanan veri tabanlarıdır. Sorgulama dili olarak sql kullanırlar ve bazı yerlerde bizi kullanmaya zorladıkları şema yapıları nedeniyle çok kısıtlayıcılardır. Blog, forum, içerik yönetim sistemleri gibi uygulamalarda bu kısıtlamalar çok önemli olmasa da bizi kendilerine uymak zorunda bırakırlar. Tek zorlukları da şemaları değildir. Eğer büyük ölçekli bir proje geliştiriyorsanız ölçeklenmesi, replikasyonu ve bölümlemesi epey zordur. Ama gelişen teknoloji bize bu konuda alternatifler sunmaya devam ediyor. Son zamanlarda adları çok sık duyulmaya başlayan bu yeni nesil veri tabanlarının genel adları NoSQL veri tabanlarıdır. NoSQL veri tabanları adlarından da anlaşılacağı gibi sql dilini kullanmazlar. Her birinin kendine göre sorgulama yöntemleri vardır. MongoDB bu veri tabanları arasında önde gelenlerdendir. Json benzeri bir veri saklama yöntemi kullanır. Replikasyon ve bölümleme işlemleri bir komut kadar kolaydır. Yazının ilerleyen bölümlerinde de geleneksel veri tabanları denildiğinde mysql,postgresql,sqlite gibi veri tabanları gelsin. 3

3 Doküman Odaklı MySQL ve diğer geleneksel veri tabanlarında kullanılan kısıtlayıcı şemalar yerine JSON benzeri bir doküman stilini kullanır. Bu sayede bizi kısıtlamaz ve veri tabanımızın daha hızlı ve daha ölçeklenebilir olmasını sağlar. MongoDB de veri tabanları doküman, tablolar da koleksiyon olarak geçer. Örnek olarak isim, soyisim, telefon bilgilerini tutan bir mysql tablosu ve mongodb koleksiyonunu kullanan bir uygulama yapalım. Hazırladığım mysql tablosu: Şekil 1: MongoDB koleksiyonu oluşturmak için bir komut yoktur. Siz olmayan bir koleksiyonu veri eklerseniz o koleksiyon veri ekleme anında oluşturulur. Yukarıdaki aynı şemayı oluşturmak için arkadas_listesi isimli koleksiyonu ilk veriyi eklemeniz yeterlidir. Şekil 2: Gördüğünüz gibi verilerimiz eklediğimiz zaman koleksiyon veya mysql ismiyle tablomuz oluştu. Hatta eklemediğimiz halde _id alanı eklendi. Bu alan varsayılan olarak tüm koleksiyonlara eklenir ve tektir (unique). MongoDB de yazdığım kod çoğu programcıya tanıdık gelmiştir. Çünkü yazının başından beri dediğim gibi mongodb json benzeri bir yapı kullanır. Tam olarak adı BSON(Binary JSON) dur. 4

4 İndexleme Geleneksel veri tabanlarından çok farklı mongodb de geleneksel veri tabanlarında olduğu gibi indexleme özelliğini kullanabilirsiniz. MongoDB de yeni olan ise Geospatial Indexing dir. Bu özellik sayesinde yer yüzü koordinatları gibi 2 boyutlu verilerin tutulduğu alanları indexleyebiliriz. Şekil 3: 5

5 Replikasyon Ve Yüksek Kullanılabilirlik Replikasyon özelliği sayesinde veri tabanımızın kopyalarını ağ üzerinden erişilebilir duruma getirebiliriz. Üstelik bu özelliği diğer veri tabanlarından çok daha kolay uygulayabiliriz. Mongodb tek komut ile replikasyon oluşturmanıza yardımcı olur. Replikasyon için iki tane server gereklidir. Deneme amaçlı olarak sanal sunucu kurabilirsiniz. Master yani ana sunucumuz için mongodb yi fazladan bir parametre ile çalıştırmak yeterlidir. Aynı şekilde slave yani köle veya ikincil sunucuları eklemekte aynı şekilde tek parametre ile yapılabilir. 1 Master Sunucu : / srv /mongodb/ bin /mongodb dbpath / srv / data master 2 Slave Sunucu : / srv /mongodb/ bin /mongodb dbpath / srv / data slave source localhost :27017 6

6 Otomatik Bölümleme Eğer elimizdeki veriler çok fazlaysa bunları saklamak için tek bir sunucu yetmeyecektir. Yapılması gereken sunucuya yeni hard disk eklemek veya yeni ve büyük kapasiteli bir sunucu almaktır. Veya çok daha ucuz olan veri tabanlarının bize sağladığı bir yöntemi kullanmaktır. Bölümleme özelliği olan veri tabanlarında ağımıza küçük ve ucuz bilgisayarlar ekleyerek verilerimizi bunlara paylaştırabiliriz. MongoDB nin bize sağladığı avantaj ise bu işlemi bir kaç satır komutla çok kolay halledebilmemizdir. Bu konu hakkında detaylı bir video vermek istiyorum. https://www.youtube.com/embed/w-wihpoebr4 7

7 Sorgulama MongoDB de sorgulama işlemleri geleneksel veri tabanlarında kullanılar sql dili yerine json kullanılarak yapılır. Bazı sql komutlarını mongodb de kullanmak için çevirirsek: Şekil 4: 8

8 Map/Reduce Map/reduce işlemi çok çok büyük verileri kolaylıkla işlemek için geliştirilmiş bir yöntemdir. Günümüzde neredeyse bütün büyük şirketler tarafından kullanılmakta ve geliştirilmektedir. Sql tarafından bakacak olursak group komutu gibi çalışır. Diyelim ki elimizde bu şekilde bir kayıtlardan oluşan bir koleksiyon olsun. 1 { 2 isim : Ahmet, 3 begeni : 20, 4 text : Merhaba MongoDB! 5 } 6 7 Bu v e r i l e r üzerinde basit bir map/ reduce işlemi uygulayalım : 8 Map fonksiyonumuz : 9 m = function ( ) { 10 emit ( t h i s. isim, { toplam : 1, begeni : t h i s. begeni } ) ; 11 } 12 13 Reduce fonksiyonumuz : 14 r = function ( key, values ) { 15 var result = { toplam : 0, begeni : 0 } ; 16 values. foreach ( function ( value ) { 17 result. toplam += value. toplam ; 18 r e s u l t. begeni += value. begeni ; 19 } ) ; 20 return result ; 21 } 22 23 Map/ Reduce işlemi : 24 res = db. yorum. mapreduce (m, r, { query : { isim : Ahmet }, out : c i k t i m i z } ) ; Map/Reduce işlemini uyguladıktan sonra res adında map/reduce işleminin kayıtlarını tutan bir geçici koleksiyon oluşur. Bu koleksiyon üzerinde sorgulama işlemlerimizi yapabiliriz: 1 res. find ( { } ) ; 2 { _id : Ahmet, value : { toplam : 2, begeni : 64 } } Yukarıda görüldüği gibi Ahmet isimli kullanıcının toplam 2 yorumundan 64 begenisi varmış. 9

9 GridFS MongoDB gridfs ile birlikte bize dağıtık bir dosya sistemi sunar. GridFS ile birlikte büyük/küçük dosyaları tek bir bilgisayarda tutmak yerine bunları küçük parçalara böler. Eğer veri tabanı bölümlemesi yapmışsak bu küçük parçaları tüm veri tabanı sunucularımıza dağıtır. Bölümleme yapmamışsak sadece kendi sunucusunda küçük parçalar halinde saklar. Diyelim ki elimizde 10gb ve 20gb arası boyutlarda video dosyalarımız var ve bu dosyalarda arama yapmamız lazım. En başta bu aramayı gerçekleştirebilmek için tüm dosyanın belleğe yüklenmesi lazım. Yani en az 10gb belleğimiz olmalı. GridFS dosyaları küçük parçalar halinde sakladığı gibi sorgulamayı da bu küçük parçalar üzerinde yapar ve bu küçük parçaların en büyüğü 4mb ile sınırlıdır. Ayrıca GridFS işletim sisteminin sınırlamalarından bağımsız çalışır. Mesela bir dizinde işletim sisteminin normalde izin vermediği kadar dosya saklayabilirsiniz ve işletim sisteminin izin vermediği (uzunluk veya kullanılan karakterler) isimleri verebilirsiniz. GridFS eklenen her dosya hakkında bazı bilgiler tutar. Bunlardan bazıları id,dosya ismi,yükleme tarihi ve md5 bilgileridir. 10

10 Notlar Bilgi almak istediğiniz her konuda dogan1aydin@gmail.com adresinden ve ubuntu-tr forumlarından bana ulaşabilirsiniz. Bu yazıda kullandığım MongoDB sürümü 1.9.2-pre dir. Daha eski veya daha yeni sürümlerde kullandığım fonksiyonlar değişmiş ve çalışmıyor olabilir. MongoDB GNU AGPL v3.0 ile lisanslanmıştır. mongodb.org tarafından desteklenen sürücüler yani kütüphaneler ise Apache License v2.0 ile lisanslanmıştır. 11

11 Kaynak MongoDB : http://www.mongodb.org/ 12