Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Özel Sunucular Sanal Sunucular

MongoDB’ye Tam Rehber: VPS’de Kurulum, Özellikler ve En İyi Uygulamalar

MongoDB, dünyanın en güçlü ve en yaygın olarak benimsenen NoSQL veritabanlarından biridir — ve bunun iyi nedenleri vardır. Esnek, belge odaklı mimarisi, hızlı ölçeklenmesi gereken modern, veri yoğun uygulamalar oluşturan geliştiriciler için tercih edilen seçimdir. Bir startup MVP çalıştırıyor olsanız veya kurumsal düzey altyapıyı yönetiyor olsanız, yüksek performanslı bir barındırma ortamıyla eşleştirilmiş MongoDB, uygulamalarınızın talep ettiği hız, esneklik ve güvenilirliği sağlar.

Bu kapsamlı kılavuzda, MongoDB’nin ne olduğunu, geleneksel ilişkisel veritabanlarından nasıl öne çıktığını, Ubuntu’ya nasıl yükleyeceğinizi ve MongoDB shell kullanarak temel işlemleri nasıl gerçekleştireceğinizi öğreneceksiniz.

MongoDB Nedir ve Neden Kullanmalısınız?

MongoDB, verileri BSON (Binary JSON) adı verilen esnek, JSON benzeri belgeler halinde depolayan açık kaynaklı, belge yönelimli bir NoSQL veritabanıdır. Katı tablo-satır-sütun yapılarına dayanan geleneksel ilişkisel veritabanlarından farklı olarak, MongoDB bir koleksiyondaki her belgenin kendi benzersiz yapısına sahip olmasını sağlar. Bu, gelişen veya öngörülemeyen veri modellerine sahip uygulamalar için son derece uygun hale getirir.

MongoDB’nin Geleneksel SQL Veritabanlarına Göre Temel Avantajları

ÖzellikMongoDB (NoSQL)Geleneksel SQL
Veri ModeliEsnek belgeler (BSON)Sabit şema (tablolar/satırlar)
ÖlçeklenebilirlikYatay (sharding)Öncelikle dikey
Şema DeğişiklikleriŞemasız, dinamikGeçişler gerektirir
Sorgu DiliZengin MQL + aggregationSQL
En İyi KullanımDinamik, yapılandırılmamış veriYapılandırılmış, ilişkisel veri
Ölçekte PerformansSharding ile mükemmelAyarlama olmadan düşebilir

MongoDB, gerçek zamanlı analitik, içerik yönetim sistemleri, e-ticaret platformları, IoT veri alımı, mobil arka uçlar ve veri yapılarının zaman içinde değişme olasılığı olan herhangi bir uygulama dahil olmak üzere çok çeşitli kullanım durumları için idealdir.

MongoDB Neden VPS’de Barındırılmalı?

MongoDB’yi özel bir sanal özel sunucuda barındırmak, paylaşılan ortamların basitçe sağlayamayacağı bir kontrol, performans ve güvenlik düzeyi sağlar. AlexHost’tan bir VPS Hosting planı ile şunları elde edersiniz:

  • Tam root erişimi MongoDB’yi uygulamanızın tam olarak gerektirdiği şekilde yapılandırmak için
  • Adanmış RAM ve CPU kaynakları talep gören okuma/yazma iş yüklerini işlemek için
  • İzole edilmiş ortam paylaşılan barındırmada yaygın olan “gürültülü komşu” sorununu ortadan kaldıran
  • Sorunsuz dikey ve yatay ölçeklendirme verileriniz büyüdükçe
  • Özel güvenlik duvarı ve ağ kuralları veritabanı erişimini kilitlemek için

Olağanüstü yüksek verim gereksinimleri olan uygulamalar için, AlexHost’un Dedicated Servers tam donanım yalıtımı ile bare-metal performans sunar — üretim MongoDB dağıtımları için altın standart.

Bölüm 1: MongoDB’nin Temel Mimarisini Anlamak

Kuruluma geçmeden önce, MongoDB’nin verileri nasıl organize ettiğini ve yönettiğini anlamak önemlidir.

Belgeler

