Para os números mencionados, acho que todas as alternativas devem funcionar (leia-se: você poderá concluir sua análise em tempo razoável). Eu recomendo um design que possa levar a resultados significativamente mais rápidos.
Como respondido anteriormente, em geral o postgresql é mais rápido que o mongo, algumas vezes mais que 4 vezes mais rápido. Veja, por exemplo:
http://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-outperforms-mongodb-and-ushers-new-developer-reality
Você disse que está interessado em melhorar o desempenho nas junções. Suponho que você esteja interessado em calcular semelhanças entre as entidades (por exemplo, post, autor), para que você se junte principalmente à tabela com ele próprio (por exemplo, por post ou autor) e agregado.
Acrescente a isso o fato de que, após o carregamento inicial, seu banco de dados será somente leitura, o que torna o problema muito adequado ao uso do índice. Você não pagará pela atualização do índice, uma vez que não terá nenhum, e eu acho que você tem armazenamento extra para o índice.
Eu usaria o postgres e armazenaria os dados em duas tabelas:
criar postagens de tabela (inteiro post_id, url varchar (255), author_id inteiro);
- Carregue dados e crie os índices. - Isso levará a uma carga mais rápida e a melhores índices. Altere as postagens da tabela e adicione a chave primária posts_pk (post_id); criar índice post_author nas postagens (author_id);
criar comentários de tabela (comment_id inteiro, post_id inteiro, author_id inteiro, comment varchar (255)); alterar os comentários da tabela adicionar restrição chave primária comments_pk (comment_id); criar índice comment_author nos comentários (author_id); criar índice comment_post nos comentários (post_id);
Em seguida, você pode calcular a similaridade do autor com base nos comentários em consultas como selecione m. author_id como m_author_id, a. author_id como a_author_id, conte (m.post_id distinto) como postagens de comentários, enquanto m junta comentários como um grupo usando (post_id) por m.author_id, a. author_id
Caso você esteja interessado em tokenizar as palavras no comentário para nlp, adicione outra tabela para isso, mas lembre-se de que isso aumentará significativamente o volume de seus dados. Geralmente, é melhor não representar toda a tokenização no banco de dados.