Dove sono applicate le equazioni matematiche nello stack di applicazioni [chiuso]

-2

Dire che ho un programma che utilizza Java o C, che si interfaccia con un dispositivo hardware e legge i dati di streaming o lo scrive su un database prima di applicare alcune analisi matematiche complesse a questi dati per l'analisi.

Dove dovrebbero essere applicate le equazioni (cioè il livello dati, livello applicazione)? È questo è possibile in SQL, o dipende da quanto siano complicate le equazioni?

  • Se questo viene fatto a livello di applicazione, è fatto solo in Java / C o i framework forniscono strumenti che possono essere sfruttati?

  • Se è fatto nel livello applicazione, in che modo vengono gestiti grandi set di dati per le prestazioni?

posta arrydavid 29.05.2018 - 06:54
fonte

1 risposta

3

Where would the equations be applied (ie the data layer, application layer)?

Se stai sviluppando un sistema a strati, di solito eviti di implementare la logica di business in qualcosa come un livello dati. "equazioni matematiche complesse" assomiglia molto alla logica aziendale, quindi il livello dati in genere non è la prima scelta.

Se la tua applicazione ha una classica architettura a tre livelli (dati, business logic, interfaccia utente), allora il livello aziendale sarebbe probabilmente il luogo canonico, presupponendo che lo scopo principale della tua applicazione sia quello di eseguire l'elaborazione.

Se, tuttavia, l'applicazione ha diversi scopi e l'elaborazione del flusso è solo una delle funzionalità tra le tante, perché non introdurre un "livello di analisi" o un "livello di elaborazione"? Tre strati è spesso un buon inizio per un'applicazione, ma non c'è "legge" o "dogma" per non introdurre più livelli se ciò ha senso.

Is this possible in SQL, or does that depend on how complicated the equations are?

Le funzionalità SQL dipendono molto dal dialetto SQL specifico del fornitore del database e, se si includono stored procedure sotto il termine SQL, ciò è ancora più vero. Tuttavia, le procedure SQL e memorizzate spesso arrivano ai loro limiti quando i requisiti rendono necessario implementare tipi di dati complessi, operazioni bit-rate o cose come il multithreading. Ma la prima domanda che devi porre qui è, dove nella tua architettura client / sever vuoi posizionare il livello di elaborazione o il livello aziendale?

Se l'intero livello di elaborazione è implementato da un lato client (dal punto di vista del DB), non ha senso inserire il lato SQL / database. Se, tuttavia, vuoi implementare il tuo livello di elaborazione o parti di esso all'interno di alcune viste o stored procedure, allora rendi questa parte della definizione della tua architettura.

If this is done in the application layer is it done in just vanilla Java/C or do frameworks provide tools that can be leveraged?

Devi implementare i passaggi di elaborazione se non riesci a trovare un framework per questo. Se ci sono quadri o strumenti ben adatti dipendono dai singoli requisiti.

If it's done in the application layer, how are large datasets handled for performance?

Questo è abbastanza irrisolvibile, dal momento che "grande" e "performance" significano cose diverse per persone diverse, ma, per darti una visione generale: misurando le prestazioni, ottimizzandole laddove necessario e / o aumentando la scala usando la parallelizzazione ( più core CPU, più macchine, utilizzando processori più veloci come le GPU). L'approccio corretto dipende completamente dalle esigenze del compito e non può essere risolto in modo ragionevole finché c'è un vuoto di cose sconosciute.

    
risposta data 29.05.2018 - 08:09
fonte

Leggi altre domande sui tag