Para los números que menciona, creo que todas las alternativas deberían funcionar (lea: podrá finalizar su análisis en un tiempo razonable). Recomiendo un diseño que pueda conducir a resultados significativamente más rápidos.
Como se respondió anteriormente, en general postgresql es más rápido que mongo, algunas veces más de 4 veces más rápido. Ver por ejemplo:
http://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-outperforms-mongodb-and-ushers-new-developer-reality
Dijiste que estás interesado en mejorar el rendimiento en las uniones. Supongo que está interesado en calcular las similitudes entre las entidades (por ejemplo, publicación, autor), por lo que principalmente se unirá a la tabla consigo mismo (por ejemplo, por publicación o autor) y agregado.
Agregue a eso el hecho de que después de la carga inicial, su base de datos será de solo lectura, lo que hace que el problema sea muy adecuado para indexar el uso. No pagará por la actualización del índice ya que no tendrá ninguna y supongo que tiene el almacenamiento adicional para el índice.
Hubiera utilizado postgres y almacenar los datos en dos tablas:
crear publicaciones de tabla (post_id integer, url varchar (255), author_id integer);
- Cargar datos y luego crear los índices. - Eso conducirá a una carga más rápida y mejores índices alterar las publicaciones de la tabla agregar restricción posts_pk clave principal (post_id); crear índice post_author en publicaciones (author_id);
crear comentarios de tabla (comentario_id entero, post_id entero, author_id entero, comentario varchar (255)); alterar los comentarios de la tabla agregar restricción llave primaria comments_pk (comment_id); crear índice comment_author en los comentarios (author_id); crear índice comment_post en comentarios (post_id);
Luego, puede calcular la similitud de autor basándose en comentarios en consultas como select m. author_id como m_author_id, a. author_id como a_author_id, cuenta (distinto m.post_id) como publicaciones de comentarios a medida que se unen a los comentarios como un grupo que usa (post_id) por m.author_id, a. author_id
En caso de que esté interesado en tokenizar las palabras en el comentario para nlp, agregue otra tabla para eso, pero recuerde que aumentará significativamente el volumen de sus datos. Por lo general, es mejor no representar la tokenización completa en la base de datos.