Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner
Yan Yana Banner
Katılım
7 Nis 2025
Konular
367
Mesajlar
780
Çözümler
1
Tepkime puanı
121
Puan
93
Konum
İstanbul
Web sitesi
forumagel.com
Veritabanları, genellikle tek başlarına kullanılmazlar; web siteleri, masaüstü uygulamaları, mobil uygulamalar veya arka plan hizmetleri gibi çeşitli uygulamalar tarafından erişilir ve yönetilirler. Bu uygulamaların veritabanındaki verilere ulaşabilmesi için veritabanı sunucusuna bir bağlantı kurması ve bu bağlantı üzerinden SQL komutları göndermesi gerekir. Bu bölümde, bir uygulamanın veritabanıyla nasıl etkileşim kurduğunun temel prensiplerini ele alacağız.

Bağlantı Kurma Süreci

Bir uygulamanın veritabanına bağlanma süreci genellikle şu adımları içerir:

  1. Veritabanı Sürücüsü/API'si: Her programlama dili veya platform, farklı veritabanı sistemlerine bağlanmak için özel sürücülere veya API'lere (Uygulama Programlama Arayüzü) ihtiyaç duyar. Bu sürücüler, uygulamanın veritabanı sunucusuyla iletişim kurmasını sağlayan köprü görevi görür. (Örn: JDBC for Java, .NET Data Providers for C#, Psycopg2 for PostgreSQL in Python, MySQL Connector for MySQL.)
  2. Bağlantı Parametreleri (Connection String): Uygulama, veritabanı sunucusuna nasıl bağlanacağını belirten bir dizi bilgiye ihtiyaç duyar. Bu bilgiler genellikle bir "bağlantı dizesi" (connection string) formatında veya ayrı parametreler olarak sağlanır.
  3. Bağlantı Açma: Uygulama kodu, sağlanan bağlantı parametrelerini kullanarak sürücü aracılığıyla veritabanı sunucusuna bir bağlantı açma isteği gönderir.
  4. Kimlik Doğrulama: Veritabanı sunucusu, gelen bağlantı isteğini doğrular (kullanıcı adı, şifre vb. kontrol edilir - Bölüm 11). Başarılı olursa bağlantı kurulur.
  5. İletişim: Bağlantı kurulduktan sonra, uygulama bu bağlantı üzerinden veritabanına SQL komutları gönderebilir ve sonuçları alabilir.
  6. Bağlantı Kapatma: Uygulama veritabanı ile işi bittiğinde, kaynakları serbest bırakmak için bağlantıyı kapatmalıdır.
Bağlantı Dizeleri (Connection Strings)

Bağlantı dizeleri, veritabanına bağlanmak için gereken tüm bilgileri içeren metin dizeleridir. Sözdizimi kullanılan DBMS'e, sürücüye ve programlama diline göre büyük ölçüde değişir, ancak genellikle şu bilgileri içerir:

  • Sunucu Adresi/IP'si
  • Port Numarası
  • Veritabanı Adı
  • Kullanıcı Adı
  • Şifre
  • Ek Seçenekler (Zaman aşımı, SSL kullanımı vb.)
Kavramsal Örnek (Gerçek Sözdizimi DBMS ve sürücüye göre değişir):
Kod:
Server=https://www.google.com/search?q=veritabani.sunucu.com;Port=5432;Database=uygulama_db;User Id=kullanici;Password=sifre;

Veritabanı ile Etkileşim Yöntemleri

Uygulama kodunda veritabanı ile etkileşim kurmanın birkaç yaygın yolu vardır:

  1. Ham SQL Komutları (Raw SQL): SQL komutlarını doğrudan metin dizeleri olarak yazıp veritabanına gönderilir.
    Kod:
    -- Uygulama kodunda bir örnek (sözdizimi temsili)sql_sorgusu = "SELECT * FROM Musteriler WHERE Sehir = 'Ankara';"sonuclar = veritabani_baglantisi.execute(sql_sorgusu);
    • Avantajı:* Tam SQL kontrolü.
    • Dezavantajları:* SQL Injection zafiyetine açık olabilir (kullanıcı girdilerini doğrudan sorguya eklemek). Sorguları yönetmek ve okumak büyük uygulamalarda zorlaşabilir.
  2. Parametreli Sorgular (Parameterized Queries / Prepared Statements): SQL komutu yapısı (şablonu) veriden ayrı tutulur. Veri değerleri, komut çalıştırılırken ayrı parametreler olarak verilir.
    Kod:
    -- Uygulama kodunda bir örnek (sözdizimi temsili)sql_sorgusu_sablonu = "SELECT * FROM Musteriler WHERE Sehir = ?;" -- veya :sehir, @sehir gibi işaretleyicilersehir_degeri = "Ankara";sonuclar = veritabani_baglantisi.execute(sql_sorgusu_sablonu, [sehir_degeri]);
    • Avantajları:* SQL Injection'a karşı güvenlidir çünkü veri ve komut ayrı işlenir. Bazı durumlarda veritabanı bu şablonu önbelleğe alarak performansı artırabilir. Kod daha okunabilir olabilir.
    • Kesinlikle önerilen yöntemdir!
  3. Nesne-İlişkisel Eşleyiciler (Object-Relational Mappers - ORM): Veritabanı tablolarını uygulama kodundaki nesnelerle eşleyen bir soyutlama katmanıdır. Veritabanı işlemleri SQL yazmak yerine nesne odaklı kod ile yapılır, ORM bu kodu otomatik olarak SQL'e çevirir.
    • Örnekler: Python için SQLAlchemy, .NET için Entity Framework, Java için Hibernate, Node.js için Sequelize.
    • Kod:
      -- ORM ile örnek (kavramsal)musteriler = db_context.Musteriler.Where(m => m.Sehir == "Ankara").ToList();
    • Avantajları:* Geliştirme hızını artırabilir, farklı veritabanları arasında geçişi kolaylaştırabilir (ORM destekliyorsa), kodun daha nesne odaklı olmasını sağlar. Parametreli sorguları otomatik olarak kullanır.
    • Dezavantajları:* Bazı karmaşık SQL sorgularını yazmak zor olabilir, ORM'in ürettiği SQL bazen verimsiz olabilir (performans sorunlarına yol açabilir), öğrenme eğrisi olabilir.
Bağlantı Havuzlama (Connection Pooling)

Veritabanı bağlantısı kurmak maliyetli bir işlemdir. Her kullanıcı isteği için yeni bir bağlantı açıp kapatmak performansı olumsuz etkiler. Bağlantı Havuzlama, uygulamaların belirli sayıda veritabanı bağlantısını önceden açıp bir "havuzda" hazır tutmasını sağlayan bir tekniktir. Bir bağlantıya ihtiyaç duyulduğunda havuzdan alınır, işi bitince havuza geri döner. Bu, bağlantı açma/kapatma maliyetini ortadan kaldırarak performansı ve veritabanı kaynak kullanımını optimize eder. Modern uygulama çerçeveleri ve veritabanı sürücüleri genellikle bağlantı havuzlamayı destekler veya yerleşik olarak sunar.

Sonuçları İşleme ve Hata Yönetimi

Veritabanından veri çekildiğinde, sonuç genellikle satır ve sütunlardan oluşan bir yapı (result set) olarak alınır. Uygulama kodu bu sonuç kümesi üzerinde döngü kurarak verilere erişir. Hata durumlarında (bağlantı hatası, sorgu hatası, kısıtlama ihlali vb.), uygulama kodunda uygun hata yakalama (try-catch blokları gibi) mekanizmaları kullanarak hataları ele almak ve kullanıcıya bilgi vermek önemlidir.

Bu bölümde, uygulamaların veritabanlarına nasıl bağlandığına, veriyle etkileşim kurmanın farklı yollarına (Ham SQL, Parametreli Sorgular, ORM) ve bağlantı havuzlama gibi konulara temel bir bakış attık.

Veritabanı işlemleri sıklıkla birbiriyle ilişkili adımlardan oluşur ve bu adımların ya hep birlikte başarılı olması ya da hiç olmaması istenir. Bu kavram, Transactionlar (İşlemler) olarak adlandırılır.

Bir sonraki bölümde, veritabanı transactionlarının ne olduğunu, ACID prensiplerini ve uygulamalardan transactionları nasıl yöneteceğimizi daha detaylı olarak inceleyebiliriz.


 

Şu an konuyu görüntüleyenler

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Zevkini yansıtan rengi seç

Geniş / Dar görünüm

Temanızı geniş yada dar olarak kullanmak için kullanabileceğiniz bir yapıyı kontrolünü sağlayabilirsiniz.

Izgara görünümlü forum listesi

Forum listesindeki düzeni ızgara yada sıradan listeleme tarzındaki yapının kontrolünü sağlayabilirsiniz.

Resimli ızgara modu

Izgara forum listesinde resimleri açıp/kapatabileceğiniz yapının kontrolünü sağlayabilirsiniz.

Kenar çubuğunu kapat

Kenar çubuğunu kapatarak forumdaki kalabalık görünümde kurtulabilirsiniz.

Sabit kenar çubuğu

Kenar çubuğunu sabitleyerek daha kullanışlı ve erişiminizi kolaylaştırabilirsiniz.

Köşe kıvrımlarını kapat

Blokların köşelerinde bulunan kıvrımları kapatıp/açarak zevkinize göre kullanabilirsiniz.

Geri