La domanda generale
Quali sono le differenze tra gli algoritmi che utilizzano le strutture dati e gli algoritmi che utilizzano i database?
Alcuni contesti
Questa è una domanda che mi ha infastidito da un po 'di tempo e non sono riuscito a trovare una risposta convincente per questo.
Attualmente sto lavorando per rafforzare la mia comprensione degli algoritmi che, ovviamente, coinvolgono pesantemente le strutture di dati. Queste sono strutture di base come Bag, Queue, Stack, Priority Queue e Heap.
Uso anche database su base giornaliera per archiviare i dati che sono stati elaborati e inoltrati dall'utente finale o elaborati dal programma. Recupero e invio i dati tramite un DAL, che ha strutture dati proprie generate in base alle tabelle nel database.
Le mie domande arrivano quando ho la possibilità di ordinare i dati usando il database per rispedirmi ordinato in modo ascendente / discendente o recuperare e caricare i dati nella mia logica, elaborare questi dati in una coda di priorità, e il mucchio lo ha ordinato tutto. Oppure un altro sarebbe cercare i record usando il database piuttosto che caricare un sottoinsieme dei record e usare qualcosa come la ricerca binaria per trovare il record o i record a cui sono interessato.
Nella mia mente, proverei ad avere tutte le operazioni che si svolgono sul database-end prima di inviarlo perché la comunicazione è costosa. Questo mi fa anche meravigliare quando usi algoritmi e strutture dati rigorosamente definite all'interno della tua logica piuttosto che elaborare dati rispetto a quelli del database?
Quindi ecco le domande ...
Domande
- Quali sono le differenze tra strutture dati e database?
- Quando usiamo algoritmi che utilizzano strutture dati definite esclusivamente all'interno della tua logica e non quella del database?
-
@Harvey post: Quando i metodi nel database diventano meno efficienti da utilizzare rispetto ai metodi nella tua logica?
- @mirculixx post: Cosa rende un metodo efficace?
- @Harvey post: In che modo l'elaborazione dei dati con le strutture dati è più veloce rispetto a quando esegui nel database?
Chiarimenti
- @Grant post: I database con cui lavoro normalmente sono relazionali e queste domande stanno venendo fuori lavorando con loro. Tuttavia, penso che queste domande siano applicabili a qualsiasi quadro di persistenza (quando dico framework, intendo nel senso più generale).
So che le risposte senza un contesto specifico sono difficili. I pensieri, i consigli oi punti di discussione sono principalmente ciò che sto cercando e sarebbe molto apprezzato!