Memoria dati adatta per l'archiviazione di commenti in un sito di social media

3

Ho sviluppato un sito di blog, in cui le persone possono pubblicare un articolo o un blog e altri possono commentarlo. Il sito è codificato in Angular.js, ASP.NET e SQL viene utilizzato un archivio dati.

Per ogni articolo ci può essere "n" numero di commenti e chiunque sia registrato nel sito può inserire un numero qualsiasi di commenti per un articolo. Ogni commento può avere un numero qualsiasi di risposte e le risposte possono anche avere risposte (quindi è come un albero). Quindi ogni commento sarà come un albero e non ci dovrebbero essere restrizioni sul numero di livelli. E ogni articolo a sua volta avrà una collezione di tali alberi dei commenti.

Mi aspetto che l'applicazione sia estremamente pesante da leggere e moderatamente pesante. Quale può essere un buon archivio dati per la memorizzazione di tali dati?

    
posta Pratik Bhattacharya 23.10.2016 - 21:18
fonte

2 risposte

4

Stai ottimizzando prematuramente.

Quanti messaggi visualizzerai su una pagina? Cento? Mille? Un miliardo?

Se il numero di messaggi è eccessivo per Microsoft SQL Server, come ti aspetteresti che un browser mostri che molti messaggi all'utente e come ti aspetteresti che un utente sia realmente interessato a vedere centinaia di migliaia di messaggi su una singola pagina? Qual è il punto?

Per quanto riguarda la memorizzazione delle gerarchie, Microsoft SQL Server dispone della funzione dati gerarchici . SQL Server consente inoltre di archiviare XML, ma non ti consiglierei di utilizzarlo in questo caso specifico: i campi XML di SQL Server sono più utili per i dati gerarchici che non cambiano troppo nel tempo.

A proposito, parlando di strutture gerarchiche, non stai facendo un servizio ai tuoi utenti. Le strutture ad albero sono per gli sviluppatori; sono una visualizzazione dei dati estremamente scadente per cose come le discussioni e dovrebbero essere evitate in questo contesto. La struttura piatta di StackExchange, in opposizione alle vecchie bacheche orientate agli alberi, è un buon esempio di sostituzione di un approccio inutilizzabile con un metodo molto efficace.

¹ In realtà, immagino che Microsoft SQL Server riderebbe di te se gli dicessi che hai paura di caricare centinaia di migliaia di messaggi. Se la tua tabella ha indici appropriati e chiavi esterne, la query richiederà virtualmente millisecondi .

    
risposta data 23.10.2016 - 22:31
fonte
2

Che ne dici di memorizzare i tuoi commenti in una tabella come quella qui sotto.

| parent | top parent/aritcle | comment | who | when | etc |

Avere una colonna principale dovrebbe consentire di ottenere tutti i post rilevanti in funzione. Quindi puoi organizzarli su un albero, se necessario.

Come ha detto @ arseni-mourzenko: non è necessario ottimizzarlo troppo presto. Abbastanza buono è spesso abbastanza buono.

    
risposta data 23.10.2016 - 23:53
fonte

Leggi altre domande sui tag