Ho una lunga lista di stringhe. Ogni stringa ha una lunghezza diversa, proprio come una frase nel testo. La lunghezza media è inferiore a 255 caratteri. Per favore, proponi la struttura dei file su disco per abilitare il prelievo rapido di una frase casuale. Ciò significa che ho bisogno di veloce: * leggi il conteggio totale * leggi la stringa N-esima. Non ci sono requisiti di tempo di scrittura. È meglio se la struttura sarebbe semplice e lo spreco di spazio su disco è minimo.
Vengo con il seguente formato:
<N, number of strings>
<S1, fixed size first chunk of string 1,
right padded with zeroes if size of chunk is less than size of string>
...
<SN, string N chunk, ends with index of next string N chunk,
if string N dont fits in single chunk>
<SN+1, string N additional chunk 1>
<SN+2, string N additional chunk 2>
Pezzi aggiuntivi della stessa stringa che posso mettere insieme per ridurre al minimo la ricerca e la lettura. In questo modo seleziono ogni stringa con uguale probabilità e la leggo con un minimo di 1 ricerca e 1 lettura e al massimo 2 ricerche e 2 letture. Posso scegliere una lunghezza di stringa media come dimensione di un blocco.