Kullanıcılar, kullanıcı hesapları, kullanıcı lisansları, lisans fiyatları, faturalar dahil çeşitli veriler için MS SQL kullanan bir web uygulaması geliştiriyorum.
Kullanıcıların sistemin gerçek zamanlı kullanımını günlüğe kaydetmem ve aylık faturalandırma için kullanmam gerekiyor: örn. Bir kullanıcı belirli bir sayfayı / URL'yi aldığında günlüğe kaydetme ve getirilen sayfa sayısına göre ay sonunda kullanıcıları faturalandırmam.
Bu günlük olaylarını MS SQL veritabanımdaki bir tabloya yazmalı mıyım?
Bu günlük olaylarını SQL olmayan bir ek günlük dosyasına yazmalı mıyım?
Bu günlük olaylarını her kullanıcı için farklı bir günlük dosyasına mı yazmalıyım?
Bu özellikle yüksek hacimli bir web sitesi değildir: örneğin, her biri ortalama 5 günlük / günlük olay>> 50.000 olay / gün = 30 olay / dakika = 18.000.000 olay / yıl yapan maksimum 10.000 kullanıcı.
Soruyorum çünkü her iki seçenek de uygulanabilir görünüyor ve birinin açık bir avantajı olup olmadığını görmüyorum.
Faturalandırılabilir bir etkinlikle ilişkili veriler basittir, örneğin:
- Kullanıcı Kimliği (SQL'deki Kullanıcılar tablosuyla yabancı anahtar ilişkisi)
- Tarih ve saat
- Faturalandırılabilir sayfanın URL'si
Bu soruya kendi cevabım şöyle:
Günlüğü bir veritabanı tablosuna yazmanın bazı faydaları:
- İlişkisel bütünlük: örneğin, günlüğe kaydedilen olaylar geçerli kullanıcı kimlikleriyle ilişkilendirilir (kullanıcı kimliğini tablolar arasında yabancı anahtar olarak tanımlayarak)
- Faturalandırma için okunması kolay: ör
SELECT COUNT GROUP BY
. Kullanıcı başına günlük etkinliği sayısını saymak için
Günlük dosyasına yazmanın bazı faydaları:
- Daha kolay performans: SQL, yalnızca kullanıcı oturum açma olayları için daha az kullanılır ve çoğunlukla yalnızca okuma için kullanılır
- Daha kolay yönetim: Veriyi silmek / arşivlemek yerine eski günlük dosyalarını taşıyarak, örneğin yıl sonunda eski verileri arşivlemek daha kolay
Cevabımın yanlış olup olmadığını lütfen bana bildirin; veya bir şeyin önemini abartıyor; ya da bazı önemli hususları unutmuş.
Ve / veya benimkinden farklıysa lütfen cevabının ne olduğunu bana bildir.