Динамическое создание таблиц mysql на основе критериев в ruby on rails 5

0

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

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

  • 2
    Вам не нужна таблица для домена, которая нарушает принципы реляционного проектирования. Вместо этого поместите все в одну таблицу с колонкой, указывающей источник домена.
  • 0
    Разве это не создаст очень неэффективную базу данных для сравнения изменений из того же домена, если, например, страницы очищаются каждые несколько часов и хранятся в одной и той же таблице?
Показать ещё 3 комментария
Теги:
database

1 ответ

0
Лучший ответ

Рекомендуемый способ "реляционной базы данных" - это иметь уникальную таблицу и связывать эту таблицу с исходным кодом. Для моментальных снимков страниц вы часто можете хэшировать содержимое для проверки дублированных данных, а индекс UNIQUE в хеше содержимого может автоматически предотвращать подобные сортировки.

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

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

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

Вы можете периодически TRUNCATE таблицу такого типа, чтобы очистить старые данные, чтобы вы не оставляли мусор навсегда.

  • 0
    Спасибо, я уже использую Nokogiri, и я буду больше читать о таблицах ARCHIVE, так как я хочу вести записи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню