> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Veritabanı

> Çoklu veritabanı tipleri için bağlantı havuzu tanımlarını merkezi olarak yönetir. Oracle, MySQL, PostgreSQL, MongoDB, Trino gibi farklı veritabanı tipleri için tek noktadan yapılandırma yapabilir, Connection Pool parametreleriyle yüksek trafikte kaynak tüketimini optimize edebilir ve ortam bazlı kimlik bilgisi yönetimi gerçekleştirebilir

## Genel Bakış

<AccordionGroup>
  <Accordion title="Amacı Nedir?">
    <CardGroup cols={2}>
      <Card title="Merkezi Yönetim" icon="database">
        Connection (Bağlantı) tanımlarını merkezi olarak toplayarak Integration Flow adımlarında tekrar kullanılabilir hale getirir.
      </Card>

      <Card title="Çoklu Veritabanı Desteği" icon="layer-group">
        Farklı veritabanı tipleri (Oracle, MySQL, PostgreSQL, MongoDB, Trino vb.) için tek noktadan yapılandırma sunarak yönetimi kolaylaştırır.
      </Card>

      <Card title="Performans Optimizasyonu" icon="gauge">
        Connection Pool parametreleriyle yüksek trafikte kaynak tüketimini optimize eder ve tutarlı yanıt süresi sağlar.
      </Card>

      <Card title="Güvenli Yönetim" icon="shield">
        Ortam bazlı kimlik bilgisi ve JDBC URL yönetimiyle güvenli dağıtım ve denetim süreçlerini destekler.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Çalışma Prensibi">
    <CardGroup cols={2}>
      <Card title="Bağlantı Başlatma" icon="play">
        Integration Flow veya Connector içerisinden Database bağlantısı talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur.
      </Card>

      <Card title="Connection Pool Yönetimi" icon="layer-group">
        C3P0 uyumlu pool stratejisiyle mevcut Connection havuzdan alınır; limit aşılırsa yeni Connection oluşturulur.
      </Card>

      <Card title="Kimlik Doğrulama" icon="key">
        Kullanıcı adı/şifre veya environment değişkenine bağlanan credential setiyle Authentication gerçekleştirilir.
      </Card>

      <Card title="Veri İletişimi" icon="arrows-rotate">
        JDBC veya Mongo URI üzerinden SQL/NoSQL komutları hedef Database sürücüsüne iletilir ve yanıt alınır.
      </Card>

      <Card title="Bağlantı Yönetimi" icon="gear">
        İşlem tamamlandıktan sonra Connection pool'a geri döner, uzun süre kullanılmayan bağlantılar kapatılır.
      </Card>

      <Card title="Hata Yönetimi" icon="circle-exclamation">
        Bağlantı hatası, timeout veya authentication hatası durumunda deployment sonucu iletişim kutusu üzerinden ayrıntılı hata kaydı ve log yönlendirmesi sağlanır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kullanım Alanları">
    <CardGroup cols={2}>
      <Card title="Integration Flow" icon="puzzle-piece">
        API Gateway üzerinden transactional CRUD işlemleri gerçekleştiren Integration Flow adımları.
      </Card>

      <Card title="Connector Senaryoları" icon="plug">
        Mesaj tüketimi sonrası veritabanına yazım yapan Connector senaryoları.
      </Card>

      <Card title="Scheduled Job'lar" icon="clock">
        Scheduled Job tabanlı veri senkronizasyonu, raporlama ve arşivleme görevleri.
      </Card>

      <Card title="DevOps Projeleri" icon="code-branch">
        DevOps ekiplerinin ortama özel bağlantı setlerini test etmesi ve geçiş projeleri.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Teknik Özellikler ve Yetenekler

<AccordionGroup>
  <Accordion title="Temel Özellikler">
    <CardGroup cols={2}>
      <Card title="Çoklu Veritabanı Tipi Desteği" icon="database">
        Oracle, MySQL, PostgreSQL, SQL Server, DB2, Sybase, Apache Hive/Impala, MongoDB ve Trino seçenekleri tek formda yönetilir.
      </Card>

      <Card title="Akıllı JDBC URL Üretimi" icon="wand-magic-sparkles">
        Veritabanı tipi değiştiğinde önerilen JDBC/URI şablonu otomatik doldurularak konfigürasyon süresi kısaltılır.
      </Card>

      <Card title="Environment Variable Entegrasyonu" icon="code">
        JDBC URL, username ve password alanları environment değişkenleriyle maskeleme ve otomatik tamamlama desteği sunar.
      </Card>

      <Card title="Ortam Bazlı Yapılandırma" icon="code-branch">
        Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
      </Card>

      <Card title="Enable/Disable Kontrolü" icon="toggle-on">
        Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İleri Düzey Özellikler">
    <CardGroup cols={2}>
      <Card title="İsim Çakışması Kontrolü" icon="check-circle">
        Gerçek zamanlı name exist servisiyle benzersiz Connection isimleri garanti edilir.
      </Card>

      <Card title="Çoklu Project Yönetimi" icon="layer-group">
        Global projeye taşıma fonksiyonu sayesinde connection paylaşımı yapılabilir.
      </Card>

      <Card title="Deployment Sonucu Gösterimi" icon="file-lines">
        Kaydetme, enable veya test sonrası ayrıntılı DeploymentResult diyalogu açılır.
      </Card>

      <Card title="Connection Test Özelliği" icon="flask">
        "Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
      </Card>

      <Card title="Export/Import Özelliği" icon="file-export">
        Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection Parametreleri

