CQRS
- Node.js kursu
- Uzman
- Ders 35/47
- 5 dk
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.
Başlangıç kodu
// cqrsModel fonksiyonu yaz
// komut ve sorgu alan bir nesne döndürsün
// 'CreateUser' ve 'GetUser' ile çağır, iki özelliği yazdır
// buraya yazÖrnek çözüm
function cqrsModel(cmd, query) {
return { command: cmd, query: query };
}
const model = cqrsModel('CreateUser', 'GetUser');
console.log(model.command);
console.log(model.query);Beklenen çıktı
CreateUser GetUser
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Nesne özelliğini tamamla
return { command: cmd, ____: query };
return { command: cmd, query: query };
Açıklama: Sorgu özelliği 'query' adını taşır.
2 CQRS neyi ayırır?
cqrsModel('CreateUser', 'GetUser')- Yazma ve silme
- Veritabanı ve tablo
- Sunucu ve istemci
- Komut ve sorgu Doğru cevap
Açıklama: CQRS komut (yazma) ve sorgu (okuma) modellerini ayırır.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
command |
Durumu değiştirir |
query |
Durumu okur |
CreateUser |
Bir komut |
GetUser |
Bir sorgu |