top of page

MongoDB Vs Oracle: Bir Karşılaştırma

Güncelleme tarihi: 12 Ağu 2022



Giriş



Yazılım mühendislerinin program kodlarını bir takım kağıtları delerek ana bilgisayarlara aktardıkları 70’li yıllarda Oracle, geliştirdiği ilişkisel veri tabanı yazılımını pazara sunarak büyük bir ticari başarı yakaladı. Bilişim teknolojisinin bu emekleme yıllarında, Oracle veri tabanı yönetim sisteminin sunduğu imkanlar büyük bir verimlilik artışı getirdi. Sonrasında ilişkisel veri tabanı yönetim sistemleri endüstri standardı haline gelirken, Oracle da bu standart üzerinde yükselerek dünyanın en önemli teknoloji şirketlerinden birisi oldu. Son yıllarda artan veri boyutları sebebiyle iyice kritik hale gelen veri tabanı yönetim sistemleri alanında, var olan ürünler karşısında gerçek bir alternatif MongoDB gibi çağın ihtiyaçlarına cevap veren teknolojilerin belirmesiyle ortaya çıktı.

Günümüzde şirketler veya kurumlar müşterilerini (hizmet alanları) daha iyi tanımak, yeni kullanıcı beklentilerine cevap verebilmek ya da pazara yeni ürünler sunarak rekabet karşısında avantaj elde edebilmek için verilerini nasıl daha etkin bir biçimde kullanabilecekleri üzerinde kafa yoruyorlar. İhtiyaçların değişen ve gelişen niteliği, verilerin artan boyutu ve çeşitliliği ve kaynakların verimli kullanılması konusundaki yoğun değişim talebi sonucunda ilişkisel veri tabanlarının geliştirildiği günlerdeki pek çok ön kabul artık geçerliliğini yitiriyor.




  • Yazılım geliştirme verimliliğiartık hem maliyetleri düşürme hem de pazara daha hızlı ürün sunabilme açısından geçmişe göre çok daha fazla önem taşıyor. Geleneksel waterfall (şelale) metodolojisi ile geliştirilen ve katı ilişkisel modellere göre tasarlanan uygulamalar için aylar ve hatta yıllarca beklemek günümüzde çok zor. Yazılım projelerinde artık “agile” yaklaşımlar geçerli, giderek daha fazla uygulama mikroservisler halinde tasarlanıyor böylece geliştirme ve yönetim ihtiyaçlara göre şekilleniyor, DevOps organizasyonlar ile de verimlilik artışı hedefleniyor. Bu modern yaklaşımlarla maliyetler azalırken geliştirme sürelerinin günler ya da haftalar bazına inmesi beklentisi var.



  • Geçmişteki son derece kısıtlı veri kaynakları ve veri miktarı yerine artık yeni nesil web, mobil, sosyal medya ya da nesnelerin interneti gibi uygulamalar tarafından üretilen yapısal, yarı-yapısal ya da çok biçimli devasa boyutlardaki verilerin makul biçimde yönetilmesine ihtiyaç var.

  • Geçmişteki yerel veri merkezleri yerine artık daha esnek yapılara, çoklu veri merkezlerine, global ya da ülke sınırları içerisindeki bulut mimarilerine geçiliyor. Böylelikle uygulamaların yüksek erişilebilirlik ve ölçeklenebilirlikleri garanti edilirken, geliştiricilerin de talebe göre uygun özelliklerdeki yazılımları hızlı bir biçimde hayata geçirmelerinin önündeki engeller kaldırılıyor.

Bu ihtiyaçlar doğrultusunda, yeni tür uygulamaların hayata geçirilebilmesi ve modern uygulama iş yüklerinin karşılanabilmesi için doküman veri modeline dayanan ve tabular olmayan MongoDB gibi veri tabanları ortaya çıktı ve bir süredir iş dünyası tarafından yaygın kabul görülerek kullanılıyor. Ancak yeni yayınlanan 4.0 versiyonu ile MongoDB, pazarda bugüne kadar gerçekleştirdiği değişimi farklı bir boyuta taşıyor. MongoDB 4.0 versiyonunda çoklu doküman ACID uyumluluğuna tam desteğini açıkladı. Daha önce ACID tek bir doküman içerisinde desteklenirken MongoDB 4.0 ile artık en sofistike finansal işlemleri dahi MongoDB doküman modelinde uygulamak mümkün. Böylelikle geliştiriciler, Oracle’ın 40 yıl önce tasarlanmış mimarisindeki sorunlarla uğraşmak yerine, günümüz ihtiyaçları için tasarlanmış modern bir veri tabanını kullanarak son derece karmaşık uygulamaları hayata geçirebilir ve bunu yaparken MongoDB’nin getirdiği bütün modern işlevlerden faydalanabilirler.