<AccordionGroup>
  <Accordion title="Zorunlu Parametreler">
    <CardGroup cols={2}>
      <Card title="Name" icon="tag">
        **Açıklama:** Connection adı (benzersiz olmalı)
        **Örnek Değer:** `Production_DBPool`
        **Notlar:** Boşlukla başlamaz, özel karakterler kullanılmamalı
      </Card>

      <Card title="Database Type" icon="database">
        **Açıklama:** Desteklenen EnumDatabaseType değerlerinden biri
        **Örnek Değer:** `POSTGRES`
        **Notlar:** Tür seçimi JDBC URL şablonunu belirler
      </Card>

      <Card title="JDBC / Connection URL" icon="link">
        **Açıklama:** Hedef Database adresini içeren bağlantı dizesi
        **Örnek Değer:** `jdbc:postgresql://db-host:5432/core`
        **Notlar:** Environment değişkeni olarak seçilebilir
      </Card>

      <Card title="Use Credentials" icon="key">
        **Açıklama:** Kimlik bilgisi gerekip gerekmediğini belirtir
        **Örnek Değer:** `true`
        **Notlar:** MongoDB ve çoğu JDBC sürücüsü için önerilir
      </Card>

      <Card title="Selected Environment" icon="server">
        **Açıklama:** Connection'ın uygulanacağı yayınlanmış ortam
        **Örnek Değer:** `Production`
        **Notlar:** Test Connection için seçilmesi zorunludur
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İsteğe Bağlı Parametreler">
    <CardGroup cols={2}>
      <Card title="Description" icon="file-lines">
        **Açıklama:** Connection'ın amacını açıklayan metin
        **Varsayılan Değer:** (Boş)
        **Önerilen Değer:** Customer verisi ETL yazımı
      </Card>

      <Card title="Username" icon="user">
        **Açıklama:** Veritabanı kullanıcı adı veya environment değişkeni
        **Varsayılan Değer:** Environment değişkeni
        **Önerilen Değer:** Her ortam için ayrı secret
      </Card>

      <Card title="Password" icon="lock">
        **Açıklama:** Şifre veya secret manager referansı
        **Varsayılan Değer:** Environment değişkeni
        **Önerilen Değer:** Secret manager / vault üzerinden çekilmesi önerilir
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Timeout ve Connection Pool Parametreleri">
    <CardGroup cols={2}>
      <Card title="Connection Timeout" icon="clock">
        **Açıklama:** Bağlantı kurulması için maksimum bekleme süresi
        **Varsayılan:** 30000
        **Min:** 1000 | **Max:** 60000
        **Birim:** milisaniye
      </Card>

      <Card title="Request Timeout" icon="hourglass">
        **Açıklama:** İstek yanıtı için maksimum bekleme süresi
        **Varsayılan:** 30000
        **Min:** 1000 | **Max:** 60000
        **Birim:** milisaniye
      </Card>

      <Card title="Pool Size" icon="layer-group">
        **Açıklama:** Connection pool'daki maksimum bağlantı sayısı
        **Varsayılan:** 5
        **Min:** 1 | **Max:** 50
        **Birim:** adet
      </Card>

      <Card title="Idle Connection Test Period" icon="repeat">
        **Açıklama:** Havuzdaki bağlantıların sağlık kontrol periyodu
        **Varsayılan:** 30000
        **Min:** 5000 | **Max:** 600000
        **Birim:** milisaniye
      </Card>

      <Card title="Max Idle Time" icon="timer">
        **Açıklama:** Kullanılmayan bağlantının kapatılma süresi
        **Varsayılan:** 120000
        **Min:** 10000 | **Max:** 900000
        **Birim:** milisaniye
      </Card>

      <Card title="Max Connection Age" icon="calendar">
        **Açıklama:** Bir bağlantının havuzda kalabileceği maksimum süre
        **Varsayılan:** 180000
        **Min:** 60000 | **Max:** 3600000
        **Birim:** milisaniye
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Kullanım Senaryoları

