Oracle TimesTen, verinin tamamını kalıcı olarak ana bellekte (RAM) tutan, ilişkisel bir bellek içi (in-memory) veritabanı yönetim sistemidir. Diski birincil veri deposu olarak kullanan klasik veritabanlarının aksine, TimesTen sorguları doğrudan bellek üzerinde çalıştırarak çok düşük gecikme (latency) ve yüksek işlem hacmi hedefler. Bu rehberde TimesTen'in ne olduğunu, mimarisinin nasıl işlediğini, güçlü ve zayıf yönlerini ve hangi senaryolarda doğru seçim olduğunu ayrıntılı olarak ele alıyoruz.
Oracle TimesTen Nedir?
Oracle TimesTen, ACID işlem garantileri sunan, standart SQL destekleyen ve verisini öncelikli olarak RAM'de saklayan bir ilişkisel veritabanıdır. Amacı, milisaniyenin altında yanıt süreleri gerektiren uygulamalara okuma ve yazma performansı sağlamaktır. Verinin bellekte olması, disk giriş/çıkışının (I/O) sorgu yolundan büyük ölçüde çıkarılması anlamına gelir; bu da tutarlı ve öngörülebilir gecikme sağlamaya yardımcı olur.
Teknolojinin kökleri, ticari bir ürüne dönüşmeden önce bir araştırma projesine dayanır. TimesTen daha sonra bağımsız bir şirket tarafından geliştirildi ve 2005 yılında Oracle tarafından satın alındı. O günden bu yana ürün, Oracle'ın ürün ailesinin bir parçası olarak, özellikle Oracle Database ile birlikte çalışacak bir hızlandırma ve önbellek katmanı olarak konumlandırıldı.
TimesTen'i geniş veritabanı ailesi içinde nereye koyacağınızı görmek için veritabanı türleri rehberimize göz atabilir, aynı üreticinin disk tabanlı amiral gemisi için Oracle Database nedir yazımızı inceleyebilirsiniz.
Bellek İçi Mimari Nasıl Çalışır?
Çoğu disk tabanlı veritabanı, veriyi disk sayfalarında saklar ve sık erişilen sayfaları hızlandırmak için bir tampon önbellek (buffer cache) kullanır. Bu tasarımda sorgu işleyicisi, verinin diskte mi yoksa bellekte mi olduğunu düşünerek çalışır. TimesTen bu modeli tersine çevirir: veri yapıları, indeksler ve algoritmalar en baştan bellekte durmaya göre tasarlanmıştır.
Bunun sonucunda TimesTen'in sorgu optimizasyonu, tampon önbellek isabet oranlarını değil, bellek içindeki erişim maliyetlerini temel alır. Veriye ulaşmak için bir sayfayı diskten getirme adımı olmadığından, işlem yolları kısalır. Bu yaklaşım, veri kümesi belleğe sığdığı sürece çok hızlı ve kararlı yanıt süreleri sağlar.
Kalıcılık ve Dayanıklılık: Checkpoint ve İşlem Günlükleri
Verinin bellekte olması, kaybolabileceği anlamına gelmez. TimesTen, dayanıklılığı (durability) sağlamak için veriyi periyodik olarak diske yazan checkpoint dosyaları ile yapılan değişiklikleri kaydeden işlem günlükleri (transaction log) kullanır. Bir hata ya da yeniden başlatma durumunda veritabanı, en son checkpoint'ten başlayıp günlükteki kayıtlı işlemleri tekrar uygulayarak bellekteki durumu yeniden oluşturur.
Bu yapı, klasik veritabanlarındaki WAL (write-ahead logging) ve checkpoint mantığına benzer bir mantıkla çalışır: kalıcı depolamaya yazma, bellek içi hızdan ödün vermeden dayanıklılığı korumaya çalışır. Uygulama gereksinimlerine göre, işlem günlüğünün diske yazılma davranışı ayarlanabilir; bu da dayanıklılık ile performans arasındaki dengeyi yönetmeye olanak tanır.
Bağlantı Modları: Direct-Linked ve İstemci/Sunucu
TimesTen'in performans avantajının önemli bir parçası, uygulamanın veritabanına nasıl bağlandığıdır. İki temel mod vardır:
- Direct-linked (doğrudan bağlı) mod: Uygulama, TimesTen kütüphanesiyle aynı süreç (process) içinde çalışır. Sorgular bir ağ bağlantısı üzerinden değil, doğrudan fonksiyon çağrılarıyla işlenir. Bu, ağ ve süreçler arası iletişim yükünü ortadan kaldırarak en düşük gecikmeyi hedefler.
- İstemci/sunucu (client/server) mod: Uygulama, ayrı bir süreçte veya makinede çalışan TimesTen örneğine bir ağ protokolü üzerinden bağlanır. Bu mod daha esnek dağıtım ve uzaktan erişim sağlar; karşılığında ağ gecikmesi devreye girer.
Çoğu düşük gecikmeli senaryoda uygulama sunucusu ile veritabanı aynı makinede konumlandırılır ve direct-linked mod tercih edilir. Uzaktan erişim ya da daha geniş bir dağıtım gerektiğinde istemci/sunucu modu kullanılır. İki mod aynı veritabanı örneği için birlikte de yapılandırılabilir.
TimesTen Classic ve TimesTen Scaleout
TimesTen iki temel dağıtım modeliyle değerlendirilir. TimesTen Classic, tek düğüm üzerinde çalışan, gömülü ya da uygulama katmanında konumlanan klasik modeldir; replikasyonla yüksek erişilebilirlik sağlanabilir. TimesTen Scaleout ise veriyi birden fazla düğüme dağıtan, paylaşımsız (shared-nothing) bir ölçeklenme mimarisi sunar; böylece hem kapasite hem de işlem hacmi düğüm eklenerek yatayda büyütülebilir.
Scaleout modelinde veri, düğümler arasında bölümlenir (partition) ve uygulama tek bir mantıksal veritabanıyla konuşur gibi çalışır. Bu yaklaşım, tek bir sunucunun bellek ve işlemci sınırlarını aşan iş yükleri için tasarlanmıştır. İki model de aynı SQL ve işlem semantiğini paylaşır; seçim, ölçek ve erişilebilirlik gereksinimlerine göre yapılır.
| Özellik | TimesTen Classic | TimesTen Scaleout |
|---|---|---|
| Topoloji | Tek düğüm (replikasyonla HA) | Çok düğümlü, paylaşımsız küme |
| Ölçekleme | Dikey (sunucu büyütme) | Yatay (düğüm ekleme) |
| Veri dağıtımı | Tek örnekte | Düğümlere bölümlenmiş |
| Tipik hedef | Düşük gecikme, gömülü/önbellek | Büyük ölçekli, elastik iş yükleri |
Application-Tier Database Cache: Oracle Database Önbelleği
TimesTen'in en çok bilinen kullanım biçimlerinden biri, bir disk tabanlı Oracle Database önünde uygulama katmanı önbelleği olarak çalışmasıdır. Bu senaryoda, arka plandaki Oracle Database'de bulunan tabloların sık erişilen bir alt kümesi TimesTen'e yüklenir ve uygulama, düşük gecikmeli okuma/yazma işlemlerini bellek içi katman üzerinden yapar.
Önbellek grubu (cache group) adı verilen yapılarla, hangi tabloların ve satırların önbellekleneceği tanımlanır. TimesTen ile arka plandaki Oracle Database arasındaki veri eşitleme (senkronizasyon) yönü ve zamanlaması yapılandırılabilir; okuma ağırlıklı önbellek ile yazmaların da geri yazılabildiği modeller arasında seçim yapılabilir. Bu, mevcut bir Oracle Database'i değiştirmeden önüne hızlandırma katmanı eklemenin pratik bir yoludur.
Yüksek Erişilebilirlik ve Replikasyon
Bellek içi bir veritabanında tek düğüme bağımlı kalmak risklidir; bu nedenle TimesTen replikasyon özellikleri sunar. Yaygın desenlerden biri aktif-yedek (active-standby) çift yapısıdır: bir düğüm aktif olarak yazmaları alırken, ikinci düğüm değişiklikleri alarak güncel bir kopya tutar ve aktif düğüm devre dışı kaldığında devralabilir.
Replikasyon, hem planlı bakım hem de beklenmedik arızalar sırasında hizmet sürekliliğini korumaya yardımcı olur. Ayrıca, uygun yapılandırmalarla okuma iş yüklerinin bir kısmı yedek düğüme dağıtılarak aktif düğümün yükü hafifletilebilir. Erişilebilirlik hedefleriniz (RPO/RTO) replikasyon modunun ve dayanıklılık ayarlarının seçimini doğrudan etkiler.
SQL, Uyumluluk ve Programlama Arayüzleri
TimesTen standart SQL'i destekler ve ilişkisel model üzerine kuruludur; tablolar, indeksler, birleşimler (join), işlemler ve saklanan yordamlar gibi tanıdık kavramlar geçerlidir. Uygulama geliştiriciler için geniş bir arayüz yelpazesi sunar: ODBC, JDBC, Oracle Call Interface (OCI), Pro*C ve .NET sağlayıcıları yaygın seçenekler arasındadır. Ayrıca ttIsql gibi komut satırı araçlarıyla etkileşimli yönetim ve sorgulama yapılabilir.
Oracle ekosistemiyle uyumu, özellikle PL/SQL ve Oracle veri tipleri gibi tanıdık yapıların desteklenmesiyle güçlendirilmiştir. Bu, mevcut bir Oracle uygulamasını bellek içi bir katmana taşıma ya da hızlandırma çabalarını kolaylaştırmayı hedefler. Aşağıdaki örnek, basit bir tablo oluşturup sorgulamayı gösterir:
-- Bellek ici bir tablo olusturma
CREATE TABLE oturumlar (
oturum_id NUMBER(12) NOT NULL PRIMARY KEY,
kullanici_id NUMBER(12) NOT NULL,
baslangic TIMESTAMP NOT NULL,
durum VARCHAR2(16) NOT NULL
);
-- Sik sorgulanan sutun icin indeks
CREATE INDEX ix_oturum_kullanici ON oturumlar (kullanici_id);
-- Ornek sorgu
SELECT oturum_id, durum
FROM oturumlar
WHERE kullanici_id = 4210
AND durum = 'AKTIF';Önbellek senaryosunda ise, arka plandaki Oracle Database tablosunu TimesTen'de önbelleklemek için bir önbellek grubu tanımlanır. Aşağıdaki kavramsal örnek, okuma ağırlıklı bir önbellek grubunun temel fikrini gösterir:
-- Kavramsal ornek: bir Oracle tablosunu onbellekleyen grup
CREATE READONLY CACHE GROUP musteri_ob
AUTOREFRESH INTERVAL 5 SECONDS
FROM
musteriler (
musteri_id NUMBER(12) NOT NULL PRIMARY KEY,
ad VARCHAR2(64) NOT NULL,
segment VARCHAR2(16)
);Tipik Kullanım Alanları
TimesTen, düşük gecikmenin iş değeri taşıdığı alanlarda öne çıkar. Yaygın kullanım senaryoları şunlardır:
- Telekomünikasyon: gerçek zamanlı ücretlendirme (charging), abone verisi ve oturum yönetimi gibi yüksek hacimli, düşük gecikmeli iş yükleri.
- Finans: düşük gecikme gerektiren işlem, fiyatlandırma ve risk hesaplamaları.
- Gerçek zamanlı dolandırıcılık ve karar sistemleri: her istek için milisaniye altında yanıt gereken denetimler.
- Oturum ve durum yönetimi: web ve uygulama katmanında hızlı erişilen geçici olmayan durum verileri.
- Oracle Database önünde hızlandırma katmanı: sıcak verinin önbelleklenerek okuma/yazma gecikmesinin düşürülmesi.
Avantajlar ve Sınırlamalar
Her veritabanı gibi TimesTen de belirli ödünleşmeler (trade-off) üzerine kuruludur. Aşağıdaki tablo, güçlü yönlerini ve dikkat edilmesi gereken sınırlarını özetler:
| Boyut | Güçlü yön | Dikkat edilmesi gereken |
|---|---|---|
| Gecikme | Bellek içi erişimle çok düşük ve kararlı | Veri kümesi belleğe sığmalı |
| Uyumluluk | Standart SQL ve Oracle ekosistemiyle uyum | Oracle odaklı; genel amaçlı bir araç değil |
| Dayanıklılık | Checkpoint ve günlükle kalıcılık | Ayarlar performans/dayanıklılık dengesi ister |
| Ölçekleme | Scaleout ile yatay büyüme | Küme yönetimi ek operasyonel karmaşıklık getirir |
| Maliyet | Yüksek performans | RAM kapasitesi disk depolamaya göre pahalıdır |
TimesTen Ne Zaman Doğru Seçimdir?
TimesTen; sabit düşük gecikme, yüksek işlem hacmi ve öngörülebilir yanıt süreleri kritik olduğunda güçlü bir adaydır. Özellikle mevcut bir Oracle Database yatırımını hızlandırmak isteyen ekipler için, uyumlu bir bellek içi önbellek katmanı olarak doğal bir seçenek oluşturur.
Buna karşılık, veri kümesi ekonomik olarak belleğe sığmayacak kadar büyükse, iş yükü ağırlıklı olarak büyük ölçekli analitik tarama gerektiriyorsa ya da genel amaçlı ve düşük maliyetli bir depolama aranıyorsa başka seçenekler daha uygun olabilir. Analitik odaklı veya farklı ölçekleme modelleri sunan bellek içi sistemleri değerlendirmek için karşılaştırma yapmakta fayda vardır.
Özet
Oracle TimesTen, verisini kalıcı olarak bellekte tutan, ACID uyumlu ve standart SQL destekleyen bir bellek içi ilişkisel veritabanıdır. Direct-linked ve istemci/sunucu bağlantı modları, checkpoint ve işlem günlükleriyle dayanıklılık, Classic ve Scaleout dağıtım modelleri ve Oracle Database için önbellek yetenekleri onu belirgin bir niş içinde güçlü kılar. Düşük ve kararlı gecikmenin iş değeri taşıdığı, verinin belleğe sığdığı senaryolarda TimesTen değerlendirilmesi gereken olgun bir seçenektir.