Unikalność w Event Sourcingu
W zwykłej bazie danych dodajesz unikalny indeks i sprawa załatwiona. Większość event store’ów daje tylko jedną taką gwarancję: dwa streamy nie mogą mieć tego samego identyfikatora. Gdy więc słyszysz, że e-mail musi być unikalny albo numery faktur nie mogą się powtarzać, potrzebujesz innego sposobu. Sprawdzenie przed zapisem, czy wartość jest wolna, nie działa, bo ktoś może ją zająć między twoim sprawdzeniem a zapisem.
Pierwszy artykuł zaczyna od pytania, które warto zadać przed napisaniem kodu: po co ta unikalność? Często biznes przynosi gotowe rozwiązanie, a prawdziwy problem leży gdzie indziej. Jeśli wymaganie zostaje, zobaczysz kilka sposobów, żeby je spełnić, np. rezerwację wartości przed zapisem, oraz co zrobić, gdy coś pójdzie nie tak w połowie.
Drugi artykuł pokazuje pragmatyczny skrót dla użytkowników Martena, oparty na unikalnym indeksie w PostgreSQL.

How to ensure uniqueness in Event Sourcing
2022-03-09“How do I ensure uniqueness? For example, a unique username or an invoice number.” That’s usually one of the first questions I hear from someone starting the journey with…
Ensuring uniqueness in Marten event store
2023-03-24Unique constraint validation is one of those things that looks simple but is not always easy. I explained already that, in Event Sourcing, it may be challenging. In…