<CardGroup cols={2}>
  <Card title="API Proxy CRUD" icon="code">
    **Durum:** Gateway içinden customer tablosuna yazma
    **Çözüm:** POSTGRES, Pool Size=10, Test Checkout aktif
    **Beklenen Davranış:** Düşük gecikmeyle ardışık INSERT işlemleri
  </Card>

  <Card title="Raporlama ETL" icon="file-lines">
    **Durum:** Scheduled Job gece raporu çekiyor
    **Çözüm:** ORACLE, Idle Test=60000, Max Age=900000
    **Beklenen Davranış:** Uzun sorgularda havuz stabil kalır
  </Card>

  <Card title="Mongo Audit Log" icon="database">
    **Durum:** REST çağrılarını MongoDB'ye yazma
    **Çözüm:** MONGODB, Credentials kapalı, URI'da kullanıcı bilgisi
    **Beklenen Davranış:** Her belge yazımında tek bağlantı yeniden kullanılır
  </Card>

  <Card title="Trino Veri Harmanlama" icon="chart-bar">
    **Durum:** Self-service analytics flow
    **Çözüm:** TRINO, Pool Size=3, Timeout=45000
    **Beklenen Davranış:** Trino koordinatörüne aşırı yük bindirilmez
  </Card>

  <Card title="DB2 Legacy Entegrasyon" icon="shield">
    **Durum:** Eski core bankacılık sistemi
    **Çözüm:** DB2, Use Credentials=true, SSL/TLS açık
    **Beklenen Davranış:** Transactional işlemler güvenli sürer
  </Card>

  <Card title="Geniş Ölçekli Queue Drain" icon="inbox">
    **Durum:** Kafka tüketimi sonrası SQL Server'a toplu insert
    **Çözüm:** SQL\_SERVER, Pool Size=20, Increment=5
    **Beklenen Davranış:** Çoklu tüketici thread'leri bloklanmaz
  </Card>
</CardGroup>

## Connection Yapılandırma

### Yeni Veritabanı Connection Havuzu Oluşturma

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/database-variable-new.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=e19f5f13a0ce91445b9f69968990a71a" alt="Image 2024 9 9 15 35 35 Pn" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/database-variable-new.png" />

#### Yapılandırma Adımları

<Steps>
  <Step title="Oluşturma Sayfasına Gitme">
    * Sol menüden Connection → Veritabanı Connection Havuzu bölümüne gidin.
    * Sağ üstteki \[+ Create] butonuna tıklayın.
  </Step>

  <Step title="Temel Bilgileri Girme">
    **Enable Status (Aktif Durumu):**

    Toggle ile aktif/pasif durumu ayarlayın. Yeni connection'lar varsayılan olarak aktiftir.

    **Name (İsim) Zorunlu:**

    Örnek: `Production_DBPool`

    * Benzersiz isim girin, boşlukla başlamaz.
    * Sistem otomatik kontrol eder. Yeşil tik: kullanılabilir. Kırmızı çarpı: mevcut isim.

    **Description (Açıklama):**

    Örnek: "Order servisinin raporlama sorguları"

    * Maks. 1000 karakter.
    * Connection'ın amacını açıklayın.

    <Info>
      Sayfanın üst kısmındaki işlem butonları alanında, **\[\<> Variable]** butonunu kullanarak dinamik değer seçebilir, Global variable ifadeleri sayesinde connection parametrelerini sabit değer yerine değişken tabanlı yönetebilirsiniz. Detaylı bilgi için [Dinamik Değişkenler](/tr/concepts/temel-kavramlar/dinamik-degiskenler) sayfasını inceleyebilirsiniz.
    </Info>
  </Step>

  <Step title="Environment (Ortam) Seçimi">
    * Dropdown menüden ortam seçin: Development, Test, veya Production.
    * Her ortam için farklı connection parametreleri tanımlanabilir.
  </Step>

  <Step title="Veritabanı Tipi ve JDBC URL">
    * Database Type listesinden hedef sürücüyü seçin; önerilen JDBC şablonu otomatik gelir.
    * JDBC / Connection URL alanını düzenleyin veya Select Variable butonu ile environment değişkeni bağlayın.
    * MongoDB ve Trino için URL'de driver'a özel parametreleri ekleyin.

    <Tip>
      Environment variable kullanarak farklı ortamlar için aynı connection'ı kullanabilirsiniz.
    </Tip>
  </Step>

  <Step title="Kimlik Bilgileri ve Credentials">
    * Use Credentials seçiliyse username/password alanları görünür.
    * Her alan için değer girin veya environment variable autocomplete ile değişken seçin.
    * Credential gerektirmeyen tekil URI (ör. Mongo SRV) durumunda Use Credentials kapatılabilir.
  </Step>

  <Step title="Timeout ve Connection Pool Ayarları">
    * Initial/Min/Max Pool Size, Increment Count, Max Statements gibi havuz parametrelerini trafik hacmine göre ayarlayın.
    * Connection Timeout, Idle Connection Test Period, Max Idle Time, Max Connection Age değerlerini milisaniye cinsinden girin.
    * MongoDB/Trino dışındaki sürücüler için Test Connection On Checkout/Checkin checkbox'larını yapılandırın.
  </Step>

  <Step title="Güvenlik ve Authentication Ayarları">
    * SSL/TLS gerektiren veritabanlarında JDBC URL'ye ssl=true veya benzeri parametre ekleyin.
    * LDAP veya vault tabanlı kimlik bilgileri için environment variable kullanarak secrets'ı gizleyin.
    * Production ortamında düz metin şifre kullanmayın.

    <Warning>
      Production ortamında mutlaka SSL/TLS kullanın ve şifreleri secret manager üzerinden yönetin.
    </Warning>
  </Step>

  <Step title="Test Connection">
    * \[Test Connection] butonuna tıklayın.
    * Bağlantı parametrelerinin doğru olup olmadığını test edin.
    * Başarılı: Yeşil onay mesajı, Başarısız: Hata detayları gösterilir.
  </Step>

  <Step title="Kaydetme">
    * Sağ üstteki \[Save and Deploy] butonuna tıklayın.

    **Kontrol Listesi:**

    * Benzersiz isim
    * Zorunlu alanlar dolu
    * Test connection başarılı (önerilir)

    **Sonuç:**

    * Connection listeye eklenir.
    * Integration Flow ve Connector adımlarında kullanılabilir hale gelir.
    * Ortama göre aktif olur.

    <Check>
      Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
    </Check>
  </Step>
