IBM Informix, hem klasik ilişkisel hem de nesne-ilişkisel yeteneklere sahip, düşük yönetim maliyetiyle bilinen kurumsal bir veritabanı yönetim sistemidir. Özellikle OLTP iş yükleri, gömülü sistemler ve IoT/uç (edge) senaryolarında yaygın olarak tercih edilir.
IBM Informix Nedir?
Informix, satır ve tablolar üzerine kurulu ilişkisel bir veritabanı yönetim sistemidir (RDBMS); bunun ötesinde nesne-ilişkisel özellikler, genişletilebilir veri tipleri ve gömülü kullanım için küçük bir ayak izi sunar. Adı, kökeninde "UNIX üzerinde bilgi" (information on UNIX) fikrine dayanır ve sistem uzun yıllardır Linux, çeşitli UNIX türevleri ve Windows üzerinde çalışır.
Informix'in ayırt edici özelliği, kendi kendini yöneten (self-managing) tasarımıdır. Sık ayar gerektirmeden kararlı çalışması, onu ayrı bir tam zamanlı veritabanı yöneticisi bulundurmayan ekipler ve makine üzerine gömülerek dağıtılan uygulamalar için cazip kılar. Sunucu; bellek, disk ve iş parçacığı kaynaklarının çoğunu otomatik yönetir, böylece operasyon yükü azalır. Genel veritabanı ailesindeki yeri için veritabanı türleri rehberi yazımıza göz atabilirsiniz.
Informix, işlem bütünlüğü açısından ACID ilkelerine uyar; kilitleme, izolasyon seviyeleri ve günlükleme (logging) ile eşzamanlı erişimi güvenle yönetir. Bu yönüyle klasik satır tabanlı veritabanlarının beklentilerini karşılarken, aynı motorda belge ve zaman serisi verisini de barındırabilmesiyle onlardan ayrışır.
Kısa Tarihçe: Informix'ten IBM ve HCL'e
Informix, 1980'lerde Roger Sippl'ın kurduğu Informix Software tarafından geliştirildi ve UNIX sunucularının yükseliş döneminde güçlü bir konum edindi. 2001 yılında IBM, Informix'in veritabanı işini satın aldı ve ürünü kendi kurumsal veri portföyüne kattı.
2017'de IBM ile HCL Technologies arasında yapılan iş birliği kapsamında Informix'in geliştirme ve destek çalışmalarının büyük bölümü HCL tarafına geçti; ürün IBM markası altında pazarlanmaya devam etti. Aynı vendörün diğer veritabanı ürünü için IBM Db2 nedir yazımız iyi bir karşılaştırma noktasıdır.
Mimari: Depolama ve Bellek Yapısı
Informix, verileri işletim sistemi dosyalarından soyutlayan katmanlı bir depolama modeli kullanır. Fiziksel disk alanı chunk'lara, mantıksal alan ise dbspace'lere bölünür; tablolar ve indeksler dbspace'ler içine yerleştirilir. Sunucu süreci belleği paylaşımlı bellek segmentlerinde yönetir.
| Terim | Açıklama |
|---|---|
| Instance (server) | Tek bir Informix veritabanı sunucusu süreci; oninit ile başlatılır |
| dbspace | Bir veya daha fazla chunk'tan oluşan mantıksal depolama birimi |
| chunk | Disk üzerinde ayrılmış fiziksel alan (dosya veya ham aygıt) |
| page | Temel G/Ç birimi; disk okuma/yazma bu birimlerle yapılır |
| logical log | İşlem (transaction) kayıtlarını tutan mantıksal günlük |
| physical log | Kurtarma için sayfaların önceki halini tutan fiziksel günlük |
Veri Modeli: İlişkisel ve Nesne-İlişkisel
Informix standart SQL'i destekler; ayrıca kullanıcı tanımlı tipler, satır tipleri (row types), koleksiyon tipleri ve DataBlade modülleriyle genişletilebilir bir nesne-ilişkisel motor sunar. DataBlade'ler, veritabanına yeni veri tipleri ve bunlara özel işlevler ekleyen eklentilerdir.
- İlişkisel çekirdek: tablolar, indeksler, kısıtlar, işlemler ve ANSI SQL
- Genişletilebilirlik: DataBlade modülleriyle uzamsal, zaman serisi ve tam metin gibi özel tipler
- Saklı yordamlar: Informix'in kendi SPL (Stored Procedure Language) dili, ayrıca harici diller
- Trigger ve UDR: tetikleyiciler ve kullanıcı tanımlı rutinlerle iş mantığı sunucuda tutulabilir
NoSQL ve JSON Desteği
Informix, ilişkisel yapının yanında JSON ve BSON belge koleksiyonlarını da saklayabilir. Bir dinleyici (wire listener) bileşeni sayesinde MongoDB ve REST uyumlu istemciler Informix'e doküman veritabanı gibi bağlanabilir. Bu "hibrit" yaklaşım, aynı motor içinde hem tablo hem belge verisini tutup birlikte sorgulamaya olanak tanır.
Zaman Serisi ve Uzamsal Veri
Informix, yoğun zaman damgalı veriyi verimli tutmak için tasarlanmış bir zaman serisi (TimeSeries) yeteneğiyle öne çıkar. Sensör ölçümleri, sayaç okumaları ve finansal tik verisi gibi sürekli akan kayıtlar, klasik satır-tablo yaklaşımına göre daha az yer kaplayacak ve daha hızlı sorgulanacak biçimde saklanabilir. Uzamsal (spatial) DataBlade ise coğrafi verinin saklanması ve sorgulanmasını sağlar.
Bu özellikler, küçük ayak izi ile birleşince Informix'i IoT ağ geçitleri ve uç cihazlar için pratik bir seçenek haline getirir; veri hem cihazda toplanır hem de merkeze replikasyonla taşınabilir. Zaman serisi verisini ilişkisel tablolarla birlikte sorgulayabilmek, ham ölçümleri iş verisiyle ilişkilendiren raporları tek bir SQL katmanında üretmeyi kolaylaştırır.
Yüksek Erişilebilirlik ve Replikasyon
Informix, olgun bir yüksek erişilebilirlik seti sunar. Birden çok ikincil sunucu tipi tek bir birincil sunucuyla çalışarak kesinti dayanıklılığı ve okuma ölçekleme sağlar.
| Bileşen | Rolü |
|---|---|
| HDR (High-availability Data Replication) | Birincil ile senkron/asenkron çalışan sıcak yedek |
| RSS (Remote Standalone Secondary) | Uzak konumda tutulan ek yedek sunucu |
| SDS (Shared Disk Secondary) | Birincille aynı diski paylaşan ikincil sunucu |
| ER (Enterprise Replication) | Tablo/satır bazında esnek, çok yönlü replikasyon |
Bu bileşenlerin birlikte kurulabildiği yapı, çok düğümlü bir küme oluşturarak hem yüksek erişilebilirlik hem de coğrafi dağıtım sağlar. Benzer HA yaklaşımları için Oracle Database yazımızdaki kavramlar da yol gösterici olabilir.
Yönetim Araçları ve SQL
Informix, komut satırından çalışan bir dizi yardımcı araçla yönetilir. dbaccess etkileşimli SQL çalıştırmak için, onstat sunucunun anlık durumunu izlemek için, onmode yapılandırmayı değiştirmek için, oncheck tutarlılık denetimi için, onbar ve ontape ise yedekleme için kullanılır.
-- Basit bir tablo ve indeks
CREATE TABLE musteri (
id SERIAL PRIMARY KEY,
ad_soyad VARCHAR(120) NOT NULL,
eposta VARCHAR(160) UNIQUE,
kayit_tarih DATETIME YEAR TO SECOND DEFAULT CURRENT YEAR TO SECOND
);
CREATE INDEX ix_musteri_eposta ON musteri (eposta);
-- SPL ile basit bir saklı yordam
CREATE PROCEDURE musteri_say() RETURNING INT;
DEFINE adet INT;
SELECT COUNT(*) INTO adet FROM musteri;
RETURN adet;
END PROCEDURE;Performans, Parçalama ve Paralellik
Informix, büyük tabloları birden çok dbspace'e dağıtan parçalama (fragmentation) mekanizmasıyla hem depolamayı hem de sorgu işlemeyi ölçeklendirir. Bir tablo; ifadeye göre (expression), döngüsel (round-robin), liste veya aralık (interval) stratejileriyle parçalara ayrılabilir. Böylece sorgular yalnızca ilgili parçaları tarayarak (fragment elimination) daha az G/Ç yapar ve büyüyen veri kümesi disklere dengeli yayılır.
Paralel sorgu işleme (PDQ - Parallel Database Query), tarama, birleştirme, sıralama ve toplama gibi işlemleri birden çok iş parçacığına bölerek çok çekirdekli sunucularda toplam süreyi kısaltır. PDQ'nun agresifliği yapılandırmayla ayarlanır; yoğun karma iş yüklerinde OLTP yanıt süresini korumak için dengeli bir seviye seçmek önemlidir.
- Fragment elimination: sorgu yalnızca eşleşen parçalara dokunur
- Round-robin / expression / interval: farklı dağıtım stratejileri
- PDQ: ağır sorguların paralel yürütülmesi
- Bellek havuzları: paylaşımlı bellekte ayarlanabilir tampon ve önbellekler
Yedekleme ve Kurtarma
Informix, tutarlı yedekleme ve zaman noktasına geri dönüş (point-in-time recovery) için iki temel araç sunar. ontape basit, tek makineli senaryolarda doğrudan yedek alır; onbar ise bir depolama yöneticisiyle (storage manager) entegre çalışarak daha büyük ve otomasyonlu ortamları hedefler. Sürekli alınan mantıksal log yedekleri, bir arızadan sonra veritabanını belirli bir ana kadar ileri sararak kurtarmayı mümkün kılar.
İstemci Arayüzleri ve Bağlanabilirlik
Uygulamalar Informix'e çeşitli arayüzlerle bağlanır: JDBC ve ODBC sürücüleri, .NET sağlayıcısı, C için gömülü SQL (ESQL/C) ve Informix Client SDK bunların başında gelir. Bu genişlik, mevcut uygulama yığınlarının Informix'e görece kolay entegre olmasını sağlar.
- JDBC / ODBC: Java ve genel uygulamalar için standart sürücüler
- ESQL/C: C kaynak koduna gömülü SQL
- .NET sağlayıcısı: Windows/.NET uygulamaları için
- Wire listener: MongoDB ve REST istemcileri için doküman erişimi
Sürümler ve Lisanslama
Informix farklı ihtiyaçlara yönelik birden çok sürümle sunulur. Geliştirme ve öğrenme için ücretsiz bir geliştirici sürümü, küçük dağıtımlar için sınırlı kaynak kullanan bir giriş sürümü ve üretim ölçeği için gelişmiş kurumsal sürümler tipik olarak bu ailede yer alır. Ayrıca bulut üzerinde yönetilen seçenekler de bulunabilir.
| Sürüm türü | Tipik kullanım |
|---|---|
| Geliştirici / ücretsiz sürüm | Öğrenme, prototipleme, geliştirme ortamı |
| Giriş / topluluk sürümü | Küçük dağıtımlar (sınırlı çekirdek/bellek) |
| Kurumsal / gelişmiş sürüm | Üretim, HA kümesi, büyük iş yükleri |
| Bulut / yönetilen | İşletim yükünün sağlayıcıya bırakıldığı senaryolar |
Informix Nerede Kullanılır?
Informix, özellikle çok sayıda küçük ve orta ölçekli dağıtımın yönetildiği senaryolarda güçlüdür. Perakende noktası (POS) sistemleri, telekom, üretim ve finans gibi sektörlerde uzun soluklu kurulumları vardır.
- Yönetim personeli sınırlı olan çok sayıda şubeli/mağazalı dağıtımlar
- Gömülü ve uç (edge) uygulamalar; IoT veri toplama
- Zaman serisi yoğun iş yükleri (sensör, sayaç, tik verisi)
- İlişkisel ve belge verisini tek motorda tutmak isteyen ekipler
Avantajlar ve Dikkat Edilecek Noktalar
Her sistemde olduğu gibi Informix de belirli senaryolarda parlar, bazılarında ise ekosistem büyüklüğü sınırlayıcı olabilir. Kararınızı iş yükünüze göre verin.
- Artı: düşük yönetim maliyeti ve kendi kendini yönetme eğilimi
- Artı: küçük ayak izi, gömülü ve uç dağıtımlara uygunluk
- Artı: olgun HA/replikasyon ve zaman serisi yetenekleri
- Dikkat: topluluk ve üçüncü parti araç ekosistemi bazı rakiplerine göre daha dar olabilir
- Dikkat: Informix'e özgü tip ve söz dizimi, taşınabilirliği etkileyebilir
Diğer Veritabanlarıyla Kısa Karşılaştırma
Informix'i değerlendirirken açık kaynak ve diğer kurumsal seçeneklerle yan yana koymak faydalıdır. Karmaşık analitik ve geniş eklenti ekosistemi arıyorsanız PostgreSQL, tam kurumsal IBM yığını içinde kalacaksanız IBM Db2 doğal karşılaştırma noktalarıdır. Gömülü, düşük bakım ve zaman serisi ihtiyaçlarında ise Informix öne çıkabilir.