2012-11-18 17 views
21

Desidero memorizzare i valori enum nella raccolta MongoDB. Posso archiviarli efficacemente come stringhe? Influirà sulle prestazioni dell'indice rispetto ai valori enum come ints? L'indicizzatore di Mongo ottimizza gli indici di stringa nel caso in cui contengano solo poche opzioni fisse come valori stringa, per ottenere velocità simile all'interrogazione dell'indice per numero intero ordinato?Enum in MongoDB

risposta

20

Memorizzare i valori di enum in MongoDB come stringhe è perfettamente soddisfacente, e sì, se indicizzate il campo mi aspetto che le prestazioni siano paragonabili a query con numeri interi indicizzati. È certamente più espressivo rispetto all'utilizzo di interi.

L'unico vero svantaggio è che occuperanno più spazio se le stringhe di enumerazione sono piuttosto lunghe, ma questa è una preoccupazione piuttosto banale.

+1

Qualcuno ha mai eseguito misurazioni delle prestazioni correlate a questo? Confrontare le stringhe è più lento rispetto al confronto tra numeri interi. Ciò potrebbe influire sull'interrogazione nonché sull'inserimento e sulla ricostruzione (ri) dell'indice, sebbene l'indice riduca significativamente il numero di confronti necessari. Mai fare affermazioni sulle prestazioni senza parametri di riferimento. –