Saya tahu jenis pertanyaan ini banyak muncul, tetapi saya belum membaca argumen yang meyakinkan untuk membantu saya membuat keputusan ini. Tolong bersamaku!
Saya memiliki database besar - itu tumbuh sekitar 10.000.000 catatan per hari. Data bersifat relasional, dan untuk alasan kinerja saya memuat tabel dengan BULK COPY. Untuk alasan ini, saya perlu membuat kunci untuk baris, dan tidak dapat mengandalkan kolom IDENTITAS.
Bilangan bulat 64-bit - bigint - cukup lebar untuk saya gunakan, tetapi untuk menjamin keunikan, saya membutuhkan generator terpusat untuk membuat ID saya untuk saya. Saat ini saya memiliki layanan generator yang memungkinkan layanan untuk memesan nomor urut X dan tidak menjamin tabrakan. Namun, konsekuensi dari ini adalah bahwa semua layanan yang saya miliki bergantung pada generator terpusat yang satu ini, dan jadi saya terbatas dalam bagaimana saya dapat mendistribusikan sistem saya dan tidak senang dengan dependensi lain (seperti membutuhkan akses jaringan) yang dikenakan oleh desain ini. Ini merupakan masalah pada kesempatan tertentu.
Saya sekarang mempertimbangkan untuk menggunakan GUID berurutan sebagai kunci utama saya (dihasilkan secara eksternal ke SQL). Sejauh yang saya dapat memastikan dari pengujian saya sendiri, satu-satunya kelemahan untuk ini adalah ruang disk overhead dari tipe data yang lebih luas (yang diperburuk oleh penggunaannya dalam indeks). Saya belum melihat adanya pelemahan yang terlihat dalam kinerja kueri, dibandingkan dengan alternatif bigint. Memuat tabel dengan BULK COPY sedikit lebih lambat, tetapi tidak terlalu banyak. Indeks berbasis GUID saya tidak menjadi terfragmentasi berkat implementasi GUID berurutan saya.
Pada dasarnya, yang ingin saya ketahui adalah jika ada pertimbangan lain yang mungkin saya abaikan. Saat ini, saya cenderung untuk melakukan lompatan dan mulai menggunakan GUID. Saya sama sekali bukan pakar basis data, jadi saya sangat menghargai panduan apa pun.