Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案
原文转载自「刘悦的技术博客」https://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
}
]
}
相关文章