MongoDB’deki verilerin temel birimi bir belge — iç içe alanlar, diziler ve karışık veri türleri içerebilen JSON benzeri bir nesnedir. Örneğin:

{
  "_id": ObjectId("64b1f2c3e4b0a1d2e3f4a5b6"),
  "name": "Alice",
  "age": 30,
  "email": "alice@example.com",
  "address": {
    "city": "New York",
    "zip": "10001"
  },
  "tags": ["developer", "mongodb", "nodejs"]
}

Koleksiyonlar

Belgeler koleksiyonlarda gruplandırılır; bunlar SQL veritabanlarındaki tablolara benzerdir. Ancak SQL tablolarından farklı olarak, koleksiyonlar sabit bir şema uygulamaz — aynı koleksiyon içindeki belgeler tamamen farklı alanlara sahip olabilir.

Veritabanları

Bir MongoDB sunucusu, her biri kendi koleksiyonlar setini içeren birden fazla veritabanına ev sahipliği yapabilir. Bu, tek bir sunucu örneğinde farklı uygulamalar veya ortamlar (örneğin, geliştirme, hazırlama, üretim) için verileri izole etmeyi kolaylaştırır.

Bölüm 2: MongoDB’nin Temel Özellikleri

2.1 Belge Yönelimli Depolama

MongoDB’nin belge modeli, en güçlü özelliklerinden biridir. Her belge farklı bir yapıya sahip olabileceğinden, geliştiriciler uygulama gereksinimleri değiştikçe veritabanı şemasını organik olarak geliştirebilir — karmaşık ALTER TABLE göçlerini çalıştırmak veya kapalı kalma süresiyle karşı karşıya kalmak zorunda kalmadan.

Bu esneklik, gereksinimlerin sık sık değiştiği çevik geliştirme ortamlarında veya birden fazla heterojen kaynaktan veri toplayan uygulamalarda özellikle değerlidir.

2.2 Sharding ile Yatay Ölçeklenebilirlik

MongoDB’nin tanımlayıcı yeteneklerinden biri, sharding aracılığıyla yatay ölçeklendirmeye yönelik yerel desteğidir. Sharding, verileri birden fazla sunucu (shard olarak adlandırılır) arasında dağıtarak, MongoDB’nin tek bir makineyi bunaltacak veri setleri ve verim seviyelerini işlemesini sağlar.

Her shard toplam verilerin bir alt kümesini tutar ve bir mongos yönlendiricisi, yapılandırılabilir bir shard anahtarına dayalı olarak sorguları uygun shard(lar)a yönlendirir. Bu mimari, veri hacminiz ve sorgu yükünüz arttıkça neredeyse doğrusal ölçeklenebilirliği sağlar.

Yüksek trafikli üretim ortamları için, MongoDB’yi AlexHost’un Dedicated Servers üzerinde barındırmak, her shard’ın izole, yüksek performanslı donanım kaynaklarına erişimini sağlar.

2.3 Replica Sets ile Yüksek Kullanılabilirlik

MongoDB, replica sets aracılığıyla yerleşik hata toleransı sağlar — aynı verilerin özdeş kopyalarını koruyan MongoDB örnekleri grupları. Bir replica set şunlardan oluşur:

  • Tüm yazma işlemlerini alan bir birincil düğüm
  • Birincil düğümden verileri çoğaltan bir veya daha fazla ikincil düğüm
  • Veri depolamadan seçimlere katılan isteğe bağlı bir hakem

Birincil düğüm başarısız olursa, replica set otomatik olarak mevcut ikincil düğümlerden yeni bir birincil düğüm seçer, kapalı kalma süresini en aza indirir ve veri dayanıklılığını sağlar.

2.4 Güçlü Sorgu Dili ve Aggregation Framework

MongoDB’nin MongoDB Query Language (MQL) aşağıdakileri içeren zengin bir işlem seti destekler:

  • Alan düzeyinde filtreleme karşılaştırma, mantıksal ve eleman operatörleriyle
  • Projeksiyon yalnızca belirli alanları döndürmek için
  • Sıralama ve sayfalandırma sort(), limit() ve skip() ile
  • Tam metin arama tam metin dizinleriyle
  • Coğrafi sorguları konum tabanlı uygulamalar için

