Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
 Величина транзации при парсинге  [new]
forumvisitor
Member

Откуда:
Сообщений: 9
Доброго времени суток всем.

Делаю на python парсер данных сайта. В результате парсинга будет создана таблица с количеством столбцов около 20 и строк около 2000. На сайте это примерно 200 html страниц по 10 элементов (каждый из которых будет преобразован в одну строку в таблице). Планируется сделать возможность создания этой таблицы в разных форматах, пока скорее всего это будут sqlite или файл html.

Надо решить, какой величины делать транзакцию при записи данных в таблицу.

С одной стороны вроде бы правильно все данные записывать за одну транзакцию.

С другой стороны чтобы не забивать оперативную память и для того, чтобы легче искать причины возможных "падений" парсера - транзакции можно сделать равными одной странице сайта (что равно 10 строкам таблицы). Может быть это пригодится в будущем, если придется использовать данный парсер для значительно бОльшего количества данных -десятки, сотни и более тысяч строк.

Как считаете какой вариант лучше и по каким причинам? Или есть еще какие-то варианты?
30 мар 19, 16:22    [21847866]     Ответить | Цитировать Сообщить модератору
 Re: Величина транзации при парсинге  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48131

Транзакция БД не должна быть меньше бизнес-транзакции. И больше её делать тоже не стоит.
Так что читай ТЗ на предмет "всё или ничего" для твоего процесса.

Posted via ActualForum NNTP Server 1.5

30 мар 19, 16:28    [21847869]     Ответить | Цитировать Сообщить модератору
 Re: Величина транзации при парсинге  [new]
forumvisitor
Member

Откуда:
Сообщений: 9
Dimitry Sibiryakov
Так что читай ТЗ на предмет "всё или ничего" для твоего процесса.

Все ТЗ в моей голове, так как парсер делается для себя. И кратко изложено в начале топика. К нему можно еще добавить что после скачивания каждой html страницы делается пауза рандомной величины от 1 до 8 секунд (чтобы не создавать чрезмерной нагрузки на сайт не раздражать его админов).

То есть, видимо в данном случае надо закрывать транзакцию после скачивания каждой страницы?
30 мар 19, 16:50    [21847876]     Ответить | Цитировать Сообщить модератору
 Re: Величина транзации при парсинге  [new]
forumvisitor
Member

Откуда:
Сообщений: 9
Решил делать постраничные транзакции.

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

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

Отслеживание по заголовку будет применяться для точного поиска последнего корректно скачанного элемента после примерного определения необходимой страницы.
31 мар 19, 08:14    [21848135]     Ответить | Цитировать Сообщить модератору
Все форумы / Проектирование БД Ответить