MongoDB. NoSQL Database

Benzer belgeler
NoSql ve MongoDB. Saygın Topatan

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

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

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

NoSQL. SQL ve Daha Fazlası (Not Only SQL) Hazırlayan: Ahmet Cevahir ÇINAR

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.

MongoDB ve Diğer Veritabanlarında Sharding

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

İnternet Programcılığı

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

PostgreSQL Veritabanı Sunucusu Devrim GÜNDÜZ.

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

VERİTABANI VERİTABANIN AVANTAJLARI ÖZET

MOBİL UYGULAMA GELİŞTİRME

Veri Tabanı-I 1.Hafta

1-Veritabanı Yönetim Sistemleri /Tanım

1. MİCROSOFT SQL SERVER 2014'E GİRİŞ

LINQ Language Integrated Query Dille Bütünleştirilmiş Sorgu Bir Veri Tabanı Tablosundan Veri Gösterme

VERİ TABANI UYGULAMALARI

ADO.NET Entity. Framework. Temel Kavramlar

Tom PROBERT MapInfo Pro Global Üretim Müdürü. Büyük Veri ve (potansiyel) etkiler

16 Ekim 2010 Özgür Web Günleri Yeditepe Üniversitesi. Nosql Veritabanları

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.

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veritabanı Sistemleri

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

1 Temel Kavramlar. Veritabanı 1

PostgreSQL - Yeni dönemdeki yeri

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

1.PROGRAMLAMAYA GİRİŞ

Veritabanı Uygulamaları Tasarımı

UZAKTAN EĞİTİM MERKEZİ

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

Zope Uygulama Sunucusu

PostgreSQL ve JBoss ile Java Kurumsal Çözümler. Nicolai Tufar

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

VERİ TABANI ve YÖNETİMİ

2 Temel Kavramlar (Devam) Veritabanı 1

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Pursaklar İMKB Teknik ve Endüstri Meslek Lisesi

Advanced Oracle SQL Tuning

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

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

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

Swing ve JDBC ile Database Erişimi

Hybrid Software Veritabanı ve Sistem 7x24 Destek &Danışmanlık Hizmetleri Veritabanı ve Sistem 7x24 Destek & Danışmanlık Hizmetleri

VERİ TABANI YÖNETİM SİSTEMLERİ. Öğr. Gör. Selçuk Özkan

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

Bilgi Servisleri (IS)

SQL Server 2008 ile Tanışma"

YZM 3215 İleri Web Programlama

OBEE (Call Statistic Reporter)

Maliye Uzman Yardımcılığı Giriş Sınavı (Bilişim)-16 Mart 2014 B

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

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

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

HP Yazılım Zirvesi - İstanbul 20 May Wyndham Grand Levent Erdem Alaşehir / Finansbank Güvenlik Olay Korelasyonunda Büyük Veri Kullanımı

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

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

PHP 1. Hafta 1. Sunum

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

PostgreSQL ile NoSQL. Gereksinimlerinizi Karşılamak

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Üst Düzey Programlama

Maliye Uzman Yardımcılığı Giriş Sınavı (Bilişim) -16 Mart 2014 A

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Öğr. Gör. Serkan AKSU 1

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

Veritabanı Tasarımı. DML İşlemleri ve Görünümler

BIM 312 Database Management Systems. Veritabanı Kavramına Giriş

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

PostgreSQL - Yeni dönemdeki yeri

LINQ (Temel Kavramlar)

PAPERWORK TEKNİK MİMARİ

Başlık: Windows Sistem Yöneticisi Yardımcısı

LOGO İş Zekası çözümü ile kurumsal raporlama ve analizler. Cem Yılmaz Genel Müdür LOGOBI Yazılım

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

SEKTÖREL ÇÖZÜM GELİŞTİRME YÖNTEMLERİ

İş Zekası için Dört-Katmanlı Veri Modellemesi Gerçekleştirimi. Harun Gökçe EG Yazılım, TOBB ETÜ

IOT NEDİR? Bölüm 1. Internet of Things ekosistemi altında donanım, programlama, veri tabanı, veri analizi gibi alt yapılar yer almaktadır.

Veri Tabanı-I 1.Hafta

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

VERİTABANI ORGANİZASYONU

Veritabanı Sızma Testleri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

VERİ TABANI PROGRAMCILIĞI DALI

