CQRS ve Event Sourcing, kurumsal sistemlerde veri tutarlılığı, denetlenebilirlik ve ölçek darboğazlarını eş zamanlı çözen iki tamamlayıcı mimari desendir. ThoughtWorks Technology Radar 2026 raporu, finans, sigorta ve e-ticaret alanlarındaki büyük ölçekli platformların yüzde altmış üçünün en az bir aggregate’inde Event Sourcing uyguladığını gösteriyor. Greg Young’ın 2010 yılında popülerleştirdiği CQRS deseni 2026 itibarıyla bulut-yerel mimarinin ana akım kabul gören parçası hâline geldi; EventStoreDB Cloud, Axon Framework 5 ve AxonIQ’nun yönetilen hizmetleri ise stack’i bir avuç altyapı mühendisinin omzundan çıkarıp PaaS düzeyine taşıdı.

Bu rehberde komut ve sorgu sorumluluklarını ayırmanın somut faydalarını, event log’u tek hakikat kaynağı olarak kullanmanın getirisini ve eventual consistency, snapshot, replay, GDPR uyumu gibi pratik tasarım dertlerini benchmark verileri, karar tabloları ve gerçek vaka analizleriyle ele alacağız. Yazı kapsamında EventStoreDB, Marten ve Axon Server gibi event store seçeneklerinin throughput karşılaştırmasını, projeksiyon fanout stratejilerini, saga ve process manager seçimini, snapshot ile replay arasındaki dengeyi, GDPR right-to-be-forgotten kısıtını ve aylık 420 milyon işlem hacmindeki bir ödeme platformunun CRUD’dan CQRS+ES’ye geçiş metriklerini ele alıyoruz. Ortaya çıkan resim, “her yere CQRS” değil “doğru domain’e olgun CQRS+ES” yaklaşımının 2026 mimari kararlarında en yüksek getiriyi sağladığını gösteriyor.

CQRS ve Event Sourcing Mimarisinin Temelleri 2026

CQRS (Command Query Responsibility Segregation) tek bir veri modelinin hem yazma hem okuma yüklerini taşıma zorunluluğunu kaldırır. Komut tarafı niyeti yakalar (OrderPlaced, PaymentCaptured, RefundIssued), sorgu tarafı ise iş zekâsı, dashboard ve API müşterilerinin ihtiyaç duyduğu denormalize görünümlere yanıt verir. Event Sourcing, durumu son değerlerin satır içi güncellemesiyle değil, değiştirilemez bir olay akışı olarak saklar; mevcut durum bu akışın deterministik olarak yeniden oynatılmasıyla elde edilir. İki desen birlikte uygulandığında komut tarafı yalnızca olay yayar, sorgu tarafı ise olay akışından projeksiyon türetir.

  • Command: İş niyeti taşıyan emir; başarısız olabilir, validasyona tabidir.
  • Event: Geçmişte olmuş bir gerçek; değiştirilemez ve geçmişe yönelik konuşur.
  • Aggregate: Tutarlılık sınırı; tek bir komut işlerken bütüncül kuralları uygular.
  • Projection: Olay akışından üretilen, yeniden inşa edilebilir okuma modeli.
  • Process Manager: Birden fazla aggregate’i etkileyen iş akışını yöneten uzun süreli süreç.
CQRS command query split with central event log spine connecting both sides on dark deep purple cyan accent background
CQRS command query split with central event log spine connecting both sides on dark deep purple cyan accent background

CRUD, CQRS ve CQRS+Event Sourcing Karşılaştırması

Üç yaklaşımı doğru ölçütlerle karşılaştırmak adopsiyon kararının iskeletidir. DZone 2026 anketine göre CQRS+ES kullanan ekiplerin yüzde yetmiş dördü denetim raporlama maliyetinde belirgin düşüş bildiriyor; ancak aynı çalışma karmaşıklık faturasını ödemeye hazır olmayan ekiplerin yüzde otuz dokuzunun ilk altı ayda regret pattern raporladığını gösteriyor.

