JSON или XML или сериализованный массив для сохранения в базе данных MySQL - PullRequest
3 голосов
/ 26 июля 2010

Веб-приложение. Получайте данные от сервисов в форматах json & xml . И из внутреннего модуля в хеш.

Решили выбрать один формат для всех сохраненных данных.

детали:

  1. Больше читать, чем писать.

  2. Данные низко вложенные (<10). </p>

  3. Количество символов между 1000 - 100000.

  4. Язык программирования - ruby.

  5. Каркасные рельсы.

  6. БД mysql.

Какая ваша рекомендация?

Ответы [ 3 ]

1 голос
/ 26 июля 2010

По соображениям производительности мы храним большие хэши как сериализованные объекты Ruby в формате Marshal . Вам нужен тип столбца Blob. Это работает очень хорошо. JSON было бы хорошо, но мы обнаружили, что маршал / немаршал немного медленнее. Я бы держался подальше от XML, если вам действительно не нужна совместимость с третьей стороной /

1 голос
/ 26 июля 2010

Я сохраняю его как JSON в MySQL для аналогичного проекта, поскольку он предлагает большую гибкость. XML мог бы предложить то же самое, но он немного многословен, и, поскольку мое приложение основано на JavaScript, JSON полезен, потому что этап синтаксического анализа можно пропустить.

Возможно, вы также захотите оформить ActiveModel в Rails 3. Это позволяет использовать модель, которая предлагает все преимущества, которые вы получили бы от ActiveRecord, но ее не нужно хранить в базе данных. Это очень полезно, например, для проверок в вашем JSON / XML, хотя в конечном итоге он будет храниться в виде большого двоичного объекта или большого текста.

0 голосов
/ 26 июля 2010

Я бы определенно рекомендовал JSON поверх XML

Для построения или использования API ActiveModel работает хорошо.

Для прямого анализа JSON YAJL-ruby - хорошая библиотека: http://rdoc.info/projects/brianmario/yajl-ruby

В Activerecord вы можете легко хранить хэши, массивы и т. Д. В текстовых столбцах, используя сериализацию атрибута:

См. "Сохранение массивов, хэшей и других не отображаемых объектов в текстовых столбцах" здесь: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001799

Пример:

class User < ActiveRecord::Base
  serialize :preferences
end

user = User.create(:preferences => { "background" => "black", "display" => large })
User.find(user.id).preferences # => { "background" => "black", "display" => large }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...