MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Com'è un MongoDB ObjectID 12 byte?

Come da documentazione ObjectId , quella stringa che vedi è una rappresentazione esadecimale dei 12 byte. Non è Unicode e nemmeno una stringa. In realtà è un numero.

Un byte è 8 bit, il che significa che può avere 2^8 ==256 valori possibili (vedi Byte ).

Come si rappresenta sinteticamente un numero con 256 valori possibili? Che ne dici di rappresentarlo invece come 16^2? È possibile ottenere ciò utilizzando 2 valori esadecimali (base 16). L'unica cosa che devi inventare è un sistema di numerazione che arrivi a 16 invece di 10.

In effetti, utilizziamo lettere da a a f per rappresentare i valori da 10 a 15.

Pertanto, un byte può essere rappresentato in due numeri esadecimali. Capita solo di usare a a f dal momento che non potevamo preoccuparci di inventare simboli speciali per loro. Non sono lettere. Sono numeri.

Quindi no, la stringa che vedi in ObjectId non rappresenta 24 byte. Ogni 2 caratteri rappresentano invece un byte. 24 numeri esadecimali ==12 byte.