Какой самый эффективный способ хранения большого количества текста в MySQL? - PullRequest
1 голос
/ 13 ноября 2011

Я пишу веб-сканер на Python, который будет хранить HTML-код большого набора страниц в базе данных MySQL.Я хотел бы убедиться, что мои методы хранения и обработки являются оптимальными, прежде чем я начну обрабатывать данные.Я хотел бы:

  • Минимизировать пространство хранения, используемое в базе данных - возможно, путем минимизации кода HTML, кодирования Хаффмана или какой-либо другой формы сжатия.Я хотел бы сохранить возможность полнотекстового поиска в поле - я не знаю, позволят ли это алгоритмы сжатия, такие как кодирование Хаффмана.

  • Минимизируйте использование процессора, необходимое для кодирования и хранениябольшие объемы строк.

У кого-нибудь есть какие-либо предложения или опыт в этой или аналогичной проблеме?Является ли Python оптимальным языком для выполнения этой задачи, учитывая, что для этого потребуется ряд HTTP-запросов и регулярных выражений, а также любое оптимальное сжатие?

Ответы [ 2 ]

1 голос
/ 13 ноября 2011

Если вы не возражаете против непрозрачности HTML для MySQL, вы можете использовать функцию COMPRESS для хранения данных и UNCOMPRESS для их получения.Вы не сможете использовать содержимое HTML в предложении WHERE (используя, например, LIKE).

0 голосов
/ 15 ноября 2011

Нужно ли вам хранить источник в базе данных?

Попытка выполнить 'LIKE' запросы к данным в любом случае будет отстойной.

Хранить необработанные данные в файловой системе в виде стандартных файлов. Просто не кладите их все в одну папку. используйте хеши идентификатора, чтобы хранить их в предсказуемых папках.

(хотя, конечно, совершенно возможно хранить текст в базе данных, он увеличивает размер вашей базы данных и усложняет работу с ней. Резервные копии (намного!) Больше, изменяя механизм хранения, становясь более болезненным и т. д. Масштабирование вашей файловой системы, как правило, это просто добавление еще одного жесткого диска. Это не так легко работает с базой данных - вы начинаете нуждаться в шарде)

... чтобы выполнить какой-либо поиск данных, вы пытаетесь построить индекс. У меня есть только опыт работы со SphinxSearch, но это позволяет вам указать имя файла во входной базе данных.

...