Tabii ki! İşte bir MongoDB mülakatında karşılaşabileceğiniz bazı potansiyel sorular ve
yanıtları.
Soru 1: MongoDB nedir?
Cevap: MongoDB, verileri JSON benzeri belgelerle depolayan bir NoSQL veritabanıdır. Bu sayede, veri modeli uygulamaların hızlı değişen gereksinimlerini kolayca sürdürebilir. İlişkisel veritabanı sistemlerinden farklı olarak MongoDB, ölçeklenebilirlik ve esneklik sunar ve büyük miktarda veriyi işlemek için idealdir.
Soru 2: MongoDB’nin diğer veritabanı türlerine kıyasla avantajları nelerdir?
Cevap: MongoDB’nin avantajları arasında ölçeklenebilirlik, performans, esneklik ve daha geniş veritabanı dağıtımı bulunur. Verilerin JSON benzeri belgelerle depolanması, uygulamanın gereksinimlerine göre veri modelini dinamik olarak değiştirebilmeyi mümkün kılar. Buna ek olarak, MongoDB, yüksek okuma ve yazma operasyonlarını destekler ve büyük veritabanları için dağıtılmış bir yapı sağlar.
Soru 3: NoSQL nedir ve MongoDB'yi diğer NoSQL veritabanlarından ne ayırır? Cevap:
NoSQL, Not Only SQL'in kısaltmasıdır ve geleneksel ilişkisel veritabanı sistemlerinin sınırlamalarını aşmak için tasarlanmış bir veritabanı türüdür. MongoDB'yi diğer NoSQL veritabanlarından ayıran özellikler arasında esnek şema modeli, otomatik şematik parçalama (sharding), tam metin arama özelliği ve ikincil indekslerin kullanımı bulunur.
Soru 4: MongoDB'de belge nedir?
Cevap: MongoDB'deki bir belge, JSON benzeri bir biçimde veriyi temsil eden bir veri yapıdır. Her belge, eşsiz bir şekilde tanımlanabilen bir dizi alan ve değer çifti içerir. Belge ayrıca iç içe belgeler ve dizi değerlerini de içerebilir. Soru 5: MongoDB'de indeksleme ne işe yarar? Cevap: MongoDB'de indeksleme, veritabanı sorgu performansını artırır. Bir indeks, belirli bir alanın veya alanların değerlerini hızlı bir şekilde bulmayı sağlar. Bu sayede, indekslenmiş alanlarda yapılan sorguların sonuçlarını daha hızlı bir şekilde getirir. Ancak, indekslemeyi fazla kullanmak disk alanı ve bellek kullanımını artırabilir, bu nedenle dengelemek önemlidir.
Soru 6: MongoDB'de CAP Teoremi nedir?
Cevap: CAP Teoremi, bir dağıtılmış bilgisayar sistemlerinin aynı anda Consistency (Tutarlılık), Availability (Kullanılabilirlik) ve Partition tolerance (Bölüm toleransı) özelliklerini tam anlamıyla sağlayamayacağını belirtir. MongoDB, CAP teoremine göre bölüm toleransı ve tutarlılık odaklıdır.
Soru 7: MongoDB'de Sharding (parçalama) nedir ve ne zaman kullanılır?
Cevap: MongoDB'deki sharding, büyük veri setlerinin ve yüksek trafikli uygulamaların ölçeklenebilirliğini sağlamak için kullanılan bir yöntemdir. Veritabanınızın büyüklüğü ve istek sayısı arttıkça, tek bir sunucu üzerindeki yükü azaltmak için verileri birden fazla sunucu arasında dağıtmak gerekebilir. Bu durumda sharding devreye girer. Verileri birden çok sunucu arasında parçalara ayırarak, iş yükünü dengeler ve performansı artırır.
Soru 8: MongoDB'de GridFS nedir?
Cevap: GridFS, MongoDB'de büyük boyutlu dosyaları depolamak ve almak için kullanılan bir sistemdir. 16MB'dan büyük dosyaları, MongoDB'de depolamak için dosyayı birden fazla belgeye böler ve bunları daha sonra birleştirir. GridFS, büyük boyutlu dosyaların veritabanında yönetilmesini kolaylaştırır.
Soru 9: MongoDB'deki replication (replikasyon) nedir ve ne için kullanılır?
Cevap: MongoDB'deki replikasyon, veri güvenliği ve yüksek erişilebilirlik sağlamak için kullanılır. Birincil sunucu (Primary) hizmet dışı kaldığında, bir yedek sunucu (Secondary) hemen birincil sunucunun rolünü alır. Replikasyon, verinin birden fazla kopyasını sağlayarak, donanım arızası durumunda bile veri kaybını önler.
Soru 10: MongoDB'de denormalizasyon nedir?
Cevap: MongoDB'deki denormalizasyon, belgelerin, sorgulamayı hızlandırmak için gereken tüm bilgileri içerecek şekilde tasarlanmasıdır. Denormalizasyon, verilerin birden çok yerde depolandığı ve veritabanı performansını optimize etmek için kullanılan bir tekniktir. Bu teknik, MongoDB'nin belge tabanlı yapısına iyi uyar ve genellikle işlem yoğunluklu uygulamalar için avantaj sağlar. Soru 11: MongoDB'deki kapsülleme nedir ve nasıl kullanılır? Cevap: MongoDB'deki kapsülleme, bir belgedeki alanların diğer belgeleri veya belge dizilerini içermesi anlamına gelir. Bu, genellikle belgeler arasındaki ilişkileri modellemek için kullanılır ve MongoDB'nin belge tabanlı doğasına iyi bir şekilde uyar.
Soru 12: MongoDB'de iki belge arasında ilişki nasıl kurulur?
Cevap: MongoDB'de ilişkiler, genellikle belgelerin iç içe geçmesi veya referans kullanılması ile kurulur. Belgeleri iç içe geçirerek, bir belgenin içinde başka belgeler oluşturabilir ve bunları birbirine bağlayabilirsiniz. Alternatif olarak, bir belge, başka bir belgenin kimliğini (ID'sini) referans olarak kullanabilir, böylece iki belge arasında bir ilişki kurulmuş olur.
Soru 13: MongoDB'nin Aggregation Framework'u nedir?
Cevap: MongoDB'nin
Aggregation Framework'u, belgeler üzerinde işlem yapmak ve döndürülen sonuçları
hesaplamak için kullanılan bir sistemdir. MapReduce fonksiyonlarına bir alternatif olarak,
daha basit bir arabirim ve daha iyi performans sunar. Bu çerçeve, veri işleme boru hattı
konseptine dayanır, burada birden çok farklı işlem, belgeler üzerinde sıralı olarak
uygulanır.
Soru 14: MongoDB'de ACID işlemleri nelerdir ve nasıl çalışırlar?
Cevap: ACID, Atomicity (Atomiklik), Consistency (Tutarlılık), Isolation (İzolasyon) ve Durability (Dayanıklılık) kısaltmalarını temsil eder. MongoDB 4.0 ve sonrası, çok belgeli ACID işlemlerini destekler. Bu, birden çok belge üzerindeki bir dizi değişikliği, birlikte atomik bir işlem olarak gerçekleştirebileceğiniz anlamına gelir. Bu işlemler, bir işlemin tüm değişikliklerinin tamamen uygulandığı veya hiçbirinin uygulanmadığı anlamına gelen atomikliği sağlar.
Soru 15: MongoDB'de map-reduce nedir ve nasıl kullanılır?
Cevap: Bu teknik, özellikle büyük veri işleme görevlerinde verimlidir ve dağıtılmış hesaplama yeteneklerini kullanır. MongoDB, JavaScript fonksiyonlarını kullanarak map ve reduce işlemlerini tanımlamanıza izin verir.
Soru 16: MongoDB'de cursor nedir?
Cevap: MongoDB'de bir cursor, veritabanından sorgusonuçları üzerinde gezinmek için kullanılan bir işaretçidir. Sorgu sonuçlarının büyük olduğu durumlarda, sonuçlar küçük parçalar halinde geri döner ve cursor, bu sonuçların her birini bir seferde almak için kullanılır.
Soru 17: MongoDB'de bir koleksiyon neyi temsil eder?
Cevap: MongoDB'de bir
koleksiyon, belgelerin gruplandığı bir birimdir. İlişkisel veritabanındaki bir tabloya benzer,
ancak MongoDB'nin esnek şeması nedeniyle, bir koleksiyonda bulunan belgelerin tam
olarak aynı yapısına sahip olması gerekmez.
Soru 18: MongoDB'de ne tür indeks türleri vardır?
Cevap: MongoDB'de çeşitli indeks türleri mevcuttur: Tek alan, Bileşik, Çoklu alan, Çoklu anahtar, Coğrafi, Metin, Hashed indeksler ve daha fazlası. Her indeks türünün belirli bir kullanım durumu vardır ve sorgu performansını optimize etmek için kullanılır.
Soru 19: MongoDB'deki upsert işlemi nedir?
Cevap: Upsert işlemi, belirli bir belgenin güncellenmesi veya (eğer mevcut değilse) oluşturulmasıdır. Bu, belgenin var olup olmadığından bağımsız olarak bir belgenin güncellenmesini sağlar.
Soru 20: MongoDB'deki Projection nedir?
Cevap: Projection, MongoDB'deki bir sorgunun sonucunda dönen belge alanlarını sınırlamak için kullanılır. Bazı durumlarda, belgelerin yalnızca belirli alanlarının gerektiği olabilir. Bu durumlarda, projection kullanarak yalnızca ilgili alanların dönmesini sağlayabiliriz.
Soru 21: MongoDB'de _id alanı ne anlama gelir?
Cevap: MongoDB'de, _id alanı belgenin birincil anahtarını temsil eder. Her MongoDB belgesi, eşsiz bir _id alanına sahip olmalıdır. Bu alan otomatik olarak oluşturulur ve genellikle bir ObjectId nesnesi içerir, ancak siz de kendi özel _id değerinizi belirleyebilirsiniz.
Soru 22: MongoDB'de bir ObjectId nedir?
Cevap: MongoDB'de bir ObjectId, bir belgenin _id alanı için varsayılan değerdir. Bu, 12 byte boyutunda bir değerdir ve bir zaman damgası, makine kimliği, işlem kimliği ve bir sayaç değeri içerir. Bu kombinasyon, ObjectId'nin genellikle eşsiz olmasını sağlar.
Soru 23: MongoDB'de hangi tür sorgu operatörleri kullanılabilir?
Cevap: MongoDB, bir dizi farklı sorgu operatörü sunar. Bunlar arasında karşılaştırma operatörleri ($eq, $ne, $gt, $gte, $lt, $lte, $in, $nin), mantıksal operatörler ($or, $and, $not, $nor), dizin operatörleri ($all, $size, $elemMatch) ve daha fazlası bulunur.
Soru 24: MongoDB'de normalization (normalize etme) ne anlama gelir?
Cevap: Normalization, MongoDB'de belgeler arasında veri tekrarını en aza indirmek için kullanılan bir tekniktir. Belgelerdeki verilerin tekrarını azaltmak için, bir belgenin diğer belgeleri referans olarak kullanmasını sağlayabiliriz. Bu durumda, bir belgedeki değişiklikler, o belgeyi referans alan tüm belgeleri etkileyecektir.
Soru 25: MongoDB'deki covered query nedir?
Cevap: Covered query, MongoDB'de, sorgunun döndürdüğü tüm alanların indeksli olduğu bir sorgu türüdür. Bu tür bir sorgu, veri dosyasını hiç okumadan indeksten tüm gerekli bilgileri alabilir, bu da performansı önemli ölçüde artırabilir.
Soru 26: MongoDB'de CRUD operasyonları nelerdir?
Cevap: MongoDB'de CRUD operasyonları, belgelerle çalışmak için kullanılan temel işlemlerdir: Create (oluşturma), Read (okuma), Update (güncelleme) ve Delete (silme). Bu işlemler, veritabanındaki belgeleri yönetmek ve manipüle etmek için kullanılır.
Soru 27: MongoDB'deki "mongod" ve "mongo" arasındaki fark nedir?
Cevap: "mongod" MongoDB'nin sunucu sürecidir ve MongoDB örneğini çalıştırır. Öte yandan, "mongo" MongoDB'nin kabuk (shell) programıdır ve kullanıcıların MongoDB örneğiyle etkileşim kurmasını sağlar. Bir "mongod" süreci çalıştığında, kullanıcılar "mongo" kabuğunu kullanarak bu sürece bağlanabilir ve veritabanı işlemlerini gerçekleştirebilirler.
Soru 28: MongoDB'de belge boyutu sınırı nedir?
Cevap: MongoDB'de, bir belgenin maksimum boyutu 16 megabayttır. Bu sınır, belgelerin büyük dosyalar veya karmaşık veri yapıları olmasını önler. Eğer belgelerin boyutu bu sınırı aşıyorsa, genellikle GridFS gibi özellikler kullanılır veya belgeler daha küçük belgelere bölünür.
Soru 29: MongoDB'de bir "namespace" nedir?
Cevap: MongoDB'de bir "namespace", bir veritabanının ve bu veritabanı içindeki bir koleksiyonun tam adını belirtir. Örneğin, "myDatabase.myCollection" bir namespace olabilir. MongoDB'de her belge, içinde bulunduğu koleksiyon ve veritabanının adını belirten bir namespace'e sahiptir.
Soru 30: MongoDB'deki "embed" ve "reference" stratejileri arasındaki fark nedir?
Cevap: Bu stratejiler, MongoDB'deki belgeler arasındaki ilişkileri modellemek için kullanılır. "Embed" stratejisi, bir belgenin başka bir belgeyi içermesi anlamına gelir. Bu strateji, belgeler arasındaki ilişkinin sıkı olduğu ve genellikle birlikte sorgulandığı durumlarda kullanılır. Öte yandan, "reference" stratejisi, bir belgenin başka bir belgeyi referans olarak kullanması anlamına gelir. Bu strateji, belgeler arasındaki ilişkinin daha gevşek olduğu ve belgelerin bağımsız olarak sorgulanabileceği durumlarda kullanılır.
Soru 31: MongoDB'de GridFS nedir?
Cevap: GridFS, MongoDB'de 16MB'ın üzerindeki büyük boyutlu dosyaları depolamak için kullanılan bir özelliktir. GridFS, büyük dosyaları bir dizi daha küçük belgeye ("parçalar" veya "chunks" olarak adlandırılır) böler ve bunları veritabanında depolar. GridFS, bu parçaları okurken ve yazarken otomatik olarak birleştirir ve böylece dosyaların veritabanında sorunsuz bir şekilde saklanmasını sağlar.
Soru 32: MongoDB'de CAP Teoremi'ne göre hangi iki garantisi vardır?
Cevap: CAP Teoremi, bir dağıtılmış veritabanı sisteminin aynı anda Konsistans (Consistency), Erişilebilirlik (Availability) ve Bölüm Toleransı (Partition Tolerance) olmak üzere üç özelliği aynı anda sağlayamayacağını belirtir. MongoDB, Bölüm Toleransı ve Konsistans garantisi sağlar. Ancak, Bölüm Toleransı garantisi, ağ bölümlenmesi durumunda Konsistans garantisi üzerinde öncelikli olur.
Soru 33: MongoDB'deki Replica Set nedir?
Cevap: MongoDB'deki Replica Set, aynı veri setini tutan iki veya daha fazla mongod süreci grubudur. Replica setler, veri güvenilirliği ve yüksek kullanılabilirlik sağlar. Bir replica setteki tüm veri değişiklikleri, birincil (primary) düğümden diğer ikincil (secondary) düğümlere replike edilir.
Soru 34: MongoDB'deki Sharding nedir ve ne için kullanılır?
Cevap: Sharding, MongoDB'de büyük veri setlerini yönetmek için kullanılan bir özelliktir. Sharding, veritabanını bir dizi küçük parçaya ("shard" olarak adlandırılır) böler. Her shard, belirli bir veri alt kümesini depolar ve bu, verinin çok büyük ölçekte dağıtılmasını ve ölçeklenmesini sağlar.
Soru 35: MongoDB'de bir index ne zaman kullanılır?
Cevap: MongoDB'deki bir indeks, sorguların veritabanındaki belgeleri daha hızlı bir şekilde bulmasını sağlar. İndeksler genellikle sorguların belirli bir alan veya alanlar üzerinde sıklıkla arama yaptığı durumlarda kullanılır. İndekslemek, sorgu performansını önemli ölçüde artırabilir, ancak aynı zamanda ek depolama alanı gerektirir ve belge yazma işlemlerini yavaşlatabilir.
Soru 36: MongoDB'de "aggregation" nedir?
Cevap: Aggregation, MongoDB'deki belgeler üzerinde çeşitli işlemleri gerçekleştirmek için kullanılan bir yöntemdir. Bu işlemler genellikle verileri gruplama, sıralama, filtreleme veya diğer biçimlerde işleme içerir. Aggregation, belgeler üzerinde karmaşık işlemler yapmayı ve genellikle yeni, özet belgeler oluşturmayı mümkün kılar.
Soru 37: MongoDB'deki "journaling" nedir?
Cevap: Journaling, MongoDB'nin veritabanı işlemlerinin güvenilirliğini artırmak için kullandığı bir özelliktir. Journaling aktif olduğunda, MongoDB tüm değişiklikleri önce bir günlük dosyasına (journal file) yazar. Bu, sistemin çökmesi durumunda bile, bu günlük dosyasının yeniden oynatılmasını ve veritabanının son bilinen iyi durumuna geri getirilmesini sağlar.
Soru 38: MongoDB'nin "lazy loading" özelliği nedir?
Cevap: Lazy loading, MongoDB'nin belirli durumlarda kullanabileceği bir özelliktir. Bu durumlarda, MongoDB, belgelerin sadece gerçekten gerekli olduklarında belleğe yüklenmesini sağlar. Bu, hafıza kullanımını optimize etmeye yardımcı olabilir, ancak belgenin ilk erişiminde ek bir gecikme ile sonuçlanabilir.
Soru 39: MongoDB'de bir index nasıl oluşturulur?
Cevap: MongoDB'de bir index, belgelerin belirli bir alan veya alanları üzerinde oluşturulur. Bunun için genellikle "createIndex" işlemi kullanılır. Örneğin, "myCollection.createIndex({fieldName: 1})" ifadesi, belgelerin "fieldName" alanı üzerinde bir indeks oluşturur.
Soru 40: MongoDB'de "mongos" nedir?
Cevap: "mongos" MongoDB'deki bir shard yönlendirme hizmetidir. Shard edilmiş bir altyapıda, kullanıcılar ve uygulamalar doğrudan "mongos" sürecine bağlanır ve "mongos", sorguları ve işlemleri ilgili shard'lara yönlendirir. Bu, shard edilmiş bir MongoDB altyapısının genel yönetimini ve kullanılabilirliğini kolaylaştırır.
Soru 41: MongoDB'deki "upsert" işlemi nedir?
Cevap: "Upsert", MongoDB'de bir belgeyi güncelleme veya var olmayan bir belgeyi oluşturma işlemidir. Eğer belge zaten varsa, belge güncellenir. Eğer belge yoksa, yeni bir belge oluşturulur. Bu işlem, bir belgenin varlığını kontrol etmek ve gerekliyse oluşturmak için ayrı ayrı adımlar gerektirmemesi nedeniyle verimli olabilir.
Soru 42: MongoDB'deki "cursor" nedir?
Cevap: MongoDB'deki bir "cursor", veritabanından belgeleri geri getirirken sonuç setini yinelemek için kullanılan bir nesnedir. Bir sorgu gerçekleştirildiğinde, MongoDB bir cursor nesnesi döndürür ve bu cursor, sonuç setindeki belgeler üzerinde yineleme yapar.
Soru 43: MongoDB'de nasıl bir transaction oluşturulur?
Cevap: MongoDB 4.0 ve sonrasında, çoklu belge işlemleri oluşturmak mümkün hale gelmiştir. Bir işlem oluşturmak için, önce bir oturum başlatılır ("startSession"), daha sonra bu oturum üzerinde bir işlem başlatılır ("startTransaction"). Ardından, bu işlem kapsamında bir veya daha fazla işlem gerçekleştirilir ve işlem ya onaylanır ("commitTransaction") ya da geri alınır ("abortTransaction").
Soru 44: MongoDB'deki "projection" nedir?
Cevap: Projection, MongoDB'de bir sorgunun döndürdüğü belgelerin hangi alanları içereceğini belirleyen bir terimdir. Projection, sorguların yalnızca belirli alanları döndürmesini ve böylece ağ trafiğini ve istemci tarafındaki işlem yükünü azaltmasını sağlar.
Soru 45: MongoDB'deki "ttl index" (Time-To-Live index) nedir?
Cevap: TTL index, MongoDB'deki belgelerin belirli bir süre sonunda otomatik olarak silinmesini sağlar. Bu özellik genellikle geçici verileri depolamak için kullanılır, örneğin oturum bilgileri veya geçmiş log kayıtları. TTL index, belgelerin yaşam süresini belirten bir süre (saniye cinsinden) ile birlikte oluşturulur.