</Steps>

### Connection'ı Silme

Connection'ı silmek için:

<CardGroup cols={2}>
  <Card title="Yöntem 1: View Ekranından" icon="eye">
    * Connection'ın view ekranına gidin.
    * Sağ üstteki **\[Delete]** butonuna tıklayın.
    * Onay dialogunda silme işlemini onaylayın.
  </Card>

  <Card title="Yöntem 2: Liste Ekranından" icon="list">
    * Connection listesinde satır sonundaki **⋮** menüsünden **Delete** seçeneğini tıklayın.
    * Onay dialogunda silme işlemini onaylayın.
  </Card>

  <Card title="Silme İpuçları" icon="info-circle">
    **Silmeden Önce Kontrol Edin:**

    * Integration Flow veya Connector adımlarında kullanılıyor olabilir.
    * Gerekirse alternatif bir connection atayın.
    * Silmeden önce Export ile yedek alın.
  </Card>

  <Card title="Alternatif: Deaktif Etme" icon="toggle-off">
    * Silmek yerine view ekranından **\[Disabled]** butonunu kullanın.
    * Connection pasif olur ancak silinmez.
    * Gerektiğinde **\[Enabled]** butonu ile yeniden etkinleştirilebilir.
  </Card>
</CardGroup>

### Connection'ı Dışa/İçe Aktarma

<Info>
  Bu adımda kullanıcı, mevcut connection'ları yedekleme, farklı ortamlara taşıma veya paylaşma amacıyla dışa aktarabilir (export) ya da daha önce dışa aktarılmış bir connection'ı tekrar içe aktarabilir (import). Bu işlem, sürüm yönetimi, test ve üretim ortamları arasında geçiş veya ekipler arası paylaşım süreçlerinde veri bütünlüğünü korumak için kullanılır.
</Info>

<AccordionGroup>
  <Accordion title="Dışa Aktarma (Export)">
    <CardGroup cols={2}>
      <Card title="Yöntem 1: View Ekranından" icon="eye">
        * Connection'ın view ekranına gidin.
        * Sağ üstteki **\[Export]** butonuna tıklayın.
        * ZIP dosyası otomatik olarak indirilir.
      </Card>

      <Card title="Yöntem 2: Liste Ekranından" icon="list">
        * Connection listesinde satır sonundaki **⋮** menüsünden **Export** seçeneğini tıklayın.
        * ZIP dosyası otomatik olarak indirilir.
      </Card>

      <Card title="Dosya Formatı" icon="file-zipper">
        Format: `{Date}-db-connection-{ConnectionName}-export.zip`
        Örnek: `13 Nov 2025-db-connection-Production_DBPool-export.zip`
      </Card>

      <Card title="ZIP İçeriği" icon="folder-open">
        * Connection JSON dosyası
        * Metadata bilgileri
        * Bağımlılık bilgileri (örneğin sertifikalar, key store)
      </Card>

      <Card title="Kullanım Alanları" icon="list-check">
        * Yedekleme
        * Ortamlar arası taşıma (Test → Prod)
        * Versiyonlama
        * Ekip veya proje bazlı paylaşım
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İçe Aktarma (Import)">
    <CardGroup cols={2}>
      <Card title="İçe Aktarma Adımları" icon="upload">
        * Ana listede **\[Import Veritabanı Connection Havuzu]** butonuna tıklayın.
        * İndirilen ZIP dosyasını seçin.
        * Sistem kontrolleri: Format geçerli mi? İsim çakışması var mı? Bağımlılıklar mevcut mu?
        * Ardından **\[Import]** butonuna tıklayın.
      </Card>

      <Card title="İçe Aktarma Senaryoları" icon="info-circle">
        **Senaryo 1: İsim Çakışması** → Eski connection'ın üzerine yazın veya yeni bir isimle oluşturun.

        **Senaryo 2: Eksik Bağımlılıklar** → Eksik sertifikaları veya key store'ları önce oluşturun veya import sırasında çıkarın.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection'ın Kullanım Alanları

<CardGroup cols={2}>
  <Card title="Connection Oluşturma ve Aktif Etme" icon="plus-circle">
    **Adımlar:**

    1. Connection'ı oluşturun.
    2. Test Connection ile bağlantıyı doğrulayın.
    3. Save and Deploy ile kaydedin ve etkinleştirin.
    4. Connection'ın Enabled durumda olduğundan emin olun.
  </Card>

  <Card title="Integration / Connector Adımlarında Kullanım" icon="plug">
    SQL veya NoSQL verisi gerektiren adımlarda Connection alanından Veritabanı Connection Havuzu seçilir. Örnek: "Database Query", "Bulk Insert", "Metadata Lookup" gibi adımlar.
  </Card>

  <Card title="Scheduled Job Kullanımı" icon="clock">
    Zamanlanmış ETL, raporlama veya temizlik görevlerinde connection seçilerek dış sistemlere erişim sağlanır. Job yeniden deploy edildiğinde connection güncel parametreleri kullanılır.
  </Card>

  <Card title="Test Amaçlı Kullanım" icon="flask">
    Connection Test özelliği ile bağlantının doğruluğu Integration Flow'dan bağımsız olarak kontrol edilebilir. Bu test, pooling ve credential değişikliklerinde hızlı doğrulama sağlar.
  </Card>

  <Card title="Connection Durum Yönetimi" icon="toggle-on">
    * View ekranından Enable/Disable butonları ile connection durumunu hızlıca değiştirebilirsiniz.
    * Pasif connection'lar Integration Flow'larda kullanılamaz.
    * Durum değişiklikleri anında uygulanır ve connection listesinde görüntülenir.
  </Card>
