2010-07-20 14 views

risposta

10

Inizialmente sono stato per dire database di lettura/scrittura , giù di mano, poiché includerebbe il file richiesto io sopra l'overhead del DB, ma poi si rese conto che non era così semplice. Se hai l'intero DB caricato in memoria, le letture sarebbero quasi istantanee in quanto non è coinvolto alcun file.

Le scritture, in generale, dovrebbero essere anche più veloci, poiché il motore DB non deve attendere il completamento dell'IO di file prima di tornare poiché è possibile adottare un approccio di tipo "lazy write".

Un database mal sintonizzato, d'altro canto, sarà di ordini di grandezza più lento di qualsiasi IO basato su file. La sintonia del DB è importante. Un sacco.

+0

Inoltre, potrebbe essere molto più inefficiente estrarre i dati necessari utilizzando il semplice file-io, senza implementare un motore di database autonomamente, o utilizzando un database che centinaia di persone hanno trascorso anni a sviluppare per trovare rapidamente i dati. – nos

3

Questa è una sorta di domanda caricata. Di quali file di dimensioni stiamo parlando? Gigabyte? Inoltre, che tipo e dimensione del DB? Io uso spesso una combinazione. Vuoi controllare l'integrità del livello dei dati? In tal caso, potresti volerlo lasciare al DB altrimenti devi controllare tutto ciò a livello di applicazione.
Ci sono tanti fattori per prendere una buona decisione al riguardo. Ad esempio, quando creo dati temporanei che non desidero persistere, utilizzo File, ma se sto utilizzando i dati che desidero persistere o eseguire il backup, allora utilizzo un DB.
Questo accoppiato con l'architettura è importante. Se l'hardware, le licenze o la struttura sono un problema, allora forse non hai bisogno dell'infrastruttura dei server DB, ecc. Ma se hai le risorse allora l'aggiunta di un livello DB potrebbe essere la scelta giusta.

0

Non c'è una risposta semplice. Con qualsiasi database hai il sovraccarico di averlo sempre in esecuzione. Ma quando accedi a questo è in genere molto più veloce di accedere a un file. Se stai parlando solo di una manciata di accessi, non noterai molta differenza. Ma quando si arriva a centinaia, migliaia e milioni di accessi al minuto, il database sarà molto più veloce. E come notato da Tim in precedenza, un database mal sintonizzato può essere molto più lento dell'accesso a un file flat.