Saya telah diminta dalam pekerjaan saya untuk melanggar bentuk normal pertama (mengulangi grup di kolom, menggunakan nilai kosong / nol) beberapa kali, "demi kekuatan pemrosesan komputer". Singkatnya, tabel "siswa" harus memiliki setidaknya 8 bidang kosong (misalnya telepon: telephone1, telephone2, telephone3 ...) alih-alih saran saya - tabel "telepon" yang menyimpan nomor telepon (dan kemungkinan metadata lainnya) dan kunci asing adalah nomor id siswa. Bos saya mengatakan bahwa lebih baik menyimpannya seperti itu karena "ada lebih sedikit siklus CPU dan itu penting di platform web", daripada menggunakan hubungan. Saya mengatakan bahwa, dalam kasus terburuk, ini dapat diabaikan.
Dalam contoh itu, menggunakan relasi (misalkan tabel diisi dengan banyak catatan di webapp berukuran sedang) terutama lebih lambat daripada menggunakan skema tabel semacam itu?
sumber
Jawaban:
Saya tidak melihat bagaimana orang bisa membuat pernyataan seperti itu tanpa memiliki fakta aktual untuk mendukungnya. Jika pertanyaan Anda terikat dengan CPU, maka Anda harus mencari cara untuk mengurangi hambatan itu.
Kedengarannya seolah-olah bos Anda merasa bahwa database denormalized akan berkinerja terbaik, tetapi saya tidak cukup tahu tentang aplikasi Anda untuk mengatakan apakah itu benar atau tidak. Berapa jumlah yang diharapkan dari penghapusan, pembaruan, dan sisipan untuk tabel ini?
Saya berharap bahwa desain denormalized seperti itu dapat mengakibatkan berkurangnya jumlah waktu CPU tetapi akan mengharapkan bahwa I / O disk Anda akan meningkat. Dan pembacaan fisik dari disk akan jauh lebih mahal daripada siklus CPU, jadi mungkin bos Anda memiliki metrik yang sangat spesifik untuk dipenuhi (CPU) dan akibatnya ingin desain yang sangat spesifik? Jika demikian, saya hanya akan membangun apa yang diminta dan menyimpan metrik pada biaya CPU untuk kueri yang dijalankan. Jika Anda melihat peningkatan waktu maka Anda mungkin ingin menyarankan beberapa perubahan desain.
Bahkan, mungkin ide yang baik untuk mendapatkan daftar semua metrik yang ingin dilihat bos Anda, dan melacaknya dari waktu ke waktu.
sumber