Bu tür bir sorunun çok geldiğini biliyorum, ama henüz bu kararı vermeme yardımcı olacak herhangi bir zorlayıcı argüman okumadım. Lütfen bana eşlik et!
Büyük bir veritabanım var - günde yaklaşık 10.000.000 kayıt büyüyor. Veriler ilişkiseldir ve performans nedenleriyle tabloyu BULK COPY ile yüklüyorum. Bu nedenle, satırlar için anahtarlar oluşturmak gerekir ve bir kimlik sütununa güvenemezsiniz.
64 bitlik bir tam sayı - bir bigint - kullanmam için yeterince geniş, ancak benzersizliği garanti etmek için, kimliklerimi benim için yapmak için merkezi bir jeneratöre ihtiyacım var. Şu anda bir servisin X sıra numaralarını ayırmasına izin veren ve çarpışmayı garanti etmeyen bir jeneratör servisim var. Bununla birlikte, bunun bir sonucu, sahip olduğum tüm hizmetlerin bu tek bir merkezi jeneratöre bağımlı olması ve bu yüzden sistemimi nasıl dağıtabileceğim konusunda kısıtlıyım ve uygulanan diğer bağımlılıklardan (ağ erişimi gerektirme gibi) memnun değilim bu tasarım ile. Bu bazen bir sorun oldu.
Şimdi sıralı GUID'leri birincil anahtarları (harici SQL için oluşturulan) olarak kullanmayı düşünüyorum. Kendi testlerimden emin olabildiğim kadarıyla, bunların tek dezavantajı, daha geniş bir veri türünün (dizinlerde kullanımıyla daha da kötüleşen) disk alanı ek yüküdür. Bigint alternatifine kıyasla sorgu performansında fark edilebilir bir yavaşlamaya tanık olmadım. Tabloyu BULK COPY ile yüklemek biraz daha yavaştır, ancak çok fazla değildir. Sıralı GUID uygulamam sayesinde GUID tabanlı dizinlerim parçalanmıyor.
Temel olarak, bilmek istediğim, göz ardı edebileceğim başka hususlar varsa. Şu anda, sıçramaya ve GUID'leri kullanmaya başlamaya meyilliyim. Ben kesinlikle bir veritabanı uzmanı değilim, bu yüzden gerçekten herhangi bir rehberlik takdir ediyorum.