</CardGroup>

## Log Hedefi Olarak Kullanım — Tablo Şeması

<Info>
  Bu bölümdeki ayarlar **yalnızca** bağlantı bir log hedefi olarak seçildiğinde geçerlidir. API Proxy Trafik, Politika Yakalama, Denetim, Uygulama, Token Trafik ve Gönderilemeyen Mesaj logları bu kapsamdadır.

  Bağlantı başka amaçlarla (DB-to-API dönüşümü, kimlik doğrulama, görev akışı, SQL politikaları vb.) kullanılıyorsa bu alanlar göz ardı edilir.
</Info>

### Varsayılan Şema

Tüm log tabloları için tek bir şema ön eki tanımlanabilir. Boş bırakılırsa INSERT işlemleri şema ön eki olmadan gerçekleştirilir.

| Değer       | Üretilen Tablo Adı              |
| ----------- | ------------------------------- |
| *(boş)*     | `log_ApiProxyTraffic`           |
| `analytics` | `analytics.log_ApiProxyTraffic` |

### Tablo Bazlı Özelleştirmeler

Her log türü için şema ve tablo adı ayrı ayrı özelleştirilebilir. Şema alanı boş bırakılırsa varsayılan şema kullanılır; tablo adı alanı boş bırakılırsa ilgili log türünün standart tablo adı kullanılır.

| Log Türü                | Varsayılan Tablo Adı  |
| ----------------------- | --------------------- |
| API Proxy Trafik        | `log_ApiProxyTraffic` |
| Politika Yakalama       | `log_PolicyCapture`   |
| Denetim Olayları        | `log_AuditEvent`      |
| Uygulama Logu           | `log_Application`     |
| Gönderilemeyen Mesajlar | `log_UnsentMessage`   |
| Token Trafiği           | `log_TokenTraffic`    |

### Kimlik Adı Biçimleri

Şema ve tablo adları girilirken veritabanı motorunun desteklediği tırnaklanma biçimi kullanılabilir:

| Biçim                  | Söz Dizimi   | Destekleyen Motorlar                  | Notlar                                                                                                  |
| ---------------------- | ------------ | ------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| Tırnaksız (normal)     | `hr`         | Tüm motorlar                          | Harf veya alt çizgi ile başlar. Oracle ve DB2 bu adları otomatik büyük harfe çevirir (örn. `hr` → `HR`) |
| Çift tırnak            | `"şemaadı"`  | Oracle, PostgreSQL, MSSQL, DB2, Trino | ANSI SQL standardı; küçük/büyük harf duyarlı adlar için zorunludur                                      |
| Ters tırnak (backtick) | `` `adad` `` | MySQL, Hive, Impala                   | —                                                                                                       |
| Köşeli parantez        | `[adad]`     | MSSQL                                 | —                                                                                                       |
| Tek tırnak             | `'adad'`     | Desteklenmez                          | SQL'de string değeri için kullanılır; kimlik adı olarak geçersizdir                                     |

### Case-Sensitive Tablo Adı Örneği

Aşağıdaki gibi oluşturulmuş bir tablo için:

```sql theme={null}
CREATE TABLE "HR"."logtablosu" (...)
```

Bağlantı ayarlarında şöyle yazılmalıdır:

| Alan      | Değer            | Açıklama                                                               |
| --------- | ---------------- | ---------------------------------------------------------------------- |
| Şema      | `HR` veya `"HR"` | Oracle'da ikisi de aynı sonucu verir                                   |
| Tablo Adı | `"logtablosu"`   | Çift tırnak zorunludur; tablo küçük harfle case-sensitive oluşturulmuş |

<Warning>
  Özel tablo adı kullanırken kolonların ve veri tiplerinin Apinizer'ın beklediği yapıyla **birebir** eşleşmesi gerekir. Aksi halde INSERT işlemleri kolon bulunamadı hatasıyla başarısız olur.

  Tablo yapısı referansı için [Apinizer Logları için Tablo Oluşturma Komutları](/tr/operations/yonetici-kilavuzlari/apinizer-log-tablolari-olusturma-komutlari) sayfasına bakın.
</Warning>

## Best Practices