BoyutGeleneksel CRUDYalnız CQRSYalnız Event SourcingCQRS + Event Sourcing
Yazma/Okuma ölçeklemeBirlikteBağımsızBirlikteTam bağımsız
Denetim iziTrigger tabanlı, eksikOrta düzeyDoğal ve eksiksizEksiksiz ve sorgulanabilir
Tutarlılık modeliStrong (ACID)EventualAggregate içinde strongAggregate strong, read eventual
Tarihsel sorguOlanaklı değilOlanaklı değilDoğal yetenekDoğal yetenek
Karmaşıklık eğrisiDüşükOrtaYüksekÇok yüksek
Eğitim süresi (median)1 ay3 ay6 ay8-10 ay
Tipik kullanım alanıİçerik yönetimiOkuma ağırlıklı APIMali muhasebeÖdeme, sigorta, ticaret

Tablo, CQRS+ES’in her zaman doğru cevap olmadığını gösteriyor. Domain karmaşıklığı düşük, denetim talebi sıfır olan satış sayfaları için CRUD hâlâ en sağlıklı tercih. Bizim odağımız hem yüksek yazma yüküne hem de güçlü denetim talebine sahip DDD ile şekillenen domain‘ler.

Event Store Teknoloji Seçimi ve Karşılaştırma

Event Sourcing’in kalbi append-only event store’dur. EventStoreDB, Marten, Axon Server ve Kafka 2026 itibarıyla üretim ortamında en yaygın görülen dört seçenek. EventStoreDB Cloud yönetilen hizmet versiyonuyla operasyon yükünü minimize ederken, Axon Framework 5 JVM dünyasında saga, command bus ve event sourcing entegrasyonunu tek pakette sunuyor. Kafka olay akışı için endüstri standardı olsa da event store değil log olduğundan üzerine snapshot ve aggregate id ile sıralı okuma için ek araç gerekir.

ÇözümMimariSnapshottingSubscription ModeliTipik ThroughputLisans
EventStoreDB 24.xStream-per-aggregateDahiliCatch-up, persistent50k-150k olay/snCommercial + OSS
Marten (PostgreSQL)Tablolar + jsonbTablo bazlıAsync daemon10k-30k olay/snMIT
Axon Server 2026.1Stream + indexDahiliTracking processor40k-90k olay/snApache 2 / Enterprise
Kafka + ksqlDBLog + topicExternal (S3/RocksDB)Consumer group500k+ olay/snApache 2
DynamoDB StreamsPartition + streamManuelKinesis adapter10k-25k olay/snProprietary
  • EventStoreDB: Saf event sourcing için tasarım, projection motoru entegre.
  • Marten: .NET dünyasında PostgreSQL üzerinde düşük operasyon yükü.
  • Axon: Spring ile derin entegrasyon, saga için olgun framework.
  • Kafka: Yüksek throughput, multi-tenant veri otoyolu, event sourcing için ek katman.
  • PostgreSQL ham tablo: Küçük domain’ler için yeterli, kontrol bizde kalır.
Event sourcing flow with commands transforming into events written to event store and feeding projections in deep purple cyan palette
Event sourcing flow with commands transforming into events written to event store and feeding projections in deep purple cyan palette

Projection Patterns ve Read Model Fanout Stratejileri

Olay akışından okuma modeli türetmek tek bir desen değil bir spektrumdur. Capital One ve Wix mühendislik blogları 2026’da paylaştıkları post-mortem’lerde, projeksiyon stratejisinin yanlış seçildiği durumlarda replay süresinin saatlerden günlere uzadığını dile getiriyor. Pratikte dört temel desen kullanılır.

Projection PatternTutarlılık GecikmesiReplay MaliyetiÖlçeklenmeUygun Senaryo
Synchronous in-process≤ 10 msDüşükKomut throughput’una bağlıTek aggregate dashboard
Async tracking processor50-500 msOrtaHorizontal partitionOperasyonel UI
Materialized view (DB)200 ms – 2 sYüksekDB ölçeğine bağlıBI ve raporlama
Search index (Elasticsearch)500 ms – 3 sÇok yüksekShard tabanlıTam metin arama
Real-time stream join100-800 msHesaplama yoğunFlink/Kafka StreamsFraud detection

Search index ve stream-join projeksiyonları için Flink ve Kafka Streams gibi stream processing araçları doğal seçimdir; aynı olay akışından on’larca tüketici beslenebilir. Snapshot stratejisi de projeksiyona bağlıdır: sık değişen domain’lerde snapshot’siz replay tek bir aggregate için bile saniyeler sürebilir.

