分类与标签系统设计初体验-起

需求

假设我这里有一堆freebuf或者看雪上的cve漏洞分析的文章,文章数目已经超过1w条,这时候打算按照攻击方法或者受害者对象来分门别类,建立一棵有条理的知识树。

需求分解

数据库:存储1对1或者1对多的标签关系存储,(可以用关系型数据库或者nosql来实现);
操作:能够方便的增删改查;
操作响应速度:不要太慢,(需要使用索引或者cache加速复杂查询的速度);

3种思路

数据库设计

关系型数据库实现方式

1. 标签列表直接保存文章条目中。
思路代码:

post_idtitlecontenttag_list
1001分身欲练此功,必先..火影,鸣人,禁术

优点: 实现简单,容易管理
缺点:删除一个标签随文章属增长而变慢

2. 使用3张表(文章表,文章与标签关系表,标签表)实现一对多的对应关系。
思路代码:
文章表

post_idtitlecontent
1001分身欲练此功,必先..

关系表

post_idtag_id
10013001
10013002
10013003

标签表

tag_idname
3001火影
3002鸣人
3003禁术

优点: 实现简单,容易管理,tag内容不会出现冗余
缺点: 多种类别的标签处于同一维度,分类混乱
改进: 标签表可以插入一列,记作tag type,就能实现标签的分类了。但是类别本身的从属关系还是无法表示。比如([日本:[书名:[火影],人物:[鸣人]]], 日本系列的该如何表示)

3. 使用nosql数据库,标签随便加,看着跟第一中思路一样会有冗余,但是增删改会很方便。

性能优化

先提一个主流的思路,建立一级到两级索引表,然后利用redis的高性能key-value查询做cache。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值