我正在制作一个聊天应用程序,用于Android的手机缺口和后端的PHP。因为我第一次建立聊天应用程序,所以我对如何存储聊天消息感到困惑,
在数据库中存储消息
一个。每条消息一行(但这个db的大小会很大而且速度很慢)
B中。所有消息都有一行但我觉得这不好
将消息存储在文本文件中并追加,但我觉得它会很慢并且难以维护
以XML格式存储消息但是解析XML并存储复杂性的时间会产生问题
所以我最终没有解决方案,请建议我一些解决方案,我是新来的论坛所以请耐心等待我的愚蠢错误以及像fb这样的大鱼,什么应用程序存储他们的消息>
答案 0 :(得分:0)
在这三个选项中,我将使用您的第一个选项(第一部分),假设您的意思是关系数据库(如mysql)。如果保留所有内容,db的大小将会变大。然而。你需要保留一切吗?一种选择是定期修剪旧消息。
我首选的选项实际上是一个nosql文档数据库(类似于mongo),因为您可能不需要为任何复杂的关系数据建模。然后我会将每个“聊天”建模为文档。每次聊天都会有一系列消息。这样,只要有新消息进入,您就可以将其推送到相关聊天的消息数组。如果我预计聊天会持续很长时间或者生成大量数据,我还会考虑在数组中归档旧消息。
在我完成此操作后,如果速度仍然存在问题,我会考虑在内存缓存(memcached或apcu或两者)中添加一些内容。所有消息都将从缓存中发布和检索,因此任何流行的聊天记录都将保留在内存中,从而为您提供更好的速度提升。
沿着这条路走多远取决于你的需求。
答案 1 :(得分:0)
我发现第三个选项会变得更好。比其他所有应用程序都更好。将它作为xml本身存储在客户端的设备上。因此你可以释放你的数据库