Я внедряю приложение Twitter, где приложение должно кэшировать данные пользователей, приходящих из Twitter.Было бы разумно сериализовать данные в столбец с именем data
?Или, в моей модели User, я должен создать столбец для каждого поля, которое возвращается запросом API *1003*?
Чтение о (ActiveRecord :: Base) сериализации .
Если я воспользуюсь последним подходом, я получу много полей в моей модели User, и если API Twitter решит добавить или удалить поля в будущем, то нам придется обновить нашстолбцы в нашей базе данных соответственно.
Однако, одно преимущество, которое я могу придумать с этим подходом, состоит в том, что каждый столбец был сохранен в базе данных.Я мог бы сказать, поиск всех пользователей Twitter в зависимости от местоположения.Я также мог бы индексировать столбец location
для более быстрых запросов.Как это можно сравнить с сериализованным подходом?
Один из них предложит: «Не ищите сериализованные данные, просто не делайте этого» * 1016 *.
Так что, я думаю,, У меня может быть два столбца: data
(для сериализованных данных) и location
, нет?
Но давайте добавим еще несколько поворотов:
- Приложению необходимо отсортировать пользователей по зарегистрированной дате.Не с нашим приложением, а с Twitter.
- Приложение должно иметь возможность поиска пользователей по экранному имени Twitter или идентификатору Twitter.
- Приложение должно иметь возможность сортировать пользователей по подписчикам, друзьями количество статусов.
Означает ли это, мне нужно 8 столбцов в моей БД: data
, location
, twitter_created_at
, twitter_screen_name
, twitter_id
, followers_count
,friends_count
и statuses_count
?На этом этапе было бы все же лучше выбрать подход типа столбца смешивания или просто выделить каждое поле в отдельном столбце.
Сохраните ли вы данные, возвращенные из API, в один столбец:data
, или сохранить каждое поле в своем соответствующем столбце, или иметь сочетание обоих (как описано выше)?
Ваши мысли будут оценены по достоинству.