Backend - Database¶
Bu bölüm, EnQualify veritabanı yapısını; şemaları, log tablolarını ve temel veri modellerini açıklamaktadır.
Schemas¶
EnQualify veritabanı nesneleri birkaç şemaya ayrılmıştır:
| Şema | Açıklama |
|---|---|
vrf | EnQualify uygulama nesneleri. |
core | Temel sistem nesneleri. |
doc | Belge sistemi nesneleri. |
log | Log tabloları. |
msg | Mesajlaşma sistemi. (EnQualify'da kullanılmaz) |
bpm | Süreç yönetimi. (EnQualify'da kullanılmaz) |
Logs¶
Log Tabloları¶
| Tablo | Açıklama |
|---|---|
vrf…Log | EnQualify fonksiyonel logları. |
log.ApplicationLog | Uygulama çalışma zamanı logları. |
log.RequestLog | API istek ve yanıt logları. |
log.ActivityLog | İş aktivite logları. (EnQualify'da kullanılmaz) |
log.AuditLog | Denetim logları. (EnQualify'da kullanılmaz) |
log.ProcessLog | Süreç yönetimi logları. (EnQualify'da kullanılmaz) |
EnQualify Logs¶
EnQualify doğrulama süreci ve aktivite logları, vrf şemasındaki tablolarda tutulur. Bu loglar, doğrulama verisinin temel bir parçasıdır.
⚠️ Önemli: EnQualify log tabloları, karşılık gelen doğrulama verisi silinmeden veya veritabanından taşınmadan kaldırılmamalıdır. EnQualify log tabloları Data Model bölümünde gösterilmektedir.
Application Logs¶
Uygulama logları, uygulamanın çalıştığı ortamda geçici bir dosyaya yazılır. Log seviyeleri, uygulamanın ayar dosyasından yapılandırılır. Uygulama veritabanına bağlandığında loglar aynı zamanda log.ApplicationLog tablosuna da yazılır.
Log içeriği:
- Uygulamanın nasıl çalıştığına dair bilgiler içerir.
- Yapılandırmaya bağlı olarak detaylı debug bilgisi içerebilir.
- İş verisi veya hassas veri içermez.
İlişkili tablolar:
| Tablo | Açıklama |
|---|---|
core.AppHost | Uygulamanın çalıştığı host bilgisi. Log tablosuyla HostUId üzerinden ilişkilidir. |
core.AppRun | Uygulama süreç bilgisi. Log tablosuyla RunUId üzerinden ilişkilidir. |
core.UserSession | Kullanıcı ve kullanıcı oturumu bilgisi. Log kaydına bağlanabilir. |
log.RequestLog | Log kaydı bir istekle ilişkiliyse RequestId alanı dolu gelir. |
Cleanup: Eski uygulama logları, veri politikasına göre silinebilir veya veritabanından taşınabilir.
SQL Örnekleri:
sql
-- Uyarı: Sorgular diğer işlemleri bloklamamalıdır!
-- SqlServer'da ReadUncommitted isolation level veya nolock hint kullanınız.
-- Kayıt sayısını TOP veya LIMIT ile sınırlayınız.
-- App Host listesi
SELECT * FROM core.AppHost;
SELECT * FROM core.AppHost WHERE App = 'Management.API';
-- App Run listesi
SELECT TOP 10 * FROM core.AppRun WHERE App = 'Management.API';
SELECT TOP 10 * FROM core.AppRun WHERE StartDate >= '2022-01-01';
SELECT TOP 10 * FROM core.AppRun WHERE HostUId = 'F0D506FE-13A7-40DE-974A-A631BF3CB03C';
-- Application Log listesi
SELECT TOP 100 * FROM log.ApplicationLog WHERE App = 'Management.API';
SELECT TOP 100 * FROM log.ApplicationLog WHERE HostUId = 'F0D506FE-13A7-40DE-974A-A631BF3CB03C';
SELECT TOP 100 * FROM log.ApplicationLog WHERE SessionUId = '8A915A26-C5B1-4F94-BB34-37AD03C8984A';
SELECT TOP 100 * FROM log.ApplicationLog WHERE DateTime < '2022-01-01';
Request Logs¶
API istek ve yanıt mesajları log.RequestLog tablosunda saklanır.
Önemli bilgiler:
- İstek ve yanıt verisi tabloya doğrudan yazılmaz; hassas ve istenmeyen veriler temizlendikten sonra HTTP istek/yanıt gövdelerinin dahili JSON görünümü saklanır.
- Veri çok büyükse kırpılarak saklanır.
- Log ve status istekleri ile geçersiz istekler kaydedilmez.
- Log kaydında uygulama bilgisi, isteği işleyen bölüm, IP adresi, istek header'ları ve işlem süresi de yer alır.
İlişkili tablo:
| Tablo | Açıklama |
|---|---|
log.RequestSignature | Mobil uygulamalar tarafından gönderilen imzalı istek mesajlarının imzalarını tutar. |
Cleanup: Eski request logları, veri politikasına göre silinebilir veya veritabanından taşınabilir.
SQL Örnekleri:
sql
-- Uyarı: Sorgular diğer işlemleri bloklamamalıdır!
-- SqlServer'da ReadUncommitted isolation level veya nolock hint kullanınız.
-- Kayıt sayısını TOP veya LIMIT ile sınırlayınız.
-- Request Log listesi
SELECT TOP 100 * FROM log.RequestLog WHERE App = 'Management.API';
SELECT TOP 100 * FROM log.RequestLog WHERE HostUId = 'F0D506FE-13A7-40DE-974A-A631BF3CB03C';
SELECT TOP 100 * FROM log.RequestLog WHERE SessionUId = '8A915A26-C5B1-4F94-BB34-37AD03C8984A';
SELECT TOP 100 * FROM log.RequestLog WHERE DateTime < '2022-01-01';
-- Request Signature listesi
SELECT TOP 100 * FROM log.RequestSignature WHERE DateTime < '2022-01-01';
Data Model¶
Aşağıdaki diyagramlar, EnQualify'da kullanılan temel veri modellerini ve ilişkilerini göstermektedir. Diyagramlar gerçek veri tipleri ve veritabanı içi ilişki detaylarını içermemektedir. Sadelik amacıyla ortak tablolar çıkarılmıştır.
Summary¶
Diyagram özeti: Tüm veri modellerinin genel bir haritasını sunar.
CallSessionmerkezi tablodur;CallFace,CallIDDoc,CallIDChip,CallIDCheck,CallVideo,CallResult,CallCheckgibi doğrulama tabloları Session'a bağlıdır.Agent,Queue,Roles,Auth::UserSessionveDocumentkümeleri de bu merkezi yapıyla ilişkilendirilmiştir.
Session¶
Diyagram özeti:
CallSessiontablosu;CallIDDoc,CallIDChip,CallFace,CallIDCheck,CallVideo,CallResult,CallCheck,CallQueuetablolarıyla ilişkilidir. Her doğrulama adımı (OCR, NFC, Yüz, Video) ayrı bir tabloda tutulur veSessionIdüzerinden bağlanır.