从 SMTP 服务器发送的电子邮件的设计跟踪
Design Tracking of Emails sent from SMTP server
我正在尝试设计一种向用户发送电子邮件的服务。此服务与 Amazon SES 非常相似。
其中一项要求是跟踪该系统将发送的所有电子邮件。我对如何设计此解决方案感到困惑,以便我可以维护与发送电子邮件的父用户(在发送电子邮件时已知)发送的电子邮件。
如果我开始将所有与电子邮件相关的数据转储到关系数据库中,它会随着时间的推移呈指数增长,并会产生很多问题。同样,如果我将这些东西存储在 Cassandra 中,它会快速增长并产生问题。
需要存储此信息:-
1) 将来需要知道电子邮件是否发送给特定用户以及发送时间。
2) 如果反馈循环创建投诉邮件,我需要将其映射回特定的电子邮件 ID(将出现在投诉电子邮件中)和发送它的父用户(将在当时存储)电子邮件已发送。
谁能帮我指点一下,如何以某种方式存储或创建一些缓存来实现这一点。
不太可能增长"exponentially."似乎会线性增长。无论如何,如果您需要能够查找谁向谁发送了什么,那么您别无选择,只能存储它。
您需要做的是估计您每天发送多少封电子邮件,以及每封电子邮件需要保存多少数据。计算一下并确定您希望每天生成多少数据。然后至少您可以计算出随着时间的推移您的数据库会变得有多大。
您还需要考虑如何为数据编制索引。似乎您至少要通过电子邮件 ID 建立索引。您可能还想按发件人索引,也可能按收件人索引。这些索引将创建额外的每封电子邮件数据存储要求。多少钱你要通过分析来确定。
每封电子邮件占用多少实际磁盘 space 很难确定。如果消息很短,关系数据库中每 GB 可能会收到超过一百万封电子邮件。如果您压缩消息数据,或者应用其他利用消息相似性的技术,您可能会做得更好。例如,如果您向一千个收件人发送完全相同的邮件,您可以存储该邮件的单个副本,并仅在各个电子邮件记录中存储对该邮件的引用。
您可能还想考虑每条消息需要存储多长时间。您需要永久存储所有内容,还是可以定期删除所有超过一年(或其他相对较长时间)的消息?
我正在尝试设计一种向用户发送电子邮件的服务。此服务与 Amazon SES 非常相似。
其中一项要求是跟踪该系统将发送的所有电子邮件。我对如何设计此解决方案感到困惑,以便我可以维护与发送电子邮件的父用户(在发送电子邮件时已知)发送的电子邮件。
如果我开始将所有与电子邮件相关的数据转储到关系数据库中,它会随着时间的推移呈指数增长,并会产生很多问题。同样,如果我将这些东西存储在 Cassandra 中,它会快速增长并产生问题。
需要存储此信息:-
1) 将来需要知道电子邮件是否发送给特定用户以及发送时间。
2) 如果反馈循环创建投诉邮件,我需要将其映射回特定的电子邮件 ID(将出现在投诉电子邮件中)和发送它的父用户(将在当时存储)电子邮件已发送。
谁能帮我指点一下,如何以某种方式存储或创建一些缓存来实现这一点。
不太可能增长"exponentially."似乎会线性增长。无论如何,如果您需要能够查找谁向谁发送了什么,那么您别无选择,只能存储它。
您需要做的是估计您每天发送多少封电子邮件,以及每封电子邮件需要保存多少数据。计算一下并确定您希望每天生成多少数据。然后至少您可以计算出随着时间的推移您的数据库会变得有多大。
您还需要考虑如何为数据编制索引。似乎您至少要通过电子邮件 ID 建立索引。您可能还想按发件人索引,也可能按收件人索引。这些索引将创建额外的每封电子邮件数据存储要求。多少钱你要通过分析来确定。
每封电子邮件占用多少实际磁盘 space 很难确定。如果消息很短,关系数据库中每 GB 可能会收到超过一百万封电子邮件。如果您压缩消息数据,或者应用其他利用消息相似性的技术,您可能会做得更好。例如,如果您向一千个收件人发送完全相同的邮件,您可以存储该邮件的单个副本,并仅在各个电子邮件记录中存储对该邮件的引用。
您可能还想考虑每条消息需要存储多长时间。您需要永久存储所有内容,还是可以定期删除所有超过一年(或其他相对较长时间)的消息?