我正在为 Android 制作一个聊天应用程序,后端有电话间隙和 PHP。因为这是我第一次构建聊天应用程序,所以我对如何存储聊天消息有点困惑,
A. 每条消息一行(但是这种大小的 db 会变大并且速度会变慢)
B. 一行用于所有消息,但我认为这不好
所以我最终没有解决方案,请给我一些解决方案,我是论坛的新手,所以请耐心对待我的愚蠢错误以及像 fb 这样的大鱼,什么是应用程序存储他们的消息>
最佳答案
在这三个选项中,假设您的意思是关系数据库(如 mysql),我会选择您的第一个选项(a 部分)。如果您保留所有内容,db 的大小会变大。然而。你需要保留一切吗?一种选择是定期修剪旧消息。
我的首选选项实际上是一个 nosql 文档数据库(类似于 mongo),因为您可能不需要对任何复杂的关系数据进行建模。然后我会将每个“聊天”建模为一个文档。每个聊天都会有一系列消息。这样,无论何时收到新消息,您都可以将其推送到相关聊天的消息数组。如果我预计聊天会持续很长时间或生成大量数据,我也会考虑在数组中存档旧消息。
完成此操作后,如果速度仍然是一个问题,我会考虑添加一些内存缓存(memcached 或 apcu 或两者)。所有消息都将发布并从缓存中检索,因此任何流行的聊天都将保留在内存中,为您提供不错的速度提升。
您在这条道路上走多远取决于您的需要。
关于php - 在后端存储聊天应用程序的聊天消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22297146/