Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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_Mongodb_Statistics_Archive - Fatal编程技术网

应该使用哪个数据库来跟踪和归档通过PHP发送的电子邮件

应该使用哪个数据库来跟踪和归档通过PHP发送的电子邮件,php,mysql,mongodb,statistics,archive,Php,Mysql,Mongodb,Statistics,Archive,这个问题有两个方面 我们托管了很多静态文件供公众下载。PDF、拉链、图像,人们每天都要下载数千份。我们跟踪MySQL数据库中的计数器,在MongoDB中跟踪详细信息(如下载来源和时间) 我们通过PHP发送了很多电子邮件。我们的应用程序通常每个月发送数十万封电子邮件,其中许多是时事通讯、通知和项目邀请。这些发送的电子邮件被保存到out MySQL数据库中,其关键数据被序列化(而不是正文或实际的电子邮件内容,只是标题、收件人、发送时间等) MySQL是一个合适的选择吗?是Mongo吗?我们应该用别的

这个问题有两个方面

  • 我们托管了很多静态文件供公众下载。PDF、拉链、图像,人们每天都要下载数千份。我们跟踪MySQL数据库中的计数器,在MongoDB中跟踪详细信息(如下载来源和时间)

  • 我们通过PHP发送了很多电子邮件。我们的应用程序通常每个月发送数十万封电子邮件,其中许多是时事通讯、通知和项目邀请。这些发送的电子邮件被保存到out MySQL数据库中,其关键数据被序列化(而不是正文或实际的电子邮件内容,只是标题、收件人、发送时间等)

  • MySQL是一个合适的选择吗?是Mongo吗?我们应该用别的东西吗?目前,我们的电子邮件存档表和下载统计表都在迅速接近2GB


    注意:我们存储的数据是定期访问的,所以不可能有什么东西来存储它,然后忘记它。我们使用下载统计信息通知内容作者其下载数量已达到X,并使用电子邮件存档检查交付状态等,并将其显示给定期跟踪此情况的员工。(我们使用Sendgrid作为交付指标)

    我认为mysql可以很好地满足您的需求。对于web来说,它更灵活,为了跟踪日志,您可以使用mysql
    ARCHIVE
    db引擎。mysql有一些不同的db引擎用于不同的目的。我认为归档文件最适合您的结构

    最近我管理了一个60GB的mysql数据库。其数据库规模大,性能良好

    我的两分钱:

    有传言说MySQL不能很好地扩展表中的行数,postgres管理大型表的性能要好得多。我肯定更喜欢将postgres用于具有大型表的应用程序。(不过,更重要的是,无论您选择何种系统,如何定义和使用数据库。)


    如果你喜欢冒险,想做一些更现代、更分布式的事情,也许可以研究hadoop和hive,它们同时也可以解决大文件存储的问题,但需要你学习一些新东西。

    我将与MongoDB的文章谈一谈。我假设您正在使用MongoDB存储快速访问数据,也许您可以触发并忘记数据,但在运行报表时拥有这些数据很好。保持MongoDB实例快速运行的关键(当然,除了有效、高效的索引和适当的查询外)是确保工作数据集适合RAM

    就性能而言,总体数据大小不是什么问题,它可以是工作集大小的许多倍,而不会成为问题。密切关注您的常驻内存大小(MMS是您的朋友),如果您开始倾向于硬件的上限,请准备好共享


    2GB对于Mongo数据集,甚至对于一个工作数据集来说,都不是那么大。我看到数据大小达到了数TB。根据您提供的信息,我认为您选择的MongoDB在可预见的未来是不错的。

    +1通常我会投票决定哪个技术更好,但您提出了一个明确的问题。希望你能得到答案。谢谢,我很小心地避免了含糊不清和主观性,这对我来说非常重要,我不知道该怎么问。谢谢,但我认为这篇文章不太适用于这个时代。它已经6年了,MySQL和Postgre从那时起都有了显著的增长。我们有两个表,有超过一百万条记录,它们处理得很好,但它们每个字段存储的数据远少于电子邮件存档—这种大小的增长是concernes meI选择的最佳答案,因为我喜欢能够将所有数据保存在一个数据库中—存档引擎很好地满足了这一目的。非常感谢。如果我有任何其他发现,我会发回,但现在,这个就可以了。听说你有60GB的内存是很有动力的,这应该会让我们持续一段时间。