Domanda

Voglio usare UUID come gli ID per i miei JPA oggetti.

Al momento sto solo utilizzando una stringa per memorizzare l'UUID. Che cosa sarebbe più efficace?

È stato utile?

Soluzione

Come stai misurando l'efficienza?

Per esempio, per memorizzare l'UUID (che è una codifica del testo di un byte[]) come un paio di valori long vi permetterà di confrontare molto rapidamente su un'architettura a 64-bit (molto più rapidamente di confronto String, che è il carattere -da-carattere). Tuttavia, l'efficienza di codifica avrebbe sofferto, perché si deve scrivere un tipo personalizzato.

Ciò che è importante nel tuo caso?


Se siete interessati in termini di prestazioni all'interno del database, le prestazioni dipendono in qualche modo sul database che si sceglie, ma tutto sarà essenzialmente confronto byte per byte UUID. Quindi, la cosa importante è quello di rendere le differenze tra le chiavi più probabile che sia verso l'inizio della chiave.

UUID sono ben progettate in questo senso. Il miglior UUID è lo stile "random". Non hanno un sacco di stringhe comuni dovunque, compreso l'inizio, e non trapelare informazioni sulla macchina che li ha generati. Ma, lo stile "timestamp" di UUID fa una buona chiave pure, poiché i bit di ordine inferiore (che variano rapidamente) sono il primo della stringa, mentre i bit di ordine superiore (che non cambiano per gli UUID successive) vengono più tardi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top