4.12 MASTER — ajanın kendi veritabanı sunucusu

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > Netsim System Agent Kurulum ve Yönetim Kılavuzu > 4. Yapılandırma >

4.12 MASTER — ajanın kendi veritabanı sunucusu

Ajanın içindeki MQL motorunun MASTER veritabanıdır; LSP ve MQL çalıştırma yolları bunu kullanır. Conf dosyasında bu sunucuya ait bir blok yoktur.

MASTER conf'tan seçilmez. Her zaman çalıştırılabilir dosyanın dizinindeki sabit bir sqlite dosyasıdır: ${APPDIR}/ivd$master.sqlite (WAL günlüğü; yanında çalışma sırasında -wal / -shm dosyaları durur). İlk açılışta yaratılır, sonraki açılışlarda açılır; motorunu ya da parametrelerini seçen bir conf anahtarı yoktur. -MCP de bu dosyayı kullanır; -DEVTEST her çalışmada taze bir bellek MASTER'ı kurar. Betikler bu MASTER'a çalışan hizmet üzerinden, msql ile ulaşır (bkz. 3.6). Aynı dizinden çalışan iki ajan örneği aynı MASTER dosyasını görür; her örneği kendi dizininden çalıştırın.

MASTER'ın yönetici login'i SYSDBA'dır; ilk parolası masterkey'dir. MASTER ilk kez kurulurken bu parola atanır ve günlüğe öndeğer parolanın kullanıldığını söyleyen bir uyarı yazılır. Dağıtımda değiştirin: ALTER USER SYSDBA IDENTIFIED BY '<yeni parola>' (kalıcı MASTER'da bir kez; sonraki açılışlarda parola korunur). msql öndeğerde SYSDBA ile girer ve parolayı sorar; login -U anahtarıyla ya da IVD_USER ortam değişkeniyle, parola -W anahtarıyla ya da IVD_PASSWORD ortam değişkeniyle verilir.

Her veritabanı kendi kataloğunu taşır. Bir veritabanı hizmete bir kez kaydedilir: CREATE DATABASE ya da OPEN DATABASE … STORAGE ENGINE … PARAMETERS …, çalışan hizmete msql ile verilerek ya da MASTER'ın başlangıç betiği içinde (her açılışta koşan OPEN DATABASE kaydı devralır, satır çoğalmaz).

Başlangıç betikleri veritabanının kendi kartındadır. Her veritabanı bir MQL betiği taşıyabilir (ivd$database.ivd$startup_script); betik, veritabanı hizmete her bağlandığında (açılışta ya da kayıtlı veritabanının ilk kullanımında) o veritabanında koşar. MASTER'ın betiği hizmet açılışında koşar; LSP'nin MASTER'da çevirdiği nesneler buradan derlenir. Betik çalışan hizmete msql ile verilir:

-- lsp_master.sql
ALTER DATABASE MASTER SET STARTUP SCRIPT FROM FILE 'server:${APPDIR}/lsp_startup.sql';
COMMIT;

msql -U SYSDBA -W <parola> -f lsp_master.sql

FROM FILE dosyanın metnini komut çalıştığı anda karta yazar; dosya değiştiğinde komut yeniden çalıştırılır. Göreli yol komutu içeren betik dosyasının dizinine göredir; msql ile verilen bir betikte öneksiz yol istemcinin dosya sisteminden okunur, sunucudaki bir dosya server: önekiyle seçilir (bkz. 3.6). Betik her bağlanışta koştuğu için idempotent yazılmalıdır. ALTER DATABASE MASTER DROP STARTUP SCRIPT betiği kaldırır. Söz dizimi SQL kılavuzunda (“Veritabanı kimlik kartı”) anlatılır.

Kayıtlı veritabanları tembel bağlanır. MASTER, açılan her veritabanını motor adı ve bağlantı parametreleriyle kaydeder. Yeniden açılışta bu kayıtlar hemen açılmaz: veritabanının adı ilk kullanıldığında (SET CATALOG, nitelikli ad, DROP / CLOSE DATABASE, bir işleyicinin database ayarı) kayıtlı motor ve parametrelerle açılır; bu bir işçi süreçte de olabilir. Nesneleri de ilk kullanımda yüklenir. Aynı adla OPEN DATABASE kaydı devralır; parametreler değiştiyse kayıt yenilenir. Açılamayan kayıt günlüğe uyarı yazar ve bekler. Kayıt, DROP ya da CLOSE DATABASE ile silinir. Bağlantı parametreleri (Firebird/PostgreSQL parolası dâhil) MASTER dosyasında açık metin durur.

Dikkat

BLACKHOLE MASTER motoru olarak kullanılamaz ve açıkça reddedilir. Sebebi: MASTER bir katalogtur (ivd$objects, ivd$object_columns, …) ve açılış betikleri yazdıkları satırları hemen geri okur; bu motor ise yazılanı yutup hiçbir şey döndürmez, dolayısıyla katalog daha ilk okumada boş görünür. MASTER motoru sabit (sqlite) olduğundan bu yalnızca kodda motor değiştirilirse görülür:

INVALID_CONFIGURATION: "BLACKHOLE" depolama motoru MASTER veritabanini
  tasiyamaz: yazilan katalog satirlari geri okunamiyor. Kullanici veritabani olarak
  kullanilabilir; MASTER icin baska bir motor secilmeli (IVDServer::MASTER_STORAGE_ENGINE).

Yasak yalnızca MASTER içindir: BLACKHOLE bir kullanıcı veritabanının motoru olarak kullanılabilir (CREATE DATABASE … STORAGE ENGINE BLACKHOLE) — zaten var olma sebebi depolama maliyeti olmadan derleyici/koşucu yolunu ölçmektir. Denetim motorun kendi cevabı üzerinden yapılır (StorageEngine::canHostCatalog), ada göre değil; böylece yazmayan yeni bir motor eklenirse o da MASTER olarak reddedilir.