Veritabanı
Genel Bakış
Amacı Nedir?
Connection (Bağlantı) tanımlarını merkezi olarak toplayarak Integration Flow adımlarında tekrar kullanılabilir hale getirir.
Farklı veritabanı tipleri (Oracle, MySQL, PostgreSQL, MongoDB, Trino vb.) için tek noktadan yapılandırma sunarak yönetimi kolaylaştırır.
Connection Pool parametreleriyle yüksek trafikte kaynak tüketimini optimize eder ve tutarlı yanıt süresi sağlar.
Ortam bazlı kimlik bilgisi ve JDBC URL yönetimiyle güvenli dağıtım ve denetim süreçlerini destekler.
Çalışma Prensibi
Integration Flow veya Connector içerisinden Database bağlantısı talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur.
C3P0 uyumlu pool stratejisiyle mevcut Connection havuzdan alınır; limit aşılırsa yeni Connection oluşturulur.
Kullanıcı adı/şifre veya environment değişkenine bağlanan credential setiyle Authentication gerçekleştirilir.
JDBC veya Mongo URI üzerinden SQL/NoSQL komutları hedef Database sürücüsüne iletilir ve yanıt alınır.
İşlem tamamlandıktan sonra Connection pool'a geri döner, uzun süre kullanılmayan bağlantılar kapatılır.
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.
Kullanım Alanları
API Gateway üzerinden transactional CRUD işlemleri gerçekleştiren Integration Flow adımları.
Mesaj tüketimi sonrası veritabanına yazım yapan Connector senaryoları.
Scheduled Job tabanlı veri senkronizasyonu, raporlama ve arşivleme görevleri.
DevOps ekiplerinin ortama özel bağlantı setlerini test etmesi ve geçiş projeleri.
Teknik Özellikler ve Yetenekler
Temel Özellikler
Oracle, MySQL, PostgreSQL, SQL Server, DB2, Sybase, Apache Hive/Impala, MongoDB ve Trino seçenekleri tek formda yönetilir.
Veritabanı tipi değiştiğinde önerilen JDBC/URI şablonu otomatik doldurularak konfigürasyon süresi kısaltılır.
JDBC URL, username ve password alanları environment değişkenleriyle maskeleme ve otomatik tamamlama desteği sunar.
Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
İleri Düzey Özellikler
Gerçek zamanlı name exist servisiyle benzersiz Connection isimleri garanti edilir.
Global projeye taşıma fonksiyonu sayesinde connection paylaşımı yapılabilir.
Kaydetme, enable veya test sonrası ayrıntılı DeploymentResult diyalogu açılır.
"Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
Connection Parametreleri
Zorunlu Parametreler
Açıklama: Connection adı (benzersiz olmalı)
Örnek Değer: Production_DBPool
Notlar: Boşlukla başlamaz, özel karakterler kullanılmamalı
Açıklama: Desteklenen EnumDatabaseType değerlerinden biri
Örnek Değer: POSTGRES
Notlar: Tür seçimi JDBC URL şablonunu belirler
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
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
Açıklama: Connection'ın uygulanacağı yayınlanmış ortam
Örnek Değer: Production
Notlar: Test Connection için seçilmesi zorunludur
İsteğe Bağlı Parametreler
Açıklama: Connection'ın amacını açıklayan metin Varsayılan Değer: (Boş) Önerilen Değer: Customer verisi ETL yazımı
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
Açıklama: Şifre veya secret manager referansı Varsayılan Değer: Environment değişkeni Önerilen Değer: Secret manager / vault üzerinden çekilmesi önerilir
Timeout ve Connection Pool Parametreleri
Açıklama: Bağlantı kurulması için maksimum bekleme süresi Varsayılan: 30000 Notlar: UI'da yalnızca zorunluluk kontrolü var; min/max yok. Birim: milisaniye
Açıklama: Connection pool'daki maksimum bağlantı sayısı
Varsayılan: 5
Notlar: UI'da min: 1 zorunluluğu yalnızca Initial Pool Size ve Min Pool Size alanlarında var; Max Pool Size alanında min/max sınırı yok.
Birim: adet
Açıklama: Havuzdaki bağlantıların sağlık kontrol periyodu Varsayılan: 30000 Notlar: UI'da yalnızca zorunluluk kontrolü var; min/max yok. Birim: milisaniye
Açıklama: Kullanılmayan bağlantının kapatılma süresi Varsayılan: 120000 Notlar: UI'da yalnızca zorunluluk kontrolü var; min/max yok. Birim: milisaniye
Açıklama: Bir bağlantının havuzda kalabileceği maksimum süre Varsayılan: 180000 Notlar: UI'da yalnızca zorunluluk kontrolü var; min/max yok. Birim: milisaniye
Kullanım Senaryoları
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
Durum: Scheduled Job gece raporu çekiyor Çözüm: ORACLE, Idle Test=60000, Max Age=900000 Beklenen Davranış: Uzun sorgularda havuz stabil kalır
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
Durum: Self-service analytics flow Çözüm: TRINO, Pool Size=3, Timeout=45000 Beklenen Davranış: Trino koordinatörüne aşırı yük bindirilmez
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
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
Dayanıklılık (Resilience)
Hedef veritabanı geçici olarak erişilemez hale geldiğinde gateway'in istek işlemeye devam edebilmesi için bu bağlantıya bir devre kesici (circuit breaker) tanımlanabilir. Devre kesici yalnızca bu bağlantı üzerinden gönderilen log kayıtlarını (trafik logu, token logu, denetim logu vb.) korur; API Proxy'nin backend'e ilettiği istekleri ve Integration Flow / Scheduled Job üzerinden yapılan gönderimleri etkilemez.
Bu bağlantı için devre kesiciyi açar/kapatır.
Varsayılan: Kapalı (OFF)
Devrenin açılması için hata penceresi içinde birikmesi gereken ardışık hata sayısı.
Varsayılan: 5
Aralık: 1 - 10.000
Devre açıldıktan sonra tek bir yeniden deneme yapılmadan önce beklenecek süre.
Varsayılan: 30 saniye
Aralık: 1 - 3.600 saniye
Bu üç alandan biri boş bırakılırsa, Yönetim → Sistem Ayarları → Loglama ve İzleme (Logging & Monitoring) → Connector Devre Kesici kategorisi altındaki kurulum genelindeki varsayılan değer kullanılır.
Hata eşiği aşıldığında devre açılır: bu bağlantı üzerinden yapılacak log gönderimleri hedefe hiç ulaşmadan, tanımlıysa failover bağlantısına yönlendirilir; failover tanımlı değilse sayaçla düşürülür (drop edilir). Bekleme penceresi dolduğunda tek bir deneme yapılır; deneme başarılı olursa devre kapanır, başarısız olursa devre yeniden açılır.
Bu alanlardaki değişiklikler, bu bağlantıyı kullanan API Proxy'ler yeniden deploy edildikten sonra geçerli olur.
Connection Yapılandırma
Yeni Veritabanı Connection Havuzu Oluşturma
Yapılandırma Adımları
- Sol menüden Connection → Veritabanı Connection Havuzu bölümüne gidin.
- Sağ üstteki [+ Create] butonuna tıklayın.
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.
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 sayfasını inceleyebilirsiniz.
- Dropdown menüden ortam seçin: Development, Test, veya Production.
- Her ortam için farklı connection parametreleri tanımlanabilir.
- 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.
Environment variable kullanarak farklı ortamlar için aynı connection'ı kullanabilirsiniz.
- 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.
- 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.
- 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.
Production ortamında mutlaka SSL/TLS kullanın ve şifreleri secret manager üzerinden yönetin.
- [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.
- 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.
Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
Connection'ı Silme
Connection'ı silmek için:
- Connection'ın view ekranına gidin.
- Sağ üstteki [Delete] butonuna tıklayın.
- Onay dialogunda silme işlemini onaylayın.
- Connection listesinde satır sonundaki ⋮ menüsünden Delete seçeneğini tıklayın.
- Onay dialogunda silme işlemini onaylayın.
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.
- Silmek yerine view ekranından [Disabled] butonunu kullanın.
- Connection pasif olur ancak silinmez.
- Gerektiğinde [Enabled] butonu ile yeniden etkinleştirilebilir.
Connection'ı Dışa/İçe Aktarma
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.
Dışa Aktarma (Export)
- Connection'ın view ekranına gidin.
- Sağ üstteki [Export] butonuna tıklayın.
- ZIP dosyası otomatik olarak indirilir.
Satır sonundaki ⋮ menüsünde artık iki kalem vardır: birincil Export, bu connection ön-seçili olarak Dışa/İçe Aktarma Sihirbazı'nı açar — host/URL/parola alanındaki ${DEĞİŞKEN} referansları varsa bağımlılık adımında otomatik yüzeye çıkar; ikincil Export as File (Dosya Olarak Dışa Aktar) ise sihirbaza girmeden aşağıda anlatılan ZIP dosyasını doğrudan indirir.
Format: {Date}-db-connection-{ConnectionName}-export.zip
Örnek: 13 Nov 2025-db-connection-Production_DBPool-export.zip
- Connection JSON dosyası
- Metadata bilgileri
- Bağımlılık bilgileri (örneğin sertifikalar, key store)
- Yedekleme
- Ortamlar arası taşıma (Test → Prod)
- Versiyonlama
- Ekip veya proje bazlı paylaşım
İçe Aktarma (Import)
- Ana listedeki [Import Veritabanı Connection Havuzu] butonuna tıklayın — bu buton artık tip Bağlantı (Connection) ön-seçili olarak Dışa/İçe Aktarma Sihirbazı'nın içe aktarma adımını açar (Administration'dan açıldığında Admin kapsamında); eski yükleme diyaloğu kaldırıldı.
- Dışa aktarılan paketi seçin ve sihirbazın adımlarını izleyin.
- Sihirbaz, siz onaylamadan önce formatı, isim çakışmasını ve bağımlılıkların durumunu kontrol eder.
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.
Connection'ın Kullanım Alanları
Adımlar:
- Connection'ı oluşturun.
- Test Connection ile bağlantıyı doğrulayın.
- Save and Deploy ile kaydedin ve etkinleştirin.
- Connection'ın Enabled durumda olduğundan emin olun.
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.
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.
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.
- 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.
Log Hedefi Olarak Kullanım — Tablo Şeması
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.
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:
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ş |
Ö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ı sayfasına bakın.
Best Practices
Yapılması Gerekenler ve En İyi Uygulamalar
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: Trafiğe göre Max Pool Size değerini ayarlayıp Increment Count ile elastik ölçekleme sağlamak.
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.
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.
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.
Kötü: Tüm ortamlarda aynı connection parametrelerini kullanmak.