La scalabilità non è l'unico problema nel fare questa scelta (e so di database di successo con migliaia di miliardi di record, quindi i database sono più scalabili di quanto si pensi). Né è probabilmente il più importante.
Per prima cosa devi controllare il significato dei dati. Qualcosa come Facebook è legato intrinsecamente alla sua applicazione e quindi mettere la logica non è rischioso come un'applicazione aziendale che deve ottenere i suoi dati da importazioni, lavori di database, inserimento di dati da diverse applicazioni tra cui alcune che forse l'azienda ha nessun controllo. Quindi il rischio per l'integrità dei dati è la prima e più importante cosa da considerare quando si effettua questa scelta.
Inoltre, come verranno utilizzati i dati e in quale ambiente è critico. Come vengono controllate le informazioni? Ci sono requisiti normativi? Come viene eseguita la segnalazione? Devo essere in grado di riutilizzare la logica in un sistema di reporting diverso così come nell'applicazione utente? In tal caso, la logica deve riposare all'esterno dell'applicazione. Devo fare le esportazioni dei dati e come è influenzato dalla logica nell'applicazione. Ciò significa che le persone che scrivono il report e il codice di esportazione non avranno la possibilità di vedere quale sia la logica perché non hanno accesso al codice dell'applicazione? Questo può essere un grosso problema.
Un'altra considerazione è la scalabilità che include le prestazioni. Di quanta scalabilità hai bisogno? Pochissime cose hanno bisogno della scalabilità di un Facebook. Di quante prestazioni hai bisogno? Progettare per la scalabilità quando non ne avrai mai bisogno porta a risultati non ottimali. I metodi utilizzati per inserire la logica nell'applicazione avranno un impatto negativo sulle prestazioni del database (molti ORM, ad esempio, scrivono codice di database terribile).
Poi c'è l'argomento su meno tempo per lo sviluppo che è ridicolo. Se sai cosa stai facendo, inserire la logica nel database non richiede più tempo di metterlo nell'applicazione. È solo che la maggior parte degli sviluppatori di applicazioni non sono specialisti SQL. Tuttavia, il risparmio del tempo di sviluppo per migliorare SQL è davvero un vantaggio? No, non è perché questa scelta ha quasi sempre un costo di prestazioni sul database e al costo dell'integrità dei dati.
Quello che sto cercando di dire è che non esiste una taglia adatta a tutti. Ci sono alcune applicazioni in cui la logica nell'applicazione ha senso e altre no, ma pensare che ci siano solo uno o due fattori critici da considerare quando si effettua la scelta è generalmente un errore.