Сжатие больших текстовых данных перед сохранением в БД? - PullRequest
2 голосов
/ 19 марта 2010

У меня есть приложение, которое извлекает много больших файлов журналов из локальной сети системы.

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

Таким образом, значение столбца может быть также BLOB или CLOB, но теперь мой вопрос заключается в следующем, база данных уже имеет свою систему сжатия, но можно ли улучшить это сжатие вручную, как с помощью обычных утилит сжатия? И, прежде всего, ЧТО, ЕСЛИ я вручную предварительно сжимаю большой файл и затем помещаю его в таблицу в виде двоичного файла, является ли он бесполезным, поскольку система базы данных обеспечивает внутреннее сжатие?

Ответы [ 3 ]

2 голосов
/ 19 марта 2010

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

2 голосов
/ 19 марта 2010

Внутреннее сжатие, используемое в PostgreSQL, предназначено для ошибок на стороне скорости, особенно для декомпрессии. Таким образом, если вам это на самом деле не нужно, вы сможете достичь более высоких коэффициентов сжатия, если будете сжимать его в своем приложении.

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

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

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

1 голос
/ 19 марта 2010

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

...