Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Sentinel Value'lar: 0, -1, "1900-01-01" ve 9999-12-31'in Gizli Maliyeti
Sentinel value'lar (maaşta 0, bitişte 9999-12-31, tarihte 1900-01-01) aggregate'leri sessizce bozar: örnekte ortalama maaş 85.000 yerine 51.000 çıkıyor. Çözüm genelde nullable kolon, anlamı birden fazlaysa ayrı bir durum field'ı ve domain'de Special Case tipi; sentinel ancak tek bir üreticisi olduğunda (temporal table, persisted computed column) bilinçli bir standart olabilir.
Dapper ve SQL Server: TVP, ANSI String'ler, {=literal} ve Parameter Sniffing
Doğru sonuç veren ama index'i baştan sona tarayan sorgular: nvarchar parameter'ların varchar kolonlarda yarattığı implicit conversion, Dapper'ın 4000 karakter kuralı, IN listelerinin plan çoğaltması, table-valued parameter'lar, {=literal} ile filtered index ve parameter sniffing — hepsi gerçek logical reads ölçümleriyle.
Dapper ile Stored Procedure: Output, Return Value ve 2.1.11'in Otomatik Algılama Tuzağı
SQLite'ta stored procedure olmadığı için docker'daki SQL Server'a geçiyoruz: CommandType.StoredProcedure, DynamicParameters ile output ve return value, SET NOCOUNT'un Execute'a etkisi, 2.1.11'den beri tek kelimelik command'ların procedure sanılması ve PostgreSQL'de function ile procedure farkı.