Firebird, açık kaynaklı ve ilişkisel bir veritabanı yönetim sistemidir (RDBMS). SQL standardının büyük bölümünü destekler, ACID uyumlu işlemler sunar ve Windows, Linux ile macOS üzerinde çalışır. Küçük ayak izi, gömülü olarak kullanılabilmesi ve çok sürümlü eşzamanlılık modeliyle hem masaüstü uygulamalarında hem de sunucu ortamlarında tercih edilir.

Bu yazı, veritabanı türleri rehberimizin bir parçasıdır. Firebird'ün nereden geldiğini, nasıl çalıştığını ve hangi senaryolara uygun olduğunu sade bir dille ele alıyoruz.

Firebird Nedir?

Firebird, verileri satırlar ve sütunlardan oluşan tablolarda saklayan, ilişkileri birincil ve yabancı anahtarlarla kuran klasik bir ilişkisel veritabanıdır. Sunucu-istemci mimarisinde çalışabildiği gibi, tek dosyalık gömülü bir kütüphane olarak da uygulamanın içine yerleştirilebilir. Veriler tipik olarak tek bir veritabanı dosyasında (yaygın uzantısıyla .fdb) tutulur.

Motor C++ ile yazılmıştır ve saklı yordamlar, tetikleyiciler, görünümler, kısıtlar ve işlemler (transaction) gibi kurumsal veritabanlarından beklenen yetenekleri sağlar. Bir defa dağıtıldıktan sonra ayrı bir yönetici gerektirmeden çalışabildiği için, uzun süredir masaüstü ve dikey (sektöre özel) yazılımların içinde gömülü olarak yaygın biçimde kullanılır.

İlişkisel veritabanları dünyasında Firebird, en çok konuşulan motorlar kadar geniş bir ekosisteme sahip olmasa da, sağlamlığı ve öngörülebilir davranışıyla kendine sadık bir kullanıcı kitlesi edinmiştir. Aşağıdaki bölümlerde önce kökenine, ardından mimarisine ve pratikte nasıl kullanıldığına bakacağız.

Kısa Tarihçe: InterBase'den Firebird'e

Firebird'ün kökeni Borland'ın InterBase veritabanına dayanır. Borland, 2000 yılında InterBase 6.0'ın kaynak kodunu açık kaynak olarak yayımladı. Bu koddan yola çıkan gönüllü geliştirici topluluğu, aynı yıl Firebird projesini başlattı. Bu nedenle Firebird ile InterBase, SQL sözdizimi ve dosya biçimi bakımından ortak bir mirası paylaşır.

Firebird zamanla bağımsız bir yol izledi; motor büyük ölçüde yeniden yazıldı ve pek çok yeni özellik eklendi. Proje bugün, kâr amacı gütmeyen Firebird Foundation çatısı altında ve gönüllü katkılarla geliştirilmeye devam ediyor.

Mimari ve Çalışma Modelleri

Firebird, aynı motoru farklı süreç modelleriyle sunar. Bu esneklik, tek kullanıcılı bir masaüstü kurulumundan çok bağlantılı bir sunucuya kadar geniş bir yelpazeye uyum sağlamayı kolaylaştırır.

ModelSüreç yapısıTipik kullanım
ClassicHer bağlantı için ayrı bir sunucu süreciAz sayıda ama yoğun bağlantı; çok çekirdekten yararlanma
SuperServerTek süreç, paylaşımlı önbellek, çok iş parçacığıÇok sayıda bağlantı; paylaşımlı önbellek avantajı
SuperClassicTek süreçte iş parçacığı başına ayrı bağlantıClassic ve SuperServer arasında dengeli bir yaklaşım
EmbeddedAyrı sunucu yok; kütüphane uygulamaya gömülürMasaüstü ve tek kullanıcılı uygulamalar

Çok Sürümlü Eşzamanlılık (MVCC)

Firebird'ün en ayırt edici özelliklerinden biri, InterBase'den miras kalan çok sürümlü mimarisidir (Multi-Generational Architecture, MGA). Bu yaklaşımda bir satır güncellendiğinde eski sürümü hemen silinmez; motor satırın birden çok sürümünü tutar. Böylece okuyan işlemler, yazan işlemleri kilitlemeden tutarlı bir görüntü görür.

  • Okuyucular yazıcıları, yazıcılar da okuyucuları engellemez; bu da okuma ağırlıklı iş yüklerinde bekleşmeyi azaltır.
  • Her işlem, başladığı andaki tutarlı veri görüntüsünü görebilir (snapshot izolasyonu).
  • Eski satır sürümleri zamanla temizlenmelidir; bu bakım işine garbage collection denir.
  • Bu mimari, benzer bir MVCC yaklaşımı kullanan PostgreSQL ile kavramsal olarak akrabadır.

