对于您提到的数字,我认为所有替代方法都可以使用(请阅读:您将能够在合理的时间内完成分析)。我建议您使用可以显着加快结果的设计。
如前所述,一般而言,postgresql比mongo快,有时要快4倍以上。例如,请参见:http :
//www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-outperforms-mongodb-and-ushers-new-developer-reality
您说您对提高联接的性能感兴趣。我假设您对计算实体(例如,帖子,作者)之间的相似性感兴趣,因此您将主要将表与自身(例如,通过帖子或作者)一起加入并进行汇总。
此外,在初始加载数据库之后,数据库将是只读的,这使问题非常适合索引使用。您将不需要为索引更新付费,因为您没有索引更新,我想您会为索引留有更多的存储空间。
我将使用postgres并将数据存储在两个表中:
创建表帖子(post_id整数,url varchar(255),author_id整数);
-加载数据,然后创建索引。-这将导致更快的加载和更好的索引,在更改表后添加约束posts_pk主键(post_id); 在帖子上创建索引post_author(author_id);
创建表注释(comment_id整数,post_id整数,author_id整数,comment varchar(255));修改表注释添加约束comment_pk主键(comment_id); 在评论上创建索引comment_author(author_id); 在评论上创建索引comment_post(post_id);
然后,您可以基于查询(例如select m)中的注释来计算作者相似度。author_id为m_author_id,author_id为a_author_id,count(distinct m.post_id)作为来自m的注释的帖子,由m.author_id作为使用(post_id)组的注释加入。author_id
如果您有兴趣对nlp注释中的单词进行标记,请为此添加另一个表,但请记住,这将大大增加数据量。通常,最好不要在数据库中表示整个标记化。