İLİŞKİSEL VERİTABANLARI

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

Veritabanı Tasarımı. Introduction to the Oracle Academy

PHP (II) Formlar. Dosya İşlemleri. 2002, Sanem SARIEL PHP Ders Notları 2 1. Formlar

Ortak Zamanlılık ve Veri Hareketi (Data Transaction)

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

SİSTEM İHTİYAÇLARI (Tiger Enterprise / Tiger 3 Enterprise)

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Transkript:

Şirketimizin en çok mücadele ettiği konu olan Big Data problemini çözmekte önemli bir araç olacağına inandığım NoSQL sistemler içerisinde en yaygın kullanılan MongoDB veritabanını sizler için inceleyip bir derleme meydana getirdim. MongoDB NoSQL Database Ferhat SARIKAYA / Veritabanı Yöneticisi

İçindekiler NoSQL Nedir?... 2 Neden NoSQL?... 2 MongoDB... 3 MongoDB ve SQL Server Karşılaştırmalı Performans Testleri... 4 MongoDB Yönetim Araçları... 9 MongoDB ve Business Intelligence... 10 MongoDB ve C#... 11 Ferhat SARIKAYA / Veritabanı Yöneticisi 1

NoSQL Nedir? NoSQL: Not Only SQL in kısaltmasıdır. İlişkisel veritabanlarına (RDBMS) bir alternatif olarak ortaya çıkmıştır. DDL ve DML işlemleri sırasında Klasik SQL dili kullanılmadığı için bu isimle anılmaya başlanmıştır. Google ve Amazon gibi devler yıllardır bu teknolojiyi kullanmaktadır. Google kendi tasarladığı Big Table, Amazon Dynamo ve Facebook ta Cassandra yı kullanmaktadır. İlişkisel veritabanı sistemlerinde temel mantık tekrarlanan verilerin önüne geçilmesidir, bu sebeple de tekrarlanacak veriler ayrı tablolarda tutulur ve sorgu esnasında joinlerle birleştirilirler, bu işleme Normaliazsyon da denmektedir, ileride değineceğimiz gibi Business Intelligence kısmında ise performans için joinler ortadan kaldırılır ve veriler tekrar halinde tutulur, buna da Denormalizasyon denir. Join sayısının ise üçten fazla olması performans kaybına yol açmaktadır ki kompleks yapılarda rahatlıkla bu sayı üçün üzerine çıkmaktadır. NoSQL sistemlerde ise veriler ilişkisel veritabanı modelinin aksine denormalizasyon halinde tutulurlar, böylece verilere ulaşmak daha hızlı ve daha kolaydır. Ayrıca insert, update, delete işlemleri dosyalarda yapılırken, select işlemi ram üzerine set edilmiş bilgilerden çekildiğinden oldukça hızlı sonuç döndürmektedir. Neden NoSQL? Neden sorusuna cevap verebilmek için İlişkisel Veritabanı (RDBMS) modelini incelemek gerekir. İlişkisel veritabanı modelinde verilerin işlenmesi transaction temellidir. Transactionların stabil çalışması ve veri bütünlüğünün korumak için ACID standartına sıkı sıkıya bağlıdır. ACID in açılımı şöyledir: Atomicity: Bir transaction sırasında bir işlemin başarısızlığı tüm işlemleri etkiler ve tümü başarısız sayılır. Consistency: Bir transaction, şema içerisinde tanımlanan foreign key, unique check gibi tüm kurallara uymak zorundadır, aksi halde başarısız kabul edilir. Isolaiton: Commit edilmemiş bir transaction içerisindeki işlemler yalnız transaction tarafından bilinir, commit edildikten sonra işlem herkese yansır. Durability: Commit edilen verinin veritabanına yazıldığından muhakkak emin olunmalıdır, commit edildikten sonra veri yok olmaz. Ayrıca İlişkisel veritabanı modelinde Propagation Constraint (PC) algoritmasını da kullanırlar. Bu algoritma temelde tanımlanan veri yapısını korur ve ilişkisel modelde tanımlanmış bir veri üzerinde anlamsız işlemler yapmanızı engeller. Örneğin Foreign Key olarak tanımlanmış ana tablodaki veriyi silmek istediğinizde eğer bu veriyle alakalı bir kayıt ilişkili olduğu tabloda mevcut ise silme işlemini gerçekleştirmenize müsaade edilmez, böylece veri bütünlüğü anlamlı bir şekilde korunmuş olur. NoSQL = No ACID demek doğru olur, elbette bazı istisnalar mevcut. Big Table, HBase, CouchDB her ne kadar NoSQL bir veritabanıysalar da bazı hizmetleri sayesinde ACID desteğini sağlamaktadır. Ferhat SARIKAYA / Veritabanı Yöneticisi 2

