Questa è una domanda riguardante la progettazione di una collezione di nodi ordinati che hanno alcuni requisiti che sto cercando di soddisfare.
Nell'area problematica con cui ho a che fare abbiamo percorsi che sono una raccolta ordinata di nodi. Un percorso sarà compreso tra 1000 e 25000 nodi. Un nodo stesso è un oggetto complesso.
Devo essere in grado di mantenere i nodi, idealmente in un database relazionale (dato che l'applicazione più ampia è attualmente distribuita usando un'architettura che usa un database relazionale per la persistenza). Ho due requisiti separati che presentano una difficoltà nel modellare i dati.
- Devo essere in grado di inserire nodi (o puntatori ai nodi) al centro dell'elenco e riorganizzare l'elenco al volo.
- Devo essere in grado di recuperare l'elenco nel suo ordine sequenziale corretto con un indice efficiente e la possibilità di accesso casuale.
L'unico modo in cui penso di poter soddisfare il primo requisito è quello di modellare i dati come una lista concatenata in cui ogni nodo punta al nodo successivo nell'elenco, il che consentirebbe di modificare e riorganizzare l'elenco al volo.
L'unico modo in cui penso di poter soddisfare il secondo requisito sarebbe quello di ordinare in sequenza l'elenco in modo che ogni nodo abbia un riferimento alla sua posizione nell'elenco e ordini / acceda all'elenco per la posizione.
C'è qualche altro metodo che potrei usare che possa soddisfare i due requisiti o sono bloccato con la costruzione di un ibrido che impiega entrambi i metodi in momenti diversi a seconda del contesto operativo e che mantiene sincronizzati i due tipi di referenziamento?