Как я могу манипулировать локальной базой данных с помощью Perl? - PullRequest
2 голосов
/ 26 сентября 2010

Я программист на Perl с некоторыми хорошими сценариями, которые извлекают HTTP-страницы (из текстового файла-списка URL-адресов) с помощью cURL и сохраняют их в папке.

Однако количество страниц дляполучить в десятки миллионов.Иногда происходит сбой сценария с номером 170 000, и мне приходится снова запускать сценарий вручную.Он автоматически читает URL и видит, есть ли загруженная страница и пропускает.Но с несколькими сотнями тысяч все еще требуется несколько часов, чтобы вернуться туда, где он остановился.Очевидно, что в конечном итоге это не удастся.

Мне сказали, что вместо сохранения в текстовом файле, который трудно найти и изменить, мне нужно использовать базу данных.Я не очень разбираюсь в базах данных, просто перепутался с MySQL на школьном сервере год назад.Мне просто нужна возможность добавлять миллионы строк и несколько статических столбцов, быстро искать / изменять один и делать все это локально на локальной сети (или на одном компьютере, если это сложно).И, конечно, мне нужно получить доступ к этой базе данных, используя perl.

С чего мне начать?Что мне нужно скачать, чтобы запустить сервер в Windows?Какие модули Perl мне следует использовать?(Я использую дистрибутив ActiveState)

Ответы [ 3 ]

6 голосов
/ 26 сентября 2010

Существует много видов баз данных, но если вы уже выбрали базу данных SQL и пытаетесь упростить процесс установки, возможно, вы захотите взглянуть на SQLite и модули DBI / DBD::SQLite, которые позволяют использовать это из perl.

5 голосов
/ 26 сентября 2010

Так как вам нужно искать только по одному столбцу, вы можете рассмотреть базу данных хранилища ключей / значений, такую ​​как Berkeley DB , используя BerkeleyDB или DB_File.

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

1 голос
/ 26 сентября 2010

Посмотрите на DBI . Если вам не нравится SQL в ваших программах, попробуйте SQL :: Abstract .

...