MongoDB

MongoDB, her kaydı kendi esnek belgesi olarak saklayan bir veritabanıdır; böylece iki ürün aynı sabit kalıba sokulmadan çok farklı bilgiler taşıyabilir.

Şu adla da bilinir NoSQL veritabanı belge veritabanı Mongo

Tanım

MongoDB verilerinizi tuttuğunuz bir yerdir ve onu farklı kılan şey, verileri tuttuğu biçimdir. Çoğu veritabanı bir hesap tablosu gibi çalışır; orada her satırda aynı sütunlar vardır ve her satır onları doldurmak zorundadır. MongoDB ise her kaydı tek başına, belge adı verilen küçük bir blokta tutar, bu yüzden her belge yalnızca gerçekten ihtiyaç duyduğu alanları taşır.

Bunun neden önemli olduğunu bir ürün kataloğu gösterir, çünkü ayakkabının numarası ve rengi varken dizüstü bilgisayarın işlemcisi ve ekran boyutu vardır. Bir paket kahve ikisine de benzemez, zira onun ihtiyacı kavrulma tarihidir. Üçünü tek bir tabloya sokarsanız neredeyse her üründe boş kalan onlarca sütun elde edersiniz ki MongoDB tam da bu dağınıklığı önler. Orada ayakkabı ayakkabıya ait şeyleri, dizüstü de kendine ait şeyleri saklar ve ikisinin birbirinden haberi olmaz.

Bu özgürlüğün bir bedeli var ve kimse sizi bu konuda uyarmıyor. İki kaydın birbiriyle çelişmesini engelleyen hiçbir şey yok, dolayısıyla bir ürün fiyatını 100 sayısı olarak kaydederken bir sonraki aynı fiyatı "100" metni olarak kaydedebilir. İkisi de itirazsız içeri girer. Sonra biri kataloğu fiyata göre sıralar ve liste yanlış çıkar, çünkü metin harf harf karşılaştırılır ve "100", "9"dan önce gelir. Kurallar yok olmadı. Yalnızca ekibinizin yazdığı yazılımın içine taşındı, bu da daha az değil daha çok iş demek. Linkysoft bu yüzden kuralları bir web uygulaması projesinin ilk günü belirler, çünkü onları sonradan bir milyon eski kayıt üzerinde düzeltmek kötü bir haftadır.

Yani MongoDB, kayıtlar gerçekten birbirinden farklıysa yakışır; ürün katalogları, form yanıtları, hareket kayıtları ve işin değişmesiyle biçimi değişen her şey buna girer. Verinin derli toplu olduğu ve hesabın tam tutması gereken yerlerde kötü durur, bu yüzden faturalarda ve ödemelerde sıradan tablo veritabanı daha güvenlidir. Pek çok sistem de ikisini birlikte çalıştırır. Storek gibi bir dükkân sistemi, biçimi sürekli değişen kataloğu asla yanlış yuvarlanmaması gereken paranın yanında taşır.

İmzadan önce her tedarikçiye tek bir soru sorun, o da bir alanın anlamı gelecek yıl değişmek zorunda kalırsa ne olacağıdır. Cevap yeni bir alan yazmaya başlayacakları yönündeyse, eski kayıtları kimin düzelteceğini de sorun. Aynı soruyu sonra telefon için tekrarlayın, çünkü çevrimdışı çalışmayı saklayan bir mobil uygulama belgeleri günlerce cihazda tutar. O cihazların bir kısmı hâlâ geçen yılın sürümünü çalıştırır, bu yüzden Linkysoft bunu veritabanı sorusu değil tasarım sorusu olarak ele alır. Cevabı da çoğu zaman sakin bir ikinci yılla zorlu bir ikinci yıl arasındaki farktır.

MongoDB hakkında sorular

MongoDB, MySQL'den daha mı iyi?
Hiçbiri diğerinden iyi değil. Farklı biçimleri tutarlar. Tüm kayıtlar aynı görünüyorsa ve toplamlar tam tutmalıysa MySQL güçlüdür. Kayıtlar gerçekten farklıysa MongoDB güçlüdür.
MongoDB ücretsiz mi?
Kendi sunucunuza kurabileceğiniz ücretsiz bir sürüm var. Bir de şirketin sizin adınıza işlettiği ve kullanıma göre ücret aldığı hizmet var. Projelerin çoğu ücretsiz sürümle başlar.
Verilerimi MongoDB'den sonradan çıkarabilir miyim?
Evet. Başka her sistemin okuyabileceği sıradan metin dosyalarına aktarır. Zor olan aktarma değil: her alanın anlamı yazılımınızın içinde durur, dolayısıyla o da taşınmak zorundadır.
MongoDB'nin yine de yedeğe ihtiyacı var mı?
Evet, her gün ve bir kopya başka bir yerde durmalı. Esnek bir veritabanı, silinen bir kayda ya da hatalı bir güncellemeye karşı diğerlerinden daha korunaklı değildir.
MongoDB küçük bir işletme için uygun mu?
Belirleyici olan büyüklük değil, verinin biçimidir. Beş yüz çok farklı ürünü olan bir dükkâna iyi uyabilir; düzenli hasta kayıtları olan bir kliniğe genelde uymaz.

Bunun projenize nasıl uyduğundan hâlâ emin değil misiniz?

Ne inşa ettiğinizi bize anlatın, size sade bir dille yanıt verelim.