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.

TerimAçıklama
Instance (server)Tek bir Informix veritabanı sunucusu süreci; oninit ile başlatılır
dbspaceBir veya daha fazla chunk'tan oluşan mantıksal depolama birimi
chunkDisk üzerinde ayrılmış fiziksel alan (dosya veya ham aygıt)
pageTemel G/Ç birimi; disk okuma/yazma bu birimlerle yapılır
logical logİşlem (transaction) kayıtlarını tutan mantıksal günlük
physical logKurtarma 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şenRolü
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.

sql
-- 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.