php - 存储聊天消息和文件的最佳方式

标签 php doctrine chat storage message

我想知道您如何看待将聊天消息存储在数据库中?

我需要能够将其他内容(如文件或联系人)绑定(bind)到它们,使用数据库是我目前看到的最佳方式。

文件也有同样的问题,因为他们可以绑定(bind)到聊天消息,我也必须将它们存储在数据库中..

有了成千上万的消息和文件,我想知道性能下降和数据库大小。

考虑到我将 PHP 与 MySQL/Doctrine 结合使用,您怎么看?

最佳答案

我认为只要您正确构建数据库,就可以在数据库中存储任何文本信息(姓名、消息历史记录等)。我曾在大型网站(每天访问量达数千公里)和电信公司工作,这些公司将有关其用户的信息(包括他们的流量统计信息)存储在已增长到数百 GB 的数据库中,并且应用程序运行良好。

但是对于像图像和文件这样的二进制信息,最好将它们存储在文件系统上并只将它们的路径存储在数据库中,因为从磁盘读取它们比将数据库进程与读取相关联会更便宜一个数兆字节的文件。

正如我所说,做几件事很重要:

  1. 正确构建您的信息 - 正确设计您的数据库非常重要,将其正确划分为表格和表格字段并牢记您的性能目标,因为这将构成您的应用程序和查询的基础。如果弄错了,您的查询就会变慢。

  2. 对与每​​个表相关的表引擎做出正确的决定。这是重要的一步,因为它将极大地影响查询的性能。例如,MyISAM 在更新表时会阻止对表的读取访问。对于社交网络或新闻网站等 Web 应用程序来说,这将是一个问题,因为在许多情况下,您的用户基本上必须等待信息更新完成才能看到生成的页面。

  3. 创建适当的索引 - 对于性能非常重要,尤其是对于具有快速增长的大型数据库的应用程序。

  4. 随着数据的增长衡量查询的性能并寻找改进方法 - 您总会发现必须消除的瓶颈,这是一个持续不断的过程。每个流行的 Web 应用程序都必须这样做。

关于php - 存储聊天消息和文件的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13230708/

相关文章:

php - Eloquent(无 Laravel)缓存实现

php - 脚本执行时如何获取部分输出?

entity-framework - 不是有效的实体或映射的父类(super class)

php - 我是否正确地执行了 Doctrine 子类?为什么会出现错误?

php - 如何使用 PHP、HTML、jQuery 执行实时操作

react-native - 如何自定义消息气泡以在 react native 有天赋的聊天中还包括用户姓名和消息时间?

php - 在 PHP 中运行多个查询插入错误值

php - OO PHP 和 AJAX 表单验证

Symfony2 Doctrine,设置一个多对多自引用关系的页面

ajax - 高级聊天网络应用程序