Toplantılarımızda ve konferanslarda sık sık, nerede ilişkisel veri tabanı nerede MongoDB kullanılmalı soruları ile karşılaşıyoruz. Bu yazı dizisinde, ihtiyaçlar ve imkanlar göz önüne alındığında hangi durumlarda MongoDB, hangi durumlarda da sektörün en yaygın veri tabanı olan Oracle kullanılmalı sorusuna yanıt vermek istiyoruz.

Oracle?



Oracle, veri tabanı yönetimi yazılımı konusunda lider global bir teknoloji firmasıdır. Şu anda 18c versiyonunda olan veri tabanı yazılımını, çekirdek bazlı lisanslama modeli ile ve ek özellikler için de ayrıca ücretlendirerek pazara sunar. Pek çok kullanıcısı için Oracle’ın lisanslama modeli pahalı ve esnek olmayan bir yaklaşımı içerir. Özellikle artan veri hacmi daha fazla çekirdek kullanımına yol açmakta bunun sonucu olarak da Oracle lisans maliyetlerini veri merkezinin en önemli maliyet kalemi haline getirmektedir.


Oracle ve genel olarak ilişkisel veri tabanı teknolojilerinde uygulama ihtiyaçlarına göre önceden veri tabanı şemanızı şekillendirmeniz ve bu şemalarda yer alan tablolarınız arasındaki ilişkileri içeren kuralları da önceden belirlemeniz gerekir. Birbirleri ile ilişkili veriler farklı tablolarda tutulur ve bu ilişkiler join operasyonları ile sağlanır. İlişkisel veri tabanlarında şemalarda yapılacak en küçük değişiklikler dahi veri tabanı operasyonunu çevrim dışına alacak ya da performansını düşürecek bir taşıma (migration) operasyonunu gerektirir. Çoğunlukla bu operasyon sırasında veri tabanına (yani uygulamaya) erişilemez.

MongoDB Nedir?



MongoDB, MongoDB Inc. tarafından geliştirilen, açık kaynak kodlu, ilişkisel olmayan genel amaçlı bir veri tabanı yönetim sistemidir. MongoDB verileri doküman modelinde ve BSON (Binary JSON) formatında saklar. MongoDB doküman veri modelinde, birlikte okunacak veriler birlikte saklanır ve bu veriler MongoDB sorgulama dili ile hızlı bir biçimde okunur. Doküman veri modeli esnektir; alanlar dokümandan dokümana farklılık gösterebilir, dokümanların yapılarını önceden tanımlama ihtiyacı yoktur, dokümanlar kendi kendilerini tanımlarlar (self describing). Bir dokümana yeni bir alan eklenme ihtiyacı varsa, bu alan diğer dokümanları etkilemeden ya da merkezi bir veri sözlüğünü güncelleme ihtiyacı olmadan ya da sistemi çevrim dışına almadan kolayca eklenebilir. Elbette doküman doğrulama (document validation) ile veri bütünlüğü kontrol altına alınabilir. MongoDB doküman veri modeli esnek olmakla birlikte bütünselliği koruyacak kontrol mekanizmalarına sahiptir.

MongoDB doküman veri modeli, nesne temelli programlama dillerindeki nesneleri doğal olarak destekler. Böylelikle uygulama geliştiriciler MongoDB’yi kolayca öğrenip kullanabilirler. Dokümanlar hiyerarşik ilişkileri, dizi’leri ve diğer karmaşık veri yapılarını saklamanıza izin verir.

MongoDB tarafından 10’dan fazla uygulama dili için geliştirilen dile özel sürücüler ile çok çeşitli yapılardaki verilere erişip erişerek, anlık sorgulamalar, gerçek zamanlı analitik çalışmalar yapmak ve MongoDB’nin sunduğu zengin indexleme olanaklarından faydalanmak mümkündür. Uygulama geliştiriciler bu sürücüler ile MongoDB’nin sunduğu analitik fonksiyonlar (aggregation framework), ikincil indexleme (secondary indexes) gibi olanakları kullanarak daha güçlü yazılımlar geliştirme olanağına sahip olabilirler.




