Направляющие: Сериализация объектов в базе данных?

Я ищу некоторое общее руководство по сериализации объектов в базе данных.

  1. Что такое сериализованные объекты?
  2. Каковы некоторые сценарии лучшей практики для сериализации объектов в DB?
  3. Какие атрибуты Вы используете при создании столбца в DB, таким образом, можно использовать сериализованный объект?
  4. Как сохранить сериализованный объект?
  5. И как получить доступ к сериализованному объекту и его атрибутам? (Используя хеши?)
34
задан keruilin 2 June 2010 в 16:34
поделиться

3 ответа

В информатике в контексте хранения и передачи данных сериализация - это процесс преобразования структуры данных или объекта в последовательность битов, чтобы их можно было сохранить в файл, буфер памяти или переданный по ссылке сетевого подключения для «воскрешения» позже в той же или другой компьютерной среде. (см. http://en.wikipedia.org/wiki/Serialization )

  1. Итак, сериализованные объекты (в контексте ActiveRecord) представляют собой текстовые / строковые представления объектов (закодированные с использованием YAML). После сериализации вы можете сохранить (почти) любой объект Ruby в одном поле базы данных.

  2. Вы можете использовать сериализацию, если у вас есть несколько сложных объектов, которые вам нужно сохранить в базе данных, и вам не нужно извлекать записи на основе содержимого сериализованного атрибута. Я использовал их, например, для хранения предпочтений для пользователей веб-приложения: предпочтения были в основном хэшами, которые я хотел сохранить в одном поле db.

3./4./5. Используйте ActiveRecord :: Base.serialize , как предложил Марк-Андре Лафортюн:

class User < ActiveRecord::Base
  serialize :preferences
end

u = User.new
u.preferences = {:show_tooltips => true, :use_extended_menu => false, ...}
u.save

# ...

u = User.find(23)
u.preferences # => {:show_tooltips => true, :use_extended_menu => false, ...}
55
ответ дан 27 November 2019 в 16:41
поделиться

Очень просто. Проверьте документ для ActiveRecord :: Base.serialize .

8
ответ дан 27 November 2019 в 16:41
поделиться

Взгляните на MessagePack

2
ответ дан 27 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: