I numeri arbitrari dovrebbero essere memorizzati come stringhe in un database?

1

Uso Google come sistema di accesso per il mio ultimo progetto. Quindi, la mia tabella users ha una colonna denominata googleid , che memorizza l'ID utente univoco di Google, che è un numero, con alcune decine di cifre. Ad esempio, potrebbe essere 105561241212957286025 . Dal momento che non eseguirò alcuna operazione matematica su questi dati, dovrei archiviarlo come numero, o come stringa, nel mio database? Nota anche che se avessi usato un valore numerico dovrei effettivamente specificare una precisione personalizzata perché i tipi numerici incorporati in PostgreSQL non sono abbastanza grandi per questo valore.

    
posta markasoftware 23.03.2016 - 03:57
fonte

1 risposta

4

Memorizzalo come stringa.

Hai già indicato alcuni dei motivi per cui:

  1. Non eseguirai alcuna operazione matematica su di esso
  2. Hai bisogno di un numero di precisione molto grande per memorizzare tante cifre

Lascia che ti dia qualche altro motivo:

    Gli ID
  1. non hanno concettualmente una sequenza o un criterio di ordinamento, né dovrebbero. Pertanto, gli ID non hanno alcuna semantica numerica; l'unico vantaggio che possono avere i numeri è la dimensione della memoria.
  2. Utilizza una stringa e se Google decide di passare a GUID o numeri base64 per i loro ID, il tuo progetto funzionerà ancora.

Ho utilizzato Guid per chiavi primarie nei database SQL per un po 'di tempo e li considero ideali per gli ID perché

  1. Sono globalmente unici, quindi solo i join che hanno senso produrranno effettivamente un output.

  2. Sono internamente numeri a 128 bit, quindi possono essere archiviati in modo più efficiente rispetto ai tasti stringa. La rappresentazione esadecimale esiste solo per scopi di visualizzazione.

risposta data 23.03.2016 - 05:15
fonte

Leggi altre domande sui tag