Ho sempre più utilizzato la memorizzazione dei dati immutabili per la mia app Web, a causa di alcuni vantaggi che ha (scritture più semplici, possibilità di visualizzare cronologia / attività).
Lo faccio usando le dabatase di MySQL, semplicemente facendo solo inserti; nessun aggiornamento / eliminazione; e con l'id (chiave primaria) su ogni riga è un tipo autoincrementante di 'ID transazione' e quindi con una colonna 'ID entità' con un nome appropriato.
Il problema che sto riscontrando è una query di MySQL massicciamente dettagliata per determinati dati ultimi desiderati. Con il tuo database MySQL mutevole standard, non devi preoccuparti di ottenere l'ultima riga per ogni tabella (perché è sempre l'ultima in quanto usano solo gli aggiornamenti). Con dati immutabili sto facendo questa enorme query piena di auto-join, quindi restituisce solo il sottoinsieme di dati che ha l'id più alto.
Ad esempio:
select ...
...
inner join (
/* latest */
select y.* from (
select id,forum_id,optional, max(id) as max_id
from forum_opt
group by forum_id
) as x
inner join forum_opt as y
on y.id = x.max_id
) as forumopt on ...
Mentre prima sarebbe solo:
select ...
...
inner join forum_opt on ...
Quindi c'è un modo più pulito per implementarlo? C'è qualcosa che non sto capendo riguardo a questo concetto di design del software o qualcosa che sto sbagliando?