{"id":8670,"date":"2016-10-11T09:19:55","date_gmt":"2016-10-11T07:19:55","guid":{"rendered":"https:\/\/ihs.com.tr\/blog\/?p=8670"},"modified":"2016-10-11T09:19:55","modified_gmt":"2016-10-11T07:19:55","slug":"iyi-kotu-cirkin-yonleriyle-mongodb","status":"publish","type":"post","link":"https:\/\/www.ihs.com.tr\/blog\/iyi-kotu-cirkin-yonleriyle-mongodb\/","title":{"rendered":"\u0130yi, K\u00f6t\u00fc ve \u00c7irkin Y\u00f6nleriyle MongoDB"},"content":{"rendered":"<p><span style=\"font-size: 14pt;\"><strong>MongoDB<\/strong> hakk\u0131nda yeterli fikri olmayanlar i\u00e7in s\u00f6ylemek gerekirse, MongoDB bir No-SQL belge veritaban\u0131d\u0131r. Belgeler anahtar de\u011fer \u00e7iftlerini olu\u015fturur ve MongoDB\u2019deki temel veri birimidir.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB \u015fu an en pop\u00fcler NoSQL veritabanlar\u0131ndan biri durumunda. Olduk\u00e7a yayg\u0131n bir \u015fekilde kullan\u0131lmakta ve her kullan\u0131m i\u00e7in olmasa da \u00e7ok say\u0131da kullan\u0131m i\u00e7in uygun bir platform.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">A\u015fa\u011f\u0131da MongoDB\u2019nin iyi, k\u00f6t\u00fc ve \u00e7irkin yanlar\u0131yla ilgili de\u011ferlendirmeler bulunmakta.<\/span><\/p>\n<p><a href=\"https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2016\/10\/MongoDB.jpg\" data-rel=\"penci-gallery-image-content\" rel=\"attachment wp-att-8672\"><img decoding=\"async\" class=\"alignnone size-medium wp-image-8672\" src=\"https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2016\/10\/MongoDB-300x162.jpg\" alt=\"MongoDB\" width=\"300\" height=\"162\" srcset=\"https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2016\/10\/MongoDB-300x162.jpg 300w, https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2016\/10\/MongoDB-1024x551.jpg 1024w, https:\/\/www.ihs.com.tr\/blog\/wp-content\/uploads\/2016\/10\/MongoDB.jpg 1040w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong><span style=\"font-size: 14pt;\">\u0130yi Yanlar\u0131<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB\u2019nin iyi yanlar\u0131 k\u00f6t\u00fc yanlar\u0131ndan bir hayli fazla. Zaten \u00f6yle olmasa geli\u015ftiricilerden b\u00f6ylesine geni\u015f \u00e7apl\u0131 bir kabul g\u00f6rmezdi. MongoDB\u2019nin iyi yanlar\u0131n\u0131 \u015fu \u015fekilde s\u0131ralayabiliriz:<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Esnek Veri Modeli<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">G\u00fcn\u00fcm\u00fcz\u00fcn dinamik kullan\u0131m \u015fartlar\u0131nda ve uygulamalar\u0131n s\u00fcrekli de\u011fi\u015fti\u011fi ortamda esnek bir veri modeline sahip olmak b\u00fcy\u00fck bir l\u00fctuf. Esnek veri modeli, \u00f6nceden belirlenmi\u015f bir \u015fema olmamas\u0131 ve belgenin herhangi bir anahtara ba\u011fl\u0131 olarak olu\u015fturulan t\u00fcm de\u011fer setlerini bar\u0131nd\u0131rabilmesi anlam\u0131na geliyor.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Anlaml\u0131 Sorgular<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB\u2019nin sorgulama dili anla\u015f\u0131lmas\u0131 bir hayli kolay bir dil. \u00c7o\u011fu ki\u015fi bu dilin SQL gibi olmad\u0131\u011f\u0131n\u0131 s\u00f6yl\u00fcyor. O halde ortada anlaml\u0131 ve basit bir dil varken neden SQL\u2019e benzeyen bir dil kullanmaya devam edelim ki?<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">\u00d6\u011frenmesi Kolay<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB\u2019yi \u00f6\u011frenmek bir hayli kolay. Temel kurulumu, ayarlar\u0131 ve \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 en fazla birka\u00e7 saat s\u00fcr\u00fcyor. Baz\u0131 durumlarda daha teferruatl\u0131 bir ayarlama yapmak gerekebiliyor ama bu konuya daha sonra de\u011finece\u011fiz.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Her halukarda MongoDB veritaban\u0131n\u0131 projelerinizde kolayca kullanabiliyorsunuz.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Performans<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB\u2019nin en g\u00fc\u00e7l\u00fc yanlar\u0131ndan biri sorgulama performans\u0131. MongoDB \u00fczerinde \u00e7al\u0131\u015f\u0131labilir verinin b\u00fcy\u00fck k\u0131sm\u0131n\u0131 RAM\u2019de sakl\u0131yor. Verinin tamam\u0131 hard diskte tutuluyor ama sorgulamalar esnas\u0131nda hard diskten \u00e7ok fazla veri \u00e7a\u011f\u0131r\u0131lm\u0131yor. Veri yerel RAM\u2019den al\u0131n\u0131yor, dolay\u0131s\u0131yla program \u00e7ok daha h\u0131zl\u0131 \u00e7al\u0131\u015f\u0131yor. Burada MongoDB\u2019nin performans\u0131ndan en iyi \u015fekilde faydalanmak i\u00e7in do\u011fru dizinlerin yap\u0131lmas\u0131 ve yeterli RAM olmas\u0131 \u00f6nemli.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">\u00d6l\u00e7eklendirilebilir ve G\u00fcvenilir<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB \u00f6l\u00e7eklendirme konusunda bir hayli ba\u015far\u0131l\u0131. \u00c7o\u011fu NoSQL veritaban\u0131nda yatay \u00f6l\u00e7eklendirme \u00f6zelli\u011fi b\u00fcy\u00fck bir avantajd\u0131r. Bu avantaj MongoDB i\u00e7in de ge\u00e7erli.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB ayn\u0131 zamanda verinin daha fazla say\u0131da devrede asenkronize olarak kopyaland\u0131\u011f\u0131 kopya setleri nedeniyle de olduk\u00e7a g\u00fcvenilir.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">E\u015fzamans\u0131z S\u00fcr\u00fcc\u00fcler<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">E\u015fzamans\u0131z s\u00fcr\u00fcc\u00fcleri kullanan t\u0131kanmas\u0131z IO\u2019lar h\u0131z i\u00e7in \u00fcretilmi\u015f t\u00fcm modern uygulamalar\u0131n olmazsa olmaz\u0131d\u0131r. MongoDB\u2019de de pop\u00fcler dillerin \u00e7o\u011funu destekleyen e\u015fzamans\u0131z s\u00fcr\u00fcc\u00fc deste\u011fi bulunmakta.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Belgelendirme<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Belgelendirmenin iyi olmas\u0131 geli\u015ftiricilerin hayat\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131r\u0131r. \u00d6zellikle geli\u015ftirici belli bir teknolojiyi yeni kullanmaya ba\u015flam\u0131\u015fsa. MongoDB\u2019nin belgelendirme \u00f6zelli\u011fi olduk\u00e7a iyi.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Metin Arama<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">E\u011fer t\u00fcm veriniz i\u00e7inde aramalar yapman\u0131z gereken bir <a href=\"https:\/\/www.ihs.com.tr\/domain\/alan-adi-domain-tescili.html\" target=\"_blank\">web sitesi<\/a> haz\u0131rl\u0131yorsan\u0131z, metin arama \u00e7ok \u00f6nemli bir \u00f6zelliktir. \u00d6rne\u011fin, metin arama \u00f6zelli\u011finin a\u00e7\u0131k oldu\u011fu bir veritaban\u0131na sahip bir e-ticaret sitesi kullan\u0131c\u0131lar i\u00e7in b\u00fcy\u00fck kolayl\u0131k olacakt\u0131r.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Sunucu Taraf\u0131 Betikleri<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">E\u011fer i\u015flemlerinizi uygulaman\u0131z\u0131n i\u00e7inde de\u011fil <a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/bulut-sunucu.html\" target=\"_blank\">sunucu<\/a> taraf\u0131nda yapman\u0131z gerekiyorsa, bu MongoDB\u2019de m\u00fcmk\u00fcn. Mongo ifadeleri listenizi bir .js dosyas\u0131na koyun ve yourFile.js\u2019yi \u00e7al\u0131\u015ft\u0131r\u0131n.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Belgeler=Nesneler<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Belge veritaban\u0131na sahip olman\u0131n iyi yanlar\u0131ndan biri de nesnenizin MongoDB\u2019de tek bir belge halinde saklanabiliyor olmas\u0131. Burada bir ORM\u2019ye gerek yok.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">K\u00f6t\u00fc Yanlar\u0131<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB\u2019nin iyi yanlar\u0131n\u0131 g\u00f6rd\u00fck. A\u015fa\u011f\u0131da baz\u0131 k\u00f6t\u00fc \u00f6zellikler bulunmakta. Bu k\u0131sm\u0131n daha dikkatle incelenece\u011fi kesin. MongoDB yanl\u0131\u015f \u015fekillerde kullan\u0131l\u0131rsa bir hayli k\u00f6t\u00fc bir platforma d\u00f6n\u00fc\u015febiliyor.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">\u0130\u015flemler<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Art\u0131k i\u015flem gerektiren pek bir uygulama kalmam\u0131\u015f durumda. Ama baz\u0131 uygulamalar hala buna gereksinim duyuyor. MongoDB ne yaz\u0131k ki i\u015flemleri desteklemiyor. Bu y\u00fczden e\u011fer kullan\u0131c\u0131 talebi ba\u015f\u0131na birden fazla belgeyi veya koleksiyonu g\u00fcncellemeniz gerekiyorsa MongoDB kullanmay\u0131n. ACID garantisi olmad\u0131\u011f\u0131 i\u00e7in verinin bozulmas\u0131na neden olabilirsiniz. Geri \u00e7a\u011f\u0131rmalar\u0131n uygulaman\u0131z taraf\u0131ndan yap\u0131lmas\u0131 gerekiyor.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Tetik Olmamas\u0131<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">RDBM\u2019lerde bir\u00e7ok durumda geli\u015ftiricilerin imdad\u0131na yeti\u015fen tetik \u00f6zelli\u011fi vard\u0131r. Ne yaz\u0131k ki bu \u00f6zellik MongoDB\u2019de bulunmamakta.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Bellek<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB di\u011fer pop\u00fcler veritabanlar\u0131na k\u0131yasla daha fazla belle\u011fe ihtiya\u00e7 duyuyor. MongoDB 3.0\u2019la birlikte WiredTiger\u2019\u0131n hizmete sunulmas\u0131 bellek sorununu \u00e7\u00f6zm\u00fc\u015f durumda ama WiredTiger bir\u00e7ok uygulama i\u00e7in hen\u00fcz pek uygun de\u011fil.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">DiskTemizleme<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB disk alan\u0131n\u0131 otomatik olarak temizlemiyor. Bu y\u00fczden belgelerin yeniden yaz\u0131lmas\u0131 veya silinmesi durumunda yeni disk alan\u0131 a\u00e7\u0131lm\u0131yor. Bu i\u015flemin manuel olarak yap\u0131lmas\u0131 gerekiyor.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">\u00c7irkin Yanlar\u0131<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Bazen \u00e7irkin k\u00f6t\u00fcden de k\u00f6t\u00fc bir \u015fey olabiliyor. Bu teknolojiyi kullanmaya ba\u015flamadan \u00f6nce \u00e7irkin yanlar\u0131n\u0131 bilmekte de fayda var. Bu \u00e7irkin yanlar\u0131n sizi bu \u00fcr\u00fcn\u00fc kullanmaktan al\u0131koymamas\u0131 gerekiyor ama hayat\u0131n\u0131z\u0131 zorla\u015ft\u0131rabilece\u011fi de bir ger\u00e7ek.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Hiyerar\u015fi<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">E\u011fer bir nesnenin s\u00fcrekli tekrarlanan \u00e7ocuklar\u0131n\u0131n oldu\u011fu bir veri modeliniz varsa (ayn\u0131 nesne tipi, bir nesnenin \u00e7ocu\u011fudur ve bu \u00e7ocuklar \u2018n\u2019 kat\u0131na kadar artabilir) MongoDB belgeleri \u00e7ok \u00e7irkin bir hal alabilir. Bu tekrarlanan g\u00f6m\u00fcl\u00fc belgelerin dizinlenmesi, aranmas\u0131 ve s\u0131n\u0131fland\u0131r\u0131lmas\u0131 \u00e7ok zor olabilir.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Birle\u015ftirmeler<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB\u2019de iki belgenin birle\u015ftirilmesi de pek kolay de\u011fil. MongoDB 3.2 sol d\u0131\u015ftaki birle\u015ftirmeleri desteklese de, bu \u00f6zellik hen\u00fcz olgunla\u015fm\u0131\u015f say\u0131lmaz. Uygulamalar\u0131n\u0131zda tek bir sorgulama i\u00e7indeki \u00e7oklu koleksiyonlardan veri al\u0131p \u00e7\u0131kartman\u0131z gerekiyorsa, bunu yapman\u0131z m\u00fcmk\u00fcn olmayabilir. Bu nedenle \u00e7ok say\u0131da sorgulama yapmak zorundas\u0131n\u0131z ki bu da kodunuzun biraz da\u011f\u0131n\u0131k g\u00f6r\u00fcnmesine neden olabilir.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Dizinleme<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Her ne kadar h\u0131z MongoDB\u2019nin en b\u00fcy\u00fck art\u0131lar\u0131ndan biri olarak g\u00f6sterilse de, bu h\u0131za yaln\u0131zca do\u011fru dizinlemeyi yaparsan\u0131z ula\u015fabiliyorsunuz. E\u011fer k\u00f6t\u00fc yap\u0131lm\u0131\u015f veya bir\u00e7ok par\u00e7adan yap\u0131lm\u0131\u015f ve yanl\u0131\u015f bir d\u00fczende dizilmi\u015f dizinleriniz varsa MongoDB d\u00fcnyan\u0131n en yava\u015f veritabanlar\u0131ndan birine d\u00f6n\u00fc\u015febiliyor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">E\u011fer \u00e7ok say\u0131da \u2018\u015funa g\u00f6re filtrele\u2019 veya \u2018\u015funa g\u00f6re diz\u2019 alanlar\u0131n\u0131z varsa, bir koleksiyon i\u00e7inde \u00e7ok fazla dizininiz olabiliyor ki bu da elbette hi\u00e7 iyi bir \u015fey de\u011fil.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">M\u00fckerrer Veri<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB iyi tan\u0131mlanm\u0131\u015f ili\u015fkileri desteklemedi\u011fi i\u00e7in \u00e7ok say\u0131da m\u00fckerrer veriniz olabiliyor. Bu m\u00fckerrer verileri g\u00fcncellemek \u00e7ok zor bir i\u015f olabilece\u011fi gibi, ACID uyumunun olmamas\u0131 nedeniyle bozuk veri durumuyla da kar\u015f\u0131 kar\u015f\u0131ya kal\u0131nabiliyor.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Sonu\u00e7<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB genel olarak iyi bir veritaban\u0131. Tabii \u00f6nce sizin kullan\u0131m alan\u0131n\u0131za uymas\u0131 gerekiyor. E\u011fer uymuyorsa, bir anda \u00e7ok \u00e7irkin bir hal alabiliyor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB\u2019yi iyi incelemeniz ve mutlaka bir uzmana dan\u0131\u015fman\u0131z gerekir. Do\u011fru kullan\u0131ld\u0131\u011f\u0131 takdirde mutlaka \u00e7ok memnun kalaca\u011f\u0131n\u0131z bir veritaban\u0131.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MongoDB hakk\u0131nda yeterli fikri olmayanlar i\u00e7in s\u00f6ylemek gerekirse, MongoDB bir No-SQL belge veritaban\u0131d\u0131r. Belgeler anahtar de\u011fer \u00e7iftlerini olu\u015fturur ve MongoDB\u2019deki temel veri&hellip;<\/p>\n","protected":false},"author":3,"featured_media":8682,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-8670","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-haberler"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=8670"}],"version-history":[{"count":3,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8670\/revisions"}],"predecessor-version":[{"id":8683,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8670\/revisions\/8683"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media\/8682"}],"wp:attachment":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=8670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=8670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=8670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}