Хранение электронных писем в базе данных

Модуль sched может сделать это:

import sched, time
schedTimer = sched.scheduler(time.time, time.sleep)
def increaseX(x):
    x += 1
    print('X increased to ' + str(x))
    schedTimer.enter(2, 1, increaseX, (x,))
schedTimer.enter(2, 1, increaseX, (3,))
schedTimer.run()

16
задан ceejayoz 15 September 2008 в 17:41
поделиться

8 ответов

Можно хотеть проверить архитектура и схема дБ "Archiveopteryx".

13
ответ дан 30 November 2019 в 20:55
поделиться

Зависит от того, что Вы собираетесь быть выполнением с ним. Если Вы испытаете необходимость, чтобы сделать частый поиск против определенных битов его, то Вы захотите разбить его способом, который имеет смысл для Вашего случая использования. Если бы это только для чего-то как устройство хранения данных электронной почты для соответствия Sarbanes-Oxley, Вы, вероятно, хорошо сохранили бы все это - заголовки, части, и т.д. - как одно большое текстовое поле.

4
ответ дан 30 November 2019 в 20:55
поделиться

Предложение: составьте четко определенную таблицу для хранения электронной почты со столбцом для каждой соответствующей части сообщения: отправитель, заголовок, предмет, тело. Это будет намного более простым позже, если Вы хотите запросить, например, полем темы. В той же таблице можно определить поле, чтобы сохранить путь вложения и сохранить прикрепленный файл в файловой системе, вместо того, чтобы хранить его в полях блоба.

4
ответ дан 30 November 2019 в 20:55
поделиться

Можно хотеть использовать схему, где тело сообщения и записи вложения могут быть совместно использованы несколькими получателями на сообщении. Весьма распространено видеть почтовые серверы, где полностью 50% памяти на диске используются дублирующимися электронными письмами.

А простого хеша тела/вложения было бы достаточно, чтобы видеть, была ли та запись уже в базе данных. Однако необходимо было бы все еще разделить заголовки.

5
ответ дан 30 November 2019 в 20:55
поделиться

Все это зависит от того, что Вы хотите сделать с данными, но в целом я хотел бы хранить все данные и также удостовериться, что семантика, интерпретируемая MUA, сохраняется в дб, так например: - все заголовки, которые анализируются, должны иметь свой собственный столбец - столбец А должен содержать целые заголовки - вложения (включая тело, многослойное), должны быть во многих к одной таблице с почтовой таблицей.

1
ответ дан 30 November 2019 в 20:55
поделиться

Это не тривиально для парсинга электронного письма, поэтому рассмотрите хранение электронной почты, поскольку блоб тогда анализирует его в любые части, Вам нужно впоследствии.

/Allan

0
ответ дан 30 November 2019 в 20:55
поделиться

Если это уже разделено, и можно быть уверены, что стандартная программа для разделения данных является звуковой, то я разделил бы таблицу, максимально детализированную. Можно всегда анализировать его назад вместе на среднем уровне. Если пространство не является проблемой, Вы могли бы всегда хранить его дважды. Один, разделенный на соответствующие поля и другое поле, которое имеет все это, поскольку один блоб, при откладывании его вместе тверд.

0
ответ дан 30 November 2019 в 20:55
поделиться

Вы, вероятно, захотите, по крайней мере, сохранить вложения отдельно для оптимизации устройства хранения данных. Удивительно видеть размер и количество вложений (видео, и т.д.), который большинство пользователей решительно присоединяет к электронным письмам.

В случае исходящей почты у Вас может быть несколько электронных писем, отправляющих то же вложение. Намного более эффективно сохранить единственную копию вложения, на которое ссылаются все электронные письма, которые совместно используют его.

Другая причина хранения вложений отдельно состоит в том, что оно дает Вам некоторые возможности архивирования позже. Если пространство памяти становится проблемой, можно всегда возвращаться и удалять большие вложения, более старые, чем данная дата для уплотнения базы данных.

1
ответ дан 30 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: