Kami memiliki situs berorientasi berita besar yang memiliki lalu lintas web yang tinggi. Arsitekturnya adalah DB - Repo Layer - Layer Layanan - Asp.Net MVC yang sering Anda lihat. Masalah yang kami lihat adalah seputar kinerja baca. Ternyata semua ini objek objek DDD besar, secara teori, untuk aturan bisnis, tetapi telah membuat hidup lebih sulit ketika datang untuk mengoptimalkan kinerja membaca.
Sebagai solusi, saya sedang mempertimbangkan sesuatu yang sama sekali baru (bagi kami): menggunakan noSQL. Saya ingin menggunakan database noSQL untuk data yang disajikan di situs web kami. Kami tidak dapat menyingkirkan SQL Server kami (setidaknya tidak dalam waktu dekat), tetapi bagi saya tampaknya langkah praktis adalah menggunakan Mongo sebagai basis data kueri untuk semua pengembangan baru.
Pertanyaan saya adalah apakah mungkin untuk menggunakan SQL Server sebagai database catatan dan Mongo sebagai query database Anda bersama-sama ?
Jadi ketika salah satu editor kami memperbarui catatan, data akan disimpan dalam SQL Server. Ini perlu, karena ada terlalu banyak kode warisan yang tidak dapat ditulis ulang semalaman.
Tetapi ketika pengunjung di situs web melihat artikel atau daftar artikel, saya ingin memanfaatkan kinerja Mongo versus SQL Server. Untuk menjaga agar data tetap terkini, misalkan berumur 15 menit atau kurang, data SQL Server perlu menyegarkan Mongo. RDBMS memiliki alat replikasi untuk operasi seperti ini dan saya ingin tahu apakah ada yang bisa dilakukan dari SQL Server ke Mongo. Server Lync, mungkin?
sumber
Jawaban:
Anda mengalami masalah yang dimiliki banyak orang sebelum Anda ... sebuah database yang dioptimalkan untuk membaca jarang baik untuk efisiensi menulis dan sebaliknya. Salah satu pendekatan yang telah berkembang dari hambatan baca-tulis ini adalah CQRS (Command Query Responsibility Segregation). Meskipun Wikipedia menghubungkan keduanya, CQRS dan CQS secara teknis berbeda. CQS hanya menuntut agar suatu metode baik membuat perubahan (perintah) atau meminta informasi (permintaan) tidak pernah keduanya.
CQRS mengambil langkah lebih jauh dan menentukan bahwa Anda memiliki model terpisah untuk Permintaan dan Perintah. Langkah tunggal ini memungkinkan hal-hal seperti memisahkan basis data baca dan tulis Anda. Yang ingin kamu lakukan.
Saya tidak bisa mengatakan bahwa saya ahli tentang Mongo atau mengonfigurasinya agar berfungsi dengan SQL Server. Tetapi dari pemahaman saya, orang menggunakan Mongo sebagai pandangan denormalized dari basis data transaksional mereka. Memperbarui Mongo dari db transaksional mungkin muncul untuk menjalankan Agen SQL. Atau memiliki layanan terpisah untuk polling basis data.
Alternatif yang lebih baik lagi adalah membuat layanan Command Anda menjalankan suatu peristiwa setiap kali pembaruan dilakukan. Anda kemudian akan memiliki layanan yang mendengarkan acara itu dan memperbarui MongoDB dengan informasi itu. Itu adalah pendekatan mendasar untuk Pengadaan Acara (mencari Pengadaan Acara di halaman).
Greg Young, salah satu pemimpin pemikiran di dunia DDD saat ini sedang menulis buku di Fowler Signature Series tentang CQRS yang disebut Event-Centric (dulu disebut CQRS). Fowler telah menulis posting di bukunya yang menggambarkan pendekatan
sumber
Iya. Pada proyek saya saat ini, kami mendapatkan data dan menyimpannya di SQL Server, dan kemudian membangun indeks pencarian menggunakan Lucene / Solr dan menyimpannya di MongoDB. Mempopulasikan MongoDB dilakukan dengan loader kustom, meskipun - tidak ada replikasi SQL Server atau refresh otomatis.
sumber