Elimina l'entità genitore insieme al figlio

1

Scenario:

  • Ho un semplice post di testo. Quale può ricevere comments e likes . Tutte le entità hanno le proprie tabelle.
  • Mi piace e commento generano notifications .

Base Relazione padre-figlio nel database (RDBMS):

Approccio attuale:

Quando devo eliminare il post, elimino anche i commenti, i mi piace e le loro notifiche.

A causa:

  • quando recupero solo le notifiche Non devo controllare i commenti, i like o lo stato per filtrare le notifiche delle entità cancellate.
  • quando accedo a un singolo commento (per modificare o eliminare) , non devo controllare lo stato del post.

Questo approccio mi aiuta a velocizzare i dati GET, ma rallenta il processo di cancellazione. E poiché l'uso della transazione, blocca la tabella quando c'è troppa attività sul post.

Domanda:

Devo attenermi a ciò che sto facendo attualmente? o dovrei provare a eliminare velocemente, ed eseguire controlli sui dati GET? o qualsiasi altro approccio?

PS: in realtà non sto eliminando. Sto cancellando lentamente, significa aggiornare una colonna chiamata status a DELETED con tempo cancellato. Per mantenerlo per alcuni giorni, elimina definitivamente utilizzando il lavoro.

    
posta Shaharyar 10.04.2017 - 07:59
fonte

1 risposta

4

Se stai eliminando solo il post, non farei altro che contrassegnare il post come eliminato.

Non è necessario contrassegnare altri contenuti come "cancellati", poiché è associato a un post eliminato. Mantieni le cose il più semplici possibile.

E perché preoccuparsi di cancellare le altre cose (anche dopo qualche giorno)? Il contenuto eliminato potrebbe essere utile in futuro:

  • Se qualcosa è stato eliminato per errore, puoi ripristinarlo.
  • Potresti voler analizzare l'uso passato del tuo sito web.
  • Se viene rilevato un errore nel tuo sito, l'analisi dei dati precedenti potrebbe aiutarti a caratterizzarlo.

Se avevi preoccupazioni legate alla dimensione dei dati in futuro, allora potresti eseguire un lavoro per eliminare gli elementi (o archiviarli in una posizione separata). Ma non lo farei finché la dimensione non diventa un problema.

Aggiornamento: i problemi di prestazioni che stavi riscontrando sono stati causati dall'uso inappropriato dei cursori. Se si utilizzano semplicemente le istruzioni di aggiornamento su ogni tabella per contrassegnare il contenuto come eliminato, il design originale dovrebbe funzionare correttamente. Potrebbe essere più semplice adattare semplicemente la procedura memorizzata che elimina un post in modo che sia più efficiente, piuttosto che modificare i dati e il design.

    
risposta data 10.04.2017 - 11:13
fonte

Leggi altre domande sui tag