È una buona idea salvare l'inventario come una serie di "tiri" e "spinte" nel database?

5

Sto progettando il database per un'applicazione che dovrà tracciare l'inventario. Non sono sicuro che sia una buona progettazione del database utilizzare le tabelle "inventario pull" e "inventario push" per memorizzare ogni modifica nell'inventario e calcolare il conteggio di ogni articolo in base a tali tiri e spinte.

Facendolo in questo modo mi permetterebbe di associare un "pull" con un'altra entità di dati, come il dipendente che ha estratto l'articolo o l'ordine per il quale è stato tirato l'oggetto. D'altra parte, potrebbe rendere l'applicazione molto lenta in futuro quando la lista diventa veramente grande.

Devo essere in grado di associare queste transazioni ("pull" e "spinge") ad altre entità, ma sono preoccupato per le prestazioni dell'applicazione. Se utilizzo il metodo della tabella di inventario, avrei bisogno di rintracciare questi dati altrove.

Questa scelta di progettazione ha senso?

    
posta Hassan 18.04.2017 - 18:15
fonte

1 risposta

7

Ha senso immagazzinare push e pull come eventi che hanno altre qualità o proprietà associate a loro, come chi o quando.

Ha anche senso memorizzare il conteggio delle scorte reali, in quanto spesso è anche necessario un conteggio.

In altre parole, questi due non sono necessariamente mutuamente esclusivi, anche se questi ultimi possono in definitiva derivare dal precedente insieme di transazioni: gli ingegneri fanno scelte per memorizzare / memorizzare informazioni derivabili, si spera basate su misurato considerazioni sulle prestazioni .

La memorizzazione degli eventi come log di sola aggiunta è, in parte, cosa c'è dietro Event Sourcing da Segregazione di responsabilità delle query dei comandi .

CQRS è un approccio al ridimensionamento che cerca di separare i percorsi di accesso per tipo (comando / richiesta vs. query). Ciò finisce con un modello di scrittura segregato e il modello di lettura. Pertanto, il modello di scrittura può essere un database normalizzato, mentre il modello di lettura viene denormalizzato per query di applicazioni frequenti.

Event Sourcing si basa su questo, usando un log degli eventi append come ultima fonte di verità, consentendo il riavvio del sistema che costruisce modelli di scrittura e lettura dagli eventi.

FYI, CQRS / ES è un'architettura complessa progettata per affrontare le prestazioni su larga scala e probabilmente non è per tutti. Internamente, crea più copie delle informazioni, in diverse forme, per scopi diversi.

    
risposta data 18.04.2017 - 18:37
fonte

Leggi altre domande sui tag