Я новичок в Rails, и я пытаюсь создать веб-приложение, где вы очищаете какой-либо HTML файл со страницы и храните его в базе данных, чтобы сравнить его с другой версией, например, цена продукта изменилась. Способ, которым я хочу заставить его работать, - создать новую таблицу каждый раз, когда вы очистите что-то из нового домена.
Таким образом, у каждого домена есть своя таблица изменений. Я знаю, как создавать таблицы с миграциями, но как вы динамически создаете таблицу при добавлении нового домена?
Рекомендуемый способ "реляционной базы данных" - это иметь уникальную таблицу и связывать эту таблицу с исходным кодом. Для моментальных снимков страниц вы часто можете хэшировать содержимое для проверки дублированных данных, а индекс UNIQUE
в хеше содержимого может автоматически предотвращать подобные сортировки.
Если части обновления страницы, но вы не заинтересованы в них, например рекламные блоки, вы можете использовать такой инструмент, как Nokogiri, для предварительной обработки и выделения этого содержимого перед хэшированием и сохранением.
Теперь, если это только часть конвейера, в котором вы захватываете страницы с явным намерением извлечь информацию о ценах позже, вам может не понадобиться база данных вообще для этой части процесса. Вы можете перенаправить данные необработанных страниц в очередь, такую как RabbitMQ, и заставить рабочих обработать ее, доведя ее до данных цены, и это все, что вы вставляете в базу данных.
Если вам нужно сохранить снимки страниц по диагностическим или историческим причинам, таблица будет работать. Чтобы сохранить размер, вы можете исследовать его с помощью таблицы типа ARCHIVE. Они являются только добавлением, вы не можете редактировать их, но они компактны и хорошо работают.
Вы можете периодически TRUNCATE
таблицу такого типа, чтобы очистить старые данные, чтобы вы не оставляли мусор навсегда.