5

SQL Server 2016 ile olay kaynağı kullanıyoruz. Her biri CustomerId tarafından etiketlenen ve etkinlik deposunda tek bir Kılavuz satır öğesi alan toplam Müşteri Ürün Uygulaması var. Bu, yazma etkinliği deposu kılavuzları için birincil tanımlayıcıdır. Ürün Uygulamaları, her müşterinin Birden Çok Adres, Hesap, Birden fazla satın alma siparişi olan birçok farklı ilişkisel şeyle (kılavuzları olmayan ancak doğal anahtarlar) gelir. Yazma etkinliği deposu, seçtiğimiz herhangi bir şekilde ilişkisel veritabanı tablolarına eşlenecektir. Veritabanlarında, doğal anahtarlar yerine birleştirme anahtarları ile birleştirmeyi deneriz.Olay Sourcing ve SQL Server çoklu ilişkisel tablolar

Vekil anahtarlar Guid'ler olabilir mi veya daha hızlı birleşim için Integers (belki Kimlik) kullanabilir miyiz?

Olay Olay deposundaki tek birincil tanımlayıcının, Müşteri Kimliği uygulamasından bir kılavuz olduğunu unutmayın (modellemek istediğimiz tablo sütunu özelliklerine sahip büyük json blob), ancak okuma modelindeki herhangi bir zamanı değiştirebilen alt ilişki tabloları Yazma olay deposunda çocuk Guid yok.

+0

CQRS'nin tamamı, okuma için en uygun okuma modeline sahip olmaktır. Anlam - denormalize, hayır, ya da çok az, katıldı, vb. Bunun üzerine istediğinizi yapabilirsiniz, sadece okuma modelini güncellemeye dikkat etmeniz gerekir, bu yüzden bir araya getirme kimliği gönderilir ve okuma tarafında tutulur. –

+0

Bu ilginç, tüm 50 ilişkisel tablolarımızda toplam Agrega ID guidini tutacağım (bu durumda, CustomerID guid'i 5- tablolarına koyacağız), Teşekkürler, üzücü olan şey veri üzerindeki kitaplar sql okuma modelleri yok mimarinin OLTP'den farklı olması; Ayrıca, benzersiz ve yabancı kısıtlamalarını kaldırmayı öğrendiler, çünkü bunlar, Etki Alanı modeliyle ilgili olarak – AppleBook89

+0

Alanında uygulandıklarını düşünüyorum, örneğin, bir Farklı Sql işlevini çalıştırmak istiyorsam, örneğin istediğimiz şekilde modelleme ve ilişkilendirme esnekliği sağlar. Önceden, büyük geniş çoklu sıra Kimball modeli üzerinde ayrı bir fonksiyon çalıştırırken, ben de ekibimizin her ikisini de yapmasını isteyeceğim, teşekkürler – AppleBook89

cevap

3

Evet, belirli bir read model uygulamasında ne gerekiyorsa kullanabilirsiniz ama bir read model herhangi bir zamanda de rebuildable olmalıdır dikkate almak gerekir. Yani, bir read model yeniden oluşturulduğunda, başka vekil kimlikler kullanabilir veya sadece aynı kimlikleri aldığında (Autoincrement özelliğine atıfta bulunarak) her şeyi uygulayabilirsiniz.

P.S. Neden verilerinizi normalleştirmeyi denemiyorsunuz? event sourcing'da, read model'da daha hızlı bir şekilde yapmak yerine birleştirmeyi kullanmaktan kaçınmak yaygındır.