Node.js
CQRS
CQRS desenini öğrenirsin.
CQRS nedir?
CQRS (Command Query Responsibility Segregation), yazma (command) ve okuma (query) modellerini ayırır. Komutlar durumu değiştirir, sorgular durumu okur. İki model ayrı veritabanlarında ya da ayrı tablo kümelerinde tutulabilir.
Bir cqrsModel(cmd, query) fonksiyonu bu ayrımı modeller: {command: cmd, query: query} nesnesi döndürür. Örnek: cqrsModel('CreateUser', 'GetUser') {command: 'CreateUser', query: 'GetUser'} döndürür. Komut ve sorgu ayrımı, okuma tarafının optimize edilmesini (örneğin materialized view) sağlar. Event sourcing ile birlikte kullanıldığında komutlar olay üretir, sorgular olaylardan türetilmiş görünümden okur.
Komut ve sorgu ayrımı
Bir komut (command) durumu değiştirir: CreateUser, UpdateOrder. Bir sorgu (query) durumu okur: GetUser, ListOrders. CQRS bu iki tarafı ayrı modellerle yönetir; böylece her taraf kendi ihtiyacına göre optimize edilir.
Örnek: cqrsModel('CreateUser', 'GetUser') iki alanı da ayrı tutar. Yazma tarafı normalize edilmiş tablolar, okuma tarafı materialized view kullanabilir. model.command yazma işini, model.query okuma işini işaret eder. Bu ayrım, özellikle okumanın çok daha sık olduğu sistemlerde (örneğin sosyal akış) performans kazandırır. Event sourcing ile birleşince komutlar olay üretir, sorgular bu olaylardan türetilmiş görünümden okur.
Uygulama CQRS model fonksiyonu yaz
function cqrsModel(cmd, query) yaz. return { command: cmd, query: query } ile döndür. const model = cqrsModel('CreateUser', 'GetUser') tanımla. console.log(model.command) ve console.log(model.query) yazdır.
Örnek çözümü göster
function cqrsModel(cmd, query) {
return { command: cmd, query: query };
}
const model = cqrsModel('CreateUser', 'GetUser');
console.log(model.command);
console.log(model.query);
Kendini test et
-
Nesne özelliğini tamamla
return { command: cmd, ____: query };
Cevabı göster
return { command: cmd, query: query };
-
CQRS neyi ayırır?
cqrsModel('CreateUser', 'GetUser')
- Yazma ve silme
- Veritabanı ve tablo
- Sunucu ve istemci
- Komut ve sorgu
Cevabı göster
Komut ve sorgu — CQRS komut (yazma) ve sorgu (okuma) modellerini ayırır.
-
Parçayı rolüne eşle
- command
- Durumu değiştirir
- query
- Durumu okur
- CreateUser
- Bir komut
- GetUser
- Bir sorgu
Sıradaki ders: Özet - Dağıtık sistemler