Sto lavorando a un sistema distribuito che utilizza i principi CQRS e DDD. Sulla base di ciò ho deciso che le chiavi primarie delle mie entità dovrebbero essere guids, che sono generate dal mio dominio (e non dal database).Chiave primaria in un database SQL di Azure
Ho letto dei guidi come chiavi primarie. Tuttavia, sembra che alcune delle migliori pratiche non siano più valide se applicate al database SQL di Azure.
GUID sequenziali sono bello se si utilizza un server di premessa sulla macchina SQL - i GUID sequenziali che vengono generati sarà sempre unico. Tuttavia, su Azure, questo non è più il caso. Come discusso in this thread, non è nemmeno supportato più; generarli è anche una cattiva idea in quanto diventa un singolo punto di errore e non sarà più garantito univoco tra i server. Immagino che le spie sequenziali non abbiano senso in Azure, quindi dovrei attenermi ai normali guids. È corretto?
Le colonne di tipo Guid sono cattivi candidati per il raggruppamento. Ma this article afferma che questo non è il caso in Azure e this one suggerisce il contrario! Quale dovrei credere? Dovrei semplicemente rendere la mia chiave primaria un guid e lasciarla in cluster (dato che è l'impostazione predefinita per le chiavi primarie); o non dovrei renderlo in cluster e scegliere un'altra colonna per il clustering?
Grazie per qualsiasi intuizione!
Sia cqs che ddd non richiedono che la chiave primaria debba essere GUID. Il tipo di chiave primaria dovrebbe essere basato solo sul tipo di dati che dovrebbe essere archiviato e non da alcuni blog blogging su di esso. GUID è dannoso per il debug, è estremamente difficile da correlare e il cliente/gli utenti si lamenterà perché non è possibile utilizzare numeri semplici per identificare le entità. –
Sto ancora cercando risposte autorevoli e non supposizioni. Ecco perché non ho assegnato la taglia. – jgauffin