|
<< İç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.sqlFROM 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.
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.