Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案

2020-05-22 00:00:00 数据库 关系 标签 文章 每篇

原文转载自「刘悦的技术博客」v3u.cn/a_id_141

书接上回,之前有一篇文章提到了标签云系统的构建:Python3.7+jieba(结巴分词)配合Wordcloud2.js来构造网站标签云(关键词集合),但是这篇只是浅显的说明了一下如何进行切词以及前端如何使用wordcloud2.js进行前端展示,本次主要讨论下标签分词切出来之后,如何进行存储。

假设我们目前文章-标签体系的需求是这样:

每篇文章都具有的标题、描述以及 URL。

每篇文章都具有一个或多个标签。

每篇文章都具有作者的名称,以及喜欢

每篇文章都有用户的评论,用户名、消息、日期时间以及评论的喜欢度。

每篇文章都可以有 0 个或多个评论。

那么如果使用关系型数据库来设计,比较简单的设计方案可以是这样:



可以注意到,标签和文章的对应关系还是简单的一对多,如果做成比较灵活的多对多还需要增加一张关系表,这样就是四张表了。

如果使用nosql比如Mongodb来说,只需要一张表(聚合)就可以实现:

{  
   _id: POST_ID  
   title: TITLE_OF_POST,   
   description: POST_DESCRIPTION,  
   by: POST_BY,  
   url: URL_OF_POST,  
   tags: [TAG1, TAG2, TAG3],  
   likes: TOTAL_LIKES,   
   comments: [    
      {  
         user:'COMMENT_BY',  
         message: TEXT,  
         dateCreated: DATE_TIME,  
         like: LIKES   
      },  
      {  
         user:'COMMENT_BY',  
         message: TEXT,  
         dateCreated: DATE_TIME,  
         like: LIKES  
      }  
   ]  
}

相关文章