Saya sedang mengembangkan aplikasi web yang menggunakan MS SQL untuk berbagai data: termasuk pengguna, akun pengguna, lisensi pengguna, harga lisensi, faktur.
Saya perlu mencatat penggunaan sistem secara real-time dari pengguna, dan menggunakannya untuk penagihan bulanan: mis. Login setiap kali pengguna mendapatkan halaman / URL dan tagihan pengguna pada akhir bulan berdasarkan jumlah halaman yang mereka ambil.
Haruskah saya menulis peristiwa log ini ke dalam tabel di database MS SQL saya?
Haruskah saya menulis peristiwa log ini ke file log non-SQL append-only?
Haruskah saya menulis peristiwa log ini ke file log yang berbeda untuk setiap pengguna?
Ini bukan situs web bervolume tinggi: misalnya, maksimal 10.000 pengguna masing-masing melakukan rata-rata 5 peristiwa yang dapat loggable / hari => 50.000 peristiwa / hari = 30 peristiwa / menit = 18.000.000 peristiwa / tahun.
Saya bertanya karena salah satu opsi tersebut tampaknya dapat berjalan dan saya tidak melihat apakah seseorang memiliki keuntungan yang jelas.
Data yang terkait dengan acara yang dapat ditagih sederhana, misalnya:
- ID Pengguna (hubungan kunci asing dengan tabel Pengguna dalam SQL)
- Tanggal dan waktu
- URL halaman yang dapat ditagih
Jawaban saya sendiri untuk pertanyaan ini adalah sebagai berikut:
Beberapa manfaat dari menulis log ke tabel database:
- Integritas relasional: misalnya peristiwa yang dicatat terkait dengan ID pengguna yang valid (dengan mendefinisikan ID pengguna sebagai kunci asing di antara tabel)
- Mudah dibaca untuk penagihan: mis.
SELECT COUNT GROUP BY
Untuk mendapatkan hitungan jumlah acara log per pengguna
Beberapa manfaat menulis ke file log:
- Performa yang lebih mudah: SQL jarang digunakan misalnya hanya untuk acara masuk pengguna, dan sebagian besar hanya digunakan untuk membaca
- Manajemen yang lebih mudah: lebih mudah untuk mengarsipkan data lama misalnya pada akhir tahun, dengan memindahkan file log lama daripada dengan menghapus / pengarsipan dari database
Tolong beri tahu saya jika jawaban saya salah; atau melebih-lebihkan pentingnya sesuatu; atau telah melupakan beberapa pertimbangan penting.
Dan / atau tolong beri tahu saya apa jawaban Anda, jika berbeda dengan saya.
Jawaban:
Karena Anda menggunakan informasi ini untuk tujuan penagihan, saya tidak melihat mengapa Anda tidak menginginkannya dalam database di mana ia dapat dengan mudah ditanyakan, dikumpulkan, dilaporkan, dan digabungkan ke data lain.
Saya juga berpikir itu jauh lebih mudah untuk mempertahankan tabel database tunggal yang berisi informasi log daripada banyak file log terpisah. Sama dengan kekhawatiran Anda tentang beban di server - ada banyak cara yang lebih baik untuk mengatasinya daripada menggunakan menyimpan data dalam file datar.
Omong-omong, pilihan ketiga Anda adalah melakukan keduanya. Gunakan database untuk sebagian besar kebutuhan, tetapi miliki file log untuk keperluan audit.
sumber