【问题标题】:Design Tracking of Emails sent from SMTP server设计跟踪从 SMTP 服务器发送的电子邮件
【发布时间】:2016-05-22 05:08:26
【问题描述】:

我正在尝试设计一种向用户发送电子邮件的服务。该服务与 Amazon SES 非常相似。

其中一项要求是跟踪该系统将发送的所有电子邮件。我对如何设计此解决方案感到困惑,以便我可以维护与发送电子邮件的父用户(在发送电子邮件时已知)一起发送的电子邮件。

如果我开始将所有与电子邮件相关的数据转储到关系数据库中,它会随着时间的推移呈指数增长,并会产生很多问题。同样,如果我将这些东西存储在 Cassandra 中,它会快速增长并产生问题。

需要存储这些信息:-

1) 将来需要知道电子邮件是否发送给特定用户以及何时发送。

2) 如果反馈循环创建了投诉邮件,我需要将其映射回特定的电子邮件 ID(将出现在投诉电子邮件中)和发送它的父用户(将在电子邮件发送时存储已发送)。

谁能帮我指点一下,如何存储或创建一些缓存以实现这一目标。

【问题讨论】:

    标签: web-services email data-structures smtp


    【解决方案1】:

    它不太可能“成倍增长”。似乎它会线性增长。无论如何,如果您需要能够查找谁向谁发送了什么,那么您别无选择,只能存储它。

    您需要做的是估计您每天发送多少封电子邮件,以及每封电子邮件需要保存多少数据。进行数学计算并确定您希望每天生成多少数据。然后至少你可以算出你的数据库随着时间的推移会变得多大。

    您还需要考虑如何索引数据。似乎您至少希望通过电子邮件 ID 进行索引。您可能还想按发件人编制索引,也可能按收件人编制索引。这些索引将创建额外的每个电子邮件数据存储要求。您必须通过分析确定多少。

    很难确定每封电子邮件将占用多少实际磁盘空间。如果消息很短,您可能会在关系数据库中每 GB 收到超过一百万封电子邮件。如果您压缩消息数据或应用其他利用消息相似性的技术,您可能会做得比这更好。例如,如果您将完全相同的邮件发送给一千个收件人,您可以存储该邮件的一个副本,并将对该邮件的引用存储在各个电子邮件记录中。

    您可能还需要考虑存储每条消息需要多长时间。您是否需要永久存储所有内容,还是可以定期删除所有超过一年(或其他相对较长时间)的消息?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2021-10-01
      • 2017-01-30
      相关资源
      最近更新 更多