Wednesday, March 25, 2026

DuplicateKeyException

Giriş

Elimizde legacy bir veri tabanı var. Primary Key (PK) alanların datetime + ms şeklinde tasarlanmış. Böylece satırların kolayca sıralanabileceği düşünülmüş. Ancak bir problem var. Yazma istekleri arttıkça DuplicateKeyException hataları alıyoruz. Yani aslında veri tabanı saati PK için iyi bir kaynak değil. Çünkü aynı anda gelen iki istek için aynı zaman değerini verebiliyor


Ancak PK olarak şu seçenekleri değerlendirebiliriz

  • - Sequence kullanılsaydı harika olurdu
  • - Snowflake Id kullanılsaydı yine olurdu  ancak o zamanlar Snowflake yoktu
  • - UUIDv4 kullanamıyoruz, çünkü sırayı kaybediyoruz
  • - UUIDv7 kullanılabilir, sırayı muhafaza ederiz
  • - PK'ya bir alan daha ilave edebilsek, rastgele bir şey örneğin threadId problemi azaltır, tam çözmez


No comments:

Post a Comment

DuplicateKeyException

Giriş Elimizde legacy bir veri tabanı var. Primary Key (PK) alanların datetime + ms şeklinde tasarlanmış. Böylece satırların kolayca sıralan...