2010-02-03 14 views
8

Sto per passare alcune delle mie entità da Identity a Hilo id-generator.Generatore di hibernate e hilo: come progettare i tavoli chiave?

Non ho idea di come dovrebbero essere progettate le tabelle con i valori alti successivi.

  • devo utilizzare una singola tabella per tutte le entità o per un gruppo di entità correlate?
  • dovrei usare un'altra tabella per ogni entità?
  • dovrei usare una singola tabella con un'altra riga o colonna per entità?

Esistono buone pratiche? Cosa deve essere considerato? Ci sono pro o contro per qualsiasi approccio?

risposta

3

Io non credo che ci sia una sola pratica "migliore", ma è importante capire come funziona HiLo:

  • Il generatore di tabella di Hilo è stato progettato per i database che non supportano le sequenze, che sono un altro naturale adatto a questo compito.
  • Il Hi valore per una classe viene recuperato e aggiornato la prima volta che si salva un'istanza di quella classe, o quando si esaurisce la Lo valori.
  • Un valore diverso Hi viene utilizzato per ogni classe.

Quindi, si dovrà prendere in considerazione almeno due variabili:

  • contesa. È possibile migliorare le prestazioni un po ' utilizzando tabelle separate
  • Intervallo. Con un database molto grande, si ha un rischio maggiore di esaurire i valori Hi.

Dopo aver considerato che, è solo una questione di gusti.

+0

Quindi dovresti prendere in considerazione l'utilizzo di tabelle separate? Contention: intendi transazioni simultanee? Come dovrebbe una singola tabella influire sulle prestazioni? Serrandoci sopra? D'altra parte, quando si usano molte tabelle ci sono più selezioni e aggiornamenti, uno per ogni tabella interessata. Un mix potrebbe essere utile: una tabella per ogni gruppo di tabelle correlate. –

+0

Sì, userei tabelle separate, a causa delle serrature. La quantità di selezioni/aggiornamenti è la stessa, poiché i valori del generatore non sono condivisi tra le classi, anche se si utilizza la stessa tabella. Ancora una volta, tieni a mente il concetto chiave: questo è solo usando una tabella come generatore di sequenze. –

+0

Perché la quantità di selezioni/aggiornamenti è uguale? Quando ho una singola tabella, perché dovrebbe selezionare e aggiornare la stessa tabella per ogni classe per cui ha bisogno di ID? –

Problemi correlati