存储聊天消息和文件的最佳方法

Stn*_*ire 5 php storage message doctrine chat

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

我需要能够将其他内容绑定到它们(例如文件或联系人),并且使用数据库是我目前所见的最好方法。

对于文件也有同样的问题,因为它们可以绑定到聊天消息,所以我也必须将它们存储在数据库中。

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

考虑到我在MySQL / Doctrine中使用PHP,您认为如何?

akh*_*ess 5

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

但是,对于像图像和文件这样的二进制信息,最好将它们存储在文件系统上,并仅将它们的路径存储在数据库上,因为从磁盘上读取它们比将数据库进程与读取多个数据绑定起来要便宜得多。兆字节文件。

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

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

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

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

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