<AccordionGroup>
  <Accordion title="Yapılması Gerekenler ve En İyi Uygulamalar">
    <CardGroup cols={2}>
      <Card title="Pool Kapasite Planlama" icon="layer-group">
        **Kötü:** Tüm veritabanları için Pool Size=1 bırakmak.
        **İyi:** Trafiği ölçüp min/max değerlerini elle ayarlamak.
        **En İyi:** Peak eşzamanlı istek ×1.5 kuralını uygulayıp Increment Count ile elastik ölçekleme sağlamak.
      </Card>

      <Card title="JDBC URL Yönetimi" icon="link">
        **Kötü:** Host ve portu manuel yazıp ortamlarda değiştirmeyi unutmak.
        **İyi:** Her ortam için ayrı URL girmek.
        **En İyi:** Environment variable autocomplete kullanarak referans ile tek formu tüm ortamlara taşımak.
      </Card>

      <Card title="Kimlik Bilgisi Saklama" icon="key">
        **Kötü:** Şifreyi düz metin girip paylaşmak.
        **İyi:** Sadece production'da secret manager kullanmak.
        **En İyi:** Tüm ortamlarda secret referansları kullanıp rotasyon planlamak.
      </Card>

      <Card title="Sürümler Arası Tutarlılık" icon="code-branch">
        **Kötü:** Test ve prod üzerinde farklı connection nesneleri yönetmek.
        **İyi:** Export/Import ile kopyalamak.
        **En İyi:** Tek connection'da environment seçici kullanıp JSON export'u versiyon kontrolüne almak.
      </Card>

      <Card title="Ortam Yönetimi" icon="server">
        **Kötü:** Tüm ortamlarda aynı connection parametrelerini kullanmak.
        **İyi:** Her ortam için ayrı connection oluşturmak.
        **En İyi:** Environment seçeneğini kullanarak tek connection'da tüm ortamları yönetmek, ortamlar arası geçişte sadece environment değiştirmek.
      </Card>

      <Card title="Connection Test" icon="flask">
        **Kötü:** Connection'ı test etmeden kaydetmek ve deploy etmek.
        **İyi:** Kaydetmeden önce Test Connection ile doğrulamak.
        **En İyi:** Her parametre değişikliğinden sonra test etmek, production'a geçmeden önce test ortamında tam entegrasyon testi yapmak.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Güvenlik En İyi Uygulamaları">
    <CardGroup cols={2}>
      <Card title="Credential Rotasyonu" icon="key">
        Şifreleri periodik olarak güncelleyin, değişiklik sonrası tüm ortamlarda Test Connection yaparak tutarlılığı doğrulayın.
      </Card>

      <Card title="Ağ Segmentasyonu" icon="network-wired">
        Connection tanımlarını sadece ilgili VPC/VNet'den erişebilen veritabanı uç noktalarına yönlendirin, gereksiz genel IP kullanmayın.
      </Card>

      <Card title="Yetki Matrisi" icon="shield">
        Veritabanı kullanıcılarına minimum yetki atayın; sadece gerekli şema ve işlemlere izin verin, DBA yetkili hesapları kullanmayın.
      </Card>

      <Card title="Kimlik Bilgileri Yönetimi" icon="lock">
        Kullanıcı adı ve şifre gibi hassas bilgileri environment variable veya secret manager kullanarak saklayın. Kimlik bilgilerini kod veya konfigürasyon dosyalarına hardcode etmeyin. Periyodik olarak şifreleri güncelleyin.
      </Card>

      <Card title="SSL/TLS Kullanımı" icon="shield-halved">
        Production ortamında mutlaka SSL/TLS aktif edin. Self-signed sertifikalar sadece development ortamında kullanın. Sertifika expiration tarihlerini takip edin ve zamanında yenileyin.
      </Card>

      <Card title="Erişim Kontrolü" icon="user-shield">
        Connection yapılandırmasını sadece yetkili kullanıcıların değiştirmesine izin verin. Connection değişiklik loglarını saklayın. Kritik connection'lar için değişiklik approval süreci uygulayın.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kaçınılması Gerekenler">
    <CardGroup cols={2}>
      <Card title="Yanlış Environment Seçimi" icon="exclamation-triangle">
        **Neden kaçınılmalı:** Production verisine test ortamından erişim riski doğar.
        **Alternatif:** Ortam açılır listesini kaydetmeden önce doğrulayın, isimlendirmede Prod\_, Test\_ önekleri kullanın.
      </Card>

      <Card title="Aşırı Pool Boyutu" icon="gauge">
        **Neden kaçınılmalı:** Hedef Database üzerinde gereksiz oturum açılır, kaynaklar tükenir.
        **Alternatif:** Trafik metriğine göre Max Pool Size belirleyin, monitoring ile güncelleyin.
      </Card>

      <Card title="Sertifika Doğrulamasını Atlamak" icon="shield-slash">
        **Neden kaçınılmalı:** SSL/TLS kapalı olursa veriler düz metin taşınır.
        **Alternatif:** JDBC URL'ye ssl=true ekleyin ve güvenilir CA sertifikası kullanın.
      </Card>

      <Card title="Production Connection'ı Test Ortamında Kullanma" icon="triangle-exclamation">
        **Neden kaçınılmalı:** Test verileri production sistemine yazılabilir, gerçek kullanıcılar etkilenebilir, güvenlik riski oluşur.
        **Alternatif:** Her ortam için ayrı connection oluşturun, environment parametresini kullanın, connection isimlerini ortama göre prefix ekleyerek ayırın (Test\_, Prod\_).
      </Card>

      <Card title="Çok Düşük Timeout Değerleri" icon="clock">
        **Neden kaçınılmalı:** Ağ gecikmelerinde connection sürekli timeout olur, Entegrasyon adımları başarısız olur.
        **Alternatif:** Gerçek kullanım senaryolarına göre timeout değerlerini ayarlayın, network latency'yi ölçün ve timeout'ları buna göre belirleyin.
      </Card>

      <Card title="Connection Pool Kullanmama" icon="layer-group">
        **Neden kaçınılmalı:** Her istekte yeni bağlantı açılır, performans düşer, kaynak tüketimi artar, hedef sistem yükü artar.
        **Alternatif:** Connection pool aktif edin, pool size'ı trafik hacmine göre ayarlayın, pool monitoring kurun.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Performans İpuçları