Aggregation Framework, veri dönüştürme ve analizi için bir boru hattı tabanlı yaklaşım sağlar, $match, $group, $sort, $project, $lookup (birleştirmeler), $unwind ve daha birçok işlemi destekler — karmaşık SQL GROUP BY ve JOIN işlemlerine karşılaştırılabilir işlevsellik sunarak.

2.5 Esnek İndeksleme

MongoDB, sorgu performansını optimize etmek için birden fazla dizin türünü destekler:

  • Tek alan dizinleri basit sorgular için
  • Bileşik dizinler çok alan sorguları için
  • Çok anahtarlı dizinler dizi alanları için
  • Metin dizinleri tam metin arama için
  • Coğrafi dizinler konum sorguları için
  • TTL dizinleri otomatik belge sona ermesi için (oturum verileri veya günlükler için faydalı)

Bölüm 3: Ubuntu’da MongoDB Kurulumu (Adım Adım)

Bu bölüm, Ubuntu 20.04 LTS (Focal Fossa) üzerinde tam bir MongoDB kurulumunda size rehberlik eder. Bu adımlar, root veya sudo erişimine sahip bir AlexHost VPS ortamı için optimize edilmiştir.

Ön Koşullar

  • Ubuntu 20.04 LTS sunucusu
  • sudo ayrıcalıklarına sahip bir kullanıcı hesabı
  • Linux komut satırı hakkında temel bilgi

Henüz bir sunucunuz yoksa, AlexHost VPS Hosting ile dakikalar içinde tam olarak yapılandırılmış bir Ubuntu VPS başlatabilirsiniz.

Adım 1: MongoDB GPG Genel Anahtarını İçe Aktarın

MongoDB paketleri, orijinalliğini doğrulamak için bir GPG anahtarı ile imzalanmıştır. Anahtarı aşağıdaki komutla içe aktarın:

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

Anahtarın başarıyla içe aktarıldığını doğrulayan çıktı olarak OK görmelisiniz.

Adım 2: MongoDB Deposunu Ekleyin

Resmi MongoDB deposunu sisteminizin paket kaynaklarına eklemek için bir liste dosyası oluşturun:

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

> Not: Bu komut MongoDB 6.0 deposunu ekler. Farklı bir sürüme ihtiyacınız varsa sürüm numarasını ayarlayın.

Adım 3: Paket Veritabanını Güncelleyin

Yeni eklenen MongoDB deposunu içerecek şekilde yerel paket dizininizi yenileyin:

sudo apt update

Adım 4: MongoDB’yi Kurun

MongoDB’nin en son kararlı sürümünü tüm gerekli bileşenlerle kurun:

sudo apt install -y mongodb-org

Bu aşağıdaki paketleri kurar:

  • mongod — MongoDB veritabanı daemon’u
  • mongos — MongoDB sharding yönlendiricisi
  • mongosh — MongoDB shell (eski mongo shell’inin modern değiştirmesi)
  • MongoDB araçları ve kütüphaneleri

Adım 5: MongoDB Hizmetini Başlatın ve Etkinleştirin

MongoDB hizmetini hemen başlatın:

sudo systemctl start mongod

MongoDB’nin sistem önyüklemesinde otomatik olarak başlamasını sağlayın:

sudo systemctl enable mongod

MongoDB’nin doğru şekilde çalıştığını doğrulayın:

sudo systemctl status mongod

Hizmetin active (running) olduğunu gösteren çıktı görmelisiniz. MongoDB başarıyla başlatıldıysa, ayrıca 27017 portunda dinlediğini doğrulayan bir satır da göreceksiniz.

Adım 6: MongoDB Kurulumunuzu Güvenli Hale Getirin (Önerilir)

MongoDB’yi herhangi bir üretim veya internet’e açık ortamda kullanmadan önce, kimlik doğrulamayı etkinleştirmek kritik önem taşır. Varsayılan olarak, MongoDB bir kullanıcı adı veya parola gerektirmez.