Doküman modelinde, ilişkisel veri modelinde farklı tablolarda tutulan parent-child ilişkisi tek bir doküman içerisinde tutulabiliyor. Böylelikle tek doküman içerisinde tutarlılık ve tek doküman ACID uyumluluğu MongoDB için uzun bir süredir söz konusuydu. Yani aynı doküman içerisinde tek bir operasyonda bir ya da daha fazla alan yazılabilir, alt-dokümanlarda ya da dizilerde bulunan verilere çoklu güncellemeler tutarlı bir şekilde yapılabilir. Böylelikle MongoDB bir dokümanın güncellenmesinin tamamen bağımsız (isolated) olmasını ve herhangi bir hata olması durumunda bütün işlemin geri alınarak verinin tutarlı halde olmasını garanti eder.

MongoDB 4.0 versiyonu yukarıda bahsedilen işlem tutarlılığını birden fazla doküman içeren işlemlere (multi document transactions) taşıyarak, ilişkisel veri tabanlarının ACID uyumluluğunu sunan ilk açık kaynak kodlu veri tabanı olma özelliğine kavuştu.MongoDB 4.0 ile son derece esnek ve akıllı dağıtıklık, verileri istediğiniz coğrafi lokasyonda depolayabilmenize olanak tanıyan lokasyon bazlı sharding, hız, esneklik ve doküman veri modelinin gücüne ACID uyumluluğu da eklenmiş oldu. MongoDB 4.0 ile verilerin hep tutarlı versiyonları okunur. Yapılan işlem ya bütün dokümanlarda uygulanır ya da tamamen geri alınır. MongoDB’deki işlemler (transactions) ilişkisel veri tabanlarındaki işlemler ile aynı özellikleri taşımakta, böylelikle uygulama geliştiriciler kod yazarken Oracle’da alışkın oldukları şekilde kodlama yapabilirler. MongoDB 4.0 ile gelen işlemler birden fazla aşamalı (multi statement) ve benzer bir kodlama biçimine sahiptir(start_transaction, commit_transaction). Böylelikle daha önce benzer bir programlama deneyimine sahip bir uygulama geliştirici MongoDB transaction özelliklerini ek bir öğrenme sürecine gerek kalmadan kullanabilir.

MongoDB, Oracle ve diğer ilişkisel veri tabanlarının yekpare, tek sunuculu tasarımının aksine dağıtık bir sistem mimarisi üzerine inşa edilmiştir. Bunun sonucunda MongoDB sürekli erişilebilirlik için birebir kümeler (replica sets), veri yerindeliği (localization) ve yatay ölçeklenebilirlik için bölümleme (sharding) özelliklerini temel özellik olarak sunmaktadır. Erişilebilirlik ve ölçeklenebilirlik MongoDB tasarımının ayrılmaz bir parçasıdır ve son derece kolay bir biçimde uygulanır. Bu özellikler için ayrı yazılımlar, ek mimari tasarımlar, pahalı çözümlere gerek yoktur.


Terminoloji ve Kavramlar



İlişkisel veri tabanları pazarında uzun süre yer alması ve dominasyonu pek çok kavramın Oracle ile anılmasına yol açtı. Burada her ne kadar Oracle ile bir karşılaştırma yapılmış olsa da temel ilişkisel veri tabanı kavramları ile MongoDB karşılıklarını aşağıdaki tabloda bulabilirsiniz.


Oracle’da olduğu gibi MongoDB de diğer basit NoSQL veri depolarından farklı olarak zengin bir içerik ve işlevsel özellikler sunmaktadır. MongoDB zengin bir sorgu diline sahiptir, text arama ve geospatial verileri de içeren çok kullanışlı ikincil index’leri (secondary indexes) destekler, çok güçlü bir hesaplama altyapısı (aggregation pipeline) ile analitik programlamaya olanak tanır, yönlü arama (faceted search) ve graph tarzı sorguları (graph processing) barındırır. MongoDB ile bütün bu özelliklerle birlikte ilişkisel veri tabanlarının desteklemediği çok farklı veri tiplerini ölçeklenebilir bir mimaride kullanabilirsiniz. Aşağıdaki tabloda Oracle ve MongoDB özellik karşılaştırmasını bulabilirsiniz.



