Używamy źródeł zdarzeń w SQL Server 2016. Mamy całkowitą aplikację produktu klienta, każda jest oznaczona etykietą CustomerId
i otrzymuje pojedynczy element linii Przewodnika w magazynie zdarzeń. Jest to podstawowy identyfikator dla instrukcji zapisu zdarzeń zapisu. Aplikacja produktu zawiera wiele różnych rzeczy relacyjnych (które nie mają identyfikatorów, ale klucze naturalne), każdy klient ma wiele adresów, kont, wiele zamówień. Magazyn zdarzeń zapisu zostanie zmapowany na relacyjne tabele bazy danych w dowolny sposób. W bazach danych staramy się łączyć klucze zastępcze zamiast kluczy naturalnych.Sourcing zdarzeń i wiele tabel relacyjnych SQL Server
Czy klucze zastępcze mogą być Guidami, czy możemy używać liczb całkowitych (może Tożsamości) w celu szybszego łączenia?
Pamiętaj, że jedynym głównym identyfikatorem w magazynie zapisu zdarzeń jest aplikacja Guid z identyfikatora klienta (duży blok json zawierający kilka atrybutów kolumn tabeli, które chcemy modelować), ale tabele relacji podrzędnych, które mogą się zmieniać w dowolnym momencie w modelu odczytu , nie ma elementu podrzędnego Guid w magazynie zdarzeń zapisu.
Całe miejsce w CQRS polega na tym, aby model odczytu był zoptymalizowany do czytania. Znaczenie - zdenormalizowane, nie lub bardzo mało, sprzężenia i tak dalej. Co więcej, możesz robić to, co chcesz, po prostu musisz się martwić, że będziesz aktualizował odczytany model ze zdarzeniami, dzięki czemu identyfikator agregacji jest wysyłany i przechowywany po stronie odczytu. –
To interesujące, zachowam łączny identyfikator Aggregate ID we wszystkich naszych 50 tabelach relacyjnych (w tym przypadku umieścimy identyfikator CustomerID w tabelach 5 ), dziękuję, smutne jest to, że książki o modelach odczytu danych SQL nie istnieją , więc architektura różni się od OLTP; nauczyłem się także usuwać unikalne i obce ograniczenia, ponieważ są one stosowane w domenie domeny – AppleBook89
Myślę, że w odniesieniu do modelu Inmon, pozwala to na elastyczność modelowania i relacjonowania tego, jak chcemy, na przykład, jeśli chcę uruchomić funkcję Distinct Sql, która jest już predone, vs prowadzenie odrębnej funkcji w szerokim, wielordzeniowym modelu Kimball, jednak poproszę nasz zespół o zrobienie obu, dziękuję – AppleBook89