- Buildkite, birincil anahtar olarak yeni UUIDv7 standardını benimseyerek önceki sıralı birincil anahtar ve UUID ikincil anahtar sisteminin yerini aldı
- UUID'ler (Universally Unique Identifiers), bağımsız olarak üretilebilen benzersiz tanımlayıcılardır ve dağıtık sistemler ile veritabanlarında yaygın olarak kullanılır
- UUID'ler; tahmin edilemezlik, iç bilgilere dair hassas verilerin açığa çıkmasını engelleme ve ek bir savunma katmanı sağlama gibi açılardan sıralı tamsayı tanımlayıcılara göre çeşitli avantajlar sunar
- Ancak standart, zamana göre sıralı olmayan UUID'lerin rastgeleliği veritabanı performans sorunlarına yol açabilir
- Bunu çözmek için Buildkite, zamana göre sıralı ve UUIDv4 ile uyumlu UUID'leri denedi; bu da ana veritabanındaki Write Ahead Log (WAL) oranını %50 azalttı
- UUID sürüm 7 (UUIDv7), en önemli 48 bitte Unix zaman damgasını milisaniye cinsinden kodlar ve kalan 74 bit rastgele üretilir
- Buildkite, tüm yeni tabloların birincil anahtarı olarak UUIDv7 kullanmaya karar verdi; bu da tanımlayıcı üretiminde koordinasyon gereksinimini ortadan kaldırıp uygulama mantığını basitleştiriyor
- Instagram'ın ShardingID uygulaması ve Shopify'ın bileşik birincil anahtar yaklaşımı gibi alternatifler değerlendirildi, ancak ekip UUIDv7'yi seçti
- UUIDv7'ye geçiş, UUID'nin 128 bit uzunluğu nedeniyle ek depolama alanı gerektiriyor; ancak bu, veritabanı satırının geri kalan depolama alanına kıyasla önemsiz düzeyde
- Şu anda en büyük Postgres veritabanını sharding ile bölüyorlar ve gerekirse gelecekte tanımlayıcılara shard numarası eklemek için UUIDv8 kullanmaları mümkün olabilir
1 yorum
Hacker News görüşleri
uuidtipiyle birlikte kullanılabilir; bu tip, doğru uzunluktaki her veriyi kabul eder.