Di SQL Server kami, kami memiliki database untuk masing-masing aplikasi web kami. Untuk laporan, kami menggunakan Layanan Pelaporan dan semua data laporan (termasuk parameter laporan) berasal dari prosedur tersimpan.
Prosedur yang tersimpan berada di database yang sama dengan data dalam laporan. Jadi, misalnya, procs yang melayani laporan Stock ada di database Stock. Beberapa laporan menunjukkan informasi dari lebih dari satu database dan kemudian proc akan berada di salah satu dari database sumber tersebut. Parameter laporan mendapatkan data mereka dari procs dalam database Perusahaan yang memiliki data seperti toko, karyawan, dll.
Ini berarti bahwa semua laporan memiliki setidaknya koneksi ke database Enterprise dan koneksi lain ke database lain - dan kadang-kadang lebih dari itu.
Pertanyaan saya adalah: apakah ada manfaat memindahkan procs pelaporan ke database "Laporan" yang terpisah . Saya tahu manfaat memindahkan laporan ke server lain dan saya tidak membicarakannya - ini akan berada di server yang sama.
Hal-hal yang mungkin memengaruhi ini adalah:
- Apakah memiliki lebih dari satu koneksi database untuk suatu laporan, memengaruhi kecepatan laporan?
- Apakah memiliki proc pelaporan dalam database terpisah dari data, mencegah kita menggunakan tampilan yang diindeks?
- Sudahkah Anda merasa lebih mudah / lebih sulit mengelola laporan di basis data terpisah?
Tolong beritahu saya bagaimana menurut anda.
sumber
Jawaban:
Jawabannya adalah: ya, ada manfaatnya melakukannya. Laporan tentang basis data operasional akan menggunakan banyak sumber daya dan akan mengganggu kinerja sistem operasional. Ingat bahwa kinerja basis data tunduk pada kendala mekanis (disk head bergerak bolak-balik dan latensi rotasi saat kami menunggu sektor yang tepat untuk membuat tampilan di bawah kepala). Anda memiliki dua opsi luas untuk strategi pelaporan:
sumber
Saya pikir itu sangat tergantung pada jenis SP yang Anda jalankan. Jika mereka berat dan dapat mempengaruhi hal-hal lain yang berjalan di server database saya akan memindahkannya. Kalau tidak, saya akan mencoba dan tetap dekat dengan database yang sebenarnya mereka laporkan, jika merasa lebih mudah untuk mempertahankan dan melacak. Hanya memiliki laporan yang dekat dengan database aktual juga dapat mempengaruhi kinerja tetapi jika Anda menggunakan pengaturan standar dan tidak memindahkan data dalam jumlah besar, itu akan menjadi perbedaan kecil.
Saya juga menemukan artikel ini bermanfaat.
sumber
Saya merekomendasikan untuk tidak memindahkan prosedur tersimpan ke database lain karena beberapa alasan. Dari perspektif pengembangan Anda harus mereproduksi dua database setiap kali Anda ingin membuat perubahan. Sebagai konsekuensinya Anda sekarang akan bagaimana menyinkronkan skema dari database "data" dan prosedur yang tersimpan dari yang kedua dengan versi produksi. Berkenaan dengan pemulihan bencana dan cadangan / pemulihan, Anda sekarang harus mempedulikan diri Anda dengan pemulihan 2 database hanya untuk mendapatkan dan menjalankan sistem Anda.
Saat menguji Anda juga telah menambahkan kompleksitas. Anda akan memiliki lebih banyak poin kegagalan sehubungan dengan izin, versi, dll. Sekarang jika Anda memiliki lebih dari 1 orang yang bekerja pada inisiatif yang berbeda pada basis data, Anda memiliki lebih banyak waktu untuk mengoordinasikan upaya. Sekarang bayangkan jam 3 pagi, sistem mati dan Anda harus mencari izin di semua basis data, dan harus memastikan bahwa tidak ada yang meninggalkan fungsi atau prosedur pada basis data yang salah selama pengembangan.
sumber
Saya sarankan Anda menggunakan dua database.
Mendapatkan laporan dari database 'langsung' menyebabkan masalah kinerja.
Juga, karena basis data pelaporan terutama untuk pencarian, Anda dapat menyesuaikan indeks di sini untuk kinerja yang lebih baik. (Basis data langsung akan memiliki sisipan yang akan terpengaruh secara merugikan oleh indeks tertentu)
sumber
Pendekatan lain adalah memindahkan tabel pelaporan ke skema yang terpisah dan memisahkan grup file. File dalam melaporkan kelompok file dapat dipindahkan dari hard disk data. Lapisan ini jauh lebih mudah untuk administrasi, pengembangan di masa depan dan manajemen akses.
sumber