- Buildkite mengadopsi standar UUIDv7 baru sebagai PK, menggantikan sistem PK sekuensial sebelumnya dan kunci bantu UUID
- UUID (Universally Unique Identifiers) adalah pengenal unik yang dapat dibuat secara independen, dan banyak digunakan dalam sistem terdistribusi serta basis data
- UUID menawarkan berbagai keunggulan dibanding pengenal integer berurutan, seperti sifat yang sulit ditebak, mencegah pengungkapan informasi internal yang sensitif, serta memberikan lapisan pertahanan tambahan
- Namun, sifat acak dari UUID standar yang tidak berurutan berdasarkan waktu dapat menimbulkan masalah performa basis data
- Untuk mengatasi hal ini, Buildkite bereksperimen dengan UUID yang berurutan berdasarkan waktu dan kompatibel dengan UUIDv4, yang mengurangi rasio Write Ahead Log (WAL) pada basis data utama sebesar 50%
- UUID versi 7 (UUIDv7) mengodekan stempel waktu Unix dalam milidetik pada 48 bit paling signifikan, sementara 74 bit sisanya dihasilkan secara acak
- Buildkite memutuskan untuk menggunakan UUIDv7 sebagai kunci utama untuk semua tabel baru, yang menghilangkan kebutuhan koordinasi dalam pembuatan pengenal dan menyederhanakan logika aplikasi
- Alternatif seperti implementasi ShardingID milik Instagram dan implementasi kunci utama gabungan milik Shopify sempat dipertimbangkan, tetapi tim memilih UUIDv7
- Transisi ke UUIDv7 memerlukan ruang penyimpanan tambahan karena panjang UUID yang 128 bit, tetapi ini relatif kecil dibanding sisa ruang penyimpanan pada baris basis data
- Saat ini mereka sedang melakukan sharding pada basis data Postgres terbesar mereka, dan di masa depan ada kemungkinan menggunakan UUIDv8 untuk menyertakan nomor shard dalam pengenal jika diperlukan
1 komentar
Komentar Hacker News
uuiddi Postgres, yang menerima data apa pun dengan panjang yang benar.