5

我想知道您对在数据库中存储聊天消息有何看法?

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

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

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

考虑到我将 PHP 与 MySQL/Doctrine 一起使用,你怎么看?

4

2 回答 2

4

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

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

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

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

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

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

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

于 2012-11-05T11:21:37.260 回答
1

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

于 2012-11-05T11:01:06.730 回答