Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Veri Katmanını Ölçeklemek: Replication, Sharding ve SQL mi NoSQL mi?
Veri katmanını ölçeklemek access pattern'den başlar: replication okumayı ve availability'yi ölçekler ama yazmayı ölçeklemez, sharding yazmayı ölçekler ama shard key'i içermeyen sorguları scatter-gather'a çevirir. Bir milyon siparişlik denemede müşteri sorgusu tek shard'dan 0,1 ms'de dönerken son 30 gün sorgusu dört shard'ı baştan sona tarıyor; async replica yeni siparişi göstermiyor ve read-your-writes çözümü gerekiyor, hash % N ile 4'ten 5 shard'a geçmek müşterilerin %80'ini taşıyor.
Unique ID Üretimi: Auto-Increment, UUIDv4, UUIDv7 ve Snowflake
Sharding'li ya da çok instance'lı bir sistemde ID seçimi benzersizlik, sıralanabilirlik, boyut, koordinasyon ve ID'nin dışarıya ne sızdırdığı arasında bir trade-off'tur: UUIDv7 koordinasyonsuz ve index dostu, Snowflake 64 bite sığar ama worker ID ve saat yönetimi ister. .NET'in CreateVersion7'sinin milisaniye içinde sıra garanti etmediğinin, C# Snowflake generator'ın ve JavaScript'in 2^53 sınırının gerçek çıktıları.