Hem Oracle hem de MongoDB güçlü bir sorgu diline sahiptir. Oracle’ın sunduğu SQL ve PL/SQL dillerine karşılık MongoDB zengin sorgu dili Xpressive Query Language ve veri tabanı üzerinde Javascript kodlama olanağı eksiksiz bir alternatif sunmaktadır. MongoDB’nin sunduğu Xpressive Query Language, SQL ile benzer mantığa sahip kolay bir dildir. Aşağıda belli bir takım SQL örneklerinin MongoDB sorgu dilinde nasıl yazılacağına dair örnekleri bulabilirsiniz.




Neden ve Nerede Oracle Yerine MongoDB?

Küçüklü büyüklü pek çok işletme uygulamalarını MongoDB ile geliştiriyor ve bazıları da mevcut uygulamaları MongoDB ile yeniliyor. MongoDB yenilikçi tasarımı ve modern ihtiyaçlara göre sunduğu özellikler ile bu kurumların daha hızlı uygulama geliştirmelerine, çok farklı tipteki verilerinden faydalanabilmelerine ve her türlü ölçekteki uygulamalarını çok daha etkin bir biçimde yönetmelerine olanak tanıyor.

MongoDB doküman veri modeli modern nesne temelli programlama dillerinin veri yapılarına doğrudan eşlendiği için uygulama geliştirme çok daha kolaylaşmakta. Modern yazılım dünyasının de-facto standardı olan nesne temelli programlama dillerinde tanımlanan nesnelerin ilişkisel veri tabanlarında bir karşılığı yoktur ve bu nesnelerin ilişkisel modele çevrilmesi için nesne-ilişkisel eşleme (Object to relational mapping) işleminin yapılması gerekmektedir. Bu işlem yazılım üretimi ile veri tabanı arasında her seferinde bir dönüştürme işleminin gerçekleştirilmesi, dolayısı ile zaman ve verimlilik kaybı anlamına geliyor. Nesne temelli programlama dilleri ile ilişkisel veri tabanı dünyalarının farklılığı yazılım üretiminin önemli bir darboğazını oluşturmaktadır. MongoDB nesneleri doğal olarak destekler, herhangi bir dönüşüm işlemine gerek yoktur. MongoDB’de veri modellemesi uygulama ihtiyaçlarına ve birlikte okunan verilerin birlikte saklanması prensibine göre yapılır.


Veri tabanları arasında karşılaştırma yaparken lisans maliyetleri gözden kaçırılmaması gereken önemli bir değerlendirme unsuru. Günümüzde giderek artan veri hacmi ve geleneksel veri tabanı firmalarının katı lisanslama yöntemleri yüzündenbu maliyetler, veri merkezlerinin en önemli masraf kalemlerinden biri haline gelmiş durumda. Lisans maliyetinin yanında veri tabanı yönetim sistemleri odaklı yapılacak donanım, geliştirme ve operasyon yatırımlarını ve modern uygulamaların yüksek erişilebilirlik ve sürdürülebilirlik ihtiyaçlarına göre kullanılması gereken ek araçları da toplam satın alma maliyeti kalemlerine eklemekte fayda var. Dünyanın pek çok farklı ülkesinde pek çok farklı kurum özellikle Oracle’dan MongoDB’ye geçerek kazandıkları geliştirici üretkenliği, lisans ve donanım maliyetlerindeki azalma gibi etkenlerle %70’e varan oranlarda tasarruf ettiklerini beyan ediyorlar

MongoDB tek ya da dağıtık veri merkezlerine ölçeklenerek erişilebilirlik ve sürdürülebilirlik konularında daha önce ilişkisel veri tabanlarında mümkün olmayan seviyeleri yakalıyor. MongoDB, veriniz ve işlem ihtiyacınız arttıkça, bu ihtiyaçlarınız doğrultusunda standart donanımlarda yatay olarak ölçeklenebiliyor ve bu ölçeklenme uygulamada bir değişiklik ya da uygulamanın çevrim dışı olmasına gerek duymuyor. Aynı ölçeklenebilirliği Oracle’da elde etmek için ciddi anlamda mimari çalışmaya, özel ve pahalı donanımlara ve uygulamanın çoğunlukla çevrim dışına alınmasına gerek duyulmakta.

