2011-09-27 19 views
34

Ho visto più dimensioni e non voglio sprecare memoria del server su un campo MySQL che riserva troppo spazio a troppi caratteri. Qual è il più grande che possono ottenere e questo cambierà mai?Qual è il massimo. lunghezza di un uid di Facebook?

+2

Non c'è alcun limite specificato nella documentazione. Per quanto riguarda "cambierà mai" - questo è Facebook di cui stiamo parlando; le drastiche modifiche all'API sono all'ordine del giorno. Quindi, sebbene gli UID siano piuttosto centrali, non mi fiderei di FB * not * per cambiarlo, in qualsiasi momento in futuro, perché potrebbero semplicemente sentirsi così. Meglio trattarlo come una stringa opaca di personaggi. – Piskvor

+3

Per Mysql, utilizzare UNSIGNED BIGINT; vedere: http://stackoverflow.com/questions/2172126/user-id-big-int-int-or-string – Costa

risposta

63

Ecco come avviene l'overflow di interi, le migrazioni di stringa integer ecc. Rendendo i tipi di dati troppo restrittivi. Schizza su pochi byte per un varchar da 128b e risparmia la seccatura lungo la strada. Se la tua base di utenti diventa così massiccia da doverti preoccupare di quanti byte si risparmiano scricchiolando i tipi di dati degli UID, considera se stessi un enorme successo e questo è un problema che sarai felice di risolvere.

Risposta breve, non credo che qualcuno sarà in grado di rispondere alla tua domanda, "mai" è un tempo lungo e chissà quante entità facebook si saranno ridotti in schiavitù da allora.

Finirò con una citazione da uno che l'ha detto meglio;

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. 
—Donald E. Knuth 
+0

concordato. Grazie! =) –

+0

Questa è una buona risposta. Ho appena avuto questo problema esatto. In precedenza tutti gli ID di Facebook nel mio sistema non avevano più di 10 cifre di lunghezza, tuttavia Facebook ha recentemente cambiato questo documento in modo che gli ID abbiano una lunghezza di 15 cifre. Ho iniziato a vedere più utenti con lo stesso ID di Facebook e non ho riconosciuto che "ID" era in realtà il valore intero massimo. Ho cambiato il mio campo in un varchar e gli ho dato un sacco di padding per i posteri. – Gavin

+0

+1 per VARCHAR per questo: parseInt ("10208914157005637") in Javascript restituisce 10208914157005636 !!! –

2

Come potreste mai essere sicuri che questo non cambierà mai? Meglio renderlo un varchar.

-8

L'UID di Facebook non cambierà mai perché è un identificatore univoco nel loro database. Se fosse cambiato, Facebook avrebbe smesso di funzionare

+4

non scommettere su quello, possono per es. decido di passare all'utilizzo di UID alfanumerici senza dover aggiornare quelli esistenti .. è improbabile che cambi naturalmente, ma mai dire mai ... – ivanhoe

+2

So che questo è un vecchio post, ma Google mi ha portato qui. Gli UID di Facebook cambiano in questo momento! Ogni app di Facebook visualizza gli stessi utenti con UID diversi. La combinazione AppId + UserId non dovrebbe mai cambiare, in quanto è stata progettata per essere gestita dalle app di Facebook, quindi è probabile che tu possa fare affidamento su di essa. In questo momento, i miei test indicano l'ID utente di 17 caratteri. In questo momento, lo sto dichiarando su MySQL come facebook_id varchar (50), poiché non puoi mai sapere quale può essere l'ID del prossimo utente. : -o –

2

Attualmente, gli UID di Facebook sono interi a 64 bit. Ma non posso garantire che non cambierà un giorno.

Problemi correlati