- Buildkite ने PK के रूप में नया UUIDv7 मानक अपनाया, जिससे पहले का sequential PK और UUID secondary key सिस्टम बदला गया
- UUIDs (Universally Unique Identifiers) ऐसे unique identifiers हैं जिन्हें स्वतंत्र रूप से जनरेट किया जा सकता है, और ये distributed systems तथा databases में व्यापक रूप से उपयोग होते हैं
- UUIDs, sequential integer identifiers की तुलना में कई फायदे देते हैं, जैसे unpredictability, internal information के sensitive details को उजागर होने से रोकना, और एक अतिरिक्त defense layer प्रदान करना
- हालांकि, standard non-time-ordered UUIDs की randomness database performance समस्याएँ पैदा कर सकती है
- इसे हल करने के लिए, Buildkite ने time-ordered UUIDv4-compatible UUID पर प्रयोग किया, जिससे उसके मुख्य database का Write Ahead Log (WAL) अनुपात 50% कम हुआ
- UUID version 7 (UUIDv7) सबसे महत्वपूर्ण 48 bits में Unix timestamp को milliseconds में encode करता है, और बाकी 74 bits random रूप से जनरेट होते हैं
- Buildkite ने तय किया कि सभी नई tables की primary key के रूप में UUIDv7 का उपयोग किया जाएगा, जिससे identifier generation के लिए coordination की आवश्यकता खत्म हुई और application logic सरल हुआ
- Instagram के ShardingID implementation और Shopify के composite primary key implementation जैसे विकल्पों पर विचार किया गया, लेकिन टीम ने UUIDv7 चुना
- UUIDv7 में migration के लिए UUID की 128-bit लंबाई के कारण अतिरिक्त storage space चाहिए, लेकिन database row के बाकी storage की तुलना में यह बहुत कम है
- फिलहाल वे अपने सबसे बड़े Postgres database को shard कर रहे हैं, और जरूरत पड़ने पर भविष्य में identifiers में shard number शामिल करने के लिए UUIDv8 का उपयोग संभव है
1 टिप्पणियां
Hacker News राय