13 puan yazan GN⁺ 2023-10-03 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2023-10-03
Hacker News görüşleri
  • UUIDv7, sıralı anahtarları sayesinde dahili dağıtık sistemler için faydalıdır, ancak potansiyel güvenlik sorunları nedeniyle herkese açık tanımlayıcı olarak uygun olmayabilir.
  • Rastgele ID'lerin performans için kötü olduğu iddia edilse de, gerçekte tek bir düğümde hotspot oluşmasını engelledikleri için dağıtık depolama sistemleri için daha iyidir.
  • Tanımlayıcılar için gereksinimlerin ve istenen özelliklerin değişmesi nedeniyle UUID'nin birden fazla sürümü vardır.
  • UUIDv7, verimli indeksleme için sıralı bir birincil anahtarın avantajlarını dış kullanım için UUID ikincil anahtarıyla birleştirir.
  • UUIDv7'nin potansiyel sorunlarından biri, kullanıcıların ID'den oluşturulma zamanını çıkarabilmesidir.
  • PostgreSQL için UUID v7 fonksiyonu açık kaynak olarak yayımlandı ve toplu eklemelerin hızlanması gibi avantajlar sunuyor.
  • UUIDv7, Postgres uuid tipiyle birlikte kullanılabilir; bu tip, doğru uzunluktaki her veriyi kabul eder.
  • Bazıları, veri boyutu ve oluşturulma tarihiyle ilgili bilgileri gizlemek için sıralı 64 bit birincil anahtar ile dış kullanım için ek rastgele 64 bit anahtarı tercih ediyor.
  • UUID'ler, daha sonra birleştirilmesi gereken çok sayıda ayrı kaynaktan anahtar üretmek için kullanışlıdır.
  • GUID/UUID'leri "doğrulama" gerekliliği konusunda tartışma vardır. Bunlara çoğu zaman opak tanımlayıcılar olarak yaklaşılır.
  • UUIDv7 ile ULID arasında seçim, özel gereksinimlere bağlıdır; ULID'ler, UUID'lerin metadata için kullandığı alana kıyasla 6 bit ek rastgelelik sağlar.