2011-09-08 54 views
1

我想讨论我们需要实现的应用程序的设计方法。应用程序需要存储和稍后处理电子邮件。我们每天有大约2000封电子邮件,平均大小(包括附件)大约为2MB,我们需要将它们存储3个月。用于在应用程序中存储电子邮件的设计方法

方法1:

存储在文件系统中的电子邮件,并插入只在数据库的路径。

方法2:

将完整的电子邮件存储在数据库的CLOB字段中。

这两种设计方法的优缺点在哪里?

+0

您需要多长时间参考一下这三个月内电子邮件的内容?这将对决定是否将内容存储在数据库中产生重大影响。 – Flyingdiver

+0

电子邮件只处理一次,之后他们只有“达到”我们需要分析的情况。 – markus

回答

1

我建议将它存储在数据库中,CLOBs很慢但不会比从文件系统中慢得多。如果一切都在一个地方,您的灾难恢复故事变得更加容易。

如果您查询有问题的表的次数多于访问电子邮件内容,我还会使用指向另一个表中的CLOB的指针。

+0

随着灾难恢复这个术语,您可以将我带到另一个角度。由于我们的db没有太多的负载,我正在考虑使用postgres 9.1的同步复制的新特性。然后,一个事务只在存储在两个数据库中时才被提交。在db中存储高达2MB的CLOB时,你认为同步复制是我可以使用的东西吗? – markus

+0

我对同步复制并不十分熟悉,但如果吞吐量不是很大,我认为可以使用大约2mb左右的事务轻松管理它。你会对这个表做任何批量加载类型的操作吗? – AlexCuse

+0

不,我们没有批量加载。 – markus

相关问题