1

現在、大量の電子メール (1 億以上) を Amazon RDS の mysql に保存しようとしています。別の email_bodies テーブルを作成しましたが、大きくなりつつあります。

Amazon RDS を使用すると、約 40,000 件の電子メールで、テーブルのサイズが 1GB を超えました。元の (電子メール) ファイルは Amazon S3 に保存され、本文 (テキストのみ) は検索用に DB に保存されます。ユーザー数が多い場合 (簡単に 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 ;
4

1 に答える 1

0

私の計算によると、各ボディは平均で 25K を消費します。これは、電子メール本文のかなりの量です。マルチパートボディからテキスト部分のみを抽出すると、その量を減らすことができますが、唯一の意図が検索である場合。平均サイズはわずか 1k 以下に縮小されると確信しています。

于 2013-05-30T13:38:11.967 に答える