<CardGroup cols={2}>
  <Card title="Sorgu Yoğunluğu Yönetimi" icon="chart-line">
    **Öneri:** Yoğun SELECT/INSERT akışları için ayrı connection tanımları oluşturun.
    **Etki:** Pool starvation riskini azaltır, yanıt süreleri dengelenir.
  </Card>

  <Card title="Okuma/Yazma Ayrımı" icon="arrows-rotate">
    **Öneri:** Read replica ve primary DB için farklı Connection kullanın.
    **Etki:** Replica performansı korunur, yazma işlemleri etkilenmez.
  </Card>

  <Card title="Hazır JDBC Şablonları" icon="file-code">
    **Öneri:** Otomatik doldurulan JDBC URL'leri proje standardına göre düzenleyip template olarak saklayın.
    **Etki:** Yeni bağlantı açma süresi kısalır, hata oranı düşer.
  </Card>

  <Card title="Connection Pool Optimizasyonu" icon="layer-group">
    **Öneri:** Pool size'ı peak trafiğe göre ayarlayın (önerilen: eşzamanlı istek sayısı × 1.5), idle connection timeout'ları belirleyin, pool health check yapın.
    **Etki:** Bağlantı açma maliyeti %80 azalır, yanıt süreleri düşer, kaynak kullanımı optimize edilir.
  </Card>

  <Card title="Timeout Değerleri Optimizasyonu" icon="clock">
    **Öneri:** Gerçek network latency'yi ölçün, timeout değerlerini buna göre ayarlayın, çok düşük veya çok yüksek timeout'lardan kaçının.
    **Etki:** Gereksiz beklemeler önlenir, hızlı fail-over sağlanır, kullanıcı deneyimi iyileşir.
  </Card>

  <Card title="Connection Monitoring" icon="chart-bar">
    **Öneri:** Connection pool kullanımını izleyin, timeout oranlarını takip edin, connection health check yapın, alerting kurun.
    **Etki:** Sorunlar proaktif tespit edilir, performans darboğazları erken belirlenir, kesinti süresi azalır.
  </Card>
</CardGroup>

## Sorun Giderme (Troubleshooting)

<AccordionGroup>
  <Accordion title="JDBC URL Doğrulanamıyor">
    <Warning>
      Host/port hatalı, SSL parametreleri eksik veya DNS çözülemiyor olabilir.
    </Warning>

    <Steps>
      <Step title="URL Doğrulama">
        URL'yi test ortamında ping/tnsping ile doğrulayın.
      </Step>

      <Step title="SSL Parametreleri">
        SSL parametrelerini JDBC stringine ekleyin.
      </Step>

      <Step title="DNS Kontrolü">
        DNS kaydını veya hosts girdisini güncelleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Credential Maskesi Kapanmıyor">
    <Warning>
      Değişken ifade yarım kaldı, Environment servisi sonuç döndürmedi veya Use Credentials toggle yanlış olabilir.
    </Warning>

    <Steps>
      <Step title="Sözdizimi Kontrolü">
        Username/password alanında sözdizimini tamamlayın.
      </Step>

      <Step title="Environment Variable">
        Environment variable aramasını yeniden tetikleyin.
      </Step>

      <Step title="Toggle Sıfırlama">
        Toggle'ı kapatıp tekrar açarak alanları sıfırlayın.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network gecikmesi, hedef sistem yavaş yanıt veriyor veya timeout değeri çok düşük olabilir.
    </Warning>

    <Steps>
      <Step title="Network Kontrolü">
        Network connectivity kontrol edin.
      </Step>

      <Step title="Sistem Sağlığı">
        Hedef sistem sağlığını kontrol edin.
      </Step>

      <Step title="Timeout Ayarları">
        Timeout değerlerini artırın.
      </Step>

      <Step title="Log İnceleme">
        Connection loglarını inceleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Yanlış kullanıcı adı/şifre, expired credentials veya yetki problemi olabilir.
    </Warning>

    <Steps>
      <Step title="Kimlik Bilgileri">
        Kimlik bilgilerini doğrulayın.
      </Step>

      <Step title="Kullanıcı Durumu">
        Hedef sistemde kullanıcının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Yetki Kontrolü">
        Gerekli yetkilerin verildiğini kontrol edin.
      </Step>

      <Step title="Sertifika Kontrolü">
        SSL/TLS sertifikalarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size çok düşük, connection leak var veya trafik çok yüksek olabilir.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Pool size'ı artırın.
      </Step>

      <Step title="Connection Kontrolü">
        Connection'ların düzgün kapatıldığını kontrol edin.
      </Step>

      <Step title="Idle Timeout">
        Idle connection timeout'ları ayarlayın.
      </Step>

      <Step title="Metrik İzleme">
        Connection kullanım metriklerini izleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Başarılı Ama Entegrasyon Akışı Hata Veriyor">
    <Warning>
      Integration/Connector adımında farklı connection seçili olabilir, adım yanlış yapılandırılmış olabilir veya Flow/Job redeploy edilmemiş olabilir.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Connection'ın enable toggle'ının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Connection Seçimi">
        Integration Flow'da doğru connection'ın seçildiğini doğrulayın.
      </Step>

      <Step title="Connection Deploy">
        Connection'ı tekrar deploy edin.
      </Step>

      <Step title="Flow/Job Deploy">
        Integration Flow veya Job'ı redeploy edin.
      </Step>

      <Step title="Log Kontrolü">
        Gateway loglarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Sık Sorulan Sorular (SSS)