NoSQL sistemlerinin SQL-92 gibi bir standardı olmadığı için yukarda yazılanların genel özelliklerin dışında kendi aralarında farklılıklar göstermektedir. Her sistemin veri tutarlılığı ve erişimi ile ilgili farklı özellikleri ve yetenekleri bulunmaktadır. Fakat NoSQL sistemlerini genel olarak 3 grupta toplayabiliriz: Doküman (Document) Tabanlı: Bu sistemlerde bir kayıt doküman olarak isimlendirilir. Dokümanlar genelde JSON formatında tutulur. Bu dokümanların içerisinde sınırsız alan oluşturulabilir. MongoDB, CouchDB, HBase, Cassandra ve Amazon SimpleDB bunlara örnektir. Anahtar / Değer (Key / Value) Tabanlı: Bu sistemlerde anahtara karşılık gelen tek bir bilgi bulunur. Yani kolon kavramı yoktur. Azure Table Storage, MemcacheDB ve Berkeley DB bunlara örnektir. Grafik (Graph) Tabanlı: Diğerlerinden farklı olarak verilerin arasındaki ilişkiyi de tutan, Graph theory modelindeki sistemlerdir. Neo4J, FlockDB bunlara örnektir. NoSQL sistemlerin doğmasındaki sebep yüksek veri kapasitesi sonucunda verilerin daha hızlı işlenebilmesi ve daha hızlı sonuç döndürebilmesidir. Özellikle Petabyte boyutundaki verilerde dahi en iyi performansı sağlamak üzere dizayn edilmişlerdir. DML işlemleri esnasında ilişkisel modelin kontrol mekanizamlarının çoğundan arındırıldığı için oldukça ciddi performans sağlamaktadır ki Google, Amazon ve Facebook gibi devlerin milyarlarca insana aynı anda hizmet verebildiğini düşündüğümüzde performans ve hız açısından oldukça tatmin edicidir. NoSQL sistemler, veritabanı dünyasının geleceği gibi görülmektedir. Her ne kadar ilişkisel modele göre veri tutarlılığı konusunda zayıf olsa da ücretsiz oluşları, yatay genişlemeye müsait olmaları, çok güçlü server konfigürasyonları gerektirmemeleri ve ilişkisel modeldeki cluster zorlukları ve verimsizliklerinden arındırılmış ve oldukça performanslı çalışmaları NoSQL sistemleri cazibe merkezi haline getirmeye başlamıştır. Özellikle büyük boyutlu verilerin saklanması için maliyetleri yüksek ilişkisel veritabanlarından ve serverlardan uzaklaşmak Google, Facebook gibi devlerin dahi tercihleri arasında yer almaktadır. Bu tür sistemler yerine düşük maliyetli ve özellikli çok fazla sayıdaki serverlar üzerinde verilerini saklamak ve cluster yapmak daha cazip hale gelmiştir. NoSQL sistemlerin bir çoğunda binlerce server tek bir küme gibi hareket edebilir ve çok yüksek boyutlu verileri oldukça hızlı bir şekilde yazabilir (İleride performans testlerinde de bu durum açıkça görülecektir). MongoDB MongoDB bir NoSQL veritabanıdır. Özellikle ilişkisel veri tabanlarındaki Big Data problemine çözüm olarak geliştirildi. MongoDB, 10gen firması tarafından açık kaynak bir sistem olarak geliştirildi ve kaynak kodlarına Git Hub üzerinden ulaşmak mümkün. 10gen, MongoDB yi Humongus yani Kocaman, Devasa olarak isimlendirmiştir, zaten ortaya çıkışı da tam da bu maksatladır. C++ yazılım dili ile geliştirildi ve bilinen birçok işletim sistemi üzerinde çalışmaktadır: Windows, Linux, Unix, MacOS. Önemli özelliklerine değinecek olursak: Ferhat SARIKAYA / Veritabanı Yöneticisi 3