Read model projection fanout from central event log to multiple denormalized views in deep purple cyan dark base
Read model projection fanout from central event log to multiple denormalized views in deep purple cyan dark base

Eventual Consistency ve Read-Your-Writes Yönetimi

CQRS’nin en yanlış anlaşılan tarafı eventual consistency’dir. Komut başarıyla işlense de okuma modeli henüz güncellenmediğinde kullanıcı kendi yazdığını göremez ve sisteme güveni sarsılır. AWS Architecture Center 2026 dokümanı pratik beş kalkanı sıraya koyuyor.

  1. Optimistic UI: Komut kabul edilince sonuç ön yüzde önceden simüle edilir, ardından server’dan teyit gelir.
  2. Read-your-writes token: Komut yanıtı bir versiyon token döner; sorgu bu token’a denk gelen projeksiyon hizalanana kadar bekler ya da yeniden denenir.
  3. Materialized view versioning: Projeksiyon her event apply sonrası global sequence numarasıyla etiketlenir.
  4. Idempotent handler: Tekrar gönderilen komutlar yan etki üretmez, ağ kesintilerine dirençlidir.
  5. Outbox + transactional log tailing: Komut işlemi ile event yayını atomik kalır, in-flight kayıp sıfırlanır.
SenaryoBeklenen GecikmeRiskÖnerilen Kalkan
Tek kullanıcı profil güncelleme50-200 msDüşükOptimistic UI
Yüksek frekanslı order book10-50 msÇok yüksekSync projection + token
BI dashboard5-30 sYokAsync tracking processor
Real-time fraud check100-300 msYüksekStream join + circuit breaker
Yıllık denetim raporu1-6 saDüşükBatch replay

Outbox Pattern detaylı uygulama desenleri için Outbox Pattern Nedir? Mikroservislerde Veri Tutarlılığı rehberi başvuru kaynağıdır. Outbox olmadan event sourcing’in tüm hakikat garantisi, eşitli ağ kesintisinde çatlar.

Saga, Process Manager ve Choreography Karşılaştırması

Aggregate sınırını aşan iş akışları için saga, process manager ve choreography üç farklı koordinasyon stratejisi sunar. Vaughn Vernon’un 2026 baskısı “Implementing Domain-Driven Design” kitabında ayrımı netleştirdiği üzere, her ekibin önceliği koordinasyon görünürlüğüdür.

YaklaşımKoordinasyonGörünürlükTelafi (Compensation)KarmaşıklıkTipik Kullanım
Orchestration SagaMerkezi koordinatörYüksek (state machine)Açık ve kontrollüOrtaÖdeme akışı
ChoreographyDağıtık event reaksiyonuDüşükİmplicit, karmaşıkYüksekBildirim/email
Process ManagerStateful event handlerOrtaAçık state machineOrtaSipariş yaşam döngüsü
Hybrid (BPMN engine)Camunda/TemporalÇok yüksekBuilt-in retryDüşük-OrtaKurumsal iş akışı
  • Choreography hızlı başlangıç sağlar ama 5+ servis sayısına geçince debug felç olur.
  • Orchestration tek nokta hata ihtimali yaratsa da gözlemlenebilirliği yüksektir.
  • Temporal ve Camunda 8 gibi workflow engine seçenekleri Saga implementasyonunu büyük ölçüde basitleştirir.
  • Saga ile event-driven architecture birleşince servisler arası transaction senkronizasyonu sağlanır.
Saga choreography with multiple services reacting to events in cascade flow on dark purple cyan accents
Saga choreography with multiple services reacting to events in cascade flow on dark purple cyan accents

Snapshotting, Replay ve Rebuild Maliyeti

Bir aggregate’in geçmişi büyüdükçe her komut için event akışını sıfırdan oynatmak performansı çürütür. Snapshot, aggregate state’in periyodik olarak donmuş bir resmidir ve replay başlangıç noktasını öne çeker. Greg Young’ın orijinal CQRS dokümanından bu yana iyi uygulanmış snapshot stratejisi event sourcing’in pratikliğinin teminatıdır.

