Che struttura dati è questa?

2

Immagina di avere una serie di case che voglio vendere e voglio presentarle poi su un sito web. L'utente dovrebbe essere in grado di filtrare la casa che desidera per prezzo, città, numero di piani, area ecc. Tuttavia, non voglio che sia così:

Prima seleziona solo il prezzo, quindi puoi selezionare la città e solo dopo puoi selezionare il numero di piani ecc.

Voglio che l'utente sia in grado di scegliere l'ordine degli attributi che desidera.

Per ogni iterazione (selezione attributo) il set di attributi rimanenti avrà un intervallo limitato a seconda dell'interazione precedente e così via.

Ho visto questo implementato su alcuni siti di vendita, ma non so come sia implementato, in particolare per quanto riguarda la struttura dei dati.

Ad esempio, non sembra facile aggiungere nuove case. Sembra che ci sia una complicata combinazione di alberi binari e liste concatenate, ma probabilmente non c'è modo migliore che io non abbia capito.

    
posta Mandrill 10.01.2018 - 00:35
fonte

1 risposta

13

Questo è facilmente implementabile in SQL. Ancora meglio è la consapevolezza che qualsiasi DBMS ragionevole ti darà la possibilità di memorizzare i dati come un btree + o una tabella hash. Hai anche la possibilità di inserire più indici sulla struttura della tabella. Non devi configurarlo.

Il tuo progetto mi ha ricordato un progetto che ho fatto circa 20 anni fa. Per un accesso rapido, mi è stato detto di implementare una struttura ad albero, eseguire alcuni calcoli sui dati e quindi produrre un report, tutto fatto in C - non volevamo il sovraccarico di un DBMS.

A causa della complessità della struttura ad albero e dei dati campione in continua evoluzione, ci sono voluti circa 6 mesi per elaborare la raccolta e l'archiviazione dei dati nell'albero. Abbiamo quindi scoperto che stavamo tentando il problema dello zaino. Abbiamo rinunciato a quel progetto dopo.

Questa esperienza informa le mie decisioni fino ad oggi. Guardando indietro con il senno di poi, potrei arrivare allo stesso posto con una banale struttura di database e forse un paio di settimane di programmazione.

In sintesi: usa C per quello che è buono, e usa SQL per quello che è buono. Prima fare la soluzione di database con una combinazione di C e SQL. Considerare solo la sostituzione del DB con le strutture C quando si rivela troppo lento.

    
risposta data 10.01.2018 - 01:19
fonte

Leggi altre domande sui tag