İlişkisel veritabanlarındaki schema yoktur, bu yüzden collation gibi problemlerle uğraşılmaz. Doküman tabanlı veritabanıdır, veriler JSON formatında set edilir, dokümana yazılırken BSON formatında saklar ve karmaşıklıktan kurtulmasını bu şekilde sağlar. Dokümanın her özelliğine ve anahtarına (key) göre indexleme sağlar. Sıkça kullanılan okuma işlemi sorgulamalarında yüksek performans göstermektedir. Verilerin yazılması esnasında yüksek performans göstermektedir. High Availability (Yedeklilik) desteği bulunmaktadır. Auto Sharding özelliği sayesinde aynı verinin birden çok yerde işlenmesi ve bulunabilmesi ile yatay ölçeklendirme yapılabilmektedir. Bunun yanında dikey ölçekleme yapabilmekte mümkün. Ölçeklemeyi sağlayabilmek için Master Slave Replication desteği sunar. Master: Yazma işleminin yapıldığı sunucudur. Slave: Okuma işleminin yapıldığı ve ölçeklendirmenin sağlandığı sunucudur. Master sunucu herhangi bir şekilde fail olursa Slave sunuculardan biri Master olarak atanır. Doküman tabanlı oldukça kompleks sorgular yazmak mümkündür. Map / Reduce özelliği sayesinde kolay analiz etme ve kolay veri işlemeyi sağlar. Map: Tüm verileri sırayla parametre şeklinde alır, key value yapısına çevirir. Reduce: Map in döndürdüğü key value değerlerini yakalayarak üzerinde işlem yapmamızı sağlar. Fultext search desteği bulunmaktadır. GridFS ile birlikte dosyaları veritabanı içerisinde saklamak mümkündür. Sürekli genişleyen yapılar için oldukça uygun, birden fazla server üzerinde sorunsuz çalışabilmektedir. MongoDB nin popüler yazılım dillerinin birçoğuna driver desteği bulunmaktadır. Bunlardan bazıları: C#, C++, C, Ruby, PHP, Python, Erlang, Perl. Özellikle artık yaygın bir metot olarak kullanılan ORM tabanlı yazılım geliştirme modeline daha uygun bir yapı. SQL Server kullanılan bir projede LinQ veya Entity Framework gibi ORM tool kullanmak pek avantajlı olmuyor, çünkü SQL Server her sorguyu önce maliyetlendiriyor ve sonra yol hesabı yapıyor, daha sonra buna göre sorgu sonucunu döndürüyor. Bu tür maliyet ve yol hesaplarından sıyrılmak için stored procedure kullanmak daha makul. Her ne kadar ORM tool içinde bu mümkünse de maalesef yazılımcıların çoğu burada stored procedure den bilgiyi almak yerine ORM tool un syntax ını tercih ediyor; fakat yine de ACID yapısından ötürü SQL Server veya diğer ilişkisel veritabanları sonuç döndürmede oldukça yavaş kalıyor. MongoDB ve SQL Server Karşılaştırmalı Performans Testleri Burada birkaç test sonucu ile ilgili verileri paylaşacağım. Temelde amacım şuan kullandığımız sisteme alternatif olarak sunduğum MongoDB nin bize sağlayacağı artıları gösterebilmek. 1) İlk olarak bakacağımız test SQL Server 2008 ile MongoDB nin karşılaştırılması üzerine Michael Kennedy nin yaptığı test sonuçları göreceğiz. Ferhat SARIKAYA / Veritabanı Yöneticisi 4

Web adresi: http://blog.michaelckennedy.net/2010/04/29/mongodb-vs-sql-server-2008- performance-showdown/ Insert İşlemi Testi Görüldüğü gibi 1.000 kayıttan sonra ciddi bir fark başlıyor ki 50.000 kayıt SQL Server üzerinde 160 saniye sürerken, aynı işlem MongoDB üzerinde yalnızca birkaç saniye alıyor. Yine insert işlemi için aynı anda 5 kullanıcı üzerinden veri gönderimi yapılıyor ve sonucu: Görüldüğü gibi MongoDB neredeyse 100 kat daha hızlı sonuç veriyor. Yine LinQ ORM aracı kullanılarak basit bir class tanımı ile insert işlemi yapılıyor. Class yapısı SQL Server ve MongoDB de aynı: Ferhat SARIKAYA / Veritabanı Yöneticisi 5

