Qual è la migliore progettazione software per un'app pesante basata su query

1

Sono responsabile della progettazione di un'applicazione (.NET) con queste funzionalità:

  • È un'app desktop (forse in futuro sarà basata sul Web)
  • La sua funzionalità consiste nel fornire agli utenti dati analizzati recuperati dal database. Viene eseguito eseguendo query complesse generando grafici e tabelle griglia per mostrare le informazioni. Gli utenti analizzano i dati per prendere decisioni. I dati vengono archiviati in tabelle relazionali e devono essere trattati prima di essere visualizzati. Le informazioni sono relative a statistiche, contabilità, ecc.
  • Le query non sono troppo complicate. Più join con GroupBy, Sum e altri calcoli saranno la situazione peggiore.
  • Il database verrà migrato da Oracle = > SQL Server
  • Il modello è correlato all'assemblaggio di automobili. Memorizza informazioni sugli oggetti che compongono un'auto (prezzo, modello, ecc.). Memorizza anche informazioni sui provider, sugli account.
  • La logica del dominio sarà in grado di calcolare i budget per alcune macchine specifiche in un clic, sfruttando molte query e calcoli.

I miei dubbi / domande sono:

A) Voglio mettere tutta la logica all'interno del codice, evitando l'uso di stored procedure nel database. Non mi piace il fatto che non possano essere testati con "codice generico" (che funzionerà malgrado il motore db) e il loro aspetto di essere un black-box che emette dati. Inoltre, non voglio, le modifiche del motore di database influiscono troppo sull'app. Ho ragione? Preferisco che fossero implementati in LINQ o altro approccio che ritieni possa adattarsi. Vedi qualche svantaggio su questo? Probabilmente problemi di memoria? (I dati gestiti contengono migliaia di record con dozzine di tabelle)

B) La logica delle query dovrebbe andare nel livello del dominio. Quale sarà un buon schema / approccio per posizionarli in modo scalabile? Il numero di query aumenterà durante la manutenzione dell'app.

C) Conosci un buon approccio per testare le query in LINQ? Dati falsi, moq, ecc.? Alcuni consigli su questo?

    
posta Badulake 16.05.2018 - 13:03
fonte

1 risposta

1

Per qualsiasi tipo di segnalazione è necessario creare un data warehouse con cubi e simili e interrogare quello piuttosto che i database transazionali sottostanti.

Spesso questi data warehouse sono dotati di propri strumenti di reporting, spesso è meglio usare solo quelli invece di sviluppare un sistema su di essi.

Tuttavia, se è necessario inviare tali rapporti a clienti esterni, si vorrà limitare l'accesso. In questo caso l'applicazione può eseguire la query MDX (o tecnica alternativa) rispetto alla cue e visualizzare il report in un componente o griglia del grafico del cliente.

In entrambi i casi, stai riducendo la logica richiesta utilizzando un data warehouse che appiattirà i dati per primo e manterrai quella logica sotto forma di query anziché in codice.

    
risposta data 16.05.2018 - 14:33
fonte

Leggi altre domande sui tag