Lunghetta. vedi Riepilogo in fondo.
RDBMS
Un RDBMS sta per sistema di gestione di database relazionali. È un sistema per gestire una base di dati relazionale. I dati sono memorizzati lì. I dati. Non dice logica commerciale.
Processo di business
Cosa significa veramente la logica aziendale? Per me, è una descrizione dei processi aziendali in termini logici.
I processi sono quelle attività commerciali che si svolgono regolarmente, abbastanza da non essere più ad hoc. Questi sono diversi per ogni azienda.
Consentitemi di mettere il mio cappello aziendale e spiegare cosa significa affari qui. Per alcuni, questo può essere una sorpresa.
Attività commerciale
Il business è la somma delle attività svolte per raggiungere la creazione di valore, e più specificamente valore che può essere scambiato. Ciò potrebbe significare preparare mietitrebbie, sandwich al tonno o fornire servizi bancari. Nella maggior parte dei paesi del mondo, anche nei sistemi non capitalistici, alle persone piace ottenere il massimo valore per i loro soldi, e quindi c'è concorrenza tra i diversi fornitori di questi beni e servizi di valore. La concorrenza dipende generalmente dal prezzo, dalla qualità e dalla disponibilità.
Deviazione rapida: hai bisogno di 40 milioni di rivetti in 2 giorni, non ordinerai da un ragazzo su Internet con un account paypal, non importa quanto sia più economico il suo prezzo rispetto a quello del tuo normale venditore.
Conoscenza del processo
Come puoi immaginare, i processi coinvolti nel rendere questo "valore" vivono principalmente nei dirigenti. Alcuni di questi vengono messi su carta e utilizzati come politiche e procedure aziendali. Alcuni di questi vivono nei capi di consulenti aziendali. Molto di questo vive nella testa delle persone che gestiscono le divisioni, i dipartimenti, i team e quelli che gestiscono le macchine, i registratori di cassa, i forni, i camion. Un piccolo sottoinsieme di questi riduce i requisiti aziendali per il software, e un sottoinsieme ancora più piccolo di questo è accurato quando viene implementato nei sistemi informatici.
Alla fine, la logica di business che vedi nel codice non è quella che gestisce un'azienda, è quella che esegue l'applicazione per l'azienda. I cervelli reali all'interno delle persone reali detengono i processi aziendali reali e non hanno alcun problema a capire che il processo nel loro cervello è più accurato del processo nel computer. A parte questo, probabilmente non potresti gestire l'attività se tutto ciò che avessi fossero le politiche e le procedure della maggior parte delle aziende. Molto spesso questi sono grossolanamente inaccurati, nonostante gli sforzi erculei.
Quindi, alla fine, è la logica dell'applicazione che è codificata nel software. E la gente vuole metterlo nel database, perché i venditori del sistema di gestione del database hanno fatto affermazioni grandiose.
Logica dell'applicazione
Dico di no Dico che la logica dell'applicazione rimane all'interno dell'applicazione. I dati vengono archiviati nel database, in un modo molto normalizzato, quindi vengono trasferiti in ETL al datawarehouse per la creazione di report, il drill e il rollup, il pivot e il cubing.
Dati
Dico anche che i dati sopravvivono all'applicazione, quindi lo sforzo di normalizzazione dei dati non dovrebbe essere specifico per l'applicazione, e nemmeno specifico per il business, ma piuttosto dovrebbe essere business-general. Memorizzi i codici di stato? Dovresti usare INCITS 38: 2009 (http://www.census.gov/geo/www/ansi/statetables.html) perché è portatile in tutte le aziende. Ciò semplifica inoltre la manipolazione dei dati da parte di più applicazioni.
NoSQL?
Se tratti il database come parte del codice dell'applicazione, dal layout delle tabelle ai trigger, alle procedure memorizzate e ai formati dei dati, stai essenzialmente utilizzando il database aziendale come un BerkleyDB glorificato, che è una struttura di file flat glorificata, che è in realtà solo liste persistenti. Questo è essenzialmente ciò che sta facendo NoSQL: tornare alle origini, ma farlo in modo multiprocesso, persistente, tollerante ai guasti.
Codice attuale
No, è necessario trattare la base di dati come un archivio comune di dati per più applicazioni, sia attuali che future. Ora veniamo al nocciolo della mia discussione. I processi aziendali cambiano con i capricci del mercato, della politica e della moda. Molto spesso cambiano più velocemente di quanto i programmatori possano gestire con linguaggi di livello informatico (Java, C #, C ++ ecc.) E finiscono per essere scritti in VBA in fogli di calcolo Excel nel reparto contabilità o marketing. (E solo se non può essere espresso in fantasiosi vlookup ...)
Degrado del database
I dati non cambiano molto se sono ben organizzati. La logica aziendale cambia molto rapidamente. Inserendo la logica di business nel database, si rende il database meno prezioso, perché diventerà obsoleto e impreciso prima.
Sommario
I dati devono sopravvivere all'applicazione perché i processi aziendali vivono nell'applicazione e i processi aziendali cambiano molto più spesso. L'inclusione della logica di business nel database è dannosa per la sua longevità e il valore complessivo.
Avvertimento
Ho fatto la mia parte di dba-ing e ho letto le risposte su dba.se ma in tutta onestà di cosa stanno parlando sono problemi di integrità dei dati e problemi di prestazioni. Concordo pienamente sul fatto che le persone che toccano i dati aziendali debbano sapere cosa stanno facendo, siano essi dba o programmatori o analisti senior SAS con accesso in lettura / scrittura.
Ho anche notato che raccomandano ai programmatori di conoscere SQL. Sono d'accordo. È un linguaggio di programmazione per computer, quindi non vedo perché i programmatori di computer non vorrebbero conoscerlo.
Più tardi, dopo averci pensato
Penso che la via di mezzo sia creare un'API e far sì che l'API gestisca il flusso di dati avanti e indietro. Se non riesci a consentire alle app di connettersi direttamente ai tavoli, almeno puoi rendere il meccanismo di accesso in lingue moderne.