MongoDB ile işlemi sonucu: SQL Server ile işlem sonucu: Görüleceği üzere yine fark 100 kat. Select İşlem Testi Paralel 5 kullanıcı ile select sorgusu performans sonuçları şöyle: Görüleceği üzere 1/3 oranında bir zamanla MongoDB işlemi gerçekleştiriyor. Ferhat SARIKAYA / Veritabanı Yöneticisi 6

Yine kompleks sorgulara bakıyoruz: MongoDB doküman yapısı: SQL Server tablo yapısı: Sorgu sonucu: Ferhat SARIKAYA / Veritabanı Yöneticisi 7

Görüleceği gibi kompleks sorgularda da MongoDB, SQL Server a oranla 1/3 oranında bir zamanla işlemi bitirebiliyor. 2) İkinci bakacağımız performans testi ise Windows Server 2012 üzerinde 64 bit edition üzerinde yapılıyor. 4 GB Ram bulunuyor ve bir instance çalışıyor. SQL Server 2012 Developer Edition 64 bit sürümü ile MongoDB 2.4.8 64 bit edition karşılaştırılıyor. Web adresi: http://geekswithblogs.net/eltonstoneman/archive/2013/12/13/theconcurrency-shoot-out-sql-server-versus-mongodb-part-1.aspx SQL Server yapısı: MongoDB Yapısı: Ferhat SARIKAYA / Veritabanı Yöneticisi 8

1.000 ve 10.000 iş akışı ve 100 eş zamanlılık üzerine yapılan test sonucu: Görüleceği üzere MongoDB 6 kat daha hızlı sonuç vermektedir. MongoDB Yönetim Araçları 1) Nucleon Database Master: MongoDB, NuoDB, Oracle, MySQL, PostgreSQL, FireBird, SQLite, SQL Server, SQL Azure, IBM DB2, IBM Informix, Netezza, Ingres sistemlerin yönetimini yapabilen bir yönetim aracı. MongoDB konusunda destekleri: JSON Query Editor, Advanced Data Editing, Collection Manager, Index Manager, GridFS Manager, Visual Map & Reduce Editor, Visual Query Search, Tree and Table style data view and rich data export features to common file formats. Lisans Ücretleri Database Master Ürünü: Professional License: 69 USD Professional License + Subscription: 79 USD Enterprise License: 179 USD Enterprise License + Subscription: 189 USD Ferhat SARIKAYA / Veritabanı Yöneticisi 9

Business Intelligence Studio Ürünü: Professional License: 149 USD Professional License + Subscription: 159 USD Enterprise License: 479 USD Enterprise License + Subscription: 489 USD Ultimate License + Subscription Ürünü: BI Studio and Database Master: 2.000 USD 2) Mongovue: MongoDB ile birlikte SQL Server, MySQL ve PostgreSQL desteği de veriyor. Bu databaselerden MongoDB ye veri import edebiliyor. Ücretsiz sürümünde Monitoring desteği vermiyor; ama ücretli sürümlerde her destek mevcut. Lisan Ücretleri Standart: 35 USD, yalnız bir kullanıcı lisansı Enterprise: 350 USD, 25 kullanıcı lisansı Enterprise Gold: 500 USD, 100 kullanıcı lisansı Enterprise Platinum: 1.000 USD, 250 kullanıcı lisansı Enterprise Diamond: 2.500 USD, Limitsiz kullanıcı lisansı 3) NoSQL Viewer: MongoDB, Couchbase, Apache CouchDB, Cassandra, HBase databaselerine full destek veriyor. Oldukça profesyonel gözüküyor. Lisans ücretleri ise ihtiyaca ve kullanıcı sayısına göre değişkenlik gösteriyor. 4) Robomongo: Grafik tabanlı bir diğer yönetim aracı da Robomongo. MongoDB Shell Script kullanarak işlemleri gerçekleştirdiği için tam destek veriyor. Kullanımı oldukça kolay ve bir çok platformda çalışıyor. Lisans ücreti olmadığı için tercih edilen bir araç. 5) UMongo: Grafik tabanlı bir yönetim aracı. Robomongo gibi tam hakimiyet sağlıyor ve ücretsiz. 6) RockMongo: PHP 5.5 ile geliştirilmiş bir ara yüze sahip. Bir çok işlemi yapabilmek mümkün ve ücretsiz. MongoDB ve Business Intelligence Business Intelligence (BI) sürecinde verilerin denormalize halde tutulduğunu düşündüğümüzde ve yukarıdaki birçok bilgiyi göz önüne aldığımızda SQL Server a oranla daha verimli ve daha hızlı bir yaklaşım sergilemek mümkün gözüküyor. Big data konseptinden ötürü MongoDB için oldukça iyi BI araçları bulunmaktadır; ama elbette bunu değerlendirmek hususunda BI Developerlar daha doğru bir tercih yapacaktır. Bu kısımda kullanılabilecek bazı araçları aşağıda sıraladım. 1) Jaspersoft: Müşterileri arasında Ericson, Juniper gibi devler bulunuyor. ETL işlemini yapmaya gerek görmeksizin dönüşüm işlemlerini yapabiliyor. Özellikle ram üzerinde analiz yapabiliyor olması şüphesiz hızlı işlem yapabilme ve ciddi performans kazançları sağlıyor gibi. Raporlamalarda ise HTML5 desteği önemli bir artı gibi duruyor. Ferhat SARIKAYA / Veritabanı Yöneticisi 10

