2014-12-09 3 views
1

Я разрабатываю небольшое приложение, чтобы изучить Ruby on Rails, который будет (надеюсь) показывать тенденции сетевого трафика. Поскольку данные, которые я использую, довольно велики (100 миллионов строк), у нас есть три таблицы, которые суммируют данные по часам, по дням и месяцам. Мне любопытно, подходит ли подход к созданию трех моделей, по одному для каждого типа данных, несмотря на их сходство. Похоже, я склоняюсь к пониманию, что в конечном итоге мне придется сделать рефакторинг, чтобы помочь устранить дублирующее кодирование. Любопытно, есть ли какие-либо другие подходы, которые можно было бы предложить?Несколько моделей для аналогичных данных типа

ответ

0

Вы можете использовать STI (однонаправленное наследование). Прочтите How (and When) to Use Single Table Inheritance in Rails для более подробной информации.

из статьи:

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

+0

Интересно, спасибо за ссылку. Мне любопытно, есть ли альтернативы сбору всех данных в одной таблице по мере того, как излагается метод ИППП. Базовая база данных будет реплицироваться с основной БД, что может привести к некоторой дополнительной работе на стороне БД. – Andrew

+0

@ Андрей может объяснить дополнительную работу для ИППП, а не для независимых моделей? – rubish

+0

Таблицы, на которых основаны модели, реплицируются из другой, основной базы данных. Использование STI, похоже, хочет консолидировать все данные в одной главной таблице с помощью столбца TYPE, чтобы различать типы. Мне пришлось бы реплицировать данные, а затем объединить их в одну таблицу. – Andrew

Смежные вопросы