как хранить данные, отсканированные с сайта - PullRequest
1 голос
/ 17 марта 2010

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

Предложения?

Сопоставить URL с каким-либо именем файла, чтобы его можно было хранить без изменений? Или просто поместите его в базу данных, такую ​​как sqlite, чтобы избежать ограничений файловой системы?

Ответы [ 3 ]

3 голосов
/ 17 марта 2010

Все зависит от эффективного количества текстовых и / или веб-страниц, которые вы собираетесь сканировать. Общее решение, вероятно, для

  • использовать СУБД (своего рода SQL-сервер) для хранения метаданных, связанных со страницами.
    Такая информация будет храниться в простой таблице (возможно, с очень небольшим количеством таблиц поддержки / связанных таблиц), содержащей такие поля, как Url, FileName (где вы будете ее сохранять), Offset в файле, где хранится (идея состоит в том, чтобы сохранить несколько страниц в том же файле) дата сканирования, размер и несколько других полей.
  • используйте собственное хранилище файлов для правильного текста.
    Имя файла и путь не имеют большого значения (то есть путь может быть поверхностным, а имя загадочным / автоматически сгенерированным). Это имя / путь хранится в метаданных. Несколько просканированных страниц хранятся в одном плоском файле, чтобы оптимизировать нагрузку в ОС на управление слишком большим количеством файлов. Сам текст может быть сжат (ZIP и т. Д.) Отдельно для каждой страницы (при сжатии больших кусков требуется небольшой дополнительный коэффициент сжатия), что позволяет обрабатывать файлы (не нужно распаковывать весь текст перед этим! ). Решение об использовании сжатия зависит от различных факторов; накладные расходы на сжатие / распаковку, как правило, относительно минимальны с точки зрения использования процессора и обеспечивают хорошую экономию пространства на жестком диске и, как правило, производительность дискового ввода-вывода.

Преимущество этого подхода состоит в том, что СУБД остается небольшой, но доступна для запросов, управляемых SQL (специального или запрограммированного характера), для поиска по различным критериям. Как правило, небольшой выигрыш (и много головной боли) связан с хранением большого количества больших файлов на самом сервере SQL. Кроме того, по мере обработки / анализа каждой страницы в базу данных могут быть добавлены дополнительные метаданные (например, название, язык, наиболее повторяющиеся 5 слов и т. Д.).

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

В зависимости от вычислительной мощности ПК, который будет выполнять интеллектуальный анализ данных, вы можете добавить извлеченные данные в сжимаемый архив, такой как 7zip, zip или tarball. Вы сможете сохранить структуру каталогов без изменений и в конечном итоге сэкономить много места на диске - если это окажется проблемой.

С другой стороны, СУБД, такая как SqLite, будет очень быстро всплывать, но не будет против смехотворно длинной иерархии каталогов.

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

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

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