Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何维护聊天数据?_Php_Mysql_Database Design_Chat - Fatal编程技术网

Php 如何维护聊天数据?

Php 如何维护聊天数据?,php,mysql,database-design,chat,Php,Mysql,Database Design,Chat,我有一个奇怪的问题。。。 我想知道如何在数据库中维护聊天数据。 我一直在使用一个php mysql应用程序,它将用户的聊天数据存储在数据库中 现在我的问题是,如果聊天数据增加到数百万条记录,如何存储它?mysql是否支持它,或者有任何限制或负担 以gmail聊天为例。我可以无限聊天,也可以检索我以前的所有聊天数据。怎么可能呢 有人能回答myne的这个典型问题吗?谷歌有大量的定制存储,由它根据自己的需求设计。我建议您更具体地确定您的需求,并确定您需要的平台。MySQL将愉快地存储数百万甚至数十亿条

我有一个奇怪的问题。。。 我想知道如何在数据库中维护聊天数据。 我一直在使用一个php mysql应用程序,它将用户的聊天数据存储在数据库中

现在我的问题是,如果聊天数据增加到数百万条记录,如何存储它?mysql是否支持它,或者有任何限制或负担

以gmail聊天为例。我可以无限聊天,也可以检索我以前的所有聊天数据。怎么可能呢


有人能回答myne的这个典型问题吗?

谷歌有大量的定制存储,由它根据自己的需求设计。我建议您更具体地确定您的需求,并确定您需要的平台。

MySQL将愉快地存储数百万甚至数十亿条记录;但是有些数字类型是不够的:对于数字类型的最大值来说。如您所见,最好使用
bigin UNSIGNED
作为自动增量字段


对于大型表来说,性能可能会成为一个问题,但这主要可以通过索引来解决(这意味着“在类似的情况下,我看到性能在100GB左右下降”)。

聊天历史并不是那么重要。如果我计算出每条消息大约100字节,每分钟6条消息,每天5小时(这是一个非常健谈的话题),永久性地,作为最坏的情况,每年每个用户大约会有61MB(!)。 这意味着,对于100万个健谈的聊天内容(非常不可谈论),您将需要大约58TB或数据存储

如果说这是一个最坏情况的计算,我会从最大1TB的存储开始,设置数据库,然后看看情况如何。对于一个非常年轻的服务来说,发展如此之快是非常不可能的


此外,我个人不建议使用Windows系统来实现类似的功能,除非您非常清楚自己在做什么。Debian发行版上的MySQL将存储数十亿条记录,由于操作系统级别的限制较少,因此存储速度可能更快(有关详细信息,请参阅MySQL文档,其中应包含有关Windows限制的部分)。

我的要求是,用户必须能够检索其聊天数据至少1年。我的平台是php-mysql-apache-windows。有多少用户?平均数据量将是多少?它将如何增长?等等。用户数量最多将达到10万,并且不会快速增长到该水平。几乎需要一年的时间才能成为10万人。每个用户每天的聊天数据量可能是40kb。使用
ARCHIVE
存储引擎怎么样@Imre L:
存档
有一个小问题:它不支持索引。否则,这将是理想的。感谢下面的所有答案。。。起初我认为我可以在mysql中存储大量数据,但随着数据和记录的增加,检索速度会变慢。IAM计划从20GB存储开始,随着用户和聊天数据的增长,我会考虑增加磁盘空间。此外,我认为如果我可以使用cron作业定期删除超过1年或2年的聊天数据,那会更好。正如Piskvor已经说过的,只要你关注文档,并以实际帮助数据库查找记录的方式维护索引,你就会很好。我正在维护一个MySQL数据库,目前大约有100万条记录,我可以在几分之一秒内对它们进行全文搜索。我相信找到像聊天日志这样的顺序数据会更快。嗨,Michael,如何以一种实际帮助数据库查找记录的方式维护索引?我不太明白。你是说表上的索引吗?如果是的话,如何在聊天桌上写索引?@dskanth:你需要的索引取决于你的具体情况;例如,参见本教程:我会不假思索地提出下表,仅针对日志:
SendingUserID(PK,Index1)、ReceivingUserID(PK)、Timestamp(PK,Index1)、Message
。当然,这需要时间戳是唯一的,我认为这是在聊天场景中给出的(每个用户对)。在这种情况下,如果只查看每个用户对和时间戳的查询,您甚至可能不需要额外的索引。但我会离开他们,因为也许你的用户想要查看他们在给定时间跨度内的所有对话。剩下的就交给你了;DBMS是一个巨大的主题,我已经没有更多的字符了。