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

时间:2012-11-05 10:59:09

标签: php doctrine chat storage message

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

我需要能够将其他东西绑定到它们(比如文件或联系人),并且使用数据库是我现在看到的最佳方式。

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

有数千条消息和文件,我想知道性能下降和数据库大小。

考虑到我在PHP / Doctrine中使用PHP,你觉得怎么样?

2 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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

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

答案 1 :(得分:1)

我认为像CouchDB或MongtoDB这样的NoSQL数据库是一种选择。您还可以单独存储文件并通过已知文件名链接它们,但这取决于您的系统架构。