Meglio memorizzare metadati vari nel database o calcolare su ciascun accesso

1

Ho un numero di attributi che mi servono per vari carichi di pagina e altre attività di back-end, e discuto se archiviare queste cose in un database o calcolarle al volo.

Ad esempio, se ci sono file che gli utenti possono caricare e si desidera tracciare le dimensioni, lo spazio occupato, il formato, ecc. sarebbe meglio calcolare queste cose una volta e memorizzarle insieme alla posizione del file in il database, o semplicemente prendi il file ogni volta e ottieni gli attributi del file manualmente?

Un altro caso d'uso sono gli articoli del carrello. È meglio calcolare il prezzo di un articolo e archiviarlo in fila con la tabella del carrello degli acquisti oppure calcolare il prezzo indicato ogni volta che viene caricata una pagina. In questo caso, le modifiche al prezzo in base a vendite, sconti, ricariche, ecc. Del sito non si rifletteranno una volta che l'articolo è stato aggiunto al carrello a meno che i prezzi non vengano aggiornati tramite un altro metodo quando si applicano sconti / sconti / ricariche . Questo non è il miglior esempio, ma spero tu capisca l'idea; forse hai un esempio migliore.

In entrambi gli esempi, il materiale sorgente è disponibile per ottenere le risposte da cui è la chiave per la domanda. Ovviamente, si ha un sacco di spese generali per ogni carico di pagina che potrebbe essere molto dipendente dalla situazione, tuttavia l'altro sembra avere meno dipendenza dall'integrità del database in termini di assicurarsi che sia sempre accurato e aggiornato (che io penso di preferire). Non sto cercando una risposta specifica qui, perché sono sicuro che dipenderà da molte variabili, ma sto cercando una procedura ottimale o un metodo per determinare la soluzione migliore.

NOTA: Questa è una domanda simile ma ha ottenuto pochissime risposte e nessuna risposta.

    
posta user58446 23.08.2018 - 01:46
fonte

1 risposta

1

Per tanti motivi, penso che sia meglio memorizzare tutti gli attributi (che hai menzionato) nel database.

  1. Migliori risultati di ricerca per l'utente

  2. Facile da mantenere per tutte le piattaforme (web, mobile, assistenti vocali, ecc.) perché si evita tutta la logica di conversione memorizzando nel database.

  3. Caricamento più rapido su qualsiasi tipo di dispositivo indipendentemente dalla velocità della rete e dalle capacità del dispositivo client. Oggi la maggior parte delle aziende preferisce archiviare dati ridondanti se aiuta a migliorare il servizio.

  4. I dati memorizzati possono essere utilizzati per l'apprendimento automatico, l'analisi dei dati ecc.

Cose come la conversione di valuta, il fuso orario può essere fatto al di fuori del database, se necessario. Ma la copia principale degli attributi che hai citato sono adatti per essere archiviati nel database.

    
risposta data 23.08.2018 - 05:49
fonte

Leggi altre domande sui tag