Как лучше всего хранить огромное количество текста (в БД или в виде файла?) И как его сжать? - PullRequest
3 голосов
/ 02 февраля 2009

Я создаю веб-приложение, которое обрабатывает внутренние электронные письма и другие часто встречающиеся фрагменты текста небольшого или среднего размера между пользователями и клиентами. Какой лучший способ для хранения этих данных? В базе данных (MySQL) или как тысячи отдельных файлов? Как насчет сжатия (PHP gzcompress () или функции сжатия MySQL)?

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

Я хотел бы сохранить данные в базе данных для простоты доступа и переносимости, но некоторые потоки, которые я видел здесь относительно изображений, предложили использовать хранилище файлов. Что ты думаешь?

Спасибо, Сет

Изменить для уточнения: мне не требуется никакого поиска текста, поэтому я бы предпочел сжать его, чтобы сэкономить место.

Ответы [ 4 ]

1 голос
/ 03 февраля 2009

Одной из основных причин сохранения файлов в базе данных является ее согласованность с остальными данными, которые вы храните. Будет проще создавать резервные копии, (повторно) развертывать с предварительно определенными наборами данных и т. Д. Кроме того, легче гарантировать целостность транзакций.

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

1 голос
/ 02 февраля 2009

Для изображений и документов, которые уже имеют определенный формат (Excel, текстовые документы, PDF-файлы и т. Д.), Я предпочитаю хранение файлов. Но для простого текста я бы предпочел использовать базу данных. Для перехода на другой ресурс проще реплицироваться на разных машинах, вы можете выполнять поиск по тексту по подстроке, и хотя я не знаю конкретного алгоритма, который можно использовать для его сжатия, я бы подумал, что лучше использовать базу данных. Но только если у вас уже есть только текст, и это только текст. Любой другой формат документа, который я бы предпочел использовать для хранения файлов.

И если я что-то упустил, я бы использовал BLOB вместо BLOB, если это всего лишь текст.

0 голосов
/ 03 февраля 2009

Интересно, насколько велик этот "средний кусок". Если текст представляет собой просто написанные сообщения (менее 10 КБ), то сжатие делает их еще меньше, и это не окажет большого влияния на рост базы данных. Это также значительно упрощает разработку и сопровождение, позволяя получать все данные по одному запросу и не требуя отдельно получать содержимое файла.

0 голосов
/ 02 февраля 2009

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

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

...