CQRS Nedir?

Hacisongur
2 min readNov 13, 2023

--

CQRS (Command Query Responsibility Segregation), yazılım mimarisinde bir tasarım desenidir. Bu desen, bir uygulamanın yazma (command) ve okuma (query) işlemlerini farklı yollarla ele alarak, veritabanı işlemlerini optimize etmeyi amaçlar. CQRS, temel olarak veri yazma ve veri okuma işlemlerini farklı modeller ve sınıflar kullanarak ayırır.

Temel olarak iki ana kavram içerir:

1.Command (Komut): Bu, uygulamada bir değişiklik yapma amacı taşıyan işlemleri ifade eder. Örneğin, veritabanına bir kayıt eklemek, güncellemek veya silmek gibi işlemler command olarak kabul edilir.

2. Query (Sorgu): Bu, uygulamadan veri okuma amacı taşıyan işlemleri ifade eder. Veritabanından veri çekme işlemleri query olarak kabul edilir.

3. CQRS yaklaşımında, komutlar ve sorgular için farklı sınıflar ve modeller kullanılır. Bu, her iki tür işlemin de kendi ihtiyaçlarına uygun şekilde optimize edilmesine olanak tanır. Örneğin, veri yazma işlemleri için daha fazla yazma işlemi yapılmış bir veritabanı tasarımı, okuma işlemleri için daha fazla okuma işlemi yapılmış bir veritabanı tasarımından farklı olabilir.

CQRS'nin bazı temel özellikleri şunlar olabilir:

  • İki Ayrı Veri Modeli: CQRS, komutlar ve sorgular için iki ayrı veri modeli kullanır. Bu, her iki işlem türünü optimize etmeyi sağlar.
  • Daha İyi Performans: Veri yazma işlemleri (komutlar) ve veri okuma işlemleri (sorgular) için optimize edilmiş ayrı veri modelleri kullanarak, performans artışı sağlanabilir.
  • Daha İyi Ölçeklenebilirlik: CQRS, uygulamayı daha iyi ölçeklendirmeye olanak tanır, çünkü yazma ve okuma işlemleri farklı şekillerde ölçeklendirilebilir.

. CQRS, özellikle büyük ve karmaşık uygulamalarda, özellikle mikroservis mimarilerinde ve etkinlik tabanlı sistemlerde tercih edilen bir tasarım deseni olabilir. Ancak, uygulanması, uygulamanın gereksinimlerine ve karmaşıklığına bağlı olarak ek maliyet ve karmaşıklık getirebilir. Bu nedenle, CQRS'nin kullanılıp kullanılmaması, projenin ihtiyaçlarına, büyüklüğüne ve gereksinimlerine bağlı olarak değerlendirilmelidir.

--

--