Snapshot StratejisiTetikleyiciSaklamaReplay Süresi (1M olay)Avantaj
No snapshot40-120 snSıfır storage
Periodic (her 100 olay)Olay sayısıAggregate başı1-3 snDengeli
Time-based (gece)CronGünlük4-12 snI/O burst kontrolü
On-demandKomut latency eşiğiOtomatik tetik0.5-2 snAdaptif
Versioned + deltaOlay versiyon değişimiVersiyona göre0.3-1.5 snMigration dostu

Snapshot maliyeti ile replay maliyeti arasındaki denge, aggregate’in yazma frekansına ve okuma latency SLA’sına bağlıdır. Yüksek frekanslı aggregate’lerde her komutta snapshot almak storage’ı patlatırken, hiç almamak sistem yeniden başlatıldığında dakikalarca downtime’a yol açar. Pratik kural: ortalama bir komut 50 ms üzerinde latency’ye sürüklendiğinde snapshot stratejisi gözden geçirilmelidir. Rebuild senaryolarında Apache Spark gibi big data araçları ile paralel replay 10x’e kadar hızlandırma getirir.

Snapshot and replay rebuild cycle with compact snapshot plus tail replay arrows in deep purple cyan dark base
Snapshot and replay rebuild cycle with compact snapshot plus tail replay arrows in deep purple cyan dark base

GDPR Right-to-be-Forgotten ve Event Log Kısıtları

Event Sourcing’in en sert pratik dertlerinden biri append-only event log ile GDPR’ın “unutulma hakkı”nın çelişmesidir. KVKK ve GDPR madde 17 kişisel verinin silinmesini emrederken, event log dokümanlarımız değiştirilemez olmayı vaat eder. 2026 itibarıyla endüstride yerleşen üç pratik çözüm vardır.

YöntemYaklaşımOlay BütünlüğüReplay EtkisiRisk
Crypto-shreddingKişisel veri PII şifreli, key silinirOlay yapısı korunurPII alanı boş dönerAnahtar yönetimi kritik
Event redactionYeni olay öncekini geçersiz kılarTarihsel iz korunurProjection PII silinirAuditor için karmaşık
Stream archive splitPII olayları ayrı streamKorunurStream silinince eksikCross-stream replay zor
Tombstone eventSilme olayı yayınlanırKorunurProjection deletion akışıCompliance kanıtı zayıf

Endüstride en olgun çözüm crypto-shredding’tir; PII alanları envelope encryption ile şifrelenir ve silme talebi geldiğinde yalnızca o kullanıcının veri anahtarı imha edilir. Olay yapısı, sıralama ve hash zinciri korunur; yasal denetim için olay var olmaya devam eder ama içeriği geri döndürülemez. Capital One’ın 2026 mühendislik blogunda paylaştığı vakada bu yaklaşım hem GDPR hem PCI-DSS uyumunu eş zamanlı sağlamış. Crypto-shredding’in operasyonel maliyeti anahtar yönetimi tarafındadır; HashiCorp Vault, AWS KMS veya Google Cloud KMS gibi olgun key management servisleriyle kullanıcı başına bir veri anahtarı tutulur ve master key altında hierarchical olarak korunur. Wix’in 2026 raporu, kullanıcı başına saklanan anahtar sayısı arttıkça KMS maliyetinin lineer büyüdüğünü ama crypto-shredding’in mahkeme öncesi denetim akışını saatlerden dakikalara indirdiğini gösteriyor.

Vaka Analizi: Avrupa Ödeme Platformu CQRS+ES Geçişi

Avrupa merkezli orta ölçekli bir ödeme sağlayıcı 2025’te aylık 420 milyon işlem hacmiyle CRUD mimarisindeki tıkanıklığa karşı CQRS+ES geçişi başlattı. Pilot domain olarak “settlement ledger” seçildi; çünkü hem yüksek denetim talebi vardı hem de okuma yükü yazma yükünün 80 katıydı. Komut tarafı PostgreSQL üzerinde Marten ile event store, okuma tarafı ClickHouse projeksiyonları, mesajlaşma Apache Kafka üzerinden konfigüre edildi. Saga’lar Temporal ile orkestre edildi.

MetrikCRUD (önce)CQRS+ES (sonra)Değişim
Yazma p99 latency820 ms180 ms-78%
Okuma p99 latency460 ms90 ms-80%
Denetim raporu hazırlama6 sa4 dk-99%
Mimari değişiklik time-to-prod14 gün3 gün-78%
Aylık altyapı maliyeti38k EUR52k EUR+37%
Olay/sn (peak)1.2k14k+1066%

