Executando verificação de segurança...
2

Como o TabNews Armazena as Postagens?

Alguém tem algum norte de como o tabNews armazena suas postagens e indexa tudo pro usuário? Não tenho muita experiência com esse tipo de projeto, mas inicialmente me lembra bastante o reddit.

Fiquei teorizando se eles armazenavam tudo em arquivos estilo JSON - principalmente pq o dchamps falou que a plataforma foi desenvolvida encima de uma API Publica -

Algo nesse estilo:

  1. O usuário escreve todo o seu POST

  2. Ao enviar, o site salva diretamente na API com as informações do post: conteudo,nome usuario, etc.

  3. A partir desse ponto todas as outras páginas apenas trabalham com esses dados da API: Mais recentes, Mais relevantes. Ou até mesmo a página da postagem em si

Não sei se faz muito sentido. Mas essa foi minha teoria hshahahsa :

Carregando publicação patrocinada...
2

Tentando simplificar ao máximo, ja que disse não ter muito conhecimento com esse tipo de projeto...

Salva em um banco de dados (Postgres), em uma tabela content. Tanto a publicação quanto o comentario, em registros separados.

Podemos então chamar os dois de content.

Quando você faz um post novo voce cria um content e cada content tem um id.

Quando voce comenta em alguma postagem, voce também está criando um content, porém esse tem uma informação a mais, o parent_id, que se refere a outro content.

Então na pagina inicial é listada todos os content que não tem um parent_id, ja que contents sem um "pai" são independentes, então a lógica considera que é conteudo principal de uma árvore de conteúdos. E pra trazer o resto da árvore, dentro da pagina do post é listado todos os content em que o parent_id seja igual ao id da postagem que voce entrou.

O JSON é gerado apartir do resultado dessa consulta do banco.

Curiosidade:

Voce pode acessar o JSON colocando /api/v1/contents/ na frente da url do site.

Ex.
Seu post: https://www.tabnews.com.br/api/v1/contents/gr4y/como-o-tabnews-armazena-as-postagens

Os comentários do seu post: https://www.tabnews.com.br/api/v1/contents/gr4y/como-o-tabnews-armazena-as-postagens/children

2

Não cheguei a ver, mas imagino que seja estutura JSON mesmo. Também imagino que tenha a propriedade "comments", que seria um array de objetos, cada objeto seria o comentário de um usuário, onde dentro desse objeto novamente teria o "comments" que seria a resposta de um comentário.

1

Eu não sei se ele chegou a alterar isso, mas ele fez um video no shorts do YT uma vez dizendo que a referência entre os comentários estava no filho, todas as postagens possuem um campo pra guardar as postagens pai e as postagens que não são comentários, deixam esse campo em branco

Assim daria pra manter todas as publicações uma referência própria, o problema acaba sendo pra puxar os comentários que acaba tendo de ser uma busca recursiva, o que acaba gastando muito recurso com requisições muito pesadas

O TabNews inclusive tava com problema de recurso, não sei se foi exatamente com relação a isso e nem sei muito bem como foi resolvido (ainda sou novato), mas uma solução temporária foi remover a contagem de comentários na lista de postagens (o que leva a imaginar que essa recursividade realmente estava dando problemas)

1

Armazenar dados em JSON não é muito utilizado na maioria das vezes. Devido ao fato de banco de dados serem mais eficientes em guardar informação, e mais simples realizar uma consulta em banco de dados, e com os dados dessa consulta gerar um JSON e retornar para onde precisa.
Assim vc consegue uma manipulação melhor de dados.
Imaginem o tamanho do json de uma aplicação como essa.
é mais facil cada aplicação ter o seu registro proprio, e após isso is buscando na base de dados somente os dados que precisam ser retornados, isso inclui outros dados de outras postagens

1

Entendi. Um cara comentou aqui dizendo como ele acha que funciona. Tenho que arranjar um tempo para dar uma olhada no código fonte depois. Fiquei realmente curioso e quero contribuir com esse projeto.

1