• 聊天应用后台好友数据存储问题


    做一个聊天应用练习, 碰到一个问题, 如何保存用户好友列表?
    如果用mysql关系数据库做后端数据库, 那么面临两个选择:

    1. 使用一个字符串, 保存所有好友信息:

    查询时: 将字符串读出(查询快), 做一下类型转换(CPU消耗), 增加、修改或者删除某个好友的时候, 都要执行update该字段的操作

    1. 使用外键, 在数据库中创建一个好友table, 保存所有好友信息:

    id friendId friendName
    Jane f_id1 f_name1
    Tom f_id2 f_name2
    Jerry f_id3 f_name3
    Judy f_id4 f_name4

    查询时: 通过外键, 查询到相应的所有好友(查询相对较慢), 但是增加,修改,删除的时候比较方便, 并且还有一个更大的好处, 就是可以全局管理到所有好友信息, 可以给用户更多的推荐, QQ上共同好友/好友推荐就是通过数据挖掘搞出来的; 微信我想比较像第二种方法, 就是替用户保存一个电话本, 上面的内容在微信服务器上是没有继续深度挖掘的. 或者有保存, 但是没有在前端表现出来.

    总结

    1. 使用字符串保存一个friends列表, 有查询速度快的优势, 不用在另一个表中select一下, 这对于经常登陆的实际场景来说是很有用的、
    2. 另外维护一个table, 带来了性能上的丢失, 但是能够获得更多关于所有用户的信息, 比如关系网, 共同好友, 等等, 这好想属于数据挖掘的范畴, 对于基本功能不是很影响. 所以可以先采用第一种字符串保存方法, 并在系统空闲的时候, 用另一个java程序挖掘好友信息, 然后在处理计算满足功能, 向用户推出相应的信息.
  • 相关阅读:
    虚拟机LUN扩大后,重新分区
    rm: cannot remove `/home/cn0000/log/formlog.20140417': Read-only file system
    sybase 备份和恢复
    全表扫描计算成本
    标量子查询 子查询执行次数计算公式
    left join 关联条件位置
    动态SQL使用绑定变量
    如何在SQLServer中处理每天四亿三千万记录的
    移动端UI一致性解决方案
    工业互联网中MES系统的重要性
  • 原文地址:https://www.cnblogs.com/lyzz1314/p/13884257.html
Copyright © 2020-2023  润新知