Saya mencoba untuk mencapai keseimbangan antara kinerja tinggi dari database kami dan kemudahan pemeliharaan. Kami sedang mempertimbangkan untuk menggunakan replikasi untuk meningkatkan kinerja, dengan mereplikasi laporan SSR kami ke basis data yang terpisah secara fisik dari basis data transaksional kami. Namun, replikasi yang diaktifkan memiliki sejumlah kelemahan dari sudut pandang pengembang:
- Itu membuat perubahan skema lebih sulit
- Ini mengganggu integrasi / build server otomatis kami
- Tampaknya membuatnya sulit untuk menerapkan kontrol sumber SQL
Pertanyaan saya adalah : Kapan Anda tahu sudah waktunya untuk pergi dengan replikasi mengingat kelemahan ini? Bagaimana Anda memutuskan apakah kompleksitas tambahan membenarkan keuntungan?
Kami telah menggunakannya sebelumnya sehingga pengaturannya tidak menjadi masalah. Ini lebih tentang membuat keputusan untuk, atau tidak, mengaktifkannya. Saya mencari beberapa metrik kinerja objek yang telah diamati orang lain dengan replikasi.
Tentu saja hal terbaik adalah melakukan beberapa pengujian beban disimulasikan pada server kami sendiri dan mencari tahu sendiri, tetapi saya berharap ada beberapa pedoman umum di luar sana.
sumber
Jawaban:
Replikasi harus dipertimbangkan selama fase desain aplikasi. Jika Anda memiliki tenaga kerja / pengguna berbasis geografis, memiliki basis data regional dan basis data pusat mungkin masuk akal. Basis data yang terputus pada laptop dapat "menyinkronkan" ketika mereka akhirnya terhubung kembali dengan jaringan (pikirkan staf penjualan di jalan).
Adapun tujuan pelaporan, replikasi BUKAN jawabannya. Sebagian besar masalah kinerja dalam lingkungan pelaporan berasal dari fakta bahwa laporan ditulis terhadap sistem yang dikonfigurasi untuk pemrosesan transaksi online (OLTP).
Replikasi untuk tujuan pelaporan hanya memindahkan data OLTP Anda ke server lain, tetapi mempertahankan struktur laporan-tidak ramah yang sama. Intinya, Anda membuang lebih banyak perangkat keras pada masalah dan meningkatkan biaya perawatan Anda, tetapi untuk keuntungan marjinal.
Yang harus Anda perhatikan adalah bagaimana mendapatkan data spesifik yang dibutuhkan laporan Anda, dan mengubahnya menjadi format yang lebih bermanfaat. Buat umpan yang mengambil transaksi baru dari basis data produksi Anda dan menyimpannya dalam basis data pelaporan, lebih disukai di server terpisah. Setiap kali umpan berjalan, ia harus mengambil semua data yang lebih baru daripada terakhir kali berlari, mengubah data itu, dan menyimpannya. Laporan yang sedang Anda jalankan akan memberi Anda ide bagus tentang jenis transformasi yang diperlukan.
Dengan mengikuti pendekatan ini, Anda akan menuai manfaat kinerja yang sangat besar.
sumber
Untuk apa nilainya, kami menemukan replikasi sangat membantu dalam situasi yang sama karena penulis laporan dapat "memiliki" indeks pada database yang direplikasi. Ini telah memberi kami kemampuan untuk meningkatkan kinerja kueri dengan menambahkan indeks yang tidak akan disetujui pengembang aplikasi dalam produksi karena dampak negatifnya pada INSERTS dan UPDATES.
Mungkin bagian dari use case Anda adalah menyalin beberapa tabel transaksional, mengubah beberapa indeks, dan melihat apakah itu layak?
Semoga ini membantu!
sumber