2) Penthano: Önemli ve etkili araçlardan biri de Penthano. Jaspersoft tan sonra özellikleri açısından gözüme çarpan ikinci araç oldu. 3) Nucleon BI Studio: bir önceki Yönetim Araçları bölümünde ayrıntılı bilgi vermiştim. MongoDB ve C# Şirketimizde C# dili kullanıldığı için MongoDB nin kullanım şekline yönelik basit bir class yapısı örneği geliştireceğim. Böylece MongoDB üzerinde yazılım geliştirme konusunda ufak bir fikir verebilir düşüncesindeyim. Geliştirme ortamımızın Visual Studio 2012 olduğunu varsayıyorum, bunun için MongoDB nin C# driverını kurmamız gerekiyor. NuGet Packages üzerinde Official MongoDB C# Driver yazmak yeterli, kurulum otomatik yapılıyor. Şimdi bir eğitim platformu geliştirdiğimizi varsayıyorum ve Ogrenci class ımızın metotlarını yazıyorum: static void OgrenciEkle() // öğrenci ekleme fonksiyonumuz { MongoClient client = new MongoClient(); MongoServer server = client.getserver(); MongoDatabase db = server.getdatabase("ogrenciler"); var ogrenciler = db.getcollection("ogrenci"); ogrenciler.insert(new BsonDocument { {"Ad","Ferhat"}, {"Soyad","SARIKAYA"}, {"Yas",36}, { Numara, 123456} }); } static void OgrenciDuzenle()// öğrenci bilgilerini düzenleme fonksiyonumuz { MongoClient client = new MongoClient(); MongoServer server = client.getserver(); MongoDatabase db = server.getdatabase("ogrenciler"); var ogrenciler = db.getcollection("ogrenci"); var sorgu = new QueryDocument { { "Numara", 123456 } }; var ogr = ogrenciler.find(sorgu).firstordefault(); var guncelle = new UpdateDocument { { "$set", new BsonDocument("Soyad", "Sarıkaya") } }; ogrenciler.update(sorgu, guncelle); } static void OgrenciSil()//öğrenci silme fonksiyonumuz { Ferhat SARIKAYA / Veritabanı Yöneticisi 11

} MongoClient client = new MongoClient(); MongoServer server = client.getserver(); MongoDatabase db = server.getdatabase("ogrenciler"); var ogrenciler = db.getcollection("ogrenci"); var sorgu = new QueryDocument { { "Numara", 123456 } }; ogrenciler.remove(sorgu); static void OgrenciListele()//öğrencileri listelediğimiz fonksiyonumuz { MongoClient client = new MongoClient(); MongoServer server = client.getserver(); MongoDatabase db = server.getdatabase("ogrenciler"); var ogrenciler = db.getcollection("ogrenci"); var liste = ogrenciler.findall(); foreach (var ogr in liste) { Console.WriteLine(ogr["Ad"] + " " + ogr["soyad"] + " " + ogr["yas"] + + ogr[ Numara ]); } } Ferhat SARIKAYA / Veritabanı Yöneticisi 12