Если вы используете файловый подход (и это не исключает вас из использования базы данных), вы можете сжимать и распаковывать файлы, которые вы используете для сохранения, когда они не используются. Поскольку вы будете хранить простой текст, сжатие, вероятно, будет значительным, и снижение скорости не будет таким уж плохим, если вы сделаете это в разумно выбранное время. Черт, ты можешь даже сделать это опцией.
Самая важная вещь (для меня), чтобы рассмотреть здесь, это время поиска. Что вы хотите, чтобы пользователи могли искать? Если поиск важен, я бы, вероятно, использовал базу данных. Мой первоначальный подход к этой проблеме состоял бы в том, чтобы хранить информацию о субъекте и заголовке (даты, отправитель, получатель и т. Д.) В отдельных столбцах, а затем сериализовать весь объект электронной почты в столбец двоичных данных (возможно, сжатый). Это приведет к тому, что полнотекстовый поиск займет больше времени, но в любом случае этого следует ожидать, верно?