有这么个需求:一篇通知发出,指定哪些人可以看。
利用mysql的最简单的方案:
message信息表id 信息IDnamecontent
message_user 用户查看信息表idmessage_id 信息IDuser_id 用户ID
说说方法优点:实现简单
弊端:比如说一篇文章指定给一万个人,发个几千篇文章。那message_user表很快信息量就要爆了,很快就有性能瓶颈。
所以,请各位大侠给出更高效的方案,第三方存储不限。
有个设想,利用二进制每一个位表示一个用户ID,该位值为1表示有读权限,0则没权限:message信息表,增加一列binary(10000)二进制类型 假设为user_control
用户ID 1 可读,2不可读,3,可读,....1000可读
那么user_control对应的二进制数为
1... ..1010
不知道可行?
5 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
如果你要发送的一万个人是任意的,没有任何规律,那生成这一万个人的列表不可避免,不论是人工选择还是存储的时候,这个列表至少要生成一次。但如果是有规律的,就采用类似看帖权限的方法,每次用户请求通知列表的时候检查其是否符合要求,也可以分用户组,某些组内的用户可以查看某通知。
你的设想我觉得使用起来会有点麻烦,但效果和直接存储一个列表是一样的。如果一定要存储这个列表,不妨分类讨论,如果目标用户比较稀疏,就直接枚举;比较稠密就实用你的方法。当然这可能需要两个字段。
繁华开满天机
TA贡献1816条经验 获得超4个赞
这个基于你用户量是多少,如果只是10000的话可以用你那种方法,如果数据量比较大100万 1000万,还是只能使用第一种方法,就算数据量大,但是字段少,查询还是很快的,若数据再大就进行分表就行了
- 5 回答
- 0 关注
- 371 浏览
添加回答
举报
0/150
提交
取消