Come allocare un numero Int32 per una stringa GUID? [chiuso]

-1

Vogliamo allocare un valore Int32 per un nuovo GUID in arrivo, che non esiste nel nostro sistema. Una soluzione è utilizzare l'ID auto-incrementale in Mysql, ma non è conveniente per utilizzi successivi. Un altro metodo consiste nell'utilizzare una funzione hash per hash la stringa GUID su un Int32, ma 32 bit è troppo breve per evitare una collisione hash elevata.
Qualche altra soluzione per questo problema?

    
posta brucenan 03.06.2016 - 09:35
fonte

1 risposta

3

Poiché non puoi adattare un GUID a un numero a 32 bit, la tua unica risorsa è una tabella di ricerca.

Suggerisco di creare la suddetta tabella di ricerca nel proprio database, con due colonne: una per il GUID e una con un% di incremento automaticoint32, impostate come chiave primaria. Quando vuoi un nuovo GUID alla conversione int32 , semplicemente INSERIRE un nuovo record nella tabella, assegnando il tuo GUID candidato alla colonna GUID.

È probabilmente una buona idea non eliminare mai alcun record da questa tabella come una questione di politica, poiché non si desidera mai che l'assegnazione int32 di un particolare GUID venga modificata. Assicurati di indicizzare la colonna GUID, senza duplicati.

Si noti che è possibile cooptare una tabella esistente per questo scopo, se ha senso farlo (ad esempio la tabella che utilizza già il GUID come chiave primaria). Basta aggiungere il campo auto-incrementante lì.

    
risposta data 03.06.2016 - 19:25
fonte

Leggi altre domande sui tag