|
<< İç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.4 Yönetilen veritabanları |
Ajanın bağlandığı veritabanları conf dosyasında değil, ajanın kalıcı MASTER'ında
(${APPDIR}/ivd$master.sqlite) kayıtlıdır. Bir veritabanı, çalışan hizmete msql ile
verilen CREATE DATABASE ya da OPEN DATABASE deyimiyle kaydedilir; CRUD,
WhatsAppWebhook uygulamalarının database anahtarı, rapor uçları,
MCP kipi ve ZMGOREV zamanlayıcı bu kayıt adına başvurur. Değişiklik hizmet yeniden başlatıldığında
etkinleşir.
open database NETSIM storage engine firebird
parameters 'Database Name=devdata.fdb; charSet=UTF8; User Name=SYSDBA; Password=masterkey';
comment on database NETSIM is 'Netsim Veritabanı';
alter database NETSIM set task scheduler on;
commit;msql -U SYSDBA -W <parola> -f kayit.sql| Kayıt bilgisi | Açıklama |
|---|---|
| Ad | Veritabanının MASTER'daki adı. Uygulamalar ve -DATABASE bu adla seçer; eşleme büyük/küçük harf duyarsızdır. Uygulama adı vermezse kimlik sırasına göre istemci bağlantısı kurulabilen ilk kayıt kullanılır. |
| Depolama motoru | İstemci bağlantısı FIREBIRD, POSTGRESQL ve SQLITE motorlu kayıtlara kurulur (sağlayıcı sırasıyla firebird, postgresql, sqlite). Başka motorlu bir kayıt (MEMORY, ODBC, …) motorun kendi veritabanıdır; ona istemci yolu açılmaz ve istek “istemci bağlantısı kurulamayan bir motorda” hatası alır. |
| Parametreler | PARAMETERS değeri istemci bağlantı dizesidir. Database Name göreli verilirse ikilinin dizinine göre çözülür; Linux dağıtımında veritabanı geleneksel olarak /var/lib/… altındadır. Parola yerine işletim sistemi oturumunun kimliği kullanılabilir — aşağıya bakın. |
| Açıklama | COMMENT ON DATABASE; yönetim arayüzünde ve ZMGOREV bildirimlerinde görünür. |
| Görev zamanlayıcı | ALTER DATABASE <ad> SET TASK SCHEDULER ON | OFF. Açık olan veritabanları için ZMGOREV zamanlayıcı çalışır: aynı anda en çok 20 görev, bir görev süreci 100 görev için yeniden kullanılır, çökmeden yarım kalan görevler toparlanır. Öndeğer kapalıdır. |
| Bağlantı havuzu | Süreç başına veritabanı ve kimlik başına 4 boş bağlantı bekletilir, boş bağlantı 300 saniye sonra kapatılır, toplam bağlantı sınırı yoktur (bkz. “Bağlantı havuzu” aşağıda). |
Kayıtlar MASTER'dan sorgulanır; görev zamanlayıcı bayrağı kayıt satırının TASK SCHEDULER
niteliğidir, veritabanının kendi kartında (sys.ivd$database.ivd$task_scheduler) da durur:
select o.ivd$object_name, o.ivd$description, a.ivd$attribute_name, a.ivd$value
from master.sys.ivd$objects o
left join master.sys.ivd$object_attributes a on a.ivd$object_id = o.ivd$object_id
where o.ivd$type = 'DATABASE' and o.ivd$object_id > 0
order by o.ivd$object_id, a.ivd$order;Nitelik adları STORAGE ENGINE, ENGINE PARAMETERS ve TASK SCHEDULER'dır.
Yönetim arayüzü aynı listeyi GET /AdminREST/MANAGEDDATABASES ile okur (parola maskelenir).
Yeni kurulmuş bir PostgreSQL ya da Firebird sunucusuna ürün veritabanı, dağıtım setindeki hazır veritabanından
kurulur. Yönetim arayüzünün Veritabanı → Veritabanı kurulumu sayfası (arkasında
AdminREST EXECCOMMAND DBSETUP) adımları ajanın kendisinde yapar. Denetle hiçbir şey
yazmaz, her adımı YAPILACAK ya da hata olarak listeler; Kur adımları uygular ve
işaretliyse veritabanını OPEN DATABASE ile bu ajana kaydeder (deyim onaydan önce, parola maskeli
gösterilir). Kaynak dosya ve kütüphane dosyası sunucudan seçilir ya da istemciden yüklenir.
| Depo | Ne yapılır |
|---|---|
| PostgreSQL | Kaynak netsim_n4-<sürüm>.backup (pg_dump -Fc). Sırasıyla:
pg_restore bulunur (backupTools/pgBinDir, libpq dizini, kayıt defteri, PATH);
yedek okunur; sunucuya süper kullanıcıyla (postgres) bağlanılır; yeni veritabanı adı yoksa devam edilir
(küçük harf, rakam, alt çizgi); LOAD 'pgNSDBUtils5_1_1' denenir — kütüphane yoksa ve sunucu ajanla
aynı makinedeyse verilen dosya (pgNSDBUtils5_1_1.dll.zip / .so.zip ya da açılmış hâli)
sunucunun kütüphane dizinine (pg_config PKGLIBDIR) kurulur, başka makinedeyse
elle kopyalanması söylenir; dblink uzantısı gerekir, sunucuda bulunmayan geliştirme uzantıları
(pldbgapi, plpgsql_check) geri yüklemeden çıkarılır; yedeğin sahip rolleri yoksa
oluşturulur (sysdba LOGIN SUPERUSER sayfada verilen parolayla, ötekiler
NOLOGIN); veritabanı yedeğin kendi tanımıyla, yedekte yoksa ürünün tanımıyla açılır
(TEMPLATE template0, UTF8, ICU tr-TR, sahip sysdba,
search_path netsim, eklenti, public, TimeZone +03; işletim
sisteminde Türkçe yerel ayar yoksa LC_COLLATE/LC_CTYPE template0'dan
alınır ve uyarı verilir — Linux'ta locale-gen tr_TR.UTF-8); pg_restore koşar
(parola ortam değişkeniyle gider); düşerse yarım veritabanı silinir. Son adım kimlik kartını ve olay
tetikleyicilerinin durumunu gösterir. Kayıt Catalog Schema=netsim ile yapılır. |
| Firebird | Kaynak netsim.fdb.zip / netsim.sec.fdb.zip ya da bir
.fdb. Ajan Firebird sunucusuyla aynı makinede olmalıdır: dosya hedef yola
(sunucunun tam .fdb yolu, henüz yok) açılır, Linux'ta sahibi firebird yapılır. Sonra
yeni veritabanına bağlanılır; ServerMode Classic değilse uyarı verilir; ürünün UDF modülü
(NSDBUtils5_1_1) Firebird'ün UDF dizininde (sunucu sürecinin dizini + UdfAccess'in
Restrict dizini) yoksa verilen kütüphane dosyası (NSDBUtils5_1_1.dll.zip /
libNSDBUtils5_1_1.so.zip) oraya kurulur; UdfAccess = None ise kurulum durur. Bağlanma
düşerse kopyalanan dosya silinir. Son adım bağlantı tetikleyicilerini ve kimlik kartını gösterir. |
Kütüphane kurulumu ve .fdb dosyasının yazılması ajanın hizmet hesabının o dizinlere yazma hakkı
olmasını ister; hak yoksa adım bunu söyler ve dosya elle kopyalanır. İstek bitene kadar sürer (1532 paketinde
PostgreSQL geri yüklemesi yaklaşık 20 saniye).
ivd$master.key)ENGINE PARAMETERS'ın Password= değeri MASTER'da düz metin durmaz:
kayda yazılırken AES-256-GCM ile mühürlenir ve satırda Password=enc:<hex> görünür — yukarıdaki
sorguyu çalıştıran SYSDBA bile parolayı okuyamaz. Ajan parolayı yalnız depoya bağlanırken çözer.
Anahtar, ivd$master.sqlite'ın yanındaki ivd$master.key dosyasıdır (32 bayt;
ilk açılışta üretilir, Linux'ta 0600). Daha önce düz metin yazılmış kayıtlar ajanın ilk açılışında
kendiliğinden mühürlenir (günlükte carried a plain-text storage password; sealed). Servis kullanıcısıyla
kayıtlı satırlarda parola satırda hiç durmaz; depo sunucusunun credential'ındadır (aşağıda).
ivd$master.key MASTER dosyasının parçasıdır: yedeğe ve taşımaya birlikte alın.
Anahtarsız (ya da başka bir sunucunun anahtarıyla) açılan MASTER'da kayıtlı parolalar boş
kalır, günlüğe veritabanı adıyla bir uyarı düşer ve depo kendi kimlik hatasını verir; her kaydın parolası
ALTER DATABASE … SET PARAMETERS (ya da Veritabanları sayfasında Parametreleri düzenle) ile
yeniden girilir. Anahtar dosyasının ve MASTER dosyasının okuma izinlerini kısın (Windows'ta yalnızca hizmet hesabı ve
yöneticiler; Linux'ta hizmet kullanıcısına ait, 0600 / 0640): dosyaları okuyabilen
parolayı da çözebilir. Parolayı kayıttan tümüyle kaldırmak mümkündür — bir alttaki başlığa bakın.
OS Authentication)Bağlantı dizesine OS Authentication=Yes yazılırsa ajan kullanıcı adı ve parola
göndermez; kimlik doğrulama hizmetin altında koştuğu Windows/POSIX oturumunun kimliği
üzerinden yürür. Dizede bir Password dursa bile yok sayılır, yani kayıttan
parolayı tamamen çıkarabilirsiniz:
open database NETSIM storage engine firebird
parameters 'OS Authentication=Yes; Database Name=devdata.fdb; charSet=UTF8';engineUser)Kayıt formunda (ya da CREATE/OPEN DATABASE … PARAMETERS'ta) verdiğiniz
SYSDBA/postgres parolası kaydedilmez: ajan onunla bir kez bağlanır,
depoda engineUser ayarındaki kullanıcıyı (öndeğer IVD$ENGINE) süper kullanıcı olarak
kurar (PostgreSQL SUPERUSER; Firebird GRANT ADMIN ROLE + CREATE DATABASE hakkı +
veritabanında DEFAULT RDB$ADMIN) ve rastgele bir parola üretir. Kullanıcı adı ile parola, depo sunucusu
başına MASTER'da bir credential'da saklanır: SYS.IVD$ENGINE_<AİLE>_<SUNUCU>_<PORT>
(TYPE DBLINK; ör. SYS.IVD$ENGINE_POSTGRESQL_LOCALHOST_5432). Kayıt satırı yalnız ona başvurur
(Credential=SYS.…), kullanıcı adı ve parola satırda durmaz. Aynı depo sunucusunun bütün kayıtları aynı
credential'ı kullanır; sunucunun son kaydı kapatılsa da credential kalır ve sonraki kayıt parolayı ondan alır. Sunucu,
sunucu adı ve porttan tanınır (Firebird'de Database Name içindeki sunucu:yol ya da
sunucu/port:yol öneki de sunucu adıdır, öneksiz yol yerel sunucudur; ODBC kaydı PostgreSQL sayılır). Boş
sunucu adı, localhost, 127.0.0.1 ve ::1 aynı yerel sunucudur; yerel Firebird
sunucusu porttan bağımsız tek credential kullanır (SYS.IVD$ENGINE_FIREBIRD_LOCALHOST), makinede tek
Firebird sunucusu olduğu varsayılır. Kayıt
sqlite ya da OS Authentication=Yes ise bir şey yapılmaz. Servis kullanıcısı depoda zaten varsa ve bu ajanda
o sunucunun credential'ı yoksa (başka bir ajan kurmuştur) kullanıcıya dokunulmaz: kayıt verilen kimlikle yapılır ve bir
uyarı gösterilir; kaydı servis kullanıcısına geçirmek için Servis kullanıcısına geçir kullanılır.
Firebird'de yönetici yetkisi (RDB$ADMIN) her veritabanı dosyasına ayrı yazılır: Servis kullanıcısına
geçir aynı sunucudaki bütün Firebird kayıtlarının dosyalarında bu yetkiyi verir. Dosya dışarıda (örneğin ürünün
derleme aracıyla SYSDBA olarak) yeniden üretilirse yetki kaybolur ve kayıt "servis kullanıcısı bu
veritabanında yetkisiz" iletisiyle açılmaz; aynı işlem yetkiyi yeniden verir.
Parametreleri düzenle'de maskesiz bir parola yazılırsa o kayıt credential'dan çıkar ve kendi (mühürlü)
parolasını taşır. Credential'ın parolası katalogda kodlu durur; MASTER dosyasını okuyabilen onu çözebilir — dosya
izinlerini yukarıdaki gibi kısın.
Aynı PostgreSQL/Firebird sunucusunu kullanan iki ajan (örneğin geliştirme makinesinde iki
kopya) engineUser için farklı adlar almalıdır; aynı adla ikisi birbirinin parolasını
ezer ve birinin bağlantıları düşer. Eski bir kaydı (süper kullanıcı taşıyan) dönüştürmek için Veritabanları
sayfasında Servis kullanıcısına geçir düğmesini kullanın (deponun süper kullanıcı adını ve parolasını
sorar, parola yalnız o işlem için gider; servis kullanıcısının parolasını ajan üretir ya da "Ben belirleyeyim" ile
siz girersiniz — parola sunucunun credential'ına yazılır; aynı sunucuda parolayı hâlâ satırında taşıyan servis
kullanıcılı kayıtlar da credential'a bağlanır) ya da SQL sayfasından
set storage credentials user '…' password '…'; alter database X set engine user; çalıştırın. Komut
hangi veritabanından verilirse verilsin çalışır; açılamayan ya da açıkken depo parolası değişmiş bir kayıt da
böyle, ajan yeniden başlatılmadan onarılır.
Yükseltme sayfası (UPGRADE, UPGRADE LEVEL; önizleme hariç) Firebird /
PostgreSQL / ODBC veritabanında deponun süper kullanıcısıyla koşar: kullanıcı adı (öndeğer sysdba) ve
parola sayfanın üstündeki Depo süper kullanıcısı alanına girilir; alan yalnız bu depolarda görünür,
parola boşsa yükseltme başlamaz. Parola her yükseltmeden önce aynı oturuma SET STORAGE CREDENTIALS ile
verilir ve ardından silinir — ne kayda, ne günlüğe, ne SQL izine girer; depo reddederse alan boşaltılır. Yedek ve bütün yazımlar bu kimlikle ayrı
bir bakım bağlantısında koşar; yanlış parola yükseltmeyi başlatmadan reddeder. SYSDBA ile açılmış bir
oturum kimlik vermezse kayıttaki servis kullanıcısıyla koşar; başka bir login kimlik vermeden yükseltme başlatamaz.
Session Authentication)Kayıttaki User Name/Password öndeğerde her oturumun depo
kimliğidir: yönetim arayüzünün SQL sayfası, msql, FireDAC sürücüsü ve MCP ile gelen her
istek depoya bu (genelde süper kullanıcı) kimlikle gider, IVEDI'nin hakları onun üstünde uygulanır.
Bağlantı dizesine Session Authentication=Yes yazılırsa login'li bir oturumun depo
bağlantısı o login'in kullanıcı adı ve oturum açarken verdiği parolayla kurulur;
kayıttaki kimlik yalnız ajanın kendi iç bağlantılarında (katalog yükleme, zamanlayıcı) ve
SYSDBA oturumlarında kalır. Depoda aynı adlı ve aynı parolalı bir kullanıcı/rol
bulunmalı ve hakları orada verilmiş olmalıdır (GRANT zaten depoya yansıtılır); depo
kendi haklarını uygular, IVEDI'de SYSADMIN olmak depoda hak kazandırmaz. Ayrıntı ve
ad katlama kuralları SQL kılavuzunun "Oturumun kimliğiyle depo bağlantısı" bölümündedir.
open database NETSIM storage engine postgresql
parameters 'Server Name=localhost; Database Name=netsim; User Name=netsim_svc; Password=***;
Catalog Schema=netsim; Session Authentication=Yes';Kullanıcı adı ve parola bağlantı dizesinden tümüyle çıkarılabilir. O zaman kimliği istemci kütüphanesi kendi ortam değişkenlerinden okur — bu, ajanın değil sağlayıcının davranışıdır, dolayısıyla değişken adları sağlayıcıya göre değişir:
| Sağlayıcı | Değişkenler | Not |
|---|---|---|
postgresql |
PGUSER, PGPASSWORD |
Çalışır. Ajan user= ve password= alanlarını
bağlantı dizesine yalnızca boş değillerse ekler; yoksa libpq kendi
değişkenlerine düşer. PGHOST, PGPORT, PGDATABASE
gibi diğer libpq değişkenleri de aynı kuralla geçerlidir. |
firebird |
ISC_USER, ISC_PASSWORD |
Bugün güvenilmemelidir. fbclient kimlik verilmediğinde bu
değişkenleri kullanır, ama ajan kullanıcı adı/parola alanlarını bağlantı bloğuna
boş olsalar bile koyar; yani ortam değişkenine düşülmesi garanti değildir.
Firebird'de parolayı dizeden çıkarmanın desteklenen yolu
OS Authentication=Yes'tir (yukarıya bakın). |
odbc |
sürücüye göre | Sürücü yöneticisi ve DSN belirler. psqlODBC gibi PostgreSQL sürücüleri PG*
değişkenlerini onurlandırır; başka sürücüler için sürücü belgesine bakılmalıdır. |
sqlite | — | Kimlik bilgisi kavramı yoktur. |
Ortam değişkeni, hizmetin kendi ortamında görünmelidir. Windows'ta hizmet
LocalSystem (ya da -INSTALL -SERVICE_USER ile verilen hesap) altında koşar,
yani kuran kişinin oturum değişkenleri geçmez; makine düzeyinde tanımlanmalıdır.
Linux'ta üretilen birime Environment= ya da EnvironmentFile= satırı
eklenir (systemctl edit katmanı yeğlenir, çünkü -INSTALL üretilen
gövdeyi yeniden yazar).
Bir sürecin ortam bloğu, komut satırının aksine süreç listesinde görünmez; parolayı komut satırına koymaktan bu yönüyle iyidir. Aynı hesapta hata ayıklama yetkisi olan bir süreç yine okuyabilir.
Üç istemci sağlayıcısından ikisi seçeneği tanır. Aşağıdaki tablo istemci tarafında ne değiştiğini ve sunucu tarafında neyin yapılandırılmış olması gerektiğini verir; ikincisi olmadan seçenek yalnızca bağlanmayı engeller:
| Sağlayıcı | İstemcide ne olur | Sunucuda ne gerekir |
|---|---|---|
firebird |
DPB'ye isc_dpb_trusted_auth konur, kullanıcı adı/parola hiç gönderilmez.
CREATE DATABASE yolunda USER/PASSWORD yan
tümceleri de yazılmaz. |
firebird.conf'ta Win_Sspi kimlik doğrulama eklentisi devrede
olmalı (AuthServer listesinde) ve Windows kimliğini bir
Firebird kullanıcısına bağlayan bir eşleme bulunmalı:
CREATE OR ALTER GLOBAL MAPPING <ad> USING PLUGIN WIN_SSPI FROM USER
"ALAN\KULLANICI" TO USER SYSDBA;. Eşleme yoksa bağlanma
Missing security context ile döner — bu, istemci tarafında bir kusur değil
eksik eşlemenin işaretidir. Win_Sspi kimliği ALAN\KULLANICI biçiminde ve
büyük harfle gelir; eşlemede ayrılmış (çift tırnaklı) tanımlayıcı
olarak yazılır. |
postgresql |
libpq bağlantı dizesine password yazılmaz. User Name
verilmişse yine gönderilir; verilmemişse libpq oturumun kullanıcı adını kullanır. |
pg_hba.conf'ta ilgili satırın kimlik doğrulama yöntemi sspi
(Windows) ya da gss/peer/ident (POSIX) olmalı ve
işletim sistemi kullanıcısının bir PostgreSQL rolüne karşılığı bulunmalı — adlar
birebir değilse pg_ident.conf ile eşlenir (include_realm=0
gerçek alan adını kırpar). pg_hba ilk eşleşen satırı
kullanır ve başarısız doğrulamada geri dönüş yoktur, bu yüzden yeni satır
catch-all satırlarından önce ve mümkün olduğunca dar (kullanıcı/veritabanı adına
göre) yazılır. |
sqlite |
Kimlik doğrulama diye bir şey yoktur; seçenek etkisizdir.
Bu yolda bir uyarı da yazılmaz — uyarı yalnızca
CREATE DATABASE … STORAGE ENGINE yolunda çıkar (bkz. 4.9). |
|
Bu yol hizmet kipinde uçtan uca çalışır (Windows,
FIREBIRD motorlu kayıt, gerçek bir hesapla kurulmuş hizmet): bağlantı dizesinde
User Name/Password hiç yokken bağlantı açılır, yani parolanın kayıttan
tamamen çıkarılması yalnızca kâğıt üzerinde bir seçenek değildir. Sunucu tarafı
eşlemesi olmadan aynı dize Missing security context ile döner.
Tanı sırası şu iki davranışı bilmeden yanıltıcıdır:
Database Name'deki göreli bir ad bir dosya olmak zorunda değildir:
Firebird'de aynı ad sunucunun databases.conf'undaki bir takma ad olabilir ve
bambaşka bir yoldaki dosyayı gösterebilir. "Dosya yok" diye aramaya başlamadan önce oraya bakın.Hizmetin hesabını -INSTALL -SERVICE_USER ile vermek gerekir; kurulmuş bir hizmette hesabı
sc config <ad> obj= ile değiştirmek yetmez, çünkü o yol
SeServiceLogonRight'ı vermez ve başlatma 1069 ile düşer (bkz. 2.2).
Aynı seçenek ajanın kendi MQL motorunda CREATE DATABASE … STORAGE ENGINE
yazarken de geçerlidir; orada ODBC motoru da destekler. O yolun ayrıntısı MQL
kılavuzunun “Depolama motorları” bölümündedir:
IVEDI SQL Kullanıcı Kılavuzu.
Hizmet olarak koşarken kimlik, hizmetin oturum açma hesabıdır, ajanı kuran
kişinin hesabı değil. -INSTALL hesap adı vermez, yani hizmet Windows'ta
LocalSystem (yerel bağlantıda NT AUTHORITY\SYSTEM, ağda
MAKINE$ makine hesabı), Linux'ta root olarak koşar — ikisi de bir kişi
değildir. Bu yüzden OS Authentication kullanılacaksa ya eşlemeyi o kimlik
için tanımlayın, ya da hizmete gerçek bir hesap verin — en kolayı kurulumda:
-INSTALL -SERVICE_USER "ALAN\hesap" -SERVICE_PASSWORD "..." (Linux'ta
-INSTALL -SERVICE_USER netsim), bkz. 2.2 ve 2.3. Konsol kipinde (-A)
kimlik ajanı başlatan kullanıcıdır — bu yüzden konsolda çalışan bir yapılandırma hizmet olarak
çalışmayabilir; kurulum sonrası doğrulamayı (bkz. 2.6) hizmet kipinde yapın.
ZMGOREV'in yedekleme görevi (tür 6) gbak'ı işletim sisteminin arama yolundan
(PATH) bulur ve kendi süreç ortamına
koyduğu ISC_USER/ISC_PASSWORD ile çalıştırır ve bu kimliği önce görev
tanımının PARAMETRELER alanından, orada yoksa bağlantı dizesindeki
User Name/Password'dan alır. OS Authentication
kullanıldığında geri düşülecek bir parola yoktur; gbak da kimliksiz kalıp kendi
istemci eklenti listesiyle işletim sistemi oturumuna düşer. Bu bileşim ölçülmemiştir —
yedekleme görevi kullanılıyorsa kimliği görev tanımının PARAMETRELER alanında açıkça
verin, ya da yedeklemeyi bir kez elle koşup doğrulayın.
CRUD uygulamasının kullandığı istemci
bağlantıları bir havuzda yaşar: bir istek bitince bağlantı
kapatılmaz, açık kalmış transaction geri alınır ve bağlantı havuza döner; aynı işçi sürecin bir
sonraki isteği yeniden bağlanmaz. İşçi süreçlerin kendisi zaten havuzlu olduğu için
(poolTimeoutMS) bir işçi art arda pek çok isteğe bakar ve bağlantısı onunla yaşar.
Havuzun kaydı süreçler arasıdır, bağlantının kendisi sürece bağlıdır. Havuz
nesnesi ve kayıt listesi paylaşılan bellektedir (kontrol bloğunun adlı nesnesi); bütün işçi
süreçler aynı listeyi görür, aynı kilidi alır ve MONITORDATA hepsini birden sayar.
Her kayıt onu açan sürecin kimliğini taşır ve yalnızca o süreç tarafından kiralanabilir.
Nedeni fizik: depolama istemcisinin tutamacı sürece aittir — fbclient'in tutamacı sürecin kendi
tutamaç tablosunun indisidir, libpq'nun PGconn'u o sürecin yığınındaki bir
işaretçidir. Başka sürecin bağlantısı kullanılamaz da kapatılamaz; ölen bir sürecin kaydı bir
sonraki havuz işleminde silinir (orphaned sayacı), nesnesi süreçle birlikte gitmiştir.
Usta süreç bir isteği HTTP'yi okumadan işçiye verdiği için “bağlantısı olan işçiye
yönlendirme” diye bir şey yoktur: işçi kendi bağlantısını kendi bir sonraki isteğine verir,
günlükte Baglanti havuzu: surec N kendi baglantisini yeniden kullaniyor satırı ve
MONITORDATA.connectionPool.byProcess bunu gösterir.
| Değer | Anlamı |
|---|---|
| Boş bağlantı: 4 | Süreç başına, aynı anahtar (veritabanı + kimlik) için boş bekletilecek en çok bağlantı. |
| Boşta bekleme: 300 sn | Boş bekleyen bağlantının kapatılacağı süre. Ayrı bir zamanlayıcı yoktur, bir sonraki havuz işleminde denetlenir; işçi süreç kapanırken kendi kayıtlarını kapatır. |
| Toplam sınır: yok | Bütün süreçlerin bir veritabanına açtığı canlı bağlantı sayısı sınırlanmaz. |
Havuzun anahtarı veritabanı adı ve kimliktir (kullanıcı adı + parola özeti):
authMode: "database" ile açılmış bir bağlantı yalnızca aynı kullanıcı adı ve aynı
parolayla gelen isteğe verilir. sqlite dosyası WAL günlüğü ve normal
kilit kipiyle açılır ve havuzlanır: işçiler aynı dosyayı birlikte kullanır, okuyucu yazıcıyı beklemez,
yazıcılar Busy Timeout (bağlantı dizgisi, milisaniye, öndeğer 30000) kadar sırayla bekler.
:memory: havuzlanmaz; kopmuş bağlantı havuza alınmaz.