Bir yönetici kullanıcısı oluşturun:

mongosh

MongoDB shell’inin içinde:

use admin

db.createUser({
  user: "adminUser",
  pwd: "YourStrongPasswordHere",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})

MongoDB yapılandırma dosyasını düzenleyerek kimlik doğrulamayı etkinleştirin:

sudo nano /etc/mongod.conf

security bölümünü bulun ve ekleyin:

security:
  authorization: enabled

Değişiklikleri uygulamak için MongoDB’yi yeniden başlatın:

sudo systemctl restart mongod

Bu noktadan itibaren, MongoDB’ye yapılan tüm bağlantılar geçerli kimlik bilgilerini gerektirecektir.

Bölüm 4: MongoDB Kullanımı — Temel Komutlar ve İşlemler

MongoDB yüklü ve güvenli hale getirildiğine göre, günlük olarak kullanacağınız en önemli işlemleri keşfedelim.

Adım 1: MongoDB Shell’e Erişim

Modern mongosh shell’i kullanarak MongoDB örneğinize bağlanın:

mongosh

Kimlik doğrulama etkinse, kimlik bilgileriyle bağlanın:

mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase admin

Adım 2: Veritabanı İşlemleri

Tüm veritabanlarını listeleyin:

show dbs

Bir veritabanı oluşturun veya geçiş yapın:

use mydatabase

> MongoDB, ilk kez veri eklediğinizde veritabanını otomatik olarak oluşturur.

Şu anda seçili olan veritabanını kontrol edin:

db

Bir veritabanını silin:

db.dropDatabase()

Adım 3: Koleksiyon İşlemleri

Açıkça bir koleksiyon oluşturun:

db.createCollection("users")

Geçerli veritabanındaki tüm koleksiyonları listeleyin:

show collections

Bir koleksiyonu silin:

db.users.drop()

Adım 4: Belge CRUD İşlemleri

Belge Ekleme

Tek bir belge ekleyin:

db.users.insertOne({
  name: "Alice",
  age: 30,
  email: "alice@example.com",
  role: "developer"
})

Birden fazla belgeyi aynı anda ekleyin:

db.users.insertMany([
  { name: "Bob", age: 25, email: "bob@example.com", role: "designer" },
  { name: "Carol", age: 35, email: "carol@example.com", role: "manager" },
  { name: "Dave", age: 28, email: "dave@example.com", role: "developer" }
])

Belge Okuma

Bir koleksiyondaki tüm belgeleri bulun:

db.users.find()

Belirli bir koşulla belgeleri bulun:

db.users.find({ role: "developer" })

Birden fazla koşulla belgeleri bulun:

db.users.find({ role: "developer", age: { $gte: 28 } })

Yalnızca belirli alanları döndürün (projeksiyon):

db.users.find({ role: "developer" }, { name: 1, email: 1, _id: 0 })

Tek bir belge bulun:

db.users.findOne({ name: "Alice" })

Sonuçları sıralayın:

db.users.find().sort({ age: 1 })   // Ascending
db.users.find().sort({ age: -1 })  // Descending

Sonuçları sınırlayın ve sayfalandırın:

db.users.find().limit(10).skip(20)  // Page 3 with 10 results per page

Belge Güncelleme

Tek bir belgeyi güncelleyin:

db.users.updateOne(
  { name: "Alice" },
  { $set: { age: 31, role: "senior developer" } }
)

Birden fazla belgeyi güncelleyin:

db.users.updateMany(
  { role: "developer" },
  { $set: { department: "Engineering" } }
)

Sayısal bir alanı artırın:

db.users.updateOne(
  { name: "Bob" },
  { $inc: { age: 1 } }
)

Belge Silme

Tek bir belgeyi silin:

db.users.deleteOne({ name: "Dave" })

Bir koşulla eşleşen birden fazla belgeyi silin:

db.users.deleteMany({ role: "designer" })

Adım 5: Performans için İndeksleme

Sık sorgulanan alanlarda indeks oluşturmak sorgu performansını önemli ölçüde iyileştirir.

Tek alan indeksi oluşturun:

