Ho un set di dati (supponiamo che siano oggetti) con nomi unici immutabili , come questo:
class Datum {
final string name
// other fields
}
Considerando che:
- Non ho bisogno di supportare rinomina . (I nomi sono immutabili come ho detto)
- I nomi sono unici . Tra i dati che immagazzino, non ci sono due dati con lo stesso nome.
- Potrebbero esserci o no (a seconda di come i futuri plugin utilizzeranno l'API) essere un sacco di chiamate API per cercare un riferimento per nome .
Dovrebbe Quando dovrei indicizzare i miei dati con un ID numerico di addizione, o piuttosto che solo con il nome?
- nei database?
- L'ID sarebbe una chiave primaria auto_increment dal motore di database
- Il nome è fornito
- in una memoria di runtime (probabilmente hashtable, ma anche altre strutture dati che potrebbero essere applicabili)?
- L'ID è un valore di incremento associato a ciascun dato quando viene caricato un riferimento.
- I dati possono essere inseriti o rimossi dallo storage in qualsiasi momento senza un ordine specifico e possono essere reinseriti (dopo essere stati rimossi), ma lo stesso dato si verifica solo nella memoria una volta allo stesso tempo.
- Prendi in considerazione l'implementazione in diverse lingue. Ad esempio, in Java, è possibile utilizzare un
HashMap<String, ?>
rispetto aHashMap<Integer, ?>
. In PHP, la differenza è la chiave utilizzata nella matrice che memorizza i dati.
Note: The two questions are independent from each other, i.e. yes for database only but no for runtime only may also be a reasonable answer.