nosql用户标签数据结构设计

engourdi 2014-06-24 03:44:07
我想实现一个用户管理与标签的功能,标签有简单的名称,分类与权重。
功能包括:1、给用户打不同的标签。2、查询用户拥有的标签。3、通过标签给用户打分。
在文档型数据库中这个用户与标签的数据结构如何设计好一点啊,求大牛指教!
...全文
488 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinlidong99 2014-07-01
  • 打赏
  • 举报
回复
C.文档型数据库设计模式1 { "name": "A", "children": [ {"name": "B", "children": [{"name": "D"}]}, {"name": "C"} ] } 将整个树结构存成一个文档,文档结构既树型结构,简明易懂。 优点:简明易懂 缺点:文档会越来越大,对所有结点的修改都集中到这一个文档中,并发操作受限 D.文档型数据库设计模式2 {"_id": "A", "children": ["B", "C"]} {"_id": "B", "children": ["D"]} {"_id": "C"} {"_id": "D"} 将每个结点的所有子结点存起来 优点:结构简单,查找子结点方便 缺点:查找父结点会比较麻烦 E.文档型数据库设计模式3 { "leaf": "A", "children": [ {"leaf": "B", "children": [{"leaf": "D"}] }, {"leaf": "C"} ] } {"_id": "A", ...} {"_id": "B", ...} {"_id": "C", ...} {"_id": "D", ...} 充分利用文档型存储schema-less的优点,先利用上面C方案存存储一个大的树形文档,再将每一个结点的其他信息单独存储。 优点:操作方便,结构上的操作可以直接操作大的树形文档,数据上的操作也只需要操作单条数据 缺点:对所有结点的修改都集中到这一个文档中,并发操作受限 发个完整的
yinlidong99 2014-07-01
  • 打赏
  • 举报
回复
文档型数据库设计模式3 { "leaf": "A", "children": [ {"leaf": "B", "children": [{"leaf": "D"}] }, {"leaf": "C"} ] } {"_id": "A", ...} {"_id": "B", ...} {"_id": "C", ...} {"_id": "D", ...} 充分利用文档型存储schema-less的优点,先利用上面C方案存存储一个大的树形文档,再将每一个结点的其他信息单独存储。 优点:操作方便,结构上的操作可以直接操作大的树形文档,数据上的操作也只需要操作单条数据 缺点:对所有结点的修改都集中到这一个文档中,并发操作受限 今天看见的 ,跟你分享一下,希望对你有 帮助
yinlidong99 2014-06-25
  • 打赏
  • 举报
回复
你是自己做小例子呢?还是项目就是这样的?
engourdi 2014-06-25
  • 打赏
  • 举报
回复
引用 5 楼 yinlidong99 的回复:
你是自己做小例子呢?还是项目就是这样的?
想使用mongo来做,不过在弄的时候发现,在这里的查询是个很大的问题,但是关系数据库在存储所用用户的这些属性的时候又没那么灵活,擦,头大啊
engourdi 2014-06-24
  • 打赏
  • 举报
回复
引用 3 楼 yinlidong99 的回复:
关系型数据库干这件事比较简单。呵呵。你的两种方式 都是把标签的属性也存到了相应的用户身上,这样 如果标签的权重变了。更新起来岂不是很麻烦。所有涉及到的用户都要更新。
对啊,你有什么使用上更好的建议没有?
yinlidong99 2014-06-24
  • 打赏
  • 举报
回复
关系型数据库干这件事比较简单。呵呵。你的两种方式 都是把标签的属性也存到了相应的用户身上,这样 如果标签的权重变了。更新起来岂不是很麻烦。所有涉及到的用户都要更新。
engourdi 2014-06-24
  • 打赏
  • 举报
回复
user包括自己的名称 性别 标签等。 tag包括编号 名称 权重 {"name","80后","num":"221012100001985342","weight":50,"type":1} 一种方式是,user表:{"name":"xxx","tags":[{"221012100001985342": "80后","weight": 50},{...}],"sex":"男"} 或者{"name":"xxx",tags:[{"80后":50}...],"sex":"男"} 但是感觉都不好在查询的时候对用户之前的标签做权重的简单计算。
engourdi 2014-06-24
  • 打赏
  • 举报
回复
查询时不好关联,返回结果时不好将编号对应成名称返回给请求者,求剖析!

1,798

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