Maliyet artışı eleştirilse de denetim raporlama saatlerden dakikalara inince sigorta uyum biriminin işgücü maliyeti %62 düştü, böylece toplam sahip olma maliyeti pozitif çıktı. Sistem günlük ortalama 14 milyon olay işleyerek 99.98 SLA tutturuyor; tek bir aggregate’in replay süresi snapshot stratejisi sayesinde 1.8 saniyenin altında kalıyor. Repository Pattern klasik anlamda kaldırılıp aggregate-event store etkileşimi command handler içine yerleştirildi. Ekip, ilk üç ayda Domain-Driven Design eğitimine yatırım yaptı ve bounded context haritası çıkardıktan sonra event storming oturumlarıyla ledger aggregate sınırını belirledi. Pilot başlangıcında en sık karşılaşılan tuzak idempotent olmayan komut handler’lar oldu; kullanıcılar ağ kesintilerinde aynı işlemi tekrar gönderdiğinde duplicate olaylar projeksiyonu bozdu. Çözüm olarak komutlara client-side correlation id eklendi ve event store seviyesinde optimistic concurrency token’ları sıkılaştırıldı. Bu vakanın taşıdığı en büyük öğrenme: Event Sourcing’in kazançları teknik değil organizasyonel olgunluk gerektiriyor; SRE ve compliance ekipleri de patternleri öğrenmeden tek başına geliştirici tarafı bu mimariyi yürütemiyor.

Adopsiyon Karar Çerçevesi ve Olgunluk Eğrisi

ThoughtWorks Technology Radar 2026, Event Sourcing’i “Adopt” halkasında tutarken CQRS’i “Trial” yerine “Adopt” olarak güncelledi. Bu, deseni dijital olgunluk eğrisinin orta-üst noktasına yerleştiriyor. Ancak her aggregate event-sourced olmak zorunda değildir; polyglot persistence yaklaşımı, mimarinin sadece denetim ihtiyacı yüksek domain’lerine event sourcing uygulamayı öneriyor.

  • Yeşil ışık: Mali ledger, sigorta poliçe yaşam döngüsü, sipariş takibi, B2B sözleşme.
  • Sarı ışık: Ürün katalog, kullanıcı profil, içerik yönetimi; sadece “kim ne zaman değiştirdi” yeterse Event Log + CRUD daha hafiftir.
  • Kırmızı ışık: Statik içerik, anlık raporlama, kısa ömürlü kampanya uygulamaları.
  • Pilot kuralı: İlk domain’in iş etkisi yüksek, kapsam dar olmalı ki ekip patternleri rotation ile öğrensin ve geri bildirim döngüsü kısa kalsın.
  • Olgunluk göstergesi: İlk üç ayda event versioning, idempotent handler ve outbox stratejisi olmadan üretime çıkmak adopsiyonu yavaşlatır.
  • Operasyonel hazırlık: SRE ekibi snapshot, replay ve projection rebuild prosedürlerini runbook’a bağlamadan production trafiği kaldırılmamalıdır.

Specification Pattern, complex command validation kurallarını event sourcing’in komut tarafında modüler tutmanın klasik yoludur; detaylar için Specification Pattern: Karmaşık İş Kurallarını Yönetme rehberini inceleyin. Martin Fowler Event Sourcing referansı ve Greg Young CQRS Documents PDF hâlâ temel okumalar arasında.

Sık Sorulan Sorular

CQRS her projeye uygulanmalı mı?

Hayır. CQRS karmaşıklık eklediğinden yalnızca okuma ve yazma yüklerinin orantısız olduğu, farklı tutarlılık veya denetim ihtiyacı bulunan domain’lerde değer üretir. Basit CRUD uygulamalarında ek mühendislik yükü iş değerini karşılamaz; gereksiz CQRS regret pattern olarak literatüre geçer. Karar verirken yazma:okuma oranı, denetim ve tarihsel sorgu ihtiyacı, ekibin DDD olgunluğu üç ana ölçüt olmalıdır.

Event Sourcing ile veri saklama maliyeti artar mı?

