Veritabanı Yapılandırması
SmartRAG veritabanı yapılandırması - çoklu veritabanı bağlantıları, şema analizi ve güvenlik ayarları
Veritabanı Yapılandırması
SmartRAG çoklu veritabanı desteği ile akıllı çapraz-veritabanı sorguları yapabilir:
Çoklu Veritabanı Bağlantıları
Çoklu veritabanı bağlantılarını yapılandırarak çapraz-veritabanı sorgularını etkinleştirin:
Veritabanlarını appsettings.json dosyasında yapılandırın:
{
"SmartRAG": {
"DatabaseConnections": [
{
"Name": "Satış Veritabanı",
"ConnectionString": "Server=localhost;Database=Sales;...",
"DatabaseType": "SqlServer",
"IncludedTables": ["Orders", "Customers"],
"MaxRowsPerQuery": 1000,
"Enabled": true
},
{
"Name": "Envanter Veritabanı",
"ConnectionString": "Server=localhost;Database=Inventory;...",
"DatabaseType": "MySQL",
"MaxRowsPerQuery": 1000,
"Enabled": true
}
]
}
}
DatabaseConnectionConfig Parametreleri
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
Name |
string |
- |
Veritabanı bağlantısı için açıklayıcı isim (sağlanmazsa otomatik oluşturulur) |
ConnectionString |
string |
- |
Veritabanı bağlantı string'i (gerekli) |
DatabaseType |
DatabaseType |
- |
Veritabanı tipi (SqlServer, MySql, PostgreSql, Sqlite) (gerekli) |
Description |
string |
- |
Veritabanı içeriğini anlamaya yardımcı olacak isteğe bağlı açıklama |
Enabled |
bool |
true |
Bu bağlantının etkin olup olmadığı |
MaxRowsPerQuery |
int |
0 |
Sorgu başına alınacak maksimum satır (0 = varsayılan kullan) |
QueryTimeoutSeconds |
int |
0 |
Sorgu timeout süresi (saniye) (0 = varsayılan kullan) |
SchemaRefreshIntervalMinutes |
int |
0 |
Otomatik yenileme aralığı (dakika) (0 = otomatik yenileme yok) |
IncludedTables |
string[] |
[] |
Dahil edilecek belirli tablolar (boş = tüm tablolar) |
ExcludedTables |
string[] |
[] |
Analizden hariç tutulacak tablolar |
Desteklenen Veritabanları
SmartRAG aşağıdaki veritabanı türlerini destekler:
SQL Server
{
"DatabaseConnections": [
{
"Name": "SQL Server DB",
"Type": "SqlServer",
"ConnectionString": "Server=localhost;Database=MyDb;User Id=user;Password=pass;TrustServerCertificate=true;"
}
]
}
MySQL
{
"DatabaseConnections": [
{
"Name": "MySQL DB",
"Type": "MySql",
"ConnectionString": "Server=localhost;Database=MyDb;Uid=user;Pwd=pass;"
}
]
}
PostgreSQL
{
"DatabaseConnections": [
{
"Name": "PostgreSQL DB",
"Type": "PostgreSql",
"ConnectionString": "Host=localhost;Database=MyDb;Username=postgres;Password=password;"
}
]
}
SQLite
{
"DatabaseConnections": [
{
"Name": "SQLite DB",
"Type": "Sqlite",
"ConnectionString": "Data Source=./mydb.db;"
}
]
}
Güvenlik ve Hassas Veri Temizleme
SmartRAG otomatik olarak hassas veri tiplerini tespit eder ve temizler:
Otomatik Temizlenen Hassas Veri Tipleri:
password,pwd,passssn,social_securitycredit_card,creditcard,cc_numberemail,mailphone,telephonesalary,compensation
// Hassas veri temizlemeyi devre dışı bırakma
new DatabaseConnectionConfig
{
Name = "Güvenli Veritabanı",
Type = DatabaseType.SqlServer,
ConnectionString = "Server=localhost;Database=SecureDB;...",
SanitizeSensitiveData = false // Dikkatli kullanın!
}
Şema Analizi ve Yenileme
SmartRAG Seçenekleri - Şema Yönetimi
Bu global seçenekler tüm veritabanları için şema analizi davranışını kontrol eder:
builder.Services.AddSmartRag(configuration, options =>
{
// Başlangıçta veritabanı şemalarını otomatik olarak analiz et
options.EnableAutoSchemaAnalysis = true;
// Şema değişikliklerini tespit etmek için şemaları periyodik olarak yenile
options.EnablePeriodicSchemaRefresh = true;
// Tüm veritabanları için varsayılan yenileme aralığı (veritabanı bazında override edilebilir)
options.DefaultSchemaRefreshIntervalMinutes = 60;
});
appsettings.json konfigürasyonu:
{
"SmartRAG": {
"EnableAutoSchemaAnalysis": true,
"EnablePeriodicSchemaRefresh": true,
"DefaultSchemaRefreshIntervalMinutes": 60
}
}
Manuel Şema Yenileme
// Belirli bir veritabanı için özel yenileme aralığı
new DatabaseConnectionConfig
{
Name = "Sık Değişen Veritabanı",
Type = DatabaseType.SqlServer,
ConnectionString = "Server=localhost;Database=DynamicDB;...",
SchemaRefreshIntervalMinutes = 15 // 15 dakikada bir yenile
}
Performans Optimizasyonu
Tablo Filtreleme
// Sadece belirli tabloları dahil et
new DatabaseConnectionConfig
{
Name = "Sadece Ana Tablolar",
Type = DatabaseType.SqlServer,
ConnectionString = "Server=localhost;Database=LargeDB;...",
IncludedTables = new List<string> { "Users", "Orders", "Products" },
ExcludedTables = new List<string> { "Logs", "TempData", "Cache" }
}
Satır Limiti
// Büyük tablolar için satır limiti
new DatabaseConnectionConfig
{
Name = "Büyük Tablo",
Type = DatabaseType.SqlServer,
ConnectionString = "Server=localhost;Database=BigDB;...",
MaxRowsPerTable = 5000 // Tablo başına maksimum 5000 satır
}
Hata Yönetimi
// Bağlantı hatalarını yönetme
try
{
var result = await _multiDatabaseQueryCoordinator.QueryMultipleDatabasesAsync(query);
}
catch (DatabaseConnectionException ex)
{
_logger.LogError(ex, "Veritabanı bağlantı hatası: {DatabaseName}", ex.DatabaseName);
// Fallback stratejisi uygula
}