Kimler Oracle yerine MongoDB kullanıyor? Aşağıdaki örneklerde geliştirici üretkenliği, uygulama performansı, ölçeklenebilirlik konularında radikal faydalar sağlarken maliyetlerini azaltan bazı organizasyonlar hakkında bilgiler bulabilirsiniz. Daha fazla ya da kendi uygulama alanlarınızla ilgili örnekler için survey@karadanismanlik.com.tr e-posta adresinden bizimle temasa geçebilirsiniz.


  • Finans devi RBS, yatırım bankacılığı sistemlerini MongoDB kullandığı veri fabrikası yaklaşımı ile modernize etti. Sonuçta yüzlerce Oracle sunucusu devreden çıkarılırken, yeni uygulamalardaki geliştirici verimliliği ivmelendi, ölçeklenebilir ve basitleştirilmiş, buluta taşımaya hazır bir altyapı oluşturulurken milyonlarca dolar tasarruf sağlandı.



  • Telefonica, müşteri kişiselleştirme servisini Oracle’dan MongoDB’ye taşıdı. Oracle ile geliştirilen ve kullanımı pek mümkün olmayan sistem için 7 uygulama geliştirici, uzun ve iteratif bir geliştirme süreci ve 14 aylık bir süreye ihtiyaç duyulmuştu. Buna karşın, MongoDB kullanarak 3 kişilik bir geliştirme ekibinin 3 aylık bir çalışması ile geliştirilen uygulama, eski ve yeni tüm ürünleri global ölçekte destekliyor. MongoDB, Telefonica’ya “agile” geliştirim, maliyet tasarrufu ve yeni gelir getirecek uygulamalar oluşturmasında yardımcı oluyor.



  • China Eastern, gezi arama uygulamasını Oracle’dan MongoDB’ye dönüştürdü. MongoDB kullanmak şirketin proje yönetimi ve mühendislik ekiplerini Oracle ile mümkün olamayacak bir uygulama geliştirmelerine olanak tanıdı. Doküman veri modelinin basitliği, dinamik şema tasarımı, dile göre tasarlanmış sürücüler, ve indexleme seçenekleri geliştirme ekiplerinin artık yeni uygulamaları çok daha hızlı bir şekilde ve çok daha düşük maliyetlerle hayata geçireceği anlamına geliyor

MongoDB için yaygın uygulama alanları hangileridir?

MongoDB pek çok farklı uygulama alanı için kullanılan genel amaçlı bir veri tabanıdır. Bugüne kadar MongoDB çoğunlukla tekil görünüm, nesnelerin interneti, gerçek zamanlı analitik, kişiselleştirme, katalog ve içerik yönetimi gibi alanlarda kullanılmıştır. Çoklu doküman ACID uyumluluğu ile artık finansal işlemler dahil bütün uygulama alanları için MongoDB son derece güvenilir bir veri tabanı teknolojisi sunmaktadır.


Ne zaman Oracle?

Pek çok organizasyon kritik ve gelir getirici uygulamalar da dahil pek çok uygulamasını ilişkisel veri tabanı yönetim sistemlerinden MongoDB’ye taşıyor. Bununla birlikte elbette özellikle ekosistemi ile birlikte tamamen ilişkisel yapıda ve SQL üzerine tasarlanmış legacy uygulamaların birden MongoDB’ye geçmesi gerçekçi olmayabilir. Pragmatik ve gerçekçi bir yaklaşım ile yeni uygulamalar için MongoDB’nin getireceği avantajlardan faydalanmak, var olan uygulamaların MongoDB’ye dönüştürme süreç ve maliyetlerini ise değerlendirip bir fayda maliyet analizi yapmak en doğrusu olacaktır. Legacy uygulamalarınızda yaşadığınız güçlükler ve dönüşüm olanakları için şirketinizde bir keşif çalışması yapıp dijital dönüşüm projelerinizde size yardımcı olmaktan memnuniyet duyarız. Lütfen bu konuda survey@karadanismanlik.com.tr e-posta adresimizden bizimle temasa geçin. MongoDB modern ihtiyaçlara göre tasarlanmış genel amaçlı bir veri tabanı yönetim sistemidir. Kritik uygulamalarınızı rahatlıkla MongoDB ile gerçekleştirebilirsiniz. MongoDB ile ilgili her türlü sorunuz ve ihtiyacınızda yardımcı olmaktan memnuniyet duyarız. MongoDB ile maliyetlerinizi azaltırken geleceği yakalayın, MongoDB gelecektir!

8 görüntüleme0 yorum

Son Yazılar

Hepsini Gör

Comments


bottom of page