Öne Çıkan Özellikler

  • ACID uyumlu işlemler ve çok düzeyli eşzamanlılık denetimi.
  • Saklı yordamlar, tetikleyiciler ve seçilebilir yordamlar için PSQL adlı yordamsal SQL dili.
  • Görünümler, kısıtlar, birincil/yabancı anahtarlar ve referans bütünlüğü.
  • Otomatik artan değerler için üreteçler (generator) / diziler (sequence); yeni sürümlerde IDENTITY sütunları.
  • Veritabanı olayları (events): sunucunun istemcilere bildirim göndermesini sağlar.
  • Ortak tablo ifadeleri (CTE), türetilmiş tablolar ve pencere fonksiyonları (sürüme bağlı).
  • Tek dosyalık veritabanı ve kolay taşınabilirlik.
  • Küçük kurulum boyutu ve düşük kaynak tüketimi.

SQL Desteği ve Dialektler

Firebird, ANSI SQL'in geniş bir alt kümesini destekler. InterBase mirası nedeniyle iki farklı SQL dialekt kavramı vardır: Dialect 1 eski uygulamalarla geriye dönük uyumluluk için, Dialect 3 ise modern ve önerilen kip olarak kullanılır. Yeni projelerde genellikle Dialect 3 tercih edilir; çünkü tam tarih/saat tipleri, büyük tam sayılar ve çift tırnaklı büyük/küçük harf duyarlı tanımlayıcılar gibi daha katı ve standart davranışlar sunar.

sql
-- Dialect 3 ile örnek bir tablo ve otomatik kimlik sütunu
CREATE TABLE musteri (
  id           INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  ad_soyad     VARCHAR(120) NOT NULL,
  eposta       VARCHAR(160),
  aktif        BOOLEAN DEFAULT TRUE NOT NULL,
  kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);

CREATE INDEX idx_musteri_eposta ON musteri (eposta);

PSQL: Saklı Yordamlar ve Tetikleyiciler

Firebird, sunucu tarafı mantığı için PSQL (Procedural SQL) dilini kullanır. Saklı yordamlar tek bir sonuç döndürebildiği gibi, SUSPEND komutuyla satır satır bir sonuç kümesi de üretebilir (seçilebilir yordamlar). Aşağıdaki örnek, aktif müşterileri satır satır döndüren bir yordamı gösterir.

sql
SET TERM ^ ;

CREATE PROCEDURE aktif_musteriler
RETURNS (id INTEGER, ad_soyad VARCHAR(120))
AS
BEGIN
  FOR SELECT id, ad_soyad
      FROM musteri
      WHERE aktif = TRUE
      INTO :id, :ad_soyad
  DO
    SUSPEND;
END^

SET TERM ; ^

-- Kullanımı normal bir tablo gibidir:
SELECT * FROM aktif_musteriler;

Veri Tipleri

Firebird, ilişkisel uygulamalarda ihtiyaç duyulan yaygın veri tiplerini kapsar. Tam sayılar, kayan noktalı ve sabit ondalıklı sayılar, tarih/saat tipleri, değişken ve sabit uzunlukta karakter dizileri ile büyük nesneler (BLOB) desteklenir. BLOB tipi, metin veya ikili büyük verileri (belge, görsel vb.) saklamak için kullanılır.

  • Sayısal: SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL, FLOAT, DOUBLE PRECISION.
  • Karakter: CHAR, VARCHAR; karakter kümeleri ve harmanlama (collation) desteğiyle.
  • Tarih/saat: DATE, TIME, TIMESTAMP.
  • Büyük nesneler: metin veya ikili veriler için BLOB.
  • Mantıksal: BOOLEAN (yeni sürümlerde).

Bağlantı ve İstemci Erişimi

İstemciler, Firebird sunucusuna kendi ağ protokolü üzerinden bağlanır; sunucu için tarihsel olarak bilinen varsayılan TCP portu 3050'dir. Uygulamalar veritabanına çeşitli sürücüler aracılığıyla erişebilir: yerel istemci kütüphanesi (fbclient), Java için Jaybird (JDBC), .NET sağlayıcısı ve ODBC sürücüsü yaygın seçeneklerdir. Bu, Firebird'ü farklı programlama dilleri ve platformlarından kullanılabilir kılar.

Bir veritabanına bağlanırken sunucu adresi, port ve veritabanı dosyasının yolu (ya da takma adı) belirtilir. Üretim ortamlarında, dosya yolunu doğrudan açığa çıkarmak yerine sunucu tarafında tanımlı veritabanı takma adları kullanmak yönetimi kolaylaştırır.

Sürümler ve Gelişim

