Когда / как использовать тип данных SQL Server XML?

2

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

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

- (abstract) Machine
    - Machine Type A
    - Machine Type B
    - Machine Type C

Тип "Машина" имеет такие свойства, как имя, IP-адрес и т.д., которые являются общими для всех машин.

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

Итак... моя идея состояла в том, чтобы иметь таблицу со столбцами для общих функций любой "Машины", а затем поле XML, содержащее остальную информацию о конкретной машине. Таким образом, я решил, что смогу оставаться гибким, не имея больших уровней избыточных "нулевых" значений в моей базе данных.

Это также уменьшит количество столбцов, так как машина может иметь 30 или 40 различных функций, которые необходимо записать.

Так как я никогда раньше не использовал формат данных XML, мне было интересно, если я буду заниматься этой проблемой разумным образом? Каковы последствия использования поля XML.

Также следует отметить, что я вряд ли буду искать любое из полей в XML, только в общих полях.

Теги:
sql-server

2 ответа

2
Лучший ответ

В зависимости от того, как часто и как часто вам нужно использовать данные из этих пользовательских фрагментов данных.

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

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

Тип данных XML отличен

  • если вам нужны эти данные в формате XML большую часть времени (например, вы получаете его из какого-то источника, необходимо его сохранить и, возможно, переслать его в другое место)

  • если вам нужно хранить данные, которые не очень часто запрашиваются и используются

Тип данных XML в SQL Server работает очень хорошо - но опять же: запрос к нему возможен, но довольно медленный (по сравнению с запросом реляционных таблиц).

Показать ещё 1 комментарий
3

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

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

Это сводится к тому, чтобы хорошо подумать о том, как вы планируете использовать, извлекать и запрашивать данные.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню