Ho appena lavorato a un nuovo progetto e sto facendo le cose nello stesso modo in cui ho lavorato per anni. Tuttavia, per la prima volta, penso costantemente a scalability and performance
sia di application code
sia di database
.
Quindi, in passato, sono stato più che felice di insert
una nuova riga, quindi prendi last_insert_id
e poi traduco questo in object
chiamando il metodo getObjectById(id)
dall'interno del framework di persistenza in uso. Trovo che ciò sia una buona pratica perché farà in modo che tu stia restituendo esattamente ciò che è archiviato nel database e qualsiasi errore verrà rilevato lì e quindi, piuttosto che la prossima volta che chiedi l'oggetto.
L'altro modo, dato che hai tutti i dati necessari per costruire l'oggetto di fronte a te, è semplicemente creare il nuovo oggetto dai dati forniti e semplicemente impostare objectId
una volta che l'istruzione è stata verificata come completa. Mi sono sempre sentito come se ci fossero ancora alcune incognite che possono accadere e se ci sono triggers
nel database che trasforma i dati in qualche modo, allora si avrà uno stato di non corrispondenza che è negativo.
Tuttavia, pensando esclusivamente alle prestazioni, sto ovviamente prendendo un colpo eseguendo più queries
per creare l'oggetto ( insert
più select
) che aggiunge overhead
e vorrei rendere l'applicazione sia come fast
e secure
il più possibile.
La mia domanda è: quale sarebbe l'approccio più appropriato per performance
, scalability
, security
e poi per il trade-off tra il 3?