我想用mongodb加nodejs做一个聊天系统 他有添加好友和给好友分组的功能 不知道这样的mongodb要怎么设计比较好
欢迎选择我的课程,让我们一起见证您的进步~~
{ _id:, nick:'', account:'', password:'', friends:[ {grounp:'分组1',list:[用户ID1,用户ID2]}, {grounp:'分组2',list:[用户ID3,用户ID4]} ] }
人家明明问的是mongo,楼上的各位却回答redis,redis有redis的用处,它用在一维线性数据上很好使,但是像这种类似于关系型的数据,还是得用mongo。
数据库方面:mongodb还是不够快,毕竟考虑到持久化。推荐你加一层缓存,采用redis的有序集合会是不错的选择。 程序上,通过websocket实现,这样web/ iOS/ Android都可以通讯,客户端和服务端建立连接之后,客户端把消息发给服务端并存到redis,再通过服务器发给在线的目标好友。 如果对方离线,就缓存在redis,对方一上线就检索出来未读的消息,并发给对方
redis做主扛,pgsql做备份就够了。mongodb做这个。。。。。还是不太合适这个场景吧。
任何持久化的数据库都不会在这个需求上表现的让你满意, 你需要redis来缓冲, 甚至也可以让redis来做持久化(具体方案可以网上搜索一下, 我记得陌陌的技术人员做过分享) 至于缓冲后mongodb怎么存数据, 那就轻松很多了, 你基本只用上考虑如何存数据比较合理就可以了
人家明明问的是mongo,楼上的各位却回答redis,redis有redis的用处,它用在一维线性数据上很好使,但是像这种类似于关系型的数据,还是得用mongo。
数据库方面:mongodb还是不够快,毕竟考虑到持久化。推荐你加一层缓存,采用redis的有序集合会是不错的选择。
程序上,通过websocket实现,这样web/ iOS/ Android都可以通讯,客户端和服务端建立连接之后,客户端把消息发给服务端并存到redis,再通过服务器发给在线的目标好友。
如果对方离线,就缓存在redis,对方一上线就检索出来未读的消息,并发给对方
redis做主扛,pgsql做备份就够了。mongodb做这个。。。。。还是不太合适这个场景吧。
任何持久化的数据库都不会在这个需求上表现的让你满意, 你需要redis来缓冲, 甚至也可以让redis来做持久化(具体方案可以网上搜索一下, 我记得陌陌的技术人员做过分享)
至于缓冲后mongodb怎么存数据, 那就轻松很多了, 你基本只用上考虑如何存数据比较合理就可以了