Firebird, ilk kararlı sürümünden bu yana çok sayıda ana sürüm serisi yayımladı (2.x, 3.0, 4.0 ve sonrası). Yeni sürümler; birleşik sunucu mimarisi iyileştirmeleri, daha güçlü SQL desteği (pencere fonksiyonları gibi) ve performans geliştirmeleri getirdi. Belirli bir özelliğin hangi sürümde bulunduğunu doğrulamak için projenin resmi sürüm notlarına bakmak en güvenli yaklaşımdır.

Gömülü (Embedded) Firebird

Firebird'ün gömülü kipi, ayrı bir sunucu süreci ve kurulum gerektirmeden veritabanı motorunu doğrudan uygulamanın içine yerleştirmeyi sağlar. Bu, uygulamanın veritabanı dosyasına yerel olarak eriştiği tek kullanıcılı senaryolarda pratiktir. Aynı veritabanı dosyası, ihtiyaç büyüdüğünde tam sunucu kurulumuna taşınabilir.

Gömülü yaklaşımı, sunucusuz ve dosya tabanlı çalışan SQLite ile karşılaştırmak faydalıdır: SQLite son derece hafif ve her yerde bulunurken, Firebird gömülü kipte bile saklı yordam, tetikleyici ve zengin PSQL desteği gibi tam sunucu yeteneklerini korur.

Yönetim Araçları

Firebird, komut satırından yönetim için bir dizi araçla birlikte gelir. Bunlar kurulumun temel parçasıdır ve betiklerle otomasyona uygundur.

Araçİşlevi
isqlEtkileşimli SQL kabuğu; sorgu çalıştırma ve betik yürütme
gbakYedek alma ve geri yükleme (backup/restore)
gfixVeritabanı bakımı, onarım ve kapatma işlemleri
gsec / SEC$Kullanıcı ve güvenlik yönetimi (sürüme göre değişir)
nbackupArtımlı (incremental) yedekleme

Lisans ve Topluluk

Firebird açık kaynaklı ve ücretsizdir. Kaynak kodu, Mozilla Public License temelli lisanslar altında (InterBase Public License ve Initial Developer's Public License) dağıtılır. Bu, hem ticari hem ticari olmayan projelerde kullanımına olanak tanır. Proje, Firebird Foundation ve gönüllü topluluk tarafından sürdürülür.

Yaygın Kullanım Senaryoları

Firebird, düşük yönetim gereksinimi ve gömülebilirliği sayesinde belirli alanlarda uzun yıllardır yerleşmiştir. Özellikle bir uygulamanın yanına gelen, son kullanıcının varlığından bile haberdar olmadığı bir veri katmanı olarak sıklıkla karşımıza çıkar.

  • Masaüstü ve dikey (sektöre özel) uygulamaların içine gömülü veri katmanı olarak.
  • Küçük ve orta ölçekli sunucu uygulamaları için bağımsız veritabanı olarak.
  • Sınırlı kaynaklı ortamlarda, düşük bellek ve disk kullanımının önemli olduğu kurulumlarda.
  • Kurulum sonrası ayrı bir veritabanı yöneticisi ayırmanın zor olduğu ürünlerde.

Bu güçlü yönler, Firebird'ü "kur ve unut" yaklaşımına uygun kılar; ancak her proje farklıdır. Örneğin çok büyük ölçekli, yönetilen bulut hizmeti gerektiren senaryolarda başka motorlar daha iyi oturabilir. Bu nedenle seçim, teknik gereksinimlerinizle birlikte değerlendirilmelidir.

Firebird'i Ne Zaman Tercih Etmeli?

Firebird, düşük bakım maliyeti ve gömülebilirliğiyle özellikle belirli senaryolarda güçlüdür. Aşağıdaki tablo, tipik güçlü yönleri ve dikkat edilmesi gereken noktaları özetler.

Güçlü yönlerDikkat edilecek noktalar
Küçük ayak izi ve kolay dağıtımEkosistem, en yaygın motorlara göre daha küçüktür
Gömülü ve sunucu kipini aynı dosyayla desteklemesiHazır bulut yönetilen servis seçenekleri sınırlıdır
Olgun MVCC ve güçlü işlem desteğiBazı ileri özellikler sürüme göre değişir; belgeleri kontrol edin
Ücretsiz ve açık kaynak lisansÜçüncü taraf araç yelpazesi daha dardır

Kurumsal ölçekte daha geniş bir ekosistem veya yönetilen bulut seçenekleri arıyorsanız PostgreSQL gibi alternatifleri de değerlendirmek isteyebilirsiniz. Seçim, iş yükünüze, ekibinizin deneyimine ve dağıtım modelinize bağlıdır.