目前我正在尝试在Amazon RDS中存储大量的电子邮件(100M +)。我已经制作了一个单独的emails_bodies表,但它正在变大。
使用Amazon RDS,大约有4万封电子邮件,表格大小超过1GB。原始(电子邮件)文件保存在Amazon S3上,并且正文(仅文本)仅在数据库中进行搜索。有了更高的用户数(很容易计算超过1亿封电子邮件),我会使用TB的mysql存储。
CREATE TABLE `emails` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`accounts_id` int(10) unsigned NOT NULL,
`ehash` varchar(32) NOT NULL,
`subject` text NOT NULL,
`body` longtext NOT NULL,
`html` tinyint(1) unsigned NOT NULL,
`size` int(10) unsigned NOT NULL,
`datetime` datetime NOT NULL,
`created` datetime NOT NULL,
`last_updated` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `ehash` (`ehash`),
KEY `accounts_id` (`accounts_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE `bodies` (
`bodies_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`bodies_emails_id` int(10) unsigned NOT NULL,
`bodies_body` longtext NOT NULL,
PRIMARY KEY (`bodies_id`),
UNIQUE KEY `bodies_emails_id` (`bodies_emails_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
答案 0 :(得分:0)
根据我的计算,每个人的平均消耗量为25K。对于电子邮件正文而言,这是非常公平的金额。虽然如果只提取多部分正文中的文本部分,您可以减少该数量,但如果您的唯一目的是搜索。我相信平均尺寸将减少到仅仅1k或更少。