db.users.createIndex({ email: 1 })

Bileşik indeks oluşturun:

db.users.createIndex({ role: 1, age: -1 })

Benzersiz indeks oluşturun:

db.users.createIndex({ email: 1 }, { unique: true })

Bir koleksiyondaki tüm indeksleri listeleyin:

db.users.getIndexes()

Adım 6: Toplama Pipeline’ı

Toplama çerçevesi, MongoDB içinde doğrudan karmaşık veri analizi gerçekleştirmenize olanak tanır.

Örnek: Kullanıcıları role göre say ve sayıya göre sırala:

db.users.aggregate([
  { $group: { _id: "$role", count: { $sum: 1 } } },
  { $sort: { count: -1 } }
])

Örnek: Filtrele, grupla ve role göre ortalama yaşı hesapla:

db.users.aggregate([
  { $match: { department: "Engineering" } },
  { $group: { _id: "$role", avgAge: { $avg: "$age" }, total: { $sum: 1 } } },
  { $sort: { avgAge: 1 } }
])

Bölüm 5: MongoDB Yapılandırması ve Performans Ayarlaması

mongod.conf Yapılandırması

MongoDB’nin birincil yapılandırma dosyası /etc/mongod.conf konumunda bulunur. İncelenecek ve optimize edilecek temel ayarlar:

# Network settings
net:
  port: 27017
  bindIp: 127.0.0.1  # Restrict to localhost for security; use server IP for remote access

# Storage settings
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2  # Set to ~50% of available RAM

# Logging
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Security
security:
  authorization: enabled

# Replication (for replica sets)
replication:
  replSetName: "rs0"

Performans En İyi Uygulamaları

  1. Yeterli RAM ayırın — MongoDB’nin WiredTiger depolama motoru bellek içi önbellek kullanır. cacheSizeGB değerini mevcut sistem RAM’inin yaklaşık %50’sine ayarlayın.
  2. Uygun indeksler kullanındb.collection.explain("executionStats") ile yavaş sorguları analiz edin ve buna göre indeksler oluşturun.
  3. MongoDB Atlas veya mongostat ile izleyin — Gerçek zamanlı performansı izlemek için mongostat ve mongotop komut satırı araçlarını kullanın.
  4. Journaling’i etkinleştirin — Journaling varsayılan olarak etkindir ve kilitlenme kurtarması sağlar; üretimde devre dışı bırakmayın.
  5. Bağlantı havuzlaması kullanın — Uygulamanızın MongoDB sürücüsünü bağlantı havuzlaması kullanacak şekilde yapılandırın ve bağlantı yükünü azaltın.
  6. Koleksiyonları düzenli olarak sıkıştırın — Büyük silme işlemlerinden sonra disk alanını geri kazanmak için db.runCommand({ compact: "collectionName" }) kullanın.

Bölüm 6: MongoDB’yi Yedekleme ve Geri Yükleme

Düzenli yedeklemeler herhangi bir üretim veritabanı için gereklidir. MongoDB bu amaç için yerleşik araçlar sağlar.

mongodump ile Yedek Oluşturma

mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d)

mongorestore ile Yedekten Geri Yükleme

mongorestore --uri="mongodb://adminUser:password@localhost:27017" /backup/mongodb/20240115/

Cron ile Yedeklemeleri Otomatikleştirme

Günlük yedeklemeleri otomatik olarak çalıştırmak için bir cron işi ekleyin:

sudo crontab -e

Her gün saat 2:00’de bir yedekleme çalıştırmak için aşağıdaki satırı ekleyin:

0 2 * * * mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d) >> /var/log/mongodb-backup.log 2>&1

AlexHost’ta MongoDB için Doğru Planı Seçmek

Doğru hosting planı, uygulamanızın ölçeğine, trafiğine ve veri gereksinimlerine bağlıdır:

