Как сохранить параметры «ключ-значение» или «один ко многим» в базе данных (Xml, Json)?

Должны ли мы хранить данные настроек ключа-значения приложения в сериализованном виде в формате db, таком как XML или JSON. например, данные пользовательских настроек могут храниться в сериализованном виде в одном столбце nvarchar(2000)

Или я должен сохранить их в виде таблицы со столбцами, такими как НИЖЕ

Идентификатор пользователя, название параметра, значение параметра

  1. 123,Викторина по назначению,Наука
  2. 123,Назначенный тест,Математика
  3. 456,AssignedQuiz,География

person abksharma    schedule 15.01.2014    source источник
comment
Я думаю, что лучшая структура таблицы будет лучше, чем хранение в сериализованном виде.   -  person Suresh Kamrushi    schedule 15.01.2014


Ответы (2)


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

Вы можете определить структуру как:
Таблица:setting
столбец(settingid,setting_name,setting_value)

Таблица: столбец user_settings
(userid,settingid)

person Suresh Kamrushi    schedule 15.01.2014
comment
но сервер ms sql поддерживает тип данных XML, а также индексирование и запросы к нему, а также обновления xpath, выборки, так что как насчет этого ...? - person abksharma; 15.01.2014
comment
В соответствии с вашим требованием перечислите все плюсы и минусы, а затем примите решение. Здесь трудно решить, потому что я не знаю, что у вас есть, а что нет. - person Suresh Kamrushi; 15.01.2014
comment
пометив это как ответ... задам другой вопрос (когда мы используем тип данных XML базы данных..???) в другом потоке. - person abksharma; 15.01.2014
comment
Чем У суреш! но последний вопрос... будет ли эта структура нормально работать для 10 миллионов пользователей*100 настроек?? - person abksharma; 17.01.2014
comment
Я согласен с Surersh. Использование табличного подхода снижает нагрузку. - person Daryl; 17.01.2014
comment
@abksharma: да, определенно, эта структура будет нормально работать с более чем 10 миллионами пользователей и их настройками. - person Suresh Kamrushi; 17.01.2014

ОКОНЧАТЕЛЬНАЯ СТРУКТУРА У меня была Но будет ли эта структура масштабироваться до 10 миллионов пользователей * 100 настроек = 1 миллиард настроек Mysql?? ДА, ЭТО БУДЕТ!!!

ТАБЛИЦА Типов настроек

   SettingTypeId    UNSIGNED SMALLINT(2)
    SettingName VARCHAR(100)
    SettingDescription  VARCHAR(300)
    Created DATETIME
    LastUpdated TIMESTAMP
    CreatedBy   UNSIGNED INT(4)
    ModifiedBy  UNSIGNED INT(4)
    Deleted BIT
    Disabled    BIT
    RecordVersion   UNSIGNED INT(4)

Окончательная структура: -

Настройка ТАБЛИЦЫ

   SettingId    UNSIGNED INT(4)
    SettingTypeId   UNSIGNED SMALLINT(2)
    UserId  UNSIGNED INT(4)
    SettingValue    VARCHAR(1000)
    Created DATETIME
    LastUpdated TIMESTAMP
    CreatedBy   UNSIGNED INT(4)
    ModifiedBy  UNSIGNED INT(4)
    Deleted BIT
    Disabled    BIT
    RecordVersion   UNSIGNED INT(4)
person abksharma    schedule 17.01.2014