【问题标题】:storing chat messages for chat app at backend在后端存储聊天应用程序的聊天消息
【发布时间】:2014-03-10 10:06:42
【问题描述】:

我正在为 android 制作一个聊天应用程序,后端有电话间隙和 PHP。由于我是第一次构建聊天应用程序,所以我对如何存储聊天消息有点困惑,

  1. 在数据库中存储消息

    A.每条消息一行(但这种大小的数据库会很大并且速度很慢)

    B.一行所有消息,但我认为这不好

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

  3. 将消息存储在 XML 中,但解析 XML 和存储复杂性的时间会产生问题

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

【问题讨论】:

标签: php xml database chat backend


【解决方案1】:

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

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

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

您在这条道路上走多远取决于您的需求。

【讨论】:

  • 你可能对什么应用程序很熟悉,如果我的应用程序更像它,那么你的建议是什么(它还包含点对点聊天和群聊),是的,我需要旧聊天,但可能成为用户不会经常使用它们
  • 嗯,我首先想到的是使用 mongodb 的类似功能,每个“聊天”(即一个组或 1 个点对点)都有一个文档。聊天文档将包含一系列所说的内容。收到的每条新消息都会推送到该数组。
  • 你能提供我的链接,那里有关于你的解决方案的一些详细信息吗?如果你能,那就太好了
【解决方案2】:

我发现第三个选项会更好。它会比所有其他应用程序更好。尝试在客户端的设备上存储为 xml 本身。这样你就可以释放你的数据库

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多