MongoDB
- Okunuşu
- mongo di bi
Kısaca
MongoDB, veriyi tablo satırı yerine esnek, JSON benzeri belgelerde saklayan bir belge veritabanıdır; aynı koleksiyondaki kayıtların alanları farklı olabilir.
MongoDB nedir?
MongoDB, bugün MongoDB, Inc. adını taşıyan şirketin 2009'da ilk kez yayımladığı bir NoSQL belge veritabanıdır. Tablolar, satırlar ve sütunlar yerine koleksiyonlarda belgeler saklar. Belge, içeride BSON denen ikili bir biçimde kaydedilen, iç içe nesneler ve diziler barındırabilen JSON benzeri bir nesnedir; böylece tek bir belge bir kullanıcıyı adresleri ve tercihleriyle birlikte tutabilir.
Sabit bir şema olmadığı için aynı koleksiyondaki belgelerin farklı alanları olabilir ve yeni alanlar bir migration'a gerek kalmadan eklenebilir. Birlikte okunan veri çoğu zaman tek bir belgede birlikte saklanır; bu da join'lerden kaçınıp tipik okumaları hızlı kılar. İndeksler, veriyi gruplayıp dönüştürmek için bir toplama hattı (aggregation pipeline) ve çok belgeli ACID transaction'lar yerleşik olarak gelir.
MongoDB, bir koleksiyonu bir shard anahtarına göre bölen sharding ile makineler arasında yatay ölçeklenir; veriyi de bir replica set içinde birkaç sunucuda kopyalar tutar, böylece biri çökerse yeni bir birincil seçilir. Şirketin yönetilen bulut servisi MongoDB Atlas, onu çalıştırmanın yaygın bir yoludur.
Sık yapılan bir yanlış, esnek şemanın tasarım gerektirmediği düşüncesidir. Doğrulama kuralları olmadan veri tutarsız biçimlere kayar; birçok koleksiyon arasındaki ilişkileri sorgulamak da zahmetli olabilir. MongoDB doğası gereği belge biçimindeki veriye uyar; kayıtlar arasında çok sayıda bağlantı olan, güçlü biçimde ilişkisel veriler çoğu zaman ilişkisel bir veritabanına daha iyi uyar.
Önemli noktalar
- MongoDB, JSON benzeri belgeleri (BSON) tablolardaki satırlar yerine koleksiyonlarda saklar.
- Bir koleksiyondaki belgelerin farklı alanları olabilir.
- Birlikte okunan veri genellikle birlikte saklanır; join'lere gerek kalmaz.
- Sharding ile yatay ölçeklenir, replica set'lerle erişilebilir kalır.
- Esnek şemalar da doğrulama ve dikkatli tasarım gerektirir.
Örnek
import { MongoClient } from "mongodb";
const client = new MongoClient("mongodb://localhost:27017");
const users = client.db("shop").collection("users");
// A document can nest objects and arrays
await users.insertOne({
name: "Ada",
email: "ada@example.com",
addresses: [{ city: "Istanbul", zip: "34000" }],
});
const ada = await users.findOne({ email: "ada@example.com" });Sık sorulan sorular
MongoDB ilişkisel bir veritabanı mı?
Hayır. MongoDB bir NoSQL belge veritabanıdır: tablolardaki satırlar yerine koleksiyonlarda belgeler saklar ve sabit bir şema gerektirmez.
MongoDB transaction'ları destekler mi?
Evet. Tek belgelik yazmalar her zaman atomikti; 4.0 sürümünden bu yana MongoDB çok belgeli ACID transaction'ları da destekler.
MongoDB ücretsiz mi?
Community Server, Server Side Public License (SSPL) ile ücretsiz kullanılabilir. Şirket ayrıca bir kurumsal sürüm ve ücretsiz katmanı olan, yönetilen Atlas servisini de satar.
Sık karşılaştırılanlar
İlgili sayfalar
- Doküman VeritabanıVeritabanları, s. 9Doküman veritabanı, kayıtları genellikle JSON benzeri, kendi içinde bütün dokümanlar olarak saklayan, alanları kayıttan kayda değişebilen NoSQL veritabanıdır.
- NoSQLVeritabanları, s. 21NoSQL, veriyi ilişkisel tablolar yerine doküman, anahtar-değer çifti, geniş sütun ya da çizge gibi başka modellerde saklayan veritabanı ailesidir.
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
- ShardingVeritabanları, s. 28Sharding, bir veritabanının verisini shard adı verilen birkaç sunucuya bölerek ölçeklendirme yöntemidir; her biri toplamın yalnızca bir kısmını saklar ve işler.
- Veritabanı ReplikasyonuVeritabanları, s. 41Veritabanı replikasyonu, verinin bir sunucudan diğerlerine sürekli kopyalanmasıdır; böylece birkaç sunucu güvenilirlik ve ölçek için aynı veriyi tutar.
- Veritabanı ŞemasıVeritabanları, s. 42Veritabanı şeması, bir veritabanının tablolarını, sütunlarını, veri türlerini, ilişkilerini ve saklanan verinin uyması gereken kuralları tanımlayan planıdır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin