Domanda

Ho un progetto in cui devo ottenere rapidi ricerche, inserire ed eliminare operazioni su dati che vanno dai megabyte ai terabyte. Avevo studiato strutture di dati negli ultimi tempi e avevo analizzato. Essendo specifico, voglio introdurre 3 casi e porre domande su questo:

  1. I dati sono molto più di quello che la memoria può gestire (campioni di 10-15 terabyte) in una volta sola. In questo caso, memorizzerei la struttura dei dati su un disco.

  2. I dati sono relativamente meno rispetto alla memoria del sistema e quindi possono essere archiviati e gestiti nella memoria stessa per la velocità.

  3. I dati sono più della memoria libera e presumono che sia inferiore alla dimensione di un possibile blocco contiguo di dati nel file di paging. Quindi memorizzo la struttura dei dati in un file su disco e faccio una mappatura della memoria del file.

Le conclusioni che ho tratto sono:

Per il caso 1, dovrei usare un albero B per un accesso più rapido in quanto risparmia al ritardo prodotto dalla rotazione del disco

Per il caso 2, dovrei usare un albero nero rosso per un accesso più rapido poiché i dati sono su memoria e no. di elementi che dovevano essere scansionati in caso peggiore sarebbe inferiore a quello che devo fare se uso gli alberi B

Per il caso 3, sono dubbioso su questo, il file di pagina è su disco utilizza I/O nativi per funzionare sui file, quindi dovrebbe essere un'opzione migliore o un albero nero rosso?

Voglio sapere dove vanno le tre conclusioni di cui sopra e dove va storto e come posso migliorare le prestazioni nei tre casi separati.

Sto usando il linguaggio C ++, con un albero nero rosso e un albero B, entrambi che ho progettato da zero. Sto usando la libreria Boost per la mappatura dei file.

Aggiornamento 1 :: Stava leggendo questo Pubblica in stackoverflow. Ho avuto alcune buone intuizioni, che mi fanno sentire che il tipo di confronti che ho fatto nei casi potrebbe essere difettoso. Un link è stato pubblicato nel più votato per risposta http://idlebox.net/2007/stx-btree/stx-btree-0.8.3/doxygen-html/speedtest.html

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top