Для чисел, которые вы упоминаете, я думаю, что все альтернативы должны работать (читай: вы сможете закончить анализ в разумные сроки). Я рекомендую дизайн, который может привести к значительно более быстрым результатам.
Как уже было сказано, postgresql работает быстрее, чем mongo, в несколько раз быстрее, чем в 4 раза. См. Например:
http://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-outperforms-mongodb-and-ushers-new-developer-reality
Вы сказали, что заинтересованы в улучшении производительности в соединениях. Я предполагаю, что вы заинтересованы в вычислении сходства между сущностями (например, пост, автор), поэтому вы будете в основном присоединяться к таблице самостоятельно (например, по посту или автору) и агрегировать.
Добавьте к этому тот факт, что после начальной загрузки ваша база данных будет доступна только для чтения, что делает проблему очень подходящей для использования индекса. Вы не будете платить за обновление индекса, так как у вас его не будет, и я думаю, у вас есть дополнительное место для индекса.
Я хотел бы использовать postgres и хранить данные в двух таблицах:
создавать сообщения в таблице (post_id integer, url varchar (255), author_id integer);
- Загрузить данные, а затем создать индексы. - Это приведет к более быстрой загрузке и улучшению показателей, изменению таблицы записей, добавлению ограничения posts_pk первичный ключ (post_id); создать индекс post_author для сообщений (author_id);
создавать комментарии к таблицам (целое число comment_id, целое число post_id, целое число author_id, комментарий varchar (255)); изменить таблицу комментариев добавить ограничение комментарии_pk первичный ключ (comment_id); создать индекс comment_author для комментариев (author_id); создать индекс comment_post для комментариев (post_id);
Затем вы можете вычислить сходство авторов на основе комментариев в запросах, таких как select m. author_id as m_author_id, a. author_id как a_author_id, считать (отличный m.post_id) как сообщения из комментариев, так как m присоединяются к комментариям как группа использования (post_id) от m.author_id, a. author_id
В случае, если вы заинтересованы в токенизации слов в комментарии для nlp, добавьте еще одну таблицу для этого, но помните, что это значительно увеличит объем ваших данных. Обычно лучше не представлять всю токенизацию в базе данных.