在后端存储聊天应用的聊天消息

时间:2014-03-10 10:06:42

标签: php xml database chat backend

我正在制作一个聊天应用程序,用于Android的手机缺口和后端的PHP。因为我第一次建立聊天应用程序,所以我对如何存储聊天消息感到困惑,

  1. 在数据库中存储消息

    一个。每条消息一行(但这个db的大小会很大而且速度很慢)

    B中。所有消息都有一行但我觉得这不好

  2. 将消息存储在文本文件中并追加,但我觉得它会很慢并且难以维护

  3. 以XML格式存储消息但是解析XML并存储复杂性的时间会产生问题

  4. 所以我最终没有解决方案,请建议我一些解决方案,我是新来的论坛所以请耐心等待我的愚蠢错误以及像fb这样的大鱼,什么应用程序存储他们的消息>

2 个答案:

答案 0 :(得分:0)

在这三个选项中,我将使用您的第一个选项(第一部分),假设您的意思是关系数据库(如mysql)。如果保留所有内容,db的大小将会变大。然而。你需要保留一切吗?一种选择是定期修剪旧消息。

我首选的选项实际上是一个nosql文档数据库(类似于mongo),因为您可能不需要为任何复杂的关系数据建模。然后我会将每个“聊天”建模为文档。每次聊天都会有一系列消息。这样,只要有新消息进入,您就可以将其推送到相关聊天的消息数组。如果我预计聊天会持续很长时间或者生成大量数据,我还会考虑在数组中归档旧消息。

在我完成此操作后,如果速度仍然存在问题,我会考虑在内存缓存(memcached或apcu或两者)中添加一些内容。所有消息都将从缓存中发布和检索,因此任何流行的聊天记录都将保留在内存中,从而为您提供更好的速度提升。

沿着这条路走多远取决于你的需求。

答案 1 :(得分:0)

我发现第三个选项会变得更好。比其他所有应用程序都更好。将它作为xml本身存储在客户端的设备上。因此你可以释放你的数据库