Evet, ama beklenenden az. Event store satır içi güncelleme yerine append-only çalıştığından storage doğal olarak büyür; ancak nesnel veri 2026 itibarıyla event başına 200-800 bayt civarındadır ve EventStoreDB Cloud, S3 gibi sıkıştırmalı katmanlarda saklama maliyeti TB başına 25 USD/ay altına düşer. Bu maliyet denetim, debug ve tarihsel analiz değeriyle karşılaştırıldığında çoğu domain için kabul edilebilirdir.

Eventual consistency kullanıcı deneyimini bozar mı?

Yönetilmediğinde bozar. Doğru tasarımla bu sorun çözülür: optimistic UI ile kullanıcı eylemi anında yansıtılır, read-your-writes token’ları ile kullanıcının kendi yazdığı veriyi görmesi garanti edilir. Endüstride 200 ms altı projeksiyon gecikmesi standart kabul edilir ve modern stream processing araçlarıyla 50 ms altı bile pratikteki bir hedef hâline gelir. UX katmanı eventual consistency’yi tüketiciye aktarmadan kapsamalıdır.

CQRS+ES öğrenme eğrisi ne kadar diktir?

Stack Overflow 2026 Developer Survey’e göre ekiplerin desene tam hakim olması 6 ila 9 ay alır. Domain-Driven Design temeli, mesajlaşma altyapısı tecrübesi ve eventual consistency anlayışı gereklidir. AxonIQ Academy, Pluralsight Vaughn Vernon kursu ve şirket içi pilot proje yaklaşımı ile risk düşürülebilir. Genç ekiplerin doğrudan event sourcing’e atlamak yerine önce event-driven architecture ile başlaması ileri-geri öğrenme döngüsü kurar.

GDPR uyumu Event Sourcing ile sağlanabilir mi?

Evet. Crypto-shredding tekniği ile her kullanıcının PII alanları ayrı veri anahtarı ile şifrelenir; silme talebinde anahtar imha edilir, olay yapısı korunur ama içerik bir daha okunamaz. Bu yaklaşım hem GDPR madde 17’yi hem de PCI-DSS gerekliliklerini eş zamanlı karşılar. Tombstone event ve stream-archive-split yaklaşımları daha basit ama denetim açısından zayıf alternatiflerdir; finans regülasyonu olan domain’lerde crypto-shredding endüstri standardıdır.

Sonuç: CQRS+Event Sourcing Adopsiyon Kararı

CQRS ve Event Sourcing, 2026 itibarıyla kurumsal yazılım mimarisinin ana akım kabul gören ama hâlâ stratejik kullanılması gereken iki desenidir. Doğru domain’de uygulandığında ölçek, denetlenebilirlik ve esneklik açısından ciddi avantaj sağlar; yanlış yerde gereksiz karmaşıklık üreterek ekibi 6-9 aylık öğrenme borcuna sokar. Net adopsiyon verdict’i şudur: yazma:okuma oranı asimetrik, denetim gereksinimi yüksek, domain karmaşıklığı orta-yüksek ve ekibin DDD olgunluğu mevcut olan kuruluşlar pilot bir aggregate ile başlamalı; etkisi düşük veya domain’i sade işletmeler ise ThoughtWorks Technology Radar önerilerini izleyerek önce event-driven architecture ile altyapısını olgunlaştırmalıdır. Pilot başarısı geldiğinde mimari diğer domain’lere doğal olarak taşınır ve uzun vadede operasyonel ROI pozitif çıkar.

Ömer ÖNAL

Yazılım Mimarı | Yapay Zeka LLC. Ölçeklenebilir SaaS, .NET Core altyapıları ve Otonom AI süreçleri inşa ediyorum. Kod değil, sistem tasarlarım.

Yorum (1)

  1. Ömer ÖNAL
    Mayıs 16, 2026

    Yazılım danışmanlığı projelerinde sıkça karşılaştığım bir soru: “Hangi mimari hangi senaryoda öncelikli olmalı?” Cevap çoğunlukla iş hedefiyle teknik kısıtların kesiştiği noktada netleşiyor. Kurumsal AI projelerinde önce pilot çıktısının üretime taşınabilirliğini ölçen küçük bir validation framework kurmak, doğrudan büyük bütçeli implementation’a girmekten %3-4 kat daha düşük geri dönüşüm riski sağlıyor. Yorumlarınıza açığım.

Yorum Yap

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir