Implementazione della logica di business con un gran numero di regole e processi aziendali

3

Attualmente stiamo lavorando a un progetto che si basa in gran parte su un database. Tra molte tabelle l'attenzione principale è sulla tabella "dati" che è collegata a un'altra tabella "data_type" come molti-a-uno, che viene quindi collegata alla tabella "data_operation" come uno-a-molti.

L'ultima tabella definisce un insieme specifico di operazioni che devono essere elaborate per ogni riga nella tabella "dati" in base a un tipo di dati specifico. L'operazione viene elaborata in base a campi specifici nella tabella "dati" e parzialmente dati da altre tabelle, non menzionati in questo esempio. L'operazione effettiva è principalmente un calcolo complesso o una formula specifica. Il risultato di un'operazione specifica verrà memorizzato in un'altra tabella.

Quindi in generale abbiamo:

  • Laproiezioneperi"dati" della tabella è approssimativamente di un milione di righe all'anno, mentre le altre tabelle non dovrebbero cambiare drasticamente su base annuale, ma inizialmente conterrà qualche migliaio di righe, ovvero ogni tipo di dati definirà approssimativamente 10- 15 operazioni.
  • Ogni operazione dovrebbe essere reversibile (annullare le modifiche).
  • La velocità di elaborazione è un fattore molto importante.
  • Molto probabilmente l'applicazione elaborerà 2500 nuove "tabelle" di dati al giorno.

La mia domanda riguarda l'approccio migliore per implementare le operazioni. Pensi che sia più saggio spostare la logica e le regole di business in un database (procedure, trigger per ogni operazione) o implementare ed elaborare ogni operazione nel livello applicazione / business? Quale sarebbe la struttura generica ideale?

Inoltre sono aperto anche ad altri approcci.

    
posta Tez 20.02.2014 - 22:18
fonte

2 risposte

4

Non sono sicuro del motivo per cui euforico non ha pubblicato il suo commento come risposta, ma è corretto. Gli stessi dati potrebbero essere visualizzati in molti casi d'uso e questo avrà un impatto sulle tue regole. È necessario progettare le classi di business per ciascun caso d'uso in base al comportamento previsto. Quindi puoi vedere quali dati hai e capire come conservarli.

Ad esempio potresti essere in grado di salvare una citazione parziale. Potresti aver bisogno di più dati prima che il sistema consenta l'invio di un preventivo a un cliente. Ancora diverse regole per la citazione da convertire in un ordine, ecc.

    
risposta data 20.02.2014 - 23:43
fonte
2

La tabella data ha un numero di colonne al suo interno; una delle colonne contiene un type . Una tabella data_type viene convertita da type e aggiunge un nome. Una tabella operation è ricavata dalla colonna name della tabella data_type e aggiunge una colonna action .

1) Non vedo il punto della tabella data_type . Mappare un tipo con un nome non aggiunge realmente valore a questo scenario. operation deve essere mappato direttamente su data .

2) La colonna action è il nome di un'operazione da eseguire su ogni (nuova) riga di data tabella che ha il tipo desiderato. È semplicemente un esercizio di mappatura? Oppure aggiungi frequentemente nuovi tipi di azioni?

3) In che misura le operazioni sono reversibili? Intendi l'intera raccolta di azioni su una singola riga della tabella data ? Intendi dire che ogni singola azione è reversibile? Stai immaginando che la transazione inizi / impegni circondi una serie di azioni su una singola tabella? O intendevi reversibile su una scala più grande, per minuti o giorni?

Se il tuo livello di applicazione è scritto in un moderno linguaggio orientato agli oggetti, hai un Pattern di comando . Un aspetto del modello di comando è che è possibile aggiungere un'operazione al comando.

Nota personale: cercare di rendere reversibili i calcoli quando si hanno trigger di database è una cosa estremamente difficile da fare. Se si spostano le conseguenze nel livello applicazione, si avrà la speranza di essere in grado di tracciare le attività a valle di una modifica dei dati e quindi rendere reversibile l'intera azione o operazione.

    
risposta data 21.02.2014 - 14:04
fonte