ServBay’de MongoDB Veritabanını Kurma ve Yönetme
MongoDB, esnek yapısı, güçlü sorgu yetenekleri ve yatayda ölçeklenebilirliği ile tanınan lider bir NoSQL belge veritabanıdır. Modern uygulama geliştirmede en popüler tercihlerden biridir. ServBay, macOS geliştiricileri için benzersiz bir entegre ortam sunarak, birden çok MongoDB sürümünün kurulmasını, yapılandırılmasını ve yönetilmesini büyük ölçüde kolaylaştırır. Ayrıca, temel tüm komut satırı araçlarıyla eksiksiz ve verimli bir yerel geliştirme/test çalışma istasyonu kurmanızı sağlar.
Genel Bakış: Neden ServBay Üzerinde MongoDB Kullanmalı?
ServBay sadece bir başlatıcı değil, eksiksiz bir geliştirme ortamı yöneticisidir. MongoDB için bu, şunları ifade eder:
- Çoklu Sürüm Birlikte Var Olma ve Geçiş: Tek tıkla birden fazla MongoDB sürümünü (ör. 5.0, 6.0, 7.0, vb.) yükleyip çalıştırabilir, proje ihtiyacınıza göre kolaylıkla geçiş yapabilirsiniz. Ortam çakışmalarından endişe etmenize gerek kalmaz.
- Grafiksel Yapılandırma: Karmaşık yapılandırma dosyalarını elle düzenlemeye elveda deyin. ServBay’in görsel arayüzünde MongoDB’nin port, IP, veri dizini gibi temel parametrelerini sezgisel olarak ayarlayabilirsiniz.
- Entegre Araç Zinciri: ServBay, resmi MongoDB Shell (
mongosh
) ve MongoDB Database Tools’u otomatik olarak kurar ve yönetir. Böylece,mongostat
,mongotop
,mongodump
vemongorestore
gibi tüm anahtar araçları anında kullanmaya başlayabilirsiniz.
Bu rehber, kurulumdan ileri seviye bilgiye kadar tüm süreci kapsayan adım adım bir yol haritası sunar. Kurulum, yapılandırma, etkileşimli yönetim, anlık performans izleme, veri yedekleme ve geri yükleme gibi tüm kritik aşamaları içermektedir.
1. MongoDB Servisini Kurma ve Yapılandırma
Adım 1: MongoDB Paketini Kurmak
ServBay üzerinde MongoDB’yi kurmak ilk adımdır.
ServBay uygulamasını açın.
Sol menüden Paketler (Packages) sekmesine tıklayın.
Paket listesinde, aşağıya kaydırarak
Databases
kategorisine gidin veMongoDB
bölümünü bulun.Projenizin ihtiyacı olan MongoDB sürümünü seçin (örneğin,
MongoDB 7.0
) ve sağındaki yükleme butonuna tıklayın. ServBay gerekli dosyaları indirip kurulumu tamamlayacaktır.
Adım 2: MongoDB Servisini Ayrıntılı Şekilde Yapılandırmak
Kurulum tamamlandıktan sonra, MongoDB hizmetinin detaylı ayarlarını yapabilirsiniz.
Sol menüden Databases -> MongoDB -> Yeni yüklediğiniz sürümü (ör.
MongoDB 7.0
) seçin.Bu ekranda şu başlıca yapılandırmaları özelleştirebilirsiniz:
- Bind IP (IP Bağlama): MongoDB servisinin dinlediği ağ adresidir. Varsayılan
127.0.0.1, ::1
yerel geliştirme için en güvenli ayardır; yalnızca kendi bilgisayarınızdaki uygulamalar bağlanabilir. - Bind Port (Port Bağlama): Veritabanı için bağlantı portudur. MongoDB’nin varsayılan portu
27017
’dir, özel bir gereksinim yoksa bunu değiştirmek önerilmez. - Socket: Unix socket dosya yoludur. Yerel bağlantılar için socket kullanmak, ağ katmanını atladığı için TCP/IP’ye göre daha hızlıdır.
- Data dir (Veri Dizini): MongoDB’nin tüm veritabanı dosyalarını (koleksiyonlar, indeksler vb.) sakladığı yerel disk yoludur. ServBay burada mantıklı bir varsayılan belirler. Sağdaki klasör simgesine tıklayarak Finder üzerinden bu dizine erişebilirsiniz.
- Additional Parameters (Ek Parametreler): Gelişmiş ayar bölgesidir. MongoDB’nin diğer başlangıç parametrelerini ekleyebilirsiniz; örneğin erişim kontrolünü etkinleştirmek isterseniz
--auth
yazabilirsiniz.
- Bind IP (IP Bağlama): MongoDB servisinin dinlediği ağ adresidir. Varsayılan
Adım 3: MongoDB Servisini Başlatmak
- Tüm yapılandırmaları tamamladıktan sonra sağ alt köşedeki Kaydet (Save) butonuna mutlaka tıklayın.
- Paketler (Packages) sayfasına dönün, yapılandırdığınız MongoDB sürümünü bulun ve hizmeti başlatmak için sağındaki gri anahtarı açın.
- Anahtar yeşile döndüğünde ve durum ışığı yanarsa MongoDB örneğiniz başarıyla çalışıyor ve bağlantılar için hazırdır.
2. Etkileşimli Yönetim: MongoDB Shell (mongosh
)’a Hakim Olun
mongosh
, MongoDB’nin resmi modern komut satırı arayüzüdür. Söz dizimi vurgulama, akıllı otomatik tamamlama, komut geçmişi ve gelişmiş betik fonksiyonları ile veritabanıyla çalışmanın en iyi yoludur.
MongoDB Shell Kurulumu
ServBay, mongosh
’u bağımsız bir paket olarak sunar ve ihtiyacınıza göre kurulabilir.
- Paketler (Packages) sayfasında
MongoDB Shell
’i bulun. - Sağındaki yükleme butonuna tıklayın. Kurulumdan sonra,
mongosh
ServBay’in kontrol ettiği terminal ortamının tamamında kullanılabilir olur.
mongosh
Nasıl Kullanılır
ServBay ortamıyla uyumlu herhangi bir terminalde (macOS Terminal veya iTerm2 gibi) mongosh
komutunu çalıştırabilirsiniz.
Temel Bağlantı: Terminali açıp, yerelde çalışan MongoDB örneğine (port
27017
) bağlanmak için aşağıdaki basit komutu girin:bashmongosh
1Daha ayrıntılı bir bağlantı metniyle de kullanabilirsiniz:
bashmongosh "mongodb://127.0.0.1:27017"
1Etkileşimli Kullanım Örnekleri (CRUD Uygulaması): Bağlantı sağlandığında, güçlü bir etkileşimli JavaScript ortamına giriş yapmış olursunuz. Şimdi, tam anlamıyla bir örnek üzerinden kullanımını inceleyelim.
1. Adım: Veri Tabanı Seçimi veya Oluşturulması
javascript// Bu komut, servbay-demo veritabanına geçiş yapar. Eğer yoksa, ilk veri yazımında otomatik olarak oluşturulur. use servbay-demo
1
22. Adım: Koleksiyon Oluşturma ve Veri Ekleme (Create)
javascript// Tek bir kullanıcı dokümanı ekle db.users.insertOne({ _id: 1, name: "Alice", email: "alice@servbay.demo", age: 30, tags: ["developer", "php", "backend"], joined_date: new Date("2023-01-15") }) // Daha zengin sorgular için birden fazla kullanıcı ekle db.users.insertMany([ { _id: 2, name: "Bob", email: "bob@servbay.demo", age: 25, tags: ["designer", "ui", "frontend"] }, { _id: 3, name: "Charlie", email: "charlie@servbay.demo", age: 35, tags: ["developer", "python", "data"] }, { _id: 4, name: "Diana", email: "diana@servbay.demo", age: 29, tags: ["developer", "nodejs", "backend"] } ])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
163. Adım: Veri Sorgulama (Read)
javascript// Koleksiyondaki tüm dökümanları sorgula ve .pretty() ile biçimli göster db.users.find().pretty() // Koşullu sorgu: Yaşı 28’den büyük olan geliştiricileri bul db.users.find({ age: { $gt: 28 }, tags: "developer" }) // Belirli alanları döndür: Sadece isim ve e-posta db.users.find({}, { name: 1, email: 1, _id: 0 })
1
2
3
4
5
6
7
84. Adım: Veri Güncelleme (Update)
javascript// Tek doküman güncelle: Alice'e 'lead' etiketi ekle ve yaşını güncelle db.users.updateOne( { name: "Alice" }, { $set: { age: 31 }, $addToSet: { tags: "lead" } } // $addToSet etikette tekrar olmasını önler ) // Çoklu dokümanları güncelle: Tüm 'backend' geliştiricilere 'active' durumu ekle db.users.updateMany( { tags: "backend" }, { $set: { status: "active" } } )
1
2
3
4
5
6
7
8
9
10
115. Adım: Veri Silme (Delete)
javascript// Bir dokümanı sil db.users.deleteOne({ name: "Bob" }) // Silindiğini kontrol et db.users.find({ name: "Bob" }).count() // 0 döndürmeli
1
2
3
4
5
3. Gerçek Zamanlı İzleme ve Yönetim: MongoDB Veritabanı Araçlarını Kullanın
ServBay, aynı zamanda MongoDB Database Tools
paketini de içerir. Bu paket; ileri seviye yönetim ve DevOps için vazgeçilmez olan mongostat
, mongotop
, mongodump
ve mongorestore
araçlarını içerir.
MongoDB Database Tools Kurulumu
- Paketler (Packages) sayfasında
MongoDB Database Tools
’ı bulun. - Sağındaki yükleme butonuna tıklayın.
3.1 Gerçek Zamanlı İzleme İçin mongostat
Kullanımı
mongostat
, adeta MongoDB’nin “EKG’si” gibidir; veritabanı örneğindeki başlıca metrikleri yüksek frekansta anlık olarak gösterir ve performans darboğazlarını teşhis etmek, yük dağılımını görmek için idealdir.
Temel Kullanım: Yeni bir terminal açıp, aşağıdaki komutu çalıştırın; anlık metrikler saniyede bir yenilenecektir:
bashmongostat
1Şu şekilde bir çıktı örneği göreceksiniz, her satır bir zaman anını gösterir:
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 1|0 0.0% 23.2% 0 1.29G 84.0M 0|0 1|0 103b 501b 4 Nov 26 15:30:00.001 *0 *0 *0 *0 0 1|0 0.0% 23.2% 0 1.29G 84.0M 0|0 1|0 71b 501b 4 Nov 26 15:30:01.001
1
2
3Temel Sütunlar:
insert
,query
,update
,delete
: Saniyede ilgili işlem sayısı.dirty
: Önbellekteki “kirli” verinin (henüz diske yazılmamış) yüzdesi.used
: Depolama motoru önbellek kullanımı yüzdesi.vsize
,res
: Sanal ve rezident bellek miktarı.qrw
,arw
: Okuma/yazma sırasındaki bekleyen istemciler.net_in
,net_out
: Ağ girişi ve çıkışı miktarı.conn
: Aktif bağlantı sayısı.
Pratik Senaryo: Yüksek Eşzamanlı Yazma Yükü İzleme
- Bir terminalde (Terminal A)
mongosh
ile bağlanın ve aşağıdaki yüksek sıklıklı log yazımı simülasyonunu başlatın:javascript// mongosh içinde çalıştır use log_system print("Starting high-frequency log insertion...") while (true) { db.app_logs.insertOne({ level: "INFO", message: "User activity detected.", timestamp: new Date() }); sleep(50); // Her 50 ms'de bir yaz (saniyede 20 kayıt) }
1
2
3
4
5
6
7 - Başka bir terminalde (Terminal B)
mongostat
başlatıp 2 saniyelik yenileme ile izleyin:bashmongostat 2
1 - Terminal B çıktısını gözlemleyin:
insert
sütununda*40
civarı bir sayı (saniyede 20 kayıt x 2 saniye) göreceksiniz. Bu, yükün ağırlıklı olarak yazma işlemlerinden kaynaklandığını doğrular.
- Bir terminalde (Terminal A)
3.2 Koleksiyon Bazında İşlem Süresi Takibi için mongotop
Kullanımı
mongostat
veritabanının yoğunluğunu gösterirken, mongotop
size bu yoğunluğun hangi koleksiyondan kaynaklandığını gösterir. Koleksiyon bazında okuma/yazma süresi takibiyle performans darboğazına anında ulaşabilirsiniz.
Temel Kullanım: Terminalde
mongotop
komutunu çalıştırın. Varsayılan olarak her saniye güncellenir.bashmongotop
1Örnek Çıktı:
ns total read write time local.oplog.rs 1101ms 155ms 946ms Nov 26 15:35:00.000 servbay-app.sessions 210ms 1ms 209ms Nov 26 15:35:00.000 servbay-app.articles 15ms 15ms 0ms Nov 26 15:35:00.000
1
2
3
4Temel Sütunlar:
ns
: Namespace (veritabanı.koleksiyon).total
: Bu koleksiyondaki toplam okuma/yazma süresi.read
: Okuma işlemlerinin süresi.write
: Yazma işlemlerinin süresi.
Pratik Senaryo: Uygulamadaki Sıcak Koleksiyonları Tespit Etme
- Terminal A’da (
mongosh
) aşağıdaki gibi, sık sık oturum güncelleyen ve ara sıra makale okuyan bir uygulama simüle edin:javascript// mongosh içinde çalıştır use servbay_app print("Simulating application load...") // Oturumları sık sık güncelle setInterval(() => { db.sessions.updateOne({ sid: "session_abc" }, { $set: { data: Math.random() } }, { upsert: true }); }, 50); // Her 50ms'de bir // Makaleleri daha seyrek oku setInterval(() => { db.articles.find({ tags: "featured" }).limit(5).toArray(); }, 500); // Her 500ms'de bir
1
2
3
4
5
6
7
8
9
10
11
12 - Terminal B’de
mongotop
’u başlatıp, 5 saniye yenileme ile daha stabil bir izleme yapın:bashmongotop 5
1 - Terminal B çıktısını gözlemleyin:
servbay_app.sessions
koleksiyonundakiwrite
vetotal
değerleri oldukça yüksekken,servbay_app.articles
’ınread
değerleri nispeten düşük olacaktır. Bu da performans sorunlarının büyük ihtimalle oturum yönetimindeki sık güncellemelerden kaynaklandığını gösterir.
- Terminal A’da (
3.3 mongodump
ile Veri Yedekleme
mongodump
, MongoDB verilerini ikili (BSON) formatta yedeklemek için kullanılan sağlam bir araçtır.
- Tek Bir Veritabanını Yedeklemek:bash
mongodump --db servbay-demo --out /Applications/ServBay/backup/mongodb/servbay-demo-backup-$(date +%F)
1 - Tek Bir Koleksiyonu Yedeklemek:bash
mongodump --db servbay-demo --collection users --out /Applications/ServBay/backup/mongodb/users-backup
1 - Tüm MongoDB Örneğini (Tüm Veritabanları) Yedeklemek:bash
mongodump --out /Applications/ServBay/backup/mongodb/full-instance-backup
1
3.4 mongorestore
ile Veri Kurtarma
mongorestore
, mongodump
tarafından oluşturulan yedek dosyalarını MongoDB örneğine geri yüklemek için kullanılır.
- Tek Bir Veritabanını Geri Yüklemek:bash
# --drop parametresiyle, kurtarma öncesi hedef veritabanındaki aynı isimli koleksiyonlar silinir. mongorestore --drop --db servbay-demo /Applications/ServBay/backup/mongodb/servbay-demo-backup-2023-11-26/servbay-demo/
1
2 - Yedekten Farklı Bir Koleksiyona Tek Koleksiyon Kurtarma:bash
mongorestore --db servbay-demo --collection users_restored /Applications/ServBay/backup/mongodb/users-backup/users.bson
1
4. Grafiksel Arayüzlü (GUI) Araçlarla Bağlantı
Komut satırı dışında, ServBay’deki veritabanlarını yönetmek ve verileri keşfetmek için tüm popüler MongoDB grafiksel arayüz araçlarını kullanabilirsiniz. Özellikle veri tarama, görsel sorgu ve toplu iş oluşturmak için pratiktir. MongoDB Compass, TablePlus veya Studio 3T önerilen başlıca araçlardır.
Bağlanmak için, GUI uygulamanızda şu ayarları kullanın:
- Host (Sunucu):
127.0.0.1
- Port:
27017
- Authentication (Kimlik Doğrulama): Ek parametrelerde (
--auth
) kimlik doğrulama etkinleştirmediyseniz ve kullanıcı oluşturmadıysanız bu kısmı boş bırakabilirsiniz.
Sonuç
ServBay, MongoDB’nin gücünü macOS’un zarif deneyimiyle birleştirerek geliştiricilere rakipsiz bir yerel geliştirme ortamı sunar. Bu rehberle; MongoDB’yi hızlıca nasıl kurup çalıştıracağınızı, mongosh
ile ayrıntılı yönetimi, mongostat
ve mongotop
ile profesyonel seviye performans izlemesini ve mongodump
ile mongorestore
ile güvenilir veri yedekleme/geri yüklemeyi öğrendiniz. Artık bir sonraki projenizde MongoDB’yi tam anlamıyla kullanmaya hazırsınız!