<AccordionGroup>
  <Accordion title="Hangi veritabanı tipleri destekleniyor?">
    <Check>
      Oracle, MySQL, PostgreSQL, SQL Server, DB2, Sybase, Apache Hive/Impala, MongoDB ve Trino bağlantıları aynı form üzerinden tanımlanabilir.
    </Check>
  </Accordion>

  <Accordion title="Ortama bağlı farklı credential kullanabilir miyim?">
    <Check>
      Evet, environment dropdown ve environment variable autocomplete ile her ortam için ayrı kullanıcı adı/şifre referansı verebilirsiniz.
    </Check>
  </Accordion>

  <Accordion title="MongoDB ve JDBC parametreleri aynı mı?">
    <Info>
      Hayır, MongoDB için URI alanı mongodb:// formatında çalışır ve Increment Count, Max Statements alanları otomatik gizlenir.
    </Info>
  </Accordion>

  <Accordion title="Havuz testleri hangi alanlarla kontrol edilir?">
    <Info>
      Test Connection On Checkout/Checkin checkbox'ları c3p0 sürücüsü kullanan JDBC tiplerinde aktiftir; MongoDB ve Trino'da devre dışıdır.
    </Info>
  </Accordion>

  <Accordion title="Deployment sonucu hatalarını nereden görürüm?">
    <Info>
      Save/Test işlemi sonrasında açılan DeploymentResult penceresinde hata mesajları, log bağlantıları ve geri dönüş eylemleri listelenir.
    </Info>
  </Accordion>

  <Accordion title="Aynı connection'ı birden fazla Integration Flow'da kullanabilir miyim?">
    <Check>
      Evet, aynı connection birden fazla Integration Flow veya Connector adımında kullanılabilir. Bu merkezi yönetim sağlar ve konfigürasyon tutarlılığını garanti eder. Ancak connection'da yapılan değişiklikler tüm kullanım yerlerini etkileyeceği için dikkatli olunmalıdır.
    </Check>
  </Accordion>

  <Accordion title="Connection pool kullanmak zorunlu mudur?">
    <Info>
      Connection pool kullanımı zorunlu değildir ancak yüksek trafikli sistemlerde şiddetle önerilir. Her istekte yeni bağlantı açmak yerine mevcut bağlantıları yeniden kullanmak performansı önemli ölçüde artırır.
    </Info>
  </Accordion>

  <Accordion title="Test ve Production için farklı connection'lar mı oluşturmalıyım?">
    <Check>
      Evet, her ortam için ayrı connection oluşturmanız önerilir. Alternatif olarak environment parametresini kullanarak tek connection içinde tüm ortamları yönetebilirsiniz. Bu yaklaşım daha kolay yönetim ve daha az hata riski sağlar.
    </Check>
  </Accordion>

  <Accordion title="Test Connection başarılı ama Integration Flow'da çalışmıyor, neden?">
    <Warning>
      Birkaç neden olabilir:
    </Warning>

    1. Connection enable toggle'ı pasif olabilir
    2. Integration adımında farklı bir connection seçili olabilir
    3. Connection deploy edilmemiş olabilir
    4. Integration Flow henüz redeploy edilmemiş olabilir
  </Accordion>

  <Accordion title="Connection'ı görüntülemek için nasıl bir yol izlemeliyim?">
    <Check>
      Connection listesinde connection adına (Name) tıklayarak veya satır sonundaki menüden (⋮) View seçeneğini seçerek view ekranına gidebilirsiniz. View ekranında tüm connection bilgilerini görüntüleyebilir ve Edit, Enable/Disable, Delete, Export gibi işlemleri gerçekleştirebilirsiniz.
    </Check>
  </Accordion>

  <Accordion title="View ekranından connection'ı düzenleyebilir miyim?">
    <Check>
      Evet, view ekranının sağ üst köşesindeki **\[Edit]** butonuna tıklayarak düzenleme ekranına yönlendirilirsiniz. Düzenleme ekranında tüm parametreleri güncelleyebilirsiniz.
    </Check>
  </Accordion>
</AccordionGroup>
