Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Нужен совет по архитектуре


Автор: BuShaRt 17.4.2013, 17:29
Задача: реализовать хранение связок "логин, пароль и т.п." для пользователей. Связок у пользователя может быть много. Структура связок хаотична т.е. это можем быть не логин-пароль, а ключь или логин и два пароля.

Организована система следующим образом. Есть таблица пользователей: id, name, xml. Поле xml имеет тип text и содержит полноценный XML документ. Все связки инкапсулированны в XML документ. 1 элимент - 1 связка.

Безопасность подхода не рассматривает т.к. пример сильно изменен для наглядности - реально мы храним другие данные, но их структура совпадает со связками доступа.

В общем, на основание всего вышеизложенного есть следующие вопросы:
1. Легально ли в данном случае использовать движок MyISAM? Как видите - выборка тут идет только по id, но поле xml часто обновляется полностью. + Другие таблица по хорошему часто будет ссылаться на этот id.
2. На сколько разумно вообще тут использовать XML? Работы с ним много (добавление связок, выборка связок по условиям, удаление связок, обновление связок).
3. Что произойдет внутри движка MyISAM, если несколько пользователей одновременно обновят свои XML? И при какой частоте обращений к таблице начинаются подобные проблемы? (Я прочитал, что update в MyISAM блокирует таблицу, но это теория - не как не могу осознать масштабы практических проблем).

Автор: Zloxa 18.4.2013, 00:16
Цитата(BuShaRt @  17.4.2013,  18:29 Найти цитируемый пост)
 Другие таблица по хорошему часто будет ссылаться на этот id.

MyISAM умеет foreign key?

Проверка FK требует shared лока. С учетом того, кто гранулярность блокировки MyISAM - таблица, иненсивная модификация связаных таблиц сделает недоступной модификацию мастер таблицы.

Цитата(BuShaRt @  17.4.2013,  18:29 Найти цитируемый пост)
На сколько разумно вообще тут использовать XML? 

На сколько разумно вообще тут использовать MySQL. smile

Цитата(BuShaRt @  17.4.2013,  18:29 Найти цитируемый пост)
3. Что произойдет внутри движка MyISAM, если несколько пользователей одновременно обновят свои XML? И при какой частоте обращений к таблице начинаются подобные проблемы? (Я прочитал, что update в MyISAM блокирует таблицу, но это теория - не как не могу осознать масштабы практических проблем).

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)