Kullanım DurumuÖnerilen PlanNeden
Geliştirme / TestVPS HostingUygun fiyatlı, tam kontrol, kolay kurulum
Küçük ve Orta Ölçekli ÜretimVPS HostingÖlçeklenebilir kaynaklar, SSD depolama, root erişimi
Yüksek Trafikli ÜretimDedicated ServersBare-metal performans, kaynak paylaşımı yok
MongoDB ile ML/AIGPU HostingVeri işleme iş yükleri için GPU hızlandırması
Web Uygulaması + MongoDBcPanel ile VPSVeritabanınızın yanında kolay yönetim arayüzü

Web ön ucu, e-posta bildirimleri veya SSL ile güvenli bağlantılar gerektiren uygulamalar için AlexHost, altyapı yığınını tamamlamak üzere SSL Certificates ve Email Hosting sunmaktadır.

Sık Sorulan Sorular

S: MongoDB ücretsiz mi?

Evet. MongoDB Community Edition, Server Side Public License (SSPL) altında ücretsiz ve açık kaynaktır. MongoDB Enterprise ve MongoDB Atlas (bulut) ek özellikleri ücretli olarak sunmaktadır.

S: MongoDB varsayılan olarak hangi portu kullanır?

MongoDB varsayılan olarak 27017 portunu dinler. Bunu /etc/mongod.conf içinde değiştirebilirsiniz.

S: MongoDB’yi paylaşılan hosting planında çalıştırabilir miyim?

MongoDB, düzgün şekilde yüklemek ve yapılandırmak için root veya yönetici erişimi gerektirir; bu, standart paylaşılan hosting’de mevcut değildir. VPS veya özel sunucu gereklidir. AlexHost’un Paylaşılan Web Hosting hizmeti PHP/MySQL uygulamaları için daha uygundur; MongoDB dağıtımları VPS veya özel sunucu kullanmalıdır.

S: Uzak bir uygulamadan MongoDB’ye nasıl bağlanırım?

bindIp içinde /etc/mongod.conf dosyasını sunucunuzun IP adresini içerecek şekilde güncelleyin, güvenlik duvarınızı 27017 portundan yalnızca güvenilir IP’lere izin verecek şekilde yapılandırın ve şu biçimde bir bağlantı dizesi kullanın: mongodb://username:password@your-server-ip:27017/dbname.

S: MongoDB ile MySQL arasındaki fark nedir?

MySQL, yapılandırılmış tablolar ve SQL kullanan ilişkisel bir veritabanıdır. MongoDB, esnek JSON benzeri belgeler depolayan bir NoSQL belge veritabanıdır. MongoDB, yapılandırılmamış veya yarı yapılandırılmış veriler ve yatay ölçeklendirme ile başa çıkmada mükemmeldir; MySQL ise karmaşık ilişkisel veriler ve katı ACID uyumluluğu gereksinimleri olan uygulamalar için daha uygundur.

Sonuç

MongoDB, geliştiricilerin katı ilişkisel şema kısıtlamaları olmadan modern, ölçeklenebilir uygulamalar oluşturmasını sağlayan dönüştürücü bir veritabanı teknolojisidir. Belge odaklı modeli, sharding aracılığıyla yerel yatay ölçeklendirme, replica setler aracılığıyla yerleşik yüksek kullanılabilirlik ve güçlü aggregation framework’ü, onu günümüzün en çok yönlü veritabanlarından biri haline getirmektedir.

MongoDB’yi bir AlexHost VPS Hosting planında barındırarak, MongoDB’yi etkili bir şekilde çalıştırmak için gereken tam kontrol, özel kaynaklar ve güvenilir altyapı elde edersiniz — ilk uygulamanızı prototipleştiriyor olsanız da yüksek trafikli bir üretim sistemini yönetiyor olsanız da.

MongoDB örneğinizi çalışır duruma getirmek, ilk günden itibaren uygun güvenlik önlemleri uygulamak ve performanslı, veriye dayalı uygulamalar oluşturmak için indexing ve aggregation pipeline’ından yararlanmak amacıyla bu kılavuzdaki kurulum ve yapılandırma adımlarını izleyin.

MongoDB kurulumunuz hakkında sorularınız mı var veya doğru hosting planını seçmede yardıma mı ihtiyacınız var? AlexHost’un uzman destek ekibi her adımda size yardımcı olmak için 24/7 olarak hazırdır.