Im la creazione di un back-end e-commerce dove in ogni mio prodotto ha i seguenti attributi contatoreImplementazione calibro, commentare, vista contatore per un prodotto
- product views
- product likes
- product comments count
le colonne del database corrente che ho per la tabella del database del prodotto è
- id
- likes_count
- views_count
- comments_count
- category_id
- category_parent_id
- category_sub_parent_id
- handling_charge
- shipping_charge
- meetup_address
- is_additional_fields
- status
- is_deleted
- created_at
- updated_at
Come si vede nella seguente blog Wanelo engineering blog implementare un contatore che possono spesso aggiornarsi una singola fila causerebbe blocco di riga su cui innodb se ottenere aggiornato frequentemente può causare situazioni dead lock in th e applicazione. Ma la soluzione per questo è praticamente spiegata nel blog di cui ho avuto un'idea. Ma cosa succede se ci sono più contatori associati a un singolo prodotto che possono essere aggiornati simultaneamente quando l'app cresce. Come dovrei progettare la tabella del database per i contatori. Devo devono mantenere tabelle separate cioè
likes counter table
- id - product_id - count
views counter table
- id - product_id - count
comments counter table
- id - product_id - count
Mantenendo tabella separata anche se un aggiornamento simultaneo viene per un prodotto (come + testa + vista) sarà aggiornato separatamente e riduce la possibilità di situazioni dead lock riga. Se è in una singola tabella e se gli aggiornamenti per tutti vengono contemporaneamente possono causare un problema.
Domanda: C'è un modo migliore in cui è possibile progettare i tavoli per un contatore? Qualche suggerimento per favore?
considerazione facendo tutti gli inserti invece di incrementare un valore. in questo modo è possibile segnalare (contare) quando si è verificato tale traffico. o forse raggruppare un valore incrementale per giorno/mese/ecc. – binnyb