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

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

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

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

Спасибо сет

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

4 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам